fix
Showing
6 changed files
with
370 additions
and
135 deletions
| ... | @@ -840,3 +840,14 @@ export const getFidldEnName = (data) => request({ | ... | @@ -840,3 +840,14 @@ export const getFidldEnName = (data) => request({ |
| 840 | method: 'post', | 840 | method: 'post', |
| 841 | data | 841 | data |
| 842 | }) | 842 | }) |
| 843 | |||
| 844 | /** | ||
| 845 | * 数据库目录-查询字段分类分级 | ||
| 846 | * @param {Object} | ||
| 847 | * @path /db-dir/field/get-classify-and-grade | ||
| 848 | */ | ||
| 849 | export const getFieldClassifyAndGrade = (data) => request({ | ||
| 850 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/field/get-classify-and-grade`, | ||
| 851 | method: 'post', | ||
| 852 | data | ||
| 853 | }) | ... | ... |
| ... | @@ -99,10 +99,16 @@ const onClickOutside = (e: any) => { | ... | @@ -99,10 +99,16 @@ const onClickOutside = (e: any) => { |
| 99 | }; | 99 | }; |
| 100 | 100 | ||
| 101 | const getDrawerConRef = (refName) => { | 101 | const getDrawerConRef = (refName) => { |
| 102 | console.log(refName, '----------') | ||
| 102 | if (refName == 'drawerTableRef') { | 103 | if (refName == 'drawerTableRef') { |
| 103 | const dtf = drawerTableRef.value[0] || drawerTableRef.value | 104 | const dtf = drawerTableRef.value[0] || drawerTableRef.value |
| 104 | return dtf?.tableRef | 105 | return dtf?.tableRef |
| 105 | } | 106 | } |
| 107 | // const drawerForm = drawerFormRef.value[0] || drawerFormRef.value; | ||
| 108 | if (refName == 'drawerFormRef') { | ||
| 109 | const drawerForm = drawerFormRef.value[0] || drawerFormRef.value; | ||
| 110 | return drawerForm | ||
| 111 | } | ||
| 106 | } | 112 | } |
| 107 | 113 | ||
| 108 | defineExpose({ | 114 | defineExpose({ | ... | ... |
| ... | @@ -924,6 +924,7 @@ const classEditFormItems = ref<any>([{ | ... | @@ -924,6 +924,7 @@ const classEditFormItems = ref<any>([{ |
| 924 | type: 'input', | 924 | type: 'input', |
| 925 | placeholder: '请输入', | 925 | placeholder: '请输入', |
| 926 | field: 'startValue', | 926 | field: 'startValue', |
| 927 | default: '', | ||
| 927 | clearable: true, | 928 | clearable: true, |
| 928 | required: false, | 929 | required: false, |
| 929 | min: 1, | 930 | min: 1, |
| ... | @@ -933,6 +934,7 @@ const classEditFormItems = ref<any>([{ | ... | @@ -933,6 +934,7 @@ const classEditFormItems = ref<any>([{ |
| 933 | type: 'input', | 934 | type: 'input', |
| 934 | placeholder: '请输入', | 935 | placeholder: '请输入', |
| 935 | field: 'endValue', | 936 | field: 'endValue', |
| 937 | default: '', | ||
| 936 | clearable: true, | 938 | clearable: true, |
| 937 | min: 1, | 939 | min: 1, |
| 938 | required: false, | 940 | required: false, |
| ... | @@ -971,7 +973,7 @@ const classEditFormItems = ref<any>([{ | ... | @@ -971,7 +973,7 @@ const classEditFormItems = ref<any>([{ |
| 971 | { | 973 | { |
| 972 | label: '是否必填', | 974 | label: '是否必填', |
| 973 | type: "select", | 975 | type: "select", |
| 974 | field: "notNull", | 976 | field: "isNotNull", |
| 975 | disabled: false, | 977 | disabled: false, |
| 976 | default: '', | 978 | default: '', |
| 977 | options: [ | 979 | options: [ |
| ... | @@ -1037,7 +1039,7 @@ const drawerBtnClick = async (btn, info) => { | ... | @@ -1037,7 +1039,7 @@ const drawerBtnClick = async (btn, info) => { |
| 1037 | } else { | 1039 | } else { |
| 1038 | btn.loading = true; | 1040 | btn.loading = true; |
| 1039 | console.log('drawerBtnClick', info); | 1041 | console.log('drawerBtnClick', info); |
| 1040 | const { orderNumLength, orderNum, startNumber, endNumber, fieldValueRange, startValue, endValue, fieldPrecision, dictionaryGuid, isUnique, notNull } = info; | 1042 | const { orderNumLength, orderNum, startNumber, endNumber, fieldValueRange, startValue, endValue, fieldPrecision, dictionaryGuid, isUnique, isNotNull } = info; |
| 1041 | // 判断长度orderNumLength,orderNum 要么都有值,要么都没有值,不能只有一个有值,一个没有值精确提醒 | 1043 | // 判断长度orderNumLength,orderNum 要么都有值,要么都没有值,不能只有一个有值,一个没有值精确提醒 |
| 1042 | let fieldLengthCondition: any = ''; | 1044 | let fieldLengthCondition: any = ''; |
| 1043 | if ((orderNumLength === 'between' && !startNumber) || (orderNumLength === 'between' && !endNumber)) { | 1045 | if ((orderNumLength === 'between' && !startNumber) || (orderNumLength === 'between' && !endNumber)) { |
| ... | @@ -1075,10 +1077,10 @@ const drawerBtnClick = async (btn, info) => { | ... | @@ -1075,10 +1077,10 @@ const drawerBtnClick = async (btn, info) => { |
| 1075 | // 根据是否有 fieldValueRange 来决定如何构建参数对象 | 1077 | // 根据是否有 fieldValueRange 来决定如何构建参数对象 |
| 1076 | if (fieldValueRange) { | 1078 | if (fieldValueRange) { |
| 1077 | param = { | 1079 | param = { |
| 1078 | fieldPrecision: fieldPrecision || '', | 1080 | fieldPrecision, |
| 1079 | dictionaryGuid, | 1081 | dictionaryGuid, |
| 1080 | isUnique, | 1082 | isUnique, |
| 1081 | notNull, | 1083 | isNotNull, |
| 1082 | fieldLengthCondition, | 1084 | fieldLengthCondition, |
| 1083 | fieldValueRange, | 1085 | fieldValueRange, |
| 1084 | fieldGuid: item, | 1086 | fieldGuid: item, |
| ... | @@ -1086,10 +1088,10 @@ const drawerBtnClick = async (btn, info) => { | ... | @@ -1086,10 +1088,10 @@ const drawerBtnClick = async (btn, info) => { |
| 1086 | }; | 1088 | }; |
| 1087 | } else { | 1089 | } else { |
| 1088 | param = { | 1090 | param = { |
| 1089 | fieldPrecision: fieldPrecision || '', | 1091 | fieldPrecision, |
| 1090 | dictionaryGuid, | 1092 | dictionaryGuid, |
| 1091 | isUnique, | 1093 | isUnique, |
| 1092 | notNull, | 1094 | isNotNull, |
| 1093 | fieldLengthCondition, | 1095 | fieldLengthCondition, |
| 1094 | fieldGuid: item, | 1096 | fieldGuid: item, |
| 1095 | execGuid: execGuidInfo.value.execGuid, | 1097 | execGuid: execGuidInfo.value.execGuid, |
| ... | @@ -1136,8 +1138,9 @@ const isValidParam = (param) => { | ... | @@ -1136,8 +1138,9 @@ const isValidParam = (param) => { |
| 1136 | return Object.values(rest).some(value => value !== null && value !== undefined && value !== ''); | 1138 | return Object.values(rest).some(value => value !== null && value !== undefined && value !== ''); |
| 1137 | } | 1139 | } |
| 1138 | 1140 | ||
| 1141 | const drawerRef = ref<any>(); | ||
| 1139 | const drawerSelectChange = (val, row, info) => { | 1142 | const drawerSelectChange = (val, row, info) => { |
| 1140 | console.log('drawerSelectChange', val, row, info); | 1143 | const tempInfo = drawerRef.value.getDrawerConRef('drawerFormRef').formInline; |
| 1141 | if (val === 'between') { | 1144 | if (val === 'between') { |
| 1142 | classEditFormItems.value.forEach(item => { | 1145 | classEditFormItems.value.forEach(item => { |
| 1143 | if (item.field === 'orderNum') { | 1146 | if (item.field === 'orderNum') { |
| ... | @@ -1166,6 +1169,34 @@ const drawerSelectChange = (val, row, info) => { | ... | @@ -1166,6 +1169,34 @@ const drawerSelectChange = (val, row, info) => { |
| 1166 | }); | 1169 | }); |
| 1167 | } | 1170 | } |
| 1168 | } | 1171 | } |
| 1172 | classEditFormItems.value.forEach(item => { | ||
| 1173 | if (item.field === 'orderNum') { | ||
| 1174 | item.default = tempInfo.orderNum; | ||
| 1175 | } | ||
| 1176 | if (item.field === 'dictionaryGuid') { | ||
| 1177 | item.default = tempInfo.dictionaryGuid; | ||
| 1178 | } | ||
| 1179 | if (item.field === 'isNotNull') { | ||
| 1180 | item.default = tempInfo.isNotNull; | ||
| 1181 | } | ||
| 1182 | if (item.field === 'isUnique') { | ||
| 1183 | item.default = tempInfo.isUnique; | ||
| 1184 | } | ||
| 1185 | if (item.field === 'fieldValueRange' && item.children) { | ||
| 1186 | item.children.forEach(item => { | ||
| 1187 | if (item.field === 'startValue') { | ||
| 1188 | item.default = tempInfo.startValue; | ||
| 1189 | } | ||
| 1190 | if (item.field === 'endValue') { | ||
| 1191 | item.default = tempInfo.endValue; | ||
| 1192 | } | ||
| 1193 | }); | ||
| 1194 | } | ||
| 1195 | if (item.field === 'fieldValueRange' && !item.children) { | ||
| 1196 | item.default = tempInfo.fieldValueRange; | ||
| 1197 | } | ||
| 1198 | }); | ||
| 1199 | |||
| 1169 | } | 1200 | } |
| 1170 | 1201 | ||
| 1171 | // tab切换 | 1202 | // tab切换 |
| ... | @@ -1984,7 +2015,7 @@ watchEffect(() => { | ... | @@ -1984,7 +2015,7 @@ watchEffect(() => { |
| 1984 | <Table :tableInfo="tableFieldsDataInfo" @tablePageChange="dataFieldTablePageChange" /> | 2015 | <Table :tableInfo="tableFieldsDataInfo" @tablePageChange="dataFieldTablePageChange" /> |
| 1985 | </div> | 2016 | </div> |
| 1986 | </div> | 2017 | </div> |
| 1987 | <Drawer :drawerInfo="drawerInfo" @drawerBtnClick="drawerBtnClick" class="v-drawer" | 2018 | <Drawer :drawerInfo="drawerInfo" @drawerBtnClick="drawerBtnClick" class="v-drawer" ref="drawerRef" |
| 1988 | @drawerSelectChange="drawerSelectChange" /> | 2019 | @drawerSelectChange="drawerSelectChange" /> |
| 1989 | 2020 | ||
| 1990 | </div> | 2021 | </div> | ... | ... |
| ... | @@ -167,18 +167,19 @@ const editRow = (row) => { | ... | @@ -167,18 +167,19 @@ const editRow = (row) => { |
| 167 | tempRowData.value.push({ ...row }); | 167 | tempRowData.value.push({ ...row }); |
| 168 | } | 168 | } |
| 169 | if (row.fieldLengthCondition) { | 169 | if (row.fieldLengthCondition) { |
| 170 | const arr = row.fieldLengthCondition.split('#') | 170 | const arr = row.fieldLengthCondition.split('#'); // 按 '#' 分割 |
| 171 | // 遍历找到arr中是否存在等于between | 171 | |
| 172 | arr.forEach((item) => { | 172 | // 判断数组中是否包含 'between' |
| 173 | if (item === 'between') { | 173 | if (arr.includes('between')) { |
| 174 | row.lengthSymbol = 'between' | 174 | // 如果包含 'between',则将对应的 start 和 end 值赋给相应的字段 |
| 175 | row.numberRangeStart = arr[1] | 175 | row.lengthSymbol = 'between'; |
| 176 | row.numberRangeEnd = arr[2] | 176 | row.numberRangeStart = arr[1]; // start value |
| 177 | } else { | 177 | row.numberRangeEnd = arr[2]; // end value |
| 178 | row.lengthSymbol = arr[0] | 178 | } else { |
| 179 | row.lengthValue = arr[1] | 179 | // 否则处理其他符号条件,如 '>=', '<=', '>', '<', '=' 等 |
| 180 | } | 180 | row.lengthSymbol = arr[0]; // 符号(如 '>', '<=', 等) |
| 181 | }) | 181 | row.lengthValue = arr[1]; // 值(如 10,20 等) |
| 182 | } | ||
| 182 | } | 183 | } |
| 183 | if (row.fieldValueRange && !isSingleInput(row.fieldType)) { | 184 | if (row.fieldValueRange && !isSingleInput(row.fieldType)) { |
| 184 | const arr = row.fieldValueRange.split('#') | 185 | const arr = row.fieldValueRange.split('#') |
| ... | @@ -191,6 +192,7 @@ const editRow = (row) => { | ... | @@ -191,6 +192,7 @@ const editRow = (row) => { |
| 191 | 192 | ||
| 192 | // 保存数据 | 193 | // 保存数据 |
| 193 | const saveRow = (row) => { | 194 | const saveRow = (row) => { |
| 195 | console.log('保存:', row); | ||
| 194 | if (row.lengthSymbol === 'between') { | 196 | if (row.lengthSymbol === 'between') { |
| 195 | // 校验不能为空,其中一个为空则提示 | 197 | // 校验不能为空,其中一个为空则提示 |
| 196 | if (!row.numberRangeStart || !row.numberRangeStart) { | 198 | if (!row.numberRangeStart || !row.numberRangeStart) { |
| ... | @@ -205,6 +207,7 @@ const saveRow = (row) => { | ... | @@ -205,6 +207,7 @@ const saveRow = (row) => { |
| 205 | proxy.$ElMessage.error('请输入完整的长度范围'); | 207 | proxy.$ElMessage.error('请输入完整的长度范围'); |
| 206 | return | 208 | return |
| 207 | } | 209 | } |
| 210 | console.log(row.lengthSymbol + '#' + row.numberRangeStart + '#' + row.numberRangeEnd) | ||
| 208 | row.fieldLengthCondition = row.lengthSymbol + '#' + row.numberRangeStart + '#' + row.numberRangeEnd | 211 | row.fieldLengthCondition = row.lengthSymbol + '#' + row.numberRangeStart + '#' + row.numberRangeEnd |
| 209 | } else { | 212 | } else { |
| 210 | if (!row.lengthValue && row.lengthSymbol) { | 213 | if (!row.lengthValue && row.lengthSymbol) { |
| ... | @@ -215,15 +218,16 @@ const saveRow = (row) => { | ... | @@ -215,15 +218,16 @@ const saveRow = (row) => { |
| 215 | proxy.$message.error('请输入完整的长度范围'); | 218 | proxy.$message.error('请输入完整的长度范围'); |
| 216 | return; | 219 | return; |
| 217 | } | 220 | } |
| 221 | if (!row.lengthSymbol && !row.lengthValue) { | ||
| 222 | row.fieldLengthCondition = '' | ||
| 223 | } | ||
| 224 | if (row.lengthSymbol && row.lengthValue) { | ||
| 225 | console.log('row.lengthSymbol', row.lengthSymbol + '#' + row.lengthValue) | ||
| 226 | row.fieldLengthCondition = row.lengthSymbol + '#' + row.lengthValue | ||
| 227 | } | ||
| 218 | } | 228 | } |
| 219 | 229 | ||
| 220 | if (!row.lengthSymbol && !row.lengthValue) { | 230 | |
| 221 | row.fieldLengthCondition = '' | ||
| 222 | } | ||
| 223 | if (row.lengthSymbol && row.lengthValue) { | ||
| 224 | console.log('row.lengthSymbol', row.lengthSymbol + '#' + row.lengthValue) | ||
| 225 | row.fieldLengthCondition = row.lengthSymbol + '#' + row.lengthValue | ||
| 226 | } | ||
| 227 | // 字段范围 双文本情况 | 231 | // 字段范围 双文本情况 |
| 228 | 232 | ||
| 229 | if (!isSingleInput(row.fieldType)) { | 233 | if (!isSingleInput(row.fieldType)) { |
| ... | @@ -232,76 +236,6 @@ const saveRow = (row) => { | ... | @@ -232,76 +236,6 @@ const saveRow = (row) => { |
| 232 | } | 236 | } |
| 233 | row.isEdit = false | 237 | row.isEdit = false |
| 234 | } | 238 | } |
| 235 | const data = [ | ||
| 236 | { | ||
| 237 | value: '1', | ||
| 238 | label: 'Level one 1', | ||
| 239 | children: [ | ||
| 240 | { | ||
| 241 | value: '1-1', | ||
| 242 | label: 'Level two 1-1', | ||
| 243 | children: [ | ||
| 244 | { | ||
| 245 | value: '1-1-1', | ||
| 246 | label: 'Level three 1-1-1', | ||
| 247 | }, | ||
| 248 | ], | ||
| 249 | }, | ||
| 250 | ], | ||
| 251 | }, | ||
| 252 | { | ||
| 253 | value: '2', | ||
| 254 | label: 'Level one 2', | ||
| 255 | children: [ | ||
| 256 | { | ||
| 257 | value: '2-1', | ||
| 258 | label: 'Level two 2-1', | ||
| 259 | children: [ | ||
| 260 | { | ||
| 261 | value: '2-1-1', | ||
| 262 | label: 'Level three 2-1-1', | ||
| 263 | }, | ||
| 264 | ], | ||
| 265 | }, | ||
| 266 | { | ||
| 267 | value: '2-2', | ||
| 268 | label: 'Level two 2-2', | ||
| 269 | children: [ | ||
| 270 | { | ||
| 271 | value: '2-2-1', | ||
| 272 | label: 'Level three 2-2-1', | ||
| 273 | }, | ||
| 274 | ], | ||
| 275 | }, | ||
| 276 | ], | ||
| 277 | }, | ||
| 278 | { | ||
| 279 | value: '3', | ||
| 280 | label: 'Level one 3', | ||
| 281 | children: [ | ||
| 282 | { | ||
| 283 | value: '3-1', | ||
| 284 | label: 'Level two 3-1', | ||
| 285 | children: [ | ||
| 286 | { | ||
| 287 | value: '3-1-1', | ||
| 288 | label: 'Level three 3-1-1', | ||
| 289 | }, | ||
| 290 | ], | ||
| 291 | }, | ||
| 292 | { | ||
| 293 | value: '3-2', | ||
| 294 | label: 'Level two 3-2', | ||
| 295 | children: [ | ||
| 296 | { | ||
| 297 | value: '3-2-1', | ||
| 298 | label: 'Level three 3-2-1', | ||
| 299 | }, | ||
| 300 | ], | ||
| 301 | }, | ||
| 302 | ], | ||
| 303 | }, | ||
| 304 | ] | ||
| 305 | 239 | ||
| 306 | const loading = ref(false) | 240 | const loading = ref(false) |
| 307 | const saveData = async () => { | 241 | const saveData = async () => { |
| ... | @@ -357,18 +291,21 @@ const saveData = async () => { | ... | @@ -357,18 +291,21 @@ const saveData = async () => { |
| 357 | if (allFieldsEmpty) { | 291 | if (allFieldsEmpty) { |
| 358 | inParams = []; | 292 | inParams = []; |
| 359 | } | 293 | } |
| 360 | 294 | try { | |
| 361 | const res: any = await saveBizRuleConfig(inParams) | 295 | const res: any = await saveBizRuleConfig(inParams) |
| 362 | if (res.code === proxy.$passCode) { | 296 | if (res.code === proxy.$passCode) { |
| 363 | loading.value = false | 297 | loading.value = false |
| 364 | proxy.$message.success('修改配置规则成功!') | 298 | proxy.$message.success('修改配置规则成功!') |
| 365 | userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); | 299 | userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); |
| 366 | router.push({ | 300 | router.push({ |
| 367 | name: 'classifyGradeCatalogue' | 301 | name: 'classifyGradeCatalogue' |
| 368 | }); | 302 | }); |
| 369 | } else { | 303 | } else { |
| 304 | loading.value = false | ||
| 305 | proxy.$message.error(res.msg) | ||
| 306 | } | ||
| 307 | } catch (error) { | ||
| 370 | loading.value = false | 308 | loading.value = false |
| 371 | proxy.$message.error(res.msg) | ||
| 372 | } | 309 | } |
| 373 | } | 310 | } |
| 374 | 311 | ||
| ... | @@ -401,19 +338,25 @@ const isSingleInput = (fieldType: string) => { | ... | @@ -401,19 +338,25 @@ const isSingleInput = (fieldType: string) => { |
| 401 | return singleInputTypes.includes(fieldType) || !fieldType; // 如果fieldType为空,默认为单文本框 | 338 | return singleInputTypes.includes(fieldType) || !fieldType; // 如果fieldType为空,默认为单文本框 |
| 402 | }; | 339 | }; |
| 403 | 340 | ||
| 404 | // 验证是否为大于0的整数 | ||
| 405 | const validatePositiveInteger = (row: any, field: string) => { | 341 | const validatePositiveInteger = (row: any, field: string) => { |
| 406 | const value = row[field]; | 342 | let value = row[field]; |
| 407 | 343 | ||
| 408 | // 将输入值转为整数并检查是否大于0 | 344 | // 如果输入值为0,则将其设置为1 |
| 409 | if (value && !/^\d+$/.test(value)) { | 345 | if (value === '0') { |
| 410 | // 如果不是整数或是负数,将值清空或者给出提示 | 346 | row[field] = '1'; |
| 347 | return; | ||
| 348 | } | ||
| 349 | |||
| 350 | // 判断输入是否符合正整数且在1到9999之间 | ||
| 351 | if (value && !/^\d{1,4}$/.test(value)) { | ||
| 352 | // 如果不是1到4位的正整数,清空输入值 | ||
| 411 | row[field] = ''; | 353 | row[field] = ''; |
| 412 | } else if (value && parseInt(value) <= 0) { | 354 | } else if (value && (parseInt(value) < 1 || parseInt(value) > 9999)) { |
| 413 | // 如果小于或等于0,也清空值 | 355 | // 如果数字小于1或大于9999,清空输入值 |
| 414 | row[field] = ''; | 356 | row[field] = ''; |
| 415 | } | 357 | } |
| 416 | }; | 358 | }; |
| 359 | |||
| 417 | function parseFieldLengthCondition(condition) { | 360 | function parseFieldLengthCondition(condition) { |
| 418 | // 如果 condition 为 null 或 undefined,直接返回默认值 | 361 | // 如果 condition 为 null 或 undefined,直接返回默认值 |
| 419 | if (!condition) { | 362 | if (!condition) { |
| ... | @@ -421,7 +364,7 @@ function parseFieldLengthCondition(condition) { | ... | @@ -421,7 +364,7 @@ function parseFieldLengthCondition(condition) { |
| 421 | } | 364 | } |
| 422 | if (condition.includes('between')) { | 365 | if (condition.includes('between')) { |
| 423 | const parts = condition.split('#').filter(Boolean); // 按 '#' 分割并去掉空值 | 366 | const parts = condition.split('#').filter(Boolean); // 按 '#' 分割并去掉空值 |
| 424 | return `${parts[1]}-${parts[2]}`; // 显示为 "10-20" | 367 | return `介于${parts[1]}-${parts[2]}`; // 显示为 "10-20" |
| 425 | } | 368 | } |
| 426 | let symbol = ''; | 369 | let symbol = ''; |
| 427 | let value = ''; | 370 | let value = ''; |
| ... | @@ -513,7 +456,7 @@ function parseFieldLengthCondition(condition) { | ... | @@ -513,7 +456,7 @@ function parseFieldLengthCondition(condition) { |
| 513 | </template> | 456 | </template> |
| 514 | </el-table-column> | 457 | </el-table-column> |
| 515 | <!-- 字段类型fieldType (不可编辑) --> | 458 | <!-- 字段类型fieldType (不可编辑) --> |
| 516 | <el-table-column prop="fieldType" label="字段类型" width="120" align="center"> | 459 | <el-table-column prop="fieldType" label="字段类型" width="120" align="center" show-overflow-tooltip> |
| 517 | <template #default="scope"> | 460 | <template #default="scope"> |
| 518 | {{ | 461 | {{ |
| 519 | 462 | ||
| ... | @@ -524,14 +467,14 @@ function parseFieldLengthCondition(condition) { | ... | @@ -524,14 +467,14 @@ function parseFieldLengthCondition(condition) { |
| 524 | </el-table-column> | 467 | </el-table-column> |
| 525 | 468 | ||
| 526 | <!-- 长度列 fieldLengthCondition: '>#10',--> | 469 | <!-- 长度列 fieldLengthCondition: '>#10',--> |
| 527 | <el-table-column prop="fieldLengthCondition" label="长度" width="340" align="center"> | 470 | <el-table-column prop="fieldLengthCondition" label="长度" width="270" align="left" show-overflow-tooltip> |
| 528 | <template #default="scope"> | 471 | <template #default="scope"> |
| 529 | <span v-if="!scope.row.isEdit"> | 472 | <span v-if="!scope.row.isEdit"> |
| 530 | {{ parseFieldLengthCondition(scope.row.fieldLengthCondition) || '--' }} | 473 | {{ parseFieldLengthCondition(scope.row.fieldLengthCondition) || '--' }} |
| 531 | </span> | 474 | </span> |
| 532 | <div v-else> | 475 | <div v-else> |
| 533 | <div style="display: flex; align-items: center;"> | 476 | <div style="display: flex; align-items: center;"> |
| 534 | <el-select v-model="scope.row.lengthSymbol" placeholder="请选择" style="width: 50%;margin-right: 8px;" | 477 | <el-select v-model="scope.row.lengthSymbol" placeholder="请选择" style="width: 70%;margin-right: 8px;" |
| 535 | clearable> | 478 | clearable> |
| 536 | <el-option label="大于" value=">"></el-option> | 479 | <el-option label="大于" value=">"></el-option> |
| 537 | <el-option label="等于" value="="></el-option> | 480 | <el-option label="等于" value="="></el-option> |
| ... | @@ -545,15 +488,15 @@ function parseFieldLengthCondition(condition) { | ... | @@ -545,15 +488,15 @@ function parseFieldLengthCondition(condition) { |
| 545 | <!-- 当选择"介于"时,显示两个输入框 --> | 488 | <!-- 当选择"介于"时,显示两个输入框 --> |
| 546 | <div v-if="scope.row.lengthSymbol === 'between'" style="display: flex; gap: 5px; align-items: center;"> | 489 | <div v-if="scope.row.lengthSymbol === 'between'" style="display: flex; gap: 5px; align-items: center;"> |
| 547 | <el-input v-model="scope.row.numberRangeStart" placeholder="请输入" style="width: 45%;" type="number" | 490 | <el-input v-model="scope.row.numberRangeStart" placeholder="请输入" style="width: 45%;" type="number" |
| 548 | clearable @input="validatePositiveInteger(scope.row, 'rangeStart')" /> | 491 | clearable @input="validatePositiveInteger(scope.row, 'numberRangeStart')" /> |
| 549 | <span>-</span> | 492 | <span>-</span> |
| 550 | <el-input v-model="scope.row.numberRangeEnd" placeholder="请输入" style="width: 45%;" type="number" | 493 | <el-input v-model="scope.row.numberRangeEnd" placeholder="请输入" style="width: 45%;" type="number" |
| 551 | clearable @input="validatePositiveInteger(scope.row, 'rangeEnd')" /> | 494 | clearable @input="validatePositiveInteger(scope.row, 'numberRangeEnd')" /> |
| 552 | </div> | 495 | </div> |
| 553 | 496 | ||
| 554 | <!-- 其他符号时显示一个输入框 --> | 497 | <!-- 其他符号时显示一个输入框 --> |
| 555 | <div v-else> | 498 | <div v-else> |
| 556 | <el-input v-model="scope.row.lengthValue" placeholder="请输入" style="width: 90%;" clearable | 499 | <el-input v-model="scope.row.lengthValue" placeholder="请输入" style="width: 70%;" clearable |
| 557 | @input="validatePositiveInteger(scope.row, 'lengthValue')" type="number" /> | 500 | @input="validatePositiveInteger(scope.row, 'lengthValue')" type="number" /> |
| 558 | </div> | 501 | </div> |
| 559 | </div> | 502 | </div> |
| ... | @@ -561,18 +504,18 @@ function parseFieldLengthCondition(condition) { | ... | @@ -561,18 +504,18 @@ function parseFieldLengthCondition(condition) { |
| 561 | </template> | 504 | </template> |
| 562 | </el-table-column> | 505 | </el-table-column> |
| 563 | 506 | ||
| 564 | <el-table-column prop="fieldPrecision" label="精度" width="120" align="center"> | 507 | <el-table-column prop="fieldPrecision" label="精度" width="120" align="center" show-overflow-tooltip> |
| 565 | <template #default="scope"> | 508 | <template #default="scope"> |
| 566 | <!-- 判断是否是浮点型,并且当前行是否可编辑 --> | 509 | <!-- 判断是否是浮点型,并且当前行是否可编辑 --> |
| 567 | <span v-if="!scope.row.isEdit || !editableFields.fieldPrecision || scope.row.fieldType !== 'float'"> | 510 | <span v-if="!scope.row.isEdit || !editableFields.fieldPrecision || scope.row.fieldType !== 'float'"> |
| 568 | {{ scope.row.fieldPrecision ? scope.row.fieldPrecision : '--' }} | 511 | {{ scope.row.fieldPrecision ? scope.row.fieldPrecision : '--' }} |
| 569 | </span> | 512 | </span> |
| 570 | <el-input v-else v-model="scope.row.fieldPrecision" placeholder="请输入精度" clearable /> | 513 | <el-input v-else v-model="scope.row.fieldPrecision" placeholder="请输入精度" clearable maxlength="2" /> |
| 571 | </template> | 514 | </template> |
| 572 | </el-table-column> | 515 | </el-table-column> |
| 573 | 516 | ||
| 574 | <!-- 关联字典(可编辑)el-tree-select 形式下拉形式 --> | 517 | <!-- 关联字典(可编辑)el-tree-select 形式下拉形式 --> |
| 575 | <el-table-column prop="dictionaryGuid" label="关联字典" width="150" align="center"> | 518 | <el-table-column prop="dictionaryGuid" label="关联字典" width="150" align="left" show-overflow-tooltip> |
| 576 | <template #default="scope"> | 519 | <template #default="scope"> |
| 577 | <span v-if="!scope.row.isEdit">{{ scope.row.dictionaryGuid | 520 | <span v-if="!scope.row.isEdit">{{ scope.row.dictionaryGuid |
| 578 | ? dictionaryList.find((item: any) => item.guid === scope.row.dictionaryGuid)?.chName : '--' }}</span> | 521 | ? dictionaryList.find((item: any) => item.guid === scope.row.dictionaryGuid)?.chName : '--' }}</span> |
| ... | @@ -584,7 +527,7 @@ function parseFieldLengthCondition(condition) { | ... | @@ -584,7 +527,7 @@ function parseFieldLengthCondition(condition) { |
| 584 | </el-table-column> | 527 | </el-table-column> |
| 585 | 528 | ||
| 586 | <!-- 数据是否唯一(可编辑) --> | 529 | <!-- 数据是否唯一(可编辑) --> |
| 587 | <el-table-column prop="isUnique" label="数据是否唯一" width="150" align="center"> | 530 | <el-table-column prop="isUnique" label="数据是否唯一" width="150" align="left" show-overflow-tooltip> |
| 588 | <template #default="scope"> | 531 | <template #default="scope"> |
| 589 | <span v-if="!scope.row.isEdit || !editableFields.isUnique">{{ scope.row.isUnique ? (scope.row.isUnique === | 532 | <span v-if="!scope.row.isEdit || !editableFields.isUnique">{{ scope.row.isUnique ? (scope.row.isUnique === |
| 590 | 'Y' ? '是' : '否') : '--' | 533 | 'Y' ? '是' : '否') : '--' |
| ... | @@ -596,7 +539,7 @@ function parseFieldLengthCondition(condition) { | ... | @@ -596,7 +539,7 @@ function parseFieldLengthCondition(condition) { |
| 596 | </template> | 539 | </template> |
| 597 | </el-table-column> | 540 | </el-table-column> |
| 598 | <!-- 是否必填(可编辑) --> | 541 | <!-- 是否必填(可编辑) --> |
| 599 | <el-table-column prop="notNull" label="是否必填" width="120" align="center"> | 542 | <el-table-column prop="notNull" label="是否必填" width="120" align="left" show-overflow-tooltip> |
| 600 | <template #default="scope"> | 543 | <template #default="scope"> |
| 601 | <span v-if="!scope.row.isEdit">{{ scope.row.notNull ? (scope.row.notNull === 'Y' ? '是' : '否') : '--' | 544 | <span v-if="!scope.row.isEdit">{{ scope.row.notNull ? (scope.row.notNull === 'Y' ? '是' : '否') : '--' |
| 602 | }}</span> | 545 | }}</span> |
| ... | @@ -608,7 +551,7 @@ function parseFieldLengthCondition(condition) { | ... | @@ -608,7 +551,7 @@ function parseFieldLengthCondition(condition) { |
| 608 | </el-table-column> | 551 | </el-table-column> |
| 609 | 552 | ||
| 610 | <!-- 字段取值范围 fieldValueRange(可编辑)--> | 553 | <!-- 字段取值范围 fieldValueRange(可编辑)--> |
| 611 | <el-table-column prop="fieldValueRange" label="字段取值范围" width="260" align="center"> | 554 | <el-table-column prop="fieldValueRange" label="字段取值范围" width="260" align="left" show-overflow-tooltip> |
| 612 | <template #default="scope"> | 555 | <template #default="scope"> |
| 613 | <!-- 非编辑模式,展示取值范围 --> | 556 | <!-- 非编辑模式,展示取值范围 --> |
| 614 | <span v-if="!scope.row.isEdit"> | 557 | <span v-if="!scope.row.isEdit"> |
| ... | @@ -620,20 +563,22 @@ function parseFieldLengthCondition(condition) { | ... | @@ -620,20 +563,22 @@ function parseFieldLengthCondition(condition) { |
| 620 | <!-- 判断字段类型并渲染对应的输入框 --> | 563 | <!-- 判断字段类型并渲染对应的输入框 --> |
| 621 | <template v-if="isSingleInput(scope.row.fieldType)"> | 564 | <template v-if="isSingleInput(scope.row.fieldType)"> |
| 622 | <!-- 单文本框:字符型、大字段型、单字符型、JSON类型、布尔类型 --> | 565 | <!-- 单文本框:字符型、大字段型、单字符型、JSON类型、布尔类型 --> |
| 623 | <el-input v-model="scope.row.fieldValueRange" placeholder="请输入" clearable /> | 566 | <el-input v-model="scope.row.fieldValueRange" placeholder="请输入" clearable maxlength="500" /> |
| 624 | </template> | 567 | </template> |
| 625 | <template v-else> | 568 | <template v-else> |
| 626 | <!-- 双文本框:整型、日期型、日期时间型、时间戳、浮点型、一字节整型、时间类型 --> | 569 | <!-- 双文本框:整型、日期型、日期时间型、时间戳、浮点型、一字节整型、时间类型 --> |
| 627 | <el-input v-model="scope.row.startValue" placeholder="请输入开始值" style="width: 45%;" clearable /> | 570 | <el-input v-model="scope.row.startValue" placeholder="请输入开始值" style="width: 45%;" clearable |
| 571 | maxlength="200" /> | ||
| 628 | <span>-</span> | 572 | <span>-</span> |
| 629 | <el-input v-model="scope.row.endValue" placeholder="请输入结束值" style="width: 45%;" clearable /> | 573 | <el-input v-model="scope.row.endValue" placeholder="请输入结束值" style="width: 45%;" clearable |
| 574 | maxlength="200" /> | ||
| 630 | </template> | 575 | </template> |
| 631 | </div> | 576 | </div> |
| 632 | </template> | 577 | </template> |
| 633 | </el-table-column> | 578 | </el-table-column> |
| 634 | 579 | ||
| 635 | <!-- 操作列 --> | 580 | <!-- 操作列 --> |
| 636 | <el-table-column label="操作" width="120" align="center" fixed="right"> | 581 | <el-table-column label="操作" width="120" align="center" fixed="right" show-overflow-tooltip> |
| 637 | <template #default="scope"> | 582 | <template #default="scope"> |
| 638 | <span class="text_btn" v-if="!scope.row.isEdit" @click="editRow(scope.row)">编辑</span> | 583 | <span class="text_btn" v-if="!scope.row.isEdit" @click="editRow(scope.row)">编辑</span> |
| 639 | <span v-else> | 584 | <span v-else> | ... | ... |
| ... | @@ -1008,7 +1008,7 @@ onActivated(() => { | ... | @@ -1008,7 +1008,7 @@ onActivated(() => { |
| 1008 | <el-button @click="batchDelete">批量删除</el-button> | 1008 | <el-button @click="batchDelete">批量删除</el-button> |
| 1009 | <el-button @click="createNewSql">生成建表语句</el-button> | 1009 | <el-button @click="createNewSql">生成建表语句</el-button> |
| 1010 | </div> | 1010 | </div> |
| 1011 | <div class="bottom_table"> | 1011 | <div class="bottom_table" v-if="route.query.editOpt === '1'"> |
| 1012 | <el-table :data="tableDataDetailInfo" v-loading="tableFieldsLoading" :highlight-current-row="true" stripe | 1012 | <el-table :data="tableDataDetailInfo" v-loading="tableFieldsLoading" :highlight-current-row="true" stripe |
| 1013 | border height="100%" row-key="guid" @selection-change="selectionFieldsChange" tooltip-effect="light" :style="{ | 1013 | border height="100%" row-key="guid" @selection-change="selectionFieldsChange" tooltip-effect="light" :style="{ |
| 1014 | width: '100%', | 1014 | width: '100%', |
| ... | @@ -1209,6 +1209,199 @@ onActivated(() => { | ... | @@ -1209,6 +1209,199 @@ onActivated(() => { |
| 1209 | </el-table-column> | 1209 | </el-table-column> |
| 1210 | </el-table> | 1210 | </el-table> |
| 1211 | </div> | 1211 | </div> |
| 1212 | <div class="bottom_table" v-else> | ||
| 1213 | <el-table :data="tableDataDetailInfo" v-loading="tableFieldsLoading" :highlight-current-row="true" stripe | ||
| 1214 | border height="100%" row-key="guid" @selection-change="selectionFieldsChange" tooltip-effect="light" :style="{ | ||
| 1215 | width: '100%', | ||
| 1216 | 'max-height': 'calc(100% - 16px)', | ||
| 1217 | display: 'inline-block', | ||
| 1218 | }"> | ||
| 1219 | <el-table-column type="selection" :width="32" align="center" /> | ||
| 1220 | <!-- 排序列(不可编辑) --> | ||
| 1221 | <el-table-column type="index" label="排序" width="80" align="center" /> | ||
| 1222 | <!-- 字段中文名(可编辑)fieldChName --> | ||
| 1223 | <el-table-column prop="fieldChName" label="字段中文名" width="150" show-overflow-tooltip> | ||
| 1224 | <!-- 可以编辑 --> | ||
| 1225 | <template #default="scope"> | ||
| 1226 | <span v-if="!scope.row.isEdit || !editableFields.fieldChName">{{ | ||
| 1227 | scope.row.fieldChName ? | ||
| 1228 | scope.row.fieldChName | ||
| 1229 | : '--' }}</span> | ||
| 1230 | <el-input v-else v-model="scope.row.fieldChName" placeholder="请输入" /> | ||
| 1231 | </template> | ||
| 1232 | |||
| 1233 | </el-table-column> | ||
| 1234 | <!-- 字段英文名(可编辑) --> | ||
| 1235 | <el-table-column prop="fieldName" label="字段英文名" width="150" show-overflow-tooltip> | ||
| 1236 | <template #default="scope"> | ||
| 1237 | <span v-if="!scope.row.isEdit || !editableFields.fieldName">{{ | ||
| 1238 | scope.row.fieldName ? | ||
| 1239 | scope.row.fieldName | ||
| 1240 | : '--' }}</span> | ||
| 1241 | <el-input v-else v-model="scope.row.fieldName" placeholder="必填" | ||
| 1242 | @input="inputLengthKeyUp(/[^a-zA-Z0-9_]/g, scope, 'fieldName')" /> | ||
| 1243 | </template> | ||
| 1244 | </el-table-column> | ||
| 1245 | <!-- 源数据库 --> | ||
| 1246 | <el-table-column prop="sourceDatabase" label="源数据库" width="150" show-overflow-tooltip | ||
| 1247 | v-if="route.query.editOpt != '1'"> | ||
| 1248 | <template #default="scope"> | ||
| 1249 | {{ scope.row.sourceDatabase ? scope.row.sourceDatabase : '--' }} | ||
| 1250 | </template> | ||
| 1251 | </el-table-column> | ||
| 1252 | <!-- 源数据表 --> | ||
| 1253 | <el-table-column prop="sourceTableName" label="源数据表" width="150" show-overflow-tooltip | ||
| 1254 | v-if="route.query.editOpt != '1'"> | ||
| 1255 | <template #default="scope"> | ||
| 1256 | {{ scope.row.sourceTableName ? scope.row.sourceTableName : '--' }} | ||
| 1257 | </template> | ||
| 1258 | </el-table-column> | ||
| 1259 | <!-- 源字段中文 --> | ||
| 1260 | <el-table-column prop="sourceFieldName" label="源字段中文" width="150" show-overflow-tooltip | ||
| 1261 | v-if="route.query.editOpt != '1'"> | ||
| 1262 | <template #default="scope"> | ||
| 1263 | {{ scope.row.sourceFieldName ? scope.row.sourceFieldName : '--' }} | ||
| 1264 | </template> | ||
| 1265 | </el-table-column> | ||
| 1266 | <!-- 源字段英文 --> | ||
| 1267 | <el-table-column prop="sourceFieldChName" label="源字段英文" width="120" show-overflow-tooltip | ||
| 1268 | v-if="route.query.editOpt != '1'"> | ||
| 1269 | <template #default="scope"> | ||
| 1270 | <!-- {{ scope.row.sourceFieldName ? scope.row.sourceFieldName : '--' }} --> | ||
| 1271 | |||
| 1272 | <span>{{ scope.row.sourceFieldChName ? | ||
| 1273 | scope.row.sourceFieldChName : '--' }}</span> | ||
| 1274 | </template> | ||
| 1275 | </el-table-column> | ||
| 1276 | <!-- 源端字段 fieldType fieldTypeProps--> | ||
| 1277 | <el-table-column prop="fieldType" label="字段类型" width="120"> | ||
| 1278 | <template #default="scope"> | ||
| 1279 | <div v-if="scope.row.isEdit"> | ||
| 1280 | <el-select v-model="scope.row.fieldType" placeholder="选择类型" clearable filterable | ||
| 1281 | :props="fieldTypeProps"> | ||
| 1282 | <el-option v-for="(item, index) in fieldData" :key="index" :label="item.label" | ||
| 1283 | :value="item.value"></el-option> | ||
| 1284 | </el-select> | ||
| 1285 | </div> | ||
| 1286 | <div v-else> | ||
| 1287 | {{ fieldData ? fieldData.find(item => item.value === scope.row.fieldType)?.label : '--' }} | ||
| 1288 | </div> | ||
| 1289 | </template> | ||
| 1290 | </el-table-column> | ||
| 1291 | |||
| 1292 | <!-- 长度(可编辑) --> | ||
| 1293 | <el-table-column prop="fieldLength" label="长度" width="100" align="left"> | ||
| 1294 | <template #default="scope"> | ||
| 1295 | <!-- 非编辑状态 --> | ||
| 1296 | <span v-if="!scope.row.isEdit"> | ||
| 1297 | {{ ['varchar', 'decimal', 'char'].includes(scope.row.fieldType) ? scope.row.fieldLength || '--' : '--' | ||
| 1298 | }} | ||
| 1299 | </span> | ||
| 1300 | <!-- 编辑状态 --> | ||
| 1301 | <div v-else> | ||
| 1302 | <el-input v-if="['varchar', 'decimal', 'char'].includes(scope.row.fieldType)" | ||
| 1303 | v-model="scope.row.fieldLength" placeholder="请输入长度" | ||
| 1304 | @input="inputLengthKeyUp(/\D/g, scope, 'fieldLength', 2000, 1)" /> | ||
| 1305 | <span v-else>--</span> | ||
| 1306 | </div> | ||
| 1307 | </template> | ||
| 1308 | </el-table-column> | ||
| 1309 | |||
| 1310 | <!-- 精度(可编辑) --> | ||
| 1311 | <el-table-column prop="fieldPrecision" label="精度" width="100" align="left"> | ||
| 1312 | <template #default="scope"> | ||
| 1313 | <!-- 非编辑状态 --> | ||
| 1314 | <span v-if="!scope.row.isEdit"> | ||
| 1315 | {{ scope.row.fieldType === 'decimal' ? scope.row.fieldPrecision || '--' : '--' }} | ||
| 1316 | </span> | ||
| 1317 | <!-- 编辑状态 --> | ||
| 1318 | <div v-else> | ||
| 1319 | <el-input v-if="scope.row.fieldType === 'decimal'" v-model="scope.row.fieldPrecision" | ||
| 1320 | placeholder="请输入精度" @input="inputLengthKeyUp(/\D/g, scope, 'fieldPrecision', 30, 1)" /> | ||
| 1321 | <span v-else>--</span> | ||
| 1322 | </div> | ||
| 1323 | </template> | ||
| 1324 | </el-table-column> | ||
| 1325 | <!-- 关联字典(可编辑)el-tree-select 形式下拉形式 --> | ||
| 1326 | <el-table-column prop="dictionaryGuid" label="关联字典" width="120" align="left"> | ||
| 1327 | <template #default="scope"> | ||
| 1328 | <span v-if="!scope.row.isEdit">{{ scope.row.dictionaryGuid | ||
| 1329 | ? dictionaryList.find((item: any) => item.guid === scope.row.dictionaryGuid)?.chName : '--' }}</span> | ||
| 1330 | <el-select v-else v-model="scope.row.dictionaryGuid" placeholder="请选择"> | ||
| 1331 | <el-option v-for="item in dictionaryList" :key="item?.guid" :label="item.chName" :value="item.guid" /> | ||
| 1332 | </el-select> | ||
| 1333 | </template> | ||
| 1334 | |||
| 1335 | </el-table-column> | ||
| 1336 | |||
| 1337 | <!-- 数据是否唯一(可编辑) --> | ||
| 1338 | <el-table-column prop="isPrimary" label="是否主键" width="100" align="left"> | ||
| 1339 | <template #default="scope"> | ||
| 1340 | <span v-if="!scope.row.isEdit || !editableFields.isPrimary">{{ | ||
| 1341 | scope.row.isPrimary || '--' }}</span> | ||
| 1342 | <el-select v-else v-model="scope.row.isPrimary" placeholder="请选择"> | ||
| 1343 | <el-option label="Y" value="Y" /> | ||
| 1344 | <el-option label="N" value="N" /> | ||
| 1345 | </el-select> | ||
| 1346 | </template> | ||
| 1347 | </el-table-column> | ||
| 1348 | <!-- 是否必填(可编辑) --> | ||
| 1349 | <el-table-column prop="notNull" label="是否必填" width="100" align="left"> | ||
| 1350 | <template #default="scope"> | ||
| 1351 | <span v-if="!scope.row.isEdit">{{ | ||
| 1352 | scope.row.notNull || '--' }}</span> | ||
| 1353 | <el-select v-else v-model="scope.row.notNull" placeholder="请选择"> | ||
| 1354 | <el-option label="Y" value="Y" /> | ||
| 1355 | <el-option label="N" value="N" /> | ||
| 1356 | </el-select> | ||
| 1357 | </template> | ||
| 1358 | </el-table-column> | ||
| 1359 | |||
| 1360 | <!-- 分类(不可编辑)classifyName --> | ||
| 1361 | |||
| 1362 | <el-table-column prop="classifyDetailNameRoutes" label="分类" width="150" show-overflow-tooltip> | ||
| 1363 | <template #default="scope"> | ||
| 1364 | <!-- 如果当前行是编辑状态,显示 tree-select --> | ||
| 1365 | <div v-if="scope.row.isEdit"> | ||
| 1366 | <el-tree-select v-model="scope.row.classifyDetailGuid" :data="treeSelectOptions" | ||
| 1367 | :props="treeSelectProps" placeholder="请选择分类" clearable filterable | ||
| 1368 | @change="(value) => handleClassifyChange(scope.row, value)" | ||
| 1369 | @node-click="(node, data) => handleNodeClick(scope.row, node, data)"> | ||
| 1370 | </el-tree-select> | ||
| 1371 | </div> | ||
| 1372 | <!-- 否则直接显示分类名称 --> | ||
| 1373 | <div v-else> | ||
| 1374 | {{ Array.isArray(scope.row?.classifyDetailNameRoutes) ? scope.row.classifyDetailNameRoutes.join('/') : | ||
| 1375 | '--' }} | ||
| 1376 | </div> | ||
| 1377 | </template> | ||
| 1378 | </el-table-column> | ||
| 1379 | <!-- 分级(不可编辑) --> | ||
| 1380 | <el-table-column prop="gradeDetailGuid" label="分级" width="100" align="left"> | ||
| 1381 | <template #default="scope"> | ||
| 1382 | <div v-if="scope.row.isEdit"> | ||
| 1383 | <el-select v-model="scope.row.gradeDetailGuid" placeholder="请选择分级" clearable filterable | ||
| 1384 | :props="gradeSelectProps" @change="handleGradeChange(scope.row)"> | ||
| 1385 | <el-option v-for="(item, index) in scope.row.gradeOptions || []" :key="index" :label="item.name" | ||
| 1386 | :value="item.guid"></el-option> | ||
| 1387 | </el-select> | ||
| 1388 | </div> | ||
| 1389 | <div v-else> | ||
| 1390 | {{ scope.row.gradeDetailName || '--' }} | ||
| 1391 | </div> | ||
| 1392 | </template> | ||
| 1393 | </el-table-column> | ||
| 1394 | <!-- 操作列 --> | ||
| 1395 | <el-table-column label="操作" width="100" align="center" fixed="right"> | ||
| 1396 | <template #default="scope"> | ||
| 1397 | <span class="text_btn" v-if="!scope.row.isEdit" @click="editRow(scope.row)">编辑</span> | ||
| 1398 | <span class="text_btn" v-else @click="saveRow(scope.row)">保存</span> | ||
| 1399 | <el-divider direction="vertical" /> | ||
| 1400 | <span class="text_btn" @click="deleteRow(scope.$index)">删除</span> | ||
| 1401 | </template> | ||
| 1402 | </el-table-column> | ||
| 1403 | </el-table> | ||
| 1404 | </div> | ||
| 1212 | </div> | 1405 | </div> |
| 1213 | </div> | 1406 | </div> |
| 1214 | <div class="bottom_tool_wrap" v-show="!(route.query.editOpt && route.query.editOpt === '1')"> | 1407 | <div class="bottom_tool_wrap" v-show="!(route.query.editOpt && route.query.editOpt === '1')"> | ... | ... |
| ... | @@ -33,7 +33,7 @@ import { | ... | @@ -33,7 +33,7 @@ import { |
| 33 | getSubjectTableDetail, | 33 | getSubjectTableDetail, |
| 34 | checkSubjectTableData | 34 | checkSubjectTableData |
| 35 | } from "@/api/modules/dataCatalogService"; | 35 | } from "@/api/modules/dataCatalogService"; |
| 36 | import { getDictionaryAll, getFidldEnName, getGradeList, getNewDataTypeList, getTaskExeTreeList, saveDbDirTable } from "@/api/modules/dataInventory"; | 36 | import { getDictionaryAll, getFidldEnName, getGradeList, getNewDataTypeList, getTaskExeTreeList, saveDbDirTable, getFieldClassifyAndGrade } from "@/api/modules/dataInventory"; |
| 37 | import { useDefault } from "@/hooks/useDefault"; | 37 | import { useDefault } from "@/hooks/useDefault"; |
| 38 | import uploadExcelFile from "./components/uploadExcelFile.vue"; | 38 | import uploadExcelFile from "./components/uploadExcelFile.vue"; |
| 39 | import { add } from "lodash-es"; | 39 | import { add } from "lodash-es"; |
| ... | @@ -115,7 +115,7 @@ const uploadFileRef = ref(); | ... | @@ -115,7 +115,7 @@ const uploadFileRef = ref(); |
| 115 | 115 | ||
| 116 | const getSubjectField = () => { | 116 | const getSubjectField = () => { |
| 117 | tableFieldsLoading.value = true; | 117 | tableFieldsLoading.value = true; |
| 118 | getFidldEnName(fileTableFields.value.map(f => f.chName)).then((res: any) => { | 118 | getFidldEnName(fileTableFields.value.map(f => f.chName)).then(async (res: any) => { |
| 119 | tableFieldsLoading.value = false; | 119 | tableFieldsLoading.value = false; |
| 120 | if (res.code == proxy.$passCode) { | 120 | if (res.code == proxy.$passCode) { |
| 121 | tableCreateInfo.value.tableFields = res.data?.map((field, i) => { | 121 | tableCreateInfo.value.tableFields = res.data?.map((field, i) => { |
| ... | @@ -125,6 +125,55 @@ const getSubjectField = () => { | ... | @@ -125,6 +125,55 @@ const getSubjectField = () => { |
| 125 | !field.notNull && (field.notNull = 'N'); | 125 | !field.notNull && (field.notNull = 'N'); |
| 126 | return field; | 126 | return field; |
| 127 | }) || []; | 127 | }) || []; |
| 128 | console.log(tableCreateInfo.value.tableFields, '7897987'); | ||
| 129 | // 遍历 tableCreateInfo.value.tableFields,找到item.fieldName,组合成入参 | ||
| 130 | let tempFileNames: any = [] | ||
| 131 | tableCreateInfo.value.tableFields.forEach((item: any) => { | ||
| 132 | tempFileNames.push(item.fieldName); | ||
| 133 | }); | ||
| 134 | const classify: any = await getFieldClassifyAndGrade({ | ||
| 135 | fieldName: tempFileNames, | ||
| 136 | execGuid: execGuid.value, | ||
| 137 | type: 'C' | ||
| 138 | }) | ||
| 139 | const grade: any = await getFieldClassifyAndGrade({ | ||
| 140 | fieldName: tempFileNames, | ||
| 141 | execGuid: execGuid.value, | ||
| 142 | type: 'G' | ||
| 143 | }) | ||
| 144 | // 通过分类数据和分级数据赋值给 tableFields 的每一项 | ||
| 145 | tableCreateInfo.value.tableFields.forEach((item: any) => { | ||
| 146 | // 在分类数据中查找对应 fieldName 的项 | ||
| 147 | const classifyItem = classify.find((classify: any) => classify.fieldName === item.fieldName); | ||
| 148 | |||
| 149 | // 在分级数据中查找对应 fieldName 的项 | ||
| 150 | const gradeItem = grade.find((grade: any) => grade.fieldName === item.fieldName); | ||
| 151 | |||
| 152 | // 如果找到对应的分类数据,赋值给 tableFields 的相应项 | ||
| 153 | if (classifyItem) { | ||
| 154 | item.classifyDetailGuid = classifyItem.classifyDetailGuid || null; | ||
| 155 | item.classifyDetailName = classifyItem.classifyDetailName || null; | ||
| 156 | item.classifyDetailGuidRoutes = classifyItem.classifyDetailGuidRoutes || null; | ||
| 157 | item.classifyDetailNameRoutes = classifyItem.classifyDetailNameRoutes || null; | ||
| 158 | } | ||
| 159 | |||
| 160 | // 如果找到对应的分级数据,赋值给 tableFields 的相应项 | ||
| 161 | if (gradeItem) { | ||
| 162 | item.gradeDetailGuid = gradeItem.gradeDetailGuid || null; | ||
| 163 | item.gradeDetailName = gradeItem.gradeDetailName || null; | ||
| 164 | } | ||
| 165 | }); | ||
| 166 | |||
| 167 | } else { | ||
| 168 | ElMessage.error(res.msg); | ||
| 169 | } | ||
| 170 | }); | ||
| 171 | } | ||
| 172 | |||
| 173 | const getGradeClassifyInfo = (params) => { | ||
| 174 | getFieldClassifyAndGrade(params).then((res: any) => { | ||
| 175 | if (res.code === proxy.$passCode) { | ||
| 176 | |||
| 128 | } else { | 177 | } else { |
| 129 | ElMessage.error(res.msg); | 178 | ElMessage.error(res.msg); |
| 130 | } | 179 | } | ... | ... |
-
Please register or sign in to post a comment