zhangjie 5 anos atrás
pai
commit
dbc74c3123

+ 23 - 0
src/api.js

@@ -7,6 +7,9 @@ export const login = datas => {
 export const modifyPwd = datas => {
   return $post("/backend/sysuser/resetPwd", datas);
 };
+export const resetPwd = datas => {
+  return $post("/backend/sysuser/resetPwd", datas);
+};
 
 // work-manage
 export const workList = () => {
@@ -94,6 +97,10 @@ export const subjectList = datas => {
   // return $get("/api/admin/subjects", datas);
   return Promise.resolve(datas);
 };
+export const subjectDetail = subjectId => {
+  // return $get("/api/admin/subjects", datas);
+  return Promise.resolve({ id: subjectId, name: "素描" });
+};
 export const uploadSubject = datas => {
   if (datas.id) {
     return $put(`/api/admin/subject/${datas.id}`, datas);
@@ -156,3 +163,19 @@ export const studentScoreList = datas => {
   return Promise.resolve(datas);
   // return $get(`/api/admin/works/${workId}`, {});
 };
+
+// grading -------------------------->
+// grading-user-manage
+export const gradingUserList = datas => {
+  return $get("/api/", datas);
+};
+export const uploadGradingUser = datas => {
+  if (datas.id) {
+    return $put(`/api/admin/subject/${datas.id}`, datas);
+  } else {
+    return $post("/api/admin/subject", datas);
+  }
+};
+export const deleteGradingUser = userId => {
+  return $del("/api/", { userId });
+};

+ 1 - 0
src/assets/styles/home.less

@@ -65,6 +65,7 @@
   background: @pink;
   font-size: 20px;
   text-align: center;
+  cursor: pointer;
 }
 
 .head-info {

+ 1 - 4
src/components/homeMenuMixins.js

@@ -5,10 +5,7 @@ export default {
 
       this.curNav = item;
       this.$router.push({
-        name: item.name,
-        params: {
-          workId: this.$route.params.workId
-        }
+        name: item.name
       });
     },
     actCurNav(router) {

+ 1 - 1
src/modules/client-set/ClientAccountSet.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="client-account-set ">
+  <div class="client-account-set">
     <div class="part-box-top">
       <Button type="success" icon="md-add" @click="toEdit({})">新增</Button>
     </div>

+ 63 - 95
src/modules/client-set/ClientParamSet.vue

@@ -4,29 +4,64 @@
       <Col span="12">
         <div class="part-box">
           <h2 class="client-param-title">科目名称设置</h2>
-          <Button type="success" icon="md-add" @click="toAdd">新增</Button>
-          <Table
-            ref="TableList"
-            :columns="columes"
-            :data="subjects"
-            border
-          ></Table></div
-      ></Col>
+          <div class="part-box-top">
+            <Button type="success" icon="md-add" @click="toAdd">新增</Button>
+          </div>
+
+          <table class="table">
+            <tr>
+              <th>序号</th>
+              <th>科目名称</th>
+              <th>科目代码</th>
+              <th>操作</th>
+            </tr>
+            <tr v-for="(subject, index) in subjects" :key="index">
+              <td>{{ index + 1 }}</td>
+              <td>
+                <Input v-model="subject.subjectName" clearable></Input>
+              </td>
+              <td>
+                <Input v-model="subject.subjectCode" clearable></Input>
+              </td>
+              <td>
+                <Button size="small" type="primary" @click="toSave(subject)"
+                  >保存</Button
+                >
+                <Button size="small" type="error" @click="toDelete(index)"
+                  >删除</Button
+                >
+              </td>
+            </tr>
+          </table>
+        </div>
+      </Col>
       <Col span="12">
         <div class=" part-box">
           <h2 class="client-param-title">其他设置</h2>
-          <Form ref="modalFormComp" :model="modalForm" :label-width="100">
-            <FormItem prop="name">
-              <Checkbox v-model="modalForm.isScanPackage"
-                >是否整包扫描</Checkbox
-              >
+          <Form ref="modalFormComp" :model="modalForm" :label-width="120">
+            <FormItem label="是否整包扫描:">
+              <RadioGroup v-model="modalForm.isScanPackage">
+                <Radio
+                  v-for="(val, key) in BOOLEAN_TYPE"
+                  :key="key"
+                  :label="key"
+                  style="margin-right: 50px;"
+                  >{{ val }}</Radio
+                >
+              </RadioGroup>
             </FormItem>
-            <FormItem prop="name">
-              <Checkbox v-model="modalForm.isImageEncryption"
-                >图片是否加密</Checkbox
-              >
+            <FormItem label="图片是否加密:">
+              <RadioGroup v-model="modalForm.isImageEncryption">
+                <Radio
+                  v-for="(val, key) in BOOLEAN_TYPE"
+                  :key="key"
+                  :label="key"
+                  style="margin-right: 50px;"
+                  >{{ val }}</Radio
+                >
+              </RadioGroup>
             </FormItem>
-            <FormItem prop="imageNameRule" label="图片命名规则">
+            <FormItem prop="imageNameRule" label="图片命名规则">
               <Select
                 v-model="modalForm.imageNameRule"
                 placeholder="请选择图片命名规则"
@@ -34,7 +69,7 @@
                 <Option value=""></Option>
               </Select>
             </FormItem>
-            <FormItem prop="paperGrading" label="试卷档位">
+            <FormItem prop="paperGrading" label="试卷档位">
               <Select
                 v-model="modalForm.imageNameRule"
                 placeholder="请选择试卷档位"
@@ -54,6 +89,7 @@
 
 <script>
 import { subjectList, uploadSubject, deleteSubject } from "@/api";
+import { BOOLEAN_TYPE } from "@/constants/enumerate";
 
 const initSubject = {
   id: "",
@@ -66,83 +102,12 @@ export default {
   name: "client-param-set",
   data() {
     return {
+      BOOLEAN_TYPE,
       subjects: [],
-      columes: [
-        {
-          type: "index",
-          title: "序号",
-          width: 60,
-          align: "center"
-        },
-        {
-          title: "科目名称",
-          key: "subjectName",
-          render: (h, param) => {
-            return h("Input", {
-              props: {
-                value: param.row.subjectName,
-                clearable: true
-              },
-              style: {
-                width: "120px"
-              },
-              on: {
-                input: function(value) {
-                  param.row.subjectName = value;
-                }
-              }
-            });
-          }
-        },
-        {
-          title: "科目代码",
-          key: "subjectCode",
-          render: (h, param) => {
-            return h("Input", {
-              props: {
-                value: param.row.subjectCode,
-                clearable: true
-              },
-              style: {
-                width: "120px"
-              },
-              on: {
-                input: function(value) {
-                  param.row.subjectCode = value;
-                }
-              }
-            });
-          }
-        },
-        {
-          title: "操作",
-          key: "action",
-          width: 120,
-          align: "center",
-          render: (h, param) => {
-            let actions = [
-              {
-                name: "保存",
-                action: () => {
-                  this.toSave(param.row);
-                }
-              },
-              {
-                name: "删除",
-                type: "error",
-                action: () => {
-                  this.toDelete(param.row);
-                }
-              }
-            ];
-            return h("div", this.$tableAction(h, actions));
-          }
-        }
-      ],
       // other param
       modalForm: {
-        isScanPackage: false,
-        isImageEncryption: false,
+        isScanPackage: "0",
+        isImageEncryption: "1",
         imageNameRule: "",
         paperGrading: ""
       }
@@ -180,9 +145,12 @@ export default {
       this.$Message.success("保存成功!");
       this.getList();
     },
-    toDelete(row) {
+    toDelete(index) {
+      console.log(index);
+
+      const row = this.subjects[index];
       if (!row.id) {
-        // TODO:
+        this.subjects.splice(index, 1);
         return;
       }
       this.$Modal.confirm({

+ 37 - 66
src/modules/client-set/InspectionAccountSet.vue

@@ -4,7 +4,36 @@
       <Button type="success" icon="md-add" @click="toAdd">新增</Button>
     </div>
     <div class="part-box">
-      <Table ref="TableList" :columns="columes" :data="users" border></Table>
+      <table class="table">
+        <tr>
+          <th>序号</th>
+          <th>角色</th>
+          <th>账号</th>
+          <th>操作</th>
+        </tr>
+        <tr v-for="(user, index) in users" :key="index">
+          <td style="width: 60px;">{{ index + 1 }}</td>
+          <td>{{ user.roleName }}</td>
+          <td style="width: 200px;">
+            <Input v-model="user.loginName" clearable></Input>
+          </td>
+          <td>
+            <Button
+              size="small"
+              type="primary"
+              :disabled="!user.id"
+              @click="toSave(user)"
+              >重置</Button
+            >
+            <Button size="small" type="primary" @click="toSave(user)"
+              >保存</Button
+            >
+            <Button size="small" type="error" @click="toDelete(index)"
+              >删除</Button
+            >
+          </td>
+        </tr>
+      </table>
     </div>
   </div>
 </template>
@@ -29,70 +58,7 @@ export default {
     return {
       workId: this.$route.params.workId,
       users: [],
-      curUser: {},
-      columes: [
-        {
-          type: "index",
-          title: "序号",
-          width: 100,
-          align: "center"
-        },
-        {
-          title: "角色",
-          key: "roleName"
-        },
-        {
-          title: "账号",
-          key: "loginName",
-          render: (h, param) => {
-            return h("Input", {
-              props: {
-                value: param.row.loginName,
-                clearable: true
-              },
-              style: {
-                width: "200px"
-              },
-              on: {
-                input: function(value) {
-                  param.row.loginName = value;
-                }
-              }
-            });
-          }
-        },
-        {
-          title: "操作",
-          key: "action",
-          width: 240,
-          align: "center",
-          render: (h, param) => {
-            let actions = [
-              {
-                name: "重置",
-                disabled: !param.row.id,
-                action: () => {
-                  this.toSave(param.row);
-                }
-              },
-              {
-                name: "保存",
-                action: () => {
-                  this.toSave(param.row);
-                }
-              },
-              {
-                name: "删除",
-                type: "error",
-                action: () => {
-                  this.toDelete(param.row);
-                }
-              }
-            ];
-            return h("div", this.$tableAction(h, actions));
-          }
-        }
-      ]
+      curUser: {}
     };
   },
   mounted() {
@@ -134,7 +100,12 @@ export default {
       this.$Message.success("保存成功!");
       this.getList();
     },
-    toDelete(row) {
+    toDelete(index) {
+      const row = this.users[index];
+      if (!row.id) {
+        this.users.splice(index, 1);
+        return;
+      }
       this.$Modal.confirm({
         title: "删除警告",
         content: "确定要删除当前账号吗?",

+ 9 - 6
src/modules/grading-set/GradingRuleSet.vue

@@ -28,9 +28,10 @@
           <Radio
             v-for="(val, key) in BOOLEAN_TYPE"
             :key="key"
-            :label="val"
+            :label="key"
             style="margin-right: 50px;"
-          ></Radio>
+            >{{ val }}</Radio
+          >
         </RadioGroup>
       </FormItem>
       <FormItem prop="examNumber" label="是否过半定档:">
@@ -38,9 +39,10 @@
           <Radio
             v-for="(val, key) in BOOLEAN_TYPE"
             :key="key"
-            :label="val"
+            :label="key"
             style="margin-right: 50px;"
-          ></Radio>
+            >{{ val }}</Radio
+          >
         </RadioGroup>
       </FormItem>
       <FormItem prop="examNumber" label="阅卷员是否显示所有试卷:">
@@ -48,9 +50,10 @@
           <Radio
             v-for="(val, key) in BOOLEAN_TYPE"
             :key="key"
-            :label="val"
+            :label="key"
             style="margin-right: 50px;"
-          ></Radio>
+            >{{ val }}</Radio
+          >
         </RadioGroup>
       </FormItem>
       <FormItem>

+ 27 - 7
src/modules/grading/Grading.vue

@@ -2,6 +2,7 @@
   <div class="grading home">
     <div class="home-header">
       <view-header>
+        <h1 slot="logo">{{ curSubject.name }}</h1>
         <div class="home-navs" slot="info">
           <ul>
             <li
@@ -30,22 +31,41 @@
 <script>
 import { navs } from "@/routers/grading";
 import menuMixins from "@/components/homeMenuMixins";
+import { subjectDetail } from "@/api";
 
 export default {
   name: "grading",
   mixins: [menuMixins],
   data() {
     return {
-      navs,
-      curNav: {}
+      subjectId: this.$route.params.subjectId,
+      navs: [],
+      curNav: {},
+      curSubject: { name: "灭是" }
     };
   },
   mounted() {
-    const router = this.$route.matched.filter(
-      item => item.name !== "Grading"
-    )[0];
-    this.actCurNav(router);
+    this.buildNavs();
+    this.actSubNav();
+    this.getSubjectDetail();
   },
-  methods: {}
+  methods: {
+    async getSubjectDetail() {
+      this.curSubject = await subjectDetail(this.subjectId);
+    },
+    buildNavs() {
+      const user = this.$ls.get("user", {});
+      this.navs = navs;
+      if (user.role === "ADMIN") {
+        this.navs = [{ title: "总览", name: "WorkOverview" }, ...navs];
+      }
+    },
+    actSubNav() {
+      const router = this.$route.matched.filter(
+        item => item.name !== "Grading"
+      )[0];
+      this.actCurNav(router);
+    }
+  }
 };
 </script>

+ 130 - 3
src/modules/grading/GradingUserManage.vue

@@ -1,15 +1,142 @@
 <template>
   <div class="grading-user-manage">
-    grading-user-manage
+    <div class="part-box-top">
+      <Button type="success" icon="md-add" @click="toAdd">新增</Button>
+    </div>
+    <div class="part-box">
+      <Table
+        ref="TableList"
+        :columns="columes"
+        :data="users"
+        disabled-hover
+        border
+      ></Table>
+    </div>
+
+    <!-- modify-grading-user -->
+    <modify-grading-user
+      :instance="curUser"
+      @modified="getList"
+      ref="ModifyGradingUser"
+    ></modify-grading-user>
   </div>
 </template>
 
 <script>
+import { gradingUserList, deleteGradingUser, resetPwd } from "@/api";
+import ModifyGradingUser from "./components/ModifyGradingUser";
+
 export default {
   name: "grading-user-manage",
+  components: { ModifyGradingUser },
   data() {
-    return {};
+    return {
+      subjectId: this.$route.params.subjectId,
+      workId: this.$route.params.workId,
+      users: [],
+      curUser: {},
+      columes: [
+        {
+          type: "index",
+          title: "序号",
+          width: 60,
+          align: "center"
+        },
+        {
+          title: "科目",
+          key: "subjectName"
+        },
+        {
+          title: "账号",
+          key: "loginName"
+        },
+        {
+          title: "姓名",
+          key: "name"
+        },
+        {
+          title: "角色",
+          key: "roleName"
+        },
+        {
+          title: "权限",
+          key: "rightName"
+        },
+        {
+          title: "权重",
+          key: "weight"
+        },
+        {
+          title: "操作",
+          key: "action",
+          width: 240,
+          align: "center",
+          render: (h, param) => {
+            let actions = [
+              {
+                name: "重置",
+                action: () => {
+                  this.toResetPwd(param.row);
+                }
+              },
+              {
+                name: "编辑",
+                action: () => {
+                  this.toEdit(param.row);
+                }
+              },
+              {
+                name: "删除",
+                type: "error",
+                action: () => {
+                  this.toDelete(param.row);
+                }
+              }
+            ];
+            return h("div", this.$tableAction(h, actions));
+          }
+        }
+      ]
+    };
   },
-  methods: {}
+  methods: {
+    async getList() {
+      const datas = {
+        workId: this.workId,
+        subjectId: this.subjectId
+      };
+      const data = await gradingUserList(datas);
+      this.users = data;
+    },
+    async toResetPwd(row) {
+      await resetPwd(row.id);
+      this.$Message.success("重置密码成功!");
+    },
+    toAdd() {
+      this.curUser = {
+        workId: this.workId,
+        subjectId: this.subjectId
+      };
+      this.$refs.ModifyGradingUser.open();
+    },
+    toEdit(row) {
+      this.curUser = row;
+      this.$refs.ModifyGradingUser.open();
+    },
+    toDelete(row) {
+      this.$Modal.confirm({
+        title: "删除警告",
+        content: "确定要删除当前账号吗?",
+        onOk: () => {
+          this.toDel(row.id);
+        }
+      });
+    },
+    async toDel(id) {
+      await deleteGradingUser(id);
+      this.$Message.success("删除成功!");
+      this.getList();
+    }
+  }
 };
 </script>

+ 166 - 0
src/modules/grading/components/ModifyGradingUser.vue

@@ -0,0 +1,166 @@
+<template>
+  <Modal
+    class="modify-grading-user"
+    v-model="modalIsShow"
+    :title="title"
+    :mask-closable="false"
+    @on-visible-change="visibleChange"
+  >
+    <Form
+      ref="modalFormComp"
+      :model="modalForm"
+      :rules="rules"
+      :key="modalForm.id"
+      :label-width="80"
+    >
+      <FormItem prop="loginName" label="账号">
+        <Input
+          v-model.trim="modalForm.loginName"
+          placeholder="请输入账号"
+          clearable
+        ></Input>
+      </FormItem>
+      <FormItem prop="password" label="密码">
+        <Input
+          v-model.trim="modalForm.password"
+          placeholder="请输入密码"
+          readonly
+        ></Input>
+      </FormItem>
+      <FormItem prop="name" label="姓名">
+        <Input
+          v-model.trim="modalForm.name"
+          placeholder="请输入姓名"
+          clearable
+        ></Input>
+      </FormItem>
+      <FormItem prop="roleCode" label="角色">
+        <Select v-model="modalForm.roleCode" placeholder="请选择角色">
+          <Option value=""></Option>
+        </Select>
+      </FormItem>
+      <FormItem prop="rightCode" label="权限">
+        <Select v-model="modalForm.rightCode" placeholder="请选择权限">
+          <Option value=""></Option>
+        </Select>
+      </FormItem>
+      <FormItem prop="weight" label="权重">
+        <InputNumber
+          v-model.trim="modalForm.weight"
+          :min="1"
+          :max="100"
+          placeholder="请输入权重"
+          style="width: 120px"
+        ></InputNumber>
+      </FormItem>
+      <FormItem>
+        <Checkbox v-model="modalForm.canConfirmGrade">是否一键定档</Checkbox
+        ><br />
+        <Checkbox v-model="modalForm.canSetStandard">是否设立标准卷</Checkbox
+        ><br />
+        <Checkbox v-model="modalForm.canRufuseGrade"
+          >是否建议档位打回档</Checkbox
+        >
+      </FormItem>
+    </Form>
+    <div slot="footer">
+      <Button type="text" @click="cancel">取消</Button>
+      <Button type="primary" :disabled="isSubmit" @click="submit">确认</Button>
+    </div>
+  </Modal>
+</template>
+
+<script>
+import { uploadGradingUser } from "@/api";
+import { password } from "@/plugins/formRules";
+
+const initModalForm = {
+  id: "",
+  workId: "",
+  subjectId: "",
+  loginName: "",
+  password: "123456",
+  name: "",
+  roleCode: null,
+  rightCode: null,
+  weight: null,
+  canConfirmGrade: false,
+  canSetStandard: false,
+  canRufuseGrade: false
+};
+
+export default {
+  name: "modify-grading-user",
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  computed: {
+    isEdit() {
+      return !!this.instance.id;
+    },
+    title() {
+      return (this.isEdit ? "编辑" : "新增") + "评卷账号";
+    }
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      isSubmit: false,
+      modalForm: { ...initModalForm },
+      rules: {
+        loginName: [
+          {
+            required: true,
+            pattern: /^[a-zA-Z0-9_-]{2,19}$/,
+            message: "账号只能包含字母、数字、下划线以及短横线,长度3-20位",
+            trigger: "change"
+          }
+        ],
+        password
+      }
+    };
+  },
+  methods: {
+    initData(val) {
+      if (val.id) {
+        this.modalForm = this.$objAssign(initModalForm, val);
+      } else {
+        this.modalForm = { ...initModalForm };
+      }
+    },
+    visibleChange(visible) {
+      if (visible) {
+        this.initData(this.instance);
+      }
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+    async submit() {
+      const valid = await this.$refs.modalFormComp.validate();
+      if (!valid) return;
+
+      if (this.isSubmit) return;
+      this.isSubmit = true;
+      const data = await uploadGradingUser(this.modalForm).catch(() => {
+        this.isSubmit = false;
+      });
+
+      if (!data) return;
+
+      this.isSubmit = false;
+      this.$Message.success(this.title + "成功!");
+      this.$emit("modified");
+      this.cancel();
+    }
+  }
+};
+</script>

+ 3 - 0
src/modules/main/Main.vue

@@ -2,6 +2,9 @@
   <div class="home admin-home">
     <div class="home-header">
       <view-header>
+        <h1 slot="logo" @click="$router.push({ name: 'WorkManage' })">
+          美术阅卷管理端
+        </h1>
         <div class="home-navs" slot="info">
           <ul>
             <li

+ 74 - 53
src/modules/main/StudentScore.vue

@@ -43,35 +43,41 @@
         </FormItem>
       </Form>
       <!--  -->
-      <image-action-list
-        :data="papers"
-        ref="ImageActionList"
-        style="text-align:center;"
-      ></image-action-list>
+      <div
+        class="student-score-content"
+        v-for="(student, index) in students"
+        :key="index"
+      >
+        <image-action-list
+          :data="student.scores"
+          ref="ImageActionList"
+          style="text-align:center;"
+        ></image-action-list>
 
-      <div class="student-info">
-        <table class="table" v-if="curPaper.id">
-          <tr>
-            <td>姓名</td>
-            <td colspan="3">{{ curPaper.studentName }}</td>
-          </tr>
-          <tr>
-            <td>考号</td>
-            <td colspan="3">{{ curPaper.examNumber }}</td>
-          </tr>
-          <tr>
-            <td>档位</td>
-            <td>A</td>
-            <td>B</td>
-            <td>C</td>
-          </tr>
-          <tr>
-            <td>分数</td>
-            <td>95</td>
-            <td>空</td>
-            <td>空</td>
-          </tr>
-        </table>
+        <div class="student-info">
+          <table class="table">
+            <tr>
+              <td>姓名</td>
+              <td :colspan="student.scores.length">{{ student.name }}</td>
+            </tr>
+            <tr>
+              <td>考号</td>
+              <td :colspan="student.scores.length">{{ student.examNumber }}</td>
+            </tr>
+            <tr>
+              <td>档位</td>
+              <td v-for="(score, sindex) in student.scores" :key="sindex">
+                {{ score.grade }}
+              </td>
+            </tr>
+            <tr>
+              <td>分数</td>
+              <td v-for="(score, sindex) in student.scores" :key="sindex">
+                {{ score.score }}
+              </td>
+            </tr>
+          </table>
+        </div>
       </div>
     </div>
   </div>
@@ -94,33 +100,48 @@ export default {
         name: ""
       },
       CODE_TYPE,
-      papers: [
+      students: [
         {
-          id: "1",
-          title: "2020105133",
-          url:
-            "http://127.0.0.1:9000/api/file/image/download/33/1/833/1?random=fa8244bb-8ec4-46c1-a16e-1bd6f3b8848e",
-          thumbUrl:
-            "http://127.0.0.1:9000/api/file/image/download/33/1/833/2?random=497cc903-c01a-458a-9b4e-82b391cef176"
-        },
-        {
-          id: "2",
-          title: "2020105133",
-          url:
-            "http://127.0.0.1:9000/api/file/image/download/33/1/833/1?random=fa8244bb-8ec4-46c1-a16e-1bd6f3b8848e",
-          thumbUrl:
-            "http://127.0.0.1:9000/api/file/image/download/33/1/833/2?random=497cc903-c01a-458a-9b4e-82b391cef176"
-        },
-        {
-          id: "3",
-          title: "2020105133",
-          url:
-            "http://127.0.0.1:9000/api/file/image/download/33/1/833/1?random=fa8244bb-8ec4-46c1-a16e-1bd6f3b8848e",
-          thumbUrl:
-            "http://127.0.0.1:9000/api/file/image/download/33/1/833/2?random=497cc903-c01a-458a-9b4e-82b391cef176"
+          id: "12",
+          name: "李刚",
+          examNumber: "2020105133",
+          scores: [
+            {
+              id: "1",
+              subjectName: "素描",
+              title: "2020105133",
+              score: "95",
+              grade: "A",
+              url:
+                "http://127.0.0.1:9000/api/file/image/download/33/1/833/1?random=fa8244bb-8ec4-46c1-a16e-1bd6f3b8848e",
+              thumbUrl:
+                "http://127.0.0.1:9000/api/file/image/download/33/1/833/2?random=497cc903-c01a-458a-9b4e-82b391cef176"
+            },
+            {
+              id: "1",
+              subjectName: "速写",
+              title: "2020105133",
+              score: "85",
+              grade: "B",
+              url:
+                "http://127.0.0.1:9000/api/file/image/download/33/1/833/1?random=fa8244bb-8ec4-46c1-a16e-1bd6f3b8848e",
+              thumbUrl:
+                "http://127.0.0.1:9000/api/file/image/download/33/1/833/2?random=497cc903-c01a-458a-9b4e-82b391cef176"
+            },
+            {
+              id: "1",
+              subjectName: "色彩",
+              title: "2020105133",
+              score: "90",
+              grade: "A",
+              url:
+                "http://127.0.0.1:9000/api/file/image/download/33/1/833/1?random=fa8244bb-8ec4-46c1-a16e-1bd6f3b8848e",
+              thumbUrl:
+                "http://127.0.0.1:9000/api/file/image/download/33/1/833/2?random=497cc903-c01a-458a-9b4e-82b391cef176"
+            }
+          ]
         }
-      ],
-      curPaper: { id: "12", studentName: "张三", examNumber: "12345678912" }
+      ]
     };
   },
   methods: {

+ 14 - 1
src/modules/main/WorkOverview.vue

@@ -74,7 +74,7 @@
                 @click="download(subject.exportAbsentDataUrl)"
                 >导出缺考名单</Button
               >
-              <Button>评卷管理</Button>
+              <Button @click="toCommit(subject)">评卷管理</Button>
             </div>
           </div>
         </div>
@@ -123,6 +123,19 @@ export default {
     },
     download(url) {
       window.open(url);
+    },
+    toCommit(subject) {
+      console.log(subject);
+
+      // TODO:
+      // const routerName = subject.markStage === ''
+      this.$router.push({
+        name: "Grading",
+        params: {
+          workId: this.workId,
+          subjectId: subject.subjectId
+        }
+      });
     }
   }
 };

+ 6 - 4
src/modules/mark-set/MarkRuleSet.vue

@@ -11,9 +11,10 @@
           <Radio
             v-for="(val, key) in BOOLEAN_TYPE"
             :key="key"
-            :label="val"
+            :label="key"
             style="margin-right: 50px;"
-          ></Radio>
+            >{{ val }}</Radio
+          >
         </RadioGroup>
       </FormItem>
       <FormItem label="阅卷员是否显示所有试卷:">
@@ -21,9 +22,10 @@
           <Radio
             v-for="(val, key) in BOOLEAN_TYPE"
             :key="key"
-            :label="val"
+            :label="key"
             style="margin-right: 50px;"
-          ></Radio>
+            >{{ val }}</Radio
+          >
         </RadioGroup>
       </FormItem>
       <FormItem>

+ 2 - 2
src/routers/grading.js

@@ -48,14 +48,14 @@ export const navs = getNavs(gradingRoutes);
 
 export default [
   {
-    path: "/grading/:workId(\\d+)",
+    path: "/grading/:workId(\\d+)/:subjectId",
     name: "Grading",
     component: Grading,
     redirect: { name: "GradingProgress" },
     children: gradingRoutes
   },
   {
-    path: "/grading-operation/:workId(\\d+)",
+    path: "/grading-operation/:workId(\\d+)/:subjectId",
     name: "GradingOperation",
     component: GradingOperation,
     meta: {