dc92731c by lihua

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

1 parent c4284e38
...@@ -569,7 +569,55 @@ const dataSelectInfoItems = ref([{ ...@@ -569,7 +569,55 @@ const dataSelectInfoItems = ref([{
569 col: 'wid60', 569 col: 'wid60',
570 visible: false, 570 visible: false,
571 field: 'file', 571 field: 'file',
572 },]); 572 }, {
573 label: '索引数据源',
574 tip: '',
575 type: 'select',
576 required: false,
577 default: '',
578 block: false,
579 visible: false,
580 filterable: true,
581 props: {
582 label: 'databaseNameZh',
583 value: 'guid'
584 },
585 clearable: true,
586 field: 'indexDataSourceGuid',
587 options: [],
588 }, {
589 label: '索引数据表',
590 tip: '',
591 type: 'select',
592 required: false,
593 default: '',
594 block: false,
595 visible: false,
596 filterable: true,
597 field: 'indexTableName',
598 props: {
599 label: 'tableComment',
600 value: 'tableName'
601 },
602 clearable: true,
603 options: [],
604 }, {
605 label: '索引字段',
606 tip: '',
607 type: 'select',
608 required: false,
609 default: '',
610 block: false,
611 visible: false,
612 field: 'indexFieldName',
613 options: [],
614 filterable: true,
615 clearable: true,
616 props: {
617 label: 'chName',
618 value: 'enName'
619 },
620 }]);
573 621
574 const dataSelectInfoFormRules = ref({ 622 const dataSelectInfoFormRules = ref({
575 taskName: [required('请输入数据集名称')], 623 taskName: [required('请输入数据集名称')],
...@@ -578,6 +626,8 @@ const dataSelectInfoFormRules = ref({ ...@@ -578,6 +626,8 @@ const dataSelectInfoFormRules = ref({
578 dataSourceGuid: [required('请选择数据源')], 626 dataSourceGuid: [required('请选择数据源')],
579 handleType: [required('请选择处理类型')], 627 handleType: [required('请选择处理类型')],
580 tableName: [required('请选择数据表')], 628 tableName: [required('请选择数据表')],
629 // indexTableName: [required('请选择索引数据表')],
630 // indexFieldName: [required('请选择索引字段')],
581 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], 631 qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }],
582 file: [{ 632 file: [{
583 validator: (rule: any, value: any, callback: any) => { 633 validator: (rule: any, value: any, callback: any) => {
...@@ -619,6 +669,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -619,6 +669,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
619 parseFileDataSum.value = []; 669 parseFileDataSum.value = [];
620 sampleTableData.value = []; 670 sampleTableData.value = [];
621 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) 671 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] }))
672 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
673 item && (item.options = []);
622 return; 674 return;
623 } 675 }
624 //清除数据表得值,重新获取下拉列表 676 //清除数据表得值,重新获取下拉列表
...@@ -632,7 +684,10 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -632,7 +684,10 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
632 hadFlag: false 684 hadFlag: false
633 }); 685 });
634 if (res.code == proxy.$passCode) { 686 if (res.code == proxy.$passCode) {
635 dsTableList.value = res.data?.records || []; 687 dsTableList.value = res.data?.records?.map(d => {
688 d.tableComment = d.tableComment || d.tableName;
689 return d;
690 }) || [];
636 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) 691 setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] }))
637 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName'); 692 let item = dataSelectInfoItems.value.find(d => d.field == 'tableName');
638 item && (item.options = dsTableList.value); 693 item && (item.options = dsTableList.value);
...@@ -670,15 +725,101 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { ...@@ -670,15 +725,101 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
670 } 725 }
671 }); 726 });
672 } else if (row.field == 'handleType') { 727 } else if (row.field == 'handleType') {
673 // 第一种匿名处理类型是不可以选择obs类型的。 728 // 第一种匿名处理类型是不可以选择obs类型的。
674 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { 729 if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) {
675 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 = []);
676 } 738 }
677 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?.map(d => {
779 d.tableComment = d.tableComment || d.tableName;
780 return d;
781 }) || [];
782 }
783 } else {
784 proxy.$ElMessage.error(res.msg);
785 }
786 } else if (row.field == 'indexTableName') {
787 // 清空索引字段
788 setDataSelectFormItems(Object.assign({}, formInfo, { indexFieldName: '' }));
789 let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName');
790 if (indexFieldItem) {
791 indexFieldItem.options = [];
792 }
793 if (!val) return;
794 // 获取索引数据表的字段列表
795 let indexDsGuid = formInfo.indexDataSourceGuid;
796 let dsInfo = dataSourceList.value.find(d => d.guid == indexDsGuid);
797 if (!dsInfo) return;
798 const res: any = await getDsTableFieldColumn({
799 pageSize: 50,
800 pageIndex: 1,
801 dataSourceGuid: indexDsGuid,
802 database: dsInfo.databaseNameEn,
803 databaseType: dsInfo.databaseType,
804 tableName: val,
805 });
806 if (res?.code == proxy.$passCode) {
807 if (indexFieldItem) {
808 // 使用与qualifiedIdentifier相同的格式:enName和chName
809 indexFieldItem.options = res.data?.map(d => ({
810 enName: d.columnName,
811 chName: d.columnZhName || d.columnName
812 })) || [];
813 }
814 } else {
815 res?.msg && proxy.$ElMessage.error(res.msg);
816 }
678 } 817 }
679 } 818 }
680 819
681 const setDataSelectFormItems = (info, isDetail = false) => { 820 const setDataSelectFormItems = (info, isDetail = false) => {
821 // 获取不包含对象存储的数据源列表
822 let dsExcludeObs = dataSourceList.value.filter(d => !d.storageType || d.storageType == '1');
682 dataSelectInfoItems.value.forEach(item => { 823 dataSelectInfoItems.value.forEach(item => {
683 item.default = info[item.field]; 824 item.default = info[item.field];
684 if (item.field == 'coverageArea') { 825 if (item.field == 'coverageArea') {
...@@ -715,7 +856,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { ...@@ -715,7 +856,19 @@ const setDataSelectFormItems = (info, isDetail = false) => {
715 } else if (item.field == 'tableName') { 856 } else if (item.field == 'tableName') {
716 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 857 item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择
717 } else if (item.field == 'dataSourceGuid') { 858 } else if (item.field == 'dataSourceGuid') {
718 item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) 859 item.options = info.handleType == '02' ? dataSourceList.value : dsExcludeObs;
860 } else if (item.field == 'indexDataSourceGuid') {
861 item.options = dsExcludeObs;
862 item.visible = currDatasourceSelect.value?.storageType == '2';
863 } else if (['indexTableName', 'indexFieldName'].includes(item.field)) {
864 item.visible = currDatasourceSelect.value?.storageType == '2';
865 item.required = !!info.indexDataSourceGuid;
866 if (item.required) {
867 dataSelectInfoFormRules.value[item.field] = [required(`请选择${item.label}`)];
868 } else {
869 dataSelectInfoFormRules.value[item.field] = [];
870 }
871 item.options = info.indexDataSourceGuid ? item.options : [];
719 } 872 }
720 }); 873 });
721 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; 874 stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value;
...@@ -1688,7 +1841,10 @@ onBeforeMount(() => { ...@@ -1688,7 +1841,10 @@ onBeforeMount(() => {
1688 hadFlag: false 1841 hadFlag: false
1689 }); 1842 });
1690 if (tableRes?.code == proxy.$passCode) { 1843 if (tableRes?.code == proxy.$passCode) {
1691 dsTableList.value = tableRes.data?.records || []; 1844 dsTableList.value = tableRes.data?.records?.map(d => {
1845 d.tableComment = d.tableComment || d.tableName;
1846 return d;
1847 }) || [];
1692 let item = dataSelectInfoItems.value.find(item => item.field == 'tableName'); 1848 let item = dataSelectInfoItems.value.find(item => item.field == 'tableName');
1693 item && (item.options = dsTableList.value); 1849 item && (item.options = dsTableList.value);
1694 } else { 1850 } else {
...@@ -1716,6 +1872,47 @@ onBeforeMount(() => { ...@@ -1716,6 +1872,47 @@ onBeforeMount(() => {
1716 } 1872 }
1717 }); 1873 });
1718 } else { 1874 } else {
1875 let currIndexDatasourceSelect = detailInfo.value.indexDataSourceGuid && dataSourceList.value.find(d => d.guid == detailInfo.value.indexDataSourceGuid);
1876 if (currIndexDatasourceSelect) {
1877 const tableRes: any = await getDsTableByDs({
1878 pageSize: -1,
1879 pageIndex: 1,
1880 dataSourceGuid: detailInfo.value.indexDataSourceGuid,
1881 database: currIndexDatasourceSelect.databaseNameEn,
1882 databaseType: currIndexDatasourceSelect.databaseType,
1883 tableName: '',
1884 hadFlag: false
1885 });
1886 if (tableRes?.code == proxy.$passCode) {
1887 let item = dataSelectInfoItems.value.find(item => item.field == 'indexTableName');
1888 item && (item.options = tableRes.data?.records?.map(d => {
1889 d.tableComment = d.tableComment || d.tableName;
1890 return d;
1891 }) || []);
1892 } else {
1893 proxy.$ElMessage.error(tableRes.msg);
1894 }
1895 getDsTableFieldColumn({
1896 pageSize: 50,
1897 pageIndex: 1,
1898 dataSourceGuid: currIndexDatasourceSelect.guid,
1899 database: currIndexDatasourceSelect.databaseNameEn,
1900 databaseType: currIndexDatasourceSelect.databaseType,
1901 tableName: detailInfo.value.indexTableName,
1902 }).then((res: any) => {
1903 if (res?.code == proxy.$passCode) {
1904 let indexFieldsList = res.data?.map(d => {
1905 d.enName = d.columnName;
1906 d.chName = d.columnZhName;
1907 return d;
1908 }) || [];
1909 let item = dataSelectInfoItems.value.find(item => item.field == 'indexFieldName');
1910 item && (item.options = indexFieldsList);
1911 } else {
1912 ElMessage.error(res.msg);
1913 }
1914 });
1915 }
1719 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); 1916 setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true);
1720 } 1917 }
1721 } else if (dataSource == 3) { 1918 } 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!