68d3dae1 by lihua

匿名化评测对象存储支持选择索引数据源,表和字段

1 parent fad9b555
...@@ -562,7 +562,55 @@ const dataSelectInfoItems = ref([{ ...@@ -562,7 +562,55 @@ const dataSelectInfoItems = ref([{
562 col: 'wid60', 562 col: 'wid60',
563 visible: false, 563 visible: false,
564 field: 'file', 564 field: 'file',
565 },]); 565 }, {
566 label: '索引数据源',
567 tip: '',
568 type: 'select',
569 required: false,
570 default: '',
571 block: false,
572 visible: false,
573 filterable: true,
574 props: {
575 label: 'databaseNameZh',
576 value: 'guid'
577 },
578 clearable: true,
579 field: 'indexDataSourceGuid',
580 options: [],
581 }, {
582 label: '索引数据表',
583 tip: '',
584 type: 'select',
585 required: false,
586 default: '',
587 block: false,
588 visible: false,
589 filterable: true,
590 field: 'indexTableName',
591 props: {
592 label: 'tableComment',
593 value: 'tableName'
594 },
595 clearable: true,
596 options: [],
597 }, {
598 label: '索引字段',
599 tip: '',
600 type: 'select',
601 required: false,
602 default: '',
603 block: false,
604 visible: false,
605 field: 'indexFieldName',
606 options: [],
607 filterable: true,
608 clearable: true,
609 props: {
610 label: 'chName',
611 value: 'enName'
612 },
613 }]);
566 614
567 const dataSelectInfoFormRules = ref({ 615 const dataSelectInfoFormRules = ref({
568 taskName: [required('请输入数据集名称')], 616 taskName: [required('请输入数据集名称')],
...@@ -571,6 +619,8 @@ const dataSelectInfoFormRules = ref({ ...@@ -571,6 +619,8 @@ const dataSelectInfoFormRules = ref({
571 dataSourceGuid: [required('请选择数据源')], 619 dataSourceGuid: [required('请选择数据源')],
572 handleType: [required('请选择处理类型')], 620 handleType: [required('请选择处理类型')],
573 tableName: [required('请选择数据表')], 621 tableName: [required('请选择数据表')],
622 // indexTableName: [required('请选择索引数据表')],
623 // indexFieldName: [required('请选择索引字段')],
574 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], 624 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }],
575 file: [{ 625 file: [{
576 validator: (rule: any, value: any, callback: any) => { 626 validator: (rule: any, value: any, callback: any) => {
...@@ -612,6 +662,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -612,6 +662,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
612 parseFileDataSum.value = []; 662 parseFileDataSum.value = [];
613 sampleTableData.value = []; 663 sampleTableData.value = [];
614 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) 664 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] }))
665 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
666 item && (item.options = []);
615 return; 667 return;
616 } 668 }
617 //清除数据表得值,重新获取下拉列表 669 //清除数据表得值,重新获取下拉列表
...@@ -625,7 +677,10 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -625,7 +677,10 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
625 hadFlag: false 677 hadFlag: false
626 }); 678 });
627 if (res.code == proxy.$passCode) { 679 if (res.code == proxy.$passCode) {
628 dsTableList.value = res.data?.records || []; 680 dsTableList.value = res.data?.records?.map(d => {
681 d.tableComment = d.tableComment || d.tableName;
682 return d;
683 }) || [];
629 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) 684 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] }))
630 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName'); 685 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
631 item && (item.options = dsTableList.value); 686 item && (item.options = dsTableList.value);
...@@ -666,12 +721,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -666,12 +721,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
666 // 第一种匿名处理类型是不可以选择obs类型的。 721 // 第一种匿名处理类型是不可以选择obs类型的。
667 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { 722 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) {
668 formInfo.dataSourceGuid = ''; 723 formInfo.dataSourceGuid = '';
724 formInfo.tableName = '';
725 formInfo.indexDataSourceGuid = '';
726 formInfo.indexTableName = '';
727 formInfo.indexFieldName = '';
728 currDatasourceSelect.value = {};
729 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
730 item && (item.options = []);
669 } 731 }
670 setDataSelectFormItems(formInfo); 732 setDataSelectFormItems(formInfo);
733 } else if (row.field == 'indexDataSourceGuid') {
734 // 清空索引数据表和索引字段
735 setDataSelectFormItems(Object.assign({}, formInfo, { indexTableName: '', indexFieldName: '' }));
736 let indexTableItem = dataSelectInfoItems.value.find(d => d.field == 'indexTableName');
737 let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName');
738 if (indexTableItem) {
739 indexTableItem.options = [];
740 }
741 if (indexFieldItem) {
742 indexFieldItem.options = [];
743 }
744 if (!val) {
745 // 未选择索引数据源,三个字段都不必填
746 indexTableItem && (indexTableItem.required = false);
747 indexFieldItem && (indexFieldItem.required = false);
748 return;
749 }
750 // 选择了索引数据源,索引数据表和索引字段必填
751 if (indexTableItem) {
752 indexTableItem.required = true;
753 }
754 if (indexFieldItem) {
755 indexFieldItem.required = true;
756 }
757 // 获取索引数据源的表列表
758 let dsInfo = dataSourceList.value.find(d => d.guid == val);
759 if (!dsInfo) return;
760 const res: any = await getDsTableByDs({
761 pageSize: -1,
762 pageIndex: 1,
763 dataSourceGuid: val,
764 database: dsInfo.databaseNameEn,
765 databaseType: dsInfo.databaseType,
766 tableName: '',
767 hadFlag: false
768 });
769 if (res.code == proxy.$passCode) {
770 if (indexTableItem) {
771 indexTableItem.options = res.data?.records?.map(d => {
772 d.tableComment = d.tableComment || d.tableName;
773 return d;
774 }) || [];
775 }
776 } else {
777 proxy.$ElMessage.error(res.msg);
778 }
779 } else if (row.field == 'indexTableName') {
780 // 清空索引字段
781 setDataSelectFormItems(Object.assign({}, formInfo, { indexFieldName: '' }));
782 let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName');
783 if (indexFieldItem) {
784 indexFieldItem.options = [];
785 }
786 if (!val) return;
787 // 获取索引数据表的字段列表
788 let indexDsGuid = formInfo.indexDataSourceGuid;
789 let dsInfo = dataSourceList.value.find(d => d.guid == indexDsGuid);
790 if (!dsInfo) return;
791 const res: any = await getDsTableFieldColumn({
792 pageSize: 50,
793 pageIndex: 1,
794 dataSourceGuid: indexDsGuid,
795 database: dsInfo.databaseNameEn,
796 databaseType: dsInfo.databaseType,
797 tableName: val,
798 });
799 if (res?.code == proxy.$passCode) {
800 if (indexFieldItem) {
801 // 使用与qualifiedIdentifier相同的格式:enName和chName
802 indexFieldItem.options = res.data?.map(d => ({
803 enName: d.columnName,
804 chName: d.columnZhName || d.columnName
805 })) || [];
806 }
807 } else {
808 res?.msg && proxy.$ElMessage.error(res.msg);
809 }
671 } 810 }
672 } 811 }
673 812
674 const setDataSelectFormItems = (info, isDetail = false) => { 813 const setDataSelectFormItems = (info, isDetail = false) => {
814 // 获取不包含对象存储的数据源列表
815 let dsExcludeObs = dataSourceList.value.filter(d => !d.storageType || d.storageType == '1');
675 dataSelectInfoItems.value.forEach(item => { 816 dataSelectInfoItems.value.forEach(item => {
676 item.default = info[item.field]; 817 item.default = info[item.field];
677 if (item.field == 'coverageArea') { 818 if (item.field == 'coverageArea') {
...@@ -708,7 +849,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { ...@@ -708,7 +849,19 @@ const setDataSelectFormItems = (info, isDetail = false) => {
708 } else if (item.field == 'tableName') { 849 } else if (item.field == 'tableName') {
709 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 850 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择
710 } else if (item.field == 'dataSourceGuid') { 851 } else if (item.field == 'dataSourceGuid') {
711 item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) 852 item.options = info.handleType == '02' ? dataSourceList.value : dsExcludeObs;
853 } else if (item.field == 'indexDataSourceGuid') {
854 item.options = dsExcludeObs;
855 item.visible = currDatasourceSelect.value?.storageType == '2';
856 } else if (['indexTableName', 'indexFieldName'].includes(item.field)) {
857 item.visible = currDatasourceSelect.value?.storageType == '2';
858 item.required = !!info.indexDataSourceGuid;
859 if (item.required) {
860 dataSelectInfoFormRules.value[item.field] = [required(`请选择${item.label}`)];
861 } else {
862 dataSelectInfoFormRules.value[item.field] = [];
863 }
864 item.options = info.indexDataSourceGuid ? item.options : [];
712 } 865 }
713 }); 866 });
714 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; 867 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value;
...@@ -1681,7 +1834,10 @@ onBeforeMount(() => { ...@@ -1681,7 +1834,10 @@ onBeforeMount(() => {
1681 hadFlag: false 1834 hadFlag: false
1682 }); 1835 });
1683 if (tableRes?.code == proxy.$passCode) { 1836 if (tableRes?.code == proxy.$passCode) {
1684 dsTableList.value = tableRes.data?.records || []; 1837 dsTableList.value = tableRes.data?.records?.map(d => {
1838 d.tableComment = d.tableComment || d.tableName;
1839 return d;
1840 }) || [];
1685 let item = dataSelectInfoItems.value.find(item => item.field == 'tableName'); 1841 let item = dataSelectInfoItems.value.find(item => item.field == 'tableName');
1686 item && (item.options = dsTableList.value); 1842 item && (item.options = dsTableList.value);
1687 } else { 1843 } else {
...@@ -1709,6 +1865,47 @@ onBeforeMount(() => { ...@@ -1709,6 +1865,47 @@ onBeforeMount(() => {
1709 } 1865 }
1710 }); 1866 });
1711 } else { 1867 } else {
1868 let currIndexDatasourceSelect = detailInfo.value.indexDataSourceGuid && dataSourceList.value.find(d => d.guid == detailInfo.value.indexDataSourceGuid);
1869 if (currIndexDatasourceSelect) {
1870 const tableRes: any = await getDsTableByDs({
1871 pageSize: -1,
1872 pageIndex: 1,
1873 dataSourceGuid: detailInfo.value.indexDataSourceGuid,
1874 database: currIndexDatasourceSelect.databaseNameEn,
1875 databaseType: currIndexDatasourceSelect.databaseType,
1876 tableName: '',
1877 hadFlag: false
1878 });
1879 if (tableRes?.code == proxy.$passCode) {
1880 let item = dataSelectInfoItems.value.find(item => item.field == 'indexTableName');
1881 item && (item.options = tableRes.data?.records?.map(d => {
1882 d.tableComment = d.tableComment || d.tableName;
1883 return d;
1884 }) || []);
1885 } else {
1886 proxy.$ElMessage.error(tableRes.msg);
1887 }
1888 getDsTableFieldColumn({
1889 pageSize: 50,
1890 pageIndex: 1,
1891 dataSourceGuid: currIndexDatasourceSelect.guid,
1892 database: currIndexDatasourceSelect.databaseNameEn,
1893 databaseType: currIndexDatasourceSelect.databaseType,
1894 tableName: detailInfo.value.indexTableName,
1895 }).then((res: any) => {
1896 if (res?.code == proxy.$passCode) {
1897 let indexFieldsList = res.data?.map(d => {
1898 d.enName = d.columnName;
1899 d.chName = d.columnZhName;
1900 return d;
1901 }) || [];
1902 let item = dataSelectInfoItems.value.find(item => item.field == 'indexFieldName');
1903 item && (item.options = indexFieldsList);
1904 } else {
1905 ElMessage.error(res.msg);
1906 }
1907 });
1908 }
1712 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); 1909 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true);
1713 } 1910 }
1714 } else if (dataSource == 3) { 1911 } else if (dataSource == 3) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!