匿名化评测对象存储支持选择索引数据源,表和字段
Showing
1 changed file
with
201 additions
and
4 deletions
| ... | @@ -562,7 +562,55 @@ const dataSelectInfoItems = ref([{ | ... | @@ -562,7 +562,55 @@ const dataSelectInfoItems = ref([{ |
| 562 | col: 'wid60', | 562 | col: 'wid60', |
| 563 | visible: false, | 563 | visible: false, |
| 564 | field: 'file', | 564 | field: 'file', |
| 565 | },]); | 565 | }, { |
| 566 | label: '索引数据源', | ||
| 567 | tip: '', | ||
| 568 | type: 'select', | ||
| 569 | required: false, | ||
| 570 | default: '', | ||
| 571 | block: false, | ||
| 572 | visible: false, | ||
| 573 | filterable: true, | ||
| 574 | props: { | ||
| 575 | label: 'databaseNameZh', | ||
| 576 | value: 'guid' | ||
| 577 | }, | ||
| 578 | clearable: true, | ||
| 579 | field: 'indexDataSourceGuid', | ||
| 580 | options: [], | ||
| 581 | }, { | ||
| 582 | label: '索引数据表', | ||
| 583 | tip: '', | ||
| 584 | type: 'select', | ||
| 585 | required: false, | ||
| 586 | default: '', | ||
| 587 | block: false, | ||
| 588 | visible: false, | ||
| 589 | filterable: true, | ||
| 590 | field: 'indexTableName', | ||
| 591 | props: { | ||
| 592 | label: 'tableComment', | ||
| 593 | value: 'tableName' | ||
| 594 | }, | ||
| 595 | clearable: true, | ||
| 596 | options: [], | ||
| 597 | }, { | ||
| 598 | label: '索引字段', | ||
| 599 | tip: '', | ||
| 600 | type: 'select', | ||
| 601 | required: false, | ||
| 602 | default: '', | ||
| 603 | block: false, | ||
| 604 | visible: false, | ||
| 605 | field: 'indexFieldName', | ||
| 606 | options: [], | ||
| 607 | filterable: true, | ||
| 608 | clearable: true, | ||
| 609 | props: { | ||
| 610 | label: 'chName', | ||
| 611 | value: 'enName' | ||
| 612 | }, | ||
| 613 | }]); | ||
| 566 | 614 | ||
| 567 | const dataSelectInfoFormRules = ref({ | 615 | const dataSelectInfoFormRules = ref({ |
| 568 | taskName: [required('请输入数据集名称')], | 616 | taskName: [required('请输入数据集名称')], |
| ... | @@ -571,6 +619,8 @@ const dataSelectInfoFormRules = ref({ | ... | @@ -571,6 +619,8 @@ const dataSelectInfoFormRules = ref({ |
| 571 | dataSourceGuid: [required('请选择数据源')], | 619 | dataSourceGuid: [required('请选择数据源')], |
| 572 | handleType: [required('请选择处理类型')], | 620 | handleType: [required('请选择处理类型')], |
| 573 | tableName: [required('请选择数据表')], | 621 | tableName: [required('请选择数据表')], |
| 622 | // indexTableName: [required('请选择索引数据表')], | ||
| 623 | // indexFieldName: [required('请选择索引字段')], | ||
| 574 | qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], | 624 | qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], |
| 575 | file: [{ | 625 | file: [{ |
| 576 | validator: (rule: any, value: any, callback: any) => { | 626 | validator: (rule: any, value: any, callback: any) => { |
| ... | @@ -612,6 +662,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { | ... | @@ -612,6 +662,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { |
| 612 | parseFileDataSum.value = []; | 662 | parseFileDataSum.value = []; |
| 613 | sampleTableData.value = []; | 663 | sampleTableData.value = []; |
| 614 | setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) | 664 | setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) |
| 665 | let item = dataSelectInfoItems.value.find(d => d.field == 'tableName'); | ||
| 666 | item && (item.options = []); | ||
| 615 | return; | 667 | return; |
| 616 | } | 668 | } |
| 617 | //清除数据表得值,重新获取下拉列表 | 669 | //清除数据表得值,重新获取下拉列表 |
| ... | @@ -625,7 +677,10 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { | ... | @@ -625,7 +677,10 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { |
| 625 | hadFlag: false | 677 | hadFlag: false |
| 626 | }); | 678 | }); |
| 627 | if (res.code == proxy.$passCode) { | 679 | if (res.code == proxy.$passCode) { |
| 628 | dsTableList.value = res.data?.records || []; | 680 | dsTableList.value = res.data?.records?.map(d => { |
| 681 | d.tableComment = d.tableComment || d.tableName; | ||
| 682 | return d; | ||
| 683 | }) || []; | ||
| 629 | setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) | 684 | setDataSelectFormItems(Object.assign({}, formInfo, { file: !formInfo['file'] ? [] : formInfo['file'], tableName: '', qualifiedIdentifier: [] })) |
| 630 | let item = dataSelectInfoItems.value.find(d => d.field == 'tableName'); | 685 | let item = dataSelectInfoItems.value.find(d => d.field == 'tableName'); |
| 631 | item && (item.options = dsTableList.value); | 686 | item && (item.options = dsTableList.value); |
| ... | @@ -666,12 +721,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { | ... | @@ -666,12 +721,98 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { |
| 666 | // 第一种匿名处理类型是不可以选择obs类型的。 | 721 | // 第一种匿名处理类型是不可以选择obs类型的。 |
| 667 | if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { | 722 | if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { |
| 668 | formInfo.dataSourceGuid = ''; | 723 | formInfo.dataSourceGuid = ''; |
| 724 | formInfo.tableName = ''; | ||
| 725 | formInfo.indexDataSourceGuid = ''; | ||
| 726 | formInfo.indexTableName = ''; | ||
| 727 | formInfo.indexFieldName = ''; | ||
| 728 | currDatasourceSelect.value = {}; | ||
| 729 | let item = dataSelectInfoItems.value.find(d => d.field == 'tableName'); | ||
| 730 | item && (item.options = []); | ||
| 669 | } | 731 | } |
| 670 | setDataSelectFormItems(formInfo); | 732 | setDataSelectFormItems(formInfo); |
| 733 | } else if (row.field == 'indexDataSourceGuid') { | ||
| 734 | // 清空索引数据表和索引字段 | ||
| 735 | setDataSelectFormItems(Object.assign({}, formInfo, { indexTableName: '', indexFieldName: '' })); | ||
| 736 | let indexTableItem = dataSelectInfoItems.value.find(d => d.field == 'indexTableName'); | ||
| 737 | let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName'); | ||
| 738 | if (indexTableItem) { | ||
| 739 | indexTableItem.options = []; | ||
| 740 | } | ||
| 741 | if (indexFieldItem) { | ||
| 742 | indexFieldItem.options = []; | ||
| 743 | } | ||
| 744 | if (!val) { | ||
| 745 | // 未选择索引数据源,三个字段都不必填 | ||
| 746 | indexTableItem && (indexTableItem.required = false); | ||
| 747 | indexFieldItem && (indexFieldItem.required = false); | ||
| 748 | return; | ||
| 749 | } | ||
| 750 | // 选择了索引数据源,索引数据表和索引字段必填 | ||
| 751 | if (indexTableItem) { | ||
| 752 | indexTableItem.required = true; | ||
| 753 | } | ||
| 754 | if (indexFieldItem) { | ||
| 755 | indexFieldItem.required = true; | ||
| 756 | } | ||
| 757 | // 获取索引数据源的表列表 | ||
| 758 | let dsInfo = dataSourceList.value.find(d => d.guid == val); | ||
| 759 | if (!dsInfo) return; | ||
| 760 | const res: any = await getDsTableByDs({ | ||
| 761 | pageSize: -1, | ||
| 762 | pageIndex: 1, | ||
| 763 | dataSourceGuid: val, | ||
| 764 | database: dsInfo.databaseNameEn, | ||
| 765 | databaseType: dsInfo.databaseType, | ||
| 766 | tableName: '', | ||
| 767 | hadFlag: false | ||
| 768 | }); | ||
| 769 | if (res.code == proxy.$passCode) { | ||
| 770 | if (indexTableItem) { | ||
| 771 | indexTableItem.options = res.data?.records?.map(d => { | ||
| 772 | d.tableComment = d.tableComment || d.tableName; | ||
| 773 | return d; | ||
| 774 | }) || []; | ||
| 775 | } | ||
| 776 | } else { | ||
| 777 | proxy.$ElMessage.error(res.msg); | ||
| 778 | } | ||
| 779 | } else if (row.field == 'indexTableName') { | ||
| 780 | // 清空索引字段 | ||
| 781 | setDataSelectFormItems(Object.assign({}, formInfo, { indexFieldName: '' })); | ||
| 782 | let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName'); | ||
| 783 | if (indexFieldItem) { | ||
| 784 | indexFieldItem.options = []; | ||
| 785 | } | ||
| 786 | if (!val) return; | ||
| 787 | // 获取索引数据表的字段列表 | ||
| 788 | let indexDsGuid = formInfo.indexDataSourceGuid; | ||
| 789 | let dsInfo = dataSourceList.value.find(d => d.guid == indexDsGuid); | ||
| 790 | if (!dsInfo) return; | ||
| 791 | const res: any = await getDsTableFieldColumn({ | ||
| 792 | pageSize: 50, | ||
| 793 | pageIndex: 1, | ||
| 794 | dataSourceGuid: indexDsGuid, | ||
| 795 | database: dsInfo.databaseNameEn, | ||
| 796 | databaseType: dsInfo.databaseType, | ||
| 797 | tableName: val, | ||
| 798 | }); | ||
| 799 | if (res?.code == proxy.$passCode) { | ||
| 800 | if (indexFieldItem) { | ||
| 801 | // 使用与qualifiedIdentifier相同的格式:enName和chName | ||
| 802 | indexFieldItem.options = res.data?.map(d => ({ | ||
| 803 | enName: d.columnName, | ||
| 804 | chName: d.columnZhName || d.columnName | ||
| 805 | })) || []; | ||
| 806 | } | ||
| 807 | } else { | ||
| 808 | res?.msg && proxy.$ElMessage.error(res.msg); | ||
| 809 | } | ||
| 671 | } | 810 | } |
| 672 | } | 811 | } |
| 673 | 812 | ||
| 674 | const setDataSelectFormItems = (info, isDetail = false) => { | 813 | const setDataSelectFormItems = (info, isDetail = false) => { |
| 814 | // 获取不包含对象存储的数据源列表 | ||
| 815 | let dsExcludeObs = dataSourceList.value.filter(d => !d.storageType || d.storageType == '1'); | ||
| 675 | dataSelectInfoItems.value.forEach(item => { | 816 | dataSelectInfoItems.value.forEach(item => { |
| 676 | item.default = info[item.field]; | 817 | item.default = info[item.field]; |
| 677 | if (item.field == 'coverageArea') { | 818 | if (item.field == 'coverageArea') { |
| ... | @@ -708,7 +849,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { | ... | @@ -708,7 +849,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { |
| 708 | } else if (item.field == 'tableName') { | 849 | } else if (item.field == 'tableName') { |
| 709 | item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 | 850 | item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 |
| 710 | } else if (item.field == 'dataSourceGuid') { | 851 | } else if (item.field == 'dataSourceGuid') { |
| 711 | item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) | 852 | item.options = info.handleType == '02' ? dataSourceList.value : dsExcludeObs; |
| 853 | } else if (item.field == 'indexDataSourceGuid') { | ||
| 854 | item.options = dsExcludeObs; | ||
| 855 | item.visible = currDatasourceSelect.value?.storageType == '2'; | ||
| 856 | } else if (['indexTableName', 'indexFieldName'].includes(item.field)) { | ||
| 857 | item.visible = currDatasourceSelect.value?.storageType == '2'; | ||
| 858 | item.required = !!info.indexDataSourceGuid; | ||
| 859 | if (item.required) { | ||
| 860 | dataSelectInfoFormRules.value[item.field] = [required(`请选择${item.label}`)]; | ||
| 861 | } else { | ||
| 862 | dataSelectInfoFormRules.value[item.field] = []; | ||
| 863 | } | ||
| 864 | item.options = info.indexDataSourceGuid ? item.options : []; | ||
| 712 | } | 865 | } |
| 713 | }); | 866 | }); |
| 714 | stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; | 867 | stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; |
| ... | @@ -1681,7 +1834,10 @@ onBeforeMount(() => { | ... | @@ -1681,7 +1834,10 @@ onBeforeMount(() => { |
| 1681 | hadFlag: false | 1834 | hadFlag: false |
| 1682 | }); | 1835 | }); |
| 1683 | if (tableRes?.code == proxy.$passCode) { | 1836 | if (tableRes?.code == proxy.$passCode) { |
| 1684 | dsTableList.value = tableRes.data?.records || []; | 1837 | dsTableList.value = tableRes.data?.records?.map(d => { |
| 1838 | d.tableComment = d.tableComment || d.tableName; | ||
| 1839 | return d; | ||
| 1840 | }) || []; | ||
| 1685 | let item = dataSelectInfoItems.value.find(item => item.field == 'tableName'); | 1841 | let item = dataSelectInfoItems.value.find(item => item.field == 'tableName'); |
| 1686 | item && (item.options = dsTableList.value); | 1842 | item && (item.options = dsTableList.value); |
| 1687 | } else { | 1843 | } else { |
| ... | @@ -1709,6 +1865,47 @@ onBeforeMount(() => { | ... | @@ -1709,6 +1865,47 @@ onBeforeMount(() => { |
| 1709 | } | 1865 | } |
| 1710 | }); | 1866 | }); |
| 1711 | } else { | 1867 | } else { |
| 1868 | let currIndexDatasourceSelect = detailInfo.value.indexDataSourceGuid && dataSourceList.value.find(d => d.guid == detailInfo.value.indexDataSourceGuid); | ||
| 1869 | if (currIndexDatasourceSelect) { | ||
| 1870 | const tableRes: any = await getDsTableByDs({ | ||
| 1871 | pageSize: -1, | ||
| 1872 | pageIndex: 1, | ||
| 1873 | dataSourceGuid: detailInfo.value.indexDataSourceGuid, | ||
| 1874 | database: currIndexDatasourceSelect.databaseNameEn, | ||
| 1875 | databaseType: currIndexDatasourceSelect.databaseType, | ||
| 1876 | tableName: '', | ||
| 1877 | hadFlag: false | ||
| 1878 | }); | ||
| 1879 | if (tableRes?.code == proxy.$passCode) { | ||
| 1880 | let item = dataSelectInfoItems.value.find(item => item.field == 'indexTableName'); | ||
| 1881 | item && (item.options = tableRes.data?.records?.map(d => { | ||
| 1882 | d.tableComment = d.tableComment || d.tableName; | ||
| 1883 | return d; | ||
| 1884 | }) || []); | ||
| 1885 | } else { | ||
| 1886 | proxy.$ElMessage.error(tableRes.msg); | ||
| 1887 | } | ||
| 1888 | getDsTableFieldColumn({ | ||
| 1889 | pageSize: 50, | ||
| 1890 | pageIndex: 1, | ||
| 1891 | dataSourceGuid: currIndexDatasourceSelect.guid, | ||
| 1892 | database: currIndexDatasourceSelect.databaseNameEn, | ||
| 1893 | databaseType: currIndexDatasourceSelect.databaseType, | ||
| 1894 | tableName: detailInfo.value.indexTableName, | ||
| 1895 | }).then((res: any) => { | ||
| 1896 | if (res?.code == proxy.$passCode) { | ||
| 1897 | let indexFieldsList = res.data?.map(d => { | ||
| 1898 | d.enName = d.columnName; | ||
| 1899 | d.chName = d.columnZhName; | ||
| 1900 | return d; | ||
| 1901 | }) || []; | ||
| 1902 | let item = dataSelectInfoItems.value.find(item => item.field == 'indexFieldName'); | ||
| 1903 | item && (item.options = indexFieldsList); | ||
| 1904 | } else { | ||
| 1905 | ElMessage.error(res.msg); | ||
| 1906 | } | ||
| 1907 | }); | ||
| 1908 | } | ||
| 1712 | setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); | 1909 | setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); |
| 1713 | } | 1910 | } |
| 1714 | } else if (dataSource == 3) { | 1911 | } else if (dataSource == 3) { | ... | ... |
-
Please register or sign in to post a comment