4e06bf62 by lihua

提交规范校验规则

1 parent 79dca67c
...@@ -288,8 +288,8 @@ const getMsgCnt = () => { ...@@ -288,8 +288,8 @@ const getMsgCnt = () => {
288 } 288 }
289 289
290 onMounted(() => { 290 onMounted(() => {
291 getMsgCnt(); 291 //getMsgCnt();
292 createServerConnect(); 292 //createServerConnect();
293 }); 293 });
294 294
295 </script> 295 </script>
......
...@@ -129,6 +129,27 @@ watch(() => props.largeCategoryList, (val) => { ...@@ -129,6 +129,27 @@ watch(() => props.largeCategoryList, (val) => {
129 /** 规范性检验规则 */ 129 /** 规范性检验规则 */
130 const checkRulesList: any = ref([]); 130 const checkRulesList: any = ref([]);
131 131
132 /** 根据不同的数据类型显示对应的规则 */
133 const rulesListByType: any = computed(() => {
134 if (!checkRulesList.value.length) {
135 return {};
136 }
137 return {
138 char: checkRulesList.value.filter(r => r.paramValue == 'length_rule' || r.paramValue == 'ch_rule' || r.paramValue == 'en_rule' || r.paramValue == 'num_value_rule' || r.paramValue == 'custom_regular_rule'),
139 varchar: checkRulesList.value.filter(r => r.paramValue == 'length_rule' || r.paramValue == 'id_card_rule' || r.paramValue == 'phone_number_rule' || r.paramValue == 'ch_rule' || r.paramValue == 'en_rule' || r.paramValue == 'num_value_rule' || r.paramValue == 'custom_regular_rule'),
140 int: checkRulesList.value.filter(r => r.paramValue == 'length_rule' || r.paramValue == 'num_value_rule' || r.paramValue == 'custom_regular_rule'),
141 date: checkRulesList.value.filter(r => r.paramValue == 'date_format_rule' || r.paramValue == 'custom_regular_rule'),
142 datetime: checkRulesList.value.filter(r => r.paramValue == 'date_format_rule' || r.paramValue == 'custom_regular_rule'),
143 timestamp: checkRulesList.value.filter(r => r.paramValue == 'custom_regular_rule' || r.paramValue == 'custom_regular_rule'),
144 // text: checkRulesList.value.filter(r => r.paramValue == ''),
145 decimal: checkRulesList.value.filter(r => r.paramValue == 'length_rule' || r.paramValue == 'precision_rule' || r.paramValue == 'num_value_rule' || r.paramValue == 'custom_regular_rule'),
146 // json: checkRulesList.value.filter(r => r.paramValue == ''),
147 tinyint: checkRulesList.value.filter(r => r.paramValue == 'length_rule' || r.paramValue == 'num_value_rule' || r.paramValue == 'custom_regular_rule'),
148 time: checkRulesList.value.filter(r => r.paramValue == 'custom_regular_rule'),
149 bit: checkRulesList.value.filter(r => r.paramValue == 'ch_rule' || r.paramValue == 'en_rule' || r.paramValue == 'custom_regular_rule'),
150 }
151 });
152
132 onBeforeMount(() => { 153 onBeforeMount(() => {
133 if (props.ruleTypeList?.length) { 154 if (props.ruleTypeList?.length) {
134 if (props.ruleTypeValue) { 155 if (props.ruleTypeValue) {
...@@ -164,12 +185,13 @@ onBeforeMount(() => { ...@@ -164,12 +185,13 @@ onBeforeMount(() => {
164 setPanelListValue(props.value, false, true); 185 setPanelListValue(props.value, false, true);
165 } 186 }
166 getCheckRulesList().then((res: any) => { 187 getCheckRulesList().then((res: any) => {
167 if (res.code == proxy.$passCode) { 188 if (res.code == proxy.$passCode) {
168 checkRulesList.value = res.data || []; 189 checkRulesList.value = res.data || [];
169 } else { 190
170 ElMessage.error(res.msg); 191 } else {
171 } 192 ElMessage.error(res.msg);
172 }) 193 }
194 })
173 }); 195 });
174 196
175 const getDefaultLargeCategory = (ruleCode) => { 197 const getDefaultLargeCategory = (ruleCode) => {
...@@ -393,7 +415,7 @@ const panelList: any = ref([ ...@@ -393,7 +415,7 @@ const panelList: any = ref([
393 required: true, 415 required: true,
394 block: true, 416 block: true,
395 visible: false 417 visible: false
396 }, { 418 }, {
397 label: '规则设置', 419 label: '规则设置',
398 type: 'input-dom', 420 type: 'input-dom',
399 placeholder: '请设置,可多选', 421 placeholder: '请设置,可多选',
...@@ -410,7 +432,7 @@ const panelList: any = ref([ ...@@ -410,7 +432,7 @@ const panelList: any = ref([
410 placeholder: '请设置,可多选', 432 placeholder: '请设置,可多选',
411 field: 'ruleSettings-norm-check', //14 433 field: 'ruleSettings-norm-check', //14
412 default: '',//描述型的字段 434 default: '',//描述型的字段
413 defaultValue: {}, 435 defaultValue: {},
414 readonly: true, 436 readonly: true,
415 required: true, 437 required: true,
416 block: true, 438 block: true,
...@@ -759,14 +781,14 @@ const formBtnClick = (btn) => { ...@@ -759,14 +781,14 @@ const formBtnClick = (btn) => {
759 } 781 }
760 if (!compareTableFields.value[rule.compareTableGuid]?.length) { 782 if (!compareTableFields.value[rule.compareTableGuid]?.length) {
761 tableInteCompareSelectChange(rule.compareTableGuid); 783 tableInteCompareSelectChange(rule.compareTableGuid);
762 } 784 }
763 }) 785 })
764 } 786 }
765 } else if (ruleType.value == 'norm_check') { 787 } else if (ruleType.value == 'norm_check') {
766 normCheckDialogVisible.value = true; 788 normCheckDialogVisible.value = true;
767 tableListInfo.value.data = props.toSubjectTables; 789 tableListInfo.value.data = props.toSubjectTables;
768 dialogSelectSubjectTable.value = props.toSubjectTables[0]; 790 dialogSelectSubjectTable.value = props.toSubjectTables[0];
769 let defaultValue = panelList.value[12].defaultValue; 791 let defaultValue = panelList.value[14].defaultValue;
770 normCheckTableListData.value[dialogSelectSubjectTable.value.enName] = []; 792 normCheckTableListData.value[dialogSelectSubjectTable.value.enName] = [];
771 if (props.toSubjectTables[0]?.guid) { 793 if (props.toSubjectTables[0]?.guid) {
772 normCheckTableListLoading.value[dialogSelectSubjectTable.value.enName] = true; 794 normCheckTableListLoading.value[dialogSelectSubjectTable.value.enName] = true;
...@@ -781,7 +803,14 @@ const formBtnClick = (btn) => { ...@@ -781,7 +803,14 @@ const formBtnClick = (btn) => {
781 let fIndex = data.findIndex(d => d.enName == field.enName); 803 let fIndex = data.findIndex(d => d.enName == field.enName);
782 if (fIndex > -1) { 804 if (fIndex > -1) {
783 let f = normCheckTableListData.value[dialogSelectSubjectTable.value.enName][fIndex]; 805 let f = normCheckTableListData.value[dialogSelectSubjectTable.value.enName][fIndex];
784 Object.assign(f, field); 806 f.checkRule = field.checkRule;
807 f.configValue = field.configValue;
808 if (f.checkRule == 'length_rule') {
809 let vSplit = f.configValue.split('#');
810 f.operator = vSplit[0];
811 f.value = vSplit[1];
812 f.value1 = vSplit[2];
813 }
785 } 814 }
786 }); 815 });
787 } 816 }
...@@ -911,9 +940,9 @@ const setPanelListValue = (item, isSelectChange = false, init = false, radioGrou ...@@ -911,9 +940,9 @@ const setPanelListValue = (item, isSelectChange = false, init = false, radioGrou
911 p.defaultValue = val.ruleField.map(field => { 940 p.defaultValue = val.ruleField.map(field => {
912 return { 941 return {
913 mainTable: val.subjectGuid, 942 mainTable: val.subjectGuid,
914 mainTableName: val.subjectName, 943 mainTableName: val.subjectName,
915 mainTableZhName: val.subjectZhName, 944 mainTableZhName: val.subjectZhName,
916 mainTableField: field.enName, 945 mainTableField: field.enName,
917 compareTableGuid: field.compareTableGuid, 946 compareTableGuid: field.compareTableGuid,
918 compareEnName: field.compareEnName, 947 compareEnName: field.compareEnName,
919 } 948 }
...@@ -938,6 +967,22 @@ const setPanelListValue = (item, isSelectChange = false, init = false, radioGrou ...@@ -938,6 +967,22 @@ const setPanelListValue = (item, isSelectChange = false, init = false, radioGrou
938 p.default = ''; 967 p.default = '';
939 p.defaultValue = {}; 968 p.defaultValue = {};
940 } 969 }
970 } else if (ruleCode == 'norm_check' && p.field == 'ruleSettings-norm-check') {
971 if (!init) {
972 p.default = val[field];
973 return;
974 }
975 if (val.ruleField?.length) {
976 p.default = val.ruleField?.map(f => f.enName)?.join(';');
977 let ruleFields = {};
978 ruleFields[val.subjectName] = val.ruleField || [];
979 p.defaultValue = {
980 ruleFields: ruleFields
981 }
982 } else {
983 p.default = '';
984 p.defaultValue = {};
985 }
941 } else if (p.field == 'largeCategory') { 986 } else if (p.field == 'largeCategory') {
942 /** 此处有歧义,若是切换规则类型,修改默认值,可能会出现,用户先修改了规则大类,但是切换类型之后,被我还原了。 */ 987 /** 此处有歧义,若是切换规则类型,修改默认值,可能会出现,用户先修改了规则大类,但是切换类型之后,被我还原了。 */
943 if (radioGroupChange && !init) { 988 if (radioGroupChange && !init) {
...@@ -1010,7 +1055,7 @@ const radioGroupChange = (val, inlineValue, init) => { ...@@ -1010,7 +1055,7 @@ const radioGroupChange = (val, inlineValue, init) => {
1010 } 1055 }
1011 } else if (val === 'ref_integrality') { // 引用完整性 1056 } else if (val === 'ref_integrality') { // 引用完整性
1012 item.visible = false 1057 item.visible = false
1013 if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 10 || index == 11 || index == 12 || index === 14 || index === 16) { 1058 if (index === 3 || index === 4 || index === 5 || index === 6 || index == 7 || index == 8 || index == 9 || index == 10 || index == 11 || index == 12 || index === 14 || index === 16) {
1014 } else { 1059 } else {
1015 item.visible = true; 1060 item.visible = true;
1016 } 1061 }
...@@ -1102,27 +1147,63 @@ const listItemClick = (data) => { ...@@ -1102,27 +1147,63 @@ const listItemClick = (data) => {
1102 valueRangeTableListLoading.value[dialogSelectSubjectTable.value.enName] = false; 1147 valueRangeTableListLoading.value[dialogSelectSubjectTable.value.enName] = false;
1103 if (res.code == proxy.$passCode) { 1148 if (res.code == proxy.$passCode) {
1104 let data = res.data || []; 1149 let data = res.data || [];
1105 valueRangeTableListData.value[dialogSelectSubjectTable.value.enName] = data; 1150 valueRangeTableListData.value[dialogSelectSubjectTable.value.enName] = data;
1106 let valueFields = defaultValue.ruleFields?.[dialogSelectSubjectTable.value.enName] || []; 1151 let valueFields = defaultValue.ruleFields?.[dialogSelectSubjectTable.value.enName] || [];
1107 if (valueFields.length) { 1152 if (valueFields.length) {
1108 valueFields.forEach(field => { 1153 valueFields.forEach(field => {
1109 let fIndex = data.findIndex(d => d.enName == field.enName); 1154 let fIndex = data.findIndex(d => d.enName == field.enName);
1110 if (fIndex > -1) { 1155 if (fIndex > -1) {
1111 let f = valueRangeTableListData.value[dialogSelectSubjectTable.value.enName][fIndex]; 1156 let f = valueRangeTableListData.value[dialogSelectSubjectTable.value.enName][fIndex];
1112 if (field.dataRange) { 1157 if (field.dataRange) {
1113 f.dataRange = field.dataRange; 1158 f.dataRange = field.dataRange;
1159 }
1160 if (field.startValue) {
1161 if (f.dataType == 'date' || f.dataType == 'datetime') {
1162 f.dateValueRange = [field.startValue, field.endValue];
1163 } else {
1164 f.startValue = field.startValue;
1165 f.endValue = field.endValue;
1114 } 1166 }
1115 if (field.startValue) { 1167 }
1116 if (f.dataType == 'date' || f.dataType == 'datetime') { 1168 }
1117 f.dateValueRange = [field.startValue, field.endValue]; 1169 });
1118 } else { 1170 }
1119 f.startValue = field.startValue; 1171 } else {
1120 f.endValue = field.endValue; 1172 ElMessage.error(res.msg);
1173 }
1174 })
1175 } else if (ruleType.value == 'norm_check') {
1176 if (normCheckTableListData.value[dialogSelectSubjectTable.value.enName]?.length) {
1177 return;
1178 }
1179 let defaultValue = panelList.value[14].defaultValue;
1180 normCheckTableListLoading.value[dialogSelectSubjectTable.value.enName] = true;
1181 getSubjectFields(data.guid).then((res: any) => {
1182 normCheckTableListLoading.value[dialogSelectSubjectTable.value.enName] = false;
1183 if (res.code == proxy.$passCode) {
1184 let data = res.data || [];
1185 normCheckTableListData.value[dialogSelectSubjectTable.value.enName] = data;
1186 let valueFields = defaultValue.ruleFields?.[dialogSelectSubjectTable.value.enName] || [];
1187 if (valueFields.length) {
1188 valueFields.forEach(field => {
1189 let fIndex = data.findIndex(d => d.enName == field.enName);
1190 if (fIndex > -1) {
1191 let f = normCheckTableListData.value[dialogSelectSubjectTable.value.enName][fIndex];
1192 if (field.checkRule) {
1193 f.checkRule = field.dataRange;
1194 f.configValue = field.configValue;
1195 if (field.checkRule == 'length_rule') {
1196 let vLen = f.configValue?.split('#');
1197 if (vLen?.length > 1) {
1198 f.operator = vLen[0];
1199 f.value = vLen[1];
1200 f.value1 = vLen[2]
1121 } 1201 }
1122 } 1202 }
1123 } 1203 }
1124 }); 1204 }
1125 } 1205 });
1206 }
1126 } else { 1207 } else {
1127 ElMessage.error(res.msg); 1208 ElMessage.error(res.msg);
1128 } 1209 }
...@@ -1634,6 +1715,8 @@ const valueRangeTableListLoading = ref({}); ...@@ -1634,6 +1715,8 @@ const valueRangeTableListLoading = ref({});
1634 1715
1635 const valueRangeTableListData = ref({}); 1716 const valueRangeTableListData = ref({});
1636 1717
1718 const valueCheckFormListRef = ref();
1719
1637 const cancelValueRangeDialog = () => { 1720 const cancelValueRangeDialog = () => {
1638 valueRangeDialogVisible.value = false; 1721 valueRangeDialogVisible.value = false;
1639 } 1722 }
...@@ -1649,24 +1732,25 @@ const submitValueRange = () => { ...@@ -1649,24 +1732,25 @@ const submitValueRange = () => {
1649 let ruleFields: any = [] 1732 let ruleFields: any = []
1650 for (const field of valueTableFields) { 1733 for (const field of valueTableFields) {
1651 if (field.startValue != null && field.endValue == null || (field.endValue != null && field.startValue == null)) { 1734 if (field.startValue != null && field.endValue == null || (field.endValue != null && field.startValue == null)) {
1735 if (dialogSelectSubjectTable.value.enName != table) {
1736 valueCheckFormListRef.value.setSelectList(table, 'enName');
1737 }
1652 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了值域,但范围未填写完整`); 1738 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了值域,但范围未填写完整`);
1653 return; 1739 return;
1654 } 1740 }
1655 if (field.startValue) { 1741 if (field.startValue) {
1656 ruleFields.push(field); 1742 ruleFields.push(field);
1657 } 1743 } else if (field.dataRange) {
1658 if (field.dataRange) {
1659 ruleFields.push(field); 1744 ruleFields.push(field);
1660 } 1745 } else if (field.dateValueRange?.length > 0) {
1661 if (field.dateValueRange?.length > 0) {
1662 field.startValue = field.dateValueRange[0]; 1746 field.startValue = field.dateValueRange[0];
1663 field.endValue = field.dateValueRange[1]; 1747 field.endValue = field.dateValueRange[1];
1664 ruleFields.push(field); 1748 ruleFields.push(field);
1665 } 1749 }
1666 if (ruleFields.length) { 1750 }
1667 v.push(table); 1751 if (ruleFields.length) {
1668 ruleFieldsJson[table] = ruleFields; 1752 v.push(table);
1669 } 1753 ruleFieldsJson[table] = ruleFields;
1670 } 1754 }
1671 } 1755 }
1672 if (!v.length) { 1756 if (!v.length) {
...@@ -1705,32 +1789,32 @@ const compareTableFields = ref({}); //选择对比表对应的字段列表 ...@@ -1705,32 +1789,32 @@ const compareTableFields = ref({}); //选择对比表对应的字段列表
1705 const tableInteMainSelectChange = (val) => { 1789 const tableInteMainSelectChange = (val) => {
1706 mainTableFields.value[val] = []; 1790 mainTableFields.value[val] = [];
1707 getSubjectFields(val).then((res: any) => { 1791 getSubjectFields(val).then((res: any) => {
1708 if (res.code == proxy.$passCode) { 1792 if (res.code == proxy.$passCode) {
1709 mainTableFields.value[val] = res.data?.map(d => { 1793 mainTableFields.value[val] = res.data?.map(d => {
1710 return Object.assign({}, d, { 1794 return Object.assign({}, d, {
1711 label: `${d.enName}(${d.chName})` 1795 label: `${d.enName}(${d.chName})`
1712 }); 1796 });
1713 }) || []; 1797 }) || [];
1714 } else { 1798 } else {
1715 ElMessage.error(res.msg); 1799 ElMessage.error(res.msg);
1716 } 1800 }
1717 }) 1801 })
1718 } 1802 }
1719 1803
1720 /** 对比表下拉选择变化 */ 1804 /** 对比表下拉选择变化 */
1721 const tableInteCompareSelectChange = (val) => { 1805 const tableInteCompareSelectChange = (val) => {
1722 compareTableFields.value[val] = []; 1806 compareTableFields.value[val] = [];
1723 getSubjectFields(val).then((res: any) => { 1807 getSubjectFields(val).then((res: any) => {
1724 if (res.code == proxy.$passCode) { 1808 if (res.code == proxy.$passCode) {
1725 compareTableFields.value[val] = res.data?.map(d => { 1809 compareTableFields.value[val] = res.data?.map(d => {
1726 return Object.assign({}, d, { 1810 return Object.assign({}, d, {
1727 label: `${d.enName}(${d.chName})` 1811 label: `${d.enName}(${d.chName})`
1728 }); 1812 });
1729 }) || []; 1813 }) || [];
1730 } else { 1814 } else {
1731 ElMessage.error(res.msg); 1815 ElMessage.error(res.msg);
1732 } 1816 }
1733 }) 1817 })
1734 } 1818 }
1735 1819
1736 const addIntegralityRules = () => { 1820 const addIntegralityRules = () => {
...@@ -1792,12 +1876,97 @@ const normCheckTableListLoading = ref({}); ...@@ -1792,12 +1876,97 @@ const normCheckTableListLoading = ref({});
1792 1876
1793 const normCheckTableListData = ref({}); 1877 const normCheckTableListData = ref({});
1794 1878
1879 const normCheckFormListRef = ref();
1880
1795 const cancelNormCheckDialog = () => { 1881 const cancelNormCheckDialog = () => {
1796 normCheckDialogVisible.value = false; 1882 normCheckDialogVisible.value = false;
1797 } 1883 }
1798 1884
1799 const submitNormCheck = () => { 1885 const submitNormCheck = () => {
1800 1886 let v: any = [];
1887 let ruleFieldsJson: any = {};
1888 for (const table in normCheckTableListData.value) {
1889 if (!normCheckTableListData.value[table]?.length) {
1890 continue;
1891 }
1892 let valueTableFields = normCheckTableListData.value[table];
1893 let ruleFields: any = []
1894 for (const field of valueTableFields) {
1895 if (!field.checkRule) {
1896 continue;
1897 }
1898 if ((field.checkRule == 'custom_regular_rule' || field.checkRule == 'precision_rule' || field.checkRule == 'date_format_rule') && field.configValue == null) {
1899 if (dialogSelectSubjectTable.value.enName != table) {
1900 normCheckFormListRef.value.setSelectList(table, 'enName');
1901 }
1902 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了校验规则,但未填写配置项`);
1903 return;
1904 }
1905 if (field.checkRule == 'length_rule') {
1906 if (!field.operator) {
1907 if (dialogSelectSubjectTable.value.enName != table) {
1908 normCheckFormListRef.value.setSelectList(table, 'enName');
1909 }
1910 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但未选择操作符`);
1911 return;
1912 }
1913 if (!field.value) {
1914 if (dialogSelectSubjectTable.value.enName != table) {
1915 normCheckFormListRef.value.setSelectList(table, 'enName');
1916 }
1917 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但未填写长度值`);
1918 return;
1919 }
1920 if (field.operator == 'between') {
1921 if (!field.value1) {
1922 if (dialogSelectSubjectTable.value.enName != table) {
1923 normCheckFormListRef.value.setSelectList(table, 'enName');
1924 }
1925 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但长度值未填写完整`);
1926 return;
1927 }
1928 if (parseInt(field.value) >= parseInt(field.value1)) {
1929 if (dialogSelectSubjectTable.value.enName != table) {
1930 normCheckFormListRef.value.setSelectList(table, 'enName');
1931 }
1932 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,介于操作符对应的数值需符合后者大于前者`);
1933 return;
1934 }
1935 field.configValue = field.operator + '#' + field.value + '#' + field.value1;
1936 } else {
1937 field.configValue = field.operator + '#' + field.value;
1938 }
1939 }
1940 ruleFields.push(field);
1941 }
1942 if (ruleFields.length) {
1943 v.push(table);
1944 ruleFieldsJson[table] = ruleFields;
1945 }
1946 }
1947 if (!v.length) {
1948 ElMessage.error('当前未给表字段设置规范检验规则!');
1949 return;
1950 }
1951 let index = 14;
1952 panelList.value[index].defaultValue = {
1953 ruleFields: ruleFieldsJson
1954 };
1955 let str = "";
1956 for (const key in ruleFieldsJson) {
1957 let field = ruleFieldsJson[key];
1958 str = str + (str ? ';' : '') + field.map(f => f.enName).join(',');;
1959 }
1960 let formInline = oldOriginValue.value = Object.assign({
1961 qualityModelGuids: props.toSubjectTables.map(s => s.guid),
1962 parity: 1,
1963 compareWay: 1,
1964 jointly: 'N',
1965 bizState: 'Y'
1966 }, oldOriginValue.value, ruleFormRef.value.formInline);
1967 formInline[`${panelList.value[index].field}`] = str;
1968 setPanelListValue(formInline);
1969 normCheckDialogVisible.value = false;
1801 } 1970 }
1802 1971
1803 const getFormInfo = () => { 1972 const getFormInfo = () => {
...@@ -1836,8 +2005,7 @@ const getFormInfo = () => { ...@@ -1836,8 +2005,7 @@ const getFormInfo = () => {
1836 } else if (formInline.ruleCode == 'value_of_range') { 2005 } else if (formInline.ruleCode == 'value_of_range') {
1837 let v = panelList.value[12].defaultValue; 2006 let v = panelList.value[12].defaultValue;
1838 return Object.assign({}, formInline, v, { 2007 return Object.assign({}, formInline, v, {
1839 ruleName: ruleName, 2008 ruleName: ruleName
1840 ruleFields: v
1841 }); 2009 });
1842 } else if (formInline.ruleCode == 'ref_integrality') { 2010 } else if (formInline.ruleCode == 'ref_integrality') {
1843 let v = panelList.value[13].defaultValue; 2011 let v = panelList.value[13].defaultValue;
...@@ -1845,6 +2013,11 @@ const getFormInfo = () => { ...@@ -1845,6 +2013,11 @@ const getFormInfo = () => {
1845 ruleName: ruleName, 2013 ruleName: ruleName,
1846 ruleFields: v 2014 ruleFields: v
1847 }); 2015 });
2016 } else if (formInline.ruleCode == 'norm_check') {
2017 let v = panelList.value[14].defaultValue;
2018 return Object.assign({}, formInline, v, {
2019 ruleName: ruleName
2020 });
1848 } 2021 }
1849 } 2022 }
1850 2023
...@@ -1984,45 +2157,44 @@ defineExpose({ ...@@ -1984,45 +2157,44 @@ defineExpose({
1984 </div> 2157 </div>
1985 <div class="table-field-right"> 2158 <div class="table-field-right">
1986 <div class="left-title">字段列表详情</div> 2159 <div class="left-title">字段列表详情</div>
1987 <el-table ref="rowTableRef" :data="valueRangeTableListData[dialogSelectSubjectTable.enName]" height="100%" :highlight-current-row="true" stripe 2160 <el-table ref="rowTableRef" :data="valueRangeTableListData[dialogSelectSubjectTable.enName]" height="100%"
1988 v-loading="valueRangeTableListLoading[dialogSelectSubjectTable.enName]" tooltip-effect="light" border 2161 :highlight-current-row="true" stripe v-loading="valueRangeTableListLoading[dialogSelectSubjectTable.enName]"
1989 :style="{ height: 'calc(100% - 32px)', width: '100%', display: 'inline-block' }"> 2162 tooltip-effect="light" border
1990 <el-table-column prop="enName" label="字段名" width="140px" align="left" show-overflow-tooltip> 2163 :style="{ height: 'calc(100% - 32px)', width: '100%', display: 'inline-block' }">
1991 </el-table-column> 2164 <el-table-column prop="enName" label="字段名" width="140px" align="left" show-overflow-tooltip>
1992 <el-table-column prop="chName" label="注释" width="120px" align="left" show-overflow-tooltip> 2165 </el-table-column>
1993 </el-table-column> 2166 <el-table-column prop="chName" label="注释" width="120px" align="left" show-overflow-tooltip>
1994 <el-table-column prop="dataTypeChName" label="数据类型" width="100px" show-overflow-tooltip> 2167 </el-table-column>
1995 <template #default="scope"> 2168 <el-table-column prop="dataTypeChName" label="数据类型" width="100px" show-overflow-tooltip>
1996 <span>{{ scope.row["dataTypeChName"] || '--' }}</span> 2169 <template #default="scope">
1997 </template> 2170 <span>{{ scope.row["dataTypeChName"] || '--' }}</span>
1998 </el-table-column>
1999 <el-table-column label="值域" width="280px" align="left" fixed="right">
2000 <template #default="scope">
2001 <span v-if="scope.row.dataType == 'json' || scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string'">--</span>
2002 <template v-else>
2003 <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>
2004 <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'">
2005 <el-date-picker
2006 v-model="scope.row.dateValueRange"
2007 type="daterange"
2008 range-separator="至"
2009 start-placeholder="开始日期"
2010 end-placeholder="结束日期"
2011 format="YYYY-MM-DD"
2012 value-format="YYYY-MM-DD"
2013 :unlink-panels="false"
2014 :disabled="props.readonly"
2015 />
2016 </div>
2017 <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'">
2018 <el-input :disabled="props.readonly" v-model.trim="scope.row.startValue" placeholder="请输入" clearable> </el-input>
2019 <span class="text"></span>
2020 <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable> </el-input>
2021 </div>
2022 </template> 2171 </template>
2023 </template> 2172 </el-table-column>
2024 </el-table-column> 2173 <el-table-column label="值域" width="280px" align="left" fixed="right">
2025 </el-table> 2174 <template #default="scope">
2175 <span
2176 v-if="scope.row.dataType == 'json' || scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string'">--</span>
2177 <template v-else>
2178 <el-input
2179 v-show="scope.row.dataType == 'varchar' || scope.row.dataType == 'char' || scope.row.dataType == 'bit'"
2180 v-model.trim="scope.row.dataRange" clearable placeholder="多值按照分号;分隔"> </el-input>
2181 <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'">
2182 <el-date-picker v-model="scope.row.dateValueRange" type="daterange" range-separator="至"
2183 start-placeholder="开始日期" end-placeholder="结束日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
2184 :unlink-panels="false" :disabled="props.readonly" />
2185 </div>
2186 <div class="range-sum"
2187 v-show="scope.row.dataType == 'int' || scope.row.dataType == 'decimal' || scope.row.dataType == 'tinyint' || scope.row.dataType == 'timestamp' || scope.row.dataType == 'time'">
2188 <el-input :disabled="props.readonly" v-model.trim="scope.row.startValue" placeholder="请输入" clearable>
2189 </el-input>
2190 <span class="text"></span>
2191 <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable>
2192 </el-input>
2193 </div>
2194 </template>
2195 </template>
2196 </el-table-column>
2197 </el-table>
2026 </div> 2198 </div>
2027 </div> 2199 </div>
2028 2200
...@@ -2035,15 +2207,16 @@ defineExpose({ ...@@ -2035,15 +2207,16 @@ defineExpose({
2035 </el-dialog> 2207 </el-dialog>
2036 2208
2037 <!-- 引用完整性 --> 2209 <!-- 引用完整性 -->
2038 <el-dialog v-model="tableRefIntegralityDialogVisible" title="规则设置" width="750" :modal="true" :close-on-click-modal="false" 2210 <el-dialog v-model="tableRefIntegralityDialogVisible" title="规则设置" width="750" :modal="true"
2039 destroy-on-close align-center> 2211 :close-on-click-modal="false" destroy-on-close align-center>
2040 <div class="row-dialog-content"> 2212 <div class="row-dialog-content">
2041 <el-table ref="rowTableRef" :data="tableRefIntegralityRulesData" height="100%" :highlight-current-row="true" stripe 2213 <el-table ref="rowTableRef" :data="tableRefIntegralityRulesData" height="100%" :highlight-current-row="true"
2042 v-loading="tableRefIntegralityRulesDataLoading" tooltip-effect="light" border 2214 stripe v-loading="tableRefIntegralityRulesDataLoading" tooltip-effect="light" border
2043 :style="{ height: 'calc(100% - 28px)', width: 'auto', 'max-width': '100%', display: 'inline-block' }"> 2215 :style="{ height: 'calc(100% - 28px)', width: 'auto', 'max-width': '100%', display: 'inline-block' }">
2044 <el-table-column prop="mainTable" label="选择主表" width="180px" align="left" show-overflow-tooltip> 2216 <el-table-column prop="mainTable" label="选择主表" width="180px" align="left" show-overflow-tooltip>
2045 <template #default="scope"> 2217 <template #default="scope">
2046 <el-select v-if="!props.readonly" v-model="scope.row['mainTable']" placeholder="请选择" @change="tableInteMainSelectChange"> 2218 <el-select v-if="!props.readonly" v-model="scope.row['mainTable']" placeholder="请选择"
2219 @change="tableInteMainSelectChange">
2047 <el-option v-for="opt in toSubjectTables" :key="opt['guid']" :label="opt['label']" :value="opt['guid']" /> 2220 <el-option v-for="opt in toSubjectTables" :key="opt['guid']" :label="opt['label']" :value="opt['guid']" />
2048 </el-select> 2221 </el-select>
2049 <span v-else>{{ scope.row['mainTableName'] + `(${scope.row['mainTableZhName']})` }}</span> 2222 <span v-else>{{ scope.row['mainTableName'] + `(${scope.row['mainTableZhName']})` }}</span>
...@@ -2051,32 +2224,38 @@ defineExpose({ ...@@ -2051,32 +2224,38 @@ defineExpose({
2051 </el-table-column> 2224 </el-table-column>
2052 <el-table-column prop="mainTableField" label="选择主表字段" width="180px" align="left" show-overflow-tooltip> 2225 <el-table-column prop="mainTableField" label="选择主表字段" width="180px" align="left" show-overflow-tooltip>
2053 <template #default="scope"> 2226 <template #default="scope">
2054 <el-select v-if="!props.readonly" v-model="scope.row['mainTableField']" placeholder="请选择" filterable clearable> 2227 <el-select v-if="!props.readonly" v-model="scope.row['mainTableField']" placeholder="请选择" filterable
2055 <el-option v-for="opt in (scope.row.mainTable ? mainTableFields[scope.row.mainTable] : [])" :key="opt['enName']" :label="opt['label']" :value="opt['enName']" /> 2228 clearable>
2229 <el-option v-for="opt in (scope.row.mainTable ? mainTableFields[scope.row.mainTable] : [])"
2230 :key="opt['enName']" :label="opt['label']" :value="opt['enName']" />
2056 </el-select> 2231 </el-select>
2057 <span v-else>{{ scope.row['mainTableField'] + `(${scope.row['mainTableFieldZhName']})` }}</span> 2232 <span v-else>{{ scope.row['mainTableField'] + `(${scope.row['mainTableFieldZhName']})` }}</span>
2058 </template> 2233 </template>
2059 </el-table-column> 2234 </el-table-column>
2060 <el-table-column prop="compareTableGuid" label="选择对比表" width="180px" align="left" show-overflow-tooltip> 2235 <el-table-column prop="compareTableGuid" label="选择对比表" width="180px" align="left" show-overflow-tooltip>
2061 <template #default="scope"> 2236 <template #default="scope">
2062 <el-tree-select v-if="!props.readonly" ref="compareTreeSelectRef" filterable clearable @change="tableInteCompareSelectChange" 2237 <el-tree-select v-if="!props.readonly" ref="compareTreeSelectRef" filterable clearable
2063 v-model="scope.row['compareTableGuid']" node-key="guid" :data="contrastSubjects" placeholder="请选择" lazy 2238 @change="tableInteCompareSelectChange" v-model="scope.row['compareTableGuid']" node-key="guid"
2064 :load="(node, resolve) => treeSelectLoad(node, resolve)" :default-expanded-keys="contrastSubjects?.length ? [contrastSubjects.find(c => c.children?.some(cc => cc.guid == scope.row['compareSubjectDomainGuid'])).guid, scope.row.compareSubjectDomainGuid] : []" 2239 :data="contrastSubjects" placeholder="请选择" lazy :load="(node, resolve) => treeSelectLoad(node, resolve)"
2240 :default-expanded-keys="contrastSubjects?.length ? [contrastSubjects.find(c => c.children?.some(cc => cc.guid == scope.row['compareSubjectDomainGuid'])).guid, scope.row.compareSubjectDomainGuid] : []"
2065 :auto-expand-parent="true" :default-checked-keys="[scope.row['compareTableGuid']]" 2241 :auto-expand-parent="true" :default-checked-keys="[scope.row['compareTableGuid']]"
2066 :filter-node-method="contrastSubjectInputFilterMethod" :props="{ 2242 :filter-node-method="contrastSubjectInputFilterMethod" :props="{
2067 value: 'guid', 2243 value: 'guid',
2068 label: 'name', 2244 label: 'name',
2069 children: 'children', 2245 children: 'children',
2070 isLeaf: 'isLeaf' 2246 isLeaf: 'isLeaf'
2071 }"> 2247 }">
2072 </el-tree-select> 2248 </el-tree-select>
2073 <span v-else>{{ scope.row['compareTableName'] + `(${scope.row['compareTableZhName']})` }}</span> 2249 <span v-else>{{ scope.row['compareTableName'] + `(${scope.row['compareTableZhName']})` }}</span>
2074 </template> 2250 </template>
2075 </el-table-column> 2251 </el-table-column>
2076 <el-table-column prop="compareEnName" label="选择对比字段" width="180px" align="left" show-overflow-tooltip> 2252 <el-table-column prop="compareEnName" label="选择对比字段" width="180px" align="left" show-overflow-tooltip>
2077 <template #default="scope"> 2253 <template #default="scope">
2078 <el-select v-if="!props.readonly" v-model="scope.row['compareEnName']" placeholder="请选择" filterable clearable> 2254 <el-select v-if="!props.readonly" v-model="scope.row['compareEnName']" placeholder="请选择" filterable
2079 <el-option v-for="opt in (scope.row.compareTableGuid ? compareTableFields[scope.row.compareTableGuid] : [])" :key="opt['enName']" :label="opt['label']" :value="opt['enName']" /> 2255 clearable>
2256 <el-option
2257 v-for="opt in (scope.row.compareTableGuid ? compareTableFields[scope.row.compareTableGuid] : [])"
2258 :key="opt['enName']" :label="opt['label']" :value="opt['enName']" />
2080 </el-select> 2259 </el-select>
2081 <span v-else>{{ scope.row['compareEnName'] + `(${scope.row['compareZhName']})` }}</span> 2260 <span v-else>{{ scope.row['compareEnName'] + `(${scope.row['compareZhName']})` }}</span>
2082 </template> 2261 </template>
...@@ -2088,8 +2267,7 @@ defineExpose({ ...@@ -2088,8 +2267,7 @@ defineExpose({
2088 </el-table-column> 2267 </el-table-column>
2089 </el-table> 2268 </el-table>
2090 <div class="row-add-btn" v-if="!props.readonly"> 2269 <div class="row-add-btn" v-if="!props.readonly">
2091 <el-button link @click="addIntegralityRules" 2270 <el-button link @click="addIntegralityRules" :icon="CirclePlus" v-preReClick>添加规则</el-button>
2092 :icon="CirclePlus" v-preReClick>添加规则</el-button>
2093 </div> 2271 </div>
2094 </div> 2272 </div>
2095 2273
...@@ -2111,53 +2289,66 @@ defineExpose({ ...@@ -2111,53 +2289,66 @@ defineExpose({
2111 </div> 2289 </div>
2112 <div class="table-field-right"> 2290 <div class="table-field-right">
2113 <div class="left-title">字段列表详情</div> 2291 <div class="left-title">字段列表详情</div>
2114 <el-table ref="rowTableRef" :data="normCheckTableListData[dialogSelectSubjectTable.enName]" height="100%" :highlight-current-row="true" stripe 2292 <el-table ref="rowTableRef" :data="normCheckTableListData[dialogSelectSubjectTable.enName]" height="100%"
2115 v-loading="normCheckTableListLoading[dialogSelectSubjectTable.enName]" tooltip-effect="light" border 2293 :highlight-current-row="true" stripe v-loading="normCheckTableListLoading[dialogSelectSubjectTable.enName]"
2116 :style="{ height: 'calc(100% - 32px)', width: '100%', display: 'inline-block' }"> 2294 tooltip-effect="light" border
2117 <el-table-column prop="enName" label="字段名" width="140px" align="left" show-overflow-tooltip> 2295 :style="{ height: 'calc(100% - 32px)', width: '100%', display: 'inline-block' }">
2118 </el-table-column> 2296 <el-table-column prop="enName" label="字段名" width="140px" align="left" show-overflow-tooltip fixed>
2119 <el-table-column prop="chName" label="注释" width="120px" align="left" show-overflow-tooltip> 2297 </el-table-column>
2120 </el-table-column> 2298 <el-table-column prop="chName" label="注释" width="120px" align="left" show-overflow-tooltip>
2121 <el-table-column prop="dataTypeChName" label="数据类型" width="100px" show-overflow-tooltip> 2299 </el-table-column>
2122 <template #default="scope"> 2300 <el-table-column prop="dataTypeChName" label="数据类型" width="100px" show-overflow-tooltip>
2123 <span>{{ scope.row["dataTypeChName"] || '--' }}</span> 2301 <template #default="scope">
2124 </template> 2302 <span>{{ scope.row["dataTypeChName"] || '--' }}</span>
2125 </el-table-column>
2126 <el-table-column prop="checkRule" label="选择检验规则" width="150px" align="left" show-overflow-tooltip>
2127 <template #default="scope">
2128 <el-select v-if="!props.readonly" v-model="scope.row['checkRule']" placeholder="请选择" filterable clearable>
2129 <el-option v-for="opt in checkRulesList" :key="opt['paramValue']" :label="opt['paramName']" :value="opt['paramValue']" />
2130 </el-select>
2131 <span v-else>{{ scope.row.checkRuleName ?? '--' }}</span>
2132 </template>
2133 </el-table-column>
2134 <el-table-column label="填写配置项" width="200px" align="left">
2135 <template #default="scope">
2136 <span v-if="!scope.row.checkRule">--</span>
2137 <template v-else>
2138 <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>
2139 <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'">
2140 <el-date-picker
2141 v-model="scope.row.dateValueRange"
2142 type="daterange"
2143 range-separator="至"
2144 start-placeholder="开始日期"
2145 end-placeholder="结束日期"
2146 format="YYYY-MM-DD"
2147 value-format="YYYY-MM-DD"
2148 :unlink-panels="false"
2149 :disabled="props.readonly"
2150 />
2151 </div>
2152 <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'">
2153 <el-input :disabled="props.readonly" v-model.trim="scope.row.startValue" placeholder="请输入" clearable> </el-input>
2154 <span class="text"> </span>
2155 <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable> </el-input>
2156 </div>
2157 </template> 2303 </template>
2158 </template> 2304 </el-table-column>
2159 </el-table-column> 2305 <el-table-column prop="checkRule" label="选择检验规则" width="150px" align="left" show-overflow-tooltip>
2160 </el-table> 2306 <template #default="scope">
2307 <el-select v-if="!props.readonly || (scope.row.dataType == 'text' || scope.row.dataType == 'json')"
2308 v-model="scope.row['checkRule']" placeholder="请选择" filterable clearable>
2309 <el-option v-for="opt in rulesListByType[scope.row.dataType]" :key="opt['paramValue']"
2310 :label="opt['paramName']" :value="opt['paramValue']" />
2311 </el-select>
2312 <span v-else>{{ scope.row.checkRuleName ?? '--' }}</span>
2313 </template>
2314 </el-table-column>
2315 <el-table-column label="填写配置项" width="200px" align="left">
2316 <template #default="scope">
2317 <span v-if="props.readonly">{{ scope.row.configValue ?? '--' }}</span>
2318 <span
2319 v-else-if="!scope.row.checkRule || ['id_card_rule', 'phone_number_rule', 'en_rule', 'ch_rule', 'num_value_rule'].includes(scope.row.checkRule)">--</span>
2320 <template v-else>
2321 <el-input v-show="scope.row.checkRule == 'custom_regular_rule'" v-model.trim="scope.row.configValue"
2322 clearable placeholder="请输入"> </el-input>
2323 <el-input v-show="scope.row.checkRule == 'precision_rule'" v-model.trim="scope.row.configValue"
2324 clearable placeholder="请输入" @input="(val) => scope.row.configValue = val.replace(/\D/g, '')">
2325 </el-input>
2326 <el-select v-show="scope.row.checkRule == 'date_format_rule'" v-model="scope.row.configValue"
2327 placeholder="请选择" filterable clearable>
2328 <el-option
2329 v-for="opt in scope.row.dataType == 'date' ? [{ value: 'YYYY-MM-DD' }, { value: 'YYYY/MM/DD' }] : [{ value: 'YYYY-MM-DD HH:MM:SS' }, { value: 'YYYY-MM-DD HH:MM:SS.SSS' }]"
2330 :value="opt['value']" />
2331 </el-select>
2332 <div class="range-sum" v-show="scope.row.checkRule == 'length_rule'">
2333 <el-select v-model="scope.row.operator" placeholder="请选择" filterable clearable
2334 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }">
2335 <el-option
2336 v-for="opt in [{ value: '=' }, { value: '>' }, { value: '<' }, { value: '>=' }, { value: '<=' }, { value: 'between', label: '介于' }]"
2337 :key="opt['value']" :label="opt['label']" :value="opt['value']" />
2338 </el-select>
2339 <el-input :disabled="props.readonly" v-model.trim="scope.row.value" placeholder="请输入" clearable
2340 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }"
2341 @input="(val) => scope.row.value = val.replace(/\D/g, '')">
2342 </el-input>
2343 <el-input v-show="scope.row.operator == 'between'" :disabled="props.readonly"
2344 v-model.trim="scope.row.value1" placeholder="请输入" clearable :style="{ width: 'calc(33% - 2px)' }"
2345 @input="(val) => scope.row.value1 = val.replace(/\D/g, '')">
2346 </el-input>
2347 </div>
2348 </template>
2349 </template>
2350 </el-table-column>
2351 </el-table>
2161 </div> 2352 </div>
2162 </div> 2353 </div>
2163 2354
...@@ -2191,11 +2382,11 @@ defineExpose({ ...@@ -2191,11 +2382,11 @@ defineExpose({
2191 :load="(node, resolve) => treeSelectLoad(node, resolve)" :default-expanded-keys="defaultExpandedKeys" 2382 :load="(node, resolve) => treeSelectLoad(node, resolve)" :default-expanded-keys="defaultExpandedKeys"
2192 :auto-expand-parent="true" :default-checked-keys="[props.value.contrastSubjectGuid]" 2383 :auto-expand-parent="true" :default-checked-keys="[props.value.contrastSubjectGuid]"
2193 :filter-node-method="contrastSubjectInputFilterMethod" :props="{ 2384 :filter-node-method="contrastSubjectInputFilterMethod" :props="{
2194 value: 'guid', 2385 value: 'guid',
2195 label: 'name', 2386 label: 'name',
2196 children: 'children', 2387 children: 'children',
2197 isLeaf: 'isLeaf' 2388 isLeaf: 'isLeaf'
2198 }"> 2389 }">
2199 </el-tree-select> 2390 </el-tree-select>
2200 <span v-else>{{ scope.row['contrastSubjectName'] + `(${scope.row['contrastSubjectZhName']})` }}</span> 2391 <span v-else>{{ scope.row['contrastSubjectName'] + `(${scope.row['contrastSubjectZhName']})` }}</span>
2201 </template> 2392 </template>
...@@ -2282,12 +2473,13 @@ defineExpose({ ...@@ -2282,12 +2473,13 @@ defineExpose({
2282 padding: 2px 0; 2473 padding: 2px 0;
2283 height: 36px; 2474 height: 36px;
2284 } 2475 }
2285 } 2476 }
2286 2477
2287 .range-sum { 2478 .range-sum {
2288 width: 100%; 2479 width: 100%;
2289 display: inline-flex; 2480 display: inline-flex;
2290 align-items: center; 2481 align-items: center;
2482 justify-content: SPACE-BETWEEN;
2291 2483
2292 .text { 2484 .text {
2293 margin: 0px 4px; 2485 margin: 0px 4px;
......
...@@ -332,6 +332,33 @@ const transformRulesInfo = (info: any) => { ...@@ -332,6 +332,33 @@ const transformRulesInfo = (info: any) => {
332 })] 332 })]
333 })); 333 }));
334 } 334 }
335 } else if (info.ruleCode == 'norm_check') {
336 let subjectTables = toSubjectTables.value;
337 for (const ds in info.ruleFields) {
338 let fields = info.ruleFields[ds];
339 let tableInfo = subjectTables.find(t => t.enName === ds);
340 modelRules.push(Object.assign({}, {
341 modelGroupGuid: modelGroupGuid.value,
342 name: tableInfo.chName,
343 subjectName: tableInfo.enName,
344 subjectGuid: tableInfo.guid,
345 dataSourceGuid: tableInfo.dataSourceGuid,
346 databaseName: tableInfo.dataServerName,
347 modelRuleConfList: [Object.assign({}, info, {
348 ruleField: fields.map(f => {
349 return {
350 guid: f.guid,
351 enName: f.enName,
352 chName: f.chName,
353 dataType: f.dataType,
354 checkRule: f.checkRule,
355 configValue: f.configValue
356 }
357 }),
358 ruleFields: ''
359 })]
360 }));
361 }
335 } else if (info.ruleCode == 'ref_integrality') { 362 } else if (info.ruleCode == 'ref_integrality') {
336 let subjectTables = toSubjectTables.value; 363 let subjectTables = toSubjectTables.value;
337 info.ruleFields.forEach(row => { 364 info.ruleFields.forEach(row => {
......
...@@ -140,6 +140,25 @@ const transformRulesInfo = (info: any) => { ...@@ -140,6 +140,25 @@ const transformRulesInfo = (info: any) => {
140 }), 140 }),
141 ruleFields: '' 141 ruleFields: ''
142 }); 142 });
143 } else if (info.ruleCode == 'norm_check') {
144 let subjectName = detailInfo.value.subjectName;
145 let fields = info.ruleFields[subjectName];
146 return Object.assign({}, info, {
147 guid: ruleGuid,
148 qualityModelGuid: detailInfo.value.qualityModelGuid,
149 ruleCode: detailInfo.value.ruleCode,
150 ruleField: fields.map(f => {
151 return {
152 guid: f.guid,
153 enName: f.enName,
154 chName: f.chName,
155 dataType: f.dataType,
156 checkRule: f.checkRule,
157 configValue: f.configValue
158 }
159 }),
160 ruleFields: ''
161 });
143 } else if (info.ruleCode == 'ref_integrality') { 162 } else if (info.ruleCode == 'ref_integrality') {
144 return Object.assign({}, info, { 163 return Object.assign({}, info, {
145 guid: ruleGuid, 164 guid: ruleGuid,
......
...@@ -135,6 +135,24 @@ const transformRulesInfo = (info) => { ...@@ -135,6 +135,24 @@ const transformRulesInfo = (info) => {
135 }), 135 }),
136 ruleFields: '' 136 ruleFields: ''
137 }); 137 });
138 } else if (info.ruleCode == 'norm_check') {
139 let subjectName = modelDetailInfo.value.subjectName;
140 let fields = info.ruleFields[subjectName];
141 return Object.assign({}, info, {
142 qualityModelGuid: modelGuid,
143 ruleCode: info.ruleCode,
144 ruleField: fields.map(f => {
145 return {
146 guid: f.guid,
147 enName: f.enName,
148 chName: f.chName,
149 dataType: f.dataType,
150 checkRule: f.checkRule,
151 configValue: f.configValue
152 }
153 }),
154 ruleFields: ''
155 });
138 } else if (info.ruleCode == 'ref_integrality') { 156 } else if (info.ruleCode == 'ref_integrality') {
139 return Object.assign({}, info, { 157 return Object.assign({}, info, {
140 qualityModelGuid: modelGuid, 158 qualityModelGuid: modelGuid,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!