9ca12c6e by lihua

fix: 修复匿名化处理问题

1 parent 2aa32e0f
...@@ -437,40 +437,49 @@ const parseFileData = (fileRaw) => { ...@@ -437,40 +437,49 @@ const parseFileData = (fileRaw) => {
437 sampleTableFields.value = []; 437 sampleTableFields.value = [];
438 sampleTableData.value = []; 438 sampleTableData.value = [];
439 } else { 439 } else {
440 const res = await chTransformEn(json[0]); 440 try {
441 let fields = res.data || []; 441 const res: any = await chTransformEn(json[0]);
442 sampleTableFields.value = fields?.map((j, index) => { 442 if (res?.code != proxy.$passCode) {
443 return { 443 sampleTableDataLoading.value = false;
444 index: index, 444 proxy.$ElMessage.error(res.msg);
445 enName: j.enName + '', 445 return;
446 chName: j.chName + '',
447 dataType: 'varchar'
448 } 446 }
449 }) || []; 447 let fields = res.data || [];
450 parseFileDataSum.value = json; 448 sampleTableFields.value = fields?.map((j, index) => {
451 /** 粗略算出字段类型 */ 449 return {
452 json.slice(1, 10).forEach((info, row) => { 450 index: index,
453 json[0].forEach((name, col) => { 451 enName: j.enName + '',
454 if (info[col] === "" || info[col] == null || sampleTableFields.value[col].dataType != 'varchar') { 452 chName: j.chName + '',
455 return; 453 dataType: 'varchar'
456 } else { 454 }
457 var cellRef = XLSX.utils.encode_cell({ r: row + 1, c: col }); 455 }) || [];
458 var cell = sheet[cellRef]; 456 parseFileDataSum.value = json;
459 let v = cell.w || info[col]; 457 /** 粗略算出字段类型 */
460 let isNum = cell.t == 'n'; 458 json.slice(1, 10).forEach((info, row) => {
461 if (isNum) { 459 json[0].forEach((name, col) => {
462 if (v.includes('.') && sampleTableFields.value[col].dataType != 'decimal') { 460 if (info[col] === "" || info[col] == null || sampleTableFields.value[col].dataType != 'varchar') {
463 sampleTableFields.value[col].dataType = 'decimal'; 461 return;
464 } else { 462 } else {
465 sampleTableFields.value[col].dataType = 'int'; 463 var cellRef = XLSX.utils.encode_cell({ r: row + 1, c: col });
464 var cell = sheet[cellRef];
465 let v = cell.w || info[col];
466 let isNum = cell.t == 'n';
467 if (isNum) {
468 if (v.includes('.') && sampleTableFields.value[col].dataType != 'decimal') {
469 sampleTableFields.value[col].dataType = 'decimal';
470 } else {
471 sampleTableFields.value[col].dataType = 'int';
472 }
466 } 473 }
467 } 474 }
468 } 475 });
469 }); 476 })
470 }) 477 transferSampleData();
471 transferSampleData(); 478 sampleTableDataLoading.value = false;
479 } catch (error) {
480 sampleTableDataLoading.value = false;
481 }
472 } 482 }
473 sampleTableDataLoading.value = false;
474 }); 483 });
475 } 484 }
476 485
...@@ -745,82 +754,85 @@ onBeforeMount(() => { ...@@ -745,82 +754,85 @@ onBeforeMount(() => {
745 dataSelectInfoItems.value[4].visible = dataSource == 1; 754 dataSelectInfoItems.value[4].visible = dataSource == 1;
746 dataSelectInfoItems.value[5].visible = dataSource == 1; 755 dataSelectInfoItems.value[5].visible = dataSource == 1;
747 dataSelectInfoItems.value[6].visible = dataSource == 2; 756 dataSelectInfoItems.value[6].visible = dataSource == 2;
748 //文件解析 757 try {
749 if (dataSource == 2) { 758 //文件解析
750 let url = detailInfo.value.filePath?.url; 759 if (dataSource == 2) {
751 sampleTableDataLoading.value = true; 760 let url = detailInfo.value.filePath?.url;
752 const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(url).fileName); 761 sampleTableDataLoading.value = true;
753 if (!refSignInfo?.data) { 762 const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(url).fileName);
754 fullscreenLoading.value = false; 763 if (!refSignInfo?.data) {
755 refSignInfo?.msg && ElMessage.error(refSignInfo?.msg); 764 fullscreenLoading.value = false;
756 return; 765 refSignInfo?.msg && ElMessage.error(refSignInfo?.msg);
757 } 766 return;
758 obsDownloadRequest(refSignInfo?.data).then((res: any) => { 767 }
768 const fileRes: any = await obsDownloadRequest(refSignInfo?.data);
759 sampleTableDataLoading.value = false; 769 sampleTableDataLoading.value = false;
760 if (res && !res.msg) { 770 if (fileRes && !fileRes.msg) {
761 parseFileData(res); 771 parseFileData(fileRes);
762 } else { 772 } else {
763 res?.msg && ElMessage.error(res?.msg); 773 fileRes?.msg && ElMessage.error(fileRes?.msg);
774 }
775 // 会出现从文件切换到数据库时没有数据库列表的问题。
776 const res: any = await getDatabase({ connectStatus: 1 });
777 if (res?.code == proxy.$passCode) {
778 dataSourceList.value = res.data || [];
779 let item = dataSelectInfoItems.value.find(item => item.field == 'dataSourceGuid');
780 item && (item.options = dataSourceList.value);
781 } else {
782 proxy.$ElMessage.error(res.msg);
764 } 783 }
765 })
766 // 会出现从文件切换到数据库时没有数据库列表的问题。
767 const res: any = await getDatabase({ connectStatus: 1 });
768 if (res?.code == proxy.$passCode) {
769 dataSourceList.value = res.data || [];
770 let item = dataSelectInfoItems.value.find(item => item.field == 'dataSourceGuid');
771 item && (item.options = dataSourceList.value);
772 } else {
773 proxy.$ElMessage.error(res.msg);
774 }
775 } else {
776 const res: any = await getDatabase({ connectStatus: 1 });
777 if (res?.code == proxy.$passCode) {
778 dataSourceList.value = res.data || [];
779 let item = dataSelectInfoItems.value.find(item => item.field == 'dataSourceGuid');
780 item && (item.options = dataSourceList.value);
781 } else {
782 proxy.$ElMessage.error(res.msg);
783 }
784 currDatasourceSelect.value = dataSourceList.value.find(d => d.guid == detailInfo.value.dataSourceGuid);
785 const tableRes: any = await getDsTableByDs({
786 pageSize: -1,
787 pageIndex: 1,
788 dataSourceGuid: detailInfo.value.dataSourceGuid,
789 database: currDatasourceSelect.value.databaseNameEn,
790 databaseType: currDatasourceSelect.value.databaseType,
791 tableName: '',
792 hadFlag: false
793 });
794 if (tableRes?.code == proxy.$passCode) {
795 dsTableList.value = tableRes.data?.records || [];
796 let item = dataSelectInfoItems.value.find(item => item.field == 'tableName');
797 item && (item.options = dsTableList.value);
798 } else { 784 } else {
799 proxy.$ElMessage.error(tableRes.msg); 785 const res: any = await getDatabase({ connectStatus: 1 });
800 } 786 if (res?.code == proxy.$passCode) {
801 getDsTableFieldColumn({ 787 dataSourceList.value = res.data || [];
802 pageSize: 50, 788 let item = dataSelectInfoItems.value.find(item => item.field == 'dataSourceGuid');
803 pageIndex: 1, 789 item && (item.options = dataSourceList.value);
804 dataSourceGuid: currDatasourceSelect.value.guid,
805 database: currDatasourceSelect.value.databaseNameEn,
806 databaseType: currDatasourceSelect.value.databaseType,
807 tableName: detailInfo.value.tableName,
808 }).then((res: any) => {
809 if (res.code == proxy.$passCode) {
810 sampleTableFields.value = res.data?.map(d => {
811 d.fieldDataType = d.dataType;
812 d.enName = d.columnName;
813 d.chName = d.columnZhName;
814 return d;
815 }) || [];
816 /** 判断有抽样数据,需要查询接口 */
817 getSampleDataByDsTable();
818 } else { 790 } else {
819 ElMessage.error(res.msg); 791 proxy.$ElMessage.error(res.msg);
820 } 792 }
821 }); 793 currDatasourceSelect.value = dataSourceList.value.find(d => d.guid == detailInfo.value.dataSourceGuid);
794 const tableRes: any = await getDsTableByDs({
795 pageSize: -1,
796 pageIndex: 1,
797 dataSourceGuid: detailInfo.value.dataSourceGuid,
798 database: currDatasourceSelect.value.databaseNameEn,
799 databaseType: currDatasourceSelect.value.databaseType,
800 tableName: '',
801 hadFlag: false
802 });
803 if (tableRes?.code == proxy.$passCode) {
804 dsTableList.value = tableRes.data?.records || [];
805 let item = dataSelectInfoItems.value.find(item => item.field == 'tableName');
806 item && (item.options = dsTableList.value);
807 } else {
808 proxy.$ElMessage.error(tableRes.msg);
809 }
810 getDsTableFieldColumn({
811 pageSize: 50,
812 pageIndex: 1,
813 dataSourceGuid: currDatasourceSelect.value.guid,
814 database: currDatasourceSelect.value.databaseNameEn,
815 databaseType: currDatasourceSelect.value.databaseType,
816 tableName: detailInfo.value.tableName,
817 }).then((res: any) => {
818 if (res.code == proxy.$passCode) {
819 sampleTableFields.value = res.data?.map(d => {
820 d.fieldDataType = d.dataType;
821 d.enName = d.columnName;
822 d.chName = d.columnZhName;
823 return d;
824 }) || [];
825 /** 判断有抽样数据,需要查询接口 */
826 getSampleDataByDsTable();
827 } else {
828 ElMessage.error(res.msg);
829 }
830 });
831 }
832 fullscreenLoading.value = false;
833 } catch (error) {
834 fullscreenLoading.value = false;
822 } 835 }
823 fullscreenLoading.value = false;
824 } else { 836 } else {
825 fullscreenLoading.value = false; 837 fullscreenLoading.value = false;
826 proxy.$ElMessage.error(res.msg); 838 proxy.$ElMessage.error(res.msg);
......
...@@ -139,6 +139,8 @@ const ruleModelTableInfo = ref({ ...@@ -139,6 +139,8 @@ const ruleModelTableInfo = ref({
139 return rd; 139 return rd;
140 }) || []; 140 }) || [];
141 } 141 }
142 fieldRulesEndFormInfo.value.formInfo.items[0].default = '';
143 fieldRulesEndFormInfo.value.formInfo.items[1].default = '';
142 if (!row.desensitiveRuleCode) { 144 if (!row.desensitiveRuleCode) {
143 drawerInfo.value.container.contents = [fieldRulesFormInfo.value]; 145 drawerInfo.value.container.contents = [fieldRulesFormInfo.value];
144 } else { 146 } else {
...@@ -450,6 +452,8 @@ const addRowRules = () => { ...@@ -450,6 +452,8 @@ const addRowRules = () => {
450 fieldChName: '', 452 fieldChName: '',
451 upperOperator: '≤' 453 upperOperator: '≤'
452 }]; 454 }];
455 fieldRulesEndFormInfo.value.formInfo.items[0].default = '';
456 fieldRulesEndFormInfo.value.formInfo.items[1].default = '';
453 drawerInfo.value.container.contents = [fieldRulesFormInfo.value, fieldRulesEndFormInfo.value]; 457 drawerInfo.value.container.contents = [fieldRulesFormInfo.value, fieldRulesEndFormInfo.value];
454 } 458 }
455 459
...@@ -475,13 +479,19 @@ const drawerBtnClick = async (btn, info) => { ...@@ -475,13 +479,19 @@ const drawerBtnClick = async (btn, info) => {
475 let desensitiveRuleDetailInfo = getDesensitiveRuleDetailInfo(info); 479 let desensitiveRuleDetailInfo = getDesensitiveRuleDetailInfo(info);
476 // 脱敏规则为掩盖,字符,区间替换存在时需要调用接口检验 480 // 脱敏规则为掩盖,字符,区间替换存在时需要调用接口检验
477 if (info.desensitiveRuleCode == 'DISSEMBLE' || info.desensitiveRuleCode == 'CHARREPLACE' || info.desensitiveRuleCode == 'RANGEREPLACE') { 481 if (info.desensitiveRuleCode == 'DISSEMBLE' || info.desensitiveRuleCode == 'CHARREPLACE' || info.desensitiveRuleCode == 'RANGEREPLACE') {
478 let res: any = await validateAnonRule({ 482 try {
479 desensitiveRuleCode: info.desensitiveRuleCode, 483 let res: any = await validateAnonRule({
480 value: '', 484 desensitiveRuleCode: info.desensitiveRuleCode,
481 desensitiveRuleDetail: desensitiveRuleDetailInfo 485 value: '',
482 }) 486 desensitiveRuleDetail: desensitiveRuleDetailInfo
483 if (res?.code != proxy.$passCode) { 487 })
484 proxy.$ElMessage.error(res.msg); 488 if (res?.code != proxy.$passCode) {
489 proxy.$ElMessage.error(res.msg);
490 drawerInfo.value.footer.btns[1].loading = false;
491 return;
492 }
493 } catch (error) {
494 drawerInfo.value.footer.btns[1].loading = false;
485 } 495 }
486 } 496 }
487 drawerInfo.value.footer.btns[1].loading = false; 497 drawerInfo.value.footer.btns[1].loading = false;
...@@ -553,6 +563,15 @@ const drawerSelectChange = (val, row, info) => { ...@@ -553,6 +563,15 @@ const drawerSelectChange = (val, row, info) => {
553 } 563 }
554 } 564 }
555 }); 565 });
566 if (val == 'RANGEREPLACE') {
567 let fieldName = info.fieldName;
568 let fieldChName = fieldName && props.fieldNameList.find(f => f.enName == fieldName)?.chName;
569 rangeReplaceRuleDetails.value.forEach(r => {
570 if (fieldChName && r.fieldChName != fieldChName) {
571 r.fieldChName = fieldChName;
572 }
573 });
574 }
556 if (!val) { 575 if (!val) {
557 drawerInfo.value.container.contents = [fieldRulesFormInfo.value]; 576 drawerInfo.value.container.contents = [fieldRulesFormInfo.value];
558 } else { 577 } else {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!