提交 3bb7909b authored 作者: 龙菲's avatar 龙菲

优化角色模块、修复布展和文物文件问题

上级 ea774897
<template>
<div class="images-list" >
<div class="images-list">
<el-upload
action="#"
:on-remove="handleRemove"
......@@ -82,18 +82,16 @@ export default {
handler: function (val) {
// this.fileList = JSON.parse(JSON.stringify(val));
// 将回填的字段从url-->pressUrl
if (val.length > 0) {
this.fileList = val.map((item) => {
return {
highImg: item.url,
lowImg: item.pressUrl,
url: item.pressUrl,
// pressUrl:item.pressUrl,
name: item.name,
fileId: item.fileId,
};
});
}
this.fileList = val.map((item) => {
return {
highImg: item.url,
lowImg: item.pressUrl,
url: item.pressUrl,
// pressUrl:item.pressUrl,
name: item.name,
fileId: item.fileId,
};
});
},
immediate: true,
deep: true,
......@@ -137,19 +135,11 @@ export default {
methods: {
getFiles() {
if (
this.fileType == "jpg" ||
this.fileType == "png" ||
this.fileType == "jpeg"
this.fileType.indexOf("jpg") != -1 ||
this.fileType.indexOf("jpeg") != -1 ||
this.fileType.indexOf("png") != -1
) {
let newFileList = this.fileList.map((item) => {
// return {
// // highImg: item.url,
// // lowImg: item.pressUrl,
// url: item.highImg,
// pressUrl: item.lowImg,
// name: item.name,
// fileId: item.fileId,
// };
item.url = item.highImg;
item.pressUrl = item.lowImg;
item.name = item.name;
......
......@@ -23,6 +23,9 @@ export default {
value: {
type: String,
},
placeholder: {
type: String,
},
},
watch: {
value: {
......@@ -32,6 +35,12 @@ export default {
immediate: true,
deep: true,
},
placeholder(value) {
debugger
if (value) {
this.editorOption.placeholder = value;
}
},
},
components: {
quillEditor,
......
......@@ -8,9 +8,9 @@ import getPageTitle from '@/utils/get-page-title'
import { getMenu } from "./api/user";
import { addRouter } from "./utils/addRouter";
import user from "./store/modules/user";
NProgress.configure({
showSpinner: false
}) // NProgress Configuration
// NProgress.configure({
// showSpinner: false
// }) // NProgress Configuration
const whiteList = ['/login'] // no redirect whitelist
......@@ -22,7 +22,6 @@ router.beforeEach(async (to, from, next) => {
document.title = getPageTitle(to.meta.title)
// determine whether the user has logged in
if (getToken()) {
// 判断cookice是否存在 不存在即为未登录
if (to.path !== "/login") {
......@@ -37,22 +36,6 @@ router.beforeEach(async (to, from, next) => {
Message({ message: "您已经登录", type: "info" });
next("/");
}
// if (to.path === '/login') {
// // if is logged in, redirect to the home page
// next({
// path: '/'
// })
// NProgress.done()
// } else {
// // next()
// // NProgress.done()
// if (user.state.init) {
// // 获取了动态路由 data一定true,就无需再次请求 直接放行
// next();
// } else {
// // data为false,一定没有获取动态路由,就跳转到获取动态路由的方法
// gotoRouter(to, next);
// }
// }
} else {
/* has no token*/
......@@ -75,7 +58,6 @@ router.afterEach((to, from) => {
function gotoRouter(to, next) {
getMenu() // 获取动态路由的方法
.then(res => {
console.log("解析后端动态路由", res);
const asyncRouter = addRouter(res.data.menus); // 进行递归解析
// store.dispatch("user/setroles", res.data.permit);
return asyncRouter;
......@@ -88,7 +70,6 @@ function gotoRouter(to, next) {
hidden: true
});
router.addRoutes(asyncRouter); // vue-router提供的addRouter方法进行路由拼接
console.log(asyncRouter);
store.dispatch("user/setRouterList", asyncRouter); // 存储到vuex
// store.dispatch("user/GetInfo");
store.commit("user/set_init", true);
......
......@@ -143,7 +143,10 @@
:label-width="formLabelWidth"
prop="intro"
>
<VueQuillEditor v-model="dialogForm.intro" />
<VueQuillEditor
v-model="dialogForm.intro"
placeholder="请输入馆藏介绍"
/>
</el-form-item>
<el-form-item label="关联文献" :label-width="formLabelWidth">
<el-select
......@@ -208,10 +211,7 @@
</el-col>
<el-col :span="12">
<el-form-item
label="文物封面"
:label-width="formLabelWidth"
>
<el-form-item label="文物封面" :label-width="formLabelWidth">
<ManualUploader
:files="faceImage"
:fileLimit="1"
......@@ -325,16 +325,17 @@ export default {
this.dialogForm.status = Boolean(Number(this.dialogForm.status));
// debugger
// 回填媒体
if (this.dialogForm.faceImageUrl) {
this.faceImage = [
{
name: "",
url: this.dialogForm.faceImageUrl,
fileId: this.dialogForm.faceImage,
},
];
}
this.faceImage = [
{
name: "",
url: this.dialogForm.faceImageUrl || "",
pressUrl:
this.dialogForm.faceImagePressUrl ||
this.dialogForm.faceImageUrl ||
"",
fileId: this.dialogForm.faceImage || "",
},
];
this.images = this.dialogForm.imagesVo || [];
this.videos = this.dialogForm.videosVo || [];
this.audios = this.dialogForm.audiosVo || [];
......@@ -490,7 +491,7 @@ export default {
this.reset();
},
handleSubmit() {
this.$refs.form.validate(async (valid,err) => {
this.$refs.form.validate(async (valid, err) => {
if (valid) {
var that = this;
this.submitLoading = true;
......@@ -499,41 +500,55 @@ export default {
let successFilesObj = [];
// 需要被删除的文件Id
let deleteFileArr = [];
// debugger
// 添加布展本身的媒体文件至formData
const mediaArr = ["faceImage", "images", "videos", "audios"];
let newFiles = {};
// debugger;
mediaArr.map((media) => {
let files = [...this.$refs[media].getFiles()];
let fileIds = [];
files.map((f) => {
switch (f.status) {
case "ready":
formData.append(media, f.raw);
break;
case "success":
if (successFilesObj[media]) {
successFilesObj[media].push(f);
} else {
successFilesObj[media] = [f];
}
fileIds.push(f.fileId);
break;
// switch (f.status) {
// case "ready":
// formData.append(media, f.raw);
// break;
// case "success":
// if (successFilesObj[media]) {
// successFilesObj[media].push(f);
// } else {
// successFilesObj[media] = [f];
// }
// fileIds.push(f.fileId);
// break;
// }
if (f.status && f.status == "ready") {
console.log(media, "---", f.raw);
formData.append(media, f.raw);
} else {
if (successFilesObj[media]) {
successFilesObj[media].push(f);
} else {
successFilesObj[media] = [f];
}
fileIds.push(f.fileId);
}
});
newFiles[media] = fileIds;
});
mediaArr.map((media) => {
if (this.dialogForm[media]) {
let oldFileIdArr = this.dialogForm[media].split(",");
oldFileIdArr.map((oldId) => {
if (newFiles[media].indexOf(oldId) == -1) {
console.log(oldId + "被删除");
console.log(oldId + "被删除");
deleteFileArr.push(oldId);
}
});
}
});
// return;
// 上传所有媒体文件
let filesObj = {};
......@@ -636,6 +651,7 @@ export default {
if (deleteFileArr.length > 0) {
await deleteFiles(deleteFileArr);
}
// return;
editCulturalRelic(params)
.then((res) => {
if (res.code == 0) {
......@@ -652,7 +668,7 @@ export default {
this.submitLoading = false;
});
}
}else{
} else {
console.warn(err);
}
});
......
......@@ -287,7 +287,7 @@ export default {
methods: {
async search(form) {
var params = {
page: this.list.current,
page: 1,
limit: this.list.size,
...form,
};
......
......@@ -96,7 +96,7 @@
@ready="onEditorReady($event)"
class=".editor"
/> -->
<VueQuillEditor v-model="currentData.intro" />
<VueQuillEditor v-model="currentData.intro" placeholder="请输入单元介绍"/>
</el-col>
</el-row>
......
......@@ -104,7 +104,10 @@
</el-form-item>
<el-form-item label="展览介绍" :label-width="formLabelWidth">
<VueQuillEditor v-model="dialogForm.intro" />
<VueQuillEditor
v-model="dialogForm.intro"
placeholder="请输入展览介绍"
/>
</el-form-item>
<el-form-item label="关键词" :label-width="formLabelWidth">
<el-input
......@@ -185,10 +188,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="展览封面"
:label-width="formLabelWidth"
>
<el-form-item label="展览封面" :label-width="formLabelWidth">
<ManualUploader
:fileLimit="1"
listType="picture-card"
......@@ -327,15 +327,23 @@ export default {
}
}
// 回填媒体资源
if (this.dialogForm.faceImageUrl) {
if (
this.dialogForm.faceImageUrl ||
this.dialogForm.faceImagePressUrl
) {
this.faceImage = [
{
name: "",
url: this.dialogForm.faceImageUrl,
fileId: this.dialogForm.faceImage,
pressUrl: this.dialogForm.faceImagePressUrl,
url: this.dialogForm.faceImageUrl || "",
pressUrl:
this.dialogForm.faceImagePressUrl ||
this.dialogForm.faceImageUrl ||
"",
fileId: this.dialogForm.faceImage || "",
},
];
} else {
this.faceImage = [];
}
this.images = this.dialogForm.imagesVo || [];
this.videos = this.dialogForm.videosVo || [];
......@@ -401,7 +409,7 @@ export default {
},
},
data() {
let that =this
let that = this;
var checkFaceImage = (rule, value, callback) => {
if (that.faceImage.length == 0) {
// this.$message.info('请上传封面')
......@@ -549,20 +557,32 @@ export default {
let files = [...this.$refs[media].getFiles()];
let fileIds = []; //不同媒体或单元已经存在的文件id数组
files.map((f) => {
switch (f.status) {
case "ready":
formData.append(media, f.raw);
break;
case "success":
if (successFilesObj[media]) {
successFilesObj[media].push(f);
} else {
successFilesObj[media] = [f];
}
fileIds.push(f.fileId);
break;
// switch (f.status) {
// case "ready":
// formData.append(media, f.raw);
// break;
// case "success":
// if (successFilesObj[media]) {
// successFilesObj[media].push(f);
// } else {
// successFilesObj[media] = [f];
// }
// fileIds.push(f.fileId);
// break;
// }
if (f.status && f.status == "ready") {
formData.append(media, f.raw);
} else {
if (successFilesObj[media]) {
successFilesObj[media].push(f);
} else {
successFilesObj[media] = [f];
}
fileIds.push(f.fileId);
}
});
newFiles[media] = fileIds;
});
......@@ -841,7 +861,7 @@ export default {
if (params.deptId instanceof Array) {
params.deptId = params.deptId[params.deptId.length - 1];
}
// return;
if (deleteFileArr.length > 0) {
await deleteFiles(deleteFileArr);
}
......
......@@ -79,12 +79,12 @@
:displayDetail="curPreviewObj"
@handleClose="handleClosePreviewDialog"
/>
<CopyDialog
<!-- <CopyDialog
:visible="copyDialogVisible"
@handleClose="handleCloseCopyDialog"
@handleCopySelect="handleCopySelect"
:list="list"
/>
/> -->
<el-image-viewer
v-if="imgViewerVisible"
:on-close="closeImgViewer"
......@@ -212,7 +212,7 @@ export default {
methods: {
async search(form) {
var params = {
page: this.list.current,
page: 1,
limit: this.list.size,
...form,
};
......@@ -309,6 +309,11 @@ export default {
this.editDialogVisible = false;
this.form = {
status: 1,
faceImage: "", // 封面(图片1张)
images: "", //展览图片
videos: "", //展览视频
audios: "", //展览音频
exhibitionUnits: [], //布展单元
};
},
// 关闭预览图片
......
......@@ -78,7 +78,10 @@
/>
</el-form-item>
<el-form-item label="简介" :label-width="formLabelWidth">
<VueQuillEditor v-model="dialogForm.intro" />
<VueQuillEditor
v-model="dialogForm.intro"
:placeholder="'请输入博物馆介绍'"
/>
</el-form-item>
</el-form>
</div>
......
......@@ -67,7 +67,6 @@ export default {
},
dataScope: {
type: Number,
default: 0,
},
},
watch: {
......
<template>
<el-dialog
:visible="dialogVisible"
width="40%"
width="30%"
style="height: 98%"
:before-close="handleClose"
top="5vh"
......@@ -12,8 +12,12 @@
<div class="label">{{ title }}</div>
</div>
<div class="dialog-content">
<el-form :model="dialogForm" class="basic-info">
<el-form-item label="角色名称" :label-width="formLabelWidth">
<el-form :model="dialogForm" class="basic-info" :rules="rules">
<el-form-item
label="角色名称"
:label-width="formLabelWidth"
prop="name"
>
<el-input
v-model="dialogForm.name"
autocomplete="off"
......@@ -28,12 +32,10 @@
type="textarea"
placeholder="请输入备注"
v-model="dialogForm.remark"
maxlength="600"
show-word-limit
>
</el-input>
</el-form-item>
<el-form-item label="权限" :label-width="formLabelWidth">
<el-form-item label="菜单权限" :label-width="formLabelWidth">
<el-tree
ref="tree"
:data="dialogForm.permissionRespNodes"
......@@ -60,7 +62,6 @@ import {
addRole,
upadateRole,
getPermissionTreeAll,
getPermissionById,
} from "@/api/user";
export default {
name: "InfoEditDialog",
......@@ -124,6 +125,15 @@ export default {
children: "children",
checkStrictly: true,
},
rules: {
name: [
{
required: true,
message: "请输入角色名称",
trigger: "blur",
},
],
},
};
},
......@@ -153,6 +163,8 @@ export default {
this.reload();
}
} else {
params.dataScope = "5"; //默认数据权限为自己
// return
let res = await addRole(params);
if (res.code == 0) {
this.$message.success("添加成功!");
......@@ -163,14 +175,12 @@ export default {
reload() {
this.$emit("refresh");
this.$emit("handleClose");
this.files = [];
},
handleClose(done) {
this.$confirm("确认关闭?")
.then((_) => {
done();
this.$emit("handleClose");
this.files = [];
})
.catch((_) => {});
},
......@@ -201,7 +211,6 @@ export default {
},
async getDefaultTree() {
// debugger
let res = await getPermissionTreeAll();
this.$set(this.dialogForm, "permissionRespNodes", res.data);
},
......
......@@ -54,8 +54,8 @@
/>
<DataEditDialog
:visible="dataEditDialog"
:id="form.id"
:dataScope="form.dataScope"
:id="dataScopeForm.id"
:dataScope="dataScopeForm.dataScope"
@handleCloseDataEdit="handleCloseDataEdit"
@refresh="loadData"
/>
......@@ -66,7 +66,7 @@
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { title, operates, operations } from "./config";
import { getRoleList, getRoleById, deleteRole,upadateRole } from "@/api/user";
import { getRoleList, getRoleById, deleteRole, upadateRole } from "@/api/user";
import InfoEditDialog from "./components/InfoEditDialog";
import DataEditDialog from "./components/DataEditDialog";
import SearchBar from "@/components/SearchBar";
......@@ -118,8 +118,10 @@ export default {
name: "",
remark: "",
status: 1,
permissionRespNodes: [],
permissionRespNodes: [],//菜单权限树
dataScope: 5,//默认数据权限为自己
},
dataScopeForm: {},//编辑数据权限的表单
dataEditDialog: false, //编辑数据的对话框
};
},
......@@ -202,7 +204,7 @@ export default {
}
break;
case "dataPermission":
this.form =row
this.dataScopeForm = row;
this.dataEditDialog = true;
break;
}
......@@ -240,12 +242,15 @@ export default {
this.form = {
status: 1,
permissionRespNodes: [],
dataScope: 5,
};
},
handleCloseDataEdit() {
this.dataEditDialog = false;
this.form = {};
this.dataScopeForm = {
dataScope: 5,
};
},
},
};
......
<template>
<div class="users app-container">
<el-row :gutter="16">
<el-col :span="6">
<el-col :span="4">
<el-tree
:data="treeData"
:props="defaultProps"
......@@ -10,7 +10,7 @@
:expand-on-click-node="false"
></el-tree>
</el-col>
<el-col :span="18">
<el-col :span="20">
<div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" />
<el-button
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论