9bca7e98 by lihua

提交血缘图片的上传和下载

1 parent 96af58b9
......@@ -8,10 +8,14 @@ import { ElMessage, ElMessageBox } from "element-plus";
import Table from '@/components/Table/index.vue'
import TableTools from '@/components/Tools/table_tools.vue'
import {getAnalysisReportList,delAnalysisRepor,updateAnalysisRepor} from "@/api/modules/dataMetaService"
import { getImageContent } from "@/api/modules/queryService";
import Dialog from '@/components/Dialog/index.vue'
import { getDownloadUrl, download } from "@/utils/common";
import { useRouter } from 'vue-router';
import {
parseAndDecodeUrl,
getDownFileSignByUrl,
obsDownloadRequest
} from "@/api/modules/obsService";
const router = useRouter()
const page = ref({
limit: 50,
......@@ -119,37 +123,47 @@ const tableSearchItemList: any = ref([{
placeholder: '血缘关系名称',
clearable: true
}]);
const tableBtnClick = (scope, btn) => {
const tableBtnClick = async (scope, btn) => {
const type = btn.value;
let row = scope.row;
rowData.value = row
currTableData.value = row;
if (type == 'view') {
getImageContent(row.analysisReportUrl).then((res: any) => {
if (res && !res.msg) {
let name = row.analysisReportUrl;
var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : '';
if (fileSuffix === 'png') { //浏览器可以支持图片和pdf预览
let fileUrl = getDownloadUrl(res, name, fileSuffix);
let win = window.open(fileUrl, name);
win && (win.document.title = name);
const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(row.analysisReportUrl).decodedPath);
if (!refSignInfo?.data) {
refSignInfo?.msg && ElMessage.error(refSignInfo?.msg);
return;
}
obsDownloadRequest(refSignInfo?.data).then((res: any) => {
if (res && !res.msg) {
let name = row.analysisReportUrl;
var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : '';
if (fileSuffix === 'png') { //浏览器可以支持图片和pdf预览
let fileUrl = <string>getDownloadUrl(res, name, fileSuffix);
let win = window.open(fileUrl, name);
win && (win.document.title = name);
} else {
download(res, row.analysisReportName, fileSuffix);
}
} else {
download(res, row.analysisReportName, fileSuffix);
res?.msg && ElMessage.error(res?.msg);
}
} else {
res?.msg && ElMessage.error(res?.msg);
}
});
});
} else if (type == 'export') {
getImageContent(row.analysisReportUrl).then((res: any) => {
if (res && !res.msg) {
let name = row.analysisReportUrl;
var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : '';
download(res, row.analysisReportName, fileSuffix);
} else {
res?.msg && ElMessage.error(res?.msg);
const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(row.analysisReportUrl).decodedPath);
if (!refSignInfo?.data) {
refSignInfo?.msg && ElMessage.error(refSignInfo?.msg);
return;
}
});
obsDownloadRequest(refSignInfo?.data).then((res: any) => {
if (res && !res.msg) {
let name = row.analysisReportUrl;
var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : '';
download(res, row.analysisReportName, fileSuffix);
} else {
res?.msg && ElMessage.error(res?.msg);
}
});
} else if (type == "rename") {
dialogInfo.value.visible = true
formItems.value[0].default = row.analysisReportName
......
......@@ -22,7 +22,11 @@ import {
delLineAge,
checkTableData
} from '@/api/modules/dataMetaService';
import { getFileUrl } from "@/api/modules/queryService"
import {
parseAndDecodeUrl,
getUpFileSignByUrl,
obsUploadRequest
} from "@/api/modules/obsService";
import { useRouter, useRoute } from "vue-router";
import useDataMetaStore from "@/store/modules/dataMeta"
import { cloneDeep } from 'lodash-es'
......@@ -857,17 +861,23 @@ const pageSave = () => {
return
}
let formData = new FormData();
formData.append('file', file.value);
formData.append('fileName', `${analysisReportName}.png`);
getFileUrl(formData).then((res) => {
saveMetaReportAnalysis({
dialogInfo1.value.footer.btns[1].loading = true;
return getUpFileSignByUrl({ fileName: `${analysisReportName}.png` })
.then((res: any) => {
obsUploadRequest({
signedUrl: res.data.signedUrl,
file: file.value,
actualSignedRequestHeaders: res.data.actualSignedRequestHeaders
}).then(() => {
if (res.code == '00000') {
saveMetaReportAnalysis({
table: lastClickNode.value.tableName,
database: lastClickNode.value.databaseName,
analysisReportUrl: res.data,
analysisReportUrl: res.data?.signedUrl,
analysisReportName: analysisReportName,
databaseChName: lastClickNode.value.databaseChName
}).then((res: any) => {
dialogInfo1.value.footer.btns[1].loading = false;
if (res.code == proxy.$passCode) {
ElMessage({
type: "success",
......@@ -883,9 +893,19 @@ const pageSave = () => {
})
}
})
}).catch((res) => {
} else {
ElMessage({
type: "error",
message: res.msg,
appendTo: lineageGraph.value.containerRef
})
}
}).catch((res) => {
ElMessage.error(res.msg)
})
});
}).catch((res) => {
ElMessage.error(res.msg)
});
}
const formItems1: any = ref([
......@@ -933,7 +953,7 @@ const dialogInfo1 = ref({
footer: {
btns: [
{ type: "default", label: "取消", value: "cancel" },
{ type: "primary", label: "保存", value: "submit" },
{ type: "primary", label: "保存", value: "submit", loading: false },
],
},
});
......
......@@ -26,9 +26,13 @@ import {
saveMetaReportAnalysis,
checkTableData
} from '@/api/modules/dataMetaService';
import { getFileUrl } from "@/api/modules/queryService"
import useDataMetaStore from "@/store/modules/dataMeta"
import { TableColumnWidth } from '@/utils/enum';
import {
parseAndDecodeUrl,
getUpFileSignByUrl,
obsUploadRequest
} from "@/api/modules/obsService";
const { proxy } = getCurrentInstance() as any;
const router = useRouter();
......@@ -556,18 +560,24 @@ const pageSave = () => {
})
return
}
let formData = new FormData();
formData.append('file', file.value);
formData.append('fileName', `${analysisReportName}.png`);
console.log(formInline1.value.pageName)
getFileUrl(formData).then((res) => {
saveMetaReportAnalysis({
dialogInfo1.value.footer.btns[1].loading = true;
getUpFileSignByUrl({ fileName: `${analysisReportName}.png` })
.then((res: any) => {
obsUploadRequest({
signedUrl: res.data.signedUrl,
file: file.value,
actualSignedRequestHeaders: res.data.actualSignedRequestHeaders
}).then(() => {
if (res.code == '00000') {
saveMetaReportAnalysis({
table: sheetInfo.value.tableName,
database: sheetInfo.value.databaseName,
analysisReportUrl: res.data,
analysisReportUrl: res.data?.signedUrl,
analysisReportName: analysisReportName,
databaseChName: sheetInfo.value.databaseChName
}).then((res: any) => {
dialogInfo1.value.footer.btns[1].loading = false;
if (res.code == proxy.$passCode) {
// ElMessage.success("保存成功")
ElMessage({
......@@ -584,13 +594,19 @@ const pageSave = () => {
})
}
})
}).catch((res) => {
ElMessage({
type: "error",
message: res.msg,
appendTo: lineageGraph.value[0].containerRef
})
})
} else {
ElMessage({
type: "error",
message: res.msg,
appendTo: lineageGraph.value.containerRef
})
}
}).catch((res) => {
ElMessage.error(res.msg)
});
}).catch((res) => {
ElMessage.error(res.msg)
});
}
const formItems1: any = ref([
......@@ -638,7 +654,7 @@ const dialogInfo1 = ref({
footer: {
btns: [
{ type: "default", label: "取消", value: "cancel" },
{ type: "primary", label: "保存", value: "submit" },
{ type: "primary", label: "保存", value: "submit", loading: false },
],
},
});
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!