diff --git a/src/api/project/run.ts b/src/api/project/run.ts index 6f48e10f..35d5d316 100644 --- a/src/api/project/run.ts +++ b/src/api/project/run.ts @@ -235,9 +235,14 @@ export const editExperimentResultApi = (params: any) => { return post(`${PREFIX}run/editExperimentResult`, params); }; -// 算例下编辑报告 +// 保存算例编辑报告 export const editReportApi = (params: any) => { - return download(`${PREFIX}run/editReport`, params, params.fileName); + return post(`${PREFIX}run/editReport`, params); +}; + +// 保存并下载算例编辑报告 +export const editReportAndDownloadApi = (params: any) => { + return download(`${PREFIX}run/editReportAndDownload`, params, params.fileName); }; // 算例下编辑报告 diff --git a/src/components/common/report/reportEdit/img.vue b/src/components/common/report/reportEdit/img.vue index 69d46ea7..97b2062f 100644 --- a/src/components/common/report/reportEdit/img.vue +++ b/src/components/common/report/reportEdit/img.vue @@ -18,7 +18,12 @@
- +
@@ -50,6 +55,7 @@ import { ref, watch, onMounted, onBeforeUnmount, nextTick } from 'vue'; import { Picture, DeleteFilled } from '@element-plus/icons-vue'; import Dialog from '@/components/common/dialog/index.vue'; +import { cloneDeep } from 'lodash-es'; const emit = defineEmits(['update:keyValue', 'update:value']); @@ -83,11 +89,11 @@ watch( ); watch( - () => fileList.value, + () => props.value, (val: any) => { - emit('update:value', val); + fileList.value = cloneDeep(val); }, - { deep: true } + { deep: true, immediate: true } ); onMounted(() => { @@ -121,17 +127,10 @@ const delFun = (index: any) => { PasteContentRef.value.focus(); fileList.value.splice(index, 1); contenteditable.value = false; + emit('update:value', fileList.value); }); }; -watch( - () => fileList.value, - (val: any) => { - emit('update:value', val); - }, - { deep: true } -); - const pasteFun = (event: any) => { if (props.disabled) { return; @@ -151,6 +150,7 @@ const pasteFun = (event: any) => { fileList.value.push({ src: base64, }); + emit('update:value', fileList.value); }; reader.readAsDataURL(file); break; @@ -158,6 +158,10 @@ const pasteFun = (event: any) => { } }; +const inputFun = () => { + emit('update:value', fileList.value); +}; + const closeFun = () => { diaShow.value = false; }; diff --git a/src/components/common/report/reportEdit/index.vue b/src/components/common/report/reportEdit/index.vue index c6ca27d3..966314e1 100644 --- a/src/components/common/report/reportEdit/index.vue +++ b/src/components/common/report/reportEdit/index.vue @@ -58,7 +58,7 @@
-
+
@@ -310,7 +310,7 @@ const getFormatDataFun = () => { }); grid.children.forEach((unit: any) => { if (unit.type === 'form') { - unit.value.forEach((item: any) => { + unit.children.forEach((item: any) => { build.push({ type: 'text', key: item.key, diff --git a/src/components/common/report/reportEdit/table.vue b/src/components/common/report/reportEdit/table.vue index 9797c56e..3e97c854 100644 --- a/src/components/common/report/reportEdit/table.vue +++ b/src/components/common/report/reportEdit/table.vue @@ -8,7 +8,7 @@ :label="item.title" > @@ -96,14 +96,6 @@ watch( { deep: true } ); -watch( - () => tableData.value, - (val: any) => { - emit('update:value', val); - }, - { deep: true } -); - watch( () => props.head, (val: any) => { @@ -112,6 +104,18 @@ watch( { deep: true, immediate: true } ); +watch( + () => props.value, + (val: any) => { + tableData.value = cloneDeep(val); + }, + { deep: true, immediate: true } +); + +const inputFun = () => { + emit('update:value', tableData.value); +}; + const addFun = () => { headData.value.push({ title: '', @@ -121,10 +125,12 @@ const addFun = () => { const addDataFun = () => { tableData.value.push({}); + emit('update:value', tableData.value); }; const delDataFun = (index: any) => { tableData.value.splice(index, 1); + emit('update:value', tableData.value); }; const delHeadFun = (index: any) => { diff --git a/src/components/common/report/reportInputDialog.vue b/src/components/common/report/reportInputDialog.vue index f97e6278..1d1919d6 100644 --- a/src/components/common/report/reportInputDialog.vue +++ b/src/components/common/report/reportInputDialog.vue @@ -1,7 +1,8 @@