123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553 |
- <template>
- <div>
- <LinkTitlesCustom :currentPaths="['鉴权管理', '权限组列表', '权限配置']" />
- <section class="content">
- <div class="box box-info">
- <div class="box-body">
- <!-- 权限树 -->
- <div style="width: 80%;">
- <el-tree
- :data="treeData"
- :props="defaultProps"
- node-key="id"
- ref="tree"
- highlight-current
- :default-expanded-keys="[-1]"
- :expand-on-click-node="false"
- :render-content="renderContent"
- style="padding: 10px"
- />
- </div>
- <!-- 新增权限 -->
- <el-dialog
- title="新增权限"
- width="450px"
- :visible.sync="addingDialog.show"
- >
- <el-form
- :model="addingDialog.privilege"
- inline
- inline-message
- ref="addingForm"
- label-width="100px"
- :rules="rules"
- >
- <el-form-item label="父权限名称" prop="parentName">
- <el-input
- v-model="addingDialog.parentName"
- disabled
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="权限名称" prop="name">
- <el-input
- v-model="addingDialog.privilege.name"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="权限编码" prop="code">
- <el-input
- v-model="addingDialog.privilege.code"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="描述" prop="description">
- <el-input
- v-model="addingDialog.privilege.description"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="权重" prop="weight">
- <el-input
- v-model="addingDialog.privilege.weight"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性1">
- <el-input
- v-model="addingDialog.privilege.ext1"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性2">
- <el-input
- v-model="addingDialog.privilege.ext2"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性3">
- <el-input
- v-model="addingDialog.privilege.ext3"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性4">
- <el-input
- v-model="addingDialog.privilege.ext4"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性5">
- <el-input
- v-model="addingDialog.privilege.ext5"
- class="input_width"
- />
- </el-form-item>
- <el-form-item class="d-flex justify-content-center">
- <el-button type="primary" @click="addPrivilege">确定</el-button>
- <el-button @click="addingDialog.show = false">取消</el-button>
- </el-form-item>
- </el-form>
- </el-dialog>
- <!-- 修改权限 -->
- <el-dialog
- title="修改权限"
- width="450px"
- :visible.sync="updateDialog.show"
- :close-on-click-modal="false"
- >
- <el-form
- :model="updateDialog.privilege"
- inline
- inline-message
- ref="updateForm"
- label-width="100px"
- :rules="rules"
- >
- <el-form-item label="权限名称" prop="name">
- <el-input
- v-model="updateDialog.privilege.name"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="权限编码" prop="code">
- <el-input
- v-model="updateDialog.privilege.code"
- disabled
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="描述" prop="description">
- <el-input
- v-model="updateDialog.privilege.description"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="权重" prop="weight">
- <el-input
- v-model="updateDialog.privilege.weight"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性1">
- <el-input
- v-model="updateDialog.privilege.ext1"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性2">
- <el-input
- v-model="updateDialog.privilege.ext2"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性3">
- <el-input
- v-model="updateDialog.privilege.ext3"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性4">
- <el-input
- v-model="updateDialog.privilege.ext4"
- class="input_width"
- />
- </el-form-item>
- <el-form-item label="属性5">
- <el-input
- v-model="updateDialog.privilege.ext5"
- class="input_width"
- />
- </el-form-item>
- <el-form-item class="d-flex justify-content-center">
- <el-button type="primary" @click="updatePrivilege"
- >确定</el-button
- >
- <el-button @click="updateDialog.show = false">取消</el-button>
- </el-form-item>
- </el-form>
- </el-dialog>
- <!-- 查看权限 -->
- <el-dialog title="查看权限" :visible.sync="showDialog.show">
- <el-form :model="showDialog.privilege" label-width="100px">
- <el-form-item label="权限名称">
- <el-col>
- <el-input v-model="showDialog.privilege.name" disabled />
- </el-col>
- </el-form-item>
- <el-form-item label="权限编码">
- <el-col>
- <el-input v-model="showDialog.privilege.code" disabled />
- </el-col>
- </el-form-item>
- <el-form-item label="描述">
- <el-col>
- <el-input
- v-model="showDialog.privilege.description"
- disabled
- />
- </el-col>
- </el-form-item>
- <el-form-item label="权重">
- <el-col>
- <el-input v-model="showDialog.privilege.weight" disabled />
- </el-col>
- </el-form-item>
- <el-form-item label="属性1">
- <el-col>
- <el-input v-model="showDialog.privilege.ext1" disabled />
- </el-col>
- </el-form-item>
- <el-form-item label="属性2">
- <el-col>
- <el-input v-model="showDialog.privilege.ext2" disabled />
- </el-col>
- </el-form-item>
- <el-form-item label="属性3">
- <el-col>
- <el-input v-model="showDialog.privilege.ext3" disabled />
- </el-col>
- </el-form-item>
- <el-form-item label="属性4">
- <el-col>
- <el-input v-model="showDialog.privilege.ext4" disabled />
- </el-col>
- </el-form-item>
- <el-form-item label="属性5">
- <el-col>
- <el-input v-model="showDialog.privilege.ext5" disabled />
- </el-col>
- </el-form-item>
- <el-form-item class="d-flex justify-content-center">
- <el-button @click="showDialog.show = false">关闭</el-button>
- </el-form-item>
- </el-form>
- </el-dialog>
- </div>
- </div>
- </section>
- </div>
- </template>
- <script type="text/jsx">
- import { CORE_API } from "@/constants/constants.js";
- import LinkTitlesCustom from '../../../components/LinkTitlesCustom'
- let checkWeight = (rule, value, callback) => {
- if (('0' != value) && (!value)) {
- return new Error('请输入权重');
- } else if (('0' != value) && (!value.match(/^[1-9][0-9]*$/))) {
- callback(new Error('请输入整数'));
- } else if (value < 0) {
- callback(new Error('不能小于0'));
- } else if (value > 10000) {
- callback(new Error('不能大于10000'));
- } else {
- callback();
- }
- };
- let checkCode = (rule, value, callback) => {
- if ((0 != value) && (!value)) {
- callback(new Error('请输入权限编码'));
- } else if (!value.match(/^[0-9a-zA-Z_]*$/)) {
- callback(new Error("只能由数字、字母和\"_\"组成"));
- } else {
- callback();
- }
- };
- export default {
- name: "PrivilegeTree",
- data() {
- return {
- privilegeGroupId: null,
- rootTreeNode: {
- id: null,
- label: null
- },
- treeData: [],
- defaultProps: {
- children: 'children',
- label: 'label'
- },
- store: null,
- data: null,
- addingDialog: {
- show: false,
- parentName: null,
- privilege: {
- groupId: null,
- parentId: null,
- name: null,
- code: null,
- description: null,
- weight: null,
- ext1: null,
- ext2: null,
- ext3: null,
- ext4: null,
- ext5: null
- }
- },
- updateDialog: {
- show: false,
- parentName: null,
- privilege: {
- id: null,
- groupId: null,
- parentId: null,
- name: null,
- code: null,
- description: null,
- weight: null,
- ext1: null,
- ext2: null,
- ext3: null,
- ext4: null,
- ext5: null
- }
- },
- showDialog: {
- show: false,
- parentName: null,
- privilege: {
- id: null,
- groupId: null,
- parentId: null,
- name: null,
- code: null,
- description: null,
- weight: null,
- ext1: null,
- ext2: null,
- ext3: null,
- ext4: null,
- ext5: null
- }
- },
- rules: {
- name: [{
- required: true,
- message: '请输入权限名称',
- trigger: 'blur'
- }],
- code: [{
- required: true,
- message: '请输入权限编码',
- trigger: 'blur'
- }, {
- validator: checkCode, trigger: 'blur'
- }],
- weight: [{
- required: true,
- message: '请输入权重',
- trigger: 'blur'
- }, {
- validator: checkWeight, trigger: 'blur'
- }]
- }
- }
- },
- methods: {
- openAddingDialog(store, data) {
- console.log(data);
- this.store = store;
- this.data = data;
- this.addingDialog.parentName = data.label;
- this.addingDialog.privilege.groupId = this.privilegeGroupId;
- if (1 == data.$treeNodeId) {
- this.addingDialog.privilege.parentId = null;
- } else {
- this.addingDialog.privilege.parentId = data.id;
- }
- this.addingDialog.privilege.name = null;
- this.addingDialog.privilege.code = null;
- this.addingDialog.privilege.description = null;
- this.addingDialog.privilege.weight = "0";
- this.addingDialog.privilege.ext1 = null;
- this.addingDialog.privilege.ext2 = null;
- this.addingDialog.privilege.ext3 = null;
- this.addingDialog.privilege.ext4 = null;
- this.addingDialog.privilege.ext5 = null;
- this.addingDialog.show = true;
- },
- addPrivilege() {
- this.$refs.addingForm.validate((valid) => {
- if (!valid) {
- return;
- }
- var url = CORE_API + '/rolePrivilege/addPrivilege';
- this.$httpWithMsg.post(url, this.addingDialog.privilege).then((response) => {
- this.$notify({
- message: '添加成功',
- type: 'success'
- });
- var addedPrivilege = response.data;
- this.store.append({
- id: addedPrivilege.id,
- label: this.addingDialog.privilege.name,
- children: []
- }, this.data);
- })
- this.addingDialog.show = false;
- });
- },
- updatePrivilege() {
- this.$refs.updateForm.validate((valid) => {
- if (!valid) {
- return;
- }
- var url = CORE_API + '/rolePrivilege/updatePrivilege';
- this.$httpWithMsg.put(url, this.updateDialog.privilege).then(() => {
- this.$notify({
- message: '修改成功',
- type: 'success'
- });
- this.data.label = this.updateDialog.privilege.name;
- })
- this.updateDialog.show = false;
- });
- },
- openUpdateDialog(store, data) {
- this.store = store;
- this.data = data;
- this.getPrivilege(data.id, "for-update");
- },
- openShowDialog(store, data) {
- console.log(data);
- this.store = store;
- this.data = data;
- this.getPrivilege(data.id, "for-show");
- },
- getPrivilege(id, type) {
- var url = CORE_API + '/rolePrivilege/getPrivilege/' + id;
- this.$httpWithMsg.get(url).then((response) => {
- var resp = response.data;
- this.updateDialog.privilege.id = resp.id;
- this.updateDialog.privilege.groupId = resp.groupId;
- this.updateDialog.privilege.parentId = resp.parentId;
- this.updateDialog.privilege.name = resp.name;
- this.updateDialog.privilege.code = resp.code;
- this.updateDialog.privilege.description = resp.description;
- this.updateDialog.privilege.weight = resp.weight + "";
- this.updateDialog.privilege.ext1 = resp.ext1;
- this.updateDialog.privilege.ext2 = resp.ext2;
- this.updateDialog.privilege.ext3 = resp.ext3;
- this.updateDialog.privilege.ext4 = resp.ext4;
- this.updateDialog.privilege.ext5 = resp.ext5;
- this.showDialog.privilege.id = resp.id;
- this.showDialog.privilege.groupId = resp.groupId;
- this.showDialog.privilege.parentId = resp.parentId;
- this.showDialog.privilege.name = resp.name;
- this.showDialog.privilege.code = resp.code;
- this.showDialog.privilege.description = resp.description;
- this.showDialog.privilege.weight = resp.weight + "";
- this.showDialog.privilege.ext1 = resp.ext1;
- this.showDialog.privilege.ext2 = resp.ext2;
- this.showDialog.privilege.ext3 = resp.ext3;
- this.showDialog.privilege.ext4 = resp.ext4;
- this.showDialog.privilege.ext5 = resp.ext5;
- if ("for-update" == type) {
- this.updateDialog.show = true;
- }
- else if ("for-show" == type) {
- this.showDialog.show = true;
- }
- });
- },
- remove(store, data) {
- this.$confirm('此操作将永久删除权限 "' + data.label + '", 是否继续?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- var url = CORE_API + '/rolePrivilege/deletePrivilege/' + data.id;
- return this.$httpWithMsg.delete(url).then(() => {
- this.$notify({
- message: '删除成功',
- type: 'success'
- });
- store.remove(data);
- });
- }).catch(() => {
- this.$message({
- type: 'info',
- message: '已取消删除'
- });
- });
- },
- renderContent(h, {node, data, store}) {
- if (-1 == data.id) {
- return (
- <span>
- <span>
- <span>{node.label}</span>
- </span>
- <span style="float: right; margin-left: 20px; margin-right: 65px">
- <el-button type="primary" size="mini" on-click={() => this.openAddingDialog(store, data)}>追加</el-button>
- </span>
- </span>
- )
- }
- return (
- <span>
- <span>
- <span>{node.label}</span>
- </span>
- <span style="float: right; margin-left: 20px; margin-right: 20px">
- <el-button size="mini" type="text" on-click={() => this.openShowDialog(store, data)}>查看</el-button>
- <el-button size="mini" type="text" on-click={() => this.openUpdateDialog(store, data)}>修改</el-button>
- <el-button size="mini" type="text" on-click={() => this.openAddingDialog(store, data)}>追加</el-button>
- <el-button size="mini" type="text" on-click={() => this.remove(store, data)}>删除</el-button>
- </span>
- </span>
- );
- },
- async initTree() {
- var url = CORE_API + '/rolePrivilege/getPrivilegeTree/' + this.privilegeGroupId;
- const response = await this.$httpWithMsg.get(url);
- this.rootTreeNode.id = response.data.id;
- this.rootTreeNode.label = response.data.label;
- this.treeData = [];
- this.treeData.push(response.data);
- }
- },
- created() {
- this.privilegeGroupId = this.$route.params.privilegeGroupId;
- this.initTree();
- },
- components: {
- LinkTitlesCustom
- }
- };
- </script>
- <style scoped>
- .input_width {
- width: 200px;
- }
- </style>
|