Pārlūkot izejas kodu

添加简历搜藏功能

wkw 6 mēneši atpakaļ
vecāks
revīzija
65aa80fdb3

+ 5 - 0
common/httpRequest.js

@@ -169,6 +169,11 @@ module.exports = {
 								title: '请先登录,以便更好使用!',
 								icon: 'none'
 							})
+						}else if (result.data.code !=0&&result.data.msg!='未进入公司') {
+							uni.showToast({
+								title: result.data.msg||'查询失败',
+								icon: 'none'
+							})
 						}
 						succ.call(self, result.data)
 					},

+ 2 - 2
package/jobIntention/preferenceSetting.vue

@@ -94,9 +94,9 @@ export default {
 		togglePreference(name) {
 			const index = this.selectedPreferences.indexOf(name);
 			if (index === -1) {
-				if (this.selectedPreferences.length > 19) {
+				if (this.selectedPreferences.length > 4) {
 					uni.showToast({
-						title: '最多选择20个偏好!',
+						title: '最多选择5个偏好!',
 						icon: 'none'
 					})
 					return;

+ 6 - 0
pages.json

@@ -42,6 +42,12 @@
 				"navigationStyle": "custom"
 			}
 		},
+		{
+			"path": "pages/my/headhunter",
+			"style": {
+				"navigationBarTitleText": "猎头服务"
+			}
+		},
 		{
 			"path": "pages/my/jobPostingSecond",
 			"style": {

+ 19 - 0
pages/my/headhunter.vue

@@ -0,0 +1,19 @@
+<template>
+	<view class="lt-img">
+		<image src="/static/images/lt.png" mode="heightFix"></image>
+	</view>
+</template>
+
+<script>
+</script>
+
+<style>
+	.lt-img{
+		width: 100%;
+		height: calc(100vh - 44px);
+	}
+	.lt-img image{
+		width: 100%;
+		height: 100%;
+	}
+</style>

+ 4 - 4
pages/my/index.vue

@@ -230,10 +230,6 @@
 						<text class="section-title">更多功能</text>
 						<view class="function-grid">
 							<!-- <view class="function-item">
-								<image src="../../static/images/index/moreSkill1.svg" class="function-icon"></image>
-								<text class="function-text">猎头服务</text>
-							</view>
-							<view class="function-item">
 								<image src="../../static/images/index/moreSkill2.svg" class="function-icon"></image>
 								<text class="function-text">精选公司</text>
 							</view> -->
@@ -249,6 +245,10 @@
 								<image src="../../static/images/index/wyts.svg" class="function-icon"></image>
 								<text class="function-text">我要投诉</text>
 							</view>
+							<view class="function-item" @click="goNav('/pages/my/headhunter')">
+								<image src="../../static/images/index/moreSkill1.svg" class="function-icon"></image>
+								<text class="function-text">猎头服务</text>
+							</view>
 							<!-- <view v-if="token" class="function-item" @click="goOut()">
 								<image src="../../static/images/my/icon/utils/utils8.png"
 									class="function-icon"></image>

+ 1002 - 1007
pages/recruitmentData/communicationRecords.vue

@@ -1,1014 +1,1009 @@
 <template>
-  <view class="page">
-    <!-- Custom Navbar -->
-    <view class="custom-navbar">
-      <view class="navbar-content">
-        <view class="navbar-left" @click="goBack">
-          <u-icon name="arrow-leftward" color="color: rgba(51, 51, 51, 1);" size="36"></u-icon>
-        </view>
-        <view class="navbar-title">沟通记录</view>
-        <view class="navbar-right"></view>
-      </view>
-    </view>
-
-    <view class="tab-section-bg">
-      <text class="title-text">沟通记录</text>
-      <text class="interview-manage" @click="goToInterviewManage">面试管理</text>
-    </view>
-
-    <!-- Tab Navigation -->
-    <view class="tab-section">
-      <u-tabs 
-        :list="tabs" 
-        :current="activeTab" 
-        @change="switchTab"
-        :is-scroll="false"
-        :height="88"
-        :font-size="24"
-        active-color="rgba(1, 107, 246, 1)"
-        inactive-color="rgba(102, 102, 102, 1)"
-        :bar-width="80"
-        :bar-height="4"
-        :gutter="40"
-        bg-color="#ffffff"
-        :bar-style="{
+	<view class="page">
+		<!-- Custom Navbar -->
+		<view class="custom-navbar">
+			<view class="navbar-content">
+				<view class="navbar-left" @click="goBack">
+					<u-icon name="arrow-leftward" color="color: rgba(51, 51, 51, 1);" size="36"></u-icon>
+				</view>
+				<view class="navbar-title">沟通记录</view>
+				<view class="navbar-right"></view>
+			</view>
+		</view>
+
+		<view class="tab-section-bg">
+			<text class="title-text">沟通记录</text>
+			<text class="interview-manage" @click="goToInterviewManage">面试管理</text>
+		</view>
+
+		<!-- Tab Navigation -->
+		<view class="tab-section">
+			<u-tabs :list="tabs" :current="activeTab" @change="switchTab" :is-scroll="false" :height="88"
+				:font-size="24" active-color="rgba(1, 107, 246, 1)" inactive-color="rgba(102, 102, 102, 1)"
+				:bar-width="80" :bar-height="4" :gutter="40" bg-color="#ffffff" :bar-style="{
           borderRadius: '2rpx'
-        }"
-      ></u-tabs>
-    </view>
-
-     <!-- Content Section -->
-     <view class="content-section">
-       <!-- Communication Records List -->
-       <view class="communication-list" v-if="activeTab === 0">
-         <!-- 有数据时显示列表 -->
-         <view v-if="communicationRecords.length > 0">
-           <!-- Date Group -->
-           <view class="date-group" v-for="(group, groupIndex) in groupedRecords" :key="groupIndex">
-             <view class="date-header">
-               <text class="date-text">{{ group.date }}</text>
-             </view>
-             
-             <!-- Records for this date -->
-             <view 
-               class="talent-card" 
-               v-for="(record, recordIndex) in group.records" 
-               :key="recordIndex"
-               @click="goToResumeDetail(record)"
-             >
-               <view class="talent-content">
-                 <!-- 头像和基本信息 -->
-                 <view class="talent-header">
-                   <image :src="record.userAvatar" class="talent-avatar" mode="aspectFill"></image>
-                   <view class="talent-info">
-                     <view class="talent-name-section">
-                       <view class="talent-name">{{ record.userName }}</view>
-                       <view class="talent-tags">
-                         <view class="status-tag online" v-if="record.isOnline">在线</view>
-                         <view class="status-tag hot" v-if="record.isHot">热门搜索</view>
-                         <view class="status-tag active" v-if="record.lastActive">{{ record.lastActive }}</view>
-                       </view>
-                     </view>
-                     <!-- 经验和薪资 -->
-                     <view class="talent-experience">
-                       <text class="experience-text">{{ record.resumesWorkExperience }}年</text>
-                       <text class="education-salary">{{ record.degree }} {{ record.minSalary }}-{{record.maxSalary}}</text>
-                       <text class="status-text">{{ record.resumesStatus==1?'在职&考虑机会':"离职" }}</text>
-                     </view>
-                   </view>
-                 </view>
-                 
-                 <!-- 当前职位 -->
-                 <view class="current-job" v-if="record.companyName">
-                   <image src="../../static/images/aixin.svg" class="job-icon" mode="aspectFit"></image>
-                   <text class="job-text">{{ record.companyName }}</text>
-                   <!-- <text class="work-period">
-                    <span v-if="getYearMonthInterval(record.lastWorkStartTime, record.lastWorkEndTime)[0] > 0">{{ getYearMonthInterval(record.lastWorkStartTime, record.lastWorkEndTime)[0] }}年</span>
-                    {{ getYearMonthInterval(record.lastWorkStartTime, record.lastWorkEndTime)[1] }}个月</text> -->
-                 </view>
-                 
-                 <!-- 求职期望 -->
-                 <view class="job-expectation">
-                   <image src="../../static/images/xiangzi.svg" class="job-icon" mode="aspectFit"></image>
-                   <text class="expectation-text">求职期望: {{ record.expectedPosition }}</text>
-                 </view>
-                 
-                 <!-- 技能标签 -->
-                 <view class="skill-tags">
-                   <view 
-                     class="skill-tag" 
-                     v-for="(skill, skillIndex) in record.skillName.split(',')" 
-                     :key="skillIndex"
-                   >
-                     {{ skill }}
-                   </view>
-                 </view>
-                 
-                 <!-- 工作描述 -->
-                 <view class="job-description">
-                   <text class="description-text">{{ record.workContent }}</text>
-                 </view>
-               </view>
-             </view>
-           </view>
-         </view>
-         
-         <!-- 空状态显示 -->
-         <view class="empty-state" v-else>
-           <view class="empty-illustration">
-             <image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
-           </view>
-         </view>
-       </view>
-
-       <!-- Interview Records List -->
-       <view class="interview-list" v-if="activeTab === 1">
-         <!-- Date Selector -->
-         <view class="date-selector">
-           <view class="week-days">
-             <text class="day-name" v-for="day in currentWeekDays" :key="day.name">{{ day.name }}</text>
-           </view>
-           <view class="week-dates">
-             <view 
-               class="date-item" 
-               :class="{ active: date.isSelected }" 
-               v-for="date in currentWeekDates" 
-               :key="date.value"
-               @click="selectDate(date)"
-             >
-               <text class="date-value">{{ date.value }}</text>
-             </view>
-           </view>
-         </view>
-
-         <!-- Interview Records -->
-         <view class="interview-records">
-           <!-- 有数据时显示列表 -->
-           <view v-if="interviewRecords.length > 0">
-             <view 
-               class="interview-record" 
-               :class="{ 'today': formatDate(record.interviewDateTime,'YYYY-MM-DD') === formatDate(selectDate,'YYYY-MM-DD') }"
-               v-for="(record, index) in interviewRecords" 
-               :key="index"
-               @click="goToInterviewDetail(record)"
-             >
-               <view class="record-content">
-                 <view class="record-left">
-                   <text class="date-label">{{ checkDate(record.interviewDateTime) === 1 ? '今天' : checkDate(record.interviewDateTime) === 2 ? '明天' : record.interviewDateTime.substring(5, 10) }}</text>
-                   <text class="time-label">{{ record.detailTime? record.detailTime : record.interviewDateTime.substring(11, 16) }}</text>
-                 </view>
-                 <view class="record-divider"></view>
-                 <view class="record-right">
-                   <text class="candidate-name">{{ record.userEntity.userName }}</text>
-				   <block v-if="record.resumesListDto.length > 0">
-					   <text class="candidate-details">{{ record.resumesListDto[0].resumesWorkExperience? record.resumesListDto[0].resumesWorkExperience + '年' :'无经验'}} {{ record.resumesListDto[0].degree }} {{ record.resumesListDto[0].minSalary }}-{{ record.resumesListDto[0].maxSalary }}</text>
-					</block>
-                 </view>
-               </view>
-             </view>
-           </view>
-           
-           <!-- 空状态显示 -->
-           <view class="empty-state" v-else>
-             <view class="empty-illustration">
-               <image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
-             </view>
-           </view>
-         </view>
-       </view>
-
-       <!-- 收藏标签页 -->
-       <view class="favorite-list" v-if="activeTab === 2">
-         <!-- 有数据时显示列表 -->
-         <view v-if="favoriteRecords.length > 0">
-           <!-- 收藏记录列表内容 -->
-           <view class="qyList flex justify-center">
-        <view class="qyList-box">
-          <view
-            class="qyList-box-item flex justify-center"
-            v-for="(item, index) in favoriteRecords"
-            :key="index"
-            @click="goNav(`/pages/talentSearch/resumeDetail?resumesId=${item.resumesId}&postPushId=${item.postPushId}`)"
-          >
-            <view class="qyList-box-item-box">
-              <view class="qyList-box-item-info flex justify-between align-center">
-                <view class="qyList-box-item-info-l">
-                  <view
-                    class=""
-                    style="color: #212121; font-size: 38rpx; font-weight: 800"
-                  >
-                    {{ item.userEntity.userName }}
-                  </view>
-                  <view
-                    class="flex align-center flex-wrap"
-                    style="color: #999999; font-size: 26rpx; margin-top: 10rpx"
-                  >
-                    <text>{{ item.userEntity.userAge }}岁</text>
-                    <text style="margin-left: 20rpx; margin-right: 20rpx">|</text>
-                    <text>{{ item.userEntity.resumesWorkExperience }}年</text>
-                    <text style="margin-left: 20rpx; margin-right: 20rpx">|</text>
-                    <text>{{ item.userEntity.school }}</text>
-                    <text style="margin-left: 20rpx; margin-right: 20rpx">|</text>
-                    <text>期望 {{ item.userEntity.minSalary }}-{{ item.userEntity.maxSalary }}</text>
-                  </view>
-                </view>
-                <view class="qyList-box-item-info-r">
-                  <image
-                    :src="item.userEntity.userAvatar ? item.userEntity.userAvatar : '../../static/logo.png'"
-                    style="width: 95rpx; height: 95rpx; border-radius: 50%"
-                    mode=""
-                  ></image>
-                </view>
-              </view>
-              <view class="qyList-box-item-job flex align-center">
-                <u-icon
-                  name="heart-fill"
-                  color="#016BF6"
-                  size="30"
-                  style="margin-right: 16rpx"
-                >
-                </u-icon>
-                期望岗位:{{ item.userEntity.expectedPosition }}
-              </view>
-              <view
-                class="qyList-box-item-job flex align-center"
-              >
-                <image
-                  src="../../static/images/qi.png"
-                  style="width: 30rpx; height: 32rpx; margin-right: 16rpx"
-                  mode=""
-                ></image>
-                {{ item.userEntity.companyName }} /
-                {{ item.userEntity.lastWorkPosition }}
-              </view>
-              <view class="qyList-box-item-rem" v-if="item.resumesDetails">
-                优势:{{ item.userEntity.workContent }}
-              </view>
-            </view>
-          </view>
-        </view>
-      </view>
-         </view>
-         
-         <!-- 空状态显示 -->
-         <view class="empty-state" v-else>
-           <view class="empty-illustration">
-             <image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
-           </view>
-         </view>
-       </view>
-
-       <!-- 收藏职位标签页 -->
-       <view class="favorite-jobs-list" v-if="activeTab === 3">
-         <!-- 有数据时显示列表 -->
-         <view v-if="favoriteJobs.length > 0">
-           <!-- 收藏职位列表内容 -->
-         </view>
-         
-         <!-- 空状态显示 -->
-         <view class="empty-state" v-else>
-           <view class="empty-illustration">
-             <image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
-           </view>
-         </view>
-       </view>
-     </view>
-   </view>
- </template>
+        }"></u-tabs>
+		</view>
+
+		<!-- Content Section -->
+		<view class="content-section">
+			<!-- Communication Records List -->
+			<view class="communication-list" v-if="activeTab === 0">
+				<!-- 有数据时显示列表 -->
+				<view v-if="communicationRecords.length > 0">
+					<!-- Date Group -->
+					<view class="date-group" v-for="(group, groupIndex) in groupedRecords" :key="groupIndex">
+						<view class="date-header">
+							<text class="date-text">{{ group.date }}</text>
+						</view>
+
+						<!-- Records for this date -->
+						<view class="talent-card" v-for="(record, recordIndex) in group.records" :key="recordIndex"
+							@click="goToResumeDetail(record)">
+							<view class="talent-content">
+								<!-- 头像和基本信息 -->
+								<view class="talent-header">
+									<image :src="record.userAvatar" class="talent-avatar" mode="aspectFill"></image>
+									<view class="talent-info">
+										<view class="talent-name-section">
+											<view class="talent-name">{{ record.userName }}</view>
+											<view class="talent-tags">
+												<view class="status-tag online" v-if="record.isOnline">在线</view>
+												<view class="status-tag hot" v-if="record.isHot">热门搜索</view>
+												<view class="status-tag active" v-if="record.lastActive">
+													{{ record.lastActive }}</view>
+											</view>
+										</view>
+										<!-- 经验和薪资 -->
+										<view class="talent-experience">
+											<text class="experience-text">{{ record.resumesWorkExperience }}年</text>
+											<text class="education-salary">{{ record.degree }}
+												{{ record.minSalary }}-{{record.maxSalary}}</text>
+											<text
+												class="status-text">{{ record.resumesStatus==1?'在职&考虑机会':"离职" }}</text>
+										</view>
+									</view>
+								</view>
+
+								<!-- 当前职位 -->
+								<view class="current-job" v-if="record.companyName">
+									<image src="../../static/images/aixin.svg" class="job-icon" mode="aspectFit">
+									</image>
+									<text class="job-text">{{ record.companyName }}</text>
+								</view>
+
+								<!-- 求职期望 -->
+								<view class="job-expectation">
+									<image src="../../static/images/xiangzi.svg" class="job-icon" mode="aspectFit">
+									</image>
+									<text class="expectation-text">求职期望: {{ record.expectedPosition }}</text>
+								</view>
+
+								<!-- 技能标签 -->
+								<view class="skill-tags">
+									<view class="skill-tag" v-for="(skill, skillIndex) in record.skillName.split(',')"
+										:key="skillIndex">
+										{{ skill }}
+									</view>
+								</view>
+
+								<!-- 工作描述 -->
+								<view class="job-description">
+									<text class="description-text">{{ record.workContent }}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+
+				<!-- 空状态显示 -->
+				<view class="empty-state" v-else>
+					<view class="empty-illustration">
+						<image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
+					</view>
+				</view>
+			</view>
+
+			<!-- Interview Records List -->
+			<view class="interview-list" v-if="activeTab === 1">
+				<!-- Date Selector -->
+				<view class="date-selector">
+					<view class="week-days">
+						<text class="day-name" v-for="day in currentWeekDays" :key="day.name">{{ day.name }}</text>
+					</view>
+					<view class="week-dates">
+						<view class="date-item" :class="{ active: date.isSelected }" v-for="date in currentWeekDates"
+							:key="date.value" @click="selectDate(date)">
+							<text class="date-value">{{ date.value }}</text>
+						</view>
+					</view>
+				</view>
+
+				<!-- Interview Records -->
+				<view class="interview-records">
+					<!-- 有数据时显示列表 -->
+					<view v-if="interviewRecords.length > 0">
+						<view class="interview-record"
+							:class="{ 'today': formatDate(record.interviewDateTime,'YYYY-MM-DD') === formatDate(selectDate,'YYYY-MM-DD') }"
+							v-for="(record, index) in interviewRecords" :key="index"
+							@click="goToInterviewDetail(record)">
+							<view class="record-content">
+								<view class="record-left">
+									<text
+										class="date-label">{{ checkDate(record.interviewDateTime) === 1 ? '今天' : checkDate(record.interviewDateTime) === 2 ? '明天' : record.interviewDateTime.substring(5, 10) }}</text>
+									<text
+										class="time-label">{{ record.detailTime? record.detailTime : record.interviewDateTime.substring(11, 16) }}</text>
+								</view>
+								<view class="record-divider"></view>
+								<view class="record-right">
+									<text class="candidate-name">{{ record.userEntity.userName }}</text>
+									<block v-if="record.resumesListDto.length > 0">
+										<text
+											class="candidate-details">{{ record.resumesListDto[0].resumesWorkExperience? record.resumesListDto[0].resumesWorkExperience + '年' :'无经验'}}
+											{{ record.resumesListDto[0].degree }}
+											{{ record.resumesListDto[0].minSalary }}-{{ record.resumesListDto[0].maxSalary }}</text>
+									</block>
+								</view>
+							</view>
+						</view>
+					</view>
+
+					<!-- 空状态显示 -->
+					<view class="empty-state" v-else>
+						<view class="empty-illustration">
+							<image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
+						</view>
+					</view>
+				</view>
+			</view>
+
+			<!-- 收藏标签页 -->
+			<view class="favorite-list" v-if="activeTab === 2">
+				<!-- 有数据时显示列表 -->
+				<view v-if="favoriteRecords.length > 0">
+					<!-- 收藏记录列表内容 -->
+					<view class="qyList flex justify-center">
+						<view class="qyList-box">
+							<view class="qyList-box-item flex justify-center" v-for="(item, index) in favoriteRecords"
+								:key="index"
+								@click="goNav(`/pages/talentSearch/resumeDetail?resumesId=${item.resumesId}&postPushId=${item.postPushId}`)">
+								<view class="qyList-box-item-box">
+									<view class="qyList-box-item-info flex justify-between align-center">
+										<view class="qyList-box-item-info-l">
+											<view style="color: #212121; font-size: 38rpx; font-weight: 800">
+												{{ item.resumes.resumesName }}
+											</view>
+											<view class="flex align-center flex-wrap"
+												style="color: #999999; font-size: 26rpx; margin-top: 10rpx">
+												<text>{{ item.resumes.resumesAge }}岁</text>
+												<text style="margin-left: 20rpx; margin-right: 20rpx">|</text>
+												<text>{{ item.resumes.resumesWorkExperience }}年</text>
+												<text style="margin-left: 20rpx; margin-right: 20rpx">|</text>
+												<text>{{ item.resumes.resumesEducation }}</text>
+												<text style="margin-left: 20rpx; margin-right: 20rpx">|</text>
+												<text>期望{{item.resumes.resumesCompensation}}</text>
+											</view>
+										</view>
+										<view class="qyList-box-item-info-r" v-if="item.resumesListDto[0]">
+											<image
+												:src="item.resumesListDto[0].userAvatar ? item.resumesListDto[0].userAvatar : '../../static/logo.png'"
+												style="width: 95rpx; height: 95rpx; border-radius: 50%" mode=""></image>
+										</view>
+									</view>
+									<view class="qyList-box-item-job flex align-center" v-if="item.resumesListDto[0]">
+										<image src="../../static/images/qi.png"
+											style="width: 30rpx; height: 32rpx; margin-right: 16rpx" mode=""></image>
+										<view class="txt-desc flex align-center justify-between">
+											<view>
+												<view>{{ item.resumesListDto[0].companyName }}</view>
+												<view v-if="item.resumesListDto[0]">
+													{{ item.resumesListDto[0].lastWorkStartTime ? item.resumesListDto[0].lastWorkStartTime.slice(0, 10)
+														: ''
+													}}--{{
+														item.resumesListDto[0].lastWorkEndTime ? item.resumesListDto[0].lastWorkEndTime.slice(0, 10) : '' }}
+												</view>
+											</view>
+											<view>
+												<view>
+													{{ item.resumes.school ? item.resumes.school : '' }}
+												</view>
+												<view>
+													{{ item.resumes.resumesEducation ? item.resumes.resumesEducation : '' }}
+												</view>
+											</view>
+										</view>
+									</view>
+									<view class="qyList-box-item-job flex align-center">
+										<u-icon name="heart-fill" color="#016BF6" size="30" style="margin-right: 16rpx">
+										</u-icon>
+										期望岗位:{{ item.resumes.industryName }}
+									</view>
+									<!-- <view class="qyList-box-item-rem" v-if="item.resumesDetails">
+										优势:{{ item.resumes.workContent }}
+									</view> -->
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+
+				<!-- 空状态显示 -->
+				<view class="empty-state" v-else>
+					<view class="empty-illustration">
+						<image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
+					</view>
+				</view>
+			</view>
+
+			<!-- 收藏职位标签页 -->
+			<view class="favorite-jobs-list" v-if="activeTab === 3">
+				<!-- 有数据时显示列表 -->
+				<view v-if="favoriteJobs.length > 0">
+					<!-- 收藏职位列表内容 -->
+				</view>
+
+				<!-- 空状态显示 -->
+				<view class="empty-state" v-else>
+					<view class="empty-illustration">
+						<image src="../../static/images/index/Hrempty.svg" class="empty-image" mode="aspectFit" />
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
 
 <script>
-export default {
-  data() {
-    return {
-      statusBarHeight: 0,
-      activeTab: 0,
-      tabs: [
-        { name: '沟通过' },
-        { name: '面试' },
-        { name: '收藏简历' },
-        // { name: '收藏职位' }
-      ],
-      communicationRecords: [],
-       // 面试相关数据
-       selectedDate: null, // 当前选中的日期
-       // 收藏相关数据
-       favoriteRecords: [], // 收藏记录(空数组,显示空状态)
-       favoriteJobs: [], // 收藏职位(空数组,显示空状态)
-       interviewRecords: [
-       ]
-     }
-  },
-   computed: {
-     groupedRecords() {
-         const records = Array.isArray(this.communicationRecords)
-           ? this.communicationRecords
-           : []
-     
-         const groups = {}
-     
-         records
-           .filter(r => r && r.lastTime) // 过滤掉 null 或没有 lastTime 的数据
-           .forEach(record => {
-             const date = record.lastTime.substring(0, 10)
-             if (!groups[date]) {
-               groups[date] = { date, records: [] }
-             }
-             groups[date].records.push(record)
-           })
-     
-         return Object.values(groups)
-       },
-     // 当前周的星期名称
-     currentWeekDays() {
-       const weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
-       return weekDays.map(name => ({ name }))
-     },
-     // 当前周的日期
-     currentWeekDates() {
-       const today = new Date()
-       const currentDay = today.getDay() // 0-6,0是周日
-       
-       // 获取本周一的日期(周一开始)
-       const monday = new Date(today)
-       // 如果今天是周日(0),则往前推6天到周一
-       // 如果今天是周一(1),则往前推0天
-       // 如果今天是周二(2),则往前推1天
-       const daysToMonday = currentDay === 0 ? 6 : currentDay - 1
-       monday.setDate(today.getDate() - daysToMonday)
-       
-       // 生成本周7天的日期
-       const weekDates = []
-       for (let i = 0; i < 7; i++) {
-         const date = new Date(monday)
-         date.setDate(monday.getDate() + i)
-         
-         const isToday = date.toDateString() === today.toDateString()
-         const isSelected = this.selectedDate ? 
-           date.toDateString() === this.selectedDate.toDateString() : isToday
-         
-         weekDates.push({
-           value: date.getDate().toString(),
-           date: date,
-           isSelected: isSelected
-         })
-       }
-       
-       return weekDates
-     }
-   },
-  onLoad(options) {
-    console.log(options);
-    this.activeTab = options.tab ? parseInt(options.tab) : 0
-    const systemInfo = uni.getSystemInfoSync()
-    this.statusBarHeight = systemInfo.statusBarHeight || 0
-	  this.getData()
-    this.getInterviewRecords()
-    this.getFavoriteRecords()
-  },
-  methods: {
-    getFavoriteRecords(){
-      this.$Request.getT("/app/myCollection/getCompanyCollectionList").then(res=>{
-        console.log(res);
-        this.favoriteRecords = res.data.records //收藏记录
-      })
-    },
-    checkDate(targetDate) {
-      const today = new Date();
-      const tomorrow = new Date();
-      tomorrow.setDate(today.getDate() + 1);
-       
-      const inputDate = new Date(targetDate);
-       
-      // 重置时间为 00:00:00 进行比较
-      today.setHours(0, 0, 0, 0);
-      tomorrow.setHours(0, 0, 0, 0);
-      inputDate.setHours(0, 0, 0, 0);
-       
-      if (inputDate.getTime() === today.getTime()) {
-          return 1; // 今天
-      } else if (inputDate.getTime() === tomorrow.getTime()) {
-          return 2; // 明天
-      } else {
-          return 0; // 其他日期
-      }
-    },
-    formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
-      const d = new Date(date);
-      const padZero = (num) => String(num).padStart(2, '0');
-      const replacements = {
-          'YYYY': d.getFullYear(),
-          'MM': padZero(d.getMonth() + 1),
-          'DD': padZero(d.getDate()),
-          'HH': padZero(d.getHours()),
-          'mm': padZero(d.getMinutes()),
-          'ss': padZero(d.getSeconds()),
-          'SSS': padZero(d.getMilliseconds()).padStart(3, '0'),
-          'M': d.getMonth() + 1,
-          'D': d.getDate(),
-          'H': d.getHours(),
-          'm': d.getMinutes(),
-          's': d.getSeconds()
-      };
-      return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS|M|D|H|m|s/g, match => replacements[match]);
-    },
-    getInterviewRecords(){
-      this.$Request.getT("/app/interviewRecord/getHrInterviewList").then(res=>{
-        console.log(res);
-        this.interviewRecords = res.data.records //沟通记录
-      })
-    },
-    getYearMonthInterval(startDate, endDate) {
-      // 确保传入的是 Date 对象
-      const start = new Date(startDate);
-      const end = new Date(endDate);
-      console.log(start,end,'为啥')
-      return;
-      // 确保结束日期在开始日期之后
-      if (end < start) {
-        throw new Error('结束日期必须在开始日期之后');
-      }
-
-      // 计算年份差异
-      let yearDiff = end.getFullYear() - start.getFullYear();
-
-      // 计算月份差异
-      let monthDiff = end.getMonth() - start.getMonth();
-
-      // 如果结束日期的月份小于开始日期的月份,需要借年
-      if (monthDiff < 0) {
-        yearDiff--;
-        monthDiff += 12;
-      }
-
-      // 如果月份相同,但结束日期的日期小于开始日期的日期,也需要借月
-      if (monthDiff === 0 && end.getDate() < start.getDate()) {
-        yearDiff--;
-        monthDiff = 11;
-      } else if (end.getDate() < start.getDate()) {
-        monthDiff--;
-      }
-
-      return [yearDiff, monthDiff];
-    },
-    goBack() {
-      uni.navigateBack()
-    },
-    switchTab(index) {
-      this.activeTab = index
-    },
-     goToResumeDetail(record) {
-       console.log('查看简历详情:', record)
-       uni.navigateTo({
-         url: `/pages/talentSearch/resumeDetail?resumeId=${record.id}`
-       })
-     },
-     selectDate(date) {
-       // 选中当前点击的日期
-       this.selectedDate = date.date
-       console.log('选中日期:', date.date)
-     },
-    goToInterviewDetail(record) {
-      console.log('查看面试详情:', record)
-      uni.navigateTo({
-        url: `/my/jilu/bossMianshiDetail?recordId=${record.recordId}`
-      })
-    },
-    goToInterviewManage() {
-      console.log('跳转到面试管理')
-      uni.navigateTo({
-        url: '/pages/recruitmentData/interviewManage'
-      })
-    },
-	getData(){
-		this.$Request.getT("/app/chat/chatUser").then(res=>{
-			console.log(res);
-			this.communicationRecords = res.data.records //沟通记录
-		})
-	},
-  goNav(url){
-    uni.navigateTo({
-      url: url
-    })
-  }
- }
-}
+	export default {
+		data() {
+			return {
+				statusBarHeight: 0,
+				activeTab: 0,
+				tabs: [{
+						name: '沟通过'
+					},
+					{
+						name: '面试'
+					},
+					{
+						name: '收藏简历'
+					},
+					// { name: '收藏职位' }
+				],
+				communicationRecords: [],
+				// 面试相关数据
+				selectedDate: null, // 当前选中的日期
+				// 收藏相关数据
+				favoriteRecords: [], // 收藏记录(空数组,显示空状态)
+				favoriteJobs: [], // 收藏职位(空数组,显示空状态)
+				interviewRecords: []
+			}
+		},
+		computed: {
+			groupedRecords() {
+				const records = Array.isArray(this.communicationRecords) ?
+					this.communicationRecords :
+					[]
+
+				const groups = {}
+
+				records
+					.filter(r => r && r.lastTime) // 过滤掉 null 或没有 lastTime 的数据
+					.forEach(record => {
+						const date = record.lastTime.substring(0, 10)
+						if (!groups[date]) {
+							groups[date] = {
+								date,
+								records: []
+							}
+						}
+						groups[date].records.push(record)
+					})
+
+				return Object.values(groups)
+			},
+			// 当前周的星期名称
+			currentWeekDays() {
+				const weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+				return weekDays.map(name => ({
+					name
+				}))
+			},
+			// 当前周的日期
+			currentWeekDates() {
+				const today = new Date()
+				const currentDay = today.getDay() // 0-6,0是周日
+
+				// 获取本周一的日期(周一开始)
+				const monday = new Date(today)
+				// 如果今天是周日(0),则往前推6天到周一
+				// 如果今天是周一(1),则往前推0天
+				// 如果今天是周二(2),则往前推1天
+				const daysToMonday = currentDay === 0 ? 6 : currentDay - 1
+				monday.setDate(today.getDate() - daysToMonday)
+
+				// 生成本周7天的日期
+				const weekDates = []
+				for (let i = 0; i < 7; i++) {
+					const date = new Date(monday)
+					date.setDate(monday.getDate() + i)
+
+					const isToday = date.toDateString() === today.toDateString()
+					const isSelected = this.selectedDate ?
+						date.toDateString() === this.selectedDate.toDateString() : isToday
+
+					weekDates.push({
+						value: date.getDate().toString(),
+						date: date,
+						isSelected: isSelected
+					})
+				}
+
+				return weekDates
+			}
+		},
+		onLoad(options) {
+			console.log(options);
+			this.activeTab = options.tab ? parseInt(options.tab) : 0
+			const systemInfo = uni.getSystemInfoSync()
+			this.statusBarHeight = systemInfo.statusBarHeight || 0
+			this.getData()
+			this.getInterviewRecords()
+			this.getFavoriteRecords()
+		},
+		methods: {
+			getFavoriteRecords() {
+				this.$Request.getT("/app/myCollection/getCompanyCollectionList").then(res => {
+					console.log(res);
+					this.favoriteRecords = res.data.records //收藏记录
+				})
+			},
+			checkDate(targetDate) {
+				const today = new Date();
+				const tomorrow = new Date();
+				tomorrow.setDate(today.getDate() + 1);
+
+				const inputDate = new Date(targetDate);
+
+				// 重置时间为 00:00:00 进行比较
+				today.setHours(0, 0, 0, 0);
+				tomorrow.setHours(0, 0, 0, 0);
+				inputDate.setHours(0, 0, 0, 0);
+
+				if (inputDate.getTime() === today.getTime()) {
+					return 1; // 今天
+				} else if (inputDate.getTime() === tomorrow.getTime()) {
+					return 2; // 明天
+				} else {
+					return 0; // 其他日期
+				}
+			},
+			formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
+				const d = new Date(date);
+				const padZero = (num) => String(num).padStart(2, '0');
+				const replacements = {
+					'YYYY': d.getFullYear(),
+					'MM': padZero(d.getMonth() + 1),
+					'DD': padZero(d.getDate()),
+					'HH': padZero(d.getHours()),
+					'mm': padZero(d.getMinutes()),
+					'ss': padZero(d.getSeconds()),
+					'SSS': padZero(d.getMilliseconds()).padStart(3, '0'),
+					'M': d.getMonth() + 1,
+					'D': d.getDate(),
+					'H': d.getHours(),
+					'm': d.getMinutes(),
+					's': d.getSeconds()
+				};
+				return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS|M|D|H|m|s/g, match => replacements[match]);
+			},
+			getInterviewRecords() {
+				this.$Request.getT("/app/interviewRecord/getHrInterviewList").then(res => {
+					console.log(res);
+					this.interviewRecords = res.data.records //沟通记录
+				})
+			},
+			getYearMonthInterval(startDate, endDate) {
+				// 确保传入的是 Date 对象
+				const start = new Date(startDate);
+				const end = new Date(endDate);
+				console.log(start, end, '为啥')
+				return;
+				// 确保结束日期在开始日期之后
+				if (end < start) {
+					throw new Error('结束日期必须在开始日期之后');
+				}
+
+				// 计算年份差异
+				let yearDiff = end.getFullYear() - start.getFullYear();
+
+				// 计算月份差异
+				let monthDiff = end.getMonth() - start.getMonth();
+
+				// 如果结束日期的月份小于开始日期的月份,需要借年
+				if (monthDiff < 0) {
+					yearDiff--;
+					monthDiff += 12;
+				}
+
+				// 如果月份相同,但结束日期的日期小于开始日期的日期,也需要借月
+				if (monthDiff === 0 && end.getDate() < start.getDate()) {
+					yearDiff--;
+					monthDiff = 11;
+				} else if (end.getDate() < start.getDate()) {
+					monthDiff--;
+				}
+
+				return [yearDiff, monthDiff];
+			},
+			goBack() {
+				uni.navigateBack()
+			},
+			switchTab(index) {
+				this.activeTab = index
+			},
+			goToResumeDetail(record) {
+				console.log('查看简历详情:', record)
+				uni.navigateTo({
+					url: `/pages/talentSearch/resumeDetail?resumeId=${record.id}`
+				})
+			},
+			selectDate(date) {
+				// 选中当前点击的日期
+				this.selectedDate = date.date
+				console.log('选中日期:', date.date)
+			},
+			goToInterviewDetail(record) {
+				console.log('查看面试详情:', record)
+				uni.navigateTo({
+					url: `/my/jilu/bossMianshiDetail?recordId=${record.recordId}`
+				})
+			},
+			goToInterviewManage() {
+				console.log('跳转到面试管理')
+				uni.navigateTo({
+					url: '/pages/recruitmentData/interviewManage'
+				})
+			},
+			getData() {
+				this.$Request.getT("/app/chat/chatUser").then(res => {
+					console.log(res);
+					this.communicationRecords = res.data.records //沟通记录
+				})
+			},
+			goNav(url) {
+				uni.navigateTo({
+					url: url
+				})
+			}
+		}
+	}
 </script>
 
 <style lang="scss" scoped>
-.page {
-  height: 100vh;
-  overflow: hidden;
-}
-
-.tab-section-bg {
-    position: fixed;
-    top: 150rpx;
-    left: 0;
-    right: 0;
-    z-index: 1000;
-    background-color: #ffffff;
-    padding: 32rpx;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    
-    .title-text {
-      color: rgba(51, 51, 51, 1);
-      font-family: DM Sans;
-      font-size: 48rpx;
-      font-weight: 700;
-      line-height: 60rpx;
-      letter-spacing: 0px;
-    }
-    
-    .interview-manage {
-        color: rgba(1, 107, 246, 1);
-        font-family: DM Sans;
-        font-size: 28rpx;
-        font-weight: 400;
-        line-height: 60rpx;
-        letter-spacing: 0px;
-        text-align: left;
-    }
-}
-
-/* Custom Navbar */
-.custom-navbar {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  z-index: 1000;
-  background-color: #ffffff;
-  padding-top: 80rpx;
-}
-
-.navbar-content {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  height: 44px;
-  padding: 20rpx;
-}
-
-.navbar-left {
-  width: 44px;
-  height: 44px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.navbar-title {
-  color: rgba(51, 51, 51, 1);
-  font-family: DM Sans;
-  font-size: 30rpx;
-  font-weight: 700;
-  line-height: 52rpx;
-  letter-spacing: 0.5%;
-  text-align: center;
-}
-
-.navbar-right {
-  width: 44px;
-}
-
-/* Tab Section */
-.tab-section {
-  position: fixed;
-  top: 250rpx;
-  left: 0;
-  right: 0;
-  background: white;
-  z-index: 99;
-}
-
-/* Content Section */
-.content-section {
-  margin-top: 330rpx;
-  padding: 20rpx;
-  height: calc(100vh - 330rpx) !important;
-  overflow-y: auto;
-}
-
-/* Date Group */
-.date-group {
-  margin-bottom: 20rpx;
-}
-
-.date-header {
-  margin-bottom: 16rpx;
-}
-
-.date-text {
-  color: rgba(153, 153, 153, 1);
-  font-family: DM Sans;
-  font-size: 24rpx;
-  font-weight: 400;
-  line-height: 32rpx;
-  margin-left: 32rpx;
-}
-
-/* Talent Card */
-.talent-card {
-  background-color: #ffffff;
-  border-radius: 16rpx;
-  margin-bottom: 20rpx;
-  padding: 30rpx;
-//   box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
-}
-
-.talent-content {
-  .talent-header {
-    display: flex;
-    align-items: flex-start;
-    
-    .talent-avatar {
-      width: 80rpx;
-      height: 80rpx;
-      border-radius: 50%;
-      margin-right: 20rpx;
-    }
-    
-    .talent-info {
-      flex: 1;
-      
-      .talent-name-section {
-        display: flex;
-        align-items: center;
-        justify-content: flex-start;
-        width: 100%;
-        margin-bottom: 6rpx;
-      }
-      
-      .talent-name {
-        color: rgba(51, 51, 51, 1);
-        font-family: DM Sans;
-        font-size: 28rpx;
-        font-weight: 500;
-        line-height: 36rpx;
-        letter-spacing: 0.5%;
-        text-align: left;
-        margin-right: 16rpx;
-      }
-      
-      .talent-tags {
-        display: flex;
-        flex-wrap: wrap;
-        gap: 10rpx;
-        
-        .status-tag {
-          padding: 8rpx;
-          border-radius: 12rpx;
-          font-size: 18rpx;
-          font-family: DM Sans;
-          font-weight: 400;
-          line-height: 20rpx;
-          letter-spacing: -0.5px;
-          text-align: left;
-          
-          &.online {
-            background: rgba(213, 255, 231, 1);
-            color: rgba(29, 209, 104, 1);
-          }
-          
-          &.hot {
-            background: rgba(252, 233, 220, 1);
-            color: rgba(1, 107, 246, 1);
-          }
-          
-          &.active {
-            color: rgba(153, 153, 153, 1);
-          }
-        }
-      }
-    }
-  }
-  
-  .talent-experience {
-    display: flex;
-    align-items: center;
-    margin-bottom: 12rpx;
-    gap: 16rpx;
-    color: rgba(156, 164, 171, 1);
-    font-family: DM Sans;
-    font-size: 24rpx;
-    font-weight: 400;
-    line-height: 32rpx;
-    letter-spacing: 0.5%;
-    text-align: left;
-  }
-  
-  .current-job {
-    display: flex;
-    align-items: center;
-    margin-bottom: 12rpx;
-    
-    .job-icon {
-      width: 40rpx;
-      height: 40rpx;
-      margin-right: 8rpx;
-    }
-    
-    .job-text {
-      color: rgba(156, 164, 171, 1);
-      font-family: DM Sans;
-      font-size: 24rpx;
-      font-weight: 400;
-      line-height: 40rpx;
-      letter-spacing: 0.5%;
-      text-align: left;
-      flex: 1;
-    }
-    
-    .work-period {
-      color: rgba(153, 153, 153, 1);
-      font-family: DM Sans;
-      font-size: 22rpx;
-      font-weight: 400;
-      line-height: 28rpx;
-    }
-  }
-  
-  .job-expectation {
-    display: flex;
-    align-items: center;
-    margin-bottom: 16rpx;
-
-    .job-icon {
-      width: 40rpx;
-      height: 40rpx;
-      margin-right: 8rpx;
-    }
-    
-    .expectation-text {
-      color: rgba(156, 164, 171, 1);
-      font-family: DM Sans;
-      font-size: 24rpx;
-      font-weight: 400;
-      line-height: 40rpx;
-      letter-spacing: 0.5%;
-      text-align: left;
-    }
-  }
-  
-  .skill-tags {
-    display: flex;
-    flex-wrap: wrap;
-    gap: 10rpx;
-    margin-bottom: 16rpx;
-    
-    .skill-tag {
-      padding: 8rpx;
-      background: rgba(198, 198, 198, 0.1);
-      border-radius: 12rpx;
-      color: rgba(153, 153, 153, 1);
-      font-family: DM Sans;
-      font-size: 20rpx;
-      font-weight: 400;
-      line-height: 20rpx;
-      letter-spacing: -0.5px;
-      text-align: left;
-    }
-  }
-  
-  .job-description {
-    margin-bottom: 12rpx;
-    
-    .description-text {
-      color: rgba(97, 110, 124, 1);
-      font-family: DM Sans;
-      font-size: 24rpx;
-      font-weight: 400;
-      line-height: 32rpx;
-      letter-spacing: 0px;
-      text-align: left;
-    }
-   }
- }
-
- /* Interview List Styles */
- .interview-list {
-   padding: 0 20rpx;
- }
-
- /* Date Selector */
- .date-selector {
-   background: #ffffff;
-   border-radius: 12rpx;
-   padding: 24rpx 0;
-//    margin-bottom: 20rpx;
-//    border: 0.5px solid rgba(227, 231, 236, 1);
- }
-
- .week-days {
-   display: flex;
-   justify-content: space-between;
-   margin-bottom: 16rpx;
- }
-
- .day-name {
-   color: rgba(153, 153, 153, 1);
-   font-family: DM Sans;
-   font-size: 24rpx;
-   font-weight: 400;
-   line-height: 32rpx;
-   text-align: center;
-   flex: 1;
- }
-
- .week-dates {
-   display: flex;
-   justify-content: space-between;
- }
-
- .date-item {
-   flex: 1;
-   display: flex;
-   justify-content: center;
-   align-items: center;
-   height: 60rpx;
-   border-radius: 50%;
-   cursor: pointer;
-   min-width: 60rpx;
-   max-width: 60rpx;
- }
-
- .date-item.active {
-   background: rgba(1, 107, 246, 1);
- }
-
- .date-value {
-   color: rgba(51, 51, 51, 1);
-   font-family: DM Sans;
-   font-size: 28rpx;
-   font-weight: 400;
-   line-height: 36rpx;
-   text-align: center;
- }
-
- .date-item.active .date-value {
-   color: #ffffff;
- }
-
- /* Interview Records */
- .interview-records {
-   background: #ffffff;
-   border-radius: 12rpx;
-   padding: 24rpx 0;
-//    border: 0.5px solid rgba(227, 231, 236, 1);
- }
-
- .interview-record {
-   display: flex;
-   position: relative;
-   border-radius: 8rpx;
-   margin-bottom: 16rpx;
- }
-
- .interview-record.today {
-   background: rgba(250, 187, 143, 1);
- }
-
- .interview-record:not(.today) {
-   background: rgba(221, 221, 221, 1);
- }
-
- .interview-record:last-child {
-   margin-bottom: 0;
- }
-
-
- /* Record Content */
- .record-content {
-   flex: 1;
-   display: flex;
-   align-items: center;
-   gap: 24rpx;
- }
-
- .record-left {
-   display: flex;
-   flex-direction: column;
-   min-width: 80rpx;
-   padding: 32rpx;
- }
-
- .record-divider {
-   width: 10rpx;
-   height: 100%;
-   background: rgba(1, 107, 246, 1);
- }
-
- .record-right {
-   flex: 1;
-   display: flex;
-   flex-direction: column;
-   gap: 8rpx;
- }
-
- .date-label {
-    color: rgba(106, 106, 106, 1);
-    font-family: DM Sans;
-    font-size: 16rpx;
-    font-weight: 400;
-    line-height: 40rpx;
-    letter-spacing: 0.5%;
-    text-align: right;
- }
-
- .time-label {
-    color: rgba(106, 106, 106, 1);
-    font-family: DM Sans;
-    font-size: 24rpx;
-    font-weight: 400;
-    line-height: 32rpx;
-    letter-spacing: 0.5%;
-    text-align: left;
- }
-
- .candidate-name {
-   color: rgba(51, 51, 51, 1);
-   font-family: DM Sans;
-   font-size: 32rpx;
-   font-weight: 600;
-   line-height: 40rpx;
- }
-
- .candidate-details {
-   color: rgba(102, 102, 102, 1);
-   font-family: DM Sans;
-   font-size: 24rpx;
-   font-weight: 400;
-   line-height: 32rpx;
- }
-
- /* Empty State - 与jobManagement页面保持一致 */
- .empty-state {
-   display: flex;
-   align-items: center;
-   justify-content: center;
-   padding: 40rpx;
-   
-   .empty-illustration {
-     margin-bottom: 40rpx;
-     
-     .empty-image {
-       width: 700rpx;
-       height: 800rpx;
-     }
-   }
-   
-   .empty-text {
-     color: rgba(120, 130, 138, 1);
-     font-family: DM Sans;
-     font-size: 28rpx;
-     font-weight: 400;
-     line-height: 36rpx;
-     letter-spacing: 0.5%;
-     text-align: center;
-   }
- }
- 
-.qyList {
-  width: 100%;
-  height: auto;
-  margin-top: 20rpx;
-
-  .qyList-box {
-    width: 686rpx;
-    height: 100%;
-
-    .qyList-box-item {
-      width: 100%;
-      // height: 400rpx;
-      padding-bottom: 40rpx;
-      background-color: #ffffff;
-      border-radius: 24rpx;
-      margin-bottom: 20rpx;
-
-      .qyList-box-item-box {
-        width: 626rpx;
-        height: 100%;
-      }
-
-      .qyList-box-item-info {
-        margin-top: 40rpx;
-      }
-
-      .qyList-box-item-job {
-        color: #121212;
-        font-size: 28rpx;
-        font-weight: 500;
-        margin-top: 20rpx;
-      }
-
-      .qyList-box-item-rem {
-        color: #999999;
-        font-size: 26rpx;
-        margin-top: 20rpx;
-      }
-    }
-  }
-}
- </style>
+	.page {
+		height: 100vh;
+		overflow: hidden;
+	}
+
+	.tab-section-bg {
+		position: fixed;
+		top: 150rpx;
+		left: 0;
+		right: 0;
+		z-index: 1000;
+		background-color: #ffffff;
+		padding: 32rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.title-text {
+			color: rgba(51, 51, 51, 1);
+			font-family: DM Sans;
+			font-size: 48rpx;
+			font-weight: 700;
+			line-height: 60rpx;
+			letter-spacing: 0px;
+		}
+
+		.interview-manage {
+			color: rgba(1, 107, 246, 1);
+			font-family: DM Sans;
+			font-size: 28rpx;
+			font-weight: 400;
+			line-height: 60rpx;
+			letter-spacing: 0px;
+			text-align: left;
+		}
+	}
+
+	/* Custom Navbar */
+	.custom-navbar {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		z-index: 1000;
+		background-color: #ffffff;
+		padding-top: 80rpx;
+	}
+
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		height: 44px;
+		padding: 20rpx;
+	}
+
+	.navbar-left {
+		width: 44px;
+		height: 44px;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.navbar-title {
+		color: rgba(51, 51, 51, 1);
+		font-family: DM Sans;
+		font-size: 30rpx;
+		font-weight: 700;
+		line-height: 52rpx;
+		letter-spacing: 0.5%;
+		text-align: center;
+	}
+
+	.navbar-right {
+		width: 44px;
+	}
+
+	/* Tab Section */
+	.tab-section {
+		position: fixed;
+		top: 250rpx;
+		left: 0;
+		right: 0;
+		background: white;
+		z-index: 99;
+	}
+
+	/* Content Section */
+	.content-section {
+		margin-top: 330rpx;
+		padding: 20rpx;
+		height: calc(100vh - 330rpx) !important;
+		overflow-y: auto;
+	}
+
+	/* Date Group */
+	.date-group {
+		margin-bottom: 20rpx;
+	}
+
+	.date-header {
+		margin-bottom: 16rpx;
+	}
+
+	.date-text {
+		color: rgba(153, 153, 153, 1);
+		font-family: DM Sans;
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+		margin-left: 32rpx;
+	}
+
+	/* Talent Card */
+	.talent-card {
+		background-color: #ffffff;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		padding: 30rpx;
+		//   box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
+	}
+
+	.talent-content {
+		.talent-header {
+			display: flex;
+			align-items: flex-start;
+
+			.talent-avatar {
+				width: 80rpx;
+				height: 80rpx;
+				border-radius: 50%;
+				margin-right: 20rpx;
+			}
+
+			.talent-info {
+				flex: 1;
+
+				.talent-name-section {
+					display: flex;
+					align-items: center;
+					justify-content: flex-start;
+					width: 100%;
+					margin-bottom: 6rpx;
+				}
+
+				.talent-name {
+					color: rgba(51, 51, 51, 1);
+					font-family: DM Sans;
+					font-size: 28rpx;
+					font-weight: 500;
+					line-height: 36rpx;
+					letter-spacing: 0.5%;
+					text-align: left;
+					margin-right: 16rpx;
+				}
+
+				.talent-tags {
+					display: flex;
+					flex-wrap: wrap;
+					gap: 10rpx;
+
+					.status-tag {
+						padding: 8rpx;
+						border-radius: 12rpx;
+						font-size: 18rpx;
+						font-family: DM Sans;
+						font-weight: 400;
+						line-height: 20rpx;
+						letter-spacing: -0.5px;
+						text-align: left;
+
+						&.online {
+							background: rgba(213, 255, 231, 1);
+							color: rgba(29, 209, 104, 1);
+						}
+
+						&.hot {
+							background: rgba(252, 233, 220, 1);
+							color: rgba(1, 107, 246, 1);
+						}
+
+						&.active {
+							color: rgba(153, 153, 153, 1);
+						}
+					}
+				}
+			}
+		}
+
+		.talent-experience {
+			display: flex;
+			align-items: center;
+			margin-bottom: 12rpx;
+			gap: 16rpx;
+			color: rgba(156, 164, 171, 1);
+			font-family: DM Sans;
+			font-size: 24rpx;
+			font-weight: 400;
+			line-height: 32rpx;
+			letter-spacing: 0.5%;
+			text-align: left;
+		}
+
+		.current-job {
+			display: flex;
+			align-items: center;
+			margin-bottom: 12rpx;
+
+			.job-icon {
+				width: 40rpx;
+				height: 40rpx;
+				margin-right: 8rpx;
+			}
+
+			.job-text {
+				color: rgba(156, 164, 171, 1);
+				font-family: DM Sans;
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 40rpx;
+				letter-spacing: 0.5%;
+				text-align: left;
+				flex: 1;
+			}
+
+			.work-period {
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 22rpx;
+				font-weight: 400;
+				line-height: 28rpx;
+			}
+		}
+
+		.job-expectation {
+			display: flex;
+			align-items: center;
+			margin-bottom: 16rpx;
+
+			.job-icon {
+				width: 40rpx;
+				height: 40rpx;
+				margin-right: 8rpx;
+			}
+
+			.expectation-text {
+				color: rgba(156, 164, 171, 1);
+				font-family: DM Sans;
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 40rpx;
+				letter-spacing: 0.5%;
+				text-align: left;
+			}
+		}
+
+		.skill-tags {
+			display: flex;
+			flex-wrap: wrap;
+			gap: 10rpx;
+			margin-bottom: 16rpx;
+
+			.skill-tag {
+				padding: 8rpx;
+				background: rgba(198, 198, 198, 0.1);
+				border-radius: 12rpx;
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 20rpx;
+				font-weight: 400;
+				line-height: 20rpx;
+				letter-spacing: -0.5px;
+				text-align: left;
+			}
+		}
+
+		.job-description {
+			margin-bottom: 12rpx;
+
+			.description-text {
+				color: rgba(97, 110, 124, 1);
+				font-family: DM Sans;
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 32rpx;
+				letter-spacing: 0px;
+				text-align: left;
+			}
+		}
+	}
+
+	/* Interview List Styles */
+	.interview-list {
+		padding: 0 20rpx;
+	}
+
+	/* Date Selector */
+	.date-selector {
+		background: #ffffff;
+		border-radius: 12rpx;
+		padding: 24rpx 0;
+		//    margin-bottom: 20rpx;
+		//    border: 0.5px solid rgba(227, 231, 236, 1);
+	}
+
+	.week-days {
+		display: flex;
+		justify-content: space-between;
+		margin-bottom: 16rpx;
+	}
+
+	.day-name {
+		color: rgba(153, 153, 153, 1);
+		font-family: DM Sans;
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+		text-align: center;
+		flex: 1;
+	}
+
+	.week-dates {
+		display: flex;
+		justify-content: space-between;
+	}
+
+	.date-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 60rpx;
+		border-radius: 50%;
+		cursor: pointer;
+		min-width: 60rpx;
+		max-width: 60rpx;
+	}
+
+	.date-item.active {
+		background: rgba(1, 107, 246, 1);
+	}
+
+	.date-value {
+		color: rgba(51, 51, 51, 1);
+		font-family: DM Sans;
+		font-size: 28rpx;
+		font-weight: 400;
+		line-height: 36rpx;
+		text-align: center;
+	}
+
+	.date-item.active .date-value {
+		color: #ffffff;
+	}
+
+	/* Interview Records */
+	.interview-records {
+		background: #ffffff;
+		border-radius: 12rpx;
+		padding: 24rpx 0;
+		//    border: 0.5px solid rgba(227, 231, 236, 1);
+	}
+
+	.interview-record {
+		display: flex;
+		position: relative;
+		border-radius: 8rpx;
+		margin-bottom: 16rpx;
+	}
+
+	.interview-record.today {
+		background: rgba(250, 187, 143, 1);
+	}
+
+	.interview-record:not(.today) {
+		background: rgba(221, 221, 221, 1);
+	}
+
+	.interview-record:last-child {
+		margin-bottom: 0;
+	}
+
+
+	/* Record Content */
+	.record-content {
+		flex: 1;
+		display: flex;
+		align-items: center;
+		gap: 24rpx;
+	}
+
+	.record-left {
+		display: flex;
+		flex-direction: column;
+		min-width: 80rpx;
+		padding: 32rpx;
+	}
+
+	.record-divider {
+		width: 10rpx;
+		height: 100%;
+		background: rgba(1, 107, 246, 1);
+	}
+
+	.record-right {
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		gap: 8rpx;
+	}
+
+	.date-label {
+		color: rgba(106, 106, 106, 1);
+		font-family: DM Sans;
+		font-size: 16rpx;
+		font-weight: 400;
+		line-height: 40rpx;
+		letter-spacing: 0.5%;
+		text-align: right;
+	}
+
+	.time-label {
+		color: rgba(106, 106, 106, 1);
+		font-family: DM Sans;
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+		letter-spacing: 0.5%;
+		text-align: left;
+	}
+
+	.candidate-name {
+		color: rgba(51, 51, 51, 1);
+		font-family: DM Sans;
+		font-size: 32rpx;
+		font-weight: 600;
+		line-height: 40rpx;
+	}
+
+	.candidate-details {
+		color: rgba(102, 102, 102, 1);
+		font-family: DM Sans;
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+	}
+
+	/* Empty State - 与jobManagement页面保持一致 */
+	.empty-state {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding: 40rpx;
+
+		.empty-illustration {
+			margin-bottom: 40rpx;
+
+			.empty-image {
+				width: 700rpx;
+				height: 800rpx;
+			}
+		}
+
+		.empty-text {
+			color: rgba(120, 130, 138, 1);
+			font-family: DM Sans;
+			font-size: 28rpx;
+			font-weight: 400;
+			line-height: 36rpx;
+			letter-spacing: 0.5%;
+			text-align: center;
+		}
+	}
+
+	.qyList {
+		width: 100%;
+		height: auto;
+		margin-top: 20rpx;
+
+		.qyList-box {
+			width: 686rpx;
+			height: 100%;
+
+			.qyList-box-item {
+				width: 100%;
+				// height: 400rpx;
+				padding-bottom: 40rpx;
+				background-color: #ffffff;
+				border-radius: 24rpx;
+				margin-bottom: 20rpx;
+
+				.qyList-box-item-box {
+					width: 626rpx;
+					height: 100%;
+				}
+
+				.qyList-box-item-info {
+					margin-top: 40rpx;
+				}
+
+				.qyList-box-item-job {
+					color: #121212;
+					font-size: 28rpx;
+					font-weight: 500;
+					margin-top: 20rpx;
+				}
+
+				.qyList-box-item-rem {
+					color: #999999;
+					font-size: 26rpx;
+					margin-top: 20rpx;
+				}
+			}
+		}
+	}
+	.txt-desc{
+		color: rgba(153, 153, 153, 1);
+		font-family: DM Sans;
+		font-size: 20rpx;
+		font-weight: 400;
+		line-height: 34rpx;
+		letter-spacing: 0%;
+		flex: 1;
+	}
+</style>

+ 59 - 31
pages/talentSearch/resumeDetail.vue

@@ -8,7 +8,12 @@
 						<u-icon name="arrow-leftward" size="38" color="#333"></u-icon>
 					</view>
 					<view class="navbar-title">简历详情</view>
-					<view class="navbar-right"></view>
+					<view class="nav-right">
+						<view class="nav-icon" @click="setCollection">
+							<image v-if="resumeData.isCollection == 0" src="/static/images/index/guanzhu.svg" class="icon-img"></image>
+							<image v-else src="/static/images/index/gzActive.svg" style="width: 50rpx;height: 50rpx;"></image>
+						</view>
+					</view>
 				</view>
 			</view>
 		</view>
@@ -134,11 +139,11 @@
 								<!-- <view class="job-description">
 									{{ detail.workContent ? detail.workContent : '暂无工作描述' }}
 								</view> -->
-								<view style="margin-bottom: 10rpx;font-size: 22rpx;">工作内容</view>
+								<view style="margin-bottom: 10rpx;font-size: 28rpx;">工作内容</view>
 								<view class="job-description">
 									{{ detail.workContent || '暂无工作内容'}}
 								</view>
-								<view style="margin: 12rpx 0;font-size: 22rpx;">工作业绩</view>
+								<view style="margin: 12rpx 0;font-size: 28rpx;">工作业绩</view>
 								<view class="job-description">
 									{{detail.workPerformance || '暂无工作业绩'}}
 								</view>
@@ -296,6 +301,22 @@ export default {
 
 	},
 	methods: {
+		/**
+		 * 收藏简历
+		 */
+		setCollection() {
+			this.$Request.postT("/app/myCollection/saveCollection", {
+				resumesId: this.resumesId,
+				type: 2
+			}).then(res => {
+				if (res.code == 0) {
+					uni.showToast({
+						title: res.msg
+					})
+					this.getDetail()
+				}
+			})
+		},
 		goBack() {
 			uni.navigateBack();
 		},
@@ -330,7 +351,6 @@ export default {
 				companyId: uni.getStorageSync('companyId')
 			}
 			this.$Request.get('/app/resumes/selectResumesByResumesId', data).then(res => {
-				console.log(res,'hhhhhhh')
 				if (res.code == 0) {
 					uni.hideLoading()
 					var data = res.data;
@@ -387,13 +407,6 @@ export default {
 	}
 }
 </script>
-
-
-
-
-
-
-
 <style lang="scss" scoped>
 .resume-detail {
 	min-height: 100vh;
@@ -444,9 +457,24 @@ export default {
 			text-align: center;
 		}
 
-		.navbar-right {
-			width: 60rpx;
-			height: 60rpx;
+		.nav-right {
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+			width: 96rpx;
+		}
+		
+		.nav-icon {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			// width: 36rpx;
+			// height: 36rpx;
+		}
+		
+		.icon-img {
+			width: 42rpx;
+			height: 42rpx;
 		}
 	}
 }
@@ -698,14 +726,14 @@ export default {
 
 				.required-mark {
 					color: #FF3B30;
-					font-size: 18px;
+					font-size: 40rpx;
 					font-weight: 600;
 					margin-right: 8rpx;
 				}
 
 				.required-title {
 					font-family: DM Sans;
-					font-size: 28rpx;
+					font-size: 30rpx;
 					font-weight: 700;
 					line-height: 52rpx;
 					letter-spacing: 0%;
@@ -716,7 +744,7 @@ export default {
 				text {
 					color: rgba(23, 23, 37, 1);
 					font-family: Inter;
-					font-size: 20px;
+					font-size: 44rpx;
 					font-weight: 600;
 					line-height: 24px;
 				}
@@ -725,7 +753,7 @@ export default {
 			.section-desc {
 				color: rgba(1, 107, 246, 1);
 				font-family: DM Sans;
-				font-size: 20rpx;
+				font-size: 24rpx;
 				font-weight: 400;
 				line-height: 44rpx;
 				letter-spacing: 0%;
@@ -770,7 +798,7 @@ export default {
 					.job-title {
 						color: rgba(102, 102, 102, 1);
 						font-family: DM Sans;
-						font-size: 20rpx;
+						font-size: 24rpx;
 						font-weight: 400;
 						line-height: 44rpx;
 						letter-spacing: 0%;
@@ -781,7 +809,7 @@ export default {
 					.job-department {
 						color: rgba(120, 130, 138, 1);
 						font-family: DM Sans;
-						font-size: 20rpx;
+						font-size: 24rpx;
 						font-weight: 400;
 						line-height: 44rpx;
 						letter-spacing: 0%;
@@ -800,7 +828,7 @@ export default {
 					.company-name {
 						color: rgba(120, 130, 138, 1);
 						font-family: DM Sans;
-						font-size: 20rpx;
+						font-size: 24rpx;
 						font-weight: 400;
 						line-height: 10px;
 						letter-spacing: 0.5%;
@@ -810,7 +838,7 @@ export default {
 					.work-period {
 						color: rgba(120, 130, 138, 1);
 						font-family: DM Sans;
-						font-size: 20rpx;
+						font-size: 24rpx;
 						font-weight: 400;
 						line-height: 10px;
 						letter-spacing: 0.5%;
@@ -821,9 +849,9 @@ export default {
 					.job-description {
 						color: rgba(120, 130, 138, 1);
 						font-family: DM Sans;
-						font-size: 16rpx;
+						font-size: 24rpx;
 						font-weight: 400;
-						line-height: 24rpx;
+						line-height: 30rpx;
 						letter-spacing: 0%;
 						text-align: left;
 						white-space: pre-wrap;
@@ -838,10 +866,10 @@ export default {
 						.tag {
 							background: rgba(153, 153, 153, 0.1);
 							border-radius: 12rpx;
-							padding: 6rpx;
+							padding: 6rpx 10rpx;
 							color: rgba(102, 102, 102, 1);
 							font-family: DM Sans;
-							font-size: 16rpx;
+							font-size: 22rpx;
 							font-weight: 400;
 							letter-spacing: 0%;
 							text-align: left;
@@ -871,7 +899,7 @@ export default {
 				text {
 					color: rgba(23, 23, 37, 1);
 					font-family: Inter;
-					font-size: 20px;
+					font-size: 30rpx;
 					font-weight: 600;
 					line-height: 24px;
 				}
@@ -909,7 +937,7 @@ export default {
 					.school-name {
 						color: rgba(23, 23, 37, 1);
 						font-family: DM Sans;
-						font-size: 18px;
+						font-size: 32rpx;
 						font-weight: 400;
 						line-height: 22px;
 						letter-spacing: 0%;
@@ -919,7 +947,7 @@ export default {
 					.degree-info {
 						color: rgba(120, 130, 138, 1);
 						font-family: DM Sans;
-						font-size: 20rpx;
+						font-size: 26rpx;
 						font-weight: 500;
 						line-height: 24px;
 						letter-spacing: 0%;
@@ -930,7 +958,7 @@ export default {
 					.education-description {
 						color: rgba(120, 130, 138, 1);
 						font-family: DM Sans;
-						font-size: 20rpx;
+						font-size: 26rpx;
 						font-weight: 400;
 						line-height: 16px;
 						letter-spacing: 0%;
@@ -1081,7 +1109,7 @@ export default {
 	margin-bottom: 8rpx;
 	color: rgba(23, 23, 37, 1);
 	font-family: DM Sans;
-	font-size: 24rpx;
+	font-size: 28rpx;
 	font-weight: 400;
 }
 </style>

BIN
static/images/lt.png