fix: Fix some styling issues

v3.2
wangdan-fit2cloud 2025-08-27 17:35:47 +08:00
parent dbfdc73ce5
commit 420b36fbdb
31 changed files with 279 additions and 234 deletions

View File

@ -733,7 +733,7 @@
</div> </div>
<div v-if="system" class="card-never border-r-6 mb-12"> <div v-if="system" class="card-never border-r-6 mb-12">
<h5 class="p-8-12"> <h5 class="p-8-12">
{{ $t('chat.paragraphSource.system') }} {{ $t('views.application.form.roleSettings.label') }}
</h5> </h5>
<div class="p-8-12 border-t-dashed lighter"> <div class="p-8-12 border-t-dashed lighter">
<span class="mb-8">{{ system }}</span> <span class="mb-8">{{ system }}</span>
@ -742,7 +742,7 @@
<div class="card-never border-r-6 mb-12"> <div class="card-never border-r-6 mb-12">
<h5 class="p-8-12"> <h5 class="p-8-12">
{{ $t('chat.paragraphSource.historyRecord') }} {{ $t('chat.history') }}
</h5> </h5>
<div class="p-8-12 border-t-dashed lighter"> <div class="p-8-12 border-t-dashed lighter">
<div v-for="(msg, index) in historyRecord" :key="index"> <div v-for="(msg, index) in historyRecord" :key="index">
@ -754,10 +754,10 @@
<div class="card-never border-r-6 mb-12"> <div class="card-never border-r-6 mb-12">
<h5 class="p-8-12"> <h5 class="p-8-12">
{{ $t('chat.paragraphSource.currentChat') }} {{ $t('chat.executionDetails.currentChat') }}
</h5> </h5>
<div class="p-8-12 border-t-dashed lighter"> <div class="p-8-12 border-t-dashed lighter">
<div class="mb-8">{{ $t('chat.paragraphSource.knowedMessage') }}:</div> <div class="mb-8">{{ $t('chat.executionDetails.knowedMessage') }}:</div>
<div v-for="(msg, index) in currentChat" :key="index"> <div v-for="(msg, index) in currentChat" :key="index">
<span>{{ msg.content }}</span> <span>{{ msg.content }}</span>
</div> </div>
@ -766,7 +766,7 @@
<div class="card-never border-r-6 mb-12"> <div class="card-never border-r-6 mb-12">
<h5 class="p-8-12"> <h5 class="p-8-12">
{{ $t('chat.paragraphSource.AiResponse') }} {{ $t('chat.executionDetails.answer') }}
</h5> </h5>
<div class="p-8-12 border-t-dashed lighter"> <div class="p-8-12 border-t-dashed lighter">
<div v-for="(msg, index) in AiResponse" :key="index"> <div v-for="(msg, index) in AiResponse" :key="index">

View File

@ -106,4 +106,46 @@ export default {
]) ])
}, },
}, },
'app-drag-outlined': {
iconReader: () => {
return h('i', [
h(
'svg',
{
style: { height: '100%', width: '100%' },
viewBox: '0 0 1024 1024',
version: '1.1',
xmlns: 'http://www.w3.org/2000/svg',
},
[
h('path', {
d: 'M682.666667 746.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v85.333333a21.248 21.248 0 0 1-21.333333 21.333334h-85.333334a21.248 21.248 0 0 1-21.333333-21.333334v-85.333333a21.248 21.248 0 0 1 21.333333-21.333333h85.333334z m-256 0a21.333333 21.333333 0 0 1 21.333333 21.333333v85.333333a21.248 21.248 0 0 1-21.333333 21.333334H341.333333a21.290667 21.290667 0 0 1-21.333333-21.333334v-85.333333a21.333333 21.333333 0 0 1 21.333333-21.333333h85.333334z m170.666666-298.666667h85.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v85.333334a21.248 21.248 0 0 1-21.333333 21.333333h-85.333334a21.248 21.248 0 0 1-21.333333-21.333333v-85.333334a21.248 21.248 0 0 1 21.333333-21.333333z m-256 0h85.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v85.333334a21.248 21.248 0 0 1-21.333333 21.333333H341.333333a21.290667 21.290667 0 0 1-21.333333-21.333333v-85.333334a21.333333 21.333333 0 0 1 21.333333-21.333333z m341.333334-298.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v85.333333a21.333333 21.333333 0 0 1-21.333333 21.333333h-85.333334a21.333333 21.333333 0 0 1-21.333333-21.333333V170.666667a21.290667 21.290667 0 0 1 21.333333-21.333334h85.333334z m-256 0a21.333333 21.333333 0 0 1 21.333333 21.333334v85.333333a21.333333 21.333333 0 0 1-21.333333 21.333333H341.333333a21.333333 21.333333 0 0 1-21.333333-21.333333V170.666667a21.333333 21.333333 0 0 1 21.333333-21.333334h85.333334z',
fill: 'currentColor',
}),
],
),
])
},
},
'app-add-circle-outlined': {
iconReader: () => {
return h('i', [
h(
'svg',
{
style: { height: '100%', width: '100%' },
viewBox: '0 0 1024 1024',
version: '1.1',
xmlns: 'http://www.w3.org/2000/svg',
},
[
h('path', {
d: 'M469.333333 469.333333V320a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333V469.333333h149.333333a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334H554.666667v149.333333a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666a21.333333 21.333333 0 0 1-21.333334-21.333333V554.666667H320a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334H469.333333z m42.666667 426.666667a384 384 0 1 0 0-768 384 384 0 0 0 0 768z m0 85.333333C252.8 981.333333 42.666667 771.2 42.666667 512S252.8 42.666667 512 42.666667s469.333333 210.133333 469.333333 469.333333-210.133333 469.333333-469.333333 469.333333z',
fill: 'currentColor',
}),
],
),
])
},
},
} }

View File

@ -8,11 +8,13 @@
@click=" @click="
sendMessage && type !== 'log' ? sendMessage(item.content, 'new') : (content: string) => {} sendMessage && type !== 'log' ? sendMessage(item.content, 'new') : (content: string) => {}
" "
class="problem-button mt-4 mb-4 flex" class="problem-button mt-4 mb-4"
:class="sendMessage && type !== 'log' ? 'cursor' : 'disabled'" :class="sendMessage && type !== 'log' ? 'cursor' : 'disabled'"
> >
<AppIcon iconName="app-edit" class="mr-8" style="margin-top: 2px"></AppIcon> <el-space :size="8" alignment="flex-start">
{{ item.content }} <AppIcon iconName="app-edit" class="color-primary" style="margin-top: 3px;"></AppIcon>
{{ item.content }}
</el-space>
</div> </div>
<HtmlRander v-else-if="item.type === 'html_rander'" :source="item.content"></HtmlRander> <HtmlRander v-else-if="item.type === 'html_rander'" :source="item.content"></HtmlRander>
<EchartsRander <EchartsRander
@ -251,8 +253,9 @@ const split_form_rander_ = (source: string, type: string) => {
} }
} }
:deep(.el-icon) { // :deep(.el-icon) {
color: var(--el-color-primary); // color: var(--el-color-primary);
} // margin-top: 3px;
// }
} }
</style> </style>

View File

@ -3,13 +3,14 @@
v-model="dialogVisible" v-model="dialogVisible"
:title="$t('chat.preview')" :title="$t('chat.preview')"
style="overflow: auto" style="overflow: auto"
width="80%" width="60%"
:before-close="close" :before-close="close"
destroy-on-close destroy-on-close
align-center
> >
<div <div
v-loading="loading" v-loading="loading"
style="height: calc(70vh - 150px); overflow-y: auto; display: flex; justify-content: center" style="max-height: calc(100vh - 200px); overflow-y: auto; display: flex; justify-content: center"
> >
<div ref="cloneContainerRef" style="width: 100%"></div> <div ref="cloneContainerRef" style="width: 100%"></div>
<div ref="svgContainerRef"></div> <div ref="svgContainerRef"></div>

View File

@ -105,13 +105,12 @@ function settingApiKey(row: any) {
function deleteApiKey(row: any) { function deleteApiKey(row: any) {
MsgConfirm( MsgConfirm(
// @ts-ignore
`${t('views.applicationOverview.appInfo.APIKeyDialog.msgConfirm1')}: ${row.secret_key}?`, `${t('views.applicationOverview.appInfo.APIKeyDialog.msgConfirm1')}: ${row.secret_key}?`,
t(t('views.applicationOverview.appInfo.APIKeyDialog.msgConfirm2')), t(t('views.applicationOverview.appInfo.APIKeyDialog.msgConfirm2')),
{ {
confirmButtonText: t('common.confirm'), confirmButtonText: t('common.confirm'),
cancelButtonText: t('common.cancel'), cancelButtonText: t('common.cancel'),
confirmButtonClass: 'color-danger', confirmButtonClass: 'danger',
}, },
) )
.then(() => { .then(() => {
@ -128,8 +127,8 @@ function changeState(bool: boolean, row: any) {
is_active: bool, is_active: bool,
} }
const str = bool const str = bool
? t('views.applicationOverview.appInfo.APIKeyDialog.enabledSuccess') ? t('common.enabled')
: t('views.applicationOverview.appInfo.APIKeyDialog.disabledSuccess') : t('common.disabled')
systemKeyApi.putAPIKey(row.id, obj, loading).then((res) => { systemKeyApi.putAPIKey(row.id, obj, loading).then((res) => {
MsgSuccess(str) MsgSuccess(str)
getApiKeyList() getApiKeyList()

View File

@ -13,6 +13,8 @@ export default {
exportImg: 'Exporting images', exportImg: 'Exporting images',
preview: 'Preview', preview: 'Preview',
chatId: 'Chat ID', chatId: 'Chat ID',
chatUserId: 'Chat User ID',
chatUserType: 'Chat User Type',
userInput: 'User Input', userInput: 'User Input',
quote: 'Quote', quote: 'Quote',
download: 'Click to Download', download: 'Click to Download',
@ -74,6 +76,7 @@ export default {
imageMessage: 'Please process the image content', imageMessage: 'Please process the image content',
fileMessage: 'Please process the file content', fileMessage: 'Please process the file content',
errorMessage: 'Upload Failed', errorMessage: 'Upload Failed',
fileRepeat: 'File already exists',
}, },
executionDetails: { executionDetails: {
title: 'Execution Details', title: 'Execution Details',
@ -93,6 +96,7 @@ export default {
paragraph: 'Segment', paragraph: 'Segment',
noSubmit: 'No submission from user', noSubmit: 'No submission from user',
errMessage: 'Error Log', errMessage: 'Error Log',
knowedMessage: 'Known Information',
}, },
KnowledgeSource: { KnowledgeSource: {
title: 'Knowledge Source', title: 'Knowledge Source',
@ -106,11 +110,6 @@ export default {
question: 'User Question', question: 'User Question',
optimizationQuestion: 'Optimized Question', optimizationQuestion: 'Optimized Question',
questionPadded: 'Padded Question', questionPadded: 'Padded Question',
system: 'Role Setting',
historyRecord: 'History Record',
currentChat: 'Current Chat',
AiResponse: 'AiResponse',
knowedMessage: 'Knowed Information',
}, },
editTitle: 'Edit Title', editTitle: 'Edit Title',
} }

View File

@ -1,5 +0,0 @@
export default {
title: "404",
message: "Unable to Access APP",
operate: "Back to Home",
};

View File

@ -24,8 +24,6 @@ export default {
msgConfirm1: 'Are you sure you want to delete the API Key', msgConfirm1: 'Are you sure you want to delete the API Key',
msgConfirm2: msgConfirm2:
'This action is irreversible. Once deleted, the API Key cannot be recovered. Do you still want to proceed?', 'This action is irreversible. Once deleted, the API Key cannot be recovered. Do you still want to proceed?',
enabledSuccess: 'Enabled',
disabledSuccess: 'Disabled',
}, },
EmbedDialog: { EmbedDialog: {
fullscreenModeTitle: 'Fullscreen Mode', fullscreenModeTitle: 'Fullscreen Mode',
@ -34,8 +32,6 @@ export default {
mobileModeTitle: 'Mobile Mode', mobileModeTitle: 'Mobile Mode',
}, },
LimitDialog: { LimitDialog: {
dialogTitle: 'Access Restrictions',
showSourceLabel: 'Show Knowledge Source',
clientQueryLimitLabel: 'Query Limit per Client', clientQueryLimitLabel: 'Query Limit per Client',
authentication: 'Authentication', authentication: 'Authentication',
authenticationValue: 'Password Access', authenticationValue: 'Password Access',
@ -52,36 +48,34 @@ export default {
crossDomainPlaceholder: crossDomainPlaceholder:
'Enter allowed cross-domain addresses. If enabled but left blank, no restrictions will apply.\nEnter one per line, e.g.:\nhttp://127.0.0.1:5678\nhttps://dataease.io', 'Enter allowed cross-domain addresses. If enabled but left blank, no restrictions will apply.\nEnter one per line, e.g.:\nhttp://127.0.0.1:5678\nhttps://dataease.io',
}, },
SettingDisplayDialog: { },
dialogTitle: 'Display Settings', SettingDisplayDialog: {
languageLabel: 'Language', showSourceLabel: 'Show Knowledge Source',
showSourceLabel: 'Show Knowledge Source', showExecutionDetail: 'Show Execution Details',
showExecutionDetail: 'Show Execution Details', restoreDefault: 'Restore Default',
restoreDefault: 'Restore Default', customThemeColor: 'Custom Theme Color',
customThemeColor: 'Custom Theme Color', headerTitleFontColor: 'Header Title Font Color',
headerTitleFontColor: 'Header Title Font Color', default: 'Default',
default: 'Default', askUserAvatar: 'User Avatar (Asking)',
askUserAvatar: 'User Avatar (Asking)', replace: 'Replace',
replace: 'Replace', imageMessage:
imageMessage: 'Recommended size: 32×32 pixels. Supports JPG, PNG, and GIF formats. Max size: 10 MB',
'Recommended size: 32×32 pixels. Supports JPG, PNG, and GIF formats. Max size: 10 MB', AIAvatar: 'AI Avatar',
AIAvatar: 'AI Avatar', floatIcon: 'Floating Icon',
floatIcon: 'Floating Icon', iconDefaultPosition: 'Default Icon Position',
iconDefaultPosition: 'Default Icon Position', iconPosition: {
iconPosition: { left: 'Left',
left: 'Left', right: 'Right',
right: 'Right', bottom: 'Bottom',
bottom: 'Bottom', top: 'Top',
top: 'Top',
},
draggablePosition: 'Draggable Position',
showHistory: 'Show Chat History',
displayGuide: 'Show Guide Image (Floating Mode)',
disclaimer: 'Disclaimer',
disclaimerValue: 'This content is AI-generated and for reference only.',
chatBackground: 'Chat Background',
chatBackgroundMessage: 'Supported formats: JPG, PNG, GIF. Max size: 10MB.',
}, },
draggablePosition: 'Draggable Position',
showHistory: 'Show Chat History',
displayGuide: 'Show Guide Image (Floating Mode)',
disclaimer: 'Disclaimer',
disclaimerValue: 'This content is AI-generated and for reference only.',
chatBackground: 'Chat Background',
chatBackgroundMessage: 'Supported formats: JPG, PNG, GIF. Max size: 10MB.',
}, },
monitor: { monitor: {
monitoringStatistics: 'Monitoring Statistics', monitoringStatistics: 'Monitoring Statistics',

View File

@ -12,7 +12,6 @@ export default {
batchDeleteUser: 'Delete selected {count} users?', batchDeleteUser: 'Delete selected {count} users?',
settingMethod: 'Configuration Method', settingMethod: 'Configuration Method',
append: 'Append', append: 'Append',
replace: 'Replace',
group: { group: {
title: 'User Groups', title: 'User Groups',
name: 'User Group Name', name: 'User Group Name',

View File

@ -3,30 +3,31 @@ export default {
paragraph_count: 'Segments', paragraph_count: 'Segments',
editParagraph: 'Edit Segment', editParagraph: 'Edit Segment',
addParagraph: 'Add Segment', addParagraph: 'Add Segment',
prevAddParagraph: 'Insert Segment Above',
paragraphDetail: 'Segment Details', paragraphDetail: 'Segment Details',
character_count: 'characters', character_count: 'characters',
setting: { setting: {
batchSelected: 'Batch Select', batchSelected: 'Batch Select',
cancelSelected: 'Cancel Selection' cancelSelected: 'Cancel Selection',
}, },
delete: { delete: {
confirmTitle: 'Confirm deletion of segment:', confirmTitle: 'Confirm deletion of segment:',
confirmMessage: 'Deletion cannot be undone. Please proceed with caution.' confirmMessage: 'Deletion cannot be undone. Please proceed with caution.',
}, },
relatedProblem: { relatedProblem: {
title: 'Related Questions', title: 'Related Questions',
placeholder: 'Please select a question' placeholder: 'Please select a question',
}, },
form: { form: {
paragraphTitle: { paragraphTitle: {
label: 'Title', label: 'Title',
placeholder: 'Please enter the segment title' placeholder: 'Please enter the segment title',
}, },
content: { content: {
label: 'Content', label: 'Content',
placeholder: 'Please enter the segment content', placeholder: 'Please enter the segment content',
requiredMessage1: 'Please enter the segment content', requiredMessage1: 'Please enter the segment content',
requiredMessage2: 'Content must not exceed 100,000 words' requiredMessage2: 'Content must not exceed 100,000 words',
} },
} },
} }

View File

@ -15,11 +15,9 @@ export default {
chatId: '对话 ID', chatId: '对话 ID',
chatUserId: '对话用户 ID', chatUserId: '对话用户 ID',
chatUserType: '对话用户类型', chatUserType: '对话用户类型',
chatUser: '对话用户',
userInput: '用户输入', userInput: '用户输入',
quote: '引用', quote: '引用',
download: '点击下载文件', download: '点击下载文件',
transcribing: '转文字中',
noDocument: '原文档不存在', noDocument: '原文档不存在',
noPermissionDownload: '无权限下载', noPermissionDownload: '无权限下载',
passwordValidator: { passwordValidator: {
@ -96,6 +94,7 @@ export default {
paragraph: '分段', paragraph: '分段',
noSubmit: '用户未提交', noSubmit: '用户未提交',
errMessage: '错误日志', errMessage: '错误日志',
knowedMessage: '已知信息',
}, },
KnowledgeSource: { KnowledgeSource: {
title: '知识来源', title: '知识来源',
@ -109,11 +108,6 @@ export default {
question: '用户问题', question: '用户问题',
optimizationQuestion: '优化后问题', optimizationQuestion: '优化后问题',
questionPadded: '优化后问题', questionPadded: '优化后问题',
system: '角色设定',
historyRecord: '历史记录',
currentChat: '本次对话',
AiResponse: 'AI 回答',
knowedMessage: '已知信息',
}, },
editTitle: '编辑标题', editTitle: '编辑标题',
} }

View File

@ -24,8 +24,6 @@ export default {
saveSettings: '保存设置', saveSettings: '保存设置',
msgConfirm1: '是否删除API Key', msgConfirm1: '是否删除API Key',
msgConfirm2: '删除API Key后将无法恢复请确认是否删除', msgConfirm2: '删除API Key后将无法恢复请确认是否删除',
enabledSuccess: '已启用',
disabledSuccess: '已禁用',
}, },
EmbedDialog: { EmbedDialog: {
fullscreenModeTitle: '全屏模式', fullscreenModeTitle: '全屏模式',
@ -34,7 +32,6 @@ export default {
mobileModeTitle: '移动端模式', mobileModeTitle: '移动端模式',
}, },
LimitDialog: { LimitDialog: {
showSourceLabel: '显示知识来源',
clientQueryLimitLabel: '每个客户端提问限制', clientQueryLimitLabel: '每个客户端提问限制',
timesDays: '次/天', timesDays: '次/天',
authentication: '身份验证', authentication: '身份验证',
@ -47,41 +44,38 @@ export default {
toSettingChatUser: '去配置对话用户', toSettingChatUser: '去配置对话用户',
}, },
SettingAPIKeyDialog: { SettingAPIKeyDialog: {
dialogTitle: '设置',
allowCrossDomainLabel: '允许跨域地址', allowCrossDomainLabel: '允许跨域地址',
crossDomainPlaceholder: crossDomainPlaceholder:
'请输入允许的跨域地址,开启后不输入跨域地址则不限制。\n跨域地址一行一个\nhttp://127.0.0.1:5678 \nhttps://dataease.io', '请输入允许的跨域地址,开启后不输入跨域地址则不限制。\n跨域地址一行一个\nhttp://127.0.0.1:5678 \nhttps://dataease.io',
}, },
SettingDisplayDialog: { },
dialogTitle: '显示设置', SettingDisplayDialog: {
languageLabel: '语言', showSourceLabel: '显示知识来源',
showSourceLabel: '显示知识来源', showExecutionDetail: '显示执行详情',
showExecutionDetail: '显示执行详情', restoreDefault: '恢复默认',
restoreDefault: '恢复默认', customThemeColor: '自定义主题色',
customThemeColor: '自定义主题色', headerTitleFontColor: '头部标题字体颜色',
headerTitleFontColor: '头部标题字体颜色', default: '默认',
default: '默认', askUserAvatar: '提问用户头像',
askUserAvatar: '提问用户头像', replace: '替换',
replace: '替换', imageMessage: '建议尺寸 32*32支持 JPG、PNG、GIF大小不超过 10 MB',
imageMessage: '建议尺寸 32*32支持 JPG、PNG、GIF大小不超过 10 MB', AIAvatar: 'AI 回复头像',
AIAvatar: 'AI 回复头像', display: '显示',
display: '显示', floatIcon: '浮窗入口图标',
floatIcon: '浮窗入口图标', iconDefaultPosition: '图标默认位置',
iconDefaultPosition: '图标默认位置', iconPosition: {
iconPosition: { left: '左',
left: '左', right: '右',
right: '右', bottom: '下',
bottom: '下', top: '上',
top: '上',
},
draggablePosition: '可拖拽位置',
showHistory: '显示历史记录',
displayGuide: '显示引导图(浮窗模式)',
disclaimer: '免责声明',
disclaimerValue: '「以上内容均由 AI 生成,仅供参考和借鉴」',
chatBackground: '聊天背景',
chatBackgroundMessage: '支持 JPG、PNG、GIF大小不超过 10 MB',
}, },
draggablePosition: '可拖拽位置',
showHistory: '显示历史记录',
displayGuide: '显示引导图(浮窗模式)',
disclaimer: '免责声明',
disclaimerValue: '「以上内容均由 AI 生成,仅供参考和借鉴」',
chatBackground: '聊天背景',
chatBackgroundMessage: '支持 JPG、PNG、GIF大小不超过 10 MB',
}, },
monitor: { monitor: {
monitoringStatistics: '监控统计', monitoringStatistics: '监控统计',

View File

@ -10,7 +10,6 @@ export default {
batchDeleteUser: '是否删除选中的 {count} 个用户?', batchDeleteUser: '是否删除选中的 {count} 个用户?',
settingMethod: '设置方式', settingMethod: '设置方式',
append: '追加', append: '追加',
replace: '替换',
group: { group: {
title: '用户组', title: '用户组',
requiredMessage: '请选择用户组', requiredMessage: '请选择用户组',

View File

@ -3,6 +3,7 @@ export default {
paragraph_count: '段落', paragraph_count: '段落',
editParagraph: '编辑分段', editParagraph: '编辑分段',
addParagraph: '添加分段', addParagraph: '添加分段',
prevAddParagraph:'上方插入分段',
paragraphDetail: '分段详情', paragraphDetail: '分段详情',
character_count: '个字符', character_count: '个字符',
setting: { setting: {

View File

@ -13,6 +13,8 @@ export default {
exportImg: '匯出圖片', exportImg: '匯出圖片',
preview: '預覽', preview: '預覽',
chatId: '對話 ID', chatId: '對話 ID',
chatUserId: '對話用戶 ID',
chatUserType: '對話用戶類型',
userInput: '用戶輸入', userInput: '用戶輸入',
quote: '引用', quote: '引用',
download: '點擊下載文件', download: '點擊下載文件',
@ -72,6 +74,7 @@ export default {
imageMessage: '請解析圖片內容', imageMessage: '請解析圖片內容',
fileMessage: '請解析文件內容', fileMessage: '請解析文件內容',
errorMessage: '上傳失敗', errorMessage: '上傳失敗',
fileRepeat: '文件已存在',
}, },
executionDetails: { executionDetails: {
title: '執行詳細', title: '執行詳細',
@ -91,6 +94,7 @@ export default {
paragraph: '段落', paragraph: '段落',
noSubmit: '用戶未提交', noSubmit: '用戶未提交',
errMessage: '錯誤日誌', errMessage: '錯誤日誌',
knowedMessage: '已知資訊',
}, },
KnowledgeSource: { KnowledgeSource: {
title: '知識來源', title: '知識來源',
@ -104,11 +108,6 @@ export default {
question: '用戶問題', question: '用戶問題',
optimizationQuestion: '優化後問題', optimizationQuestion: '優化後問題',
questionPadded: '優化後問題', questionPadded: '優化後問題',
system: '角色設定',
historyRecord: '歷史記錄',
currentChat: '本次對話',
AiResponse: 'AI 回答',
knowedMessage: '已知資訊',
}, },
editTitle: '編輯標題', editTitle: '編輯標題',
} }

View File

@ -23,8 +23,6 @@ export default {
saveSettings: '儲存設定', saveSettings: '儲存設定',
msgConfirm1: '是否刪除API Key', msgConfirm1: '是否刪除API Key',
msgConfirm2: '刪除API Key後將無法恢復請確認是否刪除', msgConfirm2: '刪除API Key後將無法恢復請確認是否刪除',
enabledSuccess: '已啟用',
disabledSuccess: '已停用',
}, },
EmbedDialog: { EmbedDialog: {
fullscreenModeTitle: '全螢幕模式', fullscreenModeTitle: '全螢幕模式',
@ -33,8 +31,6 @@ export default {
mobileModeTitle: '移動端模式', mobileModeTitle: '移動端模式',
}, },
LimitDialog: { LimitDialog: {
dialogTitle: '訪問限制',
showSourceLabel: '顯示知識來源',
clientQueryLimitLabel: '每個用戶端提問限制', clientQueryLimitLabel: '每個用戶端提問限制',
timesDays: '次/天', timesDays: '次/天',
authentication: '身份驗證', authentication: '身份驗證',
@ -52,35 +48,33 @@ export default {
crossDomainPlaceholder: crossDomainPlaceholder:
'請輸入允許的跨域位址,開啟後不輸入跨域位址則不限制。\n跨域位址一行一個\nhttp://127.0.0.1:5678 \nhttps://dataease.io', '請輸入允許的跨域位址,開啟後不輸入跨域位址則不限制。\n跨域位址一行一個\nhttp://127.0.0.1:5678 \nhttps://dataease.io',
}, },
SettingDisplayDialog: { },
dialogTitle: '顯示設定', SettingDisplayDialog: {
languageLabel: '語言', showSourceLabel: '顯示知識來源',
showSourceLabel: '顯示知識來源', showExecutionDetail: '顯示執行細節',
showExecutionDetail: '顯示執行細節', restoreDefault: '恢復預設',
restoreDefault: '恢復預設', customThemeColor: '自訂主題色',
customThemeColor: '自訂主題色', headerTitleFontColor: '標頭標題字體顏色',
headerTitleFontColor: '標頭標題字體顏色', default: '預設',
default: '預設', askUserAvatar: '提問用戶頭像',
askUserAvatar: '提問用戶頭像', replace: '取代',
replace: '取代', imageMessage: '建議尺寸 32*32支援 JPG、PNG、GIF大小不超過 10 MB',
imageMessage: '建議尺寸 32*32支援 JPG、PNG、GIF大小不超過 10 MB', AIAvatar: 'AI 回覆頭像',
AIAvatar: 'AI 回覆頭像', floatIcon: '浮窗入口圖示',
floatIcon: '浮窗入口圖示', iconDefaultPosition: '圖示預設位置',
iconDefaultPosition: '圖示預設位置', iconPosition: {
iconPosition: { left: '左',
left: '左', right: '右',
right: '右', bottom: '下',
bottom: '下', top: '上',
top: '上',
},
draggablePosition: '可拖曳位置',
showHistory: '顯示歷史紀錄',
displayGuide: '顯示引導圖(浮窗模式)',
disclaimer: '免責聲明',
disclaimerValue: '「以上內容均由 AI 生成,僅供參考和借鏡」',
chatBackground: '聊天背景',
chatBackgroundMessage: '圖片格式JPG, PNG, GIF。最大大小10MB。',
}, },
draggablePosition: '可拖曳位置',
showHistory: '顯示歷史紀錄',
displayGuide: '顯示引導圖(浮窗模式)',
disclaimer: '免責聲明',
disclaimerValue: '「以上內容均由 AI 生成,僅供參考和借鏡」',
chatBackground: '聊天背景',
chatBackgroundMessage: '圖片格式JPG, PNG, GIF。最大大小10MB。',
}, },
monitor: { monitor: {
monitoringStatistics: '監控統計', monitoringStatistics: '監控統計',

View File

@ -10,7 +10,6 @@ export default {
batchDeleteUser: '是否刪除選中的 {count} 個用戶?', batchDeleteUser: '是否刪除選中的 {count} 個用戶?',
settingMethod: '設定方式', settingMethod: '設定方式',
append: '追加', append: '追加',
replace: '替換',
group: { group: {
title: '用戶組', title: '用戶組',
requiredMessage: '請選擇用戶組', requiredMessage: '請選擇用戶組',

View File

@ -3,30 +3,31 @@ export default {
paragraph_count: '段落', paragraph_count: '段落',
editParagraph: '編輯分段', editParagraph: '編輯分段',
addParagraph: '添加分段', addParagraph: '添加分段',
prevAddParagraph: '上方插入分段',
paragraphDetail: '分段詳情', paragraphDetail: '分段詳情',
character_count: '個字符', character_count: '個字符',
setting: { setting: {
batchSelected: '批量選擇', batchSelected: '批量選擇',
cancelSelected: '取消選擇' cancelSelected: '取消選擇',
}, },
delete: { delete: {
confirmTitle: '是否刪除段落:', confirmTitle: '是否刪除段落:',
confirmMessage: '刪除後無法恢復,請謹慎操作。' confirmMessage: '刪除後無法恢復,請謹慎操作。',
}, },
relatedProblem: { relatedProblem: {
title: '關聯問題', title: '關聯問題',
placeholder: '請選擇問題' placeholder: '請選擇問題',
}, },
form: { form: {
paragraphTitle: { paragraphTitle: {
label: '分段標題', label: '分段標題',
placeholder: '請輸入分段標題' placeholder: '請輸入分段標題',
}, },
content: { content: {
label: '分段內容', label: '分段內容',
placeholder: '請輸入分段內容', placeholder: '請輸入分段內容',
requiredMessage1: '請輸入分段內容', requiredMessage1: '請輸入分段內容',
requiredMessage2: '內容最多不超過 100000 個字' requiredMessage2: '內容最多不超過 100000 個字',
} },
} },
} }

View File

@ -299,3 +299,8 @@
color: var(--el-text-color-regular); color: var(--el-text-color-regular);
} }
} }
// el-pagination
.el-pagination .el-select {
width: 105px;
}

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog <el-dialog
:title="$t('views.applicationOverview.appInfo.SettingDisplayDialog.dialogTitle')" :title="$t('views.applicationOverview.appInfo.displaySetting')"
v-model="dialogVisible" v-model="dialogVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
@ -9,7 +9,7 @@
<el-form label-position="top" ref="displayFormRef" :model="form"> <el-form label-position="top" ref="displayFormRef" :model="form">
<el-form-item> <el-form-item>
<span>{{ <span>{{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.languageLabel') $t('layout.language')
}}</span> }}</span>
<el-select v-model="form.language" clearable> <el-select v-model="form.language" clearable>
<el-option <el-option
@ -24,13 +24,13 @@
<el-space direction="vertical" alignment="start" :size="2"> <el-space direction="vertical" alignment="start" :size="2">
<el-checkbox <el-checkbox
v-model="form.show_source" v-model="form.show_source"
:label="$t('views.applicationOverview.appInfo.SettingDisplayDialog.showSourceLabel')" :label="$t('views.applicationOverview.SettingDisplayDialog.showSourceLabel')"
/> />
<el-checkbox <el-checkbox
v-model="form.show_exec" v-model="form.show_exec"
:label=" :label="
$t('views.applicationOverview.appInfo.SettingDisplayDialog.showExecutionDetail') $t('views.applicationOverview.SettingDisplayDialog.showExecutionDetail')
" "
/> />
</el-space> </el-space>

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog <el-dialog
:title="$t('views.applicationOverview.appInfo.SettingDisplayDialog.dialogTitle')" :title="$t('views.applicationOverview.appInfo.displaySetting')"
width="900" width="900"
v-model="dialogVisible" v-model="dialogVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
@ -12,14 +12,14 @@
<template #header="{ titleId, titleClass }"> <template #header="{ titleId, titleClass }">
<div class="flex-between mb-8"> <div class="flex-between mb-8">
<h4 :id="titleId" :class="titleClass"> <h4 :id="titleId" :class="titleClass">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.dialogTitle') }} {{ $t('views.applicationOverview.appInfo.displaySetting') }}
</h4> </h4>
<div class="flex align-center"> <div class="flex align-center">
<el-button @click.prevent="resetForm" link> <el-button @click.prevent="resetForm" link>
<el-icon class="mr-4"> <el-icon class="mr-4">
<Refresh /> <Refresh />
</el-icon> </el-icon>
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.restoreDefault') }} {{ $t('views.applicationOverview.SettingDisplayDialog.restoreDefault') }}
</el-button> </el-button>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
</div> </div>
@ -174,14 +174,14 @@
<el-col :span="12"> <el-col :span="12">
<h5 class="mb-8"> <h5 class="mb-8">
{{ {{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.customThemeColor') $t('views.applicationOverview.SettingDisplayDialog.customThemeColor')
}} }}
</h5> </h5>
<div> <div>
<el-color-picker v-model="xpackForm.custom_theme.theme_color" /> <el-color-picker v-model="xpackForm.custom_theme.theme_color" />
{{ {{
!xpackForm.custom_theme.theme_color !xpackForm.custom_theme.theme_color
? $t('views.applicationOverview.appInfo.SettingDisplayDialog.default') ? $t('views.applicationOverview.SettingDisplayDialog.default')
: '' : ''
}} }}
</div> </div>
@ -190,7 +190,7 @@
<h5 class="mb-8"> <h5 class="mb-8">
{{ {{
$t( $t(
'views.applicationOverview.appInfo.SettingDisplayDialog.headerTitleFontColor', 'views.applicationOverview.SettingDisplayDialog.headerTitleFontColor',
) )
}} }}
</h5> </h5>
@ -199,7 +199,7 @@
</el-row> </el-row>
<el-row class="w-full mb-8"> <el-row class="w-full mb-8">
<h5 class="mb-8"> <h5 class="mb-8">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.languageLabel') }} {{ $t('layout.language') }}
</h5> </h5>
<el-select v-model="xpackForm.language" clearable> <el-select v-model="xpackForm.language" clearable>
<el-option <el-option
@ -225,20 +225,20 @@
:on-change="(file: any, fileList: any) => onChange(file, fileList, 'icon')" :on-change="(file: any, fileList: any) => onChange(file, fileList, 'icon')"
> >
<el-button size="small"> <el-button size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.replace') }} {{ $t('views.applicationOverview.SettingDisplayDialog.replace') }}
</el-button> </el-button>
</el-upload> </el-upload>
</span> </span>
</div> </div>
<el-text type="info" size="small"> <el-text type="info" size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.imageMessage') }} {{ $t('views.applicationOverview.SettingDisplayDialog.imageMessage') }}
</el-text> </el-text>
</el-card> </el-card>
<!-- 聊天背景 --> <!-- 聊天背景 -->
<el-card shadow="never" class="mb-8"> <el-card shadow="never" class="mb-8">
<div class="flex-between mb-8"> <div class="flex-between mb-8">
<span class="lighter">{{ <span class="lighter">{{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.chatBackground') $t('views.applicationOverview.SettingDisplayDialog.chatBackground')
}}</span> }}</span>
<span class="flex align-center"> <span class="flex align-center">
<el-upload <el-upload
@ -253,14 +253,14 @@
" "
> >
<el-button size="small"> <el-button size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.replace') }} {{ $t('views.applicationOverview.SettingDisplayDialog.replace') }}
</el-button> </el-button>
</el-upload> </el-upload>
</span> </span>
</div> </div>
<el-text type="info" size="small"> <el-text type="info" size="small">
{{ {{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.chatBackgroundMessage') $t('views.applicationOverview.SettingDisplayDialog.chatBackgroundMessage')
}} }}
</el-text> </el-text>
</el-card> </el-card>
@ -268,11 +268,11 @@
<el-card shadow="never" class="mb-8"> <el-card shadow="never" class="mb-8">
<div class="flex-between mb-8"> <div class="flex-between mb-8">
<span class="lighter">{{ <span class="lighter">{{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.AIAvatar') $t('views.applicationOverview.SettingDisplayDialog.AIAvatar')
}}</span> }}</span>
<span class="flex align-center"> <span class="flex align-center">
<el-checkbox v-model="xpackForm.show_avatar">{{ <el-checkbox v-model="xpackForm.show_avatar">{{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.display') $t('views.applicationOverview.SettingDisplayDialog.display')
}}</el-checkbox> }}</el-checkbox>
<el-upload <el-upload
class="ml-8" class="ml-8"
@ -284,25 +284,25 @@
:on-change="(file: any, fileList: any) => onChange(file, fileList, 'avatar')" :on-change="(file: any, fileList: any) => onChange(file, fileList, 'avatar')"
> >
<el-button size="small"> <el-button size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.replace') }} {{ $t('views.applicationOverview.SettingDisplayDialog.replace') }}
</el-button> </el-button>
</el-upload> </el-upload>
</span> </span>
</div> </div>
<el-text type="info" size="small"> <el-text type="info" size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.imageMessage') }} {{ $t('views.applicationOverview.SettingDisplayDialog.imageMessage') }}
</el-text> </el-text>
</el-card> </el-card>
<!-- 提问头像 --> <!-- 提问头像 -->
<el-card shadow="never" class="mb-8"> <el-card shadow="never" class="mb-8">
<div class="flex-between mb-8"> <div class="flex-between mb-8">
<span class="lighter">{{ <span class="lighter">{{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.askUserAvatar') $t('views.applicationOverview.SettingDisplayDialog.askUserAvatar')
}}</span> }}</span>
<span class="flex align-center"> <span class="flex align-center">
<el-checkbox v-model="xpackForm.show_user_avatar"> <el-checkbox v-model="xpackForm.show_user_avatar">
{{ {{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.display') $t('views.applicationOverview.SettingDisplayDialog.display')
}}</el-checkbox }}</el-checkbox
> >
<el-upload <el-upload
@ -317,20 +317,20 @@
" "
> >
<el-button size="small"> <el-button size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.replace') }} {{ $t('views.applicationOverview.SettingDisplayDialog.replace') }}
</el-button> </el-button>
</el-upload> </el-upload>
</span> </span>
</div> </div>
<el-text type="info" size="small" <el-text type="info" size="small"
>{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.imageMessage') }} >{{ $t('views.applicationOverview.SettingDisplayDialog.imageMessage') }}
</el-text> </el-text>
</el-card> </el-card>
<!-- 浮窗图标 --> <!-- 浮窗图标 -->
<el-card shadow="never" class="mb-8"> <el-card shadow="never" class="mb-8">
<div class="flex-between mb-8"> <div class="flex-between mb-8">
<span class="lighter">{{ <span class="lighter">{{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.floatIcon') $t('views.applicationOverview.SettingDisplayDialog.floatIcon')
}}</span> }}</span>
<el-upload <el-upload
ref="uploadRef" ref="uploadRef"
@ -341,22 +341,22 @@
:on-change="(file: any, fileList: any) => onChange(file, fileList, 'float_icon')" :on-change="(file: any, fileList: any) => onChange(file, fileList, 'float_icon')"
> >
<el-button size="small"> <el-button size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.replace') }} {{ $t('views.applicationOverview.SettingDisplayDialog.replace') }}
</el-button> </el-button>
</el-upload> </el-upload>
</div> </div>
<el-text type="info" size="small"> <el-text type="info" size="small">
{{ $t('views.applicationOverview.appInfo.SettingDisplayDialog.imageMessage') }} {{ $t('views.applicationOverview.SettingDisplayDialog.imageMessage') }}
</el-text> </el-text>
<div class="border-t mt-8"> <div class="border-t mt-8">
<div class="flex-between mb-8"> <div class="flex-between mb-8">
<span class="lighter">{{ <span class="lighter">{{
$t('views.applicationOverview.appInfo.SettingDisplayDialog.iconDefaultPosition') $t('views.applicationOverview.SettingDisplayDialog.iconDefaultPosition')
}}</span> }}</span>
<el-checkbox <el-checkbox
v-model="xpackForm.draggable" v-model="xpackForm.draggable"
:label=" :label="
$t('views.applicationOverview.appInfo.SettingDisplayDialog.draggablePosition') $t('views.applicationOverview.SettingDisplayDialog.draggablePosition')
" "
/> />
</div> </div>
@ -367,7 +367,7 @@
<el-option <el-option
:label=" :label="
$t( $t(
'views.applicationOverview.appInfo.SettingDisplayDialog.iconPosition.left', 'views.applicationOverview.SettingDisplayDialog.iconPosition.left',
) )
" "
value="left" value="left"
@ -375,7 +375,7 @@
<el-option <el-option
:label=" :label="
$t( $t(
'views.applicationOverview.appInfo.SettingDisplayDialog.iconPosition.right', 'views.applicationOverview.SettingDisplayDialog.iconPosition.right',
) )
" "
value="right" value="right"
@ -399,7 +399,7 @@
<el-option <el-option
:label=" :label="
$t( $t(
'views.applicationOverview.appInfo.SettingDisplayDialog.iconPosition.top', 'views.applicationOverview.SettingDisplayDialog.iconPosition.top',
) )
" "
value="top" value="top"
@ -407,7 +407,7 @@
<el-option <el-option
:label=" :label="
$t( $t(
'views.applicationOverview.appInfo.SettingDisplayDialog.iconPosition.bottom', 'views.applicationOverview.SettingDisplayDialog.iconPosition.bottom',
) )
" "
value="bottom" value="bottom"
@ -433,26 +433,26 @@
<el-checkbox <el-checkbox
v-model="xpackForm.show_source" v-model="xpackForm.show_source"
:label=" :label="
$t('views.applicationOverview.appInfo.SettingDisplayDialog.showSourceLabel') $t('views.applicationOverview.SettingDisplayDialog.showSourceLabel')
" "
/> />
<el-checkbox <el-checkbox
v-model="xpackForm.show_exec" v-model="xpackForm.show_exec"
:label=" :label="
$t('views.applicationOverview.appInfo.SettingDisplayDialog.showExecutionDetail') $t('views.applicationOverview.SettingDisplayDialog.showExecutionDetail')
" "
/> />
<el-checkbox <el-checkbox
v-model="xpackForm.show_history" v-model="xpackForm.show_history"
:label="$t('views.applicationOverview.appInfo.SettingDisplayDialog.showHistory')" :label="$t('views.applicationOverview.SettingDisplayDialog.showHistory')"
/> />
<el-checkbox <el-checkbox
v-model="xpackForm.show_guide" v-model="xpackForm.show_guide"
:label="$t('views.applicationOverview.appInfo.SettingDisplayDialog.displayGuide')" :label="$t('views.applicationOverview.SettingDisplayDialog.displayGuide')"
/> />
<el-checkbox <el-checkbox
v-model="xpackForm.disclaimer" v-model="xpackForm.disclaimer"
:label="$t('views.applicationOverview.appInfo.SettingDisplayDialog.disclaimer')" :label="$t('views.applicationOverview.SettingDisplayDialog.disclaimer')"
@change="changeDisclaimer" @change="changeDisclaimer"
/> />
<span v-if="xpackForm.disclaimer" <span v-if="xpackForm.disclaimer"
@ -523,7 +523,7 @@ const defaultSetting = {
user_avatar: '', user_avatar: '',
user_avatar_url: '', user_avatar_url: '',
disclaimer: false, disclaimer: false,
disclaimer_value: t('views.applicationOverview.appInfo.SettingDisplayDialog.disclaimerValue'), disclaimer_value: t('views.applicationOverview.SettingDisplayDialog.disclaimerValue'),
custom_theme: { custom_theme: {
theme_color: '', theme_color: '',
header_font_color: '#1f2329', header_font_color: '#1f2329',
@ -556,7 +556,7 @@ const xpackForm = ref<any>({
user_avatar: '', user_avatar: '',
user_avatar_url: '', user_avatar_url: '',
disclaimer: false, disclaimer: false,
disclaimer_value: t('views.applicationOverview.appInfo.SettingDisplayDialog.disclaimerValue'), disclaimer_value: t('views.applicationOverview.SettingDisplayDialog.disclaimerValue'),
custom_theme: { custom_theme: {
theme_color: '', theme_color: '',
header_font_color: '#1f2329', header_font_color: '#1f2329',
@ -630,10 +630,10 @@ const open = (data: any, content: any) => {
xpackForm.value.disclaimer_value = data.disclaimer_value xpackForm.value.disclaimer_value = data.disclaimer_value
if ( if (
xpackForm.value.disclaimer_value === xpackForm.value.disclaimer_value ===
t('views.applicationOverview.appInfo.SettingDisplayDialog.disclaimerValue') t('views.applicationOverview.SettingDisplayDialog.disclaimerValue')
) { ) {
xpackForm.value.disclaimer_value = t( xpackForm.value.disclaimer_value = t(
'views.applicationOverview.appInfo.SettingDisplayDialog.disclaimerValue', 'views.applicationOverview.SettingDisplayDialog.disclaimerValue',
) )
} }
xpackForm.value.avatar_url = data.avatar xpackForm.value.avatar_url = data.avatar

View File

@ -83,6 +83,7 @@
@click="openAIParamSettingDialog" @click="openAIParamSettingDialog"
:disabled="!applicationForm.model_id" :disabled="!applicationForm.model_id"
> >
<AppIcon iconName="app-setting" class="mr-4"></AppIcon>
{{ $t('common.paramSetting') }} {{ $t('common.paramSetting') }}
</el-button> </el-button>
</div> </div>
@ -170,7 +171,7 @@
<span>{{ $t('views.application.form.relatedKnowledge.label') }}</span> <span>{{ $t('views.application.form.relatedKnowledge.label') }}</span>
<div> <div>
<el-button type="primary" link @click="openParamSettingDialog"> <el-button type="primary" link @click="openParamSettingDialog">
<AppIcon iconName="app-operation" class="mr-4"></AppIcon> <AppIcon iconName="app-setting" class="mr-4"></AppIcon>
{{ $t('common.paramSetting') }} {{ $t('common.paramSetting') }}
</el-button> </el-button>
<el-button type="primary" link @click="openKnowledgeDialog"> <el-button type="primary" link @click="openKnowledgeDialog">

View File

@ -72,7 +72,7 @@
<el-dropdown-menu class="create-dropdown"> <el-dropdown-menu class="create-dropdown">
<el-dropdown-item @click="openCreateDialog('SIMPLE')"> <el-dropdown-item @click="openCreateDialog('SIMPLE')">
<div class="flex"> <div class="flex">
<el-avatar shape="square" class="avatar-blue mt-4" :size="36"> <el-avatar shape="square" class="avatar-blue mt-4" :size="32">
<img <img
src="@/assets/application/icon_simple_application.svg" src="@/assets/application/icon_simple_application.svg"
style="width: 65%" style="width: 65%"
@ -89,7 +89,7 @@
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click="openCreateDialog('WORK_FLOW')"> <el-dropdown-item @click="openCreateDialog('WORK_FLOW')">
<div class="flex"> <div class="flex">
<el-avatar shape="square" class="avatar-purple mt-4" :size="36"> <el-avatar shape="square" class="avatar-purple mt-4" :size="32">
<img <img
src="@/assets/application/icon_workflow_application.svg" src="@/assets/application/icon_workflow_application.svg"
style="width: 65%" style="width: 65%"
@ -117,7 +117,7 @@
> >
<el-dropdown-item> <el-dropdown-item>
<div class="flex align-center w-full"> <div class="flex align-center w-full">
<el-avatar shape="square" class="mt-4" :size="36" style="background: none"> <el-avatar shape="square" class="mt-4" :size="32" style="background: none">
<img src="@/assets/icon_import.svg" alt="" /> <img src="@/assets/icon_import.svg" alt="" />
</el-avatar> </el-avatar>
<div class="pre-wrap ml-8"> <div class="pre-wrap ml-8">

View File

@ -131,7 +131,7 @@ const deleteHandle = (item: any, cIndex: number) => {
t('views.paragraph.delete.confirmMessage'), t('views.paragraph.delete.confirmMessage'),
{ {
confirmButtonText: t('common.confirm'), confirmButtonText: t('common.confirm'),
confirmButtonClass: 'color-danger', confirmButtonClass: 'danger',
}, },
) )
.then(() => { .then(() => {

View File

@ -2,18 +2,19 @@
<div class="provider-list"> <div class="provider-list">
<el-scrollbar> <el-scrollbar>
<div class="p-8"> <div class="p-8">
<div <div v-if="showShared && hasPermission(EditionConst.IS_EE, 'OR')" class="border-b mb-4">
@click="handleSharedNodeClick" <div
class="shared-button flex cursor border-b" @click="handleSharedNodeClick"
v-if="showShared && hasPermission(EditionConst.IS_EE, 'OR')" class="shared-button flex cursor"
:class="active?.provider === 'share' && 'active'" :class="active?.provider === 'share' && 'active'"
> >
<AppIcon <AppIcon
iconName="app-shared-active" iconName="app-shared-active"
style="font-size: 18px" style="font-size: 18px"
class="color-primary" class="color-primary"
></AppIcon> ></AppIcon>
<span class="ml-8 lighter">{{ $t('views.shared.shared_model') }}</span> <span class="ml-8 lighter">{{ $t('views.shared.shared_model') }}</span>
</div>
</div> </div>
<div <div
class="all-mode flex cursor" class="all-mode flex cursor"

View File

@ -26,20 +26,40 @@
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<span class="mr-8"> <span class="mr-8">
<el-button link @click.stop="editParagraph(data)" v-if="permissionPrecise.doc_edit(id)"> <el-tooltip
<AppIcon iconName="app-edit" :size="16" :title="$t('common.edit')"></AppIcon> effect="dark"
</el-button> :content="$t('views.paragraph.editParagraph')"
placement="top"
v-if="permissionPrecise.doc_edit(id)"
>
<el-button text @click.stop="editParagraph(data)">
<AppIcon
iconName="app-edit"
:size="16"
class="color-secondary"
></AppIcon>
</el-button>
</el-tooltip>
</span> </span>
<span class="mr-8"> <span class="mr-8">
<el-button link @click.stop="addParagraph(data)" v-if="permissionPrecise.doc_edit(id)"> <el-tooltip
<el-icon :size="16" :title="$t('common.add')"> effect="dark"
<el-icon><CirclePlus /></el-icon> :content="$t('views.paragraph.prevAddParagraph')"
</el-icon> placement="top"
</el-button> v-if="permissionPrecise.doc_edit(id)"
>
<el-button text @click.stop="addParagraph(data)" v-if="permissionPrecise.doc_edit(id)">
<AppIcon
iconName="app-add-circle-outlined"
class="color-secondary"
:size="16"
></AppIcon>
</el-button>
</el-tooltip>
</span> </span>
<el-dropdown trigger="click" :teleported="false" v-if="MoreFieldPermission(id)"> <el-dropdown trigger="click" :teleported="false" v-if="MoreFieldPermission(id)">
<el-button text> <el-button text>
<AppIcon iconName="app-more"></AppIcon> <AppIcon iconName="app-more" class="color-secondary"></AppIcon>
</el-button> </el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu style="min-width: 140px"> <el-dropdown-menu style="min-width: 140px">
@ -47,14 +67,14 @@
@click.stop="openGenerateDialog(data)" @click.stop="openGenerateDialog(data)"
v-if="permissionPrecise.doc_generate(id)" v-if="permissionPrecise.doc_generate(id)"
> >
<AppIcon iconName="app-generate-question"></AppIcon> <AppIcon iconName="app-generate-question" class="color-secondary"></AppIcon>
{{ $t('views.document.generateQuestion.title') }}</el-dropdown-item {{ $t('views.document.generateQuestion.title') }}</el-dropdown-item
> >
<el-dropdown-item <el-dropdown-item
@click.stop="openSelectDocumentDialog(data)" @click.stop="openSelectDocumentDialog(data)"
v-if="permissionPrecise.doc_edit(id)" v-if="permissionPrecise.doc_edit(id)"
> >
<AppIcon iconName="app-migrate"></AppIcon> <AppIcon iconName="app-migrate" class="color-secondary"></AppIcon>
{{ $t('views.document.setting.migration') }}</el-dropdown-item {{ $t('views.document.setting.migration') }}</el-dropdown-item
> >
<el-dropdown-item v-if="permissionPrecise.doc_edit(id)"> <el-dropdown-item v-if="permissionPrecise.doc_edit(id)">
@ -67,8 +87,7 @@
> >
<div class="w-full flex-between" style="line-height: 22px"> <div class="w-full flex-between" style="line-height: 22px">
<div class="flex align-center"> <div class="flex align-center">
<!-- TODO 更换icon --> <AppIcon iconName="app-drag-outlined" class="color-secondary"></AppIcon>
<AppIcon iconName="app-migrate"></AppIcon>
{{ $t('views.document.movePosition.title') }} {{ $t('views.document.movePosition.title') }}
</div> </div>
<el-icon class="color-input-placeholder" :size="16" style="margin-right: 0" <el-icon class="color-input-placeholder" :size="16" style="margin-right: 0"
@ -77,11 +96,14 @@
</div> </div>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item v-if="props.showMoveUp" @click.stop="emit('move', 'up')"> <el-dropdown-item
:disabled="props.showMoveUp"
@click.stop="emit('move', 'up')"
>
{{ $t('views.document.movePosition.moveUp') }} {{ $t('views.document.movePosition.moveUp') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
v-if="props.showMoveDown" :disabled="props.showMoveDown"
@click.stop="emit('move', 'down')" @click.stop="emit('move', 'down')"
> >
{{ $t('views.document.movePosition.moveDown') }} {{ $t('views.document.movePosition.moveDown') }}
@ -94,7 +116,7 @@
@click.stop="deleteParagraph(data)" @click.stop="deleteParagraph(data)"
v-if="permissionPrecise.doc_edit(id)" v-if="permissionPrecise.doc_edit(id)"
> >
<AppIcon iconName="app-delete"></AppIcon> <AppIcon iconName="app-delete" class="color-secondary"></AppIcon>
{{ $t('common.delete') }}</el-dropdown-item {{ $t('common.delete') }}</el-dropdown-item
> >
</el-dropdown-menu> </el-dropdown-menu>

View File

@ -5,7 +5,7 @@
<el-form-item :label="$t('views.chatUser.settingMethod')" prop="user_group_ids"> <el-form-item :label="$t('views.chatUser.settingMethod')" prop="user_group_ids">
<el-radio-group v-model="form.is_append"> <el-radio-group v-model="form.is_append">
<el-radio :value="true">{{ $t('views.chatUser.append') }}</el-radio> <el-radio :value="true">{{ $t('views.chatUser.append') }}</el-radio>
<el-radio :value="false">{{ $t('views.chatUser.replace') }}</el-radio> <el-radio :value="false">{{ $t('views.applicationOverview.SettingDisplayDialog.replace') }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.chatUser.group.title')" prop="user_group_ids"> <el-form-item :label="$t('views.chatUser.group.title')" prop="user_group_ids">

View File

@ -77,7 +77,7 @@
> >
<el-dropdown-item v-if="permissionPrecise.import()"> <el-dropdown-item v-if="permissionPrecise.import()">
<div class="flex align-center w-full"> <div class="flex align-center w-full">
<el-avatar shape="square" :size="36" style="background: none"> <el-avatar shape="square" :size="32" style="background: none">
<img src="@/assets/icon_import.svg" alt="" /> <img src="@/assets/icon_import.svg" alt="" />
</el-avatar> </el-avatar>
<div class="pre-wrap ml-8"> <div class="pre-wrap ml-8">
@ -88,7 +88,7 @@
</el-upload> </el-upload>
<el-dropdown-item @click="openToolStoreDialog()"> <el-dropdown-item @click="openToolStoreDialog()">
<div class="flex align-center"> <div class="flex align-center">
<el-avatar shape="square" :size="36" style="background: none"> <el-avatar shape="square" :size="32" style="background: none">
<img src="@/assets/icon_tool_shop.svg" alt="" /> <img src="@/assets/icon_tool_shop.svg" alt="" />
</el-avatar> </el-avatar>
<div class="pre-wrap ml-8"> <div class="pre-wrap ml-8">
@ -101,6 +101,7 @@
<el-dropdown-item @click="openCreateFolder" divided v-if="apiType === 'workspace'"> <el-dropdown-item @click="openCreateFolder" divided v-if="apiType === 'workspace'">
<div class="flex align-center"> <div class="flex align-center">
<AppIcon iconName="app-folder" style="font-size: 32px"></AppIcon> <AppIcon iconName="app-folder" style="font-size: 32px"></AppIcon>
<div class="pre-wrap ml-4"> <div class="pre-wrap ml-4">
<div class="lighter"> <div class="lighter">
{{ $t('components.folder.addFolder') }} {{ $t('components.folder.addFolder') }}

View File

@ -101,7 +101,7 @@ export function initDefaultShortcut(lf: LogicFlow, graph: GraphModel) {
} }
MsgConfirm(t('common.tip'), t('views.applicationWorkflow.delete.confirmTitle'), { MsgConfirm(t('common.tip'), t('views.applicationWorkflow.delete.confirmTitle'), {
confirmButtonText: t('common.confirm'), confirmButtonText: t('common.confirm'),
confirmButtonClass: 'color-danger' confirmButtonClass: 'danger'
}).then(() => { }).then(() => {
if (!keyboardOptions?.enabled) return true if (!keyboardOptions?.enabled) return true
if (graph.textEditElement) return true if (graph.textEditElement) return true

View File

@ -149,6 +149,7 @@ onMounted(() => {
inputFieldList.value.push(...props.nodeModel.properties.api_input_field_list) inputFieldList.value.push(...props.nodeModel.properties.api_input_field_list)
} }
set(props.nodeModel.properties, 'api_input_field_list', inputFieldList) set(props.nodeModel.properties, 'api_input_field_list', inputFieldList)
onDragHandle()
}) })
</script> </script>

View File

@ -69,7 +69,7 @@ const globalFields = [
value: 'chat_user_type', value: 'chat_user_type',
}, },
{ {
label: t('chat.chatUser'), label: t('views.chatUser.title'),
value: 'chat_user', value: 'chat_user',
}, },
] ]