heyang 2 年 前
コミット
729c8a8803

+ 18 - 1
src/api/system/role.js

@@ -107,4 +107,21 @@ export function authUserSelectAll(data) {
     method: 'put',
     params: data
   })
-}
+}
+
+// 新增
+export function addRoleByScope(data) {
+  return request({
+    url: '/system/role/addRoleByScope',
+    method: 'POST',
+    data: data
+  })
+}
+// 编辑
+export function editRoleByScope(data) {
+  return request({
+    url: '/system/role/editRoleByScope',
+    method: 'PUT',
+    data: data
+  })
+}

+ 1 - 1
src/views/comprehensive/message/warningNotice/index.vue

@@ -103,7 +103,7 @@
     },
     data(){
       return{
-        pageType:4,
+        pageType:1,
         selectListA:[{key:"1",value:"选项1"}],
         selectListB:[{key:"1",value:"选项2"}],
         queryParams:{},

+ 2 - 0
src/views/comprehensive/personnel/teacher/addPage.vue

@@ -1181,7 +1181,9 @@ export default {
             response.data[a].checkType = true;
           }
         }
+
         if(this.propsData.userId){
+          console.log(this.propsData)
           let newList = JSON.parse(JSON.stringify(response.data));
           this.form.name = this.propsData.name;
           this.form.type = this.propsData.type;

ファイルの差分が大きいため隠しています
+ 1591 - 0
src/views/comprehensive/system/role/addPage.vue


+ 216 - 189
src/views/comprehensive/system/role/index.vue

@@ -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{