浏览代码

修改功能添加导航

yangg 11 小时之前
父节点
当前提交
2f54de3963

+ 40 - 4
pages/Personal/Personal.vue

@@ -1188,10 +1188,28 @@ import { apiBaseUrl } from '@/common/config.js';
 			
 			
 			// 教育经历相关方法
 			// 教育经历相关方法
 			bindStartTimeChange(e) {
 			bindStartTimeChange(e) {
-				this.educationForm.startTime = e.detail.value;
+				const startTime = e.detail.value;
+				if (this.educationForm.endTime && startTime > this.educationForm.endTime) {
+					uni.showToast({
+						title: '开始时间不能大于结束时间',
+						icon: 'none'
+					});
+					return;
+				}
+				this.educationForm.startTime = startTime;
+				this.educationErrors.startTime = false;
 			},
 			},
 			bindEndTimeChange(e) {
 			bindEndTimeChange(e) {
-				this.educationForm.endTime = e.detail.value;
+				const endTime = e.detail.value;
+				if (this.educationForm.startTime && endTime < this.educationForm.startTime) {
+					uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon: 'none'
+					});
+					return;
+				}
+				this.educationForm.endTime = endTime;
+				this.educationErrors.endTime = false;
 			},
 			},
 			bindDegreeChange(e) {
 			bindDegreeChange(e) {
 				this.degreeIndex = e.detail.value;
 				this.degreeIndex = e.detail.value;
@@ -1307,10 +1325,28 @@ import { apiBaseUrl } from '@/common/config.js';
 			},
 			},
 			// 工作经历相关方法
 			// 工作经历相关方法
 			bindWorkStartTimeChange(e) {
 			bindWorkStartTimeChange(e) {
-				this.workForm.startTime = e.detail.value;
+				const startTime = e.detail.value;
+				if (this.workForm.endTime && startTime > this.workForm.endTime) {
+					uni.showToast({
+						title: '开始时间不能大于结束时间',
+						icon: 'none'
+					});
+					return;
+				}
+				this.workForm.startTime = startTime;
+				this.workErrors.startTime = false;
 			},
 			},
 			bindWorkEndTimeChange(e) {
 			bindWorkEndTimeChange(e) {
-				this.workForm.endTime = e.detail.value;
+				const endTime = e.detail.value;
+				if (this.workForm.startTime && endTime < this.workForm.startTime) {
+					uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon: 'none'
+					});
+					return;
+				}
+				this.workForm.endTime = endTime;
+				this.workErrors.endTime = false;
 			},
 			},
 			saveWork() {
 			saveWork() {
 				// 重置所有工作经历相关的错误信息
 				// 重置所有工作经历相关的错误信息

+ 1 - 1
pages/camera/camera.vue

@@ -320,7 +320,7 @@
             }
             }
           });
           });
         }
         }
-      }, 3000);
+      }, 5000);
     },
     },
 
 
     cleanupPersonDetectionWebSocket() {
     cleanupPersonDetectionWebSocket() {

+ 76 - 6
pages/identity-verify/identity-verify.vue

@@ -349,6 +349,8 @@ export default {
       mainQuestionIndex: 0, // 当前主问题的索引
       mainQuestionIndex: 0, // 当前主问题的索引
       isVideoSwitching: false, // 添加视频切换状态锁
       isVideoSwitching: false, // 添加视频切换状态锁
       originalQuestionSubtitle: null, // 保存原始字幕信息
       originalQuestionSubtitle: null, // 保存原始字幕信息
+      isThinking: false, // 面试官思考中状态
+      thinkingTimer: null, // 思考计时器
     }
     }
   },
   },
   mounted() {
   mounted() {
@@ -544,12 +546,14 @@ export default {
         this.handleAudioEnd();
         this.handleAudioEnd();
       },
       },
       // 调用面试互动接口
       // 调用面试互动接口
-      async callInterviewInteraction(questionId) {
+      async callInterviewInteraction(questionId, retryCount = 0, maxRetries = 3) {
         const userInfo = JSON.parse(uni.getStorageSync('userInfo'));
         const userInfo = JSON.parse(uni.getStorageSync('userInfo'));
         const appId = uni.getStorageSync('appId');
         const appId = uni.getStorageSync('appId');
         const positionConfigId = JSON.parse(uni.getStorageSync('configData')).id;
         const positionConfigId = JSON.parse(uni.getStorageSync('configData')).id;
         
         
         try {
         try {
+          // 显示思考中loading
+          this.showThinkingLoading();
           console.log('开始调用面试互动接口', { questionId, appId });
           console.log('开始调用面试互动接口', { questionId, appId });
           const res = await uni.request({
           const res = await uni.request({
             url: `${apiBaseUrl}/api/voice_interview_interaction/`,
             url: `${apiBaseUrl}/api/voice_interview_interaction/`,
@@ -566,18 +570,38 @@ export default {
           });
           });
           console.log('面试互动接口返回数据:', res);
           console.log('面试互动接口返回数据:', res);
           
           
+          // 处理4000状态码(视频未转写完成)的情况
+          if (res.statusCode === 400) {
+            if (retryCount < maxRetries) {
+              console.log(`视频转写未完成,${retryCount + 1}次重试中...`);
+              // 等待3秒后重试
+              await new Promise(resolve => setTimeout(resolve, 3000));
+              return this.callInterviewInteraction(questionId, retryCount + 1, maxRetries);
+            } else {
+              console.log('达到最大重试次数,视频转写仍未完成');
+              uni.showToast({
+                title: '视频转写处理中,请稍后再试',
+                icon: 'none',
+                duration: 2000
+              });
+              return false;
+            }
+          }
+          
           if (res.data.success) {
           if (res.data.success) {
             // 等待处理追问问题完成
             // 等待处理追问问题完成
             await this.handleFollowUpQuestion(res.data);
             await this.handleFollowUpQuestion(res.data);
+            this.hideThinkingLoading();
+            return true;
           } else {
           } else {
             console.error('面试互动接口返回错误:', res.data);
             console.error('面试互动接口返回错误:', res.data);
-           /* uni.showToast({
-              title: '获取追问失败',
-              icon: 'none'
-            }); */
+            this.hideThinkingLoading();
+            return false;
           }
           }
         } catch (error) {
         } catch (error) {
           console.error('调用面试互动接口失败:', error);
           console.error('调用面试互动接口失败:', error);
+          this.hideThinkingLoading();
+          return false;
         }
         }
       },
       },
       
       
@@ -896,6 +920,13 @@ export default {
       this.assistantResponse = ''
       this.assistantResponse = ''
       this.audioTranscript = ''
       this.audioTranscript = ''
       this.processedResponses = []
       this.processedResponses = []
+      
+      // 显示加载提示
+      uni.showLoading({
+        title: '面试官思考中...',
+        mask: true  // 添加遮罩,防止用户触摸界面
+      })
+      
       try {
       try {
         // 使用uni.request代替fetch
         // 使用uni.request代替fetch
         const requestTask = uni.request({
         const requestTask = uni.request({
@@ -951,14 +982,26 @@ export default {
           },
           },
           fail: (err) => {
           fail: (err) => {
             console.error('请求失败:', err);
             console.error('请求失败:', err);
+            uni.showToast({
+              title: '请求失败,请重试',
+              icon: 'none'
+            });
           },
           },
           complete: () => {
           complete: () => {
             this.loading = false;
             this.loading = false;
+            // 隐藏加载提示
+            uni.hideLoading();
           }
           }
         });
         });
       } catch (error) {
       } catch (error) {
         console.error('获取数据失败:', error);
         console.error('获取数据失败:', error);
         this.loading = false;
         this.loading = false;
+        // 隐藏加载提示
+        uni.hideLoading();
+        uni.showToast({
+          title: '系统错误,请重试',
+          icon: 'none'
+        });
       }
       }
     },
     },
     
     
@@ -2108,6 +2151,8 @@ export default {
 
 
     // 修改 uploadRecordedVideo 方法,添加记录父问题ID的逻辑
     // 修改 uploadRecordedVideo 方法,添加记录父问题ID的逻辑
     uploadRecordedVideo(fileOrPath) {
     uploadRecordedVideo(fileOrPath) {
+     
+      
       console.log('准备上传视频:', typeof fileOrPath === 'string' ? fileOrPath : fileOrPath.name);
       console.log('准备上传视频:', typeof fileOrPath === 'string' ? fileOrPath : fileOrPath.name);
       console.log('当前问题ID:', this.currentParentQuestionId);
       console.log('当前问题ID:', this.currentParentQuestionId);
       console.log('当前问题类型:', this.isFollowUpQuestion);
       console.log('当前问题类型:', this.isFollowUpQuestion);
@@ -2134,6 +2179,8 @@ export default {
           isFollowUp: true
           isFollowUp: true
         });
         });
       } else {
       } else {
+         // 显示思考中loading
+         this.showThinkingLoading();
         // 使用常规问题的信息
         // 使用常规问题的信息
         const currentQuestion = this.getCurrentQuestionByIndex(this.currentVideoIndex);
         const currentQuestion = this.getCurrentQuestionByIndex(this.currentVideoIndex);
         if (currentQuestion && currentQuestion.id) {
         if (currentQuestion && currentQuestion.id) {
@@ -2211,6 +2258,9 @@ export default {
 
 
     // 添加新方法:处理上传后的逻辑
     // 添加新方法:处理上传后的逻辑
     handlePostUploadActions(task) {
     handlePostUploadActions(task) {
+      // 隐藏思考中loading
+      this.hideThinkingLoading();
+      
       // 检查是否需要播放低分视频
       // 检查是否需要播放低分视频
       if (this.needPlayLowScoreVideo && this.retryCount < 1) {
       if (this.needPlayLowScoreVideo && this.retryCount < 1) {
         this.playLowScoreVideo();
         this.playLowScoreVideo();
@@ -2238,6 +2288,7 @@ export default {
       if (this.uploadQueue.length === 0) {
       if (this.uploadQueue.length === 0) {
         this.isUploading = false;
         this.isUploading = false;
         this.showUploadStatus = false;
         this.showUploadStatus = false;
+        this.hideThinkingLoading(); // 隐藏思考中loading
         return;
         return;
       }
       }
       
       
@@ -4111,7 +4162,7 @@ export default {
         } catch (mainError) {
         } catch (mainError) {
           console.error('人脸检测:主流程执行出错:', mainError);
           console.error('人脸检测:主流程执行出错:', mainError);
         }
         }
-      }, 3000);
+      }, 5000);
     },
     },
 
 
     cleanupPersonDetectionWebSocket() {
     cleanupPersonDetectionWebSocket() {
@@ -4399,6 +4450,25 @@ export default {
         });
         });
       }
       }
     },
     },
+
+    // 显示面试官思考中loading
+    showThinkingLoading() {
+      this.isThinking = true;
+      uni.showLoading({
+        title: '面试官正在思考中',
+        mask: false
+      });
+    },
+    
+    // 隐藏面试官思考中loading
+    hideThinkingLoading() {
+      this.isThinking = false;
+      uni.hideLoading();
+      if (this.thinkingTimer) {
+        clearTimeout(this.thinkingTimer);
+        this.thinkingTimer = null;
+      }
+    },
   },
   },
   computed: {
   computed: {
     // 计算进度比例
     // 计算进度比例

+ 20 - 2
pages/interview/interview.vue

@@ -178,7 +178,11 @@ import { apiBaseUrl } from '@/common/config.js'; // Import the base URL from a c
 		},
 		},
 		computed: {
 		computed: {
 			canGoNext() {
 			canGoNext() {
-				// 只有当前步骤的照片已拍摄才能进入下一步
+				// 如果是最后一步,检查所有照片是否都已完成
+				if (this.currentStep === 5) {
+					return this.photos.every(photo => photo !== null);
+				}
+				// 其他步骤只检查当前步骤的照片
 				return this.photos[this.currentStep] !== null;
 				return this.photos[this.currentStep] !== null;
 			}
 			}
 		},
 		},
@@ -215,6 +219,10 @@ import { apiBaseUrl } from '@/common/config.js'; // Import the base URL from a c
 		},
 		},
 		methods: {
 		methods: {
 			takePhoto() {
 			takePhoto() {
+				// 先重置当前步骤的状态
+				this.$set(this.photos, this.currentStep, null);
+				this.$set(this.photoLinks, this.currentStep, null);
+				
 				// 根据平台选择不同的拍照方法
 				// 根据平台选择不同的拍照方法
 				if (this.isH5) {
 				if (this.isH5) {
 					this.startCamera();
 					this.startCamera();
@@ -403,6 +411,7 @@ import { apiBaseUrl } from '@/common/config.js'; // Import the base URL from a c
 			},
 			},
 			nextStep() {
 			nextStep() {
 				if (this.currentStep < 5) {
 				if (this.currentStep < 5) {
+					return
 					this.currentStep++;
 					this.currentStep++;
 				} else if (this.currentStep === 5 && this.photos[5]) {
 				} else if (this.currentStep === 5 && this.photos[5]) {
 					// 所有照片都已拍摄完成,可以进行提交或跳转
 					// 所有照片都已拍摄完成,可以进行提交或跳转
@@ -567,7 +576,12 @@ import { apiBaseUrl } from '@/common/config.js'; // Import the base URL from a c
 						success: (res) => {
 						success: (res) => {
 							console.log('拍照成功:', res);
 							console.log('拍照成功:', res);
 							uni.hideLoading();
 							uni.hideLoading();
-							// 更新当前步骤的照片
+							
+							// 先清空当前照片,确保状态一致
+							this.$set(this.photos, this.currentStep, null);
+							this.$set(this.photoLinks, this.currentStep, null);
+							
+							// 然后设置新照片
 							this.$set(this.photos, this.currentStep, res.tempImagePath);
 							this.$set(this.photos, this.currentStep, res.tempImagePath);
 							
 							
 							// 上传照片
 							// 上传照片
@@ -666,6 +680,10 @@ import { apiBaseUrl } from '@/common/config.js'; // Import the base URL from a c
 					this.stopMediaStream();
 					this.stopMediaStream();
 				}
 				}
 				this.showCamera = false;
 				this.showCamera = false;
+				// 重置当前步骤的照片状态,确保需要重新拍照
+				this.$set(this.photos, this.currentStep, null);
+				// 重置当前步骤的照片链接
+				this.$set(this.photoLinks, this.currentStep, null);
 			},
 			},
 			
 			
 			// 停止摄像头流
 			// 停止摄像头流

+ 26 - 0
pages/job-detail/job-detail.vue

@@ -29,6 +29,7 @@
           :longitude="mapInfo.longitude"
           :longitude="mapInfo.longitude"
           :markers="mapInfo.markers"
           :markers="mapInfo.markers"
           :scale="16"
           :scale="16"
+          @tap="openLocation"
         ></map>
         ></map>
         <!-- <view class="location-text">{{ jobDetail.location }}</view> -->
         <!-- <view class="location-text">{{ jobDetail.location }}</view> -->
       </view>
       </view>
@@ -374,6 +375,31 @@ export default {
       } catch (error) {
       } catch (error) {
         console.error('更新地图位置失败:', error);
         console.error('更新地图位置失败:', error);
       }
       }
+    },
+    openLocation() {
+      if (this.mapInfo.latitude && this.mapInfo.longitude) {
+        uni.openLocation({
+          latitude: this.mapInfo.latitude,
+          longitude: this.mapInfo.longitude,
+          name: this.jobDetail.title,
+          address: this.formatLocation(this.jobDetail.location),
+          success: function () {
+            console.log('导航打开成功');
+          },
+          fail: function (err) {
+            console.error('导航打开失败:', err);
+            uni.showToast({
+              title: '导航打开失败',
+              icon: 'none'
+            });
+          }
+        });
+      } else {
+        uni.showToast({
+          title: '暂无位置信息',
+          icon: 'none'
+        });
+      }
     }
     }
   }
   }
 }
 }

+ 288 - 179
unpackage/dist/dev/mp-weixin/pages/Personal/Personal.js

@@ -570,10 +570,28 @@ const _sfc_main = {
     },
     },
     // 教育经历相关方法
     // 教育经历相关方法
     bindStartTimeChange(e) {
     bindStartTimeChange(e) {
-      this.educationForm.startTime = e.detail.value;
+      const startTime = e.detail.value;
+      if (this.educationForm.endTime && startTime > this.educationForm.endTime) {
+        common_vendor.index.showToast({
+          title: "开始时间不能大于结束时间",
+          icon: "none"
+        });
+        return;
+      }
+      this.educationForm.startTime = startTime;
+      this.educationErrors.startTime = false;
     },
     },
     bindEndTimeChange(e) {
     bindEndTimeChange(e) {
-      this.educationForm.endTime = e.detail.value;
+      const endTime = e.detail.value;
+      if (this.educationForm.startTime && endTime < this.educationForm.startTime) {
+        common_vendor.index.showToast({
+          title: "结束时间不能小于开始时间",
+          icon: "none"
+        });
+        return;
+      }
+      this.educationForm.endTime = endTime;
+      this.educationErrors.endTime = false;
     },
     },
     bindDegreeChange(e) {
     bindDegreeChange(e) {
       this.degreeIndex = e.detail.value;
       this.degreeIndex = e.detail.value;
@@ -667,10 +685,28 @@ const _sfc_main = {
     },
     },
     // 工作经历相关方法
     // 工作经历相关方法
     bindWorkStartTimeChange(e) {
     bindWorkStartTimeChange(e) {
-      this.workForm.startTime = e.detail.value;
+      const startTime = e.detail.value;
+      if (this.workForm.endTime && startTime > this.workForm.endTime) {
+        common_vendor.index.showToast({
+          title: "开始时间不能大于结束时间",
+          icon: "none"
+        });
+        return;
+      }
+      this.workForm.startTime = startTime;
+      this.workErrors.startTime = false;
     },
     },
     bindWorkEndTimeChange(e) {
     bindWorkEndTimeChange(e) {
-      this.workForm.endTime = e.detail.value;
+      const endTime = e.detail.value;
+      if (this.workForm.startTime && endTime < this.workForm.startTime) {
+        common_vendor.index.showToast({
+          title: "结束时间不能小于开始时间",
+          icon: "none"
+        });
+        return;
+      }
+      this.workForm.endTime = endTime;
+      this.workErrors.endTime = false;
     },
     },
     saveWork() {
     saveWork() {
       this.workErrors = {
       this.workErrors = {
@@ -1349,6 +1385,72 @@ const _sfc_main = {
         return false;
         return false;
       }
       }
       return true;
       return true;
+    },
+    validateExpectedSalary(e) {
+      const value = e.detail.value;
+      console.log(value);
+      if (value === "") {
+        this.formData.expectedSalary = "";
+        this.formErrors.expectedSalary = "";
+        return;
+      }
+      let num = parseFloat(value);
+      if (isNaN(num)) {
+        this.formErrors.expectedSalary = "请输入有效的数字";
+        return;
+      }
+      if (num < 0) {
+        num = 0;
+        this.formErrors.expectedSalary = "薪资不能小于0";
+      } else if (num > 1e5) {
+        num = 1e5;
+        this.formErrors.expectedSalary = "薪资不能超过100000";
+      }
+      this.formData.expectedSalary = num.toString();
+    },
+    validateEmployeeCount(e) {
+      const value = e.detail.value;
+      if (value === "") {
+        this.workForm.employeeCount = "";
+        this.workErrors.employeeCount = "";
+        return;
+      }
+      let num = parseInt(value);
+      if (isNaN(num)) {
+        this.workErrors.employeeCount = "请输入有效的数字";
+        return;
+      }
+      if (num < 0) {
+        num = 0;
+        this.workErrors.employeeCount = "人数不能小于0";
+      } else if (num > 1e4) {
+        num = 1e4;
+        this.workErrors.employeeCount = "人数不能超过10000";
+      }
+      this.workForm.employeeCount = num.toString();
+    },
+    validateMonthlySalary(e) {
+      const value = e.detail.value;
+      if (value === "") {
+        this.workForm.monthlySalary = "";
+        this.workErrors.monthlySalary = "";
+        return;
+      }
+      let num = parseInt(value);
+      if (isNaN(num)) {
+        this.workErrors.monthlySalary = "请输入有效的数字";
+        return;
+      }
+      if (num < 0) {
+        num = 0;
+        this.workErrors.monthlySalary = "月总收入不能小于0";
+      } else if (num > 1e5) {
+        num = 1e5;
+        this.workErrors.monthlySalary = "月总收入不能超过100000";
+      } else {
+        this.workErrors.monthlySalary = "";
+      }
+      this.workForm.monthlySalary = num.toString();
     }
     }
   },
   },
   // 添加监听器来清除错误信息
   // 添加监听器来清除错误信息
@@ -1591,14 +1693,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
     am: common_vendor.o((...args) => $options.bindMarriageChange && $options.bindMarriageChange(...args)),
     am: common_vendor.o((...args) => $options.bindMarriageChange && $options.bindMarriageChange(...args)),
     an: $data.marriageIndex,
     an: $data.marriageIndex,
     ao: $data.marriageOptions,
     ao: $data.marriageOptions,
-    ap: $data.formData.expectedSalary,
-    aq: common_vendor.o(($event) => $data.formData.expectedSalary = $event.detail.value)
-  }) : {}, {
-    ar: $data.currentStep === 3
+    ap: common_vendor.o((...args) => $options.validateExpectedSalary && $options.validateExpectedSalary(...args)),
+    aq: $data.formErrors.expectedSalary ? 1 : "",
+    ar: $data.formData.expectedSalary,
+    as: common_vendor.o(($event) => $data.formData.expectedSalary = $event.detail.value),
+    at: $data.formErrors.expectedSalary
+  }, $data.formErrors.expectedSalary ? {
+    av: common_vendor.t($data.formErrors.expectedSalary)
+  } : {}) : {}, {
+    aw: $data.currentStep === 3
   }, $data.currentStep === 3 ? common_vendor.e({
   }, $data.currentStep === 3 ? common_vendor.e({
-    as: $data.familyMembers.length > 0
+    ax: $data.familyMembers.length > 0
   }, $data.familyMembers.length > 0 ? {
   }, $data.familyMembers.length > 0 ? {
-    at: common_vendor.f($data.familyMembers, (member, index, i0) => {
+    ay: common_vendor.f($data.familyMembers, (member, index, i0) => {
       return common_vendor.e({
       return common_vendor.e({
         a: common_vendor.t(index + 1),
         a: common_vendor.t(index + 1),
         b: common_vendor.o(($event) => $options.editFamilyMember(index), index),
         b: common_vendor.o(($event) => $options.editFamilyMember(index), index),
@@ -1618,65 +1725,65 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         j: index
         j: index
       });
       });
     }),
     }),
-    av: $options.showFamilyRelationField,
-    aw: $options.showFamilyNameField,
-    ax: $options.showFamilyWorkplaceField,
-    ay: $options.showFamilyPositionField,
-    az: $options.showFamilyPhoneField
+    az: $options.showFamilyRelationField,
+    aA: $options.showFamilyNameField,
+    aB: $options.showFamilyWorkplaceField,
+    aC: $options.showFamilyPositionField,
+    aD: $options.showFamilyPhoneField
   } : {}, {
   } : {}, {
-    aA: common_vendor.t($data.isEditing ? "编辑家庭成员" : "添加家庭成员"),
-    aB: $data.isEditing
+    aE: common_vendor.t($data.isEditing ? "编辑家庭成员" : "添加家庭成员"),
+    aF: $data.isEditing
   }, $data.isEditing ? {
   }, $data.isEditing ? {
-    aC: common_vendor.o((...args) => $options.cancelEdit && $options.cancelEdit(...args))
+    aG: common_vendor.o((...args) => $options.cancelEdit && $options.cancelEdit(...args))
   } : {}, {
   } : {}, {
-    aD: $options.showFamilyRelationField
+    aH: $options.showFamilyRelationField
   }, $options.showFamilyRelationField ? common_vendor.e({
   }, $options.showFamilyRelationField ? common_vendor.e({
-    aE: $data.familyMemberErrors.relation ? 1 : "",
-    aF: $data.familyMemberForm.relation,
-    aG: common_vendor.o(($event) => $data.familyMemberForm.relation = $event.detail.value),
-    aH: $data.familyMemberErrors.relation
+    aI: $data.familyMemberErrors.relation ? 1 : "",
+    aJ: $data.familyMemberForm.relation,
+    aK: common_vendor.o(($event) => $data.familyMemberForm.relation = $event.detail.value),
+    aL: $data.familyMemberErrors.relation
   }, $data.familyMemberErrors.relation ? {
   }, $data.familyMemberErrors.relation ? {
-    aI: common_vendor.t($data.familyMemberErrors.relation)
+    aM: common_vendor.t($data.familyMemberErrors.relation)
   } : {}) : {}, {
   } : {}) : {}, {
-    aJ: $options.showFamilyNameField
+    aN: $options.showFamilyNameField
   }, $options.showFamilyNameField ? common_vendor.e({
   }, $options.showFamilyNameField ? common_vendor.e({
-    aK: $data.familyMemberErrors.name ? 1 : "",
-    aL: $data.familyMemberForm.name,
-    aM: common_vendor.o(($event) => $data.familyMemberForm.name = $event.detail.value),
-    aN: $data.familyMemberErrors.name
+    aO: $data.familyMemberErrors.name ? 1 : "",
+    aP: $data.familyMemberForm.name,
+    aQ: common_vendor.o(($event) => $data.familyMemberForm.name = $event.detail.value),
+    aR: $data.familyMemberErrors.name
   }, $data.familyMemberErrors.name ? {
   }, $data.familyMemberErrors.name ? {
-    aO: common_vendor.t($data.familyMemberErrors.name)
+    aS: common_vendor.t($data.familyMemberErrors.name)
   } : {}) : {}, {
   } : {}) : {}, {
-    aP: $options.showFamilyWorkplaceField
+    aT: $options.showFamilyWorkplaceField
   }, $options.showFamilyWorkplaceField ? {
   }, $options.showFamilyWorkplaceField ? {
-    aQ: $data.familyMemberForm.workplaceOrAddress,
-    aR: common_vendor.o(($event) => $data.familyMemberForm.workplaceOrAddress = $event.detail.value)
+    aU: $data.familyMemberForm.workplaceOrAddress,
+    aV: common_vendor.o(($event) => $data.familyMemberForm.workplaceOrAddress = $event.detail.value)
   } : {}, {
   } : {}, {
-    aS: $options.showFamilyPositionField
+    aW: $options.showFamilyPositionField
   }, $options.showFamilyPositionField ? {
   }, $options.showFamilyPositionField ? {
-    aT: $data.familyMemberForm.position,
-    aU: common_vendor.o(($event) => $data.familyMemberForm.position = $event.detail.value)
+    aX: $data.familyMemberForm.position,
+    aY: common_vendor.o(($event) => $data.familyMemberForm.position = $event.detail.value)
   } : {}, {
   } : {}, {
-    aV: $options.showFamilyPhoneField
+    aZ: $options.showFamilyPhoneField
   }, $options.showFamilyPhoneField ? common_vendor.e({
   }, $options.showFamilyPhoneField ? common_vendor.e({
-    aW: $data.familyMemberErrors.phone ? 1 : "",
-    aX: $data.familyMemberForm.phone,
-    aY: common_vendor.o(($event) => $data.familyMemberForm.phone = $event.detail.value),
-    aZ: $data.familyMemberErrors.phone
+    ba: $data.familyMemberErrors.phone ? 1 : "",
+    bb: $data.familyMemberForm.phone,
+    bc: common_vendor.o(($event) => $data.familyMemberForm.phone = $event.detail.value),
+    bd: $data.familyMemberErrors.phone
   }, $data.familyMemberErrors.phone ? {
   }, $data.familyMemberErrors.phone ? {
-    ba: common_vendor.t($data.familyMemberErrors.phone)
+    be: common_vendor.t($data.familyMemberErrors.phone)
   } : {}) : {}, {
   } : {}) : {}, {
-    bb: $data.familyMemberForm.isEmergencyContact,
-    bc: common_vendor.o((...args) => $options.handleEmergencyContactChange && $options.handleEmergencyContactChange(...args)),
-    bd: common_vendor.t($data.isEditing ? "✓" : "+"),
-    be: common_vendor.o((...args) => $options.saveFamilyMember && $options.saveFamilyMember(...args)),
-    bf: common_vendor.t($data.isEditing ? "保存修改" : "添加成员")
+    bf: $data.familyMemberForm.isEmergencyContact,
+    bg: common_vendor.o((...args) => $options.handleEmergencyContactChange && $options.handleEmergencyContactChange(...args)),
+    bh: common_vendor.t($data.isEditing ? "✓" : "+"),
+    bi: common_vendor.o((...args) => $options.saveFamilyMember && $options.saveFamilyMember(...args)),
+    bj: common_vendor.t($data.isEditing ? "保存修改" : "添加成员")
   }) : {}, {
   }) : {}, {
-    bg: $data.currentStep === 5
+    bk: $data.currentStep === 5
   }, $data.currentStep === 5 ? common_vendor.e({
   }, $data.currentStep === 5 ? common_vendor.e({
-    bh: $data.educationList.length > 0
+    bl: $data.educationList.length > 0
   }, $data.educationList.length > 0 ? {
   }, $data.educationList.length > 0 ? {
-    bi: common_vendor.f($data.educationList, (edu, index, i0) => {
+    bm: common_vendor.f($data.educationList, (edu, index, i0) => {
       return common_vendor.e({
       return common_vendor.e({
         a: common_vendor.t(index === 0 ? "第一学历" : "最高学历"),
         a: common_vendor.t(index === 0 ? "第一学历" : "最高学历"),
         b: common_vendor.o(($event) => $options.editEducation(index), index),
         b: common_vendor.o(($event) => $options.editEducation(index), index),
@@ -1694,98 +1801,98 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         i: index
         i: index
       });
       });
     }),
     }),
-    bj: $options.showEducationTimeField,
-    bk: $options.showEducationSchoolField,
-    bl: $options.showEducationMajorField,
-    bm: $options.showEducationDegreeField
+    bn: $options.showEducationTimeField,
+    bo: $options.showEducationSchoolField,
+    bp: $options.showEducationMajorField,
+    bq: $options.showEducationDegreeField
   } : {}, {
   } : {}, {
-    bn: $data.educationList.length < 2 || $data.isEditingEducation
+    br: $data.educationList.length < 2 || $data.isEditingEducation
   }, $data.educationList.length < 2 || $data.isEditingEducation ? common_vendor.e({
   }, $data.educationList.length < 2 || $data.isEditingEducation ? common_vendor.e({
-    bo: common_vendor.t($data.isEditingEducation ? "编辑教育经历" : $data.educationList.length === 0 ? "添加第一学历" : "添加最高学历"),
-    bp: $data.isEditingEducation
+    bs: common_vendor.t($data.isEditingEducation ? "编辑教育经历" : $data.educationList.length === 0 ? "添加第一学历" : "添加最高学历"),
+    bt: $data.isEditingEducation
   }, $data.isEditingEducation ? {
   }, $data.isEditingEducation ? {
-    bq: common_vendor.o((...args) => $options.cancelEditEducation && $options.cancelEditEducation(...args))
+    bv: common_vendor.o((...args) => $options.cancelEditEducation && $options.cancelEditEducation(...args))
   } : {}, {
   } : {}, {
-    br: $options.showEducationTimeField
+    bw: $options.showEducationTimeField
   }, $options.showEducationTimeField ? common_vendor.e({
   }, $options.showEducationTimeField ? common_vendor.e({
-    bs: common_vendor.t($data.educationForm.startTime || "开始时间"),
-    bt: $data.educationForm.startTime,
-    bv: common_vendor.o((...args) => $options.bindStartTimeChange && $options.bindStartTimeChange(...args)),
-    bw: $data.educationErrors.startTime ? 1 : "",
-    bx: common_vendor.t($data.educationForm.endTime || "结束时间"),
-    by: $data.educationForm.endTime,
-    bz: common_vendor.o((...args) => $options.bindEndTimeChange && $options.bindEndTimeChange(...args)),
-    bA: $data.educationErrors.endTime ? 1 : "",
-    bB: $data.educationErrors.startTime
+    bx: common_vendor.t($data.educationForm.startTime || "开始时间"),
+    by: $data.educationForm.startTime,
+    bz: common_vendor.o((...args) => $options.bindStartTimeChange && $options.bindStartTimeChange(...args)),
+    bA: $data.educationErrors.startTime ? 1 : "",
+    bB: common_vendor.t($data.educationForm.endTime || "结束时间"),
+    bC: $data.educationForm.endTime,
+    bD: common_vendor.o((...args) => $options.bindEndTimeChange && $options.bindEndTimeChange(...args)),
+    bE: $data.educationErrors.endTime ? 1 : "",
+    bF: $data.educationErrors.startTime
   }, $data.educationErrors.startTime ? {
   }, $data.educationErrors.startTime ? {
-    bC: common_vendor.t($data.educationErrors.startTime)
+    bG: common_vendor.t($data.educationErrors.startTime)
   } : {}, {
   } : {}, {
-    bD: $data.educationErrors.endTime
+    bH: $data.educationErrors.endTime
   }, $data.educationErrors.endTime ? {
   }, $data.educationErrors.endTime ? {
-    bE: common_vendor.t($data.educationErrors.endTime)
+    bI: common_vendor.t($data.educationErrors.endTime)
   } : {}) : {}, {
   } : {}) : {}, {
-    bF: $options.showEducationSchoolField
+    bJ: $options.showEducationSchoolField
   }, $options.showEducationSchoolField ? common_vendor.e({
   }, $options.showEducationSchoolField ? common_vendor.e({
-    bG: $data.educationErrors.schoolName ? 1 : "",
-    bH: $data.educationForm.schoolName,
-    bI: common_vendor.o(($event) => $data.educationForm.schoolName = $event.detail.value),
-    bJ: $data.educationErrors.schoolName
+    bK: $data.educationErrors.schoolName ? 1 : "",
+    bL: $data.educationForm.schoolName,
+    bM: common_vendor.o(($event) => $data.educationForm.schoolName = $event.detail.value),
+    bN: $data.educationErrors.schoolName
   }, $data.educationErrors.schoolName ? {
   }, $data.educationErrors.schoolName ? {
-    bK: common_vendor.t($data.educationErrors.schoolName)
+    bO: common_vendor.t($data.educationErrors.schoolName)
   } : {}) : {}, {
   } : {}) : {}, {
-    bL: $options.showEducationMajorField
+    bP: $options.showEducationMajorField
   }, $options.showEducationMajorField ? common_vendor.e({
   }, $options.showEducationMajorField ? common_vendor.e({
-    bM: $data.educationErrors.major ? 1 : "",
-    bN: $data.educationForm.major,
-    bO: common_vendor.o(($event) => $data.educationForm.major = $event.detail.value),
-    bP: $data.educationErrors.major
+    bQ: $data.educationErrors.major ? 1 : "",
+    bR: $data.educationForm.major,
+    bS: common_vendor.o(($event) => $data.educationForm.major = $event.detail.value),
+    bT: $data.educationErrors.major
   }, $data.educationErrors.major ? {
   }, $data.educationErrors.major ? {
-    bQ: common_vendor.t($data.educationErrors.major)
+    bU: common_vendor.t($data.educationErrors.major)
   } : {}) : {}, {
   } : {}) : {}, {
-    bR: $options.showEducationDegreeField
+    bV: $options.showEducationDegreeField
   }, $options.showEducationDegreeField ? common_vendor.e({
   }, $options.showEducationDegreeField ? common_vendor.e({
-    bS: common_vendor.t($data.degreeOptions[$data.degreeIndex] || "请选择学历"),
-    bT: common_vendor.o((...args) => $options.bindDegreeChange && $options.bindDegreeChange(...args)),
-    bU: $data.degreeIndex,
-    bV: $data.degreeOptions,
-    bW: $data.educationErrors.degree ? 1 : "",
-    bX: $data.educationErrors.degree
+    bW: common_vendor.t($data.degreeOptions[$data.degreeIndex] || "请选择学历"),
+    bX: common_vendor.o((...args) => $options.bindDegreeChange && $options.bindDegreeChange(...args)),
+    bY: $data.degreeIndex,
+    bZ: $data.degreeOptions,
+    ca: $data.educationErrors.degree ? 1 : "",
+    cb: $data.educationErrors.degree
   }, $data.educationErrors.degree ? {
   }, $data.educationErrors.degree ? {
-    bY: common_vendor.t($data.educationErrors.degree)
+    cc: common_vendor.t($data.educationErrors.degree)
   } : {}) : {}, {
   } : {}) : {}, {
-    bZ: common_vendor.t($data.isEditingEducation ? "✓" : "+"),
-    ca: common_vendor.o((...args) => $options.saveEducation && $options.saveEducation(...args)),
-    cb: common_vendor.t($data.isEditingEducation ? "保存修改" : "添加学历")
+    cd: common_vendor.t($data.isEditingEducation ? "✓" : "+"),
+    ce: common_vendor.o((...args) => $options.saveEducation && $options.saveEducation(...args)),
+    cf: common_vendor.t($data.isEditingEducation ? "保存修改" : "添加学历")
   }) : {}) : {}, {
   }) : {}) : {}, {
-    cc: $data.currentStep === 6 && ($options.showRequireTrainingInfoField || $options.showRequireProfessionalSkillsField)
+    cg: $data.currentStep === 6 && ($options.showRequireTrainingInfoField || $options.showRequireProfessionalSkillsField)
   }, $data.currentStep === 6 && ($options.showRequireTrainingInfoField || $options.showRequireProfessionalSkillsField) ? common_vendor.e({
   }, $data.currentStep === 6 && ($options.showRequireTrainingInfoField || $options.showRequireProfessionalSkillsField) ? common_vendor.e({
-    cd: $options.showRequireTrainingInfoField
+    ch: $options.showRequireTrainingInfoField
   }, $options.showRequireTrainingInfoField ? {} : {}, {
   }, $options.showRequireTrainingInfoField ? {} : {}, {
-    ce: $options.showRequireTrainingInfoField
+    ci: $options.showRequireTrainingInfoField
   }, $options.showRequireTrainingInfoField ? common_vendor.e({
   }, $options.showRequireTrainingInfoField ? common_vendor.e({
-    cf: $data.formErrors.skills ? 1 : "",
-    cg: $data.formData.skills,
-    ch: common_vendor.o(($event) => $data.formData.skills = $event.detail.value),
-    ci: $data.formErrors.skills
+    cj: $data.formErrors.skills ? 1 : "",
+    ck: $data.formData.skills,
+    cl: common_vendor.o(($event) => $data.formData.skills = $event.detail.value),
+    cm: $data.formErrors.skills
   }, $data.formErrors.skills ? {
   }, $data.formErrors.skills ? {
-    cj: common_vendor.t($data.formErrors.skills)
+    cn: common_vendor.t($data.formErrors.skills)
   } : {}) : {}, {
   } : {}) : {}, {
-    ck: $options.showRequireProfessionalSkillsField
+    co: $options.showRequireProfessionalSkillsField
   }, $options.showRequireProfessionalSkillsField ? {} : {}, {
   }, $options.showRequireProfessionalSkillsField ? {} : {}, {
-    cl: $options.showRequireProfessionalSkillsField
+    cp: $options.showRequireProfessionalSkillsField
   }, $options.showRequireProfessionalSkillsField ? common_vendor.e({
   }, $options.showRequireProfessionalSkillsField ? common_vendor.e({
-    cm: $data.formErrors.training ? 1 : "",
-    cn: $data.formData.training,
-    co: common_vendor.o(($event) => $data.formData.training = $event.detail.value),
-    cp: $data.formErrors.training
+    cq: $data.formErrors.training ? 1 : "",
+    cr: $data.formData.training,
+    cs: common_vendor.o(($event) => $data.formData.training = $event.detail.value),
+    ct: $data.formErrors.training
   }, $data.formErrors.training ? {
   }, $data.formErrors.training ? {
-    cq: common_vendor.t($data.formErrors.training)
+    cv: common_vendor.t($data.formErrors.training)
   } : {}) : {}) : {}, {
   } : {}) : {}) : {}, {
-    cr: $data.currentStep === 8
+    cw: $data.currentStep === 8
   }, $data.currentStep === 8 ? common_vendor.e({
   }, $data.currentStep === 8 ? common_vendor.e({
-    cs: $data.workList.length > 0
+    cx: $data.workList.length > 0
   }, $data.workList.length > 0 ? {
   }, $data.workList.length > 0 ? {
-    ct: common_vendor.f($data.workList, (work, index, i0) => {
+    cy: common_vendor.f($data.workList, (work, index, i0) => {
       return common_vendor.e({
       return common_vendor.e({
         a: common_vendor.t(index + 1),
         a: common_vendor.t(index + 1),
         b: common_vendor.o(($event) => $options.editWork(index), index),
         b: common_vendor.o(($event) => $options.editWork(index), index),
@@ -1808,106 +1915,108 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         m: index
         m: index
       });
       });
     }),
     }),
-    cv: $options.showWorkTimeField,
-    cw: $options.showWorkCompanyField,
-    cx: $options.showWorkDepartmentField,
-    cy: $options.showWorkEmployeeCountField,
-    cz: $options.showWorkPositionField
+    cz: $options.showWorkTimeField,
+    cA: $options.showWorkCompanyField,
+    cB: $options.showWorkDepartmentField,
+    cC: $options.showWorkEmployeeCountField,
+    cD: $options.showWorkPositionField
   } : {}, {
   } : {}, {
-    cA: $data.workList.length < 2 || $data.isEditingWork
+    cE: $data.workList.length < 2 || $data.isEditingWork
   }, $data.workList.length < 2 || $data.isEditingWork ? common_vendor.e({
   }, $data.workList.length < 2 || $data.isEditingWork ? common_vendor.e({
-    cB: common_vendor.t($data.isEditingWork ? "编辑工作经历" : "添加工作经历"),
-    cC: $data.isEditingWork
+    cF: common_vendor.t($data.isEditingWork ? "编辑工作经历" : "添加工作经历"),
+    cG: $data.isEditingWork
   }, $data.isEditingWork ? {
   }, $data.isEditingWork ? {
-    cD: common_vendor.o((...args) => $options.cancelEditWork && $options.cancelEditWork(...args))
+    cH: common_vendor.o((...args) => $options.cancelEditWork && $options.cancelEditWork(...args))
   } : {}, {
   } : {}, {
-    cE: $options.showWorkTimeField
+    cI: $options.showWorkTimeField
   }, $options.showWorkTimeField ? common_vendor.e({
   }, $options.showWorkTimeField ? common_vendor.e({
-    cF: common_vendor.t($data.workForm.startTime || "开始时间"),
-    cG: $data.workForm.startTime,
-    cH: common_vendor.o((...args) => $options.bindWorkStartTimeChange && $options.bindWorkStartTimeChange(...args)),
-    cI: $data.workErrors.startTime ? 1 : "",
-    cJ: common_vendor.t($data.workForm.endTime || "结束时间"),
-    cK: $data.workForm.endTime,
-    cL: common_vendor.o((...args) => $options.bindWorkEndTimeChange && $options.bindWorkEndTimeChange(...args)),
-    cM: $data.workErrors.endTime ? 1 : "",
-    cN: $data.workErrors.startTime
+    cJ: common_vendor.t($data.workForm.startTime || "开始时间"),
+    cK: $data.workForm.startTime,
+    cL: common_vendor.o((...args) => $options.bindWorkStartTimeChange && $options.bindWorkStartTimeChange(...args)),
+    cM: $data.workErrors.startTime ? 1 : "",
+    cN: common_vendor.t($data.workForm.endTime || "结束时间"),
+    cO: $data.workForm.endTime,
+    cP: common_vendor.o((...args) => $options.bindWorkEndTimeChange && $options.bindWorkEndTimeChange(...args)),
+    cQ: $data.workErrors.endTime ? 1 : "",
+    cR: $data.workErrors.startTime
   }, $data.workErrors.startTime ? {
   }, $data.workErrors.startTime ? {
-    cO: common_vendor.t($data.workErrors.startTime)
+    cS: common_vendor.t($data.workErrors.startTime)
   } : {}, {
   } : {}, {
-    cP: $data.workErrors.endTime
+    cT: $data.workErrors.endTime
   }, $data.workErrors.endTime ? {
   }, $data.workErrors.endTime ? {
-    cQ: common_vendor.t($data.workErrors.endTime)
+    cU: common_vendor.t($data.workErrors.endTime)
   } : {}) : {}, {
   } : {}) : {}, {
-    cR: $options.showWorkCompanyField
+    cV: $options.showWorkCompanyField
   }, $options.showWorkCompanyField ? common_vendor.e({
   }, $options.showWorkCompanyField ? common_vendor.e({
-    cS: $data.workErrors.companyName ? 1 : "",
-    cT: $data.workForm.companyName,
-    cU: common_vendor.o(($event) => $data.workForm.companyName = $event.detail.value),
-    cV: $data.workErrors.companyName
+    cW: $data.workErrors.companyName ? 1 : "",
+    cX: $data.workForm.companyName,
+    cY: common_vendor.o(($event) => $data.workForm.companyName = $event.detail.value),
+    cZ: $data.workErrors.companyName
   }, $data.workErrors.companyName ? {
   }, $data.workErrors.companyName ? {
-    cW: common_vendor.t($data.workErrors.companyName)
+    da: common_vendor.t($data.workErrors.companyName)
   } : {}) : {}, {
   } : {}) : {}, {
-    cX: $options.showWorkEmployeeCountField
+    db: $options.showWorkEmployeeCountField
   }, $options.showWorkEmployeeCountField ? common_vendor.e({
   }, $options.showWorkEmployeeCountField ? common_vendor.e({
-    cY: $data.workErrors.employeeCount ? 1 : "",
-    cZ: $data.workForm.employeeCount,
-    da: common_vendor.o(($event) => $data.workForm.employeeCount = $event.detail.value),
-    db: $data.workErrors.employeeCount
+    dc: $data.workErrors.employeeCount ? 1 : "",
+    dd: common_vendor.o((...args) => $options.validateEmployeeCount && $options.validateEmployeeCount(...args)),
+    de: $data.workForm.employeeCount,
+    df: common_vendor.o(($event) => $data.workForm.employeeCount = $event.detail.value),
+    dg: $data.workErrors.employeeCount
   }, $data.workErrors.employeeCount ? {
   }, $data.workErrors.employeeCount ? {
-    dc: common_vendor.t($data.workErrors.employeeCount)
+    dh: common_vendor.t($data.workErrors.employeeCount)
   } : {}) : {}, {
   } : {}) : {}, {
-    dd: $options.showWorkDepartmentField
+    di: $options.showWorkDepartmentField
   }, $options.showWorkDepartmentField ? common_vendor.e({
   }, $options.showWorkDepartmentField ? common_vendor.e({
-    de: $data.workErrors.department ? 1 : "",
-    df: $data.workForm.department,
-    dg: common_vendor.o(($event) => $data.workForm.department = $event.detail.value),
-    dh: $data.workErrors.department
+    dj: $data.workErrors.department ? 1 : "",
+    dk: $data.workForm.department,
+    dl: common_vendor.o(($event) => $data.workForm.department = $event.detail.value),
+    dm: $data.workErrors.department
   }, $data.workErrors.department ? {
   }, $data.workErrors.department ? {
-    di: common_vendor.t($data.workErrors.department)
+    dn: common_vendor.t($data.workErrors.department)
   } : {}) : {}, {
   } : {}) : {}, {
-    dj: $options.showWorkPositionField
+    dp: $options.showWorkPositionField
   }, $options.showWorkPositionField ? common_vendor.e({
   }, $options.showWorkPositionField ? common_vendor.e({
-    dk: $data.workErrors.position ? 1 : "",
-    dl: $data.workForm.position,
-    dm: common_vendor.o(($event) => $data.workForm.position = $event.detail.value),
-    dn: $data.workErrors.position
+    dq: $data.workErrors.position ? 1 : "",
+    dr: $data.workForm.position,
+    ds: common_vendor.o(($event) => $data.workForm.position = $event.detail.value),
+    dt: $data.workErrors.position
   }, $data.workErrors.position ? {
   }, $data.workErrors.position ? {
-    dp: common_vendor.t($data.workErrors.position)
+    dv: common_vendor.t($data.workErrors.position)
   } : {}) : {}, {
   } : {}) : {}, {
-    dq: $data.workForm.monthlySalary,
-    dr: common_vendor.o(($event) => $data.workForm.monthlySalary = $event.detail.value),
-    ds: $data.workErrors.monthlySalary
+    dw: $data.workErrors.monthlySalary ? 1 : "",
+    dx: common_vendor.o([($event) => $data.workForm.monthlySalary = $event.detail.value, (...args) => $options.validateMonthlySalary && $options.validateMonthlySalary(...args)]),
+    dy: $data.workForm.monthlySalary,
+    dz: $data.workErrors.monthlySalary
   }, $data.workErrors.monthlySalary ? {
   }, $data.workErrors.monthlySalary ? {
-    dt: common_vendor.t($data.workErrors.monthlySalary)
+    dA: common_vendor.t($data.workErrors.monthlySalary)
   } : {}, {
   } : {}, {
-    dv: $data.workForm.supervisor,
-    dw: common_vendor.o(($event) => $data.workForm.supervisor = $event.detail.value),
-    dx: $data.workErrors.supervisor
+    dB: $data.workForm.supervisor,
+    dC: common_vendor.o(($event) => $data.workForm.supervisor = $event.detail.value),
+    dD: $data.workErrors.supervisor
   }, $data.workErrors.supervisor ? {
   }, $data.workErrors.supervisor ? {
-    dy: common_vendor.t($data.workErrors.supervisor)
+    dE: common_vendor.t($data.workErrors.supervisor)
   } : {}, {
   } : {}, {
-    dz: $data.workForm.supervisorPhone,
-    dA: common_vendor.o(($event) => $data.workForm.supervisorPhone = $event.detail.value),
-    dB: $data.workErrors.supervisorPhone
+    dF: $data.workForm.supervisorPhone,
+    dG: common_vendor.o(($event) => $data.workForm.supervisorPhone = $event.detail.value),
+    dH: $data.workErrors.supervisorPhone
   }, $data.workErrors.supervisorPhone ? {
   }, $data.workErrors.supervisorPhone ? {
-    dC: common_vendor.t($data.workErrors.supervisorPhone)
+    dI: common_vendor.t($data.workErrors.supervisorPhone)
   } : {}, {
   } : {}, {
-    dD: common_vendor.t($data.isEditingWork ? "✓" : "+"),
-    dE: common_vendor.o((...args) => $options.saveWork && $options.saveWork(...args)),
-    dF: common_vendor.t($data.isEditingWork ? "保存修改" : "添加工作经历")
+    dJ: common_vendor.t($data.isEditingWork ? "✓" : "+"),
+    dK: common_vendor.o((...args) => $options.saveWork && $options.saveWork(...args)),
+    dL: common_vendor.t($data.isEditingWork ? "保存修改" : "添加工作经历")
   }) : {}) : {}, {
   }) : {}) : {}, {
-    dG: $options.showPrevButton
+    dM: $options.showPrevButton
   }, $options.showPrevButton ? {
   }, $options.showPrevButton ? {
-    dH: common_vendor.o((...args) => $options.prevStep && $options.prevStep(...args))
+    dN: common_vendor.o((...args) => $options.prevStep && $options.prevStep(...args))
   } : {}, {
   } : {}, {
-    dI: $options.showNextButton
+    dO: $options.showNextButton
   }, $options.showNextButton ? {
   }, $options.showNextButton ? {
-    dJ: common_vendor.o((...args) => $options.nextStep && $options.nextStep(...args))
+    dP: common_vendor.o((...args) => $options.nextStep && $options.nextStep(...args))
   } : {}, {
   } : {}, {
-    dK: $options.showSubmitButton
+    dQ: $options.showSubmitButton
   }, $options.showSubmitButton ? {
   }, $options.showSubmitButton ? {
-    dL: common_vendor.o((...args) => $options.submitForm && $options.submitForm(...args))
+    dR: common_vendor.o((...args) => $options.submitForm && $options.submitForm(...args))
   } : {});
   } : {});
 }
 }
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);

文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/Personal/Personal.wxml


+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/camera/camera.js

@@ -199,7 +199,7 @@ const _sfc_main = {
             }
             }
           });
           });
         }
         }
-      }, 3e3);
+      }, 5e3);
     },
     },
     cleanupPersonDetectionWebSocket() {
     cleanupPersonDetectionWebSocket() {
       if (this.personDetectionInterval) {
       if (this.personDetectionInterval) {

+ 64 - 3
unpackage/dist/dev/mp-weixin/pages/identity-verify/identity-verify.js

@@ -223,8 +223,12 @@ const _sfc_main = {
       // 当前主问题的索引
       // 当前主问题的索引
       isVideoSwitching: false,
       isVideoSwitching: false,
       // 添加视频切换状态锁
       // 添加视频切换状态锁
-      originalQuestionSubtitle: null
+      originalQuestionSubtitle: null,
       // 保存原始字幕信息
       // 保存原始字幕信息
+      isThinking: false,
+      // 面试官思考中状态
+      thinkingTimer: null
+      // 思考计时器
     };
     };
   },
   },
   mounted() {
   mounted() {
@@ -368,11 +372,12 @@ const _sfc_main = {
       this.handleAudioEnd();
       this.handleAudioEnd();
     },
     },
     // 调用面试互动接口
     // 调用面试互动接口
-    async callInterviewInteraction(questionId) {
+    async callInterviewInteraction(questionId, retryCount = 0, maxRetries = 3) {
       const userInfo = JSON.parse(common_vendor.index.getStorageSync("userInfo"));
       const userInfo = JSON.parse(common_vendor.index.getStorageSync("userInfo"));
       const appId = common_vendor.index.getStorageSync("appId");
       const appId = common_vendor.index.getStorageSync("appId");
       const positionConfigId = JSON.parse(common_vendor.index.getStorageSync("configData")).id;
       const positionConfigId = JSON.parse(common_vendor.index.getStorageSync("configData")).id;
       try {
       try {
+        this.showThinkingLoading();
         console.log("开始调用面试互动接口", { questionId, appId });
         console.log("开始调用面试互动接口", { questionId, appId });
         const res = await common_vendor.index.request({
         const res = await common_vendor.index.request({
           url: `${common_config.apiBaseUrl}/api/voice_interview_interaction/`,
           url: `${common_config.apiBaseUrl}/api/voice_interview_interaction/`,
@@ -388,13 +393,34 @@ const _sfc_main = {
           }
           }
         });
         });
         console.log("面试互动接口返回数据:", res);
         console.log("面试互动接口返回数据:", res);
+        if (res.statusCode === 400) {
+          if (retryCount < maxRetries) {
+            console.log(`视频转写未完成,${retryCount + 1}次重试中...`);
+            await new Promise((resolve) => setTimeout(resolve, 3e3));
+            return this.callInterviewInteraction(questionId, retryCount + 1, maxRetries);
+          } else {
+            console.log("达到最大重试次数,视频转写仍未完成");
+            common_vendor.index.showToast({
+              title: "视频转写处理中,请稍后再试",
+              icon: "none",
+              duration: 2e3
+            });
+            return false;
+          }
+        }
         if (res.data.success) {
         if (res.data.success) {
           await this.handleFollowUpQuestion(res.data);
           await this.handleFollowUpQuestion(res.data);
+          this.hideThinkingLoading();
+          return true;
         } else {
         } else {
           console.error("面试互动接口返回错误:", res.data);
           console.error("面试互动接口返回错误:", res.data);
+          this.hideThinkingLoading();
+          return false;
         }
         }
       } catch (error) {
       } catch (error) {
         console.error("调用面试互动接口失败:", error);
         console.error("调用面试互动接口失败:", error);
+        this.hideThinkingLoading();
+        return false;
       }
       }
     },
     },
     // 播放追问音频
     // 播放追问音频
@@ -599,6 +625,11 @@ const _sfc_main = {
       this.assistantResponse = "";
       this.assistantResponse = "";
       this.audioTranscript = "";
       this.audioTranscript = "";
       this.processedResponses = [];
       this.processedResponses = [];
+      common_vendor.index.showLoading({
+        title: "面试官思考中...",
+        mask: true
+        // 添加遮罩,防止用户触摸界面
+      });
       try {
       try {
         const requestTask = common_vendor.index.request({
         const requestTask = common_vendor.index.request({
           url: "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
           url: "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
@@ -648,14 +679,24 @@ const _sfc_main = {
           },
           },
           fail: (err) => {
           fail: (err) => {
             console.error("请求失败:", err);
             console.error("请求失败:", err);
+            common_vendor.index.showToast({
+              title: "请求失败,请重试",
+              icon: "none"
+            });
           },
           },
           complete: () => {
           complete: () => {
             this.loading = false;
             this.loading = false;
+            common_vendor.index.hideLoading();
           }
           }
         });
         });
       } catch (error) {
       } catch (error) {
         console.error("获取数据失败:", error);
         console.error("获取数据失败:", error);
         this.loading = false;
         this.loading = false;
+        common_vendor.index.hideLoading();
+        common_vendor.index.showToast({
+          title: "系统错误,请重试",
+          icon: "none"
+        });
       }
       }
     },
     },
     handleStreamResponse(data) {
     handleStreamResponse(data) {
@@ -1470,6 +1511,7 @@ const _sfc_main = {
           isFollowUp: true
           isFollowUp: true
         });
         });
       } else {
       } else {
+        this.showThinkingLoading();
         const currentQuestion = this.getCurrentQuestionByIndex(this.currentVideoIndex);
         const currentQuestion = this.getCurrentQuestionByIndex(this.currentVideoIndex);
         if (currentQuestion && currentQuestion.id) {
         if (currentQuestion && currentQuestion.id) {
           questionId = currentQuestion.id;
           questionId = currentQuestion.id;
@@ -1521,6 +1563,7 @@ const _sfc_main = {
     },
     },
     // 添加新方法:处理上传后的逻辑
     // 添加新方法:处理上传后的逻辑
     handlePostUploadActions(task) {
     handlePostUploadActions(task) {
+      this.hideThinkingLoading();
       if (this.needPlayLowScoreVideo && this.retryCount < 1) {
       if (this.needPlayLowScoreVideo && this.retryCount < 1) {
         this.playLowScoreVideo();
         this.playLowScoreVideo();
         this.needPlayLowScoreVideo = false;
         this.needPlayLowScoreVideo = false;
@@ -1543,6 +1586,7 @@ const _sfc_main = {
       if (this.uploadQueue.length === 0) {
       if (this.uploadQueue.length === 0) {
         this.isUploading = false;
         this.isUploading = false;
         this.showUploadStatus = false;
         this.showUploadStatus = false;
+        this.hideThinkingLoading();
         return;
         return;
       }
       }
       this.isUploading = true;
       this.isUploading = true;
@@ -2894,7 +2938,7 @@ const _sfc_main = {
         } catch (mainError) {
         } catch (mainError) {
           console.error("人脸检测:主流程执行出错:", mainError);
           console.error("人脸检测:主流程执行出错:", mainError);
         }
         }
-      }, 3e3);
+      }, 5e3);
     },
     },
     cleanupPersonDetectionWebSocket() {
     cleanupPersonDetectionWebSocket() {
       if (this.personDetectionInterval) {
       if (this.personDetectionInterval) {
@@ -3090,6 +3134,23 @@ const _sfc_main = {
           }
           }
         });
         });
       }
       }
+    },
+    // 显示面试官思考中loading
+    showThinkingLoading() {
+      this.isThinking = true;
+      common_vendor.index.showLoading({
+        title: "面试官正在思考中",
+        mask: false
+      });
+    },
+    // 隐藏面试官思考中loading
+    hideThinkingLoading() {
+      this.isThinking = false;
+      common_vendor.index.hideLoading();
+      if (this.thinkingTimer) {
+        clearTimeout(this.thinkingTimer);
+        this.thinkingTimer = null;
+      }
     }
     }
   },
   },
   computed: {
   computed: {

+ 10 - 1
unpackage/dist/dev/mp-weixin/pages/interview/interview.js

@@ -68,6 +68,9 @@ const _sfc_main = {
   },
   },
   computed: {
   computed: {
     canGoNext() {
     canGoNext() {
+      if (this.currentStep === 5) {
+        return this.photos.every((photo) => photo !== null);
+      }
       return this.photos[this.currentStep] !== null;
       return this.photos[this.currentStep] !== null;
     }
     }
   },
   },
@@ -95,6 +98,8 @@ const _sfc_main = {
   },
   },
   methods: {
   methods: {
     takePhoto() {
     takePhoto() {
+      this.$set(this.photos, this.currentStep, null);
+      this.$set(this.photoLinks, this.currentStep, null);
       if (this.isH5) {
       if (this.isH5) {
         this.startCamera();
         this.startCamera();
       } else {
       } else {
@@ -247,7 +252,7 @@ const _sfc_main = {
     },
     },
     nextStep() {
     nextStep() {
       if (this.currentStep < 5) {
       if (this.currentStep < 5) {
-        this.currentStep++;
+        return;
       } else if (this.currentStep === 5 && this.photos[5]) {
       } else if (this.currentStep === 5 && this.photos[5]) {
         this.submitAllPhotos();
         this.submitAllPhotos();
       }
       }
@@ -376,6 +381,8 @@ const _sfc_main = {
           success: (res) => {
           success: (res) => {
             console.log("拍照成功:", res);
             console.log("拍照成功:", res);
             common_vendor.index.hideLoading();
             common_vendor.index.hideLoading();
+            this.$set(this.photos, this.currentStep, null);
+            this.$set(this.photoLinks, this.currentStep, null);
             this.$set(this.photos, this.currentStep, res.tempImagePath);
             this.$set(this.photos, this.currentStep, res.tempImagePath);
             this.uploadPhoto(res.tempImagePath, this.photoTypes[this.currentStep]);
             this.uploadPhoto(res.tempImagePath, this.photoTypes[this.currentStep]);
             this.showCamera = false;
             this.showCamera = false;
@@ -454,6 +461,8 @@ const _sfc_main = {
         this.stopMediaStream();
         this.stopMediaStream();
       }
       }
       this.showCamera = false;
       this.showCamera = false;
+      this.$set(this.photos, this.currentStep, null);
+      this.$set(this.photoLinks, this.currentStep, null);
     },
     },
     // 停止摄像头流
     // 停止摄像头流
     stopMediaStream() {
     stopMediaStream() {

+ 161 - 8
unpackage/dist/dev/mp-weixin/pages/job-detail/job-detail.js

@@ -20,7 +20,12 @@ const _sfc_main = {
         ]
         ]
       },
       },
       selectedJobId: null,
       selectedJobId: null,
-      jobId: null
+      jobId: null,
+      mapInfo: {
+        latitude: 0,
+        longitude: 0,
+        markers: []
+      }
     };
     };
   },
   },
   onLoad(options) {
   onLoad(options) {
@@ -83,6 +88,7 @@ const _sfc_main = {
               }
               }
             ]
             ]
           };
           };
+          this.updateMapLocation(data.data.location);
         } else {
         } else {
           common_vendor.index.showToast({
           common_vendor.index.showToast({
             title: "获取职位详情失败",
             title: "获取职位详情失败",
@@ -108,6 +114,46 @@ const _sfc_main = {
       }
       }
       return true;
       return true;
     },
     },
+    // 获取当前职位配置
+    getConfig() {
+      common_vendor.index.request({
+        url: `${common_config.apiBaseUrl}/api/job/config/position/${this.selectedJobId}`,
+        method: "GET",
+        data: {
+          openid: JSON.parse(common_vendor.index.getStorageSync("userInfo")).openid
+        },
+        header: {
+          "content-type": "application/x-www-form-urlencoded"
+        },
+        success: (res) => {
+          console.log(res);
+          if (res.statusCode === 200) {
+            if (res.data.code === 2e3) {
+              common_vendor.index.setStorageSync("configData", JSON.stringify(res.data.data));
+              common_vendor.index.navigateTo({
+                url: "/pages/Personal/Personal",
+                fail: (err) => {
+                  console.error("页面跳转失败:", err);
+                  common_vendor.index.showToast({
+                    title: "页面跳转失败",
+                    icon: "none"
+                  });
+                }
+              });
+            }
+          } else {
+            common_vendor.index.hideLoading();
+          }
+        },
+        fail: (err) => {
+          common_vendor.index.hideLoading();
+          common_vendor.index.showToast({
+            title: "网络错误,请稍后重试",
+            icon: "none"
+          });
+        }
+      });
+    },
     async startInterview() {
     async startInterview() {
       if (!this.checkLogin()) {
       if (!this.checkLogin()) {
         return;
         return;
@@ -128,6 +174,7 @@ const _sfc_main = {
           } catch (e) {
           } catch (e) {
             console.error("更新用户信息失败:", e);
             console.error("更新用户信息失败:", e);
           }
           }
+          this.getConfig();
           common_vendor.index.navigateTo({
           common_vendor.index.navigateTo({
             url: "/pages/Personal/Personal",
             url: "/pages/Personal/Personal",
             fail: (err) => {
             fail: (err) => {
@@ -146,6 +193,103 @@ const _sfc_main = {
           icon: "none"
           icon: "none"
         });
         });
       }
       }
+    },
+    hasHtmlTags(text) {
+      const htmlRegex = /<[^>]*>/;
+      return htmlRegex.test(text);
+    },
+    formatLocation(location) {
+      if (!location)
+        return "";
+      if (typeof location === "string" && location.startsWith("[")) {
+        try {
+          const locationArray = JSON.parse(location.replace(/'/g, '"'));
+          return locationArray.join(" ");
+        } catch (e) {
+          console.error("解析location失败:", e);
+          return location;
+        }
+      }
+      if (Array.isArray(location)) {
+        return location.join(" ");
+      }
+      if (typeof location === "object" && location !== null) {
+        const { province, city, district } = location;
+        if (province && city) {
+          return province + " " + city + (district ? " " + district : "");
+        }
+      }
+      return location;
+    },
+    // 更新地图位置信息
+    async updateMapLocation(location) {
+      try {
+        let addressStr = "";
+        if (typeof location === "string" && location.startsWith("[")) {
+          try {
+            const locationArray = JSON.parse(location.replace(/'/g, '"'));
+            addressStr = locationArray.join("");
+          } catch (e) {
+            addressStr = location;
+          }
+        } else if (Array.isArray(location)) {
+          addressStr = location.join("");
+        } else if (typeof location === "object" && location !== null) {
+          const { province, city, district } = location;
+          addressStr = `${province || ""}${city || ""}${district || ""}`;
+        } else {
+          addressStr = location;
+        }
+        common_vendor.index.request({
+          url: `https://apis.map.qq.com/ws/geocoder/v1/?address=${encodeURIComponent(addressStr)}&key=WJLBZ-SMQYZ-3RNX5-7J4LI-XTZD6-7IBZR`,
+          // 需要替换为实际的地图Key
+          success: (res) => {
+            if (res.data.status === 0) {
+              const { lat, lng } = res.data.result.location;
+              this.mapInfo.latitude = lat;
+              this.mapInfo.longitude = lng;
+              this.mapInfo.markers = [{
+                id: 1,
+                latitude: lat,
+                longitude: lng,
+                title: addressStr
+              }];
+            } else {
+              console.error("地址解析失败:", res);
+            }
+          },
+          fail: (err) => {
+            console.error("地址解析请求失败:", err);
+          }
+        });
+      } catch (error) {
+        console.error("更新地图位置失败:", error);
+      }
+    },
+    openLocation() {
+      if (this.mapInfo.latitude && this.mapInfo.longitude) {
+        common_vendor.index.openLocation({
+          latitude: this.mapInfo.latitude,
+          longitude: this.mapInfo.longitude,
+          name: this.jobDetail.title,
+          address: this.formatLocation(this.jobDetail.location),
+          success: function() {
+            console.log("导航打开成功");
+          },
+          fail: function(err) {
+            console.error("导航打开失败:", err);
+            common_vendor.index.showToast({
+              title: "导航打开失败",
+              icon: "none"
+            });
+          }
+        });
+      } else {
+        common_vendor.index.showToast({
+          title: "暂无位置信息",
+          icon: "none"
+        });
+      }
     }
     }
   }
   }
 };
 };
@@ -154,15 +298,24 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
     a: common_vendor.t($data.jobDetail.title),
     a: common_vendor.t($data.jobDetail.title),
     b: common_vendor.t($data.jobDetail.salary),
     b: common_vendor.t($data.jobDetail.salary),
     c: common_vendor.t($data.jobDetail.department),
     c: common_vendor.t($data.jobDetail.department),
-    d: common_vendor.t($data.jobDetail.location),
+    d: common_vendor.t($options.formatLocation($data.jobDetail.location)),
     e: common_vendor.t($data.jobDetail.experience),
     e: common_vendor.t($data.jobDetail.experience),
-    f: common_vendor.f($data.jobDetail.description[0].items, (item, index, i0) => {
-      return {
-        a: common_vendor.t(item),
-        b: index
-      };
+    f: $data.mapInfo.latitude,
+    g: $data.mapInfo.longitude,
+    h: $data.mapInfo.markers,
+    i: common_vendor.o((...args) => $options.openLocation && $options.openLocation(...args)),
+    j: common_vendor.f($data.jobDetail.description[0].items, (item, index, i0) => {
+      return common_vendor.e({
+        a: $options.hasHtmlTags(item)
+      }, $options.hasHtmlTags(item) ? {
+        b: item
+      } : {
+        c: common_vendor.t(item)
+      }, {
+        d: index
+      });
     }),
     }),
-    g: common_vendor.o((...args) => $options.startInterview && $options.startInterview(...args))
+    k: common_vendor.o((...args) => $options.startInterview && $options.startInterview(...args))
   };
   };
 }
 }
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2bde8e2a"]]);
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2bde8e2a"]]);

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/job-detail/job-detail.wxml

@@ -1 +1 @@
-<view class="job-detail-container data-v-2bde8e2a"><view class="job-header data-v-2bde8e2a"><view class="job-title data-v-2bde8e2a">{{a}}</view><view class="job-salary data-v-2bde8e2a">{{b}}</view><view class="job-department data-v-2bde8e2a">{{c}}</view><view class="job-requirements data-v-2bde8e2a"><view class="requirement-item data-v-2bde8e2a"><view class="dot data-v-2bde8e2a"></view><text class="data-v-2bde8e2a">{{d}}</text></view><view class="requirement-item data-v-2bde8e2a"><view class="time-icon data-v-2bde8e2a"></view><text class="data-v-2bde8e2a">{{e}}</text></view></view></view><view class="section data-v-2bde8e2a"><view class="section-title data-v-2bde8e2a">工作地点</view><view class="map-container data-v-2bde8e2a"><image class="map-image data-v-2bde8e2a" src="https://data.qicai321.com/minlong/6be6ec51-d4a2-4f2b-9bfc-23e046a3db37.png" mode="aspectFill"></image><view class="refresh-icon data-v-2bde8e2a"><text class="iconfont icon-refresh data-v-2bde8e2a"></text></view></view></view><view class="section data-v-2bde8e2a"><view class="section-title data-v-2bde8e2a">岗位介绍</view><view class="job-description data-v-2bde8e2a"><view class="description-content data-v-2bde8e2a"><view wx:for="{{f}}" wx:for-item="item" wx:key="b" class="description-item data-v-2bde8e2a"><view class="blue-dot data-v-2bde8e2a"></view><text class="data-v-2bde8e2a" style="color:#333">{{item.a}}</text></view></view></view></view><view class="interview-button data-v-2bde8e2a" bindtap="{{g}}"><text class="data-v-2bde8e2a">开始面试</text></view></view>
+<view class="job-detail-container data-v-2bde8e2a"><view class="job-header data-v-2bde8e2a"><view class="job-title data-v-2bde8e2a">{{a}}</view><view class="job-salary data-v-2bde8e2a">{{b}}</view><view class="job-department data-v-2bde8e2a">{{c}}</view><view class="job-requirements data-v-2bde8e2a"><view class="requirement-item data-v-2bde8e2a"><view class="dot data-v-2bde8e2a"></view><text class="data-v-2bde8e2a">{{d}}</text></view><view class="requirement-item data-v-2bde8e2a"><view class="time-icon data-v-2bde8e2a"></view><text class="data-v-2bde8e2a">{{e}}</text></view></view></view><view class="section data-v-2bde8e2a"><view class="section-title data-v-2bde8e2a">工作地点</view><view class="map-container data-v-2bde8e2a"><map id="jobLocationMap" class="map data-v-2bde8e2a" latitude="{{f}}" longitude="{{g}}" markers="{{h}}" scale="{{16}}" bindtap="{{i}}"></map></view></view><view class="section data-v-2bde8e2a"><view class="section-title data-v-2bde8e2a">岗位介绍</view><view class="job-description data-v-2bde8e2a"><view class="description-content data-v-2bde8e2a"><view wx:for="{{j}}" wx:for-item="item" wx:key="d" class="description-item data-v-2bde8e2a"><view class="blue-dot data-v-2bde8e2a"></view><block wx:if="{{item.a}}"><view class="description-text data-v-2bde8e2a"><rich-text class="data-v-2bde8e2a" nodes="{{item.b}}"/></view></block><block wx:else><text class="data-v-2bde8e2a" style="color:#333">{{item.c}}</text></block></view></view></view></view><view class="interview-button data-v-2bde8e2a" bindtap="{{k}}"><text class="data-v-2bde8e2a">开始面试</text></view></view>

+ 19 - 15
unpackage/dist/dev/mp-weixin/pages/job-detail/job-detail.wxss

@@ -96,12 +96,12 @@
   border-radius: 16rpx;
   border-radius: 16rpx;
   overflow: hidden;
   overflow: hidden;
 }
 }
-.map-image.data-v-2bde8e2a {
+.map.data-v-2bde8e2a {
   width: 100%;
   width: 100%;
-  height: 300rpx;
+  height: 500rpx;
   border-radius: 16rpx;
   border-radius: 16rpx;
 }
 }
-.map-time.data-v-2bde8e2a {
+.location-text.data-v-2bde8e2a {
   position: absolute;
   position: absolute;
   left: 20rpx;
   left: 20rpx;
   bottom: 20rpx;
   bottom: 20rpx;
@@ -111,18 +111,6 @@
   padding: 6rpx 12rpx;
   padding: 6rpx 12rpx;
   border-radius: 6rpx;
   border-radius: 6rpx;
 }
 }
-.refresh-icon.data-v-2bde8e2a {
-  position: absolute;
-  right: 20rpx;
-  bottom: 20rpx;
-  width: 60rpx;
-  height: 60rpx;
-  background-color: #fff;
-  border-radius: 50%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
 .benefits-list.data-v-2bde8e2a {
 .benefits-list.data-v-2bde8e2a {
   display: flex;
   display: flex;
   flex-wrap: wrap;
   flex-wrap: wrap;
@@ -183,4 +171,20 @@
   font-size: 32rpx;
   font-size: 32rpx;
   border-top-left-radius: 16rpx;
   border-top-left-radius: 16rpx;
   border-bottom-left-radius: 16rpx;
   border-bottom-left-radius: 16rpx;
+}
+.description-text.data-v-2bde8e2a {
+  font-size: 26rpx;
+  color: #333;
+  line-height: 1.6;
+  flex: 1;
+}
+.description-text.data-v-2bde8e2a p {
+  margin: 0;
+}
+.description-text.data-v-2bde8e2a a {
+  color: #0039b3;
+  text-decoration: none;
+}
+.description-text.data-v-2bde8e2a strong {
+  font-weight: bold;
 }
 }

+ 1 - 1
unpackage/dist/dev/mp-weixin/project.config.json

@@ -8,7 +8,7 @@
     "urlCheck": false,
     "urlCheck": false,
     "es6": true,
     "es6": true,
     "postcss": false,
     "postcss": false,
-    "minified": true,
+    "minified": false,
     "newFeature": true,
     "newFeature": true,
     "bigPackageSizeSupport": true,
     "bigPackageSizeSupport": true,
     "babelSetting": {
     "babelSetting": {

部分文件因为文件数量过多而无法显示