!15 update _web/src/views/system/role/roleMenuForm.vue.

Merge pull request !15 from yuanbp/N/A
This commit is contained in:
小诺 2021-04-15 20:56:05 +08:00 committed by Gitee
commit cee8054c3d

View File

@ -19,15 +19,13 @@
v-model="checkedKeys" v-model="checkedKeys"
multiple multiple
checkable checkable
checkStrictly
:auto-expand-parent="autoExpandParent" :auto-expand-parent="autoExpandParent"
:expanded-keys="expandedKeys" :expanded-keys="expandedKeys"
:tree-data="menuTreeData" :tree-data="menuTreeData"
:selected-keys="selectedKeys" :selected-keys="selectedKeys"
:replaceFields="replaceFields" :replaceFields="replaceFields"
@expand="onExpand" @expand="onExpand"
@select="onSelect" @check="onCheck"
@check="treeCheck"
/> />
</a-form-item> </a-form-item>
@ -38,20 +36,20 @@
</template> </template>
<script> <script>
import { SysMenuTreeForGrant } from '@/api/modular/system/menuManage' import {SysMenuTreeForGrant} from '@/api/modular/system/menuManage'
import { sysRoleOwnMenu, sysRoleGrantMenu } from '@/api/modular/system/roleManage' import {sysRoleOwnMenu, sysRoleGrantMenu} from '@/api/modular/system/roleManage'
export default { export default {
data () { data() {
return { return {
labelCol: { labelCol: {
style: { 'padding-right': '20px' }, style: {'padding-right': '20px'},
xs: { span: 24 }, xs: {span: 24},
sm: { span: 5 } sm: {span: 5}
}, },
wrapperCol: { wrapperCol: {
xs: { span: 24 }, xs: {span: 24},
sm: { span: 15 } sm: {span: 15}
}, },
menuTreeData: [], menuTreeData: [],
expandedKeys: [], expandedKeys: [],
@ -66,83 +64,115 @@
replaceFields: { replaceFields: {
key: 'id' key: 'id'
}, },
form: this.$form.createForm(this) form: this.$form.createForm(this),
commitKeys: [],
leastChilds: []
} }
}, },
methods: { methods: {
// //
roleMenu (record) { roleMenu(record) {
this.formLoading = true this.formLoading = true
this.roleEntity = record this.roleEntity = record
this.visible = true this.visible = true
this.getMenuTree() this.getMenuTree()
this.expandedMenuKeys(record)
}, },
/** /**
* 获取菜单列表 * 获取菜单列表
*/ */
getMenuTree () { getMenuTree() {
const _this = this
SysMenuTreeForGrant().then((res) => { SysMenuTreeForGrant().then((res) => {
if (res.success) { if (res.success) {
this.menuTreeData = res.data _this.menuTreeData = res.data
_this.getLeastChilds(res.data)
// //
this.menuTreeData.forEach(item => { _this.menuTreeData.forEach(item => {
this.expandedKeys.push(item.id) _this.expandedKeys.push(item.id)
}) })
_this.expandedMenuKeys(_this.roleEntity)
} }
}) })
}, },
getLeastChilds(data){
for (let i = 0; i < data.length; i++) {
this.pushLeastChilds(data[i])
}
},
pushLeastChilds(e) {
if (e.children.length > 0) {
this.getLeastChilds(e.children)
return
}
this.leastChilds.push(e.id)
},
/** /**
* 此角色已有菜单权限 * 此角色已有菜单权限
*/ */
expandedMenuKeys (record) { expandedMenuKeys(record) {
sysRoleOwnMenu({ id: record.id }).then((res) => { const _this = this
sysRoleOwnMenu({id: record.id}).then((res) => {
if (res.success) { if (res.success) {
this.checkedKeys = res.data _this.pickCheckedKeys(res.data)
_this.commitKeys = res.data
} }
this.formLoading = false _this.formLoading = false
}) })
}, },
treeCheck (checkKeys) { pickCheckedKeys(data){
for (let i = 0; i < data.length; i++) {
if (this.leastChilds.includes(data[i])) {
this.checkedKeys.push(data[i])
}
}
}, },
onExpand (expandedKeys) {
onExpand(expandedKeys) {
this.expandedKeys = expandedKeys this.expandedKeys = expandedKeys
this.autoExpandParent = false this.autoExpandParent = false
}, },
onCheck (checkedKeys) {
onCheck(checkedKeys, info) {
this.checkedKeys = checkedKeys this.checkedKeys = checkedKeys
this.commitKeys = checkedKeys.concat(info.halfCheckedKeys);
}, },
onSelect (selectedKeys, info) {
onSelect(selectedKeys, info) {
console.log(selectedKeys)
console.log(info)
this.selectedKeys = selectedKeys this.selectedKeys = selectedKeys
}, },
handleSubmit () { handleSubmit() {
const { form: { validateFields } } = this const _this = this;
const {form: {validateFields}} = this
this.confirmLoading = true this.confirmLoading = true
validateFields((errors, values) => { validateFields((errors, values) => {
if (!errors) { if (!errors) {
sysRoleGrantMenu({ id: this.roleEntity.id, grantMenuIdList: this.checkedKeys.checked }).then((res) => { sysRoleGrantMenu({id: _this.roleEntity.id, grantMenuIdList: _this.commitKeys}).then((res) => {
if (res.success) { if (res.success) {
this.$message.success('授权成功') _this.$message.success('授权成功')
this.confirmLoading = false _this.confirmLoading = false
this.$emit('ok', values) _this.$emit('ok', values)
this.handleCancel() _this.handleCancel()
} else { } else {
this.$message.error('授权失败:' + res.message) _this.$message.error('授权失败:' + res.message)
} }
}).finally((res) => { }).finally((res) => {
this.confirmLoading = false _this.confirmLoading = false
}) })
} else { } else {
this.confirmLoading = false _this.confirmLoading = false
} }
}) })
}, },
handleCancel () { handleCancel() {
// //
this.checkedKeys = [] this.checkedKeys = []
// //
@ -150,5 +180,5 @@
this.visible = false this.visible = false
} }
} }
} }
</script> </script>