<!-- 人员登记详情 --> <script name="RegisterDetail" lang="ts" setup> import type { IDictType } from './person-regitster' import RegisterBasic from './component/basic.vue' import RegisterEducation from './component/education.vue' import RegisterAuthorize from './component/authorize.vue' import RegisterResume from './component/resume.vue' import RegisterVerifier from './component/verifier.vue' import RegisterTrainning from './component/trainning.vue' import { getDictByCode } from '@/api/system/dict' // 定义变量 const $route = useRoute() const $router = useRouter() const title = ref('') const operation = ref('') const radioItems = ref([ { name: '教育科研', value: 'register-education' }, { name: '授权信息', value: 'register-authorize' }, { name: '人员履历', value: 'register-resume' }, { name: '检定员信息', value: 'register-verifier' }, { name: '训练情况', value: 'register-trainning' }, ]) const basicRadioItem = ref({ name: '基本信息', value: 'register-basic' }) const current = ref('register-basic') const staffId = ref('') // 子组件的引用 const refRegisterBasic = ref() const refRegisterEducation = ref() const refRegisterAuthorize = ref() const refRegisterResume = ref() const refRegisterVerifier = ref() const educationDict = ref<IDictType[]>([]) const genderDict = ref<IDictType[]>([]) const degreeDict = ref<IDictType[]>([]) const staffTypeDict = ref<IDictType[]>([]) // 逻辑 // 重置各个子组件的表单内容 const resetFormData = () => { // ruleForm.value = { // } } // 关闭 const resetForm = () => { $router.go(-1) resetFormData() } // 保存 const saveForm = () => { switch (current.value) { case 'register-basic': refRegisterBasic.value.saveBasicForm() break case 'register-education': refRegisterEducation.value.addEducationRecords() refRegisterEducation.value.addAbilityRecords() refRegisterEducation.value.addProjectRecords() break case 'register-authorize': refRegisterAuthorize.value.addAuthorizeRecords() break case 'register-resume': refRegisterResume.value.addResumeRecords() refRegisterResume.value.addPromoteRecords() break case 'register-verifier': refRegisterVerifier.value.addVerifierRecords() break } } // 弹窗初始化 const initDialog = (params: any) => { operation.value = params.type switch (params.type) { case 'create' : title.value = '人员登记(新增)' break case 'update': title.value = '人员登记(编辑)' staffId.value = params.id // 调用子组件的方法 refRegisterBasic.value.getStaffBasicById(staffId.value) break case 'detail': title.value = '人员登记(详情)' staffId.value = params.id // 调用子组件的方法 refRegisterBasic.value.getStaffBasicById(staffId.value) break default: title.value = '' break } } const getStaffId = (id: string) => { staffId.value = id } // 查询学历字典值 const getEducationDict = () => { getDictByCode('bizEducation').then((res) => { if (res.code === 200) { educationDict.value = res.data sessionStorage.setItem('educationDict', JSON.stringify(educationDict.value)) } }) } // 查询性别字典值 const getGenderDict = () => { getDictByCode('sex').then((res) => { if (res.code === 200) { genderDict.value = res.data sessionStorage.setItem('genderDict', JSON.stringify(genderDict.value)) } }) } // 查询学位字典值 const getDegreeDict = () => { getDictByCode('bizDegree').then((res) => { if (res.code === 200) { degreeDict.value = res.data sessionStorage.setItem('degreeDict', JSON.stringify(degreeDict.value)) } }) } // 查询人员类别字典值 const getStaffTypeDict = () => { getDictByCode('bizStaffType').then((res) => { if (res.code === 200) { staffTypeDict.value = res.data sessionStorage.setItem('staffTypeDict', JSON.stringify(staffTypeDict.value)) } }) } const getDict = () => { getEducationDict() getGenderDict() getDegreeDict() getStaffTypeDict() } onMounted(() => { getDict() initDialog($route.query) }) </script> <template> <app-container style="overflow: hidden;"> <detail-page :title="`${title}`"> <template #btns> <el-button v-if="operation !== 'detail'" type="primary" @click="saveForm()"> 保存 </el-button> <el-button type="info" @click="resetForm()"> 关闭 </el-button> </template> <el-tabs v-model="current" type="card"> <el-tab-pane :key="basicRadioItem.value" :label="basicRadioItem.name" :name="basicRadioItem.value" /> <el-tab-pane v-for="item in radioItems" :key="item.value" :label="item.name" :name="item.value" :disabled="staffId === ''" /> </el-tabs> <register-basic v-show="current === 'register-basic'" ref="refRegisterBasic" :operation="operation" @after-add-basic="getStaffId" @return-to-list="resetForm" /> <register-education v-show="current === 'register-education'" ref="refRegisterEducation" :operation="operation" :staff-id="staffId" /> <register-authorize v-show="current === 'register-authorize'" ref="refRegisterAuthorize" :operation="operation" :staff-id="staffId" /> <register-resume v-show="current === 'register-resume'" ref="refRegisterResume" :operation="operation" :staff-id="staffId" /> <register-verifier v-show="current === 'register-verifier'" ref="refRegisterVerifier" :operation="operation" :staff-id="staffId" /> <register-trainning v-show="current === 'register-trainning'" ref="register-education-form" :operation="operation" /> </detail-page> </app-container> </template>