Explorar o código

修改并新增页面

yangg hai 2 meses
pai
achega
f0d4579aca

+ 7 - 0
pages.json

@@ -79,6 +79,13 @@
 			{
 				"navigationBarTitleText" : ""
 			}
+		},
+		{
+			"path" : "pages/interview_success/interview_success",
+			"style" : 
+			{
+				"navigationBarTitleText" : ""
+			}
 		}
 	],
 	"globalStyle": {

+ 8 - 5
pages/camera/camera.vue

@@ -549,17 +549,19 @@
 					
 					// 构建提交数据
 					let answerContent = '';
-					
+					let answerOptions = [];
 					if (this.currentAnswer.questionType === 0) {
 						// 开放题直接使用文本答案
 						answerContent = this.currentAnswer.answer;
+						answerOptions = [];
 					} else if (this.currentAnswer.questionType === 1 || this.currentAnswer.questionType === 3) {
 						// 单选题或看图答题,获取选项ID而不是索引
 						const selectedIndex = this.currentAnswer.answer;
 						const selectedOption = this.currentQuestion.options[selectedIndex];
 						console.log('selectedOption',selectedOption);
-						// 使用选项的ID或其他唯一标识符
-						answerContent = selectedOption.id ? selectedOption.id.toString() : selectedIndex.toString();
+						const optionId = selectedOption.id ? selectedOption.id : selectedIndex;
+						answerContent = optionId.toString();
+						answerOptions = [optionId];
 					} else if (this.currentAnswer.questionType === 2) {
 						// 多选题,将选项ID数组转为逗号分隔的字符串
 						const selectedIndices = this.currentAnswer.answer;
@@ -568,14 +570,15 @@
 							// 使用选项的ID或其他唯一标识符
 							return option.id ? option.id : index;
 						});
-						answerContent = selectedOptionIds.join(',');
+						answerOptions = selectedOptionIds;
 					}
 					
 					const submitData = {
 						job_id: JSON.parse(uni.getStorageSync('selectedJob')).id,
 						applicant_id: JSON.parse(uni.getStorageSync('userInfo')).id,
 						question_id: this.currentAnswer.questionId,
-						answer_content: answerContent,
+						// answer_content: answerContent,
+						answer_options: answerOptions, 
 						answer_duration: this.currentAnswer.answerDuration || 0,
 						tenant_id: 1
 					};

+ 137 - 0
pages/interview_success/interview_success.vue

@@ -0,0 +1,137 @@
+<template>
+	<view class="success-container">
+		<view class="success-icon">
+			<image src="/static/images/success-icon.png" mode="aspectFit"></image>
+		</view>
+		<view class="success-title">恭喜完成全部检测</view>
+		
+		<view class="check-list">
+			<view class="check-item" v-for="(item, index) in checkItems" :key="index">
+				<view class="check-index">{{index + 1}}</view>
+				<view class="check-name">{{item.name}}</view>
+				<view class="check-status">{{item.status}}</view>
+			</view>
+		</view>
+		
+		<view class="button-group">
+			<button class="btn-retake" @click="retake">重拍</button>
+			<button class="btn-next" @click="goNext">下一步</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				checkItems: [
+					{ name: '左手手心', status: '动作检测成功' },
+					{ name: '左手手背', status: '动作检测成功' },
+					{ name: '左手握拳', status: '动作检测成功' },
+					{ name: '右手手心', status: '动作检测成功' },
+					{ name: '右手手背', status: '动作检测成功' },
+					{ name: '右手握拳', status: '动作检测成功' }
+				]
+			}
+		},
+		methods: {
+			retake() {
+				// 返回到拍照页面
+				uni.navigateBack();
+			},
+			goNext() {
+				// 进入下一步
+				uni.navigateTo({
+					url: '/pages/interview-notice/interview-notice'
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+.success-container {
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	padding: 40rpx 30rpx;
+}
+
+.success-icon {
+	margin-top: 60rpx;
+	width: 160rpx;
+	height: 160rpx;
+}
+
+.success-icon image {
+	width: 100%;
+	height: 100%;
+}
+
+.success-title {
+	font-size: 36rpx;
+	font-weight: bold;
+	margin: 30rpx 0 50rpx;
+}
+
+.check-list {
+	width: 100%;
+	margin-bottom: 60rpx;
+}
+
+.check-item {
+	display: flex;
+	align-items: center;
+	margin-bottom: 20rpx;
+}
+
+.check-index {
+	width: 40rpx;
+	height: 40rpx;
+	border-radius: 50%;
+	background-color: #f0f0f0;
+	color: #999;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	font-size: 24rpx;
+	margin-right: 20rpx;
+}
+
+.check-name {
+	flex: 1;
+	font-size: 28rpx;
+	color: #333;
+}
+
+.check-status {
+	font-size: 28rpx;
+	color: #67c23a;
+}
+
+.button-group {
+	display: flex;
+	width: 100%;
+	justify-content: space-between;
+	margin-top: 40rpx;
+}
+
+.btn-retake, .btn-next {
+	width: 45%;
+	height: 80rpx;
+	line-height: 80rpx;
+	text-align: center;
+	border-radius: 8rpx;
+}
+
+.btn-retake {
+	background-color: #f5f5f5;
+	color: #333;
+	border: 1px solid #ddd;
+}
+
+.btn-next {
+	background-color: #003399;
+	color: #fff;
+}
+</style>

+ 1 - 0
unpackage/dist/dev/mp-weixin/app.js

@@ -15,6 +15,7 @@ if (!Math) {
   "./pages/ResumeEvaluation/ResumeEvaluation.js";
   "./pages/interview-question/interview-question.js";
   "./pages/preview/preview.js";
+  "./pages/interview_success/interview_success.js";
 }
 const _sfc_main = {
   onLaunch: function() {

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

@@ -11,7 +11,8 @@
     "pages/interview/interview",
     "pages/ResumeEvaluation/ResumeEvaluation",
     "pages/interview-question/interview-question",
-    "pages/preview/preview"
+    "pages/preview/preview",
+    "pages/interview_success/interview_success"
   ],
   "window": {
     "navigationBarTextStyle": "black",

+ 6 - 4
unpackage/dist/dev/mp-weixin/common/assets.js

@@ -1,5 +1,7 @@
 "use strict";
-const _imports_0$1 = "/static/login-image.png";
-const _imports_0 = "/static/avatar.png";
-exports._imports_0 = _imports_0$1;
-exports._imports_0$1 = _imports_0;
+const _imports_0$2 = "/static/login-image.png";
+const _imports_0$1 = "/static/avatar.png";
+const _imports_0 = "/static/images/success-icon.png";
+exports._imports_0 = _imports_0$2;
+exports._imports_0$1 = _imports_0$1;
+exports._imports_0$2 = _imports_0;

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

@@ -320,26 +320,31 @@ const _sfc_main = {
           title: "正在提交答案..."
         });
         let answerContent = "";
+        let answerOptions = [];
         if (this.currentAnswer.questionType === 0) {
           answerContent = this.currentAnswer.answer;
+          answerOptions = [];
         } else if (this.currentAnswer.questionType === 1 || this.currentAnswer.questionType === 3) {
           const selectedIndex = this.currentAnswer.answer;
           const selectedOption = this.currentQuestion.options[selectedIndex];
           console.log("selectedOption", selectedOption);
-          answerContent = selectedOption.id ? selectedOption.id.toString() : selectedIndex.toString();
+          const optionId = selectedOption.id ? selectedOption.id : selectedIndex;
+          answerContent = optionId.toString();
+          answerOptions = [optionId];
         } else if (this.currentAnswer.questionType === 2) {
           const selectedIndices = this.currentAnswer.answer;
           const selectedOptionIds = selectedIndices.map((index) => {
             const option = this.currentQuestion.options[index];
             return option.id ? option.id : index;
           });
-          answerContent = selectedOptionIds.join(",");
+          answerOptions = selectedOptionIds;
         }
         const submitData = {
           job_id: JSON.parse(common_vendor.index.getStorageSync("selectedJob")).id,
           applicant_id: JSON.parse(common_vendor.index.getStorageSync("userInfo")).id,
           question_id: this.currentAnswer.questionId,
-          answer_content: answerContent,
+          // answer_content: answerContent,
+          answer_options: answerOptions,
           answer_duration: this.currentAnswer.answerDuration || 0,
           tenant_id: 1
         };

+ 44 - 0
unpackage/dist/dev/mp-weixin/pages/interview_success/interview_success.js

@@ -0,0 +1,44 @@
+"use strict";
+const common_vendor = require("../../common/vendor.js");
+const common_assets = require("../../common/assets.js");
+const _sfc_main = {
+  data() {
+    return {
+      checkItems: [
+        { name: "左手手心", status: "动作检测成功" },
+        { name: "左手手背", status: "动作检测成功" },
+        { name: "左手握拳", status: "动作检测成功" },
+        { name: "右手手心", status: "动作检测成功" },
+        { name: "右手手背", status: "动作检测成功" },
+        { name: "右手握拳", status: "动作检测成功" }
+      ]
+    };
+  },
+  methods: {
+    retake() {
+      common_vendor.index.navigateBack();
+    },
+    goNext() {
+      common_vendor.index.navigateTo({
+        url: "/pages/interview-notice/interview-notice"
+      });
+    }
+  }
+};
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+  return {
+    a: common_assets._imports_0$2,
+    b: common_vendor.f($data.checkItems, (item, index, i0) => {
+      return {
+        a: common_vendor.t(index + 1),
+        b: common_vendor.t(item.name),
+        c: common_vendor.t(item.status),
+        d: index
+      };
+    }),
+    c: common_vendor.o((...args) => $options.retake && $options.retake(...args)),
+    d: common_vendor.o((...args) => $options.goNext && $options.goNext(...args))
+  };
+}
+const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
+wx.createPage(MiniProgramPage);

+ 4 - 0
unpackage/dist/dev/mp-weixin/pages/interview_success/interview_success.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "",
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/interview_success/interview_success.wxml

@@ -0,0 +1 @@
+<view class="success-container"><view class="success-icon"><image src="{{a}}" mode="aspectFit"></image></view><view class="success-title">恭喜完成全部检测</view><view class="check-list"><view wx:for="{{b}}" wx:for-item="item" wx:key="d" class="check-item"><view class="check-index">{{item.a}}</view><view class="check-name">{{item.b}}</view><view class="check-status">{{item.c}}</view></view></view><view class="button-group"><button class="btn-retake" bindtap="{{c}}">重拍</button><button class="btn-next" bindtap="{{d}}">下一步</button></view></view>

+ 73 - 0
unpackage/dist/dev/mp-weixin/pages/interview_success/interview_success.wxss

@@ -0,0 +1,73 @@
+
+.success-container {
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	padding: 40rpx 30rpx;
+}
+.success-icon {
+	margin-top: 60rpx;
+	width: 160rpx;
+	height: 160rpx;
+}
+.success-icon image {
+	width: 100%;
+	height: 100%;
+}
+.success-title {
+	font-size: 36rpx;
+	font-weight: bold;
+	margin: 30rpx 0 50rpx;
+}
+.check-list {
+	width: 100%;
+	margin-bottom: 60rpx;
+}
+.check-item {
+	display: flex;
+	align-items: center;
+	margin-bottom: 20rpx;
+}
+.check-index {
+	width: 40rpx;
+	height: 40rpx;
+	border-radius: 50%;
+	background-color: #f0f0f0;
+	color: #999;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	font-size: 24rpx;
+	margin-right: 20rpx;
+}
+.check-name {
+	flex: 1;
+	font-size: 28rpx;
+	color: #333;
+}
+.check-status {
+	font-size: 28rpx;
+	color: #67c23a;
+}
+.button-group {
+	display: flex;
+	width: 100%;
+	justify-content: space-between;
+	margin-top: 40rpx;
+}
+.btn-retake, .btn-next {
+	width: 45%;
+	height: 80rpx;
+	line-height: 80rpx;
+	text-align: center;
+	border-radius: 8rpx;
+}
+.btn-retake {
+	background-color: #f5f5f5;
+	color: #333;
+	border: 1px solid #ddd;
+}
+.btn-next {
+	background-color: #003399;
+	color: #fff;
+}