download.vue 8.92 KB
<template>
  <div v-show="showSearch" class="app-container">
    <div class="from-Card">
      <el-form ref="queryRef" label-position="top" size="small" :model="queryParams" :inline="true">
        <el-row style="width: 100%;">
          <el-col :span="4">
            <el-form-item label="结算编号" prop="payCode">
              <el-input
                v-model="queryParams.payCode"
                placeholder="请输入结算编号"
                clearable
                style="width: 100%;"
                @keyup.enter="handleQuery"
              />
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <el-form-item :label="queryParams.type=='1'?'考级名称':'考段名称'" prop="name">
              <el-input
                v-model="queryParams.name"
                :placeholder="queryParams.type=='1'?'请输入考级名称':'请输入考段名称'"
                clearable
                style="width: 100%;"
                @keyup.enter="handleQuery"
              />
            </el-form-item>
          </el-col>

          <el-col :span="4">
            <el-form-item label="证书是否发送" prop="certStatus">
              <el-select v-model="queryParams.certStatus" clearable style="width: 100%" placeholder="" @change="handleQuery">
                <el-option label="全部" value="" />
                <el-option label="已发放" value="2" />
                <el-option label="部分发放" value="1" />
                <el-option label="未发放" value="0" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <el-form-item label="申请单位" prop="memberName">
              <el-input
                v-model="queryParams.memberName"
                placeholder="请输入申请单位"
                clearable
                @keyup.enter="handleQuery"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8" :hidden="showCollect">
            <el-form-item label="证书发送日期" prop="certTimeRange">
              <el-date-picker
                v-model="queryParams.certTimeRange"
                clearable
                type="daterange"
                range-separator="至"
                start-placeholder="开始时间"
                end-placeholder="结束时间"
                value-format="YYYY-MM-DD"
                @change="handleQuery"
              />
            </el-form-item>
          </el-col>
          <el-col :span="4" :hidden="showCollect">
            <el-form-item label="占位" style="opacity: 0" />
          </el-col>
          <div class="po-r-btns">
            <el-button size="small" type="primary" @click="handleQuery">搜索</el-button>
            <el-button size="small" @click="resetQuery">重置</el-button>
            <el-button
              v-if="showCollect" size="small" type="primary" link icon="ArrowDown"
              @click="showCollect=!showCollect"
            >展开</el-button>
            <el-button
              v-else size="small" type="primary" link icon="ArrowUp"
              @click="showCollect=!showCollect"
            >收起</el-button>
          </div>
        </el-row>
      </el-form>
      <el-row justify="space-between">
        <div>
          <el-button
            v-if="showDownload"
            type="primary" :icon="Download"
            :disabled="multiple"
            @click="handleDownloadAll"
          >考试证书批量下载</el-button>
          <!--          <el-button size="small" type="warning" @click="handleExport">导出</el-button>-->
        </div>
      </el-row>
    </div>

    <div class="table">
      <el-table v-loading="loading" border :data="infoList" @selection-change="handleSelectionChange">
        <el-table-column v-if="showDownload" type="selection" width="55" align="center" :selectable="selectable" />
        <el-table-column type="index" width="55" align="center" label="序号" />
        <el-table-column label="结算编号" align="center" header-align="center" prop="payCode" min-width="120" />
        <el-table-column
          :label="queryParams.type=='1'?'考级名称':'考段名称'" :show-overflow-tooltip="true" min-width="220"
          header-align="center" align="center" prop="name"
        />
        <el-table-column
          label="申请单位" align="center" header-align="center" prop="memberName" min-width="140"
          :show-overflow-tooltip="true"
        />
        <el-table-column label="申请日期" align="center" prop="applyTime" min-width="100">
          <template #default="scope">
            <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column label="已发证书" align="center" prop="hasCerts" />
        <el-table-column label="待发证书" align="center" prop="noCerts" />
        <el-table-column label="提交日期" align="center" prop="submitTime" min-width="100">
          <template #default="scope">
            <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column label="证书是否已发" align="center" prop="certStatusStr" min-width="110" />
        <el-table-column label="证书发送时间" align="center" prop="certTime" min-width="110">
          <template #default="scope">
            <span>{{ parseTime(scope.row.certTime, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column label="操作" min-width="100" fixed="right" align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-button :disabled="scope.row.certStatus == '0'" type="primary" @click="handleDownload(scope.row)">查看</el-button>
          </template>
        </el-table-column>
      </el-table>


      <pagination
        v-show="total>0"
        v-model:page="queryParams.pageNum"
        v-model:limit="queryParams.pageSize"
        :total="total"
        @pagination="getList"
      />
    </div>

    <el-link ref="zipRef" :href="zipUrl" target="_blank" download="考试证书" />
    <exam-view ref="examRef" />
  </div>
</template>

<script>
let pageName
if (location.href.indexOf('/level/') > -1) {
  pageName = 'Level_Download'
} else if (location.href.indexOf('/rank/') > -1) {
  pageName = 'Rank_Download'
} else if (location.href.indexOf('/beyond/') > -1) {
  pageName = 'Beyond_Download'
}

export default {
  name: pageName
}
</script>

<script setup>
import { Download } from '@element-plus/icons-vue'
import { getCurrentInstance, reactive } from '@vue/runtime-core'
import { onMounted, ref, toRefs } from 'vue'
import { parseTime } from '@/utils/ruoyi'
import { certsLList } from '@/api/exam/cert'
import ExamView from './examList.vue'
import { useRoute, useRouter } from 'vue-router'

const router = useRouter()
const { proxy } = getCurrentInstance()
const route = useRoute()
const showCollect = ref(true)
const infoList = ref([])
const loading = ref(true)
const showSearch = ref(true)
const multiple = ref(true)
const total = ref(0)
let ids = []
const showDownload = ref(false)

const data = reactive({
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    name: undefined,
    memberName: undefined,
    examiner: undefined,
    applyTimeRange: undefined,
    certTimeRange: undefined,
    certStatus: ''
    // type: '1'
  }
})
const { queryParams } = toRefs(data)


onMounted(() => {
  if (route.path.indexOf('level') > -1) {
    showDownload.value = true
    queryParams.value.type = '1'
  } else if (route.path.indexOf('rank') > -1) {
    queryParams.value.type = '2'
  } else if (route.path.indexOf('beyond') > -1) {
    queryParams.value.type = '3'
  }

  getList()
})

/** 查询考级信息列表 */
function getList() {
  loading.value = true
  certsLList(queryParams.value).then(response => {
    infoList.value = response.rows
    total.value = response.total
    loading.value = false
  })
}

/** 搜索按钮操作 */
function handleQuery() {
  queryParams.value.pageNum = 1
  getList()
}

// 多选框选中数据
function handleSelectionChange(selection) {
  ids = selection.map(item => item.payId)
  multiple.value = !selection.length
}

function selectable(row) {
  if (row.certStatus == '2') {
    return true
  } else {
    return false
  }
}

/** 重置按钮操作 */
function resetQuery() {
  proxy.resetForm('queryRef')
  handleQuery()
}

/**
 * 一键发送
 */

function handleDownload(row) {
  proxy.$refs['examRef'].open(row, queryParams.value.type)
}

const zipUrl = ref('')
function handleDownloadAll() {
  if (ids.length <= 0) return proxy.msgError('请选择考试')
  const routerData = router.resolve({
    path: '/download',
    query: {
      arr: ids,
      type: 'examCert'
    }
  })
  window.open(routerData.href, '_blank')
}

// function handleExport() {
//   proxy.download('/exam/payment/certsList/export', {
//     ...queryParams.value
//   }, `考试证书${new Date().getTime()}.xlsx`)
// }

</script>

<style lang="scss" scoped >

</style>