From 359cb0048589f23a08ad980c77f103a9de2f8d6c Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期六, 12 十月 2024 17:29:02 +0800
Subject: [PATCH] 修改

---
 src/views/onlineEducation/questionManage/index.vue  |   41 ++++++----
 src/api/onlineEducation/question.js                 |   17 ++++
 src/views/onlineEducation/classCertManage/index.vue |  178 +++++++++++++++++++++++++++-----------------
 3 files changed, 150 insertions(+), 86 deletions(-)

diff --git a/src/api/onlineEducation/question.js b/src/api/onlineEducation/question.js
new file mode 100644
index 0000000..1595e8e
--- /dev/null
+++ b/src/api/onlineEducation/question.js
@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+export function getQuestion(query) {
+  return request({
+    url: '/th/question/bank/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getCert(query) {
+  return request({
+    url: '/th/cert/page',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/src/views/onlineEducation/classCertManage/index.vue b/src/views/onlineEducation/classCertManage/index.vue
index a521771..851b40b 100644
--- a/src/views/onlineEducation/classCertManage/index.vue
+++ b/src/views/onlineEducation/classCertManage/index.vue
@@ -11,6 +11,7 @@
           size="small"
           type="primary"
           style="margin-bottom: 10px;margin-left: 20px"
+          @click="exportData"
         >批量导出</el-button>
       </json-excel>
       <el-date-picker
@@ -24,22 +25,23 @@
         style="margin-left: 30px;"
       >
       </el-date-picker>
-      <el-select v-model="queryParams.institutionId"  size="small" style="margin-left: 40px;" placeholder="请选择平台">
+      <el-select v-model="queryParams.institutionName"  size="small" style="margin-left: 40px;" placeholder="请选择平台">
         <el-option
           v-for="item in platformList"
           :key="item.id"
           :label="item.institutionalName"
-          :value="item.id">
+          :value="item.institutionalName">
         </el-option>
       </el-select>
-      <el-select v-model="queryParams.trainOrgId"  size="small" style="margin-left: 40px;" placeholder="请选择培训机构">
-        <el-option
-          v-for="item in trainOrgList"
-          :key="item.id"
-          :label="item.trainOrgName"
-          :value="item.id">
-        </el-option>
-      </el-select>
+      <el-input size="small" style="margin-left: 30px;width: 200px" v-model="queryParams.trainOrgName" placeholder="请输入机构"></el-input>
+<!--      <el-select v-model="queryParams.trainOrgId"  size="small" style="margin-left: 40px;" placeholder="请选择培训机构">-->
+<!--        <el-option-->
+<!--          v-for="item in trainOrgList"-->
+<!--          :key="item.id"-->
+<!--          :label="item.trainOrgName"-->
+<!--          :value="item.id">-->
+<!--        </el-option>-->
+<!--      </el-select>-->
       <el-button
         size="small"
         type="primary"
@@ -62,11 +64,11 @@
       <el-table-column label="推送平台" align="center" prop="institutionName" />
       <el-table-column label="所属机构" align="center" prop="trainOrgName" />
       <el-table-column label="批次" align="center" prop="batchName" />
-      <el-table-column label="证书生成时间" align="center" prop="createTime" />
+      <el-table-column label="证书生成时间" align="center" prop="certTime" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template #default="scope">
-          <el-button size="mini" type="text" style="color: #1890ff">查看</el-button>
-          <el-button size="mini" type="text" style="color: #1890ff">下载</el-button>
+          <el-button size="mini" type="text" style="color: #1890ff" @click="viewPic(scope.row)">查看</el-button>
+          <el-button size="mini" type="text" style="color: #1890ff" @click="downloadByBlob(scope.row)">下载</el-button>
           <el-button size="mini" type="text" style="color: #1890ff">打印</el-button>
         </template>
       </el-table-column>
@@ -78,6 +80,18 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
+    <el-dialog
+      :visible.sync="picDialog"
+      width="500px"
+      :before-close="handleClose">
+      <div style="display: flex;justify-content: center">
+        <el-image
+          style="width: 450px; height: auto"
+          :src="viewUrl"
+          :preview-src-list="srcList">
+        </el-image>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -87,6 +101,7 @@
 import moment from 'moment/moment'
 import JsonExcel from 'vue-json-excel'
 import { getSubject } from '@/api/onlineEducation/count'
+import { getCert } from '@/api/onlineEducation/question'
 export default {
   name: "nPeopleManage",
   dicts: [],
@@ -101,39 +116,17 @@
       addForm: false,
       total: 0,
       platformList: [],
-      expertList: [
-        // {
-        //   id: 1,
-        //   name: 'xxx',
-        //   idcard: 'xxx',
-        //   institutionName: 'xxx',
-        //   trainOrgName: 'xxx',
-        //   batchName: 'xxx',
-        //   createTime: 'xxx'
-        // },
-        // {
-        //   id: 2,
-        //   name: 'xxx',
-        //   idcard: 'xxx',
-        //   institutionName: 'xxx',
-        //   trainOrgName: 'xxx',
-        //   batchName: 'xxx',
-        //   createTime: 'xxx'
-        // },
-      ],
+      expertList: [],
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        institutionId: '',
+        institutionName: '',
         startTime: '',
         endTime: '',
-        trainOrgId: ''
+        trainOrgName: ''
       },
       trainOrgList: [],
-      jsonData: [
-
-
-      ],
+      jsonData: [],
       json_fields: {
         ID: "id",
         姓名: "name",
@@ -141,8 +134,11 @@
         推送平台: "institutionName",
         所属机构: "trainOrgName",
         批次: "batchName",
-        证书生成时间: "createTime",
-      }
+        证书生成时间: "certTime",
+      },
+      picDialog: false,
+      viewUrl: '',
+      srcList: []
     };
   },
   created() {
@@ -151,36 +147,36 @@
     this.getPlat();
   },
   methods: {
-    setDate(){
-      const end = new Date();
-      const start = new Date();
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-      const s = moment(start).format('YYYY-MM-DD')
-      const e = moment(end).format('YYYY-MM-DD')
-      this.time = [s,e]
-    },
+    // setDate(){
+    //   const end = new Date();
+    //   const start = new Date();
+    //   start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+    //   const s = moment(start).format('YYYY-MM-DD')
+    //   const e = moment(end).format('YYYY-MM-DD')
+    //   this.time = [s,e]
+    // },
     getList(){
       if(this.time && this.time.length >0){
-        this.queryParams.startTime = moment(this.time[0]).format('YYYY-MM-DD')
-        this.queryParams.endTime = moment(this.time[1]).format('YYYY-MM-DD')
+        this.queryParams.startTime = moment(this.time[0]).format('YYYY-MM-DD') + ' 00:00:00'
+        this.queryParams.endTime = moment(this.time[1]).format('YYYY-MM-DD') + ' 00:00:00'
       }
 
-      // this.loading = true;
-      // listBatch( this.queryParams).then((res) => {
-      //   if (res.code == 200) {
-      //     this.expertList = res.rows.map(item => {
-      //       return {
-      //         ...item,
-      //         trainOrgName: item.trainOrgName ? item.trainOrgName : '--',
-      //         startTime: item.startTime ? item.startTime : '--',
-      //         endTime: item.endTime ? item.endTime : '--',
-      //         category: item.category ? item.category : '--'
-      //       }
-      //     })
-      //     this.total = res.total
-      //     this.loading = false;
-      //   }
-      // })
+      this.loading = true;
+      getCert( this.queryParams).then((res) => {
+        if (res.code == 200) {
+          this.expertList = res.rows.map(item => {
+            return {
+              ...item,
+              trainOrgName: item.trainOrgName ? item.trainOrgName : '--',
+              startTime: item.startTime ? item.startTime : '--',
+              endTime: item.endTime ? item.endTime : '--',
+            }
+          })
+          this.total = res.total
+          this.loading = false;
+        }
+        console.log('this.expertList',this.expertList)
+      })
     },
     getPlat() {
       listPlatSelect().then((res) => {
@@ -189,10 +185,17 @@
         }
       })
     },
+    exportData(){
+      if(this.jsonData && this.jsonData.length <= 0){
+        this.$message({
+          message: '请选择要导出的数据',
+          type: 'warning'
+        })
+      }
+    },
     changeCheckBoxValue(val) {
       console.log('val',val)
       this.jsonData = val;
-
     },
     handleChange(){
 
@@ -205,13 +208,48 @@
       this.queryParams = {
         pageNum: 1,
         pageSize: 10,
-        institutionId: '',
+        institutionName: '',
         startTime: '',
         endTime: '',
-        trainOrgId: ''
+        trainOrgName: ''
       }
       this.time = [];
       this.getList();
+    },
+    viewPic(val){
+      this.viewUrl = val.certUrl
+      this.srcList[0] = val.certUrl
+      this.picDialog = true
+    },
+    handleClose() {
+      this.viewUrl = ''
+      // this.srcList = []
+      this.picDialog = false
+    },
+    downloadByBlob(val) {
+      let image = new Image()
+      image.setAttribute('crossOrigin', 'anonymous')
+      image.src = val.certUrl
+      image.onload = () => {
+        let canvas = document.createElement('canvas')
+        canvas.width = image.width
+        canvas.height = image.height
+        let ctx = canvas.getContext('2d')
+        ctx.drawImage(image, 0, 0, image.width, image.height)
+        canvas.toBlob((blob) => {
+          let url = URL.createObjectURL(blob)
+          this.download(url,val.name + '_学时证书')
+          // 用完释放URL对象
+          URL.revokeObjectURL(url)
+        })
+      }
+    },
+    download(href, name) {
+      let eleLink = document.createElement('a')
+      eleLink.download = name
+      eleLink.href = href
+      eleLink.click()
+      eleLink.remove()
     }
   }
 };
diff --git a/src/views/onlineEducation/questionManage/index.vue b/src/views/onlineEducation/questionManage/index.vue
index 8ff1ee9..a3803a4 100644
--- a/src/views/onlineEducation/questionManage/index.vue
+++ b/src/views/onlineEducation/questionManage/index.vue
@@ -4,11 +4,17 @@
       <el-table-column label="序号" align="center" type="index" width="80" />
       <el-table-column label="更新时间" align="center" prop="updateTime" />
       <el-table-column label="平台名称" align="center" prop="institutionName" />
-      <el-table-column label="题库名称" align="center" prop="subjectName" />
-      <el-table-column label="题目数量" align="center" prop="subjectCount" />
-      <el-table-column label="类型" align="center" prop="type" >
+      <el-table-column label="题库名称" align="center" prop="name" />
+      <el-table-column label="题库题目总数" align="center" prop="totalCount" />
+      <el-table-column label="单选题数量" align="center" prop="singleCount" />
+      <el-table-column label="多选题数量" align="center" prop="multiCount" />
+      <el-table-column label="判断题数量" align="center" prop="judgeCount" />
+      <el-table-column label="简答题数量" align="center" prop="easyCount" />
+      <el-table-column label="混合题数量" align="center" prop="mixCount" />
+      <el-table-column label="其他题目数量" align="center" prop="otherCount" />
+      <el-table-column label="删除标识" align="center">
         <template #default="scope">
-          {{scope.row.type == 1 ? '单选' : scope.row.type == 2 ?'多选' :scope.row.type == 3 ? '判断':scope.row.type == 4 ? '简答':scope.row.type == 5 ? '混合' : '其他'}}
+          {{scope.row.delFlag == 0 ? '未删除' : scope.row.delFlag == 2 ?'已删除' : ''}}
         </template>
       </el-table-column>
       <el-table-column label="模拟考核组卷" align="center" class-name="small-padding fixed-width">
@@ -33,7 +39,7 @@
       width="500px"
       :before-close="handleClose">
       <div style="font-size: 16px">
-        <div>已向 <span class="titleText">{{chooseItem.institutionName}}</span> 发送基于题库 <span class="titleText">{{chooseItem.subjectName}}</span> 的组卷要求,学员可登录平台进行模拟考试。</div>
+        <div>已向 <span class="titleText">{{chooseItem.institutionName}}</span> 发送基于题库 <span class="titleText">{{chooseItem.name}}</span> 的组卷要求,学员可登录平台进行模拟考试。</div>
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="handleClose">确 定</el-button>
@@ -45,6 +51,7 @@
 <script>
 
 import { delPlat } from '@/api/onlineEducation/plat'
+import { getQuestion } from '@/api/onlineEducation/question'
 
 export default {
   name: "nPeopleManage",
@@ -75,17 +82,18 @@
   methods: {
     getList(){
       this.loading = true;
-      this.dataList = [
-        {
-          id: 1,
-          updateTime: '2024-08-10 10:30:30',
-          institutionName: '链工宝学习平台',
-          subjectName: '高压电工作业',
-          subjectCount: 50,
-          type: 1
+      getQuestion(this.queryParams).then(res => {
+        if(res.code === 200){
+          this.dataList = res.rows
+          this.total = res.total
+          this.loading = false;
+        }else {
+          this.$message({
+            message: res.msg,
+            type: 'warning'
+          })
         }
-      ]
-      this.loading = false;
+      })
     },
     handleChange(){
 
@@ -108,10 +116,11 @@
           console.log('row',row)
          this.showDialog = true
           this.btnLoading = false
-        }, 2000);
+        }, 1500);
       })
     },
     handleClose() {
+      this.chooseItem = {}
       this.showDialog = false
     }
   }

--
Gitblit v1.9.2