提交新增的值域范围规则
Showing
8 changed files
with
394 additions
and
45 deletions
| ... | @@ -19,9 +19,9 @@ VITE_SERVE_BASE = / | ... | @@ -19,9 +19,9 @@ VITE_SERVE_BASE = / |
| 19 | # 流程设计访问地址 | 19 | # 流程设计访问地址 |
| 20 | VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn | 20 | VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn |
| 21 | # 数据标准、元数据、数据目录 接口地址 | 21 | # 数据标准、元数据、数据目录 接口地址 |
| 22 | VITE_APP_PLAN_BASEURL = ms-daop-zcgl-data-plan-service | 22 | VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service |
| 23 | #数据质量接口地址 | 23 | #数据质量接口地址 |
| 24 | VITE_APP_QUALITY_BASEURL = ms-daop-zcgl-data-quality-service | 24 | VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service |
| 25 | 25 | ||
| 26 | 26 | ||
| 27 | #门户接口 | 27 | #门户接口 | ... | ... |
| ... | @@ -18,9 +18,9 @@ VITE_SERVE_BASE = / | ... | @@ -18,9 +18,9 @@ VITE_SERVE_BASE = / |
| 18 | # 流程设计访问地址 | 18 | # 流程设计访问地址 |
| 19 | VITE_BPMN_URL = https://workflow.zgsjzc.com | 19 | VITE_BPMN_URL = https://workflow.zgsjzc.com |
| 20 | # 数据标准、元数据、数据目录 接口地址 | 20 | # 数据标准、元数据、数据目录 接口地址 |
| 21 | VITE_APP_PLAN_BASEURL = ms-daop-zcgl-data-plan-service | 21 | VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service |
| 22 | #数据质量接口地址 | 22 | #数据质量接口地址 |
| 23 | VITE_APP_QUALITY_BASEURL = ms-daop-zcgl-data-quality-service | 23 | VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service |
| 24 | 24 | ||
| 25 | #门户接口 | 25 | #门户接口 |
| 26 | VITE_API_PORTALURL = https://www.zgsjzc.com/portal | 26 | VITE_API_PORTALURL = https://www.zgsjzc.com/portal | ... | ... |
| ... | @@ -175,28 +175,23 @@ export const deleteImportData = (params) => request({ | ... | @@ -175,28 +175,23 @@ export const deleteImportData = (params) => request({ |
| 175 | }) | 175 | }) |
| 176 | // 数据导入-分页查询 | 176 | // 数据导入-分页查询 |
| 177 | export const getImportData = (params) => request({ | 177 | export const getImportData = (params) => request({ |
| 178 | url: `${import.meta.env.VITE_APP_ADD_FILE}/import-data/list`, | 178 | url: `${import.meta.env.VITE_APP_ADD_FILE}/import-data/page-list`, |
| 179 | method: 'post', | 179 | method: 'post', |
| 180 | data: params, | 180 | data: params, |
| 181 | }) | 181 | }) |
| 182 | 182 | ||
| 183 | // 导出数据字典模板 | 183 | // 导出采集任务分类模板。 |
| 184 | export const exportDictionary = (params) => request({ | 184 | export const exportCollectTask = (params) => request({ |
| 185 | url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/export/data-dictionary/schema`, | 185 | url: `${import.meta.env.VITE_APP_ADD_FILE}/import-config/export-more-sheet-template`, |
| 186 | method: 'post', | 186 | method: 'post', |
| 187 | data: params, | 187 | data: params, |
| 188 | responseType: 'blob' | 188 | responseType: 'blob' |
| 189 | }) | 189 | }) |
| 190 | 190 | ||
| 191 | /** 获取树形结构的标准集列表 */ | 191 | // 导出数据字典模板 |
| 192 | export const getStandardSetTree = () => request({ | 192 | export const exportDictionary = (params) => request({ |
| 193 | url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-standard-set/list-tree`, | 193 | url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/export/data-dictionary/schema`, |
| 194 | method: 'get' | ||
| 195 | }) | ||
| 196 | |||
| 197 | // 数据字典树形数据 | ||
| 198 | export const getDictionaryTree = (params) => request({ | ||
| 199 | url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/tree-list`, | ||
| 200 | method: 'post', | 194 | method: 'post', |
| 201 | params | 195 | data: params, |
| 196 | responseType: 'blob' | ||
| 202 | }) | 197 | }) |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -162,7 +162,7 @@ onBeforeMount(() => { | ... | @@ -162,7 +162,7 @@ onBeforeMount(() => { |
| 162 | }); | 162 | }); |
| 163 | 163 | ||
| 164 | const getDefaultLargeCategory = (ruleCode) => { | 164 | const getDefaultLargeCategory = (ruleCode) => { |
| 165 | if (ruleCode == 'repeate_data_check' || ruleCode == 'logic_check') { | 165 | if (ruleCode == 'repeate_data_check' || ruleCode == 'logic_check' || ruleCode == 'value_of_range') { |
| 166 | return '3'; //准确性 | 166 | return '3'; //准确性 |
| 167 | } else if (ruleCode == 'volatility_check' || ruleCode == 'rows_check') { | 167 | } else if (ruleCode == 'volatility_check' || ruleCode == 'rows_check') { |
| 168 | return '5'; | 168 | return '5'; |
| ... | @@ -176,7 +176,7 @@ const getDefaultLargeCategory = (ruleCode) => { | ... | @@ -176,7 +176,7 @@ const getDefaultLargeCategory = (ruleCode) => { |
| 176 | const getDefaultSmallCategory = (ruleCode) => { | 176 | const getDefaultSmallCategory = (ruleCode) => { |
| 177 | if (ruleCode == 'repeate_data_check') { | 177 | if (ruleCode == 'repeate_data_check') { |
| 178 | return '11'; //准确性 | 178 | return '11'; //准确性 |
| 179 | } else if (ruleCode == 'logic_check') { | 179 | } else if (ruleCode == 'logic_check' || ruleCode == 'value_of_range') { |
| 180 | return '9'; | 180 | return '9'; |
| 181 | } else if (ruleCode == 'volatility_check' || ruleCode == 'rows_check') { | 181 | } else if (ruleCode == 'volatility_check' || ruleCode == 'rows_check') { |
| 182 | return '17'; | 182 | return '17'; |
| ... | @@ -372,6 +372,17 @@ const panelList: any = ref([ | ... | @@ -372,6 +372,17 @@ const panelList: any = ref([ |
| 372 | block: true, | 372 | block: true, |
| 373 | visible: false | 373 | visible: false |
| 374 | }, { | 374 | }, { |
| 375 | label: '规则设置', | ||
| 376 | type: 'input-dom', | ||
| 377 | placeholder: '请设置,可多选', | ||
| 378 | field: 'ruleSettings-value-range', //12 | ||
| 379 | default: '',//描述型的字段 | ||
| 380 | defaultValue: {},// json,key为表, 实际的值域表格数据值数组 | ||
| 381 | readonly: true, | ||
| 382 | required: true, | ||
| 383 | block: true, | ||
| 384 | visible: false | ||
| 385 | }, { | ||
| 375 | label: '描述', | 386 | label: '描述', |
| 376 | type: 'textarea', | 387 | type: 'textarea', |
| 377 | placeholder: '请输入', | 388 | placeholder: '请输入', |
| ... | @@ -454,6 +465,9 @@ const formRules = ref({ | ... | @@ -454,6 +465,9 @@ const formRules = ref({ |
| 454 | 'ruleSettings-rows': [ | 465 | 'ruleSettings-rows': [ |
| 455 | { required: true, trigger: 'change', message: "请设置规则" } | 466 | { required: true, trigger: 'change', message: "请设置规则" } |
| 456 | ], | 467 | ], |
| 468 | 'ruleSettings-value-range': [ | ||
| 469 | { required: true, trigger: 'change', message: "请设置规则" } | ||
| 470 | ], | ||
| 457 | orangeThreshold: [ | 471 | orangeThreshold: [ |
| 458 | { | 472 | { |
| 459 | trigger: 'blur', validator: (rule: any, value: any, callback: any) => { | 473 | trigger: 'blur', validator: (rule: any, value: any, callback: any) => { |
| ... | @@ -651,6 +665,44 @@ const formBtnClick = (btn) => { | ... | @@ -651,6 +665,44 @@ const formBtnClick = (btn) => { |
| 651 | differenceRange: 0 | 665 | differenceRange: 0 |
| 652 | }]; | 666 | }]; |
| 653 | } | 667 | } |
| 668 | } else if (ruleType.value == 'value_of_range') { | ||
| 669 | valueRangeDialogVisible.value = true; | ||
| 670 | tableListInfo.value.data = props.toSubjectTables; | ||
| 671 | dialogSelectSubjectTable.value = props.toSubjectTables[0]; | ||
| 672 | let defaultValue = panelList.value[12].defaultValue; | ||
| 673 | valueRangeTableListData.value[dialogSelectSubjectTable.value.enName] = []; | ||
| 674 | if (props.toSubjectTables[0]?.guid) { | ||
| 675 | valueRangeTableListLoading.value[dialogSelectSubjectTable.value.enName] = true; | ||
| 676 | getSubjectFields(props.toSubjectTables[0]?.guid).then((res: any) => { | ||
| 677 | valueRangeTableListLoading.value[dialogSelectSubjectTable.value.enName] = false; | ||
| 678 | if (res.code == proxy.$passCode) { | ||
| 679 | let data = res.data || []; | ||
| 680 | valueRangeTableListData.value[dialogSelectSubjectTable.value.enName] = data; | ||
| 681 | let valueFields = defaultValue.ruleFields?.[dialogSelectSubjectTable.value.enName] || []; | ||
| 682 | if (valueFields.length) { | ||
| 683 | valueFields.forEach(field => { | ||
| 684 | let fIndex = data.findIndex(d => d.enName == field.enName); | ||
| 685 | if (fIndex > -1) { | ||
| 686 | let f = valueRangeTableListData.value[dialogSelectSubjectTable.value.enName][fIndex]; | ||
| 687 | if (field.dataRange) { | ||
| 688 | f.dataRange = field.dataRange; | ||
| 689 | } | ||
| 690 | if (field.startValue) { | ||
| 691 | if (f.dataType == 'date' || f.dataType == 'datetime') { | ||
| 692 | f.dateValueRange = [field.startValue, field.endValue]; | ||
| 693 | } else { | ||
| 694 | f.startValue = field.startValue; | ||
| 695 | f.endValue = field.endValue; | ||
| 696 | } | ||
| 697 | } | ||
| 698 | } | ||
| 699 | }); | ||
| 700 | } | ||
| 701 | } else { | ||
| 702 | ElMessage.error(res.msg); | ||
| 703 | } | ||
| 704 | }) | ||
| 705 | } | ||
| 654 | } | 706 | } |
| 655 | } | 707 | } |
| 656 | 708 | ||
| ... | @@ -762,6 +814,22 @@ const setPanelListValue = (item, isSelectChange = false, init = false, radioGrou | ... | @@ -762,6 +814,22 @@ const setPanelListValue = (item, isSelectChange = false, init = false, radioGrou |
| 762 | } else { | 814 | } else { |
| 763 | p.defaultValue = []; | 815 | p.defaultValue = []; |
| 764 | } | 816 | } |
| 817 | } else if (ruleCode == 'value_of_range' && p.field == 'ruleSettings-value-range') { | ||
| 818 | if (!init) { | ||
| 819 | p.default = val[field]; | ||
| 820 | return; | ||
| 821 | } | ||
| 822 | if (val.ruleField) { | ||
| 823 | p.default = val.ruleField?.map(f => f.enName)?.join(';'); | ||
| 824 | let ruleFields = {}; | ||
| 825 | ruleFields[val.subjectName] = val.ruleField || []; | ||
| 826 | p.defaultValue = { | ||
| 827 | ruleFields: ruleFields | ||
| 828 | } | ||
| 829 | } else { | ||
| 830 | p.default = ''; | ||
| 831 | p.defaultValue = {}; | ||
| 832 | } | ||
| 765 | } else if (p.field == 'largeCategory') { | 833 | } else if (p.field == 'largeCategory') { |
| 766 | /** 此处有歧义,若是切换规则类型,修改默认值,可能会出现,用户先修改了规则大类,但是切换类型之后,被我还原了。 */ | 834 | /** 此处有歧义,若是切换规则类型,修改默认值,可能会出现,用户先修改了规则大类,但是切换类型之后,被我还原了。 */ |
| 767 | if (radioGroupChange && !init) { | 835 | if (radioGroupChange && !init) { |
| ... | @@ -805,54 +873,54 @@ const radioGroupChange = (val, inlineValue, init) => { | ... | @@ -805,54 +873,54 @@ const radioGroupChange = (val, inlineValue, init) => { |
| 805 | list.forEach((item, index) => { | 873 | list.forEach((item, index) => { |
| 806 | if (val == 'volatility_check') {//表行数波动率 | 874 | if (val == 'volatility_check') {//表行数波动率 |
| 807 | item.visible = true | 875 | item.visible = true |
| 808 | if (index == 7 || index == 8 || index == 9 || index == 10 || index == 11 || index === 13) {// 7是规则设置,9是联合不为空 : 9+4 | 876 | if (index == 7 || index == 8 || index == 9 || index == 10 || index == 11 || index == 12 || index === 14) {// 7是规则设置,9是联合不为空 : 9+4 |
| 809 | item.visible = false | 877 | item.visible = false |
| 810 | } | 878 | } |
| 811 | } else if (val === 'null_value_check') {//空值检查 | 879 | } else if (val === 'null_value_check') {//空值检查 |
| 812 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 11) { | 880 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 11 || index == 12) { |
| 813 | item.visible = false | 881 | item.visible = false |
| 814 | } else { //index为10的显示 | 882 | } else { //index为10的显示 |
| 815 | item.visible = true; | 883 | item.visible = true; |
| 816 | } | 884 | } |
| 817 | } else if (val === 'repeate_data_check') { //重复数据检查 | 885 | } else if (val === 'repeate_data_check') { //重复数据检查 |
| 818 | item.visible = false | 886 | item.visible = false |
| 819 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 8 || index == 9 || index == 10 || index == 11 || index === 13) { | 887 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 8 || index == 9 || index == 10 || index == 11 || index == 12 || index === 14) { |
| 820 | } else { | 888 | } else { |
| 821 | item.visible = true; | 889 | item.visible = true; |
| 822 | } | 890 | } |
| 823 | } else if (val === 'logic_check') { //逻辑检查 | 891 | } else if (val === 'logic_check') { //逻辑检查 |
| 824 | item.visible = false | 892 | item.visible = false |
| 825 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 9 || index == 10 || index == 11 || index === 13) { | 893 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 9 || index == 10 || index == 11 || index == 12 || index === 14) { |
| 826 | } else { | 894 | } else { |
| 827 | item.visible = true; | 895 | item.visible = true; |
| 828 | } | 896 | } |
| 829 | } else if (val === 'value_of_range') { // 值域范围 | 897 | } else if (val === 'value_of_range') { // 值域范围 |
| 830 | item.visible = false | 898 | item.visible = false |
| 831 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 9 || index == 10 || index == 11 || index === 13) { | 899 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 10 || index == 11 || index === 14) { |
| 832 | } else { | 900 | } else { |
| 833 | item.visible = true; | 901 | item.visible = true; |
| 834 | } | 902 | } |
| 835 | } else if (val === 'ref_integrality') { // 引用完整性 | 903 | } else if (val === 'ref_integrality') { // 引用完整性 |
| 836 | item.visible = false | 904 | item.visible = false |
| 837 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 9 || index == 10 || index == 11 || index === 13) { | 905 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 10 || index == 11 || index === 14) { |
| 838 | } else { | 906 | } else { |
| 839 | item.visible = true; | 907 | item.visible = true; |
| 840 | } | 908 | } |
| 841 | } else if (val === 'norm_check') { // 规范校验 | 909 | } else if (val === 'norm_check') { // 规范校验 |
| 842 | item.visible = false | 910 | item.visible = false |
| 843 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 9 || index == 10 || index == 11 || index === 13) { | 911 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 10 || index == 11 || index === 13) { |
| 844 | } else { | 912 | } else { |
| 845 | item.visible = true; | 913 | item.visible = true; |
| 846 | } | 914 | } |
| 847 | } else if (val === 'custom_sql') {//自定义sql | 915 | } else if (val === 'custom_sql') {//自定义sql |
| 848 | item.visible = false | 916 | item.visible = false |
| 849 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 10 || index == 11 || index === 13) { | 917 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 10 || index == 11 || index == 12 || index === 14) { |
| 850 | } else { | 918 | } else { |
| 851 | item.visible = true; | 919 | item.visible = true; |
| 852 | } | 920 | } |
| 853 | } else if (val === 'rows_check') { //表行数 | 921 | } else if (val === 'rows_check') { //表行数 |
| 854 | item.visible = false | 922 | item.visible = false |
| 855 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 10 || index === 13) { | 923 | if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 10 || index == 12 || index === 14) { |
| 856 | } else { | 924 | } else { |
| 857 | item.visible = true; | 925 | item.visible = true; |
| 858 | } | 926 | } |
| ... | @@ -916,6 +984,41 @@ const listItemClick = (data) => { | ... | @@ -916,6 +984,41 @@ const listItemClick = (data) => { |
| 916 | ElMessage.error(res.msg); | 984 | ElMessage.error(res.msg); |
| 917 | } | 985 | } |
| 918 | }) | 986 | }) |
| 987 | } else if (ruleType.value == 'value_of_range') { | ||
| 988 | if (valueRangeTableListData.value[dialogSelectSubjectTable.value.enName]?.length) { | ||
| 989 | return; | ||
| 990 | } | ||
| 991 | let defaultValue = panelList.value[12].defaultValue; | ||
| 992 | valueRangeTableListLoading.value[dialogSelectSubjectTable.value.enName] = true; | ||
| 993 | getSubjectFields(data.guid).then((res: any) => { | ||
| 994 | valueRangeTableListLoading.value[dialogSelectSubjectTable.value.enName] = false; | ||
| 995 | if (res.code == proxy.$passCode) { | ||
| 996 | let data = res.data || []; | ||
| 997 | valueRangeTableListData.value[dialogSelectSubjectTable.value.enName] = data; | ||
| 998 | let valueFields = defaultValue.ruleFields?.[dialogSelectSubjectTable.value.enName] || []; | ||
| 999 | if (valueFields.length) { | ||
| 1000 | valueFields.forEach(field => { | ||
| 1001 | let fIndex = data.findIndex(d => d.enName == field.enName); | ||
| 1002 | if (fIndex > -1) { | ||
| 1003 | let f = valueRangeTableListData.value[dialogSelectSubjectTable.value.enName][fIndex]; | ||
| 1004 | if (field.dataRange) { | ||
| 1005 | f.dataRange = field.dataRange; | ||
| 1006 | } | ||
| 1007 | if (field.startValue) { | ||
| 1008 | if (f.dataType == 'date' || f.dataType == 'datetime') { | ||
| 1009 | f.dateValueRange = [field.startValue, field.endValue]; | ||
| 1010 | } else { | ||
| 1011 | f.startValue = field.startValue; | ||
| 1012 | f.endValue = field.endValue; | ||
| 1013 | } | ||
| 1014 | } | ||
| 1015 | } | ||
| 1016 | }); | ||
| 1017 | } | ||
| 1018 | } else { | ||
| 1019 | ElMessage.error(res.msg); | ||
| 1020 | } | ||
| 1021 | }) | ||
| 919 | } | 1022 | } |
| 920 | } | 1023 | } |
| 921 | 1024 | ||
| ... | @@ -1386,6 +1489,19 @@ const getSubjectTableByDomainData = (guid) => { | ... | @@ -1386,6 +1489,19 @@ const getSubjectTableByDomainData = (guid) => { |
| 1386 | }) | 1489 | }) |
| 1387 | } | 1490 | } |
| 1388 | 1491 | ||
| 1492 | const defaultExpandedKeys = computed(() => { | ||
| 1493 | return props.value && contrastSubjects.value?.length ? [contrastSubjects.value.find(c => c.children?.some(cc => cc.guid == props.value.contrastSubjectDomainGuid)).guid, props.value.contrastSubjectDomainGuid] : []; | ||
| 1494 | }) | ||
| 1495 | |||
| 1496 | const contrastSubjectInputFilterMethod = (v, data) => { | ||
| 1497 | if (!v) { | ||
| 1498 | return true; | ||
| 1499 | } | ||
| 1500 | return data.label?.includes(v) || data.name?.includes(v) || | ||
| 1501 | data.chName?.includes(v) || | ||
| 1502 | data.enName?.includes(v); | ||
| 1503 | }; | ||
| 1504 | |||
| 1389 | /** 主题表懒加载。 */ | 1505 | /** 主题表懒加载。 */ |
| 1390 | const treeSelectLoad = (node, resolve) => { | 1506 | const treeSelectLoad = (node, resolve) => { |
| 1391 | if (node.level == 0) { | 1507 | if (node.level == 0) { |
| ... | @@ -1401,18 +1517,73 @@ const treeSelectLoad = (node, resolve) => { | ... | @@ -1401,18 +1517,73 @@ const treeSelectLoad = (node, resolve) => { |
| 1401 | } | 1517 | } |
| 1402 | } | 1518 | } |
| 1403 | 1519 | ||
| 1404 | const defaultExpandedKeys = computed(() => { | 1520 | /** --------------------- 值域范围 ----------------------------- */ |
| 1405 | return props.value && contrastSubjects.value?.length ? [contrastSubjects.value.find(c => c.children?.some(cc => cc.guid == props.value.contrastSubjectDomainGuid)).guid, props.value.contrastSubjectDomainGuid] : []; | ||
| 1406 | }) | ||
| 1407 | 1521 | ||
| 1408 | const contrastSubjectInputFilterMethod = (v, data) => { | 1522 | const valueRangeDialogVisible = ref(false); |
| 1409 | if (!v) { | 1523 | |
| 1410 | return true; | 1524 | const valueRangeTableListLoading = ref({}); |
| 1525 | |||
| 1526 | const valueRangeTableListData = ref({}); | ||
| 1527 | |||
| 1528 | const cancelValueRangeDialog = () => { | ||
| 1529 | valueRangeDialogVisible.value = false; | ||
| 1530 | } | ||
| 1531 | |||
| 1532 | const submitValueRange = () => { | ||
| 1533 | let v: any = []; | ||
| 1534 | let ruleFieldsJson: any = {}; | ||
| 1535 | for (const table in valueRangeTableListData.value) { | ||
| 1536 | if (!valueRangeTableListData.value[table]?.length) { | ||
| 1537 | continue; | ||
| 1538 | } | ||
| 1539 | let valueTableFields = valueRangeTableListData.value[table]; | ||
| 1540 | let ruleFields: any = [] | ||
| 1541 | for (const field of valueTableFields) { | ||
| 1542 | if (field.startValue != null && field.endValue == null || (field.endValue != null && field.startValue == null)) { | ||
| 1543 | ElMessage.error(`表【${table}】的字段【${field.enName}】设置了值域,但范围未填写完整`); | ||
| 1544 | return; | ||
| 1411 | } | 1545 | } |
| 1412 | return data.label?.includes(v) || data.name?.includes(v) || | 1546 | if (field.startValue) { |
| 1413 | data.chName?.includes(v) || | 1547 | ruleFields.push(field); |
| 1414 | data.enName?.includes(v); | 1548 | } |
| 1415 | }; | 1549 | if (field.dataRange) { |
| 1550 | ruleFields.push(field); | ||
| 1551 | } | ||
| 1552 | if (field.dateValueRange?.length > 0) { | ||
| 1553 | field.startValue = field.dateValueRange[0]; | ||
| 1554 | field.endValue = field.dateValueRange[1]; | ||
| 1555 | ruleFields.push(field); | ||
| 1556 | } | ||
| 1557 | if (ruleFields.length) { | ||
| 1558 | v.push(table); | ||
| 1559 | ruleFieldsJson[table] = ruleFields; | ||
| 1560 | } | ||
| 1561 | } | ||
| 1562 | } | ||
| 1563 | if (!v.length) { | ||
| 1564 | ElMessage.error('当前未给表字段设置值域!'); | ||
| 1565 | return; | ||
| 1566 | } | ||
| 1567 | let index = 12; | ||
| 1568 | panelList.value[index].defaultValue = { | ||
| 1569 | ruleFields: ruleFieldsJson | ||
| 1570 | }; | ||
| 1571 | let str = ""; | ||
| 1572 | for (const key in ruleFieldsJson) { | ||
| 1573 | let field = ruleFieldsJson[key]; | ||
| 1574 | str = str + (str ? ';' : '') + field.map(f => f.enName).join(',');; | ||
| 1575 | } | ||
| 1576 | let formInline = oldOriginValue.value = Object.assign({ | ||
| 1577 | qualityModelGuids: props.toSubjectTables.map(s => s.guid), | ||
| 1578 | parity: 1, | ||
| 1579 | compareWay: 1, | ||
| 1580 | jointly: 'N', | ||
| 1581 | bizState: 'Y' | ||
| 1582 | }, oldOriginValue.value, ruleFormRef.value.formInline); | ||
| 1583 | formInline[`${panelList.value[index].field}`] = str; | ||
| 1584 | setPanelListValue(formInline); | ||
| 1585 | valueRangeDialogVisible.value = false; | ||
| 1586 | } | ||
| 1416 | 1587 | ||
| 1417 | const getFormInfo = () => { | 1588 | const getFormInfo = () => { |
| 1418 | let formInline = ruleFormRef.value.formInline; | 1589 | let formInline = ruleFormRef.value.formInline; |
| ... | @@ -1447,6 +1618,11 @@ const getFormInfo = () => { | ... | @@ -1447,6 +1618,11 @@ const getFormInfo = () => { |
| 1447 | rows: v, | 1618 | rows: v, |
| 1448 | ruleName: ruleName | 1619 | ruleName: ruleName |
| 1449 | }); | 1620 | }); |
| 1621 | } else if (formInline.ruleCode == 'value_of_range') { | ||
| 1622 | let v = panelList.value[12].defaultValue; | ||
| 1623 | return Object.assign({}, formInline, v, { | ||
| 1624 | ruleName: ruleName | ||
| 1625 | }); | ||
| 1450 | } | 1626 | } |
| 1451 | } | 1627 | } |
| 1452 | 1628 | ||
| ... | @@ -1577,7 +1753,64 @@ defineExpose({ | ... | @@ -1577,7 +1753,64 @@ defineExpose({ |
| 1577 | </el-dialog> | 1753 | </el-dialog> |
| 1578 | 1754 | ||
| 1579 | <!-- 值域范围 --> | 1755 | <!-- 值域范围 --> |
| 1580 | <el-dialog></el-dialog> | 1756 | <el-dialog v-model="valueRangeDialogVisible" title="规则设置" width="850" :modal="true" :close-on-click-modal="false" |
| 1757 | destroy-on-close align-center> | ||
| 1758 | <div class="filter-dialog-content" :style="{ height: '500px' }"> | ||
| 1759 | <div class="filter-table-list"> | ||
| 1760 | <div class="left-title">质检表</div> | ||
| 1761 | <ListPanel class="list_unit" ref="valueCheckFormListRef" :listInfo="tableListInfo" @itemClick="listItemClick" /> | ||
| 1762 | </div> | ||
| 1763 | <div class="table-field-right"> | ||
| 1764 | <div class="left-title">字段列表详情</div> | ||
| 1765 | <el-table ref="rowTableRef" :data="valueRangeTableListData[dialogSelectSubjectTable.enName]" height="100%" :highlight-current-row="true" stripe | ||
| 1766 | v-loading="valueRangeTableListLoading[dialogSelectSubjectTable.enName]" tooltip-effect="light" border | ||
| 1767 | :style="{ height: 'calc(100% - 32px)', width: '100%', display: 'inline-block' }"> | ||
| 1768 | <el-table-column prop="enName" label="字段名" width="140px" align="left" show-overflow-tooltip> | ||
| 1769 | </el-table-column> | ||
| 1770 | <el-table-column prop="chName" label="注释" width="120px" align="left" show-overflow-tooltip> | ||
| 1771 | </el-table-column> | ||
| 1772 | <el-table-column prop="dataTypeChName" label="数据类型" width="100px" show-overflow-tooltip> | ||
| 1773 | <template #default="scope"> | ||
| 1774 | <span>{{ scope.row["dataTypeChName"] || '--' }}</span> | ||
| 1775 | </template> | ||
| 1776 | </el-table-column> | ||
| 1777 | <el-table-column label="值域" width="280px" align="left" fixed="right"> | ||
| 1778 | <template #default="scope"> | ||
| 1779 | <span v-if="scope.row.dataType == 'json' || scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string'">--</span> | ||
| 1780 | <template v-else> | ||
| 1781 | <el-input v-show="scope.row.dataType == 'varchar' || scope.row.dataType == 'char' || scope.row.dataType == 'bit'" v-model.trim="scope.row.dataRange" clearable placeholder="多值按照分号;分隔"> </el-input> | ||
| 1782 | <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'"> | ||
| 1783 | <el-date-picker | ||
| 1784 | v-model="scope.row.dateValueRange" | ||
| 1785 | type="daterange" | ||
| 1786 | range-separator="至" | ||
| 1787 | start-placeholder="开始日期" | ||
| 1788 | end-placeholder="结束日期" | ||
| 1789 | format="YYYY-MM-DD" | ||
| 1790 | value-format="YYYY-MM-DD" | ||
| 1791 | :unlink-panels="false" | ||
| 1792 | :disabled="props.readonly" | ||
| 1793 | /> | ||
| 1794 | </div> | ||
| 1795 | <div class="range-sum" v-show="scope.row.dataType == 'int' || scope.row.dataType == 'decimal' || scope.row.dataType == 'tinyint' || scope.row.dataType == 'timestamp' || scope.row.dataType == 'time'"> | ||
| 1796 | <el-input :disabled="props.readonly" v-model.trim="scope.row.startValue" placeholder="请输入" clearable> </el-input> | ||
| 1797 | <span class="text"> 至 </span> | ||
| 1798 | <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable> </el-input> | ||
| 1799 | </div> | ||
| 1800 | </template> | ||
| 1801 | </template> | ||
| 1802 | </el-table-column> | ||
| 1803 | </el-table> | ||
| 1804 | </div> | ||
| 1805 | </div> | ||
| 1806 | |||
| 1807 | <template #footer v-if="!props.readonly"> | ||
| 1808 | <div class="dialog-footer"> | ||
| 1809 | <el-button @click="cancelValueRangeDialog" v-preReClick>取消</el-button> | ||
| 1810 | <el-button @click="submitValueRange" type="primary" v-preReClick>确定</el-button> | ||
| 1811 | </div> | ||
| 1812 | </template> | ||
| 1813 | </el-dialog> | ||
| 1581 | 1814 | ||
| 1582 | <!-- 表行数检查 --> | 1815 | <!-- 表行数检查 --> |
| 1583 | <el-dialog v-model="tableRowDialogVisible" title="规则设置" width="750" :modal="true" :close-on-click-modal="false" | 1816 | <el-dialog v-model="tableRowDialogVisible" title="规则设置" width="750" :modal="true" :close-on-click-modal="false" |
| ... | @@ -1655,7 +1888,7 @@ defineExpose({ | ... | @@ -1655,7 +1888,7 @@ defineExpose({ |
| 1655 | padding-left: 8px; | 1888 | padding-left: 8px; |
| 1656 | } | 1889 | } |
| 1657 | 1890 | ||
| 1658 | .el-input { | 1891 | .filter-edit .el-input { |
| 1659 | margin-left: 8px; | 1892 | margin-left: 8px; |
| 1660 | width: calc(100% - 16px); | 1893 | width: calc(100% - 16px); |
| 1661 | } | 1894 | } |
| ... | @@ -1679,6 +1912,36 @@ defineExpose({ | ... | @@ -1679,6 +1912,36 @@ defineExpose({ |
| 1679 | } | 1912 | } |
| 1680 | } | 1913 | } |
| 1681 | 1914 | ||
| 1915 | // 值域范围检查右边的字段 | ||
| 1916 | .table-field-right { | ||
| 1917 | width: calc(100% - 200px); | ||
| 1918 | |||
| 1919 | .left-title { | ||
| 1920 | border-left: 1px solid #d9d9d9; | ||
| 1921 | } | ||
| 1922 | |||
| 1923 | :deep(.el-table) { | ||
| 1924 | td.el-table__cell { | ||
| 1925 | padding: 2px 0; | ||
| 1926 | height: 36px; | ||
| 1927 | } | ||
| 1928 | } | ||
| 1929 | |||
| 1930 | .range-sum { | ||
| 1931 | width: 100%; | ||
| 1932 | display: inline-flex; | ||
| 1933 | align-items: center; | ||
| 1934 | |||
| 1935 | .text { | ||
| 1936 | margin: 0px 4px; | ||
| 1937 | } | ||
| 1938 | |||
| 1939 | :deep(.el-input) { | ||
| 1940 | width: 50%; | ||
| 1941 | } | ||
| 1942 | } | ||
| 1943 | } | ||
| 1944 | |||
| 1682 | .empty-table-field { | 1945 | .empty-table-field { |
| 1683 | .left-title { | 1946 | .left-title { |
| 1684 | border-left: 1px solid #d9d9d9; | 1947 | border-left: 1px solid #d9d9d9; | ... | ... |
| ... | @@ -304,6 +304,34 @@ const transformRulesInfo = (info: any) => { | ... | @@ -304,6 +304,34 @@ const transformRulesInfo = (info: any) => { |
| 304 | })] | 304 | })] |
| 305 | })); | 305 | })); |
| 306 | }) | 306 | }) |
| 307 | } else if (info.ruleCode == 'value_of_range') { | ||
| 308 | let subjectTables = toSubjectTables.value; | ||
| 309 | for (const ds in info.ruleFields) { | ||
| 310 | let fields = info.ruleFields[ds]; | ||
| 311 | let tableInfo = subjectTables.find(t => t.enName === ds); | ||
| 312 | modelRules.push(Object.assign({}, { | ||
| 313 | modelGroupGuid: modelGroupGuid.value, | ||
| 314 | name: tableInfo.chName, | ||
| 315 | subjectName: tableInfo.enName, | ||
| 316 | subjectGuid: tableInfo.guid, | ||
| 317 | dataSourceGuid: tableInfo.dataSourceGuid, | ||
| 318 | databaseName: tableInfo.dataServerName, | ||
| 319 | modelRuleConfList: [Object.assign({}, info, { | ||
| 320 | ruleField: fields.map(f => { | ||
| 321 | return { | ||
| 322 | guid: f.guid, | ||
| 323 | enName: f.enName, | ||
| 324 | chName: f.chName, | ||
| 325 | dataType: f.dataType, | ||
| 326 | startValue: f.startValue, | ||
| 327 | endValue: f.endValue, | ||
| 328 | dataRange: f.dataRange | ||
| 329 | } | ||
| 330 | }), | ||
| 331 | ruleFields: '' | ||
| 332 | })] | ||
| 333 | })); | ||
| 334 | } | ||
| 307 | } | 335 | } |
| 308 | return modelRules; | 336 | return modelRules; |
| 309 | } | 337 | } | ... | ... |
| ... | @@ -120,6 +120,26 @@ const transformRulesInfo = (info: any) => { | ... | @@ -120,6 +120,26 @@ const transformRulesInfo = (info: any) => { |
| 120 | differenceRange: info.rows[0].differenceRange, | 120 | differenceRange: info.rows[0].differenceRange, |
| 121 | rows: '' | 121 | rows: '' |
| 122 | }); | 122 | }); |
| 123 | } else if (info.ruleCode == 'value_of_range') { | ||
| 124 | let subjectName = detailInfo.value.subjectName; | ||
| 125 | let fields = info.ruleFields[subjectName]; | ||
| 126 | return Object.assign({}, info, { | ||
| 127 | guid: ruleGuid, | ||
| 128 | qualityModelGuid: detailInfo.value.qualityModelGuid, | ||
| 129 | ruleCode: detailInfo.value.ruleCode, | ||
| 130 | ruleField: fields.map(f => { | ||
| 131 | return { | ||
| 132 | guid: f.guid, | ||
| 133 | enName: f.enName, | ||
| 134 | chName: f.chName, | ||
| 135 | dataType: f.dataType, | ||
| 136 | startValue: f.startValue, | ||
| 137 | endValue: f.endValue, | ||
| 138 | dataRange: f.dataRange | ||
| 139 | } | ||
| 140 | }), | ||
| 141 | ruleFields: '' | ||
| 142 | }); | ||
| 123 | } | 143 | } |
| 124 | } | 144 | } |
| 125 | 145 | ... | ... |
| ... | @@ -116,6 +116,25 @@ const transformRulesInfo = (info) => { | ... | @@ -116,6 +116,25 @@ const transformRulesInfo = (info) => { |
| 116 | differenceRange: info.rows[0].differenceRange, | 116 | differenceRange: info.rows[0].differenceRange, |
| 117 | rows: '' | 117 | rows: '' |
| 118 | }); | 118 | }); |
| 119 | } else if (info.ruleCode === 'value_of_range') { | ||
| 120 | let subjectName = modelDetailInfo.value.subjectName; | ||
| 121 | let fields = info.ruleFields[subjectName]; | ||
| 122 | return Object.assign({}, info, { | ||
| 123 | qualityModelGuid: modelGuid, | ||
| 124 | ruleCode: info.ruleCode, | ||
| 125 | ruleField: fields.map(f => { | ||
| 126 | return { | ||
| 127 | guid: f.guid, | ||
| 128 | enName: f.enName, | ||
| 129 | chName: f.chName, | ||
| 130 | dataType: f.dataType, | ||
| 131 | startValue: f.startValue, | ||
| 132 | endValue: f.endValue, | ||
| 133 | dataRange: f.dataRange | ||
| 134 | } | ||
| 135 | }), | ||
| 136 | ruleFields: '' | ||
| 137 | }); | ||
| 119 | } | 138 | } |
| 120 | } | 139 | } |
| 121 | 140 | ... | ... |
| ... | @@ -17,8 +17,7 @@ import { | ... | @@ -17,8 +17,7 @@ import { |
| 17 | deleteImportData, | 17 | deleteImportData, |
| 18 | getImportData, | 18 | getImportData, |
| 19 | exportDictionary, | 19 | exportDictionary, |
| 20 | getStandardSetTree, | 20 | exportCollectTask, |
| 21 | getDictionaryTree, | ||
| 22 | getImageContent | 21 | getImageContent |
| 23 | } from '@/api/modules/queryService'; | 22 | } from '@/api/modules/queryService'; |
| 24 | import { commonPageConfig } from '@/utils/enum'; | 23 | import { commonPageConfig } from '@/utils/enum'; |
| ... | @@ -347,6 +346,14 @@ const exportData = (ids: any = null) => { | ... | @@ -347,6 +346,14 @@ const exportData = (ids: any = null) => { |
| 347 | exportDictionary(params).then((res: any) => { | 346 | exportDictionary(params).then((res: any) => { |
| 348 | download(res, '数据字典模板.xlsx', 'excel') | 347 | download(res, '数据字典模板.xlsx', 'excel') |
| 349 | }); | 348 | }); |
| 349 | } else if (tabsActiveName.value == 'importFile' && isfileImport == '4') { | ||
| 350 | exportCollectTask({ | ||
| 351 | importTypes: [ | ||
| 352 | "0042" | ||
| 353 | ] | ||
| 354 | }).then((res: any) => { | ||
| 355 | download(res, '元数据模板.xlsx', 'excel') | ||
| 356 | }); | ||
| 350 | } | 357 | } |
| 351 | } | 358 | } |
| 352 | 359 | ||
| ... | @@ -360,13 +367,28 @@ const importData = (info) => { | ... | @@ -360,13 +367,28 @@ const importData = (info) => { |
| 360 | // dialogInfo.value.footer.btns.map((item: any) => delete item.disabled) | 367 | // dialogInfo.value.footer.btns.map((item: any) => delete item.disabled) |
| 361 | return | 368 | return |
| 362 | } | 369 | } |
| 370 | let paramUrl = ''; | ||
| 371 | if (isfileImport == '2') { | ||
| 363 | uploadFiles.value.forEach((item: any, index: number) => { | 372 | uploadFiles.value.forEach((item: any, index: number) => { |
| 364 | params.append("file", item.raw); | 373 | params.append("file", item.raw); |
| 365 | }); | 374 | }); |
| 366 | let paramUrl = ''; | ||
| 367 | if (isfileImport == '2') { | ||
| 368 | paramUrl = `${import.meta.env.VITE_API_ASSET_BASEURL}/dam-catalog-table/excel-by-subject-guid?staffGuid=${userData.staffGuid}&subjectGuid=${route.query.bizGuid}` | 375 | paramUrl = `${import.meta.env.VITE_API_ASSET_BASEURL}/dam-catalog-table/excel-by-subject-guid?staffGuid=${userData.staffGuid}&subjectGuid=${route.query.bizGuid}` |
| 376 | } else if (isfileImport == '4') { | ||
| 377 | if (!info.collectTaskName) { | ||
| 378 | ElMessage({ | ||
| 379 | type: 'error', | ||
| 380 | message: '请填写采集任务名称' | ||
| 381 | }) | ||
| 382 | return; | ||
| 383 | } | ||
| 384 | uploadFiles.value.forEach((item: any, index: number) => { | ||
| 385 | params.append("uploadFile", item.raw); | ||
| 386 | }); | ||
| 387 | paramUrl = `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-collect-task/meta-collect-import?staffGuid=${userData.staffGuid}&collectTaskName=${info.collectTaskName}` | ||
| 369 | } else { | 388 | } else { |
| 389 | uploadFiles.value.forEach((item: any, index: number) => { | ||
| 390 | params.append("file", item.raw); | ||
| 391 | }); | ||
| 370 | paramUrl = `${import.meta.env.VITE_APP_ADD_FILE}/import-data/import-common?importType=${importType.value}&staffGuid=${userData.staffGuid}&tenantGuid=${userData.tenantGuid}&dataType=2` | 392 | paramUrl = `${import.meta.env.VITE_APP_ADD_FILE}/import-data/import-common?importType=${importType.value}&staffGuid=${userData.staffGuid}&tenantGuid=${userData.tenantGuid}&dataType=2` |
| 371 | if (info && Object.keys(info).length) { | 393 | if (info && Object.keys(info).length) { |
| 372 | paramUrl += `&extendFields=${JSON.stringify(info)}` | 394 | paramUrl += `&extendFields=${JSON.stringify(info)}` |
| ... | @@ -424,6 +446,8 @@ const setUploadInfo = () => { | ... | @@ -424,6 +446,8 @@ const setUploadInfo = () => { |
| 424 | } else { | 446 | } else { |
| 425 | if (isfileImport == '2') { | 447 | if (isfileImport == '2') { |
| 426 | importType.value = '0034'; | 448 | importType.value = '0034'; |
| 449 | } else if (isfileImport == '4') { | ||
| 450 | importType.value = '0042'; | ||
| 427 | } else { | 451 | } else { |
| 428 | importType.value = '0033'; | 452 | importType.value = '0033'; |
| 429 | } | 453 | } | ... | ... |
-
Please register or sign in to post a comment