Merge remote-tracking branch 'origin/master'

pull/22/head
xuyuxiang 2021-04-16 10:14:19 +08:00
commit 0a2cbf3629
2 changed files with 179 additions and 121 deletions

View File

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

View File

@ -28,14 +28,13 @@
<a-tree
v-model="checkedKeys"
checkable
checkStrictly
:auto-expand-parent="autoExpandParent"
:expanded-keys="expandedKeys"
:tree-data="orgTreeData"
:selected-keys="selectedKeys"
:replaceFields="replaceFields"
@expand="onExpand"
@select="onSelect"
@check="onCheck"
/>
</a-form-item>
</div>
@ -76,7 +75,9 @@
replaceFields: {
key: 'id'
},
form: this.$form.createForm(this)
form: this.$form.createForm(this),
commitKeys: [],
leastChilds: []
}
},
@ -110,8 +111,6 @@
this.orgTreeShow = true
//
this.getOrgTree()
//
this.sysRoleOwnData(this.roleEntity)
} else {
this.orgTreeShow = false
//
@ -123,13 +122,19 @@
* 获取机构树
*/
getOrgTree () {
const _this = this
getOrgTree().then((res) => {
if (res.success) {
this.orgTreeData = res.data
_this.getLeastChilds(res.data)
//
this.orgTreeData.forEach(item => {
this.expandedKeys.push(item.id)
})
//
this.sysRoleOwnData(_this.roleEntity)
}
})
},
@ -138,34 +143,57 @@
* 此角色已有数据列表
*/
sysRoleOwnData (record) {
const _this = this
sysRoleOwnData({ id: record.id }).then((res) => {
if (res.success) {
console.log(JSON.stringify(res.data))
this.checkedKeys = res.data
_this.pickCheckedKeys(res.data)
_this.commitKeys = res.data
}
this.formLoading = false
})
},
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)
},
pickCheckedKeys(data){
for (let i = 0; i < data.length; i++) {
if (this.leastChilds.includes(data[i])) {
this.checkedKeys.push(data[i])
}
}
},
onExpand (expandedKeys) {
this.expandedKeys = expandedKeys
this.autoExpandParent = false
},
onCheck (checkedKeys) {
console.log(JSON.stringify(checkedKeys))
onCheck (checkedKeys, info) {
this.checkedKeys = checkedKeys
this.commitKeys = checkedKeys.concat(info.halfCheckedKeys);
},
onSelect (selectedKeys, info) {
this.selectedKeys = selectedKeys
},
handleSubmit () {
const _this = this
const { form: { validateFields } } = this
this.confirmLoading = true
validateFields((errors, values) => {
if (!errors) {
const checkedKeys = this.checkedKeys.checked === undefined ? this.checkedKeys : this.checkedKeys.checked
sysRoleGrantData({ id: this.roleEntity.id, grantOrgIdList: checkedKeys, dataScopeType: values.dataScopeType }).then((res) => {
sysRoleGrantData({ id: this.roleEntity.id, grantOrgIdList: _this.commitKeys, dataScopeType: values.dataScopeType }).then((res) => {
this.confirmLoading = false
if (res.success) {
this.$message.success('授权成功')
@ -194,4 +222,4 @@
}
}
}
</script>
</script>