瀏覽代碼

feat: 按钮权限控制

chenhao 2 年之前
父節點
當前提交
f499c782c6
共有 4 個文件被更改,包括 21 次插入4 次删除
  1. 6 1
      src/pages/school-manage/index.vue
  2. 1 1
      src/pages/subjects-manage/index.vue
  3. 10 2
      src/pages/user-manage/index.vue
  4. 4 0
      types/project.d.ts

+ 6 - 1
src/pages/school-manage/index.vue

@@ -15,6 +15,7 @@
         </a-form-item>
       </a-form>
       <a-button
+        v-if="mainStore.systemUserInfo?.role === 'SUPER_ADMIN'"
         type="primary"
         class="tw-flex tw-items-center operation-button"
         @click="toggleAddSchoolModal"
@@ -57,6 +58,7 @@
           <template v-else-if="column.dataIndex === 'operation'">
             <div class="tw-flex tw-items-center">
               <span
+                v-if="mainStore.systemUserInfo?.role === 'SUPER_ADMIN'"
                 class="tw-cursor-pointer tw-p-2"
                 @click="updateSchoolStatus(record)"
                 >{{ record.enable ? "禁用" : "启用" }}</span
@@ -129,7 +131,7 @@
             maxlength="50"
           ></a-input>
         </a-form-item>
-        <a-form-item label="状态">
+        <a-form-item v-if="!schoolInfo.id" label="状态">
           <a-radio-group v-model:value="schoolInfo.enable">
             <a-radio :value="true">启用</a-radio>
             <a-radio :value="false">禁用</a-radio>
@@ -156,6 +158,9 @@ import Block from "@/components/block/index.vue";
 import { message, TableColumnType } from "ant-design-vue";
 import { Form } from "ant-design-vue";
 import VueQrCode from "vue-qrcode";
+import { useMainStore } from "@/store/main";
+
+const mainStore = useMainStore();
 
 const showModal = ref(false);
 

+ 1 - 1
src/pages/subjects-manage/index.vue

@@ -116,7 +116,7 @@
             {{ text }}
             <a-tooltip placement="right">
               <template #title>
-                <span>主分未完成分组</span>
+                <span>主分未完成分组</span>
               </template>
               <img
                 v-if="!record.groupFinish"

+ 10 - 2
src/pages/user-manage/index.vue

@@ -159,7 +159,7 @@
           ></a-input>
         </a-form-item>
         <a-form-item
-          v-if="!userInfo.id"
+          v-if="userInfo.role !== 'SECTION_LEADER' && !userInfo.id"
           label="密码"
           v-bind="validateInfos.passwd"
         >
@@ -507,6 +507,7 @@ const onPutUser = () => {
         // @ts-ignore
         { pattern: /\d{11}/, message: "请填写正确的手机号" },
       ],
+      passwd: []
     });
   } else {
     Object.assign(userRules, {
@@ -515,10 +516,11 @@ const onPutUser = () => {
   }
   validate().then((valid) => {
     if (valid) {
-      const { role, course, schoolTableData, ...info } = userInfo;
+      const { role, course, schoolTableData, passwd,...info } = userInfo;
       editUserInfoHttp({
         ...info,
         role,
+        passwd: role === "SECTION_LEADER" ? "" : passwd,
         course: role === "SECTION_LEADER" ? course : "",
       }).then(() => {
         message.success(`${isEdit ? "修改" : "添加"}成功`);
@@ -526,6 +528,12 @@ const onPutUser = () => {
         toggleAddUserModal(false);
       });
     }
+  }).catch(()=>{
+    if (userInfo.id) {
+      Object.assign(userRules, { schoolId: [], passwd: [] });
+    } else {
+      Object.assign(userRules, { ...addUserRules() });
+    }
   });
 };
 

+ 4 - 0
types/project.d.ts

@@ -46,8 +46,12 @@ type SystemUserInfo = {
   loginName: string;
   /** 姓名 */
   name: string;
+  /** 角色 code */
+  role: string
   /** 角色ID */
   roleId: number;
+  /** 角色名称 */
+  roleName: string
   /** 学校ID */
   schoolId: number;
   /** 学校名称 */