소스 검색

Merge branch 'master' of https://git.nanodreamtech.com/Boss/yizhizan-h5

lyuis 7 달 전
부모
커밋
b727f50389

+ 1 - 1
.hbuilderx/launch.json

@@ -3,7 +3,7 @@
     "configurations" : [
         {
             "customPlaygroundType" : "local",
-            "playground" : "custom",
+            "playground" : "standard",
             "type" : "uni-app:app-android"
         }
     ]

+ 4 - 4
manifest.json

@@ -63,7 +63,7 @@
                 "payment" : {
                     "weixin" : {
                         "__platform__" : [ "android" ],
-                        "appid" : "wxeaffcaea958472d3",
+                        "appid" : "wx6b884c8431f096c4",
                         "UniversalLinks" : "https://maxiong.xianmxkj.com/"
                     },
                     "alipay" : {
@@ -72,14 +72,14 @@
                 },
                 "share" : {
                     "weixin" : {
-                        "appid" : "wxeaffcaea958472d3",
+                        "appid" : "wx6b884c8431f096c4",
                         "UniversalLinks" : "https://maxiong.xianmxkj.com/"
                     }
                 },
                 "oauth" : {
                     "weixin" : {
-                        "appid" : "wxeaffcaea958472d3",
-                        "appsecret" : "32f6f3ce599abff2fa0191a36780c66c",
+                        "appid" : "wx6b884c8431f096c4",
+                        "appsecret" : "30d3fd06ab473f07b0a4b45e1048b5cb",
                         "UniversalLinks" : "https://maxiong.xianmxkj.com/"
                     }
                 },

+ 179 - 109
my/order/pay.vue

@@ -13,7 +13,7 @@
 				</view>
 			</view>
 		</view>
-		
+
 		<!-- 审核失败 -->
 		<view v-if="info.status === 3">
 			<!-- 审核状态提示 -->
@@ -23,7 +23,7 @@
 				</view>
 				<view class="status-title">职位审核失败</view>
 			</view>
-			
+
 			<!-- 职位信息卡片 -->
 			<view class="job-info-card">
 				<view class="job-header">
@@ -35,10 +35,11 @@
 					</view>
 				</view>
 				<view class="job-info">
-					<text class="job-details">{{info.county}} {{info.education}} {{info.experience}} {{info.salaryRange}} {{info.postType}}</text>
+					<text class="job-details">{{info.county}} {{info.education}} {{info.experience}}
+						{{info.salaryRange}} {{info.postType}}</text>
 				</view>
 			</view>
-			
+
 			<!-- 失败原因 -->
 			<view class="failure-reason-section">
 				<view class="section-title">失败原因</view>
@@ -54,7 +55,8 @@
 		<view v-if="info.status !== 3">
 			<view class="remarks flex justify-center">
 				<view class="remarks-box flex justify-between align-center">
-					<text style="color: rgba(1, 107, 246, 1);font-weight: bold;">{{info.status==1?'待审核':(info.status==2?'进行中':(info.status==3?'已拒绝':(info.status==4?'已取消':'已关闭')))}}</text>
+					<text
+						style="color: rgba(1, 107, 246, 1);font-weight: bold;">{{info.status==1?'待审核':(info.status==2?'进行中':(info.status==3?'已拒绝':(info.status==4?'已取消':'已关闭')))}}</text>
 					<text style="color: rgba(156, 164, 171, 1);font-size: 24rpx;">{{info.createTime}}</text>
 				</view>
 			</view>
@@ -79,7 +81,8 @@
 
 						<!-- 地址 -->
 						<view class="job-info-c-address">
-							<u-icon name="map" color="rgba(58, 57, 67, 1)" style="margin-right: 10rpx;" size="24"></u-icon>
+							<u-icon name="map" color="rgba(58, 57, 67, 1)" style="margin-right: 10rpx;"
+								size="24"></u-icon>
 							{{info.city}} {{info.county}} {{info.address}}
 						</view>
 
@@ -99,7 +102,7 @@
 			</view>
 
 			<!-- 急聘 -->
-			<view class="urgent-banner">
+			<view class="urgent-banner" v-if="info.isDue==1">
 				<view class="urgent-left-section flex align-center">
 					<view class="urgent-star-icon-wrapper flex align-center justify-center">
 						<u-icon name="star-fill" color="rgba(251, 231, 185, 1)" size="40rpx"></u-icon>
@@ -107,7 +110,8 @@
 					<view class="urgent-text-content">
 						<view class="urgent-main-title">急聘职位 | 2天后到期</view>
 						<view class="urgent-sub-description">急聘免费体验中,升级正式版享受更多权益</view>
-						<view class="urgent-benefits flex align-center">今日剩余权益:5次沟通,0次查看 <u-icon name="arrow-right" color="#FFFFFF" size="20rpx" style="margin-left: 10rpx;"></u-icon></view>
+						<view class="urgent-benefits flex align-center">今日剩余权益:5次沟通,0次查看 <u-icon name="arrow-right"
+								color="#FFFFFF" size="20rpx" style="margin-left: 10rpx;"></u-icon></view>
 					</view>
 				</view>
 				<view class="urgent-upgrade-button">
@@ -124,11 +128,12 @@
 							<text>职位说明</text>
 						</view>
 						<view class="jobRemarks-box-c-label flex align-center flex-wrap" v-if="info.tag">
-							<view class="jobRemarks-box-c-label-item" v-for="(item,index) in info.tag.split(',')" :key="index">
+							<view class="jobRemarks-box-c-label-item" v-for="(item,index) in info.tag.split(',')"
+								:key="index">
 								{{item}}
 							</view>
 						</view>
-		<!-- 				
+						<!-- 				
 						<view class="job-description">
 							<view class="description-item">1.负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;</view>
 							<view class="description-item">2.做好数据的统计分析工作,收集、分析市场信息,竞争对手状况,并根据产品销售与排名变化,及时制定和调整产品的销售策略;</view>
@@ -139,20 +144,21 @@
 							<view class="description-item">7.及时处理客户留言及回评,解答客户相关咨询与投诉,并进行问题整理统计分析,提高店铺的好评率,确保账号安全;</view>
 							<view class="description-item">8.每月定期整理分析运营各项数据,并提出相应的合理化建议。</view>
 						</view> -->
-						
+
 						<view class="jobRemarks-box-c-con" v-if="info.positionDetails">
 							<view class="jobRemarks-box-c-con-item" v-html="info.positionDetails">
 							</view>
 						</view>
-						
+
 						<view class="jobRemarks-box-c-line"></view>
-						
+
 						<view class="jobRemarks-box-c-title flex align-center" style="margin-top: 25rpx;">
 							<image src="/static/images/index/welfare.png" class="title-icon"></image>
 							<text>岗位福利</text>
 						</view>
 						<view class="jobRemarks-box-c-label flex align-center flex-wrap" v-if="info.welfareTag">
-							<view class="jobRemarks-box-c-label-item" v-for="(item,index) in info.welfareTag?info.welfareTag.split(';'):[]" :key="index">
+							<view class="jobRemarks-box-c-label-item"
+								v-for="(item,index) in info.welfareTag?info.welfareTag.split(';'):[]" :key="index">
 								{{item}}
 							</view>
 						</view>
@@ -161,7 +167,7 @@
 								暂无
 							</view>
 						</view>
-						
+
 						<!-- <view class="job-description">
 							<view class="description-item">1.完整的晋升机制,每年2次调薪机会;</view>
 							<view class="description-item">2.满一年五天带薪年假;</view>
@@ -173,7 +179,7 @@
 					</view>
 				</view>
 			</view>
-			
+
 			<!-- 企业简介 -->
 			<view class="enterprise">
 				<!-- 公司介绍卡片 -->
@@ -184,27 +190,56 @@
 					</view>
 					<view class="company-info">
 						<view class="company-name">{{info.company?info.company.companyAllName:''}}</view>
-						<view class="company-details">{{info.company?info.company.companyPeople:''}} · {{info.company?info.company.companyScope:''}}</view>
+						<view class="company-details">{{info.company?info.company.companyPeople:''}} ·
+							{{info.company?info.company.companyScope:''}}
+						</view>
 					</view>
 					<view class="company-arrow">
 						<u-icon name="arrow-right" color="rgba(51, 51, 51, 1)" size="32"></u-icon>
 					</view>
 				</view>
-				
+
 				<!-- 地图区域 -->
 				<view class="enterprise-box flex justify-center">
 					<view class="enterprise-box-c">
 						<view class="enterprise-box-c-bto flex align-center justify-between" @click.stop="gotoMap()">
 							<view class="enterprise-box-c-bto-l flex align-center">
-								<u-icon name="map" color="#016BF6" style="margin-left: 20rpx;margin-right: 10rpx;" size="28"></u-icon>
-							<!-- 	{{info.province}}{{info.city}}{{info.county}} -->{{info.address}}
+								<u-icon name="map" color="#016BF6" style="margin-left: 20rpx;margin-right: 10rpx;"
+									size="28"></u-icon>
+								<!-- 	{{info.province}}{{info.city}}{{info.county}} -->{{info.address}}
 							</view>
 							<view class="enterprise-box-c-bto-r">
-								<u-icon name="arrow-right" color="#016BF6" style="margin-right: 20rpx;" size="28"></u-icon>
+								<u-icon name="arrow-right" color="#016BF6" style="margin-right: 20rpx;"
+									size="28"></u-icon>
 							</view>
 						</view>
 					</view>
 				</view>
+				<!-- 职位招聘数据 -->
+				<view class="postNum">
+					<view style="font-size: 16px;font-weight: 600;">职位招聘数据</view>
+					<view class="postNum-ul flex justify-around align-center">
+						<view class="postNum-li">
+							<view class="postNum-li-num align-center">34</view>
+							<view class="postNum-li-txt">沟通过</view>
+						</view>
+						<view class="postNum-li ">
+							<view class="postNum-li-num">34</view>
+							<view class="postNum-li-txt">查看过</view>
+						</view>
+						<view class="postNum-li">
+							<view class="postNum-li-num">34</view>
+							<view class="postNum-li-txt">分享</view>
+						</view>
+						<view class="postNum-li">
+							<view class="postNum-li-num">34</view>
+							<view class="postNum-li-txt">收藏</view>
+						</view>
+					</view>
+					<view style="font-size: 22rpx;color: rgba(102, 102, 102, 1);">职位发布时间:{{info.createTime}}</view>
+				</view>
+
+
 			</view>
 		</view>
 		<!-- 底部操作 -->
@@ -213,19 +248,22 @@
 				取消招聘
 			</view>
 		</view>
-		<view class="btn flex justify-center" v-if="info.status==4 || info.isOverdue==1" @click="updataServeType(info.postPushId,'save')">
+		<view class="btn flex justify-center" v-if="info.status==4 || info.isOverdue==1"
+			@click="updataServeType(info.postPushId,'save')">
 			<view class="btn-box bgBox flex justify-center align-center">
 				重新发布
 			</view>
 		</view>
 		<view class="btn flex justify-center" v-if="info.status==3 && info.isOverdue==0">
-			<view class="btn-box bgBox flex justify-center align-center" @click="updataServeType(info.postPushId,'updata')">
+			<view class="btn-box bgBox flex justify-center align-center"
+				@click="updataServeType(info.postPushId,'updata')" style="background-color: #ffffff;border: 1px solid #016bf6;color: #016bf6;">
 				编辑
 			</view>
 		</view>
 		<view class="btn flex justify-center" v-if="info.status==2 && info.isOverdue == 0">
 			<view class="btn-box flex justify-between">
-				<view class="btn-box bgBox btn-boxs flex justify-center align-center" @click="updataServeType(info.postPushId,'updata')">
+				<view class="btn-box bgBox btn-boxs flex justify-center align-center"
+					@click="updataServeType(info.postPushId,'updata')" style="background-color: #ffffff;border: 1px solid #016bf6;color: #016bf6;">
 					编辑
 				</view>
 				<view class="btn-box bgBox btn-boxs flex justify-center align-center" @click="closeOpenJob('close')">
@@ -235,7 +273,8 @@
 		</view>
 		<view class="btn flex justify-center" v-if="info.status==5 && info.isOverdue == 0">
 			<view class="btn-box flex justify-between">
-				<view class="btn-box bgBox btn-boxs flex justify-center align-center" @click="updataServeType(info.postPushId,'updata')">
+				<view class="btn-box bgBox btn-boxs flex justify-center align-center"
+					@click="updataServeType(info.postPushId,'updata')" style="background-color: #ffffff;border: 1px solid #016bf6;color: #016bf6;">
 					编辑
 				</view>
 				<view class="btn-box bgBox btn-boxs flex justify-center align-center" @click="closeOpenJob('open')">
@@ -250,15 +289,15 @@
 	export default {
 		data() {
 			return {
-				postPushId:'',
-				info:{},//岗位详情
+				postPushId: '',
+				info: {}, //岗位详情
 			};
 		},
 		onLoad(option) {
 			this.postPushId = option.postPushId
 			this.getInfo()
 		},
-		methods:{
+		methods: {
 			//返回上一页
 			goBack() {
 				// 检查页面栈,如果没有可返回的页面,则跳转到职位管理
@@ -273,24 +312,24 @@
 				}
 			},
 			//修改岗位
-			updataServeType(postPushId,type) {
+			updataServeType(postPushId, type) {
 				let companyStatus = uni.getStorageSync('companyStatus')
-				if(companyStatus==1){
+				if (companyStatus == 1) {
 					uni.showToast({
-						title:'企业认证审核中,请审核通过后操作!',
-						icon:'none'
+						title: '企业认证审核中,请审核通过后操作!',
+						icon: 'none'
 					})
 					return
 				}
-				if(companyStatus==3){
+				if (companyStatus == 3) {
 					uni.showToast({
-						title:'企业认证审核未通过,请重新认证!',
-						icon:'none'
+						title: '企业认证审核未通过,请重新认证!',
+						icon: 'none'
 					})
 					return
 				}
 				uni.navigateTo({
-					url: '/package/addJob/addJob?postPushId=' + postPushId+'&type='+type
+					url: '/pages/my/jobPosting?postPushId=' + postPushId + '&type=' + type
 				})
 			},
 			//取消招聘
@@ -299,7 +338,7 @@
 				uni.showModal({
 					content: '确认取消该招聘?',
 					title: '提示',
-					confirmColor:'#016BF6',
+					confirmColor: '#016BF6',
 					success(iet) {
 						if (iet.confirm) {
 							let data = {
@@ -327,26 +366,28 @@
 				})
 			},
 			//关闭/开启岗位
-			closeOpenJob(type){
+			closeOpenJob(type) {
 				let that = this
 				uni.showModal({
-					title:'提示',
-					content:type=='close'?'关闭岗位后,该岗位不会再推荐给用户,是否关闭?':'开启岗位后,该岗位会重新推荐给用户,是否开启?',
+					title: '提示',
+					content: type == 'close' ? '关闭岗位后,该岗位不会再推荐给用户,是否关闭?' : '开启岗位后,该岗位会重新推荐给用户,是否开启?',
 					complete(ret) {
-						if(ret.confirm){
-							that.$Request.getT('/app/postPush/closeOrOpen',{postPushId:that.postPushId}).then(res => {
+						if (ret.confirm) {
+							that.$Request.getT('/app/postPush/closeOrOpen', {
+								postPushId: that.postPushId
+							}).then(res => {
 								if (res.code == 0) {
 									uni.showToast({
-										title:type=='close'?'已关闭':'已开启',
+										title: type == 'close' ? '已关闭' : '已开启',
 										duration: 1500,
 										complete() {
 											that.getInfo()
 										}
 									})
-								}else{
+								} else {
 									uni.showToast({
-										title:res.msg,
-										icon:'none'
+										title: res.msg,
+										icon: 'none'
 									})
 								}
 							})
@@ -355,27 +396,28 @@
 				})
 			},
 			//拉起地图导航
-			gotoMap(){
+			gotoMap() {
 				let that = this
 				uni.openLocation({
-					latitude:that.info.lat,
-					longitude:that.info.lng,
-					address:that.info.province+''+that.info.city+''+that.info.county+''+that.info.address,
-					name:that.info.address,
+					latitude: that.info.lat,
+					longitude: that.info.lng,
+					address: that.info.province + '' + that.info.city + '' + that.info.county + '' + that.info
+						.address,
+					name: that.info.address,
 					// complete(ret) {
-						
+
 					// }
 				})
 			},
 			/**
 			 * 获取岗位详情
 			 */
-			getInfo(){
-				this.$Request.getT("/app/postPush/selectPostPushDetails",{
+			getInfo() {
+				this.$Request.getT("/app/postPush/selectPostPushDetails", {
 					// userId:uni.getStorageSync('userId'),
-					postPushId:this.postPushId
+					postPushId: this.postPushId
 				}).then(res => {
-					if(res.code==0){
+					if (res.code == 0) {
 						this.info = res.data
 					}
 				})
@@ -385,11 +427,11 @@
 </script>
 
 <style lang="scss">
-	page{
+	page {
 		// background-color: #F2F2F7;
 		padding-top: 160rpx;
 	}
-	
+
 	.fixed-header {
 		position: fixed;
 		top: 0;
@@ -403,22 +445,23 @@
 		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 {
+
+			.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;
@@ -430,24 +473,24 @@
 			}
 		}
 	}
-	
+
 	.status-section {
 		display: flex;
 		justify-content: center;
 		align-items: center;
 		margin: 40rpx 0rpx 40rpx 0rpx;
-		
+
 		.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;
@@ -460,23 +503,23 @@
 			align-items: center;
 		}
 	}
-	
+
 	.job-info-card {
 		background: #ffffff;
 		border-radius: 12rpx;
 		margin: 0 40rpx 40rpx 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;
@@ -487,7 +530,7 @@
 					text-align: left;
 				}
 			}
-			
+
 			.job-status {
 				.status-text {
 					color: rgba(153, 153, 153, 1);
@@ -500,7 +543,7 @@
 				}
 			}
 		}
-		
+
 		.job-info {
 			.job-details {
 				color: rgba(153, 153, 153, 1);
@@ -513,10 +556,10 @@
 			}
 		}
 	}
-	
+
 	.failure-reason-section {
 		margin: 0 40rpx;
-		
+
 		.section-title {
 			color: rgba(31, 44, 55, 1);
 			font-family: DM Sans;
@@ -527,11 +570,11 @@
 			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;
@@ -544,11 +587,12 @@
 			}
 		}
 	}
-	
-	.remarks{
+
+	.remarks {
 		width: 100%;
 		margin-top: 30rpx;
-		.remarks-box{
+
+		.remarks-box {
 			width: 686rpx;
 			border-radius: 24rpx;
 			background-color: #ffffff;
@@ -556,26 +600,30 @@
 			color: red;
 		}
 	}
-	.job{
+
+	.job {
 		width: 100%;
 		margin-top: 30rpx;
-		
-		.job-info{
+
+		.job-info {
 			width: 686rpx;
 			height: 100%;
 			border-radius: 24rpx;
 			background-color: #ffffff;
-			.job-info-c{
+
+			.job-info-c {
 				// width: 626rpx;
 				width: 100%;
 				height: 100%;
 				padding: 30rpx 20rpx;
 			}
-			.job-info-c-header{
+
+			.job-info-c-header {
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
 			}
+
 			.job-info-c-address {
 				color: rgba(156, 164, 171, 1);
 				font-family: DM Sans;
@@ -586,7 +634,8 @@
 				text-align: left;
 				padding: 20rpx 0;
 			}
-			.job-info-c-title{
+
+			.job-info-c-title {
 				color: rgba(58, 57, 67, 1);
 				font-family: DM Sans;
 				font-size: 48rpx;
@@ -595,9 +644,11 @@
 				letter-spacing: 0px;
 				text-align: left;
 			}
-			.job-info-c-label{
+
+			.job-info-c-label {
+
 				// margin-top: 30rpx;
-				.job-info-c-label-item{
+				.job-info-c-label-item {
 					color: rgba(153, 153, 153, 1);
 					font-family: DM Sans;
 					font-size: 24rpx;
@@ -611,7 +662,8 @@
 					background: rgba(198, 198, 198, 0.1);
 				}
 			}
-			.job-info-c-price{
+
+			.job-info-c-price {
 				color: rgba(1, 107, 246, 1);
 				font-family: DM Sans;
 				font-size: 32rpx;
@@ -622,36 +674,41 @@
 			}
 		}
 	}
-	.jobRemarks{
+
+	.jobRemarks {
 		width: 100%;
 		padding: 0 20rpx;
-		.jobRemarks-box{
+
+		.jobRemarks-box {
 			width: 100%;
 			height: 100%;
 			background-color: #ffffff;
 			border-radius: 24rpx;
-			.jobRemarks-box-c{
+
+			.jobRemarks-box-c {
 				width: 100%;
 				height: 100%;
 				padding: 30rpx 20rpx;
 			}
-			.jobRemarks-box-c-title{
+
+			.jobRemarks-box-c-title {
 				color: rgba(1, 107, 246, 1);
 				font-size: 32rpx;
 				padding: 8px 12px;
 				border-radius: 36px;
 				font-weight: 500;
 				background: rgba(246, 246, 246, 1);
-				
+
 				.title-icon {
 					width: 32rpx;
 					height: 32rpx;
 				}
 			}
+
 			.job-description {
 				margin-top: 20rpx;
 				margin-bottom: 20rpx;
-				
+
 				.description-item {
 					color: rgba(97, 110, 124, 1);
 					font-family: DM Sans;
@@ -663,10 +720,12 @@
 					margin-bottom: 8rpx;
 				}
 			}
-			.jobRemarks-box-c-label{
+
+			.jobRemarks-box-c-label {
 				width: 100%;
 				margin-top: 25rpx;
-				.jobRemarks-box-c-label-item{
+
+				.jobRemarks-box-c-label-item {
 					color: rgba(1, 107, 246, 1);
 					font-size: 20rpx;
 					padding: 10rpx 15rpx;
@@ -677,23 +736,27 @@
 					background: rgba(252, 233, 220, 1);
 				}
 			}
-			.jobRemarks-box-c-con{
+
+			.jobRemarks-box-c-con {
 				width: 100%;
 				margin-top: 25rpx;
-				.jobRemarks-box-c-con-item{
+
+				.jobRemarks-box-c-con-item {
 					margin-bottom: 10rpx;
 					color: #141414;
 					font-size: 28rpx;
 					font-weight: 500;
 				}
 			}
-			.jobRemarks-box-c-line{
+
+			.jobRemarks-box-c-line {
 				width: 100%;
 				border: 1rpx solid #E6E6E6;
 				margin-top: 25rpx;
 			}
 		}
 	}
+
 	.enterprise {
 		width: 100%;
 		margin-top: 25rpx;
@@ -751,7 +814,7 @@
 				height: 100%;
 			}
 
-			.enterprise-box-c-bto{
+			.enterprise-box-c-bto {
 				width: 100%;
 				// padding-top: 15rpx;
 				padding-bottom: 15rpx;
@@ -764,7 +827,11 @@
 			}
 		}
 	}
-	
+	.postNum{padding: 12rpx;}
+.postNum-ul{margin: 22px auto;font-family: DM Sans;}
+.postNum-li-num{font-size: 32rpx;font-weight: 600;line-height: 48rpx;text-align: center;}
+.postNum-li-txt{font-size: 26rpx;font-weight: 600;line-height: 48rpx;text-align: center;}
+
 	.urgent-banner {
 		width: 686rpx;
 		height: 150rpx;
@@ -841,26 +908,29 @@
 			margin-left: 20rpx;
 		}
 	}
-	
-	.bgBox{
+
+	.bgBox {
 		color: #ffffff;
 		background-color: rgba(1, 107, 246, 1);
 		font-weight: bold;
 		border-radius: 50rpx;
 	}
-	.btn{
+
+	.btn {
 		width: 100%;
 		height: 88rpx;
 		margin: 30rpx 0rpx;
 		border-radius: 40rpx;
-		.btn-boxs{
+
+		.btn-boxs {
 			width: 49% !important;
-			
+
 		}
-		.btn-box{
+
+		.btn-box {
 			width: 686rpx;
 			height: 100%;
-			
+
 		}
 	}
-</style>
+</style>

+ 6 - 0
package/jobIntention/editJob.vue

@@ -58,6 +58,12 @@ export default {
       wordCount: 0 // 字数统计
     };
   },
+  onLoad(options) {
+  	// 接收上个页面传递的公司名称参数
+  	if(options.text){
+  		this.jobDesc=options.text
+  	}
+	},
   methods: {
     // 实时更新字数
     updateWordCount(e) {

+ 1 - 0
package/jobIntention/tagManage.vue

@@ -121,6 +121,7 @@ export default {
 	},
 	methods: {
 		goBack() {
+			uni.$emit('updatePosition')
 			uni.navigateBack()
 		},
 		getData(){

+ 1 - 1
package/jobIntention/underReview.vue

@@ -41,7 +41,7 @@ export default {
   
   methods: {
     goCompleteMsg() {
-		if(ompanyinfo.status==3){
+		if(this.companyinfo.status==3){
 			 uni.navigateTo({ url: "/my/jobPosting?companyName=" });
 		}else{
 			 uni.navigateTo({ url: "/package/jobIntention/completeMsg" });

+ 145 - 128
pages/index/game/gameList.vue

@@ -317,21 +317,34 @@ export default {
     let systemInfo = uni.getSystemInfoSync();
     this.statusBarHeight = systemInfo.statusBarHeight || 0;
 	let that = this;
-			uni.$on('city', data => {
-				that.city = data.city
-				uni.setStorageSync('city', that.city)
-			})
+	// 更换城市调用getJobSearchList
+	uni.$on('city', data => {
+		that.city = data.city
+		uni.setStorageSync('city', that.city);
+		this.searchPage = 1
+		this.getJobSearchList();
+	})
+	// 监听筛选条件触发getJobSearchList
+	uni.$on('updateRecord', () => {
+	    this.getFilterData();
+	})
+	// 监听工作性质变化
+	uni.$on('updatePosition', () => {
+		this.searchPage = 1;
+		this.page = 1;
+	    this.getTypeList();
+	})
 	if (uni.getStorageSync('city')) {
 		this.city = uni.getStorageSync('city')
 	} else {
 		this.city = ''
 	}
-    this.getTypeList();
     this.getLocation();
-    //this.getJobSearchList();
   },
   onUnload(){
-	uni.$off('city') 
+	uni.$off('city');
+	uni.$off('updateRecord');
+	uni.$off('updatePosition')
   },
   watch: {
   	current(newData, oldData) {
@@ -339,37 +352,37 @@ export default {
   		uni.showLoading({
   			title: '加载中'
   		})
-  		this.page = 1
+  		this.searchPage = 1
   		this.getJobSearchList();
   	},
   	currentSx(newData, oldData) {
   		uni.showLoading({
   			title: '加载中'
   		})
-  		this.page = 1
-  		this.getJobSearchList();
-  	},
-  	currentjob(newData, oldData) {
-  		uni.showLoading({
-  			title: '加载中'
-  		})
-  		this.page = 1
-  		this.getJobSearchList();
-  	},
-  	currentJobSx(newData, oldData) {
-  		uni.showLoading({
-  			title: '加载中'
-  		})
-  		this.page = 1
-  		this.getJobSearchList();
-  	},
-  	currentJobSxs(newData, oldData) {
-  		uni.showLoading({
-  			title: '加载中'
-  		})
-  		this.page = 1
+  		this.searchPage = 1
   		this.getJobSearchList();
   	},
+  	// currentjob(newData, oldData) {
+  	// 	uni.showLoading({
+  	// 		title: '加载中'
+  	// 	})
+  	// 	this.page = 1
+  	// 	this.getJobSearchList();
+  	// },
+  	// currentJobSx(newData, oldData) {
+  	// 	uni.showLoading({
+  	// 		title: '加载中'
+  	// 	})
+  	// 	this.page = 1
+  	// 	this.getJobSearchList();
+  	// },
+  	// currentJobSxs(newData, oldData) {
+  	// 	uni.showLoading({
+  	// 		title: '加载中'
+  	// 	})
+  	// 	this.page = 1
+  	// 	this.getJobSearchList();
+  	// },
   },
   onPageScroll(e) {
     // 监听页面滚动
@@ -380,105 +393,57 @@ export default {
       this.isFixed = false;
     }
   },
-  onShow(){
-	//获取选中的筛选条件
-	if (uni.getStorageSync('filter') && (uni.getStorageSync('filter')).length > 0) {
-		let filter = uni.getStorageSync('filter')
-		this.education = '' //学历
-		this.experience = '' //经验
-		this.industry = '' //行业
-		this.salaryRange = '' //薪资
-		this.companyPeople = '' //公司规模
-		filter.map(item => {
-			let arr = []
-			item.list.map(ite => {
-				if (ite.value != '不限') {
-					arr.push(ite.value)
-				}
-			})
-			switch (item.name) {
-				case '学历要求':
-					this.education = arr.join(',')
-					break;
-				case '薪资范围(单选)':
-					this.salaryRange = arr.join(',')
-					break;
-				case '经验要求':
-					this.experience = arr.join(',')
-					break;
-				case '公司规模':
-					this.companyPeople = arr.join(',')
-					break;
-				case '行业':
-					this.industry = arr.join(',')
-					break;
-			}
-	
-		})
-		// console.log(filter)
-	} else {
-		this.education = '' //学历
-		this.experience = '' //经验
-		this.industry = '' //行业
-		this.salaryRange = '' //薪资
-		this.companyPeople = '' //公司规模
-	} 
-	this.getJobSearchList();
-  },
   methods: {
     // 获取工作性质列表
     getTypeList() {
-	var that=this
-	//行业期望
-	this.$Request.get('/app/intention/getIntentionList', {
-		
-	}).then(res => {
-		if (res.code == 0) {
-			let arr = res.data
-		let classRule=[]
-		let industry=[{id:'不限',name:'不限'}]
-		var industryArr=this.industry==''?[]:this.industry.split(',')
-		industryArr.forEach(function(item){
-			if(that.$queue.array_column(that.directionList,'name').indexOf(item)<0)
-				industry.push({id:item,name:item})
-		})
-		
-		arr.forEach(function(item){
-			var tmp={}
-			tmp.id=item.ruleClassifyId
-			tmp.name=item.ruleClassifyName
-			tmp.label=item.ruleClassifyName
-			classRule.push(tmp)
-			var indus=item.industry.split('/')
-			indus.forEach(function(ind){
-				var tm={}
-				tm.name=ind
-				tm.id=ind
-				if(that.$queue.array_column(industry,'name').indexOf(tm.name)<0)
-					industry.push(tm)
+		var that=this
+		//行业期望
+		this.$Request.get('/app/intention/getIntentionList', {}).then(res => {
+			if (res.code == 0) {
+				let arr = res.data
+			let classRule=[]
+			let industry=[{id:'不限',name:'不限'}]
+			var industryArr=this.industry==''?[]:this.industry.split(',')
+			industryArr.forEach(function(item){
+				if(that.$queue.array_column(that.directionList,'name').indexOf(item)<0)
+					industry.push({id:item,name:item})
+			})
+			
+			arr.forEach(function(item){
+				var tmp={}
+				tmp.id=item.ruleClassifyId
+				tmp.name=item.ruleClassifyName
+				tmp.label=item.ruleClassifyName
+				classRule.push(tmp)
+				var indus=!item.industry?[]:item.industry.split('/')
+				indus.forEach(function(ind){
+					var tm={}
+					tm.name=ind
+					tm.id=ind
+					if(that.$queue.array_column(industry,'name').indexOf(tm.name)<0)
+						industry.push(tm)
+				})
 			})
+				this.typeList = classRule
+				this.directionList=industry
+				that.getJobSearchList();
+				that.getJobList();
+			}
 		})
-			this.typeList = classRule
-			this.directionList=industry
-			that.getJobList();
-			// console.log(this.typeList, '1111')
-		}
-	})
-	return;
-      this.$Request
-        .getT("/app/dict/list", {
-          type: "工作性质",
-        })
-        .then((res) => {
-          if (res.code == 0) {
-            this.typeList = res.data.map((item) => ({
-              label: item.value,
-              value: item.code,
-            }));
-            // 获取到tabs数据后调用职位列表
-            this.getJobList();
-          }
-        });
+		// this.$Request
+		// 	.getT("/app/dict/list", {
+		// 	  type: "工作性质",
+		// 	})
+		// 	.then((res) => {
+		// 	  if (res.code == 0) {
+		// 		this.typeList = res.data.map((item) => ({
+		// 		  label: item.value,
+		// 		  value: item.code,
+		// 		}));
+		// 		// 获取到tabs数据后调用职位列表
+		// 		this.getJobList();
+		// 	  }
+		// });
     },
     // 跳转到搜索页面
     goNavs(url) {
@@ -516,7 +481,7 @@ export default {
           that.getSelectCity(res.longitude,res.latitude)
         },
         fail: function () {
-          that.getJobList();
+			this.getTypeList();
         },
       });
     },
@@ -527,7 +492,7 @@ export default {
 				// console.log(res, '获取地址信息')
 				this.city = res.data.city ? res.data.city : '区域'
 				uni.setStorageSync('city', res.data.city)
-				that.getJobList();
+				that.getTypeList();
 			}
 		});
 	},
@@ -536,8 +501,8 @@ export default {
       let data = {
         page: this.page,
         limit: this.limit,
-        /* postType: this.typeList.length > 0 ? this.typeList[this.current].name : "", */
-		ruleClassifyName: this.typeList[this.current].name, //岗位名称
+        postType: this.typeList.length > 0 ? this.typeList[this.current].name : "",
+		ruleClassifyName: this.typeList.length > 0 ? this.typeList[this.current].name : "", //岗位名称
         screen: +this.currentSx + 1, //1推荐 2最新
         city: this.city == "全国" ? "" : this.city,
         lng: this.longitude,
@@ -591,6 +556,53 @@ export default {
       this.page = 1;
       this.getJobList();
     },
+	// 筛选求职列表
+	getFilterData(){
+		//获取选中的筛选条件
+		if (uni.getStorageSync('filter') && (uni.getStorageSync('filter')).length > 0) {
+			let filter = uni.getStorageSync('filter')
+			this.education = '' //学历
+			this.experience = '' //经验
+			this.industry = '' //行业
+			this.salaryRange = '' //薪资
+			this.companyPeople = '' //公司规模
+			filter.map(item => {
+				let arr = []
+				item.list.map(ite => {
+					if (ite.value != '不限') {
+						arr.push(ite.value)
+					}
+				})
+				switch (item.name) {
+					case '学历要求':
+						this.education = arr.join(',')
+						break;
+					case '薪资范围(单选)':
+						this.salaryRange = arr.join(',')
+						break;
+					case '经验要求':
+						this.experience = arr.join(',')
+						break;
+					case '公司规模':
+						this.companyPeople = arr.join(',')
+						break;
+					case '行业':
+						this.industry = arr.join(',')
+						break;
+				}
+		
+			})
+			// console.log(filter)
+		} else {
+			this.education = '' //学历
+			this.experience = '' //经验
+			this.industry = '' //行业
+			this.salaryRange = '' //薪资
+			this.companyPeople = '' //公司规模
+		}
+		this.searchPage = 1
+		this.getJobSearchList();
+	},
     // 获取求职列表
     getJobSearchList() {
       let data = {
@@ -603,6 +615,11 @@ export default {
         lat: this.latitude,
 		isDue:1,
         userId: uni.getStorageSync("userId") ? uni.getStorageSync("userId") : "",
+		education:this.education || '',//学历
+		experience:this.experience || '',//经验
+		industry:this.industry || '',//行业
+		salaryRange:this.salaryRange || '',//薪资
+		companyPeople:this.companyPeople || ''//公司规模
       };
       this.$Request.get("/app/postPush/userGetPostPushList", data).then((res) => {
 		  uni.hideLoading()

+ 2 - 1
pages/jobManagement/jobManagement.vue

@@ -187,7 +187,8 @@ export default {
 		
 	 },
     goNav(url) { uni.navigateTo({ url }); },
-    publishNewJob() { uni.navigateTo({ url: '/package/addJob/addJob' }); },
+   // publishNewJob() { uni.navigateTo({ url: '/package/addJob/addJob' }); },
+	 publishNewJob() { uni.navigateTo({ url: '/pages/my/jobPosting' }); },
     getJobStatusClass(job) { /* 原有逻辑不变 */ },
     setBodyHeight() { /* 原有逻辑不变 */ },
   }

+ 12 - 12
pages/msg/im.vue

@@ -569,11 +569,11 @@
 			<view class="more-layer" :class="{hidden:hideMore}">
 				<view class="list" style="color: #000000;">
 					<!-- 上传图片 -->
-					<view style="margin-bottom: 20rpx;">
+					<view style="margin-bottom: 30rpx;">
 						<view class="box" @click="chooseImage(['album'])">
 							<image src="../../static/im/tupian.svg" style="width: 48rpx;height: 48rpx;" mode=""></image>
 						</view>
-						<view style="width: 100%;text-align: center;">上传图片</view>
+						<view style="width: 100%;text-align: center;color: #999;font-size: 20rpx;">上传图片</view>
 					</view>
 					<!-- #ifdef H5 || APP -->
 					<!-- 语音 -->
@@ -583,7 +583,7 @@
 								style="width: 48rpx;height: 48rpx;">
 							</image>
 						</view>
-						<view style="width: 100%;text-align: center;">语音</view>
+						<view style="width: 100%;text-align: center;color: #999;font-size: 20rpx;">语音</view>
 					</view>
 					<!-- 视频 -->
 					<view style="margin-bottom: 20rpx;">
@@ -592,36 +592,36 @@
 								style="width: 48rpx;height: 48rpx;">
 							</image>
 						</view>
-						<view style="width: 100%;text-align: center;">视频</view>
+						<view style="width: 100%;text-align: center;color: #999;font-size: 20rpx;">语音通话</view>
 					</view>
 					<!-- #endif -->
 					<!-- 常用语 -->
 					<view style="margin-bottom: 20rpx;">
 						<view class="box" @tap="showChangYongSelect">
-							<view class="icon jianpan"></view>
+							<view class="icon jianpan" style="font-size: 44rpx;"></view>
 						</view>
-						<view style="width: 100%;text-align: center;">常用语句</view>
+						<view style="width: 100%;text-align: center;color: #999;font-size: 20rpx;">常用语句</view>
 					</view>
 					<!-- 添加常用语或自动回复内容 -->
 					<view style="margin-bottom: 20rpx;">
 						<view class="box" @tap="goAdd">
-							<view class="icon add"></view>
+							<view class="icon add" style="font-size: 44rpx;"></view>
 						</view>
-						<view style="width: 100%;text-align: center;">添加语句</view>
+						<view style="width: 100%;text-align: center;color: #999;font-size: 20rpx;">添加语句</view>
 					</view>
 					<view style="margin-bottom: 20rpx;">
 						<view class="box" @tap="goMapss">
-							<image src="../../static/images/weizhi.png" mode="" style="width: 76rpx;height: 76rpx;">
+							<image src="../../static/images/weizhi.png" mode="" style="width: 48rpx;height: 48rpx;">
 							</image>
 						</view>
-						<view style="width: 100%;text-align: center;">发送位置</view>
+						<view style="width: 100%;text-align: center;color: #999;font-size: 20rpx;">发送位置</view>
 					</view>
-					<view>
+					<!-- <view>
 						<view class="box" @tap="goHistory">
 							<view class="icon chehui"></view>
 						</view>
 						<view style="width: 100%;text-align: center;">聊天记录</view>
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>

+ 9 - 4
pages/msg/index.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="msg-box">
+	<view class="msg-box" :style="{ paddingTop: BarHeight + 'px' }">
 		<!-- 顶部导航栏 -->
 		<view class="nav-header">
 			<view class="nav-left" @click="goSearch">
@@ -37,7 +37,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="margin-topW">
+		<!-- <view class="margin-topW">
 			<view class="flex padding-tb radius padding-lr-sm bg" @click="goChat">
 				<view>
 					<image style="width: 80rpx;height: 80rpx;border-radius: 80rpx;"
@@ -56,7 +56,7 @@
 					</view>
 				</view>
 			</view>
-		</view>
+		</view> -->
 
 		<view v-if="chatList.length" class="margin-top-sm  content ">
 			<view class="radius padding-lr-sm bg" style="margin-top: 4rpx;" @click="goIM(item)"
@@ -183,6 +183,7 @@
 		},
 		data() {
 			return {
+				BarHeight:'',
 				page: 1,
 				limit: 100,
 				chatList: [],
@@ -217,6 +218,10 @@
 			}
 		},
 		onShow() {
+			// #ifdef APP-PLUS
+			let systemInfo = uni.getSystemInfoSync();
+			this.BarHeight = systemInfo.statusBarHeight;
+			// #endif
 			let that = this
 			that.userId = uni.getStorageSync('userId')
 			if (that.userId) {
@@ -521,7 +526,7 @@
 
 <style lang="scss">
 	.msg-box {
-		padding-top: 80rpx;
+		// padding-top: 80rpx;
 
 		.chat-title {
 			background: linear-gradient(180deg, rgba(13, 39, 247, 1) 0%, rgb(191, 194, 201) 100%);

+ 1 - 1
pages/my/educationExperience.vue

@@ -20,7 +20,7 @@
 					<view class="form-label">学校名称</view>
 					<input 
 						v-model="formData.companyName" 
-						placeholder="请填写公司名称" 
+						placeholder="请填写学校名称" 
 						class="form-input"
 					/>
 				</view>

+ 3 - 1
pages/my/jobApplicant/guidePage.vue

@@ -82,6 +82,7 @@
 						url: '/pages/my/businessLicense'
 					})
 				} else if (status == 2) { //审核通过,如果有职位,跳首页、如果没职位跳职位发布页。
+					 uni.setStorageSync("firstLogin",true)
 					if (status == 2) {
 						uni.preloadPage({
 							url: "/pages/index/index"
@@ -96,6 +97,7 @@
 						})
 					}
 				} else if (status == 1) { //审核未通过,跳审核信息页。
+				 uni.setStorageSync("firstLogin",true)
 					uni.navigateTo({
 						url: '/package/jobIntention/underReview'
 					})
@@ -115,7 +117,7 @@
 				uni.showLoading({
 					title: "提交中..."
 				});
-				this.$Request.postJson("/app/user/updateUserEntity", {
+				this.$Request.postT("/app/user/updateUserEntity", {
 						userType: userType
 					})
 					.then((res) => {

+ 6 - 2
pages/my/jobApplicant/workRecord.vue

@@ -171,6 +171,7 @@
             <view class="job-title">
               <view class="job-title-txt">教育经历</view>
               <image
+			   @click="goEducationalBackground"
                 class="job-image"
                 src="@/static/images/jobApplicant/edit.svg"
                 mode="scaleToFill"
@@ -215,11 +216,11 @@
           <view class="form-item required">
             <view class="job-title">
               <view class="job-title-txt">个人优势</view>
-              <image
+              <!-- <image
                 class="job-image"
                 src="@/static/images/jobApplicant/edit.svg"
                 mode="scaleToFill"
-              />
+              /> -->
             </view>
           </view>
         </view>
@@ -398,6 +399,9 @@ export default {
     goWorkProgress(){
       uni.navigateTo({ url: '/pages/my/workExperience' })
     },
+	goEducationalBackground(){
+		uni.navigateTo({ url: '/pages/my/educationExperience' })
+	},
     // 选择头像
     chooseAvatar() {
 		var that=this

+ 76 - 8
pages/my/jobPosting.vue

@@ -3,7 +3,7 @@
 		<nav-bar title="选择公司规模" color="#000"></nav-bar>
 		<view class="roles-content">
 			<view class="content">
-				<view class="title">发布社招</view>
+				<view class="title">{{isDisabled?'编辑【'+jobInfo.ruleClassifyName+'】':'发布社招'}}岗位</view>
 				<view class="desc">{{companyName}}</view>
 				<view class="step">
 					<u-steps :list="numList" mode="number" :current="0"></u-steps>
@@ -14,10 +14,10 @@
 					<radio-group @change="onRadioChange">
 						<view class="select-txt radioseletview">
 							<label class="radio radioselet">
-								<radio value="0" :checked="true" class="radio-size" />普通岗位招聘
+								<radio value="0" :checked="true" class="radio-size" :disabled="isDisabled" />普通岗位招聘
 							</label>
 							<label class="radio radioselet">
-								<radio value="1" class="radio-size" />急聘
+								<radio value="1" class="radio-size" :disabled="isDisabled"/>急聘
 							</label>
 							<text
 								style="position: absolute;right: 0;bottom: 18px;font-size: 12px;color: rgba(120, 130, 138, 1);">急聘职位剩余{{vipDueTimes}}个</text>
@@ -28,12 +28,12 @@
 
 
 				<view class="check-title">招聘类型</view>
-				<view class="check-box">
+				<view class="check-box" :class="{ disabled: isDisabled }">
 					<view class="check-item" :class="{ 'is-check': check == index }" v-for="(item, index) in peopleList"
-						:key="index" @click="checkPeople(index)">{{ item }}</view>
+						:key="index" @click="!isDisabled && checkPeople(index)">{{ item }}</view>
 				</view>
 				<view class="check-title-big">招聘职位</view>
-				<view class="check-select" @click="goJob">
+				<view class="check-select" @click="!isDisabledid && goJob()" :class="{ disabled: isDisabledid }">
 					<view class="select-txt">{{jobInfo.ruleClassifyName}}</view>
 					<u-icon name="arrow-down" color="#D3D3D6" size="22"></u-icon>
 				</view>
@@ -56,8 +56,12 @@
 				selectedValue: 0, // 默认选中值
 				peopleList: ["社招全职", "应届生校园招聘", "实习生招聘", "兼职招聘"],
 				check: 0,
+				isDisabled: false,
+				isDisabledid:false,
 				isCompanyVip: 0,
 				vipDueTimes: 0,
+				postPushId:"",
+				update:"",
 				vipPostTimes: 0,
 				text: "",
 				status: "",
@@ -83,6 +87,14 @@
 
 		onLoad(options) {
 			// 接收上个页面传递的公司名称参数
+			if(options.postPushId){
+				this.postPushId=options.postPushId
+				this.getInfo()
+			}
+			if(options.type){
+				this.update=decodeURIComponent(options.type);
+				 this.isDisabled = true;
+			}
 			if (options.companyName) {
 				this.companyName = decodeURIComponent(options.companyName);
 			}else{
@@ -115,6 +127,8 @@
 			console.log("收到岗位描述数据:", this.text);
 			console.log('接收的公司ID:', this.companyId);
 			console.log('接收的公司状态:', this.status);
+		
+			
 
 		},
 		onUnload() {
@@ -137,9 +151,31 @@
 			},
 			goJobContent() {
 				uni.navigateTo({
-					url: `/package/jobIntention/editJob`,
+					url: `/package/jobIntention/editJob?text=${this.text}`,
 				});
 			},
+			
+			/**
+			 * 获取岗位详情
+			 */
+			getInfo(){
+				this.$Request.getT("/app/postPush/selectPostPushDetails",{
+					// userId:uni.getStorageSync('userId'),
+					postPushId:this.postPushId
+				}).then(res => {
+					if(res.code==0){
+						this.jobInfo = res.data
+						this.text=res.data.positionDetails
+						if(!this.jobInfo?.ruleClassifyId){
+							this.isDisabledid=false
+						}else{
+							this.isDisabledid=true
+						}
+					}
+				})
+			},
+			
+			
 			//radio 选中变化时触发
 			onRadioChange(e) {
 				// 获取选中的值
@@ -281,6 +317,7 @@
 
 
 				const data = {
+					postPushId:this.postPushId,
 					type: this.check,
 					isDue: this.selectedValue,
 					positionDetails: this.text,
@@ -313,7 +350,7 @@
 								uni.navigateTo({
 									url: "/pages/my/jobPostingSecond?pid=" + pid + "&status=" + this
 										.status + "&companyName=" + this.companyName + '&companyId=' +
-										this.companyId
+										this.companyId+'&type='+this.update
 								});
 							}, 1500);
 						} else {
@@ -419,6 +456,37 @@
 					.select-txt {}
 				}
 
+/* 禁用状态样式 */
+.check-select.disabled {
+    background-color: #f5f5f5;
+    opacity: 0.6;
+    pointer-events: none; /* 防止点击穿透 */
+}
+
+.check-select.disabled .select-txt {
+    color: #999; /* 文字变灰 */
+}
+
+.check-select.disabled u-icon {
+    color: #ccc; /* 图标变灰 */
+}
+
+/* 禁用状态样式 */
+.check-box.disabled {
+    opacity: 0.6;
+}
+
+.check-box.disabled .check-item {
+    pointer-events: none;
+    background-color: #e9e9e9;
+    color: #999;
+}
+
+.check-box.disabled .check-item.is-check {
+    background-color: #b3d1ff;
+    color: #666;
+}
+
 				.radioseletvi {
 					position: relative;
 				}

+ 47 - 4
pages/my/jobPostingSecond.vue

@@ -47,7 +47,7 @@
 				<!-- 工作地址 -->
 				<view class="check-title-big">工作地址</view>
 				<view class="check-select" @click="goAddAddress">
-					<view class="select-txt">{{ stationName.fullText || "请填写精确的工作地点" }}</view>
+					<view class="select-txt">{{ address || stationName.fullText || "请填写精确的工作地点" }}</view>
 					<u-icon name="arrow-down" color="#D3D3D6" size="22"></u-icon>
 				</view>
 
@@ -85,11 +85,12 @@
 				selectedSalary: "", // 薪资范围
 				welfareTag: "", // 福利待遇
 				positionTag: "", // 职位关键词
-				stationName: "",
+				stationName: [],
 				companyName: "",
 				companyId: "",
 				status: 1,
 				pid: "",
+				address:"",
 				salaryTimes:"",
 
 				// 选择器显示控制
@@ -348,6 +349,10 @@
 
 			if (options.pid) {
 				this.pid = options.pid;
+				if(options.type && options.type=='updata'){
+					this.getInfo()
+				}
+				
 				console.log('接收PID:', this.pid);
 			} else {
 				uni.navigateTo({
@@ -385,6 +390,44 @@
 				this.showLevel = false;
 			},
 
+
+	/**
+			 * 获取岗位详情
+			 */
+			getInfo(){
+				this.$Request.getT("/app/postPush/selectPostPushDetails",{
+					// userId:uni.getStorageSync('userId'),
+					postPushId:this.pid
+				}).then(res => {
+					if(res.code==0){
+						this.selectedExper=res.data.experience
+						this.selectedLevel=res.data.education
+						this.selectedSalary=res.data.salaryRange
+						this.welfareTag=res.data.welfareTag
+						this.positionTag=res.data.positionTag
+						this.address=res.data.address
+						this.stationName.fullText=res.data.address
+						this.stationName.latitude=res.data.lat
+						this.stationName.longitude=res.data.lng
+						this.stationName.province=res.data.province
+						this.stationName.city=res.data.city
+						this.stationName.district=res.data.county
+						this.salaryTimes=res.data.salaryTimes
+						console.log(this.stationName)
+					}else{
+					uni.showToast({
+					    title: '数据有误',
+					    icon: 'none',  // 注意这里需要加引号
+					    duration: 2000, // 可选:设置提示框显示时长
+					    complete() {    // 正确的回调函数写法
+					        uni.navigateBack();
+					    }
+					});
+						
+					}
+				})
+			},
+
 			// 处理薪资范围选择(核心修复)
 			onMoneyConfirm(selectedItems) {
 				// 多列选择器返回数组,取每列选中的label拼接
@@ -457,7 +500,7 @@
 						icon: "none"
 					});
 				}
-				if (!this.stationName.fullText) {
+				if (!this.stationName.fullText && !this.address) {
 					return uni.showToast({
 						title: "请填写工作地址",
 						icon: "none"
@@ -487,7 +530,7 @@
 					salaryRange: this.selectedSalary, //薪资范围
 					welfareTag: this.welfareTag, //福利相关标签
 					positionTag: str, //职位技能
-					address: this.stationName.fullText, //地址
+					address: this.stationName.fullText|| this.address, //地址
 					lat: this.stationName.latitude,
 					lng: this.stationName.longitude,
 					province: this.stationName.province,

+ 62 - 29
pages/my/onlineResume.vue

@@ -115,7 +115,7 @@
 				</view>
 				
 				<view class="experience-list">
-					<view class="experience-item" @longpress="commonDelete(item.workExpId,'workExps')" @click.stop="goToWorkExperience(item.workExpId)" v-for="item in detail.workExps">
+					<view class="experience-item" @click.stop="goToWorkExperience(item.workExpId)" v-for="item in detail.workExps">
 						<view class="company-logo">
 							<image src="../../static/images/index/changsha.svg" class="logo-img" mode="aspectFit"></image>
 						</view>
@@ -137,6 +137,9 @@
 								</view>
 							</view>
 						</view>
+						<view @click.stop="commonDelete(item.workExpId,'workExps')">
+							<image src="../../static/images/index/delete.svg" class="delete-icon" />
+						</view>
 					</view>
 				</view>
 			</view>
@@ -153,7 +156,7 @@
 				</view>
 				
 				<view class="education-list">
-					<view  class="education-item" @longpress="commonDelete(item.eduId,'eduList')" @click.stop="goToEducationExperience(item.eduId)" v-for="(item,index) in detail.eduList">
+					<view  class="education-item" @click.stop="goToEducationExperience(item.eduId)" v-for="(item,index) in detail.eduList">
 						<view class="school-logo">
 							<image src="../../static/images/index/wuhan.svg" class="logo-img" mode="aspectFit"></image>
 						</view>
@@ -164,6 +167,9 @@
 								{{item.detail}}
 							</view>
 						</view>
+						<view @click.stop="commonDelete(item.eduId,'eduList')">
+							<image src="../../static/images/index/delete.svg" class="delete-icon" />
+						</view>
 					</view>
 				</view>
 			</view>
@@ -258,20 +264,39 @@
 					  that.hasEcommerceExperience=res.data.resumeList&&res.data.resumeList.ifExp?true:false
 					  that.detail.degree=that.$queue.getHighestEducation(res.data.eduList)
 					  
-					  res.data.workExps.forEach(function(item){
-					  	item.type=JSON.parse(item.type)
-						item.workExpDetails=[]
-						res.data.workExpList.forEach(function(it){
-							it.skills=JSON.parse(it.skills)
-							it.startTime=it.startTime.slice(0, 7);
-							if(that.$queue.isCurrentMonth(new Date(it.endTime)))
-								it.endTime='至今'
-							else
-								it.endTime=	it.endTime.slice(0, 7);
-							if(it.workExpId==item.workExpId)
-								item.workExpDetails.push(it)
-						})
-					  })
+					  res.data.workExps.forEach(function(item) {
+					    console.log(item.type);
+					    try {
+					      if (typeof item.type === 'string' && (item.type.startsWith('[') || item.type.startsWith('{'))) {
+					        item.type = JSON.parse(item.type);
+					      }
+					    } catch (e) {
+					      console.warn('item.type JSON解析失败:', item.type);
+					    }
+					    item.workExpDetails = [];
+					    res.data.workExpList.forEach(function(it) {
+					      console.log(it.skills);
+					      try {
+					        if (typeof it.skills === 'string' && (it.skills.startsWith('[') || it.skills.startsWith('{'))) {
+					          it.skills = JSON.parse(it.skills);
+					        }
+					      } catch (e) {
+					        console.warn('it.skills JSON解析失败:', it.skills);
+					      }
+					  
+					      it.startTime = it.startTime.slice(0, 7);
+					      if (that.$queue.isCurrentMonth(new Date(it.endTime)))
+					        it.endTime = '至今';
+					      else
+					        it.endTime = it.endTime.slice(0, 7);
+					  
+					      if (it.workExpId == item.workExpId)
+					        item.workExpDetails.push(it);
+					    });
+					  });
+
+					  console.log('最终数据')
+					  console.log(res.data.workExps);
 					  that.detail.workExps=res.data.workExps
 				  } else {
 				    uni.showToast({
@@ -314,8 +339,6 @@
 				})
 			},
 			goToBasicInfo() {
-				console.log('1111111');
-				
 				uni.navigateTo({
 					url: '/package/jobIntention/basicInfo?resumesStatus='+this.detail.resumeList.resumesStatus+'&birthday='+this.detail.resumeList.birthday+'&ifExp='+this.detail.resumeList.ifExp+'&resumesPhone='+this.detail.resumeList.resumesPhone
 				})
@@ -411,11 +434,11 @@
 						return;
 					that.$Request.postJson("/app/"+action, params).then((res) => {
 					  if (res.code == 0) {
-					      // 实际开发中可以在这里添加跳转逻辑
-											var info = that.detail[modules].filter(function (item) {
-											  return item[modules=='workExps'?'workExpId':(modules=='intentions'?'intentionId':'eduId')] != id;
-											});
-											that.detail[modules]=info
+					    // 实际开发中可以在这里添加跳转逻辑
+						var info = that.detail[modules].filter(function (item) {
+						  return item[modules=='workExps'?'workExpId':(modules=='intentions'?'intentionId':'eduId')] != id;
+						});
+						that.detail[modules]=info
 					  } else {
 					    uni.showToast({
 					      title: res.msg,
@@ -437,6 +460,10 @@
 </script>
 
 <style lang="scss" scoped>
+	.delete-icon{
+		width: 40rpx;
+		height: 40rpx;
+	}
 	.online-resume {
 		// background-color: #F2F6FC;
 		min-height: 100vh;
@@ -912,10 +939,13 @@
 						flex-shrink: 0;
                         border-radius: 8px;
                         background: rgba(246, 246, 246, 1);
-						
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						justify-content: center;
 						.logo-img {
-							width: 100%;
-							height: 100%;
+							width: 50rpx;
+							height: 50rpx;
 							border-radius: 8rpx;
 							
 						}
@@ -1058,10 +1088,13 @@
 						flex-shrink: 0;
 						border-radius: 8px;
 						background: rgba(246, 246, 246, 1);
-						
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						justify-content: center;
 						.logo-img {
-							width: 100%;
-							height: 100%;
+							width: 54rpx;
+							height: 50rpx;
 							border-radius: 8rpx;
 						}
 					}

+ 17 - 7
pages/my/workExperience.vue

@@ -430,20 +430,30 @@ export default {
 		    uni.showToast({ title: "请至少填写一份履历", icon: "none" });
 		    return;
 		  }
-		  this.formData.resumes.forEach(function(item){
-		  	item.skills=JSON.stringify(item.skills)
-			item.startTime=item.employmentTime[0]?item.employmentTime[0]:'';
-			item.endTime=item.employmentTime[1]?item.employmentTime[1]:'';
-			delete item.employmentTime; 
-			delete item.departmentIndex; 
+		  let postData = this.formData.resumes.map(({ employmentTime, departmentIndex, ...rest }) => {
+		    return {
+		      ...rest,
+		      skills: JSON.stringify(rest.skills),
+		      startTime: employmentTime?.[0] || '',
+		      endTime: employmentTime?.[1] || ''
+		    }
 		  })
+		 //  this.formData.resumes.forEach(function(item){
+			//   console.log(item.skills)
+		 //  	item.skills=JSON.stringify(item.skills);
+			// console.log(item.skills)
+			// item.startTime=item.employmentTime[0]?item.employmentTime[0]:'';
+			// item.endTime=item.employmentTime[1]?item.employmentTime[1]:'';
+			// delete item.employmentTime; 
+			// delete item.departmentIndex; 
+		 //  })
 			let data={
 				workExp:{
 					workExpId:id,
 					companyName:this.formData.companyName,
 					type:JSON.stringify(this.formData.businessTypes),
 				},
-				workExpDetails:this.formData.resumes
+				workExpDetails:postData
 			}
 			if(this.isWork)
 				return

+ 295 - 207
pages/public/forgetPwd.vue

@@ -1,215 +1,303 @@
 <template>
-  <view class="container">
-    <navBar title="忘记密码" color="#000" />
-    <view class="wrapper">
-      <view class="input-content">
-        <view
-          class="cu-form-group"
-          style="border: 2rpx solid whitesmoke; margin-bottom: 20px; border-radius: 30px"
-        >
-          <view class="title text-black">手机号</view>
-          <input
-            type="number"
-            :value="phone"
-            placeholder="请输入手机号"
-            maxlength="11"
-            data-key="phone"
-            @input="inputChange"
-          />
-        </view>
-        <view
-          class="cu-form-group"
-          style="border: 2rpx solid whitesmoke; margin-bottom: 20px; border-radius: 30px"
-        >
-          <text class="title text-black">验证码</text>
-          <input
-            type="number"
-            :value="code"
-            placeholder="请输入验证码"
-            maxlength="6"
-            data-key="code"
-            @input="inputChange"
-            @confirm="toLogin"
-          />
-          <button class="send-msg" @click="sendMsg" :disabled="sending">
-            {{ sendTime }}
-          </button>
-        </view>
-        <view
-          class="cu-form-group"
-          style="border: 2rpx solid whitesmoke; margin-bottom: 20px; border-radius: 30px"
-        >
-          <text class="title text-black">设置密码</text>
-          <input
-            type="password"
-            :value="password"
-            placeholder="请设置新密码"
-            placeholder-class="input-empty"
-            maxlength="20"
-            minlength="6"
-            data-key="password"
-            @input="inputChange"
-            @confirm="toLogin"
-          />
-        </view>
-      </view>
-      <button class="confirm-btn" @click="toLogin">立即找回</button>
-    </view>
-  </view>
+	<view class="container">
+		<navBar title="忘记密码" color="#000" />
+		<view class="wrapper">
+			<view class="input-content">
+				<view class="item-label" v-show="steps == 0">手机号码</view>
+				<view class="cu-form-group" v-show="steps == 0">
+					<input type="number" :value="phone" placeholder="请输入手机号" maxlength="11" data-key="phone"
+						@input="inputChange" />
+				</view>
+
+				<view class="item-label" v-show="steps == 0">验证码</view>
+				<view class="cu-form-group" v-show="steps == 0">
+					<input type="number" :value="code" placeholder="请输入验证码" maxlength="6" data-key="code"
+						@input="inputChange" @confirm="toLogin" />
+					<text class="send-msg" @click="sendMsg" :disabled="sending">
+						{{ sendTime }}
+					</text>
+				</view>
+
+				<view class="item-label">密码</view>
+				<view class="cu-form-group">
+					<input :value="password" :password="showPassword" placeholder="请输入新密码" placeholder-class="input-empty"
+						maxlength="20" minlength="8" data-key="password" @input="inputChange" @confirm="toLogin" />
+					<u-icon @click="changePassword" class="eye" :class="{ 'eye-active': !showPassword }"
+						name="eye-fill"></u-icon>
+				</view>
+				<view>
+					<u-line-progress class="line-progress" :show-percent="false" :active-color="progressColor"
+						:percent="passwordStrength * 33.3"></u-line-progress>
+					<u-checkbox-group :wrap="true" @change="preventChange">
+						<u-checkbox shape="circle" v-for="(item, index) in list" :key="index" :name="item.name"
+							v-model="item.checked" :readonly="true">
+							{{item.label}}
+						</u-checkbox>
+					</u-checkbox-group>
+				</view>
+			</view>
+			<button class="confirm-btn" @click="toLogin">立即找回</button>
+		</view>
+	</view>
 </template>
 
 <script>
-import navBar from "@/components/nav-bar/index.vue";
-export default {
-  data() {
-    return {
-      code: "",
-      phone: "",
-      password: "",
-      sending: false,
-      sendTime: "获取验证码",
-      count: 60,
-      logining: false,
-    };
-  },
-  components: {
-    navBar,
-  },
-  methods: {
-    sendMsg() {
-      const { phone } = this;
-      if (!phone) {
-        this.$queue.showToast("请输入手机号");
-      } else if (phone.length !== 11) {
-        this.$queue.showToast("请输入正确的手机号");
-      } else {
-        this.$queue.showLoading("正在发送验证码...");
-        this.$Request.getT("/app/Login/sendMsg/" + phone + "/forget").then((res) => {
-          if (res.code === 0) {
-            this.sending = true;
-            this.$queue.showToast("验证码发送成功请注意查收");
-            this.countDown();
-            uni.hideLoading();
-          } else {
-            uni.hideLoading();
-            uni.showModal({
-              showCancel: false,
-              title: "短信发送失败",
-              content: res.msg ? res.msg : "请一分钟后再获取验证码",
-            });
-          }
-        });
-      }
-    },
-    countDown() {
-      const { count } = this;
-      if (count === 1) {
-        this.count = 60;
-        this.sending = false;
-        this.sendTime = "获取验证码";
-      } else {
-        this.count = count - 1;
-        this.sending = true;
-        this.sendTime = count - 1 + "秒后重新获取";
-        setTimeout(this.countDown.bind(this), 1000);
-      }
-    },
-    inputChange(e) {
-      const key = e.currentTarget.dataset.key;
-      this[key] = e.detail.value;
-    },
-    navBack() {
-      uni.navigateBack();
-    },
+	import navBar from "@/components/nav-bar/index.vue";
+	export default {
+		data() {
+			return {
+				code: "",
+				phone: "",
+				password: "",
+				sending: false,
+				sendTime: "获取验证码",
+				count: 60,
+				logining: false,
+				showPassword:true,
+				steps: 0,
+				passwordStrength: 0, // 当前满足的条件数
+				list: [{
+						name: 'length',
+						label: '最少8位数',
+						checked: false,
+					},
+					{
+						name: 'number',
+						label: '至少包含1个数字',
+						checked: false,
+					},
+					{
+						name: 'upper',
+						label: '只要包含一个大写字母',
+						checked: false,
+					}
+				],
+				valueBackup: [],
+			};
+		},
+		components: {
+			navBar,
+		},
+		computed: {
+		    progressColor() {
+				switch (this.passwordStrength) {
+					case 1:
+						return 'rgba(214, 44, 1, 1)';
+					case 2:
+						return 'rgba(250, 174, 22, 1)';
+					case 3:
+						return 'rgba(1, 107, 246, 1)';
+					default:
+						return 'rgba(237, 236, 239, 1)';
+				}
+		    },
+		},
+		methods: {
+			changePassword(){
+				this.showPassword = !this.showPassword;
+			},
+			sendMsg() {
+				const {phone} = this;
+				if (!phone) {
+					this.$queue.showToast("请输入手机号");
+				} else if (phone.length !== 11) {
+					this.$queue.showToast("请输入正确的手机号");
+				} else {
+					this.$queue.showLoading("正在发送验证码...");
+					this.$Request.getT("/app/Login/sendMsg/" + phone + "/forget").then((res) => {
+						if (res.code === 0) {
+							this.sending = true;
+							this.$queue.showToast("验证码发送成功请注意查收");
+							this.countDown();
+							uni.hideLoading();
+						} else {
+							uni.hideLoading();
+							uni.showModal({
+								showCancel: false,
+								title: "短信发送失败",
+								content: res.msg ? res.msg : "请一分钟后再获取验证码",
+							});
+						}
+					});
+				}
+			},
+			countDown() {
+				const {count} = this;
+				if (count === 1) {
+					this.count = 60;
+					this.sending = false;
+					this.sendTime = "获取验证码";
+				} else {
+					this.count = count - 1;
+					this.sending = true;
+					this.sendTime = count - 1 + "秒后重新获取";
+					setTimeout(this.countDown.bind(this), 1000);
+				}
+			},
+			inputChange(e) {
+				const key = e.currentTarget.dataset.key;
+				this[key] = e.detail.value;
+				if(key == 'password'){
+					this.checkPasswordStrength(this.password);
+				}
+			},
+			checkPasswordStrength(pwd) {
+			  let strength = 0;
+			  this.list.forEach(item => {
+			    if (item.name === 'length') {
+			      item.checked = pwd.length >= 8;
+			      if (item.checked) strength++;
+			    } else if (item.name === 'number') {
+			      item.checked = /[0-9]/.test(pwd) && pwd.length >= 8;
+			      if (item.checked) strength++;
+			    } else if (item.name === 'upper') {
+			      item.checked = /[A-Z]/.test(pwd) && pwd.length >= 8;
+			      if (item.checked) strength++;
+			    }
+			  });
+			  this.passwordStrength = strength;
+			  this.valueBackup = this.list.map(i => i.checked);
+			},
+			preventChange() {
+				this.list.forEach((item, index) => {
+					item.checked = this.valueBackup[index];
+				});
+			},
+			navBack() {
+				uni.navigateBack();
+			},
 
-    navTo(url) {
-      uni.navigateTo({
-        url,
-      });
-    },
-    toLogin() {
-      const { phone, password, code } = this;
-      if (!phone) {
-        this.$queue.showToast("请输入手机号");
-      } else if (!password) {
-        this.$queue.showToast("请设置密码");
-      } else if (password.length < 6) {
-        this.$queue.showToast("密码位数必须大于六位");
-      } else {
-        this.logining = true;
-        this.$queue.showLoading("正在修改密码中...");
-        this.$Request
-          .post("/app/Login/forgetPwd", {
-            pwd: password,
-            phone: phone,
-            msg: code,
-          })
-          .then((res) => {
-            uni.hideLoading();
-            if (res.code === 0) {
-              uni.navigateTo({
-                url: "/pages/public/loginphone",
-              });
-            } else {
-              uni.showModal({
-                showCancel: false,
-                title: "密码找回失败",
-                content: res.msg,
-              });
-            }
-          });
-      }
-    },
-  },
-};
+			navTo(url) {
+				uni.navigateTo({
+					url,
+				});
+			},
+			toLogin() {
+				const {phone,password,code} = this;
+				if (!phone) {
+					this.$queue.showToast("请输入手机号");
+				} else if (!code) {
+					this.$queue.showToast("请输入验证码");
+				}else if (!password) {
+					this.$queue.showToast("请设置密码");
+				} else if (password.length < 8) {
+					this.$queue.showToast("密码位数必须大于八位");
+				} else if (!/(?=.*[A-Z])(?=.*\d)/.test(password)) {
+					this.$queue.showToast("密码必须包含至少一个大写字母和一个数字");
+				} else {
+					this.logining = true;
+					this.$queue.showLoading("正在修改密码中...");
+					this.$Request
+						.post("/app/Login/forgetPwd", {
+							pwd: password,
+							phone: phone,
+							msg: code,
+						})
+						.then((res) => {
+							uni.hideLoading();
+							if (res.code === 0) {
+								uni.navigateTo({
+									url: "/pages/public/loginphone?type=1",
+								});
+							} else {
+								uni.showModal({
+									showCancel: false,
+									title: "密码找回失败",
+									content: res.msg,
+								});
+							}
+						});
+				}
+			},
+		},
+	};
 </script>
 
 <style lang="scss">
-page {
-  background: #ffffff !important;
-}
-
-.send-msg {
-  border-radius: 30px;
-  color: white;
-  height: 30px;
-  font-size: 14px;
-  line-height: 30px;
-  background: #016bf6;
-}
-
-.container {
-  padding-top: 32rpx;
-  position: relative;
-  width: 100%;
-  height: 100%;
-  overflow: hidden;
-  background: #ffffff;
-}
-
-.wrapper {
-  position: relative;
-  z-index: 90;
-  background: #ffffff;
-  padding-bottom: 20px;
-}
-
-.input-content {
-  padding: 40rpx;
-}
-
-.confirm-btn {
-  width: 600rpx;
-  height: 80rpx;
-  line-height: 80rpx;
-  border-radius: 60rpx;
-  margin-top: 32rpx;
-  background: #016bf6;
-  color: #fff;
-  font-size: 32rpx;
-
-  &:after {
-    border-radius: 60px;
-  }
-}
-</style>
+	page {
+		background: #ffffff !important;
+	}
+	::v-deep .input-placeholder,.uni-input-placeholder {
+		color: #9ea1a8;
+		font-family: DM Sans;
+		font-size: 28rpx;
+		font-weight: 400;
+		text-align: left;
+	}
+	::v-deep .u-checkbox__label{
+		margin-left: 20rpx;
+		color: rgba(76, 74, 83, 1);
+		font-family: Roboto;
+		font-size: 32rpx;
+		font-weight: 400;
+	}
+	.container {
+		padding-top: 32rpx;
+		position: relative;
+		width: 100%;
+		height: 100%;
+		overflow: hidden;
+		background: #ffffff;
+	}
+	.wrapper {
+		position: relative;
+		z-index: 90;
+		background: #ffffff;
+		padding-bottom: 20px;
+	}
+	.input-content {
+		padding: 32rpx;
+		box-sizing: border-box;
+	}
+	.item-label {
+		color: rgba(18, 26, 44, 1);
+		font-family: Roboto;
+		font-size: 32rpx;
+		font-weight: 400;
+		line-height: 51.2rpx;
+		letter-spacing: 0px;
+		text-align: left;
+		padding-bottom: 8rpx;
+		margin-top: 32rpx;
+	}
+	.cu-form-group {
+		position: relative;
+		box-sizing: border-box;
+		border: 2rpx solid rgba(158, 161, 168, 1);
+		border-radius: 24rpx;
+		background: rgba(255, 255, 255, 1);
+		padding: 8rpx 24rpx !important;
+		height: 96rpx;
+	}
+	.send-msg {
+		color: rgba(1, 107, 246, 1);
+		font-size: 28rpx;
+		font-weight: 400;
+	}
+	.eye{
+		position: absolute;
+		top: 50%;
+		right: 24rpx;
+		font-size: 48rpx;
+		transform: translateY(-50%);
+	}
+	.eye-active{
+		color: #016bf6;
+	}
+	.line-progress{
+		margin: 32rpx 0;
+	}
+	.confirm-btn {
+		height: 80rpx;
+		line-height: 80rpx;
+		border-radius: 60rpx;
+		margin: 0 32rpx;
+		background: #016bf6;
+		color: #fff;
+		font-size: 32rpx;
+		font-weight: 400;
+		&:after {
+			border-radius: 60px;
+		}
+	}
+</style>

+ 87 - 18
pages/public/login.vue

@@ -59,14 +59,31 @@
       <view class="logo-box">
         <image src="@/static/images/jobApplicant/logo.svg" mode="scaleToFill" />
       </view>
-      <!-- <button class="confirm-btn" style="margin-top: 100rpx" @click="register">
+     <!-- <button class="confirm-btn" style="margin-top: 100rpx" @click="register">
         手机号登录
       </button> -->
-      <view class="login-btn wechat" @click="register"
+	   <!-- #ifdef APP -->
+	  <view class="login-btn wechat" :class="{ disabled: !checked }"
+		:disabled="checked" @click="login"
+	    ><image
+	      src="@/static/images/jobApplicant/wx.svg"
+	      mode="scaleToFill"
+	    />微信登录</view
+	  >
+	  <!-- #endif -->
+	  <view class="login-btn password" :class="{ disabled: !checked }"
+		:disabled="checked" @click="register(1)"
+	    ><image
+	      src="@/static/images/jobApplicant/account.svg"
+	      mode="scaleToFill"
+	    />账号密码登录</view
+	  >
+      <view class="login-btn wechat" :class="{ disabled: !checked }"
+		:disabled="checked" @click="register(2)"
         ><image
           src="@/static/images/jobApplicant/phone.svg"
           mode="scaleToFill"
-        />手机账号密码登录</view
+        />手机验证码登录</view
       >
       <view
         class=""
@@ -526,18 +543,63 @@ export default {
                   url: "/pages/public/selectIdentity/selectIdentity",
                 });
               } else {
-                uni.navigateBack();
+                if (res.user.userType == 2) {
+                  // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
+                  let firstLogin = uni.getStorageSync("firstLogin") || false;
+                  if (!firstLogin) {
+                    uni.navigateTo({
+                      url: "/pages/my/jobApplicant/guidePage",
+                    });
+                  } else {
+                    uni.reLaunch({
+                      url: "/pages/my/index",
+                    });
+                  }
+                } else {
+                  // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
+                  let firstLogin = uni.getStorageSync("firstLogin") || false;
+                  if (!firstLogin) {
+                    uni.navigateTo({
+                      url: "/pages/my/jobApplicant/guidePage",
+                    });
+                  } else {
+                    uni.reLaunch({
+                      url: "/pages/my/index",
+                    });
+                  }
+                }
               }
             } else {
-              uni.navigateBack();
+              if (res.user.userType == 2) {
+                // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
+                let firstLogin = uni.getStorageSync("firstLogin") || false;
+                if (!firstLogin) {
+                  uni.navigateTo({
+                    url: "/pages/my/jobApplicant/guidePage",
+                  });
+                } else {
+                  uni.reLaunch({
+                    url: "/pages/my/index",
+                  });
+                }
+              } else {
+                // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
+                let firstLogin = uni.getStorageSync("firstLogin") || false;
+                if (!firstLogin) {
+                  uni.navigateTo({
+                    url: "/pages/my/jobApplicant/guidePage",
+                  });
+                } else {
+                  uni.reLaunch({
+                    url: "/pages/my/index",
+                  });
+                }
+              }
             }
           });
         } else {
-          uni.showModal({
-            showCancel: false,
-            title: "登录失败",
-            content: res.msg,
-          });
+          uni.hideLoading();
+          this.$queue.showToast(res.msg);
         }
       });
     },
@@ -547,7 +609,7 @@ export default {
         url: "/pages/public/pwd",
       });
     },
-    register() {
+    register(type) {
       if (!this.checked) {
         uni.showToast({
           title: "请阅读并同意《隐私协议》和《用户服务协议》",
@@ -555,7 +617,7 @@ export default {
         });
       } else {
         uni.navigateTo({
-          url: "/pages/public/loginphone",
+          url: `/pages/public/loginphone?type=${type}`,
         });
       }
     },
@@ -711,18 +773,19 @@ page {
 // 	display: flex;
 // }
 .login-btn {
-  padding: 20rpx;
+  padding: 0 32rpx;
   box-sizing: border-box;
-  border-radius: 100rpx;
-  color: rgba(255, 255, 255, 1);
+  border-radius: 252rpx;
+  color: rgba(255, 255, 255, 1) !important;
   font-family: DM Sans;
   font-size: 32rpx;
   font-weight: 400;
-  line-height: 44rpx;
+  line-height: 90rpx;
   display: flex;
   justify-content: center;
   align-items: center;
   margin-bottom: 16rpx;
+  width: 100%;
   image {
     width: 28rpx;
     height: 28rpx;
@@ -730,14 +793,20 @@ page {
   }
 }
 .wechat {
-  background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+  background: linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1) 100%);
 }
 .password {
   background: rgba(1, 107, 246, 1);
 }
-.phone {
+.disabled{
   background: #99c4fa;
 }
+uni-button[disabled]:not([type]){
+	background-color: rgba(1, 107, 246, 1);
+}
+uni-button:after{
+	border:none;
+}
 page {
   background: #fff;
 }

+ 121 - 34
pages/public/loginphone.vue

@@ -14,29 +14,44 @@
             <input
               type="number"
               :value="phone"
-              placeholder="请输入手机号"
+              placeholder="请输入登录的手机号"
               maxlength="11"
               data-key="phone"
               @input="inputChange"
             />
           </view>
         </view>
-        <view class="item-label">登录密码</view>
-        <view class="cu-form-group">
+        <view class="item-label">{{type == 1?'登录密码':'验证码'}}</view>
+        <view class="cu-form-group" v-if="type == 1">
           <view class="input-box">
             <input
-              type="password"
               placeholder="请输入密码"
               maxlength="20"
-              :value="password"
+			  :value="password"
+              :password="showPassword"
               data-key="password"
               @input="inputChange"
               @confirm="toLogin"
             />
+			<u-icon @click="changePassword" class="eye" :class="{ 'eye-active': !showPassword }" name="eye-fill"></u-icon>
           </view>
         </view>
+		<view class="cu-form-group" v-if="type == 2">
+		  <input
+		    type="number"
+		    :value="code"
+		    placeholder="请输入验证码"
+		    maxlength="6"
+		    data-key="code"
+		    @input="inputChange"
+		    @confirm="toLogin"
+		  />
+		  <text class="send-msg" @click="sendMsg" :disabled="sending">
+		    {{ sendTime }}
+		  </text>
+		</view>
 
-        <view class="forgot-password">
+        <view class="forgot-password" v-if="type ==1">
           <view @click="forget">忘记密码</view>
         </view>
         <button class="confirm-btn" @click="toLogin">登录</button>
@@ -56,20 +71,26 @@ import navBar from "@/components/nav-bar/index.vue";
 export default {
   data() {
     return {
+		code: "",
       phone: "",
       password: "",
+	  showPassword:true,
       banners: [],
       invitation: "",
       loginName: "",
       sending: false,
       sendTime: "获取验证码",
       count: 60,
+	  type:0
     };
   },
   components: {
     navBar,
   },
-  onLoad() {},
+  onLoad(options) {
+	  console.log(options);
+	  this.type = options.type;
+  },
   methods: {
     forget() {
       uni.navigateTo({
@@ -88,25 +109,85 @@ export default {
     navBack() {
       uni.navigateBack();
     },
-
+	changePassword(){
+		this.showPassword = !this.showPassword;
+	},
+	sendMsg() {
+	  const { phone } = this;
+	  if (!phone) {
+	    this.$queue.showToast("请输入手机号");
+	  } else if (phone.length !== 11) {
+	    this.$queue.showToast("请输入正确的手机号");
+	  } else {
+	    this.$queue.showLoading("正在发送验证码...");
+	    this.$Request.getT("/app/Login/sendMsg/" + phone + "/forget").then((res) => {
+	      if (res.code === 0) {
+	        this.sending = true;
+	        this.$queue.showToast("验证码发送成功请注意查收");
+	        this.countDown();
+	        uni.hideLoading();
+	      } else {
+	        uni.hideLoading();
+	        uni.showModal({
+	          showCancel: false,
+	          title: "短信发送失败",
+	          content: res.msg ? res.msg : "请一分钟后再获取验证码",
+	        });
+	      }
+	    });
+	  }
+	},
+	countDown() {
+	  const { count } = this;
+	  if (count === 1) {
+	    this.count = 60;
+	    this.sending = false;
+	    this.sendTime = "获取验证码";
+	  } else {
+	    this.count = count - 1;
+	    this.sending = true;
+	    this.sendTime = count - 1 + "秒后重新获取";
+	    setTimeout(this.countDown.bind(this), 1000);
+	  }
+	},
     toLogin() {
       this.$queue.loginClear();
       let openid = this.$queue.getData("openid");
-      const { phone, password } = this;
-      if (!phone) {
-        this.$queue.showToast("请输入手机号");
-      } else if (phone.length != 11) {
-        this.$queue.showToast("请输入正确的手机号");
-      } else if (!password) {
-        this.$queue.showToast("请输入密码");
-      } else {
+      const { phone, password,code } = this;
+	  if(!phone && phone.length != 11){
+		  this.$queue.showToast("请输入正确的手机号");
+		  return;
+	  }
+	  if(!password && this.type == 1){
+		  this.$queue.showToast("请输入密码");
+		  return;
+	  }
+	  if(!code && this.type == 2){
+	  		this.$queue.showToast("请输入验证码");
+	  		return;
+	  }
         this.$queue.showLoading("正在登录中...");
+		let params = {
+			phone: phone,
+			openId: this.$queue.getData("openid"),
+		}
+		let url = ''
+		if(this.type == 1){
+			params = {
+				...params,
+				password: password,
+			}
+			url = '/app/Login/loginApp'
+		}
+		if(this.type == 2){
+			params = {
+				...params,
+				msg: code
+			}
+			url = '/app/Login/registerCode'
+		}
         this.$Request
-          .post("/app/Login/loginApp", {
-            password: password,
-            phone: phone,
-            openId: this.$queue.getData("openid"),
-          })
+          .post(url,params)
           .then((res) => {
             if (res.code == 0) {
               this.$queue.setData("userId", res.user.userId);
@@ -128,7 +209,7 @@ export default {
                       url: "/pages/public/selectIdentity/selectIdentity",
                     });
                   } else {
-                    if (res.user.userType == 2) {
+                    if (res.user.userType == 2) {//企业
                       // 原有的
                       // uni.reLaunch({
                       //   url: "/pages/my/index",
@@ -195,7 +276,6 @@ export default {
                   }
                 }
               });
-
               // uni.switchTab({
               // 	url: '/pages/my/index'
               // })
@@ -203,8 +283,7 @@ export default {
               uni.hideLoading();
               this.$queue.showToast(res.msg);
             }
-          });
-      }
+        });
     },
     getIsVip() {
       this.$Request.get("/app/UserVip/isUserVip").then((res) => {
@@ -248,27 +327,36 @@ page {
   line-height: 51.2rpx;
   letter-spacing: 0px;
   text-align: left;
-  padding-bottom: 6rpx;
+  padding-bottom: 8rpx;
   margin-top: 32rpx;
 }
 .cu-form-group {
+	position: relative;
   box-sizing: border-box;
   border: 2rpx solid rgba(158, 161, 168, 1);
   border-radius: 24rpx;
   background: rgba(255, 255, 255, 1);
   padding: 8rpx 24rpx !important;
+  height: 96rpx;
+}
+.eye{
+	position: absolute;
+	top: 50%;
+	right: 24rpx;
+	font-size: 48rpx;
+	transform: translateY(-50%);
+}
+.eye-active{
+	color: #016bf6;
 }
 .bg {
   background-color: #ffffff;
 }
 
 .send-msg {
-  border-radius: 30px;
-  color: black;
-  background: white;
-  height: 30px;
-  font-size: 14px;
-  line-height: 30px;
+  color: rgba(1, 107, 246, 1);
+  font-size: 28rpx;
+  font-weight: 400;
 }
 
 .container {
@@ -294,8 +382,7 @@ page {
 }
 
 .confirm-btn {
-  width: 100%;
-  border-radius: 100rpx;
+   border-radius: 60rpx;
   margin-top: 32rpx;
   background: #016bf6;
   color: rgba(255, 255, 255, 1);

+ 214 - 97
pages/public/register.vue

@@ -1,9 +1,13 @@
 <template>
   <view class="container">
-    <nav-bar title="注册" color="#000"></nav-bar>
+    <nav-bar :title="steps == 0?'注册1/2':'创建账号密码2/2'" color="#000"></nav-bar>
+	<view class="line-box">
+		<view class="line line-bg" @click="steps = 0"></view>
+		<view class="line" :class="[ steps == 1?'line-bg':'' ]" @click="steps = 1"></view>
+	</view>
     <view class="wrapper">
       <view class="input-content">
-        <view class="item-label">用户名</view>
+        <!-- <view class="item-label">用户名</view>
         <view class="cu-form-group">
           <input
             :value="userName"
@@ -11,20 +15,20 @@
             data-key="userName"
             @input="inputChange"
           />
-        </view>
-        <view class="item-label">手机号</view>
-        <view class="cu-form-group">
+        </view> -->
+        <view class="item-label" v-show="steps == 0">手机号</view>
+        <view class="cu-form-group" v-show="steps == 0">
           <input
             type="number"
             :value="phone"
-            placeholder="请输入手机号"
+            placeholder="请输入登录的手机号"
             maxlength="11"
             data-key="phone"
             @input="inputChange"
           />
         </view>
-        <view class="item-label">验证码</view>
-        <view class="cu-form-group padding-right-xs">
+        <view class="item-label" v-show="steps == 0">验证码</view>
+        <view class="cu-form-group padding-right-xs" v-show="steps == 0">
           <input
             type="number"
             :value="code"
@@ -34,26 +38,40 @@
             @input="inputChange"
             @confirm="toLogin"
           />
-          <button class="send-msg" @click="sendMsg" :disabled="sending">
+          <text class="send-msg" @click="sendMsg" :disabled="sending">
             {{ sendTime }}
-          </button>
+          </text>
         </view>
 
-        <view class="item-label">设置密码</view>
-        <view class="cu-form-group">
+        <view class="item-label" v-show="steps == 1">密码</view>
+        <view class="cu-form-group" v-show="steps == 1">
           <input
-            type="password"
             :value="password"
-            placeholder="请设置密码"
+            :password="showPassword"
+            placeholder="输入密码"
             placeholder-class="input-empty"
             maxlength="20"
-            minlength="6"
+            minlength="8"
             data-key="password"
             @input="inputChange"
             @confirm="toLogin"
           />
+		  <u-icon @click="changePassword" class="eye" :class="{ 'eye-active': !showPassword }" name="eye-fill"></u-icon>
         </view>
-        <view class="cu-form-group" style="margin-top: 32rpx" v-if="required == '是'">
+		<view v-show="steps == 1">
+			<u-line-progress class="line-progress" :show-percent="false" :active-color="progressColor" :percent="passwordStrength * 33.3"></u-line-progress>
+			<u-checkbox-group :wrap="true" @change="preventChange">
+				<u-checkbox shape="circle"
+					v-for="(item, index) in list" :key="index" 
+					:name="item.name"
+					v-model="item.checked"
+					:readonly="true"
+				>
+					{{item.label}}
+				</u-checkbox>
+			</u-checkbox-group>
+		</view>
+        <!-- <view class="cu-form-group" style="margin-top: 32rpx" v-if="required == '是'">
           <view class="item-label-code">邀请码</view>
           <input
             type=""
@@ -64,8 +82,8 @@
             @input="inputChange"
             @confirm="toLogin"
           />
-        </view>
-        <view class="cu-form-group" style="margin-top: 32rpx" v-if="required == '否'">
+        </view> -->
+        <!-- <view class="cu-form-group" style="margin-top: 32rpx" v-if="required == '否'">
           <view class="item-label-code">邀请码</view>
           <input
             type=""
@@ -76,23 +94,23 @@
             @input="inputChange"
             @confirm="toLogin"
           />
-        </view>
+        </view> -->
       </view>
-      <button class="confirm-btn" @click="toLogin">立即注册</button>
-      <view class="footer">
+      <button class="confirm-btn" @click="nextStep" v-if="steps == 0">下一步</button>
+	  <button class="confirm-btn" @click="toLogin" v-if="steps == 1">继续</button>
+      <!-- <view class="footer">
         <text
           @tap="isShowAgree"
           class="cuIcon"
           :class="showAgree ? 'cuIcon-radiobox' : 'cuIcon-round'"
           >同意</text
         >
-        <!-- 协议地址 -->
         <navigator url="/my/setting/mimi" open-type="navigate">《隐私政策》</navigator>
         <navigator url="/my/setting/xieyi" open-type="navigate"
           >《用户服务协议》</navigator
         >
-      </view>
+      </view> -->
     </view>
   </view>
 </template>
@@ -107,6 +125,7 @@ export default {
       code: "",
       phone: "",
       password: "",
+	  showPassword:true,
       required: "否",
       sending: false,
       sendTime: "获取验证码",
@@ -115,7 +134,15 @@ export default {
       state: "",
       invitation: "",
       platform: "",
-    };
+	  steps:0,
+	  passwordStrength: 0, // 当前满足的条件数
+	  list: [
+		{ name: 'length', label: '最少8位数',checked: false, },
+		{ name: 'number', label: '至少包含1个数字',checked: false, },
+		{ name: 'upper', label: '只要包含一个大写字母',checked: false, }
+	  ],
+	  valueBackup: [],
+	};
   },
   components: {
     navBar,
@@ -132,6 +159,20 @@ export default {
     this.platform = "H5";
     // #endif
   },
+  computed: {
+      progressColor() {
+        switch (this.passwordStrength) {
+          case 1:
+            return 'rgba(214, 44, 1, 1)';
+          case 2:
+            return 'rgba(250, 174, 22, 1)';
+          case 3:
+            return 'rgba(1, 107, 246, 1)';
+          default:
+            return 'rgba(237, 236, 239, 1)';
+        }
+      },
+    },
   methods: {
     showMa() {
       //查询官方邀请码
@@ -202,7 +243,32 @@ export default {
     inputChange(e) {
       const key = e.currentTarget.dataset.key;
       this[key] = e.detail.value;
+	  if(key == 'password'){
+		this.checkPasswordStrength(this.password);
+	  }
     },
+	checkPasswordStrength(pwd) {
+	  let strength = 0;
+	  this.list.forEach(item => {
+	    if (item.name === 'length') {
+	      item.checked = pwd.length >= 8;
+	      if (item.checked) strength++;
+	    } else if (item.name === 'number') {
+	      item.checked = /[0-9]/.test(pwd) && pwd.length >= 8;
+	      if (item.checked) strength++;
+	    } else if (item.name === 'upper') {
+	      item.checked = /[A-Z]/.test(pwd) && pwd.length >= 8;
+	      if (item.checked) strength++;
+	    }
+	  });
+	  this.passwordStrength = strength;
+	  this.valueBackup = this.list.map(i => i.checked);
+	},
+	preventChange() {
+		this.list.forEach((item, index) => {
+			item.checked = this.valueBackup[index];
+		});
+	},
     navBack() {
       uni.navigateBack();
     },
@@ -212,33 +278,44 @@ export default {
         url,
       });
     },
+	// 下一步
+	nextStep(){
+		const { phone,code } = this;
+		if (!phone) {
+		  this.$queue.showToast("请输入手机号");
+		} else if (!code) {
+		  this.$queue.showToast("请输入验证码");
+		}else{
+			this.steps = 1;
+		}
+	},
+	changePassword(){
+		this.showPassword = !this.showPassword;
+	},
+	// 注册
     toLogin() {
       const { userName, phone, password, code, showAgree, invitation } = this;
-      if (!userName) {
-        this.$queue.showToast("请输入用户名");
-      } else if (!phone) {
+      if (!phone) {
         this.$queue.showToast("请输入手机号");
       } else if (!code) {
         this.$queue.showToast("请输入验证码");
       } else if (!password) {
         this.$queue.showToast("请设置密码");
-      } else if (password.length < 6) {
-        this.$queue.showToast("密码位数必须大于六位");
-      } else if (!showAgree) {
-        this.$queue.showToast("请先同意《协议》");
-      } else if (!invitation && this.required == "是") {
-        this.$queue.showToast("请填写邀请码");
-      } else if (!invitation && this.required == "否") {
-        this.invitation = "";
+      } else if (password.length < 8) {
+        this.$queue.showToast("密码位数必须大于八位");
+      } else if (!/(?=.*[A-Z])(?=.*\d)/.test(password)) {
+		this.$queue.showToast("密码必须包含至少一个大写字母和一个数字");
+	  }else {
+        // this.invitation = "";
         this.logining = true;
         this.$queue.showLoading("注册中...");
         this.$Request
           .post(`/app/Login/registApp`, {
-            userName: userName,
+            userName: phone,
             password: password,
             phone: phone,
             openId: this.$queue.getData("openid") ? this.$queue.getData("openid") : "",
-            invitation: this.invitation,
+            // invitation: this.invitation,
             platform: this.platform,
             msg: code,
           })
@@ -277,46 +354,47 @@ export default {
               });
             }
           });
-      } else {
-        this.logining = true;
-        this.$queue.showLoading("注册中...");
-        this.$Request
-          .post(`/app/Login/registApp?msg=${code}`, {
-            userName: userName,
-            password: password,
-            phone: phone,
-            openId: this.$queue.getData("openid") ? this.$queue.getData("openid") : "",
-            invitation: this.invitation,
-            platform: this.platform,
-          })
-          .then((res) => {
-            if (res.code === 0) {
-              this.$queue.setData("token", res.token);
-              this.$queue.setData("userId", res.user.userId);
-              this.$queue.setData("userName", res.user.userName);
-              this.$queue.setData("phone", res.user.phone);
-              this.$queue.setData(
-                "avatar",
-                res.user.avatar ? res.user.avatar : "../../static/logo.png"
-              );
-              this.$queue.setData("invitationCode", res.user.invitationCode);
-              this.$queue.setData("inviterCode", res.user.inviterCode);
-              this.getUserInfo();
-              setTimeout(function () {
-                uni.switchTab({
-                  url: "/pages/index/index",
-                });
-              }, 1000);
-            } else {
-              uni.showModal({
-                showCancel: false,
-                title: "注册失败",
-                content: res.msg,
-              });
-            }
-            uni.hideLoading();
-          });
-      }
+      } 
+	  // else {
+   //      this.logining = true;
+   //      this.$queue.showLoading("注册中...");
+   //      this.$Request
+   //        .post(`/app/Login/registApp?msg=${code}`, {
+   //          userName: userName,
+   //          password: password,
+   //          phone: phone,
+   //          openId: this.$queue.getData("openid") ? this.$queue.getData("openid") : "",
+   //          invitation: this.invitation,
+   //          platform: this.platform,
+   //        })
+   //        .then((res) => {
+   //          if (res.code === 0) {
+   //            this.$queue.setData("token", res.token);
+   //            this.$queue.setData("userId", res.user.userId);
+   //            this.$queue.setData("userName", res.user.userName);
+   //            this.$queue.setData("phone", res.user.phone);
+   //            this.$queue.setData(
+   //              "avatar",
+   //              res.user.avatar ? res.user.avatar : "../../static/logo.png"
+   //            );
+   //            this.$queue.setData("invitationCode", res.user.invitationCode);
+   //            this.$queue.setData("inviterCode", res.user.inviterCode);
+   //            this.getUserInfo();
+   //            setTimeout(function () {
+   //              uni.switchTab({
+   //                url: "/pages/index/index",
+   //              });
+   //            }, 1000);
+   //          } else {
+   //            uni.showModal({
+   //              showCancel: false,
+   //              title: "注册失败",
+   //              content: res.msg,
+   //            });
+   //          }
+   //          uni.hideLoading();
+   //        });
+   //    }
     },
     //获取用户信息
     getUserInfo() {
@@ -330,8 +408,8 @@ export default {
           this.$queue.setData("userId", res.data.userId);
           this.$queue.setData("userName", res.data.userName);
           this.$queue.setData("phone", res.data.phone);
-          this.$queue.setData("invitationCode", res.user.invitationCode);
-          this.$queue.setData("inviterCode", res.user.inviterCode);
+          this.$queue.setData("invitationCode", res.data.invitationCode);
+          this.$queue.setData("inviterCode", res.data.inviterCode);
 
           this.userName = res.data.userName;
           this.invitationCode = res.data.invitationCode;
@@ -356,6 +434,13 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+::v-deep .input-placeholder,.uni-input-placeholder {
+  color: #9ea1a8;
+  font-family: DM Sans;
+  font-size: 28rpx;
+  font-weight: 400;
+  text-align: left;
+}
 page {
   height: 100%;
   background: #ffffff !important;
@@ -368,41 +453,75 @@ page {
   line-height: 51.2rpx;
   letter-spacing: 0px;
   text-align: left;
-  padding-bottom: 6rpx;
+  padding-bottom: 8rpx;
   margin-top: 32rpx;
 }
 .cu-form-group {
+	position: relative;
   box-sizing: border-box;
   border: 2rpx solid rgba(158, 161, 168, 1);
   border-radius: 24rpx;
   background: rgba(255, 255, 255, 1);
   padding: 8rpx 24rpx !important;
+  height: 96rpx;
+}
+.eye{
+	position: absolute;
+	top: 50%;
+	right: 24rpx;
+	font-size: 48rpx;
+	transform: translateY(-50%);
+}
+.eye-active{
+	color: #016bf6;
+}
+.line-progress{
+	margin: 32rpx 0;
 }
 .footer {
-  padding-left: 140upx;
-  margin-top: 32upx;
+  padding-left: 140rpx;
+  margin-top: 32rpx;
   text-align: center;
   display: flex;
   // color: #FFFFFF;
 }
 
 .send-msg {
-  border-radius: 30px;
-  color: white;
-  height: 30px;
-  font-size: 10px;
-  line-height: 30px;
-  background: #016bf6;
+  color: rgba(1, 107, 246, 1);
+  font-size: 28rpx;
+  font-weight: 400;
 }
 
 .container {
-  padding-top: 32upx;
+  padding-top: 32rpx;
   position: relative;
   width: 100%;
   height: 100%;
   overflow: hidden;
   background: #ffffff !important;
 }
+.line-box{
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	gap: 10rpx;
+}
+.line{
+	width: 20px;
+	height: 4px;
+	border-radius: 20px;
+	background-color: rgba(153, 196, 250, 1);
+}
+.line-bg{
+	background-color: #016BF6;
+}
+::v-deep .u-checkbox__label{
+	margin-left: 20rpx;
+	color: rgba(76, 74, 83, 1);
+	font-family: Roboto;
+	font-size: 32rpx;
+	font-weight: 400;
+}
 
 .wrapper {
   position: relative;
@@ -412,21 +531,19 @@ page {
 }
 
 .input-content {
-  //   padding: 32upx 80upx;
   padding: 32rpx;
   box-sizing: border-box;
 }
 
 .confirm-btn {
-  width: 600upx;
-  height: 80upx;
-  line-height: 80upx;
-  border-radius: 60upx;
-  margin-top: 32upx;
+	margin: 0 32rpx;
+  height: 80rpx;
+  line-height: 80rpx;
+  border-radius: 60rpx;
   background: #016bf6;
-
   color: #fff;
-  font-size: 32upx;
+  font-size: 32rpx;
+  font-weight: 400;
 
   &:after {
     border-radius: 60px;

+ 20 - 9
pages/talentSearch/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="talent-search-page">
+			<!-- <image class="top-bg" src="/static/images/index/index-bg1.png" mode="widthFix" /> -->
 		<view class="topbg-sticky">
-			<image class="top-bg" src="/static/images/index/index-bg1.png" mode="widthFix" />
 			<!-- <view class="top-bg"></view> -->
 			<!-- 搜索框 -->
 			<view class="search flex align-center justify-center"
@@ -52,7 +52,8 @@
 		</view>
 
 		<!-- 人才列表 -->
-		<view class="talent-list" :style="{ marginTop: talentListMarginTop }">
+		<!-- <view class="talent-list" :style="{ marginTop: talentListMarginTop }"> -->
+			<view class="talent-list">
 			<view class="talent-card" v-for="(talent, index) in talentList" :key="index"
 				@click="goToResumeDetail(talent)">
 				<view class="talent-content">
@@ -202,7 +203,7 @@
 			talentListMarginTop() {
 				// 搜索框高度 + 筛选栏高度(紧凑布局)
 				// 筛选栏实际高度约 46px(按钮18px + 内边距16px + 外边距12px)
-				return (4 + this.statusBarHeight) + 'px';
+				return (1+ this.statusBarHeight) + 'px';
 				//return '-69px';
 			}
 		},
@@ -593,7 +594,16 @@
 		background-color: #f5f5f5;
 	}
 
-	.topbg-sticky {}
+	.topbg-sticky {
+		display: flex;
+		    flex-direction: column;
+		    justify-content: space-around;
+			background-image: url('/static/images/index/index-bg1.png');
+			    background-repeat: no-repeat;
+			    background-size: cover;
+				    background-position-y: -38rpx;
+					// border: #007AFF 1px solid;
+	}
 
 	.top-bg {
 
@@ -650,9 +660,9 @@
 		//margin-top: -60rpx;
 		background-color: #fff;
 		height: 82rpx;
-		position: relative;
-		z-index: 22;
-		margin: -80rpx auto 0rpx auto;
+		margin: 2px auto;
+
+		
 		border-radius: 8px;
 		padding: 24rpx;
 
@@ -740,8 +750,8 @@
 
 	// 搜索框
 	.search {
-		position: fixed;
-		top: 0;
+		// position: fixed;
+		// top: 0;
 		width: 100%;
 		padding: 0rpx 20rpx 20rpx 20rpx;
 		// padding-top 已改为动态计算,在模板中通过 :style 设置
@@ -960,6 +970,7 @@
 		padding: 20rpx;
 		z-index: 100;
 		position: relative;
+		//border:1px solid red
 	}
 
 	.talent-card {

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 2
static/images/index/changsha.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
static/images/index/delete.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 31
static/images/index/wuhan.svg


+ 3 - 0
static/images/jobApplicant/account.svg

@@ -0,0 +1,3 @@
+<svg viewBox="0 0 13.1182 13.1179" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="13.118164" height="13.117920" fill="none" customFrame="#000000">
+	<path id="矢量 32" d="M6.559 0C2.933 0 0 2.94 0 6.559C0 10.178 2.933 13.118 6.559 13.118C10.178 13.118 13.118 10.185 13.118 6.559C13.111 2.94 10.178 1.56462e-07 6.559 1.56462e-07L6.559 0ZM9.1 8.89C9.1 9.114 8.911 9.303 8.673 9.303L4.438 9.303C4.207 9.303 4.018 9.121 4.018 8.89L4.018 6.153C4.018 5.929 4.207 5.74 4.438 5.74L4.529 5.74C4.522 5.719 4.522 5.705 4.522 5.684L4.522 5.32C4.522 4.424 5.488 3.57 6.461 3.535C7.434 3.5 8.281 4.039 8.414 4.872C8.435 5.012 8.337 5.138 8.197 5.159C8.064 5.18 7.931 5.089 7.91 4.949C7.826 4.403 7.217 4.018 6.475 4.046C5.761 4.067 5.026 4.718 5.026 5.32L5.026 5.684C5.026 5.705 5.026 5.719 5.019 5.74L8.666 5.74C8.897 5.74 9.093 5.922 9.093 6.153L9.093 8.89L9.1 8.89Z" fill="rgb(255,255,255)" fill-rule="nonzero" />
+</svg>

+ 4 - 0
static/images/jobApplicant/wx.svg

@@ -0,0 +1,4 @@
+<svg viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14.000000" height="14.000000" fill="none">
+	<rect id="svg 30" width="14.000000" height="14.000000" x="0.000000" y="0.000000" />
+	<path id="矢量 31" d="M9.47625 4.74773C9.63725 4.74773 9.79562 4.75998 9.95487 4.77748C9.52612 2.78073 7.392 1.29761 4.95512 1.29761C2.23125 1.29761 0 3.15348 0 5.51161C0 6.87223 0.742 7.98961 1.98275 8.85761L1.4875 10.3477L3.22 9.47973C3.8395 9.60136 4.3365 9.72736 4.95512 9.72736C5.11087 9.72736 5.26487 9.72036 5.41712 9.70898C5.32087 9.37736 5.264 9.03086 5.264 8.66948C5.26488 6.50473 7.12337 4.74773 9.47625 4.74773ZM6.81275 3.40461C7.18725 3.40461 7.43313 3.65048 7.43313 4.02323C7.43313 4.39423 7.18725 4.64273 6.81275 4.64273C6.44263 4.64273 6.06987 4.39423 6.06987 4.02323C6.06987 3.64961 6.44175 3.40461 6.81275 3.40461ZM3.34512 4.64273C2.97325 4.64273 2.59875 4.39423 2.59875 4.02323C2.59875 3.65048 2.97325 3.40461 3.34512 3.40461C3.717 3.40461 3.96375 3.64961 3.96375 4.02323C3.96375 4.39423 3.717 4.64273 3.34512 4.64273ZM14 8.60998C14 6.62898 12.0173 5.01461 9.79037 5.01461C7.43225 5.01461 5.57638 6.62986 5.57638 8.60998C5.57638 10.5962 7.43312 12.2054 9.79037 12.2054C10.2839 12.2054 10.7818 12.082 11.277 11.9577L12.6359 12.7032L12.2631 11.4642C13.258 10.717 14 9.72736 14 8.60998ZM8.42362 7.98961C8.17775 7.98961 7.92837 7.74461 7.92837 7.49436C7.92837 7.24761 8.17775 6.99911 8.42362 6.99911C8.79988 6.99911 9.044 7.24761 9.044 7.49436C9.044 7.74461 8.79988 7.98961 8.42362 7.98961ZM11.1493 7.98961C10.9051 7.98961 10.6566 7.74461 10.6566 7.49436C10.6566 7.24761 10.9043 6.99911 11.1493 6.99911C11.522 6.99911 11.7696 7.24761 11.7696 7.49436C11.7696 7.74461 11.522 7.98961 11.1493 7.98961Z" fill="rgb(255,255,255)" fill-rule="nonzero" />
+</svg>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.