Newer
Older
xc-business-system / src / views / resource / person / remind / detail.vue
<!-- 证书逾期提醒详情 -->
<script name="RemindList" lang="ts" setup>
import { dayjs } from 'element-plus'
import type { IStaffVerifierInfo } from '../register/person-regitster'
import type { ICertInfo } from './remind-interface'
import { getVerifierList } from '@/api/resource/register'
import type { TableColumn } from '@/components/NormalTable/table_interface'

const type = ref<string>('')
const id = ref<string>('')

const route = useRoute()
const router = useRouter()

const certInfo = ref<ICertInfo>({
  id: '',
  certNo: '',
  certName: '',
  staffId: '',
  staffNo: '',
  staffName: '',
  deptId: '',
  deptName: '',
  station: '',
  major: '',
  staffType: '',
  staffTypeName: '',
})

const certColumns = ref<Array<TableColumn>>([
  { text: '证书号', value: 'certNo', align: 'center', width: '160' },
  { text: '证书名称', value: 'certName', align: 'center' },
  { text: '发放日期', value: 'grantDate', align: 'center', width: '160' },
  { text: '有效日期', value: 'effectiveDate', align: 'center', width: '160' },
  { text: '发放单位', value: 'grantCompany', align: 'center' },
  { text: '附件', value: 'file', align: 'center' },
]) // 表头

const staffCertList = ref<IStaffVerifierInfo[]>([]) // 表格数据

// 逻辑
// 关闭
const resetForm = () => {
  sessionStorage.removeItem('certInfo')
  router.go(-1)
}

const getCertListByStaffId = (staffId: string) => {
  getVerifierList({ id: staffId, limit: 1200, offset: 1 }).then((res) => {
    if (res.code === 200) {
      staffCertList.value = res.data.rows.map((item: any) => ({
        ...item,
        grantDate: dayjs(item.grantDate).format('YYYY-MM-DD'),
        effectiveDate: dayjs(item.effectiveDate).format('YYYY-MM-DD'),
      }))
    }
  })
}

const initDialog = (params: any) => {
  type.value = params.type
  id.value = params.id

  switch (params.type) {
    case 'detail':
      certInfo.value = JSON.parse(sessionStorage.getItem('certInfo')!)
      getCertListByStaffId(certInfo.value.staffId)

      break
    default:

      break
  }
}

onMounted(async () => {
  initDialog(route.query)
})
</script>

<template>
  <app-container>
    <detail-page title="证书逾期提醒">
      <template #btns>
        <el-button type="info" @click="resetForm()">
          关闭
        </el-button>
      </template>

      <el-form ref="basicFormRef" :model="certInfo" label-position="right" label-width="110px" border stripe>
        <el-row :gutter="24">
          <!-- 第一行 第一列 -->
          <el-col :span="6">
            <el-form-item label="人员编号">
              <el-input v-model="certInfo.staffNo" :disabled="true" />
            </el-form-item>
            <el-form-item label="计量专业">
              <el-input v-model="certInfo.major" :disabled="true" />
            </el-form-item>
          </el-col>

          <!-- 第一行 第二列 -->
          <el-col :span="6">
            <el-form-item label="姓名">
              <el-input v-model="certInfo.staffName" :disabled="true" />
            </el-form-item>
            <el-form-item label="人员类别">
              <el-input v-model="certInfo.staffTypeName" :disabled="true" />
            </el-form-item>
          </el-col>

          <!-- 第一行 第三列 -->
          <el-col :span="6">
            <el-form-item label="工作部门">
              <el-input v-model="certInfo.deptName" :disabled="true" />
            </el-form-item>
          </el-col>

          <!-- 第一行 第四列 -->
          <el-col :span="6">
            <el-form-item label="岗位">
              <el-input v-model="certInfo.station" :disabled="true" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>

      <el-form ref="certFormRef" label-position="right" label-width="110px" border stripe>
        <table-container title="检定员证书" style="margin-top: 20px;">
          <!-- 表格区域 -->
          <el-table :data="staffCertList" :columns="certColumns" border>
            <el-table-column align="center" label="序号" width="55" type="index" />
            <el-table-column
              v-for="item in certColumns"
              :key="item.value"
              :prop="item.value"
              :label="item.text"
              align="center"
            >
              <template #header>
                <span>{{ item.text }}</span>
              </template>
            </el-table-column>
          </el-table>
        </table-container>
      </el-form>
    </detail-page>
  </app-container>
</template>