匿名化评测对象存储支持选择索引数据源,表和字段
Showing
1 changed file
with
201 additions
and
4 deletions
| ... | @@ -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); |
| ... | @@ -673,12 +728,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { | ... | @@ -673,12 +728,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { |
| 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) { | ... | ... |
-
Please register or sign in to post a comment