From 7f97bb126bfb6450ba0f8d2b5d4a632db74c3c58 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期四, 27 三月 2025 17:58:54 +0800 Subject: [PATCH] 维度管理 --- src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue | 93 +++++++++++++++++++++++++++++++++++++++------- 1 files changed, 79 insertions(+), 14 deletions(-) diff --git a/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue b/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue index 6ef8082..646375f 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> @@ -71,7 +71,11 @@ </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="150" fixed="right" show-overflow-tooltip> <template #default="scope"> @@ -82,6 +86,9 @@ @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> </div> </template> </el-table-column> @@ -89,28 +96,43 @@ </div> </template> <AliasDisplayDlg v-model="aliasDisplayDlgIsShow" :item="aliasDisplayDlgMapRow"></AliasDisplayDlg> - <!-- <OptDlg v-model="optDlgIsShow" :item="optDlgMapRow" @insert="insertOpt" @update="updateOpt" :groupId="currentListID"></OptDlg> --> + <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 { SupervisorPublished } from '../../lowCode/sqlAmis/types'; +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 { getSceneGroupTreeByPost } from '/@/api/scene'; import HMContainer from '/@/components/layout/HMContainer.vue'; import { OptClassificationMap, classificationEnum } from '/@/views/types/metrics'; -import { ElMessage } from 'element-plus'; - +const dataSources = ref([]); +const initDataSources = async () => { + const res = await getDataSourceList(); + dataSources.value = res.values; +}; const themeDomainData = ref([]); const initThemeDomainData = async () => { const res = await getSceneGroupTreeByPost(); @@ -188,18 +210,62 @@ optDlgIsShow.value = true; }; -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 || queryParams.value.group === '') { + updateOptData(displayTableData.value, formValue); + updateOptData(tableData.value, formValue); + } else { + displayTableData.value = displayTableData.value.filter((item) => item.group !== formValue.group); + 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 || queryParams.value.group === '') { + insertOptData(displayTableData.value, newData); + insertOptData(tableData.value, newData); + } else { + insertOptData(tableData.value, newData); + } }; //#endregion @@ -250,8 +316,6 @@ return isExist; }; const openAliasDisplayDlg = (row) => { - - aliasDisplayDlgMapRow.value = row; aliasDisplayDlgIsShow.value = true; }; @@ -260,6 +324,7 @@ onMounted(() => { getTableData(); initThemeDomainData(); + initDataSources(); }); </script> <style scoped lang="scss"></style> -- Gitblit v1.9.3