zhangjie 6 місяців тому
батько
коміт
40d0ceafa5
1 змінених файлів з 49 додано та 16 видалено
  1. 49 16
      src/modules/base/components/ModifyExamStudent.vue

+ 49 - 16
src/modules/base/components/ModifyExamStudent.vue

@@ -16,7 +16,7 @@
       :model="modalForm"
       :rules="rules"
       :key="modalForm.id"
-      label-width="120px"
+      label-width="130px"
     >
       <!-- 必填信息 -->
       <el-form-item prop="semesterId" label="学期:">
@@ -156,21 +156,37 @@
       </el-form-item>
 
       <!-- 选填信息 -->
-      <el-form-item
-        v-for="item in optionalFields"
-        :key="`${item.code}${item.name}`"
-        :prop="item.code"
-        :label="`${item.name}:`"
-      >
-        <el-input
-          v-model.trim="modalForm[item.code]"
-          :placeholder="`请输入${item.name}`"
-          clearable
-          :disabled="
-            item.code === 'paperNumber' && isEdit && !!instance[item.code]
-          "
-        ></el-input>
-      </el-form-item>
+      <template v-for="item in optionalFields">
+        <template v-if="item.code === 'examDate'">
+          <el-form-item
+            :key="`${item.code}${item.name}`"
+            prop="examStartTime"
+            label="考试时间:"
+          >
+            <one-date-time-range
+              :start-date-time.sync="modalForm.examStartTime"
+              :end-date-time.sync="modalForm.examEndTime"
+            >
+            </one-date-time-range>
+          </el-form-item>
+        </template>
+        <template v-else>
+          <el-form-item
+            :key="`${item.code}${item.name}`"
+            :prop="item.code"
+            :label="`${item.name}:`"
+          >
+            <el-input
+              v-model.trim="modalForm[item.code]"
+              :placeholder="`请输入${item.name}`"
+              clearable
+              :disabled="
+                item.code === 'paperNumber' && isEdit && !!instance[item.code]
+              "
+            ></el-input>
+          </el-form-item>
+        </template>
+      </template>
 
       <!-- 扩展字段 -->
       <el-form-item
@@ -443,6 +459,18 @@ export default {
       this.optionalFields = requiredFieldData.filter(
         (item) => !item.disabled && item.enable
       );
+      // 选填字段中考试日期和时间的特殊处理
+      const timeCodes = ["examDate", "examTime"];
+      const timeFields = this.optionalFields.filter((item) =>
+        timeCodes.includes(item.code)
+      );
+      if (timeFields.length) {
+        this.optionalFields = this.optionalFields.filter(
+          (item) => !timeCodes.includes(item.code)
+        );
+        this.optionalFields.unshift({ ...timeFields[0], code: "examDate" });
+      }
+
       const extendFieldData = examRule.extendFields
         ? JSON.parse(examRule.extendFields)
         : [];
@@ -507,6 +535,11 @@ export default {
           });
         rules.paperNumber[0].required = true;
       }
+
+      // 选填字段中考试日期时间的处理
+      if (this.optionalFields.some((item) => item.code === "examDate")) {
+        rules.examStartTime[0].required = false;
+      }
       this.rules = rules;
     },
     cancel() {