| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æéç±»å" prop="type"> |
| | | <el-select v-model="form.type" @change="form.customData === []" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="èªå®ä¹é¨é¨" prop="customData" v-if="form.type === 4"> |
| | | <el-cascader |
| | | :options="organization" |
| | | v-model="form.customData" |
| | | placeholder="è¯·éæ©ä¸çº§ç»ç»" |
| | | :props="{ label: 'name', value: 'id', multiple: true, checkStrictly: true }" |
| | | clearable /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { tree } from '@/api/business/companyDepartment' |
| | | import { createRoleDataPermission } from '@/api/system/role' |
| | | export default { |
| | | name: 'Permissions', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | roleId: null, |
| | | type: '', |
| | | customData: [] |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | type: [ |
| | | { required: true, message: 'è¯·éæ©æéç±»å' } |
| | | ], |
| | | customData: [ |
| | | { required: true, message: 'è¯·éæ©é¨é¨' } |
| | | ] |
| | | }, |
| | | organization: [], |
| | | options: [ |
| | | { label: 'å
¨é¨', value: 0 }, |
| | | { label: 'æå±é¨é¨åä¸å±é¨é¨', value: 1 }, |
| | | { label: 'æå±é¨é¨åå
¶ååé¨é¨', value: 2 }, |
| | | { label: 'ä»
æå±é¨é¨', value: 3 }, |
| | | { label: 'èªå®ä¹é¨é¨', value: 4 }, |
| | | { label: 'ä»
èªå·±', value: -1 } |
| | | ] |
| | | } |
| | | }, |
| | | methods: { |
| | | confirm () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | this.isWorking = true |
| | | let obj = JSON.parse(JSON.stringify(this.form)) |
| | | if (obj.customData.length > 0) { |
| | | obj.customData = obj.customData.flat().join(',') |
| | | } else { |
| | | obj.customData = '' |
| | | } |
| | | createRoleDataPermission(obj) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('æä½æå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | }, |
| | | getTree() { |
| | | tree() |
| | | .then(records => { |
| | | this.organization = records |
| | | }) |
| | | }, |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.getTree() |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/system/role' |
| | | }) |
| | | } |
| | | } |
| | | </script> |