From cf5c3cde7d0dbec44d4c2f7bea87c4d5362accb0 Mon Sep 17 00:00:00 2001
From: yangyin <1850366751@qq.com>
Date: 星期五, 06 九月 2024 09:56:19 +0800
Subject: [PATCH] 修改按钮的text修改为link

---
 src/views/project/yw/dataManage/graph/GraphIndex.vue        |    6 -
 src/views/project/yw/dataManage/graph/AddGraph.vue          |    2 
 src/views/project/yw/dataManage/knowledge/EditKnowledge.vue |    2 
 src/views/project/yw/dataManage/knowledge/ViewKnowledge.vue |  210 +++++++++++++++++++++++++++++++++++++++--
 src/views/project/yw/dataManage/knowledge/AddKnowledge.vue  |    9 +
 src/components/flow/FlowToolbarZJY.vue                      |    9 +
 src/components/flow/FlowToolbar.vue                         |    4 
 src/views/project/yw/lowCode/sqlAmis/edit/SqlAmisEdit.vue   |    5 
 8 files changed, 218 insertions(+), 29 deletions(-)

diff --git a/src/components/flow/FlowToolbar.vue b/src/components/flow/FlowToolbar.vue
index 31ce5ef..4b49fe1 100644
--- a/src/components/flow/FlowToolbar.vue
+++ b/src/components/flow/FlowToolbar.vue
@@ -3,7 +3,7 @@
 		<el-button
 			v-if="showExist"
 			icon="ele-ArrowLeft"
-			text
+			link
 			style="margin-right: 10px; margin-left: 10px; width: 40px"
 			size="small"
 			@click="handleExitClick"
@@ -18,7 +18,7 @@
 </template>
 
 <script setup lang="ts">
-import {  definePropType } from 'element-plus/es/utils/vue/props/runtime';
+import { definePropType } from 'element-plus/es/utils/vue/props/runtime';
 import type { ButtonComponentProps } from './types';
 import ToolbarMenu from '/@/components/flow/ToolbarMenu.vue';
 
diff --git a/src/components/flow/FlowToolbarZJY.vue b/src/components/flow/FlowToolbarZJY.vue
index 06c1f7e..4adc4da 100644
--- a/src/components/flow/FlowToolbarZJY.vue
+++ b/src/components/flow/FlowToolbarZJY.vue
@@ -1,6 +1,12 @@
 <template>
 	<div class="title-box">
-		<el-button icon="ele-ArrowLeft" text style="margin-right: 10px; margin-left: 10px; width: 40px" size="small" @click="handleExitClick">
+		<el-button
+			icon="ele-ArrowLeft"
+			link
+			style="margin-right: 10px; margin-left: 10px; width: 40px"
+			size="small"
+			@click="handleExitClick"
+		>
 		</el-button>
 		<div class="title-icon"></div>
 		<div style="flex: 1">
@@ -11,7 +17,6 @@
 </template>
 
 <script setup lang="ts">
-import { PropType } from 'vue';
 import ToolbarMenu from '/@/components/flow/ToolbarMenu.vue';
 
 const props = defineProps({
diff --git a/src/views/project/yw/dataManage/graph/AddGraph.vue b/src/views/project/yw/dataManage/graph/AddGraph.vue
index fb740dc..e98b819 100644
--- a/src/views/project/yw/dataManage/graph/AddGraph.vue
+++ b/src/views/project/yw/dataManage/graph/AddGraph.vue
@@ -1,7 +1,7 @@
 <template>
 	<div class="h100 overflow-y-auto p-[16px]">
 		<div class="mb-[10px] flex items-center">
-			<el-button style="margin-left: 8px; width: 40px" text @click="handleExitFlow">
+			<el-button style="margin-left: 8px; width: 40px" link @click="handleExitFlow">
 				<el-icon style="font-size: 24px !important">
 					<ArrowLeft />
 				</el-icon>
diff --git a/src/views/project/yw/dataManage/graph/GraphIndex.vue b/src/views/project/yw/dataManage/graph/GraphIndex.vue
index 2b090c4..af642ae 100644
--- a/src/views/project/yw/dataManage/graph/GraphIndex.vue
+++ b/src/views/project/yw/dataManage/graph/GraphIndex.vue
@@ -86,7 +86,7 @@
 					highlight-current-row
 				>
 					<el-table-column prop="name" label="鏂囦欢鍚嶇О" fixed="left" show-overflow-tooltip align="left" />
-					<el-table-column prop="type" width="120" label="鏂囦欢鏍煎紡" show-overflow-tooltip align="center" />
+					<el-table-column prop="type" width="120" label="鏂囦欢绫诲瀷" show-overflow-tooltip align="center" />
 					<el-table-column prop="time" label="涓婁紶鏃堕棿" show-overflow-tooltip width="280" align="center"></el-table-column>
 					<el-table-column label="鎿嶄綔" width="80" fixed="right" show-overflow-tooltip align="center">
 						<template #default="scope">
@@ -233,10 +233,6 @@
 	}).finally(() => {});
 	if (res?.json_ok) {
 		const resData = (res.values || []) as [];
-		resData.forEach((item) => {
-			const type = item?.name.split('.')[1];
-			item.type = type;
-		});
 		categoryTableData.value = resData;
 	} else {
 		ElMessage.error('鑾峰彇鏂囨。鍒楄〃澶辫触' + (res?.json_msg ? `锛�${JSON.stringify(res.json_msg)}` : ''));
diff --git a/src/views/project/yw/dataManage/knowledge/AddKnowledge.vue b/src/views/project/yw/dataManage/knowledge/AddKnowledge.vue
index 7d0bef9..5118970 100644
--- a/src/views/project/yw/dataManage/knowledge/AddKnowledge.vue
+++ b/src/views/project/yw/dataManage/knowledge/AddKnowledge.vue
@@ -1,7 +1,7 @@
 <template>
 	<div class="flex flex-col h100">
 		<div class="mb-[10px] flex flex-shrink-0 items-center">
-			<el-button style="margin-left: 8px; width: 40px" text @click="handleExitFlow">
+			<el-button style="margin-left: 8px; width: 40px" link @click="handleExitFlow">
 				<el-icon style="font-size: 24px !important">
 					<ArrowLeft />
 				</el-icon>
@@ -176,7 +176,7 @@
 								<div
 									class="bg-[#fff] border-[1px] border-solid border-[#d8d9e6] py-[12px] w-[215px] mr-[10px] px-[16px] rounded-lg cursor-pointer"
 									:class="{ activeColor: state.knowledgeForm.segmentationMode === item.ID }"
-									@click="activeConfigurationType(item.ID)"
+									@click="activeDataProcessType(item.ID)"
 								>
 									<div class="flex items-center">
 										<div class="data_left">
@@ -350,6 +350,10 @@
 const activeConfigurationType = (id: number) => {
 	state.knowledgeForm.configurationMode = id;
 };
+//閫夋嫨鏁版嵁鏂囨。鍒囧垎
+const activeDataProcessType = (id: number) => {
+	state.knowledgeForm.segmentationMode = id;
+};
 //涓嬩竴姝�
 const nextKnowledge = async () => {
 	const valid = await knowledgeFormRef.value.validate().catch(() => {});
@@ -372,7 +376,6 @@
 	if (!valid) return;
 	const res = await add_docvector_name({ title: state.knowledgeForm.title, prompt: state.knowledgeForm.prompt });
 	if (res.json_ok) {
-		ElMessage.success('鍒涘缓绌虹煡璇嗗簱鎴愬姛');
 		state.knowlg_id = res.knowlg_id;
 		getFileTreeData(true);
 	}
diff --git a/src/views/project/yw/dataManage/knowledge/EditKnowledge.vue b/src/views/project/yw/dataManage/knowledge/EditKnowledge.vue
index f776880..6de7c25 100644
--- a/src/views/project/yw/dataManage/knowledge/EditKnowledge.vue
+++ b/src/views/project/yw/dataManage/knowledge/EditKnowledge.vue
@@ -1,7 +1,7 @@
 <template>
 	<div class="flex flex-col h100">
 		<div class="mb-[10px] flex flex-shrink-0 items-center">
-			<el-button style="margin-left: 8px; width: 40px" text @click="handleExitFlow">
+			<el-button style="margin-left: 8px; width: 40px" link @click="handleExitFlow">
 				<el-icon style="font-size: 24px !important">
 					<ArrowLeft />
 				</el-icon>
diff --git a/src/views/project/yw/dataManage/knowledge/ViewKnowledge.vue b/src/views/project/yw/dataManage/knowledge/ViewKnowledge.vue
index 092c94f..f87eafe 100644
--- a/src/views/project/yw/dataManage/knowledge/ViewKnowledge.vue
+++ b/src/views/project/yw/dataManage/knowledge/ViewKnowledge.vue
@@ -1,14 +1,14 @@
 <template>
 	<div class="flex flex-col h100">
 		<div class="mb-[10px] flex flex-shrink-0 items-center">
-			<el-button style="margin-left: 8px; width: 40px" text @click="handleExitFlow">
+			<el-button style="margin-left: 8px; width: 40px" link @click="handleExitFlow">
 				<el-icon style="font-size: 24px !important">
 					<ArrowLeft />
 				</el-icon>
 			</el-button>
 			<span class="text-[24px] text-[#26244c] font-[700]">{{ state.knowledgeInfo.knowledge_title }}</span>
 		</div>
-		<div class="set-table-height">
+		<div class="set-table-height" v-show="!state.showKnowledgeForm">
 			<!-- 鏌ヨ銆侀噸缃�佹帓搴忋�佸鍔犺〃鍗� -->
 			<el-form :inline="true" :model="graphQueryParams">
 				<el-form-item label="鍚嶇О" prop="title">
@@ -17,7 +17,7 @@
 				<el-form-item>
 					<el-button type="primary" icon="ele-Search" @click="handleQueryTable"> 鏌ヨ </el-button>
 					<el-button icon="ele-Refresh" @click="resetQuery">閲嶇疆 </el-button>
-					<el-button icon="ele-Plus" @click="importData()" type="primary"> 瀵煎叆鏁版嵁 </el-button>
+					<el-button icon="ele-Plus" @click="getImportantFileTreeData()" type="primary"> 瀵煎叆鏁版嵁 </el-button>
 				</el-form-item>
 			</el-form>
 			<div class="flex-auto flex-column h-full">
@@ -46,15 +46,104 @@
 				</el-table>
 			</div>
 		</div>
+		<div class="set-form-height" v-show="state.showKnowledgeForm">
+			<el-form :model="state.knowledgeFile" label-width="120px" label-position="left" class="h100" ref="knowledgeFileRef">
+				<el-divider content-position="left"><span class="text-[18px] font-[500]">閫夋嫨鏂囦欢</span></el-divider>
+				<div class="flex items-start gap-[16px] max-h-[686px] min-h-[360px] set-file-height">
+					<div class="min-h-[360px] h100 set_file_left">
+						<div class="font-[500] mb-2">璇烽�夋嫨鏂囨。</div>
+						<div class="left_content">
+							<div class="file_menu">
+								<LeftTreeByMgr
+									title-name="绫荤洰"
+									ref="leftTreeRef"
+									:treedata="state.knowledgeBaseData"
+									:current-node-key="currentListID"
+									:defaultProps="{
+										children: 'Children',
+										label: 'title',
+										id: 'id',
+									}"
+									@click="handleClickNode"
+								>
+								</LeftTreeByMgr>
+							</div>
+							<div class="file_table">
+								<el-table
+									:data="state.fileData"
+									border
+									@select="handleSelectItem"
+									highlight-current-row
+									ref="multipleTableRef"
+									@select-all="
+										(selection) => {
+											handleSelectAll(selection, state.fileData);
+										}
+									"
+								>
+									<el-table-column type="selection" width="55" />
+									<el-table-column prop="name" label="鏂囦欢鍚嶇О" />
+								</el-table>
+							</div>
+						</div>
+					</div>
+					<div class="set_file_right">
+						<div class="h100">
+							<div class="font-[500] mb-[12px]">宸查�夋枃妗{ multipleSelection.length }}/50涓�</div>
+							<div class="selected_file">
+								<div v-for="(item, index) in multipleSelection" :key="index" class="set_file_item">
+									<span class="set_file_name">{{ item.name }}</span>
+									<span class="ywifont ywicon-guanbi set_file_close" @click="handleRemoveItem(item)"></span>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<el-divider content-position="left"><span class="text-[18px]">鏁版嵁澶勭悊</span></el-divider>
+				<el-form-item label="鏂囨。鍒囧垎chunk:">
+					<div class="flex-auto flex flex-col">
+						<div class="flex">
+							<div v-for="(item, index) in state.segmentationList" :key="index">
+								<div
+									class="bg-[#fff] border-[1px] border-solid border-[#d8d9e6] py-[12px] w-[215px] mr-[10px] px-[16px] rounded-lg cursor-pointer"
+									:class="{ activeColor: state.knowledgeForm.segmentationMode === item.ID }"
+									@click="activeDataProcessType(item.ID)"
+								>
+									<div class="flex items-center">
+										<div class="data_left">
+											<img :src="item.ImageURL" class="w-[40px] h-[40px] mr-[10px]" />
+										</div>
+										<div class="data_right">
+											<el-radio v-model="state.knowledgeForm.segmentationMode" size="large" :label="item.ID">
+												<span class="font-[500] text[16px]">{{ item.Name }}</span>
+											</el-radio>
+
+											<el-tooltip :content="item.DemoDesc" placement="top" effect="light" popper-class="set_tooltip_demo">
+												<div class="text-[#878aab] text-[12px] mx-0 mt-[2px] mb-0 set-desc">
+													{{ item.DemoDesc }}
+												</div>
+											</el-tooltip>
+										</div>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</el-form-item>
+			</el-form>
+		</div>
 	</div>
 </template>
 
 <script setup lang="ts">
 import { ElMessage, ElMessageBox } from 'element-plus';
-import { onMounted, reactive, ref } from 'vue';
+import { computed, nextTick, onMounted, reactive, ref } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 import { delete_docvector_file, get_docvector_file_list } from '/@/api/knowledge/docvector';
+import { get_knowledge_group_list, list_knowledge_file } from '/@/api/knowledge/group';
+import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue';
 import { useQueryTable } from '/@/hooks/useQueryTable';
+import { convertListToTree } from '/@/utils/util';
 const viewKnowledgeTableRef = ref();
 const router = useRouter();
 const route = useRoute();
@@ -65,13 +154,34 @@
 		knowledge_title: '',
 		knowledge_id: '',
 	} as any,
+	knowledgeForm: {
+		segmentationMode: 1,
+	},
+	segmentationList: [
+		{
+			ID: 1,
+			Name: '鏅鸿兘鍒囧垎',
+			ImageURL: 'static/images/knowledge/data_type_3.png',
+			DemoDesc: '鍦ㄩ�氱敤鏂囨。涓婄殑鏈�浼榗hunk鍒囧垎鏂规硶锛岀粡杩囪瘎娴嬪彲鍦ㄥ鏁版枃妗d笂鑾峰緱鏈�浣崇殑妫�绱㈡晥鏋�',
+		},
+		{
+			ID: 3,
+			Name: '鑷畾涔夊垏鍒�',
+			ImageURL: 'static/images/knowledge/data_type_4.png',
+			DemoDesc: '瀹屽叏寮�鏀剧殑chunk鍒囧垎閰嶇疆锛屾寜鐓у疄闄呮枃妗f儏鍐佃嚜鐢遍厤缃紝閫氳繃璋冭瘯鑾峰緱鏇村ソ鐨勬绱㈡晥鏋�',
+		},
+	],
 	showKnowledgeForm: false,
+	knowledgeFile: {},
+	knowledgeBaseData: [], //鐭ヨ瘑搴撶被鐩�
+	fileData: [], //鏂囦欢鏁版嵁婧�
+	isCreateIndex: false, //鏄惁璋冪敤鍒涘缓鐨勭储寮曠殑瀛楁
 });
 //杩斿洖
 const handleExitFlow = () => {
 	//鏄惁鏄剧ず杩斿洖
 	router.back();
-	state.showKnowledgeForm = false;
+	state.showKnowledgeForm = true;
 };
 //#region ====================== 鎼滅储琛ㄦ牸锛屽琛ㄦ牸鎺掑簭 ======================
 const graphQueryParams = ref({
@@ -112,12 +222,88 @@
 	});
 };
 //#endregion
-//#region ====================== 鏂板缓鐭ヨ瘑搴撶殑鏁版嵁 ======================
-//瀵煎叆鏁版嵁
-const importData = () => {
-	// router.push({
-	// 	name: 'AddKnowledge',
-	// });
+
+//#region ====================== 鐭ヨ瘑搴撴枃浠朵笂浼� ==========
+const treeLoading = ref(false);
+const currentTreeNode = ref(null);
+const leftTreeRef = ref(null);
+const currentListID = computed(() => currentTreeNode.value?.id);
+//鑾峰彇鏂囦欢鍒楄〃
+const getImportantFileTreeData = async (selectFirst = false) => {
+	state.showKnowledgeForm = false;
+	treeLoading.value = true;
+	const res = await get_knowledge_group_list().finally(() => {
+		treeLoading.value = false;
+	});
+	if (res?.json_ok) {
+		const resData = (res.values || []) as [];
+		state.knowledgeBaseData = convertListToTree(resData, {
+			ID: 'id',
+			Children: 'Children',
+			ParentID: 'parent',
+		});
+		if (selectFirst) {
+			const firstListTreeNode = state.knowledgeBaseData[0];
+			if (firstListTreeNode) {
+				handleClickNode(firstListTreeNode);
+			} else {
+				state.fileData = [];
+				multipleSelection.value = [];
+			}
+		} else {
+			currentTreeNode.value && handleClickNode(currentTreeNode.value);
+		}
+	}
+};
+const handleClickNode = (data: any) => {
+	multipleSelection.value = [];
+	nextTick(() => {
+		leftTreeRef.value?.treeRef.setCurrentKey(data.id);
+	});
+	currentTreeNode.value = data;
+	getFileTableData();
+};
+//鑾峰彇鏂囦欢琛ㄦ牸鍒楄〃
+const getFileTableData = async () => {
+	const res = await list_knowledge_file({
+		group_id: currentListID.value,
+	}).finally(() => {});
+	if (res?.json_ok) {
+		const resData = (res.values || []) as [];
+		state.fileData = resData;
+	} else {
+		ElMessage.error('鑾峰彇鏂囨。鍒楄〃澶辫触' + (res?.json_msg ? `锛�${JSON.stringify(res.json_msg)}` : ''));
+	}
+};
+let multipleSelection = ref([]);
+const multipleTableRef = ref(null);
+//琛ㄦ牸鍗曢�夊拰澶氶��
+const handleSelectAll = (selection: any[], pageSelectionData: any[]) => {
+	let checked = selection.length ? true : false; // selection涓虹┖鏁扮粍鏃朵唬琛ㄥ彇娑堝叏閫�
+	if (checked) {
+		let mIds = multipleSelection.value.map((v) => v.id);
+		let filterData = pageSelectionData.filter((v) => {
+			// 绛涢�夊嚭闈為噸澶嶉」
+			return !mIds.includes(v.id);
+		});
+		multipleSelection.value = multipleSelection.value.concat(filterData);
+	} else {
+		let pIds = pageSelectionData.map((v) => v.id);
+		multipleSelection.value = multipleSelection.value.filter((v) => !pIds.includes(v.id));
+	}
+};
+
+const handleSelectItem = (selection: any[], row) => {
+	multipleSelection.value = selection;
+};
+// 绉婚櫎宸查�夋枃浠�
+const handleRemoveItem = (item) => {
+	multipleSelection.value = multipleSelection.value.filter((v) => v.id !== item.id);
+	multipleTableRef.value.toggleRowSelection(item, false);
+};
+//閫夋嫨鏁版嵁鏂囨。鍒囧垎
+const activeDataProcessType = (id: number) => {
+	state.knowledgeForm.segmentationMode = id;
 };
 //#endregion
 onMounted(() => {
@@ -138,3 +324,5 @@
 	box-sizing: border-box;
 }
 </style>
+import { get_knowledge_group_list, list_knowledge_file } from '/@/api/knowledge/group'; import { convertListToTree } from
+'/@/utils/util';
diff --git a/src/views/project/yw/lowCode/sqlAmis/edit/SqlAmisEdit.vue b/src/views/project/yw/lowCode/sqlAmis/edit/SqlAmisEdit.vue
index 236df86..6fa243c 100644
--- a/src/views/project/yw/lowCode/sqlAmis/edit/SqlAmisEdit.vue
+++ b/src/views/project/yw/lowCode/sqlAmis/edit/SqlAmisEdit.vue
@@ -4,7 +4,7 @@
 			<template v-slot:left>
 				<el-button
 					icon="ele-ArrowLeft"
-					text
+					link
 					style="margin-right: 10px; margin-left: 10px; width: 40px"
 					size="small"
 					@click="backLastPage"
@@ -71,8 +71,6 @@
 import { v4 as uuid } from 'uuid';
 import * as supervisorApi from '/@/api/supervisorAdmin';
 import { useCompRef } from '/@/utils/types';
-import { XMLParser, XMLBuilder, XMLValidator } from 'fast-xml-parser';
-import { ElMessage } from 'element-plus';
 
 const props = defineProps(['supervisor']);
 const emit = defineEmits(['backLastPage']);
@@ -172,7 +170,6 @@
 		}
 	});
 };
-
 
 let pageConfig = null;
 onMounted(async () => {

--
Gitblit v1.9.3