style: MCP config dialog style (#3911)

Co-authored-by: wangdan-fit2cloud <dan.wang@fit2cloud.com>
v3.2
shaohuzhang1 2025-08-21 18:06:20 +08:00 committed by GitHub
parent 77b86b99e9
commit 841b6397a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 35 additions and 43 deletions

View File

@ -8,6 +8,7 @@ export default {
copyTool: 'Copy Tool', copyTool: 'Copy Tool',
importTool: 'Import Tool', importTool: 'Import Tool',
settingTool: 'Set Tool', settingTool: 'Set Tool',
mcpConfig: 'MCP Service Config',
toolStore: { toolStore: {
title: 'Tool Store', title: 'Tool Store',
createFromToolStore: 'Create from Tool Store', createFromToolStore: 'Create from Tool Store',
@ -38,9 +39,6 @@ export default {
}, },
form: { form: {
create: 'Create Tool',
createMcp: 'Create MCP',
mcpConfig: 'MCP Service Config',
toolName: { toolName: {
label: 'Name', label: 'Name',
name: 'Tool Name', name: 'Tool Name',

View File

@ -8,6 +8,7 @@ export default {
copyTool: '复制工具', copyTool: '复制工具',
importTool: '导入工具', importTool: '导入工具',
settingTool: '设置工具', settingTool: '设置工具',
mcpConfig: 'MCP服务配置',
toolStore: { toolStore: {
title: '工具商店', title: '工具商店',
createFromToolStore: '从工具商店创建', createFromToolStore: '从工具商店创建',
@ -32,9 +33,6 @@ export default {
saveMessage: '当前的更改尚未保存,确认退出吗?', saveMessage: '当前的更改尚未保存,确认退出吗?',
}, },
form: { form: {
create: '创建工具',
createMcp: '创建MCP',
mcpConfig: 'MCP服务配置',
toolName: { toolName: {
label: '名称', label: '名称',
name: '工具名称', name: '工具名称',

View File

@ -8,6 +8,7 @@ export default {
copyTool: '複製工具', copyTool: '複製工具',
importTool: '匯入工具', importTool: '匯入工具',
settingTool: '設定工具', settingTool: '設定工具',
mcpConfig: 'MCP服務配置',
toolStore: { toolStore: {
title: '工具商店', title: '工具商店',
createFromToolStore: '從工具商店創建', createFromToolStore: '從工具商店創建',
@ -35,9 +36,6 @@ export default {
confirmMessage: '停用後,引用該工具的應用在查詢時會報錯,請謹慎操作。', confirmMessage: '停用後,引用該工具的應用在查詢時會報錯,請謹慎操作。',
}, },
form: { form: {
create: '建立工具',
createMcp: '建立MCP',
mcpConfig: 'MCP服務配置',
toolName: { toolName: {
label: '名稱', label: '名稱',
name: '工具名稱', name: '工具名稱',

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog <el-dialog
:title="$t('views.tool.form.mcpConfig')" :title="$t('views.tool.mcpConfig')"
width="600" width="600"
v-model="dialogVisible" v-model="dialogVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
@ -8,6 +8,7 @@
:destroy-on-close="true" :destroy-on-close="true"
:before-close="close" :before-close="close"
append-to-body append-to-body
class="mcp-config-dialog"
> >
<el-form label-width="auto" label-position="top"> <el-form label-width="auto" label-position="top">
<el-form-item> <el-form-item>
@ -16,24 +17,25 @@
v-model="mcp_servers" v-model="mcp_servers"
rows="8" rows="8"
disabled disabled
class="config-textarea"
@mouseenter.stop="showIcon = true"
@mouseleave.stop="showIcon = false"
></el-input> ></el-input>
<AppIcon <el-button circle class="copy-icon" v-if="showIcon" @click="copyClick(mcp_servers)">
iconName="app-copy" <AppIcon iconName="app-copy" class="color-secondary"/>
class="copy-icon color-secondary" </el-button>
@click="copyClick(mcp_servers)"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-dialog> </el-dialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {ref} from 'vue' import { ref } from 'vue'
import {copyClick} from '@/utils/clipboard' import { copyClick } from '@/utils/clipboard'
const mcp_servers = ref<string>('') const mcp_servers = ref<string>('')
const dialogVisible = ref<boolean>(false) const dialogVisible = ref<boolean>(false)
const showIcon = ref<boolean>(false)
const close = () => { const close = () => {
dialogVisible.value = false dialogVisible.value = false
@ -43,25 +45,23 @@ const open = (item: any) => {
dialogVisible.value = true dialogVisible.value = true
} }
defineExpose({open,}) defineExpose({ open })
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.mcp-config-dialog {
.copy-icon { .copy-icon {
position: absolute; position: absolute;
top: 6px; top: 12px;
right: 8px; right: 12px;
font-size: 16px; box-shadow: 0px 4px 8px 0px rgba(31, 35, 41, 0.1);
cursor: pointer; z-index: 2;
z-index: 2; }
} .config-textarea {
:deep(.el-textarea__inner) {
.copy-icon:hover { color: var(--el-text-color-primary);
opacity: 0.85; cursor: pointer;
} }
}
:deep(.el-textarea__inner) {
padding-right: 34px; //
} }
</style> </style>

View File

@ -50,7 +50,7 @@
<img src="@/assets/workflow/icon_tool.svg" style="width: 58%" alt="" /> <img src="@/assets/workflow/icon_tool.svg" style="width: 58%" alt="" />
</el-avatar> </el-avatar>
<div class="pre-wrap ml-8"> <div class="pre-wrap ml-8">
<div class="lighter">{{ $t('views.tool.form.create') }}</div> <div class="lighter">{{ $t('views.tool.createTool') }}</div>
</div> </div>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
@ -60,7 +60,7 @@
<img src="@/assets/workflow/icon_mcp.svg" style="width: 75%" alt="" /> <img src="@/assets/workflow/icon_mcp.svg" style="width: 75%" alt="" />
</el-avatar> </el-avatar>
<div class="pre-wrap ml-8"> <div class="pre-wrap ml-8">
<div class="lighter">{{ $t('views.tool.form.createMcp') }}</div> <div class="lighter">{{ $t('views.tool.createMcpTool') }}</div>
</div> </div>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
@ -222,8 +222,8 @@
v-if="item.tool_type === 'MCP'" v-if="item.tool_type === 'MCP'"
@click.stop="showMcpConfig(item)" @click.stop="showMcpConfig(item)"
> >
<AppIcon iconName="app-edit" class="color-secondary"></AppIcon> <AppIcon iconName="app-operate-log" class="color-secondary"></AppIcon>
{{ $t('views.tool.form.mcpConfig') }} {{ $t('views.tool.mcpConfig') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
v-if="item.template_id && permissionPrecise.edit(item.id)" v-if="item.template_id && permissionPrecise.edit(item.id)"

View File

@ -20,12 +20,10 @@
</el-button> </el-button>
</el-tooltip> </el-tooltip>
</div> </div>
<template v-if="nodeModel.properties.config.chatFields"> <template v-if="nodeModel.properties.config.chatFields?.length">
<h5 class="title-decoration-1 mb-8">{{ $t('views.applicationWorkflow.variable.chat') }}</h5> <h5 class="title-decoration-1 mb-8">{{ $t('views.applicationWorkflow.variable.chat') }}</h5>
<div <div
v-for="(item, index) in nodeModel.properties.config.chatFields v-for="(item, index) in nodeModel.properties.config.chatFields || []"
? nodeModel.properties.config.chatFields
: []"
:key="index" :key="index"
class="flex-between border-r-6 p-8-12 mb-8 layout-bg lighter" class="flex-between border-r-6 p-8-12 mb-8 layout-bg lighter"
@mouseenter="showicon = true" @mouseenter="showicon = true"