<!-- 证书详情 -->
<script name="CertDetail" lang="ts" setup>
import { dayjs } from 'element-plus'
import type { IStaffVerifierDetail } from '../register/person-regitster'
import type { ICertInfo } from './cert-interface'
import { getCertDetailList } from '@/api/resource/certRemind'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import FilePreviewDialog from '@/components/filePreview/filePreviewDialog.vue'
import ImagePreviewDialog from '@/components/ImagePreview/imagePreviewDialog.vue'
const type = ref<string>('')
const id = ref<string>('')
const route = useRoute()
const router = useRouter()
const refFilePreviewDlg = ref()
const refImagePreviewDlg = ref()
const loading = ref<boolean>(false)
const certInfo = ref<ICertInfo>({
id: '',
staffId: '',
staffNo: '',
staffName: '',
gender: '',
genderName: '',
staffType: '',
staffTypeName: '',
officerNo: '',
deptId: '',
deptName: '',
station: '',
major: '',
engageDate: '',
certNo: '',
certName: '',
certType: '',
certTypeName: '',
grantDate: '',
effectiveDate: '',
grantCompany: '',
file: '',
})
const fileList = ref<Array<string>>([])
const detailColumns = ref<Array<TableColumn>>([
{ text: '持证参数', value: 'certificateParameters', align: 'center' },
{ text: '可开展检定项工作', value: 'identifiableWork', align: 'center' },
{ text: '发证日期', value: 'certificationDate', align: 'center', width: '200' },
]) // 表头
const verifierDetailList = ref<IStaffVerifierDetail[]>([]) // 表格数据
// 逻辑
// 关闭
const resetForm = () => {
sessionStorage.removeItem('certInfo')
router.go(-1)
}
const gerCertParamDetailList = (verifierId: string) => {
loading.value = true
getCertDetailList({ id: verifierId }).then((res) => {
if (res.code === 200) {
verifierDetailList.value = res.data.map((item: any) => ({
...item,
certificationDate: dayjs(item.grantDate).format('YYYY-MM-DD'),
}))
}
loading.value = false
}).catch(() => {
loading.value = false
})
}
const openFilePreviewDialog = (filename: string) => {
if (filename.lastIndexOf('.pdf') > 0) {
refFilePreviewDlg.value.initDialog(filename)
}
else {
refImagePreviewDlg.value.initDialog(filename)
}
}
const initDialog = (params: any) => {
type.value = params.type
id.value = params.id
switch (params.type) {
case 'detail':
certInfo.value = JSON.parse(sessionStorage.getItem('certInfo')!)
fileList.value = certInfo.value.file === '' ? [] : certInfo.value.file!.split(',')
if (certInfo.value.certType === '1') {
gerCertParamDetailList(certInfo.value.id!)
}
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="basicStaffFormRef" :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.staffName" :disabled="true" />
</el-form-item>
<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.genderName" :disabled="true" />
</el-form-item>
<el-form-item label="岗位">
<el-input v-model="certInfo.station" :disabled="true" />
</el-form-item>
</el-col>
<!-- 第一行 第三列 -->
<el-col :span="6">
<el-form-item label="人员类别">
<el-input v-model="certInfo.staffTypeName" :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.officerNo" :disabled="true" />
</el-form-item>
<el-form-item label="从事专业时间">
<el-input v-model="certInfo.engageDate" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-form ref="basicCertFormRef" :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.certTypeName" :disabled="true" />
</el-form-item>
<el-form-item label="有效日期">
<el-input v-model="certInfo.effectiveDate" :disabled="true" />
</el-form-item>
</el-col>
<!-- 第一行 第二列 -->
<el-col :span="6">
<el-form-item label="证书号">
<el-input v-model="certInfo.certNo" :disabled="true" />
</el-form-item>
<el-form-item label="发放单位">
<el-input v-model="certInfo.grantCompany" :disabled="true" />
</el-form-item>
</el-col>
<!-- 第一行 第三列 -->
<el-col :span="6">
<el-form-item label="证书名称">
<el-input v-model="certInfo.certName" :disabled="true" />
</el-form-item>
</el-col>
<!-- 第一行 第四列 -->
<el-col :span="6">
<el-form-item label="发放日期">
<el-input v-model="certInfo.grantDate" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="附件">
<template v-if="fileList.length > 0">
<el-tag
v-for="file in fileList" :key="file" size="large" style="margin-right: 10px; margin-bottom: 10px; cursor: pointer;"
@click="openFilePreviewDialog(file)"
>
{{ file }}
</el-tag>
</template>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-form ref="certFormRef" label-position="right" label-width="110px" border stripe>
<table-container v-if="certInfo.certType === '1'" v-loading="loading" title="持证参数列表" style="margin-top: 20px;">
<!-- 表格区域 -->
<el-table :data="verifierDetailList" :columns="detailColumns" border>
<el-table-column align="center" label="序号" width="55" type="index" />
<el-table-column
v-for="item in detailColumns"
:key="item.value"
:prop="item.value"
:label="item.text"
:width="item.width"
align="center"
>
<template #header>
<span>{{ item.text }}</span>
</template>
</el-table-column>
</el-table>
</table-container>
</el-form>
</detail-page>
<file-preview-dialog ref="refFilePreviewDlg" />
<image-preview-dialog ref="refImagePreviewDlg" />
</app-container>
</template>