xiatian 4 лет назад
Родитель
Сommit
41c7b370b3

+ 198 - 1
src/modules/examwork/view/onlineExam.vue

@@ -231,6 +231,107 @@
                   >
                 </el-row>
               </el-tab-pane>
+              <!-- 周期设置 -->
+              <el-tab-pane label="周期设置" name="tab8">
+                <el-row>
+                  <el-col :span="24">
+                    <el-form-item
+                      label="是否开启周期设置"
+                      :label-width="style.label_width_tab4"
+                    >
+                      <el-radio-group
+                        v-model="form.properties.EXAM_CYCLE_ENABLED"
+                        class="input"
+                        @change="examCycleEnabledChange"
+                      >
+                        <el-radio label="true">开启</el-radio>
+                        <el-radio label="false">不开启</el-radio>
+                      </el-radio-group></el-form-item
+                    >
+                  </el-col>
+                </el-row>
+                <el-row
+                  v-if="form.properties.EXAM_CYCLE_ENABLED == 'true'"
+                  style="height: 90px"
+                >
+                  <el-col :span="24">
+                    <el-form-item
+                      style="width:100%"
+                      label="日期循环设置"
+                      prop="examCycleWeekArr"
+                      :label-width="style.label_width_tab4"
+                    >
+                      <el-checkbox-group
+                        style="width:100%"
+                        v-model="examCycleWeekArr"
+                        class="input"
+                      >
+                        <el-checkbox label="1" key="1">星期一</el-checkbox>
+                        <el-checkbox label="2" key="2">星期二</el-checkbox>
+                        <el-checkbox label="3" key="3">星期三</el-checkbox>
+                        <el-checkbox label="4" key="4">星期四</el-checkbox>
+                        <el-checkbox label="5" key="5">星期五</el-checkbox>
+                        <el-checkbox label="6" key="6">星期六</el-checkbox>
+                        <el-checkbox label="7" key="7">星期七</el-checkbox>
+                      </el-checkbox-group></el-form-item
+                    >
+                  </el-col>
+                </el-row>
+                <template v-if="form.properties.EXAM_CYCLE_ENABLED == 'true'">
+                  <el-row>
+                    <el-col :span="14">
+                      <el-form-item
+                        label="时间分段设置"
+                        :label-width="style.label_width_tab4"
+                        prop="examCycleTimeRangeArr"
+                      >
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" style="line-height: 48px;height: 40px;">
+                      <i
+                        class="el-icon-circle-plus"
+                        style="color:#00A4FF;font-size:24px;"
+                        @click="addCycleTimeRange"
+                      ></i>
+                    </el-col>
+                  </el-row>
+
+                  <el-row
+                    v-for="(item, index) in examCycleTimeRangeArr"
+                    :key="'tr' + index"
+                  >
+                    <el-col :span="14">
+                      <el-form-item
+                        :label-width="style.label_width_tab4"
+                        :label="index + 1 + '.'"
+                      >
+                        <el-time-picker
+                          :picker-options="{
+                            format: 'HH:mm'
+                          }"
+                          class="input"
+                          style="width:100%"
+                          v-model="item.timeRange"
+                          is-range
+                          start-placeholder="开始时间"
+                          range-separator="至"
+                          end-placeholder="结束时间"
+                          value-format="HH:mm"
+                          :clearable="false"
+                          size="small"
+                        ></el-time-picker>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" style="line-height: 48px;height: 40px;">
+                      <i
+                        class="el-icon-remove"
+                        style="color:#00A4FF;font-size:24px;"
+                        @click="removeExamCycleTimeRange(index)"
+                      ></i>
+                    </el-col>
+                  </el-row>
+                </template>
+              </el-tab-pane>
               <!-- 控制设置 -->
               <el-tab-pane label="控制设置" name="tab2">
                 <el-row>
@@ -780,6 +881,22 @@ import ckeditor from "@/components/ckeditor.vue";
 import LinkTitlesCustom from "@/components/LinkTitlesCustom.vue";
 let _this = null;
 
+let validateExamCycleTimeRange = (rule, value, callback) => {
+  if (_this.examCycleTimeRangeArr.length == 0) {
+    callback(new Error("请至少设置一个时间段"));
+  } else {
+    callback();
+  }
+};
+
+let validateExamCycleWeek = (rule, value, callback) => {
+  if (_this.examCycleWeekArr.length == 0) {
+    callback(new Error("请至少勾选一个日期"));
+  } else {
+    callback();
+  }
+};
+
 let validateCode = (rule, value, callback) => {
   if (_this.examId == "add") {
     _this.form.code = _this.form.name;
@@ -1188,6 +1305,8 @@ export default {
         label_width_tab6: "120px",
         label_width_tab7: "150px"
       },
+      examCycleTimeRangeArr: [],
+      examCycleWeekArr: ["1", "2", "3", "4", "5", "6", "7"],
       activeName: "tab1",
       toActiveName: null,
       examDatetimeRange: [],
@@ -1247,7 +1366,10 @@ export default {
           ADD_FACE_VERIFY_OUT_FREEZE_TIME: "false",
           OUT_FREEZE_TIME_FACE_VERIFY_START_MINUTE: 10,
           OUT_FREEZE_TIME_FACE_VERIFY_END_MINUTE: 30,
-          LIMITED_IF_NO_SPECIAL_SETTINGS: "false"
+          LIMITED_IF_NO_SPECIAL_SETTINGS: "false",
+          EXAM_CYCLE_ENABLED: "false",
+          EXAM_CYCLE_WEEK: "",
+          EXAM_CYCLE_TIME_RANGE: ""
         }
       },
       examTypeList: EXAM_TYPE,
@@ -1334,12 +1456,71 @@ export default {
             validator: validateLivingWarnThreshold,
             trigger: "change"
           }
+        ],
+        examCycleWeekArr: [
+          {
+            required: true,
+            validator: validateExamCycleWeek,
+            trigger: "change"
+          }
+        ],
+        examCycleTimeRangeArr: [
+          {
+            required: true,
+            validator: validateExamCycleTimeRange,
+            trigger: "change"
+          }
         ]
       }
     };
   },
 
   methods: {
+    examCycleEnabledChange(val) {
+      if (val == "true") {
+        this.examCycleWeekArr = ["1", "2", "3", "4", "5", "6", "7"];
+        this.addCycleTimeRange();
+      } else {
+        this.examCycleTimeRangeArr = [];
+        this.examCycleWeekArr = [];
+      }
+    },
+    getNowTimeStr() {
+      let now = new Date();
+      let hour = now.getHours();
+      if (hour.length < 10) {
+        hour = "0" + hour;
+      }
+      let minute = now.getMinutes();
+      if (minute < 10) {
+        minute = "0" + minute;
+      }
+      return hour + ":" + minute;
+    },
+    removeExamCycleTimeRange(index) {
+      if (this.examCycleTimeRangeArr.length == 1) {
+        this.$notify({
+          type: "warning",
+          message: "不能删除最后一个分段"
+        });
+        return;
+      }
+      this.examCycleTimeRangeArr.splice(index, 1);
+      this.$refs.form.validateField("examCycleTimeRangeArr");
+    },
+    addCycleTimeRange() {
+      if (this.examCycleTimeRangeArr.length >= 12) {
+        this.$notify({
+          type: "warning",
+          message: "时间分段不得超过12条"
+        });
+        return;
+      }
+      this.examCycleTimeRangeArr.push({
+        timeRange: [this.getNowTimeStr(), this.getNowTimeStr()]
+      });
+      this.$refs.form.validateField("examCycleTimeRangeArr");
+    },
     faceEnableChange() {
       if (this.form.properties.IS_FACE_ENABLE == "false") {
         this.form.properties.IS_STRANGER_ENABLE = "false";
@@ -1387,6 +1568,16 @@ export default {
             this.form.properties.APP_EXAM_ENABLED =
               this.form.properties.APP_EXAM_ENABLED === "true";
 
+            if (this.form.properties.EXAM_CYCLE_TIME_RANGE) {
+              this.examCycleTimeRangeArr = JSON.parse(
+                this.form.properties.EXAM_CYCLE_TIME_RANGE
+              );
+            }
+            if (this.form.properties.EXAM_CYCLE_WEEK) {
+              this.examCycleWeekArr = JSON.parse(
+                this.form.properties.EXAM_CYCLE_WEEK
+              );
+            }
             this.show_ckeditor = true;
 
             this.checkRootOrgPrivileges();
@@ -1459,6 +1650,12 @@ export default {
       this.toActiveName = null;
       this.form.beginTime = this.examDatetimeRange[0];
       this.form.endTime = this.examDatetimeRange[1];
+      this.form.properties.EXAM_CYCLE_TIME_RANGE = JSON.stringify(
+        this.examCycleTimeRangeArr
+      );
+      this.form.properties.EXAM_CYCLE_WEEK = JSON.stringify(
+        this.examCycleWeekArr
+      );
       console.log(this.form);
       let url = EXAM_WORK_API + "/exam";
       this.$refs.form.validate(valid => {

+ 199 - 1
src/modules/examwork/view/onlineHomework.vue

@@ -214,6 +214,107 @@
                   </el-form-item>
                 </el-row>
               </el-tab-pane>
+              <!-- 周期设置 -->
+              <el-tab-pane label="周期设置" name="tab8">
+                <el-row>
+                  <el-col :span="24">
+                    <el-form-item
+                      label="是否开启周期设置"
+                      :label-width="style.label_width_tab4"
+                    >
+                      <el-radio-group
+                        v-model="form.properties.EXAM_CYCLE_ENABLED"
+                        class="input"
+                        @change="examCycleEnabledChange"
+                      >
+                        <el-radio label="true">开启</el-radio>
+                        <el-radio label="false">不开启</el-radio>
+                      </el-radio-group></el-form-item
+                    >
+                  </el-col>
+                </el-row>
+                <el-row
+                  v-if="form.properties.EXAM_CYCLE_ENABLED == 'true'"
+                  style="height: 90px"
+                >
+                  <el-col :span="24">
+                    <el-form-item
+                      style="width:100%"
+                      label="日期循环设置"
+                      prop="examCycleWeekArr"
+                      :label-width="style.label_width_tab4"
+                    >
+                      <el-checkbox-group
+                        style="width:100%"
+                        v-model="examCycleWeekArr"
+                        class="input"
+                      >
+                        <el-checkbox label="1" key="1">星期一</el-checkbox>
+                        <el-checkbox label="2" key="2">星期二</el-checkbox>
+                        <el-checkbox label="3" key="3">星期三</el-checkbox>
+                        <el-checkbox label="4" key="4">星期四</el-checkbox>
+                        <el-checkbox label="5" key="5">星期五</el-checkbox>
+                        <el-checkbox label="6" key="6">星期六</el-checkbox>
+                        <el-checkbox label="7" key="7">星期七</el-checkbox>
+                      </el-checkbox-group></el-form-item
+                    >
+                  </el-col>
+                </el-row>
+                <template v-if="form.properties.EXAM_CYCLE_ENABLED == 'true'">
+                  <el-row>
+                    <el-col :span="14">
+                      <el-form-item
+                        label="时间分段设置"
+                        :label-width="style.label_width_tab4"
+                        prop="examCycleTimeRangeArr"
+                      >
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" style="line-height: 48px;height: 40px;">
+                      <i
+                        class="el-icon-circle-plus"
+                        style="color:#00A4FF;font-size:24px;"
+                        @click="addCycleTimeRange"
+                      ></i>
+                    </el-col>
+                  </el-row>
+
+                  <el-row
+                    v-for="(item, index) in examCycleTimeRangeArr"
+                    :key="'tr' + index"
+                  >
+                    <el-col :span="14">
+                      <el-form-item
+                        :label-width="style.label_width_tab4"
+                        :label="index + 1 + '.'"
+                      >
+                        <el-time-picker
+                          :picker-options="{
+                            format: 'HH:mm'
+                          }"
+                          class="input"
+                          style="width:100%"
+                          v-model="item.timeRange"
+                          is-range
+                          start-placeholder="开始时间"
+                          range-separator="至"
+                          end-placeholder="结束时间"
+                          value-format="HH:mm"
+                          :clearable="false"
+                          size="small"
+                        ></el-time-picker>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" style="line-height: 48px;height: 40px;">
+                      <i
+                        class="el-icon-remove"
+                        style="color:#00A4FF;font-size:24px;"
+                        @click="removeExamCycleTimeRange(index)"
+                      ></i>
+                    </el-col>
+                  </el-row>
+                </template>
+              </el-tab-pane>
               <!-- 控制设置 -->
               <el-tab-pane label="控制设置" name="tab2">
                 <el-row>
@@ -515,6 +616,22 @@ import ckeditor from "@/components/ckeditor.vue";
 import LinkTitlesCustom from "@/components/LinkTitlesCustom.vue";
 let _this = null;
 
+let validateExamCycleTimeRange = (rule, value, callback) => {
+  if (_this.examCycleTimeRangeArr.length == 0) {
+    callback(new Error("请至少设置一个时间段"));
+  } else {
+    callback();
+  }
+};
+
+let validateExamCycleWeek = (rule, value, callback) => {
+  if (_this.examCycleWeekArr.length == 0) {
+    callback(new Error("请至少勾选一个日期"));
+  } else {
+    callback();
+  }
+};
+
 let validateCode = (rule, value, callback) => {
   if (_this.examId == "add") {
     _this.form.code = _this.form.name;
@@ -677,6 +794,8 @@ export default {
         label_width_tab6: "120px",
         label_width_tab7: "150px"
       },
+      examCycleTimeRangeArr: [],
+      examCycleWeekArr: ["1", "2", "3", "4", "5", "6", "7"],
       activeName: "tab1",
       toActiveName: null,
       examDatetimeRange: [],
@@ -733,7 +852,10 @@ export default {
           ADD_FACE_VERIFY_OUT_FREEZE_TIME: "false",
           OUT_FREEZE_TIME_FACE_VERIFY_START_MINUTE: 10,
           OUT_FREEZE_TIME_FACE_VERIFY_END_MINUTE: 30,
-          LIMITED_IF_NO_SPECIAL_SETTINGS: "false"
+          LIMITED_IF_NO_SPECIAL_SETTINGS: "false",
+          EXAM_CYCLE_ENABLED: "false",
+          EXAM_CYCLE_WEEK: "",
+          EXAM_CYCLE_TIME_RANGE: ""
         }
       },
       examTypeList: EXAM_TYPE,
@@ -771,12 +893,71 @@ export default {
             validator: validateMaxInterruptNum,
             trigger: "blur"
           }
+        ],
+        examCycleWeekArr: [
+          {
+            required: true,
+            validator: validateExamCycleWeek,
+            trigger: "change"
+          }
+        ],
+        examCycleTimeRangeArr: [
+          {
+            required: true,
+            validator: validateExamCycleTimeRange,
+            trigger: "change"
+          }
         ]
       }
     };
   },
 
   methods: {
+    examCycleEnabledChange(val) {
+      if (val == "true") {
+        this.examCycleWeekArr = ["1", "2", "3", "4", "5", "6", "7"];
+        this.addCycleTimeRange();
+      } else {
+        this.examCycleTimeRangeArr = [];
+        this.examCycleWeekArr = [];
+      }
+    },
+    getNowTimeStr() {
+      let now = new Date();
+      let hour = now.getHours();
+      if (hour.length < 10) {
+        hour = "0" + hour;
+      }
+      let minute = now.getMinutes();
+      if (minute < 10) {
+        minute = "0" + minute;
+      }
+      return hour + ":" + minute;
+    },
+    removeExamCycleTimeRange(index) {
+      if (this.examCycleTimeRangeArr.length == 1) {
+        this.$notify({
+          type: "warning",
+          message: "不能删除最后一个分段"
+        });
+        return;
+      }
+      this.examCycleTimeRangeArr.splice(index, 1);
+      this.$refs.form.validateField("examCycleTimeRangeArr");
+    },
+    addCycleTimeRange() {
+      if (this.examCycleTimeRangeArr.length >= 12) {
+        this.$notify({
+          type: "warning",
+          message: "时间分段不得超过12条"
+        });
+        return;
+      }
+      this.examCycleTimeRangeArr.push({
+        timeRange: [this.getNowTimeStr(), this.getNowTimeStr()]
+      });
+      this.$refs.form.validateField("examCycleTimeRangeArr");
+    },
     faceEnableChange() {
       if (this.form.properties.IS_FACE_ENABLE == "false") {
         this.form.properties.IS_STRANGER_ENABLE = "false";
@@ -820,6 +1001,17 @@ export default {
             this.form.properties.LIMITED_IF_NO_SPECIAL_SETTINGS =
               this.form.properties.LIMITED_IF_NO_SPECIAL_SETTINGS === "true";
 
+            if (this.form.properties.EXAM_CYCLE_TIME_RANGE) {
+              this.examCycleTimeRangeArr = JSON.parse(
+                this.form.properties.EXAM_CYCLE_TIME_RANGE
+              );
+            }
+            if (this.form.properties.EXAM_CYCLE_WEEK) {
+              this.examCycleWeekArr = JSON.parse(
+                this.form.properties.EXAM_CYCLE_WEEK
+              );
+            }
+
             this.show_ckeditor = true;
 
             this.checkRootOrgPrivileges();
@@ -888,6 +1080,12 @@ export default {
       this.toActiveName = null;
       this.form.beginTime = this.examDatetimeRange[0];
       this.form.endTime = this.examDatetimeRange[1];
+      this.form.properties.EXAM_CYCLE_TIME_RANGE = JSON.stringify(
+        this.examCycleTimeRangeArr
+      );
+      this.form.properties.EXAM_CYCLE_WEEK = JSON.stringify(
+        this.examCycleWeekArr
+      );
       console.log(this.form);
       let url = EXAM_WORK_API + "/exam";
       this.$refs.form.validate(valid => {

+ 200 - 2
src/modules/examwork/view/practiceExam.vue

@@ -140,6 +140,107 @@
                   </el-form-item>
                 </el-row>
               </el-tab-pane>
+              <!-- 周期设置 -->
+              <el-tab-pane label="周期设置" name="tab4">
+                <el-row>
+                  <el-col :span="24">
+                    <el-form-item
+                      label="是否开启周期设置"
+                      :label-width="style.label_width_tab4"
+                    >
+                      <el-radio-group
+                        v-model="form.properties.EXAM_CYCLE_ENABLED"
+                        class="input"
+                        @change="examCycleEnabledChange"
+                      >
+                        <el-radio label="true">开启</el-radio>
+                        <el-radio label="false">不开启</el-radio>
+                      </el-radio-group></el-form-item
+                    >
+                  </el-col>
+                </el-row>
+                <el-row
+                  v-if="form.properties.EXAM_CYCLE_ENABLED == 'true'"
+                  style="height: 90px"
+                >
+                  <el-col :span="24">
+                    <el-form-item
+                      style="width:100%"
+                      label="日期循环设置"
+                      prop="examCycleWeekArr"
+                      :label-width="style.label_width_tab4"
+                    >
+                      <el-checkbox-group
+                        style="width:100%"
+                        v-model="examCycleWeekArr"
+                        class="input"
+                      >
+                        <el-checkbox label="1" key="1">星期一</el-checkbox>
+                        <el-checkbox label="2" key="2">星期二</el-checkbox>
+                        <el-checkbox label="3" key="3">星期三</el-checkbox>
+                        <el-checkbox label="4" key="4">星期四</el-checkbox>
+                        <el-checkbox label="5" key="5">星期五</el-checkbox>
+                        <el-checkbox label="6" key="6">星期六</el-checkbox>
+                        <el-checkbox label="7" key="7">星期七</el-checkbox>
+                      </el-checkbox-group></el-form-item
+                    >
+                  </el-col>
+                </el-row>
+                <template v-if="form.properties.EXAM_CYCLE_ENABLED == 'true'">
+                  <el-row>
+                    <el-col :span="14">
+                      <el-form-item
+                        label="时间分段设置"
+                        :label-width="style.label_width_tab4"
+                        prop="examCycleTimeRangeArr"
+                      >
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" style="line-height: 48px;height: 40px;">
+                      <i
+                        class="el-icon-circle-plus"
+                        style="color:#00A4FF;font-size:24px;"
+                        @click="addCycleTimeRange"
+                      ></i>
+                    </el-col>
+                  </el-row>
+
+                  <el-row
+                    v-for="(item, index) in examCycleTimeRangeArr"
+                    :key="'tr' + index"
+                  >
+                    <el-col :span="14">
+                      <el-form-item
+                        :label-width="style.label_width_tab4"
+                        :label="index + 1 + '.'"
+                      >
+                        <el-time-picker
+                          :picker-options="{
+                            format: 'HH:mm'
+                          }"
+                          class="input"
+                          style="width:100%"
+                          v-model="item.timeRange"
+                          is-range
+                          start-placeholder="开始时间"
+                          range-separator="至"
+                          end-placeholder="结束时间"
+                          value-format="HH:mm"
+                          :clearable="false"
+                          size="small"
+                        ></el-time-picker>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" style="line-height: 48px;height: 40px;">
+                      <i
+                        class="el-icon-remove"
+                        style="color:#00A4FF;font-size:24px;"
+                        @click="removeExamCycleTimeRange(index)"
+                      ></i>
+                    </el-col>
+                  </el-row>
+                </template>
+              </el-tab-pane>
               <!-- 控制设置 -->
               <el-tab-pane label="控制设置" name="tab2">
                 <el-row>
@@ -262,6 +363,22 @@ import LinkTitlesCustom from "@/components/LinkTitlesCustom.vue";
 
 let _this = null;
 
+let validateExamCycleTimeRange = (rule, value, callback) => {
+  if (_this.examCycleTimeRangeArr.length == 0) {
+    callback(new Error("请至少设置一个时间段"));
+  } else {
+    callback();
+  }
+};
+
+let validateExamCycleWeek = (rule, value, callback) => {
+  if (_this.examCycleWeekArr.length == 0) {
+    callback(new Error("请至少勾选一个日期"));
+  } else {
+    callback();
+  }
+};
+
 let validateCode = (rule, value, callback) => {
   if (_this.examId == "add") {
     _this.form.code = _this.form.name;
@@ -406,8 +523,11 @@ export default {
       style: {
         label_width_tab1: "80px",
         label_width_tab2: "110px",
-        label_width_tab3: "120px"
+        label_width_tab3: "120px",
+        label_width_tab4: "170px"
       },
+      examCycleTimeRangeArr: [],
+      examCycleWeekArr: ["1", "2", "3", "4", "5", "6", "7"],
       activeName: "tab1",
       toActiveName: null,
       examDatetimeRange: [],
@@ -427,7 +547,10 @@ export default {
           BEFORE_EXAM_REMARK: "",
           AFTER_EXAM_REMARK: "",
           IS_OBJ_SCORE_VIEW: "true",
-          PRACTICE_TYPE: "IN_PRACTICE"
+          PRACTICE_TYPE: "IN_PRACTICE",
+          EXAM_CYCLE_ENABLED: "false",
+          EXAM_CYCLE_WEEK: "",
+          EXAM_CYCLE_TIME_RANGE: ""
         }
       },
       examTypeList: EXAM_TYPE,
@@ -457,12 +580,71 @@ export default {
             validator: validateExamReconnectTime,
             trigger: "blur"
           }
+        ],
+        examCycleWeekArr: [
+          {
+            required: true,
+            validator: validateExamCycleWeek,
+            trigger: "change"
+          }
+        ],
+        examCycleTimeRangeArr: [
+          {
+            required: true,
+            validator: validateExamCycleTimeRange,
+            trigger: "change"
+          }
         ]
       }
     };
   },
 
   methods: {
+    examCycleEnabledChange(val) {
+      if (val == "true") {
+        this.examCycleWeekArr = ["1", "2", "3", "4", "5", "6", "7"];
+        this.addCycleTimeRange();
+      } else {
+        this.examCycleTimeRangeArr = [];
+        this.examCycleWeekArr = [];
+      }
+    },
+    getNowTimeStr() {
+      let now = new Date();
+      let hour = now.getHours();
+      if (hour.length < 10) {
+        hour = "0" + hour;
+      }
+      let minute = now.getMinutes();
+      if (minute < 10) {
+        minute = "0" + minute;
+      }
+      return hour + ":" + minute;
+    },
+    removeExamCycleTimeRange(index) {
+      if (this.examCycleTimeRangeArr.length == 1) {
+        this.$notify({
+          type: "warning",
+          message: "不能删除最后一个分段"
+        });
+        return;
+      }
+      this.examCycleTimeRangeArr.splice(index, 1);
+      this.$refs.form.validateField("examCycleTimeRangeArr");
+    },
+    addCycleTimeRange() {
+      if (this.examCycleTimeRangeArr.length >= 12) {
+        this.$notify({
+          type: "warning",
+          message: "时间分段不得超过12条"
+        });
+        return;
+      }
+      this.examCycleTimeRangeArr.push({
+        timeRange: [this.getNowTimeStr(), this.getNowTimeStr()]
+      });
+      this.$refs.form.validateField("examCycleTimeRangeArr");
+    },
     init() {
       if (this.examId != "add") {
         let url = EXAM_WORK_API + "/exam/" + this.examId;
@@ -480,6 +662,16 @@ export default {
               this.form.properties,
               response.data
             );
+            if (this.form.properties.EXAM_CYCLE_TIME_RANGE) {
+              this.examCycleTimeRangeArr = JSON.parse(
+                this.form.properties.EXAM_CYCLE_TIME_RANGE
+              );
+            }
+            if (this.form.properties.EXAM_CYCLE_WEEK) {
+              this.examCycleWeekArr = JSON.parse(
+                this.form.properties.EXAM_CYCLE_WEEK
+              );
+            }
             this.show_ckeditor = true;
           });
         });
@@ -493,6 +685,12 @@ export default {
       this.toActiveName = null;
       this.form.beginTime = this.examDatetimeRange[0];
       this.form.endTime = this.examDatetimeRange[1];
+      this.form.properties.EXAM_CYCLE_TIME_RANGE = JSON.stringify(
+        this.examCycleTimeRangeArr
+      );
+      this.form.properties.EXAM_CYCLE_WEEK = JSON.stringify(
+        this.examCycleWeekArr
+      );
       console.log(this.form);
       let url = EXAM_WORK_API + "/exam";
       this.$refs.form.validate(valid => {