<!-- 证书/报告补充或更换申请单详情 --> <script name="BusinessCertManageApplyDetail" lang="ts" setup> import type { FormInstance, FormRules } from 'element-plus' import { ElMessage, UploadUserFile } from 'element-plus' import type { Ref } from 'vue' import dayjs from 'dayjs' import type { IForm } from './applt-interface' import useUserStore from '@/store/modules/user' const textMap: { [key: string]: string } = { edit: '编辑', add: '新建', detail: '详情', }// 页面类型字典 const user = useUserStore() // 用户信息 const pageType = ref('add') // 页面类型: add, edit, detail const infoId = ref('') // id const $router = useRouter() // 路由实例 const ruleFormRef = ref() // 表单ref // 表单 const form: Ref<IForm> = ref({ sqdbh: '', // 申请单编号 sqdmc: '', // 申请单名称 createUserId: '', // 创建人id createUserName: '', // 创建人名称 createTime: '', // 创建时间 ghzsbh: '', // 更换证书编号 ghzsbgmc: '', // 更换证书/报告名称 bglx: '', // 变更类型 bcghyyjyxfx: '', // 补充/更换原因及影响分析 zhyxfx: '', // 如果召回被测件、被校件或被检件重新送检,召回原因及影响分析 }) const rules = reactive<FormRules>({ // 表单验证规则 ghzsbh: [{ required: true, message: '更换证书编号不能为空', trigger: ['change', 'blur'] }], bglx: [{ required: true, message: '变更类型不能为空', trigger: ['change', 'blur'] }], }) // -----------------------------------------路由参数---------------------------------------- // 从路由中获取页面类型参数 const $route = useRoute() if ($route.params && $route.params.type) { pageType.value = $route.params.type as string if ($route.params.id) { infoId.value = $route.params.id as string } } console.log('页面类型', pageType.value) // ---------------------------------------------按钮------------------------------------------ // 导出word const exportWord = () => { ElMessage.info('敬请期待') } // 导出pdf const exportPdf = () => { ElMessage.info('敬请期待') } // 打印 const print = () => { ElMessage.info('敬请期待') } // 提交 const submitForm = () => {} // 保存 const saveForm = (ruleFormRef: FormInstance | undefined) => {} // 关闭 const close = () => { $router.back() } // --------------------------------------更换证书编号----------------------------------------- // 点击选择 const selectUpdateCertNo = () => { } // -------------------------------获取详情---------------------------------------------------- // 获取详情 const getInfo = () => { } // ------------------------------钩子-------------------------------------------------------- onMounted(async () => { // await getDict() // 非添加页面获取详情 if (pageType.value === 'edit' || pageType.value === 'detail') { getInfo() } else { // 新建 form.value.createUserId = user.id// 创建人id form.value.createUserName = user.name // 创建人 form.value.createTime = dayjs().format('YYYY-MM-DD HH-mm:ss')// 创建时间 form.value.sqdmc = '证书/报告补充或更换申请单' // 申请单名称 } }) </script> <template> <app-container> <detail-page :title="`证书/报告补充或更换申请单(${textMap[pageType]})`"> <template #btns> <el-button v-if="pageType === 'detail'" v-print="exportWord" type="primary"> 导出word </el-button> <el-button v-if="pageType === 'detail'" v-print="exportPdf" type="primary"> 导出pdf </el-button> <el-button v-if="pageType === 'detail'" v-print="print" type="primary"> 打印 </el-button> <el-button v-if="pageType === 'add'" type="primary" @click="submitForm"> 提交 </el-button> <el-button v-if="pageType !== 'detail'" type="primary" @click="saveForm(ruleFormRef)"> 保存 </el-button> <el-button type="info" @click="close"> 关闭 </el-button> </template> <el-form ref="ruleFormRef" :model="form" :label-width="134" label-position="right" :rules="rules" > <el-row :gutter="24"> <el-col :span="6"> <el-form-item label="申请单编号:" prop="sqdbh"> <el-input v-model="form.sqdbh" :placeholder="pageType === 'detail' ? '' : '系统自动生成'" :class="{ 'detail-input': pageType === 'detail' }" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="申请单名称:" prop="sqdmc"> <el-input v-model="form.sqdmc" :class="{ 'detail-input': pageType === 'detail' }" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="创建人:"> <el-input v-model="form.createUserName" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="创建时间:"> <el-date-picker v-model="form.createTime" type="datetime" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" disabled class="full-width-input" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="更换证书编号" prop="ghzsbh"> <el-input v-model="form.ghzsbh" :placeholder="pageType === 'detail' ? '' : '请选择'" :class="{ 'detail-input': pageType === 'detail' }" disabled > <template #append> <el-button size="small" @click="selectUpdateCertNo"> 选择 </el-button> </template> </el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="更换证书/报告名称:" prop="ghzsbgmc"> <el-input v-model="form.ghzsbgmc" :placeholder="pageType === 'detail' ? ' ' : '更换证书/报告名称'" :class="{ 'detail-input': pageType === 'detail' }" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="变更类型:" prop="bglx"> <el-radio-group v-model="form.bglx"> <el-radio label="补充" /> <el-radio label="更换" /> </el-radio-group> </el-form-item> </el-col> </el-row> </el-form> </detail-page> <detail-block title="补充/更换原因及影响分析"> <el-row> <el-col :span="24"> <el-input v-model="form.bcghyyjyxfx" :rows="4" type="textarea" :autosize="{ minRows: 4, maxRows: 20 }" :placeholder="pageType === 'detail' ? '' : '请输入补充/更换原因及影响分析'" :class="{ 'detail-input': pageType === 'detail' }" :disabled="pageType === 'detail'" /> </el-col> </el-row> </detail-block> <detail-block title="如果召回被测件、被校件或被检件重新送检,召回原因及影响分析"> <el-row> <el-col :span="24"> <el-input v-model="form.zhyxfx" :rows="4" type="textarea" :autosize="{ minRows: 4, maxRows: 20 }" :placeholder="pageType === 'detail' ? '' : '请输入如果召回被测件、被校件或被检件重新送检,召回原因及影响分析'" :class="{ 'detail-input': pageType === 'detail' }" :disabled="pageType === 'detail'" /> </el-col> </el-row> </detail-block> </app-container> </template>