| | |
| | | import Pagination from '@/components/Pagination' |
| | | import { getToken } from '@/utils/auth' |
| | | import { pages } from '@/settings' |
| | | import dictMixin from '../../utils/dictMixin' |
| | | |
| | | export default { |
| | | name: 'ArchivesEdit', |
| | | components: { Treeselect, Pagination }, |
| | | mixins: [dictMixin], |
| | | props: { |
| | | dialogVisible: { |
| | | type: Boolean, |
| | |
| | | { type: 'dic_credentials' }, |
| | | { type: 'password' }, |
| | | { type: 'implicit' } |
| | | ], |
| | | statusOptions: [], |
| | | empTypeOptions: [], |
| | | nationOptions: [], |
| | | marriageOptions: [], |
| | | educationOptions: [], |
| | | nativePlaceOptions: [], |
| | | archivesStatusOptions: [], |
| | | insuranceTypeOptions: [], |
| | | empCardStatusOptions: [], |
| | | handbookStatusOptions: [], |
| | | ecgOptions: [], |
| | | certificateListOptions: [], |
| | | physicalExamTypeOptions: [], |
| | | contractStatusOptions: [], |
| | | leaveTypeOptions: [], |
| | | insuranceGaersOptions: [], |
| | | applayStatusOptions: [], |
| | | reportStatusOptions: [], |
| | | hospitalizatioFlagOptions: [], |
| | | settleStatusOptions: [], |
| | | arbitrationTypeOptions: [], |
| | | changeTypeOptions: [], |
| | | dimissionTypeOptions: [], |
| | | sexOptions: [] |
| | | ] |
| | | } |
| | | }, |
| | | computed: { |
| | | // 字典选项计算属性 |
| | | statusOptions() { return this.getDictOptions('PLITICAL') }, |
| | | empTypeOptions() { return this.getDictOptions('empType') }, |
| | | nationOptions() { return this.getDictOptions('NATION') }, |
| | | marriageOptions() { return this.getDictOptions('MARRIAGE') }, |
| | | educationOptions() { return this.getDictOptions('EDUCATION') }, |
| | | nativePlaceOptions() { return this.getDictOptions('NATIVEPLACE') }, |
| | | archivesStatusOptions() { return this.getDictOptions('archivesStatus') }, |
| | | insuranceTypeOptions() { return this.getDictOptions('INSURANCETYPE') }, |
| | | empCardStatusOptions() { return this.getDictOptions('empCardStatus') }, |
| | | handbookStatusOptions() { return this.getDictOptions('handbookStatus') }, |
| | | certificateListOptions() { return this.getDictOptions('certificateList') }, |
| | | physicalExamTypeOptions() { return this.getDictOptions('PHYSICALEXAMTYPE') }, |
| | | ecgOptions() { return this.getDictOptions('ECG') }, |
| | | contractStatusOptions() { return this.getDictOptions('CONTRACTSTATUS') }, |
| | | leaveTypeOptions() { return this.getDictOptions('LEAVETYPE') }, |
| | | insuranceGaersOptions() { return this.getDictOptions('INSURANCETYPE') }, |
| | | applayStatusOptions() { return this.getDictOptions('applayStatus') }, |
| | | reportStatusOptions() { return this.getDictOptions('reportStatus') }, |
| | | hospitalizatioFlagOptions() { return this.getDictOptions('hospitalizatioFlag') }, |
| | | settleStatusOptions() { return this.getDictOptions('settleStatus') }, |
| | | arbitrationTypeOptions() { return this.getDictOptions('ZCTYPE') }, |
| | | changeTypeOptions() { return this.getDictOptions('changeType') }, |
| | | dimissionTypeOptions() { return this.getDictOptions('LZTYPE') }, |
| | | sexOptions() { return this.getDictOptions('sex') }, |
| | | isVisible: { |
| | | get() { |
| | | return this.dialogVisible |
| | |
| | | }, |
| | | mounted() { |
| | | this.initDept() |
| | | /* 政治面貌*/ |
| | | this.getDicts('PLITICAL').then(response => { |
| | | this.statusOptions = response.data |
| | | }) |
| | | this.getDicts('sex').then(response => { |
| | | this.sexOptions = response.data |
| | | }) |
| | | this.getDicts('empType').then(response => { |
| | | this.empTypeOptions = response.data |
| | | }) |
| | | this.getDicts('NATION').then(response => { |
| | | this.nationOptions = response.data |
| | | }) |
| | | this.getDicts('MARRIAGE').then(response => { |
| | | this.marriageOptions = response.data |
| | | }) |
| | | this.getDicts('EDUCATION').then(response => { |
| | | this.educationOptions = response.data |
| | | }) |
| | | this.getDicts('NATIVEPLACE').then(response => { |
| | | this.nativePlaceOptions = response.data |
| | | }) |
| | | this.getDicts('archivesStatus').then(response => { |
| | | this.archivesStatusOptions = response.data |
| | | }) |
| | | this.getDicts('INSURANCETYPE').then(response => { |
| | | this.insuranceTypeOptions = response.data |
| | | }) |
| | | this.getDicts('empCardStatus').then(response => { |
| | | this.empCardStatusOptions = response.data |
| | | }) |
| | | this.getDicts('handbookStatus').then(response => { |
| | | this.handbookStatusOptions = response.data |
| | | }) |
| | | this.getDicts('certificateList').then(response => { |
| | | this.certificateListOptions = response.data |
| | | }) |
| | | this.getDicts('PHYSICALEXAMTYPE').then(response => { |
| | | this.physicalExamTypeOptions = response.data |
| | | }) |
| | | this.getDicts('ECG').then(response => { |
| | | this.ecgOptions = response.data |
| | | }) |
| | | this.getDicts('CONTRACTSTATUS').then(response => { |
| | | this.contractStatusOptions = response.data |
| | | }) |
| | | this.getDicts('LEAVETYPE').then(response => { |
| | | this.leaveTypeOptions = response.data |
| | | }) |
| | | this.getDicts('INSURANCETYPE').then(response => { |
| | | this.insuranceGaersOptions = response.data |
| | | }) |
| | | this.getDicts('applayStatus').then(response => { |
| | | this.applayStatusOptions = response.data |
| | | }) |
| | | this.getDicts('reportStatus').then(response => { |
| | | this.reportStatusOptions = response.data |
| | | }) |
| | | this.getDicts('hospitalizatioFlag').then(response => { |
| | | this.hospitalizatioFlagOptions = response.data |
| | | }) |
| | | this.getDicts('settleStatus').then(response => { |
| | | this.settleStatusOptions = response.data |
| | | }) |
| | | this.getDicts('ZCTYPE').then(response => { |
| | | this.arbitrationTypeOptions = response.data |
| | | }) |
| | | this.getDicts('changeType').then(response => { |
| | | this.changeTypeOptions = response.data |
| | | }) |
| | | this.getDicts('LZTYPE').then(response => { |
| | | this.dimissionTypeOptions = response.data |
| | | }) |
| | | // 字典数据已在登录时预加载,直接从 Vuex 获取 |
| | | this.initDictTypes(['PLITICAL', 'sex', 'empType', 'NATION', 'MARRIAGE', 'EDUCATION', 'NATIVEPLACE', 'archivesStatus', 'INSURANCETYPE', 'empCardStatus', 'handbookStatus', 'certificateList', 'PHYSICALEXAMTYPE', 'ECG', 'CONTRACTSTATUS', 'LEAVETYPE', 'applayStatus', 'reportStatus', 'hospitalizatioFlag', 'settleStatus', 'ZCTYPE', 'changeType', 'LZTYPE']) |
| | | }, |
| | | methods: { |
| | | typeFormat(row, column) { |
| | |
| | | this.physicalExamForm = { ...val } |
| | | this.workExperienceForm = { ...val } |
| | | this.badRecordForm = { ...val } |
| | | this.initlabel() |
| | | this.initphysicalExamData() |
| | | this.initList() // 工作经历 |
| | | this.initjobChangeData() // 调岗记录 |
| | | this.initdimissionLogData() // 入离职记录 |
| | | this.initcontractInfoData() // 合同信息 |
| | | this.initleaveInfoData() // 请假记录 |
| | | this.initresignData() // 辞职申请 |
| | | this.initunemploymentData() // 失业金领取 |
| | | this.initinsuranceData() // 社保申请 |
| | | this.initremarkInfoData() // 备注 |
| | | this.initlaborTroubleData() // 仲裁案件 |
| | | this.initoccupationalData() // 工伤案件 |
| | | this.initbadRecordData() // 不良记录 |
| | | this.initaccidentCasesData() // 意外险案件 |
| | | this.initdimissionAttendData() // 考勤情况 |
| | | // 分批加载数据,避免并发请求过多导致 503 错误 |
| | | this.loadDataInBatches() |
| | | }, |
| | | // 分批加载档案数据,控制并发请求数量 |
| | | async loadDataInBatches() { |
| | | // 第1批:首屏可见数据(4个请求) |
| | | await Promise.all([ |
| | | this.initlabel(), |
| | | this.initphysicalExamData(), |
| | | this.initList(), |
| | | this.initjobChangeData() |
| | | ]) |
| | | |
| | | // 延迟 200ms 后加载第2批 |
| | | await new Promise(resolve => setTimeout(resolve, 200)) |
| | | await Promise.all([ |
| | | this.initdimissionLogData(), |
| | | this.initcontractInfoData(), |
| | | this.initleaveInfoData(), |
| | | this.initresignData() |
| | | ]) |
| | | |
| | | // 延迟 200ms 后加载第3批 |
| | | await new Promise(resolve => setTimeout(resolve, 200)) |
| | | await Promise.all([ |
| | | this.initunemploymentData(), |
| | | this.initinsuranceData(), |
| | | this.initremarkInfoData(), |
| | | this.initlaborTroubleData() |
| | | ]) |
| | | |
| | | // 延迟 200ms 后加载第4批 |
| | | await new Promise(resolve => setTimeout(resolve, 200)) |
| | | await Promise.all([ |
| | | this.initoccupationalData(), |
| | | this.initbadRecordData(), |
| | | this.initaccidentCasesData(), |
| | | this.initdimissionAttendData() |
| | | ]) |
| | | }, |
| | | initphysicalExamData(params = {}) { |
| | | params.pageSize = this.pagination.size |