角色管理模块新增分配权限
This commit is contained in:
parent
28fa7e4b1e
commit
7d922dcd28
|
|
@ -0,0 +1,108 @@
|
||||||
|
<template>
|
||||||
|
<Modal
|
||||||
|
:options="getModalOptions"
|
||||||
|
:on-positive-click="handleConfirm"
|
||||||
|
:on-negative-click="handleClose"
|
||||||
|
:on-close="handleClose"
|
||||||
|
>
|
||||||
|
<template #Context>
|
||||||
|
<n-tree
|
||||||
|
block-line
|
||||||
|
cascade
|
||||||
|
checkable
|
||||||
|
:data="allTreeData"
|
||||||
|
key-field="id"
|
||||||
|
label-field="title"
|
||||||
|
:default-expand-all="true"
|
||||||
|
:default-checked-keys="checkedTreeData"
|
||||||
|
@update:checked-keys="handleCheckTree"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</Modal>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { defineComponent, computed, onBeforeMount, reactive, toRefs } from 'vue'
|
||||||
|
import { getRolePermission, savePermission } from '@/api/system/role/index'
|
||||||
|
import { getMenu } from '@/api/system/menu/index'
|
||||||
|
import Modal from '@/components/Modal/index.vue'
|
||||||
|
import { toTreeData } from '@/utils/handleData.js'
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'ConfigModal',
|
||||||
|
components: { Modal },
|
||||||
|
props: {
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
emits: {
|
||||||
|
'update:visible': null,
|
||||||
|
'done': null
|
||||||
|
},
|
||||||
|
setup(props, { emit }) {
|
||||||
|
const data = reactive({
|
||||||
|
menuIds: [],
|
||||||
|
checkedTreeData: [],
|
||||||
|
allTreeData: []
|
||||||
|
})
|
||||||
|
const getModalOptions = computed(() => {
|
||||||
|
return {
|
||||||
|
title: '权限分配',
|
||||||
|
show: props.visible,
|
||||||
|
form: Object.assign(data.form, props.row),
|
||||||
|
negativeText: '取消',
|
||||||
|
positiveText: '确认'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
onBeforeMount(() => {
|
||||||
|
getMenuByRoleId()
|
||||||
|
getMenuAllData()
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取当前角色的权限菜单列表
|
||||||
|
async function getMenuByRoleId() {
|
||||||
|
const res = await getRolePermission(props.row.id)
|
||||||
|
const checkedArr = res.data
|
||||||
|
if (checkedArr.length) {
|
||||||
|
checkedArr.forEach((item) => {
|
||||||
|
data.checkedTreeData.push(item.id)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
data.menuIds = data.checkedTreeData
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取全部菜单数据
|
||||||
|
async function getMenuAllData() {
|
||||||
|
const res = await getMenu()
|
||||||
|
data.allTreeData = toTreeData(res.data, 'id', 'pid', 'children')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 勾选节点
|
||||||
|
function handleCheckTree(keys, options) {
|
||||||
|
console.log(keys, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 关闭弹窗 */
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('update:visible', false)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
...toRefs(data),
|
||||||
|
getModalOptions,
|
||||||
|
handleClose,
|
||||||
|
handleCheckTree
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 提交
|
||||||
|
handleConfirm() {
|
||||||
|
console.log(this.checkedTreeData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
@ -146,7 +146,7 @@ export default defineComponent({
|
||||||
console.log(e)
|
console.log(e)
|
||||||
})
|
})
|
||||||
} else if (type === 'edit') {
|
} else if (type === 'edit') {
|
||||||
editUser(this.form).then(res => {
|
editRole(this.form).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.handleClose()
|
this.handleClose()
|
||||||
this.$emit('done')
|
this.$emit('done')
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,13 @@
|
||||||
:row="rowData"
|
:row="rowData"
|
||||||
@done="handleSearch"
|
@done="handleSearch"
|
||||||
/>
|
/>
|
||||||
|
<!-- 分配权限 -->
|
||||||
|
<config-modal
|
||||||
|
v-if="configModalShow"
|
||||||
|
v-model:visible="configModalShow"
|
||||||
|
:row="rowData"
|
||||||
|
@done="handleSearch"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -41,15 +48,16 @@ import headSearch from '@/components/Search/index.vue'
|
||||||
import dataTable from '@/components/DataTable/index.vue'
|
import dataTable from '@/components/DataTable/index.vue'
|
||||||
import TableAction from '@/components/DataTable/tools/Action.vue'
|
import TableAction from '@/components/DataTable/tools/Action.vue'
|
||||||
import TableSwitch from '@/components/DataTable/tools/Switch.vue'
|
import TableSwitch from '@/components/DataTable/tools/Switch.vue'
|
||||||
import { getRoleList, deleteRole, addRole, editRole, setRoleStatus } from '@/api/system/role/index'
|
import { getRoleList, deleteRole, setRoleStatus } from '@/api/system/role/index'
|
||||||
import { h, ref, unref, toRefs, reactive } from 'vue'
|
import { h, ref, unref, toRefs, reactive } from 'vue'
|
||||||
import table from './table.js'
|
import table from './table.js'
|
||||||
import info from './info.js'
|
import info from './info.js'
|
||||||
import RoleModal from './components/RoleModal.vue'
|
import RoleModal from './components/RoleModal.vue'
|
||||||
|
import ConfigModal from './components/ConfigModal.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MenuPage',
|
name: 'MenuPage',
|
||||||
components: { headSearch, dataTable, RoleModal },
|
components: { headSearch, dataTable, RoleModal, ConfigModal },
|
||||||
setup() {
|
setup() {
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
columns: [
|
columns: [
|
||||||
|
|
@ -118,7 +126,6 @@ export default {
|
||||||
configModalShow: false,
|
configModalShow: false,
|
||||||
rowData: {}
|
rowData: {}
|
||||||
})
|
})
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
function play(row) {
|
function play(row) {
|
||||||
data.rowData = row
|
data.rowData = row
|
||||||
|
|
|
||||||
|
|
@ -204,9 +204,9 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
...toRefs(data),
|
||||||
getModalOptions,
|
getModalOptions,
|
||||||
handleClose,
|
handleClose,
|
||||||
...toRefs(data),
|
|
||||||
handleUpload
|
handleUpload
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue