zhangjie 1 ano atrás
pai
commit
9389c7dc6c

+ 102 - 8
card/components/CardConfigPropEdit.vue

@@ -90,6 +90,27 @@
                   >{{ column.name }}</el-checkbox
                 >
               </el-form-item>
+              <el-form-item
+                v-if="
+                  deletedField.requiredFields.length ||
+                  deletedField.extendFields.length
+                "
+                label="通用规则已删除字段:"
+                label-width="160px"
+              >
+                <el-checkbox
+                  v-for="column in deletedField.requiredFields"
+                  :key="column.code"
+                  v-model="column.enable"
+                  >{{ column.name }}</el-checkbox
+                >
+                <el-checkbox
+                  v-for="column in deletedField.extendFields"
+                  :key="column.code"
+                  v-model="column.enable"
+                  >{{ column.name }}</el-checkbox
+                >
+              </el-form-item>
             </div>
             <el-form-item prop="attention" label="注意事项:">
               <el-input
@@ -122,6 +143,7 @@
 import { mapState, mapMutations, mapActions } from "vuex";
 import { objAssign } from "../plugins/utils";
 import { EXAM_NUMBER_STYLE, PAPER_TYPE } from "@/constants/enumerate";
+import { examRuleDetail, getEnums } from "@/modules/base/api";
 
 const initModalForm = {
   examNumberStyle: "",
@@ -142,6 +164,10 @@ export default {
   data() {
     return {
       modalForm: { ...initModalForm },
+      deletedField: {
+        requiredFields: [],
+        extendFields: [],
+      },
       EXAM_NUMBER_STYLE,
       PAPER_TYPE,
       drawer: false,
@@ -210,24 +236,80 @@ export default {
           },
         ],
       },
+      examRule: {},
     };
   },
   computed: {
     ...mapState("card", ["cardConfig"]),
   },
-  watch: {
-    cardConfig: {
-      immediate: true,
-      handler(val) {
-        this.modalForm = objAssign(initModalForm, val);
-      },
-    },
+  mounted() {
+    this.getExamRule();
   },
   methods: {
     ...mapMutations("card", ["setCardConfig"]),
     ...mapActions("card", ["rebuildPages"]),
+    async getExamRule() {
+      const examRequiredFields = await getEnums("REQUIRED_FIELDS");
+      const cardRequiredFields = await getEnums("CARD_REQUIRED_FIELDS");
+      const cardRequiredFieldCodes = cardRequiredFields.map(
+        (item) => item.code
+      );
+      const extendFields = examRequiredFields
+        .filter(
+          (field) =>
+            !cardRequiredFieldCodes.includes(field.code) && field.enable
+        )
+        .map((item) => {
+          return {
+            code: item.code,
+            name: item.name,
+          };
+        });
+      let examRule = await examRuleDetail();
+      const cardExtendFields = [
+        ...extendFields,
+        ...JSON.parse(examRule.extendFields).filter((item) => item.enable),
+      ];
+
+      this.examRule = {
+        requiredFields: cardRequiredFields.map((item) => {
+          return {
+            code: item.code,
+            name: item.name,
+            enable: true,
+          };
+        }),
+        extendFields: cardExtendFields.map((item) => {
+          return {
+            code: item.code,
+            name: item.name,
+            enable: false,
+          };
+        }),
+      };
+    },
+    initData() {
+      this.modalForm = objAssign(initModalForm, this.cardConfig);
+      this.updateField("requiredFields");
+      this.updateField("extendFields");
+    },
+    updateField(type) {
+      const examRuleFieldCodes = this.examRule[type].map((item) => item.code);
+      this.deletedField[type] = this.modalForm[type].filter(
+        (field) => !examRuleFieldCodes.includes(field.code)
+      );
+      this.modalForm[type] = this.modalForm[type].filter((field) =>
+        examRuleFieldCodes.includes(field.code)
+      );
+      const modalFormFieldCodes = this.modalForm[type].map((item) => item.code);
+      this.examRule[type].forEach((field) => {
+        if (modalFormFieldCodes.includes(field.code)) return;
+        this.modalForm[type].push({ ...field });
+      });
+    },
     open() {
       this.drawer = true;
+      this.initData();
     },
     cancel() {
       this.drawer = false;
@@ -242,7 +324,19 @@ export default {
       const valid = await this.$refs.modalFormComp.validate().catch(() => {});
       if (!valid) return;
 
-      this.setCardConfig({ ...this.modalForm });
+      const data = { ...this.modalForm };
+      this.deletedField.requiredFields.forEach((item) => {
+        if (item.enable) {
+          data.requiredFields.push({ ...item });
+        }
+      });
+      this.deletedField.extendFields.forEach((item) => {
+        if (item.enable) {
+          data.extendFields.push({ ...item });
+        }
+      });
+
+      this.setCardConfig(data);
       this.cancel();
 
       this.$nextTick(() => {

+ 6 - 6
src/components/base/StatusSelect.vue

@@ -10,16 +10,16 @@
   >
     <el-option
       v-for="item in optionList"
-      :key="item.id"
-      :value="item.id"
-      :label="item.name"
+      :key="item.name"
+      :value="item.name"
+      :label="item.desc"
     >
     </el-option>
   </el-select>
 </template>
 
 <script>
-import { enumsByType } from "../../modules/base/api";
+import { getEnums } from "../../modules/base/api";
 
 export default {
   name: "status-select",
@@ -53,14 +53,14 @@ export default {
   methods: {
     async search() {
       if (!this.type) return;
-      const res = await enumsByType(this.type);
+      const res = await getEnums(this.type);
       this.optionList = res;
     },
     select() {
       this.$emit("input", this.selected);
       this.$emit(
         "change",
-        this.optionList.find((item) => item.id === this.selected)
+        this.optionList.find((item) => item.name === this.selected)
       );
     },
   },

+ 2 - 5
src/modules/base/api.js

@@ -10,11 +10,8 @@ export const unitQueryByType = (datas, dictionaryEnum) => {
     dictionaryEnum,
   });
 };
-export const enumsByType = (type) => {
-  // type: PUSH_TYPE_ENUM("同步类型"),
-  return $postParam("/api/admin/common/get_enums", {
-    type,
-  });
+export const getEnums = (type) => {
+  return $postParam("/api/admin/common/get_enums", { type });
 };
 // semester
 export const conditionListSemester = (datas) => {

+ 2 - 1
src/modules/base/components/RuleExam.vue

@@ -135,7 +135,8 @@ export default {
 
       this.modalForm.id = data;
       this.examRule.id = data;
-
+      this.prevModalFrom = JSON.stringify(this.modalForm);
+      this.checkRuleChange();
       this.$message.success("保存成功!");
     },
   },

+ 1 - 2
src/modules/base/views/CardRuleManage.vue

@@ -154,10 +154,9 @@ import {
   cardRuleListPage,
   ableCardRule,
   deleteCardRule,
+  getEnums,
 } from "../api";
-import { getEnums } from "../../login/api";
 import pickerOptions from "@/constants/datePickerOptions";
-
 import ModifyCardRule from "../components/ModifyCardRule";
 
 export default {

+ 2 - 2
src/modules/exam/views/ActionLogManage.vue

@@ -96,7 +96,7 @@
 
 <script>
 import { actionLogList } from "../api";
-import { enumsByType } from "../../base/api";
+import { getEnums } from "../../base/api";
 
 import pickerOptions from "@/constants/datePickerOptions";
 
@@ -126,7 +126,7 @@ export default {
   },
   methods: {
     async getLogTypes() {
-      const res = await enumsByType("CUSTOMIZED_OPERATION_TYPE_ENUM");
+      const res = await getEnums("CUSTOMIZED_OPERATION_TYPE_ENUM");
       const data = res || [];
       this.OPERATION_TYPE = {};
       data.forEach((item) => {

+ 6 - 3
src/modules/mark/components/markDetail/MarkDetailProgress.vue

@@ -16,7 +16,7 @@
         >
       </el-breadcrumb>
       <div>
-        <el-button type="primary" @click="toPage(1)">查询</el-button>
+        <el-button type="primary" @click="initData">查询</el-button>
         <el-button type="primary" :loading="downloading" @click="toExport"
           >导出评卷员工作量</el-button
         >
@@ -207,10 +207,13 @@ export default {
     };
   },
   mounted() {
-    this.getSummary();
-    this.toPage(1);
+    this.initData();
   },
   methods: {
+    initData() {
+      this.getSummary();
+      this.toPage(1);
+    },
     async getSummary() {
       const res = await markProgressSummary({
         examId: this.baseInfo.examId,

+ 5 - 13
src/modules/print/views/PrintTaskManage.vue

@@ -57,19 +57,14 @@
             ></print-room-select>
           </el-form-item>
           <el-form-item label="印刷状态:">
-            <el-select
+            <status-select
               v-model="filter.status"
-              style="width: 120px"
+              type="EXAM_DETAIL_STATUS_ENUM"
               placeholder="印刷状态"
+              style="width: 120px"
               clearable
             >
-              <el-option
-                v-for="(val, key) in PRINT_TASK_STATUS"
-                :key="key"
-                :value="key"
-                :label="val"
-              ></el-option>
-            </el-select>
+            </status-select>
           </el-form-item>
           <el-form-item label="考点:" label-width="55px">
             <place-select
@@ -294,10 +289,7 @@
           label="A4准印量小计(页)"
           width="80"
         ></el-table-column> -->
-        <el-table-column prop="status" label="印刷状态" width="80">
-          <span slot-scope="scope">{{
-            scope.row.status | printTaskStatusFilter
-          }}</span>
+        <el-table-column prop="statusDisplay" label="印刷状态" width="80">
         </el-table-column>
         <el-table-column prop="validate" label="是否校验" width="80">
           <span slot-scope="scope">{{ scope.row.validate ? "是" : "否" }}</span>

+ 3 - 3
src/modules/stmms/views/SyncManage.vue

@@ -169,7 +169,7 @@
 import { DATA_TASK_RESULT } from "@/constants/enumerate";
 import { syncResultListPage, syncResync } from "../api";
 import { attachmentDownload } from "../../login/api";
-import { enumsByType } from "../../base/api";
+import { getEnums } from "../../base/api";
 import { downloadByUrl } from "@/plugins/download";
 
 export default {
@@ -220,7 +220,7 @@ export default {
       return this.nonePrivilege || this.checkPrivilege(type, field);
     },
     async getSyncTypes() {
-      const res = await enumsByType("PUSH_TYPE_ENUM");
+      const res = await getEnums("PUSH_TYPE_ENUM");
       const data = res || [];
       this.STMMS_SYNC_TYPE = {};
       data.forEach((item) => {
@@ -228,7 +228,7 @@ export default {
       });
     },
     async getSyncStatus() {
-      const res = await enumsByType("TB_TASK_STATUS");
+      const res = await getEnums("TB_TASK_STATUS");
       const data = res || [];
       this.STMMS_SYNC_STATUS = {};
       data.forEach((item) => {