b384c219 by xukangle

Merge branch 'dev_20241202_xukangle' into develop

2 parents 47febc77 2ed7f89e
......@@ -46,8 +46,8 @@ const getCgDirTreeData = async () => {
CgDirTreeList.value = res.data;
treeInfo.value.data = res.data;
currentPath.value = [res.data[0].classifyName];
treeInfo.value.expandedKey = [res.data[0].guid];
treeInfo.value.currentNodeKey = res.data[0].guid;
treeInfo.value.expandedKey.push(res.data[0].classifyDetailGuid);
treeInfo.value.currentNodeKey = res.data[0].classifyDetailGuid;
searchItemList.value[1].options = res.data;
treeInfo.value.loading = false;
} else {
......@@ -121,7 +121,7 @@ onMounted(async () => {
})
// 左侧tree-list
const treeInfo = ref({
const treeInfo = ref<any>({
id: "data-tree",
filter: true,
editTreeItem: false,
......@@ -133,7 +133,7 @@ const treeInfo = ref({
value: "classifyDetailGuid",
},
nodeKey: 'classifyDetailGuid',
expandedKey: ['0'],
expandedKey: [],
currentNodeKey: '',
expandOnNodeClick: false,
data: [],
......@@ -159,7 +159,7 @@ const searchItemList = ref([
options: [],
props: {
label: 'label',
value: 'guid',
value: 'label',
},
clearable: true,
filterable: true,
......@@ -176,7 +176,7 @@ const searchItemList = ref([
lazy: false,
props: {
label: "classifyName",
value: "classifyDetailGuid",
value: "classifyName",
},
block: false,
filterable: false,
......@@ -192,7 +192,7 @@ const searchItemList = ref([
options: [],
props: {
label: 'name',
value: 'guid',
value: 'name',
},
clearable: true,
},
......@@ -207,6 +207,7 @@ const toSearch = (val: any, clear: boolean = false) => {
selectedC.value = null;
searchItemList.value.map(item => item.default = '')
}
console.log('toSearch', val);
// 差一个label标签 -- 未完成
if (activeName.value === 'first') {
getCgDirFieldPage({
......@@ -215,6 +216,7 @@ const toSearch = (val: any, clear: boolean = false) => {
execGuid: execGuidInfo.value.execGuid,
classifyDetail: val.classifyName,
gradeDetailGuid: val.levelName,
label: val.labelName,
databaseGuid: selectedA.value,
tableGuid: selectedB.value,
fieldGuid: selectedC.value,
......@@ -225,9 +227,12 @@ const toSearch = (val: any, clear: boolean = false) => {
pageIndex: 1,
pageSize: 50,
execGuid: execGuidInfo.value.execGuid,
databaseGuid: selectedA.value || '',
tableGuid: selectedB.value || '',
fieldGuid: selectedC.value || '',
database: selectedA.value || '',
tableName: selectedB.value || '',
fieldName: selectedC.value || '',
classifyDetailName: val.classifyName,
gradeDetailName: val.levelName,
label: val.labelName,
});
}
if (activeName.value === 'second' && activeTab.value === 'word') {
......@@ -235,8 +240,11 @@ const toSearch = (val: any, clear: boolean = false) => {
pageIndex: 1,
pageSize: 50,
execGuid: execGuidInfo.value.execGuid,
databaseGuid: selectedA.value || '',
tableGuid: selectedB.value || '',
database: selectedA.value || '',
tableName: selectedB.value || '',
classifyDetailName: val.classifyName,
gradeDetailName: val.levelName,
label: val.labelName,
});
}
};
......@@ -327,8 +335,8 @@ const tableInfo = ref({
fields: [
{ label: "序号", type: "index", width: 56, align: "center" },
{ label: "字段名", field: "fieldName", width: 140 },
{ label: "分类", field: "classifyDetailName", width: 180 },
{ label: "分级", field: "gradeDetailName", width: 120 },
{ label: "分类", field: "classifyDetailName", width: 120 },
{ label: "分级", field: "gradeDetailName", width: 80 },
{ label: "标签", field: "label", width: 140 },
{ label: "规则", field: "ruleDetail", width: 180 },
{ label: "表名", field: "tableName", width: 120, align: 'center' },
......@@ -489,7 +497,8 @@ const dataBaseTableInfo = ref({
tableChName: scope.row.tableChName,
tableGuid: scope.row.tableGuid,
description: scope.row.description,
execGuid: execGuidInfo.value.execGuid
execGuid: execGuidInfo.value.execGuid,
databaseChName: scope.row.databaseChName,
}
});
}
......@@ -508,9 +517,9 @@ const dataBaseTableInfo = ref({
tableGuid: scope.row.tableGuid,
execGuid: execGuidInfo.value.execGuid,
tableChName: scope.row.tableChName,
database: dataBaseInfo.value.database,
databaseChName: dataBaseInfo.value.databaseChName,
databaseGuid: dataBaseInfo.value.databaseGuid,
database: scope.row.database,
databaseChName: scope.row.databaseChName,
databaseGuid: scope.row.databaseGuid,
}
});
} else {
......@@ -522,9 +531,9 @@ const dataBaseTableInfo = ref({
tableGuid: scope.row.tableGuid,
execGuid: execGuidInfo.value.execGuid,
tableChName: scope.row.tableChName,
database: dataBaseInfo.value.database,
databaseChName: dataBaseInfo.value.databaseChName,
databaseGuid: dataBaseInfo.value.databaseGuid,
database: scope.row.database,
databaseChName: scope.row.databaseChName,
databaseGuid: scope.row.databaseGuid,
}
});
}
......@@ -803,6 +812,9 @@ const handleClick = (tab: any) => {
console.log(tab.props.name);
activeName.value = tab.props.name;
if (tab.props.name === 'second') {
selectedA.value = null;
selectedB.value = null;
selectedC.value = null;
optionsA.value = [];
optionsB.value = [];
optionsC.value = [];
......@@ -811,6 +823,9 @@ const handleClick = (tab: any) => {
getDataBaseFieldData();
getDbDirTableSelectData(1, {});
} else {
selectedA.value = null;
selectedB.value = null;
selectedC.value = null;
optionsA.value = [];
optionsB.value = [];
optionsC.value = [];
......@@ -865,8 +880,8 @@ const dataBaseTableDataList = ref<any>();
const getDataBaseTableData = async (params = {}) => {
dataBaseTableInfo.value.loading = true;
const dataBaseParams = {
pageIndex: 1,
pageSize: 50,
pageIndex: dataBasePage.value.curr,
pageSize: dataBasePage.value.limit,
databaseGuid: "",
isDataAsset: '',
execGuid: execGuidInfo.value.execGuid,
......@@ -883,6 +898,7 @@ const getDataBaseTableData = async (params = {}) => {
dataBaseTableDataList.value = res.data.records;
dataBaseTableInfo.value.page.rows = res.data.totalRows;
dataBaseTableInfo.value.page.limit = res.data.pageSize
dataBaseTableInfo.value.page.curr = res.data.pageIndex
dataBaseTableInfo.value.data = res.data.records;
} else {
proxy.$ElMessage.error(res.msg);
......@@ -891,7 +907,6 @@ const getDataBaseTableData = async (params = {}) => {
};
const dataBaseTablePageChange = (info) => {
console.log('dataBaseTablePageChange', info);
dataBasePage.value.curr = Number(info.curr);
dataBasePage.value.limit = Number(info.limit);
getDataBaseTableData({
......@@ -908,7 +923,7 @@ const getDataBaseFieldData = async (params = {}) => {
tableFieldsDataInfo.value.loading = true;
const dataBaseParams = {
pageIndex: 1,
pageSize: 50,
pageSize: -1,
tableGuid: "",
execGuid: execGuidInfo.value.execGuid,
databaseGuid: "",
......@@ -1047,11 +1062,11 @@ const addIsShowClassifyTip = () => {
}
const tipHeight = ref(200);
const tipHeight1 = ref(220);
const tipHeight1 = ref(165);
const addIsShowDatabaseTip = () => {
isShowDatabaseTip.value = false;
tipHeight.value = 148;
tipHeight1.value = 168;
tipHeight1.value = 103;
}
// 表信息和字段信息切换
......@@ -1300,7 +1315,7 @@ onActivated(async () => {
</div>
<div class="btns-area">
<div class="left-btns">
<el-button type="primary" @click="addStandardSet">查看已生产报告</el-button>
<!-- <el-button type="primary" @click="addStandardSet">查看已生产报告</el-button> -->
<el-button @click="btnClick">导出</el-button>
<el-button @click="batchControlRules">批量配置业务规则</el-button>
</div>
......@@ -1373,8 +1388,8 @@ onActivated(async () => {
</el-dropdown>
</div>
<el-button @click="exportDB">导出</el-button>
<el-button>查看已生产报告</el-button>
<el-button>查看质量规则</el-button>
<!-- <el-button>查看已生产报告</el-button>
<el-button>查看质量规则</el-button> -->
</div>
<div class="right-btns">
<el-checkbox v-model="checked" label="仅看规划数据资产表" size="large" @change="changeCheck" />
......
......@@ -5,7 +5,7 @@
<script lang="ts" setup name="configureRules">
import { ref } from "vue";
import useUserStore from "@/store/modules/user";
import { getBizRuleConfigDetail, saveBizRuleConfig, } from '@/api/modules/dataInventory'
import { getBizRuleConfigDetail, getNewDataTypeList, saveBizRuleConfig, } from '@/api/modules/dataInventory'
const { proxy } = getCurrentInstance() as any;
const router = useRouter();
const route = useRoute();
......@@ -31,15 +31,29 @@ const getBizRuleConfigDetailData = async () => {
proxy.$message.error(res.msg)
}
}
// 获取字段类型
const fieldData = ref<any>([]);
const getFieldTypeData = async () => {
const params = {
dictType: "字段类型"
}
const res: any = await getNewDataTypeList(params);
if (res.code == proxy.$passCode) {
fieldData.value = res.data || [];
} else {
proxy.$ElMessage.error(res.msg);
}
}
onMounted(() => {
getBizRuleConfigDetailData()
onMounted(async () => {
await getFieldTypeData()
await getBizRuleConfigDetailData()
})
const tableData1 = ref([
{
cgDirName: router.currentRoute.value.query.cgDirName,
databaseChName: router.currentRoute.value.query.databaseChName,
tableName: router.currentRoute.value.query.tableName,
tableChName: router.currentRoute.value.query.tableChName,
description: router.currentRoute.value.query.description,
......@@ -276,7 +290,7 @@ const cancel = () => {
'max-height': 'calc(100% - 16px)',
display: 'inline-block',
}">
<el-table-column prop="cgDirName" label="数据源" width="180" />
<el-table-column prop="databaseChName" label="数据源" width="180" />
<el-table-column prop="tableName" label="表名称" width="180" />
<el-table-column prop="tableChName" label="数据库表" width="280" />
<el-table-column prop="description" label="描述" width="180" show-overflow-tooltip />
......@@ -298,33 +312,37 @@ const cancel = () => {
<!-- 排序列(不可编辑) -->
<el-table-column type="index" label="排序" width="80" align="center" />
<!-- 字段中文名(不可编辑)fieldChName -->
<el-table-column prop="fieldChName" label="字段中文名" width="120">
<el-table-column prop="fieldChName" label="字段中文名" width="120" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.fieldChName ? scope.row.fieldChName : '--' }}
</template>
</el-table-column>
<!-- 字段英文名(不可编辑) -->
<el-table-column prop="fieldName" label="字段英文名" width="120">
<el-table-column prop="fieldName" label="字段英文名" width="120" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.fieldName ? scope.row.fieldName : '--' }}
</template>
</el-table-column>
<!-- 分类(不可编辑)classifyName -->
<!-- <el-table-column prop="fieldEnglish" label="分类" width="120">
<el-table-column prop="classifyName" label="分类" width="80" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.fieldEnglish ? scope.row.fieldEnglish : '--' }}
{{ scope.row.classifyName ? scope.row.classifyName : '--' }}
</template>
</el-table-column> -->
</el-table-column>
<!-- 分级(不可编辑) -->
<!-- <el-table-column prop="gradeDetailName" label="分级" width="120" align="center">
<el-table-column prop="gradeDetailName" label="分级" width="80" align="center" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.gradeDetailName ? scope.row.gradeDetailName : '--' }}
</template>
</el-table-column> -->
</el-table-column>
<!-- 字段类型fieldType (不可编辑) -->
<el-table-column prop="fieldType" label="字段类型" width="150" align="center">
<el-table-column prop="fieldType" label="字段类型" width="120" align="center">
<template #default="scope">
{{ scope.row.fieldType ? scope.row.fieldType : '--' }}
{{
fieldData ? (fieldData.find((item: any) => item.value === scope.row.fieldType)?.label || '--')
: '--'
}}
</template>
</el-table-column>
......
......@@ -78,12 +78,22 @@ const labelPageList = ref<any>()
const getLabelPageData = async () => {
refCount.value++;
tableInfo.value.loading = true;
const params = {
pageIndex: page.value.curr,
pageSize: page.value.limit,
classifyGuid: classifyGuid.value,
detailGuid: classifyDetailGuid.value
let params = {}
if (guids.value.length == 0) {
params = {
pageIndex: page.value.curr,
pageSize: page.value.limit,
classifyGuid: classifyGuid.value,
detailGuid: classifyDetailGuid.value
}
} else {
params = {
pageIndex: page.value.curr,
pageSize: page.value.limit,
guids: guids.value
}
}
const res: any = await getLabelPageList(params);
if (res.code == proxy.$passCode) {
labelPageList.value = res.data.records;
......@@ -254,6 +264,10 @@ const tableInfo = ref({
{
label: "编辑", value: "edit", click: async (scope) => {
console.log('编辑', scope);
const index = findIndexInRecursiveData(classGradeTreeData.value, scope.row.classifyDetailGuid);
const temp = classGradeTreeData.value.slice(index, index + 1);
console.log('temp', temp);
newCreateGradeFormItems.value[1].options = transformDataForTree([temp[0]])
newCreateGradeStandardDialogInfo.value.submitBtnLoading = false;
newCreateGradeStandardDialogInfo.value.title = '编辑标签';
classifyGuid.value = scope.row.classifyGuid;
......@@ -302,6 +316,28 @@ const tableInfo = ref({
loading: false
});
const findIndexInRecursiveData = (data: any[], targetGuid: string): number => {
// 遍历数组
for (let i = 0; i < data.length; i++) {
const item = data[i];
// 检查当前项的 guid 是否匹配
if (item.guid === targetGuid) {
return i; // 返回当前索引
}
// 如果当前项有 children,则递归查询
if (item.children) {
const childIndex = findIndexInRecursiveData(item.children, targetGuid);
if (childIndex !== -1) {
return i; // 返回外层索引
}
}
}
return -1; // 如果没有找到匹配项,则返回 -1
};
// 批量删除
const batchRemobe = async () => {
// 批量删除,增加confirm确认弹窗
......@@ -689,6 +725,7 @@ const classSearchItemList = ref<any>([
const guids = ref<any>([])
const selectChange = async (val: any, row: any) => {
console.log('selectChange', val, row);
if (val) {
guids.value = val;
}
......
......@@ -196,7 +196,7 @@ const getPreviewData = () => {
const getTableStructure = () => {
let tableName = currDatasourceSelect.value.tableName;
console.log('tableName', currDatasourceSelect.value);
console.log('tableName');
currDsTableStructureLoading.value = true;
currDsTableStructure.value = [];
getDsTableStructure({
......@@ -275,7 +275,6 @@ const datasource_selection_all_change = (selection) => {
});
};
const datasource_selection_change = (selection, row) => {
console.log(selection, row);
let index = selection.findIndex((s) => s.tableName == row.tableName);
if (index === -1) {
datasourceSelectedRows.value.splice(
......@@ -331,6 +330,7 @@ watch(
watch(currDatasourceSelect, (val) => {
if (val?.tableName) {
// getPreviewData();
console.log('currDatasourceSelect', currDatasourceSelect, val);
getTableStructure();
}
});
......
......@@ -13,8 +13,6 @@ import {
updateDbDirTable,
createTableSql,
getDsTableStructures,
getDbDirFieldClassifyAndGrade,
getDbDirTableSelectList,
getTaskExeTreeList,
getGradeList,
getNewDataTypeList,
......@@ -178,8 +176,8 @@ onMounted(async () => {
tableName: editInfoData.value.tableName,
tableChName: editInfoData.value.tableChName,
description: editInfoData.value.description,
databaseChName: editInfoData.value.databaseChName,
}];
console.log('tableDataInfo', res.data.fieldRSVOS)
tableDataDetailInfo.value = res.data.fieldRSVOS;
tableFieldsLoading.value = false;
} else {
......@@ -214,8 +212,9 @@ const handlDsSelectedChange = (v, guid) => {
execGuid: execGuid.value,
});
});
getNextTableInfo(params);
if (params.length > 0) {
getNextTableInfo(params);
}
};
......@@ -280,6 +279,7 @@ const tableDataInfo = ref([
tableName: '',
tableChName: '',
description: '',
databaseChName: route.query.databaseChName || '',
},
])
// 表格数据
......@@ -856,6 +856,20 @@ const inputLengthKeyUp = (regexp, scope, field, max: any = null, min: any = null
'max-height': 'calc(100% - 16px)',
display: 'inline-block',
}" v-loading="tableFieldsLoading">
<el-table-column prop="databaseChName" label="数据源" width="200px" align="left" show-overflow-tooltip>
<template #header>
<span>数据源</span>
<span style="color:red;margin-left: 2px;">*</span>
</template>
<template #default="scope">
<!-- <el-select v-model="scope.row['dataSourceGuid']" placeholder="请选择" :disabled="tableCreateInfo.isCreate"
@change="(val) => selectDatabaseChange(val)" clearable filterable>
<el-option v-for="opt in databaseList" :key="opt['guid']" :label="opt['databaseNameZh']"
:value="opt['guid']" />
</el-select> -->
<el-input v-model.trim="scope.row.databaseChName" :disabled="true" />
</template>
</el-table-column>
<!-- 表名称列 -->
<el-table-column prop="tableName" label="表名称" width="180">
<template #header>
......
......@@ -1527,7 +1527,6 @@ const saveDraftTable = async () => {
isDraft: 'Y',
fieldRQVOList: TepmTableDataDetailInfo
}
console.log(InParams, '--------------------------------------');
const res: any = await saveDbDirTable(InParams);
if (res.code === proxy.$passCode) {
proxy.$ElMessage.success('保存草稿成功!');
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!