From 9b9e63bb526ec60dda3f33855759874a39a45cb4 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期五, 03 一月 2025 10:24:03 +0800 Subject: [PATCH] 多行表单,大模型嵌套表格 --- src/views/project/yw/systemManage/llmMgr/components/LLMConfigDlg.vue | 5 ++ src/views/project/yw/systemManage/llmMgr/LLMMgr.vue | 56 ++++++++++++++++++++++++---- src/views/project/yw/systemManage/dataSourceMgr/components/DataSourceConfigDlg.vue | 19 +++++---- 3 files changed, 62 insertions(+), 18 deletions(-) diff --git a/src/views/project/yw/systemManage/dataSourceMgr/components/DataSourceConfigDlg.vue b/src/views/project/yw/systemManage/dataSourceMgr/components/DataSourceConfigDlg.vue index 3d3dedb..8382424 100644 --- a/src/views/project/yw/systemManage/dataSourceMgr/components/DataSourceConfigDlg.vue +++ b/src/views/project/yw/systemManage/dataSourceMgr/components/DataSourceConfigDlg.vue @@ -1,14 +1,9 @@ <template> <yw-dialog v-model="isShow" :showFooter="false" width="500" :title="title"> <el-form :label-width="labelWidth" v-if="item.config"> - <el-form-item label="鐢ㄦ埛鍚�"> - <el-input v-model="item.config.user" readonly /> - </el-form-item> - <el-form-item label="椹卞姩"> - <el-input v-model="item.config.driver" readonly /> - </el-form-item> - <el-form-item label="鍦板潃"> - <el-input v-model="item.config.url" readonly /> + <el-form-item v-for="key in Object.keys(item.config)" :label="keyMapLabel[key]" :key="key"> + <el-input readonly v-if="areaKey.includes(key)" type="textarea" v-model="item.config[key]" /> + <el-input readonly v-else v-model="item.config[key]" /> </el-form-item> </el-form> </yw-dialog> @@ -25,10 +20,16 @@ }); const title = computed(() => props.item?.title + '鈥斺�旀暟鎹簮閰嶇疆'); +const keyMapLabel = { + user: '鐢ㄦ埛鍚�', + driver: '椹卞姩', + url: '鍦板潃', +}; +const areaKey = [ 'url']; // 璁$畻鏈�闀跨殑label瀹藉害 const labelWidth = computed(() => { - const labels = ['椹卞姩', '鍦板潃', '鐢ㄦ埛鍚�']; + const labels = Object.values(keyMapLabel); const maxLengthLabel = labels.reduce((prev, current) => { return prev.length > current.length ? prev : current; }, ''); diff --git a/src/views/project/yw/systemManage/llmMgr/LLMMgr.vue b/src/views/project/yw/systemManage/llmMgr/LLMMgr.vue index 8cb4f32..e76f539 100644 --- a/src/views/project/yw/systemManage/llmMgr/LLMMgr.vue +++ b/src/views/project/yw/systemManage/llmMgr/LLMMgr.vue @@ -39,7 +39,30 @@ :align="item.align" showOverflowTooltip > - <template #default="scope" v-if="item.prop === 'operate'"> + <template #default="scope" v-if="item.type === 'expand'"> + <div class="ml-16 mt-2"> + <el-table border :data="scope.row.connectList" style="width: 100%"> + + + <el-table-column prop="title" width="200" label="鏍囬" fixed="left" show-overflow-tooltip /> + <el-table-column prop="class" label="绫�" show-overflow-tooltip /> + <el-table-column label="鎿嶄綔" width="55" fixed="right"> + <template #default="scope"> + <div class="space-x-3 items-center flex"> + <el-tooltip effect="dark" content="鏌ョ湅閰嶇疆" placement="top"> + <i + class="ywifont ywicon-shezhi !text-[19px] text-blue-400 cursor-pointer" + @click="openModelConfigDlg(scope.row)" + ></i> + </el-tooltip> + </div> + </template> + </el-table-column> + </el-table> + </div> + </template> + + <template #default="scope" v-else-if="item.prop === 'operate'"> <div class="space-x-3 items-center flex"> <!-- <el-tooltip effect="dark" content="AMIS浣庝唬鐮佺紪杈�" placement="top"> <i class="ywifont ywicon-didaima !text-[21px] text-blue-400 cursor-pointer" @click="gotoAmisPage(scope.row)"></i> @@ -54,9 +77,9 @@ <el-tooltip effect="dark" content="鏌ョ湅閰嶇疆" placement="top"> <i class="ywifont ywicon-shezhi !text-[19px] text-blue-400 cursor-pointer" @click="openConfigDlg(scope.row)"></i> </el-tooltip> - <el-tooltip effect="dark" content="杩炴帴妯″瀷" placement="top"> + <!-- <el-tooltip effect="dark" content="杩炴帴妯″瀷" placement="top"> <i class="ywifont ywicon-lizi !text-[16px] text-blue-400 cursor-pointer" @click="openConnectDrawer(scope.row)"></i> - </el-tooltip> + </el-tooltip> --> <!-- <el-tooltip effect="dark" content="缂栬緫" placement="top"> <i class="ywifont ywicon-bianji !text-[15px] text-blue-400 cursor-pointer" @click="openOptDlg(scope.row)"></i> @@ -82,6 +105,7 @@ </div> </template> <LLMConfigDlg v-model="configDlgIsShow" :item="configDlgMapRow"></LLMConfigDlg> + <ModelConfigDlg v-model="modelConfigDlg" :item="modelConfigDlgItem"></ModelConfigDlg> <!-- <OptDlg v-model="optDlgIsShow" :item="optDlgMapRow" @insert="insertOpt" @update="updateOpt"></OptDlg> --> <LLMConnectDrawer v-model="connectDrawerIsShow" :item="connectDrawerMapRow"></LLMConnectDrawer> </HMContainer> @@ -107,11 +131,13 @@ import LLMConnectDrawer from './components/LLMConnectDrawer.vue'; import { useUpdateData } from '/@/hooks/useUpdateData'; import LLMConfigDlg from './components/LLMConfigDlg.vue'; +import ModelConfigDlg from './components/ModelConfigDlg.vue'; const columnList = ref<TableCol[]>([ + { type: 'expand', label: '', width: 55, fixed: 'left' }, { type: 'index', label: '搴忓彿', width: 55, fixed: 'left', align: 'center' }, { prop: 'title', label: '鏍囬', fixed: 'left' }, - - { prop: 'operate', label: '鎿嶄綔', width: 200, fixed: 'right' }, + + { prop: 'operate', label: '鎿嶄綔', width: 55, fixed: 'right' }, ]); //#region ====================== 琛ㄦ牸鏁版嵁锛宼able init ====================== @@ -121,10 +147,16 @@ const isDragStatus = ref(false); const getTableData = async () => { const res = await GetLLMInfoList(); - tableData.value = Object.keys(res.values || {}).map((key) => { + tableData.value = Object.keys(res.values || {}).map((key1) => { return { - id: key, - ...res.values[key], + id: key1, + ...res.values[key1], + connectList: Object.keys(res.values[key1].connects || {}).map((key2) => { + return { + id: key2, + ...res.values[key1].connects[key2], + }; + }), }; }); }; @@ -236,6 +268,14 @@ connectDrawerIsShow.value = true; }; //#endregion +//#region ====================== 鎵撳紑妯″瀷閰嶇疆瀵硅瘽妗� ====================== +const modelConfigDlg = ref(false); +const modelConfigDlgItem = ref(null); +const openModelConfigDlg = (row) => { + modelConfigDlg.value = true; + modelConfigDlgItem.value = row; +}; +//#endregion onMounted(() => { getTableData(); diff --git a/src/views/project/yw/systemManage/llmMgr/components/LLMConfigDlg.vue b/src/views/project/yw/systemManage/llmMgr/components/LLMConfigDlg.vue index 2f12ae5..75f7ca0 100644 --- a/src/views/project/yw/systemManage/llmMgr/components/LLMConfigDlg.vue +++ b/src/views/project/yw/systemManage/llmMgr/components/LLMConfigDlg.vue @@ -2,7 +2,8 @@ <yw-dialog v-model="isShow" :showFooter="false" width="500" :title="title"> <el-form label-width="76" v-if="item.config"> <el-form-item v-for="key in Object.keys(item.config)" :label="keyMapLabel[key]" :key="key"> - <el-input v-model="item.config[key]" readonly /> + <el-input v-if="areaKey.includes(key)" type="textarea" v-model="item.config[key]" readonly /> + <el-input v-else v-model="item.config[key]" /> </el-form-item> </el-form> </yw-dialog> @@ -24,6 +25,8 @@ proxy: '浠g悊', }; +const areaKey = [] + const title = computed(() => props.item?.title + '鈥斺�旈厤缃�'); // 璁$畻鏈�闀跨殑label瀹藉害 -- Gitblit v1.9.3