IDCDatasync-vue/src/views/data/dataCataloguing.vue
2025-04-15 00:01:22 +08:00

296 lines
8.8 KiB
Vue

<template>
<a-row>
<a-col :md="11">
<div class="linese"></div>
<!-- 查询区域 -->
<a-form layout="inline" @keyup.enter.native="gettagTables" style="margin-top: 10px;padding:10px; background: #e6e9f1;">
<a-row>
<a-col :span="10">
<a-form-item label="标签类型" :label-col="{ span: 10 }" :wrapper-col="{ span: 14 }">
<a-select placeholder="选择标签类型" option-filter-prop="children" v-model="queryRefsParam.tagId">
<a-select-option v-for="d in datatagSources" :key="d.id">
{{ d.tagName }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item label="关键词" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }">
<a-input placeholder="请输入搜索关键词" v-model="queryRefsParam.tableName"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="4" :sm="3">
<a-button type="primary" @click="gettagTables" icon="search">查询</a-button>
</a-col>
</span>
</a-row>
</a-form>
<!-- table区域-begin -->
<div style="height:calc(100vh - 360px);background: #e6e9f1;">
<a-table ref="tagtable" size="middle" :loading="tagloading" :row-selection="tagrowSelection" bordered rowKey="id" :pagination="false" :scroll="{ x: false, y: tableScrollY }" :columns="tagcolumns" :dataSource="dataRefsSources">
</a-table>
</div>
<div class="linese"></div>
</a-col>
<a-col :md="2">
<div style="padding-top: 100%; padding-left: 15%;">
<a-button type="primary" @click="addtag"> <a-icon type="left" />添加标签 </a-button>
<div style="height: 50px;"></div>
<a-button type="primary" @click="detag">移除标签<a-icon type="right" /> </a-button>
</div>
</a-col>
<a-col :md="11" style="padding:0 20px;">
<div class="linese"></div>
<a-form layout="inline" @keyup.enter.native="getalltable" style="margin-top: 10px;padding:10px; background: #e6e9f1;">
<a-row :gutter="24">
<a-col :md="20" :sm="1">
<a-form-item label="关键词">
<a-input placeholder="请输入搜索关键词" v-model="queryParam.tableName"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="4" :sm="3">
<a-button type="primary" style="left: 10px" @click="getalltable" icon="search">查询</a-button>
</a-col>
</span>
</a-row>
</a-form>
<!-- table区域-begin -->
<div ref="tableContainer" style="height:calc(100vh - 360px);background: #e6e9f1;">
<a-table ref="table" size="middle" :row-selection="rowSelection" bordered :loading="loading" :rowKey="getRowKey" :pagination="false" :scroll="{ x: false, y: tableScrollY }" :columns="columns" :dataSource="dataSource">
</a-table>
</div>
<div class="linese"></div>
</a-col>
</a-row>
</template>
<script>
import store from '@/store/'
import { getAction } from '@/api/manage'
import {
idcTableTagRef,
getTableTagRefs,
getAllTable,
idcTableTagRefdelete
} from '@/api/idcTableTagRef'
import { idcTableTaglist } from '@/api/tag'
export default {
name: "dataManage",
components: {
},
data() {
return {
description: '标准库',
contentList: [],
percent: 0,
websock: {},
queryRefsParam: {
tableName: "",
tagId: "",
pageNum: 1,
pageSize: 9999999,
},
queryParam: {
tableName: "",
tagId: "",
pageNum: 1,
pageSize: 9999999,
},
datatagSources: [],
dataRefsSources: [],
dataSource: [
],
tagloading: false,
loading: false,
columns: [
{
title: '表名',
align: "left",
width: 220,
dataIndex: 'tableName',
},
{
title: '报文名',
align: "left",
dataIndex: 'tableMessName'
},
],
tagcolumns: [
{
title: '#',
dataIndex: '',
key: 'id',
width: 60,
align: "center",
customRender: function (t, r, index) {
return parseInt(index) + 1;
}
},
{
title: '表名',
align: "left",
width: 220,
dataIndex: 'tableName',
},
{
title: '报文名',
align: "left",
dataIndex: 'tableMessName'
},
],
tagqueryParam: {
pageNum: 1,
pageSize: 20,
tagName: ""
},
selectedRowKeys: [],
tagselectedRowKeys: [],
selectedRowData: [],
tagselectedRowData: [],
tableScrollY: 0,
}
},
mounted() {
this.getdatatagSources()
this.calculateScrollY();
},
computed: {
getRowKey(record) {
return `${record.schemaName}_${record.tableName}`
},
rowSelection() {
return {
selectedRowKeys: this.selectedRowKeys,
onChange: this.handleSelectChange,
preserveSelectedRowKeys: true, // 保持选中项key
type: 'checkbox', // 多选模式
columnWidth: 60, // 选择列宽度
getCheckboxProps: record => ({
// 可以在这里设置禁用条件
// disabled: record.disabled
})
}
},
tagrowSelection() {
return {
selectedRowKeys: this.tagselectedRowKeys,
onChange: this.taghandleSelectChange,
preserveSelectedRowKeys: true, // 保持选中项key
type: 'checkbox', // 多选模式
columnWidth: 60, // 选择列宽度
getCheckboxProps: record => ({
// 可以在这里设置禁用条件
// disabled: record.disabled
})
}
}
},
destroyed: function () {
},
created() {
},
methods: {
calculateScrollY() {
// 获取父容器高度(需减去表格内其他元素的高度,如分页栏)
const container = this.$refs.tableContainer;
const paginationHeight = 64; // 根据实际分页栏高度调整
this.tableScrollY = container.clientHeight - paginationHeight;
},
handleSelectChange(selectedRowKeys, row) {
this.selectedRowKeys = selectedRowKeys
this.selectedRowData = row
},
taghandleSelectChange(selectedRowKeys, row) {
this.tagselectedRowKeys = selectedRowKeys
this.tagselectedRowData = row
},
gattable() {
this.getalltable();
this.gettagTables();
},
getdatatagSources() {
idcTableTaglist(this.tagqueryParam).then((res) => {
if (res.success) {
this.datatagSources = res.result.records;
this.queryRefsParam.tagId = res.result.records[0].id;
this.gattable();
} else {
this.$message.warning(res.message);
}
});
},
dataAdd() {
getAction("/dataSpecial/special").then((res) => {
if (res.success) {
this.$message.success(res.message);
}
});
},
addtag() {
var that = this;
this.selectedRowData.forEach(item => {
idcTableTagRef({
"tagId": that.queryParam.tagId,
"tableName": item.tableName,
"schemaName": item.schemaName
}).then((res) => {
if (res.success) {
that.gattable();
} else {
that.$message.warning(res.message);
}
});
})
this.selectedRowData = [];
this.selectedRowKeys = [];
},
detag() {
var that = this;
this.tagselectedRowKeys.forEach(item => {
idcTableTagRefdelete({ id: item }).then((res) => {
if (res.success) {
that.gattable();
} else {
that.$message.warning(res.message);
}
});
});
this.tagselectedRowKeys = [];
this.tagselectedRowData = [];
},
getalltable() {
this.queryParam.tagId = this.queryRefsParam.tagId
this.loading = true;
getAllTable(this.queryParam).then((res) => {
if (res.success) {
this.dataSource = res.result;
} else {
this.$message.warning(res.message);
}
this.loading = false;
});
},
gettagTables() {
this.tagloading = true;
getTableTagRefs(this.queryRefsParam).then((res) => {
if (res.success) {
this.dataRefsSources = res.result.records;
} else {
this.$message.warning(res.message);
}
this.tagloading = false;
});
},
}
}
</script>
<style scoped>
/deep/ .ant-table-bordered .ant-table-header>table {
border: none !important;
}
</style>