6 changed files with 692 additions and 6 deletions
-
513src/components/menuPage/MenuPageEdit.vue
-
90src/components/menuPage/MenuPageTree.vue
-
25src/router/index.js
-
9src/store/index.js
-
1src/views/Home.vue
-
60src/views/menuPage/menuPage.vue
@ -0,0 +1,513 @@ |
|||||
|
<template> |
||||
|
<div style="display: flex"> |
||||
|
<div |
||||
|
:style=" |
||||
|
'margin-left: 5px;width:' + (window.pageWidth - 200 - 120 - 45) + 'px;' |
||||
|
" |
||||
|
> |
||||
|
<!--overflow-y: scroll;height:200px;--> |
||||
|
<el-form |
||||
|
ref="form" |
||||
|
:model="form" |
||||
|
label-width="85px" |
||||
|
:rules="rules" |
||||
|
size="medium" |
||||
|
> |
||||
|
<el-row> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="上级节点" prop="parentId"> |
||||
|
<el-cascader |
||||
|
v-model="form.parentId" |
||||
|
:options="dataTransOpts.tableM.menu_info" |
||||
|
:props="{ |
||||
|
checkStrictly: true, |
||||
|
expandTrigger: 'hover', |
||||
|
...customerOrg.treeprops, |
||||
|
}" |
||||
|
:show-all-levels="false" |
||||
|
clearable |
||||
|
filterable |
||||
|
disabled |
||||
|
:style=" |
||||
|
'width:' + Math.floor((window.pageWidth - 620) / 3) + 'px;' |
||||
|
" |
||||
|
> |
||||
|
</el-cascader> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="16"> |
||||
|
<el-form-item label="节点名称" prop="displayName"> |
||||
|
<el-input |
||||
|
class="enterToTab" |
||||
|
v-model="form.displayName" |
||||
|
placeholder="请输入节点名称" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="权限性质" prop="menuType"> |
||||
|
<el-select |
||||
|
class="enterToTab" |
||||
|
v-model="form.menuType" |
||||
|
placeholder="请选择" |
||||
|
filterable |
||||
|
:style=" |
||||
|
'width:' + Math.floor((window.pageWidth - 620) / 3) + 'px;' |
||||
|
" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in dict.menuType" |
||||
|
:key="item.id" |
||||
|
:label="item.displayName" |
||||
|
:value="item.id" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="菜单图标" prop="iconName"> |
||||
|
<el-input |
||||
|
class="enterToTab" |
||||
|
v-model="form.iconName" |
||||
|
placeholder="请输入传真" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="启用" prop="isActive" label-width="56px"> |
||||
|
<!-- |
||||
|
<el-radio v-model="form.isActive" label="Y">启用</el-radio> |
||||
|
<el-radio v-model="form.isActive" label="N">停用</el-radio> |
||||
|
--> |
||||
|
<el-checkbox |
||||
|
v-model="form.isActiveBox" |
||||
|
@change="changeBox('isActive')" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item label="路由地址" prop="routeUrl"> |
||||
|
<el-input |
||||
|
class="enterToTab" |
||||
|
v-model="form.routeUrl" |
||||
|
placeholder="请输入路由地址" |
||||
|
maxlength="100" |
||||
|
show-word-limit |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="5"> |
||||
|
<el-form-item label="创建人员"> |
||||
|
<el-input v-model="form.creatorName" size="small" disabled /> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="7"> |
||||
|
<el-form-item label="创建时间"> |
||||
|
<el-date-picker |
||||
|
v-model="form.creationTime" |
||||
|
type="datetime" |
||||
|
size="small" |
||||
|
style="width: 100%" |
||||
|
disabled |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="5"> |
||||
|
<el-form-item label="修改人员"> |
||||
|
<el-input v-model="form.lastModifierName" size="small" disabled /> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="7"> |
||||
|
<el-form-item label="修改时间"> |
||||
|
<el-date-picker |
||||
|
v-model="form.lastModificationTime" |
||||
|
type="datetime" |
||||
|
size="small" |
||||
|
style="width: 100%" |
||||
|
disabled |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
<!-- 按钮区域 --> |
||||
|
<div style="width: 110px; margin-left: 10px; margin-top: 3%"> |
||||
|
<div class="btnList"> |
||||
|
<el-button type="primary" @click="btnAdd('form', '')" class="btnClass" |
||||
|
>新增节点</el-button |
||||
|
> |
||||
|
</div> |
||||
|
<div class="btnList"> |
||||
|
<el-button |
||||
|
type="primary" |
||||
|
@click="btnAdd('form', 'child')" |
||||
|
class="btnClass" |
||||
|
>新增子节点</el-button |
||||
|
> |
||||
|
</div> |
||||
|
<div class="btnList"> |
||||
|
<el-button type="success" @click="btnSubmit('form')" class="btnClass" |
||||
|
>保存</el-button |
||||
|
> |
||||
|
</div> |
||||
|
<div class="btnList"> |
||||
|
<el-button type="danger" @click="btnDel('form')" class="btnClass" |
||||
|
>删除</el-button |
||||
|
> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapState, mapMutations } from "vuex"; |
||||
|
import { getapi, postapi, putapi, deletapi } from "@/api/api"; |
||||
|
import { tcdate, objCopy, deepCopy, arrayExistObj } from "../../utlis/proFunc"; |
||||
|
import { getTreeNode, getTreePids } from "../../utlis/tree"; |
||||
|
|
||||
|
export default { |
||||
|
components: {}, |
||||
|
props: ["id"], |
||||
|
data() { |
||||
|
return { |
||||
|
isActiveBox: false, |
||||
|
customerOrgEditStyle: "height:400px;", |
||||
|
|
||||
|
form: { |
||||
|
displayName: "", |
||||
|
routeUrl: null, |
||||
|
iconName: null, |
||||
|
simpleCode: "QXGL", |
||||
|
parentId: null, |
||||
|
isActive: "Y", |
||||
|
isActiveBox: true, |
||||
|
menuType: "0", |
||||
|
creatorName: null, |
||||
|
lastModifierName: null, |
||||
|
lastModificationTime: "", |
||||
|
lastModifierId: "", |
||||
|
creationTime: "", |
||||
|
creatorId: "", |
||||
|
id: "", |
||||
|
}, //初始化 单位 记录 目前新增与更新是一致 |
||||
|
formInit: {}, |
||||
|
rules: { |
||||
|
displayName: [ |
||||
|
{ required: true, message: "请输入节点名称", trigger: "blur" }, |
||||
|
], |
||||
|
isMenu: [ |
||||
|
{ required: true, message: "请输入权限性质", trigger: "blur" }, |
||||
|
], |
||||
|
}, |
||||
|
isshow: false, |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
created() { |
||||
|
// 保留初始化数据 |
||||
|
this.formInit = deepCopy(this.form); |
||||
|
}, |
||||
|
|
||||
|
//挂载完成 |
||||
|
mounted() { |
||||
|
// 表单中 回车 代替 tab |
||||
|
this.enterToTab(); |
||||
|
}, |
||||
|
|
||||
|
computed: { |
||||
|
...mapState(["window", "dict", "dataTransOpts", "customerOrg"]), |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapMutations(["setData"]), |
||||
|
|
||||
|
changeBox(type) { |
||||
|
//赋值 |
||||
|
if (this.form[type + "Box"]) { |
||||
|
this.form[type] = "Y"; |
||||
|
} else { |
||||
|
this.form[type] = "N"; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//获取表单(菜单与界面)信息 |
||||
|
initFormData(id) { |
||||
|
if (!id) { |
||||
|
this.form = deepCopy(this.formInit); |
||||
|
return; |
||||
|
} |
||||
|
getapi(`/api/app/menuinfo/getmenuinfoasync?MenuInfoId=${id}`).then( |
||||
|
(res) => { |
||||
|
if (res.code != -1) { |
||||
|
this.form = res.data; |
||||
|
// objCopy(res.data, this.form); |
||||
|
|
||||
|
if (res.data.isActive == "Y") { |
||||
|
this.form.isActiveBox = true; |
||||
|
} else { |
||||
|
this.form.isActiveBox = false; |
||||
|
} |
||||
|
console.log("this.form", this.form, res.data); |
||||
|
} |
||||
|
} |
||||
|
); |
||||
|
}, |
||||
|
|
||||
|
//更新 获取单位树节点数据(局部刷新) |
||||
|
getCustomerOrgTree(oprType, body) { |
||||
|
// getapi("/api/app/customerorg/getbycodeall").then((res) => { |
||||
|
// //customerOrgTree = res.data; |
||||
|
// console.log("res.data", res.data); |
||||
|
// this.setData({ key: "customerOrg.customerOrgTree", value: res.data }); |
||||
|
// tcdate(this.dataTransOpts.tableM.menu_info); |
||||
|
// }); |
||||
|
switch (oprType) { |
||||
|
case "insert": |
||||
|
let node = { |
||||
|
id: body.id, |
||||
|
displayName: body.displayName, |
||||
|
parentId: body.parentId, |
||||
|
}; |
||||
|
|
||||
|
if (body.parentId) { |
||||
|
let pNode = getTreeNode( |
||||
|
this.dataTransOpts.tableM.menu_info, |
||||
|
"treeChildren", |
||||
|
"id", |
||||
|
body.parentId |
||||
|
); |
||||
|
if (!pNode.treeChildren) this.$set(pNode, "treeChildren", []); |
||||
|
//pNode.treeChildren = [] |
||||
|
pNode.treeChildren.push(node); |
||||
|
} else { |
||||
|
this.dataTransOpts.tableM.menu_info.push(node); |
||||
|
} |
||||
|
this.customerOrg.defaultExpandedKeys = []; |
||||
|
if (body.parentId) { |
||||
|
this.customerOrg.defaultExpandedKeys.push(body.parentId); |
||||
|
} |
||||
|
this.customerOrg.defaultExpandedKeys.push(body.id); |
||||
|
this.customerOrg.treeCurrentNodekey = body.id; |
||||
|
//console.log("this.customerOrg.treeCurrentNodekey",this.customerOrg.treeCurrentNodekey); |
||||
|
break; |
||||
|
|
||||
|
// "id": "3a0c5101-a6a6-e48a-36ec-33e7567a99e6", |
||||
|
// "displayName": "神豚集团", |
||||
|
// "parentId": null, |
||||
|
// "code": "00001", |
||||
|
// "treeChildren": [ |
||||
|
|
||||
|
case "update": |
||||
|
let node2 = getTreeNode( |
||||
|
this.dataTransOpts.tableM.menu_info, |
||||
|
"treeChildren", |
||||
|
"id", |
||||
|
body.id |
||||
|
); |
||||
|
node2.displayName = body.displayName; |
||||
|
break; |
||||
|
|
||||
|
case "delete": |
||||
|
let lfind = -1; |
||||
|
let pids = getTreePids( |
||||
|
this.dataTransOpts.tableM.menu_info, |
||||
|
"treeChildren", |
||||
|
"parentId", |
||||
|
"id", |
||||
|
body |
||||
|
); |
||||
|
//tree, childNodeName, pidName, idName, idVal getTreeNode(this.dataTransOpts.tableM.menu_info, "treeChildren", "id", body); |
||||
|
console.log("pids", pids, body); |
||||
|
if (!pids || pids.length < 2) { |
||||
|
lfind = arrayExistObj( |
||||
|
this.dataTransOpts.tableM.menu_info, |
||||
|
"id", |
||||
|
body |
||||
|
); |
||||
|
if (lfind > -1) |
||||
|
this.dataTransOpts.tableM.menu_info.splice(lfind, 1); |
||||
|
} else { |
||||
|
let node3 = getTreeNode( |
||||
|
this.dataTransOpts.tableM.menu_info, |
||||
|
"treeChildren", |
||||
|
"id", |
||||
|
pids[0] |
||||
|
); |
||||
|
//console.log('node3',node3) |
||||
|
lfind = arrayExistObj(node3.treeChildren, "id", body); |
||||
|
if (lfind > -1) node3.treeChildren.splice(lfind, 1); |
||||
|
} |
||||
|
break; |
||||
|
default: |
||||
|
break; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//提交 |
||||
|
btnSubmit(formName) { |
||||
|
let body = {}; |
||||
|
// console.log("vuex data", this.customerOrg.customerOrgRd); |
||||
|
this.$refs[formName].validate((valid, fields) => { |
||||
|
if (!valid) { |
||||
|
this.$message.warning(fields[Object.keys(fields)[0]][0].message); |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
body = deepCopy(this.form); |
||||
|
delete body.isActiveBox; |
||||
|
delete body.creatorName; |
||||
|
delete body.creationTime; |
||||
|
delete body.lastModifierName; |
||||
|
delete body.lastModificationTime; |
||||
|
|
||||
|
if (typeof body.parentId === "string") { |
||||
|
if (!body.parentId || body.parentId.length < 1) { |
||||
|
body.parentId = null; |
||||
|
} |
||||
|
} else { |
||||
|
if (body.parentId && body.parentId.length > 0) { |
||||
|
body.parentId = body.parentId[body.parentId.length - 1]; |
||||
|
} else { |
||||
|
body.parentId = null; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
console.log("body", body, "this.form", this.form); |
||||
|
|
||||
|
if (!this.form.id) { |
||||
|
//id为空则新增 |
||||
|
postapi(`/api/app/menuinfo/createtmenuinfo`, body).then((res) => { |
||||
|
if (res.code == 1) { |
||||
|
console.log("创健 操作成功"); |
||||
|
//this.setData({ key: "customerOrg.customerOrgRd", value: res }); |
||||
|
this.form = res.data; |
||||
|
this.getCustomerOrgTree("insert", res.data); |
||||
|
} |
||||
|
}); |
||||
|
} else { |
||||
|
//id不为空则编辑 |
||||
|
postapi( |
||||
|
`/api/app/menuinfo/updatemenuinfo?id=${this.form.id}`, |
||||
|
body |
||||
|
).then((res) => { |
||||
|
if (res.code == 1) { |
||||
|
console.log("更新 操作成功"); |
||||
|
this.getCustomerOrgTree("update", this.form); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
//新增节点 |
||||
|
async btnAdd(formName, isChild) { |
||||
|
await this.$refs[formName].resetFields(); |
||||
|
|
||||
|
if (isChild) { |
||||
|
if (!this.form.id) { |
||||
|
this.$message.warning("请先选择上级节点"); |
||||
|
return; |
||||
|
} |
||||
|
this.form = Object.assign({}, this.formInit, { parentId: this.form.id, }); |
||||
|
} else { |
||||
|
this.form = Object.assign({}, this.formInit); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//删除 |
||||
|
btnDel(formName) { |
||||
|
if (!this.form.id) { |
||||
|
this.$message.warning("请先选中要删除的节点"); |
||||
|
return; |
||||
|
} |
||||
|
//复制待删除的节点 |
||||
|
//let node = deepCopy(getTreeNode(this.dataTransOpts.tableM.menu_info,"treeChildren","id",this.customerOrg.customerOrgRd.id)); |
||||
|
|
||||
|
this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", { |
||||
|
confirmButtonText: "是", |
||||
|
cancelButtonText: "否", |
||||
|
type: "warning", |
||||
|
}) |
||||
|
.then(() => { |
||||
|
//console.log('{patientRegisterIds}',{patientRegisterIds}) |
||||
|
return postapi(`/api/app/menuinfo/deletemenuinfo?id=${this.form.id}`); |
||||
|
}) |
||||
|
.then((res) => { |
||||
|
if (res.code != -1) { |
||||
|
console.log("删除 操作成功"); |
||||
|
this.getCustomerOrgTree("delete", this.form.id); |
||||
|
this.dataTransOpts.tableS.menu_info.id = ""; |
||||
|
setTimeout(() => { |
||||
|
this.dataTransOpts.refresh.menu_info.S++; |
||||
|
}, 20); |
||||
|
this.$refs[formName].resetFields(); |
||||
|
} |
||||
|
}) |
||||
|
.catch((err) => { |
||||
|
if (err == "cancel") { |
||||
|
console.log("已取消删除"); |
||||
|
} else { |
||||
|
this.$message.error("操作失败,原因:" + err); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
//回车替代tab键 |
||||
|
enterToTab() { |
||||
|
this.$nextTick(() => { |
||||
|
let inputs = document.querySelectorAll("form input"); //用数组可以读取多个标签的元素 //.inline-input |
||||
|
//console.log('inputs',inputs); |
||||
|
// 为每个输入框添加键盘事件监听器 |
||||
|
inputs.forEach((input, i) => { |
||||
|
input.addEventListener("keydown", (event) => { |
||||
|
// 如果按下的是回车键 |
||||
|
// console.log('data-ismultiline',input.getAttribute('data-ismultiline')); |
||||
|
|
||||
|
if (event.keyCode === 13) { |
||||
|
// 阻止回车键的默认行为(换行) |
||||
|
event.preventDefault(); |
||||
|
|
||||
|
// 跳至下一个输入框 |
||||
|
for (let j = i + 1; j < inputs.length; j++) { |
||||
|
if (inputs[j].getAttribute("disabled") != "disabled") { |
||||
|
inputs[j].focus(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
watch: { |
||||
|
//人员ID未切换换时 也可以强制刷新数据 |
||||
|
"dataTransOpts.refresh.menu_info.S": { |
||||
|
immediate: true, |
||||
|
handler(newVal, oldVal) { |
||||
|
console.log( |
||||
|
`watch 菜单与页面 newVal:${newVal} oldVal:${oldVal} menuInfoId: ${this.dataTransOpts.tableS.menu_info.id}` |
||||
|
); |
||||
|
this.initFormData(this.dataTransOpts.tableS.menu_info.id); |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
@import "../../assets/css/global_form.css"; |
||||
|
|
||||
|
.btnList { |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.btnClass { |
||||
|
width: 110px; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,90 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div style="margin:2px 2px 2px 2px;"> |
||||
|
<el-input placeholder="输入关键字进行过滤" v-model="filterText" size="small" /> |
||||
|
</div> |
||||
|
<div :style="'overflow: scroll;height:' +(window.pageHeight < 600 ? 410 : window.pageHeight - 190) + 'px;'"> |
||||
|
<el-tree :data="dataTransOpts.tableM.menu_info" :props="customerOrg.treeprops" |
||||
|
node-key="id" :filter-node-method="filterNode" |
||||
|
:default-expanded-keys="customerOrg.defaultExpandedKeys" |
||||
|
@node-click="treeclick" highlight-current ref="customerOrgTree"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapState, mapMutations } from "vuex"; |
||||
|
import { getapi, postapi, putapi, deletapi } from "@/api/api"; |
||||
|
import { tcdate, deepCopy } from "../../utlis/proFunc"; |
||||
|
import { getTreePids} from "../../utlis/tree"; |
||||
|
|
||||
|
export default { |
||||
|
components: {}, |
||||
|
data() { |
||||
|
return { |
||||
|
filterText:'' |
||||
|
}; |
||||
|
}, |
||||
|
//<el-tree :data="$store.state.customerOrg.customerOrgTree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree> |
||||
|
computed: { |
||||
|
...mapState(["window", "dataTransOpts", "customerOrg" ]), |
||||
|
}, |
||||
|
|
||||
|
//创建组件后 |
||||
|
created() { |
||||
|
}, |
||||
|
|
||||
|
//挂载组件完成 |
||||
|
mounted() { |
||||
|
//获取体检单位列表树信息 |
||||
|
this.getMenuInfoTree(); |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
...mapMutations(["setData"]), |
||||
|
|
||||
|
//获取体检单位列表树信息 |
||||
|
getMenuInfoTree() { |
||||
|
getapi("/api/app/menuinfo/getmenuinfotreelist").then((res) => { |
||||
|
if(res.code != -1){ |
||||
|
this.dataTransOpts.tableM.menu_info = res.data |
||||
|
tcdate(this.dataTransOpts.tableM.menu_info); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
//点击树节点 |
||||
|
treeclick(data) { |
||||
|
this.dataTransOpts.tableS.menu_info.id = data.id; |
||||
|
setTimeout(() => { |
||||
|
this.dataTransOpts.refresh.menu_info.S++ |
||||
|
}, 20); |
||||
|
}, |
||||
|
|
||||
|
//树过滤 |
||||
|
filterNode(value, data) { |
||||
|
//console.log(value,data) |
||||
|
if (!value) return true; |
||||
|
return data['displayName'].indexOf(value) !== -1 || data['simpleCode'].indexOf(value.toUpperCase()) !== -1; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
watch: { |
||||
|
"customerOrg.treeCurrentNodekey"(newVal,oldVal){ |
||||
|
//console.log('watch:customerOrg.treeCurrentNodekey',newVal,oldVal) |
||||
|
if(newVal && newVal != oldVal){ |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs['customerOrgTree'].setCurrentKey(newVal); |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
"filterText"(newVal,oldVal){ //过滤菜单 |
||||
|
this.$refs['customerOrgTree'].filter(newVal); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
@import "../../assets/css/global.css"; |
||||
|
</style> |
||||
@ -0,0 +1,60 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<el-card class="elcard"> |
||||
|
<div slot="header"> |
||||
|
<span>菜单与页面</span> |
||||
|
</div> |
||||
|
<div style="display: flex;"> |
||||
|
<!-- 菜单树组件 --> |
||||
|
<div :style="'border: 1px solid;width:200px; height:' + |
||||
|
(window.pageHeight < 600 ? 450 : window.pageHeight - 150) + |
||||
|
'px;' |
||||
|
"> |
||||
|
<MenuPageTree /> |
||||
|
</div> |
||||
|
<div :style="'display:block;width:' + |
||||
|
(window.pageWidth - 200 - 40) + |
||||
|
'px;height:' + |
||||
|
(window.pageHeight < 600 ? 450 : window.pageHeight - 150) + |
||||
|
'px;' + |
||||
|
(window.pageHeight < 600 ? 'overflow-y: scroll;' : '') |
||||
|
"> |
||||
|
<!-- 单位详情 录入与编辑 --> |
||||
|
<div style="height:228px;"> |
||||
|
<MenuPageEdit /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-card> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapState } from "vuex"; |
||||
|
import MenuPageTree from "../../components/menuPage/MenuPageTree.vue"; |
||||
|
import MenuPageEdit from "../../components/menuPage/MenuPageEdit.vue"; |
||||
|
export default { |
||||
|
components: { |
||||
|
MenuPageTree, |
||||
|
MenuPageEdit, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
tabChoosed: "1", |
||||
|
}; |
||||
|
}, |
||||
|
|
||||
|
created() { }, |
||||
|
|
||||
|
//挂载完成 |
||||
|
mounted() { }, |
||||
|
|
||||
|
computed: { |
||||
|
...mapState(["customerOrg", "window"]), |
||||
|
}, |
||||
|
methods: {}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
@import "../../assets/css/global_input.css"; |
||||
|
</style> |
||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue