From 8c3eaeddeff2c9c5a92352e6bf830e5000ff5882 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 03 十二月 2024 12:16:11 +0800
Subject: [PATCH] 附件最多上传10个

---
 src/views/exam/personalRandomTemplate/list.vue |  240 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 209 insertions(+), 31 deletions(-)

diff --git a/src/views/exam/personalRandomTemplate/list.vue b/src/views/exam/personalRandomTemplate/list.vue
index b44db15..b4504fe 100644
--- a/src/views/exam/personalRandomTemplate/list.vue
+++ b/src/views/exam/personalRandomTemplate/list.vue
@@ -1,41 +1,82 @@
 <template>
   <div class="app-container">
-<!--    <el-form :model="queryParam" ref="queryForm" :inline="true">-->
-<!--      <el-form-item label="棰樼洰ID锛�">-->
-<!--        <el-input v-model="queryParam.id" clearable></el-input>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="閮ㄩ棬锛�">-->
-<!--        <el-select v-model="queryParam.level" placeholder="閮ㄩ棬" @change="levelChange" clearable>-->
-<!--          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>-->
-<!--        </el-select>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="璇剧洰锛�" >-->
-<!--        <el-select v-model="queryParam.subjectId"  clearable>-->
-<!--          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' '"></el-option>-->
-<!--        </el-select>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item>-->
-<!--        <el-button type="primary" @click="submitForm">鏌ヨ</el-button>-->
-<!--        <router-link :to="{path:'/exam/personalSimulation/edit'}" class="link-left">-->
-<!--          <el-button type="primary">娣诲姞</el-button>-->
-<!--        </router-link>-->
-<!--      </el-form-item>-->
-<!--    </el-form>-->
-    <router-link :to="{path:'/exam/personalRandomTemplate/edit'}" class="link-left">
-      <el-button type="primary">娣诲姞</el-button>
-    </router-link>
+   <el-form :model="queryParam" ref="queryForm" :inline="true">
+     <el-form-item label="鍚嶇О锛�">
+       <el-input v-model="queryParam.name" clearable></el-input>
+     </el-form-item>
+    <el-form-item label="閮ㄩ棬锛�">
+      <el-cascader
+        clearable
+        v-model="queryParam.deptId"
+        collapse-tags
+        :options="depts"
+        :props="{ emitPath: false, value: 'id', label: 'name',  checkStrictly: true, multiple: true }"
+        ></el-cascader>
+    </el-form-item>
+     <el-form-item label="璇剧洰锛�" >
+       <el-select v-model="queryParam.subjectId"  clearable multiple collapse-tags>
+         <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' '"></el-option>
+       </el-select>
+     </el-form-item>
+     <el-form-item>
+        <el-date-picker
+        v-model="queryParam.period"
+        type="daterange"
+        unlink-panels
+        range-separator="鑷�"
+        start-placeholder="寮�濮嬫棩鏈�"
+        end-placeholder="缁撴潫鏃ユ湡"
+        value-format="yyyy-MM-dd"
+        :picker-options="pickerOptions">
+      </el-date-picker>
+    </el-form-item>
+     <el-form-item>
+       <el-button type="primary" @click="submitForm" size="small" style="margin-right: 5px">鏌ヨ</el-button>
+       <router-link :to="{path:'/exam/personalRandomTemplate/edit'}">
+         <el-button type="success" size="small" style="margin-bottom: 5px">娣诲姞</el-button>
+       </router-link>
+     </el-form-item>
+   </el-form>
+
     <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
-      <el-table-column prop="subjectId" label="璇剧洰" :formatter="subjectFormatter" width="120px" />
+      <el-table-column prop="subjectNames" label="璇剧洰" />
       <el-table-column prop="name" label="鍚嶇О"  />
-      <el-table-column  label="鎿嶄綔" align="center"  width="260px">
+      <el-table-column prop="createDepartment" label="鍒涘缓閮ㄩ棬" />
+      <el-table-column prop="ctime" label="鍒涘缓鏃堕棿" />
+      <el-table-column  label="鎿嶄綔" align="center"  width="360px">
         <template slot-scope="{row}">
-          <el-button size="mini" @click="$router.push({path:'/exam/personalRandomTemplate/edit',query:{id:row.id}})" >缂栬緫</el-button>
-          <el-button size="mini" type="danger"  @click="deletePaper(row)" class="link-left">鍒犻櫎</el-button>
+          <el-button size="small" @click="$router.push({path:'/exam/personalRandomTemplate/edit',query:{id:row.id}})" >缂栬緫</el-button>
+          <el-button size="small" type="primary" @click="missExam(row)">琛ヨ��</el-button>
+          <el-button size="small" type="danger"  @click="deletePaper(row)" class="link-left">鍒犻櫎</el-button>
+          <el-button size="small" type="danger"  @click="handleExport(row)" class="link-left">瀵煎嚭</el-button>
         </template>
       </el-table-column>
     </el-table>
     <pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
                 @pagination="search"/>
+
+    <el-dialog
+      title="琛ヨ��"
+      :visible.sync="dialogVisible"
+      width="550px">
+      <el-form :model="form" ref="form">
+        <el-form-item label="鑰冪敓锛�" prop="menuIds" required>
+          <!-- <el-cascader v-model="form.menuIds" :options="options" :props="{ multiple: true }" clearable collapse-tags></el-cascader> -->
+          <el-select v-model="form.menuIds" multiple clearable placeholder="璇烽�夋嫨" collapse-tags filterable @change="changeSelect">
+            <div class="checkboxWrapper">
+              <el-checkbox v-model="checked" @change.native="checkChange">
+                鍏ㄩ��
+              </el-checkbox>
+            </div>
+            <el-option v-for="item in options" :key="item.id" :label="item.realName" :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+        <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitUpdate">纭� 瀹�</el-button>
+        </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -43,11 +84,67 @@
 import { mapActions, mapGetters, mapState } from 'vuex'
 import Pagination from '@/components/Pagination'
 import examPaperApi from '@/api/examPaper'
+import departmentApi from '@/api/department'
+import userApi from '@/api/user'
 
 export default {
   components: { Pagination },
   data () {
     return {
+      checked: false,
+      pickerOptions: {
+        shortcuts: [{
+          text: '鏈�杩戜竴鍛�',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '鏈�杩戜竴涓湀',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '鏈�杩戜笁涓湀',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '鏈�杩戝崐骞�',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 183);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '鏈�杩戜竴骞�',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 365);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
+      options: [],
+      depts: [],
+      form: {
+        menuIds: [],
+        userIds: [],
+        id: null,
+        limitDateTime: []
+      },
+      examPaper: {},
+      dialogVisible: false,
       queryParam: {
         id: null,
         level: null,
@@ -62,15 +159,74 @@
     }
   },
   created () {
-    this.initSubject()
     this.search()
     this.queryParam.subjectId = null
-    this.subjectFilter = this.subjects
+    examPaperApi.selflist().then(res => {
+      this.subjectFilter = res.response;
+    });
+    departmentApi.getDeptAdmins().then(res => {
+      this.depts = res.response;
+    })
   },
   methods: {
+    checkChange() {
+      let resValues = this.options.map(item => item.id);
+      // 濡傛灉checkbox涓篺alse锛屽垯涓哄弽閫夛紝閫夋嫨鏁扮粍涓虹┖
+      if (!this.checked) {
+        this.form.menuIds = [];
+      } else {
+      	// 濡傛灉checkbox涓簍rue锛屽垯涓哄叏閫夛紝閫夋嫨鏁扮粍娣诲姞鎵�鏈夋暟鎹�
+        let res = [...resValues];
+        this.form.menuIds = res;
+      }
+    },
+    changeSelect(val) {
+      let resValues = this.options.map(item => item.value);
+      // 濡傛灉閫夋嫨鏁扮粍闀垮害绛変簬options鐨勯暱搴︼紝checkbox璁句负true锛屽弽涔嬭涓篺alse
+      if (val.length === resValues.length) {
+        this.checked = true;
+      } else {
+        this.checked = false;
+      }
+      this.form.menuIds = val;
+    },
+    missExam(item) {
+      this.form = {
+        menuIds: [],
+        userIds: [],
+        id: null,
+        limitDateTime: []
+      }
+      this.examPaper = item;
+      userApi.getFailTemplateUser(item.id).then(res => {
+        this.options = res.response;
+        this.dialogVisible = true;
+      })
+    },
+    submitUpdate () {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let op = [];
+          for(var ele of this.form.menuIds){
+            op.push(ele)
+          };
+          this.form.menuIds = JSON.stringify(this.form.menuIds);
+          this.form.userIds = op;
+          this.form.id = this.examPaper.id;
+          examPaperApi.missExamByTemplateId(this.form).then(re => {
+            if (re.code === 1) {
+              this.$message.success("鎿嶄綔鎴愬姛")
+              this.dialogVisible = false;
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    },
     handleExport(row){
       let fileName = row.name +'.xls'
-      let url ='/api/admin/exam/count/exportTemplatesId/'+row.id
+      let url ='/api/admin/exam/count/exportRandownTemplatesId/'+row.id
       var x = new XMLHttpRequest();
       x.open("GET", url, true);
       x.responseType = "blob";
@@ -103,6 +259,21 @@
 
       // })
     },
+    handleExport1(row){
+      let fileName = row.name +'.xls'
+      let url ='/api/admin/exam/count/timeOne'
+      var x = new XMLHttpRequest();
+      x.open("GET", url, true);
+      x.responseType = "blob";
+      x.onload = function () {
+        var url = window.URL.createObjectURL(x.response);
+        var a = document.createElement("a");
+        a.href = url;
+        a.download = fileName;
+        a.click();
+      };
+      x.send();
+    },
     submitForm () {
       this.queryParam.pageIndex = 1
       this.search()
@@ -110,6 +281,7 @@
     search () {
       this.listLoading = true
       this.queryParam.status = 0
+      if (this.queryParam.period) this.queryParam.period[1] += ' 23:59:59'
       examPaperApi.pageselfList(this.queryParam).then(data => {
         const re = data.response
         this.tableData = re.list
@@ -149,3 +321,9 @@
   }
 }
 </script>
+<style lang="scss" scoped>
+.checkboxWrapper {
+  padding: 8px 20px;
+  border-bottom: 1px solid #ccc;
+}
+</style>

--
Gitblit v1.8.0