You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cz-hjjc-admin/src/views/system/components/ModuleAuthBindPermissions.vue

114 lines
2.5 KiB

<template>
<div>
<vxe-modal :value="isShow"
show-footer
:z-index="zIndex"
title="绑定权限"
show-confirm-button
:width="600"
:height="600"
esc-closable
@input="e => $emit('update:isShow',e)">
<template>
<Treeselect v-model="form.permission_id"
:options="tableData"
flat
always-open
multiple
clearable
noChildrenText="无子菜单"
:normalizer="node => ({
id: node.id,
label: node.name,
children: node.children,
isDefaultExpanded: true
})"></Treeselect>
</template>
<template #footer>
<el-button type="primary" :loading="loading" @click="submit">确认</el-button>
</template>
</vxe-modal>
</div>
</template>
<script>
import { setPermissions, getPermissions } from "@/api/module"
import { PopupManager } from 'element-ui/lib/utils/popup'
export default {
props: {
moduleId: [String,Number],
isShow: {
type: Boolean,
default: false,
required: true
}
},
data() {
return {
zIndex: PopupManager.nextZIndex(),
loading: false,
tableData: [],
total: 0,
form: {
id: "",
permission_id: []
}
}
},
methods: {
/**
* @param {array[string]} keys
* @param {array[all]} values
* @returns {void}
*/
setForm (keys = [],values = []) {
keys.forEach((key, index) => {
this.form[key] = values[index]
})
},
async getPermission () {
const res = await getPermissions({
module_id: this.moduleId
})
this.tableData = res;
},
async submit () {
this.loading = true;
try {
this.form.id = this.moduleId
await setPermissions(this.form)
this.$emit("update:isShow",false)
this.$emit("refresh")
this.loading = false;
} catch (err) {
this.loading = false;
}
}
},
watch: {
isShow(newVal) {
if (newVal) {
this.getPermission()
this.zIndex = PopupManager.nextZIndex()
}
},
},
computed: {},
created() {
this.getPermission()
}
}
</script>
<style scoped lang="scss">
.total {
color: #666;
text-align: right;
line-height: 3;
}
</style>