Forráskód Böngészése

28日晚修改内容

yangg 1 hónapja
szülő
commit
4e2657fe48

+ 12 - 12
pages/Personal/Personal.vue

@@ -1628,7 +1628,7 @@ import { apiBaseUrl } from '@/common/config.js';
 		font-weight: bold;
 		margin: 30rpx 0 20rpx 10rpx;
 		color: #333;
-		border-left: 4rpx solid #007AFF;
+		border-left: 4rpx solid #0039b3;
 		padding-left: 15rpx;
 	}
 
@@ -1669,7 +1669,7 @@ import { apiBaseUrl } from '@/common/config.js';
 
 	.submit-btn {
 		margin-top: 40rpx;
-		background-color: #007AFF;
+		background-color: #0039b3;
 		color: #fff;
 	}
 
@@ -1773,7 +1773,7 @@ import { apiBaseUrl } from '@/common/config.js';
 		width: 40rpx;
 		height: 40rpx;
 		border-radius: 50%;
-		background-color: #007AFF;
+		background-color: #0039b3;
 		display: flex;
 		justify-content: center;
 		align-items: center;
@@ -1812,7 +1812,7 @@ import { apiBaseUrl } from '@/common/config.js';
 		display: flex;
 		align-items: center;
 		justify-content: center;
-		background-color: #52c41a;
+		background-color: #0039b3;
 		box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.1);
 		margin: 0;
 	}
@@ -2091,7 +2091,7 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 
 	.step-item.active:not(:last-child)::after {
-		background-color: #007AFF;
+		background-color: #0039b3;
 	}
 
 	.step-number {
@@ -2110,11 +2110,11 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 
 	.step-item.active .step-number {
-		background-color: #007AFF;
+		background-color: #0039b3;
 	}
 
 	.step-item.current .step-number {
-		background-color: #007AFF;
+		background-color: #0039b3;
 		box-shadow: 0 0 0 4rpx rgba(0, 122, 255, 0.2);
 	}
 
@@ -2129,7 +2129,7 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 
 	.step-item.current .step-name {
-		color: #007AFF;
+		color: #0039b3;
 		font-weight: bold;
 	}
 
@@ -2157,7 +2157,7 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 
 	.next-btn {
-		background-color: #007AFF;
+		background-color: #0039b3;
 		color: #fff;
 	}
 
@@ -2169,7 +2169,7 @@ import { apiBaseUrl } from '@/common/config.js';
 		text-align: center;
 		border-radius: 40rpx;
 		font-size: 28rpx;
-		background-color: #52c41a;
+		background-color: #0039b3;
 		color: #fff;
 	}
 
@@ -2290,7 +2290,7 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 	
 	.confirm-btn {
-		background-color: #007AFF;
+		background-color: #0039b3;
 		color: #fff;
 	}
 	
@@ -2318,7 +2318,7 @@ import { apiBaseUrl } from '@/common/config.js';
 		width: 60rpx;
 		height: 60rpx;
 		border: 6rpx solid #f3f3f3;
-		border-top: 6rpx solid #007AFF;
+		border-top: 6rpx solid #0039b3;
 		border-radius: 50%;
 		animation: spin 1s linear infinite;
 		margin-bottom: 20rpx;

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

@@ -3515,7 +3515,7 @@ video::-webkit-media-controls-fullscreen-button {
   width: 120px;
   height: 40px; /* 改为矩形按钮 */
   border-radius: 20px; /* 圆角矩形 */
-  background-color: #002fff; /* 白色背景 */
+  background-color: #0039b3; /* 白色背景 */
   color: #fff;/* 深色文字 */
   font-size: 16px;
   border: none;

+ 7 - 7
pages/index/index.vue

@@ -7,9 +7,9 @@
 				<view v-for="(job, index) in jobList" :key="index" class="job-item"
 					:class="{'job-selected': selectedJobId === job.id}" @click="selectJob(job)">
 					<view class="job-name">{{job.title}}</view>
-					<!-- <view class="job-actions">
+					<view class="job-actions">
 						<button class="detail-btn" @click.stop="viewJobDetail(job)">查看详情</button>
-					</view> -->
+					</view>
 					<view class="job-details">
 						<text class="job-salary">{{job.publish_date}}</text>
 						<text class="job-location">{{job.location}}</text>
@@ -558,10 +558,10 @@ import { apiBaseUrl } from '@/common/config.js';
 			viewJobDetail(job) {
 				// 保存所选职位信息到本地存储
 				uni.setStorageSync('currentJobDetail', JSON.stringify(job));
-				
+				console.log(job);
 				// 跳转到职位详情页面
 				uni.navigateTo({
-						url: '/pages/job-detail/job-detail',
+						url: '/pages/job-detail/job-detail?id=' + job.id,
 						fail: (err) => {
 							console.error('页面跳转失败:', err);
 							uni.showToast({
@@ -731,7 +731,7 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 
 	.job-list {
-		max-height: 800rpx;
+		max-height: 1000rpx;
 		overflow-y: auto;
 	}
 
@@ -762,7 +762,7 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 
 	.job-salary {
-		color: #ff6b6b;
+		color: #fb752f;
 	}
 
 	.apply-btn {
@@ -876,7 +876,7 @@ import { apiBaseUrl } from '@/common/config.js';
 	}
 
 	.detail-btn {
-		background-color: #0052d9;
+		background-color: #0039b3;
 		color: #fff;
 		font-size: 24rpx;
 		padding: 6rpx 20rpx;

+ 1 - 1
pages/interview-notice/interview-notice.vue

@@ -256,7 +256,7 @@ export default {
 }
 
 .next-btn[disabled] {
-  background-color: #b2b2b2;
+  background-color: #0039b3;
   color: #fff;
 }
 </style> 

+ 2 - 2
pages/interview-question/interview-question.vue

@@ -4032,8 +4032,8 @@ video::-webkit-media-controls-fullscreen-button {
   width: 120px;
   height: 40px; /* 改为矩形按钮 */
   border-radius: 20px; /* 圆角矩形 */
-  background-color: #e74c3c; /* 白色背景 */
-  color: #333; /* 深色文字 */
+  background-color: #0039b3; /* 白色背景 */
+  color: #fff; /* 深色文字 */
   font-size: 16px;
   border: none;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);

+ 1 - 1
pages/interview_success/interview_success.vue

@@ -212,7 +212,7 @@ import { apiBaseUrl } from '@/common/config.js'; // 导入基础URL配置
 
 .check-status {
 	font-size: 28rpx;
-	color: #67c23a;
+	color: #003399;
 }
 
 .status-fail {

+ 119 - 22
pages/job-detail/job-detail.vue

@@ -22,8 +22,8 @@
     <view class="section">
       <view class="section-title">工作地点</view>
       <view class="map-container">
-        <image class="map-image" src="/static/images/map.png" mode="aspectFill"></image>
-        <view class="map-time">预计14:32到达</view>
+        <image class="map-image" src="https://data.qicai321.com/minlong/6be6ec51-d4a2-4f2b-9bfc-23e046a3db37.png" mode="aspectFill"></image>
+        <!-- <view class="map-time">预计14:32到达</view> -->
         <view class="refresh-icon">
           <text class="iconfont icon-refresh"></text>
         </view>
@@ -60,29 +60,33 @@
 </template>
 
 <script>
+	import { apiBaseUrl } from '@/common/config.js';
+	import { applyJob } from '@/api/user.js';
 export default {
   data() {
     return {
       jobDetail: {
-        title: '产品经理',
-        salary: '20k-30k/月',
-        department: '产品研发部 全职',
-        location: '浙江线',
-        experience: '5-8年',
-        benefits: ['五险一金', '节日福利', '股权激励'],
+        title: '',
+        salary: '',
+        department: '',
+        location: '',
+        experience: '',
+        benefits: [],
         description: [
           {
-            subtitle: '战略规划与执行',
-            items: [
-              '负责敏锐的行业热点感受性,密切追踪行业动态与趋势,为企业战略决策提供参考。',
-              '结心制定企业战略规划,将长期愿景转化为可操作的战略目标,并有效分解为各阶段具体任务。'
-            ]
+            subtitle: '岗位要求',
+            items: []
           }
         ]
-      }
+      },
+      selectedJobId: null,
+      jobId: null
     }
   },
-  onLoad() {
+  onLoad(options) {
+    this.jobId = options.id;
+    this.getJobDetail(options.id);
+
     // 尝试从本地存储获取职位详情
     try {
       const jobDetailStr = uni.getStorageSync('currentJobDetail');
@@ -106,11 +110,104 @@ export default {
     }
   },
   methods: {
-    startInterview() {
-      // 开始面试的逻辑
-      uni.navigateTo({
-        url: '/pages/camera/camera'
-      });
+    async getJobDetail(jobId) {
+      try {
+        const { data } = await uni.request({
+          url: `${apiBaseUrl}/api/mini/job/detail?id=${jobId}&tenant_id=1`,
+          method: 'GET',
+        });
+        
+        if (data.code === 2000) {
+          // 将API返回的数据映射到页面所需的格式
+          this.jobDetail = {
+            title: data.data.title || '',
+            salary: data.data.salary_range ? `${data.data.salary_range}/月` : '',
+            department: `${data.data.department || ''} ${data.data.job_type === 1 ? '全职' : '兼职'}`,
+            location: data.data.location || '',
+            experience: data.data.work_experience_required || '不限',
+            benefits: data.data.competency_tags || ['五险一金', '带薪年假', '定期体检'],
+            description: [
+              {
+                subtitle: '岗位要求',
+                items: [
+                  data.data.requirements || '',
+                  data.data.description || ''
+                ].filter(item => item) // 过滤掉空值
+              }
+            ]
+          };
+        } else {
+          uni.showToast({
+            title: '获取职位详情失败',
+            icon: 'none'
+          });
+        }
+      } catch (e) {
+        console.error('获取职位详情失败:', e);
+        uni.showToast({
+          title: '获取职位详情失败',
+          icon: 'none'
+        });
+      }
+    },
+    checkLogin() {
+      const userInfo = uni.getStorageSync('userInfo');
+      if (!userInfo) {
+        uni.showToast({
+          title: '请先登录',
+          icon: 'none'
+        });
+        return false;
+      }
+      return true;
+    },
+    async startInterview() {
+      if (!this.checkLogin()) {
+        return;
+      }
+
+      try {
+        // 保存所选职位信息
+        uni.setStorageSync('selectedJob', JSON.stringify(this.jobDetail));
+        
+        const userInfo = JSON.parse(uni.getStorageSync('userInfo'));
+        const response = await applyJob({
+          job_id: this.jobId,
+          tenant_id: 1,
+          openid: userInfo.openid
+        });
+
+        if (response && response.id) {
+          // 保存应用ID到本地
+          uni.setStorageSync('appId', response.id);
+          
+          // 更新userInfo对象
+          try {
+            userInfo.appId = response.id;
+            uni.setStorageSync('userInfo', JSON.stringify(userInfo));
+          } catch (e) {
+            console.error('更新用户信息失败:', e);
+          }
+
+          // 导航到摄像头页面
+          uni.navigateTo({
+            url: '/pages/Personal/Personal',
+            fail: (err) => {
+              console.error('页面跳转失败:', err);
+              uni.showToast({
+                title: '页面跳转失败',
+                icon: 'none'
+              });
+            }
+          });
+        }
+      } catch (err) {
+        console.error('申请职位失败:', err);
+        uni.showToast({
+          title: '申请职位失败,请重试',
+          icon: 'none'
+        });
+      }
     }
   }
 }
@@ -267,7 +364,7 @@ export default {
   min-width: 16rpx;
   height: 16rpx;
   border-radius: 50%;
-  background-color: #0052d9;
+  background-color: #0039b3;
   margin-right: 10rpx;
   margin-top: 12rpx;
 }
@@ -283,7 +380,7 @@ export default {
   right: 0;
   top: 50%;
   transform: translateY(-50%);
-  background-color: #0052d9;
+  background-color: #0039b3;
   color: #fff;
   writing-mode: vertical-lr;
   padding: 30rpx 20rpx;

+ 1 - 1
pages/success/success.vue

@@ -110,7 +110,7 @@ export default {
 
 .status-text {
   font-size: 36rpx;
-  color: #007AFF;
+  color: #003399;
   font-weight: normal;
 }
 

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

@@ -1,7 +1,5 @@
 "use strict";
-const _imports_0$2 = "/static/login-image.png";
-const _imports_0$1 = "/static/avatar.png";
-const _imports_0 = "/static/images/map.png";
-exports._imports_0 = _imports_0$2;
-exports._imports_0$1 = _imports_0$1;
-exports._imports_0$2 = _imports_0;
+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;

+ 12 - 12
unpackage/dist/dev/mp-weixin/pages/Personal/Personal.wxss

@@ -18,7 +18,7 @@
 		font-weight: bold;
 		margin: 30rpx 0 20rpx 10rpx;
 		color: #333;
-		border-left: 4rpx solid #007AFF;
+		border-left: 4rpx solid #0039b3;
 		padding-left: 15rpx;
 }
 .form-row {
@@ -53,7 +53,7 @@ input {
 }
 .submit-btn {
 		margin-top: 40rpx;
-		background-color: #007AFF;
+		background-color: #0039b3;
 		color: #fff;
 }
 .family-members-list {
@@ -140,7 +140,7 @@ input {
 		width: 40rpx;
 		height: 40rpx;
 		border-radius: 50%;
-		background-color: #007AFF;
+		background-color: #0039b3;
 		display: flex;
 		justify-content: center;
 		align-items: center;
@@ -175,7 +175,7 @@ input {
 		display: flex;
 		align-items: center;
 		justify-content: center;
-		background-color: #52c41a;
+		background-color: #0039b3;
 		box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.1);
 		margin: 0;
 }
@@ -417,7 +417,7 @@ input {
 		z-index: 1;
 }
 .step-item.active:not(:last-child)::after {
-		background-color: #007AFF;
+		background-color: #0039b3;
 }
 .step-number {
 		width: 40rpx;
@@ -434,10 +434,10 @@ input {
 		z-index: 2;
 }
 .step-item.active .step-number {
-		background-color: #007AFF;
+		background-color: #0039b3;
 }
 .step-item.current .step-number {
-		background-color: #007AFF;
+		background-color: #0039b3;
 		box-shadow: 0 0 0 4rpx rgba(0, 122, 255, 0.2);
 }
 .step-name {
@@ -449,7 +449,7 @@ input {
 		color: #333;
 }
 .step-item.current .step-name {
-		color: #007AFF;
+		color: #0039b3;
 		font-weight: bold;
 }
 
@@ -474,7 +474,7 @@ input {
 		color: #666;
 }
 .next-btn {
-		background-color: #007AFF;
+		background-color: #0039b3;
 		color: #fff;
 }
 .submit-btn {
@@ -485,7 +485,7 @@ input {
 		text-align: center;
 		border-radius: 40rpx;
 		font-size: 28rpx;
-		background-color: #52c41a;
+		background-color: #0039b3;
 		color: #fff;
 }
 
@@ -591,7 +591,7 @@ input {
 		font-size: 28rpx;
 }
 .confirm-btn {
-		background-color: #007AFF;
+		background-color: #0039b3;
 		color: #fff;
 }
 .confirm-btn[disabled] {
@@ -617,7 +617,7 @@ input {
 		width: 60rpx;
 		height: 60rpx;
 		border: 6rpx solid #f3f3f3;
-		border-top: 6rpx solid #007AFF;
+		border-top: 6rpx solid #0039b3;
 		border-radius: 50%;
 		animation: spin 1s linear infinite;
 		margin-bottom: 20rpx;

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

@@ -200,7 +200,7 @@ video.data-v-464e78c6::-webkit-media-controls-fullscreen-button {
   width: 120px;
   height: 40px; /* 改为矩形按钮 */
   border-radius: 20px; /* 圆角矩形 */
-  background-color: #002fff; /* 白色背景 */
+  background-color: #0039b3; /* 白色背景 */
   color: #fff;/* 深色文字 */
   font-size: 16px;
   border: none;

+ 8 - 6
unpackage/dist/dev/mp-weixin/pages/index/index.js

@@ -404,8 +404,9 @@ const _sfc_main = {
     },
     viewJobDetail(job) {
       common_vendor.index.setStorageSync("currentJobDetail", JSON.stringify(job));
+      console.log(job);
       common_vendor.index.navigateTo({
-        url: "/pages/job-detail/job-detail",
+        url: "/pages/job-detail/job-detail?id=" + job.id,
         fail: (err) => {
           console.error("页面跳转失败:", err);
           common_vendor.index.showToast({
@@ -422,11 +423,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
     a: common_vendor.f($data.jobList, (job, index, i0) => {
       return {
         a: common_vendor.t(job.title),
-        b: common_vendor.t(job.publish_date),
-        c: common_vendor.t(job.location),
-        d: index,
-        e: $data.selectedJobId === job.id ? 1 : "",
-        f: common_vendor.o(($event) => $options.selectJob(job), index)
+        b: common_vendor.o(($event) => $options.viewJobDetail(job), index),
+        c: common_vendor.t(job.publish_date),
+        d: common_vendor.t(job.location),
+        e: index,
+        f: $data.selectedJobId === job.id ? 1 : "",
+        g: common_vendor.o(($event) => $options.selectJob(job), index)
       };
     }),
     b: !$data.selectedJobId,

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

@@ -1 +1 @@
-<view class="interview-container"><view class="job-list-container"><view class="job-list-title">可选职位列表</view><view class="job-list"><view wx:for="{{a}}" wx:for-item="job" wx:key="d" class="{{['job-item', job.e && 'job-selected']}}" bindtap="{{job.f}}"><view class="job-name">{{job.a}}</view><view class="job-details"><text class="job-salary">{{job.b}}</text><text class="job-location">{{job.c}}</text></view></view></view><button class="apply-btn" disabled="{{b}}" bindtap="{{c}}">申请面试</button></view></view>
+<view class="interview-container"><view class="job-list-container"><view class="job-list-title">可选职位列表</view><view class="job-list"><view wx:for="{{a}}" wx:for-item="job" wx:key="e" class="{{['job-item', job.f && 'job-selected']}}" bindtap="{{job.g}}"><view class="job-name">{{job.a}}</view><view class="job-actions"><button class="detail-btn" catchtap="{{job.b}}">查看详情</button></view><view class="job-details"><text class="job-salary">{{job.c}}</text><text class="job-location">{{job.d}}</text></view></view></view><button class="apply-btn" disabled="{{b}}" bindtap="{{c}}">申请面试</button></view></view>

+ 3 - 3
unpackage/dist/dev/mp-weixin/pages/index/index.wxss

@@ -132,7 +132,7 @@ input {
 		margin-bottom: 30rpx;
 }
 .job-list {
-		max-height: 800rpx;
+		max-height: 1000rpx;
 		overflow-y: auto;
 }
 .job-item {
@@ -158,7 +158,7 @@ input {
 		color: #666;
 }
 .job-salary {
-		color: #ff6b6b;
+		color: #fb752f;
 }
 .apply-btn {
 		width: 100%;
@@ -262,7 +262,7 @@ input {
 		margin-bottom: 15rpx;
 }
 .detail-btn {
-		background-color: #0052d9;
+		background-color: #0039b3;
 		color: #fff;
 		font-size: 24rpx;
 		padding: 6rpx 20rpx;

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

@@ -107,6 +107,6 @@
   text-align: center;
 }
 .next-btn[disabled] {
-  background-color: #b2b2b2;
+  background-color: #0039b3;
   color: #fff;
 }

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

@@ -184,8 +184,8 @@ video.data-v-2a02c54e::-webkit-media-controls-fullscreen-button {
   width: 120px;
   height: 40px; /* 改为矩形按钮 */
   border-radius: 20px; /* 圆角矩形 */
-  background-color: #e74c3c; /* 白色背景 */
-  color: #333; /* 深色文字 */
+  background-color: #0039b3; /* 白色背景 */
+  color: #fff; /* 深色文字 */
   font-size: 16px;
   border: none;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);

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

@@ -51,7 +51,7 @@
 }
 .check-status {
 	font-size: 28rpx;
-	color: #67c23a;
+	color: #003399;
 }
 .status-fail {
 	color: #f56c6c;

+ 108 - 23
unpackage/dist/dev/mp-weixin/pages/job-detail/job-detail.js

@@ -1,29 +1,31 @@
 "use strict";
 const common_vendor = require("../../common/vendor.js");
-const common_assets = require("../../common/assets.js");
+const common_config = require("../../common/config.js");
+const api_user = require("../../api/user.js");
 const _sfc_main = {
   data() {
     return {
       jobDetail: {
-        title: "产品经理",
-        salary: "20k-30k/月",
-        department: "产品研发部 全职",
-        location: "浙江线",
-        experience: "5-8年",
-        benefits: ["五险一金", "节日福利", "股权激励"],
+        title: "",
+        salary: "",
+        department: "",
+        location: "",
+        experience: "",
+        benefits: [],
         description: [
           {
-            subtitle: "战略规划与执行",
-            items: [
-              "负责敏锐的行业热点感受性,密切追踪行业动态与趋势,为企业战略决策提供参考。",
-              "结心制定企业战略规划,将长期愿景转化为可操作的战略目标,并有效分解为各阶段具体任务。"
-            ]
+            subtitle: "岗位要求",
+            items: []
           }
         ]
-      }
+      },
+      selectedJobId: null,
+      jobId: null
     };
   },
-  onLoad() {
+  onLoad(options) {
+    this.jobId = options.id;
+    this.getJobDetail(options.id);
     try {
       const jobDetailStr = common_vendor.index.getStorageSync("currentJobDetail");
       if (jobDetailStr) {
@@ -44,10 +46,94 @@ const _sfc_main = {
     }
   },
   methods: {
-    startInterview() {
-      common_vendor.index.navigateTo({
-        url: "/pages/camera/camera"
-      });
+    async getJobDetail(jobId) {
+      try {
+        const { data } = await common_vendor.index.request({
+          url: `${common_config.apiBaseUrl}/api/mini/job/detail?id=${jobId}&tenant_id=1`,
+          method: "GET"
+        });
+        if (data.code === 2e3) {
+          this.jobDetail = {
+            title: data.data.title || "",
+            salary: data.data.salary_range ? `${data.data.salary_range}/月` : "",
+            department: `${data.data.department || ""} ${data.data.job_type === 1 ? "全职" : "兼职"}`,
+            location: data.data.location || "",
+            experience: data.data.work_experience_required || "不限",
+            benefits: data.data.competency_tags || ["五险一金", "带薪年假", "定期体检"],
+            description: [
+              {
+                subtitle: "岗位要求",
+                items: [
+                  data.data.requirements || "",
+                  data.data.description || ""
+                ].filter((item) => item)
+                // 过滤掉空值
+              }
+            ]
+          };
+        } else {
+          common_vendor.index.showToast({
+            title: "获取职位详情失败",
+            icon: "none"
+          });
+        }
+      } catch (e) {
+        console.error("获取职位详情失败:", e);
+        common_vendor.index.showToast({
+          title: "获取职位详情失败",
+          icon: "none"
+        });
+      }
+    },
+    checkLogin() {
+      const userInfo = common_vendor.index.getStorageSync("userInfo");
+      if (!userInfo) {
+        common_vendor.index.showToast({
+          title: "请先登录",
+          icon: "none"
+        });
+        return false;
+      }
+      return true;
+    },
+    async startInterview() {
+      if (!this.checkLogin()) {
+        return;
+      }
+      try {
+        common_vendor.index.setStorageSync("selectedJob", JSON.stringify(this.jobDetail));
+        const userInfo = JSON.parse(common_vendor.index.getStorageSync("userInfo"));
+        const response = await api_user.applyJob({
+          job_id: this.jobId,
+          tenant_id: 1,
+          openid: userInfo.openid
+        });
+        if (response && response.id) {
+          common_vendor.index.setStorageSync("appId", response.id);
+          try {
+            userInfo.appId = response.id;
+            common_vendor.index.setStorageSync("userInfo", JSON.stringify(userInfo));
+          } catch (e) {
+            console.error("更新用户信息失败:", e);
+          }
+          common_vendor.index.navigateTo({
+            url: "/pages/Personal/Personal",
+            fail: (err) => {
+              console.error("页面跳转失败:", err);
+              common_vendor.index.showToast({
+                title: "页面跳转失败",
+                icon: "none"
+              });
+            }
+          });
+        }
+      } catch (err) {
+        console.error("申请职位失败:", err);
+        common_vendor.index.showToast({
+          title: "申请职位失败,请重试",
+          icon: "none"
+        });
+      }
     }
   }
 };
@@ -58,21 +144,20 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
     c: common_vendor.t($data.jobDetail.department),
     d: common_vendor.t($data.jobDetail.location),
     e: common_vendor.t($data.jobDetail.experience),
-    f: common_assets._imports_0$2,
-    g: common_vendor.f($data.jobDetail.benefits, (benefit, index, i0) => {
+    f: common_vendor.f($data.jobDetail.benefits, (benefit, index, i0) => {
       return {
         a: common_vendor.t(benefit),
         b: index
       };
     }),
-    h: common_vendor.t($data.jobDetail.description[0].subtitle),
-    i: common_vendor.f($data.jobDetail.description[0].items, (item, index, i0) => {
+    g: common_vendor.t($data.jobDetail.description[0].subtitle),
+    h: common_vendor.f($data.jobDetail.description[0].items, (item, index, i0) => {
       return {
         a: common_vendor.t(item),
         b: index
       };
     }),
-    j: common_vendor.o((...args) => $options.startInterview && $options.startInterview(...args))
+    i: 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"]]);

+ 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="{{f}}" mode="aspectFill"></image><view class="map-time data-v-2bde8e2a">预计14:32到达</view><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="benefits-list data-v-2bde8e2a"><view wx:for="{{g}}" wx:for-item="benefit" wx:key="b" class="benefit-tag data-v-2bde8e2a">{{benefit.a}}</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-subtitle data-v-2bde8e2a">{{h}}</view><view class="description-content data-v-2bde8e2a"><view wx:for="{{i}}" 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">{{item.a}}</text></view></view></view></view><view class="interview-button data-v-2bde8e2a" bindtap="{{j}}"><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"><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="benefits-list data-v-2bde8e2a"><view wx:for="{{f}}" wx:for-item="benefit" wx:key="b" class="benefit-tag data-v-2bde8e2a">{{benefit.a}}</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-subtitle data-v-2bde8e2a">{{g}}</view><view class="description-content data-v-2bde8e2a"><view wx:for="{{h}}" 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">{{item.a}}</text></view></view></view></view><view class="interview-button data-v-2bde8e2a" bindtap="{{i}}"><text class="data-v-2bde8e2a">开始面试</text></view></view>

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

@@ -153,7 +153,7 @@
   min-width: 16rpx;
   height: 16rpx;
   border-radius: 50%;
-  background-color: #0052d9;
+  background-color: #0039b3;
   margin-right: 10rpx;
   margin-top: 12rpx;
 }
@@ -167,7 +167,7 @@
   right: 0;
   top: 50%;
   transform: translateY(-50%);
-  background-color: #0052d9;
+  background-color: #0039b3;
   color: #fff;
   -webkit-writing-mode: vertical-lr;
           writing-mode: vertical-lr;

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

@@ -35,7 +35,7 @@
 }
 .status-text {
   font-size: 36rpx;
-  color: #007AFF;
+  color: #003399;
   font-weight: normal;
 }
 .tips-container {

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

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