提交 b732a5a1 authored 作者: 龙菲's avatar 龙菲

布展模板

上级 2ccbaeda
......@@ -239,14 +239,17 @@ export default {
width: 100%;
height: 49px;
line-height: 49px;
background: #f6f6f6;
background: #f5f5f9;
border-radius: 6px;
display: flex;
padding: 0 15px;
.dialogAudioPlay {
cursor: pointer;
color: #5c5e66;
font-size: 20px;
display: flex;
align-items: center;
color: #2069c4;
font-size: 38px;
}
.progress-bar-bg {
background-color: #fff;
......@@ -260,7 +263,7 @@ export default {
margin: 0 10px;
}
.progress-bar {
background-color: #56bf8b;
background-color: #2069c4;
width: 0%;
height: 10px;
border-radius: 5px;
......
......@@ -58,6 +58,9 @@ export default {
</script>
<style lang="scss" scoped>
.el-menu{
border-right: none;
}
.el-menu-item {
background-color: #ecf5ff;
color: #2069c4;
......
<template>
<!-- <el-button-group>
<el-button
v-for="(op, index) in operations"
:key="index"
size="mini"
:icon="icons[op.type]"
@click="clickOperation(op)"
:type="op.type == 'delete' ? 'danger' : 'primary'"
>
<span v-if="op.type == 'delete'">
<el-popconfirm title="确定删除当前文物吗?">
<span slot="reference"> {{ op.title }}</span>
</el-popconfirm>
</span>
<span v-else>{{ op.title }}</span>
</el-button>
</el-button-group> -->
<span>
<span v-for="(op, index) in operations" :key="index">
<span v-if="op.type == 'delete'">
......
......@@ -33,66 +33,9 @@ export default {
components: { SidebarItem, Logo },
computed: {
...mapGetters(["sidebar", "menu"]),
routes() {
console.log(this.menu);
let obj = {};
let that = this;
traverseMenuList(this.menu || []);
that.addParentKeyWrapper(that.$router.options.routes); //为路由树增加parentKey
let flattenRouterData = that.flattenTreeDataClosure(
that.$router.options.routes
);
// debugger
let newMenu = getNewMenu(that.$router.options.routes);
newMenu.map((item) => {
if (!item.hidden) {
let parent = that.findParent(item.name, flattenRouterData);
that.$router.options.routes.map((v) => {
if (v == parent) {
v.hidden = false;
}
});
}
});
function traverseMenuList(arr) {
if (arr.length > 0) {
arr.map((item) => {
if (item.menuName) {
obj[item.menuName] = true;
}
if (item.children) {
traverseMenuList(item.children);
}
});
}
}
// 设置需要隐藏的菜单
function getNewMenu(arr) {
// debugger
arr.map((item) => {
if (!item.name || item.hidden) {
return;
} else {
item.hidden = item.hidden ? item.hidden : !obj[item.name];
// 如果该节点要显示,则获取到该节点的父节点并显示该父节点
// if (!item.hidden) {
// // console.log(222, item);
// // debugger;
// let parent = that.findParent(item.name, flattenRouterData);
// console.log(111, parent);
// }
if (item.children) {
getNewMenu(item.children);
}
}
});
return arr;
}
// console.log(obj);
return newMenu;
},
// routes() {
// return this.getRoute()
// },
activeMenu() {
const route = this.$route;
const { meta, path } = route;
......@@ -112,45 +55,49 @@ export default {
return !this.sidebar.opened;
},
},
data() {
return {
routes: [],
};
},
created() {
this.routes = this.$router.options.routes;
// this.routes = this.getRoute()
// let parentArr = []
// for (const key in this.menu) {
// parentArr.push(key+'Menu')
// }
// this.routes.map(item=>{
// parentArr.map(pr=>{
// if (condition) {
// }
// })
// })
// console.log('parentArr',parentArr);
},
methods: {
// 1. 为子节点添加父级的key
addParentKeyWrapper(tree) {
getRoute() {
let that = this;
let newMenu = getNewMenu(that.$router.options.routes);
// 设置需要隐藏的菜单
function getNewMenu(arr) {
// debugger
const data = JSON.parse(JSON.stringify(tree)); // 深度克隆(deepClone)
function addParentKey(data, parentKey) {
data.forEach((ele) => {
ele.parent = parentKey;
if (ele.children) {
addParentKey(ele.children, ele.name);
}
});
arr.map((item) => {
if (!item.name) {
return;
} else {
item.hidden = item.hasOwnProperty("hidden")
? item.hidden
: !that.menu[item.name];
if (item.children) {
getNewMenu(item.children);
}
addParentKey(data, null); // 一开始的时候是null
return data;
},
// 将树拉平,节点之间通过parentKey联系
flattenTreeDataClosure(data) {
const treeData = JSON.parse(JSON.stringify(data));
const flattenData = [];
function flattenTree(data, parentKey) {
data.forEach((ele) => {
// const { name } = ele;
flattenData.push({ name: ele.name, parentKey });
if (ele.children) {
flattenTree(ele.children, ele.name);
}
});
return arr;
}
flattenTree(treeData, null);
return flattenData;
},
// 找到某个元素的父节点
findParent(item, flattenTree) {
return flattenTree.find((ele) => {
return ele.name === item;
});
return newMenu;
},
},
};
......
......@@ -47,6 +47,7 @@ export const constantRoutes = [{
component: Layout,
redirect: '/home',
name:'HomeMenu',
hidden: false,
children: [{
path: 'home',
name: 'Home',
......@@ -61,6 +62,7 @@ export const constantRoutes = [{
path: '/display',
component: Layout,
name:'DisplayMenu',
hidden: false,
children: [{
path: 'display',
name: 'Display',
......@@ -75,6 +77,7 @@ export const constantRoutes = [{
path: '/boutique',
component: Layout,
name:'BoutiqueMenu',
hidden: false,
children: [{
path: 'boutique',
name: 'Boutique',
......@@ -89,6 +92,7 @@ export const constantRoutes = [{
path: '/culturalRelic',
component: Layout,
name:'CulturalRelicMenu',
hidden: false,
children: [{
path: 'culturalRelic',
name: 'CulturalRelic',
......@@ -103,6 +107,7 @@ export const constantRoutes = [{
path: '/museum',
component: Layout,
name:'MuseumRelicMenu',
hidden: false,
children: [{
path: 'museum',
name: 'Museum',
......@@ -117,6 +122,7 @@ export const constantRoutes = [{
path: '/virtual',
component: Layout,
name:'VirtualMenu',
hidden: false,
children: [{
path: 'virtual',
name: 'Virtual',
......@@ -131,6 +137,7 @@ export const constantRoutes = [{
path: '/literature',
component: Layout,
name:'LiteratureMenu',
hidden: false,
children: [{
path: 'literature',
name: 'Literature',
......@@ -145,6 +152,7 @@ export const constantRoutes = [{
path: '/log',
component: Layout,
name:'LogMenu',
hidden: false,
children: [{
path: 'log',
name: 'Log',
......@@ -159,6 +167,7 @@ export const constantRoutes = [{
path: '/importExport',
component: Layout,
name:'ImportExportMenu',
hidden: false,
children: [{
path: 'importExport',
name: 'ImportExport',
......
......@@ -22,7 +22,7 @@ const getDefaultState = () => {
return {
token: getToken(),
userInfo: getUserInfo(),
menu:getLocalMenu(),
menu: getLocalMenu(),
name: '',
avatar: '',
}
......@@ -46,7 +46,7 @@ const mutations = {
SET_USERINFO: (state, userInfo) => {
state.userInfo = userInfo
},
SET_MENU:(state,menu)=>{
SET_MENU: (state, menu) => {
state.menu = menu
}
}
......@@ -94,6 +94,7 @@ const actions = {
removeLocalMenu()
resetRouter()
commit('RESET_STATE')
window.location.reload() //刷新路由表
resolve()
}).catch(error => {
console.log('err', error);
......@@ -119,18 +120,39 @@ const actions = {
console.log('getMenuList');
return new Promise((resolve, reject) => {
getMenu().then((res) => {
console.log(res);
const {
menus
} = res.data
commit('SET_MENU', menus)
setLocalMenu(menus)
let menuObj = getMenuObj(menus)
function getMenuObj(menu) {
let obj = {}
traverseMenuList(menu || []);
function traverseMenuList(arr) {
if (arr.length > 0) {
arr.map((item) => {
if (item.menuName) {
obj[item.menuName] = true;
}
if (item.children) {
traverseMenuList(item.children);
}
});
}
}
return obj
}
commit('SET_MENU', menuObj)
setLocalMenu(menuObj)
resolve()
}).catch(error => {
reject(error)
})
})
}
},
}
......
......@@ -10,16 +10,16 @@
>
<div class="exhibition-units-tree-node" slot-scope="{ node, data }">
<el-row :gutter="20">
<el-col :span="10" class="mg-bt20">
<!-- <el-col :span="10" class="mg-bt20">
<el-input
placeholder="请输入层级(如:第一单元)"
v-model="data.unit"
>
</el-input>
<span style="display: inline-block; padding: 0 4px"></span>
</el-col>
</el-col> -->
<el-col :span="10" class="mg-bt20">
<el-col :span="20" class="mg-bt20">
<el-input placeholder="请输入标题" v-model="data.title"> </el-input>
</el-col>
<el-col :span="4">
......@@ -236,7 +236,7 @@ export default {
euId: euId++,
// unit: "",
title: "",
intro: "",
// intro: "",
showMediaUploader: false,
// showImageUploader: false,
// showVideoUploader: false,
......@@ -274,7 +274,12 @@ export default {
},
remove(node, data) {
const parent = node.parent;
const children = parent.data;
let children = "";
if (parent.data instanceof Array) {
children = parent.data;
} else {
children = parent.data.children;
}
const index = children.findIndex((d) => d.euId === data.euId);
children.splice(index, 1);
},
......
......@@ -77,6 +77,17 @@
>
</el-input>
</el-form-item>
<el-form-item label="展览介绍" :label-width="formLabelWidth">
<el-input
type="textarea"
placeholder="请输入展览介绍"
v-model="dialogForm.intro"
maxlength="1000"
show-word-limit
rows="6"
>
</el-input>
</el-form-item>
<el-form-item label="展览封面" :label-width="formLabelWidth">
<ManualUploader
:fileLimit="1"
......@@ -105,16 +116,7 @@
placeholder="请输入关键词"
></el-input>
</el-form-item>
<el-form-item label="展览介绍" :label-width="formLabelWidth">
<el-input
type="textarea"
placeholder="请输入展览介绍"
v-model="dialogForm.intro"
maxlength="300"
show-word-limit
>
</el-input>
</el-form-item>
<el-form-item label="展览文物" :label-width="formLabelWidth">
<el-select
v-model="crIds"
......@@ -254,23 +256,9 @@ export default {
if (value) {
this.dialogForm = JSON.parse(JSON.stringify(value));
if (
(this.dialogForm.exhibitionUnits &&
this.dialogForm.exhibitionUnits.length == 0) ||
!this.dialogForm.exhibitionUnits
this.dialogForm.exhibitionUnits &&
this.dialogForm.exhibitionUnits.length > 0
) {
// this.dialogForm.exhibitionUnits = [
// {
// euId: 1, //后期去掉
// // unit: "", //单元名称,如前言、第一单元,暂时忽略
// title: "", //单元标题,类似主题名称
// intro: "", //单元介绍
// images: "", //图片id集合
// videos: "", //视频id集合
// crIds: [], //关联文物集合
// // showMediaUploader: false,
// },
// ];
} else {
loopUnit(this.dialogForm.exhibitionUnits);
function loopUnit(arr) {
arr.forEach((unit) => {
......@@ -432,6 +420,7 @@ export default {
},
async handleSubmit() {
this.loading = true;
var that = this;
let formData = new FormData();
// 已存在的文件的对象
......
......@@ -735,6 +735,7 @@ export default {
width: 100%;
height: 569px;
background-image: url('~@/assets/imgs/display/lts-bg.png');
overflow-x: hidden;
}
}
}
......
......@@ -237,17 +237,21 @@ export default {
}
},
async handleOperation(value, row) {
const { exhibitionId } = row;
console.log(value, row);
switch (value.type) {
case "add":
this.editDialogVisible = true;
case "view":
if (row) {
this.previewDialogVisible = true;
let res = await getDisplayById({ exhibitionId });
let res = await getDisplayById({ exhibitionId: row.exhibitionId });
this.curPreviewObj = res.data;
}
break;
case "edit":
let editRes = await getDisplayById({ exhibitionId });
let editRes = await getDisplayById({
exhibitionId: row.exhibitionId,
});
this.form = editRes.data;
this.editDialogVisible = true;
break;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论