|
|
@@ -244,7 +244,7 @@
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <!-- ===== 菜单编辑弹窗 ===== -->
|
|
|
+ <!-- ===== 菜单编辑弹窗(租户列表:管理端菜单 / 销售菜单) ===== -->
|
|
|
<el-dialog :title="menuDialog.title" :visible.sync="menuDialog.visible" width="560px" append-to-body destroy-on-close @opened="onMenuDialogOpened">
|
|
|
<div v-loading="menuDialog.loading" class="menu-tree-scroll">
|
|
|
<div v-if="menuDialog.treeReady && menuDialog.treeData.length" class="menu-tree-toolbar">
|
|
|
@@ -256,14 +256,17 @@
|
|
|
ref="menuTree"
|
|
|
:data="menuDialog.treeData"
|
|
|
show-checkbox
|
|
|
- node-key="id"
|
|
|
+ node-key="menuId"
|
|
|
:props="menuTreeProps"
|
|
|
:expand-on-click-node="false"
|
|
|
>
|
|
|
<span slot-scope="{ data }" class="custom-tree-node">
|
|
|
- <span>{{ data.label }}</span>
|
|
|
- <el-tag v-if="data.visible === '0'" type="success" size="mini" style="margin-left:8px">显示</el-tag>
|
|
|
- <el-tag v-else type="info" size="mini" style="margin-left:8px">隐藏</el-tag>
|
|
|
+ <span>{{ data.menuName }}</span>
|
|
|
+ <el-tag v-if="data.menuType === 'M'" size="mini" style="margin-left:6px">目录</el-tag>
|
|
|
+ <el-tag v-else-if="data.menuType === 'C'" type="success" size="mini" style="margin-left:6px">菜单</el-tag>
|
|
|
+ <el-tag v-else-if="data.menuType === 'F'" type="warning" size="mini" style="margin-left:6px">按钮</el-tag>
|
|
|
+ <el-tag v-if="data.visible === '0'" type="success" size="mini" style="margin-left:6px">已分配</el-tag>
|
|
|
+ <el-tag v-else type="info" size="mini" style="margin-left:6px">未分配</el-tag>
|
|
|
</span>
|
|
|
</el-tree>
|
|
|
<el-empty v-if="!menuDialog.loading && menuDialog.treeReady && !menuDialog.treeData.length" description="暂无菜单数据" />
|
|
|
@@ -379,7 +382,7 @@ export default {
|
|
|
operateType: [{ required: true, message: '请选择操作类型', trigger: 'change' }],
|
|
|
amount: [{ required: true, message: '请输入金额', trigger: 'blur' }]
|
|
|
},
|
|
|
- menuTreeProps: { label: 'label', children: 'children' },
|
|
|
+ menuTreeProps: { label: 'menuName', children: 'children' },
|
|
|
// 菜单编辑弹窗
|
|
|
menuDialog: {
|
|
|
visible: false,
|
|
|
@@ -592,7 +595,7 @@ export default {
|
|
|
const ids = []
|
|
|
const walk = (list) => {
|
|
|
(list || []).forEach(n => {
|
|
|
- if (n.visible === '0') ids.push(n.id)
|
|
|
+ if (n.visible === '0') ids.push(n.menuId)
|
|
|
if (n.children && n.children.length) walk(n.children)
|
|
|
})
|
|
|
}
|
|
|
@@ -618,7 +621,7 @@ export default {
|
|
|
const tree = this.$refs.menuTree
|
|
|
if (!tree) return
|
|
|
this.walkMenuTreeNodes(this.menuDialog.treeData, n => {
|
|
|
- const node = tree.getNode(n.id)
|
|
|
+ const node = tree.getNode(n.menuId)
|
|
|
if (node) node.expanded = true
|
|
|
})
|
|
|
},
|
|
|
@@ -626,7 +629,7 @@ export default {
|
|
|
const tree = this.$refs.menuTree
|
|
|
if (!tree) return
|
|
|
this.walkMenuTreeNodes(this.menuDialog.treeData, n => {
|
|
|
- const node = tree.getNode(n.id)
|
|
|
+ const node = tree.getNode(n.menuId)
|
|
|
if (node) node.expanded = false
|
|
|
})
|
|
|
},
|
|
|
@@ -645,12 +648,13 @@ export default {
|
|
|
if (res.code !== 200) {
|
|
|
return Promise.reject(new Error(res.msg || '加载菜单失败'))
|
|
|
}
|
|
|
- const menus = res.menus || []
|
|
|
- // 延迟挂载树,先出弹窗再渲染,默认全部收起
|
|
|
- d.treeData = menus
|
|
|
+ const flat = res.menus || []
|
|
|
+ // 与模板维护页相同:扁平数据 + handleTree(menuId) 建树,保证层级一致
|
|
|
+ const tree = this.handleTree(flat, 'menuId')
|
|
|
+ d.treeData = tree
|
|
|
requestAnimationFrame(() => {
|
|
|
d.treeReady = true
|
|
|
- this.$nextTick(() => this.applyMenuTreeChecked(menus))
|
|
|
+ this.$nextTick(() => this.applyMenuTreeChecked(tree))
|
|
|
})
|
|
|
}).catch(err => {
|
|
|
this.$message.error(err.message || '加载菜单失败')
|