소스 검색

超管菜单管理接口调试

zhangjie 3 년 전
부모
커밋
4fba5148a0

+ 1 - 0
card/views/CardRulePreview.vue

@@ -168,6 +168,7 @@ export default {
           cardDesc: ""
         }
       };
+      config.aOrB = true; // 默认开启A/B卷型
       config.requiredFields = JSON.parse(config.requiredFields);
       config.extendFields = JSON.parse(config.extendFields);
       config.cardTitle = config.titleRule;

+ 4 - 0
src/constants/adminNavs.js

@@ -11,6 +11,10 @@ const navs = [
       {
         title: "系统角色管理",
         router: "SystemRoleManage"
+      },
+      {
+        title: "菜单管理",
+        router: "SchoolMenuManage"
       }
       // {
       //   title: "权限管理",

+ 13 - 0
src/modules/admin/api.js

@@ -27,3 +27,16 @@ export const updateMenu = datas => {
 export const deleteMenu = id => {
   return $post("/api/admin/sys/privilege/remove", { id });
 };
+
+// school-menu-manage
+export const schoolMenuTree = () => {
+  return $post("/api/admin/menu/custom/list", {});
+};
+export const schoolSelectedMenuTree = schoolId => {
+  return $postParam("/api/admin/menu/custom/get_school_custom_privileges", {
+    schoolId
+  });
+};
+export const updateSchoolMenu = ({ schoolId, privilegeIds }) => {
+  return $post("/api/admin/menu/custom/save", { schoolId, privilegeIds });
+};

+ 6 - 0
src/modules/admin/router.js

@@ -1,6 +1,7 @@
 import AdminUserManage from "./views/AdminUserManage.vue";
 import PrivilegeManage from "./views/PrivilegeManage.vue";
 import SystemRoleManage from "./views/SystemRoleManage.vue";
+import SchoolMenuManage from "./views/SchoolMenuManage.vue";
 import Admin from "./views/Admin.vue";
 
 export default {
@@ -22,6 +23,11 @@ export default {
       path: "system-role-manage",
       name: "SystemRoleManage",
       component: SystemRoleManage
+    },
+    {
+      path: "school-menu-manage",
+      name: "SchoolMenuManage",
+      component: SchoolMenuManage
     }
   ]
 };

+ 100 - 0
src/modules/admin/views/SchoolMenuManage.vue

@@ -0,0 +1,100 @@
+<template>
+  <div class="school-menu-manage">
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" inline>
+        <el-form-item label="学校:">
+          <school-select
+            v-model="schoolId"
+            placeholder="请选择学校"
+            :clearable="false"
+            style="width:100%;"
+            @change="search"
+          ></school-select>
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action">
+        <el-button
+          type="primary"
+          :disabled="fetching"
+          :loading="loading"
+          @click="save"
+          >保存</el-button
+        >
+      </div>
+    </div>
+
+    <div class="part-box part-box-pad">
+      <el-tree
+        :data="menus"
+        show-checkbox
+        default-expand-all
+        node-key="id"
+        ref="MenuTree"
+        :props="defaultProps"
+        check-on-click-node
+        :expand-on-click-node="false"
+      >
+      </el-tree>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  schoolMenuTree,
+  schoolSelectedMenuTree,
+  updateSchoolMenu
+} from "../api";
+
+export default {
+  name: "school-menu-manage",
+  data() {
+    return {
+      schoolId: "",
+      menus: [],
+      loading: false,
+      fetching: false,
+      defaultProps: {
+        label: "name"
+      }
+    };
+  },
+  mounted() {
+    this.getPrivileges();
+  },
+  methods: {
+    async getPrivileges() {
+      const data = await schoolMenuTree();
+      this.menus = data || [];
+    },
+    async search() {
+      if (!this.schoolId) return;
+      this.fetching = true;
+      const data = await schoolSelectedMenuTree(this.schoolId).catch(() => {});
+      this.fetching = false;
+
+      const privilegeIds = data || [];
+      this.$refs.MenuTree.setCheckedKeys(privilegeIds);
+    },
+    async save() {
+      const privilegeIds = this.$refs.MenuTree.getCheckedKeys();
+
+      if (!this.schoolId || !privilegeIds.length) {
+        this.$message.error("学校和权限都必须选择!");
+        return;
+      }
+      if (this.loading) return;
+
+      this.loading = true;
+      const res = await updateSchoolMenu({
+        schoolId: this.schoolId,
+        privilegeIds: privilegeIds
+      });
+      this.loading = false;
+      if (!res) return;
+
+      this.$message.success("修改成功!");
+    }
+  }
+};
+</script>

+ 1 - 1
src/modules/base/api.js

@@ -27,7 +27,7 @@ export const userRoleListPage = () => {
   return $postParam("/api/admin/sys/role/list_to_user", {});
 };
 export const syncUserToEcs = () => {
-  return $postParam("/api/admin/sys/user/async", {});
+  return $postParam("/api/admin/sys/user/push", {});
 };
 
 // role-manage

+ 15 - 0
src/modules/base/views/SemesterManage.vue

@@ -0,0 +1,15 @@
+<template>
+  <div class="semester-manage">
+    semester-manage
+  </div>
+</template>
+
+<script>
+export default {
+  name: "semester-manage",
+  data() {
+    return {};
+  },
+  methods: {}
+};
+</script>

+ 15 - 0
src/modules/base/views/SubjectManage.vue

@@ -0,0 +1,15 @@
+<template>
+  <div class="subject-manage">
+    subject-manage
+  </div>
+</template>
+
+<script>
+export default {
+  name: "subject-manage",
+  data() {
+    return {};
+  },
+  methods: {}
+};
+</script>

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

@@ -37,6 +37,13 @@ export const waitTaskReviewListPage = datas => {
 export const waitTaskReviewCount = () => {
   return $postParam("/api/admin/work/exam/task/submit_count", {});
 };
+// 阅卷代办
+export const markerTaskListPage = datas => {
+  return $postParam("/api/admin/work/marker/task/ready", datas);
+};
+export const markerTaskCount = () => {
+  return $postParam("/api/admin/work/marker/task/ready_count", {});
+};
 
 // exam-task-manage
 export const examTaskListPage = datas => {

+ 15 - 0
src/modules/stmms/views/PaperAnswerUpload.vue

@@ -0,0 +1,15 @@
+<template>
+  <div class="paper-answer-upload">
+    paper-answer-upload
+  </div>
+</template>
+
+<script>
+export default {
+  name: "paper-answer-upload",
+  data() {
+    return {};
+  },
+  methods: {}
+};
+</script>

+ 15 - 0
src/modules/stmms/views/SyncManage.vue

@@ -0,0 +1,15 @@
+<template>
+  <div class="sync-manage">
+    sync-manage
+  </div>
+</template>
+
+<script>
+export default {
+  name: "sync-manage",
+  data() {
+    return {};
+  },
+  methods: {}
+};
+</script>

+ 1 - 0
src/views/Home.vue

@@ -231,6 +231,7 @@ export default {
       }
     },
     async getMenus() {
+      // TODO:根据后台返回页面层级展示菜单,前端不再维护菜单树
       const data = await sysMenu();
       this.initPrivilegeMap(data.privileges);
       const { menus, firstRouter } = this.menusToTree(data.privileges);