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