Browse Source

职位管理、搜索

your_username 2 weeks ago
parent
commit
5d2752bbb3

+ 4 - 4
common/config.js

@@ -1,7 +1,7 @@
-const ROOTPATH = "https://zp.xianmaxiong.com/sqx_fast";
-const ROOTPATH1 = "https://zp.xianmaxiong.com/sqx_fast";
-// const ROOTPATH = "https://yizhizan.edccc.cn/sqx_fast";
-// const ROOTPATH1 = "https://yizhizan.edccc.cn/sqx_fast";
+// const ROOTPATH = "https://zp.xianmaxiong.com/sqx_fast";
+// const ROOTPATH1 = "https://zp.xianmaxiong.com/sqx_fast";
+const ROOTPATH = "https://yizhizan.edccc.cn/sqx_fast";
+const ROOTPATH1 = "https://yizhizan.edccc.cn/sqx_fast";
 const ROOTPATH2 = "wss://zp.xianmaxiong.com/wss/websocket/"; //联系客服
 const ROOTPATH3 = "wss://zp.xianmaxiong.com/wss/chatSocket/"; //聊天
 const ROOTPATH4 = "https://zp.xianmaxiong.com";

+ 7 - 7
my/order/index.vue

@@ -8,12 +8,12 @@
 		<view>
 			<view class="box" v-for="(item,index) in goods" :key="index"
 				@click="goNav('/my/order/pay?postPushId='+item.postPushId)">
-				<view class="flex align-center justify-between padding-lr padding-tb-sm">
+				<!-- <view class="flex align-center justify-between padding-lr padding-tb-sm">
 					<view style="color: #00B88F;font-size: 28rpx;font-weight: bold;"><text
 							v-if="item.isOverdue==1">到期</text>{{item.statusName}}</view>
 					<view class="text-sm" style="color: #999999;">{{item.createTime}}</view>
 				</view>
-				<view style="width: 100%;height: 1rpx;background: #EEEEEE;"></view>
+				<view style="width: 100%;height: 1rpx;background: #EEEEEE;"></view> -->
 				<view class="padding-lr padding-tb-sm">
 					<view class="flex align-center justify-between">
 						<view class="text-bold" style="color: #1F1F1F;font-size: 38upx;">
@@ -33,19 +33,19 @@
 							{{ite}}
 						</view>
 					</view>
-					<view class="address flex align-center justify-between">
+					<!-- <view class="address flex align-center justify-between">
 						<view class="" style="color: #999999;">
 							{{item.company?item.company.companyName:''}}
 						</view>
 						<view class="" style="color: #666666;">
 							{{item.city}} {{item.county}}
 						</view>
-					</view>
+					</view> -->
 				</view>
 				<view style="width: 100%;height: 1rpx;background: #EEEEEE;"></view>
-				<view class="flex align-center padding-tb justify-end padding-lr">
+				<!-- <view class="flex align-center padding-tb justify-end padding-lr">
 					<view class="flex align-center">
-						<!-- <view class="btn" @click.stop="Changekefu()">联系客服</view> -->
+						<view class="btn" @click.stop="Changekefu()">联系客服</view>
 						<view class="btn" v-if="item.status == 2" @click.stop="closeJob(item.postPushId,'close')">关闭岗位
 						</view>
 						<view class="btn" v-if="item.status == 5 && item.isOverdue == 0"
@@ -57,7 +57,7 @@
 							@click.stop="updataServeType(item.postPushId,'updata')">修改内容</view>
 						<view v-if="item.status==1" class="btn" @click.stop="cancelProject(item.postPushId)">取消招聘</view>
 					</view>
-				</view>
+				</view> -->
 			</view>
 		</view>
 		<empty v-if="goods.length==0" />

+ 27 - 0
pages.json

@@ -172,6 +172,27 @@
 				"navigationStyle": "custom"
 			}
 		},
+		{
+			"path": "pages/jobManagement/jobManagement",
+			"style": {
+				"navigationBarTitleText": "职位管理",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/jobManagement/jobDetail",
+			"style": {
+				"navigationBarTitleText": "职位详情",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/talentSearch/index",
+			"style": {
+				"navigationBarTitleText": "搜索",
+				"navigationStyle": "custom"
+			}
+		},
 		{
 			"path": "pages/index/webView",
 			"style": {
@@ -1119,6 +1140,12 @@
 				"selectedIconPath": "static/tabbar/ACjipin.png",
 				"text": "急聘"
 			},
+			{
+				"pagePath": "pages/talentSearch/index",
+				"iconPath": "static/tabbar/Hrsearch.png",
+				"selectedIconPath": "static/tabbar/ACsearch.png",
+				"text": "搜索"
+			},
 			{
 				"pagePath": "pages/msg/index",
 				"iconPath": "static/tabbar/Chat.png",

+ 272 - 79
pages/index/index.vue

@@ -291,20 +291,24 @@
 			</block>
 			<!-- 企业版 -->
 			<block v-else>
-				<!-- banner -->
-				<view class="banner flex justify-center">
-					<view class="banner-box">
-						<swiper :indicator-dots="false" style="width: 100%;height: 100%;" :autoplay="true"
-							:interval="5000" :duration="300">
-							<swiper-item v-for="(item,index) in bannerList" :key="index">
-								<view class="swiper-item" style="width: 100%;height: 100%;">
-									<image :src="item.imageUrl" style="width: 100%;height: 100%;border-radius: 24rpx;"
-										mode="scaleToFill"></image>
-								</view>
-							</swiper-item>
-						</swiper>
+				<!-- 顶部banner图片 -->
+				<!-- 
+					<view class="banner flex justify-center">
+						<view class="banner-box">
+							<swiper :indicator-dots="false" style="width: 100%;height: 100%;" :autoplay="true"
+								:interval="5000" :duration="300">
+								<swiper-item v-for="(item,index) in bannerList" :key="index">
+									<view class="swiper-item" style="width: 100%;height: 100%;">
+										<image :src="item.imageUrl" style="width: 100%;height: 100%;border-radius: 24rpx;"
+											mode="scaleToFill"></image>
+									</view>
+								</swiper-item>
+							</swiper>
+						</view>
 					</view>
-				</view>
+				-->
+				
+				<!-- 最新公告 -->
 				<view class="announcement" v-if="gongao.length!=0">
 					<view class="announcementbox">
 						<view class="anount">最新公告</view>
@@ -335,57 +339,73 @@
 				<u-sticky @fixed="isfixed" @unfixed="isunfixed" :radius='40' h5-nav-height="0" :enable="enable">
 					<view class="qySx flex justify-center" :class="isfixeds==true?'isfixed':'isfixeds'">
 						<view class="qySx-box">
-							<view class="qySx-box-sxp flex justify-between">
+							<!-- 第一行:tabs -->
+							<view class="qySx-box-row flex justify-between align-center">
 								<view class="qySx-box-l flex align-center">
-									<scroll-view scroll-x="true" class="topbg-scroll"
-										:scroll-into-view="'bottomView'+currentJobSx" scroll-with-animation="true">
-										<view class="qySx-box-l-i flex flex-wrap align-center" :id="'bottomView'+index"
-											@tap="currentJobSx=index;getDomWidth()"
-											v-for="(item,index) in jobSxTypeList" :key="index">
-											<view class="jobtitle" style="z-index: 999;"
-												:class="currentJobSx==index?'activeQ':''">
-												{{item.name}}
-												<view class="jobtitleBom"
-													:style="domeWidth>0?'width:'+domeWidth+'rpx':''"
-													v-if="currentJobSx==index"
-													style="height: 14rpx;background: linear-gradient(90deg, #08F3CE 0%, #05F3A7 100%);border-radius: 7rpx;">
-												</view>
-											</view>
-
-										</view>
-									</scroll-view>
-
-
+									<view class="qySx-box-l-i" :class="currentJobSx==index?'active':''"
+										@tap="currentJobSx=index;getDomWidth()" v-for="(item,index) in jobSxTypeList" :key="index">
+										{{item.name}}
+									</view>
 								</view>
+								<!-- 发布招聘 -->
 								<view class="qySx-box-r flex align-center" @click="goNavss('/package/addJob/addJob')">
-									<text style="margin-right: 20rpx;color: #00B88F;">发布招聘</text>
-									<u-icon name="plus-circle" color="#00B88F" size="38"></u-icon>
+									<image src="../../static/images/index/Attachment.svg" class="attachment-icon" />
 								</view>
 							</view>
-							<view class="qySx-box-sxs flex justify-between align-center">
-								<view class="qySx-box-sxs-l flex align-center">
-									<view class="qySx-box-sxs-l-i" @click="currentJobSxs=index"
-										:class="currentJobSxs==index?'activeQs':''"
-										v-for="(item,index) in jobSxsTypeList" :key="index">
+							
+							<!-- 第二行:筛选 -->
+							<view class="qySx-sx-box flex justify-between align-center">
+								<!-- 分类 -->
+								<view class="qySx-sx-box-l flex align-center">
+									<view class="qySx-sx-box-l-i" :class="currentJobSxs==index?'active3':''"
+										@click="currentJobSxs=index" v-for="(item,index) in jobSxsTypeList" :key="index">
 										{{item.name}}
 									</view>
 								</view>
-								<view class="qySx-box-sxs-r flex align-center">
-									<text style="margin-right: 10rpx;color: #00B78F;"
-										@click="goNav('/package/jobIntention/city')">{{city?city:'选择城市'}}</text>
-									<u-icon name="arrow-down-fill" @click="goNav('/package/jobIntention/city')"
-										style="margin-right: 30rpx;" color="#00B88F" size="20">
-									</u-icon>
-									<text style="margin-right: 10rpx;"
-										@click="goNav('/package/screen/screen?type=2')">筛选</text>
-									<u-icon name="arrow-down-fill" @click="goNav('/package/screen/screen?type=2')"
-										color="#CCCCCC" size="20"></u-icon>
+								
+								<view class="qySx-sx-box-r flex align-center">
+									<!-- 城市 -->
+									<view class="qySx-sx-box-r-i flex align-center">
+										<text style="margin-right: 10rpx;"
+											@click="goNav('/package/jobIntention/city')">{{city?city:'选择城市'}}</text>
+										<u-icon name="arrow-down" color="#00B78F" size="16"
+											@click="goNav('/package/jobIntention/city')"></u-icon>
+									</view>
+
+									<!-- 筛选 -->
+									<view class="qySx-sx-box-filter flex align-center">
+										<text style="margin-right: 10rpx;"
+											@click="goNav('/package/screen/screen?type=2')">筛选</text>
+										<u-icon name="arrow-down" color="#999999" size="16"
+											@click="goNav('/package/screen/screen?type=2')"></u-icon>
+									</view>
 								</view>
 							</view>
-
 						</view>
 					</view>
 				</u-sticky>
+
+				<!-- Vip推荐 -->
+				<view class="vipRecommend">
+					<view class="vipRecommend-box">
+						<view class="vipRecommend-close" @click="closeVipRecommend">
+							<image src="../../static/images/index/qiyeDelete.svg" class="close-icon" />
+						</view>
+						<view class="vipRecommend-content">
+							<view class="vipRecommend-title">
+								<text class="job-title">亚马逊运营总监</text>
+								<text class="job-status">职位体验中</text>
+							</view>
+							<view class="vipRecommend-message">
+								今日已错过24位新增牛人
+							</view>
+							<view class="vipRecommend-hint">
+								升级VIP正式版,享更多查看沟通权益
+							</view>
+						</view>
+					</view>
+				</view>
+
 				<!-- 简历列表 -->
 				<view class="qyList flex justify-center">
 					<view class="qyList-box">
@@ -1502,6 +1522,13 @@
 				uni.navigateTo({
 					url: '/package/jobIntention/tagManage'
 				})
+			},
+			
+			//关闭VIP推荐
+			closeVipRecommend() {
+				// 这里可以添加关闭逻辑,比如隐藏卡片或记录用户选择
+				console.log('关闭VIP推荐')
+				// 可以通过v-if控制显示隐藏
 			}
 
 		}
@@ -2130,59 +2157,225 @@
 	}
 
 	.isfixeds {
-		border-radius: 40rpx 40rpx 0 0;
+		// border-radius: 40rpx 40rpx 0 0;
 	}
 
 	.qySx {
+		position: fixed;
+		top: 0;
+		padding-top: 80rpx !important;
+		z-index: 999;
 		width: 100%;
-		// height: 366rpx;
-		background: linear-gradient(to bottom, #ffffff, #F2F2F7);
+		background: linear-gradient(180.00deg, rgba(255, 102, 0, 1),rgba(255, 89, 89, 1) 83%);
 		padding-bottom: 40rpx;
+		padding: 20rpx;
 
 		.qySx-box {
-			width: 686rpx;
+			width: 100%;
 			height: 100%;
+			border-radius: 12rpx;
+			box-shadow: 0px 8px 12px 0px rgba(0, 0, 0, 0.05);
+			background: rgba(255, 255, 255, 1);
+			padding: 28rpx;
 
-			.qySx-box-sxp {
-				height: 60rpx;
-				margin-top: 40rpx;
+			.qySx-box-row {
+				margin-bottom: 20rpx;
 			}
 
 			.qySx-box-l {
-				height: 100%;
-				width: 65%;
+				flex: 1;
+				white-space: nowrap;
+				overflow-x: auto;
+			}
 
-				// background-color: red;
-				.qySx-box-l-i {
-					display: inline-block;
-					height: 100%;
-					margin-right: 20rpx;
-					color: #999999;
-					font-size: 32rpx;
+			.qySx-box-l-i {
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 28rpx;
+				font-weight: 400;
+				line-height: 18px;
+				letter-spacing: 0%;
+				text-align: left;
+				margin-right: 14rpx;
+
+				&.active {
+					background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+					-webkit-background-clip: text;
+					-webkit-text-fill-color: transparent;
+					background-clip: text;
+					text-fill-color: transparent;
+					font-family: DM Sans;
+					font-size: 24rpx;
+					font-weight: 700;
+					line-height: 48rpx;
+					letter-spacing: 0%;
+					text-align: left;
 				}
 			}
 
 			.qySx-box-r {
-				height: 100%;
+				color: #ffffff;
+				
+				.attachment-icon {
+					width: 38rpx;
+					height: 38rpx;
+				}
 			}
+		}
 
-			.qySx-box-sxs {
-				width: 100%;
-				height: 30rpx;
-				margin-top: 30rpx;
+		.qySx-sx-box {
+			width: 100%;
+			margin-top: 0rpx;
 
-				.qySx-box-sxs-l {
+			.qySx-sx-box-l-i {
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 18px;
+				letter-spacing: 0%;
+				text-align: center;
+				margin-right: 20rpx;
+				border-radius: 6px;
+				background: rgba(198, 198, 198, 0.1);
+				padding: 8rpx 12rpx;
+				display: inline-block;
+				min-width: 60rpx;
+				white-space: nowrap;
 
-					.qySx-box-sxs-l-i {
-						margin-right: 40rpx;
-						color: #999999;
+				&.active3 {
+					font-family: DM Sans;
+					font-size: 24rpx !important;
+					font-weight: 400 !important;
+					line-height: 18px;
+					letter-spacing: 0%;
+					text-align: left;
+					padding: 8rpx 12rpx !important;
+					color: rgba(1, 107, 246, 1) !important;
+					// background: #D6E7FD !important;
+					background: rgba(252, 233, 220, 1);
+					border: 1px solid rgba(1, 107, 246, 1);
+				}
+			}
+
+			.qySx-sx-box-r-i {
+				color: rgba(1, 107, 246, 1);
+				font-family: DM Sans;
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 18px;
+				letter-spacing: 0%;
+				text-align: center;
+				margin-right: 20rpx;
+				border-radius: 6px;
+				// background: #D6E7FD;
+				background: rgba(252, 233, 220, 1);
+				padding: 8rpx 12rpx;
+				display: inline-block;
+				min-width: 60rpx;
+				white-space: nowrap;
+				cursor: pointer;
+				transition: all 0.3s ease;
+				border: 0.5px solid rgba(1, 107, 246, 1);
+			}
+
+			.qySx-sx-box-filter {
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 18px;
+				letter-spacing: 0%;
+				text-align: center;
+				border-radius: 6px;
+				background: rgba(198, 198, 198, 0.1);
+				padding: 8rpx 12rpx;
+				display: inline-block;
+				min-width: 60rpx;
+				white-space: nowrap;
+				cursor: pointer;
+				transition: all 0.3s ease;
+			}
+		}
+	}
+
+	.vipRecommend {
+		width: 100%;
+		margin-top: 280rpx;
+		padding: 0 20rpx;
+		box-sizing: border-box;
+
+		.vipRecommend-box {
+			width: 100%;
+			background: #ffffff;
+			border-radius: 12rpx;
+			box-shadow: 0px 8px 12px 0px rgba(0, 0, 0, 0.05);
+			padding: 28rpx;
+			position: relative;
+
+			.vipRecommend-close {
+				position: absolute;
+				top: 24rpx;
+				right: 24rpx;
+				width: 48rpx;
+				height: 48rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border-radius: 50%;
+
+				.close-icon {
+					width: 48rpx;
+					height: 48rpx;
+				}
+			}
+
+			.vipRecommend-content {
+				padding-right: 60rpx;
+
+				.vipRecommend-title {
+					margin-bottom: 16rpx;
+
+					.job-title {
+						color: rgba(23, 23, 37, 1);
+						font-family: DM Sans;
 						font-size: 28rpx;
+						font-weight: 700;
+						line-height: 48rpx;
+						text-align: left;
+						margin-right: 8rpx;
+					}
+
+					.job-status {
+						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;
 					}
 				}
 
-				.qySx-box-sxs-r {
-					color: #999999;
-					font-size: 28rpx;
+				.vipRecommend-message {
+					color: rgba(102, 102, 102, 1);
+					font-family: DM Sans;
+					font-size: 24rpx;
+					font-weight: 400;
+					line-height: 32rpx;
+					letter-spacing: 0.5%;
+					text-align: left;
+					margin-bottom: 16rpx;
+				}
+
+				.vipRecommend-hint {
+					color: rgba(102, 102, 102, 1);
+					font-family: DM Sans;
+					font-size: 18rpx;
+					font-weight: 400;
+					line-height: 20rpx;
+					letter-spacing: 0.5%;
+					text-align: left;
 				}
 			}
 		}

+ 281 - 0
pages/jobManagement/jobDetail.vue

@@ -0,0 +1,281 @@
+<template>
+	<view class="job-detail-page">
+		<!-- 固定顶部导航栏 -->
+		<view class="fixed-header">
+			<!-- 自定义导航栏 -->
+			<view class="custom-navbar">
+				<view class="navbar-content">
+					<view class="nav-left" @click="goBack">
+						<u-icon name="arrow-leftward" color="#333" size="32"></u-icon>
+					</view>
+					<view class="nav-title">职位详情</view>
+					<view class="nav-right"></view>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 主要内容区域 -->
+		<view class="main-content">
+			<!-- 审核状态提示 -->
+			<view class="status-section">
+				<view class="status-icon">
+					<image src="../../static/images/index/redGantan.svg" class="status-icon-img"></image>
+				</view>
+				<view class="status-title">职位审核失败</view>
+			</view>
+			
+			<!-- 职位信息卡片 -->
+			<view class="job-info-card">
+				<view class="job-header">
+					<view class="job-title-section">
+						<text class="job-title">亚马逊运营</text>
+					</view>
+					<view class="job-status">
+						<text class="status-text">审核未通过</text>
+					</view>
+				</view>
+				<view class="job-info">
+					<text class="job-details">深圳-西乡 本科 1-3年 10-15K·13薪 全职</text>
+				</view>
+			</view>
+			
+			<!-- 失败原因 -->
+			<view class="failure-reason-section">
+				<view class="section-title">失败原因</view>
+				<view class="reason-list">
+					<view class="reason-item">
+						<text class="reason-text">1.这是一段由平台端填写的审核详情</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 底部重新发布按钮 -->
+		<view class="bottom-action">
+			<view class="republish-btn" @click="republishJob">
+				<text class="republish-text">重新发布</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			
+		}
+	},
+	methods: {
+		goBack() {
+			uni.navigateBack()
+		},
+		republishJob() {
+			// 跳转到重新发布页面
+			uni.navigateTo({
+				url: '/package/addJob/addJob'
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+page {
+	background-color: #ffffff;
+}
+
+.job-detail-page {
+	min-height: 100vh;
+	background-color: #ffffff;
+}
+
+.fixed-header {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	z-index: 9999;
+	background-color: #ffffff;
+}
+
+.custom-navbar {
+	padding-top: 80rpx;
+	background-color: #ffffff;
+	box-sizing: border-box;
+	
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		height: 88rpx;
+		padding: 0 40rpx;
+		
+		.nav-left, .nav-right {
+			width: 60rpx;
+			height: 60rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		
+		.nav-title {
+			color: rgba(51, 51, 51, 1);
+			font-family: DM Sans;
+			font-size: 30rpx;
+			font-weight: 700;
+			line-height: 52px;
+			letter-spacing: 0.5%;
+			text-align: center;
+		}
+	}
+}
+
+.main-content {
+	padding: 0 40rpx;
+	margin-top: 200rpx;
+	padding-bottom: 120rpx;
+}
+
+.status-section {
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	margin-bottom: 40rpx;
+	
+	.status-icon {
+		margin-right: 20rpx;
+		display: flex;
+		align-items: center;
+		
+		.status-icon-img {
+			width: 48rpx;
+			height: 48rpx;
+		}
+	}
+	
+	.status-title {
+		color: rgba(29, 33, 41, 1);
+		font-family: DM Sans;
+		font-size: 36rpx;
+		font-weight: 500;
+		line-height: 48rpx;
+		letter-spacing: 0%;
+		text-align: left;
+		display: flex;
+		align-items: center;
+	}
+}
+
+.job-info-card {
+	background: #ffffff;
+	border-radius: 12rpx;
+	margin-bottom: 40rpx;
+	padding: 32rpx;
+	border: 0.5px solid rgba(227, 231, 236, 1);
+	
+	.job-header {
+		display: flex;
+		justify-content: space-between;
+		align-items: flex-start;
+		margin-bottom: 16rpx;
+		
+		.job-title-section {
+			flex: 1;
+			
+			.job-title {
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 28rpx;
+				font-weight: 400;
+				line-height: 44rpx;
+				letter-spacing: 0.5%;
+				text-align: left;
+			}
+		}
+		
+		.job-status {
+			.status-text {
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 18rpx;
+				font-weight: 400;
+				line-height: 20rpx;
+				letter-spacing: -0.5px;
+				text-align: right;
+			}
+		}
+	}
+	
+	.job-info {
+		.job-details {
+			color: rgba(153, 153, 153, 1);
+			font-family: DM Sans;
+			font-size: 28rpx;
+			font-weight: 400;
+			line-height: 36rpx;
+			letter-spacing: 0.5%;
+			text-align: left;
+		}
+	}
+}
+
+.failure-reason-section {
+	.section-title {
+		color: rgba(31, 44, 55, 1);
+		font-family: DM Sans;
+		font-size: 28rpx;
+		font-weight: 500;
+		line-height: 44rpx;
+		letter-spacing: 0.5%;
+		text-align: left;
+		margin-bottom: 20rpx;
+	}
+	
+	.reason-list {
+		.reason-item {
+			margin-bottom: 16rpx;
+			
+			.reason-text {
+				color: rgba(153, 153, 153, 1);
+				font-family: DM Sans;
+				font-size: 24rpx;
+				font-weight: 500;
+				line-height: 48rpx;
+				letter-spacing: 0.5%;
+				text-align: left;
+			}
+		}
+	}
+}
+
+.bottom-action {
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	padding: 30rpx 40rpx;
+	background: #ffffff;
+	z-index: 9999;
+	
+	.republish-btn {
+		width: 100%;
+		height: 88rpx;
+		background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+		border-radius: 44rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		
+		.republish-text {
+			color: rgba(255, 255, 255, 1);
+			font-family: DM Sans;
+			font-size: 32rpx;
+			font-weight: 400;
+			line-height: 48rpx;
+			letter-spacing: 0%;
+			text-align: center;
+		}
+	}
+}
+</style>

+ 605 - 0
pages/jobManagement/jobManagement.vue

@@ -0,0 +1,605 @@
+<template>
+	<view class="job-management-page">
+		<!-- 固定顶部导航栏和标签页 -->
+		<view class="fixed-header">
+			<!-- 自定义导航栏 -->
+			<view class="custom-navbar">
+				<view class="navbar-content">
+					<view class="nav-left" @click="goBack">
+						<u-icon name="arrow-leftward" color="#333" size="32"></u-icon>
+					</view>
+					<view class="nav-title">职位管理</view>
+					<view class="nav-right"></view>
+				</view>
+			</view>
+			
+			<!-- 标签页导航 -->
+			<u-tabs 
+				:list="tabList" 
+				:current="activeTab" 
+				@change="switchTab"
+				:is-scroll="false"
+				:height="88"
+				:font-size="24"
+				active-color="#016BF6"
+				inactive-color="rgba(102, 102, 102, 1)"
+				:bar-width="60"
+				:bar-height="4"
+				:gutter="0"
+				bg-color="#ffffff"
+			></u-tabs>
+		</view>
+		
+		<!-- 职位列表 -->
+		<view class="job-list">
+			<!-- 有数据时显示列表 -->
+			<scroll-view scroll-y="true" style="width: 100%;height: 70vh;" v-if="jobList.length > 0">
+				<view 
+					class="job-card" 
+					:class="job.statusClass"
+					v-for="(job, index) in jobList" 
+					:key="index"
+					@click="goToJobDetail(job)"
+				>
+					<view class="job-card-content">
+						<view class="job-header">
+							<view class="job-title-section">
+								<text class="job-title">{{job.title}}</text>
+								<view class="urgent-tag" v-if="job.isUrgent">
+									<text class="urgent-text">急聘</text>
+								</view>
+							</view>
+							<view class="job-status" :class="job.statusClass">
+								<text class="status-text">{{job.status}}</text>
+							</view>
+						</view>
+						<view class="job-info">
+							<text class="job-details">{{job.location}} {{job.education}} {{job.experience}} {{job.salary}} {{job.type}}</text>
+						</view>
+					</view>
+				</view>
+			</scroll-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="bottom-action">
+			<view class="publish-btn" @click="publishNewJob">
+				<text class="publish-text">发布新职位</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			activeTab: 0,
+			tabList: [
+				{ name: '全部' },
+				{ name: '开放中' },
+				{ name: '审核失败' },
+				{ name: '已关闭' }
+			],
+			jobList: []
+		}
+	},
+	created() {
+		// 页面创建时初始化数据
+		this.filterJobsByTab(0)
+		// 动态设置body和html高度
+		this.setBodyHeight()
+	},
+	methods: {
+		goBack() {
+			// 检查页面栈,如果没有可返回的页面,则跳转到首页
+			const pages = getCurrentPages()
+			if (pages.length > 1) {
+				uni.navigateBack()
+			} else {
+				// 如果没有可返回的页面,跳转到首页
+				uni.switchTab({
+					url: '/pages/index/index'
+				})
+			}
+		},
+		switchTab(e) {
+			// u-tabs组件的change事件传递的是事件对象,需要获取index
+			const index = typeof e === 'number' ? e : e.index
+			this.activeTab = index
+			// 这里可以根据选中的标签过滤职位列表
+			this.filterJobsByTab(index)
+		},
+		filterJobsByTab(tabIndex) {
+			// 根据标签过滤职位列表的逻辑
+			console.log('切换到标签:', this.tabList[tabIndex].name)
+			
+			// 模拟不同标签的数据
+			if (tabIndex === 0) { // 全部
+				this.jobList = [
+					{
+						title: '亚马逊运营',
+						location: '深圳-西乡',
+						education: '本科',
+						experience: '1-3年',
+						salary: '10-15K·13薪',
+						type: '全职',
+						status: '免费试用中',
+						statusClass: 'status-trial',
+						isUrgent: true
+					},
+					{
+						title: '亚马逊运营',
+						location: '深圳-西乡',
+						education: '本科',
+						experience: '1-3年',
+						salary: '10-15K·13薪',
+						type: '全职',
+						status: '审核中',
+						statusClass: 'status-review',
+						isUrgent: false
+					},
+					{
+						title: '亚马逊运营',
+						location: '深圳-西乡',
+						education: '本科',
+						experience: '1-3年',
+						salary: '10-15K·13薪',
+						type: '全职',
+						status: '审核未通过',
+						statusClass: 'status-failed',
+						isUrgent: false
+					},
+					{
+						title: '亚马逊运营',
+						location: '深圳-西乡',
+						education: '本科',
+						experience: '1-3年',
+						salary: '10-15K·13薪',
+						type: '全职',
+						status: '免费试用中',
+						statusClass: 'status-trial',
+						isUrgent: false
+					},
+					{
+						title: '产品经理',
+						location: '深圳-南山',
+						education: '本科',
+						experience: '3-5年',
+						salary: '15-25K·14薪',
+						type: '全职',
+						status: '审核中',
+						statusClass: 'status-review',
+						isUrgent: true
+					},
+					{
+						title: 'UI设计师',
+						location: '深圳-福田',
+						education: '本科',
+						experience: '2-4年',
+						salary: '12-18K·13薪',
+						type: '全职',
+						status: '免费试用中',
+						statusClass: 'status-trial',
+						isUrgent: false
+					},
+					{
+						title: '前端开发工程师',
+						location: '深圳-宝安',
+						education: '本科',
+						experience: '2-5年',
+						salary: '15-22K·13薪',
+						type: '全职',
+						status: '审核中',
+						statusClass: 'status-review',
+						isUrgent: true
+					},
+					{
+						title: '数据分析师',
+						location: '深圳-龙岗',
+						education: '硕士',
+						experience: '1-3年',
+						salary: '18-28K·14薪',
+						type: '全职',
+						status: '免费试用中',
+						statusClass: 'status-trial',
+						isUrgent: false
+					},
+					{
+						title: '销售经理',
+						location: '深圳-罗湖',
+						education: '本科',
+						experience: '3-6年',
+						salary: '20-35K·15薪',
+						type: '全职',
+						status: '审核中',
+						statusClass: 'status-review',
+						isUrgent: false
+					},
+					{
+						title: '运营专员',
+						location: '深圳-盐田',
+						education: '本科',
+						experience: '1-2年',
+						salary: '8-12K·13薪',
+						type: '全职',
+						status: '审核未通过',
+						statusClass: 'status-failed',
+						isUrgent: false
+					},
+					{
+						title: '运营专员',
+						location: '深圳-盐田',
+						education: '本科',
+						experience: '1-2年',
+						salary: '8-12K·13薪',
+						type: '全职',
+						status: '审核未通过',
+						statusClass: 'status-failed',
+						isUrgent: false
+					},
+					{
+						title: '运营专员',
+						location: '深圳-盐田',
+						education: '本科',
+						experience: '1-2年',
+						salary: '8-12K·13薪',
+						type: '全职',
+						status: '审核未通过',
+						statusClass: 'status-failed',
+						isUrgent: false
+					},
+					{
+						title: '运营专员',
+						location: '深圳-盐田',
+						education: '本科',
+						experience: '1-2年',
+						salary: '8-12K·13薪',
+						type: '全职',
+						status: '审核未通过',
+						statusClass: 'status-failed',
+						isUrgent: false
+					}
+				]
+			} else if (tabIndex === 1) { // 开放中
+				this.jobList = [
+					{
+						title: '亚马逊运营',
+						location: '深圳-西乡',
+						education: '本科',
+						experience: '1-3年',
+						salary: '10-15K·13薪',
+						type: '全职',
+						status: '免费试用中',
+						statusClass: 'status-trial',
+						isUrgent: true
+					},
+					{
+						title: '产品经理',
+						location: '深圳-南山',
+						education: '本科',
+						experience: '3-5年',
+						salary: '15-25K·14薪',
+						type: '全职',
+						status: '免费试用中',
+						statusClass: 'status-trial',
+						isUrgent: true
+					},
+					{
+						title: 'UI设计师',
+						location: '深圳-福田',
+						education: '本科',
+						experience: '2-4年',
+						salary: '12-18K·13薪',
+						type: '全职',
+						status: '免费试用中',
+						statusClass: 'status-trial',
+						isUrgent: false
+					}
+				]
+			} else if (tabIndex === 2) { // 审核失败
+				this.jobList = [
+					{
+						title: '亚马逊运营',
+						location: '深圳-西乡',
+						education: '本科',
+						experience: '1-3年',
+						salary: '10-15K·13薪',
+						type: '全职',
+						status: '审核未通过',
+						statusClass: 'status-failed',
+						isUrgent: false
+					}
+				]
+			} else if (tabIndex === 3) { // 已关闭
+				this.jobList = [
+					{
+						title: '运营专员',
+						location: '深圳-盐田',
+						education: '本科',
+						experience: '1-2年',
+						salary: '8-12K·13薪',
+						type: '全职',
+						status: '已关闭',
+						statusClass: 'status-closed',
+						isUrgent: false
+					}
+				]
+			}
+		},
+		goToJobDetail(job) {
+			// 跳转到职位详情页面
+			uni.navigateTo({
+				url: '/pages/jobManagement/jobDetail'
+			})
+		},
+		publishNewJob() {
+			// 跳转到发布新职位页面
+			uni.navigateTo({
+				url: '/package/addJob/addJob'
+			})
+		},
+		setBodyHeight() {
+			// 动态设置body和html高度为auto
+			if (typeof document !== 'undefined') {
+				document.body.style.height = 'auto'
+				document.documentElement.style.height = 'auto'
+				document.body.style.minHeight = 'auto'
+				document.documentElement.style.minHeight = 'auto'
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+page {
+	background-color: #ffffff;
+}
+.job-management-page {
+	background-color: #ffffff;
+}
+
+.fixed-header {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	z-index: 9999;
+	background-color: #ffffff;
+}
+
+.custom-navbar {
+	padding-top: 80rpx;
+	background-color: #ffffff;
+	box-sizing: border-box;
+	
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		height: 88rpx;
+		padding: 0 40rpx;
+		
+		.nav-left, .nav-right {
+			width: 60rpx;
+			height: 60rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		
+		.nav-title {
+            color: rgba(51, 51, 51, 1);
+            font-family: DM Sans;
+            font-size: 30rpx;
+            font-weight: 700;
+            line-height: 52px;
+            letter-spacing: 0.5%;
+            text-align: center;
+		}
+	}
+}
+
+.job-list {
+	padding: 0 40rpx;
+	margin-top: 280rpx;
+	
+	.job-card {
+		background: #ffffff;
+		border-radius: 12rpx;
+		margin-bottom: 20rpx;
+		padding: 32rpx;
+        border: 0.5px solid rgba(227, 231, 236, 1);
+		// box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.05);
+		
+		.job-card-content {
+			.job-header {
+				display: flex;
+				justify-content: space-between;
+				align-items: flex-start;
+				margin-bottom: 16rpx;
+				
+				.job-title-section {
+					display: flex;
+					align-items: center;
+					flex: 1;
+                    gap: 28rpx;
+					
+					.job-title {
+                        color: rgba(23, 23, 37, 1);
+                        font-family: DM Sans;
+                        font-size: 28rpx;
+                        font-weight: 400;
+                        line-height: 44rpx;
+                        letter-spacing: 0.5%;
+                        text-align: left;
+					}
+					
+					.urgent-tag {
+                        border-radius: 8rpx;
+                        background: rgba(252, 233, 220, 1);
+						padding: 4rpx 8rpx;
+						
+						.urgent-text {
+                            color: rgba(1, 107, 246, 1);
+                            font-family: DM Sans;
+                            font-size: 16rpx;
+                            font-weight: 400;
+                            // line-height: 20rpx;
+                            // letter-spacing: -0.5px;
+                            text-align: left;
+						}
+					}
+				}
+				
+				.job-status {
+					&.status-trial {
+						color: rgba(1, 107, 246, 1);
+					}
+					
+					&.status-review {
+						color: rgba(1, 107, 246, 1);
+					}
+					
+					&.status-failed {
+						color: rgba(153, 153, 153, 1);
+						
+						.status-text {
+							color: rgba(153, 153, 153, 1) !important;
+							background: none !important;
+							-webkit-background-clip: unset !important;
+							-webkit-text-fill-color: rgba(153, 153, 153, 1) !important;
+							background-clip: unset !important;
+							text-fill-color: rgba(153, 153, 153, 1) !important;
+						}
+					}
+					
+					&.status-closed {
+						color: rgba(153, 153, 153, 1);
+						
+						.status-text {
+							color: rgba(153, 153, 153, 1) !important;
+							background: none !important;
+							-webkit-background-clip: unset !important;
+							-webkit-text-fill-color: rgba(153, 153, 153, 1) !important;
+							background-clip: unset !important;
+							text-fill-color: rgba(153, 153, 153, 1) !important;
+						}
+					}
+					
+					.status-text {
+                        background: linear-gradient(132.53deg, rgba(106.94185638427734, 84.63434600830078, 214.0178680419922, 0.96),rgba(144.87640380859375, 87.8011474609375, 191.25, 1) 95%);
+                        -webkit-background-clip: text;
+                        -webkit-text-fill-color: transparent;
+                        background-clip: text;
+                        text-fill-color: transparent;
+                        font-family: DM Sans;
+                        font-size: 18rpx;
+                        font-weight: 400;
+                        line-height: 20rpx;
+                        letter-spacing: -0.5px;
+                        text-align: right;
+					}
+				}
+			}
+			
+			.job-info {
+				.job-details {
+                    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: left;
+				}
+			}
+		}
+		
+		&.status-failed {
+			.job-title {
+				color: rgba(153, 153, 153, 1) !important;
+			}
+			
+			.job-details {
+				color: rgba(153, 153, 153, 1) !important;
+			}
+		}
+		
+		&.status-closed {
+			.job-title {
+				color: rgba(153, 153, 153, 1) !important;
+			}
+			
+			.job-details {
+				color: rgba(153, 153, 153, 1) !important;
+			}
+		}
+	}
+}
+
+.empty-state {
+	display: flex;
+	// flex-direction: column;
+	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;
+	}
+}
+
+.bottom-action {
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	padding: 30rpx 40rpx;
+	background: #ffffff;
+	z-index: 9999;
+	
+	.publish-btn {
+		width: 100%;
+		height: 88rpx;
+		background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+		border-radius: 44rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		
+		.publish-text {
+            color: rgba(255, 255, 255, 1);
+            font-family: DM Sans;
+            font-size: 32rpx;
+            font-weight: 400;
+            line-height: 48rpx;
+            letter-spacing: 0%;
+            text-align: center;
+		}
+	}
+}
+</style>

+ 727 - 0
pages/talentSearch/index.vue

@@ -0,0 +1,727 @@
+<template>
+	<view class="talent-search-page">
+		<!-- 搜索框 -->
+		<view class="search flex align-center justify-center">
+			<view class="search-box">
+				<view class="dropdown-btn" @click="showDropdown">
+					<text class="dropdown-text">{{ positionOptions[selectedPosition] }}</text>
+					<u-icon name="arrow-down" color="#016BF6" size="16"></u-icon>
+				</view>
+				<view class="separator"></view>
+				<input 
+					class="search-input"
+					v-model="searchKeyword"
+					placeholder="通过职位关键词查询"
+					@confirm="custom"
+				/>
+			</view>
+			<view class="search-btn" @click="custom">搜索</view>
+		</view>
+		
+		<!-- 人才列表 -->
+		<view class="talent-list">
+			<view 
+				class="talent-card" 
+				v-for="(talent, index) in talentList" 
+				:key="index"
+				@click="goToTalentDetail(talent)"
+			>
+				<view class="talent-content">
+					<!-- 头像和基本信息 -->
+					<view class="talent-header">
+						<image :src="talent.avatar" class="talent-avatar" mode="aspectFill"></image>
+						<view class="talent-info">
+							<view class="talent-name-section">
+								<view class="talent-name">{{ talent.name }}</view>
+								<view class="talent-tags">
+									<view class="status-tag online" v-if="talent.isOnline">在线</view>
+									<view class="status-tag hot" v-if="talent.isHot">热门搜索</view>
+									<view class="status-tag active" v-if="talent.lastActive">{{ talent.lastActive }}</view>
+								</view>
+							</view>
+							<!-- 经验和薪资 -->
+							<view class="talent-experience">
+								<text class="experience-text">{{ talent.experience }}</text>
+								<text class="education-salary">{{ talent.education }} {{ talent.salary }}</text>
+								<text class="status-text">{{ talent.jobStatus }}</text>
+							</view>
+						</view>
+					</view>
+					
+					<!-- 当前职位 -->
+					<view class="current-job" v-if="talent.currentJob">
+						<image src="../../static/images/aixin.svg" class="job-icon" mode="aspectFit"></image>
+						<text class="job-text">{{ talent.currentJob }}</text>
+					</view>
+					
+					<!-- 求职期望 -->
+					<view class="job-expectation">
+						<image src="../../static/images/xiangzi.svg" class="job-icon" mode="aspectFit"></image>
+						<text class="expectation-text">求职期望: {{ talent.jobExpectation }}</text>
+					</view>
+					
+					<!-- 技能标签 -->
+					<view class="skill-tags">
+						<view 
+							class="skill-tag" 
+							v-for="(skill, skillIndex) in talent.skills" 
+							:key="skillIndex"
+						>
+							{{ skill }}
+						</view>
+					</view>
+					
+					<!-- 工作描述 -->
+					<view class="job-description">
+						<text class="description-text">{{ talent.description }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 职位选择弹窗 -->
+		<view class="position-modal" v-if="showPositionModal" @click="hidePositionModal">
+			<view class="position-modal-content" @click.stop>
+				<!-- 拖拽条 -->
+				<view class="position-modal-handle"></view>
+				
+				<!-- 标题 -->
+				<view class="position-modal-title">选择职位</view>
+				
+				<!-- 职位选项 -->
+				<view class="position-options">
+					<view 
+						class="position-option" 
+						:class="selectedPosition === index ? 'active' : ''"
+						@click="selectPosition(index)"
+						v-for="(option, index) in positionOptions" 
+						:key="index"
+					>
+						<view class="position-option-icon">
+							<view class="check-icon" v-if="selectedPosition === index">✓</view>
+						</view>
+						<text class="position-option-text">{{ option }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			searchKeyword: '',
+			currentSx: 0,
+			sxTypeList: [
+				{
+					id: 1,
+					name: '推荐',
+				},
+				{
+					id: 2,
+					name: '最新',
+				}
+			],
+			city: '深圳',
+			county: '',
+			showSortModalFlag: false,
+			selectedSort: 0,
+			sortOptions: ['综合排序', '最新优先', '距离优先'],
+			showPositionModal: false,
+			selectedPosition: 0,
+			positionOptions: ['亚马逊运营', 'TikTok运营', '采购经理', '不限职位'],
+			talentList: [
+				{
+					id: 1,
+					name: '刘**',
+					avatar: '../../static/images/avator.png',
+					isOnline: true,
+					isHot: true,
+					experience: '8年',
+					education: '本科',
+					salary: '10-15K',
+					jobStatus: '在职&考虑机会',
+					currentJob: '通拓集团·店铺运营',
+					jobExpectation: '亚马逊运营',
+					skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
+					description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
+					workPeriod: '2021-2024'
+				},
+				{
+					id: 2,
+					name: '李**',
+					avatar: '../../static/images/avator.png',
+					lastActive: '5分钟前活跃',
+					experience: '25年应届生',
+					education: '本科',
+					salary: '8-12K',
+					jobStatus: '离职&随时到岗',
+					currentJob: '大连海事学院·法学',
+					jobExpectation: '亚马逊运营',
+					skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
+					description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
+					workPeriod: ''
+				},
+				{
+					id: 3,
+					name: '李**',
+					avatar: '../../static/images/avator.png',
+					lastActive: '刚刚活跃',
+					experience: '25年应届生',
+					education: '本科',
+					salary: '8-12K',
+					jobStatus: '离职&随时到岗',
+					currentJob: '臣美科技·小红书运营',
+					jobExpectation: '亚马逊运营',
+					skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
+					description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
+					workPeriod: '2021-2025'
+				},
+				{
+					id: 4,
+					name: '李**',
+					avatar: '../../static/images/avator.png',
+					lastActive: '刚刚活跃',
+					experience: '25年应届生',
+					education: '本科',
+					salary: '8-12K',
+					jobStatus: '离职&随时到岗',
+					currentJob: '臣美科技·小红书运营',
+					jobExpectation: '亚马逊运营',
+					skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
+					description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
+					workPeriod: ''
+				}
+			]
+		}
+	},
+	methods: {
+		// 返回上一页
+		goBack() {
+			uni.navigateBack()
+		},
+		
+		// 显示下拉菜单
+		showDropdown() {
+			this.showPositionModal = true
+		},
+		
+		// 隐藏职位选择弹窗
+		hidePositionModal() {
+			this.showPositionModal = false
+		},
+		
+		// 选择职位
+		selectPosition(index) {
+			this.selectedPosition = index
+			// 更新下拉按钮显示的文字
+			const selectedText = this.positionOptions[index]
+			// 这里可以更新下拉按钮的显示文字
+			uni.showToast({
+				title: `已选择: ${selectedText}`,
+				icon: 'none'
+			})
+			this.hidePositionModal()
+		},
+		
+		// 搜索
+		custom() {
+			console.log('搜索关键词:', this.searchKeyword)
+			// 这里可以添加搜索逻辑
+		},
+		
+		// 清空搜索
+		clear() {
+			this.searchKeyword = ''
+		},
+		
+		// 跳转页面
+		goNav(url) {
+			if (uni.getStorageSync('token')) {
+				uni.navigateTo({
+					url: url
+				})
+			} else {
+				this.noLogin()
+			}
+		},
+		
+		// 未登录提示
+		noLogin() {
+			uni.showModal({
+				title: '提示',
+				content: '您还未登录,请先登录',
+				confirmColor: '#00B88F',
+				success: function(res) {
+					if (res.confirm) {
+						uni.navigateTo({
+							url: '/pages/public/login'
+						})
+					}
+				}
+			})
+		},
+		
+		// 显示排序弹窗
+		showSortModal() {
+			this.showSortModalFlag = true
+		},
+		
+		// 隐藏排序弹窗
+		hideSortModal() {
+			this.showSortModalFlag = false
+		},
+		
+		// 选择排序选项
+		selectSort(index) {
+			this.selectedSort = index
+			uni.showToast({
+				title: `已选择: ${this.sortOptions[index]}`,
+				icon: 'none'
+			})
+			this.hideSortModal()
+		},
+		
+		// 跳转到人才详情
+		goToTalentDetail(talent) {
+			console.log('查看人才详情:', talent)
+			// 这里可以跳转到人才详情页面
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+// 激活状态样式
+.active3 {
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+	padding: 12rpx;
+	border-radius: 12rpx;
+	background: #FFFFFF !important;
+	margin-right: 12rpx;
+	border: 0.5px solid rgba(1, 107, 246, 1);
+
+	color: rgba(1, 107, 246, 1) !important;
+	font-family: DM Sans;
+	font-size: 22rpx;
+	font-weight: 400;
+	line-height: 20rpx;
+	letter-spacing: 0px;
+	text-align: left;
+}
+
+.talent-search-page {
+	min-height: 100vh;
+	background-color: #f5f5f5;
+}
+
+
+// 搜索框
+.search {
+	position: fixed;
+	top: 0;
+	width: 100%;
+	padding: 80rpx 20rpx 20rpx 20rpx;
+	background: linear-gradient(180.00deg, rgba(255, 102, 0, 1),rgba(255, 89, 89, 1) 83%);
+	z-index: 99;
+
+	.search-box {
+		flex: 1;
+		box-sizing: border-box;
+		border: 1px solid rgba(227, 231, 236, 1);
+		border-radius: 24px;
+		background: rgba(241, 241, 241, 1);
+		overflow: hidden;
+		display: flex;
+		align-items: center;
+		padding: 0 32rpx;
+		height: 60rpx;
+	}
+
+	.dropdown-btn {
+		display: flex;
+		align-items: center;
+		padding: 8rpx 16rpx;
+		background-color: #F1F1F1;
+		border: 1rpx solid #016BF6;
+		border-radius: 8rpx;
+		margin-right: 12rpx;
+		
+		.dropdown-text {
+			color: rgba(1, 107, 246, 1);
+			font-family: DM Sans;
+			font-size: 20rpx;
+			font-weight: 400;
+			line-height: 20rpx;
+			letter-spacing: -0.5px;
+			text-align: left;
+			margin-right: 8rpx;
+		}
+	}
+
+	.separator {
+		width: 4rpx;
+		height: 30rpx;
+		background-color: rgba(153, 153, 153, 1);
+		margin-right: 12rpx;
+	}
+
+	.search-input {
+		flex: 1;
+		height: 100%;
+		background: transparent;
+		color: #333;
+		font-family: DM Sans;
+		font-size: 20rpx;
+		font-weight: 400;
+		line-height: 48rpx;
+		letter-spacing: 0.5%;
+		text-align: left;
+		
+		&::placeholder {
+			color: rgba(182, 182, 182, 1);
+			font-family: DM Sans;
+			font-size: 20rpx;
+			font-weight: 400;
+			line-height: 48rpx;
+			letter-spacing: 0.5%;
+			text-align: left;
+		}
+	}
+
+	.search-btn {
+		width: 80rpx;
+		color: rgba(255, 255, 255, 1);
+		font-family: DM Sans;
+		font-size: 20rpx;
+		font-weight: 500;
+		line-height: 48rpx;
+		letter-spacing: 0.5%;
+		text-align: center;
+	}
+}
+
+
+.search-bar {
+	display: flex;
+	align-items: center;
+	margin-bottom: 20rpx;
+	
+	.search-input {
+		flex: 1;
+		height: 80rpx;
+		background-color: #f8f8f8;
+		border-radius: 40rpx;
+		padding: 0 30rpx;
+		font-size: 28rpx;
+		color: #333;
+		margin-right: 20rpx;
+	}
+	
+	.search-btn {
+		width: 120rpx;
+		height: 80rpx;
+		background-color: #016BF6;
+		color: #ffffff;
+		border-radius: 40rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 28rpx;
+	}
+}
+
+.filter-tags {
+	display: flex;
+	flex-wrap: wrap;
+	gap: 16rpx;
+	
+	.filter-tag {
+		padding: 12rpx 24rpx;
+		background-color: #ffffff;
+		border: 1rpx solid #e5e5e5;
+		border-radius: 20rpx;
+		font-size: 24rpx;
+		color: #666;
+	}
+}
+
+.talent-list {
+	margin-top: 160rpx;
+	padding: 20rpx;
+}
+
+.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: 36rx;
+				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;
+		}
+	}
+	
+	.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;
+		}
+	}
+	
+	.work-period {
+		text-align: right;
+		
+		.period-text {
+			font-size: 22rpx;
+			color: #999;
+		}
+		}
+	}
+
+	// 职位选择弹窗样式
+	.position-modal {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: rgba(0, 0, 0, 0.5);
+		z-index: 10001;
+		display: flex;
+		align-items: flex-end;
+		
+		.position-modal-content {
+			width: 100%;
+			background: #ffffff;
+			border-radius: 24rpx 24rpx 0 0;
+			padding: 20rpx 40rpx 40rpx 40rpx;
+			max-height: 60vh;
+			
+			.position-modal-handle {
+				width: 80rpx;
+				height: 8rpx;
+				background: #E5E5E5;
+				border-radius: 4rpx;
+				margin: 0 auto 30rpx auto;
+			}
+			
+			.position-modal-title {
+				font-size: 32rpx;
+				font-weight: 600;
+				color: #333333;
+				text-align: center;
+				padding-bottom: 30rpx;
+				margin-bottom: 30rpx;
+				border-bottom: 1px solid rgba(153, 153, 153, 0.25);
+			}
+			
+			.position-options {
+				.position-option {
+					display: flex;
+					align-items: center;
+					padding: 24rpx 32rpx;
+					margin-bottom: 16rpx;
+					border-radius: 42rpx;
+					border: 2rpx solid rgba(227, 231, 236, 1);
+					
+					&.active {
+						background: #F0F8FF;
+						border-color: #007AFF;
+						
+						.position-option-icon {
+							background: #007AFF;
+							border-color: #007AFF;
+							
+							.check-icon {
+								color: #ffffff;
+							}
+						}
+						
+						.position-option-text {
+							color: #007AFF;
+							font-weight: 500;
+						}
+					}
+					
+					.position-option-icon {
+						width: 40rpx;
+						height: 40rpx;
+						border-radius: 50%;
+						border: 2rpx solid #E5E5E5;
+						background: #ffffff;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						margin-right: 24rpx;
+						
+						.check-icon {
+							font-size: 24rpx;
+							color: #ffffff;
+							font-weight: bold;
+						}
+					}
+					
+					.position-option-text {
+						font-size: 28rpx;
+						color: #333333;
+						flex: 1;
+					}
+				}
+			}
+		}
+	}
+</style>

File diff suppressed because it is too large
+ 2 - 0
static/images/aixin.svg


BIN
static/images/avator.png


BIN
static/images/default-avatar-female.png


BIN
static/images/default-avatar-male.png


File diff suppressed because it is too large
+ 2 - 0
static/images/index/Hrempty.svg


+ 5 - 0
static/images/index/qiyeDelete.svg

@@ -0,0 +1,5 @@
+<svg viewBox="0 0 20.9375 20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20.937500" height="20.000000" fill="none">
+	<rect id="svg 46" width="20.937500" height="20.000000" x="0.000000" y="0.000000" />
+	<path id="矢量 46" d="M12.7846 8.12285C12.7846 8.04568 12.7531 7.97315 12.6961 7.91861C12.6389 7.86404 12.563 7.83399 12.4822 7.83399C12.4014 7.83399 12.3255 7.86404 12.2684 7.91859L10.4926 9.61481L8.71692 7.91859C8.65797 7.86198 8.58669 7.83377 8.50309 7.83399C8.41949 7.83377 8.34821 7.86197 8.28926 7.91859C8.17134 8.03121 8.17134 8.21447 8.28926 8.32711L10.065 10.0233L8.28928 11.7196C8.23215 11.7741 8.20068 11.8467 8.20068 11.9238C8.20068 12.001 8.23215 12.0735 8.28922 12.128C8.34633 12.1826 8.42229 12.2127 8.50307 12.2127C8.58386 12.2127 8.65984 12.1826 8.7169 12.1281L10.4926 10.4319L12.2683 12.128C12.3254 12.1826 12.4014 12.2127 12.4822 12.2127C12.563 12.2127 12.639 12.1826 12.696 12.1281C12.7531 12.0736 12.7846 12.001 12.7846 11.9238C12.7846 11.8467 12.7531 11.7741 12.696 11.7196L10.9203 10.0234L12.696 8.32715C12.7553 8.27083 12.7848 8.20273 12.7846 8.12285L12.7846 8.12285Z" fill="rgb(0,0,0)" fill-rule="nonzero" />
+	<path id="矢量 47" d="M15.0678 5.57814C13.8363 4.40178 12.1989 3.75391 10.4573 3.75391C8.71567 3.75391 7.07829 4.40176 5.84676 5.57814C4.61525 6.75453 3.93701 8.31861 3.93701 9.98225C3.93701 11.6459 4.61523 13.21 5.84676 14.3863C7.07829 15.5627 8.71569 16.2106 10.4573 16.2106C12.1989 16.2106 13.8363 15.5627 15.0678 14.3863C16.2994 13.21 16.9776 11.6459 16.9776 9.98225C16.9776 8.31859 16.2994 6.75453 15.0678 5.57814ZM10.4573 15.6246C7.20024 15.6246 4.55042 13.0935 4.55042 9.98225C4.55042 6.87102 7.20024 4.33984 10.4573 4.33984C13.7144 4.33984 16.3642 6.87102 16.3642 9.98225C16.3642 13.0935 13.7144 15.6246 10.4573 15.6246Z" fill="rgb(0,0,0)" fill-rule="nonzero" />
+</svg>

+ 5 - 0
static/images/index/redGantan.svg

@@ -0,0 +1,5 @@
+<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20.000000" height="20.000000" fill="none">
+	<rect id="svg 56" width="20.000000" height="20.000000" x="0.000000" y="0.000000" />
+	<path id="矢量 56" d="M10.0004 1.12695C5.09974 1.12695 1.12695 5.09974 1.12695 10.0004C1.12695 14.9011 5.09974 18.8739 10.0004 18.8739C14.9011 18.8739 18.8739 14.9011 18.8739 10.0004C18.8739 5.09974 14.9011 1.12695 10.0004 1.12695Z" fill="rgb(255,55,0)" fill-rule="nonzero" />
+	<path id="矢量 57" d="M8.54297 8.05729C8.54297 5.7507 9.19531 3.88086 9.99981 3.88086C10.8045 3.88086 11.4568 5.7507 11.4568 8.05729C11.4568 10.364 10.8045 12.2339 9.99981 12.2339C9.19531 12.2339 8.54297 10.364 8.54297 8.05729ZM8.54297 14.662C8.54297 13.8575 9.19531 13.2051 9.99981 13.2051C10.8045 13.2051 11.4568 13.8575 11.4568 14.662C11.4568 15.4666 10.8045 16.119 9.99981 16.119C9.19531 16.119 8.54297 15.4666 8.54297 14.662Z" fill="rgb(255,255,255)" fill-rule="nonzero" />
+</svg>

+ 5 - 0
static/images/man.svg

@@ -0,0 +1,5 @@
+<svg viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="11.000000" height="11.000000" fill="none">
+	<rect id="svg 49" width="11.000000" height="11.000000" x="0.000000" y="0.000000" />
+	<circle id="椭圆 10" cx="5.5" cy="5.5" r="5.5" fill="rgb(255,255,255)" />
+	<path id="矢量 48" d="M8.84505 4.47989L8.84505 3.02702C8.55674 3.30779 7.69086 4.15012 7.24238 4.58636C7.68332 5.12529 7.94808 5.80839 7.94808 6.55272C7.94808 8.28448 6.51783 9.69401 4.75969 9.69401C3.00155 9.69401 1.57129 8.28448 1.57129 6.55272C1.57129 4.82096 3.00154 3.41144 4.75969 3.41144C5.44749 3.41144 6.08347 3.62908 6.60545 3.9956C7.04828 3.57444 7.9396 2.72834 8.24299 2.43909L6.64973 2.43909L6.64973 1.57227L9.68832 1.57227L9.68832 4.47895L8.84506 4.47895L8.84505 4.47989ZM2.4513 6.55272C2.4513 7.80679 3.48678 8.82719 4.76063 8.82719C6.03448 8.82719 7.06995 7.80679 7.06995 6.55272C7.06995 5.29866 6.03259 4.27826 4.75969 4.27826C3.48678 4.27826 2.4513 5.29866 2.4513 6.55272L2.4513 6.55272Z" fill="rgb(16,0,255)" fill-rule="nonzero" />
+</svg>

File diff suppressed because it is too large
+ 2 - 0
static/images/wuman.svg


File diff suppressed because it is too large
+ 2 - 0
static/images/xiangzi.svg


BIN
static/tabbar/ACjob.png


BIN
static/tabbar/ACsearch.png


BIN
static/tabbar/Hrsearch.png


BIN
static/tabbar/Rectangle7.png


BIN
static/tabbar/job.png


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