匿名化评测对象存储支持选择索引数据源,表和字段
Showing
1 changed file
with
188 additions
and
3 deletions
| ... | @@ -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) { | ... | ... |
-
Please register or sign in to post a comment