소스 검색

outlet 换名

WANG 6 년 전
부모
커밋
50865f29a4
3개의 변경된 파일15개의 추가작업 그리고 2225개의 파일을 삭제
  1. 6 870
      src/modules/examwork/view/offlineExam.vue
  2. 5 865
      src/modules/examwork/view/onlineExam.vue
  3. 4 490
      src/modules/examwork/view/practiceExam.vue

+ 6 - 870
src/modules/examwork/view/offlineExam.vue

@@ -1,878 +1,14 @@
 <template>
-  <div>
-    <section class="content" style="margin-top: -10px;">
-      <div class="box box-info">
-        <!-- 头信息 -->
-        <div
-          class="box-header with-border"
-          style="background-color:#D3DCE6;margin-bottom:20px;"
-        >
-          <h3 class="box-title">离线考试</h3>
-          <div class="box-tools pull-right">
-            <button
-              type="button"
-              class="btn btn-box-tool"
-              data-widget="collapse"
-            >
-              <i class="fa fa-minus"></i>
-            </button>
-          </div>
-        </div>
-
-        <!-- 正文信息 -->
-        <div
-          class="box-body"
-          v-loading="formLoading"
-          element-loading-text="处理中请稍后"
-        >
-          <!-- 基础信息 -->
-          <el-form
-            :inline="true"
-            :rules="rules"
-            ref="offlineExamForm"
-            :model="offlineExamForm"
-            label-position="right"
-            label-width="100px"
-          >
-            <div style="text-align:right">
-              <el-button type="primary" @click="saveOfflineExam"
-                >确 定</el-button
-              >
-              <el-button @click="back">返 回</el-button>
-            </div>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="基础信息" name="first">
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试名称"
-                      :label-width="formLabelWidth"
-                      prop="name"
-                    >
-                      <el-input
-                        style="width:200px"
-                        :maxlength="50"
-                        type="textarea"
-                        autosize
-                        v-model="offlineExamForm.name"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试类型"
-                      class="select-margin"
-                      prop="examType"
-                    >
-                      <el-select
-                        style="width:200px"
-                        :disabled="true"
-                        v-model="offlineExamForm.examType"
-                        placeholder="请选择"
-                      >
-                        <el-option
-                          v-for="item in examTypeList"
-                          :key="item.value"
-                          :label="item.label"
-                          :value="item.value"
-                        >
-                        </el-option>
-                      </el-select>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="开始时间"
-                      :label-width="formLabelWidth"
-                      prop="beginTime"
-                    >
-                      <el-date-picker
-                        style="width:200px"
-                        v-model.number="offlineExamForm.beginTime"
-                        type="datetime"
-                        placeholder="选择考试开始时间"
-                        @change="getBeginTime"
-                      >
-                      </el-date-picker>
-                    </el-form-item>
-                    <el-form-item
-                      label="结束时间"
-                      :label-width="formLabelWidth"
-                      prop="endTime"
-                    >
-                      <el-date-picker
-                        style="width:200px"
-                        v-model.number="offlineExamForm.endTime"
-                        type="datetime"
-                        placeholder="选择考试结束时间"
-                        @change="getEndTime"
-                      >
-                      </el-date-picker>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="上传附件"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        v-model="
-                          offlineExamForm.properties.CAN_UPLOAD_ATTACHMENT
-                        "
-                      >
-                        <el-radio label="true">允许</el-radio>
-                        <el-radio label="false">不允许</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="是否开启"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group v-model="offlineExamForm.enable">
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-          </el-form>
-
-          <!-- 特殊设置 -->
-          <el-form
-            :inline="true"
-            :rules="rules"
-            ref="examOrgSearch"
-            :model="examOrgSearch"
-            label-position="right"
-            label-width="100px"
-          >
-            <el-tabs v-model="tabs" v-show="this.examId != 'add'">
-              <el-tab-pane label="学习中心特殊设置" name="first">
-                <el-form-item label="学习中心" label-width="120px" prop="orgId">
-                  <el-select
-                    class="select"
-                    :remote-method="getOrgList4Search"
-                    :loading="loading4Search"
-                    remote
-                    filterable
-                    clearable
-                    v-model="examOrgSearch.orgId"
-                    placeholder="请选择"
-                  >
-                    <el-option
-                      v-for="item in orgList4Search"
-                      :label="item.name"
-                      :value="item.id"
-                      :key="item.id"
-                    >
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-                <el-form-item class="pull-right buttonframe">
-                  <el-button
-                    size="small"
-                    type="primary"
-                    icon="search"
-                    @click="getExamOrgList"
-                    >查询
-                  </el-button>
-                  <el-button
-                    size="small"
-                    type="primary"
-                    icon="plus"
-                    @click="addExamOrg"
-                    >新增
-                  </el-button>
-                </el-form-item>
-                <el-table
-                  v-loading="loading"
-                  element-loading-text="拼命加载中"
-                  :data="examOrgList"
-                  border
-                  style="width:100%;text-align:center;"
-                >
-                  <el-table-column inline-template width="150" label="ID">
-                    <div>
-                      <span>{{ row.id }}</span>
-                    </div>
-                  </el-table-column>
-                  <el-table-column inline-template label="学习中心代码">
-                    <div>
-                      <span>{{ row.orgCode }}</span>
-                    </div>
-                  </el-table-column>
-                  <el-table-column inline-template label="学习中心名称">
-                    <div>
-                      <span>{{ row.orgName }}</span>
-                    </div>
-                  </el-table-column>
-                  <el-table-column inline-template width="200" label="开始时间">
-                    <div>
-                      <span>{{ offlineExamForm.beginTime }}</span>
-                    </div>
-                  </el-table-column>
-                  <el-table-column inline-template width="200" label="结束时间">
-                    <div>
-                      <span>{{ row.endTime }}</span>
-                    </div>
-                  </el-table-column>
-                  <el-table-column inline-template width="200" label="更新时间">
-                    <div>
-                      <span>{{ row.updateTime }}</span>
-                    </div>
-                  </el-table-column>
-                  <el-table-column inline-template width="100" label="上传附件">
-                    <div>
-                      <span>
-                        <el-tag :type="getCanUploadTag(row)">
-                          {{ getCanUpload(row) }}
-                        </el-tag>
-                      </span>
-                    </div>
-                  </el-table-column>
-                  <el-table-column
-                    :context="_self"
-                    inline-template
-                    label="操作"
-                    width="200"
-                  >
-                    <div>
-                      <el-button
-                        size="mini"
-                        type="info"
-                        @click="editExamOrg(row);"
-                      >
-                        修改
-                      </el-button>
-                    </div>
-                  </el-table-column>
-                </el-table>
-                <div class="page pull-right">
-                  <el-pagination
-                    @current-change="handleCurrentChange"
-                    :current-page="currentPage"
-                    :page-size="pageSize"
-                    layout="total, prev, pager, next, jumper"
-                    :total="total"
-                  >
-                  </el-pagination>
-                </div>
-              </el-tab-pane>
-            </el-tabs>
-          </el-form>
-
-          <!-- 新增 -->
-          <el-dialog
-            title="新增学习中心考试设置"
-            size="tiny"
-            v-model="addExamOrgDialog"
-          >
-            <el-form
-              :model="examOrgForm"
-              :rules="examOrgRules"
-              ref="examOrgForm"
-              label-position="right"
-              :inline="true"
-            >
-              <el-row>
-                <el-form-item label-width="120px" label="学习中心" prop="orgId">
-                  <el-select
-                    class="select"
-                    :remote-method="getOrgList4InsertOrUpdate"
-                    :loading="loading4InsertOrUpdate"
-                    remote
-                    filterable
-                    clearable
-                    v-model="examOrgForm.orgId"
-                    placeholder="请选择"
-                  >
-                    <el-option
-                      v-for="item in orgList4InsertOrUpdate"
-                      :label="item.name"
-                      :value="item.id"
-                      :key="item.id"
-                    >
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <el-form-item
-                  label-width="120px"
-                  label="考试开始时间"
-                  prop="beginTime"
-                >
-                  <el-date-picker
-                    style="width:220px"
-                    v-model.number="examOrgForm.beginTime"
-                    type="datetime"
-                    placeholder="选择考试结束时间"
-                    @change="getOrgBeginTime"
-                    readonly
-                  >
-                  </el-date-picker>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <el-form-item
-                  label-width="120px"
-                  label="考试结束时间"
-                  prop="endTime"
-                >
-                  <el-date-picker
-                    style="width:220px"
-                    v-model.number="examOrgForm.endTime"
-                    type="datetime"
-                    placeholder="选择考试结束时间"
-                    @change="getOrgEndTime"
-                  >
-                  </el-date-picker>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <el-form-item label-width="120px" label="上传附件">
-                  <el-radio-group
-                    v-model="examOrgForm.properties.CAN_UPLOAD_ATTACHMENT"
-                  >
-                    <el-radio label="true">允许</el-radio>
-                    <el-radio label="false">不允许</el-radio>
-                  </el-radio-group>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <div style="margin-left:30%">
-                  <el-button type="primary" @click="insertExamOrg"
-                    >确 定</el-button
-                  >
-                  <el-button @click="addExamOrgDialog = false;"
-                    >取 消</el-button
-                  >
-                </div>
-              </el-row>
-            </el-form>
-          </el-dialog>
-
-          <!-- 修改 -->
-          <el-dialog
-            title="新增学习中心考试设置"
-            size="tiny"
-            v-model="updateExamOrgDialog"
-          >
-            <el-form
-              :model="examOrgForm"
-              :rules="examOrgRules"
-              ref="examOrgForm"
-              label-position="right"
-              :inline="true"
-            >
-              <el-row>
-                <el-form-item label-width="120px" label="学习中心" prop="orgId">
-                  <el-select
-                    class="select"
-                    :remote-method="getOrgList4InsertOrUpdate"
-                    :loading="loading4InsertOrUpdate"
-                    remote
-                    filterable
-                    clearable
-                    v-model="examOrgForm.orgId"
-                    placeholder="请选择"
-                  >
-                    <el-option
-                      v-for="item in orgList4InsertOrUpdate"
-                      :label="item.name"
-                      :value="item.id"
-                      :key="item.id"
-                    >
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <el-form-item
-                  label-width="120px"
-                  label="考试开始时间"
-                  prop="beginTime"
-                >
-                  <el-date-picker
-                    style="width:220px"
-                    v-model.number="examOrgForm.beginTime"
-                    type="datetime"
-                    placeholder="选择考试结束时间"
-                    @change="getOrgBeginTime"
-                    readonly
-                  >
-                  </el-date-picker>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <el-form-item
-                  label-width="120px"
-                  label="考试结束时间"
-                  prop="endTime"
-                >
-                  <el-date-picker
-                    style="width:220px"
-                    v-model.number="examOrgForm.endTime"
-                    type="datetime"
-                    placeholder="选择考试结束时间"
-                    @change="getOrgEndTime"
-                  >
-                  </el-date-picker>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <el-form-item label-width="120px" label="上传附件">
-                  <el-radio-group
-                    v-model="examOrgForm.properties.CAN_UPLOAD_ATTACHMENT"
-                  >
-                    <el-radio label="true">允许</el-radio>
-                    <el-radio label="false">不允许</el-radio>
-                  </el-radio-group>
-                </el-form-item>
-              </el-row>
-              <el-row>
-                <div style="margin-left:30%">
-                  <el-button type="primary" @click="updateExamOrg"
-                    >确 定</el-button
-                  >
-                  <el-button @click="updateExamOrgDialog = false;"
-                    >取 消</el-button
-                  >
-                </div>
-              </el-row>
-            </el-form>
-          </el-dialog>
-        </div>
-      </div>
-    </section>
-  </div>
+  <div><section class="content"></section></div>
 </template>
-<script>
-import { core_api, exam_work_api, EXAM_TYPE } from "../store/global";
-import { getDateTime } from "../util/date.js";
-import { mapState } from "vuex";
-
-let _this = null;
 
+<script>
 export default {
   data() {
-    var validateBeginTime = (rule, value, callback) => {
-      if (!_this.offlineExamForm.beginTime) {
-        callback(new Error("请选择考试开始日期"));
-      } else {
-        callback();
-      }
-    };
-    var validateEndTime = (rule, value, callback) => {
-      if (!_this.offlineExamForm.endTime) {
-        callback(new Error("请选择考试结束日期"));
-      } else if (
-        _this.offlineExamForm.beginTime > _this.offlineExamForm.endTime
-      ) {
-        callback(new Error("开始日期不能大于结束日期"));
-      } else {
-        callback();
-      }
-    };
-    var validateName = (rule, value, callback) => {
-      if (_this.offlineExamForm.name == "") {
-        callback(new Error("请输入考试名称"));
-      } else if (
-        !_this.offlineExamForm.name.match(/^[\u4E00-\u9FA5A-Za-z0-9_]+$/)
-      ) {
-        callback(new Error("只能为英文、汉字、数字"));
-      } else if (_this.offlineExamForm.name.length > 50) {
-        callback(new Error("最大长度为50"));
-      } else {
-        callback();
-      }
-    };
-    var validateExamOrgEndTime = (rule, value, callback) => {
-      if (!_this.examOrgForm.endTime) {
-        callback(new Error("请选择考试结束日期"));
-      } else if (_this.examOrgForm.beginTime > _this.examOrgForm.endTime) {
-        callback(new Error("开始日期不能大于结束日期"));
-      } else {
-        callback();
-      }
-    };
-
-    return {
-      tabs: "first",
-      loading: false,
-      formLoading: false,
-      currentPage: 1,
-      pageSize: 10,
-      total: 0,
-      examOrgSearch: {
-        examId: null,
-        orgId: null
-      },
-      offlineExamForm: {
-        name: "",
-        examType: "OFFLINE",
-        beginTime: "",
-        endTime: "",
-        enable: "true",
-        properties: {
-          CAN_UPLOAD_ATTACHMENT: "true"
-        }
-      },
-      addExamOrgDialog: false,
-      updateExamOrgDialog: false,
-      examOrgForm: {
-        examId: null,
-        orgId: null,
-        beginTime: null,
-        endTime: null,
-        properties: {
-          CAN_UPLOAD_ATTACHMENT: "true"
-        }
-      },
-
-      orgList4Search: [],
-      loading4Search: false,
-      orgList4InsertOrUpdate: [],
-      loading4InsertOrUpdate: false,
-      examOrgList: [],
-      examTypeList: EXAM_TYPE,
-      formLabelWidth: "120px",
-      examId: "",
-      rules: {
-        name: [{ required: true, validator: validateName, trigger: "blur" }],
-        beginTime: [
-          {
-            type: "date",
-            required: true,
-            validator: validateBeginTime,
-            trigger: "change"
-          }
-        ],
-        endTime: [
-          {
-            type: "date",
-            required: true,
-            validator: validateEndTime,
-            trigger: "change"
-          }
-        ]
-      },
-      examOrgRules: {
-        orgId: [
-          {
-            type: "number",
-            required: true,
-            message: "请选择学习中心",
-            trigger: "change"
-          }
-        ],
-        endTime: [
-          {
-            type: "date",
-            required: true,
-            validator: validateExamOrgEndTime,
-            trigger: "change"
-          }
-        ]
-      }
-    };
-  },
-
-  methods: {
-    getBeginTime(val) {
-      this.offlineExamForm.beginTime = val;
-    },
-    getEndTime(val) {
-      this.offlineExamForm.endTime = val;
-    },
-    getOrgEndTime(val) {
-      this.examOrgForm.endTime = val;
-    },
-    getOrgBeginTime(val) {
-      this.examOrgForm.begin = val;
-    },
-    addExamOrg() {
-      this.examOrgForm.examId = this.examId;
-      this.orgList4InsertOrUpdate = [];
-      this.examOrgForm.orgId = null;
-      this.examOrgForm.beginTime = this.offlineExamForm.beginTime;
-      this.examOrgForm.endTime = this.offlineExamForm.endTime;
-      this.examOrgForm.properties.CAN_UPLOAD_ATTACHMENT = "true";
-      this.addExamOrgDialog = true;
-    },
-    init() {
-      if (this.examId != "add") {
-        var url = exam_work_api + "/exam/" + this.examId;
-        this.$http.get(url).then(
-          response => {
-            var body = response.body;
-            body.properties = this.offlineExamForm.properties;
-            this.offlineExamForm = Object.assign(
-              this.offlineExamForm,
-              response.body
-            );
-            this.offlineExamForm.enable = this.offlineExamForm.enable
-              ? "true"
-              : "false";
-
-            var url = exam_work_api + "/exam/allProperties/" + this.examId;
-            this.$http.get(url).then(
-              response => {
-                this.offlineExamForm.properties = Object.assign(
-                  this.offlineExamForm.properties,
-                  response.body
-                );
-              },
-              response => {
-                this.$notify({
-                  type: "error",
-                  message: response.body.desc
-                });
-              }
-            );
-            this.getExamOrgList();
-          },
-          response => {
-            this.$notify({
-              type: "error",
-              message: response.body.desc
-            });
-          }
-        );
-      }
-    },
-    saveOfflineExam() {
-      var url = exam_work_api + "/exam";
-      this.$refs.offlineExamForm.validate(valid => {
-        if (valid) {
-          this.formLoading = true;
-          if (this.examId != "add") {
-            this.$http.put(url, this.offlineExamForm).then(
-              response => {
-                console.log(response);
-                this.$notify({
-                  type: "success",
-                  message: "保存成功"
-                });
-                this.getExamOrgList();
-                this.formLoading = false;
-              },
-              response => {
-                var errMsg = response.body.errorMsg
-                  ? response.body.errorMsg
-                  : "保存失败";
-                this.$notify({
-                  type: "error",
-                  message: errMsg
-                });
-                this.formLoading = false;
-              }
-            );
-          } else {
-            this.$http.post(url, this.offlineExamForm).then(
-              response => {
-                this.$notify({
-                  type: "success",
-                  message: "新增成功"
-                });
-                this.formLoading = false;
-                this.examId = response.body.id;
-                this.$router.replace({
-                  path: "/index/offlineExam/" + response.body.id
-                });
-              },
-              response => {
-                var errMsg = response.body.errorMsg
-                  ? response.body.errorMsg
-                  : "新增失败";
-                this.$notify({
-                  type: "error",
-                  message: errMsg
-                });
-                this.formLoading = false;
-              }
-            );
-          }
-        } else {
-          return false;
-        }
-      });
-    },
-    back() {
-      this.$router.push({ path: "/index/examInfo" });
-    },
-    getDateTime(ms) {
-      return getDateTime(ms);
-    },
-    editExamOrg(row) {
-      this.examOrgForm.examId = this.examId;
-      this.examOrgForm.beginTime = this.offlineExamForm.beginTime;
-      this.orgList4InsertOrUpdate = [{ id: row.orgId, name: row.orgName }];
-      this.examOrgForm.orgId = row.orgId;
-      this.examOrgForm.endTime = row.endTime;
-      this.examOrgForm.properties.CAN_UPLOAD_ATTACHMENT =
-        row.properties.CAN_UPLOAD_ATTACHMENT;
-      this.updateExamOrgDialog = true;
-    },
-    getCanUpload(row) {
-      if (row.properties.CAN_UPLOAD_ATTACHMENT === null) {
-        if (Date.now() > row.endTime) {
-          return "不允许";
-        } else {
-          return "允许";
-        }
-      } else {
-        return row.properties.CAN_UPLOAD_ATTACHMENT == "true"
-          ? "允许"
-          : "不允许";
-      }
-    },
-    getCanUploadTag(row) {
-      if (this.getCanUpload(row) === "允许") {
-        return "success";
-      } else {
-        return "danger";
-      }
-    },
-    insertExamOrg() {
-      this.$refs.examOrgForm.validate(valid => {
-        if (valid) {
-          var url = exam_work_api + "/exam/examOrgSettings";
-          this.$http.post(url, this.examOrgForm).then(
-            response => {
-              console.log(response);
-              this.$notify({
-                type: "success",
-                message: "保存成功"
-              });
-              this.getExamOrgList();
-              this.addExamOrgDialog = false;
-            },
-            response => {
-              this.$notify({
-                type: "error",
-                message: response.body.desc
-              });
-            }
-          );
-        } else {
-          return false;
-        }
-      });
-    },
-    updateExamOrg() {
-      this.$refs.examOrgForm.validate(valid => {
-        if (valid) {
-          var url = exam_work_api + "/exam/examOrgSettings";
-          this.$http.post(url, this.examOrgForm).then(
-            response => {
-              console.log(response);
-              this.$notify({
-                type: "success",
-                message: "保存成功"
-              });
-              this.getExamOrgList();
-              this.updateExamOrgDialog = false;
-            },
-            response => {
-              this.$notify({
-                type: "error",
-                message: response.body.desc
-              });
-            }
-          );
-        } else {
-          return false;
-        }
-      });
-    },
-    getExamOrgList() {
-      this.examOrgSearch.examId = this.examId;
-      let param = new URLSearchParams(this.examOrgSearch);
-      let url =
-        exam_work_api +
-        "/exam/getExamOrgSettingsList/" +
-        (this.currentPage - 1) +
-        "/" +
-        this.pageSize +
-        "?" +
-        param;
-      this.loading = true;
-      this.$http.get(url).then(response => {
-        console.log(response);
-        this.examOrgList = response.body.list;
-        this.total = response.body.total;
-        this.loading = false;
-      });
-    },
-    getOrgList4Search(orgName) {
-      this.loading4Search = true;
-      var url =
-        core_api + "/org/query?" + new URLSearchParams({ name: orgName });
-      this.$http
-        .get(url)
-        .then(response => {
-          this.orgList4Search = response.body;
-          this.loading4Search = false;
-        })
-        .catch(response => {
-          if (response.status == 500) {
-            this.$notify({
-              showClose: true,
-              message: response.body.desc,
-              type: "error"
-            });
-          }
-          this.loading4Search = false;
-        });
-    },
-    getOrgList4InsertOrUpdate(orgName) {
-      this.loading4InsertOrUpdate = true;
-      var url =
-        core_api + "/org/query?" + new URLSearchParams({ name: orgName });
-      this.$http
-        .get(url)
-        .then(response => {
-          this.orgList4InsertOrUpdate = response.body;
-          this.loading4InsertOrUpdate = false;
-        })
-        .catch(response => {
-          if (response.status == 500) {
-            this.$notify({
-              showClose: true,
-              message: response.body.desc,
-              type: "error"
-            });
-          }
-          this.loading4InsertOrUpdate = false;
-        });
-    },
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getExamOrgList();
-    }
-  },
-  computed: {
-    ...mapState({ user: state => state.user })
+    return {};
   },
-  created() {
-    _this = this;
-    this.examId = this.$route.params.id;
-    this.init();
-  }
+  methods: {},
+  created() {}
 };
 </script>
-<style scoped></style>
+<style scoped></style>

+ 5 - 865
src/modules/examwork/view/onlineExam.vue

@@ -1,874 +1,14 @@
 <template>
-  <div>
-    <section class="content" style="margin-top: -10px;">
-      <div class="box box-info">
-        <!-- 头信息 -->
-        <div
-          class="box-header with-border"
-          style="background-color:#D3DCE6;margin-bottom:20px;"
-        >
-          <h3 class="box-title">网络考试</h3>
-          <div class="box-tools pull-right">
-            <button
-              type="button"
-              class="btn btn-box-tool"
-              data-widget="collapse"
-            >
-              <i class="fa fa-minus"></i>
-            </button>
-          </div>
-        </div>
-
-        <!-- 正文信息 -->
-        <div class="box-body">
-          <el-form
-            :inline="true"
-            :rules="rules"
-            ref="onlineExamForm"
-            :model="onlineExamForm"
-            label-position="right"
-            label-width="100px"
-          >
-            <div style="text-align:right">
-              <el-button type="primary" @click="saveOnlineExam"
-                >保 存</el-button
-              >
-              <el-button @click="back">返 回</el-button>
-            </div>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="基础信息" name="first">
-                <el-row :gutter="10">
-                  <el-col>
-                    <el-form-item
-                      label="考试名称"
-                      :label-width="formLabelWidth"
-                      prop="name"
-                    >
-                      <el-input
-                        style="width:200px"
-                        :maxlength="50"
-                        type="textarea"
-                        autosize
-                        v-model="onlineExamForm.name"
-                      ></el-input>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试类型"
-                      class="select-margin"
-                      prop="examType"
-                    >
-                      <el-select
-                        style="width:200px"
-                        :disabled="true"
-                        v-model="onlineExamForm.examType"
-                        placeholder="请选择"
-                      >
-                        <el-option
-                          v-for="item in examTypeList"
-                          :key="item.value"
-                          :label="item.label"
-                          :value="item.value"
-                        >
-                        </el-option>
-                      </el-select>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="开始时间"
-                      :label-width="formLabelWidth"
-                      prop="beginTime"
-                    >
-                      <el-date-picker
-                        style="width:200px"
-                        v-model="onlineExamForm.beginTime"
-                        type="datetime"
-                        placeholder="选择考试开始时间"
-                        @change="getBeginTime"
-                      >
-                      </el-date-picker>
-                    </el-form-item>
-                    <el-form-item
-                      label="结束时间"
-                      :label-width="formLabelWidth"
-                      prop="endTime"
-                    >
-                      <el-date-picker
-                        style="width:200px"
-                        v-model="onlineExamForm.endTime"
-                        type="datetime"
-                        placeholder="选择考试结束时间"
-                        @change="getEndTime"
-                      >
-                      </el-date-picker>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="是否开启"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group v-model="onlineExamForm.enable">
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="控制设置" name="first">
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试时长"
-                      :label-width="formLabelWidth"
-                      prop="duration"
-                    >
-                      <el-input
-                        v-model.number="onlineExamForm.duration"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="分钟"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试次数"
-                      :label-width="formLabelWidth"
-                      prop="examTimes"
-                    >
-                      <el-input
-                        v-model.number="onlineExamForm.examTimes"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="次"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="交卷冻结时间"
-                      :label-width="formLabelWidth"
-                      prop="freezeTime"
-                    >
-                      <el-input
-                        v-model.number="onlineExamForm.properties.FREEZE_TIME"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="分钟"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="断点续考时间"
-                      :label-width="formLabelWidth"
-                      prop="examReconnectTime"
-                    >
-                      <el-input
-                        v-model.number="
-                          onlineExamForm.properties.EXAM_RECONNECT_TIME
-                        "
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="分钟"></el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="显示设置" name="first">
-                <el-row :gutter="10" v-if="show_ckeditor">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考前说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <ckeditor
-                        v-model="onlineExamForm.properties.BEFORE_EXAM_REMARK"
-                        :height="'100px'"
-                      ></ckeditor>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10" v-if="show_ckeditor">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考后说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <ckeditor
-                        v-model="onlineExamForm.properties.AFTER_EXAM_REMARK"
-                        :height="'100px'"
-                      ></ckeditor>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="展示作弊说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        v-model="onlineExamForm.properties.SHOW_CHEATING_REMARK"
-                      >
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10" v-if="show_ckeditor">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="作弊说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <ckeditor
-                        v-model="onlineExamForm.properties.CHEATING_REMARK"
-                        :height="'100px'"
-                      ></ckeditor>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="单选题补充说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-input
-                        :disabled="!onlineExamForm.properties.SINGLE_EDIT"
-                        v-model="onlineExamForm.properties.SINGLE_ANSWER_REMARK"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="" :label-width="formLabelWidth">
-                      <el-switch
-                        v-model="onlineExamForm.properties.SINGLE_EDIT"
-                        on-text="启用"
-                        off-text="禁用"
-                      ></el-switch>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="多选题补充说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-input
-                        :disabled="!onlineExamForm.properties.MUTIPLE_EDIT"
-                        v-model="
-                          onlineExamForm.properties.MUTIPLE_ANSWER_REMARK
-                        "
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="" :label-width="formLabelWidth">
-                      <el-switch
-                        v-model="onlineExamForm.properties.MUTIPLE_EDIT"
-                        on-text="启用"
-                        off-text="禁用"
-                      ></el-switch>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="判断题补充说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-input
-                        :disabled="!onlineExamForm.properties.BOOL_EDIT"
-                        v-model="onlineExamForm.properties.BOOL_ANSWER_REMARK"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="" :label-width="formLabelWidth">
-                      <el-switch
-                        v-model="onlineExamForm.properties.BOOL_EDIT"
-                        on-text="启用"
-                        off-text="禁用"
-                      ></el-switch>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="填空题补充说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-input
-                        :disabled="!onlineExamForm.properties.FILL_BLANK_EDIT"
-                        v-model="onlineExamForm.properties.FILL_BLANK_REMARK"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="" :label-width="formLabelWidth">
-                      <el-switch
-                        v-model="onlineExamForm.properties.FILL_BLANK_EDIT"
-                        on-text="启用"
-                        off-text="禁用"
-                      ></el-switch>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="客观题成绩显示"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        v-model="onlineExamForm.properties.IS_OBJ_SCORE_VIEW"
-                      >
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="人脸识别设置" name="first">
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="是否开启"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        v-model="onlineExamForm.properties.IS_FACE_ENABLE"
-                        @change="faceChange"
-                      >
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row
-                  :gutter="10"
-                  v-show="onlineExamForm.properties.IS_FACE_ENABLE == 'true'"
-                >
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试强制使用"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        v-model="onlineExamForm.properties.IS_FACE_CHECK"
-                      >
-                        <el-radio label="true">强制</el-radio>
-                        <el-radio label="false">非强制</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row
-                  :gutter="10"
-                  v-show="onlineExamForm.properties.IS_FACE_ENABLE == 'true'"
-                >
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="抓拍间隔"
-                      :label-width="formLabelWidth"
-                      prop="snapshotInterval"
-                    >
-                      <el-input
-                        v-model.number="
-                          onlineExamForm.properties.SNAPSHOT_INTERVAL
-                        "
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="分钟"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row
-                  :gutter="10"
-                  v-show="onlineExamForm.properties.IS_FACE_ENABLE == 'true'"
-                >
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="预警阀值"
-                      :label-width="formLabelWidth"
-                      prop="warnThreshold"
-                    >
-                      <el-input
-                        v-model.number="
-                          onlineExamForm.properties.WARN_THRESHOLD
-                        "
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="%"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row
-                  :gutter="10"
-                  v-show="onlineExamForm.properties.IS_FACE_ENABLE == 'true'"
-                >
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="真实性预警阀值"
-                      :label-width="formLabelWidth"
-                      prop="livingWarnThreshold"
-                    >
-                      <el-input
-                        v-model.number="
-                          onlineExamForm.properties.LIVING_WARN_THRESHOLD
-                        "
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="%"></el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="阅卷设置" name="first">
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="阅卷方式"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        :disabled="onlineExamForm.started"
-                        v-model="onlineExamForm.properties.MARKING_TYPE"
-                      >
-                        <el-radio label="ALL">全部评阅</el-radio>
-                        <el-radio label="OBJECT_SCORE_MAX">客观分最高</el-radio>
-                        <el-radio label="LAST_SUBMIT">最后一次提交</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="网络设置" name="first">
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item label="IP限制" :label-width="formLabelWidth">
-                      <el-radio-group
-                        v-model="onlineExamForm.properties.IP_LIMIT"
-                      >
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="IP段( *表示任意 )"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-input
-                        style="width:200px"
-                        :maxlength="500"
-                        type="textarea"
-                        autosize
-                        v-model="onlineExamForm.properties.IP_ADDRESSES"
-                      ></el-input>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-          </el-form>
-        </div>
-      </div>
-    </section>
-  </div>
+  <div><section class="content"></section></div>
 </template>
 
 <script>
-import { exam_work_api, EXAM_TYPE } from "../store/global";
-import ckeditor from "../components/ckeditor.vue";
-
-let _this = null;
-
 export default {
-  components: { ckeditor },
   data() {
-    var validateBeginTime = (rule, value, callback) => {
-      if (!_this.onlineExamForm.beginTime) {
-        callback(new Error("请选择考试开始日期"));
-      } else {
-        callback();
-      }
-    };
-    var validateEndTime = (rule, value, callback) => {
-      if (!_this.onlineExamForm.endTime) {
-        callback(new Error("请选择考试结束日期"));
-      } else if (
-        _this.onlineExamForm.beginTime > _this.onlineExamForm.endTime
-      ) {
-        callback(new Error("开始日期不能大于结束日期"));
-      } else {
-        callback();
-      }
-    };
-    var validateName = (rule, value, callback) => {
-      if (_this.onlineExamForm.name == "") {
-        callback(new Error("请输入考试名称"));
-      } else if (
-        !_this.onlineExamForm.name.match(/^[\u4E00-\u9FA5A-Za-z0-9_]+$/)
-      ) {
-        callback(new Error("只能为英文、汉字、数字"));
-      } else if (_this.onlineExamForm.name.length > 50) {
-        callback(new Error("最大长度为50"));
-      } else {
-        callback();
-      }
-    };
-    var validateDuration = (rule, value, callback) => {
-      var duration = _this.onlineExamForm.duration;
-      if (duration == "") {
-        callback(new Error("请输入考试时长"));
-      } else if (!duration.match(/^[1-9]\d*|0$/)) {
-        callback(new Error("只能是非负整数"));
-      } else {
-        callback();
-      }
-    };
-    var validateFreezeTime = (rule, value, callback) => {
-      var freezeTime = _this.onlineExamForm.properties.FREEZE_TIME;
-      var duration = _this.onlineExamForm.duration;
-      if (freezeTime == "") {
-        callback(new Error("请输入交卷冻结时长"));
-      } else if (!freezeTime.match(/^[1-9]\d*|0$/)) {
-        callback(new Error("只能是非负整数"));
-      } else if (parseInt(freezeTime) > parseInt(duration)) {
-        callback(new Error("交卷冻结时长不能大于考试时长"));
-      } else {
-        callback();
-      }
-    };
-    var validateSnapshot = (rule, value, callback) => {
-      var isFaceEnable = _this.onlineExamForm.properties.IS_FACE_ENABLE;
-      var snapshotnterval = _this.onlineExamForm.properties.SNAPSHOT_INTERVAL;
-      var duration = _this.onlineExamForm.duration;
-      if (isFaceEnable == "true") {
-        if (snapshotnterval == "") {
-          callback(new Error("请输入抓拍间隔"));
-        } else if (!snapshotnterval.match(/^[1-9]\d*$/)) {
-          callback(new Error("只能是正整数"));
-        } else if (parseInt(snapshotnterval) > parseInt(duration)) {
-          callback(new Error("抓拍间隔不能大于考试时长"));
-        } else {
-          callback();
-        }
-      } else {
-        callback();
-      }
-    };
-    var validateWarnThreshold = (rule, value, callback) => {
-      var isFaceEnable = _this.onlineExamForm.properties.IS_FACE_ENABLE;
-      var warnThreshold = _this.onlineExamForm.properties.WARN_THRESHOLD;
-      if (isFaceEnable == "true") {
-        if (warnThreshold == "") {
-          callback(new Error("请输入预警阀值"));
-        } else if (!warnThreshold.match(/^[1-9]\d*$/)) {
-          callback(new Error("只能是正整数"));
-        } else {
-          callback();
-        }
-      } else {
-        callback();
-      }
-    };
-    var validateLivingWarnThreshold = (rule, value, callback) => {
-      var isFaceEnable = _this.onlineExamForm.properties.IS_FACE_ENABLE;
-      var livingWarnThreshold =
-        _this.onlineExamForm.properties.LIVING_WARN_THRESHOLD;
-      if (isFaceEnable == "true") {
-        if (livingWarnThreshold == "") {
-          callback(new Error("请输入真实性预警阀值"));
-        } else if (!livingWarnThreshold.match(/^[1-9]\d*$/)) {
-          callback(new Error("只能是正整数"));
-        } else {
-          callback();
-        }
-      } else {
-        callback();
-      }
-    };
-    var validateExamTimes = (rule, value, callback) => {
-      var examTimes = _this.onlineExamForm.examTimes;
-      if (examTimes == "") {
-        callback(new Error("请输入考试次数"));
-      } else if (!examTimes.match(/^[1-9]\d*$/)) {
-        callback(new Error("只能是正整数"));
-      } else {
-        callback();
-      }
-    };
-    var validateExamReconnectTime = (rule, value, callback) => {
-      var examReconnectTime =
-        _this.onlineExamForm.properties.EXAM_RECONNECT_TIME;
-      if (examReconnectTime == "") {
-        callback(new Error("请输入断点续考时间"));
-      } else if (!examReconnectTime.match(/^[1-9]\d*$/)) {
-        callback(new Error("只能是正整数"));
-      } else {
-        callback();
-      }
-    };
-
-    return {
-      tabs: "first",
-      show_ckeditor: false,
-      onlineExamForm: {
-        started: false,
-        name: "",
-        examType: "ONLINE",
-        examTimes: 1,
-        beginTime: null,
-        endTime: null,
-        duration: 120,
-        enable: "true",
-        properties: {
-          IS_OBJ_SCORE_VIEW: "true",
-          EXAM_RECONNECT_TIME: 30,
-          FREEZE_TIME: 0,
-          BEFORE_EXAM_REMARK: "",
-          AFTER_EXAM_REMARK: "",
-          SHOW_CHEATING_REMARK: "true",
-          CHEATING_REMARK: "",
-          SINGLE_EDIT: "false",
-          MUTIPLE_EDIT: "false",
-          BOOL_EDIT: "false",
-          FILL_BLANK_EDIT: "false",
-          SINGLE_ANSWER_REMARK: "",
-          MUTIPLE_ANSWER_REMARK: "",
-          FILL_BLANK_REMARK: "",
-          BOOL_ANSWER_REMARK: "",
-          IS_FACE_ENABLE: "false",
-          IS_FACE_CHECK: "false",
-          SNAPSHOT_INTERVAL: 30,
-          WARN_THRESHOLD: 50,
-          MARKING_TYPE: "ALL",
-          IP_LIMIT: "false",
-          IP_ADDRESSES: null,
-          LIVING_WARN_THRESHOLD: 50
-        }
-      },
-      examTypeList: EXAM_TYPE,
-      formLabelWidth: "120px",
-      examId: "",
-      rules: {
-        name: [{ required: true, validator: validateName, trigger: "blur" }],
-        examType: [
-          { required: true, message: "请选择考试类型", trigger: "change" }
-        ],
-        beginTime: [
-          { required: true, validator: validateBeginTime, trigger: "change" }
-        ],
-        endTime: [
-          { required: true, validator: validateEndTime, trigger: "change" }
-        ],
-        duration: [
-          { required: true, validator: validateDuration, trigger: "blur" }
-        ],
-        freezeTime: [
-          { required: true, validator: validateFreezeTime, trigger: "blur" }
-        ],
-        examTimes: [
-          { required: true, validator: validateExamTimes, trigger: "blur" }
-        ],
-        examReconnectTime: [
-          {
-            required: true,
-            validator: validateExamReconnectTime,
-            trigger: "blur"
-          }
-        ],
-        snapshotInterval: [
-          { required: true, validator: validateSnapshot, trigger: "blur" }
-        ],
-        warnThreshold: [
-          { required: true, validator: validateWarnThreshold, trigger: "blur" }
-        ],
-        livingWarnThreshold: [
-          {
-            required: true,
-            validator: validateLivingWarnThreshold,
-            trigger: "blur"
-          }
-        ]
-      }
-    };
-  },
-
-  methods: {
-    getBeginTime(val) {
-      this.onlineExamForm.beginTime = val;
-    },
-    getEndTime(val) {
-      this.onlineExamForm.endTime = val;
-    },
-    faceChange() {
-      if (this.onlineExamForm.properties.IS_FACE_ENABLE == "false") {
-        this.onlineExamForm.properties.SNAPSHOT_INTERVAL = 30;
-        this.onlineExamForm.properties.WARN_THRESHOLD = 50;
-      }
-    },
-    init() {
-      if (this.examId != "add") {
-        var url = exam_work_api + "/exam/" + this.examId;
-        this.$http.get(url).then(
-          response => {
-            var body = response.body;
-            body.properties = this.onlineExamForm.properties;
-            this.onlineExamForm = Object.assign(
-              this.onlineExamForm,
-              response.body
-            );
-            this.onlineExamForm.enable = this.onlineExamForm.enable
-              ? "true"
-              : "false";
-            console.log(
-              "getOnlineExam(); onlineExamForm: ",
-              this.onlineExamForm
-            );
-
-            var url = exam_work_api + "/exam/allProperties/" + this.examId;
-            this.$http.get(url).then(
-              response => {
-                this.onlineExamForm.properties = Object.assign(
-                  this.onlineExamForm.properties,
-                  response.body
-                );
-                this.onlineExamForm.properties.SINGLE_EDIT =
-                  this.onlineExamForm.properties.SINGLE_EDIT == "true"
-                    ? true
-                    : false;
-                this.onlineExamForm.properties.MUTIPLE_EDIT =
-                  this.onlineExamForm.properties.MUTIPLE_EDIT == "true"
-                    ? true
-                    : false;
-                this.onlineExamForm.properties.BOOL_EDIT =
-                  this.onlineExamForm.properties.BOOL_EDIT == "true"
-                    ? true
-                    : false;
-                this.onlineExamForm.properties.FILL_BLANK_EDIT =
-                  this.onlineExamForm.properties.FILL_BLANK_EDIT == "true"
-                    ? true
-                    : false;
-
-                this.show_ckeditor = true;
-              },
-              response => {
-                this.$notify({
-                  type: "error",
-                  message: response.body.desc
-                });
-              }
-            );
-          },
-          response => {
-            this.$notify({
-              type: "error",
-              message: response.body.desc
-            });
-          }
-        );
-      } else {
-        this.show_ckeditor = true;
-      }
-    },
-    saveOnlineExam: function() {
-      var url = exam_work_api + "/exam";
-      console.log(this.onlineExamForm);
-      this.$refs.onlineExamForm.validate(valid => {
-        if (valid) {
-          if (this.examId != "add") {
-            this.$http.put(url, this.onlineExamForm).then(
-              response => {
-                if (200 != response.status) {
-                  this.$notify({
-                    type: "error",
-                    message: response.body.desc
-                  });
-                  return;
-                }
-                this.$notify({
-                  type: "success",
-                  message: "保存成功"
-                });
-              },
-              response => {
-                this.$notify({
-                  type: "error",
-                  message: response.body.desc
-                });
-              }
-            );
-          } else {
-            this.$http.post(url, this.onlineExamForm).then(
-              response => {
-                if (200 != response.status) {
-                  this.$notify({
-                    type: "error",
-                    message: response.body.desc
-                  });
-                  return;
-                }
-                this.$notify({
-                  type: "success",
-                  message: "新增成功"
-                });
-                this.back();
-              },
-              response => {
-                this.$notify({
-                  type: "error",
-                  message: response.body.desc
-                });
-              }
-            );
-          }
-        } else {
-          return false;
-        }
-      });
-    },
-    back() {
-      this.$router.push({ path: "/index/examInfo" });
-    }
+    return {};
   },
-  created() {
-    _this = this;
-    this.examId = this.$route.params.id;
-    this.init();
-  }
+  methods: {},
+  created() {}
 };
 </script>
-<style scoped></style>
+<style scoped></style>

+ 4 - 490
src/modules/examwork/view/practiceExam.vue

@@ -1,500 +1,14 @@
 <template>
-  <div>
-    <section class="content" style="margin-top: -10px;">
-      <div class="box box-info">
-        <!-- 头信息 -->
-        <div
-          class="box-header with-border"
-          style="background-color:#D3DCE6;margin-bottom:20px;"
-        >
-          <h3 class="box-title">练习考试</h3>
-          <div class="box-tools pull-right">
-            <button
-              type="button"
-              class="btn btn-box-tool"
-              data-widget="collapse"
-            >
-              <i class="fa fa-minus"></i>
-            </button>
-          </div>
-        </div>
-
-        <!-- 正文信息 -->
-        <div class="box-body">
-          <el-form
-            :inline="true"
-            :rules="rules"
-            ref="practiceExamForm"
-            :model="practiceExamForm"
-            label-position="right"
-            label-width="100px"
-          >
-            <div style="text-align:right">
-              <el-button type="primary" @click="saveOnlineExam"
-                >保 存</el-button
-              >
-              <el-button @click="back">返 回</el-button>
-            </div>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="基础信息" name="first">
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试名称"
-                      :label-width="formLabelWidth"
-                      prop="name"
-                    >
-                      <el-input
-                        style="width:200px"
-                        :maxlength="50"
-                        type="textarea"
-                        autosize
-                        v-model="practiceExamForm.name"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试类型"
-                      class="select-margin"
-                      prop="examType"
-                    >
-                      <el-select
-                        style="width:200px"
-                        :disabled="true"
-                        v-model="practiceExamForm.examType"
-                        placeholder="请选择"
-                      >
-                        <el-option
-                          v-for="item in examTypeList"
-                          :key="item.value"
-                          :label="item.label"
-                          :value="item.value"
-                        >
-                        </el-option>
-                      </el-select>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="开始时间"
-                      :label-width="formLabelWidth"
-                      prop="beginTime"
-                    >
-                      <el-date-picker
-                        style="width:200px"
-                        v-model="practiceExamForm.beginTime"
-                        type="datetime"
-                        placeholder="选择考试开始时间"
-                        @change="getBeginTime"
-                      >
-                      </el-date-picker>
-                    </el-form-item>
-                    <el-form-item
-                      label="结束时间"
-                      :label-width="formLabelWidth"
-                      prop="endTime"
-                    >
-                      <el-date-picker
-                        style="width:200px"
-                        v-model="practiceExamForm.endTime"
-                        type="datetime"
-                        placeholder="选择考试结束时间"
-                        @change="getEndTime"
-                      >
-                      </el-date-picker>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="是否开启"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group v-model="practiceExamForm.enable">
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="控制设置" name="first">
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试时长"
-                      :label-width="formLabelWidth"
-                      prop="duration"
-                    >
-                      <el-input
-                        v-model.number="practiceExamForm.duration"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="分钟"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考试次数"
-                      :label-width="formLabelWidth"
-                      prop="examTimes"
-                    >
-                      <el-input
-                        v-model.number="practiceExamForm.examTimes"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="次"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="交卷冻结时间"
-                      :label-width="formLabelWidth"
-                      prop="freezeTime"
-                    >
-                      <el-input
-                        v-model.number="practiceExamForm.properties.FREEZE_TIME"
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="分钟"></el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="断点续考时间"
-                      :label-width="formLabelWidth"
-                      prop="examReconnectTime"
-                    >
-                      <el-input
-                        v-model.number="
-                          practiceExamForm.properties.EXAM_RECONNECT_TIME
-                        "
-                        auto-complete="off"
-                      ></el-input>
-                    </el-form-item>
-                    <el-form-item label="分钟"></el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-            <el-tabs v-model="tabs">
-              <el-tab-pane label="显示设置" name="first">
-                <el-row :gutter="10" v-if="show_ckeditor">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="考前说明"
-                      :label-width="formLabelWidth"
-                    >
-                      <ckeditor
-                        v-model="practiceExamForm.properties.BEFORE_EXAM_REMARK"
-                        :height="'100px'"
-                      ></ckeditor>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="客观题成绩显示"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        v-model="practiceExamForm.properties.IS_OBJ_SCORE_VIEW"
-                      >
-                        <el-radio label="true">开启</el-radio>
-                        <el-radio label="false">关闭</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="10">
-                  <el-col :xs="15" :sm="15" :md="15" :lg="15">
-                    <el-form-item
-                      label="练习模式"
-                      :label-width="formLabelWidth"
-                    >
-                      <el-radio-group
-                        v-model="practiceExamForm.properties.PRACTICE_TYPE"
-                      >
-                        <el-radio label="IN_PRACTICE">边答边显示答案</el-radio>
-                        <el-radio label="AFTER_PRACTICE"
-                          >结束统一显示答案</el-radio
-                        >
-                        <el-radio label="NO_ANSWER">不显示答案</el-radio>
-                      </el-radio-group>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-              </el-tab-pane>
-            </el-tabs>
-          </el-form>
-        </div>
-      </div>
-    </section>
-  </div>
+  <div><section class="content"></section></div>
 </template>
 
 <script>
-import { exam_work_api, EXAM_TYPE } from "../store/global";
-import ckeditor from "../components/ckeditor.vue";
-
-let _this = null;
-
 export default {
-  components: { ckeditor },
   data() {
-    var validateBeginTime = (rule, value, callback) => {
-      if (!_this.practiceExamForm.beginTime) {
-        callback(new Error("请选择考试开始日期"));
-      } else {
-        callback();
-      }
-    };
-    var validateEndTime = (rule, value, callback) => {
-      if (!_this.practiceExamForm.endTime) {
-        callback(new Error("请选择考试结束日期"));
-      } else if (
-        _this.practiceExamForm.beginTime > _this.practiceExamForm.endTime
-      ) {
-        callback(new Error("开始日期不能大于结束日期"));
-      } else {
-        callback();
-      }
-    };
-    var validateName = (rule, value, callback) => {
-      if (_this.practiceExamForm.name == "") {
-        callback(new Error("请输入考试名称"));
-      } else if (
-        !_this.practiceExamForm.name.match(/^[\u4E00-\u9FA5A-Za-z0-9_]+$/)
-      ) {
-        callback(new Error("只能为英文、汉字、数字"));
-      } else if (_this.practiceExamForm.name.length > 50) {
-        callback(new Error("最大长度为50"));
-      } else {
-        callback();
-      }
-    };
-    var validateDuration = (rule, value, callback) => {
-      if (_this.practiceExamForm.duration == "") {
-        callback(new Error("请输入考试时长"));
-      } else if (!_this.practiceExamForm.duration.match(/^[1-9]\d*|0$/)) {
-        callback(new Error("只能是非负整数"));
-      } else {
-        callback();
-      }
-    };
-    var validateFreezeTime = (rule, value, callback) => {
-      var freezeTime = _this.practiceExamForm.properties.FREEZE_TIME;
-      var duration = _this.practiceExamForm.duration;
-      if (freezeTime == "") {
-        callback(new Error("请输入交卷冻结时长"));
-      } else if (!freezeTime.match(/^[1-9]\d*|0$/)) {
-        callback(new Error("只能是非负整数"));
-      } else if (parseInt(freezeTime) > parseInt(duration)) {
-        callback(new Error("交卷冻结时长不能大于考试时长"));
-      } else {
-        callback();
-      }
-    };
-    var validateExamTimes = (rule, value, callback) => {
-      if (_this.practiceExamForm.examTimes == "") {
-        callback(new Error("请输入考试次数"));
-      } else if (!_this.practiceExamForm.examTimes.match(/^[1-9]\d*$/)) {
-        callback(new Error("只能是正整数"));
-      } else {
-        callback();
-      }
-    };
-    var validateExamReconnectTime = (rule, value, callback) => {
-      if (_this.practiceExamForm.properties.EXAM_RECONNECT_TIME == "") {
-        callback(new Error("请输入断点续考时间"));
-      } else if (
-        !_this.practiceExamForm.properties.EXAM_RECONNECT_TIME.match(
-          /^[1-9]\d*$/
-        )
-      ) {
-        callback(new Error("只能是正整数"));
-      } else {
-        callback();
-      }
-    };
-
-    return {
-      tabs: "first",
-      show_ckeditor: true,
-      practiceExamForm: {
-        name: "",
-        examType: "PRACTICE",
-        examTimes: 1,
-        beginTime: "",
-        endTime: "",
-        duration: 1,
-        enable: "true",
-        properties: {
-          FREEZE_TIME: 0,
-          EXAM_RECONNECT_TIME: 30,
-          BEFORE_EXAM_REMARK: "",
-          AFTER_EXAM_REMARK: "",
-          IS_OBJ_SCORE_VIEW: "true",
-          PRACTICE_TYPE: "IN_PRACTICE"
-        }
-      },
-      examTypeList: EXAM_TYPE,
-      formLabelWidth: "120px",
-      examId: "",
-      rules: {
-        name: [{ required: true, validator: validateName, trigger: "blur" }],
-        beginTime: [
-          {
-            type: "date",
-            required: true,
-            validator: validateBeginTime,
-            trigger: "change"
-          }
-        ],
-        endTime: [
-          {
-            type: "date",
-            required: true,
-            validator: validateEndTime,
-            trigger: "change"
-          }
-        ],
-        duration: [
-          { required: true, validator: validateDuration, trigger: "blur" }
-        ],
-        freezeTime: [
-          { required: true, validator: validateFreezeTime, trigger: "blur" }
-        ],
-        examTimes: [
-          { required: true, validator: validateExamTimes, trigger: "blur" }
-        ],
-        examReconnectTime: [
-          {
-            required: true,
-            validator: validateExamReconnectTime,
-            trigger: "blur"
-          }
-        ]
-      }
-    };
-  },
-
-  methods: {
-    getBeginTime(val) {
-      this.practiceExamForm.beginTime = val;
-    },
-    getEndTime(val) {
-      this.practiceExamForm.endTime = val;
-    },
-    getPracticeExam() {
-      if (this.examId != "add") {
-        var url = exam_work_api + "/exam/" + this.examId;
-        this.$http.get(url).then(
-          response => {
-            var body = response.body;
-            body.properties = this.practiceExamForm.properties;
-            this.practiceExamForm = Object.assign(
-              this.practiceExamForm,
-              response.body
-            );
-            this.practiceExamForm.enable = this.practiceExamForm.enable
-              ? "true"
-              : "false";
-
-            var url = exam_work_api + "/exam/allProperties/" + this.examId;
-            this.$http.get(url).then(
-              response => {
-                this.practiceExamForm.properties = Object.assign(
-                  this.practiceExamForm.properties,
-                  response.body
-                );
-                this.show_ckeditor = true;
-              },
-              response => {
-                this.$notify({
-                  type: "error",
-                  message: response.body.desc
-                });
-              }
-            );
-          },
-          response => {
-            this.$notify({
-              type: "error",
-              message: response.body.desc
-            });
-          }
-        );
-      }
-    },
-    saveOnlineExam: function() {
-      var url = exam_work_api + "/exam";
-      this.$refs.practiceExamForm.validate(valid => {
-        if (valid) {
-          if (this.examId != "add") {
-            this.$http.put(url, this.practiceExamForm).then(
-              response => {
-                console.log(response);
-                this.$notify({
-                  type: "success",
-                  message: "保存成功"
-                });
-              },
-              response => {
-                this.$notify({
-                  type: "error",
-                  message: response.body.desc
-                });
-              }
-            );
-          } else {
-            this.$http.post(url, this.practiceExamForm).then(
-              response => {
-                console.log(response);
-                this.$notify({
-                  type: "success",
-                  message: "新增成功"
-                });
-                this.back();
-              },
-              response => {
-                this.$notify({
-                  type: "error",
-                  message: response.body.desc
-                });
-              }
-            );
-          }
-        } else {
-          return false;
-        }
-      });
-    },
-    back() {
-      this.$router.push({ path: "/index/examInfo" });
-    }
+    return {};
   },
-  created() {
-    _this = this;
-    this.examId = this.$route.params.id;
-    this.getPracticeExam();
-  }
+  methods: {},
+  created() {}
 };
 </script>
 <style scoped></style>