|
|
@ -86,12 +86,27 @@ |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
plain |
|
|
|
icon="Plus" |
|
|
|
@click="applyDataAst" |
|
|
|
>数据资产发布</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1.5"> |
|
|
|
<el-button |
|
|
|
type="success" |
|
|
|
plain |
|
|
|
icon="CaretRight" |
|
|
|
@click="runBloodAnalysisTask" |
|
|
|
>执行血缘解析任务</el-button> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
</el-row> |
|
|
|
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange"> |
|
|
|
<el-table |
|
|
|
v-loading="loading" |
|
|
|
:data="dataList" |
|
|
|
ref="metaTable" |
|
|
|
@select="handleSelection" |
|
|
|
@select-all="handleSelectionAll" |
|
|
|
> |
|
|
|
<el-table-column type="selection" width="50" align="center" /> |
|
|
|
<el-table-column label="系统英文名" width="100" align="center" prop="ssysCd"></el-table-column> |
|
|
|
<el-table-column label="模式名称" align="center" prop="mdlName"></el-table-column> |
|
|
@ -565,11 +580,56 @@ |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
<el-dialog |
|
|
|
v-model="astPublish" |
|
|
|
title="数据资产发布" |
|
|
|
width="1100" |
|
|
|
> |
|
|
|
|
|
|
|
<el-table v-loading="loading" :data="dataAstList"> |
|
|
|
<el-table-column label="数据资产英文名称" align="center" prop="dataAstEngName"></el-table-column> |
|
|
|
<el-table-column label="数据资产中文名称" align="center" prop="dataAstCnName"></el-table-column> |
|
|
|
<el-table-column label="数据资产类型" align="center" prop="dataAstType"></el-table-column> |
|
|
|
<el-table-column label="数据资产描述" align="center" prop="dataAstDesc"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-input v-model="scope.row.dataAstDesc" ></el-input> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<!-- <el-table-column label="数据资产标签" align="center" prop="dataAstClas">--> |
|
|
|
<!-- <template #default="scope">--> |
|
|
|
<!-- <el-popover v-for="item in JSON.parse(scope.row.dataAstClas)" placement="right" width="auto" trigger="hover">--> |
|
|
|
<!-- <template #reference>--> |
|
|
|
<!-- <el-tag v-if="item.clasEffFlag && item.clasEffFlag === '1'">{{item.clasName}}</el-tag>--> |
|
|
|
<!-- </template>--> |
|
|
|
<!-- <div>--> |
|
|
|
<!-- <div style="margin: 5px" v-for="item in scope.row.showTabClas"><el-tag v-if="item.clasEffFlag && item.clasEffFlag === '1'">{{item.clasName + ":" + item.clasValue}}</el-tag></div>--> |
|
|
|
<!-- </div>--> |
|
|
|
<!-- </el-popover>--> |
|
|
|
<!-- </template>--> |
|
|
|
<!-- </el-table-column>--> |
|
|
|
<el-table-column label="数据资产来源" align="center" prop="dataAstSrc"></el-table-column> |
|
|
|
<el-table-column label="数据资产编号" align="center" prop="astNo"></el-table-column> |
|
|
|
<el-table-column label="操作" align="center" width="80"> |
|
|
|
<template #default="scope"> |
|
|
|
<el-button link type="danger" icon="Delete" @click.prevent="deleteAstData(scope.row)">删除</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
<div class="dialog-footer"> |
|
|
|
<el-button @click="astPublish = false">取消</el-button> |
|
|
|
<el-button type="primary" @click="confirmPublish"> |
|
|
|
发布 |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script setup name="Meta"> |
|
|
|
import {getDataSourceList, getMetaDataList, getColumnList, getMetaClasList, postMetaSupp, getMetaDataRelship, getMetaDataBloodRelship, getProcData, runBloodAnalysis} from "@/api/meta/metaInfo" |
|
|
|
import {getDataSourceList, getMetaDataList, getColumnList, getMetaClasList, postMetaSupp, getMetaDataRelship, getMetaDataBloodRelship, getProcData, runBloodAnalysis, publishAstData} from "@/api/meta/metaInfo" |
|
|
|
import { getMetaSecurityData } from "@/api/dataAsset/directory" |
|
|
|
import { ref, nextTick, computed, watch, reactive, onMounted } from 'vue' |
|
|
|
import SQLCodeMirror from "@/components/codemirror/SQLCodeMirror.vue"; |
|
|
@ -646,6 +706,9 @@ |
|
|
|
const bloodRelation = ref([]) |
|
|
|
const demoDataList = ref([]) |
|
|
|
const dbType = ref("MYSQL") |
|
|
|
const selectedRows = ref([]) |
|
|
|
const dataAstList= ref([]) |
|
|
|
const astPublish = ref(false) |
|
|
|
|
|
|
|
function changeColumnTab(){ |
|
|
|
if (activeColumnTab.value === 'businessRelation'){ |
|
|
@ -1043,11 +1106,35 @@ |
|
|
|
proxy.$refs.databaseTreeRef.setCurrentKey(null); |
|
|
|
handleQuery() |
|
|
|
} |
|
|
|
|
|
|
|
function handleSelectionChange(){ |
|
|
|
|
|
|
|
function handleSelection(selection, row){ |
|
|
|
const isSelected = selection.some(item => item.extractOnum === row.extractOnum); |
|
|
|
if (isSelected) { |
|
|
|
// 选中行:添加到全局数组(避免重复) |
|
|
|
if (!selectedRows.value.some(item => item.extractOnum === row.extractOnum)) { |
|
|
|
selectedRows.value.push(row); |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 取消选中:从全局数组移除 |
|
|
|
selectedRows.value = selectedRows.value.filter(item => item.extractOnum !== row.extractOnum); |
|
|
|
} |
|
|
|
} |
|
|
|
function handleSelectionAll(selection) { |
|
|
|
if (selection.length > 0) { |
|
|
|
// 全选:将当前页所有行添加到全局数组(去重) |
|
|
|
const newSelected = [selectedRows.value]; |
|
|
|
dataList.value.forEach(row => { |
|
|
|
if (!newSelected.some(item => item.extractOnum === row.extractOnum)) { |
|
|
|
newSelected.push(row); |
|
|
|
} |
|
|
|
}); |
|
|
|
selectedRows.value = newSelected; |
|
|
|
} else { |
|
|
|
// 取消全选:移除当前页所有行 |
|
|
|
dataList.value.forEach(row => { |
|
|
|
selectedRows.value = selectedRows.value.filter(item => item.extractOnum !== row.extractOnum) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function getList(){ |
|
|
|
getMetaDataList(queryParams.value).then(res=>{ |
|
|
|
dataList.value = res.data.rows |
|
|
@ -1103,6 +1190,13 @@ |
|
|
|
} |
|
|
|
loading.value = false |
|
|
|
total.value = res.data.total |
|
|
|
proxy.$nextTick(() => { |
|
|
|
// 恢复当前页的选中状态 |
|
|
|
dataList.value.forEach(row => { |
|
|
|
const isSelected =selectedRows.value.some(item => item.extractOnum === row.extractOnum); |
|
|
|
proxy.$refs.metaTable.toggleRowSelection(row, isSelected); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
@ -1114,6 +1208,37 @@ |
|
|
|
let response = await runBloodAnalysis(query) |
|
|
|
proxy.$modal.msgSuccess(response.data); |
|
|
|
} |
|
|
|
function confirmPublish(){ |
|
|
|
publishAstData({assetItems:dataAstList.value}).then(res=>{ |
|
|
|
proxy.$modal.msgSuccess(res.msg) |
|
|
|
astPublish.value = false |
|
|
|
}) |
|
|
|
} |
|
|
|
function deleteAstData(row){ |
|
|
|
const index = dataAstList.value.findIndex(item => item.astNo === row.astNo); |
|
|
|
dataAstList.value.splice(index,1) |
|
|
|
} |
|
|
|
function applyDataAst(){ |
|
|
|
if(selectedRows.value.length === 0){ |
|
|
|
proxy.$modal.msgWarning("请至少选择一条元数据进行发布") |
|
|
|
}else{ |
|
|
|
dataAstList.value = [] |
|
|
|
selectedRows.value.forEach( row =>{ |
|
|
|
dataAstList.value.push({ |
|
|
|
dataAstEngName: row.tabEngName, |
|
|
|
dataAstCnName: row.tabCnName?row.tabCnName:row.tabCrrctName, |
|
|
|
dataAstType: row.tabType, |
|
|
|
dataAstStat: '1', |
|
|
|
dataAstDesc:'', |
|
|
|
dataAstSrc: row.ssysCd, |
|
|
|
astNo: row.extractOnum, |
|
|
|
dataAstClas: JSON.stringify(row.batchTabClas) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
astPublish.value = true |
|
|
|
} |
|
|
|
} |
|
|
|
const filterNode = (value, data) => { |
|
|
|
if (!value) return true; |
|
|
|
return data.name.indexOf(value) !== -1; |
|
|
|