From eac6d7b13f49d9d686853f409af1ea323e107776 Mon Sep 17 00:00:00 2001
From: yangyin <1850366751@qq.com>
Date: 星期四, 10 十月 2024 14:50:04 +0800
Subject: [PATCH] 修改数据管理

---
 src/api/knowledge/group.ts                           |    2 
 src/views/project/yw/dataManage/graph/GraphIndex.vue |  269 +++++++-------------------------------------
 src/views/project/yw/dataManage/graph/AddGraph.vue   |   56 ++++++---
 3 files changed, 81 insertions(+), 246 deletions(-)

diff --git a/src/api/knowledge/group.ts b/src/api/knowledge/group.ts
index 2364a40..a7d31cf 100644
--- a/src/api/knowledge/group.ts
+++ b/src/api/knowledge/group.ts
@@ -4,7 +4,7 @@
  */
 export const get_knowledge_group_list = async () => {
 	return request({
-		url: '/admin/knowledge/get_knowledge_group_list',
+		url: '/scene/get_scene_group_tree',
 		method: 'POST',
 	});
 };
diff --git a/src/views/project/yw/dataManage/graph/AddGraph.vue b/src/views/project/yw/dataManage/graph/AddGraph.vue
index d6cf0fa..b1f1c63 100644
--- a/src/views/project/yw/dataManage/graph/AddGraph.vue
+++ b/src/views/project/yw/dataManage/graph/AddGraph.vue
@@ -59,9 +59,12 @@
 <script setup lang="ts">
 import type { UploadUserFile } from 'element-plus';
 import { ElMessage } from 'element-plus';
+import moment from 'moment';
 import { onMounted, reactive, ref } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 import { add_knowledge_file } from '/@/api/knowledge/group';
+import mittBus from '/@/utils/mitt';
+import { convertFileSize } from '/@/utils/util';
 const uploadFileChange = (rule, value, callback) => {
 	if (fileList.value.length === 0) {
 		return callback('璇烽�夋嫨闇�瑕佷笂浼犵殑鏂囦欢');
@@ -84,9 +87,11 @@
 	categoryFormRules: {
 		importType: [{ required: true, validator: uploadFileChange, trigger: 'change' }],
 	},
+	fileInfo: {} as any,
 });
 const fileList = ref<UploadUserFile[]>([]);
 const categoryFormRef = ref(null);
+const uploadRef = ref(null);
 const router = useRouter();
 const route = useRoute();
 //杩斿洖
@@ -94,10 +99,11 @@
 	//鏄惁鏄剧ず杩斿洖
 	router.back();
 	categoryFormRef.value.resetFields();
+	uploadRef.value.clearFiles();
 	fileList.value = [];
 };
-const flag = ref(true);
 const uploadFile = (file: UploadUserFile) => {
+	state.fileInfo = file?.file;
 	fileList.value.push(file);
 	categoryFormRef.value.validateField(['importType']); //绉婚櫎涓婁紶鏂囦欢閿欒鎻愮ず!杩欐槸閲嶇偣锛侊紒
 };
@@ -112,26 +118,38 @@
 };
 //纭
 const onSubmit = async () => {
-	let group_id = route.query.group_id;
+	const valid = await categoryFormRef.value.validate().catch(() => {});
+	if (!valid) return;
+	const group_id = route.query.group_id;
 	if (group_id == null || group_id == '' || group_id == undefined) return;
-	categoryFormRef.value.validate(async (valid: boolean) => {
-		if (valid) {
-			const data = new FormData();
-			fileList.value.forEach((item: any) => {
-				data.append('file', item.file);
-			});
-			data.append('group_id', group_id);
-			const res = await add_knowledge_file(data);
-			if (res.json_ok) {
-				ElMessage.success('瀵煎叆鎴愬姛');
-				router.push({
-					name: 'GraphIndex',
-				});
-			} else {
-				ElMessage.error(res.json_msg);
-			}
-		}
+	const group_name = state.fileInfo?.name;
+	const group_type = group_name.split('.').pop();
+	const group_time = moment(state.fileInfo?.lastModifiedDate).format('YYYY-MM-DD HH:mm:ss');
+	const group_size = convertFileSize(state.fileInfo?.size);
+	const data = new FormData();
+	fileList.value.forEach((item: any) => {
+		data.append('file', item.file);
 	});
+	data.append('group_id', group_id);
+	const res = await add_knowledge_file(data);
+	if (res.json_ok) {
+		ElMessage.success('瀵煎叆鎴愬姛');
+		let obj = {
+			id: res.file_id,
+			name: group_name,
+			type: group_type,
+			time: group_time,
+			size: group_size,
+		};
+
+		mittBus.emit('addGraphObj', obj);
+		router.push({
+			name: 'GraphIndex',
+		});
+		uploadRef.value.clearFiles();
+	} else {
+		ElMessage.error(res.json_msg);
+	}
 };
 onMounted(() => {
 	const group_title = route.query.title;
diff --git a/src/views/project/yw/dataManage/graph/GraphIndex.vue b/src/views/project/yw/dataManage/graph/GraphIndex.vue
index e550714..fa36d2a 100644
--- a/src/views/project/yw/dataManage/graph/GraphIndex.vue
+++ b/src/views/project/yw/dataManage/graph/GraphIndex.vue
@@ -1,53 +1,23 @@
 <template>
 	<AHMContainer type="card">
 		<template #aside>
-			<!-- 鐩綍鏍� -->
 			<LeftTreeByMgr
 				v-loading="treeLoading"
+				class="h100"
 				ref="leftTreeRef"
-				:treedata="listTreeData"
-				title-name="绫荤洰绠$悊"
-				:show-more-operate="true"
-				:show-add="true"
-				:folderIcon="() => false"
 				:defaultProps="{
-					children: 'Children',
-					label: 'title',
-					id: 'id',
+					id: 'group_id',
+					label: 'group_name',
+					children: 'children',
 				}"
+				:treedata="listTreeData"
+				title-name="鍒嗙粍鍒楄〃"
+				:show-more-operate="false"
+				:show-add="false"
 				:current-node-key="currentListID"
-				:expand-on-click-node="false"
-				:default-expand-all="true"
+				:node-icon="() => 'ele-Document'"
 				@click="handleClickNode"
-				:customDropdown="true"
-				@tree-add="openOperateFormulaGroupDialog"
 			>
-				<template #customDropdown="{ data, node }">
-					<el-dropdown-menu>
-						<el-dropdown-item>
-							<el-button
-								@click.stop="() => openOperateFormulaGroupDialog(data)"
-								link
-								type="primary"
-								icon="ele-Edit"
-								style="cursor: pointer"
-							>
-								缂栬緫
-							</el-button>
-						</el-dropdown-item>
-						<el-dropdown-item>
-							<el-button
-								link
-								type="danger"
-								@click.stop="() => deleteCurrentFormulaGroup(node, data)"
-								icon="ele-Delete"
-								style="cursor: pointer"
-							>
-								鍒犻櫎
-							</el-button>
-						</el-dropdown-item>
-					</el-dropdown-menu>
-				</template>
 			</LeftTreeByMgr>
 		</template>
 
@@ -57,13 +27,6 @@
 				<el-form-item label="鍚嶇О" prop="title">
 					<el-input v-model="graphQueryParams.title" style="width: 226.4px" placeholder="鏂囦欢鍚嶇О" clearable></el-input>
 				</el-form-item>
-				<!-- <el-form-item>
-					<el-select v-model="graphQueryParams.Code" autocomplete="off" style="width: 226.4px" clearable>
-						<el-option v-for="item in Object.keys(analyzeMap)" :key="item" :value="parseInt(item)" :label="analyzeMap[item]">
-						</el-option>
-					</el-select>
-				</el-form-item> -->
-
 				<el-form-item>
 					<el-button type="primary" icon="ele-Search" @click="handleQueryTable"> 鏌ヨ </el-button>
 					<el-button icon="ele-Refresh" @click="resetQuery">閲嶇疆 </el-button>
@@ -116,78 +79,20 @@
 				</el-table>
 			</div>
 		</template>
-		<!-- 澧炲姞銆佷慨鏀规暟鎹璇濇 -->
-		<el-dialog
-			:destroy-on-close="true"
-			v-model="dataGroupDialogIsShow"
-			width="400"
-			:close-on-click-modal="false"
-			@closed="closeDataGroupDialog"
-		>
-			<template #header>
-				<div style="color: #fff">
-					<SvgIcon
-						:name="formulaGroupDialogHeaderIcon"
-						:size="16"
-						style="margin-right: 3px; display: inline; vertical-align: middle"
-					/>
-					<span> {{ formulaGroupDialogTitle }} </span>
-				</div>
-			</template>
-
-			<el-form :model="dataGroupDialogFormValue" ref="formulaGroupDialogFormRef" :rules="formulaGroupDialogFormRules" label-width="55">
-				<el-form-item label="鐖剁骇" v-if="!isEditDataGroupDialog" prop="parent_group">
-					<el-tree-select
-						default-expand-all
-						filterable
-						style="width: 100%"
-						v-model="dataGroupDialogFormValue.parent_group"
-						:props="{
-							id: 'id',
-							label: 'title',
-							children: 'Children',
-						}"
-						:data="listTreeData"
-						node-key="id"
-						:clearable="true"
-						:accordion="true"
-						:expandNode="false"
-						:check-strictly="true"
-						placeholder="璇烽�夋嫨鐖剁骇"
-					>
-					</el-tree-select>
-				</el-form-item>
-				<el-form-item label="鍚嶇О" prop="title">
-					<el-input placeholder="璇疯緭鍏ュ悕绉�" v-model="dataGroupDialogFormValue.title"></el-input>
-				</el-form-item>
-			</el-form>
-			<template #footer>
-				<div>
-					<el-button @click="closeDataGroupDialog">鍙� 娑�</el-button>
-					<el-button type="primary" @click="submitDataGroupFormValue">纭� 瀹�</el-button>
-				</div>
-			</template>
-		</el-dialog>
 	</AHMContainer>
 </template>
 
 <script setup lang="ts">
-import type { FormInstance, FormRules } from 'element-plus';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { computed, nextTick, onMounted, reactive, ref } from 'vue';
 import { useRouter } from 'vue-router';
-import {
-	add_knowledge_group,
-	delete_knowledge_file,
-	delete_knowledge_group,
-	get_knowledge_group_list,
-	list_knowledge_file,
-	update_knowledge_group,
-} from '/@/api/knowledge/group';
+import * as agentGroupApi from '/@/api/ai/agentGroup';
+import { delete_knowledge_file, list_knowledge_file } from '/@/api/knowledge/group';
 import AHMContainer from '/@/components/layout/AHMContainer.vue';
 import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue';
 import { useQueryTable } from '/@/hooks/useQueryTable';
-import { deepClone } from '/@/utils/other';
+import mittBus from '/@/utils/mitt';
+import { useCompRef } from '/@/utils/types';
 import { convertFileSize, convertListToTree } from '/@/utils/util';
 const state = reactive({
 	tableParams: {
@@ -200,40 +105,37 @@
 	detailTitle: '',
 });
 //#region ====================== 宸︿晶鏍戞暟鎹紝tree init ======================
-const leftTreeRef = ref(null);
+const leftTreeRef = useCompRef(LeftTreeByMgr);
 const treeLoading = ref(false);
-const listTreeData = ref([]);
-const currentTreeNode = ref(null);
-const currentListID = computed(() => currentTreeNode.value?.id);
+const listData = ref([]);
+const currentListID = computed(() => currentNode.value?.group_id);
+const currentNode = ref(null);
+
+const listTreeData = computed(() => {
+	const result = convertListToTree(listData.value, {
+		ID: 'group_id',
+		ParentID: 'p_group_id',
+		Children: 'children',
+	});
+	return result;
+});
+
 const handleClickNode = (data) => {
 	nextTick(() => {
 		leftTreeRef.value?.treeRef.setCurrentKey(data.id);
 	});
-	currentTreeNode.value = data;
+	currentNode.value = data;
 	getCategoryTableData();
 };
-const getListTreeData = async (selectFirst = false) => {
-	treeLoading.value = true;
-	const res = await get_knowledge_group_list().finally(() => {
-		treeLoading.value = false;
-	});
-	if (res?.json_ok) {
-		const resData = (res.values || []) as [];
-		listTreeData.value = convertListToTree(resData, {
-			ID: 'id',
-			Children: 'Children',
-			ParentID: 'parent',
-		});
-		if (selectFirst) {
-			const firstListTreeNode = listTreeData.value[0];
-			if (firstListTreeNode) {
-				handleClickNode(firstListTreeNode);
-			} else {
-				categoryTableData.value = [];
-			}
-		} else {
-			currentTreeNode.value && handleClickNode(currentTreeNode.value);
-		}
+const getListTreeData = async () => {
+	const res = await agentGroupApi.getSceneGroupTreeByPost();
+	listData.value = res.groups || [];
+	const firstListTreeNode = listTreeData.value[0];
+	if (firstListTreeNode) {
+		handleClickNode(firstListTreeNode);
+	} else {
+		categoryTableData.value = [];
+		currentNode.value = null;
 	}
 };
 //#endregion
@@ -290,6 +192,7 @@
 //#region ====================== 璺宠浆鏂囨。璇︽儏椤甸潰 init======================
 const router = useRouter();
 const openOperateDemoPage = (row: any) => {
+	console.log('馃殌 ~ row:', row);
 	router.push({
 		name: 'ViewFile',
 		query: {
@@ -311,103 +214,17 @@
 		name: 'AddGraph',
 		query: {
 			group_id: currentListID.value,
-			title: currentTreeNode.value.title,
+			title: currentNode.value.group_name,
 		},
 	});
 };
 //#endregion
-
-//#region ====================== 鍒犻櫎宸︿晶鏍戞枃妗e垎缁勬暟鎹� ======================
-
-const deleteCurrentFormulaGroup = (node, row: any) => {
-	ElMessageBox.confirm(`纭畾鍒犻櫎鏂囨。鍒嗙粍锛氥��${row.title}銆�?`, '鎻愮ず', {
-		confirmButtonText: '纭畾',
-		cancelButtonText: '鍙栨秷',
-		type: 'warning',
-	}).then(async () => {
-		const res = await delete_knowledge_group({
-			id: row.id,
-		});
-
-		if (res.json_ok) {
-			ElMessage.success('鍒犻櫎鏂囨。鍒嗙粍鎴愬姛');
-			const parent = node.parent;
-			const children = parent.data.Children || parent.data;
-			const index = children.findIndex((d) => d.id === row.id);
-			children.splice(index, 1);
-		} else {
-			ElMessage.error('鍒犻櫎鏂囨。鍒嗙粍澶辫触');
-		}
-	});
-};
-//#endregion
-
-//#region ====================== 澧炲姞銆佸垹闄ゆ枃妗e垎缁勬搷浣�, dialog init======================
-const isEditDataGroupDialog = ref(false);
-const formulaGroupDialogTitle = computed(() => {
-	return isEditDataGroupDialog.value ? '淇敼鏂囨。鍒嗙粍' : '娣诲姞鏂囨。鍒嗙粍';
-});
-const formulaGroupDialogHeaderIcon = computed(() => {
-	return isEditDataGroupDialog.value ? 'ele-Edit' : 'ele-Plus';
-});
-const dataGroupDialogFormValue = ref(null);
-const dataGroupDialogIsShow = ref(false);
-
-const formulaGroupDialogFormRef = ref<FormInstance>(null);
-
-const formulaGroupDialogFormRules = ref<FormRules>({
-	title: [{ required: true, message: '璇疯緭鍏ュ悕绉�', trigger: 'blur' }],
-});
-const openOperateFormulaGroupDialog = (data?) => {
-	if (data) {
-		isEditDataGroupDialog.value = true;
-		const { id, title } = data;
-		dataGroupDialogFormValue.value = deepClone({ id, title });
-	} else {
-		isEditDataGroupDialog.value = false;
-		dataGroupDialogFormValue.value = { title: '', parent_group: '' };
-	}
-	dataGroupDialogIsShow.value = true;
-};
-
-const closeDataGroupDialog = () => {
-	dataGroupDialogIsShow.value = false;
-	formulaGroupDialogFormRef.value.clearValidate();
-};
-
-const submitDataGroupFormValue = async () => {
-	const valid = await formulaGroupDialogFormRef.value.validate().catch(() => {});
-	if (!valid) return;
-
-	if (isEditDataGroupDialog.value) {
-		const res = await update_knowledge_group(dataGroupDialogFormValue.value);
-
-		if (res.json_ok) {
-			getListTreeData();
-			closeDataGroupDialog();
-			ElMessage.success('淇敼鏂囨。鍒嗙粍鎴愬姛');
-		} else {
-			ElMessage.error('淇敼鏂囨。鍒嗙粍澶辫触');
-		}
-	} else {
-		const res = await add_knowledge_group({
-			...dataGroupDialogFormValue.value,
-			parent_group: dataGroupDialogFormValue.value.parent_group || '0',
-		});
-		if (res.json_ok) {
-			getListTreeData();
-			closeDataGroupDialog();
-			ElMessage.success('娣诲姞鏂囨。鍒嗙粍鎴愬姛');
-		} else {
-			ElMessage.error('娣诲姞鏂囨。鍒嗙粍澶辫触');
-		}
-	}
-};
-//#endregion
-
 //#region ====================== 鎸傝浇鏃惰幏鍙栧垵濮嬫暟鎹� ======================
 onMounted(() => {
-	getListTreeData(true);
+	getListTreeData();
+	mittBus.on('addGraphObj', (obj) => {
+		categoryTableData.value.push(obj);
+	});
 });
 //#endregion
 </script>

--
Gitblit v1.9.3