7a43a111 by lihua

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

1 parent bebe14c2
...@@ -570,7 +570,55 @@ const dataSelectInfoItems = ref([{ ...@@ -570,7 +570,55 @@ const dataSelectInfoItems = ref([{
570 col: 'wid60', 570 col: 'wid60',
571 visible: false, 571 visible: false,
572 field: 'file', 572 field: 'file',
573 },]); 573 }, {
574 label: '索引数据源',
575 tip: '',
576 type: 'select',
577 required: false,
578 default: '',
579 block: false,
580 visible: false,
581 filterable: true,
582 props: {
583 label: 'databaseNameZh',
584 value: 'guid'
585 },
586 clearable: true,
587 field: 'indexDataSourceGuid',
588 options: [],
589 }, {
590 label: '索引数据表',
591 tip: '',
592 type: 'select',
593 required: false,
594 default: '',
595 block: false,
596 visible: false,
597 filterable: true,
598 field: 'indexTableName',
599 props: {
600 label: 'tableComment',
601 value: 'tableName'
602 },
603 clearable: true,
604 options: [],
605 }, {
606 label: '索引字段',
607 tip: '',
608 type: 'select',
609 required: false,
610 default: '',
611 block: false,
612 visible: false,
613 field: 'indexFieldName',
614 options: [],
615 filterable: true,
616 clearable: true,
617 props: {
618 label: 'chName',
619 value: 'enName'
620 },
621 }]);
574 622
575 const dataSelectInfoFormRules = ref({ 623 const dataSelectInfoFormRules = ref({
576 taskName: [required('请输入数据集名称')], 624 taskName: [required('请输入数据集名称')],
...@@ -579,6 +627,8 @@ const dataSelectInfoFormRules = ref({ ...@@ -579,6 +627,8 @@ const dataSelectInfoFormRules = ref({
579 dataSourceGuid: [required('请选择数据源')], 627 dataSourceGuid: [required('请选择数据源')],
580 handleType: [required('请选择处理类型')], 628 handleType: [required('请选择处理类型')],
581 tableName: [required('请选择数据表')], 629 tableName: [required('请选择数据表')],
630 // indexTableName: [required('请选择索引数据表')],
631 // indexFieldName: [required('请选择索引字段')],
582 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], 632 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }],
583 file: [{ 633 file: [{
584 validator: (rule: any, value: any, callback: any) => { 634 validator: (rule: any, value: any, callback: any) => {
...@@ -622,6 +672,8 @@ const dataSelectFormSelectChangeHandlers = { ...@@ -622,6 +672,8 @@ const dataSelectFormSelectChangeHandlers = {
622 parseFileDataSum.value = []; 672 parseFileDataSum.value = [];
623 sampleTableData.value = []; 673 sampleTableData.value = [];
624 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) 674 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] }))
675 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
676 item && (item.options = []);
625 return; 677 return;
626 } 678 }
627 //清除数据表得值,重新获取下拉列表 679 //清除数据表得值,重新获取下拉列表
...@@ -674,10 +726,93 @@ const dataSelectFormSelectChangeHandlers = { ...@@ -674,10 +726,93 @@ const dataSelectFormSelectChangeHandlers = {
674 } 726 }
675 }); 727 });
676 }, 728 },
729 indexDataSourceGuid: async (val, row, formInfo) => {
730 // 清空索引数据表和索引字段
731 setDataSelectFormItems(Object.assign({}, formInfo, { indexTableName: '', indexFieldName: '' }));
732 let indexTableItem = dataSelectInfoItems.value.find(d => d.field == 'indexTableName');
733 let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName');
734 if (indexTableItem) {
735 indexTableItem.options = [];
736 }
737 if (indexFieldItem) {
738 indexFieldItem.options = [];
739 }
740 if (!val) {
741 // 未选择索引数据源,三个字段都不必填
742 indexTableItem && (indexTableItem.required = false);
743 indexFieldItem && (indexFieldItem.required = false);
744 return;
745 }
746 // 选择了索引数据源,索引数据表和索引字段必填
747 if (indexTableItem) {
748 indexTableItem.required = true;
749 }
750 if (indexFieldItem) {
751 indexFieldItem.required = true;
752 }
753 // 获取索引数据源的表列表
754 let dsInfo = dataSourceList.value.find(d => d.guid == val);
755 if (!dsInfo) return;
756 const res: any = await getDsTableByDs({
757 pageSize: -1,
758 pageIndex: 1,
759 dataSourceGuid: val,
760 database: dsInfo.databaseNameEn,
761 databaseType: dsInfo.databaseType,
762 tableName: '',
763 hadFlag: false
764 });
765 if (res.code == proxy.$passCode) {
766 if (indexTableItem) {
767 indexTableItem.options = res.data?.records || [];
768 }
769 } else {
770 proxy.$ElMessage.error(res.msg);
771 }
772 },
773 indexTableName: async (val, row, formInfo) => {
774 // 清空索引字段
775 setDataSelectFormItems(Object.assign({}, formInfo, { indexFieldName: '' }));
776 let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName');
777 if (indexFieldItem) {
778 indexFieldItem.options = [];
779 }
780 if (!val) return;
781 // 获取索引数据表的字段列表
782 let indexDsGuid = formInfo.indexDataSourceGuid;
783 let dsInfo = dataSourceList.value.find(d => d.guid == indexDsGuid);
784 if (!dsInfo) return;
785 const res: any = await getDsTableFieldColumn({
786 pageSize: 50,
787 pageIndex: 1,
788 dataSourceGuid: indexDsGuid,
789 database: dsInfo.databaseNameEn,
790 databaseType: dsInfo.databaseType,
791 tableName: val,
792 });
793 if (res?.code == proxy.$passCode) {
794 if (indexFieldItem) {
795 // 使用与qualifiedIdentifier相同的格式:enName和chName
796 indexFieldItem.options = res.data?.map(d => ({
797 enName: d.columnName,
798 chName: d.columnZhName || d.columnName
799 })) || [];
800 }
801 } else {
802 res?.msg && proxy.$ElMessage.error(res.msg);
803 }
804 },
677 handleType: (val, row, formInfo) => { 805 handleType: (val, row, formInfo) => {
678 // 第一种匿名处理类型是不可以选择obs类型的。 806 // 第一种匿名处理类型是不可以选择obs类型的。
679 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { 807 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) {
680 formInfo.dataSourceGuid = ''; 808 formInfo.dataSourceGuid = '';
809 formInfo.tableName = '';
810 formInfo.indexDataSourceGuid = '';
811 formInfo.indexTableName = '';
812 formInfo.indexFieldName = '';
813 currDatasourceSelect.value = {};
814 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
815 item && (item.options = []);
681 } 816 }
682 setDataSelectFormItems(formInfo); 817 setDataSelectFormItems(formInfo);
683 } 818 }
...@@ -688,6 +823,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -688,6 +823,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
688 } 823 }
689 824
690 const setDataSelectFormItems = (info, isDetail = false) => { 825 const setDataSelectFormItems = (info, isDetail = false) => {
826 // 获取不包含对象存储的数据源列表
827 let dsExcludeObs = dataSourceList.value.filter(d => !d.storageType || d.storageType == '1');
691 dataSelectInfoItems.value.forEach(item => { 828 dataSelectInfoItems.value.forEach(item => {
692 item.default = info[item.field]; 829 item.default = info[item.field];
693 if (item.field == 'coverageArea') { 830 if (item.field == 'coverageArea') {
...@@ -724,7 +861,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { ...@@ -724,7 +861,19 @@ const setDataSelectFormItems = (info, isDetail = false) => {
724 } else if (item.field == 'tableName') { 861 } else if (item.field == 'tableName') {
725 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 862 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择
726 } else if (item.field == 'dataSourceGuid') { 863 } else if (item.field == 'dataSourceGuid') {
727 item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) 864 item.options = info.handleType == '02' ? dataSourceList.value : dsExcludeObs;
865 } else if (item.field == 'indexDataSourceGuid') {
866 item.options = dsExcludeObs;
867 item.visible = currDatasourceSelect.value?.storageType == '2';
868 } else if (['indexTableName', 'indexFieldName'].includes(item.field)) {
869 item.visible = currDatasourceSelect.value?.storageType == '2';
870 item.required = !!info.indexDataSourceGuid;
871 if (item.required) {
872 dataSelectInfoFormRules.value[item.field] = [required(`请选择${item.label}`)];
873 } else {
874 dataSelectInfoFormRules.value[item.field] = [];
875 }
876 item.options = info.indexDataSourceGuid ? item.options : [];
728 } 877 }
729 }); 878 });
730 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; 879 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value;
...@@ -1702,6 +1851,44 @@ onBeforeMount(() => { ...@@ -1702,6 +1851,44 @@ onBeforeMount(() => {
1702 } 1851 }
1703 }); 1852 });
1704 } else { 1853 } else {
1854 let currIndexDatasourceSelect = detailInfo.value.indexDataSourceGuid && dataSourceList.value.find(d => d.guid == detailInfo.value.indexDataSourceGuid);
1855 if (currIndexDatasourceSelect) {
1856 const tableRes: any = await getDsTableByDs({
1857 pageSize: -1,
1858 pageIndex: 1,
1859 dataSourceGuid: detailInfo.value.indexDataSourceGuid,
1860 database: currIndexDatasourceSelect.databaseNameEn,
1861 databaseType: currIndexDatasourceSelect.databaseType,
1862 tableName: '',
1863 hadFlag: false
1864 });
1865 if (tableRes?.code == proxy.$passCode) {
1866 let item = dataSelectInfoItems.value.find(item => item.field == 'indexTableName');
1867 item && (item.options = tableRes.data?.records || []);
1868 } else {
1869 proxy.$ElMessage.error(tableRes.msg);
1870 }
1871 getDsTableFieldColumn({
1872 pageSize: 50,
1873 pageIndex: 1,
1874 dataSourceGuid: currIndexDatasourceSelect.guid,
1875 database: currIndexDatasourceSelect.databaseNameEn,
1876 databaseType: currIndexDatasourceSelect.databaseType,
1877 tableName: detailInfo.value.indexTableName,
1878 }).then((res: any) => {
1879 if (res?.code == proxy.$passCode) {
1880 let indexFieldsList = res.data?.map(d => {
1881 d.enName = d.columnName;
1882 d.chName = d.columnZhName;
1883 return d;
1884 }) || [];
1885 let item = dataSelectInfoItems.value.find(item => item.field == 'indexFieldName');
1886 item && (item.options = indexFieldsList);
1887 } else {
1888 ElMessage.error(res.msg);
1889 }
1890 });
1891 }
1705 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); 1892 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true);
1706 } 1893 }
1707 } else if (dataSource == 3) { 1894 } 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!