|
|
@@ -0,0 +1,560 @@
|
|
|
+<template>
|
|
|
+ <div :class="{'ibps-fixed-toolbar':checkMode}">
|
|
|
+ <van-sticky>
|
|
|
+ <van-nav-bar :title="generateTitle($route.name,$route.params.title||$route.meta.title)"
|
|
|
+ :left-text="$t('common.button.back')" :right-text="$utils.isNotEmpty(listData)?rightText:''" left-arrow
|
|
|
+ @click-left="$router.push({ name: 'dashboard' })" @click-right="toCheckMode()" />
|
|
|
+ <van-search v-model="subject" show-action placeholder="请输入搜索关键词" @search="onSearch">
|
|
|
+ <template #left>
|
|
|
+ <van-icon name="bars" :class="{'ibps-active':$utils.isNotEmpty(typeId)}" class="ibps-pr-5"
|
|
|
+ @click="clickType" />
|
|
|
+ </template>
|
|
|
+ <template #action>
|
|
|
+ <van-icon name="filter-o" :class="{'ibps-active':stateActive}" @click="clickMoreSearch" />
|
|
|
+ </template>
|
|
|
+ </van-search>
|
|
|
+ </van-sticky>
|
|
|
+ <!-- 内容展示区 -->
|
|
|
+ <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
|
|
|
+ <van-list v-model="loading" :finished="finished" @load="loadData">
|
|
|
+ <van-checkbox-group v-model="checkedIds">
|
|
|
+ <van-cell v-for="(item,index) in listData" :key="item.id+index" :title="item.examName">
|
|
|
+ <!-- :label="getTaskDesc(item.subject)" @click="onClick(item,index)"> -->
|
|
|
+ <!-- 插入图标 -->
|
|
|
+ <template slot="icon">
|
|
|
+ <van-checkbox v-if="checkMode" ref="checkboxes" :name="item.id" class="ibps-mr-10" />
|
|
|
+ <!-- <ibps-avatar v-else :icon="_randomIcon(index)" :text="item.name" :bg-color="_randomColor(index)"
|
|
|
+ radius="4" icon-prefix="ibps-icon" class="ibps-mr-10" /> -->
|
|
|
+ <van-icon name="notes-o" size="1.5rem" color="#1E90FF" />
|
|
|
+ </template>
|
|
|
+ <template #label>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">考试类别</van-col>
|
|
|
+ <van-col span="12">{{item.examType==''?'/':item.examType==null?'/':item.examType}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">考试状态</van-col>
|
|
|
+ <van-col span="12">{{item.examState==''?'/':item.examState==null?'/':item.examState}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">限考时间</van-col>
|
|
|
+ <van-col span="12">{{item.limitDate==''?'/':item.limitDate==null?'/':item.limitDate}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">限考次数</van-col>
|
|
|
+ <van-col span="12">{{item.limitCount==''?'/':item.limitCount==null?'/':item.limitCount}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">考试时长</van-col>
|
|
|
+ <van-col
|
|
|
+ span="12">{{item.duration==''?'/':item.duration==null?'/':item.duration=='不限'?item.duration:transformTime(item.duration)}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">考试题库</van-col>
|
|
|
+ <van-col span="12">{{item.bankName==''?'/':item.bankName==null?'/':item.bankName}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ </template>
|
|
|
+ <!-- 插入内容 -->
|
|
|
+ <span>{{ item.createTime|formatRelativeTime }}</span>
|
|
|
+ <div style="margin-top: 90%;height: 100%;">
|
|
|
+ <van-tag type="primary" size="medium" @click="onClick(item,index)">开始考试</van-tag>
|
|
|
+ </div>
|
|
|
+ <!-- <div> -->
|
|
|
+ <!-- <van-tag plain :type=" item.status | optionsFilter(bpmnStatusOptions,'type')">{{ item.status | optionsFilter(bpmnStatusOptions) }}</van-tag> -->
|
|
|
+ <!-- <van-tag size="medium"
|
|
|
+ :color="item.status | optionsFilter(bpmnStatusOptions,'type') | optionsFilter(colorOptions,'color','type')"
|
|
|
+ :text-color="item.status | optionsFilter(bpmnStatusOptions,'type') | optionsFilter(colorOptions,'textColor','type')">
|
|
|
+ {{ item.status| optionsFilter(bpmnStatusOptions) }}</van-tag> -->
|
|
|
+ <!-- </div> -->
|
|
|
+ </van-cell>
|
|
|
+ </van-checkbox-group>
|
|
|
+ <ibps-list-result-page :result-type="resultType" :error-type="errorType" :result-message="resultMessage" />
|
|
|
+ </van-list>
|
|
|
+ </van-pull-refresh>
|
|
|
+ <ibps-toolbar v-show="checkMode" :actions="mainActions" />
|
|
|
+ <!-- 点击搜索的右边显示 -->
|
|
|
+ <ibps-more-search :show="moreSearchPopup" :search-forms="searchForms" @callback="onMoreSearch"
|
|
|
+ @close="show => moreSearchPopup = show" @reset-form="resetForm" />
|
|
|
+ <!-- 点击搜索的左边显示 -->
|
|
|
+ <ibps-type-tree v-model="typeTreePopup" title="流程分类" category-key="FLOW_TYPE" @node-click="clickTypeNode"
|
|
|
+ @close="visible => typeTreePopup = visible" />
|
|
|
+ <!-- 遮罩层 -->
|
|
|
+ <template>
|
|
|
+ <van-popup v-model="ReachBottomShow" @close="onClose" custom-style="height: 100%" ref="examPopup"
|
|
|
+ :style="{ width: '80%', height: '55%',padding:'5%'}">
|
|
|
+ <div style="font-size: 20px; text-align: center;color: rgb(68, 152, 248);font-weight: 700;">
|
|
|
+ 提示</div>
|
|
|
+ <div style="text-align: left;padding: 2%; font-weight: 700;font-size: 15px;color: #333;">当前考试信息如下:
|
|
|
+ </div>
|
|
|
+ <div style="width: 90%;margin: auto;">
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">考试名称:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.examName==''?'/':examPopup.examName==null?'/':examPopup.examName}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">考试题库:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.bankName==''?'/':examPopup.bankName==null?'/':examPopup.bankName}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">题目数量:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.questionCount==''?'/':examPopup.questionCount==null?'/':examPopup.questionCount}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">考试总分:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.totalScore==''?'/':examPopup.totalScore==null?'/':examPopup.totalScore}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">考试人数:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.examinee==''?'/':examPopup.examinee==null?'/':examPopup.examinee}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">限考时间:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.limitDate==''?'/':examPopup.limitDate==null?'/':examPopup.limitDate}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">限考次数:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.limitCount==''?'/':examPopup.limitCount==null?'/':examPopup.limitCount}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">考试时长:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.duration==''?'/':examPopup.duration==null?'/':examPopup.duration}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">达标分数占比:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.qualifiedRadio==''?'/':examPopup.qualifiedRadio==null?'/':examPopup.qualifiedRadio}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row class="examRow">
|
|
|
+ <van-col span="8" class="popupTitle">计分方式:</van-col>
|
|
|
+ <van-col span="16"
|
|
|
+ class="popupContent">{{examPopup.scoringType==''?'/':examPopup.scoringType==null?'/':examPopup.scoringType}}</van-col>
|
|
|
+ </van-row>
|
|
|
+ <div style="margin:2% auto; font-size: 12px; color: red;text-align: left;">
|
|
|
+ 开始考试后中途不允许退出,直至交卷或考试结束,退出视作提交试卷!是否立即开始考试?
|
|
|
+ </div>
|
|
|
+ <van-row class="examRowto">
|
|
|
+ <van-col span="12"> <van-button type="default" @click="ReachBottomShow=false">取消</van-button></van-col>
|
|
|
+ <van-col span="12"> <van-button type="info" @click="changeShowPop()">确定</van-button></van-col>
|
|
|
+ </van-row>
|
|
|
+ </div>
|
|
|
+ </van-popup>
|
|
|
+ </template>
|
|
|
+ <van-popup v-model="showPop" :style="{ width: '100%', height: '100%' }">
|
|
|
+ <exam-pop ref="childPop" v-if="showPop" :notStart="countTotal.notStart" :listData="examPopup"
|
|
|
+ :bankId=" examPopup.bankId" :show="showPop" @updataSet="updataSet" /></van-popup>
|
|
|
+ <van-divider v-if="footText">到底了~</van-divider>
|
|
|
+ <van-empty v-if="noData" description="暂无数据" />
|
|
|
+
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+ import { mapState } from 'vuex'
|
|
|
+ import examPop from "./examPop.vue"
|
|
|
+ import ActionUtils from '@/utils/action'
|
|
|
+ import i18n from '@/utils/i18n'
|
|
|
+ import random from '@/mixins/random'
|
|
|
+ import bpmnStatus from '@/mixins/bpmnStatus'
|
|
|
+ import IbpsMoreSearch from '@/components/ibps-more-search'
|
|
|
+ import IbpsTypeTree from '@/business/platform/cat/type/tree'
|
|
|
+ import IbpsAvatar from '@/components/ibps-avatar'
|
|
|
+ import IbpsToolbar from '@/components/ibps-toolbar'
|
|
|
+ import IbpsListResultPage from '@/components/ibps-list-result-page'
|
|
|
+ import IbpsBpmnFormrenderDialog from '@/business/platform/bpmn/form/dialog'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ components: {
|
|
|
+ IbpsMoreSearch,
|
|
|
+ IbpsTypeTree,
|
|
|
+ IbpsAvatar,
|
|
|
+ IbpsToolbar,
|
|
|
+ IbpsListResultPage,
|
|
|
+ IbpsBpmnFormrenderDialog,
|
|
|
+ examPop
|
|
|
+ },
|
|
|
+ mixins: [random, bpmnStatus],
|
|
|
+ data() {
|
|
|
+ const { userId, userList = [], deptList = [], menus, userInfo } = this.$store.getters
|
|
|
+ return {
|
|
|
+ footText: false,
|
|
|
+ showPop: false,
|
|
|
+ noData: false,
|
|
|
+ showConfirmationBoxList: true,
|
|
|
+ countTotal: {},
|
|
|
+ examPopup: '',
|
|
|
+ ReachBottomShow: false,
|
|
|
+ moreSearchPopup: false,
|
|
|
+ searchForms: {
|
|
|
+ forms: [
|
|
|
+ // { prop: 'Q^examName_^SL', label: '考试名称', fieldType: 'text' },
|
|
|
+ // { prop: 'Q^bankName^SL', label: '题库名称', fieldType: 'text' },
|
|
|
+ { prop: 'examName', label: '考试名称', fieldType: 'text' },
|
|
|
+ { prop: 'bankName', label: '题库名称', fieldType: 'text' },
|
|
|
+ {
|
|
|
+ prop: 'examType', label: '考试类型', fieldType: 'checker', cols: 2, valueKey: 'value', options: [
|
|
|
+ { value: 'trainingExam', label: '培训考试' },
|
|
|
+ { value: 'POCTtraining', label: 'POCT培训' },
|
|
|
+ { value: 'selfAssessment', label: '自主考核' },
|
|
|
+ { value: 'routine', label: '常规' },
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ // { prop: ['Q^startDate^DL^yyyy-MM-dd', 'Q^startDate^DG^yyyy-MM-dd'], label: '开始时间', fieldType: 'dateRange', options: { datefmt: 'yyyy-MM-dd' } },
|
|
|
+ // { prop: ['Q^limitDate^DL^yyyy-MM-dd', 'Q^limitDate^DG^yyyy-MM-dd'], label: '限考时间', fieldType: 'dateRange', options: { datefmt: 'yyyy-MM-dd' } },
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ // './views/platform/bpmn/communication/communicationList
|
|
|
+ mainActions: [{
|
|
|
+ 'name': this.$t('common.button.remove'),
|
|
|
+ 'type': 'danger',
|
|
|
+ 'callback': this.onRemove
|
|
|
+ }],
|
|
|
+ stateActive: false,
|
|
|
+ subject: '',
|
|
|
+ moreSubject: '',
|
|
|
+ subjectTitle: '',
|
|
|
+ typeId: '',
|
|
|
+ moreParams: {},
|
|
|
+ listData: [],
|
|
|
+ pagination: {},
|
|
|
+ sorts: {},
|
|
|
+
|
|
|
+ loading: false,
|
|
|
+ finished: false,
|
|
|
+ refreshing: false,
|
|
|
+ resultType: 'init',
|
|
|
+ errorType: null,
|
|
|
+ resultMessage: null,
|
|
|
+
|
|
|
+ checkMode: false,
|
|
|
+ checkedIds: [],
|
|
|
+ mainActions: [{
|
|
|
+ 'name': this.$t('common.button.remove'),
|
|
|
+ 'type': 'danger',
|
|
|
+ 'callback': this.onRemove
|
|
|
+ }],
|
|
|
+
|
|
|
+ proInstId: '',
|
|
|
+ defId: '',
|
|
|
+ formrenderVisible: false,
|
|
|
+ formrenderTitle: '',
|
|
|
+ typeTreePopup: false,
|
|
|
+ checkMode: false,
|
|
|
+ keyword: '',
|
|
|
+ name: "全部",
|
|
|
+ current: 0,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState('ibps/user', [
|
|
|
+ 'info'
|
|
|
+ ]),
|
|
|
+ rightText() {
|
|
|
+ return this.checkMode ? this.$t('common.button.cancel') : this.$t('common.button.manage')
|
|
|
+ },
|
|
|
+ selectedIds() {
|
|
|
+ return this.checkedIds.join(',')
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ beforeRouteLeave(to, from, next) {
|
|
|
+ if (this.showPop == true) {
|
|
|
+ this.showConfirmationBoxList = true
|
|
|
+ } else {
|
|
|
+ next()
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ // 点击开始考试
|
|
|
+ onClick(item, index) {
|
|
|
+ this.ReachBottomShow = true
|
|
|
+ this.examPopup = item
|
|
|
+ },
|
|
|
+
|
|
|
+ showPopup() {
|
|
|
+ this.ReachBottomShow = true
|
|
|
+ },
|
|
|
+ onClose() {
|
|
|
+ this.ReachBottomShow = false
|
|
|
+ },
|
|
|
+ // 点击确定进入考试界面
|
|
|
+ async changeShowPop() {
|
|
|
+ this.ReachBottomShow = false
|
|
|
+ if (this.countTotal.notStart && this.examPopup.bankId != '') {
|
|
|
+ // 已有未开始的试卷 更新开始时间
|
|
|
+ const updataParams = {
|
|
|
+ tableName: 't_examination',
|
|
|
+ updList: [{
|
|
|
+ where: {
|
|
|
+ id_: this.countTotal.notStart
|
|
|
+ },
|
|
|
+ param: {
|
|
|
+ zhuang_tai_: '进行中',
|
|
|
+ kai_shi_shi_jian_: this.$common.getDateNow(19)
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ this.$common.request('update', updataParams)
|
|
|
+ this.showPop = true
|
|
|
+ } else {
|
|
|
+ // 无未开始试卷
|
|
|
+ let mid = this.examPopup
|
|
|
+ this.createPaper({ ...mid }, this.info)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getExamCount(id) {
|
|
|
+ const param = id ? `exam_id_ = '${id}'` : 'exam_id_ is null'
|
|
|
+ const sql = `select id_, zhuang_tai_ from t_examination where ${param} and kao_shi_ren_ = '${this.userInfo}' and zhuang_tai_ != '已取消' order by bao_ming_shi_jian asc`
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ this.$common.request('sql', sql).then(res => {
|
|
|
+ const { data = [] } = res.data.variables || {}
|
|
|
+ const temp = data.find(item => item.zhuang_tai_ === '未开始')
|
|
|
+ resolve({
|
|
|
+ count: data.length,
|
|
|
+ notStart: temp ? temp.id_ : ''
|
|
|
+ })
|
|
|
+ }).catch(error => {
|
|
|
+ reject(error)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ createPaper(data, examinees) {
|
|
|
+ let that = this
|
|
|
+ // const { first, second } = uni.getStorageSync('level') || {}
|
|
|
+ const { first = '', second = '' } = this.$store.getters.level
|
|
|
+ const { examId, bankId, examName, questionCount, totalScore, duration, qualifiedRadio, limitDate, limitCount } = data || {}
|
|
|
+ const examineeList = examinees.user.id.split(',')
|
|
|
+ const time = this.$common.getDateNow(19)
|
|
|
+ const paramWhere = examineeList.map(i => ({
|
|
|
+ exam_id_: examId,
|
|
|
+ ti_ku_id_: bankId,
|
|
|
+ di_dian_: second || first,
|
|
|
+ kao_shi_ren_: i,
|
|
|
+ bu_men_: '',
|
|
|
+ bao_ming_shi_jian: time,
|
|
|
+ kai_shi_shi_jian_: time,
|
|
|
+ ti_ku_zong_fen_: totalScore,
|
|
|
+ zhuang_tai_: '未开始',
|
|
|
+ sheng_yu_shi_chan: duration,
|
|
|
+ da_biao_zhan_bi_: qualifiedRadio
|
|
|
+ }))
|
|
|
+ const addParams = {
|
|
|
+ tableName: 't_examination',
|
|
|
+ paramWhere
|
|
|
+ }
|
|
|
+
|
|
|
+ if (that.examPopup.bankId != '') {
|
|
|
+ that.$common.request('add', addParams).then(res => {
|
|
|
+ const { cont } = res.variables || {}
|
|
|
+ if (cont.length) {
|
|
|
+ that.showPop = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ updataSet(v) {
|
|
|
+ this.showPop = v
|
|
|
+ },
|
|
|
+ generateTitle(name, title) { // generateTitle by vue-i18n
|
|
|
+ return i18n.generateTitle(name, title)
|
|
|
+ },
|
|
|
+ toCheckMode() {
|
|
|
+ if (this.$utils.isEmpty(this.listData)) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.checkMode) {
|
|
|
+ // this.show = true
|
|
|
+ this.checkedIds = []
|
|
|
+ }
|
|
|
+ this.checkMode = !this.checkMode
|
|
|
+ },
|
|
|
+ clickType() {
|
|
|
+ this.typeTreePopup = true
|
|
|
+ },
|
|
|
+ onSearch() {
|
|
|
+ this.stateActive = false
|
|
|
+ ActionUtils.initListData(this)
|
|
|
+ this.current = 0
|
|
|
+ this.listData = []
|
|
|
+ this.loadData()
|
|
|
+ },
|
|
|
+ clickMoreSearch() {
|
|
|
+ this.moreSearchPopup = true
|
|
|
+ this.stateActive = false
|
|
|
+ },
|
|
|
+ clickTypeNode(data) {
|
|
|
+ this.typeId = data.id
|
|
|
+ this.onMoreSearch({})
|
|
|
+ },
|
|
|
+ // 高级查询
|
|
|
+ onMoreSearch(params) {
|
|
|
+ // console.log("params", params, this.typeId);
|
|
|
+ if (this.$utils.isNotEmpty(this.typeId)) {
|
|
|
+ params['Q^type_id_^SL'] = this.typeId
|
|
|
+ }
|
|
|
+ this.moreParams = params
|
|
|
+ this.onSearch()
|
|
|
+ if (this.$utils.isNotEmpty(params)) {
|
|
|
+ this.stateActive = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ resetForm() {
|
|
|
+ this.typeId = ''
|
|
|
+ },
|
|
|
+ // 下拉刷新
|
|
|
+ onRefresh() {
|
|
|
+ this.footText = false
|
|
|
+ this.refreshing = true
|
|
|
+ this.finished = false
|
|
|
+ this.loading = true
|
|
|
+ this.onSearch()
|
|
|
+ },
|
|
|
+ onRefreshPage() {
|
|
|
+ this.checkedIds = []
|
|
|
+ this.checkMode = false
|
|
|
+ this.onRefresh()
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 加载数据
|
|
|
+ */
|
|
|
+ loadData() {
|
|
|
+ this.loading = true
|
|
|
+ let page = 0
|
|
|
+ if (this.current === 0) {
|
|
|
+ page = 0
|
|
|
+ } else {
|
|
|
+ page = this.current * 10
|
|
|
+ }
|
|
|
+ let aa = JSON.parse(JSON.stringify(this.moreParams))
|
|
|
+ if ((aa !== '' && aa !== null && aa !== undefined && (typeof aa !== 'object' || Object.keys(aa).length > 0)) ||
|
|
|
+ (aa instanceof Array && aa.length > 0)) {
|
|
|
+ // { prop: 'examName', label: '考试名称', fieldType: 'text' },
|
|
|
+ // { prop: 'bankName', label: '题库名称', fieldType: 'text' },
|
|
|
+ // // {examName: '自主考核', bankName: '提示', examType: 'trainingExam'}
|
|
|
+ if (aa.examName !== '' && aa.examName !== undefined && aa.examName !== null) {
|
|
|
+ this.moreSubject = aa.examName
|
|
|
+ }
|
|
|
+ if (aa.bankName !== '' && aa.bankName !== undefined && aa.bankName !== null) {
|
|
|
+ this.subjectTitle = aa.bankName
|
|
|
+ }
|
|
|
+ if (aa.examType !== '' && aa.examType !== undefined && aa.examType !== null) {
|
|
|
+ this.name = aa.examType == "trainingExam" ? "培训考试" : aa.examType == "POCTtraining" ? "POCT培训" : aa.examType == "selfAssessment" ? "自主考核" : aa.examType == "routine" ? "常规" : '全部'
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const key = this.subject
|
|
|
+ let key1 = this.moreSubject
|
|
|
+ let key2 = this.subjectTitle
|
|
|
+ let canshu1 = key1 !== '' ? `and examName like '%${key1}%'` : '';
|
|
|
+ let canshu2 = key2 !== '' ? `and bankName like '%${key2}%'` : '';
|
|
|
+ let canshu = (key1 !== '' || key2 !== '') ? `${canshu1} ${canshu2}`.trim() : key != '' ? `and (examName like '%${key}%' or bankName like '%${key}%')` : ''
|
|
|
+ // let canshu = key != '' ? `and (examName like '%${key}%' or bankName like '%${key}%')` : ''
|
|
|
+ let sql = `select * from v_examination where examinee = '${this.info.employee.id}' and examType like '%${this.name == '全部' ? '' : this.name}%' ${canshu} ORDER BY startDate DESC LIMIT ${page},10`
|
|
|
+ let sql1 = `select * from (select * from v_examination where examinee = '${this.info.employee.id}' and examType like '%${this.name == '全部' ? '' : this.name}%' ${canshu} ORDER BY startDate DESC LIMIT ${page},10) a LEFT JOIN (select exam_id_,id_,COUNT(id_) as num from t_examination where kao_shi_ren_ = '${this.info.employee.id}' and zhuang_tai_ != '已取消' GROUP BY exam_id_) b on a.examId = b.exam_id_`
|
|
|
+ // let sql2 = `select * from (select * from t-exams ) a LEFT JOIN () B ON a.examId=b.exam_id_`
|
|
|
+ this.$common.request('sql', sql1).then(res => {
|
|
|
+ if (this.current == 0 && res.variables.data.length == 0) {
|
|
|
+ this.finished = true;
|
|
|
+ this.noData = true
|
|
|
+ this.footText = false
|
|
|
+ }
|
|
|
+ let data = res.variables.data
|
|
|
+ this.listData.push(...data)
|
|
|
+ this.refreshing = false
|
|
|
+ if (this.listData.length != 0 && (this.listData.length) % 10 != 0) {
|
|
|
+ this.footText = true
|
|
|
+ this.finished = true;
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ this.current++
|
|
|
+ }
|
|
|
+ this.loading = false
|
|
|
+ }).catch(err => {
|
|
|
+ console.log(err);
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ // 获取格式化参数
|
|
|
+ getSearcFormData() {
|
|
|
+ let params = {}
|
|
|
+ if (this.$utils.isNotEmpty(this.subject)) {
|
|
|
+ params['Q^subject_^SL'] = this.subject
|
|
|
+ }
|
|
|
+ if (this.$utils.isNotEmpty(this.moreParams)) {
|
|
|
+ params = Object.assign(params, this.moreParams)
|
|
|
+ }
|
|
|
+ return ActionUtils.formatParams(
|
|
|
+ params,
|
|
|
+ this.pagination,
|
|
|
+ this.sorts)
|
|
|
+ },
|
|
|
+
|
|
|
+ transformTime(timeStamp) {
|
|
|
+ const hours = Math.floor(parseInt(timeStamp) / 3600000)
|
|
|
+ const minutes = Math.floor((parseInt(timeStamp) % 3600000) / 60000)
|
|
|
+ return hours + '小时' + minutes + '分钟'
|
|
|
+ },
|
|
|
+ onRemove() {
|
|
|
+ if (this.checkedIds.length === 0) {
|
|
|
+ this.$notify({
|
|
|
+ type: 'warning',
|
|
|
+ message: this.$t('common.dialog.selectedRecords')
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.$dialog.confirm({
|
|
|
+ title: this.$t('common.dialog.warn'),
|
|
|
+ message: this.$t('common.operate.makeSure')
|
|
|
+ }).then(() => {
|
|
|
+ removeDraft({ ids: this.selectedIds }).then(response => {
|
|
|
+ this.$notify({
|
|
|
+ type: 'success',
|
|
|
+ message: '删除草稿成功!'
|
|
|
+ })
|
|
|
+ this.onRefreshPage()
|
|
|
+ }).catch((e) => {
|
|
|
+ console.error(e)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|
|
|
+<style scoped lang="scss">
|
|
|
+ .examRow {
|
|
|
+ padding: 2% 0;
|
|
|
+
|
|
|
+ .popupTitle {
|
|
|
+ text-align: center;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #555;
|
|
|
+ }
|
|
|
+
|
|
|
+ .popupContent {
|
|
|
+ text-align: left;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #777;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .examRowto {
|
|
|
+ margin: 10% 0;
|
|
|
+
|
|
|
+ .van-col {
|
|
|
+ text-align: center;
|
|
|
+
|
|
|
+ .van-button {
|
|
|
+ width: 80%;
|
|
|
+ font-size: 16px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|