匿名化评测对象存储支持选择索引数据源,表和字段
Showing
1 changed file
with
189 additions
and
2 deletions
| ... | @@ -570,7 +570,55 @@ const dataSelectInfoItems = ref([{ | ... | @@ -570,7 +570,55 @@ const dataSelectInfoItems = ref([{ |
| 570 | col: 'wid60', | 570 | col: 'wid60', |
| 571 | visible: false, | 571 | visible: false, |
| 572 | field: 'file', | 572 | field: 'file', |
| 573 | },]); | 573 | }, { |
| 574 | label: '索引数据源', | ||
| 575 | tip: '', | ||
| 576 | type: 'select', | ||
| 577 | required: false, | ||
| 578 | default: '', | ||
| 579 | block: false, | ||
| 580 | visible: false, | ||
| 581 | filterable: true, | ||
| 582 | props: { | ||
| 583 | label: 'databaseNameZh', | ||
| 584 | value: 'guid' | ||
| 585 | }, | ||
| 586 | clearable: true, | ||
| 587 | field: 'indexDataSourceGuid', | ||
| 588 | options: [], | ||
| 589 | }, { | ||
| 590 | label: '索引数据表', | ||
| 591 | tip: '', | ||
| 592 | type: 'select', | ||
| 593 | required: false, | ||
| 594 | default: '', | ||
| 595 | block: false, | ||
| 596 | visible: false, | ||
| 597 | filterable: true, | ||
| 598 | field: 'indexTableName', | ||
| 599 | props: { | ||
| 600 | label: 'tableComment', | ||
| 601 | value: 'tableName' | ||
| 602 | }, | ||
| 603 | clearable: true, | ||
| 604 | options: [], | ||
| 605 | }, { | ||
| 606 | label: '索引字段', | ||
| 607 | tip: '', | ||
| 608 | type: 'select', | ||
| 609 | required: false, | ||
| 610 | default: '', | ||
| 611 | block: false, | ||
| 612 | visible: false, | ||
| 613 | field: 'indexFieldName', | ||
| 614 | options: [], | ||
| 615 | filterable: true, | ||
| 616 | clearable: true, | ||
| 617 | props: { | ||
| 618 | label: 'chName', | ||
| 619 | value: 'enName' | ||
| 620 | }, | ||
| 621 | }]); | ||
| 574 | 622 | ||
| 575 | const dataSelectInfoFormRules = ref({ | 623 | const dataSelectInfoFormRules = ref({ |
| 576 | taskName: [required('请输入数据集名称')], | 624 | taskName: [required('请输入数据集名称')], |
| ... | @@ -579,6 +627,8 @@ const dataSelectInfoFormRules = ref({ | ... | @@ -579,6 +627,8 @@ const dataSelectInfoFormRules = ref({ |
| 579 | dataSourceGuid: [required('请选择数据源')], | 627 | dataSourceGuid: [required('请选择数据源')], |
| 580 | handleType: [required('请选择处理类型')], | 628 | handleType: [required('请选择处理类型')], |
| 581 | tableName: [required('请选择数据表')], | 629 | tableName: [required('请选择数据表')], |
| 630 | // indexTableName: [required('请选择索引数据表')], | ||
| 631 | // indexFieldName: [required('请选择索引字段')], | ||
| 582 | qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], | 632 | qualifiedIdentifier: [{ type: 'array', required: true, trigger: 'change', message: "请选择准标识符" }], |
| 583 | file: [{ | 633 | file: [{ |
| 584 | validator: (rule: any, value: any, callback: any) => { | 634 | validator: (rule: any, value: any, callback: any) => { |
| ... | @@ -622,6 +672,8 @@ const dataSelectFormSelectChangeHandlers = { | ... | @@ -622,6 +672,8 @@ const dataSelectFormSelectChangeHandlers = { |
| 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 | //清除数据表得值,重新获取下拉列表 |
| ... | @@ -674,10 +726,93 @@ const dataSelectFormSelectChangeHandlers = { | ... | @@ -674,10 +726,93 @@ const dataSelectFormSelectChangeHandlers = { |
| 674 | } | 726 | } |
| 675 | }); | 727 | }); |
| 676 | }, | 728 | }, |
| 729 | indexDataSourceGuid: async (val, row, formInfo) => { | ||
| 730 | // 清空索引数据表和索引字段 | ||
| 731 | setDataSelectFormItems(Object.assign({}, formInfo, { indexTableName: '', indexFieldName: '' })); | ||
| 732 | let indexTableItem = dataSelectInfoItems.value.find(d => d.field == 'indexTableName'); | ||
| 733 | let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName'); | ||
| 734 | if (indexTableItem) { | ||
| 735 | indexTableItem.options = []; | ||
| 736 | } | ||
| 737 | if (indexFieldItem) { | ||
| 738 | indexFieldItem.options = []; | ||
| 739 | } | ||
| 740 | if (!val) { | ||
| 741 | // 未选择索引数据源,三个字段都不必填 | ||
| 742 | indexTableItem && (indexTableItem.required = false); | ||
| 743 | indexFieldItem && (indexFieldItem.required = false); | ||
| 744 | return; | ||
| 745 | } | ||
| 746 | // 选择了索引数据源,索引数据表和索引字段必填 | ||
| 747 | if (indexTableItem) { | ||
| 748 | indexTableItem.required = true; | ||
| 749 | } | ||
| 750 | if (indexFieldItem) { | ||
| 751 | indexFieldItem.required = true; | ||
| 752 | } | ||
| 753 | // 获取索引数据源的表列表 | ||
| 754 | let dsInfo = dataSourceList.value.find(d => d.guid == val); | ||
| 755 | if (!dsInfo) return; | ||
| 756 | const res: any = await getDsTableByDs({ | ||
| 757 | pageSize: -1, | ||
| 758 | pageIndex: 1, | ||
| 759 | dataSourceGuid: val, | ||
| 760 | database: dsInfo.databaseNameEn, | ||
| 761 | databaseType: dsInfo.databaseType, | ||
| 762 | tableName: '', | ||
| 763 | hadFlag: false | ||
| 764 | }); | ||
| 765 | if (res.code == proxy.$passCode) { | ||
| 766 | if (indexTableItem) { | ||
| 767 | indexTableItem.options = res.data?.records || []; | ||
| 768 | } | ||
| 769 | } else { | ||
| 770 | proxy.$ElMessage.error(res.msg); | ||
| 771 | } | ||
| 772 | }, | ||
| 773 | indexTableName: async (val, row, formInfo) => { | ||
| 774 | // 清空索引字段 | ||
| 775 | setDataSelectFormItems(Object.assign({}, formInfo, { indexFieldName: '' })); | ||
| 776 | let indexFieldItem = dataSelectInfoItems.value.find(d => d.field == 'indexFieldName'); | ||
| 777 | if (indexFieldItem) { | ||
| 778 | indexFieldItem.options = []; | ||
| 779 | } | ||
| 780 | if (!val) return; | ||
| 781 | // 获取索引数据表的字段列表 | ||
| 782 | let indexDsGuid = formInfo.indexDataSourceGuid; | ||
| 783 | let dsInfo = dataSourceList.value.find(d => d.guid == indexDsGuid); | ||
| 784 | if (!dsInfo) return; | ||
| 785 | const res: any = await getDsTableFieldColumn({ | ||
| 786 | pageSize: 50, | ||
| 787 | pageIndex: 1, | ||
| 788 | dataSourceGuid: indexDsGuid, | ||
| 789 | database: dsInfo.databaseNameEn, | ||
| 790 | databaseType: dsInfo.databaseType, | ||
| 791 | tableName: val, | ||
| 792 | }); | ||
| 793 | if (res?.code == proxy.$passCode) { | ||
| 794 | if (indexFieldItem) { | ||
| 795 | // 使用与qualifiedIdentifier相同的格式:enName和chName | ||
| 796 | indexFieldItem.options = res.data?.map(d => ({ | ||
| 797 | enName: d.columnName, | ||
| 798 | chName: d.columnZhName || d.columnName | ||
| 799 | })) || []; | ||
| 800 | } | ||
| 801 | } else { | ||
| 802 | res?.msg && proxy.$ElMessage.error(res.msg); | ||
| 803 | } | ||
| 804 | }, | ||
| 677 | handleType: (val, row, formInfo) => { | 805 | handleType: (val, row, formInfo) => { |
| 678 | // 第一种匿名处理类型是不可以选择obs类型的。 | 806 | // 第一种匿名处理类型是不可以选择obs类型的。 |
| 679 | if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { | 807 | if (val == '01' && formInfo.dataSourceGuid && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType)) { |
| 680 | formInfo.dataSourceGuid = ''; | 808 | formInfo.dataSourceGuid = ''; |
| 809 | formInfo.tableName = ''; | ||
| 810 | formInfo.indexDataSourceGuid = ''; | ||
| 811 | formInfo.indexTableName = ''; | ||
| 812 | formInfo.indexFieldName = ''; | ||
| 813 | currDatasourceSelect.value = {}; | ||
| 814 | let item = dataSelectInfoItems.value.find(d => d.field == 'tableName'); | ||
| 815 | item && (item.options = []); | ||
| 681 | } | 816 | } |
| 682 | setDataSelectFormItems(formInfo); | 817 | setDataSelectFormItems(formInfo); |
| 683 | } | 818 | } |
| ... | @@ -688,6 +823,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { | ... | @@ -688,6 +823,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => { |
| 688 | } | 823 | } |
| 689 | 824 | ||
| 690 | const setDataSelectFormItems = (info, isDetail = false) => { | 825 | const setDataSelectFormItems = (info, isDetail = false) => { |
| 826 | // 获取不包含对象存储的数据源列表 | ||
| 827 | let dsExcludeObs = dataSourceList.value.filter(d => !d.storageType || d.storageType == '1'); | ||
| 691 | dataSelectInfoItems.value.forEach(item => { | 828 | dataSelectInfoItems.value.forEach(item => { |
| 692 | item.default = info[item.field]; | 829 | item.default = info[item.field]; |
| 693 | if (item.field == 'coverageArea') { | 830 | if (item.field == 'coverageArea') { |
| ... | @@ -724,7 +861,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { | ... | @@ -724,7 +861,19 @@ const setDataSelectFormItems = (info, isDetail = false) => { |
| 724 | } else if (item.field == 'tableName') { | 861 | } else if (item.field == 'tableName') { |
| 725 | item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 | 862 | item.visible = info['dataSource'] == 1 && !(info['dataSourceGuid'] && objectTypesList.value.includes(currDatasourceSelect.value?.databaseType));//数据源类型为obs的没有数据表选择 |
| 726 | } else if (item.field == 'dataSourceGuid') { | 863 | } else if (item.field == 'dataSourceGuid') { |
| 727 | item.options = info.handleType == '02' ? dataSourceList.value : dataSourceList.value.filter(d => !objectTypesList.value.includes(d.databaseType)) | 864 | item.options = info.handleType == '02' ? dataSourceList.value : dsExcludeObs; |
| 865 | } else if (item.field == 'indexDataSourceGuid') { | ||
| 866 | item.options = dsExcludeObs; | ||
| 867 | item.visible = currDatasourceSelect.value?.storageType == '2'; | ||
| 868 | } else if (['indexTableName', 'indexFieldName'].includes(item.field)) { | ||
| 869 | item.visible = currDatasourceSelect.value?.storageType == '2'; | ||
| 870 | item.required = !!info.indexDataSourceGuid; | ||
| 871 | if (item.required) { | ||
| 872 | dataSelectInfoFormRules.value[item.field] = [required(`请选择${item.label}`)]; | ||
| 873 | } else { | ||
| 874 | dataSelectInfoFormRules.value[item.field] = []; | ||
| 875 | } | ||
| 876 | item.options = info.indexDataSourceGuid ? item.options : []; | ||
| 728 | } | 877 | } |
| 729 | }); | 878 | }); |
| 730 | stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; | 879 | stepsInfo.value = info.handleType == '02' ? reportStepsInfo.value : originStepsInfo.value; |
| ... | @@ -1702,6 +1851,44 @@ onBeforeMount(() => { | ... | @@ -1702,6 +1851,44 @@ onBeforeMount(() => { |
| 1702 | } | 1851 | } |
| 1703 | }); | 1852 | }); |
| 1704 | } else { | 1853 | } else { |
| 1854 | let currIndexDatasourceSelect = detailInfo.value.indexDataSourceGuid && dataSourceList.value.find(d => d.guid == detailInfo.value.indexDataSourceGuid); | ||
| 1855 | if (currIndexDatasourceSelect) { | ||
| 1856 | const tableRes: any = await getDsTableByDs({ | ||
| 1857 | pageSize: -1, | ||
| 1858 | pageIndex: 1, | ||
| 1859 | dataSourceGuid: detailInfo.value.indexDataSourceGuid, | ||
| 1860 | database: currIndexDatasourceSelect.databaseNameEn, | ||
| 1861 | databaseType: currIndexDatasourceSelect.databaseType, | ||
| 1862 | tableName: '', | ||
| 1863 | hadFlag: false | ||
| 1864 | }); | ||
| 1865 | if (tableRes?.code == proxy.$passCode) { | ||
| 1866 | let item = dataSelectInfoItems.value.find(item => item.field == 'indexTableName'); | ||
| 1867 | item && (item.options = tableRes.data?.records || []); | ||
| 1868 | } else { | ||
| 1869 | proxy.$ElMessage.error(tableRes.msg); | ||
| 1870 | } | ||
| 1871 | getDsTableFieldColumn({ | ||
| 1872 | pageSize: 50, | ||
| 1873 | pageIndex: 1, | ||
| 1874 | dataSourceGuid: currIndexDatasourceSelect.guid, | ||
| 1875 | database: currIndexDatasourceSelect.databaseNameEn, | ||
| 1876 | databaseType: currIndexDatasourceSelect.databaseType, | ||
| 1877 | tableName: detailInfo.value.indexTableName, | ||
| 1878 | }).then((res: any) => { | ||
| 1879 | if (res?.code == proxy.$passCode) { | ||
| 1880 | let indexFieldsList = res.data?.map(d => { | ||
| 1881 | d.enName = d.columnName; | ||
| 1882 | d.chName = d.columnZhName; | ||
| 1883 | return d; | ||
| 1884 | }) || []; | ||
| 1885 | let item = dataSelectInfoItems.value.find(item => item.field == 'indexFieldName'); | ||
| 1886 | item && (item.options = indexFieldsList); | ||
| 1887 | } else { | ||
| 1888 | ElMessage.error(res.msg); | ||
| 1889 | } | ||
| 1890 | }); | ||
| 1891 | } | ||
| 1705 | setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); | 1892 | setDataSelectFormItems(Object.assign(detailInfo.value, { file: detailInfo.value.filePath ? [detailInfo.value.filePath] : [] }), true); |
| 1706 | } | 1893 | } |
| 1707 | } else if (dataSource == 3) { | 1894 | } else if (dataSource == 3) { | ... | ... |
-
Please register or sign in to post a comment