ソースを参照

角色组用户修改

zhangjie 3 年 前
コミット
efe214e221

+ 7 - 0
src/modules/base/api.js

@@ -56,6 +56,13 @@ export const deleteRole = id => {
 export const userBoundRoles = userId => {
   return $postParam("/api/admin/sys/role/get_user_roles", { userId });
 };
+// role-user-manage
+export const roleGroupList = datas => {
+  return $postParam("/api/admin/sys/role/group/list", datas);
+};
+export const updateRoleGroup = datas => {
+  return $post("/api/admin/sys/role/group/save", datas);
+};
 // menu-manage
 export const menuAuthList = datas => {
   return $postParam("/api/admin/sys/privilege/list_auth", datas);

+ 148 - 0
src/modules/base/components/ModifyRoleUser.vue

@@ -0,0 +1,148 @@
+<template>
+  <div>
+    <el-dialog
+      class="modify-role-user page-dialog"
+      :visible.sync="modalIsShow"
+      :title="title"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      append-to-body
+      fullscreen
+      destroy-on-close
+      @open="visibleChange"
+    >
+      <div class="part-box part-box-filter part-box-flex">
+        <el-form
+          ref="FilterForm"
+          label-position="left"
+          label-width="85px"
+          inline
+        >
+          <el-form-item label="名称:">
+            <el-input
+              v-model="filter.name"
+              placeholder="人员名称"
+              clearable
+            ></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="getList">查询</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+
+      <div class="part-box part-box-pad">
+        <el-table ref="TableList" :data="userList">
+          <el-table-column
+            type="index"
+            label="序号"
+            width="70"
+            :index="indexMethod"
+          ></el-table-column>
+          <el-table-column prop="realName" label="姓名"> </el-table-column>
+          <el-table-column prop="code" label="工号"> </el-table-column>
+          <el-table-column prop="mobileNumber" label="手机号">
+          </el-table-column>
+          <el-table-column class-name="action-column" label="操作" width="80">
+            <template slot-scope="scope">
+              <el-button
+                class="btn-primary"
+                type="text"
+                @click="toManageUser(scope.row)"
+                >管理范围</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </el-dialog>
+
+    <!-- SelectUserDialog -->
+    <select-user-dialog
+      ref="SelectUserDialog"
+      :users="curUserMember"
+      :user-limit-count="0"
+      @modified="userModified"
+    ></select-user-dialog>
+  </div>
+</template>
+
+<script>
+import { roleGroupList, updateRoleGroup } from "../api";
+import SelectUserDialog from "../components/SelectUserDialog";
+
+export default {
+  name: "modify-role-user",
+  components: { SelectUserDialog },
+  props: {
+    role: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      filter: {
+        username: ""
+      },
+      userList: [],
+      curUser: {},
+      curUserMember: []
+    };
+  },
+  computed: {
+    title() {
+      return `人员管理-${this.role.name}`;
+    }
+  },
+  methods: {
+    visibleChange() {
+      this.getList();
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+    async getList() {
+      const datas = {
+        ...this.filter,
+        roleId: this.role.id
+      };
+      const data = await roleGroupList(datas);
+      this.userList = data.map(item => {
+        let nitem = { ...item.user };
+        nitem.memberList = item.memberList;
+        return nitem;
+      });
+    },
+    toManageUser(row) {
+      const memberList = row.memberList || [];
+      this.curUserMember = memberList.map(item => {
+        return {
+          id: item.id,
+          name: item.realName
+        };
+      });
+      this.curUser = row;
+      this.$refs.SelectUserDialog.open();
+    },
+    async userModified(users) {
+      console.log(users);
+      const data = {
+        roleId: this.role.id,
+        userId: this.curUser.id,
+        memberIdList: users.map(item => item.id)
+      };
+      await updateRoleGroup(data);
+
+      this.$message.success("修改成功!");
+      this.getList();
+    }
+  }
+};
+</script>

+ 3 - 1
src/modules/base/components/SelectUserDialog.vue

@@ -200,7 +200,9 @@ export default {
       }
     },
     checkValid() {
-      this.selectValid = this.selectedUsers.length <= this.userLimitCount;
+      this.selectValid =
+        !this.userLimitCount ||
+        this.selectedUsers.length <= this.userLimitCount;
     },
     visibleChange() {
       this.filterLabel = "";

+ 18 - 2
src/modules/base/views/RoleManage.vue

@@ -65,7 +65,7 @@
             scope.row.createTime | timestampFilter
           }}</span>
         </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="120px">
+        <el-table-column class-name="action-column" label="操作" width="180px">
           <template slot-scope="scope">
             <el-button
               v-if="checkPrivilege('link', 'edit')"
@@ -74,6 +74,13 @@
               @click="toEdit(scope.row)"
               >编辑</el-button
             >
+            <el-button
+              v-if="checkPrivilege('link', 'Manager')"
+              class="btn-primary"
+              type="text"
+              @click="toEditUser(scope.row)"
+              >人员管理</el-button
+            >
             <el-button
               v-if="checkPrivilege('link', 'delete')"
               class="btn-danger"
@@ -109,6 +116,8 @@
       :instance="curRole"
       @modified="getList"
     ></modify-role>
+    <!-- ModifyRoleUser -->
+    <modify-role-user ref="ModifyRoleUser" :role="curRole"></modify-role-user>
   </div>
 </template>
 
@@ -116,11 +125,13 @@
 import { ABLE_TYPE } from "@/constants/enumerate";
 import { roleListPage, ableRole, deleteRole } from "../api";
 import ModifyRole from "../components/ModifyRole";
+import ModifyRoleUser from "../components/ModifyRoleUser";
 
 export default {
   name: "role-manage",
   components: {
-    ModifyRole
+    ModifyRole,
+    ModifyRoleUser
   },
   data() {
     return {
@@ -167,6 +178,11 @@ export default {
       this.curRole = row;
       this.$refs.ModifyRole.open();
     },
+    toEditUser(row) {
+      console.log(row);
+      this.curRole = row;
+      this.$refs.ModifyRoleUser.open();
+    },
     toDelete(row) {
       this.$confirm(`确定要删除角色【${row.name}】吗?`, "提示", {
         type: "warning"

+ 9 - 2
src/modules/exam/components/createExamAndPrintTask/InfoExamTask.vue

@@ -272,7 +272,10 @@
 import UploadPaperDialog from "../UploadPaperDialog";
 import SimpleImagePreview from "@/components/SimpleImagePreview";
 import ModifyCard from "../../../card/components/ModifyCard";
-import { CARD_SOURCE_TYPE } from "@/constants/enumerate";
+import {
+  CARD_SOURCE_TYPE,
+  COMMON_CARD_RULE_ID
+} from "../../../../constants/enumerate";
 import { cardForSelectList } from "../../api";
 import { courseQuery, examConfigByExamIdOrgId } from "../../../base/api";
 import { mapState, mapMutations } from "vuex";
@@ -347,7 +350,11 @@ export default {
         : this.paperAttachments.length;
     },
     canCreateCard() {
-      return this.examTask.courseCode && this.examTask.examId;
+      return (
+        this.examTask.courseCode &&
+        this.examTask.examId &&
+        this.examTask.cardRuleId !== COMMON_CARD_RULE_ID
+      );
     }
   },
   watch: {