zhangjie 3 anos atrás
pai
commit
bc16f2d5b6

+ 4 - 2
card/mixins/exchange.js

@@ -42,7 +42,9 @@ export default {
     },
     parsePageExchange(pages) {
       const npages = deepCopy(pages);
-      const pageNumberInfo = this.getPageNumberInfo();
+      // 单页题卡不显示页码涂块
+      const pageNumberInfo =
+        pages.length <= 2 ? null : this.getPageNumberInfo();
       npages.forEach((page, pindex) => {
         let exchange = {
           locator: this.getLocatorInfo(page.locators),
@@ -69,7 +71,7 @@ export default {
           });
         });
 
-        if (!(pindex % 2)) {
+        if (!(pindex % 2) && pageNumberInfo) {
           let pnoInfo = deepCopy(pageNumberInfo);
           pnoInfo[0].index = this.getFillAreaIndex("pageNumber");
           exchange.fill_area = exchange.fill_area.concat(pnoInfo);

+ 24 - 2
src/modules/analysis/components/baseConfig/BlueprintConfig.vue

@@ -2,6 +2,12 @@
   <div class="blueprint-config">
     <div class="mb-4 box-justify">
       <el-button type="success" @click="toImport">导入</el-button>
+      <el-button
+        v-if="baseInfo.useExamCloudStruct"
+        type="primary"
+        @click="toUpdateExamCloudStruct"
+        >更新试卷结构</el-button
+      >
     </div>
 
     <div class="part-box part-box-border-bold">
@@ -155,19 +161,32 @@ export default {
 
         return nitem;
       });
+      if (this.baseInfo.useExamCloudStruct) {
+        this.uploadData = { useExamCloudStruct: true };
+      } else {
+        this.uploadData = {};
+      }
     },
     toImport() {
       this.$refs.ImportFile.open();
     },
+    async toUpdateExamCloudStruct() {
+      await this.fetchStructList();
+      this.initData();
+    },
     async downloadHandle() {
       if (this.downloading) return;
       this.downloading = true;
 
       const res = await downloadByApi(() => {
-        return paperStructExport({
+        let datas = {
           paperNumber: this.baseInfo.paperNumber,
           paperType: this.baseInfo.paperType
-        });
+        };
+        if (this.baseInfo.useExamCloudStruct) {
+          datas.useExamCloudStruct = true;
+        }
+        return paperStructExport(datas);
       }).catch(e => {
         this.$message.error(e || "下载失败,请重新尝试!");
       });
@@ -225,6 +244,9 @@ export default {
         paperName: this.baseInfo.paperName,
         paperType: this.baseInfo.paperType
       };
+      if (this.baseInfo.useExamCloudStruct) {
+        datas.useExamCloudStruct = true;
+      }
       const data = await updatePaperStruct(datas).catch(() => {});
       this.loading = false;
       if (!data) return;

+ 5 - 1
src/modules/analysis/components/baseConfig/DimensionConfig.vue

@@ -74,6 +74,7 @@ export default {
       );
       if (!knowledgeList.length) {
         this.$message.error("请设置知识维度");
+        this.loading = false;
         return;
       }
 
@@ -88,7 +89,10 @@ export default {
             type: "warning"
           }
         ).catch(() => {});
-        if (confirm !== "confirm") return;
+        if (confirm !== "confirm") {
+          this.loading = false;
+          return;
+        }
       }
 
       const funcs = [

+ 11 - 0
src/modules/analysis/components/baseConfig/DimensionKnowledgeList.vue

@@ -164,15 +164,26 @@ export default {
       this.initData();
     },
     modified(data) {
+      const priDims = this.dataList.filter(
+        item => item.codePrimary === data.codePrimary
+      );
       if (data.id) {
         const pos = this.dataList.findIndex(item => item.id === data.id);
         this.dataList.splice(pos, 1, data);
       } else {
+        if (!data.interpretation)
+          data.interpretation = priDims[0] && priDims[0].interpretation;
+
         this.dataList.push({
           ...data,
           id: this.$randomCode()
         });
       }
+
+      priDims.map(item => {
+        item.namePrimary = data.namePrimary;
+        item.interpretation = data.interpretation;
+      });
       this.sortDataList();
       this.updateChange();
     },

+ 18 - 52
src/modules/analysis/components/baseConfig/ModifyKnowledgeDim.vue

@@ -124,11 +124,14 @@ export default {
         item => item.code === this.modalForm.codePrimary
       );
       if (existFirstDim) {
-        if (existFirstDim.name !== value)
-          return callback(new Error("一级知识维度错误"));
+        const existFirstDim1 = this.dictData.find(
+          item => item.name === value && value !== existFirstDim.name
+        );
+        if (existFirstDim1) return callback(new Error("一级知识维度已存在"));
       } else {
-        existFirstDim = this.dictData.find(item => item.name === value);
-        if (existFirstDim) return callback(new Error("一级知识维度已存在"));
+        const existFirstDim1 = this.dictData.find(item => item.name === value);
+        if (existFirstDim1 && !this.isEditOnlyOneDim)
+          return callback(new Error("一级知识维度已存在"));
       }
 
       callback();
@@ -148,20 +151,6 @@ export default {
           item => item.code === this.modalForm.codePrimary
         );
         if (existFirstDim) {
-          let existSecondDim = existFirstDim.children.find(
-            item => item.code === this.modalForm.codeSecond
-          );
-
-          if (existSecondDim) {
-            return callback();
-          } else {
-            existSecondDim = existFirstDim.children.find(
-              item => item.name === value
-            );
-            if (existSecondDim)
-              return callback(new Error("二级知识维度已存在"));
-          }
-        } else {
           const secondDimExist = this.dictData.some(item =>
             item.children.some(elem => elem.name === value)
           );
@@ -176,41 +165,11 @@ export default {
           item => item.code === this.modalForm.codePrimary
         );
         if (existFirstDim) {
-          let existSecondDim = existFirstDim.children.find(
-            item => item.code === this.modalForm.codeSecond
-          );
-
-          if (existSecondDim) {
-            if (
-              existSecondDim.code === this.instance.codeSecond &&
-              existSecondDim.name !== value
-            ) {
-              return callback(new Error("二级知识维度错误"));
-            }
-            if (
-              existSecondDim.code !== this.instance.codeSecond &&
-              existSecondDim.name === value
-            ) {
-              return callback(new Error("二级知识维度已存在"));
-            }
-
-            return callback();
-          } else {
-            existSecondDim = existFirstDim.children.find(
-              item =>
-                item.name === value && item.name !== this.instance.nameSecond
-            );
-            if (existSecondDim)
-              return callback(new Error("二级知识维度已存在"));
-          }
-        } else {
-          const secondDimExist = this.dictData.some(item =>
-            item.children.some(
-              elem =>
-                elem.name === value && elem.name !== this.instance.nameSecond
-            )
+          const existSecondDim = existFirstDim.children.find(
+            item =>
+              item.name === value && item.name !== this.instance.nameSecond
           );
-          if (secondDimExist) return callback(new Error("二级知识维度已存在"));
+          if (existSecondDim) return callback(new Error("二级知识维度已存在"));
         }
         return callback();
       };
@@ -259,6 +218,7 @@ export default {
       isSubmit: false,
       modalForm: {},
       dictData: [],
+      isEditOnlyOneDim: false,
       rules: {
         namePrimary: [
           {
@@ -321,6 +281,12 @@ export default {
     },
     visibleChange() {
       this.getDict();
+      const existPrimaryDim = this.dictData.find(
+        item => item.code === this.instance.codePrimary
+      );
+      this.isEditOnlyOneDim =
+        existPrimaryDim && existPrimaryDim.children.length === 1;
+
       this.initData(this.instance);
       this.$nextTick(() => {
         this.$refs.modalFormComp.clearValidate();

+ 3 - 0
src/modules/analysis/components/baseConfig/baseConfigsStore.js

@@ -53,6 +53,9 @@ const actions = {
       paperNumber: state.baseInfo.paperNumber,
       paperType: state.baseInfo.paperType
     };
+    if (state.baseInfo.useExamCloudStruct) {
+      datas.useExamCloudStruct = true;
+    }
     const data = await paperStructList(datas).catch(() => {});
     if (!data) return Promise.reject();
     commit("setStructList", data);

+ 1 - 3
src/modules/analysis/views/DataInitManage.vue

@@ -59,9 +59,7 @@
         >
           <template slot-scope="scope">
             <el-button
-              v-if="
-                checkPrivilege('link', 'window') && !scope.row.publishStatus
-              "
+              v-if="checkPrivilege('link', 'window') && scope.row.publishStatus"
               class="btn-primary"
               type="text"
               @click="toConfig(scope.row)"

+ 1 - 0
src/modules/stmms/views/ScoreArchive.vue

@@ -79,6 +79,7 @@
         <el-table-column prop="semesterName" label="考试时间"></el-table-column>
         <el-table-column prop="name" label="姓名" width="120"></el-table-column>
         <el-table-column prop="studentCode" label="学号"></el-table-column>
+        <el-table-column prop="examNumber" label="准考证号"></el-table-column>
         <el-table-column prop="orgName" label="院系"></el-table-column>
         <el-table-column prop="majorName" label="专业"></el-table-column>
         <el-table-column prop="clazzName" label="班级"></el-table-column>