zhangjie 3 tahun lalu
induk
melakukan
b7f90887a5

+ 7 - 0
src/components/ActivitySelect.vue

@@ -30,6 +30,10 @@ export default {
     value: String,
     examId: String,
     styles: { type: String },
+    examRequired: {
+      type: Boolean,
+      default: false,
+    },
   },
   data() {
     return {
@@ -53,6 +57,9 @@ export default {
   },
   methods: {
     async search(query) {
+      this.optionList = [];
+      if (this.examRequired && !this.examId) return;
+
       const res = await searchActivities({
         examId: this.examId,
         code: query,

+ 7 - 0
src/components/CourseSelect.vue

@@ -30,6 +30,10 @@ export default {
     value: String,
     examId: String,
     styles: { type: String },
+    examRequired: {
+      type: Boolean,
+      default: false,
+    },
   },
   data() {
     return {
@@ -53,6 +57,9 @@ export default {
   },
   methods: {
     async search(query) {
+      this.optionList = [];
+      if (this.examRequired && !this.examId) return;
+
       const res = await searchCourses({
         examId: this.examId,
         courseName: query,

+ 1 - 0
src/components/ExamRoomSelect.vue

@@ -55,6 +55,7 @@ export default {
   },
   methods: {
     async search(query) {
+      this.optionList = [];
       if (!this.examId) return;
       const res = await this.$http.post(
         "/api/admin/sys/exam/privilegeQuery?" +

+ 5 - 2
src/components/VEditor/VEditor.vue

@@ -50,11 +50,14 @@ export default {
     emitJSON() {
       if (this.$refs.editor.contentEditable) {
         const json = toJSON(this.$refs.editor);
-        // this.$emit("input", json);
-        // this.$emit("change", json);
         this.$emit("result", json);
+        // this.$emit("input", json);
+        this.$emit("change", json);
       }
     },
+    getTextContent() {
+      return this.$refs.editor.textContent;
+    },
   },
 };
 </script>

+ 36 - 2
src/features/examwork/ExamManagement/ExamEdit.vue

@@ -511,8 +511,9 @@
           :disabled="disableEdit"
         >
           <el-row>
-            <el-form-item label="考试须知">
+            <el-form-item prop="preNotice" label="考试须知">
               <VEditor
+                ref="preNoticeEditor"
                 :value="form.preNoticeClone"
                 style="width: 300px;"
                 @result="(v) => (form.preNotice = v)"
@@ -531,8 +532,9 @@
             </el-form-item>
           </el-row>
           <el-row>
-            <el-form-item label="考后说明">
+            <el-form-item prop="postNotice" label="考后说明">
               <VEditor
+                ref="postNoticeEditor"
                 :value="form.postNoticeClone"
                 style="width: 300px;"
                 @result="(v) => (form.postNotice = v)"
@@ -875,6 +877,38 @@ export default {
             });
           },
         },
+        postNotice: {
+          trigger: "change",
+          validator: (rule, value) => {
+            // console.log(value);
+            return new Promise((resolve, reject) => {
+              if (
+                value &&
+                this.$refs.postNoticeEditor.getTextContent().length > 1000
+              ) {
+                reject("考后说明最多允许输入1000个字符");
+              } else {
+                resolve();
+              }
+            });
+          },
+        },
+        preNotice: {
+          trigger: "change",
+          validator: (rule, value) => {
+            // console.log(value);
+            return new Promise((resolve, reject) => {
+              if (
+                value &&
+                this.$refs.preNoticeEditor.getTextContent().length > 1000
+              ) {
+                reject("考试须知最多允许输入1000个字符");
+              } else {
+                resolve();
+              }
+            });
+          },
+        },
       },
       sources: [
         "MOBILE_FIRST",

+ 10 - 2
src/features/examwork/ExamStudentManagement/ExamStudentManagement.vue

@@ -10,13 +10,21 @@
             <ExamSelect v-model="form.examId" />
           </el-form-item>
           <el-form-item label="场次代码">
-            <ActivitySelect :examId="form.examId" v-model="form.activityId" />
+            <ActivitySelect
+              :examId="form.examId"
+              v-model="form.activityId"
+              exam-required
+            />
           </el-form-item>
           <el-form-item label="考场名称">
             <ExamRoomSelect :examId="form.examId" v-model="form.roomCode" />
           </el-form-item>
           <el-form-item label="科目">
-            <CourseSelect :examId="form.examId" v-model="form.courseCode" />
+            <CourseSelect
+              :examId="form.examId"
+              v-model="form.courseCode"
+              exam-required
+            />
           </el-form-item>
           <el-form-item label="姓名">
             <el-input v-model.trim="form.name"></el-input>

+ 6 - 1
src/features/examwork/MarkResultManagement/MarkResultManagement.vue

@@ -13,10 +13,15 @@
             <ActivitySelect
               :examId="form.examId"
               v-model="form.examActivityId"
+              exam-required
             />
           </el-form-item>
           <el-form-item label="科目">
-            <CourseSelect :examId="form.examId" v-model="form.courseCode" />
+            <CourseSelect
+              :examId="form.examId"
+              v-model="form.courseCode"
+              exam-required
+            />
           </el-form-item>
           <el-form-item label="姓名">
             <el-input v-model.trim="form.name"></el-input>