From 3cb993333cbb2f80d5a31b48027766262af92a75 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期二, 31 十二月 2024 18:25:34 +0800 Subject: [PATCH] 数据库类型、别名弹窗,指标名称 --- src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue | 51 +++++++++------- src/views/project/yw/systemManage/dimensionMgr/components/AliasDisplayDlg.vue | 69 +++++++++++++++++++++++ src/views/project/yw/systemManage/dataSourceMgr/DataSourceMgr.vue | 1 src/views/project/yw/systemManage/metricMgr/MetricDetail.vue | 7 +- 4 files changed, 102 insertions(+), 26 deletions(-) diff --git a/src/views/project/yw/systemManage/dataSourceMgr/DataSourceMgr.vue b/src/views/project/yw/systemManage/dataSourceMgr/DataSourceMgr.vue index eced396..272fac5 100644 --- a/src/views/project/yw/systemManage/dataSourceMgr/DataSourceMgr.vue +++ b/src/views/project/yw/systemManage/dataSourceMgr/DataSourceMgr.vue @@ -52,6 +52,7 @@ </template> </el-table-column> <el-table-column prop="title" label="鍚嶇О" fixed="left" show-overflow-tooltip> </el-table-column> + <el-table-column label="鏁版嵁搴撶被鍨�" prop="db_type" width="100" show-overflow-tooltip> </el-table-column> <el-table-column label="绫诲瀷" prop="type" width="100" show-overflow-tooltip> </el-table-column> diff --git a/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue b/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue index d748b61..ff8a2bf 100644 --- a/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue +++ b/src/views/project/yw/systemManage/dimensionMgr/DimensionMgr.vue @@ -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,10 +58,10 @@ </div> </div> </template> - </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="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> @@ -73,32 +73,22 @@ <el-table-column label="绫诲瀷" prop="type" width="100" show-overflow-tooltip> </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"> - <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"> + <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); - }); - } - " + class="ywifont ywicon-gongsijieshao !text-[15px] text-blue-400 cursor-pointer" + @click="openAliasDisplayDlg(scope.row)" ></i> - </el-tooltip> --> + </el-tooltip> </div> </template> </el-table-column> </el-table> </div> </template> - + <AliasDisplayDlg v-model="aliasDisplayDlgIsShow" :item="aliasDisplayDlgMapRow"></AliasDisplayDlg> <!-- <OptDlg v-model="optDlgIsShow" :item="optDlgMapRow" @insert="insertOpt" @update="updateOpt" :groupId="currentListID"></OptDlg> --> <!-- <MetricPrompt v-model="infoDlgIsShow" :metricItem="infoDlgMapRow"></MetricPrompt> <MetricName v-model="metricNameIsShow" :metricItem="metricNameMapRow"></MetricName> --> @@ -113,12 +103,13 @@ import { useQueryTable } from '/@/hooks/useQueryTable'; // import { useTableSort } from '/@/hooks/useTableSort'; // import { useValidateUniqueness } from '/@/hooks/useValidateUniqueness'; -import * as dimensionApi from '/@/api/dimension'; - import { SupervisorPublished } from '../../lowCode/sqlAmis/types'; +import AliasDisplayDlg from './components/AliasDisplayDlg.vue'; +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 themeDomainData = ref([]); const initThemeDomainData = async () => { @@ -127,7 +118,6 @@ }; const selectGroupChange = () => { handleQueryTable(); - }; const listTreeData = computed(() => { const byParentData = convertListToTree(themeDomainData.value, { @@ -164,7 +154,7 @@ const queryParams = ref({ title: '', - group:'' + group: '', }); const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(tableData, queryParams, () => { displayTableData.value = tableData.value; @@ -251,6 +241,21 @@ // }, // }); //#endregion + +//#region ====================== 鍒悕寮圭獥 ====================== +const aliasDisplayDlgIsShow = ref(false); +const aliasDisplayDlgMapRow = ref(null); +const openAliasDisplayDlg = (row) => { + if (!row.alias || Object.keys(row.alias).length === 0) { + ElMessage.warning('璇ョ淮搴︽病鏈夊埆鍚�'); + return; + } + + aliasDisplayDlgMapRow.value = row; + aliasDisplayDlgIsShow.value = true; +}; + +//#endregion onMounted(() => { getTableData(); initThemeDomainData(); diff --git a/src/views/project/yw/systemManage/dimensionMgr/components/AliasDisplayDlg.vue b/src/views/project/yw/systemManage/dimensionMgr/components/AliasDisplayDlg.vue new file mode 100644 index 0000000..51997b2 --- /dev/null +++ b/src/views/project/yw/systemManage/dimensionMgr/components/AliasDisplayDlg.vue @@ -0,0 +1,69 @@ +<template> + <yw-dialog v-model="isShow" :showFooter="false" width="500" :title="title"> + <div v-if="item.alias && Object.keys(item.alias).length > 0"> + <div v-for="key in Object.keys(item.alias)" :key="key"> + <span>{{ key }}锛�</span> + <span>{{ item.alias[key].join(',') }}</span> + </div> + </div> + </yw-dialog> +</template> + +<script setup lang="ts" name="AliasDisplayDlg"> +import _ from 'lodash'; +import { computed, ref, watch } from 'vue'; +import * as metricApi from '/@/api/metrics'; +import ywDialog from '/@/components/dialog/yw-dialog.vue'; + +const props = defineProps(['item']); +const isShow = defineModel({ + type: Boolean, +}); + +const tableData = ref([]); +const title = computed(() => props.item?.title + '鈥斺�斿埆鍚�'); + +// 闇�瑕佸悎骞跺崟鍏冩牸鐨� prop +const GROUP_PROP = ['title', 'full_name', 'metrics_define', 'calcu_method']; +const objectSpanMethod = ({ row, column, rowIndex, columnIndex }) => { + if (GROUP_PROP.includes(column.property)) { + return { + rowspan: row.rowspan, + colspan: 1, + }; + } +}; + +const parseData = (data: any[]) => { + const finalData = (data ?? []).reduce((pre, cur) => { + const dimensions = cur.dimensions; + pre.push( + ...dimensions.map((item, index) => ({ + ..._.omit(cur, 'dimensions'), + id: cur.id + '_dimension_' + item.id, + dimension: item, + rowspan: index === 0 ? dimensions.length : undefined, + })) + ); + return pre; + }, []); + return finalData; +}; + +watch( + () => isShow.value, + async (val) => { + if (!val) return; + + const res = await metricApi.getMetricNameListByPost({ + agent_id: props.item.id, + }); + tableData.value = parseData(res?.values); + } +); +</script> +<style scoped lang="scss"> +:deep(.el-card__body) { + position: relative; +} +</style> diff --git a/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue b/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue index ffdd5be..152d9d8 100644 --- a/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue +++ b/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue @@ -129,9 +129,10 @@ <div class="set-detail"> <el-divider /> <div class="section___vePzi"> - <div class="item___title"> - <i class="ywifont ywicon-zhibiao size-[18px] !text-[15px]"></i> - <span>{{state.metricBasicInfo.descriptionQuotaItems.title ? state.metricBasicInfo.descriptionQuotaItems.title : '-'}}</span> + + <div class="item___txXyB"> + <div class="item_name">鎸囨爣鍚嶇О:</div> + <div class="item_value">{{state.metricBasicInfo.descriptionQuotaItems.title ? state.metricBasicInfo.descriptionQuotaItems.title : '-'}}</div> </div> <div class="item___txXyB"> <div class="item_name">閲嶈鎬�:</div> -- Gitblit v1.9.3