5324ab40 by lihua

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

1 parent c633fc81
...@@ -572,7 +572,55 @@ const dataSelectInfoItems = ref([{ ...@@ -572,7 +572,55 @@ const dataSelectInfoItems = ref([{
572 col: 'wid60', 572 col: 'wid60',
573 visible: false, 573 visible: false,
574 field: 'file', 574 field: 'file',
575 },]); 575 }, {
576 label: '索引数据源',
577 tip: '',
578 type: 'select',
579 required: false,
580 default: '',
581 block: false,
582 visible: false,
583 filterable: true,
584 props: {
585 label: 'databaseNameZh',
586 value: 'guid'
587 },
588 clearable: true,
589 field: 'indexDataSourceGuid',
590 options: [],
591 }, {
592 label: '索引数据表',
593 tip: '',
594 type: 'select',
595 required: false,
596 default: '',
597 block: false,
598 visible: false,
599 filterable: true,
600 field: 'indexTableName',
601 props: {
602 label: 'tableComment',
603 value: 'tableName'
604 },
605 clearable: true,
606 options: [],
607 }, {
608 label: '索引字段',
609 tip: '',
610 type: 'select',
611 required: false,
612 default: '',
613 block: false,
614 visible: false,
615 field: 'indexFieldName',
616 options: [],
617 filterable: true,
618 clearable: true,
619 props: {
620 label: 'chName',
621 value: 'enName'
622 },
623 }]);
576 624
577 const dataSelectInfoFormRules = ref({ 625 const dataSelectInfoFormRules = ref({
578 taskName: [required('请输入数据集名称')], 626 taskName: [required('请输入数据集名称')],
...@@ -581,6 +629,8 @@ const dataSelectInfoFormRules = ref({ ...@@ -581,6 +629,8 @@ const dataSelectInfoFormRules = ref({
581 dataSourceGuid: [required('请选择数据源')], 629 dataSourceGuid: [required('请选择数据源')],
582 handleType: [required('请选择处理类型')], 630 handleType: [required('请选择处理类型')],
583 tableName: [required('请选择数据表')], 631 tableName: [required('请选择数据表')],
632 // indexTableName: [required('请选择索引数据表')],
633 // indexFieldName: [required('请选择索引字段')],
584 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], 634 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }],
585 file: [{ 635 file: [{
586 validator: (rule: any, value: any, callback: any) => { 636 validator: (rule: any, value: any, callback: any) => {
...@@ -622,6 +672,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -622,6 +672,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
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 //清除数据表得值,重新获取下拉列表
...@@ -673,15 +725,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -673,15 +725,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
673 } 725 }
674 }); 726 });
675 } else if (row.field == 'handleType') { 727 } else if (row.field == 'handleType') {
676 // 第一种匿名处理类型是不可以选择obs类型的。 728 // 第一种匿名处理类型是不可以选择obs类型的。
677 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { 729 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) {
678 formInfo.dataSourceGuid = ''; 730 formInfo.dataSourceGuid = '';
731 formInfo.tableName = '';
732 formInfo.indexDataSourceGuid = '';
733 formInfo.indexTableName = '';
734 formInfo.indexFieldName = '';
735 currDatasourceSelect.value = {};
736 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
737 item && (item.options = []);
679 } 738 }
680 setDataSelectFormItems(formInfo); 739 setDataSelectFormItems(formInfo);
740 } else if (row.field == 'indexDataSourceGuid') {
741 // 清空索引数据表和索引字段
742 setDataSelectFormItems(Object.assign({}, formInfo, { indexTableName: '', indexFieldName: '' }));
743 let indexTableItem = dataSelectInfoItems.value.find(d => d.field == 'indexTableName');
744 let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName');
745 if (indexTableItem) {
746 indexTableItem.options = [];
747 }
748 if (indexFieldItem) {
749 indexFieldItem.options = [];
750 }
751 if (!val) {
752 // 未选择索引数据源,三个字段都不必填
753 indexTableItem && (indexTableItem.required = false);
754 indexFieldItem && (indexFieldItem.required = false);
755 return;
756 }
757 // 选择了索引数据源,索引数据表和索引字段必填
758 if (indexTableItem) {
759 indexTableItem.required = true;
760 }
761 if (indexFieldItem) {
762 indexFieldItem.required = true;
763 }
764 // 获取索引数据源的表列表
765 let dsInfo = dataSourceList.value.find(d => d.guid == val);
766 if (!dsInfo) return;
767 const res: any = await getDsTableByDs({
768 pageSize: -1,
769 pageIndex: 1,
770 dataSourceGuid: val,
771 database: dsInfo.databaseNameEn,
772 databaseType: dsInfo.databaseType,
773 tableName: '',
774 hadFlag: false
775 });
776 if (res.code == proxy.$passCode) {
777 if (indexTableItem) {
778 indexTableItem.options = res.data?.records || [];
779 }
780 } else {
781 proxy.$ElMessage.error(res.msg);
782 }
783 } else if (row.field == 'indexTableName') {
784 // 清空索引字段
785 setDataSelectFormItems(Object.assign({}, formInfo, { indexFieldName: '' }));
786 let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName');
787 if (indexFieldItem) {
788 indexFieldItem.options = [];
789 }
790 if (!val) return;
791 // 获取索引数据表的字段列表
792 let indexDsGuid = formInfo.indexDataSourceGuid;
793 let dsInfo = dataSourceList.value.find(d => d.guid == indexDsGuid);
794 if (!dsInfo) return;
795 const res: any = await getDsTableFieldColumn({
796 pageSize: 50,
797 pageIndex: 1,
798 dataSourceGuid: indexDsGuid,
799 database: dsInfo.databaseNameEn,
800 databaseType: dsInfo.databaseType,
801 tableName: val,
802 });
803 if (res?.code == proxy.$passCode) {
804 if (indexFieldItem) {
805 // 使用与qualifiedIdentifier相同的格式:enName和chName
806 indexFieldItem.options = res.data?.map(d => ({
807 enName: d.columnName,
808 chName: d.columnZhName || d.columnName
809 })) || [];
810 }
811 } else {
812 res?.msg && proxy.$ElMessage.error(res.msg);
813 }
681 } 814 }
682 } 815 }
683 816
684 const setDataSelectFormItems = (info, isDetail = false) => { 817 const setDataSelectFormItems = (info, isDetail = false) => {
818 // 获取不包含对象存储的数据源列表
819 let dsExcludeObs = dataSourceList.value.filter(d => !d.storageType || d.storageType == '1');
685 dataSelectInfoItems.value.forEach(item => { 820 dataSelectInfoItems.value.forEach(item => {
686 item.default = info[item.field]; 821 item.default = info[item.field];
687 if (item.field == 'coverageArea') { 822 if (item.field == 'coverageArea') {
...@@ -718,7 +853,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { ...@@ -718,7 +853,19 @@ const setDataSelectFormItems = (info, isDetail = false) => {
718 } else if (item.field == 'tableName') { 853 } else if (item.field == 'tableName') {
719 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 854 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择
720 } else if (item.field == 'dataSourceGuid') { 855 } else if (item.field == 'dataSourceGuid') {
721 item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) 856 item.options = info.handleType == '02' ? dataSourceList.value : dsExcludeObs;
857 } else if (item.field == 'indexDataSourceGuid') {
858 item.options = dsExcludeObs;
859 item.visible = currDatasourceSelect.value?.storageType == '2';
860 } else if (['indexTableName', 'indexFieldName'].includes(item.field)) {
861 item.visible = currDatasourceSelect.value?.storageType == '2';
862 item.required = !!info.indexDataSourceGuid;
863 if (item.required) {
864 dataSelectInfoFormRules.value[item.field] = [required(`请选择${item.label}`)];
865 } else {
866 dataSelectInfoFormRules.value[item.field] = [];
867 }
868 item.options = info.indexDataSourceGuid ? item.options : [];
722 } 869 }
723 }); 870 });
724 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; 871 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value;
...@@ -1741,6 +1888,44 @@ onBeforeMount(() => { ...@@ -1741,6 +1888,44 @@ onBeforeMount(() => {
1741 } 1888 }
1742 }); 1889 });
1743 } else { 1890 } else {
1891 let currIndexDatasourceSelect = detailInfo.value.indexDataSourceGuid && dataSourceList.value.find(d => d.guid == detailInfo.value.indexDataSourceGuid);
1892 if (currIndexDatasourceSelect) {
1893 const tableRes: any = await getDsTableByDs({
1894 pageSize: -1,
1895 pageIndex: 1,
1896 dataSourceGuid: detailInfo.value.indexDataSourceGuid,
1897 database: currIndexDatasourceSelect.databaseNameEn,
1898 databaseType: currIndexDatasourceSelect.databaseType,
1899 tableName: '',
1900 hadFlag: false
1901 });
1902 if (tableRes?.code == proxy.$passCode) {
1903 let item = dataSelectInfoItems.value.find(item => item.field == 'indexTableName');
1904 item && (item.options = tableRes.data?.records || []);
1905 } else {
1906 proxy.$ElMessage.error(tableRes.msg);
1907 }
1908 getDsTableFieldColumn({
1909 pageSize: 50,
1910 pageIndex: 1,
1911 dataSourceGuid: currIndexDatasourceSelect.guid,
1912 database: currIndexDatasourceSelect.databaseNameEn,
1913 databaseType: currIndexDatasourceSelect.databaseType,
1914 tableName: detailInfo.value.indexTableName,
1915 }).then((res: any) => {
1916 if (res?.code == proxy.$passCode) {
1917 let indexFieldsList = res.data?.map(d => {
1918 d.enName = d.columnName;
1919 d.chName = d.columnZhName;
1920 return d;
1921 }) || [];
1922 let item = dataSelectInfoItems.value.find(item => item.field == 'indexFieldName');
1923 item && (item.options = indexFieldsList);
1924 } else {
1925 ElMessage.error(res.msg);
1926 }
1927 });
1928 }
1744 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); 1929 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true);
1745 } 1930 }
1746 } else if (dataSource == 3) { 1931 } 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!