zhangjie 2 years ago
parent
commit
49741a1b9f

+ 4 - 1
src/components/base/ArchivesSelect.vue

@@ -28,7 +28,8 @@ export default {
     placeholder: { type: String, default: "请选择学期" },
     value: { type: [Number, String], default: "" },
     clearable: { type: Boolean, default: true },
-    semesterId: { type: String, default: "" }
+    semesterId: { type: String, default: "" },
+    semesterStrict: { type: Boolean, default: false }
   },
   data() {
     return {
@@ -59,6 +60,8 @@ export default {
       this.optionList = [];
 
       let data = {};
+      if (this.semesterStrict && !this.semesterId) return;
+
       if (this.semesterId) data.semesterId = this.semesterId;
 
       const res = await commonArchivesQuery(data);

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

@@ -8,7 +8,7 @@ export const scanTaskDetailPage = datas => {
   return $postParam("/api/admin/paper/scan_task/task_detail_page", datas);
 };
 export const updateScanTask = datas => {
-  return $post("/api/admin/", datas);
+  return $post("/api/admin/paper/scan_task/save", datas);
 };
 export const deleteScanTask = ids => {
   return $postParam("/api/admin/paper/scan_task/delete_batch", {

+ 185 - 0
src/modules/record/components/ModifyScanTask.vue

@@ -0,0 +1,185 @@
+<template>
+  <el-dialog
+    class="modify-scan-task"
+    :visible.sync="modalIsShow"
+    :title="title"
+    top="10vh"
+    width="500px"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @open="visibleChange"
+  >
+    <el-form
+      ref="modalFormComp"
+      :model="modalForm"
+      :rules="rules"
+      label-width="110px"
+    >
+      <el-form-item label="学期:">
+        <semester-select
+          v-model="modalForm.semesterId"
+          placeholder="学期"
+        ></semester-select>
+      </el-form-item>
+      <el-form-item label="档案:">
+        <archives-select
+          v-model="modalForm.paperArchivesId"
+          :semester-id="modalForm.semesterId"
+          semester-strict
+          placeholder="档案"
+        >
+        </archives-select>
+      </el-form-item>
+      <el-form-item label="课程代码:" prop="courseCode">
+        <el-input
+          v-model.trim="modalForm.courseCode"
+          placeholder="请输入课程代码"
+          clearable
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="课程名称:" prop="courseName">
+        <el-input
+          v-model.trim="modalForm.courseName"
+          placeholder="请输入课程名称"
+          clearable
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="scanTaskName" label="任务名称:">
+        <el-input
+          v-model.trim="modalForm.scanTaskName"
+          placeholder="请输入任务名称"
+          clearable
+        ></el-input>
+      </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 { updateScanTask } from "../api";
+
+const initModalForm = {
+  id: "",
+  semesterId: "",
+  paperArchivesId: "",
+  scanTaskName: "",
+  courseCode: "",
+  courseName: ""
+};
+
+export default {
+  name: "modify-scan-task",
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  computed: {
+    isEdit() {
+      return !!this.instance.id;
+    },
+    title() {
+      return (this.isEdit ? "编辑" : "新增") + "任务";
+    }
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      isSubmit: false,
+      modalForm: {},
+      rules: {
+        courseCode: [
+          {
+            required: true,
+            message: "请输入科目代码",
+            trigger: "change"
+          },
+          {
+            max: 30,
+            message: "科目代码不能超过30字符",
+            trigger: "change"
+          }
+        ],
+        courseName: [
+          {
+            required: true,
+            message: "请输入科目名称",
+            trigger: "change"
+          },
+          {
+            max: 50,
+            message: "科目名称不能超过50字符",
+            trigger: "change"
+          }
+        ],
+        scanTaskName: [
+          {
+            required: true,
+            message: "请输入任务名称",
+            trigger: "change"
+          },
+          {
+            max: 50,
+            message: "任务名称不能超过50字符",
+            trigger: "change"
+          }
+        ],
+        paperArchivesId: [
+          {
+            required: true,
+            message: "请选择档案",
+            trigger: "change"
+          }
+        ]
+      }
+    };
+  },
+  methods: {
+    initData(val) {
+      if (val.id) {
+        this.modalForm = this.$objAssign(initModalForm, val);
+      } else {
+        this.modalForm = { ...initModalForm };
+        this.$nextTick(() => {
+          this.$refs.modalFormComp.clearValidate();
+        });
+      }
+    },
+    visibleChange() {
+      this.initData(this.instance);
+    },
+    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;
+
+      const datas = { ...this.modalForm };
+      const data = await updateScanTask(datas).catch(() => {});
+      this.isSubmit = false;
+      if (!data) return;
+
+      this.$message.success("修改成功!");
+      this.cancel();
+      this.$emit("modified");
+    }
+  }
+};
+</script>

+ 23 - 9
src/modules/record/views/LibraryManage.vue

@@ -9,20 +9,32 @@
         @submit.native.prevent
       >
         <template v-if="checkPrivilege('condition', 'condition')">
+          <el-form-item label="学期:">
+            <semester-select
+              v-model="filter.semesterId"
+              placeholder="学期"
+            ></semester-select>
+          </el-form-item>
           <el-form-item label="档案:">
             <archives-select
               v-model="filter.paperArchivesId"
+              :semester-id="filter.semesterId"
+              semester-strict
               placeholder="档案"
             >
             </archives-select>
           </el-form-item>
-          <el-form-item label="任务:">
-            <scan-task-select
-              v-model="filter.paperScanTaskId"
-              :paper-archives-id="filter.paperArchivesId"
-              placeholder="任务"
-            >
-            </scan-task-select>
+          <el-form-item label="课程:">
+            <course-select v-model="filter.courseCode" placeholder="请选择课程">
+            </course-select>
+          </el-form-item>
+          <el-form-item label="任务名称:">
+            <el-input
+              style="width: 180px;"
+              v-model.trim="filter.scanTaskName"
+              placeholder="任务名称"
+              clearable
+            ></el-input>
           </el-form-item>
         </template>
 
@@ -84,7 +96,7 @@
         </el-table-column>
         <el-table-column label="未绑定量(份)" width="120">
           <span slot-scope="scope">{{
-            scope.row.scanCount - scope.row.bindCount
+            scope.row.scanCount - scope.row.bindCount - scope.row.abnormalCount
           }}</span>
         </el-table-column>
         <el-table-column
@@ -269,8 +281,10 @@ export default {
   data() {
     return {
       filter: {
+        semesterId: "",
         paperArchivesId: "",
-        paperScanTaskId: ""
+        courseCode: "",
+        scanTaskName: ""
       },
       doneTypes: [
         {

+ 96 - 31
src/modules/record/views/ScanTaskManage.vue

@@ -1,17 +1,48 @@
 <template>
   <div class="scan-task-manage">
-    <div class="part-box part-box-filter part-box-flex">
+    <div class="part-box part-box-filter">
       <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="学期"
+            ></semester-select>
+          </el-form-item>
+          <el-form-item label="档案:">
+            <archives-select
+              v-model="filter.paperArchivesId"
+              :semester-id="filter.semesterId"
+              semester-strict
+              placeholder="档案"
+            >
+            </archives-select>
+          </el-form-item>
           <el-form-item label="课程:">
-            <course-select v-model="filter.courseName" placeholder="请选择课程">
+            <course-select v-model="filter.courseCode" placeholder="请选择课程">
             </course-select>
           </el-form-item>
-          <el-form-item label="任课老师:">
+          <el-form-item label="任务名称:">
+            <el-input
+              style="width: 180px;"
+              v-model.trim="filter.scanTaskName"
+              placeholder="任务名称"
+              clearable
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="扫描员:">
             <el-input
               style="width: 180px;"
-              v-model.trim="filter.teacherName"
-              placeholder="任课老师"
+              v-model.trim="filter.scanUser"
+              placeholder="扫描员"
+              clearable
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="校验员:">
+            <el-input
+              style="width: 180px;"
+              v-model.trim="filter.checkUser"
+              placeholder="校验员"
               clearable
             ></el-input>
           </el-form-item>
@@ -49,28 +80,37 @@
           >
         </el-form-item>
       </el-form>
-      <div class="part-box-action">
-        <el-button
-          v-if="checkPrivilege('button', 'DeleteBatch')"
-          type="danger"
-          icon="el-icon-delete"
-          :loading="loading"
-          @click="batchDelete"
-          >批量删除</el-button
-        >
-        <el-button
-          v-if="checkPrivilege('button', 'import')"
-          type="success"
-          icon="el-icon-upload"
-          @click="toImportTask"
-          >导入任务</el-button
-        >
-        <el-button
-          v-if="checkPrivilege('button', 'import')"
-          type="primary"
-          @click="viewResult"
-          >导入结果</el-button
-        >
+      <div class="box-justify">
+        <div></div>
+        <div>
+          <el-button
+            v-if="checkPrivilege('button', 'DeleteBatch')"
+            type="danger"
+            icon="el-icon-delete"
+            :loading="loading"
+            @click="batchDelete"
+            >批量删除</el-button
+          >
+          <el-button
+            v-if="checkPrivilege('button', 'import')"
+            type="success"
+            icon="el-icon-upload"
+            @click="toImportTask"
+            >导入任务</el-button
+          >
+          <el-button
+            v-if="checkPrivilege('button', 'import')"
+            type="primary"
+            @click="viewResult"
+            >导入结果</el-button
+          >
+          <el-button
+            v-if="checkPrivilege('button', 'add')"
+            type="primary"
+            @click="toAddTask"
+            >新增任务</el-button
+          >
+        </div>
       </div>
     </div>
 
@@ -211,11 +251,19 @@
           }}</a>
         </el-form-item>
 
+        <el-form-item label="学期:">
+          <semester-select
+            v-model="modalForm.semesterId"
+            placeholder="学期"
+          ></semester-select>
+        </el-form-item>
         <el-form-item prop="paperArchivesId" label="所属档案:">
           <archives-select
             style="width:100%;"
             v-model="modalForm.paperArchivesId"
             placeholder="请选择所属档案"
+            semester-strict
+            :semester-id="modalForm.semesterId"
           >
           </archives-select>
         </el-form-item>
@@ -247,6 +295,13 @@
       :format="['xls', 'xlsx']"
       @upload-success="uploadSuccess"
     ></import-file>
+    <!-- ModifyScanTask -->
+    <modify-scan-task
+      v-if="checkPrivilege('button', 'add')"
+      ref="ModifyScanTask"
+      :instance="curRow"
+      :modified="getList"
+    ></modify-scan-task>
   </div>
 </template>
 
@@ -261,6 +316,7 @@ import ImportFile from "../../../components/ImportFile.vue";
 import LibraryStateDialog from "../components/LibraryStateDialog.vue";
 import ScanTaskDetailDialog from "../components/ScanTaskDetailDialog.vue";
 import DataTaskDialog from "../../base/components/DataTaskDialog.vue";
+import ModifyScanTask from "../components/ModifyScanTask.vue";
 
 export default {
   name: "scan-task-manage",
@@ -268,13 +324,18 @@ export default {
     ImportFile,
     LibraryStateDialog,
     ScanTaskDetailDialog,
-    DataTaskDialog
+    DataTaskDialog,
+    ModifyScanTask
   },
   data() {
     return {
       filter: {
-        courseName: "",
-        teacherName: "",
+        semesterId: "",
+        paperArchivesId: "",
+        courseCode: "",
+        scanTaskName: "",
+        scanUser: "",
+        checkUser: "",
         smallerProgress: undefined,
         largerProgress: undefined
       },
@@ -287,7 +348,7 @@ export default {
       loading: false,
       userId: this.$ls.get("user", { id: "" }).id,
       // import-task
-      modalForm: { paperArchivesId: "" },
+      modalForm: { paperArchivesId: "", semesterId: "" },
       rules: {
         paperArchivesId: [
           {
@@ -414,6 +475,10 @@ export default {
     },
     viewResult() {
       this.$refs.DataTaskDialog.open();
+    },
+    toAddTask() {
+      this.curRow = {};
+      this.$refs.ModifyScanTask.open();
     }
   }
 };

+ 1 - 1
src/store.js

@@ -4,7 +4,7 @@ import Vuex from "vuex";
 Vue.use(Vuex);
 
 // TODO:待完善
-const privilegeMapData = window.sessionStorage.getItem("privilegeMap");
+const privilegeMapData = window.sessionStorage.getItem("vs_privilegeMap");
 const privilegeMap = privilegeMapData ? JSON.parse(privilegeMapData).value : {};
 
 // modules