From d37c616d8a9dd6ddee17658e6b083b749ff32756 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期五, 28 三月 2025 10:25:17 +0800 Subject: [PATCH] 维度管理修改 --- src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue | 151 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 118 insertions(+), 33 deletions(-) diff --git a/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue b/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue index d46706e..590d83e 100644 --- a/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue +++ b/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue @@ -29,7 +29,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="openOptDlg()"> 娣诲姞 </el-button> --> + <el-button type="primary" icon="ele-Plus" @click="openOptDlg()"> 娣诲姞 </el-button> </el-form-item> </el-form> </template> @@ -44,7 +44,7 @@ :data="displayTableData" highlight-current-row > - <el-table-column type="expand" fixed="left"> + <!-- <el-table-column type="expand" fixed="left"> <template #default="scope"> <div class="ml-16" v-if="scope.row.alias && Object.keys(scope.row.alias).length > 0"> <h3>鍒悕</h3> @@ -58,8 +58,10 @@ </div> </div> </template> - </el-table-column> - <el-table-column prop="id" label="缁村害缂栧彿" width="125" fixed="left"></el-table-column> + </el-table-column> --> + <el-table-column type="index" label="搴忓彿" width="55" fixed="left" align="center"></el-table-column> + + <el-table-column prop="id" label="缁村害缂栧彿" width="125" fixed="left"></el-table-column> <el-table-column prop="title" label="缁村害鍚嶇О" width="120" fixed="left" show-overflow-tooltip> </el-table-column> <el-table-column label="缁村害瀹氫箟" prop="prompt" show-overflow-tooltip> </el-table-column> <el-table-column prop="metrics_group" label="涓婚鍩�" width="130" show-overflow-tooltip> @@ -69,55 +71,68 @@ </el-table-column> <el-table-column label="鍗曚綅" prop="unit" width="100" show-overflow-tooltip> </el-table-column> - <el-table-column label="绫诲瀷" prop="type" width="100" show-overflow-tooltip> </el-table-column> + <el-table-column label="绫诲瀷" prop="type" width="100" show-overflow-tooltip> + <template #default="scope"> + {{ DimensionTypeMap[scope.row.type] }} + </template> + </el-table-column> - <el-table-column label="鎿嶄綔" width="200" fixed="right" show-overflow-tooltip> + <el-table-column label="鎿嶄綔" width="150" fixed="right" show-overflow-tooltip> <template #default="scope"> <div class="space-x-3 items-center flex"> - <!-- <el-tooltip effect="dark" content="缂栬緫" placement="top"> + <el-tooltip effect="dark" content="鍒悕" placement="top" v-if="checkAliasExist(scope.row)"> + <i + class="ywifont ywicon-gongsijieshao !text-[15px] text-blue-400 cursor-pointer" + @click="openAliasDisplayDlg(scope.row)" + ></i> + </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> </el-tooltip> - <el-tooltip effect="dark" content="鍒犻櫎" placement="top"> - <i - class="ywifont ywicon-shanchu !text-[17px] text-red-400 cursor-pointer" - @click=" - () => { - deleteCurrentRow(scope.row, '椤甸潰', metricApi.deleteSupervisor, () => { - const foundIndex = tableData.findIndex((item) => item === scope.row); - foundIndex > -1 && tableData.splice(foundIndex, 1); - }); - } - " - ></i> - </el-tooltip> --> </div> </template> </el-table-column> </el-table> </div> </template> - - <!-- <OptDlg v-model="optDlgIsShow" :item="optDlgMapRow" @insert="insertOpt" @update="updateOpt" :groupId="currentListID"></OptDlg> --> + <AliasDisplayDlg v-model="aliasDisplayDlgIsShow" :item="aliasDisplayDlgMapRow"></AliasDisplayDlg> + <OptDlg + :groupId="queryParams.group" + v-model="optDlgIsShow" + :listTreeData="listTreeData" + :item="optDlgMapRow" + @insert="insertOpt" + @update="updateOpt" + :tableData="tableData" + :dataSources="dataSources" + ></OptDlg> <!-- <MetricPrompt v-model="infoDlgIsShow" :metricItem="infoDlgMapRow"></MetricPrompt> <MetricName v-model="metricNameIsShow" :metricItem="metricNameMapRow"></MetricName> --> </HMContainer> </template> <script setup lang="ts"> -import { convertListToTree, debounce, getItemMap } from '/@/utils/util'; +import { convertListToTree, debounce, getItemMap, travelTree } from '/@/utils/util'; import { computed, onMounted, ref } from 'vue'; import { usePageDisplay } from '/@/hooks/usePageDisplay'; import { useQueryTable } from '/@/hooks/useQueryTable'; // import { useTableSort } from '/@/hooks/useTableSort'; // import { useValidateUniqueness } from '/@/hooks/useValidateUniqueness'; +import type { SupervisorPublished } from '../../lowCode/sqlAmis/types'; +import AliasDisplayDlg from './components/AliasDisplayDlg.vue'; +import { DimensionTypeMap } from './components/constants'; +import OptDlg from './components/OptDlg.vue'; +import { getDataSourceList } from '/@/api/dataSource'; import * as dimensionApi from '/@/api/dimension'; - -import { SupervisorPublished } from '../../lowCode/sqlAmis/types'; import { getSceneGroupTreeByPost } from '/@/api/scene'; import HMContainer from '/@/components/layout/HMContainer.vue'; import { OptClassificationMap, classificationEnum } from '/@/views/types/metrics'; - +const dataSources = ref([]); +const initDataSources = async () => { + const res = await getDataSourceList(); + dataSources.value = res.values; +}; const themeDomainData = ref([]); const initThemeDomainData = async () => { const res = await getSceneGroupTreeByPost(); @@ -125,7 +140,6 @@ }; const selectGroupChange = () => { handleQueryTable(); - }; const listTreeData = computed(() => { const byParentData = convertListToTree(themeDomainData.value, { @@ -162,7 +176,7 @@ const queryParams = ref({ title: '', - group:'' + group: '', }); const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(tableData, queryParams, () => { displayTableData.value = tableData.value; @@ -189,25 +203,81 @@ //#endregion //#region ====================== 娣诲姞淇敼鎿嶄綔 ====================== + +let preGroup = ''; const optDlgIsShow = ref(false); const optDlgMapRow = ref(null); const openOptDlg = (row?: any) => { optDlgMapRow.value = row; optDlgIsShow.value = true; + if (row) { + preGroup = row.group; + } }; -const updateOpt = (formValue) => { - const foundIndex = tableData.value.findIndex((item) => item.id === formValue.id); +const updateOptData = (optData, formValue) => { + const foundIndex = optData.findIndex((item) => item.id === formValue.id); if (foundIndex > -1) { - tableData.value[foundIndex] = { - ...tableData.value[foundIndex], + optData[foundIndex] = { + ...optData[foundIndex], ...formValue, }; } }; +const updateOpt = (formValue) => { + if (formValue.group === queryParams.value.group) { + updateOptData(displayTableData.value, formValue); + updateOptData(tableData.value, formValue); + } else { + if (queryParams.value.group !== '' && preGroup === queryParams.value.group) { + const id = formValue.id; + const index = displayTableData.value.findIndex((item) => item.id === id); + if (index > -1) { + displayTableData.value.splice(index, 1); + } + } + updateOptData(tableData.value, formValue); + } +}; + +const insertOptData = (optData, newData) => { + optData.unshift({ ...newData }); +}; + +// 鍒ゆ柇鏄惁灞炰簬褰撳墠涓婚鍩燂紝鎴栧綋鏈熶富棰樺煙涓嬪睘涓婚鍩� +const isIncludeGroup = (group, currentGroup) => { + if (!currentGroup) return true; + if (group === currentGroup) return true; + + let curGroupItem; + + travelTree(listTreeData.value, (item) => { + if (item.group_id === currentGroup) { + curGroupItem = item; + return true; + } + }); + + if (!curGroupItem) return false; + + let isFind = false; + travelTree(curGroupItem.Children as any[], (item) => { + if (item.group_id === group) { + isFind = true; + return true; + } + }); + + return isFind; +}; const insertOpt = (newData) => { - tableData.value.unshift({ ...newData, published: SupervisorPublished.N }); + if (newData.group === queryParams.value.group) { + insertOptData(displayTableData.value, newData); + insertOptData(tableData.value, newData); + } else { + insertOptData(tableData.value, newData); + } }; //#endregion @@ -249,9 +319,24 @@ // }, // }); //#endregion + +//#region ====================== 鍒悕寮圭獥 ====================== +const aliasDisplayDlgIsShow = ref(false); +const aliasDisplayDlgMapRow = ref(null); +const checkAliasExist = (row: any) => { + const isExist = row.alias && Object.keys(row.alias).length > 0; + return isExist; +}; +const openAliasDisplayDlg = (row) => { + aliasDisplayDlgMapRow.value = row; + aliasDisplayDlgIsShow.value = true; +}; + +//#endregion onMounted(() => { getTableData(); initThemeDomainData(); + initDataSources(); }); </script> <style scoped lang="scss"></style> -- Gitblit v1.9.3