提交 89760a1f authored 作者: 龙菲's avatar 龙菲

修复布展单元无法删除图片问题

上级 cee9e8a5
...@@ -97,6 +97,14 @@ export function deleteUser(data) { ...@@ -97,6 +97,14 @@ export function deleteUser(data) {
}) })
} }
// 获取用户赋予角色信息
export function getUserOwnRoles(id) {
return request({
url: 'sys/user/roles/'+id,
method: 'get'
})
}
// 以用户行为统计排序分页查询资源 // 以用户行为统计排序分页查询资源
export function getListByPageSort(data) { export function getListByPageSort(data) {
......
...@@ -45,7 +45,8 @@ export default { ...@@ -45,7 +45,8 @@ export default {
view: "el-icon-view", view: "el-icon-view",
delete: "el-icon-delete", delete: "el-icon-delete",
download:'el-icon-download', download:'el-icon-download',
dataPermission:"el-icon-key" dataPermission:"el-icon-key",
editRole:"el-icon-user"
}, },
}; };
}, },
......
...@@ -159,28 +159,24 @@ export default { ...@@ -159,28 +159,24 @@ export default {
// 文件列表移除文件时的钩子 // 文件列表移除文件时的钩子
handleRemove(file, fileList) { handleRemove(file, fileList) {
// debugger
// console.log("handleRemove", file, fileList);
this.fileList.map(async (item, index) => { this.fileList.map(async (item, index) => {
if (item.uid === file.uid) { if (item.uid === file.uid) {
this.fileList.splice(index, 1); this.fileList.splice(index, 1);
// TODO:调用删除接口
// const { fileId } = file;
// let res = await deleteFiles([fileId]);
// if (res.code == 0) {
// this.$message.success("删除成功!");
// }
} }
}); });
this.$emit("input", this.fileList);
}, },
handleChange(file, fileList) { handleChange(file, fileList) {
let that = this; let that = this;
// debugger // console.log("handleChange", file, fileList);
if (file.status === "ready") { if (file.status === "ready") {
this.handleBeforeUpload(file) this.handleBeforeUpload(file)
.then((res) => { .then((res) => {
that.fileList.push(res); that.fileList.push(res);
that.$emit("input", that.fileList); that.$emit("input", that.fileList);
}) })
.catch((err) => { .catch((err) => {
console.log("err", err); console.log("err", err);
......
...@@ -117,6 +117,7 @@ ...@@ -117,6 +117,7 @@
:options="orgTreeData" :options="orgTreeData"
:props="optionProps" :props="optionProps"
placeholder="请选择馆藏单位" placeholder="请选择馆藏单位"
clearable
> >
</el-cascader> </el-cascader>
</el-form-item> </el-form-item>
...@@ -278,9 +279,9 @@ export default { ...@@ -278,9 +279,9 @@ export default {
...mapGetters(["userInfo", "dicts"]), ...mapGetters(["userInfo", "dicts"]),
title() { title() {
if (this.dialogForm.crId) { if (this.dialogForm.crId) {
return "修改信息"; return "修改文物信息";
} else { } else {
return "新增发布"; return "新增文物";
} }
}, },
}, },
......
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
size="small" size="small"
>手动添加展览单元</el-button >手动添加展览单元</el-button
> >
<el-button <!-- <el-button
v-if="!treeData.length > 0" v-if="!treeData.length > 0"
type="success" type="success"
@click="handleAddUnit('word')" @click="handleAddUnit('word')"
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
> >
<svg-icon icon-class="excel"></svg-icon> <svg-icon icon-class="excel"></svg-icon>
Excel批量导入</el-button Excel批量导入</el-button
> > -->
</div> </div>
</template> </template>
......
...@@ -240,7 +240,7 @@ export default { ...@@ -240,7 +240,7 @@ export default {
components: { components: {
ManualUploader, ManualUploader,
ExhibitionUnit, ExhibitionUnit,
VueQuillEditor VueQuillEditor,
// PageSelect, // PageSelect,
}, },
props: { props: {
...@@ -487,10 +487,10 @@ export default { ...@@ -487,10 +487,10 @@ export default {
let deleteFileArr = []; let deleteFileArr = [];
// 添加布展本身的媒体文件至formData // 添加布展本身的媒体文件至formData
const mediaArr = ["faceImage", "images", "videos", "audios"]; const mediaArr = ["faceImage", "images", "videos", "audios"];
let newFiles = {}; let newFiles = {}; //key:字段名或者单元id名, value:不同媒体或单元已经存在的文件id数组
mediaArr.map((media) => { mediaArr.map((media) => {
let files = [...this.$refs[media].getFiles()]; let files = [...this.$refs[media].getFiles()];
let fileIds = []; let fileIds = []; //不同媒体或单元已经存在的文件id数组
files.map((f) => { files.map((f) => {
switch (f.status) { switch (f.status) {
case "ready": case "ready":
...@@ -514,7 +514,6 @@ export default { ...@@ -514,7 +514,6 @@ export default {
let oldFileIdArr = this.dialogForm[media].split(","); let oldFileIdArr = this.dialogForm[media].split(",");
oldFileIdArr.map((oldId) => { oldFileIdArr.map((oldId) => {
if (newFiles[media].indexOf(oldId) == -1) { if (newFiles[media].indexOf(oldId) == -1) {
console.log(oldId + "已被删除");
deleteFileArr.push(oldId); deleteFileArr.push(oldId);
} }
}); });
...@@ -526,23 +525,40 @@ export default { ...@@ -526,23 +525,40 @@ export default {
// debugger; // debugger;
// return // return
// 批量添加image进入formdata // 批量添加image进入formdata
let newfileIdsArr = []; //不同媒体或单元已经存在的文件id数组
let oldFileIdsArr = []; //旧的ids集合
addUnitImgToFormData(unitData); addUnitImgToFormData(unitData);
function addUnitImgToFormData(arr) { function addUnitImgToFormData(arr) {
if (arr.length > 0) { if (arr.length > 0) {
arr.map((item) => { arr.map((item) => {
// unitIds.push(item.euId);
if (item.imagesVo && item.imagesVo.length > 0) { if (item.imagesVo && item.imagesVo.length > 0) {
let imageFiles = item.imagesVo; let imageFiles = item.imagesVo;
let unitOldIds = item.images.split(",");
oldFileIdsArr = oldFileIdsArr.concat(unitOldIds);
imageFiles.map((imgFile) => { imageFiles.map((imgFile) => {
if (imgFile.status === "ready") { // switch (imgFile.status) {
// case "ready":
// formData.append(`unit-images-${item.euId}`, imgFile.raw);
// break;
// case "success":
// if (successFilesObj[`unit-images-${item.euId}`]) {
// successFilesObj[`unit-images-${item.euId}`].push(imgFile);
// } else {
// successFilesObj[`unit-images-${item.euId}`] = [imgFile];
// }
// newfileIdsArr.push(imgFile.fileId);
// break;
// }
if (imgFile.status && imgFile.status == "ready") {
formData.append(`unit-images-${item.euId}`, imgFile.raw); formData.append(`unit-images-${item.euId}`, imgFile.raw);
} else { } else {
//
if (successFilesObj[`unit-images-${item.euId}`]) { if (successFilesObj[`unit-images-${item.euId}`]) {
successFilesObj[`unit-images-${item.euId}`].push(imgFile); successFilesObj[`unit-images-${item.euId}`].push(imgFile);
} else { } else {
successFilesObj[`unit-images-${item.euId}`] = [imgFile]; successFilesObj[`unit-images-${item.euId}`] = [imgFile];
} }
newfileIdsArr.push(imgFile.fileId);
} }
}); });
} }
...@@ -552,7 +568,13 @@ export default { ...@@ -552,7 +568,13 @@ export default {
}); });
} }
} }
oldFileIdsArr.map((oldfileId) => {
// 如果旧的id在新的id集合中找不到,则代表该文件被删除
if (newfileIdsArr.indexOf(oldfileId) == -1) {
deleteFileArr.push(oldfileId);
}
});
// return;
// addUnitIds(unitData); //添加unit的id作为上传文件的key // addUnitIds(unitData); //添加unit的id作为上传文件的key
// function addUnitIds(arr) { // function addUnitIds(arr) {
// if (arr.length > 0) { // if (arr.length > 0) {
...@@ -677,21 +699,6 @@ export default { ...@@ -677,21 +699,6 @@ export default {
} }
} }
} }
// 不管是否进行文件上传,都需要修改文物为Str和显示隐藏控制器,去除euid
// 编辑时关联文物id为字符串,新增时为数组,需要重新组成
// 新增时
// if (!that.dialogForm.exhibitionId) {
// let crIdArr = unit.crIds;
// unit.crIds = crIdArr.join(",");
// var deleteArr = ["euId", "isEditing"];
// deleteArr.forEach((i) => {
// if (unit[i]) {
// delete unit[i];
// }
// });
// } else {
// 编辑时
// console.log("修改时---unit.crIds ", unit.crIds);
let crIdArr = unit.crIds; let crIdArr = unit.crIds;
unit.crIds = crIdArr ? crIdArr.join(",") : ""; unit.crIds = crIdArr ? crIdArr.join(",") : "";
var deleteArr = ["euId", "isEditing"]; var deleteArr = ["euId", "isEditing"];
......
...@@ -27,16 +27,19 @@ ...@@ -27,16 +27,19 @@
prop="regionName" prop="regionName"
label="归属地" label="归属地"
></el-table-column> ></el-table-column>
<!-- <el-table-column align="center" prop="status" label="状态"> <el-table-column align="center" prop="status" label="状态">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popconfirm <el-popconfirm
:title="getStatusTitle(scope.row.status)" :title="getStatusTitle(scope.row.status)"
@confirm="handleChangeStatus(scope.row.status)" @onConfirm="handleChangeStatus(scope.row)"
> >
<el-switch slot="reference" :value="scope.row.status"></el-switch> <el-switch
slot="reference"
:value="Boolean(Number(scope.row.status))"
></el-switch>
</el-popconfirm> </el-popconfirm>
</template> </template>
</el-table-column> --> </el-table-column>
<el-table-column align="center" label="封面"> <el-table-column align="center" label="封面">
<template slot-scope="scope"> <template slot-scope="scope">
<img <img
...@@ -51,7 +54,7 @@ ...@@ -51,7 +54,7 @@
</el-table-column> </el-table-column>
<el-table-column align="center" prop="latitude" label="纬度"> <el-table-column align="center" prop="latitude" label="纬度">
</el-table-column> </el-table-column>
<el-table-column <!-- <el-table-column
align="center" align="center"
prop="intro" prop="intro"
label="简介" label="简介"
...@@ -60,7 +63,7 @@ ...@@ -60,7 +63,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<span v-html="scope.row.intro"></span> <span v-html="scope.row.intro"></span>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
...@@ -107,7 +110,7 @@ import TableOperation from "@/components/Table/TableOperation.vue"; ...@@ -107,7 +110,7 @@ import TableOperation from "@/components/Table/TableOperation.vue";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import InfoEditDialog from "./components/InfoEditDialog"; import InfoEditDialog from "./components/InfoEditDialog";
import SearchBar from "@/components/SearchBar"; import SearchBar from "@/components/SearchBar";
import { deleteMuseum } from "@/api/org"; import { deleteMuseum, editMuseum } from "@/api/org";
export default { export default {
components: { components: {
TablePage, TablePage,
...@@ -270,14 +273,17 @@ export default { ...@@ -270,14 +273,17 @@ export default {
} }
}, },
async handleChangeStatus(row) { async handleChangeStatus(row) {
console.log("status", row); // debugger
const { status } = row; const { status } = row;
let newStatus = status === "0" ? "1" : "0"; let newStatus = status ? "0" : "1";
const params = { const params = {
...row, ...row,
status: newStatus, status: newStatus,
}; };
let res = await editCulturalRelic(params); // console.log(params);
// return
let res = await editMuseum(params);
if (res.code == 0) { if (res.code == 0) {
this.loadData(true); this.loadData(true);
this.$message.success("修改成功!"); this.$message.success("修改成功!");
......
<template>
<el-dialog
:visible="dialogVisible"
width="40%"
style="height: 98%"
:before-close="handleClose"
top="5vh"
lock-scroll
>
<div class="title" slot="title">
<div class="divider"></div>
<div class="label">赋予角色</div>
</div>
<div class="dialog-content">
<el-transfer
v-model="roles"
:data="data"
:titles="['赋予角色', '拥有角色']"
></el-transfer>
</div>
<div class="dialog-footer">
<el-button @click="cancelForm">取 消</el-button>
<el-button type="primary" @click="handleSubmit"
>确定<i class="el-icon-right" style="margin-left: 5px"></i
></el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: "EditRole",
components: {},
props: {
visible: {
type: Boolean,
default: false,
},
currentRoleData: {
type: Object,
default: () => ({}),
},
},
computed: {},
watch: {
visible: {
handler: function (value) {
this.dialogVisible = value;
},
deep: true,
immediate: true,
},
},
data() {
return {
dialogForm: {},
formLabelWidth: "100px",
dialogVisible: false,
data: [{ value: 1, key: "测试" }],
roles: [],
};
},
methods: {
// 取消编辑
cancelForm() {
this.$emit("handleClose");
},
async handleSubmit() {},
reload() {
this.$emit("refresh");
this.$emit("handleClose");
},
handleClose(done) {
this.$confirm("确认关闭?")
.then((_) => {
done();
this.$emit("handleClose");
this.files = [];
})
.catch((_) => {});
},
},
};
</script>
<style lang='scss' scoped>
.title {
display: flex;
margin-bottom: 16px;
.divider {
width: 8px;
border-left: 4px solid #409eff;
margin-right: 8px;
}
.label {
font-weight: bold;
}
}
.dialog-content {
padding: 0 32px;
display: flex;
.basic-info {
flex: 1;
margin-right: 48px;
}
}
.dialog-footer {
margin-top: 20px;
display: flex;
justify-content: flex-end;
}
</style>
\ No newline at end of file
...@@ -240,12 +240,6 @@ export default { ...@@ -240,12 +240,6 @@ export default {
}; };
}, },
methods: { methods: {
handlePreview({ type, file }) {
console.log(type, file);
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
// 取消编辑 // 取消编辑
cancelForm() { cancelForm() {
this.$emit("handleClose"); this.$emit("handleClose");
...@@ -278,14 +272,12 @@ export default { ...@@ -278,14 +272,12 @@ export default {
reload() { reload() {
this.$emit("refresh"); this.$emit("refresh");
this.$emit("handleClose"); this.$emit("handleClose");
this.files = [];
}, },
handleClose(done) { handleClose(done) {
this.$confirm("确认关闭?") this.$confirm("确认关闭?")
.then((_) => { .then((_) => {
done(); done();
this.$emit("handleClose"); this.$emit("handleClose");
this.files = [];
}) })
.catch((_) => {}); .catch((_) => {});
}, },
......
...@@ -36,18 +36,23 @@ export const title = [{ ...@@ -36,18 +36,23 @@ export const title = [{
label: "状态", label: "状态",
columnAlign: 'center', columnAlign: 'center',
isStatus: true, isStatus: true,
width:80,
}, },
] ]
export const operates = { export const operates = {
operate: true, operate: true,
label: "操作", label: "操作",
width: "190px", width: "300px",
titleAlign: "center", titleAlign: "center",
columnAlign: "center", columnAlign: "center",
} }
export const operations = [ export const operations = [
{
type: 'editRole',
title: '赋予角色'
},
{ {
type: 'edit', type: 'edit',
title: '编辑' title: '编辑'
......
...@@ -67,6 +67,7 @@ ...@@ -67,6 +67,7 @@
@handleClose="handleClose" @handleClose="handleClose"
@refresh="loadListData" @refresh="loadListData"
/> />
<EditRole :visible="editRoleVisible" :currentRoleData="currentRoleData" @handleClose="handleCloseEditRole" />
</div> </div>
</template> </template>
...@@ -75,14 +76,21 @@ import TablePage from "@/components/Table/TablePage.vue"; ...@@ -75,14 +76,21 @@ import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue"; import TableOperation from "@/components/Table/TableOperation.vue";
import SearchBar from "@/components/SearchBar"; import SearchBar from "@/components/SearchBar";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import { getDeptTree, getUserList, deleteUser } from "@/api/user"; import {
getDeptTree,
getUserList,
deleteUser,
getUserOwnRoles,
} from "@/api/user";
import InfoEditDialog from "./components/InfoEditDialog.vue"; import InfoEditDialog from "./components/InfoEditDialog.vue";
import EditRole from "./components/EditRole.vue";
export default { export default {
components: { components: {
TablePage, TablePage,
TableOperation, TableOperation,
SearchBar, SearchBar,
InfoEditDialog, InfoEditDialog,
EditRole,
}, },
computed: { computed: {
tableTitle() { tableTitle() {
...@@ -141,6 +149,8 @@ export default { ...@@ -141,6 +149,8 @@ export default {
status: 1, //启用状态 status: 1, //启用状态
}, },
dialogVisible: false, dialogVisible: false,
editRoleVisible: false,
currentRoleData:{}
}; };
}, },
mounted() { mounted() {
...@@ -220,6 +230,11 @@ export default { ...@@ -220,6 +230,11 @@ export default {
this.loadListData(); this.loadListData();
} }
break; break;
case "editRole":
this.editRoleVisible = true;
let roleRes = await getUserOwnRoles(row.id);
this.currentRoleData = roleRes.data
break;
} }
}, },
...@@ -229,6 +244,9 @@ export default { ...@@ -229,6 +244,9 @@ export default {
status: 1, status: 1,
}; };
}, },
handleCloseEditRole() {
this.editRoleVisible = false;
},
}, },
}; };
</script> </script>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论