提交血缘图片的上传和下载
Showing
3 changed files
with
98 additions
and
48 deletions
| ... | @@ -8,10 +8,14 @@ import { ElMessage, ElMessageBox } from "element-plus"; | ... | @@ -8,10 +8,14 @@ import { ElMessage, ElMessageBox } from "element-plus"; |
| 8 | import Table from '@/components/Table/index.vue' | 8 | import Table from '@/components/Table/index.vue' |
| 9 | import TableTools from '@/components/Tools/table_tools.vue' | 9 | import TableTools from '@/components/Tools/table_tools.vue' |
| 10 | import {getAnalysisReportList,delAnalysisRepor,updateAnalysisRepor} from "@/api/modules/dataMetaService" | 10 | import {getAnalysisReportList,delAnalysisRepor,updateAnalysisRepor} from "@/api/modules/dataMetaService" |
| 11 | import { getImageContent } from "@/api/modules/queryService"; | ||
| 12 | import Dialog from '@/components/Dialog/index.vue' | 11 | import Dialog from '@/components/Dialog/index.vue' |
| 13 | import { getDownloadUrl, download } from "@/utils/common"; | 12 | import { getDownloadUrl, download } from "@/utils/common"; |
| 14 | import { useRouter } from 'vue-router'; | 13 | import { useRouter } from 'vue-router'; |
| 14 | import { | ||
| 15 | parseAndDecodeUrl, | ||
| 16 | getDownFileSignByUrl, | ||
| 17 | obsDownloadRequest | ||
| 18 | } from "@/api/modules/obsService"; | ||
| 15 | const router = useRouter() | 19 | const router = useRouter() |
| 16 | const page = ref({ | 20 | const page = ref({ |
| 17 | limit: 50, | 21 | limit: 50, |
| ... | @@ -119,37 +123,47 @@ const tableSearchItemList: any = ref([{ | ... | @@ -119,37 +123,47 @@ const tableSearchItemList: any = ref([{ |
| 119 | placeholder: '血缘关系名称', | 123 | placeholder: '血缘关系名称', |
| 120 | clearable: true | 124 | clearable: true |
| 121 | }]); | 125 | }]); |
| 122 | const tableBtnClick = (scope, btn) => { | 126 | const tableBtnClick = async (scope, btn) => { |
| 123 | const type = btn.value; | 127 | const type = btn.value; |
| 124 | let row = scope.row; | 128 | let row = scope.row; |
| 125 | rowData.value = row | 129 | rowData.value = row |
| 126 | currTableData.value = row; | 130 | currTableData.value = row; |
| 127 | if (type == 'view') { | 131 | if (type == 'view') { |
| 128 | getImageContent(row.analysisReportUrl).then((res: any) => { | 132 | const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(row.analysisReportUrl).decodedPath); |
| 129 | if (res && !res.msg) { | 133 | if (!refSignInfo?.data) { |
| 130 | let name = row.analysisReportUrl; | 134 | refSignInfo?.msg && ElMessage.error(refSignInfo?.msg); |
| 131 | var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : ''; | 135 | return; |
| 132 | if (fileSuffix === 'png') { //浏览器可以支持图片和pdf预览 | 136 | } |
| 133 | let fileUrl = getDownloadUrl(res, name, fileSuffix); | 137 | obsDownloadRequest(refSignInfo?.data).then((res: any) => { |
| 134 | let win = window.open(fileUrl, name); | 138 | if (res && !res.msg) { |
| 135 | win && (win.document.title = name); | 139 | let name = row.analysisReportUrl; |
| 140 | var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : ''; | ||
| 141 | if (fileSuffix === 'png') { //浏览器可以支持图片和pdf预览 | ||
| 142 | let fileUrl = <string>getDownloadUrl(res, name, fileSuffix); | ||
| 143 | let win = window.open(fileUrl, name); | ||
| 144 | win && (win.document.title = name); | ||
| 145 | } else { | ||
| 146 | download(res, row.analysisReportName, fileSuffix); | ||
| 147 | } | ||
| 136 | } else { | 148 | } else { |
| 137 | download(res, row.analysisReportName, fileSuffix); | 149 | res?.msg && ElMessage.error(res?.msg); |
| 138 | } | 150 | } |
| 139 | } else { | 151 | }); |
| 140 | res?.msg && ElMessage.error(res?.msg); | ||
| 141 | } | ||
| 142 | }); | ||
| 143 | } else if (type == 'export') { | 152 | } else if (type == 'export') { |
| 144 | getImageContent(row.analysisReportUrl).then((res: any) => { | 153 | const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(row.analysisReportUrl).decodedPath); |
| 145 | if (res && !res.msg) { | 154 | if (!refSignInfo?.data) { |
| 146 | let name = row.analysisReportUrl; | 155 | refSignInfo?.msg && ElMessage.error(refSignInfo?.msg); |
| 147 | var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : ''; | 156 | return; |
| 148 | download(res, row.analysisReportName, fileSuffix); | ||
| 149 | } else { | ||
| 150 | res?.msg && ElMessage.error(res?.msg); | ||
| 151 | } | 157 | } |
| 152 | }); | 158 | obsDownloadRequest(refSignInfo?.data).then((res: any) => { |
| 159 | if (res && !res.msg) { | ||
| 160 | let name = row.analysisReportUrl; | ||
| 161 | var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : ''; | ||
| 162 | download(res, row.analysisReportName, fileSuffix); | ||
| 163 | } else { | ||
| 164 | res?.msg && ElMessage.error(res?.msg); | ||
| 165 | } | ||
| 166 | }); | ||
| 153 | } else if (type == "rename") { | 167 | } else if (type == "rename") { |
| 154 | dialogInfo.value.visible = true | 168 | dialogInfo.value.visible = true |
| 155 | formItems.value[0].default = row.analysisReportName | 169 | formItems.value[0].default = row.analysisReportName | ... | ... |
| ... | @@ -22,7 +22,11 @@ import { | ... | @@ -22,7 +22,11 @@ import { |
| 22 | delLineAge, | 22 | delLineAge, |
| 23 | checkTableData | 23 | checkTableData |
| 24 | } from '@/api/modules/dataMetaService'; | 24 | } from '@/api/modules/dataMetaService'; |
| 25 | import { getFileUrl } from "@/api/modules/queryService" | 25 | import { |
| 26 | parseAndDecodeUrl, | ||
| 27 | getUpFileSignByUrl, | ||
| 28 | obsUploadRequest | ||
| 29 | } from "@/api/modules/obsService"; | ||
| 26 | import { useRouter, useRoute } from "vue-router"; | 30 | import { useRouter, useRoute } from "vue-router"; |
| 27 | import useDataMetaStore from "@/store/modules/dataMeta" | 31 | import useDataMetaStore from "@/store/modules/dataMeta" |
| 28 | import { cloneDeep } from 'lodash-es' | 32 | import { cloneDeep } from 'lodash-es' |
| ... | @@ -857,17 +861,23 @@ const pageSave = () => { | ... | @@ -857,17 +861,23 @@ const pageSave = () => { |
| 857 | return | 861 | return |
| 858 | } | 862 | } |
| 859 | 863 | ||
| 860 | let formData = new FormData(); | 864 | dialogInfo1.value.footer.btns[1].loading = true; |
| 861 | formData.append('file', file.value); | 865 | return getUpFileSignByUrl({ fileName: `${analysisReportName}.png` }) |
| 862 | formData.append('fileName', `${analysisReportName}.png`); | 866 | .then((res: any) => { |
| 863 | getFileUrl(formData).then((res) => { | 867 | obsUploadRequest({ |
| 864 | saveMetaReportAnalysis({ | 868 | signedUrl: res.data.signedUrl, |
| 869 | file: file.value, | ||
| 870 | actualSignedRequestHeaders: res.data.actualSignedRequestHeaders | ||
| 871 | }).then(() => { | ||
| 872 | if (res.code == '00000') { | ||
| 873 | saveMetaReportAnalysis({ | ||
| 865 | table: lastClickNode.value.tableName, | 874 | table: lastClickNode.value.tableName, |
| 866 | database: lastClickNode.value.databaseName, | 875 | database: lastClickNode.value.databaseName, |
| 867 | analysisReportUrl: res.data, | 876 | analysisReportUrl: res.data?.signedUrl, |
| 868 | analysisReportName: analysisReportName, | 877 | analysisReportName: analysisReportName, |
| 869 | databaseChName: lastClickNode.value.databaseChName | 878 | databaseChName: lastClickNode.value.databaseChName |
| 870 | }).then((res: any) => { | 879 | }).then((res: any) => { |
| 880 | dialogInfo1.value.footer.btns[1].loading = false; | ||
| 871 | if (res.code == proxy.$passCode) { | 881 | if (res.code == proxy.$passCode) { |
| 872 | ElMessage({ | 882 | ElMessage({ |
| 873 | type: "success", | 883 | type: "success", |
| ... | @@ -883,9 +893,19 @@ const pageSave = () => { | ... | @@ -883,9 +893,19 @@ const pageSave = () => { |
| 883 | }) | 893 | }) |
| 884 | } | 894 | } |
| 885 | }) | 895 | }) |
| 886 | }).catch((res) => { | 896 | } else { |
| 897 | ElMessage({ | ||
| 898 | type: "error", | ||
| 899 | message: res.msg, | ||
| 900 | appendTo: lineageGraph.value.containerRef | ||
| 901 | }) | ||
| 902 | } | ||
| 903 | }).catch((res) => { | ||
| 887 | ElMessage.error(res.msg) | 904 | ElMessage.error(res.msg) |
| 888 | }) | 905 | }); |
| 906 | }).catch((res) => { | ||
| 907 | ElMessage.error(res.msg) | ||
| 908 | }); | ||
| 889 | } | 909 | } |
| 890 | 910 | ||
| 891 | const formItems1: any = ref([ | 911 | const formItems1: any = ref([ |
| ... | @@ -933,7 +953,7 @@ const dialogInfo1 = ref({ | ... | @@ -933,7 +953,7 @@ const dialogInfo1 = ref({ |
| 933 | footer: { | 953 | footer: { |
| 934 | btns: [ | 954 | btns: [ |
| 935 | { type: "default", label: "取消", value: "cancel" }, | 955 | { type: "default", label: "取消", value: "cancel" }, |
| 936 | { type: "primary", label: "保存", value: "submit" }, | 956 | { type: "primary", label: "保存", value: "submit", loading: false }, |
| 937 | ], | 957 | ], |
| 938 | }, | 958 | }, |
| 939 | }); | 959 | }); | ... | ... |
| ... | @@ -26,9 +26,13 @@ import { | ... | @@ -26,9 +26,13 @@ import { |
| 26 | saveMetaReportAnalysis, | 26 | saveMetaReportAnalysis, |
| 27 | checkTableData | 27 | checkTableData |
| 28 | } from '@/api/modules/dataMetaService'; | 28 | } from '@/api/modules/dataMetaService'; |
| 29 | import { getFileUrl } from "@/api/modules/queryService" | ||
| 30 | import useDataMetaStore from "@/store/modules/dataMeta" | 29 | import useDataMetaStore from "@/store/modules/dataMeta" |
| 31 | import { TableColumnWidth } from '@/utils/enum'; | 30 | import { TableColumnWidth } from '@/utils/enum'; |
| 31 | import { | ||
| 32 | parseAndDecodeUrl, | ||
| 33 | getUpFileSignByUrl, | ||
| 34 | obsUploadRequest | ||
| 35 | } from "@/api/modules/obsService"; | ||
| 32 | 36 | ||
| 33 | const { proxy } = getCurrentInstance() as any; | 37 | const { proxy } = getCurrentInstance() as any; |
| 34 | const router = useRouter(); | 38 | const router = useRouter(); |
| ... | @@ -556,18 +560,24 @@ const pageSave = () => { | ... | @@ -556,18 +560,24 @@ const pageSave = () => { |
| 556 | }) | 560 | }) |
| 557 | return | 561 | return |
| 558 | } | 562 | } |
| 559 | let formData = new FormData(); | ||
| 560 | formData.append('file', file.value); | ||
| 561 | formData.append('fileName', `${analysisReportName}.png`); | ||
| 562 | console.log(formInline1.value.pageName) | 563 | console.log(formInline1.value.pageName) |
| 563 | getFileUrl(formData).then((res) => { | 564 | dialogInfo1.value.footer.btns[1].loading = true; |
| 564 | saveMetaReportAnalysis({ | 565 | getUpFileSignByUrl({ fileName: `${analysisReportName}.png` }) |
| 566 | .then((res: any) => { | ||
| 567 | obsUploadRequest({ | ||
| 568 | signedUrl: res.data.signedUrl, | ||
| 569 | file: file.value, | ||
| 570 | actualSignedRequestHeaders: res.data.actualSignedRequestHeaders | ||
| 571 | }).then(() => { | ||
| 572 | if (res.code == '00000') { | ||
| 573 | saveMetaReportAnalysis({ | ||
| 565 | table: sheetInfo.value.tableName, | 574 | table: sheetInfo.value.tableName, |
| 566 | database: sheetInfo.value.databaseName, | 575 | database: sheetInfo.value.databaseName, |
| 567 | analysisReportUrl: res.data, | 576 | analysisReportUrl: res.data?.signedUrl, |
| 568 | analysisReportName: analysisReportName, | 577 | analysisReportName: analysisReportName, |
| 569 | databaseChName: sheetInfo.value.databaseChName | 578 | databaseChName: sheetInfo.value.databaseChName |
| 570 | }).then((res: any) => { | 579 | }).then((res: any) => { |
| 580 | dialogInfo1.value.footer.btns[1].loading = false; | ||
| 571 | if (res.code == proxy.$passCode) { | 581 | if (res.code == proxy.$passCode) { |
| 572 | // ElMessage.success("保存成功") | 582 | // ElMessage.success("保存成功") |
| 573 | ElMessage({ | 583 | ElMessage({ |
| ... | @@ -584,13 +594,19 @@ const pageSave = () => { | ... | @@ -584,13 +594,19 @@ const pageSave = () => { |
| 584 | }) | 594 | }) |
| 585 | } | 595 | } |
| 586 | }) | 596 | }) |
| 587 | }).catch((res) => { | 597 | } else { |
| 588 | ElMessage({ | 598 | ElMessage({ |
| 589 | type: "error", | 599 | type: "error", |
| 590 | message: res.msg, | 600 | message: res.msg, |
| 591 | appendTo: lineageGraph.value[0].containerRef | 601 | appendTo: lineageGraph.value.containerRef |
| 592 | }) | 602 | }) |
| 593 | }) | 603 | } |
| 604 | }).catch((res) => { | ||
| 605 | ElMessage.error(res.msg) | ||
| 606 | }); | ||
| 607 | }).catch((res) => { | ||
| 608 | ElMessage.error(res.msg) | ||
| 609 | }); | ||
| 594 | } | 610 | } |
| 595 | 611 | ||
| 596 | const formItems1: any = ref([ | 612 | const formItems1: any = ref([ |
| ... | @@ -638,7 +654,7 @@ const dialogInfo1 = ref({ | ... | @@ -638,7 +654,7 @@ const dialogInfo1 = ref({ |
| 638 | footer: { | 654 | footer: { |
| 639 | btns: [ | 655 | btns: [ |
| 640 | { type: "default", label: "取消", value: "cancel" }, | 656 | { type: "default", label: "取消", value: "cancel" }, |
| 641 | { type: "primary", label: "保存", value: "submit" }, | 657 | { type: "primary", label: "保存", value: "submit", loading: false }, |
| 642 | ], | 658 | ], |
| 643 | }, | 659 | }, |
| 644 | }); | 660 | }); | ... | ... |
-
Please register or sign in to post a comment