zhangjie 10 月之前
父節點
當前提交
2ef0689665

+ 0 - 10
src/components/ImageContain.vue

@@ -27,7 +27,6 @@
       <img
         :key="image.url"
         :src="image.url"
-        :alt="imageName"
         ref="PreviewImgDetail"
         @load="resizeImage"
       />
@@ -111,15 +110,6 @@ export default {
   //     }
   //   }
   // },
-  computed: {
-    imageName() {
-      if (this.image.filename) return this.image.filename;
-
-      const st1 = this.image.url.split("?")[0] || "";
-      const st2 = st1.split("/").slice(-1) || "";
-      return st2;
-    },
-  },
   mounted() {
     this.registWheelHandle();
   },

+ 38 - 3
src/modules/base/components/ModifyStudent.vue

@@ -108,6 +108,21 @@
           clearable
         ></el-input>
       </el-form-item>
+      <!-- 自定义字段 -->
+      <template v-if="extendFields.length">
+        <el-form-item
+          v-for="field in extendFields"
+          :key="field.code"
+          :label="`${field.name}:`"
+        >
+          <el-input
+            v-model.trim="modalForm[field.code]"
+            :placeholder="`请输入${field.name}`"
+            clearable
+            :max-length="100"
+          ></el-input>
+        </el-form-item>
+      </template>
     </el-form>
     <div slot="footer">
       <el-button type="primary" :disabled="isSubmit" @click="submit"
@@ -148,6 +163,12 @@ export default {
         return {};
       },
     },
+    extendFields: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
   },
   computed: {
     isEdit() {
@@ -265,8 +286,15 @@ export default {
   },
   methods: {
     initData(val) {
-      this.modalForm = this.$objAssign(initModalForm, val);
-      this.modalForm.score = this.modalForm.score || undefined;
+      const modalForm = this.$objAssign(initModalForm, val);
+      modalForm.score = modalForm.score || undefined;
+      if (this.extendFields.length) {
+        const extendFieldDict = val.extendFieldDict || {};
+        this.extendFields.forEach((field) => {
+          modalForm[field.code] = extendFieldDict[field.code] || "";
+        });
+      }
+      this.modalForm = modalForm;
     },
     visibleChange() {
       this.initData(this.instance);
@@ -283,7 +311,14 @@ export default {
 
       if (this.isSubmit) return;
       this.isSubmit = true;
-      const data = await updateStudent(this.modalForm).catch(() => {
+      const datas = this.$objAssign(initModalForm, this.modalForm);
+      if (this.extendFields.length) {
+        const extendFieldsData = this.extendFields.map((field) => {
+          return { ...field, value: this.modalForm[field.code] };
+        });
+        datas.extendFields = JSON.stringify(extendFieldsData);
+      }
+      const data = await updateStudent(datas).catch(() => {
         this.isSubmit = false;
       });
 

+ 1 - 0
src/modules/base/views/FieldManage.vue

@@ -8,6 +8,7 @@
           :key="field.code"
           v-model="field.enable"
           :disabled="field.disabled"
+          @change="checkRuleChange"
           >{{ field.name }}</el-checkbox
         >
       </el-form-item>

+ 45 - 2
src/modules/base/views/StudentManage.vue

@@ -125,6 +125,21 @@
           label="备注"
           width="160"
         ></el-table-column>
+        <!-- 自定义字段 -->
+        <template v-if="extendFields.length">
+          <el-table-column
+            v-for="field in extendFields"
+            :key="field.code"
+            :prop="field.code"
+            :label="field.name"
+            width="140"
+          >
+            <span slot-scope="scope">{{
+              scope.row.extendFieldDict[field.code]
+            }}</span>
+          </el-table-column>
+        </template>
+
         <el-table-column prop="createTime" label="创建时间" width="170">
           <span slot-scope="scope">{{
             scope.row.createTime | timestampFilter
@@ -169,6 +184,7 @@
 
     <modify-student
       :instance="curRow"
+      :extendFields="extendFields"
       @modified="getList"
       ref="ModifyStudent"
     ></modify-student>
@@ -198,7 +214,12 @@
 </template>
 
 <script>
-import { studentListQuery, deleteStudent, exportStudentTemplate } from "../api";
+import {
+  studentListQuery,
+  deleteStudent,
+  exportStudentTemplate,
+  fieldListQuery,
+} from "../api";
 import ModifyStudent from "../components/ModifyStudent.vue";
 import ImportFile from "../../../components/ImportFile.vue";
 import DataTaskDialog from "../components/DataTaskDialog.vue";
@@ -222,13 +243,25 @@ export default {
       curRow: {},
       multipleSelection: [],
       taskType: "",
+      extendFields: [],
       // import
       tempDownloading: false,
       uploadUrl: "/api/admin/exam/student/import",
       dfilename: "考生导入模板.xlsx",
     };
   },
+  mounted() {
+    this.getExtendFields();
+  },
   methods: {
+    async getExtendFields() {
+      const res = await fieldListQuery();
+      const fields = res || [];
+
+      this.extendFields = fields.filter(
+        (item) => !item.basicField && item.enable
+      );
+    },
     async getList() {
       if (!this.checkPrivilege("list", "list")) return;
 
@@ -238,7 +271,17 @@ export default {
         pageSize: this.size,
       };
       const data = await studentListQuery(datas);
-      this.dataList = data.records;
+      this.dataList = data.records.map((item) => {
+        const eInfo = item.extendFields ? JSON.parse(item.extendFields) : [];
+        const extendFieldDict = {};
+        eInfo.forEach((field) => {
+          extendFieldDict[field.code] = field.value;
+        });
+        return {
+          ...item,
+          extendFieldDict,
+        };
+      });
       this.total = data.total;
     },
     toPage(page) {

+ 9 - 11
src/modules/record/components/ArchivesDetailStudentDialog.vue

@@ -20,7 +20,7 @@
             @on-next="toNextImage"
             @on-rotate="imageRotateChange"
           ></image-contain>
-          <div class="archives-student-content-tips">
+          <div v-if="curImage.url" class="archives-student-content-tips">
             第{{ curPage.curPageIndex + 1 }}张 /
             {{ curPage.pindex === 0 ? "正" : "反" }}面
           </div>
@@ -290,22 +290,20 @@ export default {
       this.curPage = this.getImageInfo(this.curImage.url);
     },
     toPrevImage() {
-      if (this.curImageIndex === 0) {
-        this.curImageIndex = this.imageList.length - 1;
-      } else {
-        this.curImageIndex--;
+      if (this.curImageIndex <= 0) {
+        this.$message.error("没有上一页了");
+        return;
       }
 
-      this.selectImage(this.curImageIndex);
+      this.selectImage(--this.curImageIndex);
     },
     toNextImage() {
-      if (this.curImageIndex === this.imageList.length - 1) {
-        this.curImageIndex = 0;
-      } else {
-        this.curImageIndex++;
+      if (this.curImageIndex >= this.imageList.length - 1) {
+        this.$message.error("没有下一页了");
+        return;
       }
 
-      this.selectImage(this.curImageIndex);
+      this.selectImage(++this.curImageIndex);
     },
   },
 };