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 @@