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