Browse Source

修改内容

yangg 9 hours ago
parent
commit
6705c6c38d

+ 4 - 4
pages.json

@@ -28,8 +28,8 @@
 		{
 			"path": "pages/identity-verify/identity-verify",
 			"style": {
-				"navigationBarTitleText": ""
-				
+				"navigationBarTitleText": "",
+				"navigationStyle": "custom"
 			}
 		},
 		{
@@ -41,8 +41,8 @@
 		{
 			"path": "pages/camera/camera",
 			"style": {
-				"navigationBarTitleText": "测试"
-				
+				"navigationBarTitleText": "",
+				"navigationStyle": "custom"
 			}
 		},
 		{

+ 60 - 29
pages/Personal/Personal.vue

@@ -68,17 +68,26 @@
 						<text v-if="formErrors.gender" class="error-message">{{formErrors.gender}}</text>
 					</view>
 					<!-- 当性别为女时显示三期选择 -->
-					<view class="form-item" v-if="formData.gender === '女'">
-						<text class="label required">是否为三期</text>
-						<picker @change="bindThreePeriodChange" :value="threePeriodIndex" :range="threePeriodOptions" :class="{'input-error': formErrors.threePeriod}">
-							<view class="picker-text">{{ threePeriodOptions[threePeriodIndex] || '请选择' }}</view>
-						</picker>
-						<text v-if="formErrors.threePeriod" class="error-message">{{formErrors.threePeriod}}</text>
-					</view>
+					<view class="form-row" v-if="formData.gender === '女'">
+						<view class="form-item" >
+							<text class="label required">是否为三期</text>
+							<picker @change="bindThreePeriodChange" :value="threePeriodIndex" :range="threePeriodOptions" :class="{'input-error': formErrors.threePeriod}">
+								<view class="picker-text">{{ threePeriodOptions[threePeriodIndex] || '请选择' }}</view>
+							</picker>
+							<text v-if="formErrors.threePeriod" class="error-message">{{formErrors.threePeriod}}</text>
+						</view>
+					</view>	
 					<view class="form-row">
 					<view class="form-item" v-if="showPhoneField">
 						<text class="label required">手机号</text>
-						<input type="number" v-model="formData.phone" placeholder="请输入手机号" :class="{'input-error': formErrors.phone}" />
+						<input 
+							type="number" 
+							v-model="formData.phone" 
+							placeholder="请输入手机号" 
+							:class="{'input-error': formErrors.phone}"
+							maxlength="11"
+							@input="validatePhone"
+						/>
 						<text v-if="formErrors.phone" class="error-message">{{formErrors.phone}}</text>
 					</view>
 				</view>
@@ -249,6 +258,8 @@
 								type="number" 
 								v-model="familyMemberForm.phone" 
 								placeholder="请输入联系电话"
+								maxlength="11"
+								@input="validatePhone"
 								:class="{'input-error': familyMemberErrors.phone}"
 							/>
 							<text v-if="familyMemberErrors.phone" class="error-message">{{familyMemberErrors.phone}}</text>
@@ -408,7 +419,7 @@
 				<view class="training-container" v-if="showRequireProfessionalSkillsField">
 					<textarea 
 						v-model="formData.training" 
-						placeholder="请描述您接培训经历" 
+						placeholder="请填写您接受过的培训经历" 
 						class="training-textarea"
 						:class="{'input-error': formErrors.training}"
 						maxlength="500"
@@ -573,8 +584,14 @@
 							<text v-if="workErrors.supervisor" class="error-message">{{workErrors.supervisor}}</text>
 						</view>
 						<view class="form-item">
-							<text class="label required">领导电话</text>
-							<input type="number" v-model="workForm.supervisorPhone" placeholder="请输入领导电话" />
+							<text class="label">领导电话</text>
+							<input 
+								type="number" 
+								v-model="workForm.supervisorPhone" 
+								maxlength="11"
+								placeholder="请输入领导电话" 
+								@input="validatePhone"
+							/>
 							<text v-if="workErrors.supervisorPhone" class="error-message">{{workErrors.supervisorPhone}}</text>
 						</view>
 					</view>
@@ -762,7 +779,8 @@ import { apiBaseUrl } from '@/common/config.js';
 					phone: {
 						required: true,
 						pattern: /^1[3-9]\d{9}$/,
-						message: '请输入正确的手机号码'
+						message: '请输入正确的手机号码',
+						maxLength: 11
 					},
 					idCard: {
 						required: true,
@@ -1063,15 +1081,15 @@ import { apiBaseUrl } from '@/common/config.js';
 					isValid = false;
 				}
 				
-				if (this.shouldValidateField('workplaceOrAddress', 'family') && !this.familyMemberForm.workplaceOrAddress) {
-					this.familyMemberErrors.workplaceOrAddress = '请输入工作单位/家庭地址';
-					isValid = false;
-				}
+				// if (this.shouldValidateField('workplaceOrAddress', 'family') && !this.familyMemberForm.workplaceOrAddress) {
+				// 	this.familyMemberErrors.workplaceOrAddress = '请输入工作单位/家庭地址';
+				// 	isValid = false;
+				// }
 				
-				if (this.shouldValidateField('position', 'family') && !this.familyMemberForm.position) {
-					this.familyMemberErrors.position = '请输入职务';
-					isValid = false;
-				}
+				// if (this.shouldValidateField('position', 'family') && !this.familyMemberForm.position) {
+				// 	this.familyMemberErrors.position = '请输入职务';
+				// 	isValid = false;
+				// }
 				
 				if (this.shouldValidateField('phone', 'family') && !this.familyMemberForm.phone) {
 					this.familyMemberErrors.phone = '请输入联系电话';
@@ -1406,10 +1424,10 @@ import { apiBaseUrl } from '@/common/config.js';
 					isValid = false;
 				}
 
-				if (this.shouldValidateField('supervisorPhone', 'work') && !this.workForm.supervisorPhone) {
-					this.workErrors.supervisorPhone = '请输入直属上级电话';
-					isValid = false;
-				}
+				// if (this.shouldValidateField('supervisorPhone', 'work') && !this.workForm.supervisorPhone) {
+				// 	this.workErrors.supervisorPhone = '请输入直属上级电话';
+				// 	isValid = false;
+				// }
 
 				// 如果验证不通过,直接返回
 				if (!isValid) {
@@ -2247,6 +2265,19 @@ import { apiBaseUrl } from '@/common/config.js';
 				}
 				
 				this.workForm.monthlySalary = num.toString();
+			},
+			// 添加手机号验证方法
+			validatePhone(e) {
+				const value = e.detail.value;
+				if (value.length > 11) {
+					this.formData.phone = value.slice(0, 11);
+				}
+				// 实时验证手机号格式
+				if (value && !/^1[3-9]\d{0,9}$/.test(value)) {
+					this.formErrors.phone = '请输入正确的手机号码';
+				} else {
+					this.formErrors.phone = '';
+				}
 			}
 		},
 		// 添加监听器来清除错误信息
@@ -2341,11 +2372,11 @@ import { apiBaseUrl } from '@/common/config.js';
 					this.workErrors.supervisor = '';
 				}
 			},
-			'workForm.supervisorPhone': function(newVal) {
-				if (newVal && this.workErrors.supervisorPhone) {
-					this.workErrors.supervisorPhone = '';
-				}
-			},
+			// 'workForm.supervisorPhone': function(newVal) {
+			// 	if (newVal && this.workErrors.supervisorPhone) {
+			// 		this.workErrors.supervisorPhone = '';
+			// 	}
+			// },
 			'formData.training': function(newVal) {
 				if (newVal && this.formErrors.training) {
 					this.formErrors.training = '';

+ 28 - 2
pages/camera/camera.vue

@@ -1,4 +1,7 @@
 <template>
+<view class="custom-navbar" >
+	      <!-- <view class="navbar-title">我的标题</view>1:style="{paddingTop: statusBarHeight + 'px'}" -->
+	    </view>	
 	<view class="camera-container">
 		<!-- 顶部相机区域 - 固定位置 -->
 		<view class="fixed-camera-container">
@@ -179,7 +182,8 @@
 				personDetectionInterval: null, // 定时器对象
 				showCameraWarning: false, // 添加新的数据属性
 				showPageWarning: false, // 添加新的数据属性
-			}
+				statusBarHeight: 0
+		  }
 		},
 		computed: {
 			currentQuestion() {
@@ -196,6 +200,7 @@
 				// 如果没有ID,可以获取面试列表并使用第一个
 				this.fetchInterviewList();
 			}
+			 this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight || 0
 		},
 		onReady() {
 			// 创建相机上下文
@@ -1272,8 +1277,9 @@
 <style>
 	.camera-container {
 		position: relative;
+		margin-top: 25px;
 		width: 100%;
-		height: 100vh;
+		height: 96vh;
 		background-color: #ffffff;
 		display: flex;
 		flex-direction: column;
@@ -1996,4 +2002,24 @@
 		text-align: center;
 		margin-top: 30rpx;
 	}
+	.custom-navbar {
+	  position: fixed;
+	  top: 0;
+	  left: 0;
+	  right: 0;
+	  height: 44px;
+	  background-color: #ffffff;
+	  display: flex;
+	  align-items: center;
+	  justify-content: center;
+	  z-index: 999;
+	}
+	.navbar-title {
+	  font-size: 16px;
+	  font-weight: bold;
+	}
+	.content {
+	  margin-top: 44px;
+	  padding-top: var(--status-bar-height);
+	}
 </style>

+ 31 - 1
pages/identity-verify/identity-verify.vue

@@ -1,4 +1,7 @@
 <template>
+	<view class="custom-navbar" :style="{paddingTop: statusBarHeight + 'px'}">
+	      <!-- <view class="navbar-title">我的标题</view>1 -->
+	    </view>
   <div class="identity-verify-container" :class="{ 'page-warning': showPageWarning }">
     <div class="digital-human-container">
       <!-- 添加题号显示 -->
@@ -353,8 +356,13 @@ export default {
       thinkingTimer: null, // 思考计时器
       questionRetryMap: {}, // 用于跟踪每个问题的重试次数
       maxQuestionRetries: 2, // 每个问题最大重试次数
+	   statusBarHeight: 0
     }
   },
+   onLoad() {
+      // 获取状态栏高度
+      this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight || 0
+    },
   mounted() {
     this.fetchQuestions();
     //this.fetchFollowUpQuestions();
@@ -3896,6 +3904,7 @@ export default {
           this.startPersonDetectionInterval();
         }
       }
+	   uni.hideHomeButton(); // 隐藏左上角返回按钮
     },
 
     // 添加新方法:阻止视频控制
@@ -4723,6 +4732,7 @@ export default {
 .digital-human-video {
   width: 100%;
   height: 100%;
+  margin-top: 32px;
   display: flex;
   justify-content: center;
   align-items: center;
@@ -4731,7 +4741,7 @@ export default {
 /* 用户摄像头容器样式 */
 .user-camera-container {
   position: absolute;
-  top: 50px;
+  top: 100px;
   right: 5px;
   width: 110px;
   height: 160px;
@@ -5336,4 +5346,24 @@ video::-webkit-media-controls-fullscreen-button {
   line-height: 1.5;
   flex: 1;
 }
+.custom-navbar {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 44px;
+  background-color: #ffffff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 999;
+}
+.navbar-title {
+  font-size: 16px;
+  font-weight: bold;
+}
+.content {
+  margin-top: 44px;
+  padding-top: var(--status-bar-height);
+}
 </style>

+ 64 - 3
pages/interview-question/interview-question.vue

@@ -40,9 +40,12 @@
           </button>
         </div>
         <!-- 添加字幕覆盖层 :data-time="formatTime(recordingTimerCount) || '03:30'"-->
-        <div class="subtitle-overlay" v-if="currentSubtitle" >
+        <div class="subtitle-overlay" 
+          v-if="currentSubtitle"
+          :class="{ 'expanded': isSubtitleExpanded }"
+          :style="{ 'max-height': subtitleHeight ? `${subtitleHeight}px` : null }">
           {{ currentSubtitle }}
-          <!-- <button v-if="showNextButton" class="next-button" @click="handleNextButtonClick">我已阅读完成,继续</button> -->
+          <button v-if="showNextButton" class="next-button" @click="handleNextButtonClick">我已阅读完成,继续</button>
         </div>
         
         <!-- 添加答题按钮 -->
@@ -309,6 +312,8 @@ export default {
       hasTriedFallbackMethod: false, // 标记是否尝试过备选方法播放音频
       hasShownTextFallbackToast: false, // 标记是否已显示文本回退提示
       showNextButton: false, // 添加一个变量控制按钮显示
+      isSubtitleExpanded: false, // 控制字幕是否展开
+      subtitleHeight: 0, // 记录字幕内容高度
     }
   },
   onLoad(options) {
@@ -4747,6 +4752,33 @@ export default {
         }
       }
     },
+
+    // 监听字幕内容变化
+    handleSubtitleChange() {
+      this.$nextTick(() => {
+        const subtitleEl = document.querySelector('.subtitle-overlay');
+        if (subtitleEl) {
+          const contentHeight = subtitleEl.scrollHeight;
+          this.subtitleHeight = contentHeight;
+          // 如果内容高度超过视口高度的30%,则展开字幕
+          this.isSubtitleExpanded = contentHeight > window.innerHeight * 0.3;
+        }
+      });
+    },
+  },
+
+  // 添加watch来监听字幕内容变化
+  watch: {
+    currentSubtitle: {
+      handler(newVal) {
+        if (newVal) {
+          this.handleSubtitleChange();
+        } else {
+          this.isSubtitleExpanded = false;
+        }
+      },
+      immediate: true
+    }
   }
 }
 </script>
@@ -4864,9 +4896,10 @@ video::-webkit-media-controls-fullscreen-button {
 /* 修改字幕覆盖层样式,使其与图片中的样式一致 */
 .subtitle-overlay {
   position: absolute;
-  bottom: 100px; /* 调整位置,使其更靠近底部 */
+  bottom: 100px; /* 初始底部距离 */
   left: 5%; /* 从左侧留出5%的空间 */
   width: 80%; /* 宽度设为90%,两侧各留5%实现居中 */
+  max-height: calc(70vh - 100px); /* 最大高度为视口高度的70%减去底部距离 */
   padding: 15px 20px; /* 增加左右内边距 */
   border-radius: 15px;
   background-color: rgba(255, 255, 255, 0.9); /* 白色半透明背景 */
@@ -4881,6 +4914,34 @@ video::-webkit-media-controls-fullscreen-button {
   flex-direction: column;
   align-items: center;
   gap: 10px;
+  overflow-y: auto; /* 添加垂直滚动 */
+  transform: translateY(0); /* 用于动画 */
+  transition: transform 0.3s ease, bottom 0.3s ease; /* 添加平滑过渡效果 */
+}
+
+/* 当内容高度超过一定值时,自动调整底部距离 */
+.subtitle-overlay.expanded {
+  bottom: 50px; /* 减小底部距离 */
+  max-height: calc(80vh - 50px); /* 增加最大高度 */
+}
+
+/* 自定义滚动条样式 */
+.subtitle-overlay::-webkit-scrollbar {
+  width: 4px;
+}
+
+.subtitle-overlay::-webkit-scrollbar-track {
+  background: rgba(0, 0, 0, 0.1);
+  border-radius: 2px;
+}
+
+.subtitle-overlay::-webkit-scrollbar-thumb {
+  background: rgba(0, 0, 0, 0.2);
+  border-radius: 2px;
+}
+
+.subtitle-overlay::-webkit-scrollbar-thumb:hover {
+  background: rgba(0, 0, 0, 0.3);
 }
 
 /* 继续按钮样式 */

+ 2 - 2
pages/interview/interview.vue

@@ -1040,8 +1040,8 @@ import { apiBaseUrl } from '@/common/config.js'; // Import the base URL from a c
 	position: absolute;
 	top: 30rpx;
 	right: 30rpx;
-	width: 160rpx;
-	height: 200rpx;
+	width: 192rpx;
+	height: 240rpx;
 	display: flex;
 	flex-direction: column;
 	align-items: center;

+ 2 - 1
pages/success/success.vue

@@ -57,7 +57,8 @@ export default {
           method: 'POST',
           data: {
             "application_id": JSON.parse(uni.getStorageSync('appId')),
-            "tenant_id": JSON.parse(uni.getStorageSync('userInfo')).tenant_id
+            "tenant_id": JSON.parse(uni.getStorageSync('userInfo')).tenant_id,
+            "force_trigger": true
           }
         });
 

+ 26 - 25
unpackage/dist/dev/mp-weixin/pages/Personal/Personal.js

@@ -152,7 +152,8 @@ const _sfc_main = {
         phone: {
           required: true,
           pattern: /^1[3-9]\d{9}$/,
-          message: "请输入正确的手机号码"
+          message: "请输入正确的手机号码",
+          maxLength: 11
         },
         idCard: {
           required: true,
@@ -462,14 +463,6 @@ const _sfc_main = {
         this.familyMemberErrors.name = "请输入姓名";
         isValid = false;
       }
-      if (this.shouldValidateField("workplaceOrAddress", "family") && !this.familyMemberForm.workplaceOrAddress) {
-        this.familyMemberErrors.workplaceOrAddress = "请输入工作单位/家庭地址";
-        isValid = false;
-      }
-      if (this.shouldValidateField("position", "family") && !this.familyMemberForm.position) {
-        this.familyMemberErrors.position = "请输入职务";
-        isValid = false;
-      }
       if (this.shouldValidateField("phone", "family") && !this.familyMemberForm.phone) {
         this.familyMemberErrors.phone = "请输入联系电话";
         isValid = false;
@@ -753,10 +746,6 @@ const _sfc_main = {
         this.workErrors.supervisor = "请输入直属上级";
         isValid = false;
       }
-      if (this.shouldValidateField("supervisorPhone", "work") && !this.workForm.supervisorPhone) {
-        this.workErrors.supervisorPhone = "请输入直属上级电话";
-        isValid = false;
-      }
       if (!isValid) {
         common_vendor.index.showToast({
           title: "请完善工作经历信息",
@@ -1451,6 +1440,18 @@ const _sfc_main = {
         this.workErrors.monthlySalary = "";
       }
       this.workForm.monthlySalary = num.toString();
+    },
+    // 添加手机号验证方法
+    validatePhone(e) {
+      const value = e.detail.value;
+      if (value.length > 11) {
+        this.formData.phone = value.slice(0, 11);
+      }
+      if (value && !/^1[3-9]\d{0,9}$/.test(value)) {
+        this.formErrors.phone = "请输入正确的手机号码";
+      } else {
+        this.formErrors.phone = "";
+      }
     }
   },
   // 添加监听器来清除错误信息
@@ -1548,11 +1549,11 @@ const _sfc_main = {
         this.workErrors.supervisor = "";
       }
     },
-    "workForm.supervisorPhone": function(newVal) {
-      if (newVal && this.workErrors.supervisorPhone) {
-        this.workErrors.supervisorPhone = "";
-      }
-    },
+    // 'workForm.supervisorPhone': function(newVal) {
+    // 	if (newVal && this.workErrors.supervisorPhone) {
+    // 		this.workErrors.supervisorPhone = '';
+    // 	}
+    // },
     "formData.training": function(newVal) {
       if (newVal && this.formErrors.training) {
         this.formErrors.training = "";
@@ -1644,8 +1645,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
     E: $options.showPhoneField
   }, $options.showPhoneField ? common_vendor.e({
     F: $data.formErrors.phone ? 1 : "",
-    G: $data.formData.phone,
-    H: common_vendor.o(($event) => $data.formData.phone = $event.detail.value),
+    G: common_vendor.o([($event) => $data.formData.phone = $event.detail.value, (...args) => $options.validatePhone && $options.validatePhone(...args)]),
+    H: $data.formData.phone,
     I: $data.formErrors.phone
   }, $data.formErrors.phone ? {
     J: common_vendor.t($data.formErrors.phone)
@@ -1766,9 +1767,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
   } : {}, {
     aZ: $options.showFamilyPhoneField
   }, $options.showFamilyPhoneField ? common_vendor.e({
-    ba: $data.familyMemberErrors.phone ? 1 : "",
-    bb: $data.familyMemberForm.phone,
-    bc: common_vendor.o(($event) => $data.familyMemberForm.phone = $event.detail.value),
+    ba: common_vendor.o([($event) => $data.familyMemberForm.phone = $event.detail.value, (...args) => $options.validatePhone && $options.validatePhone(...args)]),
+    bb: $data.familyMemberErrors.phone ? 1 : "",
+    bc: $data.familyMemberForm.phone,
     bd: $data.familyMemberErrors.phone
   }, $data.familyMemberErrors.phone ? {
     be: common_vendor.t($data.familyMemberErrors.phone)
@@ -1996,8 +1997,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
   }, $data.workErrors.supervisor ? {
     dE: common_vendor.t($data.workErrors.supervisor)
   } : {}, {
-    dF: $data.workForm.supervisorPhone,
-    dG: common_vendor.o(($event) => $data.workForm.supervisorPhone = $event.detail.value),
+    dF: common_vendor.o([($event) => $data.workForm.supervisorPhone = $event.detail.value, (...args) => $options.validatePhone && $options.validatePhone(...args)]),
+    dG: $data.workForm.supervisorPhone,
     dH: $data.workErrors.supervisorPhone
   }, $data.workErrors.supervisorPhone ? {
     dI: common_vendor.t($data.workErrors.supervisorPhone)

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/Personal/Personal.wxml


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

@@ -72,8 +72,9 @@ const _sfc_main = {
       // 定时器对象
       showCameraWarning: false,
       // 添加新的数据属性
-      showPageWarning: false
+      showPageWarning: false,
       // 添加新的数据属性
+      statusBarHeight: 0
     };
   },
   computed: {
@@ -89,6 +90,7 @@ const _sfc_main = {
     } else {
       this.fetchInterviewList();
     }
+    this.statusBarHeight = common_vendor.index.getSystemInfoSync().statusBarHeight || 0;
   },
   onReady() {
     this.cameraContext = common_vendor.index.createCameraContext();

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

@@ -1,4 +1,5 @@
 {
-  "navigationBarTitleText": "测试",
+  "navigationBarTitleText": "",
+  "navigationStyle": "custom",
   "usingComponents": {}
 }

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/camera/camera.wxml


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

@@ -1,8 +1,9 @@
 
 .camera-container {
 		position: relative;
+		margin-top: 25px;
 		width: 100%;
-		height: 100vh;
+		height: 96vh;
 		background-color: #ffffff;
 		display: flex;
 		flex-direction: column;
@@ -644,3 +645,23 @@
 		text-align: center;
 		margin-top: 30rpx;
 }
+.custom-navbar {
+	  position: fixed;
+	  top: 0;
+	  left: 0;
+	  right: 0;
+	  height: 44px;
+	  background-color: #ffffff;
+	  display: flex;
+	  align-items: center;
+	  justify-content: center;
+	  z-index: 999;
+}
+.navbar-title {
+	  font-size: 16px;
+	  font-weight: bold;
+}
+.content {
+	  margin-top: 44px;
+	  padding-top: var(--status-bar-height);
+}

+ 46 - 40
unpackage/dist/dev/mp-weixin/pages/identity-verify/identity-verify.js

@@ -231,10 +231,14 @@ const _sfc_main = {
       // 思考计时器
       questionRetryMap: {},
       // 用于跟踪每个问题的重试次数
-      maxQuestionRetries: 2
+      maxQuestionRetries: 2,
       // 每个问题最大重试次数
+      statusBarHeight: 0
     };
   },
+  onLoad() {
+    this.statusBarHeight = common_vendor.index.getSystemInfoSync().statusBarHeight || 0;
+  },
   mounted() {
     this.fetchQuestions();
     this.checkAudioPermission();
@@ -2743,6 +2747,7 @@ const _sfc_main = {
           this.startPersonDetectionInterval();
         }
       }
+      common_vendor.index.hideHomeButton();
     },
     // 添加新方法:阻止视频控制
     preventVideoControl(e) {
@@ -3290,48 +3295,49 @@ const _sfc_main = {
 };
 function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
   return common_vendor.e({
-    a: $data.videoUrl,
-    b: common_vendor.o((...args) => $options.handleVideoError && $options.handleVideoError(...args)),
-    c: common_vendor.o((...args) => $options.handleVideoEnded && $options.handleVideoEnded(...args)),
-    d: common_vendor.o((...args) => $options.handleTimeUpdate && $options.handleTimeUpdate(...args)),
-    e: common_vendor.o((...args) => $options.preventVideoControl && $options.preventVideoControl(...args)),
+    a: $data.statusBarHeight + "px",
+    b: $data.videoUrl,
+    c: common_vendor.o((...args) => $options.handleVideoError && $options.handleVideoError(...args)),
+    d: common_vendor.o((...args) => $options.handleVideoEnded && $options.handleVideoEnded(...args)),
+    e: common_vendor.o((...args) => $options.handleTimeUpdate && $options.handleTimeUpdate(...args)),
     f: common_vendor.o((...args) => $options.preventVideoControl && $options.preventVideoControl(...args)),
-    g: $data.showAnswerButton
+    g: common_vendor.o((...args) => $options.preventVideoControl && $options.preventVideoControl(...args)),
+    h: $data.showAnswerButton
   }, $data.showAnswerButton ? {
-    h: common_vendor.o((...args) => $options.handleAnswerButtonClick && $options.handleAnswerButtonClick(...args))
+    i: common_vendor.o((...args) => $options.handleAnswerButtonClick && $options.handleAnswerButtonClick(...args))
   } : {}, {
-    i: $data.currentSubtitle || $data.showSubtitleText && $data.subtitleText
+    j: $data.currentSubtitle || $data.showSubtitleText && $data.subtitleText
   }, $data.currentSubtitle || $data.showSubtitleText && $data.subtitleText ? common_vendor.e({
-    j: $data.currentVideoIndex > 0
+    k: $data.currentVideoIndex > 0
   }, $data.currentVideoIndex > 0 ? {
-    k: common_vendor.t($data.currentVideoIndex),
-    l: common_vendor.t($options.totalQuestions)
+    l: common_vendor.t($data.currentVideoIndex),
+    m: common_vendor.t($options.totalQuestions)
   } : {}, {
-    m: !$data.isFollowUpQuestion
+    n: !$data.isFollowUpQuestion
   }, !$data.isFollowUpQuestion ? {
-    n: common_vendor.t($data.currentSubtitle)
+    o: common_vendor.t($data.currentSubtitle)
   } : {
-    o: common_vendor.t($data.parentQuestion),
-    p: common_vendor.t($data.subtitleText || $data.currentSubtitle)
+    p: common_vendor.t($data.parentQuestion),
+    q: common_vendor.t($data.subtitleText || $data.currentSubtitle)
   }) : {}, {
-    q: $data.useMiniProgramCameraComponent
+    r: $data.useMiniProgramCameraComponent
   }, $data.useMiniProgramCameraComponent ? {
-    r: common_vendor.o((...args) => $options.handleCameraError && $options.handleCameraError(...args))
+    s: common_vendor.o((...args) => $options.handleCameraError && $options.handleCameraError(...args))
   } : {}, {
-    s: $data.showPageWarning ? 1 : "",
-    t: $data.loading
+    t: $data.showPageWarning ? 1 : "",
+    v: $data.loading
   }, $data.loading ? {} : {}, {
-    v: $data.showDebugInfo
+    w: $data.showDebugInfo
   }, $data.showDebugInfo ? common_vendor.e({
-    w: $data.assistantResponse
+    x: $data.assistantResponse
   }, $data.assistantResponse ? {
-    x: common_vendor.t($data.assistantResponse)
+    y: common_vendor.t($data.assistantResponse)
   } : {}, {
-    y: $data.audioTranscript
+    z: $data.audioTranscript
   }, $data.audioTranscript ? {
-    z: common_vendor.t($data.audioTranscript)
+    A: common_vendor.t($data.audioTranscript)
   } : {}, {
-    A: common_vendor.f($data.processedResponses, (item, index, i0) => {
+    B: common_vendor.f($data.processedResponses, (item, index, i0) => {
       return common_vendor.e({
         a: item.role
       }, item.role ? {
@@ -3345,32 +3351,32 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
       });
     })
   }) : {}, {
-    B: $data.showStopRecordingButton
+    C: $data.showStopRecordingButton
   }, $data.showStopRecordingButton ? {
-    C: common_vendor.o((...args) => $options.stopRecordingAnswer && $options.stopRecordingAnswer(...args))
+    D: common_vendor.o((...args) => $options.stopRecordingAnswer && $options.stopRecordingAnswer(...args))
   } : {}, {
-    D: $data.isRecording
+    E: $data.isRecording
   }, $data.isRecording ? {
-    E: common_vendor.t($data.recordingTimeDisplay),
-    F: `conic-gradient(${$data.progressColor} ${$options.progressPercent}%, ${$data.progressBgColor} 0%)`
+    F: common_vendor.t($data.recordingTimeDisplay),
+    G: `conic-gradient(${$data.progressColor} ${$options.progressPercent}%, ${$data.progressBgColor} 0%)`
   } : {}, {
-    G: $data.showStartRecordingButton
+    H: $data.showStartRecordingButton
   }, $data.showStartRecordingButton ? {
-    H: common_vendor.o((...args) => $options.handleStartRecordingClick && $options.handleStartRecordingClick(...args))
+    I: common_vendor.o((...args) => $options.handleStartRecordingClick && $options.handleStartRecordingClick(...args))
   } : {}, {
-    I: $data.showRetryButton
+    J: $data.showRetryButton
   }, $data.showRetryButton ? {
-    J: common_vendor.o((...args) => $options.retryVideoUpload && $options.retryVideoUpload(...args))
+    K: common_vendor.o((...args) => $options.retryVideoUpload && $options.retryVideoUpload(...args))
   } : {}, {
-    K: $data.showCountdown
+    L: $data.showCountdown
   }, $data.showCountdown ? {
-    L: common_vendor.t($data.countdownValue)
+    M: common_vendor.t($data.countdownValue)
   } : {}, {
-    M: $data.showRerecordButton
+    N: $data.showRerecordButton
   }, $data.showRerecordButton ? {
-    N: common_vendor.o((...args) => $options.handleRerecordButtonClick && $options.handleRerecordButtonClick(...args))
+    O: common_vendor.o((...args) => $options.handleRerecordButtonClick && $options.handleRerecordButtonClick(...args))
   } : {}, {
-    O: $data.showPageWarning ? 1 : ""
+    P: $data.showPageWarning ? 1 : ""
   });
 }
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-464e78c6"]]);

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/identity-verify/identity-verify.json

@@ -1,4 +1,5 @@
 {
   "navigationBarTitleText": "",
+  "navigationStyle": "custom",
   "usingComponents": {}
 }

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/identity-verify/identity-verify.wxml


+ 22 - 1
unpackage/dist/dev/mp-weixin/pages/identity-verify/identity-verify.wxss

@@ -67,6 +67,7 @@ to {
 .digital-human-video.data-v-464e78c6 {
   width: 100%;
   height: 100%;
+  margin-top: 32px;
   display: flex;
   justify-content: center;
   align-items: center;
@@ -75,7 +76,7 @@ to {
 /* 用户摄像头容器样式 */
 .user-camera-container.data-v-464e78c6 {
   position: absolute;
-  top: 50px;
+  top: 100px;
   right: 5px;
   width: 110px;
   height: 160px;
@@ -633,3 +634,23 @@ video.data-v-464e78c6::-webkit-media-controls-fullscreen-button {
   line-height: 1.5;
   flex: 1;
 }
+.custom-navbar.data-v-464e78c6 {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 44px;
+  background-color: #ffffff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 999;
+}
+.navbar-title.data-v-464e78c6 {
+  font-size: 16px;
+  font-weight: bold;
+}
+.content.data-v-464e78c6 {
+  margin-top: 44px;
+  padding-top: var(--status-bar-height);
+}

+ 59 - 25
unpackage/dist/dev/mp-weixin/pages/interview-question/interview-question.js

@@ -154,8 +154,12 @@ const _sfc_main = {
       // 标记是否尝试过备选方法播放音频
       hasShownTextFallbackToast: false,
       // 标记是否已显示文本回退提示
-      showNextButton: false
+      showNextButton: false,
       // 添加一个变量控制按钮显示
+      isSubtitleExpanded: false,
+      // 控制字幕是否展开
+      subtitleHeight: 0
+      // 记录字幕内容高度
     };
   },
   onLoad(options) {
@@ -3302,6 +3306,30 @@ const _sfc_main = {
           this.useTextFallbackAndNavigate();
         }
       }
+    },
+    // 监听字幕内容变化
+    handleSubtitleChange() {
+      this.$nextTick(() => {
+        const subtitleEl = document.querySelector(".subtitle-overlay");
+        if (subtitleEl) {
+          const contentHeight = subtitleEl.scrollHeight;
+          this.subtitleHeight = contentHeight;
+          this.isSubtitleExpanded = contentHeight > window.innerHeight * 0.3;
+        }
+      });
+    }
+  },
+  // 添加watch来监听字幕内容变化
+  watch: {
+    currentSubtitle: {
+      handler(newVal) {
+        if (newVal) {
+          this.handleSubtitleChange();
+        } else {
+          this.isSubtitleExpanded = false;
+        }
+      },
+      immediate: true
     }
   }
 };
@@ -3316,26 +3344,32 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
     f: common_vendor.o((...args) => $options.handleAnswerButtonClick && $options.handleAnswerButtonClick(...args))
   } : {}, {
     g: $data.currentSubtitle
-  }, $data.currentSubtitle ? {
-    h: common_vendor.t($data.currentSubtitle)
+  }, $data.currentSubtitle ? common_vendor.e({
+    h: common_vendor.t($data.currentSubtitle),
+    i: $data.showNextButton
+  }, $data.showNextButton ? {
+    j: common_vendor.o((...args) => $options.handleNextButtonClick && $options.handleNextButtonClick(...args))
   } : {}, {
-    i: $data.useMiniProgramCameraComponent
+    k: $data.isSubtitleExpanded ? 1 : "",
+    l: $data.subtitleHeight ? `${$data.subtitleHeight}px` : null
+  }) : {}, {
+    m: $data.useMiniProgramCameraComponent
   }, $data.useMiniProgramCameraComponent ? {
-    j: common_vendor.o((...args) => $options.handleCameraError && $options.handleCameraError(...args))
+    n: common_vendor.o((...args) => $options.handleCameraError && $options.handleCameraError(...args))
   } : {}, {
-    k: $data.loading
+    o: $data.loading
   }, $data.loading ? {} : {}, {
-    l: $data.showDebugInfo
+    p: $data.showDebugInfo
   }, $data.showDebugInfo ? common_vendor.e({
-    m: $data.assistantResponse
+    q: $data.assistantResponse
   }, $data.assistantResponse ? {
-    n: common_vendor.t($data.assistantResponse)
+    r: common_vendor.t($data.assistantResponse)
   } : {}, {
-    o: $data.audioTranscript
+    s: $data.audioTranscript
   }, $data.audioTranscript ? {
-    p: common_vendor.t($data.audioTranscript)
+    t: common_vendor.t($data.audioTranscript)
   } : {}, {
-    q: common_vendor.f($data.processedResponses, (item, index, i0) => {
+    v: common_vendor.f($data.processedResponses, (item, index, i0) => {
       return common_vendor.e({
         a: item.role
       }, item.role ? {
@@ -3349,31 +3383,31 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
       });
     })
   }) : {}, {
-    r: $data.showStopRecordingButton
+    w: $data.showStopRecordingButton
   }, $data.showStopRecordingButton ? {
-    s: common_vendor.o((...args) => $options.stopRecordingAnswer && $options.stopRecordingAnswer(...args))
+    x: common_vendor.o((...args) => $options.stopRecordingAnswer && $options.stopRecordingAnswer(...args))
   } : {}, {
-    t: $data.isRecording
+    y: $data.isRecording
   }, $data.isRecording ? {
-    v: common_vendor.t($data.recordingTimeDisplay || "00:00 / 05:00")
+    z: common_vendor.t($data.recordingTimeDisplay || "00:00 / 05:00")
   } : {}, {
-    w: $data.showStartRecordingButton
+    A: $data.showStartRecordingButton
   }, $data.showStartRecordingButton ? {
-    x: common_vendor.o((...args) => $options.handleStartRecordingClick && $options.handleStartRecordingClick(...args))
+    B: common_vendor.o((...args) => $options.handleStartRecordingClick && $options.handleStartRecordingClick(...args))
   } : {}, {
-    y: $data.showRetryButton
+    C: $data.showRetryButton
   }, $data.showRetryButton ? {
-    z: common_vendor.o((...args) => $options.retryVideoUpload && $options.retryVideoUpload(...args))
+    D: common_vendor.o((...args) => $options.retryVideoUpload && $options.retryVideoUpload(...args))
   } : {}, {
-    A: $data.showCountdown
+    E: $data.showCountdown
   }, $data.showCountdown ? {
-    B: common_vendor.t($data.countdownValue)
+    F: common_vendor.t($data.countdownValue)
   } : {}, {
-    C: $data.isPlayingAiVoice
+    G: $data.isPlayingAiVoice
   }, $data.isPlayingAiVoice ? {} : {}, {
-    D: $data.showContinueQuestionButton
+    H: $data.showContinueQuestionButton
   }, $data.showContinueQuestionButton ? {
-    E: common_vendor.o((...args) => $options.handleContinueQuestionClick && $options.handleContinueQuestionClick(...args))
+    I: common_vendor.o((...args) => $options.handleContinueQuestionClick && $options.handleContinueQuestionClick(...args))
   } : {});
 }
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2a02c54e"]]);

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/interview-question/interview-question.wxml


+ 27 - 1
unpackage/dist/dev/mp-weixin/pages/interview-question/interview-question.wxss

@@ -98,9 +98,10 @@ video.data-v-2a02c54e::-webkit-media-controls-fullscreen-button {
 /* 修改字幕覆盖层样式,使其与图片中的样式一致 */
 .subtitle-overlay.data-v-2a02c54e {
   position: absolute;
-  bottom: 100px; /* 调整位置,使其更靠近底部 */
+  bottom: 100px; /* 初始底部距离 */
   left: 5%; /* 从左侧留出5%的空间 */
   width: 80%; /* 宽度设为90%,两侧各留5%实现居中 */
+  max-height: calc(70vh - 100px); /* 最大高度为视口高度的70%减去底部距离 */
   padding: 15px 20px; /* 增加左右内边距 */
   border-radius: 15px;
   background-color: rgba(255, 255, 255, 0.9); /* 白色半透明背景 */
@@ -115,6 +116,31 @@ video.data-v-2a02c54e::-webkit-media-controls-fullscreen-button {
   flex-direction: column;
   align-items: center;
   gap: 10px;
+  overflow-y: auto; /* 添加垂直滚动 */
+  transform: translateY(0); /* 用于动画 */
+  transition: transform 0.3s ease, bottom 0.3s ease; /* 添加平滑过渡效果 */
+}
+
+/* 当内容高度超过一定值时,自动调整底部距离 */
+.subtitle-overlay.expanded.data-v-2a02c54e {
+  bottom: 50px; /* 减小底部距离 */
+  max-height: calc(80vh - 50px); /* 增加最大高度 */
+}
+
+/* 自定义滚动条样式 */
+.subtitle-overlay.data-v-2a02c54e::-webkit-scrollbar {
+  width: 4px;
+}
+.subtitle-overlay.data-v-2a02c54e::-webkit-scrollbar-track {
+  background: rgba(0, 0, 0, 0.1);
+  border-radius: 2px;
+}
+.subtitle-overlay.data-v-2a02c54e::-webkit-scrollbar-thumb {
+  background: rgba(0, 0, 0, 0.2);
+  border-radius: 2px;
+}
+.subtitle-overlay.data-v-2a02c54e::-webkit-scrollbar-thumb:hover {
+  background: rgba(0, 0, 0, 0.3);
 }
 
 /* 继续按钮样式 */

+ 2 - 2
unpackage/dist/dev/mp-weixin/pages/interview/interview.wxss

@@ -249,8 +249,8 @@
 	position: absolute;
 	top: 30rpx;
 	right: 30rpx;
-	width: 160rpx;
-	height: 200rpx;
+	width: 192rpx;
+	height: 240rpx;
 	display: flex;
 	flex-direction: column;
 	align-items: center;

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

@@ -31,7 +31,8 @@ const _sfc_main = {
           method: "POST",
           data: {
             "application_id": JSON.parse(common_vendor.index.getStorageSync("appId")),
-            "tenant_id": JSON.parse(common_vendor.index.getStorageSync("userInfo")).tenant_id
+            "tenant_id": JSON.parse(common_vendor.index.getStorageSync("userInfo")).tenant_id,
+            "force_trigger": true
           }
         });
       } catch (error) {

Some files were not shown because too many files changed in this diff