cert.vue 4.56 KB
<template>
  <view>
    <!-- 级位证书发布 -->
    <z-paging ref="paging" v-model="infoList" emptyViewImg="/static/nodata.png" @query="getQuery">
      
      <view class="appList">
        <view v-for="(item,index) in infoList" :key="index" class="appItem">
          <view class="status" @click="goDetail(item)">
            <text :class="{
                'text-warning-bg':item.certStatus=='0',
                'text-primary-bg':item.certStatus=='1',
                'text-success-bg':item.certStatus=='2'
					              }">
              {{ item.certStatusStr }}
            </text>
          </view>
          
          <view class="date">
            <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons>
            {{ item.submitTimeStr }} 提交
          </view>
          <view v-if="item.payCode" class="text-primary" @click="goDetail(item)">{{ item.payCode }}</view>
          <view class="name mt10 w100" @click="goDetail(item)">
            <text class="dot"></text>
            {{ item.name }}
          </view>
          <view class="flexbox" @click="goDetail(item)">
            <view>
              申请单位
              <view>{{ item.memberName || '--' }}</view>
            </view>
            <view>
              已发/待发
              <view>{{ item.hasCerts }}/
                <text class="text-primary">{{ item.noCerts }}</text>
              </view>
            </view>
          
          </view>
          <view v-if="item.certTimeStr" class="pp esp">证书发送时间:{{ item.certTimeStr }}</view>
          
          <!-- v-if="item.certStatus != '2'" -->
          <view class="func">
            <button @click="send(item)">更新证书</button>
          </view>
        </view>
      </view>
    </z-paging>
    <!-- 		<view class="nodata" v-if="infoList.length==0">
      <image mode="aspectFit" :src="config.baseUrl_api + '/fs/static/nodata.png'"></image>
      <text>暂无数据</text>
    </view> -->
  </view>
</template>

<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import _ from 'underscore'
import {
  onMounted,
  ref
} from 'vue'
import {
  onLoad,
  onShow
} from '@dcloudio/uni-app'
import {issueAndUpdateCerts} from "@/common/api.js";

const app = getApp();
const queryParams = ref({
  pageNum: 1,
  pageSize: 10,
  // certFlag: '0',
  type: '1'
})
const statusArr = ['审批中', '审批通过', '审批拒绝', '审批撤回']
const current = ref()
const infoList = ref([])
const total = ref(0)
const deptType = ref('')
const userType = ref('')
const paging = ref(null)
onLoad((option) => {
  queryParams.value.type = option.type
  if (option.type == 2) {
    uni.setNavigationBarTitle({
      title: '段位考试详情'
    })
  }
  if (option.type == 3) {
    uni.setNavigationBarTitle({
      title: '越段考试详情'
    })
  }
})
onShow(() => {
  if (app.globalData.isLogin) {
    init()
  } else {
    
    app.firstLoadCallback = () => {
      init()
    };
  }
})

function init() {
  deptType.value = app.globalData.deptType
  userType.value = app.globalData.userType
  getList()
}

function getQuery(pageNum, pageSize) {
  queryParams.value.pageNum = pageNum
  queryParams.value.pageSize = pageSize
  api.getCertsLList(queryParams.value).then(res => {
    paging.value.complete(res.rows);
    total.value = res.total
  })
}

function getList() {
  uni.showLoading({
    title: '加载中'
  })
  api.getCertsLList(queryParams.value).then(res => {
    infoList.value = res.rows
    uni.hideLoading()
  })
}

function goDetail(item) {
  // const form = encodeURIComponent(JSON.stringify(item))
  let path = `/level/ztx/examList?type=${queryParams.value.type}&payId=${item.payId}`
  uni.navigateTo({
    url: path
  });
}

async function send(row) {
  const res = await api.checkPersonByPayIds(row.payId)
  if (res.data == 1) {
    uni.showModal({
      title: '提示',
      content: `确定下发 ${row.name} 的证书吗`,
      success: (res) => {
        if (res.confirm) {
          handelUpdate(row.payId)
        }
      }
    })
  }
  
  if (res.data == 2 || res.data == 3) {
    uni.showModal({
      title: '提示',
      content: `存在学员没有照片,是否继续生成?`,
      success: (res) => {
        if (res.confirm) {
          handelUpdate(row.payId)
        }
      }
    })
  }
  
  async function handelUpdate(payId) {
    await api.issueAndUpdateCerts([{id: payId}])
    getList()
    uni.showToast({title: `下发成功`})
  }
  
}
</script>


<style lang="scss" scoped>
.mt0 {
  margin-top: 0 !important;
}

.appList .appItem .name {
  width: 80%;
  word-break: break-all;
}
</style>