87d2d99d by xukangle

Merge branch 'dev_20241202_xukangle' into develop

2 parents b6a2f994 9bdd4ec1
...@@ -33,6 +33,7 @@ import { download } from "@/utils/common"; ...@@ -33,6 +33,7 @@ import { download } from "@/utils/common";
33 import { getLabelList } from "@/api/modules/dataLabel"; 33 import { getLabelList } from "@/api/modules/dataLabel";
34 34
35 const currentPath = ref<string[]>([]); 35 const currentPath = ref<string[]>([]);
36 const currentDatabasePath = ref<string[]>([]);
36 const { proxy } = getCurrentInstance() as any; 37 const { proxy } = getCurrentInstance() as any;
37 const route = useRoute(); 38 const route = useRoute();
38 // 分级引用refGradeGuid 39 // 分级引用refGradeGuid
...@@ -48,14 +49,20 @@ const getCgDirTreeData = async () => { ...@@ -48,14 +49,20 @@ const getCgDirTreeData = async () => {
48 } 49 }
49 const res: any = await getTaskExeTreeList(params); 50 const res: any = await getTaskExeTreeList(params);
50 if (res.code == proxy.$passCode) { 51 if (res.code == proxy.$passCode) {
51 CgDirTreeList.value = res.data; 52
52 treeInfo.value.data = res.data; 53 const transformedData: any = [{
53 currentPath.value = [res.data[0].classifyName]; 54 classifyDetailGuid: execGuidInfo.value.guid, // 新增字段 GUID
54 treeInfo.value.expandedKey.push(res.data[0].classifyDetailGuid); 55 classifyName: execGuidInfo.value.cgDirName, // 新增字段目录名称
55 treeInfo.value.currentNodeKey = res.data[0].classifyDetailGuid; 56 children: res.data, // 将原始数据放入 children
56 classifyDetailGuidInfo.value = res.data[0].classifyDetailGuid; 57 }];
57 searchItemList.value[1].options = res.data; 58 CgDirTreeList.value = transformedData;
58 refGradeGuid.value = res.data[0].refGradeGuid; 59 treeInfo.value.data = transformedData;
60 currentPath.value = [transformedData[0].classifyName];
61 treeInfo.value.expandedKey.push(transformedData[0].classifyDetailGuid);
62 treeInfo.value.currentNodeKey = transformedData[0].classifyDetailGuid;
63 // classifyDetailGuidInfo.value = res.data[0].classifyDetailGuid;
64 searchItemList.value[0].options = res.data || [];
65 refGradeGuid.value = res.data[0].refGradeGuid || '';
59 treeInfo.value.loading = false; 66 treeInfo.value.loading = false;
60 } else { 67 } else {
61 proxy.$ElMessage.error(res.msg); 68 proxy.$ElMessage.error(res.msg);
...@@ -126,7 +133,7 @@ onMounted(async () => { ...@@ -126,7 +133,7 @@ onMounted(async () => {
126 }); 133 });
127 getDictionaryList(); 134 getDictionaryList();
128 getSearchTableList(); 135 getSearchTableList();
129 getLabelListData(); 136 // getLabelListData();
130 getGradeData(refGradeGuid.value); 137 getGradeData(refGradeGuid.value);
131 138
132 }) 139 })
...@@ -160,21 +167,21 @@ const addStandardSet = () => { ...@@ -160,21 +167,21 @@ const addStandardSet = () => {
160 167
161 // 右侧上方搜索tab配置 168 // 右侧上方搜索tab配置
162 const searchItemList = ref([ 169 const searchItemList = ref([
163 { 170 // {
164 label: '标签', 171 // label: '标签',
165 type: 'select', 172 // type: 'select',
166 maxlength: 19, 173 // maxlength: 19,
167 placeholder: '选择标签', 174 // placeholder: '选择标签',
168 field: 'labelName', 175 // field: 'labelName',
169 default: '', 176 // default: '',
170 options: [], 177 // options: [],
171 props: { 178 // props: {
172 label: 'label', 179 // label: 'label',
173 value: 'guid', 180 // value: 'guid',
174 }, 181 // },
175 clearable: true, 182 // clearable: true,
176 filterable: true, 183 // filterable: true,
177 }, 184 // },
178 { 185 {
179 label: "", 186 label: "",
180 placeholder: '分类', 187 placeholder: '分类',
...@@ -192,7 +199,8 @@ const searchItemList = ref([ ...@@ -192,7 +199,8 @@ const searchItemList = ref([
192 block: false, 199 block: false,
193 filterable: false, 200 filterable: false,
194 clearable: true, 201 clearable: true,
195 required: false 202 required: false,
203 visible: true,
196 }, { 204 }, {
197 label: '分级', 205 label: '分级',
198 type: 'select', 206 type: 'select',
...@@ -206,6 +214,7 @@ const searchItemList = ref([ ...@@ -206,6 +214,7 @@ const searchItemList = ref([
206 value: 'guid', 214 value: 'guid',
207 }, 215 },
208 clearable: true, 216 clearable: true,
217 visible: true,
209 }, 218 },
210 ]) 219 ])
211 220
...@@ -265,7 +274,7 @@ const nodeClick = async (data: any) => { ...@@ -265,7 +274,7 @@ const nodeClick = async (data: any) => {
265 const { guid, classifyDetailGuid, refGradeGuid } = data 274 const { guid, classifyDetailGuid, refGradeGuid } = data
266 classifyDetailGuidInfo.value = classifyDetailGuid; 275 classifyDetailGuidInfo.value = classifyDetailGuid;
267 // getGradeData(refGradeGuid); 276 // getGradeData(refGradeGuid);
268 searchItemList.value[1].default = data.classifyName; 277 searchItemList.value[0].default = data.classifyName;
269 278
270 await getCgDirFieldPage({ 279 await getCgDirFieldPage({
271 execGuid: execGuidInfo.value.execGuid, 280 execGuid: execGuidInfo.value.execGuid,
...@@ -302,20 +311,20 @@ const findPath = (data: any[], targetGuid: string, path: string[] = []) => { ...@@ -302,20 +311,20 @@ const findPath = (data: any[], targetGuid: string, path: string[] = []) => {
302 const getGradeData = async (refGradeGuid) => { 311 const getGradeData = async (refGradeGuid) => {
303 const res: any = await getGradeList({ classifyGradeGuid: refGradeGuid, pageIndex: 1, pageSize: -1 }); 312 const res: any = await getGradeList({ classifyGradeGuid: refGradeGuid, pageIndex: 1, pageSize: -1 });
304 if (res.code == proxy.$passCode) { 313 if (res.code == proxy.$passCode) {
305 searchItemList.value[2].options = res.data.records || []; 314 searchItemList.value[1].options = res.data.records || [];
306 } else { 315 } else {
307 proxy.$ElMessage.error(res.msg); 316 proxy.$ElMessage.error(res.msg);
308 } 317 }
309 } 318 }
310 // 获取标签 319 // 获取标签
311 const getLabelListData = async () => { 320 // const getLabelListData = async () => {
312 const res: any = await getLabelList({ label: '' }); 321 // const res: any = await getLabelList({ label: '' });
313 if (res.code == proxy.$passCode) { 322 // if (res.code == proxy.$passCode) {
314 searchItemList.value[0].options = res.data || []; 323 // searchItemList.value[0].options = res.data || [];
315 } else { 324 // } else {
316 proxy.$ElMessage.error(res.msg); 325 // proxy.$ElMessage.error(res.msg);
317 } 326 // }
318 } 327 // }
319 328
320 // btns-area 329 // btns-area
321 const checked = ref(false); 330 const checked = ref(false);
...@@ -354,12 +363,12 @@ const tableInfo = ref({ ...@@ -354,12 +363,12 @@ const tableInfo = ref({
354 } 363 }
355 }, 364 },
356 { label: "分级", field: "gradeDetailName", width: 80 }, 365 { label: "分级", field: "gradeDetailName", width: 80 },
357 { label: "标签", field: "label", width: 140 }, 366 // { label: "标签", field: "label", width: 140 },
358 { label: "规则", field: "ruleDetail", width: 180 }, 367 // { label: "规则", field: "ruleDetail", width: 180 },
359 { label: "表名", field: "tableName", width: 120, align: 'center' }, 368 { label: "表名", field: "tableName", width: 120, align: 'left' },
360 { label: "表中文名", field: "tableChName", width: 120, align: 'center' }, 369 { label: "表中文名", field: "tableChName", width: 120, align: 'left' },
361 { label: "数据库名", field: "database", width: 120, align: 'center' }, 370 { label: "数据库名", field: "database", width: 120, align: 'left' },
362 { label: "数据库中文名", field: "databaseChName", width: 120, align: 'center' }, 371 { label: "数据库中文名", field: "databaseChName", width: 120, align: 'left' },
363 372
364 ], 373 ],
365 data: [], 374 data: [],
...@@ -831,6 +840,12 @@ const handleClick = (tab: any) => { ...@@ -831,6 +840,12 @@ const handleClick = (tab: any) => {
831 activeName.value = tab.props.name; 840 activeName.value = tab.props.name;
832 if (tab.props.name === 'second') { 841 if (tab.props.name === 'second') {
833 classifyDetailGuidInfo.value = ''; 842 classifyDetailGuidInfo.value = '';
843 if (activeTab.value === 'table') {
844 searchItemList.value[0].visible = false;
845 searchItemList.value[1].visible = false;
846 searchItemList.value[0].default = '';
847 searchItemList.value[1].default = '';
848 }
834 selectedA.value = null; 849 selectedA.value = null;
835 selectedB.value = null; 850 selectedB.value = null;
836 selectedC.value = null; 851 selectedC.value = null;
...@@ -842,6 +857,10 @@ const handleClick = (tab: any) => { ...@@ -842,6 +857,10 @@ const handleClick = (tab: any) => {
842 getDataBaseFieldData(); 857 getDataBaseFieldData();
843 getDbDirTableSelectData(1, {}); 858 getDbDirTableSelectData(1, {});
844 } else { 859 } else {
860 searchItemList.value[0].visible = true;
861 searchItemList.value[1].visible = true;
862 searchItemList.value[0].default = '';
863 searchItemList.value[1].default = '';
845 selectedA.value = null; 864 selectedA.value = null;
846 selectedB.value = null; 865 selectedB.value = null;
847 selectedC.value = null; 866 selectedC.value = null;
...@@ -865,6 +884,10 @@ const getDataBaseTreeData = async () => { ...@@ -865,6 +884,10 @@ const getDataBaseTreeData = async () => {
865 // 更新到绑定的响应式数据 884 // 更新到绑定的响应式数据
866 dataBaseTreeData.value = dataArray; 885 dataBaseTreeData.value = dataArray;
867 dataBaseTreeInfo.value.data = dataArray; 886 dataBaseTreeInfo.value.data = dataArray;
887 dataBaseTreeInfo.value.expandedKey.push(dataArray[0].guid);
888 dataBaseTreeInfo.value.currentNodeKey = dataArray[0].guid;
889 dataBaseGuid.value = dataArray[0].databaseGuid;
890 currentDatabasePath.value = [dataArray[0].name];
868 dataBaseTreeInfo.value.loading = false; 891 dataBaseTreeInfo.value.loading = false;
869 } else { 892 } else {
870 proxy.$ElMessage.error(res.msg); 893 proxy.$ElMessage.error(res.msg);
...@@ -992,7 +1015,7 @@ const tableFieldsDataInfo = ref({ ...@@ -992,7 +1015,7 @@ const tableFieldsDataInfo = ref({
992 { label: "数据库中文名", field: "databaseChName", width: TableColumnWidth.DATETIME }, 1015 { label: "数据库中文名", field: "databaseChName", width: TableColumnWidth.DATETIME },
993 { label: "分类", field: "classifyDetailName", width: 120, align: 'center' }, 1016 { label: "分类", field: "classifyDetailName", width: 120, align: 'center' },
994 { label: "分级", field: "gradeDetailName", width: 120, align: 'center' }, 1017 { label: "分级", field: "gradeDetailName", width: 120, align: 'center' },
995 { label: "标签", field: "label", width: 120, align: 'center' }, 1018 // { label: "标签", field: "label", width: 120, align: 'center' },
996 ], 1019 ],
997 data: [], 1020 data: [],
998 page: { 1021 page: {
...@@ -1009,7 +1032,7 @@ const tableFieldsDataInfo = ref({ ...@@ -1009,7 +1032,7 @@ const tableFieldsDataInfo = ref({
1009 1032
1010 1033
1011 const showTableOrDatabase = ref(true); 1034 const showTableOrDatabase = ref(true);
1012 const isShowCreateBtn = ref(false); 1035 const isShowCreateBtn = ref(true);
1013 // 定义tableGuid 1036 // 定义tableGuid
1014 const tableGuid = ref(''); 1037 const tableGuid = ref('');
1015 const dataBaseGuid = ref(''); 1038 const dataBaseGuid = ref('');
...@@ -1017,7 +1040,15 @@ const dataBaseInfo = ref<any>({}); ...@@ -1017,7 +1040,15 @@ const dataBaseInfo = ref<any>({});
1017 1040
1018 const dataBasenodeClick = (data: any) => { 1041 const dataBasenodeClick = (data: any) => {
1019 isShowCreateBtn.value = false; 1042 isShowCreateBtn.value = false;
1020 console.log('dataBasenodeClick', data); 1043 console.log('dataBasenodeClick', data, dataBaseTreeData.value);
1044 const path = findDDatabasePath(dataBaseTreeData.value, data.guid);
1045 console.log('path', path);
1046 if (path) {
1047 currentDatabasePath.value = path;
1048 console.log('找到路径:', path);
1049 } else {
1050 console.error('未找到路径');
1051 }
1021 if (data.databaseGuid) { 1052 if (data.databaseGuid) {
1022 dataBaseInfo.value = data; 1053 dataBaseInfo.value = data;
1023 dataBaseGuid.value = data.databaseGuid; 1054 dataBaseGuid.value = data.databaseGuid;
...@@ -1047,8 +1078,24 @@ const dataBasenodeClick = (data: any) => { ...@@ -1047,8 +1078,24 @@ const dataBasenodeClick = (data: any) => {
1047 showTableOrDatabase.value = false; 1078 showTableOrDatabase.value = false;
1048 return; 1079 return;
1049 } 1080 }
1081
1050 } 1082 }
1051 1083
1084 const findDDatabasePath = (data: any[], targetGuid: string, path: string[] = []) => {
1085 for (const item of data) {
1086 path.push(item.name); // 添加当前节点名称
1087 if (item.guid === targetGuid) {
1088 return path; // 找到目标节点,返回路径
1089 }
1090 if (item.children && item.children.length > 0) {
1091 const result = findDDatabasePath(item.children, targetGuid, path);
1092 if (result) return result; // 子节点找到目标节点,返回路径
1093 }
1094 path.pop(); // 回溯,移除当前节点
1095 }
1096 return null; // 未找到目标节点
1097 };
1098
1052 const nodeSelectChange = (data: any) => { 1099 const nodeSelectChange = (data: any) => {
1053 console.log('nodeSelectChange', data); 1100 console.log('nodeSelectChange', data);
1054 } 1101 }
...@@ -1087,14 +1134,17 @@ const isShowClassifyTip = ref(true); ...@@ -1087,14 +1134,17 @@ const isShowClassifyTip = ref(true);
1087 const isShowDatabaseTip = ref(true); 1134 const isShowDatabaseTip = ref(true);
1088 const addIsShowClassifyTip = () => { 1135 const addIsShowClassifyTip = () => {
1089 isShowClassifyTip.value = false; 1136 isShowClassifyTip.value = false;
1137 tipHeight.value = 83;
1090 } 1138 }
1091 1139
1092 const tipHeight = ref(200); 1140 const tipHeight = ref(135);
1093 const tipHeight1 = ref(165); 1141 const tipHeight1 = ref(170);
1142 const tipHeight2 = ref(130);
1143
1094 const addIsShowDatabaseTip = () => { 1144 const addIsShowDatabaseTip = () => {
1095 isShowDatabaseTip.value = false; 1145 isShowDatabaseTip.value = false;
1096 tipHeight.value = 148; 1146 tipHeight1.value = 118;
1097 tipHeight1.value = 103; 1147 tipHeight2.value = 78;
1098 } 1148 }
1099 1149
1100 // 表信息和字段信息切换 1150 // 表信息和字段信息切换
...@@ -1104,12 +1154,20 @@ const setActiveTab = (tab) => { ...@@ -1104,12 +1154,20 @@ const setActiveTab = (tab) => {
1104 console.log('setActiveTab', tab); 1154 console.log('setActiveTab', tab);
1105 activeTab.value = tab; 1155 activeTab.value = tab;
1106 if (tab === 'word' && activeName.value === 'second') { 1156 if (tab === 'word' && activeName.value === 'second') {
1157 searchItemList.value[0].visible = true;
1158 searchItemList.value[1].visible = true;
1159 searchItemList.value[0].default = '';
1160 searchItemList.value[1].default = '';
1107 isShowWordSearch.value = false; 1161 isShowWordSearch.value = false;
1108 optionsA.value = []; 1162 optionsA.value = [];
1109 optionsB.value = []; 1163 optionsB.value = [];
1110 optionsC.value = []; 1164 optionsC.value = [];
1111 getDbDirFieldSelectData(1); 1165 getDbDirFieldSelectData(1);
1112 } else { 1166 } else {
1167 searchItemList.value[0].visible = false;
1168 searchItemList.value[1].visible = false;
1169 searchItemList.value[0].default = '';
1170 searchItemList.value[1].default = '';
1113 isShowWordSearch.value = true; 1171 isShowWordSearch.value = true;
1114 optionsA.value = []; 1172 optionsA.value = [];
1115 optionsB.value = []; 1173 optionsB.value = [];
...@@ -1292,9 +1350,11 @@ const levelGuidInfo = ref(''); ...@@ -1292,9 +1350,11 @@ const levelGuidInfo = ref('');
1292 // 标签选择 1350 // 标签选择
1293 const selectChange = (val, row, info) => { 1351 const selectChange = (val, row, info) => {
1294 console.log('selectChange', val, row, info); 1352 console.log('selectChange', val, row, info);
1353 if (info.classifyName == undefined) {
1354 classifyDetailGuidInfo.value = '';
1355 }
1295 if (info) { 1356 if (info) {
1296 labelGuidInfo.value = info.labelName; 1357 labelGuidInfo.value = info.labelName;
1297 classifyDetailGuidInfo.value = info.classifyName;
1298 levelGuidInfo.value = info.levelName; 1358 levelGuidInfo.value = info.levelName;
1299 } 1359 }
1300 } 1360 }
...@@ -1382,7 +1442,7 @@ const treeSelectNodeClick = (node, item) => { ...@@ -1382,7 +1442,7 @@ const treeSelectNodeClick = (node, item) => {
1382 <el-button @click="batchControlRules">批量配置业务规则</el-button> 1442 <el-button @click="batchControlRules">批量配置业务规则</el-button>
1383 </div> 1443 </div>
1384 </div> 1444 </div>
1385 <div class="table_panel_wrap"> 1445 <div class="table_panel_wrap" :style="{ height: `calc(100% - ${tipHeight}px)` }">
1386 <Table :tableInfo="tableInfo" @tablePageChange="tablePageChange" 1446 <Table :tableInfo="tableInfo" @tablePageChange="tablePageChange"
1387 @tableCheckboxSelectChange="tableCheckboxSelectChange" 1447 @tableCheckboxSelectChange="tableCheckboxSelectChange"
1388 @tableCheckboxAllSelectChange="tableCheckboxAllSelectChange" /> 1448 @tableCheckboxAllSelectChange="tableCheckboxAllSelectChange" />
...@@ -1403,7 +1463,12 @@ const treeSelectNodeClick = (node, item) => { ...@@ -1403,7 +1463,12 @@ const treeSelectNodeClick = (node, item) => {
1403 不再提醒 1463 不再提醒
1404 </el-button> 1464 </el-button>
1405 </div> 1465 </div>
1406 <div>全部</div> 1466 <div class="path">
1467 <span v-for="(item, index) in currentDatabasePath" :key="index" class="path-item">
1468 <span :class="{ 'bold': index === currentDatabasePath.length - 1 }">{{ item }}</span>
1469 <span v-if="index < currentDatabasePath.length - 1">/</span>
1470 </span>
1471 </div>
1407 <div class="tab-btn"> 1472 <div class="tab-btn">
1408 内容信息: 1473 内容信息:
1409 <div v-if="showTableOrDatabase" class="table" :class="{ active: activeTab === 'table' }" 1474 <div v-if="showTableOrDatabase" class="table" :class="{ active: activeTab === 'table' }"
...@@ -1457,11 +1522,13 @@ const treeSelectNodeClick = (node, item) => { ...@@ -1457,11 +1522,13 @@ const treeSelectNodeClick = (node, item) => {
1457 <el-checkbox v-model="checked" label="仅看规划数据资产表" size="large" @change="changeCheck" /> 1522 <el-checkbox v-model="checked" label="仅看规划数据资产表" size="large" @change="changeCheck" />
1458 </div> 1523 </div>
1459 </div> 1524 </div>
1460 <div class="table_panel_wrap_database" v-if="!tableGuid && activeTab === 'table'"> 1525 <div class="table_panel_wrap_database" :style="{ height: `calc(100% - ${tipHeight1}px)` }"
1526 v-if="!tableGuid && activeTab === 'table'">
1461 <Table :tableInfo="dataBaseTableInfo" @tablePageChange="dataBaseTablePageChange" 1527 <Table :tableInfo="dataBaseTableInfo" @tablePageChange="dataBaseTablePageChange"
1462 @tableSwitchBeforeChange="tableSwitchBeforeChange" /> 1528 @tableSwitchBeforeChange="tableSwitchBeforeChange" />
1463 </div> 1529 </div>
1464 <div class="table_field" v-if="tableGuid || activeTab === 'word'"> 1530 <div class="table_field" :style="{ height: `calc(100% - ${tipHeight2}px)` }"
1531 v-if="tableGuid || activeTab === 'word'">
1465 <Table :tableInfo="tableFieldsDataInfo" @tablePageChange="dataFieldTablePageChange" /> 1532 <Table :tableInfo="tableFieldsDataInfo" @tablePageChange="dataFieldTablePageChange" />
1466 </div> 1533 </div>
1467 </div> 1534 </div>
...@@ -1600,7 +1667,6 @@ const treeSelectNodeClick = (node, item) => { ...@@ -1600,7 +1667,6 @@ const treeSelectNodeClick = (node, item) => {
1600 1667
1601 .table_panel_wrap { 1668 .table_panel_wrap {
1602 width: 100%; 1669 width: 100%;
1603 height: calc(100% - 130px);
1604 min-height: 210px; 1670 min-height: 210px;
1605 overflow: visible; 1671 overflow: visible;
1606 } 1672 }
......
...@@ -383,6 +383,8 @@ const cancel = () => { ...@@ -383,6 +383,8 @@ const cancel = () => {
383 <el-option label="大于" value=">"></el-option> 383 <el-option label="大于" value=">"></el-option>
384 <el-option label="等于" value="="></el-option> 384 <el-option label="等于" value="="></el-option>
385 <el-option label="小于" value="<"></el-option> 385 <el-option label="小于" value="<"></el-option>
386 <el-option label="大于等于" value=">="></el-option>
387 <el-option label="小于等于" value="<="></el-option>
386 </el-select> 388 </el-select>
387 <el-input v-model="scope.row.lengthValue" placeholder="请输入" style="width: 45%;" /> 389 <el-input v-model="scope.row.lengthValue" placeholder="请输入" style="width: 45%;" />
388 </div> 390 </div>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!