提交 144c8427 authored 作者: 龙菲's avatar 龙菲

布展单元编辑大致完成

上级 b5152721
......@@ -33,10 +33,10 @@
export default {
name: "ManualUploader",
props: {
// 用于v-model绑定
value: {
type: [Number, Array, String],
},
// // 用于v-model绑定
// value: {
// type: [Number, Array, String],
// },
files: {
type: Array,
default: () => [],
......@@ -80,15 +80,14 @@ export default {
watch: {
files: {
handler: function (val) {
this.fileList = [...val];
// debugger;
if (this.value) {
this.$emit("input", this.fileList);
}
this.fileList = JSON.parse(JSON.stringify(val));
},
immediate: true,
deep: true,
},
fileList(value) {
// debugger;
},
},
computed: {
// 是否显示提示
......@@ -163,15 +162,17 @@ export default {
this.fileList.map((item, index) => {
if (item.uid === file.uid) {
this.fileList.splice(index, 1);
// TODO:调用删除接口
}
});
},
handleChange(file, fileList) {
let that = this
if (file.status === "ready") {
this.handleBeforeUpload(file)
.then((res) => {
this.fileList.push(res);
that.fileList.push(res);
})
.catch((err) => {
console.log("err", err);
......
......@@ -24,7 +24,7 @@ export default {
},
data() {
return {
title: '贵州省精品展览展示后台管理系统',
title: '贵州省精品展览展示平台',
logo: 'https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png'
}
}
......@@ -67,7 +67,7 @@ export default {
color: #fff;
font-weight: 600;
line-height: 50px;
font-size: 12px;
font-size: 16px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle;
}
......
module.exports = {
title: '贵州省精品展览展示系统',
title: '贵州省精品展览展示平台',
/**
* @type {boolean} true | false
......
......@@ -115,7 +115,8 @@
</el-form-item>
<el-form-item label="关联文献" :label-width="formLabelWidth">
<el-select
v-model="literatureModelValue"
v-model="literatureValues"
:value="literatureNames"
multiple
filterable
remote
......@@ -128,7 +129,7 @@
<el-option
v-for="item in literatureList"
:key="item.literatureId"
:label="`${item.name}(${item.authors})`"
:label="item.name"
:value="item.literatureId"
>
</el-option>
......@@ -324,17 +325,34 @@ export default {
watch: {
form: {
handler(value) {
this.dialogForm = { ...value };
this.dialogForm = JSON.parse(JSON.stringify(value));
// 回填状态
this.dialogForm.status = Boolean(Number(this.dialogForm.status));
// debugger
// 回填文献
if (
this.dialogForm.literatureVo &&
this.dialogForm.literatureVo.length > 0
) {
this.literatureList = [...this.dict.literature];
this.literatureNames = [];
this.literatureValues = [];
this.dialogForm.literatureVo.forEach((lt) => {
if (this.literatureValues) {
this.literatureValues.push(lt.literatureId);
}
if (this.literatureNames) {
this.literatureNames.push(lt.name);
}
});
}
},
immediate: true,
deep: true,
},
dict(value) {
if (value) {
console.log(value);
// value.display_type.map((item) => {
// this.displayTypes[item.value] = item.label;
// });
this.dict = value;
}
},
},
......@@ -360,7 +378,8 @@ export default {
],
literatureList: [],
disabled: false,
literatureModelValue: [], //文献绑定的数组,编辑回显时需要将后台传的值转成[id1,id2,]并赋值给它,新增时记得清空,提交时改成id 的str
literatureNames: [],
literatureValues: [], //文献绑定的数组,编辑回显时需要将后台传的值转成[id1,id2,]并赋值给它,新增时记得清空,提交时改成id 的str
};
},
async created() {
......@@ -369,42 +388,6 @@ export default {
});
},
methods: {
covertStrToArr(name) {
var fileName = "";
switch (name) {
case "videos":
fileName = "视频";
break;
case "audios":
fileName = "音频";
break;
case "images":
fileName = "图片";
break;
case "faceImage":
fileName = "图片";
break;
case "sayExplain":
fileName = "文件";
break;
}
let form = { ...this.dialogForm };
if (form[name]) {
if (form[name].indexOf(",") != -1) {
var arr = form[name].split(",");
return arr.map((item, index) => {
return {
url: item,
name: fileName + index,
};
});
} else {
return [{ url: form[name], name }];
}
} else {
return [];
}
},
// 关联文献查询
searchLiterature(queryString) {
if (!queryString.trim()) {
......@@ -438,7 +421,7 @@ export default {
// 取消编辑
cancelForm() {
this.$emit("handleClose");
this.literatureModelValue = [];
this.literatureValues = [];
},
async handleSubmit() {
......@@ -463,13 +446,13 @@ export default {
this.dialogForm[mediaArr[index]] = item;
});
const params = { ...this.dialogForm };
params.literature = this.literatureModelValue.join(",");
params.literature = this.literatureValues.join(",");
params.status = this.dialogForm.status ? 1 : 0;
let res = await editCulturalRelic(params);
if (res.code == 0) {
this.$message.success("修改成功!");
this.loading = false;
this.literatureModelValue = [];
this.literatureValues = [];
this.$emit("handleClose");
this.$emit("refresh");
this.dialogForm = {};
......@@ -510,13 +493,13 @@ export default {
});
const { deptId, regionCode } = this.userInfo;
const params = { ...this.dialogForm, deptId, regionCode };
params.literature = this.literatureModelValue.join(",");
params.literature = this.literatureValues.join(",");
params.status = this.dialogForm.status ? 1 : 0;
let res = await addCulturalRelic(params);
if (res.code == 0) {
this.$message.success("提交成功!");
this.loading = false;
this.literatureModelValue = [];
this.literatureValues = [];
this.$emit("handleClose");
this.$emit("refresh");
this.dialogForm = {};
......
......@@ -171,19 +171,6 @@ export default {
dict(value) {
if (value) {
this.dict = value;
// let culturalLevel = { ...this.dict.cultural_relic_level };
// let options = [];
// for (const key in culturalLevel) {
// let obj = {};
// obj["label"] = culturalLevel[key];
// obj["value"] = key;
// options.push(obj);
// }
// this.searchConfig.map((item) => {
// if (item.prop == "level") {
// item.selectOptions = options;
// }
// });
}
},
},
......
......@@ -3,7 +3,7 @@
<div class="exhibiton-unit" ref="exhibitionUnit">
<el-tree
:data="treeData"
node-key="id"
node-key="euId"
default-expand-all
:expand-on-click-node="false"
>
......@@ -26,7 +26,7 @@
</el-col>
<el-col :span="8">
<el-select
v-model="data.crIds"
v-model="CRModelValue"
multiple
filterable
remote
......@@ -48,7 +48,7 @@
<el-col :span="3">
<div style="display: flex; align-items: center">
<i
v-if="data.id != 1"
v-if="data.euId != 1"
class="el-icon-close delete"
@click="() => remove(node, data)"
></i>
......@@ -74,42 +74,52 @@
<div class="buttons">
<el-button
type="text"
@click.native="handleAddUnitImage(node, data)"
@click.native="handleAddUnitMedia(node, data)"
>
<div class="add-image">
<svg-icon
:icon-class="data.showImageUploader ? 'fold' : 'image'"
:icon-class="
data.showMediaUploader || data.imagesVo || data.videosVo
? 'fold'
: 'image'
"
/>
<span>{{
data.showImageUploader ? "收起" : "添加/显示"
data.showMediaUploader || data.imagesVo || data.videosVo
? "收起"
: "添加/显示"
}}</span>
<span>单元图片</span>
<span>单元媒体资源</span>
</div>
</el-button>
<el-button
<!-- <el-button
type="text"
@click.native="handleAddUnitVideo(node, data)"
>
<div class="add-image">
<svg-icon
:icon-class="data.showVideoUploader ? 'fold' : 'video'"
:icon-class="
data.showVideoUploader || data.videosVo ? 'fold' : 'video'
"
/>
<span>{{
data.showVideoUploader ? "收起" : "添加/显示"
data.showVideoUploader || data.videosVo0
? "收起"
: "添加/显示"
}}</span>
<span>单元视频</span>
</div></el-button
>
> -->
</div>
</el-col>
<!-- <el-col :span="12">123</el-col> -->
</el-row>
<el-row :gutter="50">
<el-collapse-transition>
<el-col :span="12" v-show="data.showImageUploader">
<el-collapse-transition>
<el-row :gutter="50" v-show="data.showMediaUploader">
<el-col :span="12">
<div>单元图片:</div>
<ManualUploader
<ManualImageUploader
:files="getImagesVo(data.imagesVo)"
:fileLimit="6"
:fileSize="50"
......@@ -118,11 +128,9 @@
:ref="'unit-images-' + data.euId"
/>
</el-col>
</el-collapse-transition>
<el-collapse-transition>
<el-col :span="12" v-show="data.showVideoUploader">
<el-col :span="12">
<div>单元视频:</div>
<ManualUploader
<ManualVideoUploader
:files="getVideosVo(data.videosVo)"
:fileLimit="6"
:fileSize="50"
......@@ -131,8 +139,8 @@
:ref="'unit-videos-' + data.euId"
/>
</el-col>
</el-collapse-transition>
</el-row>
</el-row>
</el-collapse-transition>
</div>
</el-tree>
</div>
......@@ -140,11 +148,13 @@
<script>
let euId = 1000;
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import ManualImageUploader from "@/components/Uploader/ManualUploader.vue";
import ManualVideoUploader from "@/components/Uploader/ManualUploader.vue";
import { getCulturalRelicList } from "@/api/culturalRelic";
export default {
components: {
ManualUploader,
ManualImageUploader,
ManualVideoUploader,
},
props: {
exhibitionUnits: {
......@@ -156,8 +166,33 @@ export default {
exhibitionUnits: {
handler: function (value) {
if (value) {
let that = this;
let treeData = [...value];
this.treeData = treeData;
that.treeData = treeData;
loopData(that.treeData);
// debugger
function loopData(arr) {
if (arr.length > 0) {
arr.forEach((item) => {
// debugger;
if (item.culturalRelics) {
if (that.CRList.length == 0) {
that.CRList = item.culturalRelics;
// const res = await getCulturalRelicList(params);
// if (res.code == 0) {
// that.CRList = res.data.records;
// } else {
// that.CRList = [];
// }
}
that.CRModelValue.push(item.crId);
}
if (item.children) {
loopData(item.children);
}
});
}
}
}
},
immediate: true,
......@@ -217,8 +252,9 @@ export default {
// unit: "",
title: "",
intro: "",
showImageUploader: false,
showVideoUploader: false,
showMediaUploader: false,
// showImageUploader: false,
// showVideoUploader: false,
images: "",
crIds: [],
// imagesVo: [],
......@@ -240,8 +276,9 @@ export default {
title: "",
intro: "",
crIds: [],
showImageUploader: false,
showVideoUploader: false,
showMediaUploader: false,
// showImageUploader: false,
// showVideoUploader: false,
images: "",
// imagesVo: [],
videos: "",
......@@ -258,12 +295,15 @@ export default {
children.splice(index, 1);
},
handleAddUnitImage(node, data) {
this.$set(data, "showImageUploader", !data.showImageUploader);
},
handleAddUnitVideo(node, data) {
this.$set(data, "showVideoUploader", !data.showVideoUploader);
handleAddUnitMedia(node, data) {
if (data.imagesVo.length > 0 || data.videosVo.length) {
this.$set(data, "showMediaUploader", true);
}
this.$set(data, "showMediaUploader", !data.showMediaUploader);
},
// handleAddUnitVideo(node, data) {
// this.$set(data, "showVideoUploader", !data.showVideoUploader);
// },
},
};
</script>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论