提交 7544de0e authored 作者: 龙菲's avatar 龙菲

布展单元接口修改后的调整

上级 6c6b79d9
......@@ -7,6 +7,14 @@ export function getMuseumTree(params) {
params
})
}
export function getMuseumTreeV1(params) {
return request({
url: '/sys/dept/v1/tree',
method: 'get',
params
})
}
export function addMuseum(data) {
return request({
url: '/sys/dept',
......
import {
getMuseumTree,
getMuseumTreeV1,
} from '@/api/museum'
const getDefaultState = () => {
......@@ -29,7 +29,7 @@ const actions = {
})
} else {
return new Promise((resolve, reject) => {
getMuseumTree({
getMuseumTreeV1({
deptId
}).then(response => {
const {
......
......@@ -9,7 +9,12 @@ var uploadUrl =
"/api/sysFiles/upload" :
process.env.NODE_ENV + "/sysFiles/upload"
var uploadV1Url =
process.env.NODE_ENV === "test" ||
process.env.NODE_ENV === "development" ?
"/api/sysFiles/v1/upload" :
process.env.NODE_ENV + "/sysFiles/v1/upload"
/**
* 封装上传文件的post方法
* @param data
......@@ -30,21 +35,21 @@ export function upload(data) {
})
}
/**
* 封装文件上传的put方法
* @param url
* 封装上传文件方法 支持自定义Formdata 的key
* @param data
* @returns {Promise}
*/
export function uploadPut(url, data) {
export function uploadV1(data) {
return new Promise((resolve, reject) => {
axios.put(url, data, {
axios.post(uploadV1Url, data, {
headers: {
'Content-Type': 'multipart/form-data',
'Content-Type': 'multipart/form-data;boundary = ' + new Date().getTime(),
'authorization': getToken(),
}
}).then(response => {
resolve(response)
resolve(response.data)
}).catch(error => {
reject(error)
})
......
......@@ -78,12 +78,11 @@
<div>单元图片:</div>
<ManualUploader
:files="data.imagesVo"
v-model="data.imagesVo"
:fileLimit="6"
:fileSize="50"
:fileType="['jpeg', 'jpg', 'png']"
listType="picture-card"
ref="images"
:ref="'unit-images-' + data.id"
/>
</el-col>
</el-collapse-transition>
......@@ -97,7 +96,7 @@
:fileSize="50"
:fileType="['mp4']"
listType="picture-card"
ref="videos"
:ref="'unit-videos-' + data.id"
/>
</el-col>
</el-collapse-transition>
......@@ -108,6 +107,7 @@
</template>
<script>
let id = 1000;
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
export default {
components: {
......@@ -123,18 +123,31 @@ export default {
exhibitionUnits: {
handler: function (value) {
if (value) {
let treeData = [...this.exhibitionUnits];
let treeData = [...value];
treeData.map((item) => {
if (item.imagesVo && item.imagesVo.length > 0) {
} else {
if (!item.imagesVo || !item.imagesVo > 0) {
item.imagesVo = [];
}
if (item.videosVo && item.videosVo.length > 0) {
} else {
if (!item.videosVo || !item.videosVo > 0) {
item.videosVo = [];
}
});
// changeMediaData(treeData);
// function changeMediaData(arr) {
// if (arr.length > 0) {
// arr.map((item) => {
// if (!item.imagesVo || !item.imagesVo > 0) {
// item.imagesVo = [];
// }
// if (!item.videosVo || !item.videosVo > 0) {
// item.videosVo = [];
// }
// changeMediaData(item.children);
// });
// }
// }
this.treeData = treeData;
}
},
......@@ -148,13 +161,15 @@ export default {
},
mounted() {},
methods: {
getData() {
console.log("this.treeData", this.treeData);
return this.treeData;
},
// getData() {
// console.log("this.treeData", this.treeData);
// debugger
// return this.treeData;
// },
append(data) {
// debugger;
const newChild = {
id: id++,
unit: "",
title: "",
intro: "",
......@@ -166,10 +181,10 @@ export default {
// videosVo: [],
children: [],
};
if (!data.children ) {
if (!data.children) {
this.$set(data, "children", []);
}
data.children.push(newChild);
data.children.push(newChild);
},
remove(node, data) {
const parent = node.parent;
......@@ -180,9 +195,6 @@ export default {
handleAddUnitImage(node, data) {
this.$set(data, "showImageUploader", !data.showImageUploader);
// debugger
console.log("node", node);
console.log("data", data);
},
handleAddUnitVideo(node, data) {
this.$set(data, "showVideoUploader", !data.showVideoUploader);
......
......@@ -212,7 +212,7 @@ import { addDisplay, editDisplay } from "@/api/display";
import { mapGetters } from "vuex";
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import ExhibitionUnit from "./ExhibitionUnit.vue";
import {upload} from '@/utils/upload'
import { upload, uploadV1 } from "@/utils/upload";
export default {
name: "InfoEditDialog",
components: {
......@@ -313,6 +313,7 @@ export default {
literatureModelValue: [], //文献绑定的数组,编辑回显时需要将后台传的值转成[id1,id2,]并赋值给它,新增时记得清空,提交时改成id 的str
exhibitionUnits: [
{
id: 1, //后期去掉
// unit: "", //单元名称,如前言、第一单元,暂时忽略
title: "", //单元标题,类似主题名称
intro: "", //单元介绍
......@@ -325,11 +326,6 @@ export default {
],
};
},
async created() {
setTimeout(() => {
console.log("22222this.dict", this.dict);
});
},
methods: {
// 关联文献查询
searchLiterature(queryString) {
......@@ -369,8 +365,8 @@ export default {
async handleSubmit() {
// debugger
// return;
var that = this
const mediaArr = ["faceImage", "images", "videos", "audios"];
var that = this;
if (that.dialogForm.exhibitionId) {
// 修改
let ps = []; //ps为涵盖5种媒体的promise集合
......@@ -404,158 +400,184 @@ export default {
);
} else {
//新增
let ps = [];
// debugger;
let formData = new FormData();
const mediaArr = ["faceImage", "images", "videos", "audios"];
mediaArr.map((media) => {
// console.log("media", media);
// console.log("this.$refs[media]", this.$refs[media]);
// return
let files = that.$refs[media].getFiles();
let fileList = [...files];
if (fileList.length > 0) {
let formData = new FormData();
fileList.forEach((file) => {
formData.append("files", file.raw);
});
ps.push(upload(formData));
} else {
ps.push(null);
}
let files = [...this.$refs[media].getFiles()];
files.map((f) => {
formData.append(media, f.raw);
});
});
// console.log(" this.exhibitionUnits", this.exhibitionUnits);
Promise.all(ps).then(
async (allResult) => {
allResult.forEach((item, index) => {
if (item) {
let fileIds = [];
let files = item.data;
files.forEach((file) => {
fileIds.push(file.fileId);
});
that.dialogForm[mediaArr[index]] = fileIds.join(",");
} else {
that.dialogForm[mediaArr[index]] = "";
let unitIds = [];
loopUnits(this.exhibitionUnits);
function loopUnits(arr) {
if (arr.length > 0) {
arr.map((item) => {
unitIds.push(item.id);
if (item.children) {
loopUnits(item.children);
}
});
// let unitData = that.$refs["exhibitionUnits"].getData();
// debugger
// 遍历后上传图片和视频,并修改images和videos
// 单元信息处理
// function getUnitMediaStr(arr) {
// arr.forEach((unit) => {
// let unitPs = [];
// if (unit.imagesVo.length > 0) {
// unitPs.push(that.handleProcessUnitMedia(unit.imagesVo));
// } else {
// unitPs.push(null);
// }
// if (unit.videosVo.length > 0) {
// unitPs.push(that.handleProcessUnitMedia(unit.videosVo));
// } else {
// unitPs.push(null);
// }
// Promise.all(unitPs).then((res) => {
// // 图片的res
// console.log(`${arr}图片res`, res[0]);
// console.log(`${arr}图片视频`, res[1]);
// });
// if (unit.children) {
// getUnitMediaStr(unit.children);
// }
// });
// }
// getUnitMediaStr(unitData);
// unitData.forEach((unit) => {
// if (unit.imagesVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(unit.imagesVo));
// } else {
// unitPs.push(null);
// }
// if (unit.videosVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(unit.videosVo));
// } else {
// unitPs.push(null);
// }
}
}
// debugger;
// if (unit.children) {
// unit.children.forEach((item) => {
// let unitPs = [];
// if (item.imagesVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(item.imagesVo));
// } else {
// unitPs.push(null);
// }
unitIds.map((id) => {
console.log(this.$refs["exhibitionUnits"]);
let exhibitionUnitsDom = this.$refs.exhibitionUnits;
let imageFiles = [
...exhibitionUnitsDom.$refs[`unit-images-${id}`].getFiles(),
];
let videoFiles = [
...exhibitionUnitsDom.$refs[`unit-videos-${id}`].getFiles(),
];
// if (item.videosVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(unit.videosVo));
// } else {
// unitPs.push(null);
// }
// });
// }
// });
// const { deptId, regionCode } = this.userInfo;
// const params = { ...this.dialogForm, deptId, regionCode };
// params.literature = this.literatureModelValue.join(",");
// params.status = this.dialogForm.status ? 1 : 0;
// let res = await addDisplay(params);
// if (res.code == 0) {
// this.$message.success("提交成功!");
// this.loading = false;
// this.literatureModelValue = [];
// this.$emit("handleClose");
// this.$emit("refresh");
// this.dialogForm = {};
// }
},
(reason) => {
console.log(reason);
if (imageFiles.length > 0) {
imageFiles.forEach((imgFile) => {
formData.append(`unit-images-${id}`, imgFile.raw);
});
}
);
}
},
// 处理编辑时图片、视频、音频、讲解词媒体资源的上传问题
handleProcessUnitMedia(mediaVo) {
return new Promise((resolve, reject) => {
if (mediaVo.length > 0) {
let fileIds = [];
let formData = new FormData();
let fileIdStr = "";
mediaVo.map((file) => {
switch (file.status) {
case "ready":
formData.append("files", file.raw);
break;
case "success":
fileIds.push(file.fileId);
break;
if (videoFiles.length > 0) {
videoFiles.forEach((videoFile) => {
formData.append(`unit-videos-${id}`, videoFile.raw);
});
}
});
// 存放各个file的
let filesObj = {};
debugger
uploadV1(formData).then((upLoadRes) => {
console.log("upLoadRes", upLoadRes);
upLoadRes.data.map((resFile) => {
// 如果已经存在
if (filesObj[resFile.fileKey]) {
filesObj[resFile.fileKey] = [resFile.fileId];
} else {
filesObj[resFile.fileKey].push(resFile.fileId);
}
});
if (formData.get("files")) {
upload(formData)
.then((upRes) => {
if (upRes.code == 0) {
// 拿到已存在的和上传过后的结果进行拼接,并赋值给images,不用管imagesVo,后台自行处理
const { data } = upRes;
data.map((item) => {
fileIds.push(item.fileId);
});
fileIdStr = fileIds.join(",");
resolve(fileIdStr);
}
})
.catch((err) => {
reject(err);
});
} else {
fileIdStr = fileIds.join(",");
resolve(fileIdStr);
}
}
});
});
// mediaArr.forEach((media) => {
// this.dialogForm[media] = filesObj[media].join(",");
// });
// this.exhibitionUnits.forEach((unit) => {
// for (const key of filesObj) {
// // 如果是图片,且id为当前数据的id,就将改id的images改成idstr
// let type = key.split("-")[1];
// let id = key.split("-")[2];
// if (id === unit.id) {
// switch (type) {
// case "images":
// unit.images = filesObj[key].join(',')
// break;
// case "videos":
// unit.videos = filesObj[key].join(',')
// break;
// }
// }
// }
// });
// debugger
// mediaArr.map((media) => {
// let files = that.$refs[media].getFiles();
// let fileList = [...files];
// if (fileList.length > 0) {
// let formData = new FormData();
// fileList.forEach((file) => {
// formData.append(media, file.raw);
// });
// // ps.push(upload(formData));
// upload(formData).then(res=>{
// let upRes = res.data
// upRes.map(res=>{
// })
// })
// } else {
// // ps.push(null);
// }
// });
// Promise.all(ps).then(
// async (allResult) => {
// allResult.forEach((item, index) => {
// if (item) {
// let fileIds = [];
// let files = item.data;
// files.forEach((file) => {
// fileIds.push(file.fileId);
// });
// that.dialogForm[mediaArr[index]] = fileIds.join(",");
// } else {
// that.dialogForm[mediaArr[index]] = "";
// }
// });
// const { deptId, regionCode } = this.userInfo;
// const params = { ...this.dialogForm, deptId, regionCode };
// params.literature = this.literatureModelValue.join(",");
// params.status = this.dialogForm.status ? 1 : 0;
// let res = await addDisplay(params);
// if (res.code == 0) {
// this.$message.success("提交成功!");
// this.loading = false;
// this.literatureModelValue = [];
// this.$emit("handleClose");
// this.$emit("refresh");
// this.dialogForm = {};
// }
// },
// (reason) => {
// console.log(reason);
// }
// );
}
},
// // 处理编辑时图片、视频、音频、讲解词媒体资源的上传问题
// handleProcessUnitMedia(mediaVo) {
// return new Promise((resolve, reject) => {
// if (mediaVo.length > 0) {
// let fileIds = [];
// let formData = new FormData();
// let fileIdStr = "";
// mediaVo.map((file) => {
// switch (file.status) {
// case "ready":
// formData.append("files", file.raw);
// break;
// case "success":
// fileIds.push(file.fileId);
// break;
// }
// });
// if (formData.get("files")) {
// upload(formData)
// .then((upRes) => {
// if (upRes.code == 0) {
// // 拿到已存在的和上传过后的结果进行拼接,并赋值给images,不用管imagesVo,后台自行处理
// const { data } = upRes;
// data.map((item) => {
// fileIds.push(item.fileId);
// });
// fileIdStr = fileIds.join(",");
// resolve(fileIdStr);
// }
// })
// .catch((err) => {
// reject(err);
// });
// } else {
// fileIdStr = fileIds.join(",");
// resolve(fileIdStr);
// }
// }
// });
// },
// 处理编辑时图片、视频、音频、讲解词媒体资源的上传问题
handleProcessMedia(media) {
return new Promise(async (resolve, reject) => {
......
......@@ -18,25 +18,42 @@
:data="orgTreeData"
border
stripe
default-expand-all
>
<el-table-column
align="center"
prop="label"
prop="name"
label="名称"
></el-table-column>
<el-table-column
align="center"
prop="pidName"
label="所属部门"
prop="regionName"
label="归属地"
></el-table-column>
<el-table-column align="center" prop="status" label="状态">
<template slot-scope="scope">
<el-popconfirm
:title="getStatusTitle(scope.row.status)"
@confirm="handleChangeStatus(scope.row.status)"
>
<el-switch slot="reference" :value="scope.row.status"></el-switch>
</el-popconfirm>
</template>
</el-table-column>
<el-table-column align="center" prop="longitude" label="经度">
</el-table-column>
<el-table-column align="center" prop="latitude" label="纬度">
</el-table-column>
<el-table-column align="center" prop="latitude" label="纬度">
</el-table-column>
<el-table-column align="center" prop="intro" label="简介" />
<el-table-column align="center" label="操作"> </el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button type="primary" size="mini" icon="el-icon-edit">编辑</el-button>
<el-button type="danger" size="mini" icon="el-icon-delete">删除</el-button>
</template>
</el-table-column>
</el-table>
<InfoEditDialog
:visible="drawerVisible"
......@@ -118,6 +135,9 @@ export default {
this.dict = value;
}
},
// orgTreeData(value) {
// console.log("123", value);
// },
},
computed: {
tableTitle() {
......@@ -139,7 +159,7 @@ export default {
};
},
},
mounted() {
created() {
this.loadData();
},
methods: {
......@@ -166,7 +186,7 @@ export default {
// 加载表格数据
loadData() {
this.$store.dispatch("org/getMuseumTreeData", "").then((res) => {
this.orgTreeData = res;
this.orgTreeData =res
});
},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论