From e250159a9e6441c0474d5599d4197f4f9d847839 Mon Sep 17 00:00:00 2001
From: yubo <autumnal_wind@yeah.net>
Date: 星期一, 06 四月 2026 22:53:05 +0800
Subject: [PATCH] feat(user): 添加员工档案详情弹窗视图及信息展示功能

---
 src/views/user/archivesChange.vue |  108 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 67 insertions(+), 41 deletions(-)

diff --git a/src/views/user/archivesChange.vue b/src/views/user/archivesChange.vue
index a5d9c4e..0109919 100644
--- a/src/views/user/archivesChange.vue
+++ b/src/views/user/archivesChange.vue
@@ -3566,7 +3566,7 @@
   computed: {
     // 字典选项计算属性
     statusOptions() { return this.getDictOptions('PLITICAL') },
-    empTypeOptions() { return this.getDictOptions('empType') },
+    empTypeOptions() { return this.getDictOptions('EMPTYPE') },
     nationOptions() { return this.getDictOptions('NATION') },
     marriageOptions() { return this.getDictOptions('MARRIAGE') },
     educationOptions() { return this.getDictOptions('EDUCATION') },
@@ -3602,7 +3602,7 @@
   mounted() {
     this.initDept()
     // 字典数据已在登录时预加载,直接从 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'])
+    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) {
@@ -4032,45 +4032,8 @@
       this.physicalExamForm = { ...val }
       this.workExperienceForm = { ...val }
       this.badRecordForm = { ...val }
-      // 分批加载数据,避免并发请求过多导致 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()
-      ])
+      // 只加载附件数据(基本信息已在val中),其他模块懒加载
+      this.initlabel()
     },
     initphysicalExamData(params = {}) {
       params.pageSize = this.pagination.size
@@ -5684,57 +5647,120 @@
     goAnchor: function(type) {
       let item = 1
       this.item = type
+      // 根据点击的菜单懒加载对应数据
       switch (type) {
         case 'jbxx':
           item = 0
+          // 基本信息 - 已加载
           break
         case 'gzjl':
           item = 1
+          // 工作经历 - 懒加载
+          if (!this.workExperienceData || this.workExperienceData.length === 0) {
+            this.initList()
+          }
           break
         case 'tjxx':
           item = 2
+          // 体检信息 - 懒加载
+          if (!this.physicalExamData || this.physicalExamData.length === 0) {
+            this.initphysicalExamData()
+          }
           break
         case 'htxx':
           item = 3
+          // 合同信息 - 懒加载
+          if (!this.contractInfoData || this.contractInfoData.length === 0) {
+            this.initcontractInfoData()
+          }
           break
         case 'tgjl':
           item = 4
+          // 调岗记录 - 懒加载
+          if (!this.jobChangeData || this.jobChangeData.length === 0) {
+            this.initjobChangeData()
+          }
           break
         case 'qjjl':
           item = 5
+          // 请假记录 - 懒加载
+          if (!this.leaveInfoData || this.leaveInfoData.length === 0) {
+            this.initleaveInfoData()
+          }
           break
         case 'czsq':
           item = 6
+          // 辞职申请 - 懒加载
+          if (!this.resignData || this.resignData.length === 0) {
+            this.initresignData()
+          }
           break
         case 'lzdykq':
           item = 7
+          // 离职当月考勤 - 懒加载
+          if (!this.dimissionAttendData || this.dimissionAttendData.length === 0) {
+            this.initdimissionAttendData()
+          }
           break
         case 'rlzjl':
           item = 8
+          // 入离职记录 - 懒加载
+          if (!this.dimissionLogData || this.dimissionLogData.length === 0) {
+            this.initdimissionLogData()
+          }
           break
         case 'syjlq':
           item = 9
+          // 失业金领取 - 懒加载
+          if (!this.unemploymentData || this.unemploymentData.length === 0) {
+            this.initunemploymentData()
+          }
           break
         case 'sbsq':
           item = 10
+          // 社保申请 - 懒加载
+          if (!this.insuranceData || this.insuranceData.length === 0) {
+            this.initinsuranceData()
+          }
           break
         case 'ywxaj':
           item = 11
+          // 意外险案件 - 懒加载
+          if (!this.accidentCasesData || this.accidentCasesData.length === 0) {
+            this.initaccidentCasesData()
+          }
           break
         case 'gsaj':
           item = 12
+          // 工伤案件 - 懒加载
+          if (!this.occupationalData || this.occupationalData.length === 0) {
+            this.initoccupationalData()
+          }
           break
         case 'lzaj':
           item = 13
+          // 仲裁案件 - 懒加载
+          if (!this.laborTroubleData || this.laborTroubleData.length === 0) {
+            this.initlaborTroubleData()
+          }
           break
         case 'bljl':
           item = 14
+          // 不良记录 - 懒加载
+          if (!this.badRecordData || this.badRecordData.length === 0) {
+            this.initbadRecordData()
+          }
           break
         case 'bz':
           item = 15
+          // 备注 - 懒加载
+          if (!this.remarkInfoData || this.remarkInfoData.length === 0) {
+            this.initremarkInfoData()
+          }
           break
         case 'jljt':
           item = 16
+          // 记录截图及相关附件 - 已在initlabel中加载
           break
       }
       this.$nextTick(() => {

--
Gitblit v1.8.0