提交 8f485294 authored 作者: 龙菲's avatar 龙菲

修复展览编辑过程中出现的问题

上级 0d8b179b
......@@ -82,4 +82,10 @@ export const displayTabletitle = [{
columnAlign: 'center',
isVideos: true
},
{
prop: "exhibitionUnits",
label: "展览单元",
columnAlign: 'center',
isVideos: true
},
]
\ No newline at end of file
......@@ -8,94 +8,72 @@
v-for="(item, index) in displayTabletitle"
:key="index"
>
<div v-if="item.prop == 'intro'">
<span v-if="info['intro']">{{ info["intro"] }}</span>
<span v-else></span>
</div>
<RichTextShow
:richText="info['intro']"
v-if="hasProp(item, 'intro')"
/>
<!-- 展览类型 -->
<div v-else-if="item.prop === 'type'">
<DictText
name="displayType"
:dictValue="info['type']"
v-if="info['type']"
/>
<span v-else></span>
</div>
<DictText
v-else-if="hasProp(item, 'type')"
name="displayType"
:dictValue="info['type']"
/>
<!-- 模板主题 -->
<div v-else-if="item.prop == 'themeType'">
<span v-if="info['themeType']">{{
$constantsTool.getLabelByValue("themeType", info["themeType"])
}}</span>
<span v-else></span>
</div>
<div v-else-if="item.prop == 'faceImagePressUrl'">
<el-image
v-if="info['faceImagePressUrl']"
class="image"
:src="info['faceImagePressUrl']"
fit="contain"
:preview-src-list="[info['faceImageUrl']]"
>
</el-image>
<span v-else></span>
<div v-else-if="hasProp(item, 'themeType')">
{{ $constantsTool.getLabelByValue("themeType", info["themeType"]) }}
</div>
<div v-else-if="item.prop == 'imagesVo'">
<div v-if="info['imagesVo'].length > 0">
<!-- 封面 -->
<el-image
v-else-if="hasProp(item, 'faceImagePressUrl')"
class="face-image"
:src="info['faceImagePressUrl']"
fit="contain"
:preview-src-list="[info['faceImageUrl']]"
>
</el-image>
<!-- 图片 -->
<el-row :gutter="10" v-else-if="hasProp(item, 'imagesVo')">
<el-col :span="4" v-for="(v, i) in info['imagesVo']">
<el-image
v-for="(v, i) in info['imagesVo']"
:key="i"
fit="contain"
class="image"
:src="v.pressUrl"
fit="contain"
:preview-src-list="imgsList"
>
</el-image>
</div>
<span v-else></span>
</div>
<div v-else-if="item.prop == 'videosVo'">
<div v-if="info['videosVo'].length > 0">
<VideoPlayer
class="video"
v-for="(v, i) in info['videosVo']"
:key="i"
:src="v.url"
/>
</div>
<span v-else></span>
</div>
<div v-else-if="item.prop == 'audiosVo'">
<div v-if="info['audiosVo'].length > 0">
<AudioPlayer
v-for="(v, i) in info['audiosVo']"
:key="i"
:url="v.url"
ref="AudioPlayer"
/>
</div>
<span v-else></span>
</div>
<div v-else-if="item.prop == 'literatureVo'">
<div v-if="info['literatureVo'].length > 0">
<el-table stripe border :data="info['literatureVo']">
<el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="authors" label="作者"></el-table-column>
<el-table-column prop="source" label="来源"></el-table-column>
<!-- <el-table-column prop="source" label="操作">
<template slot-scope="scope">
<el-button type="text">预览</el-button>
</template>
</el-table-column> -->
</el-table>
</div>
<span v-else>暂无文献</span>
</div>
<RichTextShow
v-else-if="item.prop === 'intro'"
:richText="info['intro']"
></RichTextShow>
<span v-else>{{ info[item.prop] || "无" }}</span>
></el-image>
</el-col>
</el-row>
<!-- 视频 -->
<el-row :gutter="10" v-else-if="hasProp(item, 'videosVo')">
<el-col :span="4" v-for="(v, i) in info['videosVo']">
<VideoPlayer class="video" :key="i" :src="v.url" />
</el-col>
</el-row>
<!-- 音频 -->
<el-row :gutter="10" v-else-if="hasProp(item, 'audiosVo')">
<el-col :span="4" v-for="(v, i) in info['audiosVo']">
<AudioPlayer :key="i" :url="v.url" ref="AudioPlayer" />
</el-col>
</el-row>
<!-- 文献 -->
<el-table
stripe
border
:data="info['literatureVo']"
v-else-if="hasProp(item, 'literatureVo')"
>
<el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="authors" label="作者"></el-table-column>
<el-table-column prop="source" label="来源"></el-table-column>
</el-table>
<!-- 展览单元 -->
<ExhibitionPreview
v-else-if="hasProp(item, 'exhibitionUnits')"
:data="info['exhibitionUnits']"
/>
<span v-else-if="info[item.prop] && info[item.prop].length == 0"
></span
>
<span v-else>{{ info[item.prop] }}</span>
</el-descriptions-item>
</el-descriptions>
</el-card>
......@@ -107,10 +85,12 @@
import { displayTabletitle } from "./config";
import VideoPlayer from "@/components/VideoPlayer";
import AudioPlayer from "@/components/AudioPlayer";
import ExhibitionPreview from "@/components/ExhibitionPreview";
export default {
components: {
VideoPlayer,
AudioPlayer,
ExhibitionPreview,
},
props: {
info: {
......@@ -131,6 +111,15 @@ export default {
displayTabletitle,
};
},
methods: {
hasProp(item, key) {
if (this.info[key] instanceof Array) {
return item.prop == key && this.info[key] && this.info[key].length > 0;
} else {
return item.prop == key && this.info[key];
}
},
},
};
</script>
......@@ -143,17 +132,23 @@ export default {
flex: 1;
}
.face-image,
.image {
margin-right: 20px;
width: 200px;
height: 200px;
border: 1px solid #dadada;
border-radius: 4px;
}
.face-image {
width: 200px;
}
.image {
width: 100%;
}
.video {
width: 400px;
height: 400px;
border: 1px solid #dadada;
border-radius: 4px;
border-radius: 8px;
}
</style>
<template>
<el-collapse-item :title="item.title" :name="item.euId">
<el-card>
<h3>{{ item.title }}</h3>
<el-form-item label="文字介绍:">
<div class="intro">
<RichTextShow :richText="item.intro"></RichTextShow>
</div>
</el-form-item>
<div
class="crId"
v-if="item.culturalRelics && item.culturalRelics.length > 0"
>
<el-form-item label="相关文物:">
<el-row :gutter="10">
<el-col :span="4" v-for="(v, i) in item.culturalRelics">
<el-image fit="contain" :src="v.faceImagePressUrl"></el-image>
</el-col>
</el-row>
</el-form-item>
</div>
<div class="images" v-if="item.imagesVo && item.imagesVo.length > 0">
<el-form-item label="相关图片:">
<el-row :gutter="10">
<el-col :span="4" v-for="(v, i) in item.imagesVo">
<el-image fit="contain" :src="v.middleUrl"></el-image>
</el-col>
</el-row>
</el-form-item>
</div>
</el-card>
</el-collapse-item>
</template>
<script>
export default {
name: "CollapsItem",
props: {
item: {
default: () => ({}),
type: Object,
},
},
mounted() {},
methods: {},
};
</script>
<style scoped lang="scss">
::v-deep .el-image {
width: 100%;
height: 200px;
border: 1px solid #dadada;
border-radius: 8px;
}
</style>
<template>
<div v-if="data && data.length > 0">
<el-collapse
v-model="activeNames"
v-for="(item, index) in data"
:key="index"
>
<el-form>
<el-collapse-item :title="item.title" :name="item.euId">
<el-card>
<h3>{{ item.title }}</h3>
<el-form-item label="文字介绍:">
<div class="intro">
<RichTextShow :richText="item.intro"></RichTextShow>
</div>
</el-form-item>
<div
class="crId"
v-if="item.culturalRelics && item.culturalRelics.length > 0"
>
<el-form-item label="相关文物:">
<el-row :gutter="10">
<el-col :span="4" v-for="(v, i) in item.culturalRelics">
<el-image
fit="contain"
:src="v.faceImagePressUrl"
></el-image>
</el-col>
</el-row>
</el-form-item>
</div>
<div
class="images"
v-if="item.imagesVo && item.imagesVo.length > 0"
>
<el-form-item label="相关图片:">
<el-row :gutter="10">
<el-col :span="4" v-for="(v, i) in item.imagesVo">
<el-image fit="contain" :src="v.middleUrl"></el-image>
</el-col>
</el-row>
</el-form-item>
</div>
</el-card>
</el-collapse-item>
<div class="indent20">
<ExhibitionPreview
v-for="(v, i) in item.children"
:key="i"
:data="item.children"
/>
</div>
</el-form>
</el-collapse>
</div>
</template>
<script>
export default {
name: "ExhibitionPreview",
props: {
data: {
type: Array,
default: () => [],
},
},
data() {
return {
activeNames: "",
};
},
mounted() {},
methods: {},
};
</script>
<style scoped lang="scss">
.indent20 {
padding-left: 20px;
}
</style>
......@@ -102,6 +102,9 @@ export default {
immediate: true,
deep: true,
},
fileList(value) {
console.log(444, value);
},
},
computed: {
// 是否显示提示
......@@ -126,21 +129,22 @@ export default {
// return this.fileList.length == this.fileLimit;
// },
},
methods: {
getFiles() {
if (
this.fileType.indexOf("jpg") != -1 ||
this.fileType.indexOf("jpeg") != -1 ||
this.fileType.indexOf("png") != -1
) {
let tempList = [...this.fileList];
let newFileList = tempList.map((item) => {
const isImage = this.fileType.some((item) => {
return ["jpg", "jpeg", "png"].includes(item);
});
// 不能使用JSON.stringify及JSON.parse,因为有File对象
const tempList = [...this.fileList];
if (isImage) {
const newFileList = tempList.map((item) => {
if (item.status == "ready") {
return item;
} else {
const { highImg, lowImg, name, fileId, status } = item;
const obj = {
urL: highImg,
url: highImg,
pressUrl: lowImg,
name,
fileId,
......@@ -151,7 +155,7 @@ export default {
});
return newFileList;
} else {
return this.fileList;
return tempList;
}
},
// 上传前校检格式和大小
......@@ -200,17 +204,14 @@ export default {
// 文件列表移除文件时的钩子
handleRemove(file, fileList) {
let that = this;
// debugger;
const { status } = file;
if (status == "success") {
this.removedIds.push(file.fileId);
this.$emit("getRemovedIds", this.removedIds);
}
that.fileList.map(async (item, index) => {
if (item.uid === file.uid) {
that.fileList.splice(index, 1);
}
});
this.fileList = fileList;
console.log(123, this.fileList);
},
handleChange(file, fileList) {
......
......@@ -86,15 +86,12 @@ const bizTransform = {
* @returns {Boolean} 组件需要的布尔值
*/
statusStrToBool(statusString) {
if (
!(
statusString &&
statusString instanceof String &&
statusString instanceof Number
)
) {
if (!statusString) {
return;
}
if (!statusString instanceof String) {
return statusString
}
const statusBoolean = Boolean(Number(statusString));
return statusBoolean;
},
......@@ -109,8 +106,10 @@ const bizTransform = {
let deptIdArr = [];
if (deptId) {
deptIdArr = [deptId];
} else if (userInfo) {
} else if (userInfo.deptId) {
deptIdArr = [userInfo.deptId];
} else {
return deptId
}
return deptIdArr;
},
......
......@@ -49,6 +49,7 @@ const fileUploadFuctions = {
const currentFileList = fileUploadFuctions.getMediaFile($el, mediaKey);
currentFileList.forEach((file) => {
if (fileUploadFuctions.isFileRaw(file)) {
console.log(' file.raw', file.raw);
formData.append(mediaKey, file.raw);
}
});
......
......@@ -219,7 +219,7 @@ export default {
imagesVo: [],
videosVo: [],
currentData: {}, //当前点击的树节点
// 富文本编辑器默认内容
removedIds: [],
};
},
methods: {
......@@ -382,8 +382,9 @@ export default {
}
},
getRemovedIds(removedIds) {
this.removedIds = [...new Set([...this.removedIds, ...removedIds])];
console.log("this.removedIds", this.removedIds);
if (removedIds) {
this.removedIds = [...new Set([...this.removedIds, ...removedIds])];
}
},
},
};
......
......@@ -13,7 +13,7 @@
<div class="divider"></div>
<div class="label">
{{ title }}
<span
<!-- <span
v-if="dialogForm.exhibitionId"
style="font-size: 12px; margin-left: 10px; font-weight: 500"
>
......@@ -21,7 +21,7 @@
>点击左右切换按钮可切换展览。<span style="color: #f56c6c">
注意:切换前请注意保存当前展览信息
</span>
</span>
</span> -->
</div>
</div>
<div class="el-dialog-div">
......@@ -335,7 +335,7 @@
</el-button> -->
</div>
</div>
<el-tooltip
<!-- <el-tooltip
class="item"
effect="dark"
content="下一展览"
......@@ -362,7 +362,7 @@
>
<i class="el-icon-arrow-left"></i>
</div>
</el-tooltip>
</el-tooltip> -->
</el-dialog>
</template>
......@@ -404,11 +404,7 @@ export default {
computed: {
...mapGetters(["userInfo", "dicts"]),
title() {
if (this.dialogForm.exhibitionId) {
return "修改信息";
} else {
return "发布展览";
}
return this.dialogForm.exhibitionId ? "修改信息" : "发布展览";
},
themeTypeOptions() {
return themeTypeOptions;
......@@ -426,20 +422,25 @@ export default {
},
"dialogForm.themeType": {
handler: function (value) {
switch (value) {
case "2":
this.imagesAdvice =
"中国风主题建议上传10张以上的展览图片,效果更好";
break;
default:
this.imagesAdvice = "";
break;
if (!value) {
return;
}
if (value == "2") {
this.imagesAdvice = "中国风主题建议上传10张以上的展览图片,效果更好";
} else {
this.imagesAdvice = "";
}
},
},
currentId(value) {
this.$emit("changeDisplay", value);
images: {
handler: function (value) {
console.log(value);
},
deep: true,
},
// currentId(value) {
// this.$emit("changeDisplay", value);
// },
},
data() {
return {
......@@ -516,10 +517,12 @@ export default {
videosVo,
audiosVo,
status,
literature,
literatureVo,
deptId,
exhibitionUnits,
culturalRelicVo,
crIds,
virtualVo,
} = this.dialogForm;
this.faceImage = faceImageToClient(
......@@ -531,15 +534,22 @@ export default {
this.videos = videosVo || [];
this.audios = audiosVo || [];
this.crList = this.getClientCrList(culturalRelicVo);
this.crIds = this.getClientCrIds(culturalRelicVo);
this.crIds = this.getClientCrIds(crIds);
this.vrList = this.getClientVrList(virtualVo);
this.vrIds = this.getClientVrIds(virtualVo);
this.dialogForm.status = statusStrToBool(status);
this.literatureIdArr = literatureListToIds(literatureVo);
this.dialogForm.status = this.getClientStatus(status);
this.literatureIdArr = this.getClientLiteratureIds(literature);
this.literatureList = literatureVo;
this.dialogForm.deptId = getDeptIdArr(deptId, this.userInfo);
this.dialogForm.exhibitionUnits = this.getClientUnit(exhibitionUnits);
}
},
getClientStatus(status) {
if (status == undefined) {
return false;
}
return Boolean(Number(status));
},
// 获取前端需要的文物list
getClientCrList(culturalRelicVo) {
if (!culturalRelicVo || culturalRelicVo.length == 0) {
......@@ -548,16 +558,16 @@ export default {
return culturalRelicVo;
},
// 获取前端需要的文物id合集
getClientCrIds(culturalRelicVo) {
if (!culturalRelicVo || culturalRelicVo.length == 0) {
getClientCrIds(crIds) {
if (!crIds) {
return;
}
const crIds = culturalRelicVo.map((item) => {
return item.crId;
});
return crIds;
if (crIds.includes(",")) {
return crIds.split(",");
} else {
return [crIds];
}
},
// 获取前端需要的虚拟展list
getClientVrList(virtualVo) {
if (!virtualVo || virtualVo.length == 0) {
......@@ -575,6 +585,17 @@ export default {
});
return vrIds;
},
getClientLiteratureIds(literature) {
if (!literature) {
return;
}
if (literature.includes(",")) {
return literature.split(",");
} else {
return [literature];
}
},
// 获取前端需要的布展单元
getClientUnit(exhibitionUnits) {
function loopUnit(arr) {
......@@ -646,6 +667,7 @@ export default {
}
}, 500);
},
// 关联文物查询
searchCR(queryString) {
let that = this;
......@@ -682,7 +704,7 @@ export default {
if (this.submitLoading) {
this.submitLoading = false;
}
this.reload();
this.resetData();
},
handleToTop() {
......@@ -719,7 +741,6 @@ export default {
} else {
this.$message.info("已经是此页最后一个!");
}
console.log("this.currentId", this.currentId);
break;
case "prev":
if (this.currentPageIds[index - 1]) {
......@@ -727,23 +748,21 @@ export default {
} else {
this.$message.info("已经是此页第一个!");
}
console.log("this.currentId", this.currentId);
break;
}
},
getRemovedIds(removedIds) {
this.removedIds = [...new Set([...this.removedIds, ...removedIds])];
console.log("this.removedIds", this.removedIds);
if (removedIds) {
this.removedIds = [...new Set([...this.removedIds, ...removedIds])];
}
},
handleDeleteForm() {},
handleSubmit(submitFlag) {
submit(submitFlag, this);
},
// 清空编辑组件中的所有值
reload() {
resetData() {
// 清空文献
this.literatureIdArr = [];
// 清空文物
......@@ -773,15 +792,13 @@ export default {
this.$confirm("确认关闭?")
.then((_) => {
this.visible = false;
this.reload();
this.resetData();
this.submitLoading = false;
this.$emit("handleClose");
done();
})
.catch((_) => {});
},
refresh() {
this.$emit("refresh");
},
},
};
</script>
......
......@@ -2,14 +2,16 @@
import { addOrUpdateDisplayTemp } from "@/api/display";
import bizUploadFunctions from "@/utils/bizUploadFunctions";
import bizTransform from "@/utils/bizTransform";
import { uploadV1 } from "@/utils/file";
const { getNeedUploadFormData, isFileRaw, isFormDataHasData, handleDeleteFiles } =
import { file, uploadV1 } from "@/utils/file";
const { getNeedUploadFormData, isFileRaw, isFormDataHasData, handleDeleteFiles, getMediaFile } =
bizUploadFunctions;
const { getDeptIdStr } = bizTransform;
const mediaKeys = ["faceImage", "images", "videos", "audios"];
// 新增和修改提交时表单需要删除的字段,因为后端没有做更新
const needDelete = ['culturalRelicVo', 'imagesVo', 'videosVo', 'audiosVo', 'literatureVo', 'virtualVo', 'literatureVo', 'faceImageMiddleUrl', 'faceImagePressUrl', 'faceImageUrl']
const getUnitData = ($el) => {
const units = $el.$refs["exhibitionUnits"].getUnitData();
......@@ -73,20 +75,21 @@ const getUnitRemovedIds = ($el) => {
return $el.$refs["exhibitionUnits"].getRemovedIds();
};
//获取布展单元媒体文件中仍然需要保留的文件id
const getUnitExsitedObj = ($el, units) => {
const obj = {};
loopUnits(units, obj);
return obj;
function loopUnits(arr, obj) {
arr.forEach((item) => {
if (item.images) {
if (item.imagesVo) {
const { euId } = item;
const key = `unit-images-${euId}`;
const removedIds = getUnitRemovedIds($el);
const imgArr = item.images.split(",");
// 筛选存在在images字符串中,并且没有被删除的id,这些是仍然要保留的
const ids = imgArr.filter((id) => {
return !removedIds.includes(id);
const ids = item.imagesVo.filter((file) => {
return !isFileRaw(file);
}).map(file => {
return file.fileId
});
obj[key] = ids;
}
......@@ -114,7 +117,7 @@ const getUploadedIdByKey = (key, res) => {
}
};
// 获取已经上传了的文件的id集合
const getUnitSuccessObj = ($el, units, res) => {
const getUnitUploadedObj = ($el, units, res) => {
const obj = {};
loopUnits(units, obj, res);
return obj;
......@@ -135,31 +138,18 @@ const getUnitSuccessObj = ($el, units, res) => {
}
};
const mergeObjects = (objA, objB) => {
/**
* 获取form中媒体文件最终需要传到后台的文件ID
* @param {Object} oldObj 遗留的媒体文件id
* @param {Object} newObj 新添加的文件,上传后回填的 包含所有mediaKeys键名
* @returns {Object}最终需要传到后台的文件ID
*/
const mergeObjects = (oldObj, newObj) => {
let result = {};
// 遍历对象A,复制键值对
for (let key in objA) {
if (objA.hasOwnProperty(key)) {
result[key] = objA[key];
}
}
// 遍历对象B,合并相同的键对应的值
for (let key in objB) {
if (objB.hasOwnProperty(key)) {
if (result.hasOwnProperty(key)) {
if (Array.isArray(result[key])) {
result[key].push(...objB[key]);
} else {
console.log(
`Warning: Key ${key} exists in both objA and objB, but the value is not an array in objA.`
);
}
} else {
result[key] = objB[key]; // 如果键在result中不存在,就创建一个新的键值对
}
}
for (const key in newObj) {
const oldArr = oldObj[key] || []
const newArr = [...oldArr, ...newObj[key]]
result[key] = newArr
}
return result;
};
......@@ -167,17 +157,19 @@ const mergeObjects = (objA, objB) => {
const getUploadedUnits = ($el, res) => {
const units = getUnitData($el);
const exsitedObj = getUnitExsitedObj($el, units);
const successObj = getUnitSuccessObj($el, units, res);
const uploadedObj = getUnitUploadedObj($el, units, res);
// 将存在的和新上传的取交集,因为当key重复时,已存在的会被新上传的覆盖,因此需要再和已存在的进行取并集
const mergeObj = mergeObjects(exsitedObj, successObj);
const mergeObj = mergeObjects(exsitedObj, uploadedObj);
loopUnits(units);
return units;
function loopUnits(arr) {
arr.forEach((item) => {
const { euId } = item;
const key = `unit-images-${euId}`;
if (mergeObj[key]) {
if (mergeObj[key] && mergeObj[key].length > 0) {
item.images = mergeObj[key].join(",");
} else {
item.images = ''
}
// 处理关联文物
if (item.crIds && item.crIds instanceof Array) {
......@@ -185,36 +177,42 @@ const getUploadedUnits = ($el, res) => {
}
// 删除imagesVo不要传到后台
delete item.imagesVo;
if (item.children && item.length > 0) {
if (item.children && item.children.length > 0) {
loopUnits(item.children);
}
});
}
};
/**
* 获取表单中仍然还需要保留的媒体文件的文件ID
* @param {*} $el infoEditDialog的this对象
* @returns {Object} 形如{faceImage:[1,2,3],imagesVo:[4,5,6]}
*/
const getFormExsitedObj = ($el) => {
const obj = {};
mediaKeys.forEach((key) => {
// 已存在的不为空再继续
if ($el.dialogForm[key]) {
const removedIds = $el.getRemovedIds();
const arr = $el.dialogForm[key].split(",");
// 筛选存在在媒体字符串中,并且没有被删除的id,这些是仍然要保留的
const ids = arr.filter((id) => {
return !removedIds.includes(id);
});
obj[key] = ids;
const files = getMediaFile($el, key)
if (files && files.length > 0) {
const ids = files.filter((item) => {
return !isFileRaw(item)
}).map(item => {
return item.fileId
})
obj[key] = ids
}
});
return obj;
};
// 获取已经上传了的文件的id集合
const getFormSuccessObj = ($el, res) => {
const getFormUploadedObj = ($el, res) => {
const obj = {};
mediaKeys.forEach((key) => {
// 通过key去查找res中的fileId
const idsArr = getUploadedIdByKey(key, res);
// 获取本来还没被删除的id
obj[key] = idsArr;
});
return obj;
......@@ -237,14 +235,14 @@ const getStatusNumByBool = (bool) => {
// 获取最终的展览表单
const getUploadedForm = ($el, res, submitFlag) => {
const form = JSON.parse(JSON.stringify($el.dialogForm));
// 不需要上传,仍然需要保留的
const exsitedObj = getFormExsitedObj($el);
const successObj = getFormSuccessObj($el, res);
// 需要新上传的
const uploadedObj = getFormUploadedObj($el, res);
// 将存在的和新上传的取交集,因为当key重复时,已存在的会被新上传的覆盖,因此需要再和已存在的进行取并集
const mergeObj = mergeObjects(exsitedObj, successObj);
const mergeObj = mergeObjects(exsitedObj, uploadedObj);
mediaKeys.forEach((key) => {
if (mergeObj[key] && mergeObj[key].length > 0) {
form[key] = mergeObj[key].join(",");
}
form[key] = mergeObj[key].join(",")
});
form.literature = getLtStrByArr($el.literatureIdArr); //文献
form.status = getStatusNumByBool($el.dialogForm.status);
......@@ -262,25 +260,26 @@ const getUploadedForm = ($el, res, submitFlag) => {
* @param {*} $el 当前this对象
*/
const submit = (submitFlag, $el) => {
// this.loading = true;
$el.submitLoading = true;
$el.$refs.form.validate(async (valid) => {
if (valid) {
const res = await uploadFile($el);
const unitsUploaded = getUploadedUnits($el, res);
const formUploaded = getUploadedForm($el, res, submitFlag);
const params = {
...formUploaded,
exhibitionUnits: unitsUploaded,
};
// console.log("unitsUploaded", unitsUploaded);
// console.log("formUploaded", formUploaded);
// debugger
needDelete.forEach(key => {
delete params[key]
})
addOrUpdateDisplayTemp(params)
.then((res) => {
if (res.code == 0) {
setTimeout(() => {
$el.$emit("refresh");
$el.reload();
$el.resetData();
$el.submitLoading = false;
$el.$message.success("提交成功!");
$el.visible = false;
......
......@@ -571,16 +571,9 @@ export default {
onSubmitSearch() {
console.log("submit!");
},
// 关闭Dialog
// 关闭编辑弹窗
closeInfoEditDialog() {
this.form = {
status: 1,
faceImage: "", // 封面(图片1张)
images: "", //展览图片
videos: "", //展览视频
audios: "", //展览音频
exhibitionUnits: [], //布展单元
};
this.form = {};
},
// 关闭预览图片
closeImgViewer() {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论