|
@@ -1,194 +1,198 @@
|
|
|
<!--角色管理-->
|
|
|
<template>
|
|
|
<div class="app-container role">
|
|
|
- <el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true" class="form-box" v-if="pageType==1">
|
|
|
+ <div class="role_n" v-if="pageType==1">
|
|
|
+ <el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true" class="form-box" >
|
|
|
|
|
|
- <el-form-item label="角色名称" prop="roleName" style="margin-left:20px;">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.roleName"
|
|
|
- placeholder="请输入角色名称"
|
|
|
- clearable
|
|
|
- size="small"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="状态" prop="status">
|
|
|
- <el-select
|
|
|
- v-model="queryParams.status"
|
|
|
- placeholder="角色状态"
|
|
|
- clearable
|
|
|
- size="small"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="dict in statusOptions"
|
|
|
- :key="dict.dictValue"
|
|
|
- :label="dict.dictLabel"
|
|
|
- :value="dict.dictValue"
|
|
|
+ <el-form-item label="角色名称" prop="roleName" style="margin-left:20px;">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.roleName"
|
|
|
+ placeholder="请输入角色名称"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item style="float: right;">
|
|
|
- <el-col :span="1.5">
|
|
|
- <p class="add-button-one-120"
|
|
|
- @click="handleAdd"
|
|
|
- v-hasPermi="['system:role:add']"
|
|
|
- ><i class="el-icon-plus"></i>新增角色</p>
|
|
|
- </el-col>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <p class="inquire-button-one" @click="handleQuery">查询</p>
|
|
|
- <p class="reset-button-one" @click="resetQuery">重置</p>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <el-table v-loading="loading" border :data="roleList" @selection-change="handleSelectionChange" class="table-box" v-if="pageType==1">
|
|
|
- <el-table-column label="角色名称" prop="roleName" align="left" :show-overflow-tooltip="true"/>
|
|
|
- <el-table-column label="显示顺序" prop="roleSort" align="left"/>
|
|
|
- <el-table-column label="状态" align="left">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-switch
|
|
|
- class="switch"
|
|
|
- @change="handleStatusChange(scope.row)"
|
|
|
- v-model="scope.row.status"
|
|
|
- active-value="0"
|
|
|
- inactive-value="1"
|
|
|
- active-text="开"
|
|
|
- inactive-text="关"
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="状态" prop="status">
|
|
|
+ <el-select
|
|
|
+ v-model="queryParams.status"
|
|
|
+ placeholder="角色状态"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
>
|
|
|
- </el-switch>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="280" v-if="tableButtonType">
|
|
|
- <template slot-scope="scope" v-if="scope.row.roleId !== 1">
|
|
|
- <div class="table-button-box">
|
|
|
- <p class="table-button-null"></p>
|
|
|
- <p class="table-button-p"
|
|
|
- @click="handleAuthUser(scope.row)"
|
|
|
- v-hasPermi="['system:dict:edit']"
|
|
|
- >分配用户</p>
|
|
|
- <p class="table-button-p"
|
|
|
- @click="handleDataScope(scope.row)"
|
|
|
- v-hasPermi="['system:dict:edit']"
|
|
|
- >数据结构</p>
|
|
|
- <p class="table-button-p"
|
|
|
- @click="handleUpdate(scope.row)"
|
|
|
- v-hasPermi="['system:role:edit']"
|
|
|
- >编辑</p>
|
|
|
- <p class="table-button-p"
|
|
|
- @click="handleDelete(scope.row)"
|
|
|
- v-hasPermi="['system:role:remove']"
|
|
|
- >删除</p>
|
|
|
- <p class="table-button-null"></p>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
+ <el-option
|
|
|
+ v-for="dict in statusOptions"
|
|
|
+ :key="dict.dictValue"
|
|
|
+ :label="dict.dictLabel"
|
|
|
+ :value="dict.dictValue"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item style="float: right;">
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <p class="add-button-one-120"
|
|
|
+ @click="handleAdd"
|
|
|
+ v-hasPermi="['system:role:add']"
|
|
|
+ ><i class="el-icon-plus"></i>新增角色</p>
|
|
|
+ </el-col>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <p class="inquire-button-one" @click="handleQuery">查询</p>
|
|
|
+ <p class="reset-button-one" @click="resetQuery">重置</p>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
|
|
|
- <pagination :page-sizes="[20, 30, 40, 50]"
|
|
|
- v-if="pageType==1"
|
|
|
- v-show="total>0"
|
|
|
- :total="total"
|
|
|
- layout="total, prev, pager, next, sizes, jumper"
|
|
|
- :page.sync="queryParams.pageNum"
|
|
|
- :limit.sync="queryParams.pageSize"
|
|
|
- @pagination="getList"
|
|
|
- />
|
|
|
+ <el-table v-loading="loading" border :data="roleList" @selection-change="handleSelectionChange" class="table-box" v-if="pageType==1">
|
|
|
+ <el-table-column label="角色名称" prop="roleName" align="left" :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column label="显示顺序" prop="roleSort" align="left"/>
|
|
|
+ <el-table-column label="状态" align="left">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-switch
|
|
|
+ class="switch"
|
|
|
+ @change="handleStatusChange(scope.row)"
|
|
|
+ v-model="scope.row.status"
|
|
|
+ active-value="0"
|
|
|
+ inactive-value="1"
|
|
|
+ active-text="开"
|
|
|
+ inactive-text="关"
|
|
|
+ >
|
|
|
+ </el-switch>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="280" v-if="tableButtonType">
|
|
|
+ <template slot-scope="scope" v-if="scope.row.roleId !== 1">
|
|
|
+ <div class="table-button-box">
|
|
|
+ <p class="table-button-null"></p>
|
|
|
+ <p class="table-button-p"
|
|
|
+ @click="handleAuthUser(scope.row)"
|
|
|
+ v-hasPermi="['system:dict:edit']"
|
|
|
+ >分配用户</p>
|
|
|
+ <p class="table-button-p"
|
|
|
+ @click="handleDataScope(scope.row)"
|
|
|
+ v-hasPermi="['system:dict:edit']"
|
|
|
+ >数据结构</p>
|
|
|
+ <p class="table-button-p"
|
|
|
+ @click="handleUpdate(scope.row)"
|
|
|
+ v-hasPermi="['system:role:edit']"
|
|
|
+ >编辑</p>
|
|
|
+ <p class="table-button-p"
|
|
|
+ @click="handleDelete(scope.row)"
|
|
|
+ v-hasPermi="['system:role:remove']"
|
|
|
+ >删除</p>
|
|
|
+ <p class="table-button-null"></p>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
|
|
|
- <!-- 添加或修改角色配置对话框 -->
|
|
|
- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body class="role-el-dialog" :close-on-click-modal="false">
|
|
|
- <el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
|
|
- <el-form-item label="角色名称" prop="roleName">
|
|
|
- <el-input v-model="form.roleName" placeholder="请输入角色名称" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="roleKey">
|
|
|
+ <pagination :page-sizes="[20, 30, 40, 50]"
|
|
|
+ v-if="pageType==1"
|
|
|
+ v-show="total>0"
|
|
|
+ :total="total"
|
|
|
+ layout="total, prev, pager, next, sizes, jumper"
|
|
|
+ :page.sync="queryParams.pageNum"
|
|
|
+ :limit.sync="queryParams.pageSize"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
+
|
|
|
+ <!-- 添加或修改角色配置对话框 -->
|
|
|
+ <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body class="role-el-dialog" :close-on-click-modal="false">
|
|
|
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
|
|
+ <el-form-item label="角色名称" prop="roleName">
|
|
|
+ <el-input v-model="form.roleName" placeholder="请输入角色名称" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="roleKey">
|
|
|
<span slot="label">
|
|
|
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)" placement="top">
|
|
|
<i class="el-icon-question"></i>
|
|
|
</el-tooltip>
|
|
|
权限字符
|
|
|
</span>
|
|
|
- <el-input v-model="form.roleKey" placeholder="请输入权限字符" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="角色顺序" prop="roleSort">
|
|
|
- <el-input-number v-model="form.roleSort" controls-position="right" :min="0" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="状态">
|
|
|
- <el-radio-group v-model="form.status">
|
|
|
- <el-radio
|
|
|
- v-for="dict in statusOptions"
|
|
|
- :key="dict.dictValue"
|
|
|
- :label="dict.dictValue"
|
|
|
- >{{dict.dictLabel}}</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="菜单权限">
|
|
|
- <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox>
|
|
|
- <el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox>
|
|
|
- <el-checkbox v-model="form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动</el-checkbox>
|
|
|
- <el-tree
|
|
|
- class="tree-border"
|
|
|
- :data="menuOptions"
|
|
|
- show-checkbox
|
|
|
- ref="menu"
|
|
|
- node-key="id"
|
|
|
- :check-strictly="!form.menuCheckStrictly"
|
|
|
- empty-text="加载中,请稍后"
|
|
|
- :props="defaultProps"
|
|
|
- ></el-tree>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="备注">
|
|
|
- <el-input v-model="form.remark" type="text" placeholder="请输入内容"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="cancel">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
+ <el-input v-model="form.roleKey" placeholder="请输入权限字符" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="角色顺序" prop="roleSort">
|
|
|
+ <el-input-number v-model="form.roleSort" controls-position="right" :min="0" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="状态">
|
|
|
+ <el-radio-group v-model="form.status">
|
|
|
+ <el-radio
|
|
|
+ v-for="dict in statusOptions"
|
|
|
+ :key="dict.dictValue"
|
|
|
+ :label="dict.dictValue"
|
|
|
+ >{{dict.dictLabel}}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="菜单权限">
|
|
|
+ <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox>
|
|
|
+ <el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox>
|
|
|
+ <el-checkbox v-model="form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动</el-checkbox>
|
|
|
+ <el-tree
|
|
|
+ class="tree-border"
|
|
|
+ :data="menuOptions"
|
|
|
+ show-checkbox
|
|
|
+ ref="menu"
|
|
|
+ node-key="id"
|
|
|
+ :check-strictly="!form.menuCheckStrictly"
|
|
|
+ empty-text="加载中,请稍后"
|
|
|
+ :props="defaultProps"
|
|
|
+ ></el-tree>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注">
|
|
|
+ <el-input v-model="form.remark" type="text" placeholder="请输入内容"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="cancel">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!-- 分配角色数据权限对话框 -->
|
|
|
+ <el-dialog :title="title" :visible.sync="openDataScope" width="500px" append-to-body :close-on-click-modal="false">
|
|
|
+ <el-form :model="form" label-width="80px">
|
|
|
+ <el-form-item label="角色名称">
|
|
|
+ <el-input v-model="form.roleName" :disabled="true" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="权限字符">
|
|
|
+ <el-input v-model="form.roleKey" :disabled="true" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="权限范围">
|
|
|
+ <el-select v-model="form.dataScope" @change="dataScopeSelectChange">
|
|
|
+ <el-option
|
|
|
+ v-for="item in dataScopeOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="数据权限" v-show="form.dataScope == 2">
|
|
|
+ <el-checkbox v-model="deptExpand" @change="handleCheckedTreeExpand($event, 'dept')">展开/折叠</el-checkbox>
|
|
|
+ <el-checkbox v-model="deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')">全选/全不选</el-checkbox>
|
|
|
+ <el-checkbox v-model="form.deptCheckStrictly" @change="handleCheckedTreeConnect($event, 'dept')">父子联动</el-checkbox>
|
|
|
+ <el-tree
|
|
|
+ class="tree-border"
|
|
|
+ :data="deptOptions"
|
|
|
+ show-checkbox
|
|
|
+ default-expand-all
|
|
|
+ ref="dept"
|
|
|
+ node-key="id"
|
|
|
+ :check-strictly="!form.deptCheckStrictly"
|
|
|
+ empty-text="加载中,请稍后"
|
|
|
+ :props="defaultProps"
|
|
|
+ ></el-tree>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="cancelDataScope">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitDataScope">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
|
|
|
- <!-- 分配角色数据权限对话框 -->
|
|
|
- <el-dialog :title="title" :visible.sync="openDataScope" width="500px" append-to-body :close-on-click-modal="false">
|
|
|
- <el-form :model="form" label-width="80px">
|
|
|
- <el-form-item label="角色名称">
|
|
|
- <el-input v-model="form.roleName" :disabled="true" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="权限字符">
|
|
|
- <el-input v-model="form.roleKey" :disabled="true" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="权限范围">
|
|
|
- <el-select v-model="form.dataScope" @change="dataScopeSelectChange">
|
|
|
- <el-option
|
|
|
- v-for="item in dataScopeOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="数据权限" v-show="form.dataScope == 2">
|
|
|
- <el-checkbox v-model="deptExpand" @change="handleCheckedTreeExpand($event, 'dept')">展开/折叠</el-checkbox>
|
|
|
- <el-checkbox v-model="deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')">全选/全不选</el-checkbox>
|
|
|
- <el-checkbox v-model="form.deptCheckStrictly" @change="handleCheckedTreeConnect($event, 'dept')">父子联动</el-checkbox>
|
|
|
- <el-tree
|
|
|
- class="tree-border"
|
|
|
- :data="deptOptions"
|
|
|
- show-checkbox
|
|
|
- default-expand-all
|
|
|
- ref="dept"
|
|
|
- node-key="id"
|
|
|
- :check-strictly="!form.deptCheckStrictly"
|
|
|
- empty-text="加载中,请稍后"
|
|
|
- :props="defaultProps"
|
|
|
- ></el-tree>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="cancelDataScope">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitDataScope">确 定</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
|
|
|
<!--分配用户-->
|
|
|
- <auth-user :roleId="roleId" v-if="pageType == 2"></auth-user>
|
|
|
+<!-- <auth-user :roleId="roleId" v-if="pageType == 2"></auth-user>-->
|
|
|
+ <add-page v-if="pageType == 2" :editType="editType" :propsData="propsData" :titleName="titleName"></add-page>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -197,10 +201,12 @@ import { listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleS
|
|
|
import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
|
|
|
import { treeselect as deptTreeselect, roleDeptTreeselect } from "@/api/system/dept";
|
|
|
import authUser from "./authUser.vue";
|
|
|
+import addPage from "./addPage.vue"
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
|
authUser,
|
|
|
+ addPage
|
|
|
},
|
|
|
name: "Role",
|
|
|
data() {
|
|
@@ -292,6 +298,10 @@ export default {
|
|
|
},
|
|
|
pageType:1,
|
|
|
roleId:"",
|
|
|
+ editType:false,
|
|
|
+ //组件传参数据
|
|
|
+ propsData:{},
|
|
|
+ titleName:'新增身份',
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -301,6 +311,10 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
methods: {
|
|
|
+ outPage(){
|
|
|
+ this.pageType = 1;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
//页面切换
|
|
|
clickPage(){
|
|
|
this.roleId="";
|
|
@@ -473,28 +487,35 @@ export default {
|
|
|
handleAdd() {
|
|
|
this.reset();
|
|
|
this.getMenuTreeselect();
|
|
|
- this.open = true;
|
|
|
+ this.pageType = 2;
|
|
|
this.title = "编辑角色";
|
|
|
},
|
|
|
/** 修改按钮操作 */
|
|
|
handleUpdate(row) {
|
|
|
+
|
|
|
this.reset();
|
|
|
const roleId = row.roleId || this.ids
|
|
|
const roleMenu = this.getRoleMenuTreeselect(roleId);
|
|
|
getRole(roleId).then(response => {
|
|
|
- this.form = response.data;
|
|
|
- this.open = true;
|
|
|
- this.$nextTick(() => {
|
|
|
- roleMenu.then(res => {
|
|
|
- let checkedKeys = res.checkedKeys
|
|
|
- checkedKeys.forEach((v) => {
|
|
|
- this.$nextTick(()=>{
|
|
|
- this.$refs.menu.setChecked(v, true ,false);
|
|
|
- })
|
|
|
- })
|
|
|
- });
|
|
|
- });
|
|
|
- this.title = "修改角色";
|
|
|
+ //this.form = response.data;
|
|
|
+ console.log(response.data)
|
|
|
+ this.titleName = '角色编辑';
|
|
|
+ this.propsData = response;
|
|
|
+ this.editType = false;
|
|
|
+ this.pageType = 2;
|
|
|
+ //this.open = true;
|
|
|
+ // this.$nextTick(() => {
|
|
|
+ // roleMenu.then(res => {
|
|
|
+ // let checkedKeys = res.checkedKeys
|
|
|
+ // console.log(checkedKeys)
|
|
|
+ // checkedKeys.forEach((v) => {
|
|
|
+ // this.$nextTick(()=>{
|
|
|
+ // this.$refs.menu.setChecked(v, true ,false);
|
|
|
+ // })
|
|
|
+ // })
|
|
|
+ // });
|
|
|
+ // });
|
|
|
+ //this.title = "修改角色";
|
|
|
});
|
|
|
},
|
|
|
/** 选择角色权限范围触发 */
|
|
@@ -587,8 +608,14 @@ export default {
|
|
|
display: flex!important;
|
|
|
flex-direction: column;
|
|
|
box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
|
|
|
- padding:11px 20px 20px!important;
|
|
|
+ .role_n{
|
|
|
+ display: flex!important;
|
|
|
+ flex-direction: column;
|
|
|
+ flex: 1;
|
|
|
+ padding:11px 20px 20px!important;
|
|
|
+ }
|
|
|
.form-box{
|
|
|
+
|
|
|
margin-top:12px;
|
|
|
// display: flex;
|
|
|
.null-p{
|