ztxView.vue 12.4 KB
<template>
  <div class="">
    <div class="from-Card">
      <el-form
        ref="queryRef" :inline="true" :model="queryParams" label-position="top" label-width="100px"
        size="small"
      >
        <el-row style="width: 100%; ">
          <el-col :span="4">
            <el-form-item label="申请单位" prop="memName">
              <el-input v-model.trim="queryParams.memName" style="width: 100%;" @keyup.enter="searchFN" />
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <el-form-item label="审核状态" prop="auditStatus">
              <el-select v-model.trim="queryParams.auditStatus" placeholder="" style="width: 100%;" @change="searchFN">
                <el-option label="全部" value="" />
                <el-option label="审核中" value="1" />
                <el-option label="审核通过" value="2" />
                <el-option label="审核拒绝" value="3" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="9" style="display: flex;">
            <el-form-item label="提交日期" prop="isBlack" style="width: 100%;">
              <el-date-picker
                v-model.trim="commitTime[0]"
                placeholder="开始时间"
                style="width: 100%;"
                type="date"
                value-format="YYYY-MM-DD"
              />
            </el-form-item>
            <el-form-item label="提交日期" prop="isBlack" style="width: 100%;">
              <el-date-picker
                v-model.trim="commitTime[1]"
                placeholder="结束时间"
                style="width: 100%;"
                type="date"
                value-format="YYYY-MM-DD"
              />
            </el-form-item>
          </el-col>
          <el-col v-if="!showCollect" :span="8" style="display: flex;">
            <el-form-item label="审核日期" prop="overDateRange" style="width: 100%;">
              <el-date-picker
                v-model.trim="overDateRange[0]"
                placeholder="开始时间" style="width: 100%;"
                type="date"
                value-format="YYYY-MM-DD"
              />
            </el-form-item>
            <el-form-item label="审核日期" prop="overDateRange" style="width: 100%;">
              <el-date-picker
                v-model.trim="overDateRange[1]"
                placeholder="开始时间" style="width: 100%;"
                type="date"
                value-format="YYYY-MM-DD"
              />
            </el-form-item>
          </el-col>
          <div class="po-r-btns">
            <el-button icon="Search" size="small" type="primary" @click="searchFN">搜索</el-button>
            <el-button icon="Refresh" size="small" @click="resetQuery">重置</el-button>
            <el-button
              v-if="showCollect" icon="ArrowDown" link size="small" type="primary"
              @click="showCollect=!showCollect"
            >展开
            </el-button>
            <el-button
              v-else icon="ArrowUp" link size="small" type="primary"
              @click="showCollect=!showCollect"
            >收起
            </el-button>
          </div>

        </el-row>

      </el-form>
      <el-row justify="space-between">
        <div>
          <el-button
            :disabled="multiple" color="#13B5B1" icon="DocumentChecked" style="--el-color-black:#fff;" type="warning"
            @click="batchAudit"
          >批量审核
          </el-button>
        </div>
      </el-row>
    </div>
    <div class="table">
      <el-table
        v-loading="loading" :data="list" :row-class-name="tableRowClassName" border
        style="width: 100%;" @selection-change="handleSelectionChange"
      >
        <el-table-column :selectable="selectable" align="center" type="selection" width="55" />
        <el-table-column align="center" label="序号" type="index" width="55" />
        <el-table-column
          align="center" label="场馆照片" width="100"
        >
          <template #default="{row}">
            <el-image
              :preview-src-list="row.photos"
              :preview-teleported="true"
              :src="row.photos?.[0] "
              style="width: 60px;height: 60px"
            />
          </template>
        </el-table-column>
        <el-table-column
          align="center" label="申请单位" min-width="120"
          prop="memName" show-overflow-tooltip
        />
        <el-table-column
          align="center" label="所属协会" min-width="120" prop="shenMemName"
          show-overflow-tooltip
        />
        <el-table-column align="center" label="会员有效期" min-width="100">
          <template #default="{row}">
            <span>{{ parseTime(row.memValidDate, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <!--        <el-table-column label="是否需要" align="center" min-width="100">-->
        <!--          <template #default="{row}">-->
        <!--            <span>{{ row.selfSelect == 1 ? '否' : '是' }}</span>-->
        <!--          </template>-->
        <!--        </el-table-column>-->
        <el-table-column align="center" label="申请日期" min-width="100">
          <template #default="{row}">
            <span>{{ parseTime(row.commitTime, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="审核日期" min-width="100">
          <template #default="{row}">
            <span>{{ parseTime(row.auditTime, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="审核状态" prop="auditStatus" width="90">
          <template #default="{row}">
            <div v-if="row.auditStatus == 1">审核中</div>
            <div v-if="row.auditStatus == 2" class="text-success">审核通过</div>
            <div v-if="row.auditStatus == 3" class="text-danger">审核拒绝</div>
          </template>
        </el-table-column>
        <el-table-column align="center" fixed="right" label="操作" width="260">
          <template #default="{row}">
            <el-button type="primary" @click="handleView(row)">查看</el-button>
            <el-button
              :disabled="row.auditStatus!=1"
              color="#13B5B1" style="--el-color-black:#fff;"
              type="primary" @click="handleAudit(row)"
            >审核
            </el-button>
            <el-button type="warning" @click="handleInfo(row)">机构资料
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total > 0"
        v-model:limit="queryParams.pageSize"
        v-model:page="queryParams.pageNum"
        :total="total"
        @pagination="getList"
      />
    </div>

    <!-- 审核 -->
    <el-dialog
      v-model="show"
      close-on-click-modal
      draggable
      title="考点申请审核"
      width="600"
    >
      <el-descriptions v-if="formData.memName" :column="2" border title="基本信息">
        <el-descriptions-item label="申请单位">
          {{ formData.memName }}
        </el-descriptions-item>
        <el-descriptions-item label="所属协会">
          {{ formData.shenMemName }}
        </el-descriptions-item>
        <el-descriptions-item label="审核状态">
          {{ auditList[formData.shenAuditStatus] }}
        </el-descriptions-item>
        <el-descriptions-item label="是否需要省级协会指派">
          {{ formData.selfSelect == 1 ? '否' : '是' }}
        </el-descriptions-item>
        <el-descriptions-item label="会员有效期">
          {{ parseTime(formData.memValidDate, '{y}-{m}-{d}') }}
        </el-descriptions-item>
        <el-descriptions-item label="申请日期">
          {{ parseTime(formData.commitTime, '{y}-{m}-{d}') }}
        </el-descriptions-item>
        <el-descriptions-item label="审核日期">
          {{ parseTime(formData.shenAuditTime, '{y}-{m}-{d}') }}
        </el-descriptions-item>

        <el-descriptions-item label="考官">
          {{ formData.examiners }}
        </el-descriptions-item>
      </el-descriptions>

      <el-form :model="form" label-width="100">
        <el-form-item label="审批结果" prop="flag">
          <el-radio-group v-model.trim="form.flag">
            <el-radio label="1">审批通过</el-radio>
            <el-radio label="0">审批拒绝</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item :label="'备注'" prop="reason">
          <el-input v-model.trim="form.reason" rows="5" type="textarea" />
        </el-form-item>
      </el-form>

      <template #footer>
        <div style="text-align: center;">
          <el-button type="primary" @click="doApproval">  </el-button>
          <el-button @click="show = false"> </el-button>
        </div>
      </template>
    </el-dialog>

    <viewDetails ref="viewDetailsRef" />
    <institution ref="institutionRef" />
  </div>
</template>

<script setup>
import { ref, getCurrentInstance, reactive, toRefs, onMounted } from 'vue'
import { listInfo, ztxAudit } from '@/api/exam/examinationAudit'
import viewDetails from './viewDetails.vue'
import { info } from '@/api/groupMember/authentication'
import institution from '@/views/groupMember/components/institution.vue'
import { fillImgUrl } from '/@/utils/ruoyi'

const auditList = ref(['', '审核中', '审核通过', '审核拒绝'])
const { proxy } = getCurrentInstance()
const showCollect = ref(true)
const loading = ref(false)
const show = ref(false)
const list = ref([])
const idsList = ref([])
const multiple = ref(true)
const total = ref(0)
const commitTime = ref([null, null])
const overDateRange = ref([null, null])
const formData = ref({})
const data = reactive({
  form: {
    flag: '1'
  },
  queryParams: {
    pageNum: 1,
    pageSize: 10
  }
})
const { queryParams, form } = toRefs(data)

onMounted(() => {
  getList()
})

function searchFN() {
  queryParams.value.pageNum = 1
  queryParams.value.pageSize = 10
  getList()
}

function handleView(row) {
  proxy.$refs['viewDetailsRef'].open({ ...row })
}

async function handleInfo(row) {
  const res = await info(row.memId)
  proxy.$refs['institutionRef'].open(res.data, 1)
}


async function getList() {
  if (commitTime.value[0] == null && commitTime.value[1] != null) return proxy.$modal.msgError('请完善提交时间范围')
  if (commitTime.value[1] == null && commitTime.value[0] != null) return proxy.$modal.msgError('请完善提交时间范围')
  if (overDateRange.value[0] == null && overDateRange.value[1] != null) return proxy.$modal.msgError('请完善审核时间范围')
  if (overDateRange.value[1] == null && overDateRange.value[0] != null) return proxy.$modal.msgError('请完善审核时间范围')
  queryParams.value.commitTimeRange = commitTime.value.length == 2 && commitTime.value[0] != null ? commitTime.value.toString() : null
  queryParams.value.auditTimeRange = overDateRange.value.length == 2 && overDateRange.value[0] != null ? overDateRange.value.toString() : null
  loading.value = true
  const res = await listInfo(queryParams.value)
  loading.value = false
  list.value = res.rows
  for (const val of list.value) {
    if (val.photos) {
      val.photos = val.photos.split(',').map(item => fillImgUrl(item))
    }
  }
  total.value = res.total
}

// 禁选
function selectable(row, index) {
  return row.auditStatus == 1
}

/** 重置按钮操作 */
function resetQuery() {
  queryParams.value = {
    pageNum: 1,
    pageSize: 10
  }
  commitTime.value = [null, null]
  overDateRange.value = [null, null]
  getList()
}

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

// 批量审核
async function batchAudit() {
  formData.value = {}
  form.value = {
    flag: '1',
    ids: idsList.value
  }
  show.value = true
}

// 审核
function handleAudit(row) {
  formData.value = row
  form.value = {
    flag: '1',
    memId: row.memId,
    ids: row.id
  }
  show.value = true
}

// 批量审批
async function doApproval() {
  if (!form.value.flag) {
    return proxy.$modal.msgError('请选择审核状态!')
  }
  if (form.value.flag == 0 && !form.value.reason) {
    return proxy.$modal.msgError('请输入拒绝理由')
  }
  await ztxAudit(form.value)
  show.value = false
  await getList()
  return proxy.$modal.msgSuccess('操作成功!')
}

// // 背景色
const tableRowClassName = ({
  row,
  rowIndex
}) => {
  if (row.auditStatus == 2) {
    return 'success-row'
  }
}
</script>

<style lang="scss" scoped>

</style>