chooseRankExaminer.vue 4.46 KB
<template>
  <el-dialog
    v-model="show" width="800" title="选择考官" append-to-body
    draggable
  >
    <el-form ref="dialogQueryRef" :inline="true" :model="queryParams" size="small" @submit.native.prevent>
      <el-form-item label="考官姓名" prop="name">
        <el-input
          v-model.trim="queryParams.name" style="width: 190px;" placeholder="考官姓名" clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item>
      <el-form-item v-show="queryParams.type==1" label="考官编号" prop="certCode">
        <el-input
          v-model.trim="queryParams.certCode" style="width: 190px;" placeholder="考官编号" clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item>
      <!--      <el-form-item label="证件号码" prop="idcCode">-->
      <!--        <el-input v-model="queryParams.idcCode" placeholder="身份证号" style="width: 214px" clearable @keyup.enter="handleQuery" />-->
      <!--      </el-form-item>-->
      <el-form-item label="&nbsp">
        <el-button type="primary" icon="Search" @click="handleQuery">查 询</el-button>
        <el-button icon="Refresh" @click="resetQuery">重 置</el-button>
      </el-form-item>
    </el-form>
    <el-table v-loading="loading" border :data="infoList">
      <el-table-column type="index" width="55" align="center" label="序号" />
      <el-table-column label="姓名" align="center" prop="name" />
      <el-table-column width="130px" label="会员号" align="center" prop="perCode" />
      <el-table-column label="证件号码" align="center" prop="idcCode" min-width="200" />
      <!--      <el-table-column-->
      <!--        label="注册地" align="center" prop="memName" min-width="200"-->
      <!--      />-->
      <el-table-column
        label="注册单位" align="center" prop="roleInfo.unit" min-width="200"
      />
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template #default="scope">
          <span v-if="checkChosen(scope.row)">选择</span>
          <el-button v-else link type="primary" @click="handleChoose(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"
    />

  </el-dialog>
</template>

<script setup>

import { getCurrentInstance, ref, toRefs } from 'vue'
import { reactive } from '@vue/runtime-core'
import { coachList } from '@/api/exam/info'
import _ from 'lodash'

const { proxy } = getCurrentInstance()
const emit = defineEmits(['chosen'])
const props = defineProps({
  isValidity: {
    type: String,
    default: ' 1'
  }
})
const show = ref(false)
const infoList = ref([])
const loading = ref(false)
const total = ref(0)
const data = reactive({
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    name: null,
    idcCode: null,
    type: ''
  }
})
const { queryParams } = toRefs(data)


function getList() {
  if (!queryParams.value.name) return proxy.$message.warning('请输入考官姓名')
  if (!queryParams.value.certCode && queryParams.value.type == 1) return proxy.$message.warning('请输入考官编号')
  loading.value = true
  infoList.value = []
  coachList(queryParams.value).then(response => {
    infoList.value = response.rows
    for (const val of infoList.value) {
      if (val.personRoleInfo) val.roleInfo = JSON.parse(val.personRoleInfo)
    }
    total.value = response.total
    loading.value = false
    if (infoList.value.length == 0) return proxy.$message.error('请核实考官编号、有效期及归属地!')
  })
}

function checkChosen(row) {
  return _.some(chosen, (c) => {
    return c.perId == row.perId
  })
}

function handleQuery() {
  queryParams.value.pageNum = 1
  getList()
}

function resetQuery() {
  proxy.resetForm('dialogQueryRef')
  infoList.value = []
  total.value = 0
  // handleQuery()
}

function handleChoose(row) {
  if (row.canChoose != 1 && props.isValidity == 1) {
    return proxy.$message.warning('该考官资质已过期!')
  } else {
    emit('chosen', {
      perId: row.perId,
      name: row.name
    }, ec)

    show.value = false
  }
}

let ec = null
let chosen = null

function open(params, row) {
  ec = params.ec
  queryParams.value.type = params.type
  chosen = params.chosen || []
  resetQuery()
  if (row) queryParams.value.shenMemId = row + ''
  show.value = true
}

defineExpose({
  open
})
</script>

<style scoped>

</style>