瀏覽代碼

Merge branch 'master' of http://git.qmth.com.cn/ExamCloud-3/examcloud-web-admin

chenken 6 年之前
父節點
當前提交
a20197fe09

+ 10 - 49
src/components/ckeditor.vue

@@ -1,29 +1,13 @@
 <template>
-  <div :style="divStyle">
-    <div class="ckeditor">
-      <textarea
-        :id="id"
-        :display="display"
-        :value="value"
-        class="el-textarea__inner"
-      ></textarea>
-    </div>
+  <div class="ckeditor" style="margin-bottom: 10px;">
+    <textarea :id="id" :value="value"></textarea>
   </div>
 </template>
 
 <script>
 let inc = 0;
 export default {
-  data() {
-    return {
-      divStyle: ""
-    };
-  },
   props: {
-    display: {
-      type: String,
-      default: "inline"
-    },
     value: {
       type: String
     },
@@ -33,11 +17,15 @@ export default {
     },
     height: {
       type: String,
-      default: "300px"
+      default: "200px"
     },
     width: {
       type: String,
-      default: "500px"
+      default: "980px"
+    },
+    toolbar: {
+      type: [String, Array],
+      default: null
     },
     language: {
       type: String,
@@ -59,43 +47,16 @@ export default {
     }
   },
   mounted() {
-    this.divStyle = this.divStyle + "width:" + this.width + ";";
-
     let config = {
+      toolbar: this.toolbar,
       language: this.language,
       height: this.height,
       width: this.width,
       extraPlugins: this.extraplugins,
-      toolbarGroups: [
-        { name: "clipboard", groups: ["clipboard", "undo"] },
-        {
-          name: "editing",
-          groups: ["find", "selection", "spellchecker", "editing"]
-        },
-        { name: "links", groups: ["links"] },
-        { name: "insert", groups: ["insert"] },
-        { name: "forms", groups: ["forms"] },
-        { name: "tools", groups: ["tools"] },
-        { name: "document", groups: ["mode", "document", "doctools"] },
-        { name: "others", groups: ["others"] },
-        "/",
-        { name: "basicstyles", groups: ["basicstyles", "cleanup"] },
-        {
-          name: "paragraph",
-          groups: ["list", "indent", "blocks", "align", "bidi", "paragraph"]
-        },
-        { name: "styles", groups: ["styles"] },
-        { name: "colors", groups: ["colors"] },
-        { name: "about", groups: ["about"] }
-      ],
       removeButtons:
         "Underline,Subscript,Superscript,Image,HorizontalRule,Unlink,Link,Scayt,Cut,Copy,Paste,PasteText,PasteFromWord,Maximize,Italic,Bold,NumberedList,BulletedList,Indent,Outdent,Blockquote,Styles,Format,About,RemoveFormat,Strike"
     };
-    if (this.display !== "inline") {
-      window.CKEDITOR.replace(this.id, config);
-    } else {
-      window.CKEDITOR.inline(this.id, config);
-    }
+    window.CKEDITOR.replace(this.id, config);
     this.instance.on("change", () => {
       let html = this.instance.getData();
       if (html !== this.value) {

+ 8 - 8
src/modules/basic/view/user.vue

@@ -125,10 +125,10 @@
               </el-form-item>
             </el-row>
             <el-row>
-              <el-form-item label="联系方式" prop="mobile">
+              <el-form-item label="联系方式" prop="phoneNumber">
                 <el-input
                   class="input_width_lg"
-                  v-model="userForm.mobile"
+                  v-model="userForm.phoneNumber"
                   auto-complete="off"
                   placeholder="请输入联系方式"
                 />
@@ -251,10 +251,10 @@
               </el-form-item>
             </el-row>
             <el-row>
-              <el-form-item label="联系方式" prop="mobile">
+              <el-form-item label="联系方式" prop="phoneNumber">
                 <el-input
                   class="input_width_lg"
-                  v-model="userForm.mobile"
+                  v-model="userForm.phoneNumber"
                   auto-complete="off"
                   placeholder="请输入联系方式"
                 />
@@ -511,7 +511,7 @@ export default {
         name: "",
         loginName: "",
         password: "",
-        mobile: "",
+        phoneNumber: "",
         enable: true,
         rootOrgId: null,
         orgId: null,
@@ -551,7 +551,7 @@ export default {
             trigger: "blur"
           }
         ],
-        mobile: [
+        phoneNumber: [
           // {
           //   message: "请输入联系方式",
           //   trigger: "blur"
@@ -764,7 +764,7 @@ export default {
       this.userForm.name = "";
       this.userForm.loginName = "";
       this.userForm.password = "";
-      this.userForm.mobile = "";
+      this.userForm.phoneNumber = "";
       this.userForm.roleIds = [];
       this.userForm.orgId = null;
       this.enableStr = "true";
@@ -786,7 +786,7 @@ export default {
       this.userForm.name = row.name;
       this.userForm.loginName = row.loginName;
       this.enableStr = row.enable ? "true" : "false";
-      this.userForm.mobile = row.mobile;
+      this.userForm.phoneNumber = row.phoneNumber;
       this.userForm.password = null;
       this.userForm.rootOrgId = row.rootOrgId;
       this.rowIsSuperAdmin = false;

+ 15 - 3
src/modules/examwork/view/examInfo.vue

@@ -84,8 +84,7 @@
           <el-table-column type="selection" width="40"></el-table-column>
           <el-table-column prop="id" width="60" label="ID" sortable>
           </el-table-column>
-          <el-table-column prop="name" label="考试名称" sortable>
-          </el-table-column>
+          <el-table-column prop="name" label="考试名称"> </el-table-column>
           <el-table-column width="130" label="考试类型" sortable>
             <template slot-scope="scope">
               <div>
@@ -401,6 +400,8 @@ export default {
         "E_EAXM_SEARCH_PARAMS",
         JSON.stringify(this.formSearch)
       );
+      sessionStorage.setItem("E_EAXM_SEARCH_PAGE_SIZE", this.pageSize);
+      sessionStorage.setItem("E_EAXM_SEARCH_CUR_PAGE", this.currentPage);
     },
     getExamType(examType) {
       for (let tempExamType of this.examTypeList) {
@@ -422,10 +423,21 @@ export default {
   //初始化查询
   created() {
     let sessionData = sessionStorage.getItem("E_EAXM_SEARCH_PARAMS");
+    let pageSize = sessionStorage.getItem("E_EAXM_SEARCH_PAGE_SIZE");
+    let currentPage = sessionStorage.getItem("E_EAXM_SEARCH_CUR_PAGE");
+    sessionStorage.removeItem("E_EAXM_SEARCH_PARAMS");
+    sessionStorage.removeItem("E_EAXM_SEARCH_PAGE_SIZE");
+    sessionStorage.removeItem("E_EAXM_SEARCH_CUR_PAGE");
     if (sessionData) {
       this.formSearch = JSON.parse(sessionData);
     }
-    sessionStorage.removeItem("E_EAXM_SEARCH_PARAMS");
+    if (pageSize) {
+      this.pageSize = parseInt(pageSize);
+    }
+    if (currentPage) {
+      this.currentPage = parseInt(currentPage);
+    }
+
     this.initPrivileges();
     this.searchForm();
   }

+ 1 - 13
src/modules/examwork/view/examStudent.vue

@@ -584,7 +584,7 @@
         >
           <el-table-column type="selection" width="40"></el-table-column>
           <el-table-column prop="id" label="ID" sortable></el-table-column>
-          <el-table-column label="考生" sortable>
+          <el-table-column label="考生">
             <template slot-scope="scope">
               <el-popover trigger="hover" placement="left">
                 <div style="font-size: 18px;font-family: 新宋体">
@@ -837,17 +837,6 @@ import { mapState } from "vuex";
 
 let _this = null;
 
-let validateStuCode = (rule, value, callback) => {
-  if (
-    _this.examStudentForm.studentCode &&
-    _this.examStudentForm.studentCode.length < 6
-  ) {
-    callback(new Error("学号至少6位"));
-  } else {
-    callback();
-  }
-};
-
 let validateIdentityNumber = (rule, value, callback) => {
   if (
     !_this.examStudentForm.identityNumber ||
@@ -986,7 +975,6 @@ export default {
         studentName: [
           { required: true, message: "请输入姓名", trigger: "blur" }
         ],
-        studentCode: [{ validator: validateStuCode, trigger: "blur" }],
         identityNumber: [
           { required: true, validator: validateIdentityNumber, trigger: "blur" }
         ],

+ 14 - 4
src/modules/examwork/view/examStudentImport.vue

@@ -61,24 +61,34 @@
                   :auto-upload="false"
                   :multiple="false"
                 >
-                  <el-button size="small" slot="trigger" type="primary"
+                  <el-button
+                    size="small"
+                    slot="trigger"
+                    type="primary"
+                    icon="el-icon-search"
                     >选择文件</el-button
                   >
                   <el-button
                     size="small"
                     style="margin-left:10px;"
-                    type="success"
+                    type="primary"
                     @click="submitUpload"
+                    icon="el-icon-check"
                     >确认上传
                   </el-button>
                   <el-button
                     size="small"
                     style="margin-left: 10px;"
-                    type="danger"
+                    type="primary"
                     @click="removeFile"
+                    icon="el-icon-refresh"
                     >清空文件
                   </el-button>
-                  <el-button size="small" type="info" @click="exportFile"
+                  <el-button
+                    size="small"
+                    type="primary"
+                    @click="exportFile"
+                    icon="el-icon-download"
                     >下载模板
                   </el-button>
                   <div slot="tip" class="el-upload__tip">只能上传xlsx文件</div>

+ 94 - 14
src/modules/examwork/view/onlineExamOrgSettings.vue

@@ -68,33 +68,64 @@
           </el-form-item>
         </el-form>
 
+        <div class="block-seperator"></div>
+        <span>批量操作:</span>
+
+        <el-button
+          size="small"
+          type="success"
+          icon="el-icon-check"
+          :disabled="noBatchSelected"
+          @click="batchNotLimit"
+          >开考
+        </el-button>
+        <el-button
+          size="small"
+          type="danger"
+          icon="el-icon-close"
+          :disabled="noBatchSelected"
+          @click="batchLimit"
+          >禁考
+        </el-button>
+
+        <div style="width: 100%;margin-bottom: 10px;"></div>
+
         <!-- 页面列表 -->
         <el-table
           :data="tableData"
           border
           style="width: 100%;text-align:center;"
+          @selection-change="selectChange"
           v-loading="loading4FormSearch"
         >
+          <el-table-column type="selection" width="40"></el-table-column>
           <el-table-column prop="id" width="80" label="ID"></el-table-column>
           <el-table-column
             prop="orgCode"
             label="学习中心代码"
+            sortable
           ></el-table-column>
           <el-table-column
             prop="orgName"
             label="学习中心名称"
+            sortable
           ></el-table-column>
-          <el-table-column prop="beginTime" width="155" label="开始时间">
+          <el-table-column
+            prop="beginTime"
+            width="155"
+            label="开始时间"
+            sortable
+          >
           </el-table-column>
-          <el-table-column prop="endTime" width="155" label="结束时间">
+          <el-table-column prop="endTime" width="155" label="结束时间" sortable>
           </el-table-column>
-          <el-table-column width="110" label="是否可以考试">
+          <el-table-column width="80" label="开考状态">
             <span slot-scope="scope">
               <span v-if="!scope.row.examLimit">
                 <el-tooltip
                   class="item"
                   effect="dark"
-                  content=""
+                  content="开考"
                   placement="left"
                 >
                   <i class="el-icon-success" style="color:green;"></i>
@@ -104,7 +135,7 @@
                 <el-tooltip
                   class="item"
                   effect="dark"
-                  content=""
+                  content="禁考"
                   placement="left"
                 >
                   <i class="el-icon-error" style="color:red;"></i>
@@ -130,8 +161,7 @@
                 <el-button
                   v-else
                   size="mini"
-                  type="primary"
-                  plain
+                  type="danger"
                   icon="el-icon-edit"
                   @click="updateExamLimit(scope.row)"
                 >
@@ -217,10 +247,10 @@
               </el-form-item>
             </el-row>
             <el-row>
-              <el-form-item label="是否可以考试" label-width="120px">
+              <el-form-item label="开考状态" label-width="120px">
                 <el-radio-group v-model="orgSetting.examLimit" class="input">
-                  <el-radio label="true"></el-radio>
-                  <el-radio label="false"></el-radio>
+                  <el-radio label="true">禁考</el-radio>
+                  <el-radio label="false">开考</el-radio>
                 </el-radio-group>
               </el-form-item>
             </el-row>
@@ -292,10 +322,10 @@
               </el-form-item>
             </el-row>
             <el-row>
-              <el-form-item label="是否可以考试" label-width="120px">
+              <el-form-item label="开考状态" label-width="120px">
                 <el-radio-group v-model="orgSetting.examLimit" class="input">
-                  <el-radio label="true"></el-radio>
-                  <el-radio label="false"></el-radio>
+                  <el-radio label="true">禁考</el-radio>
+                  <el-radio label="false">开考</el-radio>
                 </el-radio-group>
               </el-form-item>
             </el-row>
@@ -398,6 +428,7 @@ export default {
       currentPage: 1,
       pageSize: 10,
       total: 0,
+      selectedOrgSettings: [],
 
       orgSetting: {
         examId: null,
@@ -431,9 +462,58 @@ export default {
     };
   },
   computed: {
-    ...mapState({ user: state => state.user })
+    ...mapState({ user: state => state.user }),
+    noBatchSelected() {
+      return this.selectedOrgSettings.length === 0;
+    }
   },
   methods: {
+    batchNotLimit() {
+      this.$confirm("所选学生是否开考?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        let url =
+          EXAM_WORK_API +
+          "/exam/setOrgExamNotLimited/" +
+          this.selectedOrgSettings;
+        this.$httpWithMsg.put(url).then(response => {
+          console.log(response);
+          this.$notify({
+            type: "success",
+            message: "开考成功"
+          });
+          this.search();
+        });
+      });
+    },
+    batchLimit() {
+      this.$confirm("所选学生是否禁考?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        let url =
+          EXAM_WORK_API + "/exam/setOrgExamLimited/" + this.selectedOrgSettings;
+        this.$httpWithMsg.put(url).then(response => {
+          console.log(response);
+          this.$notify({
+            type: "success",
+            message: "禁考成功"
+          });
+          this.search();
+        });
+      });
+    },
+    selectChange(row) {
+      this.selectedOrgSettings = [];
+      row.forEach((element, index) => {
+        console.log(index);
+        this.selectedOrgSettings.push(element.id);
+      });
+      console.log(this.selectedOrgSettings);
+    },
     getOrgList4Search(name) {
       this.loadingOrg4Search = true;
       var url = CORE_API + "/org/query?" + new URLSearchParams({ name: name });

+ 11 - 16
src/modules/examwork/view/student.vue

@@ -135,7 +135,7 @@
             label="ID"
             sortable
           ></el-table-column>
-          <el-table-column label="考生" width="100" sortable>
+          <el-table-column label="考生" width="100">
             <template slot-scope="scope">
               <el-popover trigger="hover" placement="left">
                 <div style="font-size: 18px;font-family: 新宋体">
@@ -384,7 +384,7 @@
             </el-table-column>
             <el-table-column prop="courseName" label="课程" sortable>
             </el-table-column>
-            <el-table-column width="130" label="考试状态" sortable>
+            <el-table-column width="130" label="考试状态">
               <div slot-scope="scope">
                 <span v-if="null == scope.row.started"></span>
                 <span v-else-if="scope.row.started">已考</span>
@@ -431,13 +431,18 @@
                   :auto-upload="false"
                   :multiple="false"
                 >
-                  <el-button size="small" slot="trigger" type="primary"
+                  <el-button
+                    size="small"
+                    slot="trigger"
+                    type="primary"
+                    icon="el-icon-search"
                     >选择文件
                   </el-button>
                   <el-button
                     size="small"
                     style="margin-left:10px;"
-                    type="success"
+                    type="primary"
+                    icon="el-icon-check"
                     @click="submitUpload"
                     >确认上传
                   </el-button>
@@ -577,25 +582,15 @@ export default {
         .then(response => {
           if ("search" == where) {
             this.queryExams4SearchLoading = false;
-            this.examList4Search = response.body;
+            this.examList4Search = response.data;
           }
         })
-        .catch(response => {
-          if (response.status == 500) {
-            this.$notify({
-              showClose: true,
-              message: response.body.desc,
-              type: "error"
-            });
-          }
+        .catch(() => {
           if ("search" == where) {
             this.queryExams4SearchLoading = false;
           }
         });
     },
-    closeStuExamDialog() {
-      this.stuExamDialog = false;
-    },
     showStuExamDialog(row) {
       this.stuExamSearch.identityNumber = row.identityNumber;
       this.stuExamSearch.rootOrgId = row.rootOrgId;

+ 2 - 2
src/modules/marking/views/MarkPaperCheck.vue

@@ -299,7 +299,7 @@ export default {
   },
   methods: {
     getMarkWorks() {
-      this.$http.get(DATA_PROCESS_API + "/markWorks").then(response => {
+      this.$http.get(DATA_PROCESS_API + "/markWorks?status=1").then(response => {
         this.markWorkList = response.data;
       });
     },
@@ -482,8 +482,8 @@ export default {
     }
   },
   created() {
-    //查询标记卷
     this.getMarkWorks();
+    //查询标记卷
     this.getTags();
     this.backFill();
   }

+ 1 - 1
src/modules/marking/views/MarkSettingMain.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <LinkTitlesCustom :currentPaths="['评卷设置', '设置列表']" />
+    <LinkTitlesCustom :currentPaths="['评卷工作','评卷设置', '设置列表']" />
     <section class="content">
       <div
         class="box box-info"

+ 1 - 1
src/modules/marking/views/MarkWorkOverview.vue

@@ -361,7 +361,7 @@ export default {
       this.total = 0;
     },
     getMarkWorks() {
-      this.$http.get(DATA_PROCESS_API + "/markWorks").then(response => {
+      this.$http.get(DATA_PROCESS_API + "/markWorks?status=1").then(response => {
         this.markWorkList = response.data;
       });
     },

+ 2 - 1
src/modules/marking/views/Marker.vue

@@ -240,8 +240,9 @@ export default {
         path: url
       });
     },
+    //获取创建成功的markWork列表
     getMarkWorks() {
-      this.$http.get(DATA_PROCESS_API + "/markWorks").then(response => {
+      this.$http.get(DATA_PROCESS_API + "/markWorks?status=1").then(response => {
         this.markWorkList = response.data;
       });
     },

+ 1 - 1
src/modules/portal/views/home/Home.vue

@@ -254,7 +254,7 @@ export default {
 }
 .el-footer {
   color: #878e93;
-  background-color: white;
+  background-color: #ecf0f5;
   line-height: 40px;
   height: 40px !important;
 }