zhangjie 3 лет назад
Родитель
Сommit
bbf3bec0e4
39 измененных файлов с 524 добавлено и 8617 удалено
  1. 1 1
      .env
  2. 1 1
      .env.production
  3. 1 1
      src/assets/styles/home.scss
  4. 7 0
      src/components/base/SemesterSelect.vue
  5. 21 4412
      src/constants/menus-data.js
  6. 8 20
      src/modules/base/api.js
  7. 181 0
      src/modules/base/components/ModifyTask.vue
  8. 0 268
      src/modules/base/components/ModifyTemplate.vue
  9. 24 109
      src/modules/base/components/ModifyUser.vue
  10. 17 11
      src/modules/base/router.js
  11. 0 219
      src/modules/base/views/ApproveRecordManage.vue
  12. 1 8
      src/modules/base/views/BusinessDataManage.vue
  13. 0 103
      src/modules/base/views/CampusManage.vue
  14. 0 268
      src/modules/base/views/CardManage.vue
  15. 0 292
      src/modules/base/views/CardRuleManage.vue
  16. 0 188
      src/modules/base/views/ClazzManage.vue
  17. 0 212
      src/modules/base/views/ClazzSimpleManage.vue
  18. 0 17
      src/modules/base/views/CommonCardTemplate.vue
  19. 0 17
      src/modules/base/views/CommonPrintTemplate.vue
  20. 0 43
      src/modules/base/views/CommonRule.vue
  21. 0 303
      src/modules/base/views/CourseManage.vue
  22. 0 159
      src/modules/base/views/CourseSimpleManage.vue
  23. 0 0
      src/modules/base/views/DownloadManage.vue
  24. 0 229
      src/modules/base/views/ExamManage.vue
  25. 0 175
      src/modules/base/views/FlowManage.vue
  26. 0 186
      src/modules/base/views/MajorManage.vue
  27. 0 189
      src/modules/base/views/OrganizationManage.vue
  28. 0 17
      src/modules/base/views/ParamPrintTemplate.vue
  29. 0 216
      src/modules/base/views/RoleManage.vue
  30. 0 171
      src/modules/base/views/SemesterManage.vue
  31. 0 185
      src/modules/base/views/SmsManage.vue
  32. 0 302
      src/modules/base/views/TemplateManage.vue
  33. 171 0
      src/modules/base/views/TimeTaskManage.vue
  34. 59 144
      src/modules/base/views/UserManage.vue
  35. 3 0
      src/modules/login/api.js
  36. 7 1
      src/plugins/globalVuePlugins.js
  37. 14 14
      src/router.js
  38. 1 1
      src/store.js
  39. 7 135
      src/views/Home.vue

+ 1 - 1
.env

@@ -1,6 +1,6 @@
 NODE_ENV=development
 VUE_APP_DOMAIN=
 VUE_APP_TIMEOUT=600000
-VUE_APP_PAGE_SIZE=10
+VUE_APP_PAGE_SIZE=20
 VUE_APP_AUTH_TIMEOUT=72000000
 VUE_APP_SELF_DEFINE_DOMAIN=true

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 NODE_ENV=production
 VUE_APP_DOMAIN=
 VUE_APP_TIMEOUT=600000
-VUE_APP_PAGE_SIZE=10
+VUE_APP_PAGE_SIZE=20
 VUE_APP_AUTH_TIMEOUT=7200000

+ 1 - 1
src/assets/styles/home.scss

@@ -48,7 +48,7 @@
   }
 
   .head-logo {
-    padding: 0 40px;
+    padding: 0 20px;
     font-size: 20px;
     line-height: 40px;
     text-align: center;

+ 7 - 0
src/components/base/SemesterSelect.vue

@@ -41,6 +41,13 @@ export default {
       handler(val) {
         this.selected = val;
       }
+    },
+    schoolId(val, oldval) {
+      if (val !== oldval) {
+        this.search();
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
     }
   },
   created() {

+ 21 - 4412
src/constants/menus-data.js

@@ -1,4435 +1,44 @@
 export default [
   {
-    id: "2",
-    name: "用户管理",
-    url: "user",
-    type: "MENU",
-    parentId: "1",
-    sequence: 1,
-    enable: true
-  },
-  {
-    id: "4",
-    name: "组织架构",
-    url: "OrganizationManage",
-    type: "MENU",
-    parentId: "2",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "92",
-        name: "组织机构-查询",
-        url: "/api/admin/sys/org/list",
-        type: "URL",
-        parentId: "4",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "93",
-        name: "组织机构-新增/修改",
-        url: "/api/admin/sys/org/save",
-        type: "URL",
-        parentId: "4",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "94",
-        name: "组织机构-删除",
-        url: "/api/admin/sys/org/remove",
-        type: "URL",
-        parentId: "4",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "371",
-        name: "根据类型查询机构",
-        url: "/api/admin/sys/org/find_by_type",
-        type: "URL",
-        parentId: "4",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "224",
-        name: "组织架构-添加",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "4",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "225",
-        name: "组织架构-+子部门",
-        url: "Add",
-        type: "LINK",
-        parentId: "4",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "226",
-        name: "组织架构-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "4",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "227",
-        name: "组织架构-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "4",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "228",
-        name: "组织架构-树形列表",
-        url: "List",
-        type: "LIST",
-        parentId: "4",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "234",
-        name: "组织架构-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "4",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "8",
-    name: "通用规则",
-    url: "CommonRule",
-    type: "MENU",
-    parentId: "3",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "99",
-        name: "考务规则-查询",
-        url: "/api/admin/basic/exam_rule/list",
-        type: "URL",
-        parentId: "8",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "100",
-        name: "考务规则-新增/修改",
-        url: "/api/admin/basic/exam_rule/save",
-        type: "URL",
-        parentId: "8",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "236",
-        name: "考务规则-考务规则配置",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "8",
-        sequence: 1,
-        enable: true
-      }
-    ]
+    id: "1",
+    parentId: "-1",
+    name: "考务数据",
+    url: "exam",
+    type: "MENU"
   },
   {
-    id: "15",
-    name: "我的工作台",
+    id: "2",
+    parentId: "1",
+    name: "考务数据对接",
     url: "work",
-    type: "MENU",
-    parentId: "14",
-    sequence: 1,
-    enable: true
-  },
-  {
-    id: "16",
-    name: "待办任务",
-    url: "WaitTask",
-    type: "MENU",
-    parentId: "15",
-    sequence: 1,
-    enable: true
-  },
-  {
-    id: "38",
-    name: "印刷管理",
-    url: "print",
-    type: "MENU",
-    parentId: "14",
-    sequence: 1,
-    enable: true
-  },
-  {
-    id: "39",
-    name: "命题任务管理",
-    url: "ExamTaskManage",
-    type: "MENU",
-    parentId: "652",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "63",
-        name: "命题任务管理-查询",
-        url: "/api/admin/exam/task/list",
-        type: "URL",
-        parentId: "39",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "64",
-        name: "命题任务管理-更改/指派命题老师",
-        url: "/api/admin/exam/task/assign_user",
-        type: "URL",
-        parentId: "39",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "65",
-        name: "命题任务管理-启用/禁用",
-        url: "/api/admin/exam/task/enable",
-        type: "URL",
-        parentId: "39",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "66",
-        name: "命题任务管理-新建",
-        url: "/api/admin/exam/task/save",
-        type: "URL",
-        parentId: "39",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "67",
-        name: "命题任务管理-批量新建-文件导入",
-        url: "/api/admin/exam/task/import",
-        type: "URL",
-        parentId: "39",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "68",
-        name: "命题任务管理-批量新建",
-        url: "/api/admin/exam/task/save_batch",
-        type: "URL",
-        parentId: "39",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "169",
-        name: "命题任务管理-根据课程查询命题老师",
-        url: "/api/admin/sys/user/user_list",
-        type: "URL",
-        parentId: "39",
-        sequence: 7,
-        enable: true
-      },
-      {
-        id: "465",
-        name: "新建命题申请-班级列表",
-        url: "/api/admin/exam/task/list_task_apply_class",
-        type: "URL",
-        parentId: "39",
-        sequence: 9,
-        enable: true
-      },
-      {
-        id: "466",
-        name: "命题任务-审批-获取试卷审批表数据",
-        url: "/api/admin/exam/task/find_approve_form_json",
-        type: "URL",
-        parentId: "39",
-        sequence: 10,
-        enable: true
-      },
-      {
-        id: "467",
-        name: "命题任务-审批-获取试卷审批表pdf",
-        url: "/api/admin/exam/task/find_approve_form_pdf",
-        type: "URL",
-        parentId: "39",
-        sequence: 11,
-        enable: true
-      },
-      {
-        id: "477",
-        name: "命题任务-考试对象查询",
-        url: "/api/admin/exam/task/find_exam_object",
-        type: "URL",
-        parentId: "39",
-        sequence: 12,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "272",
-        name: "命题任务管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "39",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "273",
-        name: "命题任务管理-批量新建命题任务",
-        url: "BatchAdd",
-        type: "BUTTON",
-        parentId: "39",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "274",
-        name: "命题任务管理-新建命题任务",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "39",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "275",
-        name: "命题任务管理-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "39",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "276",
-        name: "命题任务管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "39",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "277",
-        name: "命题任务管理-取消任务",
-        url: "Cancel",
-        type: "LINK",
-        parentId: "39",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "448",
-        name: "命题任务管理-更改/指派命题老师",
-        url: "ASSIGN",
-        type: "LINK",
-        parentId: "39",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "279",
-        name: "命题任务管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "39",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "278",
-        name: "命题任务管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "39",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "43",
-    name: "印刷计划管理",
-    url: "PrintPlanManage",
-    type: "MENU",
-    parentId: "38",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "48",
-        name: "印刷计划管理-查询",
-        url: "/api/admin/exam/print/list",
-        type: "URL",
-        parentId: "43",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "49",
-        name: "印刷计划管理-按类型查询模板",
-        url: "/api/admin/exam/print/get_template",
-        type: "URL",
-        parentId: "43",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "50",
-        name: "印刷计划管理-新增/修改",
-        url: "/api/admin/exam/print/save",
-        type: "URL",
-        parentId: "43",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "51",
-        name: "印刷计划管理-删除",
-        url: "/api/admin/exam/print/remove",
-        type: "URL",
-        parentId: "43",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "309",
-        name: "印刷计划管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "43",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "310",
-        name: "印刷计划管理-新建印刷计划",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "43",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "412",
-        name: "印刷计划管理-提交印刷",
-        url: "Submit",
-        type: "BUTTON",
-        parentId: "43",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "311",
-        name: "印刷计划管理-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "43",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "312",
-        name: "印刷计划管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "43",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "313",
-        name: "印刷计划管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "43",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "315",
-        name: "印刷计划管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "43",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "314",
-        name: "印刷计划管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "43",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "113",
-    name: "任务管理",
-    url: "DataTaskManage",
-    type: "MENU",
-    parentId: "112",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "114",
-        name: "任务管理-查询",
-        url: "/api/admin/data/task/query",
-        type: "URL",
-        parentId: "113",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "190",
-        name: "任务管理-重新生成pdf",
-        url: "/api/admin/data/task/reset_create_pdf",
-        type: "URL",
-        parentId: "113",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "337",
-        name: "任务管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "113",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "338",
-        name: "任务管理-导出日志",
-        url: "Export",
-        type: "LINK",
-        parentId: "113",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "339",
-        name: "任务管理-下载文件",
-        url: "Download",
-        type: "LINK",
-        parentId: "113",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "413",
-        name: "任务管理-重新生成pdf",
-        url: "CreatePdf",
-        type: "LINK",
-        parentId: "113",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "341",
-        name: "任务管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "113",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "340",
-        name: "任务管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "113",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "402",
-    name: "流程管理",
-    url: "FlowManage",
-    type: "MENU",
-    parentId: "390",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "414",
-        name: "流程管理-保存和发布流程",
-        url: "/api/admin/custom/flow/save",
-        type: "URL",
-        parentId: "402",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "415",
-        name: "流程管理-流程逻辑删除",
-        url: "/api/admin/custom/flow/enable",
-        type: "URL",
-        parentId: "402",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "416",
-        name: "流程管理-流程列表",
-        url: "/api/admin/custom/flow/list",
-        type: "URL",
-        parentId: "402",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "417",
-        name: "流程管理-审批流程",
-        url: "/api/admin/custom/flow/task/approve",
-        type: "URL",
-        parentId: "402",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "418",
-        name: "流程管理-流程审批记录列表",
-        url: "/api/admin/custom/flow/approve/list",
-        type: "URL",
-        parentId: "402",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "419",
-        name: "流程管理-流程审批记录逻辑删除",
-        url: "/api/admin/custom/flow/approve/enable",
-        type: "URL",
-        parentId: "402",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "420",
-        name: "流程管理-流程终止",
-        url: "/api/admin/custom/flow/end",
-        type: "URL",
-        parentId: "402",
-        sequence: 7,
-        enable: true
-      },
-      {
-        id: "421",
-        name: "流程管理-获取所有流程节点",
-        url: "/api/admin/custom/flow/task/all",
-        type: "URL",
-        parentId: "402",
-        sequence: 8,
-        enable: true
-      },
-      {
-        id: "441",
-        name: "流程管理-根据流程类型获取流程节点",
-        url: "/api/admin/custom/flow/get_flow_info_by_type",
-        type: "URL",
-        parentId: "402",
-        sequence: 9,
-        enable: true
-      },
-      {
-        id: "442",
-        name: "流程管理-流程节点转他人审批",
-        url: "/api/admin/custom/flow/task/approver/exchange",
-        type: "URL",
-        parentId: "402",
-        sequence: 10,
-        enable: true
-      },
-      {
-        id: "639",
-        name: "流程管理-编辑流程",
-        url: "/api/admin/custom/flow/edit",
-        type: "URL",
-        parentId: "402",
-        sequence: 14,
-        enable: true
-      },
-      {
-        id: "640",
-        name: "流程管理-获取当前流程节点信息",
-        url: "/api/admin/custom/flow/task/info",
-        type: "URL",
-        parentId: "402",
-        sequence: 15,
-        enable: true
-      },
-      {
-        id: "641",
-        name: "流程管理-查看流程信息",
-        url: "/api/admin/custom/flow/view",
-        type: "URL",
-        parentId: "402",
-        sequence: 16,
-        enable: true
-      },
-      {
-        id: "644",
-        name: "流程管理-重命名自定义流程名称",
-        url: "/api/admin/custom/flow/rename",
-        type: "URL",
-        parentId: "402",
-        sequence: 17,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "407",
-        name: "流程管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "402",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "408",
-        name: "流程管理-新建流程",
-        url: "Register",
-        type: "BUTTON",
-        parentId: "402",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "638",
-        name: "流程管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "402",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "409",
-        name: "流程管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "402",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "643",
-        name: "流程管理-重命名",
-        url: "Rename",
-        type: "LINK",
-        parentId: "402",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "411",
-        name: "流程管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "402",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "410",
-        name: "流程管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "402",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "470",
-    name: "命题计划统计表",
-    url: "StatisticsManage",
-    type: "MENU",
-    parentId: "469",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "475",
-        name: "命题计划统计-导入",
-        url: "/api/admin/statistics/import",
-        type: "URL",
-        parentId: "470",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "476",
-        name: "命题计划统计-列表",
-        url: "/api/admin/statistics/list",
-        type: "URL",
-        parentId: "470",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "480",
-        name: "命题计划统计-刷新数据",
-        url: "/api/admin/statistics/freshen",
-        type: "URL",
-        parentId: "470",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "481",
-        name: "命题计划统计-删除数据",
-        url: "/api/admin/statistics/delete",
-        type: "URL",
-        parentId: "470",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "471",
-        name: "命题计划统计表-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "470",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "472",
-        name: "命题计划统计表-模板下载",
-        url: "Download",
-        type: "BUTTON",
-        parentId: "470",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "473",
-        name: "命题计划统计表-导入",
-        url: "Import",
-        type: "BUTTON",
-        parentId: "470",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "478",
-        name: "命题计划统计-刷新数据",
-        url: "Freshen",
-        type: "BUTTON",
-        parentId: "470",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "479",
-        name: "命题计划统计-删除数据",
-        url: "Delete",
-        type: "BUTTON",
-        parentId: "470",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "474",
-        name: "命题计划统计表-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "470",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "487",
-    name: "成绩归档",
-    url: "ScoreArchive",
-    type: "MENU",
-    parentId: "561",
-    sequence: 1,
-    enable: true,
-    buttons: [
-      {
-        id: "500",
-        name: "成绩归档-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "487",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "501",
-        name: "成绩归档-数据同步",
-        url: "Sync",
-        type: "BUTTON",
-        parentId: "487",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "502",
-        name: "成绩归档-成绩导出",
-        url: "Export",
-        type: "BUTTON",
-        parentId: "487",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "503",
-        name: "成绩归档-一键下载",
-        url: "BatchDownload",
-        type: "BUTTON",
-        parentId: "487",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "504",
-        name: "成绩归档-查看原卷",
-        url: "Preview",
-        type: "LINK",
-        parentId: "487",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "505",
-        name: "成绩归档-下载",
-        url: "Download",
-        type: "LINK",
-        parentId: "487",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "498",
-        name: "成绩归档-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "487",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "499",
-        name: "成绩归档-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "487",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "491",
-    name: "阅卷管理",
-    url: "MarkerLogin",
-    type: "MENU",
-    parentId: "486",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "541",
-        name: "获取用户阅卷角色",
-        url: "/api/admin/common/get_open_role",
-        type: "URL",
-        parentId: "491",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "492",
-        name: "评卷员登录",
-        url: "/api/admin/exam/sso/marker_login",
-        type: "URL",
-        parentId: "491",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "493",
-        name: "科组长登录",
-        url: "/api/admin/exam/sso/marker_leader_login",
-        type: "URL",
-        parentId: "491",
-        sequence: 4,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "510",
-    name: "学期管理",
-    url: "SemesterManage",
-    type: "MENU",
-    parentId: "356",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "533",
-        name: "学期管理-查询",
-        url: "/api/admin/basic/semester/query",
-        type: "URL",
-        parentId: "510",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "560",
-        name: "学期管理-设置当前使用学期",
-        url: "/api/admin/basic/semester/set_in_used",
-        type: "URL",
-        parentId: "510",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "534",
-        name: "学期管理-新增/编辑",
-        url: "/api/admin/basic/semester/save",
-        type: "URL",
-        parentId: "510",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "535",
-        name: "学期管理-删除",
-        url: "/api/admin/basic/semester/delete",
-        type: "URL",
-        parentId: "510",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "511",
-        name: "学期管理-新建学期",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "510",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "512",
-        name: "学期管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "510",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "559",
-        name: "学期管理-设置当前使用学期",
-        url: "Edit",
-        type: "LINK",
-        parentId: "510",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "513",
-        name: "学期管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "510",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "514",
-        name: "学期管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "510",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "561",
-    name: "归档管理",
-    url: "ScoreArchivePrimary",
-    type: "MENU",
-    parentId: "506",
-    sequence: 1,
-    enable: true
-  },
-  {
-    id: "575",
-    name: "基础信息",
-    url: "basicInfo",
-    type: "MENU",
-    parentId: "650",
-    sequence: 1,
-    enable: true
-  },
-  {
-    id: "576",
-    name: "教学课程管理",
-    url: "CourseSimpleManage",
-    type: "MENU",
-    parentId: "575",
-    sequence: 1,
-    enable: true,
-    urls: [
-      {
-        id: "577",
-        name: "教学课程-查询",
-        url: "/api/admin/teach/course/page",
-        type: "URL",
-        parentId: "576",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "578",
-        name: "教学课程-查找基础课程",
-        url: "/api/admin/teach/course/find_basic_course",
-        type: "URL",
-        parentId: "576",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "579",
-        name: "教学课程-创建教学课程",
-        url: "/api/admin/teach/course/create",
-        type: "URL",
-        parentId: "576",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "580",
-        name: "教学课程-批量删除",
-        url: "/api/admin/teach/course/delete",
-        type: "URL",
-        parentId: "576",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "582",
-        name: "教学课程-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "576",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "583",
-        name: "教学课程-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "576",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "584",
-        name: "教学课程-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "576",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "585",
-        name: "教学课程-班级管理",
-        url: "Link",
-        type: "LINK",
-        parentId: "576",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "581",
-        name: "教学课程-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "576",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "608",
-        name: "教学课程-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "576",
-        sequence: 6,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "652",
-    name: "电子交卷",
-    url: "electronicSubmit",
-    type: "MENU",
-    parentId: "651",
-    sequence: 1,
-    enable: true
+    type: "MENU"
   },
   {
     id: "3",
-    name: "配置管理",
-    url: "rule",
-    type: "MENU",
-    parentId: "1",
-    sequence: 2,
-    enable: true
-  },
-  {
-    id: "5",
-    name: "用户管理",
-    url: "UserManage",
-    type: "MENU",
     parentId: "2",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "77",
-        name: "用户管理-查询",
-        url: "/api/admin/sys/user/list",
-        type: "URL",
-        parentId: "5",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "78",
-        name: "用户管理-新增/修改",
-        url: "/api/admin/sys/user/save",
-        type: "URL",
-        parentId: "5",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "79",
-        name: "用户管理-启用/禁用",
-        url: "/api/admin/sys/user/enable",
-        type: "URL",
-        parentId: "5",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "80",
-        name: "用户管理-重置密码",
-        url: "/api/admin/sys/user/reset_password",
-        type: "URL",
-        parentId: "5",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "81",
-        name: "用户管理-导入",
-        url: "/api/admin/sys/user/import",
-        type: "URL",
-        parentId: "5",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "87",
-        name: "用户管理-用户已绑定角色列表",
-        url: "/api/admin/sys/role/get_user_roles",
-        type: "URL",
-        parentId: "5",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "184",
-        name: "用户管理-查询用户可绑定角色",
-        url: "/api/admin/sys/role/list_to_user",
-        type: "URL",
-        parentId: "5",
-        sequence: 7,
-        enable: true
-      },
-      {
-        id: "532",
-        name: "用户管理-同步",
-        url: "/api/admin/sys/user/push",
-        type: "URL",
-        parentId: "5",
-        sequence: 8,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "217",
-        name: "用户管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "5",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "509",
-        name: "用户管理-同步",
-        url: "SyncUser",
-        type: "BUTTON",
-        parentId: "5",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "218",
-        name: "用户管理-添加用户",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "5",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "243",
-        name: "用户管理-批量导入",
-        url: "Export",
-        type: "BUTTON",
-        parentId: "5",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "219",
-        name: "用户管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "5",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "220",
-        name: "用户管理-启用&禁用",
-        url: "Enable",
-        type: "LINK",
-        parentId: "5",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "223",
-        name: "用户管理-重置密码",
-        url: "Reset",
-        type: "LINK",
-        parentId: "5",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "221",
-        name: "用户管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "5",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "222",
-        name: "用户管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "5",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "9",
-    name: "题卡规则管理",
-    url: "CardRuleManage",
-    type: "MENU",
-    parentId: "3",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "101",
-        name: "题卡规则-查询",
-        url: "/api/admin/basic/card_rule/list",
-        type: "URL",
-        parentId: "9",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "102",
-        name: "题卡规则-查询单个",
-        url: "/api/admin/basic/card_rule/get_one",
-        type: "URL",
-        parentId: "9",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "103",
-        name: "题卡规则-新增/修改",
-        url: "/api/admin/basic/card_rule/save",
-        type: "URL",
-        parentId: "9",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "104",
-        name: "题卡规则-启用/禁用",
-        url: "/api/admin/basic/card_rule/enable",
-        type: "URL",
-        parentId: "9",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "237",
-        name: "题卡规则-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "9",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "238",
-        name: "题卡规则-添加",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "9",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "342",
-        name: "题卡规则-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "9",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "343",
-        name: "题卡规则-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "9",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "345",
-        name: "题卡规则-启用&禁用",
-        url: "Enable",
-        type: "LINK",
-        parentId: "9",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "240",
-        name: "题卡规则-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "9",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "239",
-        name: "题卡规则-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "9",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "40",
-    name: "入库申请",
-    url: "TaskApplyManage",
-    type: "MENU",
-    parentId: "652",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "70",
-        name: "入库申请-查询",
-        url: "/api/admin/exam/task/apply_list",
-        type: "URL",
-        parentId: "40",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "71",
-        name: "入库申请-提交/暂存",
-        url: "/api/admin/exam/task/apply_save",
-        type: "URL",
-        parentId: "40",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "424",
-        name: "入库申请-新建命题任务-切换题卡",
-        url: "/api/admin/exam/task/switch_card",
-        type: "URL",
-        parentId: "40",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "566",
-        name: "审核-印刷员驳回后命题老师修改",
-        url: "/api/admin/exam/task/apply_resave",
-        type: "URL",
-        parentId: "40",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "72",
-        name: "入库申请-撤回/重新申请",
-        url: "/api/admin/exam/task/apply_status",
-        type: "URL",
-        parentId: "40",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "167",
-        name: "入库申请-查询可选择题卡",
-        url: "/api/admin/exam/card/select_card_list",
-        type: "URL",
-        parentId: "40",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "168",
-        name: "入库申请-查询申请详情",
-        url: "/api/admin/exam/task/apply_get_one",
-        type: "URL",
-        parentId: "40",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "174",
-        name: "入库申请-申请客服制卡",
-        url: "/api/admin/exam/card/cust_save",
-        type: "URL",
-        parentId: "40",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "568",
-        name: "入库申请-查询任务详情",
-        url: "/api/admin/exam/task/exam_task_get_one",
-        type: "URL",
-        parentId: "40",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "464",
-        name: "新建命题申请",
-        url: "/api/admin/exam/task/submit_task_apply",
-        type: "URL",
-        parentId: "40",
-        sequence: 8,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "280",
-        name: "入库申请-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "40",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "463",
-        name: "入库申请-新建命题任务",
-        url: "ExamTaskApplyManage",
-        type: "BUTTON",
-        parentId: "40",
-        sequence: 8,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "281",
-        name: "入库申请-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "40",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "282",
-        name: "入库申请-撤销申请",
-        url: "End",
-        type: "LINK",
-        parentId: "40",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "283",
-        name: "入库申请-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "40",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "468",
-        name: "入库申请-下载审批表",
-        url: "Download",
-        type: "LINK",
-        parentId: "40",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "285",
-        name: "入库申请-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "40",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "284",
-        name: "入库申请-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "40",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "44",
-    name: "考务数据导入",
-    url: "BusinessDataExport",
-    type: "MENU",
-    parentId: "38",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "52",
-        name: "考务数据导入-查询",
-        url: "/api/admin/exam/print/data_list",
-        type: "URL",
-        parentId: "44",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "53",
-        name: "考务数据导入-汇总数据查询",
-        url: "/api/admin/exam/print/data_total",
-        type: "URL",
-        parentId: "44",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "54",
-        name: "考务数据导入-导入",
-        url: "/api/admin/exam/print/data_import",
-        type: "URL",
-        parentId: "44",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "55",
-        name: "考务数据导入-查看明细",
-        url: "/api/admin/exam/print/data_detail_list",
-        type: "URL",
-        parentId: "44",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "157",
-        name: "考务数据导入-模板下载",
-        url: "/api/admin/exam/print/template_download",
-        type: "URL",
-        parentId: "44",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "158",
-        name: "考务数据导入-结果导出",
-        url: "/api/admin/exam/print/data_export",
-        type: "URL",
-        parentId: "44",
-        sequence: 6,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "316",
-        name: "考务数据导入-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "44",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "317",
-        name: "考务数据导入-考务数据模版下载",
-        url: "TempleteDownload",
-        type: "BUTTON",
-        parentId: "44",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "318",
-        name: "考务数据导入-导出查询结果",
-        url: "Export",
-        type: "BUTTON",
-        parentId: "44",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "319",
-        name: "考务数据导入-导入",
-        url: "Import",
-        type: "BUTTON",
-        parentId: "44",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "320",
-        name: "考务数据导入-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "44",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "322",
-        name: "考务数据导入-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "44",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "321",
-        name: "考务数据导入-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "44",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "403",
-    name: "流程审批记录管理",
-    url: "ApproveRecordManage",
-    type: "MENU",
-    parentId: "390",
-    sequence: 2,
-    enable: true,
-    buttons: [
-      {
-        id: "404",
-        name: "流程审批记录管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "403",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "422",
-        name: "流程审批记录管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "403",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "567",
-        name: "流程审批记录管理-查看",
-        url: "Preview",
-        type: "LINK",
-        parentId: "403",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "406",
-        name: "流程审批记录管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "403",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "405",
-        name: "流程审批记录管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "403",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "469",
-    name: "命题计划统计",
-    url: "Statistics",
-    type: "MENU",
-    parentId: "14",
-    sequence: 2,
-    enable: true
-  },
-  {
-    id: "488",
-    name: "评卷参数设置",
-    url: "UploadStructure",
-    type: "MENU",
-    parentId: "486",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "489",
-        name: "试卷结构上传列表",
-        url: "/api/admin/exam/structure/list",
-        type: "URL",
-        parentId: "488",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "490",
-        name: "试卷结构上传提交",
-        url: "/api/admin/exam/structure/upload",
-        type: "URL",
-        parentId: "488",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "540",
-        name: "试卷结构/标答上传-查看试卷结构",
-        url: "/api/admin/exam/structure/preview_structure",
-        type: "URL",
-        parentId: "488",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "495",
-        name: "试卷结构/标答上传-上传试卷结构/标答",
-        url: "Upload",
-        type: "LINK",
-        parentId: "488",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "496",
-        name: "试卷结构/标答上传-查看试卷结构",
-        url: "Preview",
-        type: "LINK",
-        parentId: "488",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "497",
-        name: "试卷结构/标答上传-查看标答",
-        url: "Preview",
-        type: "LINK",
-        parentId: "488",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "494",
-        name: "试卷结构/标答上传-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "488",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "521",
-    name: "同步管理",
-    url: "SyncManage",
-    type: "MENU",
-    parentId: "112",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "557",
-        name: "同步任务管理-查询",
-        url: "/api/admin/data/sync/query",
-        type: "URL",
-        parentId: "521",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "523",
-        name: "同步管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "521",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "526",
-        name: "同步管理-导出日志",
-        url: "Export",
-        type: "LINK",
-        parentId: "521",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "525",
-        name: "同步管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "521",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "524",
-        name: "同步管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "521",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "586",
-    name: "教学班级管理",
-    url: "ClazzSimpleManage",
-    type: "MENU",
-    parentId: "575",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "587",
-        name: "教学班级-查询",
-        url: "/api/admin/teach/clazz/page",
-        type: "URL",
-        parentId: "586",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "588",
-        name: "教学班级-编辑教学班级",
-        url: "/api/admin/teach/clazz/edit",
-        type: "URL",
-        parentId: "586",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "589",
-        name: "教学班级-批量删除",
-        url: "/api/admin/teach/clazz/delete",
-        type: "URL",
-        parentId: "586",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "590",
-        name: "教学班级-查找教学课程",
-        url: "/api/admin/teach/clazz/find_teach_course",
-        type: "URL",
-        parentId: "586",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "592",
-        name: "教学班级-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "586",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "594",
-        name: "教学班级-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "586",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "595",
-        name: "教学班级-重命名",
-        url: "Edit",
-        type: "LINK",
-        parentId: "586",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "596",
-        name: "教学班级-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "586",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "597",
-        name: "教学班级-人员管理",
-        url: "Window",
-        type: "LINK",
-        parentId: "586",
-        sequence: 7,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "591",
-        name: "教学班级-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "586",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "593",
-        name: "教学班级-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "586",
-        sequence: 3,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "609",
-    name: "考试管理",
-    url: "ExamManage",
+    name: "用户管理",
     type: "MENU",
-    parentId: "356",
-    sequence: 2,
-    enable: true,
-    urls: [
-      {
-        id: "616",
-        name: "考试管理-查询",
-        url: "/api/admin/basic/exam/page",
-        type: "URL",
-        parentId: "609",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "617",
-        name: "考试管理-新增/修改",
-        url: "/api/admin/basic/exam/save",
-        type: "URL",
-        parentId: "609",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "618",
-        name: "考试管理-启用/禁用",
-        url: "/api/admin/basic/exam/enable",
-        type: "URL",
-        parentId: "609",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "619",
-        name: "考试管理-删除",
-        url: "/api/admin/basic/exam/delete",
-        type: "URL",
-        parentId: "609",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "620",
-        name: "考试管理-设置",
-        url: "/api/admin/basic/exam/set_in_userd",
-        type: "URL",
-        parentId: "609",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "610",
-        name: "考试管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "609",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "611",
-        name: "考试管理-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "609",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "612",
-        name: "考试管理-启用/禁用",
-        url: "Enable",
-        type: "LINK",
-        parentId: "609",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "613",
-        name: "考试管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "609",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "614",
-        name: "考试管理-设置",
-        url: "Set",
-        type: "LINK",
-        parentId: "609",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "628",
-        name: "考试管理-修改",
-        url: "Edit",
-        type: "LINK",
-        parentId: "609",
-        sequence: 7,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "632",
-        name: "考试管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "609",
-        sequence: 7,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "615",
-        name: "考试管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "609",
-        sequence: 2,
-        enable: true
-      }
-    ]
+    url: "UserManage"
   },
   {
-    id: "650",
-    name: "基础信息",
-    url: "baseInfo",
+    id: "4",
+    parentId: "2",
+    name: "设置定时任务",
     type: "MENU",
-    parentId: "-1",
-    sequence: 2,
-    enable: true
+    url: "TimeTaskManage"
   },
   {
-    id: "1",
-    name: "基础配置",
-    url: "base",
+    id: "5",
+    parentId: "2",
+    name: "考务数据列表",
     type: "MENU",
-    parentId: "-1",
-    sequence: 3,
-    enable: true
+    url: "BusinessDataManage"
   },
   {
     id: "6",
-    name: "角色管理",
-    url: "RoleManage",
-    type: "MENU",
     parentId: "2",
-    sequence: 3,
-    enable: true,
-    urls: [
-      {
-        id: "83",
-        name: "角色管理-查询",
-        url: "/api/admin/sys/role/list",
-        type: "URL",
-        parentId: "6",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "84",
-        name: "角色管理-删除",
-        url: "/api/admin/sys/role/remove",
-        type: "URL",
-        parentId: "6",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "85",
-        name: "角色管理-新增/修改",
-        url: "/api/admin/sys/role/save",
-        type: "URL",
-        parentId: "6",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "91",
-        name: "角色管理-角色已绑定权限列表",
-        url: "/api/admin/sys/privilege/get_role_privileges",
-        type: "URL",
-        parentId: "6",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "229",
-        name: "角色管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "6",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "230",
-        name: "角色管理-添加角色",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "6",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "231",
-        name: "角色管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "6",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "232",
-        name: "角色管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "6",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "647",
-        name: "角色管理-成员管理",
-        url: "Manager",
-        type: "LINK",
-        parentId: "6",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "233",
-        name: "角色管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "6",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "235",
-        name: "角色管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "6",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "41",
-    name: "入库审核",
-    url: "TaskReviewManage",
-    type: "MENU",
-    parentId: "652",
-    sequence: 3,
-    enable: true,
-    urls: [
-      {
-        id: "73",
-        name: "入库审核-查询未审核",
-        url: "/api/admin/exam/task/review_list_unaudited",
-        type: "URL",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "74",
-        name: "入库审核-审核",
-        url: "/api/admin/exam/task/review_save",
-        type: "URL",
-        parentId: "41",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "163",
-        name: "入库审核-导出审核样本",
-        url: "/api/admin/exam/task/review_export",
-        type: "URL",
-        parentId: "41",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "166",
-        name: "入库审核-查询已审核",
-        url: "/api/admin/exam/task/review_list_audited",
-        type: "URL",
-        parentId: "41",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "288",
-        name: "入库审核-未审核查询",
-        url: "NotReviewSelect",
-        type: "BUTTON",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "295",
-        name: "入库审核-已审核查询",
-        url: "ReviewSelect",
-        type: "BUTTON",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "289",
-        name: "入库审核-未审核导出审核样本",
-        url: "NotReviewExport",
-        type: "BUTTON",
-        parentId: "41",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "292",
-        name: "入库审核-未审核编辑",
-        url: "NotReviewEdit",
-        type: "LINK",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "296",
-        name: "入库审核-已审核预览",
-        url: "ReviewPreview",
-        type: "LINK",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "294",
-        name: "入库审核-未审核列表",
-        url: "NotReviewList",
-        type: "LIST",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "298",
-        name: "入库审核-已审核列表",
-        url: "ReviewList",
-        type: "LIST",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "293",
-        name: "入库审核-未审核查询条件",
-        url: "NotReviewCondition",
-        type: "CONDITION",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "297",
-        name: "入库审核-已审核查询条件",
-        url: "ReviewCondition",
-        type: "CONDITION",
-        parentId: "41",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "45",
-    name: "考务明细查询",
-    url: "BusinessDataDetail",
-    type: "MENU",
-    parentId: "38",
-    sequence: 3,
-    enable: true,
-    urls: [
-      {
-        id: "159",
-        name: "考务明细查询-查询",
-        url: "/api/admin/exam/print/data_detail",
-        type: "URL",
-        parentId: "45",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "188",
-        name: "考务明细查询-学生明细",
-        url: "/api/admin/exam/print/get_student_detail",
-        type: "URL",
-        parentId: "45",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "323",
-        name: "考务明细查询-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "45",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "324",
-        name: "考务明细查询-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "45",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "326",
-        name: "考务明细查询-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "45",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "325",
-        name: "考务明细查询-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "45",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "357",
-    name: "校区管理",
-    url: "CampusManage",
-    type: "MENU",
-    parentId: "356",
-    sequence: 3,
-    enable: true,
-    urls: [
-      {
-        id: "359",
-        name: "校区管理-查询",
-        url: "/api/admin/basic/campus/query",
-        type: "URL",
-        parentId: "357",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "360",
-        name: "校区管理-新增/编辑",
-        url: "/api/admin/basic/campus/save",
-        type: "URL",
-        parentId: "357",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "361",
-        name: "校区管理-删除(逻辑)",
-        url: "/api/admin/basic/campus/delete",
-        type: "URL",
-        parentId: "357",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "372",
-        name: "校区管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "357",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "374",
-        name: "校区管理-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "357",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "375",
-        name: "校区管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "357",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "376",
-        name: "校区管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "357",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "373",
-        name: "校区管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "357",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "390",
-    name: "流程管理",
-    url: "flow",
-    type: "MENU",
-    parentId: "1",
-    sequence: 3,
-    enable: true
-  },
-  {
-    id: "486",
-    name: "阅卷管理",
-    url: "MarkTaskManage",
-    type: "MENU",
-    parentId: "483",
-    sequence: 3,
-    enable: true
-  },
-  {
-    id: "549",
-    name: "短信日志",
-    url: "SmsManage",
-    type: "MENU",
-    parentId: "112",
-    sequence: 3,
-    enable: true,
-    buttons: [
-      {
-        id: "550",
-        name: "短信日志-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "549",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "556",
-        name: "短信日志-短信失败重发",
-        url: "Send",
-        type: "LINK",
-        parentId: "549",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "555",
-        name: "短信日志-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "549",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "554",
-        name: "短信日志-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "549",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "624",
-    name: "通卡管理",
-    url: "CardManage",
-    type: "MENU",
-    parentId: "3",
-    sequence: 3,
-    enable: true,
-    urls: [
-      {
-        id: "627",
-        name: "题卡管理-查询",
-        url: "/api/admin/exam/card/page",
-        type: "URL",
-        parentId: "624",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "636",
-        name: "题卡管理-删除",
-        url: "/api/admin/exam/card/delete_generic",
-        type: "URL",
-        parentId: "624",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "631",
-        name: "题卡管理-新增/修改",
-        url: "/api/admin/exam/card/save_generic",
-        type: "URL",
-        parentId: "624",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "625",
-        name: "题卡管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "624",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "629",
-        name: "题卡管理-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "624",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "630",
-        name: "题卡管理-修改",
-        url: "Edit",
-        type: "LINK",
-        parentId: "624",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "635",
-        name: "题卡管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "624",
-        sequence: 6,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "633",
-        name: "题卡管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "624",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "626",
-        name: "题卡管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "624",
-        sequence: 2,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "11",
-    name: "变量印品模板",
-    url: "ParamPrintTemplate",
-    type: "MENU",
-    parentId: "3",
-    sequence: 4,
-    enable: true,
-    urls: [
-      {
-        id: "123",
-        name: "变量印品模板-查询",
-        url: "/api/admin/basic/template/list",
-        type: "URL",
-        parentId: "11",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "124",
-        name: "变量印品模板-新增/修改",
-        url: "/api/admin/basic/template/save",
-        type: "URL",
-        parentId: "11",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "125",
-        name: "变量印品模板-启用/禁用",
-        url: "/api/admin/basic/template/enable",
-        type: "URL",
-        parentId: "11",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "249",
-        name: "变量印品模版-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "11",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "250",
-        name: "变量印品模版-添加模版",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "11",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "251",
-        name: "变量印品模版-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "11",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "252",
-        name: "变量印品模版-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "11",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "253",
-        name: "变量印品模版-启用&禁用",
-        url: "Enable",
-        type: "LINK",
-        parentId: "11",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "255",
-        name: "变量印品模版-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "11",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "254",
-        name: "变量印品模版-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "11",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "42",
-    name: "卷库查询",
-    url: "TaskPaperManage",
-    type: "MENU",
-    parentId: "652",
-    sequence: 4,
-    enable: true,
-    urls: [
-      {
-        id: "76",
-        name: "卷库查询-查询",
-        url: "/api/admin/exam/task/paper_list",
-        type: "URL",
-        parentId: "42",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "425",
-        name: "卷库查询-发布印刷任务-查看列表",
-        url: "/api/admin/exam/task/list_task_print",
-        type: "URL",
-        parentId: "42",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "164",
-        name: "卷库查询-下载试卷",
-        url: "/api/admin/exam/task/paper_download",
-        type: "URL",
-        parentId: "42",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "426",
-        name: "卷库查询-发布印刷任务-班级列表",
-        url: "/api/admin/exam/task/list_task_print_class",
-        type: "URL",
-        parentId: "42",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "165",
-        name: "卷库查询-试卷启用/禁用",
-        url: "/api/admin/exam/task/paper_enable",
-        type: "URL",
-        parentId: "42",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "427",
-        name: "卷库查询-发布印刷任务-印刷室列表",
-        url: "/api/admin/exam/task/list_task_print_house",
-        type: "URL",
-        parentId: "42",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "189",
-        name: "卷库查询-修改",
-        url: "/api/admin/exam/task/paper_update",
-        type: "URL",
-        parentId: "42",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "428",
-        name: "卷库查询-发布印刷任务",
-        url: "/api/admin/exam/task/save_task_print",
-        type: "URL",
-        parentId: "42",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "191",
-        name: "卷库查询-批量下载试卷PDF、题卡",
-        url: "/api/admin/exam/task/paper_card_download_pdf",
-        type: "URL",
-        parentId: "42",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "429",
-        name: "卷库查询-发布印刷任务-查看考生",
-        url: "/api/admin/exam/task/list_task_print_student",
-        type: "URL",
-        parentId: "42",
-        sequence: 5,
-        enable: true
-      },
-      {
-        id: "430",
-        name: "卷库查询-发布印刷任务-删除",
-        url: "/api/admin/exam/task/remove_task_print",
-        type: "URL",
-        parentId: "42",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "449",
-        name: "卷库查询-发布印刷任务-提交任务",
-        url: "/api/admin/exam/task/submit_task_print",
-        type: "URL",
-        parentId: "42",
-        sequence: 7,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "299",
-        name: "卷库查询-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "42",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "300",
-        name: "卷库查询-批量下载试卷题卡",
-        url: "BatchDownload",
-        type: "BUTTON",
-        parentId: "42",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "301",
-        name: "卷库查询-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "42",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "302",
-        name: "卷库查询-启用&禁用",
-        url: "Enable",
-        type: "LINK",
-        parentId: "42",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "303",
-        name: "卷库查询-下载",
-        url: "Download",
-        type: "LINK",
-        parentId: "42",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "306",
-        name: "卷库查询-发布印刷任务",
-        url: "Publish",
-        type: "LINK",
-        parentId: "42",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "308",
-        name: "卷库查询-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "42",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "305",
-        name: "卷库查询-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "42",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "304",
-        name: "卷库查询-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "42",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "46",
-    name: "关联试卷管理",
-    url: "PlanLinkPaper",
-    type: "MENU",
-    parentId: "38",
-    sequence: 4,
-    enable: true,
-    urls: [
-      {
-        id: "56",
-        name: "关联试卷管理-查询",
-        url: "/api/admin/exam/print/relate_list",
-        type: "URL",
-        parentId: "46",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "57",
-        name: "关联试卷管理-关联/更换试卷",
-        url: "/api/admin/exam/print/relate_update",
-        type: "URL",
-        parentId: "46",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "58",
-        name: "关联试卷管理-查询所有试卷编号/关联卷型",
-        url: "/api/admin/exam/print/relate_get_paper_numbers",
-        type: "URL",
-        parentId: "46",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "327",
-        name: "关联试卷管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "46",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "328",
-        name: "关联试卷管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "46",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "330",
-        name: "关联试卷管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "46",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "329",
-        name: "关联试卷管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "46",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "356",
-    name: "字典管理",
-    url: "dictionary",
-    type: "MENU",
-    parentId: "1",
-    sequence: 4,
-    enable: true
-  },
-  {
-    id: "515",
-    name: "专业管理",
-    url: "MajorManage",
-    type: "MENU",
-    parentId: "356",
-    sequence: 4,
-    enable: true,
-    urls: [
-      {
-        id: "536",
-        name: "专业管理-查询",
-        url: "/api/admin/basic/major/query",
-        type: "URL",
-        parentId: "515",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "537",
-        name: "专业管理-新增/编辑",
-        url: "/api/admin/basic/major/save",
-        type: "URL",
-        parentId: "515",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "538",
-        name: "专业管理-删除)",
-        url: "/api/admin/basic/major/delete",
-        type: "URL",
-        parentId: "515",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "516",
-        name: "专业管理-新增专业",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "515",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "522",
-        name: "专业管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "515",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "572",
-        name: "专业管理-批量删除",
-        url: "Delete",
-        type: "BUTTON",
-        parentId: "515",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "517",
-        name: "专业管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "515",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "518",
-        name: "专业管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "515",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "519",
-        name: "专业管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "515",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "520",
-        name: "专业管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "515",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "651",
-    name: "电子交卷",
-    url: "electronic",
+    name: "下载列表",
     type: "MENU",
-    parentId: "-1",
-    sequence: 4,
-    enable: true
-  },
-  {
-    id: "653",
-    name: "下载管理",
-    url: "DownloadManage",
-    type: "MENU",
-    parentId: "112",
-    sequence: 4,
-    enable: true,
-    urls: [
-      {
-        id: "659",
-        name: "下载管理-查询",
-        url: "/api/admin/data/download/page",
-        type: "URL",
-        parentId: "653",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "660",
-        name: "下载管理-下载文件",
-        url: "/api/admin/data/download/download_one",
-        type: "URL",
-        parentId: "653",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "661",
-        name: "下载管理-批量下载文件",
-        url: "/api/admin/data/download/download_batch",
-        type: "URL",
-        parentId: "653",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "654",
-        name: "下载管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "653",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "657",
-        name: "下载管理-批量下载文件",
-        url: "Download",
-        type: "BUTTON",
-        parentId: "653",
-        sequence: 4,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "656",
-        name: "下载管理-下载文件",
-        url: "Download",
-        type: "LINK",
-        parentId: "653",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "658",
-        name: "下载管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "653",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "655",
-        name: "下载管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "653",
-        sequence: 2,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "12",
-    name: "普通印品模板",
-    url: "CommonPrintTemplate",
-    type: "MENU",
-    parentId: "3",
-    sequence: 5,
-    enable: true,
-    urls: [
-      {
-        id: "126",
-        name: "普通印品模板-查询",
-        url: "/api/admin/basic/template/list",
-        type: "URL",
-        parentId: "12",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "127",
-        name: "普通印品模板-新增/修改",
-        url: "/api/admin/basic/template/save",
-        type: "URL",
-        parentId: "12",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "128",
-        name: "普通印品模板-启用/禁用",
-        url: "/api/admin/basic/template/enable",
-        type: "URL",
-        parentId: "12",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "256",
-        name: "普通印品模版-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "12",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "257",
-        name: "普通印品模版-添加模版",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "12",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "258",
-        name: "普通印品模版-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "12",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "259",
-        name: "普通印品模版-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "12",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "260",
-        name: "普通印品模版-启用&禁用",
-        url: "Enable",
-        type: "LINK",
-        parentId: "12",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "262",
-        name: "普通印品模版-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "12",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "261",
-        name: "普通印品模版-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "12",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "14",
-    name: "考试中心",
-    url: "exam",
-    type: "MENU",
-    parentId: "-1",
-    sequence: 5,
-    enable: true
-  },
-  {
-    id: "47",
-    name: "印刷任务管理",
-    url: "PrintTaskManage",
-    type: "MENU",
-    parentId: "38",
-    sequence: 5,
-    enable: true,
-    urls: [
-      {
-        id: "59",
-        name: "印刷任务管理-查询",
-        url: "/api/admin/exam/print/task_list",
-        type: "URL",
-        parentId: "47",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "60",
-        name: "印刷任务管理-提交印刷",
-        url: "/api/admin/exam/print/task_submit",
-        type: "URL",
-        parentId: "47",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "61",
-        name: "印刷任务管理-撤回提交",
-        url: "/api/admin/exam/print/task_cancel",
-        type: "URL",
-        parentId: "47",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "62",
-        name: "印刷任务管理-汇总数据查询",
-        url: "/api/admin/exam/print/task_total_data",
-        type: "URL",
-        parentId: "47",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "446",
-        name: "印刷任务管理-做废/恢复",
-        url: "/api/admin/exam/print/task_normal",
-        type: "URL",
-        parentId: "47",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "161",
-        name: "印刷任务管理-查看PDF",
-        url: "/api/admin/exam/print/task_view_pdf",
-        type: "URL",
-        parentId: "47",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "162",
-        name: "印刷任务管理-批量下载PDF",
-        url: "/api/admin/exam/print/task_download_pdf",
-        type: "URL",
-        parentId: "47",
-        sequence: 7,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "331",
-        name: "印刷任务管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "47",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "336",
-        name: "印刷任务管理-批量下载PDF",
-        url: "BatchDownload",
-        type: "BUTTON",
-        parentId: "47",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "332",
-        name: "印刷任务管理-下载",
-        url: "Download",
-        type: "LINK",
-        parentId: "47",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "335",
-        name: "印刷任务管理-撤回",
-        url: "End",
-        type: "LINK",
-        parentId: "47",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "447",
-        name: "印刷任务管理-做废/恢复",
-        url: "Normal",
-        type: "LINK",
-        parentId: "47",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "562",
-        name: "印刷任务管理-提交印刷",
-        url: "Submit",
-        type: "LINK",
-        parentId: "47",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "334",
-        name: "印刷任务管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "47",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "333",
-        name: "印刷任务管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "47",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "112",
-    name: "系统设置",
-    url: "data",
-    type: "MENU",
-    parentId: "1",
-    sequence: 5,
-    enable: true
-  },
-  {
-    id: "450",
-    name: "班级管理",
-    url: "ClazzManage",
-    type: "MENU",
-    parentId: "356",
-    sequence: 5,
-    enable: true,
-    urls: [
-      {
-        id: "451",
-        name: "班级基本信息管理-查询",
-        url: "/api/admin/basic/clazz/query",
-        type: "URL",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "452",
-        name: "班级基本信息管理-新增/编辑",
-        url: "/api/admin/basic/clazz/save",
-        type: "URL",
-        parentId: "450",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "453",
-        name: "班级基本信息管理-批量删除(逻辑)",
-        url: "/api/admin/basic/clazz/delete_batch",
-        type: "URL",
-        parentId: "450",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "454",
-        name: "班级基本信息管理-批量导入(异步)",
-        url: "/api/admin/basic/clazz/data_import",
-        type: "URL",
-        parentId: "450",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "462",
-        name: "班级数据源查询",
-        url: "/api/admin/basic/clazz/datasource",
-        type: "URL",
-        parentId: "450",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "455",
-        name: "班级管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "457",
-        name: "班级管理-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "571",
-        name: "班级管理-批量删除",
-        url: "Delete",
-        type: "BUTTON",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "460",
-        name: "班级管理-批量导入",
-        url: "Import",
-        type: "BUTTON",
-        parentId: "450",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "458",
-        name: "班级管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "459",
-        name: "班级管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "456",
-        name: "班级管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "461",
-        name: "班级管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "450",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "358",
-    name: "学生管理",
-    url: "StudentManage",
-    type: "MENU",
-    parentId: "356",
-    sequence: 6,
-    enable: true,
-    urls: [
-      {
-        id: "362",
-        name: "学生基本信息管理-查询",
-        url: "/api/admin/basic/student/query",
-        type: "URL",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "363",
-        name: "学生基本信息管理-新增/编辑",
-        url: "/api/admin/basic/student/save",
-        type: "URL",
-        parentId: "358",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "364",
-        name: "学生基本信息管理-批量删除(逻辑)",
-        url: "/api/admin/basic/student/delete_batch",
-        type: "URL",
-        parentId: "358",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "365",
-        name: "学生基本信息管理-批量导入(异步)",
-        url: "/api/admin/basic/student/data_import",
-        type: "URL",
-        parentId: "358",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "569",
-        name: "学生基本信息管理-根据条件删除(物理)",
-        url: "/api/admin/basic/student/delete_by_condition",
-        type: "URL",
-        parentId: "358",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "377",
-        name: "学生管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "379",
-        name: "学生管理-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "570",
-        name: "学生管理-根据条件删除",
-        url: "Delete",
-        type: "BUTTON",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "382",
-        name: "学生管理-批量导入",
-        url: "Import",
-        type: "BUTTON",
-        parentId: "358",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "380",
-        name: "学生管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "381",
-        name: "学生管理-删除",
-        url: "Delete",
-        type: "LINK",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "378",
-        name: "学生管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "400",
-        name: "学生管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "358",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "392",
-    name: "印刷计划合并管理",
-    url: "PrintPlanPushManage",
-    type: "MENU",
-    parentId: "3",
-    sequence: 6,
-    enable: true,
-    urls: [
-      {
-        id: "431",
-        name: "印刷计划合并管理-计划查询",
-        url: "/api/admin/exam/print_sync/list_sync",
-        type: "URL",
-        parentId: "392",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "432",
-        name: "印刷计划合并管理-合并推送-云阅卷考试ID列表",
-        url: "/api/admin/exam/print_sync/list_relate_ids",
-        type: "URL",
-        parentId: "392",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "433",
-        name: "印刷计划合并管理-合并推送-多计划合并同步",
-        url: "/api/admin/exam/print_sync/sync_data_merge",
-        type: "URL",
-        parentId: "392",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "434",
-        name: "印刷计划合并管理-批量同步",
-        url: "/api/admin/exam/print_sync/sync_data_cloud_batch",
-        type: "URL",
-        parentId: "392",
-        sequence: 6,
-        enable: true
-      },
-      {
-        id: "435",
-        name: "印刷计划合并管理-同步失败-单个手动同步",
-        url: "/api/admin/exam/print_sync/sync_data_cloud",
-        type: "URL",
-        parentId: "392",
-        sequence: 6,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "393",
-        name: "印刷计划合并管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "392",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "394",
-        name: "印刷计划合并管理-批量推送",
-        url: "BatchSend",
-        type: "BUTTON",
-        parentId: "392",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "395",
-        name: "印刷计划合并管理-合并推送印刷计划",
-        url: "MergeSend",
-        type: "BUTTON",
-        parentId: "392",
-        sequence: 3,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "396",
-        name: "印刷计划合并管理-预览",
-        url: "Preview",
-        type: "LINK",
-        parentId: "392",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "397",
-        name: "印刷计划合并管理-推送",
-        url: "Send",
-        type: "LINK",
-        parentId: "392",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "399",
-        name: "印刷计划合并管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "392",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "398",
-        name: "印刷计划合并管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "392",
-        sequence: 1,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "483",
-    name: "阅卷管理",
-    url: "stmms",
-    type: "MENU",
-    parentId: "-1",
-    sequence: 6,
-    enable: true
-  },
-  {
-    id: "13",
-    name: "课程管理",
-    url: "CourseManage",
-    type: "MENU",
-    parentId: "356",
-    sequence: 7,
-    enable: true,
-    urls: [
-      {
-        id: "96",
-        name: "课程管理-查询",
-        url: "/api/admin/basic/course/list",
-        type: "URL",
-        parentId: "13",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "97",
-        name: "课程管理-新增/修改",
-        url: "/api/admin/basic/course/save",
-        type: "URL",
-        parentId: "13",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "367",
-        name: "课程管理-新增/编辑",
-        url: "/api/admin/basic/course/save",
-        type: "URL",
-        parentId: "13",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "368",
-        name: "课程管理-批量启用&禁用",
-        url: "/api/admin/basic/course/enable",
-        type: "URL",
-        parentId: "13",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "369",
-        name: "课程基本信息管理-批量导入(异步)",
-        url: "/api/admin/basic/course/data_import",
-        type: "URL",
-        parentId: "13",
-        sequence: 4,
-        enable: true
-      },
-      {
-        id: "573",
-        name: "课程管理-根据查询条件批量启用/禁用",
-        url: "/api/admin/basic/course/enable_by_query",
-        type: "URL",
-        parentId: "13",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    buttons: [
-      {
-        id: "263",
-        name: "课程管理-查询",
-        url: "Select",
-        type: "BUTTON",
-        parentId: "13",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "385",
-        name: "课程管理-新增",
-        url: "Add",
-        type: "BUTTON",
-        parentId: "13",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "388",
-        name: "课程管理-批量导入",
-        url: "Import",
-        type: "BUTTON",
-        parentId: "13",
-        sequence: 2,
-        enable: true
-      },
-      {
-        id: "265",
-        name: "课程管理-模版下载",
-        url: "TempleteDownload",
-        type: "BUTTON",
-        parentId: "13",
-        sequence: 3,
-        enable: true
-      },
-      {
-        id: "574",
-        name: "课程管理-根据查询条件批量启用/禁用",
-        url: "Enable",
-        type: "BUTTON",
-        parentId: "13",
-        sequence: 5,
-        enable: true
-      }
-    ],
-    links: [
-      {
-        id: "268",
-        name: "课程管理-编辑",
-        url: "Edit",
-        type: "LINK",
-        parentId: "13",
-        sequence: 1,
-        enable: true
-      },
-      {
-        id: "269",
-        name: "课程管理-批量启用&禁用",
-        url: "Enable",
-        type: "LINK",
-        parentId: "13",
-        sequence: 2,
-        enable: true
-      }
-    ],
-    lists: [
-      {
-        id: "271",
-        name: "课程管理-列表",
-        url: "List",
-        type: "LIST",
-        parentId: "13",
-        sequence: 1,
-        enable: true
-      }
-    ],
-    conditions: [
-      {
-        id: "270",
-        name: "课程管理-查询条件",
-        url: "Condition",
-        type: "CONDITION",
-        parentId: "13",
-        sequence: 2,
-        enable: true
-      }
-    ]
-  },
-  {
-    id: "506",
-    name: "归档管理",
-    url: "ScoreArchiveManage",
-    type: "MENU",
-    parentId: "-1",
-    sequence: 7,
-    enable: true
+    url: "DownloadManage"
   }
 ];

+ 8 - 20
src/modules/base/api.js

@@ -97,29 +97,17 @@ export const deleteOrganization = id => {
 };
 
 // setting --------------------------------->
-// common-rule
-export const examRuleDetail = schoolId => {
-  return $postParam("/api/admin/basic/exam_rule/list", { schoolId });
-};
-export const saveExamRule = datas => {
-  return $post("/api/admin/basic/exam_rule/save", datas);
-};
-// card-rule
-export const cardRuleListPage = datas => {
-  return $postParam("/api/admin/basic/card_rule/list", datas);
-};
-export const cardRuleQuery = param => {
-  return $postParam("/api/admin/basic/card_rule/query", { param });
-};
-export const cardRuleDetail = id => {
-  return $postParam("/api/admin/basic/card_rule/get_one", { id });
+// time-task
+export const timeTaskList = datas => {
+  return $postParam("/api/admin/sys/org/list", datas);
 };
-export const saveCardRule = datas => {
-  return $post("/api/admin/basic/card_rule/save", datas);
+export const updateTimeTask = datas => {
+  return $post("/api/admin/sys/org/save", datas);
 };
-export const ableCardRule = ({ id, enable }) => {
-  return $post("/api/admin/basic/card_rule/enable", { id, enable });
+export const ableTimeTask = ({ id, enable }) => {
+  return $post("/api/admin/sys/org/enable", { id, enable });
 };
+
 // common-card-template / common-print-template / param-print-template
 export const templateListPage = datas => {
   return $postParam("/api/admin/basic/template/list", datas);

+ 181 - 0
src/modules/base/components/ModifyTask.vue

@@ -0,0 +1,181 @@
+<template>
+  <el-dialog
+    class="modify-template"
+    :visible.sync="modalIsShow"
+    :title="title"
+    top="10px"
+    width="600px"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @open="visibleChange"
+  >
+    <el-form
+      ref="modalFormComp"
+      label-position="top"
+      :rules="rules"
+      :model="modalForm"
+    >
+      <el-form-item prop="schoolId" label="学校:">
+        <school-select v-model="modalForm.schoolId"></school-select>
+      </el-form-item>
+      <el-form-item prop="semesterId" label="学期:">
+        <semester-select
+          v-model="modalForm.semesterId"
+          :school-id="modalForm.schoolId"
+        ></semester-select>
+      </el-form-item>
+      <el-form-item prop="examId" label="考试:">
+        <exam-select
+          v-model="modalForm.examId"
+          :semester-id="modalForm.semesterId"
+        ></exam-select>
+      </el-form-item>
+      <el-form-item label="定时任务时间:">
+        <el-date-picker
+          v-model="createTime"
+          type="datetimerange"
+          :picker-options="pickerOptions"
+          range-separator="至"
+          start-placeholder="定时任务开始时间"
+          end-placeholder="定时任务结束时间"
+          value-format="timestamp"
+          align="right"
+          unlink-panels
+          @change="dateChange"
+        >
+        </el-date-picker>
+      </el-form-item>
+    </el-form>
+
+    <div slot="footer">
+      <el-button type="primary" :disabled="isSubmit" @click="submit"
+        >确认</el-button
+      >
+      <el-button @click="cancel">取消</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { updateTimeTask } from "../api";
+import pickerOptions from "@/constants/datePickerOptions";
+
+const initModalForm = {
+  id: null,
+  schoolId: null,
+  semesterId: null,
+  examId: null,
+  startTime: "",
+  endTime: ""
+};
+
+export default {
+  name: "modify-template",
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  computed: {
+    isEdit() {
+      return !!this.instance.id;
+    },
+    title() {
+      return (this.isEdit ? "编辑" : "新增") + "定时任务";
+    }
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      isSubmit: false,
+      modalForm: {},
+      createTime: [],
+      pickerOptions,
+      rules: {
+        schoolId: [
+          {
+            required: true,
+            message: "请选择学校",
+            trigger: "change"
+          }
+        ],
+        semesterId: [
+          {
+            required: true,
+            message: "请选择学期",
+            trigger: "change"
+          }
+        ],
+        examId: [
+          {
+            required: true,
+            message: "请选择考试",
+            trigger: "change"
+          }
+        ],
+        startTime: [
+          {
+            required: true,
+            message: "请选择学校",
+            trigger: "change"
+          }
+        ]
+      }
+    };
+  },
+  methods: {
+    initData(val) {
+      if (val.id) {
+        this.modalForm = this.$objAssign(initModalForm, val);
+        this.createTime = [this.modalForm.startTime, this.modalForm.endTime];
+      } else {
+        this.modalForm = { ...initModalForm };
+        this.createTime = [];
+      }
+    },
+    visibleChange() {
+      this.initData(this.instance);
+
+      this.$nextTick(() => {
+        this.$refs.modalFormComp.clearValidate();
+      });
+    },
+    dateChange() {
+      if (this.createTime) {
+        this.modalForm.startTime = this.createTime[0];
+        this.modalForm.endTime = this.createTime[1];
+      } else {
+        this.modalForm.startTime = "";
+        this.modalForm.endTime = "";
+      }
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+    async submit() {
+      const valid = await this.$refs.modalFormComp.validate().catch(() => {});
+      if (!valid) return;
+
+      if (this.isSubmit) return;
+      this.isSubmit = true;
+      let datas = {
+        ...this.modalForm
+      };
+      const data = await updateTimeTask(datas).catch(() => {});
+      this.isSubmit = false;
+      if (!data) return;
+
+      this.$message.success("保存成功!");
+      this.$emit("modified");
+      this.cancel();
+    }
+  }
+};
+</script>

+ 0 - 268
src/modules/base/components/ModifyTemplate.vue

@@ -1,268 +0,0 @@
-<template>
-  <el-dialog
-    class="modify-template"
-    :visible.sync="modalIsShow"
-    :title="title"
-    top="10px"
-    width="600px"
-    :close-on-click-modal="false"
-    :close-on-press-escape="false"
-    append-to-body
-    @open="visibleChange"
-  >
-    <el-form
-      ref="modalFormComp"
-      label-position="top"
-      :rules="rules"
-      :model="modalForm"
-    >
-      <el-form-item prop="name" label="模板名称:">
-        <el-input
-          v-model.trim="modalForm.name"
-          placeholder="建议不超过30个字,规则名称不允许重复"
-          style="width: 100%"
-          clearable
-          :disabled="!editable"
-        ></el-input>
-      </el-form-item>
-      <el-form-item prop="remark" label="备注:">
-        <el-input
-          v-model="modalForm.remark"
-          type="textarea"
-          resize="none"
-          :rows="2"
-          :maxlength="50"
-          :disabled="!editable"
-          clearable
-          show-word-limit
-          placeholder="建议不超过50个字"
-        ></el-input>
-      </el-form-item>
-      <el-form-item
-        v-if="modalForm.type !== 'GENERIC'"
-        prop="classify"
-        label="分类:"
-      >
-        <el-select
-          v-model="modalForm.classify"
-          style="width: 100%;"
-          placeholder="请选择"
-          :disabled="!editable"
-          clearable
-        >
-          <el-option
-            v-for="(val, key) in categories"
-            :key="key"
-            :value="key"
-            :label="val"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item prop="attachmentId" label="上传模板文件:">
-        <upload-file-view
-          :upload-data="uploadData"
-          :upload-url="uploadUrl"
-          :disabled="!editable"
-          :format="format"
-          @valid-error="validError"
-          @upload-success="uploadSuccess"
-          ref="UploadFileView"
-        ></upload-file-view>
-      </el-form-item>
-      <el-form-item prop="orgIds" label="适用学院范围:">
-        <select-orgs
-          v-model="modalForm.orgIds"
-          ref="SelectOrgs"
-          :disabled="!editable"
-        ></select-orgs>
-      </el-form-item>
-    </el-form>
-
-    <div slot="footer">
-      <el-button
-        v-if="editable"
-        type="primary"
-        :disabled="isSubmit"
-        @click="submit"
-        >确认</el-button
-      >
-      <el-button @click="cancel">取消</el-button>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-import { updateTemplate } from "../api";
-import { attachmentDetail } from "../../login/api";
-import UploadFileView from "@/components/UploadFileView";
-import SelectOrgs from "./SelectOrgs";
-
-const initModalForm = {
-  id: null,
-  name: "",
-  type: "GENERIC",
-  remark: "",
-  classify: "",
-  attachmentId: "",
-  orgIds: []
-};
-
-const TEMPLATE_CLASSIFY = {
-  VARIABLE: { SIGN: "签到表", PACKAGE: "卷袋贴" },
-  ORDINARY: { CHECK_IN: "考试情况登记表" }
-};
-
-export default {
-  name: "modify-template",
-  components: { UploadFileView, SelectOrgs },
-  props: {
-    instance: {
-      type: Object,
-      default() {
-        return {};
-      }
-    },
-    editType: {
-      type: String,
-      default: "ADD",
-      validator: val => ["ADD", "PREVIEW", "EDIT"].includes(val)
-    }
-  },
-  computed: {
-    title() {
-      const names = {
-        ADD: "新增模板",
-        PREVIEW: "模板详情",
-        EDIT: "编辑模板"
-      };
-      return names[this.editType];
-    },
-    editable() {
-      return this.editType !== "PREVIEW";
-    },
-    categories() {
-      return TEMPLATE_CLASSIFY[this.modalForm.type] || {};
-    },
-    format() {
-      const formats = {
-        GENERIC: ["html"],
-        VARIABLE: ["ftl"],
-        ORDINARY: ["ftl", "html", "pdf"]
-      };
-      return formats[this.modalForm.type];
-    }
-  },
-  data() {
-    return {
-      modalIsShow: false,
-      isSubmit: false,
-      modalForm: {},
-      attachment: {},
-      rules: {
-        name: [
-          {
-            required: true,
-            message: "题卡规则名称不能超过30个字",
-            max: 30,
-            trigger: "change"
-          }
-        ],
-        classify: [
-          {
-            required: true,
-            message: "请选择分类",
-            trigger: "change"
-          }
-        ],
-        attachmentId: [
-          {
-            required: true,
-            message: "请上传模板文件",
-            trigger: "change"
-          }
-        ],
-        orgIds: [
-          {
-            required: true,
-            validator: (rule, value, callback) => {
-              if (value.length) {
-                callback();
-              } else {
-                callback(new Error("请选择适用学院"));
-              }
-            },
-            trigger: "change"
-          }
-        ]
-      },
-      // upload
-      uploadUrl: "/api/admin/common/file/upload",
-      uploadData: {
-        type: "UPLOAD"
-      }
-    };
-  },
-  methods: {
-    initData(val) {
-      this.modalForm = this.$objAssign(initModalForm, val);
-      if (val.id) {
-        this.modalForm.orgIds = val.orgs.map(item => item.id);
-        this.getAttachment();
-      } else {
-        this.modalForm.orgIds = [];
-        this.$nextTick(() => {
-          this.$refs.UploadFileView.setAttachmentName("");
-        });
-      }
-    },
-    async getAttachment() {
-      const data = await attachmentDetail(this.instance.attachmentId);
-      this.attachment = data;
-
-      this.$nextTick(() => {
-        this.$refs.UploadFileView.setAttachmentName(`${data.name}${data.type}`);
-      });
-    },
-    visibleChange() {
-      this.initData(this.instance);
-
-      this.$nextTick(() => {
-        this.$refs.modalFormComp.clearValidate();
-      });
-    },
-    cancel() {
-      this.modalIsShow = false;
-    },
-    open() {
-      this.modalIsShow = true;
-    },
-    async submit() {
-      const valid = await this.$refs.modalFormComp.validate().catch(() => {});
-      if (!valid) return;
-
-      if (this.isSubmit) return;
-      this.isSubmit = true;
-      let datas = {
-        ...this.modalForm
-      };
-      if (datas.type === "GENERIC") datas.classify = "CARD";
-      const data = await updateTemplate(datas).catch(() => {});
-      this.isSubmit = false;
-      if (!data) return;
-
-      this.$message.success("保存成功!");
-      this.$emit("modified");
-      this.cancel();
-    },
-    validError(errorData) {
-      this.$message.error(errorData.message);
-    },
-    uploadSuccess(data) {
-      this.$message.success("上传成功!");
-
-      this.modalForm.attachmentId = data.id;
-      this.$refs.modalFormComp.validateField("attachmentId");
-    }
-  }
-};
-</script>

+ 24 - 109
src/modules/base/components/ModifyUser.vue

@@ -14,15 +14,8 @@
       ref="modalFormComp"
       :model="modalForm"
       :rules="rules"
-      label-position="top"
+      label-width="70px"
     >
-      <el-form-item prop="loginName" label="用户名:">
-        <el-input
-          v-model.trim="modalForm.loginName"
-          placeholder="请输入用户名"
-          :disabled="isEdit"
-        ></el-input>
-      </el-form-item>
       <el-form-item prop="realName" label="姓名:">
         <el-input
           v-model.trim="modalForm.realName"
@@ -30,17 +23,17 @@
           clearable
         ></el-input>
       </el-form-item>
-      <el-form-item prop="code" label="工号:">
+      <el-form-item prop="mobileNumber" label="手机号:">
         <el-input
-          v-model.trim="modalForm.code"
-          placeholder="请输入号"
+          v-model.trim="modalForm.mobileNumber"
+          placeholder="请输入手机号"
           clearable
         ></el-input>
       </el-form-item>
-      <el-form-item prop="mobileNumber" label="手机号:">
+      <el-form-item prop="password" label="密码:">
         <el-input
-          v-model.trim="modalForm.mobileNumber"
-          placeholder="请输入手机号"
+          v-model.trim="modalForm.password"
+          placeholder="请输入密码"
           clearable
         ></el-input>
       </el-form-item>
@@ -60,14 +53,15 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item prop="orgId" label="所属学院:">
-        <select-orgs
-          ref="SelectOrgs"
-          v-model="modalForm.orgId"
-          :multiple="false"
-          check-strictly
-          @change="orgChange"
-        ></select-orgs>
+      <el-form-item label="状态:" prop="enable" required>
+        <el-radio-group v-model="modalForm.enable">
+          <el-radio
+            v-for="(val, key) in ABLE_TYPE"
+            :key="key"
+            :label="key * 1"
+            >{{ val }}</el-radio
+          >
+        </el-radio-group>
       </el-form-item>
     </el-form>
     <div slot="footer">
@@ -81,25 +75,21 @@
 
 <script>
 import { updateUser } from "../api";
-// import { logout } from "../../login/api";
-// import { phone } from "@/plugins/formRules";
-import SelectOrgs from "./SelectOrgs";
-import { SYS_ADMIN_NAME } from "@/constants/enumerate";
+import { password } from "@/plugins/formRules";
+import { ABLE_TYPE } from "@/constants/enumerate";
 
 const initModalForm = {
   id: "",
   loginName: "",
   realName: "",
-  code: "",
+  password: "",
   mobileNumber: "",
   roleIds: [],
-  courseIds: [],
-  orgId: []
+  enable: 1
 };
 
 export default {
   name: "modify-user",
-  components: { SelectOrgs },
   props: {
     instance: {
       type: Object,
@@ -130,18 +120,7 @@ export default {
         callback();
       }
     };
-    const orgIdValidator = (rule, value, callback) => {
-      if (!value || !value.length) {
-        callback(new Error("请选择所属学院"));
-      } else {
-        callback();
-      }
-    };
     const mobileNumberValidator = (rule, value, callback) => {
-      if (!value) {
-        return callback();
-      }
-
       if (/^1\d{10}$/.test(value)) {
         return callback();
       } else {
@@ -149,30 +128,16 @@ export default {
       }
     };
 
-    const IS_SUPER_ADMIN =
-      this.$ls.get("user", { loginName: "" }).loginName === SYS_ADMIN_NAME;
-
     return {
       modalIsShow: false,
       isSubmit: false,
       modalForm: {},
+      ABLE_TYPE,
       rules: {
         mobileNumber: [
-          {
-            required: false,
-            validator: mobileNumberValidator,
-            trigger: "change"
-          }
-        ],
-        loginName: [
           {
             required: true,
-            message: "请输入用户名",
-            trigger: "change"
-          },
-          {
-            max: 50,
-            message: "用户名不能超过50",
+            validator: mobileNumberValidator,
             trigger: "change"
           }
         ],
@@ -188,18 +153,6 @@ export default {
             trigger: "change"
           }
         ],
-        code: [
-          {
-            required: true,
-            message: "请输入工号",
-            trigger: "change"
-          },
-          {
-            max: 50,
-            message: "工号不能超过50",
-            trigger: "change"
-          }
-        ],
         roleIds: [
           {
             required: true,
@@ -207,18 +160,10 @@ export default {
             trigger: "change"
           }
         ],
-        orgId: [
-          {
-            required: true,
-            validator: orgIdValidator,
-            trigger: "change"
-          }
-        ]
+        password
       },
       user: {},
-      courses: [],
-      roleList: [],
-      IS_SUPER_ADMIN
+      roleList: []
     };
   },
   methods: {
@@ -226,7 +171,6 @@ export default {
       if (val.id) {
         this.modalForm = this.$objAssign(initModalForm, val);
         this.modalForm.roleIds = val.roles.map(item => item.id);
-        this.modalForm.orgId = [val.orgId];
       } else {
         this.modalForm = { ...initModalForm };
         this.$nextTick(() => {
@@ -243,11 +187,6 @@ export default {
     open() {
       this.modalIsShow = true;
     },
-    orgChange() {
-      this.$nextTick(() => {
-        this.$refs.modalFormComp.validateField("orgId");
-      });
-    },
     async submit() {
       const valid = await this.$refs.modalFormComp.validate().catch(() => {});
       if (!valid) return;
@@ -256,7 +195,6 @@ export default {
       this.isSubmit = true;
 
       const datas = { ...this.modalForm };
-      datas.orgId = datas.orgId.join();
       const data = await updateUser(datas).catch(() => {});
       this.isSubmit = false;
       if (!data) return;
@@ -264,29 +202,6 @@ export default {
       this.$message.success("修改成功!");
       this.cancel();
       this.$emit("modified");
-
-      // if (!this.isEdit) {
-      //   this.$emit("modified");
-      //   return;
-      // }
-
-      // // 自己把自己的角色改了之后要重新登录,重新获取权限
-      // const oldRoleIds = this.instance.roles
-      //   .map(item => item.id)
-      //   .sort((a, b) => a - b)
-      //   .join();
-      // const newRoleIds = datas.roleIds.sort((a, b) => a - b).join();
-      // if (
-      //   oldRoleIds !== newRoleIds &&
-      //   this.$ls.get("user").id === this.instance.id
-      // ) {
-      //   await logout();
-      //   this.$ls.clear();
-      //   this.$router.push({ name: "Login" });
-      //   this.$message.info("您的权限已经变更,请重新登录系统!");
-      // } else {
-      //   this.$emit("modified");
-      // }
     }
   }
 };

+ 17 - 11
src/modules/base/router.js

@@ -1,22 +1,28 @@
 // user
-import OrganizationManage from "./views/OrganizationManage.vue";
-import RoleManage from "./views/RoleManage.vue";
 import UserManage from "./views/UserManage.vue";
+import TimeTaskManage from "./views/TimeTaskManage.vue";
+import BusinessDataManage from "./views/BusinessDataManage.vue";
+import DownloadManage from "./views/DownloadManage.vue";
 
 export default [
   {
-    path: "/base/organization-manage",
-    name: "OrganizationManage",
-    component: OrganizationManage
+    path: "/base/user-manage",
+    name: "UserManage",
+    component: UserManage
   },
   {
-    path: "/base/role-manage",
-    name: "RoleManage",
-    component: RoleManage
+    path: "/base/time-task-manage",
+    name: "TimeTaskManage",
+    component: TimeTaskManage
   },
   {
-    path: "/base/user-manage",
-    name: "UserManage",
-    component: UserManage
+    path: "/base/business-data-manage",
+    name: "BusinessDataManage",
+    component: BusinessDataManage
+  },
+  {
+    path: "/base/download-manage",
+    name: "DownloadManage",
+    component: DownloadManage
   }
 ];

+ 0 - 219
src/modules/base/views/ApproveRecordManage.vue

@@ -1,219 +0,0 @@
-<template>
-  <div class="approve-record-manage">
-    <div class="part-box part-box-filter part-box-border">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="状态:">
-            <el-select
-              v-model="filter.status"
-              style="width: 120px;"
-              placeholder="请选择状态"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in AUDITING_STATUS"
-                :key="key"
-                :value="key"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="教研室:">
-            <teaching-room-select
-              v-model="filter.teachingRoomId"
-              placeholder="所属教研室"
-              clearable
-            ></teaching-room-select>
-          </el-form-item>
-          <el-form-item label="提交人:">
-            <el-input
-              style="width: 142px;"
-              v-model.trim="filter.teacherUserName"
-              placeholder="请输入提交人"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="提交时间:">
-            <el-date-picker
-              v-model="createTime"
-              type="datetimerange"
-              :picker-options="pickerOptions"
-              range-separator="至"
-              start-placeholder="提交开始时间"
-              end-placeholder="提交结束时间"
-              value-format="timestamp"
-              align="right"
-              unlink-panels
-            >
-            </el-date-picker>
-          </el-form-item>
-          <el-form-item label="当前处理人:">
-            <el-input
-              style="width: 142px;"
-              v-model.trim="filter.pendApproveUserName"
-              placeholder="请输入当前处理人"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </template>
-        <el-form-item label-width="0px">
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-    </div>
-
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column
-          prop="teacherUserName"
-          label="提交人"
-        ></el-table-column>
-        <el-table-column prop="createTime" label="提交时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="statusStr" label="流程状态"></el-table-column>
-        <el-table-column prop="setupStr" label="当前节点"></el-table-column>
-        <el-table-column prop="pendApproveUserName" label="当前处理人">
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="120px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'preview')"
-              class="btn-primary"
-              type="text"
-              @click="toPreview(scope.row)"
-              >查看</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <!-- ModifyTaskApply -->
-    <modify-task-apply
-      ref="ModifyTaskApply"
-      edit-type="PREVIEW"
-      :instance="curExamTask"
-    ></modify-task-apply>
-  </div>
-</template>
-
-<script>
-import { approveRecordListPage, deleteApproveRecord } from "../api";
-import { examTaskGetOne } from "../../exam/api";
-import { AUDITING_STATUS } from "@/constants/enumerate";
-import pickerOptions from "@/constants/datePickerOptions";
-import ModifyTaskApply from "../../exam/components/ModifyTaskApply";
-
-export default {
-  name: "approve-record-manage",
-  components: { ModifyTaskApply },
-  data() {
-    return {
-      filter: {
-        status: "",
-        teachingRoomId: "",
-        teacherUserName: "",
-        pendApproveUserName: "",
-        startTime: null,
-        endTime: null
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      dataList: [],
-      AUDITING_STATUS,
-      curExamTask: {},
-      // date-picker
-      createTime: [],
-      pickerOptions
-    };
-  },
-  mounted() {
-    this.toPage(1);
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      if (this.createTime) {
-        datas.startTime = this.createTime[0];
-        datas.endTime = this.createTime[1];
-      }
-      const data = await approveRecordListPage(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    async toPreview(row) {
-      const types = {
-        exam_task: this.previewExmaTask
-      };
-
-      const func = types[row.objectTable];
-      if (!func) {
-        this.$message.error("操作错误!");
-        return;
-      }
-      func(row);
-    },
-    async previewExmaTask(data) {
-      this.curExamTask = await examTaskGetOne(data.objectId);
-      this.$refs.ModifyTaskApply.open();
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除当前记录吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteApproveRecord({
-            id: row.id,
-            enable: 0
-          });
-          this.$message.success("操作成功!");
-          this.getList();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 1 - 8
src/modules/base/views/PrintPlanPushManage.vue → src/modules/base/views/BusinessDataManage.vue

@@ -141,12 +141,6 @@
       :ids="multipleSelection"
       @modified="mergePushed"
     ></merge-push-dialog>
-    <!-- ModifyPrintPlan -->
-    <modify-print-plan
-      ref="ModifyPrintPlan"
-      :instance="curPrintPlan"
-      edit-type="PREVIEW"
-    ></modify-print-plan>
   </div>
 </template>
 
@@ -158,11 +152,10 @@ import {
 } from "../api";
 import { examSemesterList } from "../../base/api";
 import MergePushDialog from "../components/MergePushDialog";
-import ModifyPrintPlan from "../../print/components/ModifyPrintPlan";
 
 export default {
   name: "print-plan-push-manage",
-  components: { MergePushDialog, ModifyPrintPlan },
+  components: { MergePushDialog },
   data() {
     return {
       filter: {

+ 0 - 103
src/modules/base/views/CampusManage.vue

@@ -1,103 +0,0 @@
-<template>
-  <div class="campus-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <div></div>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增校区</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="campusName" label="校区名称"></el-table-column>
-        <el-table-column prop="campusCode" label="校区编码"></el-table-column>
-        <el-table-column prop="printHouseName" label="印刷室"></el-table-column>
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="120px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-
-    <modify-campus
-      :instance="curRow"
-      @modified="getList"
-      ref="ModifyCampus"
-    ></modify-campus>
-  </div>
-</template>
-
-<script>
-import { campusQuery, deleteCampus } from "../api";
-import ModifyCampus from "../components/ModifyCampus";
-
-export default {
-  name: "campus-manage",
-  components: { ModifyCampus },
-  data() {
-    return {
-      dataList: [],
-      curRow: {}
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      this.dataList = await campusQuery();
-    },
-    toAdd() {
-      this.curRow = {};
-      this.$refs.ModifyCampus.open();
-    },
-    toEdit(row) {
-      this.curRow = row;
-      this.$refs.ModifyCampus.open();
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除校区【${row.campusName}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteCampus(row.id);
-          this.$message.success("删除成功!");
-          this.getList();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 268
src/modules/base/views/CardManage.vue

@@ -1,268 +0,0 @@
-<template>
-  <div class="card-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="题卡名称:">
-            <el-input
-              v-model.trim="filter.title"
-              placeholder="名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="创建方式:" label-width="90px">
-            <el-select
-              v-model="filter.createMethod"
-              style="width: 120px;"
-              placeholder="创建方式"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in CARD_CREATE_METHOD_TYPE"
-                :key="key"
-                :value="key"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="创建时间:">
-            <el-date-picker
-              v-model="createTime"
-              type="datetimerange"
-              :picker-options="pickerOptions"
-              range-separator="至"
-              start-placeholder="创建开始时间"
-              end-placeholder="创建结束时间"
-              value-format="timestamp"
-              align="right"
-              unlink-panels
-            >
-            </el-date-picker>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >添加题卡</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="cardList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="title" label="题卡名称"></el-table-column>
-        <el-table-column prop="type" label="类型">
-          <span slot-scope="scope">{{ scope.row.type | cardTypeFilter }}</span>
-        </el-table-column>
-        <el-table-column prop="orgNames" label="适用学院">
-          <template slot-scope="scope">
-            <more-text :data="scope.row.orgNames"></more-text>
-          </template>
-        </el-table-column>
-        <el-table-column prop="createMethod" label="创建方式">
-          <span slot-scope="scope">{{
-            scope.row.createMethod | cardCreateMethodTypeFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="status" label="状态">
-          <span
-            :class="{ 'color-danger': scope.row.status !== 'SUBMIT' }"
-            slot-scope="scope"
-            >{{ scope.row.status === "SUBMIT" ? "提交" : "暂存" }}</span
-          >
-        </el-table-column>
-        <el-table-column prop="remark" label="备注">
-          <span slot-scope="scope">{{
-            scope.row.remark | defaultFieldFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="createTime" label="创建时间" width="180">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="140">
-          <template slot-scope="scope">
-            <el-button
-              v-if="!checkPrivilege('link', 'preview')"
-              class="btn-primary"
-              type="text"
-              @click="toPreview(scope.row)"
-              >查看</el-button
-            >
-            <el-button
-              v-if="
-                checkPrivilege('link', 'edit') &&
-                  scope.row.createMethod !== 'UPLOAD'
-              "
-              class="btn-primary"
-              type="text"
-              @click="toEditCard(scope.row)"
-              >编辑题卡</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEditInfo(scope.row)"
-              >编辑信息</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <!-- ModifyCardInfo -->
-    <modify-card-info
-      ref="ModifyCardInfo"
-      :instance="curCard"
-      @new-card="toNewCard"
-      @modified="getList"
-    ></modify-card-info>
-    <!-- ModifyCard -->
-    <modify-card ref="ModifyCard" @modified="getList"></modify-card>
-  </div>
-</template>
-
-<script>
-import { CARD_CREATE_METHOD_TYPE } from "../../../constants/enumerate";
-import { cardListPage, deleteCard } from "../api";
-import ModifyCardInfo from "../components/ModifyCardInfo";
-import pickerOptions from "@/constants/datePickerOptions";
-import ModifyCard from "../../card/components/ModifyCard";
-
-export default {
-  name: "card-manage",
-  components: { ModifyCardInfo, ModifyCard },
-  data() {
-    return {
-      filter: {
-        title: "",
-        createMethod: "",
-        createStartTime: "",
-        createEndTime: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      CARD_CREATE_METHOD_TYPE,
-      cardList: [],
-      curCard: {},
-      // date-picker
-      createTime: [],
-      pickerOptions
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      if (this.createTime) {
-        datas.createStartTime = this.createTime[0];
-        datas.createEndTime = this.createTime[1];
-      }
-      const data = await cardListPage(datas);
-      this.cardList = data.records.map(item => {
-        item.orgNames = item.orgs.map(org => org.name);
-        return item;
-      });
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curCard = {};
-      this.$refs.ModifyCardInfo.open();
-    },
-    toPreview(row) {
-      window.open(
-        this.getRouterPath({
-          name: "CardPreview",
-          params: {
-            cardId: row.id,
-            viewType: "view"
-          }
-        })
-      );
-    },
-    toNewCard(data) {
-      this.$ls.set("prepareTcPCard", data);
-      this.$refs.ModifyCard.open();
-    },
-    toEditCard(row) {
-      this.curCard = row;
-      this.$ls.set("prepareTcPCard", {
-        id: row.id,
-        title: row.title,
-        type: row.type,
-        createMethod: row.createMethod,
-        remark: row.remark,
-        cardRuleId: row.cardRuleId,
-        attachmentId: row.attachmentId,
-        orgIds: row.orgs.map(item => item.id)
-      });
-      this.$refs.ModifyCard.open();
-    },
-    toEditInfo(row) {
-      this.curCard = row;
-      this.$refs.ModifyCardInfo.open();
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除题卡【${row.title}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteCard(row.id);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 292
src/modules/base/views/CardRuleManage.vue

@@ -1,292 +0,0 @@
-<template>
-  <div class="card-rule-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="规则名称:">
-            <el-input
-              style="width: 142px;"
-              v-model.trim="filter.name"
-              placeholder="规则名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="创建时间:">
-            <el-date-picker
-              v-model="createTime"
-              type="datetimerange"
-              :picker-options="pickerOptions"
-              range-separator="至"
-              start-placeholder="创建开始时间"
-              end-placeholder="创建结束时间"
-              value-format="timestamp"
-              align="right"
-              unlink-panels
-            >
-            </el-date-picker>
-          </el-form-item>
-          <el-form-item label="启用/禁用:" label-width="90px">
-            <el-select
-              v-model="filter.enable"
-              style="width: 120px;"
-              placeholder="启用/禁用"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in ABLE_TYPE"
-                :key="key"
-                :value="key * 1"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >添加</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="rules">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="name" label="题卡规则名称"></el-table-column>
-        <el-table-column prop="orgs" label="适用学院">
-          <template slot-scope="scope">
-            <more-text :data="scope.row.orgNames"></more-text>
-          </template>
-        </el-table-column>
-        <el-table-column prop="remark" label="备注">
-          <span slot-scope="scope">{{
-            scope.row.remark | defaultFieldFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="enable" label="启用/禁用" width="100">
-          <template slot-scope="scope">
-            {{ scope.row.enable | enableFilter }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="createTime" label="创建时间" width="180">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="140">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'preview')"
-              class="btn-primary"
-              type="text"
-              @click="toDetail(scope.row)"
-              >查看</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'enable')"
-              :class="scope.row.enable ? 'btn-danger' : 'btn-primary'"
-              type="text"
-              @click="toEnable(scope.row)"
-              >{{ scope.row.enable ? "禁用" : "启用" }}</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-    <!-- ModifyCardRule -->
-    <modify-card-rule
-      ref="ModifyCardRule"
-      :instance="curRule"
-      :edit-type="editType"
-      @modified="getList"
-    ></modify-card-rule>
-  </div>
-</template>
-
-<script>
-import { ABLE_TYPE } from "@/constants/enumerate";
-import { examRuleDetail, cardRuleListPage, ableCardRule } from "../api";
-import { getEnums } from "../../login/api";
-import pickerOptions from "@/constants/datePickerOptions";
-
-import ModifyCardRule from "../components/ModifyCardRule";
-
-export default {
-  name: "card-rule-manage",
-  components: {
-    ModifyCardRule
-  },
-  data() {
-    return {
-      filter: {
-        enable: null,
-        name: "",
-        createStartTime: null,
-        createEndTime: null
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      rules: [],
-      curRule: {},
-      editType: "ADD",
-      cardRequiredFields: [],
-      cardExtendFields: [],
-      ABLE_TYPE,
-      // date-picker
-      createTime: [],
-      pickerOptions
-    };
-  },
-  mounted() {
-    this.getList();
-    this.getExamRule();
-  },
-  methods: {
-    async getExamRule() {
-      if (!this.checkPrivilege("button", "add")) return;
-
-      const examRequiredFields = await getEnums("REQUIRED_FIELDS");
-      this.cardRequiredFields = await getEnums("CARD_REQUIRED_FIELDS");
-      const cardRequiredFieldCodes = this.cardRequiredFields.map(
-        item => item.code
-      );
-      const extendFields = examRequiredFields
-        .filter(field => !cardRequiredFieldCodes.includes(field.code))
-        .map(item => {
-          return {
-            code: item.code,
-            name: item.desc
-          };
-        });
-      let examRule = await examRuleDetail();
-      if (!examRule) {
-        this.$notify.error({
-          title: "错误",
-          message: "请先设置通用考务规则配置"
-        });
-        return;
-      }
-
-      this.cardExtendFields = [
-        ...extendFields,
-        ...JSON.parse(examRule.extendFields).filter(item => item.enable)
-      ];
-    },
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      if (this.createTime) {
-        datas.createStartTime = this.createTime[0];
-        datas.createEndTime = this.createTime[1];
-      }
-      if (datas.enable !== null && datas.enable !== "")
-        datas.enable = !!datas.enable;
-      const data = await cardRuleListPage(datas);
-      this.rules = data.records.map(item => {
-        item.orgNames = item.orgs.map(org => org.name);
-        return item;
-      });
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curRule = {
-        requiredFields: this.cardRequiredFields.map(item => {
-          return {
-            code: item.code,
-            name: item.desc,
-            enable: true
-          };
-        }),
-        extendFields: this.cardExtendFields.map(item => {
-          return {
-            code: item.code,
-            name: item.name,
-            enable: false
-          };
-        })
-      };
-      this.editType = "ADD";
-      this.$refs.ModifyCardRule.open();
-    },
-    toEdit(row) {
-      this.curRule = row;
-      this.editType = "EDIT";
-      this.$refs.ModifyCardRule.open();
-    },
-    toDetail(row) {
-      // this.curRule = row;
-      // this.editType = "PREVIEW";
-      // this.$refs.ModifyCardRule.open();
-      window.open(
-        this.getRouterPath({
-          name: "CardRulePreview",
-          params: {
-            cardRuleId: row.id
-          }
-        })
-      );
-    },
-    toEnable(row) {
-      const action = row.enable ? "禁用" : "启用";
-
-      this.$confirm(`确定要${action}题卡规则【${row.name}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          const enable = !row.enable;
-          await ableCardRule({
-            id: row.id,
-            enable
-          });
-          row.enable = enable;
-          this.$message.success("操作成功!");
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 188
src/modules/base/views/ClazzManage.vue

@@ -1,188 +0,0 @@
-<template>
-  <div class="clazz-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="班级名称:">
-            <el-input
-              style="width: 142px;"
-              v-model.trim="filter.queryParams"
-              placeholder="班级名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'delete')"
-          type="danger"
-          icon="el-icon-delete"
-          @click="toBatchDelete"
-          >批量删除</el-button
-        >
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增班级</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table
-        ref="TableList"
-        :data="dataList"
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column
-          type="selection"
-          width="55"
-          align="center"
-        ></el-table-column>
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="clazzName" label="班级名称"></el-table-column>
-        <el-table-column prop="campusName" label="所属校区"></el-table-column>
-        <el-table-column prop="majorName" label="所属专业"></el-table-column>
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="120px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <modify-clazz
-      :instance="curRow"
-      @modified="getList"
-      ref="ModifyClazz"
-    ></modify-clazz>
-  </div>
-</template>
-
-<script>
-import { clazzListQuery, deleteClazz } from "../api";
-import ModifyClazz from "../components/ModifyClazz";
-
-export default {
-  name: "clazz-manage",
-  components: { ModifyClazz },
-  data() {
-    return {
-      filter: {
-        queryParams: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      dataList: [],
-      multipleSelection: [],
-      curRow: {}
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      const data = await clazzListQuery(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.multipleSelection = [];
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curRow = {};
-      this.$refs.ModifyClazz.open();
-    },
-    toEdit(row) {
-      this.curRow = row;
-      this.$refs.ModifyClazz.open();
-    },
-    handleSelectionChange(val) {
-      this.multipleSelection = val.map(item => item.id);
-    },
-    toBatchDelete() {
-      if (!this.multipleSelection.length) {
-        this.$message.error("请选择要删除的数据");
-        return;
-      }
-
-      this.$confirm(`确定要删除选中的这些数据吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteClazz(this.multipleSelection);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem(this.multipleSelection.length);
-          this.multipleSelection = [];
-        })
-        .catch(() => {});
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除班级【${row.clazzName}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteClazz([row.id]);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 212
src/modules/base/views/ClazzSimpleManage.vue

@@ -1,212 +0,0 @@
-<template>
-  <div class="clazz-simple-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="课程:">
-            <el-select
-              v-model="filter.teachCourseId"
-              placeholder="课程"
-              filterable
-            >
-              <el-option
-                v-for="item in courses"
-                :key="item.id"
-                :value="item.id"
-                :label="item.name"
-              >
-                <span>{{ `${item.name}(${item.code})` }}</span>
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="班级名称:">
-            <el-input
-              v-model.trim="filter.teachClazzName"
-              placeholder="班级名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            :disabled="!filter.teachCourseId"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增班级</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column
-          prop="teachClazzName"
-          label="班级名称"
-        ></el-table-column>
-        <el-table-column
-          prop="teachStudentCount"
-          label="学生人数"
-        ></el-table-column>
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="170px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >重命名</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'Window')"
-              class="btn-primary"
-              type="text"
-              @click="toEditStudent(scope.row)"
-              >人员管理</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <!-- ModifyClazzSimple -->
-    <modify-clazz-simple
-      :instance="curRow"
-      :courses="courses"
-      @modified="getList"
-      ref="ModifyClazzSimple"
-    ></modify-clazz-simple>
-    <!-- ModifyClazzSimpleStudent -->
-    <modify-clazz-simple-student
-      ref="ModifyClazzSimpleStudent"
-      :clazz="curRow"
-      @modified="getList"
-    ></modify-clazz-simple-student>
-  </div>
-</template>
-
-<script>
-import {
-  clazzSimpleListPage,
-  clazzTeachCourseQuery,
-  deleteClazzSimple
-} from "../api";
-import ModifyClazzSimple from "../components/ModifyClazzSimple";
-import ModifyClazzSimpleStudent from "../components/ModifyClazzSimpleStudent";
-
-export default {
-  name: "clazz-simple-manage",
-  components: { ModifyClazzSimple, ModifyClazzSimpleStudent },
-  data() {
-    return {
-      filter: {
-        teachCourseId: "",
-        teachClazzName: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      courses: [],
-      dataList: [],
-      curRow: {}
-    };
-  },
-  mounted() {
-    this.initData();
-  },
-  methods: {
-    async initData() {
-      if (this.$route.params.teachCourseId) {
-        this.filter.teachCourseId = this.$route.params.teachCourseId;
-        this.getCourseSimple();
-        this.getList();
-      } else {
-        await this.getCourseSimple();
-        this.filter.teachCourseId = this.courses[0] && this.courses[0].id;
-        this.getList();
-      }
-    },
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      const data = await clazzSimpleListPage(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    async getCourseSimple() {
-      const data = await clazzTeachCourseQuery();
-      this.courses = data || [];
-    },
-    toAdd() {
-      this.curRow = { teachCourseId: this.filter.teachCourseId };
-      this.$refs.ModifyClazzSimple.open();
-    },
-    toEdit(row) {
-      this.curRow = row;
-      this.$refs.ModifyClazzSimple.open();
-    },
-    toEditStudent(row) {
-      this.curRow = row;
-      this.$refs.ModifyClazzSimpleStudent.open();
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除班级【${row.teachClazzName}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteClazzSimple([row.id]);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 17
src/modules/base/views/CommonCardTemplate.vue

@@ -1,17 +0,0 @@
-<template>
-  <template-manage
-    class="common-card-template"
-    template-type="GENERIC"
-  ></template-manage>
-</template>
-
-<script>
-import TemplateManage from "./TemplateManage";
-
-export default {
-  name: "common-card-template",
-  components: {
-    TemplateManage
-  }
-};
-</script>

+ 0 - 17
src/modules/base/views/CommonPrintTemplate.vue

@@ -1,17 +0,0 @@
-<template>
-  <template-manage
-    class="common-print-template"
-    template-type="ORDINARY"
-  ></template-manage>
-</template>
-
-<script>
-import TemplateManage from "./TemplateManage";
-
-export default {
-  name: "common-print-template",
-  components: {
-    TemplateManage
-  }
-};
-</script>

+ 0 - 43
src/modules/base/views/CommonRule.vue

@@ -1,43 +0,0 @@
-<template>
-  <div class="common-rule">
-    <div class="mb-4 tab-btns">
-      <el-button
-        v-for="item in menus"
-        :key="item.id"
-        size="medium"
-        :type="item.id == curMenu.id ? 'primary' : 'default'"
-        @click="selectMenu(item)"
-        >{{ item.name }}</el-button
-      >
-    </div>
-    <component
-      v-if="checkPrivilege('button', 'add')"
-      :is="curMenu.component"
-    ></component>
-  </div>
-</template>
-
-<script>
-import RuleExam from "../components/RuleExam";
-
-export default {
-  name: "common-rule",
-  components: {
-    RuleExam
-  },
-  data() {
-    return {
-      menus: [{ id: "1", name: "考务规则配置", component: "rule-exam" }],
-      curMenu: {}
-    };
-  },
-  created() {
-    this.curMenu = this.menus[0];
-  },
-  methods: {
-    selectMenu(item) {
-      this.curMenu = item;
-    }
-  }
-};
-</script>

+ 0 - 303
src/modules/base/views/CourseManage.vue

@@ -1,303 +0,0 @@
-<template>
-  <div class="course-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="教研室:">
-            <teaching-room-select
-              v-model="filter.belongOrgId"
-              placeholder="教研室"
-              clearable
-            ></teaching-room-select>
-          </el-form-item>
-          <el-form-item label="课程名称:">
-            <el-input
-              style="width: 142px;"
-              v-model.trim="filter.courseName"
-              placeholder="课程名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="启用/禁用:" label-width="90px">
-            <el-select
-              v-model="filter.enable"
-              style="width: 120px;"
-              placeholder="启用/禁用"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in ABLE_TYPE"
-                :key="key"
-                :value="key * 1"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="创建时间:">
-            <el-date-picker
-              v-model="createTime"
-              type="datetimerange"
-              :picker-options="pickerOptions"
-              range-separator="至"
-              start-placeholder="创建开始时间"
-              end-placeholder="创建结束时间"
-              value-format="timestamp"
-              align="right"
-              unlink-panels
-            >
-            </el-date-picker>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          type="danger"
-          :disabled="!filterHasQuery"
-          @click="toBatchDeable"
-          >批量禁用</el-button
-        >
-        <el-button
-          type="success"
-          icon="el-icon-download"
-          v-if="checkPrivilege('button', 'TempleteDownload')"
-          ><a :href="downloadUrl" :download="dfilename">模板下载</a></el-button
-        >
-        <upload-button
-          v-if="checkPrivilege('button', 'Import')"
-          btn-icon="el-icon-circle-plus-outline"
-          btn-content="批量导入"
-          btn-type="success"
-          :upload-url="uploadUrl"
-          :format="['xls', 'xlsx']"
-          accept=".xls,.xlsx"
-          @valid-error="validError"
-          @upload-success="uploadSuccess"
-        >
-        </upload-button>
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增课程</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="courses">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="courseName" label="课程名称"></el-table-column>
-        <el-table-column prop="courseCode" label="课程编码"></el-table-column>
-        <el-table-column
-          prop="teachingRoomName"
-          label="所属教研室"
-        ></el-table-column>
-        <el-table-column prop="clazzList" label="授课班级">
-          <span slot-scope="scope">
-            <more-text :data="scope.row.clazzNames" :show-count="3"></more-text>
-          </span>
-        </el-table-column>
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="enable" label="启用/禁用" width="100">
-          <template slot-scope="scope">
-            {{ scope.row.enable | enableFilter }}
-          </template>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="120px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'Enable')"
-              :class="scope.row.enable ? 'btn-danger' : 'btn-primary'"
-              type="text"
-              @click="toEnable(scope.row)"
-              >{{ scope.row.enable ? "禁用" : "启用" }}</el-button
-            >
-            <!-- <el-button
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            > -->
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <modify-course
-      :instance="curCourse"
-      @modified="getList"
-      ref="ModifyCourse"
-    ></modify-course>
-  </div>
-</template>
-
-<script>
-import {
-  courseListPage,
-  deleteCourse,
-  ableCourse,
-  batchEnableCourse
-} from "../api";
-import pickerOptions from "@/constants/datePickerOptions";
-import ModifyCourse from "../components/ModifyCourse";
-import UploadButton from "../../../components/UploadButton";
-import { ABLE_TYPE } from "@/constants/enumerate";
-
-export default {
-  name: "course-manage",
-  components: { ModifyCourse, UploadButton },
-  data() {
-    return {
-      filter: {
-        belongOrgId: "",
-        courseName: "",
-        startCreateTime: "",
-        endCreateTime: "",
-        enable: ""
-      },
-      queriedFilter: {},
-      ABLE_TYPE,
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      courses: [],
-      curCourse: {},
-      // import
-      uploadUrl: "/api/admin/basic/course/data_import",
-      downloadUrl: "/temps/courseTemplate.xlsx",
-      dfilename: "课程导入模板.xlsx",
-      // date-picker
-      createTime: [],
-      pickerOptions
-    };
-  },
-  computed: {
-    filterHasQuery() {
-      return !Object.keys(this.filter).some(
-        k => this.filter[k] !== this.queriedFilter[k]
-      );
-    }
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      if (this.createTime) {
-        datas.startCreateTime = this.createTime[0];
-        datas.endCreateTime = this.createTime[1];
-      }
-      if (datas.enable !== null && datas.enable !== "")
-        datas.enable = !!datas.enable;
-
-      const data = await courseListPage(datas);
-      this.courses = data.records.map(item => {
-        item.clazzNames = item.clazzList.map(org => org.name);
-        return item;
-      });
-      this.total = data.total;
-      this.queriedFilter = { ...this.filter };
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curCourse = {};
-      this.$refs.ModifyCourse.open();
-    },
-    toEdit(row) {
-      this.curCourse = row;
-      this.$refs.ModifyCourse.open();
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除课程【${row.courseName}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteCourse([row.id]);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    },
-    toEnable(row) {
-      const action = row.enable ? "禁用" : "启用";
-      this.$confirm(`确定要${action}课程【${row.courseName}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          const enable = !row.enable;
-          await ableCourse({
-            idList: [row.id],
-            enable
-          });
-          row.enable = enable;
-          this.$message.success("操作成功!");
-        })
-        .catch(() => {});
-    },
-    toBatchDeable() {
-      this.$confirm(`确定要禁用当前查询的所有课程吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await batchEnableCourse({ ...this.filter, enableOperate: false });
-          this.$message.success("操作成功!");
-          this.toPage(1);
-        })
-        .catch(() => {});
-    },
-    // import
-    validError(errorData) {
-      this.$message.error(errorData.message);
-    },
-    uploadSuccess() {
-      this.$message.success("文件上传成功,后台正在导入!");
-      this.getList();
-    }
-  }
-};
-</script>

+ 0 - 159
src/modules/base/views/CourseSimpleManage.vue

@@ -1,159 +0,0 @@
-<template>
-  <div class="course-simple-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="课程名称:">
-            <el-input
-              v-model.trim="filter.courseName"
-              placeholder="课程名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增课程</el-button
-        >
-      </div>
-    </div>
-
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="courses">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="courseName" label="课程名称"></el-table-column>
-        <el-table-column prop="courseCode" label="课程编码"></el-table-column>
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="160">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'Link')"
-              class="btn-primary"
-              type="text"
-              @click="toEditClazz(scope.row)"
-              >班级管理</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'Delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <!-- ModifyCourseSimple -->
-    <modify-course-simple
-      ref="ModifyCourseSimple"
-      :instance="curCourse"
-      @modified="getList"
-    ></modify-course-simple>
-  </div>
-</template>
-
-<script>
-import { courseSimpleListPage, deleteCourseSimple } from "../api";
-import ModifyCourseSimple from "../components/ModifyCourseSimple";
-
-export default {
-  name: "course-simple-manage",
-  components: { ModifyCourseSimple },
-  data() {
-    return {
-      filter: {
-        courseName: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      courses: [],
-      curCourse: {}
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-
-      const data = await courseSimpleListPage(datas);
-      this.courses = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curCourse = {};
-      this.$refs.ModifyCourseSimple.open();
-    },
-    toEdit(row) {
-      this.curCourse = row;
-      this.$refs.ModifyCourseSimple.open();
-    },
-    toEditClazz(row) {
-      this.$router.push({
-        name: "ClazzSimpleManage",
-        params: {
-          teachCourseId: row.id
-        }
-      });
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除课程【${row.courseName}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteCourseSimple([row.id]);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 0
src/modules/base/views/StudentManage.vue → src/modules/base/views/DownloadManage.vue


+ 0 - 229
src/modules/base/views/ExamManage.vue

@@ -1,229 +0,0 @@
-<template>
-  <div class="exam-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="学期:">
-            <semester-select
-              v-model="filter.semesterId"
-              placeholder="学期"
-              clearable
-            ></semester-select>
-          </el-form-item>
-          <el-form-item label="启用/禁用:" label-width="90px">
-            <el-select
-              v-model="filter.enable"
-              style="width: 120px;"
-              placeholder="启用/禁用"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in ABLE_TYPE"
-                :key="key"
-                :value="key * 1"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="exams">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="name" label="考试名称"></el-table-column>
-        <el-table-column prop="semesterName" label="学年学期"></el-table-column>
-        <el-table-column prop="category" label="考试类型">
-          <span slot-scope="scope">
-            {{ scope.row.category | examTypeFilter }}
-          </span>
-        </el-table-column>
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="enable" label="启用/禁用" width="100">
-          <template slot-scope="scope">
-            {{ scope.row.enable | enableFilter }}
-          </template>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="180px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="
-                checkPrivilege('link', 'Set') &&
-                  scope.row.category === 'OFFLINE'
-              "
-              class="btn-primary"
-              type="text"
-              @click="toEditConfig(scope.row)"
-              >设置</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'Enable')"
-              :class="scope.row.enable ? 'btn-danger' : 'btn-primary'"
-              type="text"
-              @click="toEnable(scope.row)"
-              >{{ scope.row.enable ? "禁用" : "启用" }}</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'Delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <!-- modify-exam -->
-    <modify-exam
-      ref="ModifyExam"
-      :instance="curExam"
-      @modified="examModified"
-    ></modify-exam>
-    <!-- modify-exam-config -->
-    <modify-exam-config
-      ref="ModifyExamConfig"
-      :exam="curExam"
-    ></modify-exam-config>
-  </div>
-</template>
-
-<script>
-import { examListQuery, deleteExam, ableExam } from "../api";
-import { ABLE_TYPE } from "@/constants/enumerate";
-import ModifyExam from "../components/ModifyExam";
-import ModifyExamConfig from "../components/ModifyExamConfig";
-
-export default {
-  name: "exam-manage",
-  components: { ModifyExam, ModifyExamConfig },
-  data() {
-    return {
-      filter: {
-        semesterId: "",
-        enable: ""
-      },
-      ABLE_TYPE,
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      exams: [],
-      curExam: {}
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      if (datas.enable !== null && datas.enable !== "")
-        datas.enable = !!datas.enable;
-
-      const data = await examListQuery(datas);
-      this.exams = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curExam = {};
-      this.$refs.ModifyExam.open();
-    },
-    toEdit(row) {
-      this.curExam = row;
-      this.$refs.ModifyExam.open();
-    },
-    examModified({ isEdit, exam }) {
-      if (!isEdit && exam.category === "OFFLINE") {
-        this.toEditConfig(exam);
-      }
-      this.getList();
-    },
-    toEditConfig(row) {
-      this.curExam = row;
-      this.$refs.ModifyExamConfig.open();
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除考试【${row.name}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteExam(row.id);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    },
-    toEnable(row) {
-      const action = row.enable ? "禁用" : "启用";
-      this.$confirm(`确定要${action}考试【${row.name}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          const enable = !row.enable;
-          await ableExam({
-            id: row.id,
-            enable
-          });
-          row.enable = enable;
-          this.$message.success("操作成功!");
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 175
src/modules/base/views/FlowManage.vue

@@ -1,175 +0,0 @@
-<template>
-  <div class="flow-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="名称:">
-            <el-input
-              style="width: 200px;"
-              v-model.trim="filter.name"
-              placeholder="请输入内容"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="!checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >添加流程</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="name" label="流程名称"></el-table-column>
-        <el-table-column prop="type" label="流程类型" width="160">
-          <span slot-scope="scope">{{ scope.row.type | flowTypeFilter }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="160">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEditDetail(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >重命名</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-    <!-- ModifyFlow -->
-    <modify-flow
-      ref="ModifyFlow"
-      :instance="curFlow"
-      @modified="flowModified"
-    ></modify-flow>
-    <!-- ModifyFlowDetail -->
-    <modify-flow-detail
-      ref="ModifyFlowDetail"
-      :instance="curFlow"
-      @modified="getList"
-    ></modify-flow-detail>
-  </div>
-</template>
-
-<script>
-import { flowListPage, flowDelete } from "../api";
-import ModifyFlow from "../components/ModifyFlow";
-import ModifyFlowDetail from "../components/ModifyFlowDetail";
-
-export default {
-  name: "flow-manage",
-  components: {
-    ModifyFlow,
-    ModifyFlowDetail
-  },
-  data() {
-    return {
-      filter: {
-        name: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      dataList: [],
-      curFlow: {}
-    };
-  },
-  mounted() {
-    this.toPage(1);
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      const data = await flowListPage(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curFlow = {};
-      this.$refs.ModifyFlow.open();
-    },
-    toEdit(row) {
-      this.curFlow = { ...row };
-      this.$refs.ModifyFlow.open();
-    },
-    toEditDetail(row) {
-      this.curFlow = { ...row };
-      this.$refs.ModifyFlowDetail.open();
-    },
-    flowModified({ isEdit, data }) {
-      if (!isEdit) {
-        this.curFlow = data;
-        this.$refs.ModifyFlowDetail.open();
-        return;
-      }
-      this.getList();
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除流程【${row.name}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await flowDelete({ id: row.id, enable: 0 });
-          this.$message.success("操作成功!");
-          this.getList();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 186
src/modules/base/views/MajorManage.vue

@@ -1,186 +0,0 @@
-<template>
-  <div class="major-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="90px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="专业名称:">
-            <el-input
-              v-model.trim="filter.majorName"
-              placeholder="专业名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'delete')"
-          type="danger"
-          icon="el-icon-delete"
-          @click="toBatchDelete"
-          >批量删除</el-button
-        >
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增专业</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table
-        ref="TableList"
-        :data="dataList"
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column
-          type="selection"
-          width="55"
-          align="center"
-        ></el-table-column>
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="majorName" label="专业名称"></el-table-column>
-        <el-table-column prop="collegeName" label="所属学院"></el-table-column>
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="120px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <modify-major
-      :instance="curRow"
-      @modified="getList"
-      ref="ModifyMajor"
-    ></modify-major>
-  </div>
-</template>
-
-<script>
-import { majorListQuery, deleteMajor } from "../api";
-import ModifyMajor from "../components/ModifyMajor";
-
-export default {
-  name: "major-manage",
-  components: { ModifyMajor },
-  data() {
-    return {
-      filter: {
-        majorName: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      dataList: [],
-      multipleSelection: [],
-      curRow: {}
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      const data = await majorListQuery(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.multipleSelection = [];
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curRow = {};
-      this.$refs.ModifyMajor.open();
-    },
-    toEdit(row) {
-      this.curRow = row;
-      this.$refs.ModifyMajor.open();
-    },
-    handleSelectionChange(val) {
-      this.multipleSelection = val.map(item => item.id);
-    },
-    toBatchDelete() {
-      if (!this.multipleSelection.length) {
-        this.$message.error("请选择要删除的数据");
-        return;
-      }
-
-      this.$confirm(`确定要删除选中的这些数据吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteMajor(this.multipleSelection);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem(this.multipleSelection.length);
-          this.multipleSelection = [];
-        })
-        .catch(() => {});
-    },
-    toDelete(row) {
-      this.$confirm(`确定要删除专业【${row.majorName}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteMajor([row.id]);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 0 - 189
src/modules/base/views/OrganizationManage.vue

@@ -1,189 +0,0 @@
-<template>
-  <div class="organization-manage">
-    <div class="part-box part-box-pad part-box-border">
-      <div class="org-tree-head">
-        <div>机构名称</div>
-        <div>操作</div>
-        <div>机构类型</div>
-      </div>
-      <el-tree
-        :data="orgs"
-        node-key="id"
-        default-expand-all
-        :expand-on-click-node="false"
-        :props="defaultProps"
-      >
-        <span class="custom-tree-node" slot-scope="{ node, data }">
-          <span>{{ node.label }}</span>
-          <div class="org-edit">
-            <div class="org-type">
-              {{ data.type | orgTypeFilter }}
-            </div>
-            <div class="org-actions" v-if="data.type === 'SCHOOL'">
-              <el-button
-                v-if="checkPrivilege('button', 'Add')"
-                class="btn-primary"
-                type="text"
-                @click="() => toAdd(data)"
-                >子部门</el-button
-              >
-            </div>
-            <div class="org-actions" v-else>
-              <el-button
-                v-if="
-                  data.type !== 'PRINTING_HOUSE' &&
-                    data.type !== 'TEACHING_ROOM' &&
-                    checkPrivilege('link', 'Add')
-                "
-                class="btn-primary"
-                type="text"
-                @click="() => append(data)"
-                >子部门</el-button
-              >
-              <el-button
-                v-if="checkPrivilege('link', 'Edit')"
-                class="btn-primary"
-                type="text"
-                @click="() => edit(node, data)"
-                >修改</el-button
-              >
-              <el-button
-                v-if="checkPrivilege('link', 'Delete')"
-                class="btn-danger"
-                type="text"
-                @click="() => remove(node, data)"
-                >删除</el-button
-              >
-            </div>
-          </div>
-        </span>
-      </el-tree>
-    </div>
-
-    <!-- ModifyOrganization -->
-    <modify-organization
-      ref="ModifyOrganization"
-      :instance="curOrg"
-      :org-types="orgTypes"
-      @confirm="getList"
-    ></modify-organization>
-  </div>
-</template>
-
-<script>
-import { organizationList, deleteOrganization } from "../api";
-import ModifyOrganization from "../components/ModifyOrganization";
-import { ORG_TYPE } from "@/constants/enumerate";
-
-export default {
-  name: "organization-manage",
-  components: { ModifyOrganization },
-  data() {
-    return {
-      orgs: [],
-      curOrg: {},
-      orgTypes: [],
-      orgTypeSerial: ["COLLEGE", "FACULTY", "TEACHING_ROOM"],
-      defaultProps: {
-        label: "name"
-      }
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "LIST")) return;
-      const orgs = await organizationList();
-      this.orgs = orgs || [];
-      if (this.orgs.length) {
-        this.orgs[0].children.sort((a, b) => {
-          if (a.type === "PRINTING_HOUSE") return 1;
-          if (b.type === "PRINTING_HOUSE") return -1;
-
-          return 0;
-        });
-      }
-    },
-    toAdd(data) {
-      this.orgTypes = [
-        { type: "COLLEGE", name: "学院" },
-        { type: "PRINTING_HOUSE", name: "印刷室" }
-      ];
-      this.curOrg = { parentId: data.id, parentName: data.name };
-      this.$refs.ModifyOrganization.open();
-    },
-    edit(node, data) {
-      if (data.type === "PRINTING_HOUSE" || data.type === "TEACHING_ROOM") {
-        this.orgTypes = [{ type: data.type, name: ORG_TYPE[data.type] }];
-      }
-
-      if (data.type === "COLLEGE") {
-        this.orgTypes = [{ type: "COLLEGE", name: "学院" }];
-        // if (node.childNodes.length) {
-        //   const childNodeTypes = node.childNodes.map(item => item.data.type);
-        //   if (!childNodeTypes.includes("FACULTY")) {
-        //     orgTypes.push({ type: "FACULTY", name: "院系" });
-        //   }
-        // } else {
-        //   this.orgTypes = this.orgTypeSerial.map(type => {
-        //     return {
-        //       type,
-        //       name: ORG_TYPE[type]
-        //     };
-        //   });
-        // }
-      }
-      if (data.type === "FACULTY") {
-        let orgTypes = [{ type: "FACULTY", name: "院系" }];
-        // if (!node.parent.data.type) {
-        //   orgTypes.unshift({ type: "COLLEGE", name: "学院" });
-        // }
-        if (!node.childNodes.length) {
-          orgTypes.push({ type: "TEACHING_ROOM", name: "教研室" });
-        }
-        this.orgTypes = orgTypes;
-      }
-      this.curOrg = {
-        ...data,
-        parentName: data.parentId
-          ? node.parent.data.name
-          : this.$ls.get("schoolName")
-      };
-      this.$refs.ModifyOrganization.open();
-    },
-    remove(node, data) {
-      this.$confirm(`确定要删除【${data.name}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          await deleteOrganization(data.id);
-
-          const parent = node.parent;
-          const children = parent.data.children || parent.data;
-          const index = children.findIndex(d => d.id === data.id);
-          children.splice(index, 1);
-
-          this.$message.success("删除成功!");
-        })
-        .catch(() => {});
-    },
-    append(data) {
-      if (data.type === "PRINTING_HOUSE" || data.type === "TEACHING_ROOM")
-        return;
-
-      const pos = this.orgTypeSerial.indexOf(data.type);
-      this.orgTypes = this.orgTypeSerial.slice(pos + 1).map(type => {
-        return {
-          type,
-          name: ORG_TYPE[type]
-        };
-      });
-
-      this.curOrg = { parentId: data.id, parentName: data.name };
-      this.$refs.ModifyOrganization.open();
-    }
-  }
-};
-</script>

+ 0 - 17
src/modules/base/views/ParamPrintTemplate.vue

@@ -1,17 +0,0 @@
-<template>
-  <template-manage
-    class="param-card-template"
-    template-type="VARIABLE"
-  ></template-manage>
-</template>
-
-<script>
-import TemplateManage from "./TemplateManage";
-
-export default {
-  name: "param-card-template",
-  components: {
-    TemplateManage
-  }
-};
-</script>

+ 0 - 216
src/modules/base/views/RoleManage.vue

@@ -1,216 +0,0 @@
-<template>
-  <div class="role-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="角色名称:">
-            <el-input
-              style="width: 200px;"
-              v-model.trim="filter.name"
-              placeholder="角色名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <!-- <el-form-item label="启用/禁用:" label-width="90px">
-          <el-select
-            v-model="filter.enable"
-            style="width: 120px;"
-            placeholder="请选择"
-            clearable
-          >
-            <el-option
-              v-for="(val, key) in ABLE_TYPE"
-              :key="key"
-              :value="key * 1"
-              :label="val"
-            ></el-option>
-          </el-select>
-        </el-form-item> -->
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >添加角色</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="roles">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="name" label="角色名称"></el-table-column>
-        <!-- <el-table-column prop="enable" label="启用/禁用">
-          <template slot-scope="scope">
-            {{ scope.row.enable | enableFilter }}
-          </template>
-        </el-table-column> -->
-        <el-table-column prop="createTime" label="创建时间">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="180px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @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"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-            <!-- <el-button
-              v-if="checkPrivilege('link', 'enable')"
-              :class="scope.row.enable ? 'btn-danger' : 'btn-primary'"
-              type="text"
-              @click="toEnable(scope.row)"
-              >{{ scope.row.enable ? "禁用" : "启用" }}</el-button
-            > -->
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-    <!-- ModifyRole -->
-    <modify-role
-      ref="ModifyRole"
-      :instance="curRole"
-      @modified="getList"
-    ></modify-role>
-    <!-- ModifyRoleUser -->
-    <modify-role-user ref="ModifyRoleUser" :role="curRole"></modify-role-user>
-  </div>
-</template>
-
-<script>
-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,
-    ModifyRoleUser
-  },
-  data() {
-    return {
-      filter: {
-        enable: null,
-        name: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      roles: [],
-      curRole: {},
-      ABLE_TYPE,
-      ROLE_TYPE: {}
-    };
-  },
-  mounted() {
-    this.toPage(1);
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      if (datas.enable !== null && datas.enable !== "")
-        datas.enable = !!datas.enable;
-      const data = await roleListPage(datas);
-      this.roles = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curRole = {};
-      this.$refs.ModifyRole.open();
-    },
-    toEdit(row) {
-      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"
-      })
-        .then(async () => {
-          await deleteRole(row.id);
-          this.$message.success("删除成功!");
-          this.deletePageLastItem();
-        })
-        .catch(() => {});
-    },
-    toEnable(row) {
-      const action = row.enable ? "禁用" : "启用";
-
-      this.$confirm(`确定要${action}角色【${row.name}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          const enable = !row.enable;
-          await ableRole({
-            id: row.id,
-            enable
-          });
-          row.enable = enable;
-          this.$message.success("操作成功!");
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

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

@@ -1,171 +0,0 @@
-<template>
-  <div class="semester-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <div>
-        <el-button
-          v-if="checkPrivilege('button', 'select')"
-          type="primary"
-          @click="toPage(1)"
-          >查询</el-button
-        >
-      </div>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >新增学期</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="semesterName" label="学期"></el-table-column>
-        <el-table-column prop="startTime" label="开始时间">
-          <span slot-scope="scope">{{
-            scope.row.startTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="endTime" label="结束时间">
-          <span slot-scope="scope">{{
-            scope.row.endTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="inUsed" label="当前学期">
-          <span
-            :class="{ 'color-success': scope.row.inUsed }"
-            slot-scope="scope"
-            >{{ scope.row.inUsed ? "是" : "否" }}</span
-          >
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="200px">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'edit') && !scope.row.inUsed"
-              class="btn-primary"
-              type="text"
-              @click="setUsed(scope.row)"
-              >设置为当前学期</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'delete')"
-              class="btn-danger"
-              type="text"
-              @click="toDelete(scope.row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-
-    <modify-semester
-      :instance="curRow"
-      @modified="getList"
-      ref="ModifySemester"
-    ></modify-semester>
-  </div>
-</template>
-
-<script>
-import { semesterListQuery, deleteSemester, semesterSetInUsed } from "../api";
-import ModifySemester from "../components/ModifySemester";
-
-export default {
-  name: "semester-manage",
-  components: { ModifySemester },
-  data() {
-    return {
-      filter: {},
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      dataList: [],
-      curRow: {}
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      const data = await semesterListQuery(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curRow = {};
-      this.$refs.ModifySemester.open();
-    },
-    toEdit(row) {
-      this.curRow = row;
-      this.$refs.ModifySemester.open();
-    },
-    async toDelete(row) {
-      const result = await this.$confirm(
-        `确定要删除学期【${row.semesterName}】吗?`,
-        "提示",
-        {
-          type: "warning"
-        }
-      ).catch(() => {});
-      if (result !== "confirm") return;
-
-      await deleteSemester(row.id);
-      this.$message.success("删除成功!");
-      this.deletePageLastItem();
-    },
-    async setUsed(row) {
-      const result = await this.$confirm(
-        `确定要将学期【${row.semesterName}】设置成当前学期吗?`,
-        "提示",
-        {
-          type: "warning"
-        }
-      ).catch(() => {});
-      if (result !== "confirm") return;
-
-      await semesterSetInUsed(row.id);
-
-      this.getList();
-      this.$message.success("设置成功!");
-    }
-  }
-};
-</script>

+ 0 - 185
src/modules/base/views/SmsManage.vue

@@ -1,185 +0,0 @@
-<template>
-  <div class="sync-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="同步类型:">
-            <el-select
-              v-model="filter.messageType"
-              placeholder="短信类型"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in SMS_TYPE"
-                :key="key"
-                :value="key"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="发送结果:">
-            <el-select
-              v-model="filter.sendStatus"
-              placeholder="发送结果"
-              clearable
-              style="width: 120px;"
-            >
-              <el-option
-                v-for="(val, key) in SEND_STATUS"
-                :key="key"
-                :value="key * 1"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="手机号:">
-            <el-input
-              v-model.trim="filter.mobileNumber"
-              placeholder="手机号模糊查询"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </template>
-        <el-form-item label-width="0px">
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-    </div>
-
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="dataList">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="businessOperate" label="短信类型">
-        </el-table-column>
-        <el-table-column prop="mobileNumber" label="手机号"> </el-table-column>
-        <el-table-column prop="userName" label="用户"> </el-table-column>
-        <el-table-column prop="templateCode" label="模板代号">
-        </el-table-column>
-        <el-table-column prop="paperNumber" label="试卷编号"> </el-table-column>
-        <el-table-column prop="courseCode" label="课程代码"> </el-table-column>
-        <el-table-column prop="sendStatus" label="结果" width="60">
-          <template slot-scope="scope">
-            <span v-if="scope.row.sendStatus === 'OK'">成功</span>
-            <el-popover
-              v-else
-              placement="top"
-              width="300"
-              trigger="hover"
-              :content="scope.row.sendResult"
-            >
-              <span class="color-danger" slot="reference">失败</span>
-            </el-popover>
-          </template>
-        </el-table-column>
-        <el-table-column prop="createTime" label="发送时间" width="160">
-          <span slot-scope="scope">
-            {{ scope.row.createTime | timestampFilter }}
-          </span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="100">
-          <template slot-scope="scope">
-            <el-button
-              v-if="
-                checkPrivilege('link', 'send') && scope.row.sendStatus !== 'OK'
-              "
-              type="text"
-              class="btn-primary"
-              :disabled="loading"
-              @click="toResend(scope.row)"
-              >重新发送</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { smsListQuery, smsTypes, resendSms } from "../api";
-
-export default {
-  name: "sync-manage",
-  data() {
-    return {
-      SEND_STATUS: {
-        0: "失败",
-        1: "成功"
-      },
-      filter: {
-        sendStatus: "",
-        messageType: "",
-        mobileNumber: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      dataList: [],
-      SMS_TYPE: {},
-      loading: false
-    };
-  },
-  created() {
-    this.getSmsTypes();
-    this.getList();
-  },
-  methods: {
-    async getSmsTypes() {
-      const data = await smsTypes();
-      let types = {};
-      data.forEach(item => {
-        types[item.name] = item.desc;
-      });
-      this.SMS_TYPE = types;
-    },
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      // data.sendStatus
-      const data = await smsListQuery(datas);
-      this.dataList = data.records;
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    async toResend(row) {
-      if (this.loading) return;
-
-      this.loading = true;
-      const res = await resendSms(row.id).catch(() => {});
-      this.loading = false;
-      if (!res) return;
-      this.$message.success("发送成功!");
-      this.getList();
-    }
-  }
-};
-</script>

+ 0 - 302
src/modules/base/views/TemplateManage.vue

@@ -1,302 +0,0 @@
-<template>
-  <div class="template-manage">
-    <div class="part-box part-box-filter part-box-flex">
-      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="模板名称:">
-            <el-input
-              v-model.trim="filter.name"
-              placeholder="模板名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="创建时间:">
-            <el-date-picker
-              v-model="createTime"
-              type="datetimerange"
-              :picker-options="pickerOptions"
-              range-separator="至"
-              start-placeholder="创建开始时间"
-              end-placeholder="创建结束时间"
-              value-format="timestamp"
-              align="right"
-              unlink-panels
-            >
-            </el-date-picker>
-          </el-form-item>
-          <el-form-item label="启用/禁用:" label-width="90px">
-            <el-select
-              v-model="filter.enable"
-              style="width: 120px;"
-              placeholder="启用/禁用"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in ABLE_TYPE"
-                :key="key"
-                :value="key * 1"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-        </template>
-        <el-form-item>
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
-        </el-form-item>
-      </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
-          type="primary"
-          icon="el-icon-circle-plus-outline"
-          @click="toAdd"
-          >添加模板</el-button
-        >
-      </div>
-    </div>
-    <div class="part-box part-box-pad">
-      <el-table ref="TableList" :data="templates">
-        <el-table-column
-          type="index"
-          label="序号"
-          width="70"
-          :index="indexMethod"
-        ></el-table-column>
-        <el-table-column prop="name" label="模板名称"></el-table-column>
-        <el-table-column
-          prop="classify"
-          label="分类"
-          v-if="templateType !== 'GENERIC'"
-        >
-          <template slot-scope="scope">
-            {{ scope.row.classify | templateClassifyFilter }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="orgs" label="适用学院">
-          <template slot-scope="scope">
-            <more-text :data="scope.row.orgNames"></more-text>
-          </template>
-        </el-table-column>
-        <el-table-column prop="remark" label="备注">
-          <span slot-scope="scope">{{
-            scope.row.remark | defaultFieldFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column prop="enable" label="启用/禁用" width="100">
-          <template slot-scope="scope">
-            {{ scope.row.enable | enableFilter }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="createTime" label="创建时间" width="180">
-          <span slot-scope="scope">{{
-            scope.row.createTime | timestampFilter
-          }}</span>
-        </el-table-column>
-        <el-table-column class-name="action-column" label="操作" width="160">
-          <template slot-scope="scope">
-            <el-button
-              v-if="checkPrivilege('link', 'preview')"
-              class="btn-primary"
-              type="text"
-              @click="toDetail(scope.row)"
-              >查看</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'enable')"
-              :class="scope.row.enable ? 'btn-danger' : 'btn-primary'"
-              type="text"
-              @click="toEnable(scope.row)"
-              >{{ scope.row.enable ? "禁用" : "启用" }}</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <div class="part-page">
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :current-page="current"
-          :total="total"
-          :page-size="size"
-          @current-change="toPage"
-        >
-        </el-pagination>
-      </div>
-    </div>
-    <!-- ModifyTemplate -->
-    <modify-template
-      ref="ModifyTemplate"
-      :instance="curTemplate"
-      :edit-type="editType"
-      :template-type="templateType"
-      @modified="getList"
-    ></modify-template>
-    <!-- template-detail -->
-    <el-dialog
-      :visible.sync="templateDetailDialogIsShow"
-      title="印品模板"
-      width="1200px"
-      top="10px"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      append-to-body
-    >
-      <div id="template-frame"></div>
-      <div slot="footer"></div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { ABLE_TYPE, TEMPLATE_TYPE } from "@/constants/enumerate";
-import pickerOptions from "@/constants/datePickerOptions";
-import { templateListPage, ableTemplate, templateContentView } from "../api";
-import ModifyTemplate from "../components/ModifyTemplate";
-
-export default {
-  name: "template-manage",
-  components: {
-    ModifyTemplate
-  },
-  props: {
-    templateType: {
-      type: String,
-      default: "GENERIC",
-      validator(val) {
-        return Object.keys(TEMPLATE_TYPE).indexOf(val) !== -1;
-      }
-    }
-  },
-  data() {
-    return {
-      filter: {
-        enable: null,
-        name: "",
-        startTime: "",
-        endTime: ""
-      },
-      current: 1,
-      size: this.GLOBAL.pageSize,
-      total: 0,
-      templates: [],
-      curTemplate: {},
-      editType: "ADD",
-      ABLE_TYPE,
-      templateDetailDialogIsShow: false,
-      // date-picker
-      createTime: [],
-      pickerOptions
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
-
-      const datas = {
-        ...this.filter,
-        type: this.templateType,
-        pageNumber: this.current,
-        pageSize: this.size
-      };
-      if (this.createTime) {
-        datas.startTime = this.createTime[0];
-        datas.endTime = this.createTime[1];
-      }
-      if (datas.enable !== null && datas.enable !== "")
-        datas.enable = !!datas.enable;
-      const data = await templateListPage(datas);
-      this.templates = data.records.map(item => {
-        item.orgNames = item.orgs.map(org => org.name);
-        return item;
-      });
-      this.total = data.total;
-    },
-    toPage(page) {
-      this.current = page;
-      this.getList();
-    },
-    toAdd() {
-      this.curTemplate = { type: this.templateType };
-      this.editType = "ADD";
-      this.$refs.ModifyTemplate.open();
-    },
-    toEdit(row) {
-      this.curTemplate = { ...row, type: this.templateType };
-      this.editType = "EDIT";
-      this.$refs.ModifyTemplate.open();
-    },
-    async toDetail(row) {
-      if (this.templateType === "GENERIC") {
-        window.open(
-          this.getRouterPath({
-            name: "CardPreview",
-            params: {
-              cardId: row.cardId,
-              viewType: "view"
-            }
-          })
-        );
-        return;
-      }
-      const content = await templateContentView(row.attachmentId);
-      if (!content) return;
-
-      this.templateDetailDialogIsShow = true;
-      this.$nextTick(() => {
-        this.initFrame(content);
-      });
-    },
-    initFrame(htmlContent) {
-      // 移除framemark标签
-      // htmlContent = htmlContent
-      //   .replace(/\$\{.+?\}/g, "")
-      //   .replace(/<#.+?>/g, "")
-      //   .replace(/<\/#.+?>/g, "");
-      const frameContainerDom = document.getElementById("template-frame");
-      frameContainerDom.innerHTML = "";
-      const iframeDom = document.createElement("iframe");
-      frameContainerDom.appendChild(iframeDom);
-      console.dir(frameContainerDom);
-      const wwidth = frameContainerDom.parentNode.clientWidth - 50;
-      const wheight = window.innerHeight - 130;
-      iframeDom.style.cssText = `width: ${wwidth}px;height: ${wheight}px;border:none;outline:none;background-color: #fff;`;
-      const iframeDoc = iframeDom.contentDocument;
-      iframeDoc.open();
-      iframeDoc.write(htmlContent);
-      iframeDoc.close();
-    },
-    toEnable(row) {
-      const action = row.enable ? "禁用" : "启用";
-
-      this.$confirm(`确定要${action}模板【${row.name}】吗?`, "提示", {
-        type: "warning"
-      })
-        .then(async () => {
-          const enable = !row.enable;
-          await ableTemplate({
-            id: row.id,
-            enable
-          });
-          row.enable = enable;
-          this.$message.success("操作成功!");
-        })
-        .catch(() => {});
-    }
-  }
-};
-</script>

+ 171 - 0
src/modules/base/views/TimeTaskManage.vue

@@ -0,0 +1,171 @@
+<template>
+  <div class="template-manage">
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
+        <el-form-item prop="schoolId" label="学校:">
+          <school-select v-model="filter.schoolId"></school-select>
+        </el-form-item>
+        <el-form-item prop="semesterId" label="学期:">
+          <semester-select
+            v-model="filter.semesterId"
+            :school-id="filter.schoolId"
+          ></semester-select>
+        </el-form-item>
+        <el-form-item prop="examId" label="考试:">
+          <exam-select
+            v-model="filter.examId"
+            :semester-id="filter.semesterId"
+          ></exam-select>
+        </el-form-item>
+        <el-form-item label="定时任务时间:">
+          <el-date-picker
+            v-model="createTime"
+            type="datetimerange"
+            :picker-options="pickerOptions"
+            range-separator="至"
+            start-placeholder="定时任务开始时间"
+            end-placeholder="定时任务结束时间"
+            value-format="timestamp"
+            align="right"
+            unlink-panels
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="toPage(1)">查询</el-button>
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action">
+        <el-button
+          type="primary"
+          icon="el-icon-circle-plus-outline"
+          @click="toAdd"
+          >新增</el-button
+        >
+      </div>
+    </div>
+    <div class="part-box part-box-pad">
+      <el-table ref="TableList" :data="dataList">
+        <el-table-column
+          type="index"
+          label="序号"
+          width="70"
+          :index="indexMethod"
+        ></el-table-column>
+        <el-table-column prop="name" label="学校"></el-table-column>
+        <el-table-column prop="name" label="学期"></el-table-column>
+        <el-table-column prop="name" label="考试类型"></el-table-column>
+        <el-table-column prop="createTime" label="定时任务开始时间" width="180">
+          <span slot-scope="scope">{{
+            scope.row.startTime | timestampFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="createTime" label="定时任务截止时间" width="180">
+          <span slot-scope="scope">{{
+            scope.row.endTime | timestampFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column prop="operateUser" label="操作人"> </el-table-column>
+        <el-table-column prop="operateTime" label="操作时间">
+          <span slot-scope="scope">{{
+            scope.row.operateTime | timestampFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column class-name="action-column" label="操作" width="160">
+          <template slot-scope="scope">
+            <el-button
+              class="btn-primary"
+              type="text"
+              @click="toEdit(scope.row)"
+              >修改</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="part-page">
+        <el-pagination
+          background
+          layout="total,prev, pager, next"
+          :current-page="current"
+          :total="total"
+          :page-size="size"
+          @current-change="toPage"
+        >
+        </el-pagination>
+      </div>
+    </div>
+
+    <modify-task
+      ref="ModifyTask"
+      :instance="curRow"
+      :modified="getList"
+    ></modify-task>
+  </div>
+</template>
+
+<script>
+import pickerOptions from "@/constants/datePickerOptions";
+import { timeTaskList } from "../api";
+import ModifyTask from "../components/ModifyTask";
+
+export default {
+  name: "template-manage",
+  components: {
+    ModifyTask
+  },
+  data() {
+    return {
+      filter: {
+        schoolId: null,
+        semesterId: null,
+        examId: "",
+        startTime: "",
+        endTime: ""
+      },
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      dataList: [],
+      curRow: {},
+      // date-picker
+      createTime: [],
+      pickerOptions
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    async getList() {
+      const datas = {
+        ...this.filter,
+        pageNumber: this.current,
+        pageSize: this.size
+      };
+      if (this.createTime) {
+        datas.startTime = this.createTime[0];
+        datas.endTime = this.createTime[1];
+      }
+
+      const data = await timeTaskList(datas);
+      this.dataList = data.records.map(item => {
+        item.orgNames = item.orgs.map(org => org.name);
+        return item;
+      });
+      this.total = data.total;
+    },
+    toPage(page) {
+      this.current = page;
+      this.getList();
+    },
+    toAdd() {
+      this.curRow = {};
+      this.$refs.ModifyTask.open();
+    },
+    toEdit(row) {
+      this.curRow = { ...row };
+      this.$refs.ModifyTask.open();
+    }
+  }
+};
+</script>

+ 59 - 144
src/modules/base/views/UserManage.vue

@@ -2,94 +2,44 @@
   <div class="user-manage">
     <div class="part-box part-box-filter part-box-flex">
       <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
-        <template v-if="checkPrivilege('condition', 'condition')">
-          <el-form-item label="用户名:" label-width="75px">
-            <el-input
-              style="width: 142px;"
-              v-model.trim="filter.loginName"
-              placeholder="用户名"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="姓名:" label-width="75px">
-            <el-input
-              style="width: 142px;"
-              v-model.trim="filter.realName"
-              placeholder="姓名"
-              clearable
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="角色:" label-width="55px">
-            <el-select
-              v-model="filter.roleId"
-              style="width: 142px;"
-              placeholder="角色"
-              filterable
-              clearable
-            >
-              <el-option
-                v-for="item in roles"
-                :key="item.id"
-                :value="item.id"
-                :label="item.name"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="启用/禁用:" label-width="90px">
-            <el-select
-              v-model="filter.enable"
-              style="width: 120px;"
-              placeholder="启用/禁用"
-              clearable
-            >
-              <el-option
-                v-for="(val, key) in ABLE_TYPE"
-                :key="key"
-                :value="key * 1"
-                :label="val"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-        </template>
+        <el-form-item label="用户名:" label-width="75px">
+          <el-input
+            style="width: 142px;"
+            v-model.trim="filter.loginName"
+            placeholder="用户名"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="姓名:" label-width="75px">
+          <el-input
+            style="width: 142px;"
+            v-model.trim="filter.realName"
+            placeholder="姓名"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="启用/禁用:" label-width="90px">
+          <el-select
+            v-model="filter.enable"
+            style="width: 120px;"
+            placeholder="启用/禁用"
+            clearable
+          >
+            <el-option
+              v-for="(val, key) in ABLE_TYPE"
+              :key="key"
+              :value="key * 1"
+              :label="val"
+            ></el-option>
+          </el-select>
+        </el-form-item>
 
         <el-form-item label-width="0px">
-          <el-button
-            v-if="checkPrivilege('button', 'select')"
-            type="primary"
-            @click="toPage(1)"
-            >查询</el-button
-          >
+          <el-button type="primary" @click="toPage(1)">查询</el-button>
         </el-form-item>
       </el-form>
       <div class="part-box-action">
         <el-button
-          v-if="checkPrivilege('button', 'SyncUser')"
-          type="primary"
-          icon="el-icon-refresh"
-          :loading="loading"
-          @click="syncUser"
-          >同步用户</el-button
-        >
-        <el-button
-          type="success"
-          icon="el-icon-download"
-          v-if="checkPrivilege('button', 'export')"
-          ><a :href="downloadUrl" :download="dfilename">模板下载</a></el-button
-        >
-        <upload-button
-          v-if="checkPrivilege('button', 'export')"
-          btn-icon="el-icon-circle-plus-outline"
-          btn-content="导入用户"
-          btn-type="success"
-          :upload-url="uploadUrl"
-          :format="['xls', 'xlsx']"
-          accept=".xls,.xlsx"
-          @valid-error="validError"
-          @upload-success="uploadSuccess"
-        >
-        </upload-button>
-        <el-button
-          v-if="checkPrivilege('button', 'add')"
           type="primary"
           icon="el-icon-circle-plus-outline"
           @click="toAdd"
@@ -106,47 +56,38 @@
           width="70"
           :index="indexMethod"
         ></el-table-column>
-        <el-table-column prop="loginName" label="用户名"></el-table-column>
+        <el-table-column prop="id" label="ID"></el-table-column>
+        <el-table-column prop="mobileNumber" label="手机号"></el-table-column>
         <el-table-column
           prop="realName"
           label="姓名"
           width="120"
         ></el-table-column>
-        <el-table-column prop="code" label="工号"></el-table-column>
-        <el-table-column
-          prop="mobileNumber"
-          label="手机号"
-          width="120"
-        ></el-table-column>
-        <el-table-column prop="orgName" label="所在机构"></el-table-column>
-        <el-table-column prop="roles" label="角色">
+        <el-table-column prop="enable" label="状态" width="100">
           <template slot-scope="scope">
-            {{ scope.row.roles | rolesFilter }}
+            {{ scope.row.enable | enableFilter }}
           </template>
         </el-table-column>
-        <el-table-column prop="enable" label="状态" width="100">
+        <el-table-column prop="enable" label="更新时间" width="100">
           <template slot-scope="scope">
-            {{ scope.row.enable | enableFilter }}
+            {{ scope.row.enable | timestampFilter }}
           </template>
         </el-table-column>
         <el-table-column class-name="action-column" label="操作" width="200px">
           <template slot-scope="scope">
             <el-button
-              v-if="checkPrivilege('link', 'edit')"
-              class="btn-primary"
-              type="text"
-              @click="toEdit(scope.row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-if="checkPrivilege('link', 'enable')"
               :class="scope.row.enable ? 'btn-danger' : 'btn-primary'"
               type="text"
               @click="toEnable(scope.row)"
               >{{ scope.row.enable ? "禁用" : "启用" }}</el-button
             >
             <el-button
-              v-if="checkPrivilege('link', 'reset')"
+              class="btn-primary"
+              type="text"
+              @click="toEdit(scope.row)"
+              >编辑</el-button
+            >
+            <el-button
               class="btn-danger"
               type="text"
               @click="toResetPwd(scope.row)"
@@ -181,25 +122,17 @@
 <script>
 import ModifyUser from "../components/ModifyUser";
 import { ABLE_TYPE } from "@/constants/enumerate";
-import {
-  userListPage,
-  ableUser,
-  resetPwd,
-  userRoleListPage,
-  syncUserToEcs
-} from "../api";
+import { userListPage, ableUser, resetPwd, userRoleListPage } from "../api";
 // import { logout } from "@/modules/login/api";
-import UploadButton from "../../../components/UploadButton";
 
 export default {
   name: "user-manage",
-  components: { ModifyUser, UploadButton },
+  components: { ModifyUser },
   data() {
     return {
       filter: {
         loginName: "",
         realName: "",
-        roleId: "",
         enable: ""
       },
       current: 1,
@@ -210,31 +143,20 @@ export default {
       roles: [],
       users: [],
       curUser: {},
-      loading: false,
-      // import
-      uploadUrl: "/api/admin/sys/user/import",
-      downloadUrl: "/temps/userTemplate.xlsx",
-      dfilename: "用户导入模板.xlsx"
+      loading: false
     };
   },
   mounted() {
-    this.getRoleList();
-    this.getList();
+    // this.getRoleList();
+    // this.getList();
   },
   methods: {
     async getRoleList() {
-      if (
-        !this.checkPrivilege("button", "add") &&
-        !this.checkPrivilege("link", "edit")
-      )
-        return;
-
       const data = await userRoleListPage();
       this.roles = data || [];
       this.roles = this.roles.filter(item => item.type !== "ADMIN");
     },
     async getList() {
-      if (!this.checkPrivilege("list", "list")) return;
       const datas = {
         ...this.filter,
         pageNumber: this.current,
@@ -282,6 +204,15 @@ export default {
       this.$refs.ModifyUser.open();
     },
     async toResetPwd(row) {
+      const result = await this.$confirm(
+        `确定要重置用户【${row.realName}】密码吗?`,
+        "提示",
+        {
+          type: "warning"
+        }
+      );
+      if (result !== "confirm") return;
+
       await resetPwd(row.id);
       this.$message.success("密码重置成功!");
 
@@ -289,29 +220,13 @@ export default {
       // const userId = this.$ls.get("user", { id: "" }).id;
       // if (row.id !== userId) return;
       // this.toLogout();
-    },
-    async syncUser() {
-      if (this.loading) return;
-      this.loading = true;
-      const res = await syncUserToEcs().catch(() => {});
-      this.loading = false;
-
-      if (!res) return;
-      this.$message.success("同步任务已经提交!");
-    },
+    }
     // async toLogout() {
     //   await logout();
     //   this.$ls.clear();
     //   this.$router.push({ name: "Login" });
     //   this.$message.info("您的密码已经变更,请重新登录系统!");
     // },
-    // import
-    validError(errorData) {
-      this.$message.error(errorData.message);
-    },
-    uploadSuccess() {
-      this.getList();
-    }
   }
 };
 </script>

+ 3 - 0
src/modules/login/api.js

@@ -6,6 +6,9 @@ export const login = datas => {
 export const getSmsCode = datas => {
   return $post("/api/admin/common/get_verify_code", datas);
 };
+export const getSmsCodeForBind = datas => {
+  return $post("/api/admin/common/get_verify_code", datas);
+};
 export const modifyPwd = datas => {
   return $post("/api/admin/common/get_system_time", datas);
 };

+ 7 - 1
src/plugins/globalVuePlugins.js

@@ -4,10 +4,16 @@ import commonMixins from "../mixins/common";
 // components
 import ViewFooter from "@/components/ViewFooter.vue";
 import MoreText from "@/components/MoreText.vue";
+import SchoolSelect from "@/components/base/SchoolSelect.vue";
+import SemesterSelect from "@/components/base/SemesterSelect.vue";
+import ExamSelect from "@/components/base/ExamSelect.vue";
 
 const components = {
   ViewFooter,
-  MoreText
+  MoreText,
+  SchoolSelect,
+  SemesterSelect,
+  ExamSelect
 };
 
 export default {

+ 14 - 14
src/router.js

@@ -55,21 +55,21 @@ let router = new Router({
 });
 
 // route interceptor
-router.beforeEach((to, from, next) => {
-  const token = Vue.ls.get("token");
-  if (to.meta.noRequire) {
-    next();
-    return;
-  }
+// router.beforeEach((to, from, next) => {
+//   const token = Vue.ls.get("token");
+//   if (to.meta.noRequire) {
+//     next();
+//     return;
+//   }
 
-  if (!token) {
-    // 登录失效的处理
-    Vue.ls.clear();
-    next({ name: "Login" });
-    return;
-  }
+//   if (!token) {
+//     // 登录失效的处理
+//     Vue.ls.clear();
+//     next({ name: "Login" });
+//     return;
+//   }
 
-  next();
-});
+//   next();
+// });
 
 export default router;

+ 1 - 1
src/store.js

@@ -5,7 +5,7 @@ Vue.use(Vuex);
 
 export default new Vuex.Store({
   state: {
-    user: {},
+    user: {}
   },
   mutations: {
     setUser(state, user) {

+ 7 - 135
src/views/Home.vue

@@ -1,35 +1,8 @@
 <template>
   <div class="home">
     <div class="home-header">
-      <div class="head-menu menu-list">
-        <ul>
-          <li
-            v-for="(menu, index) in menus"
-            :key="index"
-            :class="[
-              'menu-item',
-              { 'menu-item-act': curMenu.url === menu.url }
-            ]"
-            @click="toMenu(menu)"
-          >
-            <i
-              :class="[
-                'icon',
-                MENU_ICONS[menu.url]
-                  ? `icon-${MENU_ICONS[menu.url]}`
-                  : 'icon-workspace'
-              ]"
-            ></i>
-            <span>{{ menu.name }}</span>
-          </li>
-        </ul>
-      </div>
       <div class="head-user menu-list">
         <ul>
-          <li v-if="schoolName" @click="toSelectSchool" title="切换学校">
-            <i class="el-icon-s-home"></i>
-            <span>{{ schoolName }}</span>
-          </li>
           <li class="menu-item menu-item-account" @click="toResetPwd">
             <i class="icon icon-account"></i>
             <span :title="username">{{ username }}</span>
@@ -44,8 +17,8 @@
     <div class="home-navs">
       <div class="head-logo">
         <div class="head-logo-content">
-          <img v-if="schoolLogo" :src="schoolLogo" alt="知学知考" />
-          <h1 v-else>知学知考</h1>
+          <img v-if="schoolLogo" :src="schoolLogo" alt="教务数据对接系统" />
+          <h1 v-else>教务数据对接系统</h1>
         </div>
       </div>
 
@@ -55,8 +28,6 @@
         active-text-color="#3a5ae5"
         text-color="#434656"
         router
-        :default-active="curRouteName"
-        :default-openeds="curSubMenuNames"
       >
         <template v-for="submenu in curMenu.children">
           <el-submenu
@@ -72,11 +43,6 @@
               :route="{ name: nav.url }"
             >
               <span>{{ nav.name }}</span>
-              <span
-                class="nav-item-info"
-                v-if="nav.url === 'WaitTask' && waitTaskCount"
-                >{{ waitTaskCount }}</span
-              >
             </el-menu-item>
           </el-submenu>
           <el-menu-item
@@ -122,18 +88,11 @@
 </template>
 
 <script>
-import { mapState, mapActions } from "vuex";
 import localMenus from "@/constants/menus-data";
-import { sysMenu, logout } from "../modules/login/api";
+import { logout } from "../modules/login/api";
 import ResetPwd from "../modules/base/components/ResetPwd";
 import { SYS_ADMIN_NAME } from "@/constants/enumerate";
-
-const MENU_ICONS = {
-  base: "base",
-  exam: "exam",
-  customer: "customer",
-  stmms: "book"
-};
+import { deepCopy } from "../plugins/utils";
 
 export default {
   name: "home",
@@ -143,23 +102,16 @@ export default {
     const IS_SUPER_ADMIN = user.loginName === SYS_ADMIN_NAME;
 
     return {
-      MENU_ICONS,
       privileges: [],
       menus: [],
       curMenu: { url: "", children: [] },
       curRouteName: "",
       curSubMenuNames: [],
       breadcrumbs: [],
-      validRoutes: [],
       username: user.realName,
       userRoles: user.roleList,
+      userInfo: {},
       schoolLogo: this.$ls.get("schoolLogo"),
-      schoolName: this.$ls.get("schoolName"),
-      userInfo: {
-        pwdCount: 0,
-        mobileNumber: 1,
-        userId: user.id
-      },
       IS_SUPER_ADMIN
     };
   },
@@ -169,50 +121,13 @@ export default {
       this.routerChange();
     }
   },
-  computed: {
-    ...mapState("exam", ["waitTaskCount"])
-  },
   created() {
     this.initData();
   },
   methods: {
-    ...mapActions("exam", ["updateWaitTaskCount"]),
-    initData1() {
-      // 开发阶段专用
-      this.initPrivilegeMap(localMenus);
-      this.privileges = this.transformMenu(localMenus);
-      this.menus = this.getMenu();
-
-      if (this.$route.name === "Home") {
-        this.toMenu(this.menus[0]);
-        return;
-      }
-
-      if (!this.validRoutes.includes(this.$route.name)) {
-        this.$router.replace({
-          name: "404"
-        });
-        return;
-      }
-
-      this.updateBreadcrumbs();
-      const curMenu = this.menus.find(
-        menu => menu.url === this.breadcrumbs[0].url
-      );
-      this.menuChange(curMenu);
-      if (
-        this.validRoutes.includes("WaitTask") &&
-        this.curMenu.url === "exam"
-      ) {
-        this.updateWaitTaskCount();
-      }
-    },
-    async initData() {
-      const data = await sysMenu();
-      this.initPrivilegeMap(data.privileges);
-      this.privileges = this.transformMenu(data.privileges);
+    initData() {
+      this.privileges = deepCopy(localMenus);
       this.menus = this.getMenu();
-
       if (this.$route.name === "Home") {
         this.toMenu(this.menus[0]);
         return;
@@ -230,13 +145,6 @@ export default {
         menu => menu.url === this.breadcrumbs[0].url
       );
       this.menuChange(curMenu);
-
-      if (
-        this.validRoutes.includes("WaitTask") &&
-        this.curMenu.url === "exam"
-      ) {
-        this.updateWaitTaskCount();
-      }
     },
     transformMenu(list) {
       return list.map(item => {
@@ -287,34 +195,8 @@ export default {
 
       return firstRouteName;
     },
-    initPrivilegeMap(data) {
-      let privilegeMap = {};
-      const pageSetTypes = ["conditions", "buttons", "lists", "links"];
-      data.forEach(item => {
-        const isPage = pageSetTypes.some(
-          type => item[type] && item[type].length
-        );
-        if (!isPage) return;
-        privilegeMap[item.url] = [];
-        pageSetTypes.forEach((type, index) => {
-          if (item[type] && item[type].length) {
-            item[type].forEach(elem => {
-              privilegeMap[item.url].push(
-                `${elem.type}_${elem.url}`.toLowerCase()
-              );
-            });
-          }
-        });
-      });
-      this.$store.commit("setPrivilegeMap", privilegeMap);
-      this.$ls.set("privilegeMap", privilegeMap);
-    },
     menuChange(menu) {
       this.curMenu = menu;
-
-      this.curSubMenuNames = this.privileges
-        .filter(item => item.parentId === menu.id)
-        .map(item => item.url);
     },
     toMenu(menu) {
       if (this.curMenu.url === menu.url) return;
@@ -343,13 +225,6 @@ export default {
     },
     routerChange() {
       this.updateBreadcrumbs();
-
-      if (
-        this.validRoutes.includes("WaitTask") &&
-        this.curMenu.url === "exam"
-      ) {
-        this.updateWaitTaskCount();
-      }
     },
     toLogout() {
       this.$confirm("确定要退出登录吗?", "提示", {
@@ -365,9 +240,6 @@ export default {
       this.$ls.clear();
       this.$router.push({ name: "Login" });
     },
-    toSelectSchool() {
-      if (this.IS_SUPER_ADMIN) this.$router.push({ name: "SelectSchool" });
-    },
     toResetPwd() {
       if (this.IS_SUPER_ADMIN) return;
       this.$refs.ResetPwd.open();