Browse Source

feat: 更新注册优化功能代码

yezhihao 5 months ago
parent
commit
75d79703a7
59 changed files with 3889 additions and 3095 deletions
  1. 2 2
      .hbuilderx/launch.json
  2. 69 2
      App.vue
  3. 28 0
      common.scss
  4. 14 7
      components/btnPopous/btnPopous.vue
  5. 12 2
      components/c-modal.vue
  6. 24 0
      components/c-top.vue
  7. 16 2
      components/hg-level4-address/hgLevel4Address.vue
  8. 130 8
      components/resume/preview-resume.vue
  9. 78 0
      constants/common.js
  10. 0 2
      main.js
  11. 7 7
      manifest.json
  12. 60 61
      my/enterpriseInfo/enterpriseInfo.vue
  13. 183 0
      my/renzheng/company.scss
  14. 356 0
      my/renzheng/companyBaseInfo.vue
  15. 1 1
      my/renzheng/companyFund.vue
  16. 232 296
      my/renzheng/companyImg.vue
  17. 385 0
      my/renzheng/companyWelfare.vue
  18. 45 30
      my/renzheng/editCompany.vue
  19. 124 154
      my/renzheng/editCompanyDesc.vue
  20. 113 272
      my/renzheng/mainWorkIntro.vue
  21. 138 263
      my/renzheng/peopleDev.vue
  22. 2 2
      package/jobIntention/addAddress.vue
  23. 2 2
      package/jobIntention/basicInfo.vue
  24. 7 2
      package/jobIntention/completeMsg.vue
  25. 3 3
      package/jobIntention/fund.vue
  26. 3 0
      package/jobIntention/updateCertificates.vue
  27. 3 0
      package/my/editUserInfo.vue
  28. 16 13
      package/my/hiddenManagement/hiddenCompany.vue
  29. 12 6
      package/screen/city.vue
  30. 26 5
      pages.json
  31. 286 153
      pages/index/game/order.vue
  32. 11 7
      pages/index/index.vue
  33. 103 6
      pages/jobManagement/jobManagement.vue
  34. 9 1
      pages/my/businessLicense.vue
  35. 13 1
      pages/my/educationExperience.vue
  36. 159 483
      pages/my/index.vue
  37. 88 10
      pages/my/jobPosting.vue
  38. 57 24
      pages/my/jobPostingSecond.vue
  39. 92 2
      pages/my/joinCompany.vue
  40. 587 345
      pages/my/myCompany.vue
  41. 33 57
      pages/my/onlineResume.vue
  42. 158 0
      pages/my/searchCompanys.vue
  43. 1 1
      pages/my/setup.vue
  44. 2 0
      pages/my/switchRoles.vue
  45. 20 15
      pages/public/loginV2.vue
  46. 1 2
      pages/public/loginphone.vue
  47. 101 38
      pages/recruitmentData/communicationRecords.vue
  48. 4 3
      pages/recruitmentData/interviewManage.vue
  49. 21 799
      pages/talentSearch/resumeDetail.vue
  50. BIN
      static/checked-iOS.png
  51. BIN
      static/close-iOS.png
  52. BIN
      static/images/company.png
  53. 8 0
      static/images/index/gangwei.svg
  54. BIN
      static/login-btn-iOS.png
  55. BIN
      static/unchecked-iOS.png
  56. 0 0
      unpackage/res/Android/agconnect-services.json
  57. 40 4
      utils/jVerificationLogin.js
  58. 1 0
      uview-ui/components/u-modal/u-modal.vue
  59. 3 2
      uview-ui/components/u-radio/u-radio.vue

+ 2 - 2
.hbuilderx/launch.json

@@ -9,8 +9,8 @@
             "type" : "uni-app:app-android"
         },
         {
-            "customPlaygroundType" : "device",
-            "playground" : "standard",
+            "customPlaygroundType" : "local",
+            "playground" : "custom",
             "type" : "uni-app:app-ios"
         }
     ]

+ 69 - 2
App.vue

@@ -1,11 +1,16 @@
 <script>
 export default {
   onLaunch: function () {
+	// #ifdef APP-PLUS
+	// 初始化极光推送
+	this.initJPush()
+	// #endif
+	  
     let that = this;
 	this.$queue.connectSocket()
 	that.$queue.changeTabbar(that.$queue.getData('userType')||1)
 	uni.removeStorageSync('filter')
-    // #ifdef APP
+    // #ifdef APP-PLUS
     // 检查是否首次启动 - 引导页逻辑
     let firstUpload = uni.getStorageSync("firstUpload") || false;
 	let token = this.$queue.getData('token')
@@ -37,6 +42,8 @@ export default {
 		uni.reLaunch({
 			url: '/pages/index/index',
 		})
+	} else if (!token) {
+		return
 	}
     // #endif
 
@@ -140,7 +147,8 @@ export default {
     setInterval((d) => {
       //定时器,定时去调取聊天未读消息
       let userId = uni.getStorageSync("userId");
-      if (userId) {
+	  let token = uni.getStorageSync('token')
+      if (userId && token) {
         this.$Request.get("/app/chat/selectChatCount").then((res) => {
           if (res.code === 0) {
             let chatCount = res.data.chatCount;
@@ -592,6 +600,65 @@ export default {
   onHide: function () {
     console.log("App Hide");
   },
+	methods: {
+		// 初始化极光推送
+		initJPush() {
+			// 确保在App环境下执行(H5/小程序不支持)
+			if (uni.getSystemInfoSync().platform === 'android' || uni.getSystemInfoSync().platform === 'ios') {
+				const jpushModule = uni.requireNativePlugin('JG-JPush')
+				
+				if (!jpushModule) {
+					console.error('极光推送插件未找到,请检查导入和调试基座')
+					return;
+				}
+				
+				console.log('---------- jpushModule ------------', jpushModule)
+				
+				jpushModule.initJPushService()
+				
+				// 打开通知界面
+				// jpushModule.openSettingsForNotification((result)=>{
+				// 	this.showToast(result)
+				// })
+				
+				// 监听:点击通知(用户点击通知栏的通知)
+				jpushModule.addNotificationListener((res) => {
+					console.log('点击了通知:', res)
+					// setTimeout(() => {
+					// 	// jpushModule.setBadge(0)
+					// 	// jpushModule.setBadgeNumber({ badge: 0 })
+					// 	console.log('设置了Badge')
+					// }, 500)
+					// 可在这里跳转到指定页面(比如根据通知的extra参数跳转)
+					if (res.extras && res.extras.page) {
+						// tab页面
+						// /pages/index/index
+						// /pages/talentSearch/index
+						// /pages/msg/index
+						// /pages/my/index
+						setTimeout(() => {
+							uni.switchTab({
+								url: res.extras.page // 例如:/pages/detail/detail?id=123
+							})							
+						}, 500)
+					}
+				})
+				
+				jpushModule.getRegistrationID((res) => {
+					if (res.code === 0) {
+						console.log('获取设备ID', res)
+						
+						// 1. 将设备ID上传到你的后台
+						
+						// 2. 监听推送事件
+						// this.listenJPushEvent(jpushModule)
+					} else {
+						console.error('获取RegistrationID失败:', res)
+					}
+				})
+			}
+		},
+	}
 };
 </script>
 

+ 28 - 0
common.scss

@@ -71,6 +71,34 @@
 	}
 }
 
+.button-section {
+	padding: 28rpx 40rpx;
+	box-shadow: 0px -4px 16px 0px rgba(0, 0, 0, 0.04);
+}
+.submit-btn {
+	flex-shrink: 0;
+	border-radius: 999px;
+	box-shadow: 0px -4px 16px 0px rgba(0, 0, 0, 0.04);
+	background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+	color: rgba(255, 255, 255, 1);
+	font-family: DM Sans;
+	font-size: 32rpx;
+	font-weight: 400;
+	line-height: 48rpx;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	padding: 16rpx 32rpx;
+	box-sizing: border-box;
+}
+.link-btn {
+	text-align: center;
+	color: rgba(1, 107, 246, 1);
+	font-size: 16px;
+	font-weight: 400;
+	line-height: 16px;
+	margin-bottom: 32rpx;
+}
 
 // 底部提交按钮
 .fixed-section {

+ 14 - 7
components/btnPopous/btnPopous.vue

@@ -55,17 +55,15 @@
 							</view>
 							<!-- 职位标签 -->
 							<view class="jobAll-item-box-item-label flex align-center flex-wrap">
-								<text class="job-tag">{{ item.education }}</text>
-								<text class="job-tag">{{ item.experience }}</text>
-								<text class="job-tag">{{ item.industry }}</text>
+								<text class="job-tag" v-if="item.education">{{ item.education }}</text>
+								<text class="job-tag" v-if="item.experience">{{ item.experience }}</text>
+								<text class="job-tag" v-if="item.industry">{{ item.industry }}</text>
 							</view>
 							<!-- 公司简介-位置 -->
 							<view class="jobAll-item-box-item-info flex justify-between align-center">
 								<view class="jobAll-item-box-item-info-l flex align-center">
-									<image
-										:src="item.hr && item.hr.hrImg ? item.hr.hrImg : item.user ? item.user.avatar : '../../static/logo.png'"
-										style="width: 58rpx;height: 58rpx;border-radius: 50%;" mode="aspectFill">
-									</image>
+									<image v-if="setAvatar(item)" :src="setAvatar(item)" style="width: 58rpx;height: 58rpx;border-radius: 50%; border: 0.5px solid #eee" mode="aspectFill"></image>
+									<image v-else src="/static/logo.png" style="width: 58rpx;height: 58rpx;border-radius: 50%; border: 0.5px solid #eee" mode="aspectFill"></image>
 									<view class="company-info-text" v-if="item.company">
 										{{ item.user && item.user.userName ? item.user.userName : '未知' }}·{{ item.hr && item.hr.hrPosition || '人事总监' }}
 									</view>
@@ -330,6 +328,15 @@ export default {
 		move(e) {
 
 		},
+		// 设置头像
+		setAvatar(item) {
+			if (item?.hr?.hrImg) {
+				return item.hr.hrImg
+			} else if (item?.user?.avatar) {
+				return item.user.avatar
+			}
+			return ''
+		}
 	}
 }
 </script>

+ 12 - 2
components/c-modal.vue

@@ -4,6 +4,8 @@
 		:show-confirm-button="false"
 		:show-cancel-button="false"
 		:show-title="false"
+		:mask-close-able="maskCloseAble"
+		@close="handleClose"
 	>
 		<view class="modal-container">
 			<view class="wrapper">
@@ -14,8 +16,8 @@
 			</view>
 			
 			<view class="buttons flex align-center justify-between">
-				<view class="button cancel-button" v-if="showConfirmButton" @click="handleCancel">{{ cancelButtonText }}</view>
-				<view class="button confirm-button" v-if="showCancelButton" @click="handleConfirm">{{ confirmButtonText }}</view>
+				<view class="button cancel-button" v-if="showCancelButton" @click="handleCancel">{{ cancelButtonText }}</view>
+				<view class="button confirm-button" v-if="showConfirmButton" @click="handleConfirm">{{ confirmButtonText }}</view>
 			</view>
 		</view>		
 	</u-modal>
@@ -52,6 +54,10 @@
 			showTitle: {
 				type: Boolean,
 				default: true
+			},
+			maskCloseAble: {
+				type: Boolean,
+				default: false
 			}
 		},
 		computed: {
@@ -74,6 +80,10 @@
 			},
 			handleConfirm() {
 				this.$emit('confirm')
+			},
+			handleClose() {
+				// 只有在mask-close-able未true时,点击遮罩才生效
+				this.$emit('close')
 			}
 		}
 	}

+ 24 - 0
components/c-top.vue

@@ -0,0 +1,24 @@
+<template>
+	<view :style="{ paddingTop: BarHeight + 'px' }"></view>
+</template>
+
+<script>
+	export default {
+		name:"c-top",
+		data() {
+			return {
+				BarHeight: 0
+			};
+		},
+		mounted() {
+			// #ifdef APP-PLUS
+			let systemInfo = uni.getSystemInfoSync();
+			this.BarHeight = systemInfo.statusBarHeight;
+			// #endif
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 16 - 2
components/hg-level4-address/hgLevel4Address.vue

@@ -4,7 +4,7 @@
 			<!-- 市 -->
 			<scroll-view scroll-y class="column city">
 				<view v-for="(city, i) in filteredCities" :key="i" class="item"
-					:class="{ cityActive: selectedCity && selectedCity.code === city.code }" @click="selectCity(city)">
+					:class="{ cityActive: selectedCity && selectedCity.code === city.code, disabled: onlyShowOneCity }" @click="selectCity(city)">
 					{{ city.name }}
 				</view>
 			</scroll-view>
@@ -51,6 +51,11 @@
 			street: {
 				type: [String, Number],
 				default: ''
+			},
+			// 判断是否禁止选择城市
+			onlyShowOneCity: {
+				type: Boolean,
+				default: false
 			}
 		},
 		data() {
@@ -141,6 +146,12 @@
 
 			/** 市选择 */
 			selectCity(city) {
+				if (this.onlyShowOneCity) {
+					if (this.city != city) {
+						this.$queue.showToast('不支持切换到其他城市')
+					}
+					return
+				}
 				this.selectedCity = city
 				this.selectedArea = {
 					code: 'all',
@@ -210,7 +221,7 @@
 	}
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 	.address-page {
 		display: flex;
 		flex-direction: column;
@@ -252,6 +263,9 @@
 		font-size: 32rpx;
 		font-weight: 400;
 		margin-bottom: 16rpx;
+		&.disabled {
+			color: rgb(204, 204, 204);
+		}
 	}
 
 	.item.cityActive {

+ 130 - 8
components/resume/preview-resume.vue

@@ -2,9 +2,12 @@
 	<view class="preview-resume-container">
 		<view class="user-info">
 			<view class="flex justify-between align-center">
-				<view class="name">{{ userName }}</view>
+				<view class="name flex">
+					<text>{{ userName }}</text>
+					<view class="badge" v-if="browseTag">{{ browseTag }}</view>
+				</view>
 				<view class="avatar-box">
-					<image :src="avatarUrl ? avatarUrl : '/static/images/logo.jpg'" class="avatar"></image>
+					<image :src="avatarUrl ? avatarUrl : '/static/images/logo.jpg'" class="avatar" mode="aspectFill"></image>
 					<image src="@/static/images/svg/male.svg" class="sex-tag" v-if="sex == 1"></image>
 					<image src="@/static/images/svg/female.svg" class="sex-tag" v-else-if="sex == 2"></image>
 				</view>
@@ -18,10 +21,10 @@
 				<view class="tag" v-for="(tag, index) in baseInfoList" :key="index">{{ tag }}</view>
 			</view>
 			<view class="advantages">{{ adv }}</view>
-			<view class="resume-tag">
+			<!-- <view class="resume-tag">
 				<image src="@/static/images/svg/file.svg" class="resume-icon"></image>
 				已上传附件简历
-			</view>
+			</view> -->
 		</view>
 		
 		<!-- 求职期望 -->
@@ -96,6 +99,17 @@
 	import { jobStatus as jobStatusList } from '@/constants/userInfo'
 
 	export default {
+		props: {
+			// 简历id,如果有就查id的数据,如果没有就查自己的
+			resumesId: {
+				type: String | Number,
+				default: '',
+			},
+			postPushId: {
+				type: String | Number,
+				default: ''
+			},
+		},
 		data() {
 			return {
 				userName: '',
@@ -110,7 +124,8 @@
 				workExpList: [], // 工作经历
 				eduList: [], // 教育经历
 				certificates: [], // 资质证书
-				toggle: false
+				toggle: false,
+				browseTag: '',
 			};
 		},
 		computed: {
@@ -129,7 +144,11 @@
 			}
 		},
 		mounted() {
-			this.getData()
+			if (this.resumesId) {
+				this.getOhterResume()
+			} else {
+				this.getData()
+			}
 		},
 		methods: {
 			// 获取数据
@@ -143,7 +162,7 @@
 							this.userName = data.userEntity.userName
 							this.sex = data.userEntity.sex
 							this.avatarUrl = data.userEntity.avatar
-							this.jobStatus = data.resumeList.resumesStatus
+							this.jobStatus = data.resumeList?.resumesStatus
 							if (data.workExpList.length) {
 								this.currentCompanyName = data.workExpList[0].companyName
 								this.currentPositionName = data.workExpList[0].position
@@ -160,7 +179,7 @@
 							if (data.userEntity) {
 								this.baseInfoList.push(`${data.userEntity.age}岁`)
 							}
-							this.adv = data.resumeList.adv
+							this.adv = data.resumeList?.adv
 							
 							// 求职期望
 							this.intentions = data.intentions
@@ -217,6 +236,93 @@
 			// 展示所有工作经历
 			handleShowAll() {
 				this.toggle = true
+			},
+			// 获取别人简历
+			getOhterResume() {
+				uni.showLoading({ title: '加载中' })
+				this.$Request.get('/app/resumes/selectResumesByResumesId', {
+					resumesId: this.resumesId,
+					postPushId: this.postPushId,
+					userId: uni.getStorageSync('userId') || 0,
+					companyId: uni.getStorageSync('companyId'),
+				}).then(res => {
+					if (res.code == 0) {
+						const data = res.data
+						this.userName = data.resumesListDtoList?.userName
+						this.sex = data.resumesListDtoList?.userSex
+						this.avatarUrl = data.resumesListDtoList?.userAvatar
+						this.jobStatus = data.resumesStatus
+						if (data.workExpList.length) {
+							this.currentCompanyName = data.workExpList[0].companyName
+						}
+						this.currentPositionName = data.industryName
+						// 添加工作年限
+						if (data.resumesWorkExperience) {
+							this.baseInfoList.push(data.resumesWorkExperience)
+						}
+						// 添加学历
+						if (data.eduList) {
+							this.baseInfoList.push(this.$queue.getHighestEducation(data.eduList))
+						}
+						// 添加年龄
+						if (data.resumesListDtoList) {
+							this.baseInfoList.push(`${data.resumesListDtoList.userAge}岁`)
+						}
+						this.adv = data.resumesListDtoList?.adv
+						
+						// 求职期望
+						this.intentions = data.intentionList.map(item => {
+							item.industry = data.resumesListDtoList.intentIndustry
+							return item
+						})
+						
+						// 工作经历
+						this.workExpList = data?.workExpList.map(work => {
+							// 判断是否是跨境公司
+							let isCrossCompany = false
+							if (work.type && JSON.parse(work.type)?.[0] == 0) {
+								isCrossCompany = true
+							}
+							work.isCrossCompany = isCrossCompany
+							
+							work.workExpDetailList = work.workExpDetailList.map(item => {
+								item.startTime = item.startTime?.slice(0, 10)
+								item.endTime = item.endTime?.slice(0, 10)
+								item.skills = JSON.parse(item.skills)
+								return item
+							})
+							return work
+						})
+						
+						// 教育经历
+						this.eduList = data.eduList.map(edu => {
+							let time = ''
+							if (edu.startTime && edu.endTime) {
+								time = `${edu.startTime.split('-')[0]}-${edu.endTime.split('-')[0]}`
+							}
+							edu.time = time
+							return edu
+						})
+						
+						// 资质证书
+						this.certificates = data.certificates
+						
+						// 观看记录
+						this.browseTag = data.resumesListDtoList?.browseTag
+					} else {
+						uni.hideLoading()
+						uni.showModal({
+							title: '提示',
+							content: '用户简历不存在',
+							showCancel: false,
+							complete(ret) {
+								uni.navigateBack()
+							}
+						})
+					}
+				}).finally(() => {
+					uni.hideLoading()
+				})
 			}
 		}
 	}
@@ -234,6 +340,20 @@
 				font-size: 48rpx;
 				font-weight: 700;
 				line-height: 60rpx;
+				text {
+					flex: 1;
+				}
+				.badge {
+					height: 18px;
+					border-radius: 4px;
+					background: rgba(213, 255, 231, 1);
+					padding: 8rpx;
+					color: rgba(29, 209, 104, 1);
+					font-size: 8px;
+					font-weight: 400;
+					line-height: 10px;
+					margin-left: 20rpx;
+				}
 			}
 			.avatar-box {
 				position: relative;
@@ -271,6 +391,7 @@
 				line-height: 36rpx;
 				color: rgba(97, 110, 124, 1);
 				margin-top: 20rpx;
+				word-wrap: break-word;
 			}
 			.resume-tag {
 				display: flex;
@@ -470,6 +591,7 @@
 				font-size: 20rpx;
 				line-height: 1;
 				color: rgba(153, 153, 153, 1);
+				word-break: break-all;
 			}
 		}
 	}

+ 78 - 0
constants/common.js

@@ -18,3 +18,81 @@ export const companyType = [
         value: '3',
     }
 ];
+
+// 公司融资
+export const companyDevelop = [
+	'未融资',
+	'天使轮',
+	'A轮',
+	'B轮',
+	'C轮',
+	'D轮及以上',
+	'已上市',
+	'不需要融资',
+]
+
+// 公司人员规模
+export const companyPeopleNum = [
+	'0-20人',
+	'20-99人',
+	'100-499人',
+	'500-999人',
+	'1000-9999人',
+	'10000人以上',
+]
+
+// 公司休息模式
+export const companyRestTime = [
+	'单休',
+	'双休'
+]
+
+// 公司加班情况
+export const companyOvertimeSituation = [
+	'不加班',
+	'偶尔加班',
+	'弹性工作',
+]
+
+// 公司福利
+export const companyWelfare = [
+	{
+		title: '保险',
+		content: [
+			'五险一金',
+			'补充医疗保险',
+			'意外险',
+			'定期体检',
+		]
+	},
+	{
+		title: '薪资期权',
+		content: [
+			'年终奖',
+			'绩效奖金',
+			'保底工资',
+			'底薪加提成',
+			'股票期权',
+			'企业年金',
+		]
+	},
+	{
+		title: '度假休假',
+		content: [
+			'带薪年假',
+			'节假日加班费',
+			'法定节假日三薪',
+			'员工购房',
+		]
+	},
+	{
+		title: '生活补助',
+		content: [
+			'餐补',
+			'交通补贴',
+			'住房补贴',
+			'加班补贴',
+			'团建补贴',
+		]
+	},
+]

+ 0 - 2
main.js

@@ -15,8 +15,6 @@ Vue.prototype.$queue = queue;
 Vue.prototype.$Sysconf = HttpRequest.config;
 Vue.prototype.$SysCache = HttpCache;
 
-
-
 App.mpType = 'app'
 
 // 引入全局uView

+ 7 - 7
manifest.json

@@ -192,16 +192,16 @@
                 "JPUSH_GOOGLE_PROJECT_ID" : "",
                 "JPUSH_GOOGLE_PROJECT_NUMBER" : "",
                 "JPUSH_GOOGLE_STORAGE_BUCKET" : "",
-                "JPUSH_HONOR_APPID" : "",
-                "JPUSH_HUAWEI_APPID" : "",
+                "JPUSH_HONOR_APPID" : "104533692",
+                "JPUSH_HUAWEI_APPID" : "116155907",
                 "JPUSH_ISPRODUCTION_IOS" : "",
                 "JPUSH_MEIZU_APPID" : "",
                 "JPUSH_MEIZU_APPKEY" : "",
-                "JPUSH_OPPO_APPID" : "",
-                "JPUSH_OPPO_APPKEY" : "",
-                "JPUSH_OPPO_APPSECRET" : "",
-                "JPUSH_VIVO_APPID" : "",
-                "JPUSH_VIVO_APPKEY" : "",
+                "JPUSH_OPPO_APPID" : "36598376",
+                "JPUSH_OPPO_APPKEY" : "251e05eb1f6e4c5c942ce7c784f0bd81",
+                "JPUSH_OPPO_APPSECRET" : "2ea0bcc32e734f5fa164437d5680e146",
+                "JPUSH_VIVO_APPID" : "106001691",
+                "JPUSH_VIVO_APPKEY" : "13f76ac11331bc7a7d04eb01fd739e45",
                 "JPUSH_XIAOMI_APPID" : "",
                 "JPUSH_XIAOMI_APPKEY" : "",
                 "__plugin_info__" : {

+ 60 - 61
my/enterpriseInfo/enterpriseInfo.vue

@@ -24,26 +24,19 @@
 
 		<!-- 企业信息 -->
 		<view class="info flex justify-center">
-			<view class="info-box flex align-center justify-between">
+			<view class="info-box flex justify-between">
 				<view class="info-box-r">
-					<view class="info-box-r-title" v-show="info.companyName">
+					<view class="info-box-r-title" v-if="info.companyName">
 						{{ info.companyName }}
 					</view>
-					<view class="info-box-r-label flex align-center flex-wrap">
-						<view class="info-box-r-label-item" v-if="info.companyPeople">
-							{{ info.companyPeople }}
-						</view>
-
-						<!-- <view class="info-box-r-label-item" v-show="info.companyScope">
-							{{ info.companyScope }}
-						</view> -->
+					<view class="info-box-r-label-item" v-if="info.companyPeople">
+						{{ info.companyPeople }}
 					</view>
 					<view class="info-box-r-label-item" v-show="info.companyAllName">
 						{{ info.companyAllName ? info.companyAllName : '--' }}
 					</view>
 				</view>
-				<image :src="info.companyLogo ? info.companyLogo : '../../static/logo.png'"
-					style="width: 120rpx;height: 120rpx;border-radius: 50%;" mode="">
+				<image :src="info.companyLogo ? info.companyLogo : '../../static/logo.png'" class="logo" mode="aspectFill">
 				</image>
 			</view>
 		</view>
@@ -76,8 +69,8 @@
 					<!-- 地址信息 -->
 					<view @click="openMap()" class="address-box-c-add flex justify-between align-center">
 						<view class="address-box-c-add-l flex align-center">
-							<u-icon name="map" style="margin-right: 12rpx;" color="rgba(51, 51, 51, 1)"
-								size="24"></u-icon>
+							<u-icon name="map-fill" style="margin-right: 8rpx;" color="rgba(102, 102, 102, 1)"
+								size="26"></u-icon>
 							<!-- <text v-if="info.companyAddress">{{ info.province ? info.province : '' }}{{ info.city ? info.city : ''
 							}}{{
 									info.district ? info.district : '' }}{{ info.companyAddress ? info.companyAddress : ''
@@ -148,9 +141,9 @@
 						<view class="hr-content flex align-center">
 							<view class="hr-avatar-container">
 								<view class="hr-avatar">
-									<image :src="hr.hrImg" mode="aspectFill" />
+									<image :src="hr.hrImg || '/static/logo.png'" mode="aspectFill" />
 								</view>
-								<view class="online-dot"  :style="{'background':hr&&hr.onlineStatus=='ONLINE'?'#00D26A':'#999'}"></view>
+								<view class="online-dot" :style="{'background':hr&&hr.onlineStatus=='ONLINE'?'#00D26A':'#999'}"></view>
 							</view>
 							<view class="hr-text">
 								<view class="hr-name">{{ hr.name }}</view>
@@ -202,16 +195,16 @@
 						工商信息
 					</view>
 					<view class="gsInfo-box-c-item">
-						公司全称:{{ info.companyAllName ? info.companyAllName : '' }}
+						公司全称:{{ info.companyAllName ? info.companyAllName : '--' }}
 					</view>
 					<view class="gsInfo-box-c-item">
 						成立时间:{{ info.companyCreateTime ? info.companyCreateTime : '--' }}
 					</view>
 					<view class="gsInfo-box-c-item">
-						注册资本:{{ info.companyRegisteredFund ? info.companyRegisteredFund : '--' }}万人民币
+						注册资本:{{ info.companyRegisteredFund ? `${info.companyRegisteredFund}万人民币` : '--' }}
 					</view>
 					<view class="gsInfo-box-c-item">
-						法人代表:{{ info.companyLegalPerson ? info.companyLegalPerson : '未知' }}
+						法人代表:{{ info.companyLegalPerson ? info.companyLegalPerson : '--' }}
 					</view>
 				</view>
 			</view>
@@ -691,29 +684,34 @@ page {
 		.info-box-r-title {
 			color: rgba(58, 57, 67, 1);
 			font-family: DM Sans;
-			font-size: 42rpx;
+			font-size: 24px;
 			font-weight: 700;
 			line-height: 30px;
-			letter-spacing: 0px;
-			text-align: left;
 		}
 
 		.info-box-r-label {
 			color: #FFFFFF;
 			font-size: 28rpx;
 			font-weight: 500;
-			margin-top: 20rpx;
-
-			.info-box-r-label-item {
-				color: rgba(153, 153, 153, 1);
-				font-family: DM Sans;
-				font-size: 24rpx;
-				font-weight: 400;
-				line-height: 16px;
-				letter-spacing: 0%;
-				text-align: left;
-				margin-right: 10rpx
-			}
+			margin-top: 12rpx;
+
+			// .info-box-r-label-item {
+			// 	color: rgba(153, 153, 153, 1);
+			// 	font-family: DM Sans;
+			// 	font-size: 24rpx;
+			// 	font-weight: 400;
+			// 	line-height: 16px;
+			// 	letter-spacing: 0%;
+			// 	text-align: left;
+			// 	margin-top: 8rpx;
+			// }
+		}
+		.logo {
+			width: 100rpx;
+			height: 100rpx;
+			border-radius: 50%;
+			box-sizing: border-box;
+			border: 0.5px solid rgba(232, 242, 254, 1);
 		}
 	}
 }
@@ -726,13 +724,12 @@ page {
 	line-height: 16px;
 	letter-spacing: 0%;
 	text-align: left;
-	margin-right: 10rpx;
-	margin-top: 20rpx;
+	margin-top: 8rpx;
 }
 
 .remarks {
 	width: 100%;
-	margin-top: 50rpx;
+	margin-top: 44rpx;
 
 	.remarks-box {
 		width: 686rpx;
@@ -748,9 +745,7 @@ page {
 		}
 
 		.remarks-box-con {
-			margin-top: 30rpx;
-
-
+			margin-top: 12rpx;
 		}
 	}
 }
@@ -767,7 +762,7 @@ page {
 
 .address {
 	width: 100%;
-	margin-top: 80rpx;
+	margin-top: 40rpx;
 
 	.address-box {
 		width: 686rpx;
@@ -777,7 +772,7 @@ page {
 			width: 100%;
 
 			.working-hours {
-				margin-bottom: 24rpx;
+				margin-bottom: 12rpx;
 
 				text {
 					color: rgba(51, 51, 51, 1);
@@ -824,7 +819,7 @@ page {
 				.address-box-c-add-l {
 					color: rgba(102, 102, 102, 1);
 					font-family: DM Sans;
-					font-size: 24rpx;
+					font-size: 12px;
 					font-weight: 400;
 					line-height: 16px;
 					letter-spacing: 0px;
@@ -845,7 +840,7 @@ page {
 
 .business-section {
 	width: 100%;
-	margin-top: 30rpx;
+	margin-top: 40rpx;
 
 	.business-box {
 		width: 686rpx;
@@ -860,7 +855,7 @@ page {
 			line-height: 24px;
 			letter-spacing: 0px;
 			text-align: left;
-			margin-bottom: 24rpx;
+			margin-bottom: 12rpx;
 		}
 
 		.business-tags {
@@ -885,7 +880,7 @@ page {
 
 .talent-section {
 	width: 100%;
-	margin-top: 30rpx;
+	margin-top: 40rpx;
 
 	.talent-box {
 		width: 686rpx;
@@ -927,11 +922,15 @@ page {
 		}
 	}
 }
+.talent-swiper {
+	height: calc(686rpx * 3 / 4);
+}
 .photo-box {
   position: relative;
   width: 100%;
   padding-top: 75%; 
   overflow: hidden;
+  border-radius: 8px;
 }
 
 .photoImage {
@@ -950,7 +949,7 @@ page {
 		border-radius: 24rpx;
 
 		.hr-header {
-			padding: 50rpx 0 0 0;
+			padding: 40rpx 0 0 0;
 			margin-bottom: 30rpx;
 
 			.hr-title {
@@ -965,7 +964,7 @@ page {
 
 			.view-all-jobs {
 				text {
-					color: rgba(255, 102, 0, 1);
+					color:  rgba(1, 107, 246, 1);
 					font-family: DM Sans;
 					font-size: 12px;
 					font-weight: 400;
@@ -977,11 +976,10 @@ page {
 		}
 
 		.hr-list {
-			padding: 0 0 30rpx 0;
 			flex-wrap: wrap;
-			gap: 20rpx;
+			gap: 8px;
 			.hr-item {
-				// flex: 1;
+				flex: 0 0 calc((100% - 16px) / 3);
 
 				.hr-content {
 					align-items: center;
@@ -1000,9 +998,11 @@ page {
 							position: relative;
 
 							image {
+								display: block;
 								width: 80rpx;
 								height: 80rpx;
 								border-radius: 50%;
+								border: 0.5px solid #eee;
 							}
 
 							.avatar-text {
@@ -1015,27 +1015,27 @@ page {
 						.online-dot {
 							position: absolute;
 							bottom: 4rpx;
-							right: 4rpx;
+							right: -2px;
 							width: 20rpx;
 							height: 20rpx;
 							background-color: #7ED321;
 							border-radius: 50%;
-							border: 3rpx solid #ffffff;
+							border: 3rpx solid #fff;
 						}
 					}
 
 					.hr-text {
 						.hr-name {
-							color: rgba(34, 37, 42, 1);
+							color: rgba(29, 33, 41, 1);
 							font-family: DM Sans;
-							font-size: 28rpx;
+							font-style: Medium;
+							font-size: 12px;
 							font-weight: 500;
-							line-height: 20px;
-							margin-bottom: 4rpx;
-							text-align: left;
+							line-height: 16px;
 						}
 
 						.hr-position {
+							height: 16px;
 							color: rgba(153, 153, 153, 1);
 							font-family: DM Sans;
 							font-size: 24rpx;
@@ -1052,7 +1052,7 @@ page {
 
 .gsInfo {
 	width: 100%;
-	margin-top: 20rpx;
+	margin-top: 40rpx;
 
 	.gsInfo-box {
 		width: 686rpx;
@@ -1062,8 +1062,7 @@ page {
 		.gsInfo-box-c {
 			width: 100%;
 			height: 100%;
-			padding-top: 30rpx;
-			padding-bottom: 30rpx;
+			padding-bottom: 120rpx;
 		}
 
 		.gsInfo-box-c-title {

+ 183 - 0
my/renzheng/company.scss

@@ -0,0 +1,183 @@
+.page-container {
+	height: 100vh;
+	display: flex;
+	flex-direction: column;
+	justify-content: space-between;
+	font-family: DM Sans;
+	font-style: Regular;
+	
+	// 导航栏"跳过"按钮
+	.nav-bar-right-btn {
+		color: rgba(51, 51, 51, 1);
+		font-size: 20rpx;
+		font-weight: 400;
+		line-height: 52rpx;
+		text-align: right;
+	}
+	
+	.content {
+		flex: 1;
+		overflow-y: auto;
+		padding: 24rpx 40rpx;
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+		color: rgba(102, 102, 102, 1);
+		
+		.num-title {
+			color: rgba(1, 107, 246, 1);
+			margin-bottom: 20rpx;
+			text {
+				font-size: 28rpx;
+				font-weight: 400;
+				line-height: 60rpx;
+			}
+			.current-num {
+				font-size: 48rpx;
+				font-weight: 700;
+				line-height: 60rpx;
+			}
+		}
+		
+		.main-title {
+			color: rgba(51, 51, 51, 1);
+			font-size: 36rpx;
+			font-weight: 700;
+			line-height: 60rpx;
+			margin-bottom: 20rpx;
+		}
+		
+		.section {
+			margin-top: 20rpx;
+			.required {
+				color: #FF0027;
+			}
+			.title {
+				color: rgba(31, 44, 55, 1);
+				font-size: 28rpx;
+				font-weight: 500;
+				line-height: 44rpx;
+				margin-bottom: 16rpx;
+			}
+			.input-wrapper {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				box-sizing: border-box;
+				border: 1px solid rgba(227, 231, 236, 1);
+				border-radius: 24px;
+				padding: 11rpx 32rpx;
+				
+				.placeholder-class,
+				.input,
+				.input-content{
+					color: rgba(153, 153, 153, 1);
+					font-size: 24rpx;
+					font-weight: 500;
+					line-height: 48rpx;
+				}
+				
+				.input-content {
+					margin-right: 12rpx;
+				}
+				
+				.flex-1 {
+					flex: 1;
+					text-align: center;
+				}
+			}
+			.tags-placeholder {
+				line-height: 52rpx;
+				color: #999;
+			}
+		}
+		.upload-wrapper {
+			margin: 20rpx 0;
+			.logo {
+				width: 64rpx;
+				height: 64rpx;
+				border: 1px solid rgba(254, 254, 254, 1);
+				border-radius: 50%;
+				margin-right: 20rpx;
+			}
+			.tip-text {
+				color: rgba(1, 107, 246, 1);
+				font-size: 20rpx;
+			}
+		}
+		
+		.select-button-wrapper {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			gap: 24rpx;
+			.select-button {
+				flex: 1;
+				padding: 12rpx 48rpx;
+				border-radius: 10rpx;
+				background: rgba(245, 248, 254, 1);
+				border: 1px solid rgba(245, 248, 254, 1);
+				color: rgba(153, 153, 153, 1);
+				font-size: 28rpx;
+				font-weight: 400;
+				line-height: 44rpx;
+				text-align: center;
+				box-sizing: border-box;
+				&.select-active-button {
+					border: 1px solid rgba(1, 107, 246, 1);
+					background: rgba(1, 107, 246, 0.1);
+					color: rgba(1, 107, 246, 1);
+				}
+			}
+		}
+		
+		.tags {
+			display: flex;
+			flex-wrap: wrap;
+			gap: 8rpx;
+			padding: 9rpx 0;
+			.tag {
+				max-width: 544rpx;
+				padding: 8rpx;
+				border-radius: 8rpx;
+				background: rgba(153, 153, 153, 0.1);
+				border: 0.5px solid rgba(153, 153, 153, 0.1);
+				color: rgba(102, 102, 102, 1);
+				font-size: 20rpx;
+				font-weight: 400;
+				line-height: 1;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+			}
+			.active-tag {
+				border-color: rgba(1, 107, 246, 1);
+				color: rgba(1, 107, 246, 1);
+				background: rgba(1, 107, 246, 0.1);
+			}
+		}
+	}
+	
+	// 底部按钮
+	.fixed-button {
+		padding: 28rpx 40rpx;
+		box-shadow: 0px -4px 16px 0px rgba(0, 0, 0, 0.04);
+		
+		.button {
+			flex-shrink: 0;
+			border-radius: 999px;
+			box-shadow: 0px -4px 16px 0px rgba(0, 0, 0, 0.04);
+			background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+			color: rgba(255, 255, 255, 1);
+			font-family: DM Sans;
+			font-size: 32rpx;
+			font-weight: 400;
+			line-height: 48rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			padding: 16rpx 32rpx;
+			box-sizing: border-box;
+		}
+	}
+}

+ 356 - 0
my/renzheng/companyBaseInfo.vue

@@ -0,0 +1,356 @@
+<template>
+	<view class="page-container">
+		<nav-bar title="公司信息">
+			<view class="nav-bar-right-btn" slot="right" @click="toNext">跳过</view>
+		</nav-bar>
+		
+		<view class="content">
+			<view class="num-title">
+				<text class="current-num">1</text>
+				<text>/6</text>
+			</view>
+			
+			<view class="main-title">基本信息</view>
+			<view>开始完善公司主页吧,让求职者了解公司</view>
+			
+			<view class="section">
+				<view class="title">公司Logo</view>
+				<view>该logo将出现在公司主页及公司下展示的所有职位上</view>
+				<view class="upload-wrapper flex align-center" @click="chooseImage">
+					<image :src="companyLogo || '/static/logo.png'" class="logo" mode="aspectFill"></image>
+					<view class="tip-text">重新上传</view>
+				</view>
+				<view>请上传清晰且完整的图片</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">公司名称</view>
+				<view class="input-wrapper">
+					<input v-model="companyName" placeholder="请输入公司名称" maxlength="100" class="input" placeholder-class="placeholder-class" />
+				</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">公司全称</view>
+				<view style="height: 32rpx;">{{ companyAllName }}</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">融资阶段</view>
+				<view class="input-wrapper" @click="openSelectModal(1)">
+					<view class="input-content">
+						<text class="input-value" v-if="companyDevelop">{{ companyDevelop }}</text>
+						<text class="input-placeholder" v-else>请选择融资阶段</text>
+					</view>
+					<u-icon name="arrow-down"></u-icon>
+				</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">人员规模</view>
+				<view class="input-wrapper" @click="openSelectModal(2)">
+					<view class="input-content">
+						<text class="input-value" v-if="companyPeople">{{ companyPeople }}</text>
+						<text class="input-placeholder" v-else>请选择人员规模</text>
+					</view>
+					<u-icon name="arrow-down"></u-icon>
+				</view>
+			</view>
+			
+			<view class="section">
+				<view class="title"><text class="required">*</text>公司业务类型</view>
+				<view>
+					<u-checkbox-group size="24">
+						<u-checkbox 
+							label-size="24"
+							@change="checkboxChange" 
+							v-model="item.checked" 
+							v-for="item in companyTypeList" :key="item.value" 
+							:name="item.value"
+						>{{item.label}}</u-checkbox>
+					</u-checkbox-group>
+				</view>
+			</view>
+			
+			<u-select
+				v-model="showSelect"
+				:default-value="defaultValue"
+				:list="selectList"
+				@confirm="confirmSelect"
+			></u-select>
+		</view>
+		
+		<view class="fixed-button">
+			<view class="button" @click="handleSave">保存</view>
+		</view>
+		
+		<!-- 权限说明弹窗 -->
+		<u-popup mode="top" ref="permission">
+			<view class="popup-content">
+				<view class="popup-text-permission">选择/拍摄照片需要相机/相册权限,用于上传用户头像</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import navBar from '@/components/nav-bar/index.vue'
+	import { companyType, companyDevelop, companyPeopleNum } from '@/constants/common.js'
+	export default {
+		components: {
+			navBar
+		},
+		data() {
+			return {
+				companyId: '',
+				companyLogo: '',
+				companyName: '',
+				companyAllName: '',
+				companyDevelop: '', // 融资阶段
+				companyPeople: '', // 人员规模
+				companyTypes: [], // 公司类型
+				loading: false,
+				showSelect: false,
+				openType: 1, // 1融资阶段 2人员规模
+				uploading: false,
+				uploadProgress: 0,
+			};
+		},
+		computed: {
+			// 公司业务类型
+			companyTypeList() {
+				return companyType.map(type => {
+					if (this.companyTypes.includes(type.value)) {
+						type.checked = true
+					} else {
+						type.checked = false
+					}
+					return type
+				})
+			},
+			
+			// 选择器列表数据
+			selectList() {
+				return (this.openType == 1 ? companyDevelop : companyPeopleNum).map(item => {
+					return {
+						value: item,
+						label: item
+					}
+				}) || []
+			},
+			
+			// 回显数组
+			defaultValue() {
+				const index = (this.openType == 1 ? companyDevelop : companyPeopleNum).findIndex(item => {
+					if (this.openType == 1 && item == this.companyDevelop) {
+						return item
+					}
+					if (this.openType != 1 && item == this.companyPeople) {
+						return item
+					}
+				})
+				return [index == -1 ? 0 : index]
+			}
+		},
+		onLoad() {
+			this.getCompanyInfo()
+		},
+		methods: {
+			// 跳转至下一步 
+			toNext() {
+				uni.redirectTo({
+					url: '/my/renzheng/companyWelfare'
+				})
+			},
+			
+			// 获取公司信息
+			getCompanyInfo() {
+				uni.showLoading({ title: '加载中' })
+				this.$Request.get('/app/company/selectCompanyByUserId')
+					.then((res) => {
+						if (res.code != 0) {
+							uni.showToast({
+								title: res.msg || '查询状态失败',
+								icon: 'none'
+							});
+							return
+						}
+						this.companyId = res.data.companyId
+						this.companyLogo = res.data.companyLogo
+						this.companyName = res.data.companyName
+						this.companyAllName = res.data.companyAllName
+						this.companyDevelop = res.data.companyDevelop
+						this.companyPeople = res.data.companyPeople
+						// 设置公司业务类型
+						if (res.data.type) {
+							const types = JSON.parse(res.data.type)
+							this.companyTypes= types
+						}
+						uni.hideLoading()
+					})
+					.catch((err) => {
+						uni.hideLoading()
+						uni.showToast({
+							title: '网络异常',
+							icon: 'none'
+						})
+					})
+			},
+			
+			// 选择图片
+			async chooseImage() {
+				// 1. 检查权限状态
+				const hasPermission = await this.$queue.checkPermission(
+					'camera',
+					'选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+					this
+				);
+			
+				// 2. 如果未授权或者用户拒绝,显示提示
+				if (!hasPermission) {
+					return;
+				}
+			
+				uni.chooseImage({
+					count: 1,
+					sizeType: ["compressed"], // 可以指定是原图还是压缩图,默认二者都有
+					sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有
+					success: (res) => {
+						// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
+						const tempFilePaths = res.tempFilePaths;
+			
+						// 这里可以添加图片验证
+						this.validateAndUploadImage(tempFilePaths[0]);
+					},
+					fail: (error) => {
+						console.log("选择图片失败:", error);
+						uni.showToast({
+							title: "选择图片失败",
+							icon: "none",
+						});
+					},
+				});
+			},
+			
+			// 验证并上传图片
+			validateAndUploadImage(tempFilePath) {
+				// 获取图片信息
+				uni.getImageInfo({
+					src: tempFilePath,
+					success: (imageInfo) => {
+						console.log("图片信息:", imageInfo);
+			
+						// 开始上传
+						this.uploadImage(tempFilePath);
+					},
+					fail: (error) => {
+						console.log("获取图片信息失败:", error);
+						this.uploadImage(tempFilePath); // 即使获取信息失败也继续上传
+					},
+				});
+			},
+			
+			// 上传图片到服务器
+			uploadImage(filePath) {
+				this.uploading = true;
+				this.uploadProgress = 0;
+			
+				// 模拟上传进度
+				const progressTimer = setInterval(() => {
+					this.uploadProgress += 10;
+					if (this.uploadProgress >= 90) {
+						clearInterval(progressTimer);
+					}
+				}, 100);
+			
+				this.$queue.uploadFile(filePath, (path) => {
+					if (path) {
+						clearInterval(progressTimer);
+						this.uploadProgress = 100;
+						this.companyLogo = path
+						uni.showToast({
+							title: '上传成功',
+							icon: 'success'
+						});
+					} else {
+						uni.showToast({
+							title: data.message || '上传失败',
+							icon: 'none'
+						});
+					}
+					setTimeout(() => {
+						this.uploading = false;
+					}, 500);
+				})
+			},
+			
+			checkboxChange(item) {
+				if (item.value) {
+					this.companyTypes.push(item.name)
+				} else {
+					const index = this.companyTypes.findIndex(type => type.value == item.name)
+					this.companyTypes.splice(index, 1)
+				}
+			},
+			
+			openSelectModal(type) {
+				this.openType = type
+				this.showSelect = true
+			},
+			
+			// 选择select数据
+			confirmSelect(e) {
+				let item = e[0]
+				if (this.openType == 1) {
+					this.companyDevelop = item.value
+				} else {
+					this.companyPeople = item.value
+				}
+			},
+			
+			handleSave() {
+				if (this.loading) return
+				
+				if (!this.companyTypes.length) {
+					return this.$queue.showToast('请选择公司类型')
+				}
+				
+				uni.showLoading({ title: '保存中' })
+				this.loading = true
+				let companyData = {
+					companyId: this.companyId,
+					companyLogo: this.companyLogo,
+					companyName: this.companyName,
+					companyAllName: this.companyAllName,
+					companyDevelop: this.companyDevelop,
+					companyPeople: this.companyPeople,
+					type: JSON.stringify(this.companyTypes)
+				}
+				
+				this.$Request.postJson('/app/company/updateCompany', companyData)
+					.then(res => {
+						if(res.code == 0){
+							uni.showToast({
+								title: '提交成功',
+								duration: 1500,
+							});
+							setTimeout(()=>{
+								uni.$emit('updateCompanyInfo')
+								uni.navigateBack()
+							}, 500)
+						}
+						this.loading = true
+						uni.hideLoading()
+					})
+					.catch(() => {
+						this.loading = true
+						uni.hideLoading()
+					})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import './company.scss';
+</style>

+ 1 - 1
my/renzheng/companyFund.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="switch-roles">
-		<nav-bar title="公司福利" color="#000"></nav-bar>
+		<nav-bar title="公司福利"></nav-bar>
 		<view class="roles-content">
 			<view class="content">
 				<view class="progress-num"> <text>3</text>/8 </view>

+ 232 - 296
my/renzheng/companyImg.vue

@@ -1,68 +1,79 @@
 <template>
-	<view class="switch-roles">
-		<nav-bar title="公司信息" color="#000"></nav-bar>
-		<view class="roles-content">
-			<view class="content">
-				<view class="progress-num"> <text>7</text>/8 </view>
-				<view class="title">
-					<view>展示公司照片</view>
-				</view>
-				<view class="desc">在公司主页上展示亮眼的照片,体现企业氛围与文化魅力;最多上传20张</view>
-
-				<view class="content-index">
-					<!-- 多图上传区域 -->
-					<view class="upload-section">
-						<view class="images-grid">
-							<!-- 已上传的图片 -->
-							<view class="image-item" v-for="(image, index) in imageList" :key="index"
-								@click="previewImage(index)">
-								<image :src="image.url" mode="aspectFill" class="preview-image"></image>
-								<view class="image-mask">
-									<u-icon name="eye" color="#fff" size="30"></u-icon>
-								</view>
-								<view class="delete-btn" @click.stop="deleteImage(index)">
-									<u-icon name="close" color="#fff" size="20"></u-icon>
-								</view>
+	<view class="page-container">
+		<nav-bar title="公司信息">
+			<view class="nav-bar-right-btn" slot="right" @click="toNext">跳过</view>
+		</nav-bar>
+		
+		<view class="content">
+			<view class="num-title">
+				<text class="current-num">5</text>
+				<text>/6</text>
+			</view>
+			
+			<view class="main-title">展示公司照片</view>
+			<view>在公司主页上展示亮眼的照片,体现企业氛围与文化魅力;最多上传20张</view>
+
+			<view class="content-index">
+				<!-- 多图上传区域 -->
+				<view class="upload-section">
+					<view class="images-grid">
+						<!-- 已上传的图片 -->
+						<view class="image-item" v-for="(image, index) in imageList" :key="index"
+							@click="previewImage(index)">
+							<image :src="image.url" mode="aspectFill" class="preview-image"></image>
+							<view class="image-mask">
+								<u-icon name="eye" color="#fff" size="30"></u-icon>
 							</view>
-
-							<!-- 添加图片按钮 -->
-							<view class="upload-box" v-if="imageList.length < maxCount" @click="chooseImage">
-								<view class="upload-placeholder">
-									<u-icon name="plus" color="#999" size="40"></u-icon>
-									<text class="upload-text">添加照片</text>
-								</view>
+							<view class="delete-btn" @click.stop="deleteImage(index)">
+								<u-icon name="close" color="#fff" size="20"></u-icon>
 							</view>
 						</view>
 
-						<!-- 上传计数 -->
-						<view class="upload-count" v-if="imageList.length > 0">
-							已上传 {{ imageList.length }}/{{ maxCount }} 张
-						</view>
-
-						<!-- 上传进度 -->
-						<view v-if="uploading" class="upload-progress">
-							<view class="progress-bar">
-								<view class="progress-inner" :style="{ width: uploadProgress + '%' }"></view>
+						<!-- 添加图片按钮 -->
+						<view class="upload-box" v-if="imageList.length < maxCount" @click="chooseImage">
+							<view class="upload-placeholder">
+								<u-icon name="plus" color="#999" size="36"></u-icon>
+								<text class="upload-text">添加照片</text>
 							</view>
-							<text class="progress-text">{{ uploadProgress }}%</text>
 						</view>
 					</view>
 
-					<!-- 注意事项 -->
-					<view class="warning-box">
-						<view class="warning-title">注意事项:</view>
-						<view class="warning-list">
-							<view class="warning-item">1. 请上传清晰且完整的图片</view>
-							<view class="warning-item">2.
-								请上传品牌相关的图片,含有其他内容将无法通过审核(包括但不限于含有水印、招聘信息、联系方式、二维码等相关内容)</view>
-							<view class="warning-item">3. 上传图片须符合中国相关法律法规,不得含有违法内容或不良信息</view>
+					<!-- 上传计数 -->
+					<view class="upload-count" v-if="imageList.length > 0">
+						已上传 {{ imageList.length }}/{{ maxCount }} 张
+					</view>
+
+					<!-- 上传进度 -->
+					<view v-if="uploading" class="upload-progress">
+						<view class="progress-bar">
+							<view class="progress-inner" :style="{ width: uploadProgress + '%' }"></view>
 						</view>
+						<text class="progress-text">{{ uploadProgress }}%</text>
+					</view>
+				</view>
+
+				<!-- 注意事项 -->
+				<view class="warning-box">
+					<view class="warning-item">注意事项:</view>
+					<view class="warning-item">
+						<text>1.</text>
+						<text>请上传清晰且完整的图片</text>
+					</view>
+					<view class="warning-item">
+						<text>2.</text>
+						<text>请上传品牌相关的图片,含有其他内容将无法通过审核(包括但不限于含有水印、招聘信息、联系方式、二维码等相关内容)</text>
+					</view>
+					<view class="warning-item">
+						<text>3.</text>
+						<text>上传图片须符合中国相关法律法规,不得含有违法内容或不良信息</text>
 					</view>
 				</view>
 			</view>
 		</view>
 
-		<view class="submit-btn" :class="{ disabled: imageList.length === 0 }" @click="goJobPostingSecond">下一步</view>
+		<view class="fixed-button">
+			<view class="button" @click="goJobPostingSecond">保存</view>
+		</view>
 		<!-- 权限说明弹窗 -->
 		<u-popup mode="top" ref="permission">
 			<view class="popup-content">
@@ -77,6 +88,8 @@
 	export default {
 		data() {
 			return {
+				loading: false,
+				companyId: '',
 				text: "",
 				imageList: [], // 上传的图片列表
 				maxCount: 20, // 最大上传数量
@@ -89,31 +102,39 @@
 			navBar,
 		},
 		onLoad(options) {
-			this.loadSavedPhotos();
+			this.getCompanyInfo()
 		},
 		methods: {
-			// 加载已保存的照片数据(从缓存)
-			loadSavedPhotos() {
-				try {
-					let companyInfo = uni.getStorageSync('companyInfo');
-					console.log('从缓存获取的公司信息:', companyInfo);
-
-					if (companyInfo?.photos) {
-						// 处理字符串并转换为对象数组
-						this.parsePhotoString(companyInfo.photos);
-						console.log('已加载保存的照片:', this.imageList);
-					} else {
-						console.log('缓存中没有照片数据');
-					}
-				} catch (error) {
-					console.error('加载照片数据失败:', error);
-				}
+			toNext() {
+				uni.redirectTo({
+					url: '/my/renzheng/peopleDev'
+				})
+			},
+			
+			// 获取公司信息
+			getCompanyInfo() {
+				uni.showLoading({ title: '加载中' })
+				this.$Request.get('/app/company/selectCompanyByUserId')
+					.then((res) => {
+						if (res.code != 0) {
+							uni.showToast({
+								title: res.msg || '查询状态失败',
+								icon: 'none'
+							});
+							return
+						}
+						this.companyId = res.data.companyId
+						this.parsePhotoString(res.data.photos);
+						uni.hideLoading()
+					})
+					.catch((err) => {
+						uni.hideLoading()
+						uni.showToast({
+							title: '网络异常',
+							icon: 'none'
+						})
+					})
 			},
-
-			// 加载companyData中的照片数据
-			// loadCompanyDataPhotos() {
-			// 	this.parsePhotoString(this.companyData.photos);
-			// },
 
 			// 解析照片字符串为对象数组
 			parsePhotoString(photoString) {
@@ -283,6 +304,7 @@
 
 			// 下一步
 			goJobPostingSecond() {
+				if (this.loading) return
 				if (this.imageList.length === 0) {
 					uni.showToast({
 						title: "请上传公司照片",
@@ -294,250 +316,164 @@
 				// 获取所有图片URL
 				const imageUrls = this.imageList.map(item => item.url);
 				
+				this.loading = true
+				uni.showLoading({ title: '保存中' })
 				let companyData = {
-					companyId: this.$queue.getData('companyId'),
+					companyId: this.companyId,
 					photos: imageUrls.join(',')
 				}
-				this.$Request.postJson('/app/company/updateCompany', companyData).then(res => {
-					if (res.code == 0) {
-						uni.showToast({
-							title: '提交成功',
-							duration: 1500,
-						});
-						setTimeout(() => {
-							uni.switchTab({
-								url: '/pages/my/index'
+				this.$Request.postJson('/app/company/updateCompany', companyData)
+					.then(res => {
+						if (res.code == 0) {
+							uni.showToast({
+								title: '提交成功',
+								duration: 1500,
 							});
-						}, 500)
-					}
-				})
-				// uni.navigateTo({
-				// 	url: "/my/renzheng/mainWorkIntro?companyData=" +
-				// 		encodeURIComponent(JSON.stringify(companyData)) +
-				// 		(this.isUpdateMode ? "&update=true" : "")
-				// });
+							setTimeout(() => {
+								uni.$emit('updateCompanyInfo')
+								uni.navigateBack()
+							}, 500)
+						}
+						this.loading = false
+						uni.hideLoading()
+					})
+					.catch(() => {
+						this.loading = false
+						uni.hideLoading()
+					})
 			},
 		},
 	};
 </script>
 
 <style lang="scss" scoped>
-	/* 样式保持不变 */
-	.switch-roles {
-		background-color: #fff;
-		position: absolute;
-		left: 0;
-		right: 0;
-		top: 0;
-		bottom: 0;
-		display: flex;
-		flex-direction: column;
-
-		.roles-content {
-			width: 100%;
-			flex: 1;
-			overflow: hidden;
-			overflow-y: auto;
-
-			.content {
-				padding: 40rpx;
-				box-sizing: border-box;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-
-				.progress-num {
-					color: #016bf6;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 500;
-					width: 100%;
-					padding-bottom: 20rpx;
-					box-sizing: border-box;
-
-					text {
-						font-size: 48rpx;
-						font-weight: 700;
+	@import './company.scss';
+	
+	.content-index {
+		margin-top: 20rpx;
+		width: 100%;
+	
+		.upload-section {
+			margin-bottom: 20rpx;
+	
+			.images-grid {
+				display: grid;
+				grid-template-columns: repeat(3, 1fr);
+				gap: 20rpx 110rpx;
+				margin-bottom: 20rpx;
+	
+				.image-item {
+					width: 142rpx;
+					height: 142rpx;
+					border-radius: 8rpx;
+					position: relative;
+					overflow: hidden;
+	
+					.preview-image {
+						width: 100%;
+						height: 100%;
+					}
+	
+					.image-mask {
+						position: absolute;
+						top: 0;
+						left: 0;
+						width: 100%;
+						height: 100%;
+						background: rgba(0, 0, 0, 0.3);
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						opacity: 0;
+						transition: opacity 0.3s;
+					}
+	
+					.delete-btn {
+						position: absolute;
+						top: 8rpx;
+						right: 8rpx;
+						width: 30rpx;
+						height: 30rpx;
+						background: rgba(0, 0, 0, 0.5);
+						border-radius: 50%;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					}
+	
+					&:active .image-mask {
+						opacity: 1;
 					}
 				}
-
-				.title {
-					color: #333;
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 48rpx;
-					font-weight: 700;
+	
+				.upload-box {
+					width: 142rpx;
+					height: 142rpx;
+					border-radius: 8rpx;
 					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					margin-bottom: 20rpx;
-				}
-
-				.desc {
-					color: rgba(102, 102, 102, 1);
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 400;
-					line-height: 32rpx;
-					letter-spacing: 0.5%;
-					text-align: left;
-					box-sizing: border-box;
-					margin-bottom: 40rpx;
-				}
-
-				.content-index {
-					width: 100%;
-
-					.upload-section {
-						margin-bottom: 20rpx;
-
-						.images-grid {
-							display: grid;
-							grid-template-columns: repeat(4, 1fr);
-							gap: 20rpx;
-							margin-bottom: 20rpx;
-
-							.image-item {
-								width: 142rpx;
-								height: 142rpx;
-								border-radius: 8rpx;
-								position: relative;
-								overflow: hidden;
-
-								.preview-image {
-									width: 100%;
-									height: 100%;
-								}
-
-								.image-mask {
-									position: absolute;
-									top: 0;
-									left: 0;
-									width: 100%;
-									height: 100%;
-									background: rgba(0, 0, 0, 0.3);
-									display: flex;
-									align-items: center;
-									justify-content: center;
-									opacity: 0;
-									transition: opacity 0.3s;
-								}
-
-								.delete-btn {
-									position: absolute;
-									top: 8rpx;
-									right: 8rpx;
-									width: 30rpx;
-									height: 30rpx;
-									background: rgba(0, 0, 0, 0.5);
-									border-radius: 50%;
-									display: flex;
-									align-items: center;
-									justify-content: center;
-								}
-
-								&:active .image-mask {
-									opacity: 1;
-								}
-							}
-
-							.upload-box {
-								width: 142rpx;
-								height: 142rpx;
-								border-radius: 8rpx;
-								display: flex;
-								align-items: center;
-								justify-content: center;
-								background: #eee;
-
-								.upload-placeholder {
-									display: flex;
-									flex-direction: column;
-									align-items: center;
-									justify-content: center;
-
-									.upload-text {
-										color: #666;
-										font-size: 20rpx;
-										margin-top: 8rpx;
-										font-family: DM Sans;
-									}
-								}
-							}
-						}
-
-						.upload-count {
+					justify-content: center;
+					background: #eee;
+	
+					.upload-placeholder {
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						padding-top: 56rpx;
+	
+						.upload-text {
 							color: #666;
-							font-size: 24rpx;
-							text-align: center;
-							margin-bottom: 20rpx;
-						}
-
-						.upload-progress {
-							display: flex;
-							align-items: center;
-							gap: 20rpx;
-
-							.progress-bar {
-								flex: 1;
-								height: 8rpx;
-								background: #f0f0f0;
-								border-radius: 4rpx;
-								overflow: hidden;
-
-								.progress-inner {
-									height: 100%;
-									background: #016bf6;
-									border-radius: 4rpx;
-									transition: width 0.3s;
-								}
-							}
-
-							.progress-text {
-								color: #016bf6;
-								font-size: 24rpx;
-								min-width: 80rpx;
-							}
-						}
-					}
-
-					.warning-box {
-						color: rgba(102, 102, 102, 1);
-						font-family: DM Sans;
-						font-size: 24rpx;
-						font-weight: 400;
-						line-height: 32rpx;
-
-						.warning-item {
+							font-size: 16rpx;
+							line-height: 1;
 							margin-top: 8rpx;
+							font-family: DM Sans;
 						}
 					}
 				}
 			}
+	
+			.upload-count {
+				color: #666;
+				font-size: 24rpx;
+				text-align: center;
+				margin-bottom: 20rpx;
+			}
+	
+			.upload-progress {
+				display: flex;
+				align-items: center;
+				gap: 20rpx;
+	
+				.progress-bar {
+					flex: 1;
+					height: 8rpx;
+					background: #f0f0f0;
+					border-radius: 4rpx;
+					overflow: hidden;
+	
+					.progress-inner {
+						height: 100%;
+						background: #016bf6;
+						border-radius: 4rpx;
+						transition: width 0.3s;
+					}
+				}
+	
+				.progress-text {
+					color: #016bf6;
+					font-size: 24rpx;
+					min-width: 80rpx;
+				}
+			}
 		}
-
-		.submit-btn {
-			flex-shrink: 0;
-			border-radius: 999px;
-			background: #ff6600;
-			color: rgba(255, 255, 255, 1);
-			font-family: DM Sans;
-			font-size: 32rpx;
-			font-weight: 400;
-			line-height: 48rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			padding: 24rpx 32rpx;
-			box-sizing: border-box;
-			margin: 30rpx 40rpx;
-			margin-top: 20rpx;
-
-			&.disabled {
-				background: #ccc;
-				color: #999;
+	
+		.warning-box {
+			.warning-item {
+				display: flex;
+				color: rgba(102, 102, 102, 1);
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 32rpx;
+				margin-bottom: 8rpx;
 			}
 		}
 	}

+ 385 - 0
my/renzheng/companyWelfare.vue

@@ -0,0 +1,385 @@
+<template>
+	<view class="page-container">
+		<nav-bar title="公司信息">
+			<view class="nav-bar-right-btn" slot="right" @click="toNext">跳过</view>
+		</nav-bar>
+		
+		<view class="content">
+			<view class="num-title">
+				<text class="current-num">2</text>
+				<text>/6</text>
+			</view>
+			
+			<view class="main-title">公司福利</view>
+			<view>选择公司提供的福利信息,以吸引更多求职者</view>
+
+			<view class="section">
+				<view class="title">工作时间</view>
+				<view class="input-wrapper">
+					<view class="input-content flex-1" @click="openSelectTimePopup(1)">
+						<text class="input-value" v-if="startWorkTime">{{ startWorkTime }}</text>
+						<text class="input-placeholder" v-else>请选择开始时间</text>
+					</view>
+					<view>至</view>
+					<view class="input-content flex-1" @click="openSelectTimePopup(2)">
+						<text class="input-value" v-if="endWorkTime">{{ endWorkTime }}</text>
+						<text class="input-placeholder" v-else>请选择结束时间</text>
+					</view>
+				</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">休息时间(可选)</view>
+				<view class="select-button-wrapper">
+					<view
+						class="select-button"
+						:class="{ 'select-active-button': setLightClassName(1, item) }"
+						v-for="(item, index) in companyRestTime"
+						:key="index"
+						@click="handleSelect(1, item)"
+					>{{ item }}</view>
+				</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">加班情况(可选)</view>
+				<view class="select-button-wrapper">
+					<view
+						class="select-button"
+						:class="{ 'select-active-button': setLightClassName(2, item) }"
+						v-for="(item, index) in companyOvertimeSituation"
+						:key="index"
+						@click="handleSelect(2, item)"
+					>{{ item }}</view>
+				</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">公司福利</view>
+				<view class="input-wrapper" @click="showWelfarePopup = true">
+					<view class="tags" v-if="companyWelfareTag.length">
+						<view class="tag" v-for="(item, index) in companyWelfareTag" :key="index">{{ item }}</view>
+					</view>
+					<view class="tags-placeholder" v-else>请选择公司福利</view>
+					<u-icon name="arrow-down" style="paddingLeft: 6px;"></u-icon>
+				</view>
+			</view>
+			
+			<!-- 时间组件 -->
+			<u-select
+				v-model="showTimeModal"
+				:default-value="defaultTime"
+				mode="mutil-column"
+				:list="timeList"
+				@confirm="confirmTime"
+			></u-select>
+			
+			<!-- 福利弹窗 -->
+			<u-popup v-model="showWelfarePopup" :mask-close-able="false" mode="top" border-radius="14">
+				<view class="welfare-popup">
+					<view class="tags-wrapper">
+						<view class="welfare-popup-title">公司福利标签</view>
+						<view class="welfare-tip">选择公司提供的福利信息,以吸引更多求职者</view>
+						
+						<view class="tags-box">
+							<view class="tag-item" v-for="(item, index) in companyWelfare" :key="index">
+								<view class="tag-title">{{ item.title }}</view>
+								<view class="tags">
+									<view
+										class="tag"
+										:class="{ 'active-tag': setWelfareClassName(tag) }"
+										v-for="tag in item.content"
+										:key="tag"
+										@click="handleChangeWelfare(tag)"
+									>{{ tag }}</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="buttons-wrapper">
+						<view class="button plain" @click="handleClear">清空</view>
+						<view class="button primary" @click="showWelfarePopup = false">确定</view>
+					</view>
+				</view>
+			</u-popup>
+		</view>
+		
+		<view class="fixed-button">
+			<view class="button" @click="handleSave">保存</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import navBar from '@/components/nav-bar/index.vue'
+	import { companyRestTime, companyOvertimeSituation, companyWelfare } from '@/constants/common.js'
+	export default {
+		components: {
+			navBar
+		},
+		data() {
+			return {
+				companyId: '',
+				startWorkTime: '',
+				endWorkTime: '',
+				restTime: '', // 休息情况
+				companyRestTime: companyRestTime,
+				overTime: '', // 加班情况
+				companyOvertimeSituation: companyOvertimeSituation,
+				companyWelfare: companyWelfare,
+				companyWelfareTag: [], // 公司福利
+				showTimeModal: false,
+				timeList: [],
+				timeType: 1, // 1开始时间,2结束时间
+				showWelfarePopup: false
+			};
+		},
+		computed: {
+			// 时间回显值
+			defaultTime() {
+				let currentTime = this.timeType == 1 ? this.startWorkTime : this.endWorkTime
+				if (!currentTime) {
+					return []
+				}
+				let hours = currentTime.split(':')[0]
+				let min = currentTime.split(':')[1]
+				let hoursIndex = 0
+				let minIndex = 0
+				if (this.timeList.length == 2) {
+					hoursIndex = this.timeList[0].findIndex(item => item.value == hours)
+					minIndex = this.timeList[1].findIndex(item => item.value == min)
+				}
+				return [hoursIndex < 0 ? 0 : hoursIndex, minIndex < 0 ? 0 : minIndex]
+			}
+		},
+		onLoad() {
+			this.initTimeList()
+			this.getCompanyInfo()
+		},
+		methods: {
+			// 初始化选择的时间列表
+			initTimeList() {
+				let hoursList = []
+				let minList = []
+				for (let i = 0; i < 60; i++) {
+					let value = i < 10 ? `0${i}` : `${i}`
+					if (i < 24) {
+						hoursList.push({
+							label: value,
+							value
+						})
+					}
+					minList.push({
+						label: value,
+						value
+					})
+				}
+				this.timeList = [hoursList, minList]
+			},
+			
+			// 跳转至下一步 
+			toNext() {
+				uni.redirectTo({
+					url: '/my/renzheng/editCompanyDesc'
+				})
+			},
+			
+			// 获取公司信息
+			getCompanyInfo() {
+				uni.showLoading({ title: '加载中' })
+				this.$Request.get('/app/company/selectCompanyByUserId')
+					.then((res) => {
+						if (res.code != 0) {
+							uni.showToast({
+								title: res.msg || '查询状态失败',
+								icon: 'none'
+							});
+							return
+						}
+						this.companyId = res.data.companyId
+						const workTimes = res.data.workTime?.split('-')
+						if (workTimes) {
+							this.startWorkTime = workTimes[0]
+							this.endWorkTime = workTimes[1]
+						}
+						this.restTime = res.data.workRestTime
+						this.overTime = res.data.workOverTime
+						if (res.data.welfare) {
+							this.companyWelfareTag = res.data.welfare.split(',')
+						}
+						uni.hideLoading()
+					})
+					.catch((err) => {
+						uni.hideLoading()
+						uni.showToast({
+							title: '网络异常',
+							icon: 'none'
+						})
+					})
+			},
+			
+			openSelectTimePopup(type) {
+				this.timeType = type
+				this.showTimeModal = true
+			},
+			
+			// 选择时间
+			confirmTime(e) {
+				let time = e.map(item => item.value).join(':')
+				this.timeType == 1 ? this.startWorkTime = time : this.endWorkTime = time
+			},
+			
+			// 设置高亮class
+			setLightClassName(type, value) {
+				return type == 1 ? this.restTime == value : this.overTime == value
+			},
+			
+			// 选择休息时间/加班情况
+			handleSelect(type, value) {
+				type == 1 ? this.restTime = value : this.overTime = value
+			},
+			
+			// 选择福利
+			handleChangeWelfare(value) {
+				const index = this.companyWelfareTag.findIndex(tag => tag == value)
+				index == -1 ? this.companyWelfareTag.push(value) : this.companyWelfareTag.splice(index, 1)
+			},
+			
+			setWelfareClassName(tag) {
+				return this.companyWelfareTag.includes(tag)
+			},
+			
+			// 清空福利
+			handleClear() {
+				this.companyWelfareTag = []
+				this.showWelfarePopup = false
+			},
+			
+			// 比较时间大小
+			compareTime(time1, time2) {
+				const [h1, m1] = time1.split(":").map(Number);
+				const [h2, m2] = time2.split(":").map(Number);
+			
+				if (h1 !== h2) {
+					return h1 - h2;
+				}
+				return m1 - m2;
+			},
+			
+			handleSave() {
+				if (this.loading) return
+				
+				// 验证时间选择
+				if (!this.startWorkTime || !this.endWorkTime) {
+					uni.showToast({
+						title: "请选择完整的工作时间",
+						icon: "none",
+					});
+					return;
+				}
+				
+				// 这里可以添加时间逻辑验证,比如结束时间不能早于开始时间
+				if (this.compareTime(this.startWorkTime, this.endWorkTime) >= 0) {
+					uni.showToast({
+						title: "结束时间必须晚于开始时间",
+						icon: "none",
+					});
+					return;
+				}
+				
+				uni.showLoading({ title: '保存中' })
+				this.loading = true
+				// 将选择的时间数据传递到下一页或保存
+				const companyData = {
+					companyId: this.companyId,
+					workTime: `${this.startWorkTime}-${this.endWorkTime}`,
+					workRestTime: this.restTime,
+					workOverTime: this.overTime,
+					welfare: this.companyWelfareTag.join(',')
+				};
+				
+				this.$Request.postJson('/app/company/updateCompany', companyData)
+					.then(res => {
+						if(res.code == 0){
+							uni.showToast({
+								title: '提交成功',
+								duration: 1500,
+							});
+							setTimeout(()=>{
+								uni.$emit('updateCompanyInfo')
+								uni.navigateBack()
+							}, 500)
+						}
+						this.loading = true
+						uni.hideLoading()
+					})
+					.catch(() => {
+						this.loading = true
+						uni.hideLoading()
+					})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import './company.scss';
+	
+	.welfare-popup {
+		padding-bottom: 36rpx;
+		
+		.tags-wrapper {
+			padding: 36rpx 64rpx 100rpx;
+			.welfare-popup-title {
+				color: rgba(31, 44, 55, 1);
+				font-size: 32rpx;
+				font-weight: 500;
+				line-height: 44rpx;
+				margin-bottom: 24rpx;
+			}
+			.welfare-tip {
+				color: rgba(158, 158, 158, 1);
+				font-size: 28rpx;
+				font-weight: 400;
+				line-height: 36rpx;
+				margin-bottom: 24rpx;
+			}
+			.tags-box {
+				.tag-item {
+					margin-bottom: 24rpx;
+					.tag-title {
+						color: rgba(31, 44, 55, 1);
+						font-size: 28rpx;
+						font-weight: 500;
+						line-height: 44rpx;
+						margin-bottom: 24rpx;
+					}
+				}
+			}
+		}
+		
+		.buttons-wrapper {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 16rpx 40rpx;
+			gap: 16rpx;
+			.button {
+				flex: 1;
+				height: 80rpx;
+				text-align: center;
+				line-height: 80rpx;
+				border-radius: 80rpx;
+				font-size: 32rpx;
+				&.plain {
+					color: rgba(1, 107, 246, 1);
+					background: rgba(1, 107, 246, 0.1);
+				}
+				&.primary {
+					color: #fff;
+					background: linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1));
+				}
+			}
+		}
+	}
+</style>

+ 45 - 30
my/renzheng/editCompany.vue

@@ -1,6 +1,6 @@
 <template>
   <view class="ms-detail">
-    <nav-bar title="编辑公司信息" color="#000"></nav-bar>
+    <nav-bar title="编辑公司信息"></nav-bar>
     <view class="ms-content">
       <view class="ms-title">编辑公司及品牌信息</view>
       <view class="ms-item">
@@ -11,12 +11,12 @@
             <image src="@/static/images/my/my/right.svg" mode="scaleToFill" class="right" v-else />
           </view>
         </view>
-        <view class="ms-item-content" v-if="baseMsg">
-          <view class="name-content-item" @click="goCompanyMsg(1)">
+        <view class="ms-item-content" v-if="baseMsg" @click="goCompanyMsg(1)">
+          <view class="name-content-item">
             <view class="name-item">品牌logo</view>
             <view class="value-item">
               <text v-if="!companyinfo.companyLogo">未添加</text>
-              <image :src="companyinfo.companyLogo" mode="scaleToFill" v-else />
+              <image :src="companyinfo.companyLogo" mode="aspectFill" v-else />
               <u-icon name="arrow-right" color="#999" size="20"></u-icon>
             </view>
           </view>
@@ -36,7 +36,7 @@
               <u-icon name="arrow-right" color="#999" size="20"></u-icon>
             </view>
           </view>
-          <view class="name-content-item" @click="goCompanyMsg(2)">
+          <view class="name-content-item">
             <view class="name-item">融资阶段</view>
             <view class="value-item">
               <text v-if="!companyinfo.companyDevelop">未添加</text>
@@ -62,8 +62,8 @@
             <image src="@/static/images/my/my/right.svg" mode="scaleToFill" class="right" v-else />
           </view>
         </view>
-        <view class="ms-item-content" v-if="companyFund">
-          <view class="name-content-item" @click="goCompanyMsg(3)">
+        <view class="ms-item-content" v-if="companyFund" @click="goCompanyMsg(2)">
+          <view class="name-content-item">
             <view class="name-item">标准工作时间</view>
             <view class="value-item">
               <text v-if="!companyinfo.workTime">未添加</text>
@@ -71,7 +71,7 @@
               <u-icon name="arrow-right" color="#999" size="20"></u-icon>
             </view>
           </view>
-          <view class="name-content-item" @click="goCompanyMsg(4)">
+          <view class="name-content-item">
             <view class="name-item">福利待遇</view>
             <view class="value-item">
               <text v-if="!companyinfo.welfare">未添加</text>
@@ -81,8 +81,8 @@
           </view>
         </view>
       </view>
-      <view class="ms-item">
-        <view class="ms-item-title" @click="goCompanyMsg(5)">
+      <view class="ms-item" @click="goCompanyMsg(3)">
+        <view class="ms-item-title">
           <view class="ms-title-txt">公司介绍</view>
           <view class="ms-title-icon">
             <text v-if="!companyinfo.companyContent">未添加</text>
@@ -91,7 +91,7 @@
         </view>
       </view>
       <view class="ms-item">
-        <view class="ms-item-title" @click="goCompanyMsg(6)">
+        <view class="ms-item-title" @click="goCompanyMsg(4)">
           <view class="ms-title-txt">主营业务</view>
           <view class="ms-title-icon">
             <text v-if="!companyinfo.companyScope">未添加</text>
@@ -100,7 +100,7 @@
         </view>
       </view>
       <view class="ms-item">
-        <view class="ms-item-title" @click="goCompanyMsg(7)">
+        <view class="ms-item-title" @click="goCompanyMsg(5)">
           <view class="ms-title-txt">公司相册</view>
           <view class="ms-title-icon">
             <text v-if="!companyinfo.photos">未添加</text>
@@ -109,7 +109,7 @@
         </view>
       </view>
       <view class="ms-item">
-        <view class="ms-item-title" @click="goCompanyMsg(8)">
+        <view class="ms-item-title" @click="goCompanyMsg(6)">
           <view class="ms-title-txt">人才发展</view>
           <view class="ms-title-icon">
             <text v-if="!companyinfo.companyPeopleDevelop">未添加</text>
@@ -141,6 +141,11 @@ export default {
   },
   onLoad() {
     this.getcompanystatus()
+	
+	uni.$on('updateCompanyInfo', this.getcompanystatus)
+  },
+  onUnload() {
+	  uni.$off('updateCompanyInfo', this.getcompanystatus)
   },
   computed: {
     filledInCount() {
@@ -184,14 +189,20 @@ export default {
       }
 	 
 	  const pageMap = {
-	    1: '/my/renzheng/companyLogo',      // 品牌logo
-	    2: '/my/renzheng/companyDev',       // 融资阶段
-	    3: '/my/renzheng/companyMsg',       // 标准工作时间
-	    4: '/my/renzheng/companyFund',      // 福利待遇
-	    5: '/my/renzheng/editCompanyDesc',  // 公司介绍
-	    6: '/my/renzheng/mainWorkIntro',    // 主营业务
-	    7: '/my/renzheng/companyImg',       // 公司相册
-	    8: '/my/renzheng/peopleDev'         // 人才发展
+	    // 1: '/my/renzheng/companyLogo',      // 品牌logo
+	    // 2: '/my/renzheng/companyDev',       // 融资阶段
+	    // 3: '/my/renzheng/companyMsg',       // 标准工作时间
+	    // 4: '/my/renzheng/companyFund',      // 福利待遇
+	    // 5: '/my/renzheng/editCompanyDesc',  // 公司介绍
+	    // 6: '/my/renzheng/mainWorkIntro',    // 主营业务
+	    // 7: '/my/renzheng/companyImg',       // 公司相册
+	    // 8: '/my/renzheng/peopleDev'         // 人才发展
+		1: '/my/renzheng/companyBaseInfo', // 公司基本信息
+		2: '/my/renzheng/companyWelfare', // 公司福利
+		3: '/my/renzheng/editCompanyDesc', // 公司介绍
+		4: '/my/renzheng/mainWorkIntro', // 公司业务
+		5: '/my/renzheng/companyImg', // 公司照片
+		6: '/my/renzheng/peopleDev', // 人才发展
 	  }
 	  const url = pageMap[type]
 	  uni.navigateTo({ url })
@@ -237,7 +248,7 @@ export default {
   .ms-content {
     flex: 1;
     width: 100%;
-    padding: 40rpx;
+    padding: 36rpx 40rpx;
     box-sizing: border-box;
     overflow: hidden;
     overflow-y: auto;
@@ -245,27 +256,24 @@ export default {
     .ms-title {
       color: rgba(51, 51, 51, 1);
       font-family: DM Sans;
-      font-size: 48rpx;
+      font-size: 36rpx;
       font-weight: 700;
       line-height: 60rpx;
-	  margin-bottom: 50rpx;
+	  margin-bottom: 20rpx;
     }
 
     .ms-item {
-		margin-bottom: 35rpx;
+		margin-bottom: 20rpx;
       .ms-item-title {
         color: rgba(31, 44, 55, 1);
         font-family: DM Sans;
-        font-size: 32rpx;
+        font-size: 28rpx;
         font-weight: 500;
         line-height: 44rpx;
         text-align: left;
         display: flex;
         justify-content: space-between;
         align-items: center;
-        
-
-        .ms-title-txt {}
 
         .ms-title-icon {
           color: rgba(153, 153, 153, 1);
@@ -273,6 +281,7 @@ export default {
           font-size: 24rpx;
           font-weight: 400;
           line-height: 32rpx;
+		      margin-right: 36rpx;
 
           .top {
             width: 28rpx;
@@ -294,13 +303,19 @@ export default {
         border-radius: 12rpx;
         background: rgba(255, 255, 255, 1);
         padding: 36rpx;
+		margin-top: 16rpx;
 
         .name-content-item {
           display: flex;
           justify-content: space-between;
           align-items: center;
-          padding: 9rpx 0;
           box-sizing: border-box;
+		  margin-bottom: 12rpx;
+		  padding: 9rpx 0;
+		  
+		  &:last-child {
+			  margin-bottom: 0;
+		  }
 
           .name-item {
             color: rgba(153, 153, 153, 1);

+ 124 - 154
my/renzheng/editCompanyDesc.vue

@@ -1,27 +1,32 @@
 <template>
-	<view class="switch-roles">
-		<nav-bar title="公司信息" color="#000"></nav-bar>
-		<view class="roles-content">
-			<view class="content">
-				<view class="progress-num"> <text>5</text>/8 </view>
-				<view class="title">
-					<view>编辑公司简介</view>
-				</view>
-				<view class="desc"> 可以简单介绍一下公司发展状况、服务领域、主要产品等信息</view>
-				<view class="small-desc">一句短介绍</view>
-				<view class="content-index">
-					<view class="check-box">
-						<textarea v-model="text" placeholder="填写公司介绍(最少10个字)" maxlength="500"
-							class="textarea"></textarea>
-						<view class="word-count">
-							<text>{{ text ? text.length : 0 }}</text> /500
-						</view>
+	<view class="page-container">
+		<nav-bar title="公司信息">
+			<view class="nav-bar-right-btn" slot="right" @click="toNext">跳过</view>
+		</nav-bar>
+		
+		<view class="content">
+			<view class="num-title">
+				<text class="current-num">3</text>
+				<text>/6</text>
+			</view>
+			
+			<view class="main-title">编辑公司简介</view>
+			<view>可以简单介绍一下公司发展状况、服务领域、主要产品等信息</view>
+			<view class="small-desc">一句短介绍</view>
+			<view class="content-index">
+				<view class="check-box">
+					<textarea v-model="text" placeholder="填写公司介绍(最少10个字)" maxlength="500"
+						class="textarea"></textarea>
+					<view class="word-count">
+						<text>{{ text ? text.length : 0 }}</text> /500
 					</view>
 				</view>
 			</view>
 		</view>
 
-		<view class="submit-btn" @click="goJobPostingSecond">下一步</view>
+		<view class="fixed-button">
+			<view class="button" @click="goJobPostingSecond">保存</view>
+		</view>
 	</view>
 </template>
 
@@ -30,7 +35,9 @@
 	export default {
 		data() {
 			return {
-				text: "",
+				companyId: '',
+				loading: false,
+				text: '',
 			};
 		},
 		components: {
@@ -39,12 +46,40 @@
 		onLoad(options) {
 			let companyInfo = uni.getStorageSync('companyInfo');
 			this.text = companyInfo.companyContent
-			// if (options.companyData) {
-			// 	this.companyData = JSON.parse(options.companyData);
-			// }
+			this.getCompanyInfo()
 		},
 		methods: {
+			toNext() {
+				uni.redirectTo({
+					url: '/my/renzheng/mainWorkIntro'
+				})
+			},
+			// 获取公司信息
+			getCompanyInfo() {
+				uni.showLoading({ title: '加载中' })
+				this.$Request.get('/app/company/selectCompanyByUserId')
+					.then((res) => {
+						if (res.code != 0) {
+							uni.showToast({
+								title: res.msg || '查询状态失败',
+								icon: 'none'
+							});
+							return
+						}
+						this.companyId = res.data.companyId
+						this.text = res.data.companyContent || ''
+						uni.hideLoading()
+					})
+					.catch((err) => {
+						uni.hideLoading()
+						uni.showToast({
+							title: '网络异常',
+							icon: 'none'
+						})
+					})
+			},
 			goJobPostingSecond() {
+				if (this.loading) return
 				if (this.text === '') {
 					uni.showToast({
 						title: "请填写公司介绍",
@@ -59,154 +94,89 @@
 					});
 					return;
 				}
-				// companyData.companyContent = this.text
 				
+				this.loading = true
+				uni.showLoading({ title: '保存中' })
 				let companyData = {
-					companyId: this.$queue.getData('companyId'),
+					companyId: this.companyId,
 					companyContent: this.text
 				}
-				this.$Request.postJson('/app/company/updateCompany', companyData).then(res => {
-					if (res.code == 0) {
-						uni.showToast({
-							title: '提交成功',
-							duration: 1500,
-						});
-						setTimeout(() => {
-							uni.switchTab({
-								url: '/pages/my/index'
+				this.$Request.postJson('/app/company/updateCompany', companyData)
+					.then(res => {
+						if (res.code == 0) {
+							uni.showToast({
+								title: '提交成功',
+								duration: 1500,
 							});
-						}, 500)
-					}
-				})
-				// uni.navigateTo({
-				// 	url: `/my/renzheng/companyLogo?companyData=${encodeURIComponent(JSON.stringify(companyData))}&update=${true}`
-				// })
+							setTimeout(() => {
+								uni.$emit('updateCompanyInfo')
+								uni.navigateBack()
+							}, 500)
+						}
+						this.loading = false
+						uni.hideLoading()
+					})
+					.catch(() => {
+						this.loading = false
+						uni.hideLoading()
+					})
 			}
 		},
 	};
 </script>
 
 <style lang="scss" scoped>
-	.switch-roles {
-		background-color: #fff;
-		position: absolute;
-		left: 0;
-		right: 0;
-		top: 0;
-		bottom: 0;
-		display: flex;
-		flex-direction: column;
-
-		.check-box {
-			width: 100%;
-			border-radius: 12rpx;
-			background: rgba(240, 240, 240, 1);
-			padding: 34rpx;
-			padding-top: 40rpx;
-			box-sizing: border-box;
-			margin: 20rpx 0;
-
-			.word-count {
-				font-family: DM Sans;
-				font-size: 20rpx;
-				font-weight: 400;
-				line-height: 26rpx;
-				text-align: right;
-
-				text {
-					color: #016bf6;
-				}
-			}
-		}
-
-		.roles-content {
-			width: 100%;
-			flex: 1;
-			overflow: hidden;
-			overflow-y: auto;
-
-			.content {
-				padding: 40rpx;
-				box-sizing: border-box;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-
-				.progress-num {
-					color: #016bf6;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 500;
-					width: 100%;
-					padding-bottom: 20rpx;
-					box-sizing: border-box;
-
-					text {
-						font-size: 48rpx;
-						font-weight: 700;
-					}
-				}
-
-				.title {
-					color: #333;
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 48rpx;
-					font-weight: 700;
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					margin-bottom: 20rpx;
-				}
-
-				.desc {
-					color: rgba(102, 102, 102, 1);
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 400;
-					line-height: 32rpx;
-					letter-spacing: 0.5%;
-					text-align: left;
-					box-sizing: border-box;
-					margin-bottom: 20rpx;
-				}
-
-				.small-desc {
-					color: rgba(34, 37, 42, 1);
-					font-family: DM Sans;
-					font-size: 32rpx;
-					font-weight: 400;
-					line-height: 48rpx;
-					width: 100%;
-				}
+	@import './company.scss';
+	
+	.check-box {
+		width: 100%;
+		border-radius: 12rpx;
+		background: rgba(240, 240, 240, 1);
+		padding: 34rpx;
+		padding-top: 40rpx;
+		box-sizing: border-box;
+		margin: 20rpx 0;
+
+		.word-count {
+			font-family: DM Sans;
+			font-size: 20rpx;
+			font-weight: 400;
+			line-height: 26rpx;
+			text-align: right;
 
-				.content-index {
-					width: 100%;
-				}
+			text {
+				color: #016bf6;
 			}
 		}
+	}
+	
+	.desc {
+		color: rgba(102, 102, 102, 1);
+		width: 100%;
+		font-family: DM Sans;
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+		letter-spacing: 0.5%;
+		text-align: left;
+		box-sizing: border-box;
+		margin-bottom: 20rpx;
+	}
 
-		.submit-btn {
-			flex-shrink: 0;
-			border-radius: 999px;
-			background: #ff6600;
-			color: rgba(255, 255, 255, 1);
-			font-family: DM Sans;
-			font-size: 32rpx;
-			font-weight: 400;
-			line-height: 48rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			padding: 24rpx 32rpx;
-			box-sizing: border-box;
-			margin: 30rpx 40rpx;
-			margin-top: 20rpx;
-		}
+	.small-desc {
+		color: rgba(34, 37, 42, 1);
+		font-family: DM Sans;
+		font-size: 32rpx;
+		font-weight: 400;
+		line-height: 48rpx;
+		width: 100%;
+		margin: 20rpx 0 12rpx; 
 	}
 
+	.content-index {
+		width: 100%;
+	}
+	
 	::v-deep .textarea-placeholder {
 		color: rgba(153, 153, 153, 1);
 		font-family: DM Sans;
@@ -214,7 +184,7 @@
 		font-weight: 400;
 		line-height: 26rpx;
 	}
-
+	
 	::v-deep .uni-textarea-textarea {
 		font-size: 20rpx;
 	}

+ 113 - 272
my/renzheng/mainWorkIntro.vue

@@ -1,65 +1,70 @@
 <template>
-	<view class="switch-roles">
-		<nav-bar title="公司信息" color="#000"></nav-bar>
-		<view class="roles-content">
-			<view class="content">
-				<view class="progress-num"> <text>8</text>/8 </view>
-				<view class="title">
-					<view>主营业务介绍</view>
-				</view>
-				<view class="desc">
-					介绍公司主营业务及旗下的产品信息,可有效提升求职者对公司及品牌的认知
+	<view class="page-container">
+		<nav-bar title="公司信息">
+			<view class="nav-bar-right-btn" slot="right" @click="toNext">跳过</view>
+		</nav-bar>
+		
+		<view class="content">
+			<view class="num-title">
+				<text class="current-num">4</text>
+				<text>/6</text>
+			</view>
+			
+			<view class="main-title">主营业务介绍</view>
+			<view>介绍公司主营业务及旗下的产品信息,可有效提升求职者对公司及品牌的认知</view>
+			
+			<view class="section">
+				<view class="title">主营产品</view>
+				<view class="tags">
+					<view
+						class="tag"
+						:class="{ 'active-tag': selectedProducts.includes(item) }"
+						v-for="(item, index) in productList"
+						:key="index"
+						@click="toggleProduct(item)"
+					>{{ item }}</view>
 				</view>
-				<view class="content-index">
-					<view class="content-item">
-						<view class="content-item-title">主营产品</view>
-						<view class="check-box">
-							<view class="check-item" :class="{ 'check-active': selectedProducts.includes(item) }"
-								v-for="(item, index) in productList" :key="index" @click="toggleProduct(item)">
-								{{ item }}</view>
-						</view>
-					</view>
-					<view class="content-item">
-						<view class="content-item-title">自定义</view>
-						<!-- 自定义标签显示区域 -->
-						<view class="custom-tags-box">
-							<view class="check-item custom-tag"
-								:class="{ 'check-active': selectedCustomTags.includes(tag) }"
-								v-for="(tag, index) in customTags" :key="'custom-' + index"
-								@click="toggleCustomTag(tag)">
-								{{ tag }}
-								<text class="delete-tag" @click.stop="deleteCustomTag(index)">×</text>
-							</view>
-							<!-- 添加按钮 -->
-							<view class="add-tag-btn" @click="showAddDialog">
-								<text class="add-text">添加</text>
-								<image class="add-icon" src="@/static/images/my/my/add.svg" mode="aspectFix" />
-							</view>
-						</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">自定义</view>
+				<view class="tags">
+					<view
+						class="tag"
+						:class="{ 'active-tag': selectedCustomTags.includes(tag) }"
+						v-for="(tag, index) in customTags"
+						:key="'custom-' + index"
+						@click="toggleCustomTag(tag)"
+					>{{ tag }}<text class="delete-tag" @click.stop="deleteCustomTag(index)">×</text></view>
+					<view class="tag custom-tag" @click="showAddDialog">
+						添加<image class="add-icon" src="@/static/images/my/my/add.svg" mode="aspectFix" />
 					</view>
 				</view>
 			</view>
 		</view>
 
-		<view class="submit-btn" @click="goJobPostingSecond">下一步</view>
+		<view class="fixed-button">
+			<view class="button" @click="goJobPostingSecond">保存</view>
+		</view>
 
 		<!-- 添加标签弹框 -->
-		<u-modal v-model="showDialog" :show-cancel-button="true" confirm-text="确定" cancel-text="取消" title="添加标签"
-			@confirm="confirmAddTag" @cancel="cancelAddTag">
+		<c-modal :value="showDialog" title="添加标签" @confirm="confirmAddTag" @cancel="cancelAddTag">
 			<view class="dialog-content">
 				<u-input v-model="tempTag" type="text" :border="true" :clearable="true" input-align="left"
-					placeholder="请输入标签内容" maxlength="20" @confirm="confirmAddTag" />
-				<view class="input-tips">最多输入20个字符</view>
+					placeholder="请输入标签内容, 最多输入20个字符" maxlength="20" @confirm="confirmAddTag" />
 			</view>
-		</u-modal>
+		</c-modal>
 	</view>
 </template>
 
 <script>
 	import navBar from "@/components/nav-bar/index.vue";
+	import cModal from '@/components/c-modal.vue'
 	export default {
 		data() {
 			return {
+				loading: false,
+				companyId: '',
 				// 主营产品列表
 				productList: [
 					"3C数码",
@@ -86,26 +91,41 @@
 		},
 		components: {
 			navBar,
+			cModal
 		},
 		onLoad(options) {
-			this.loadSavedCompanyScope();
+			this.getCompanyInfo()
 		},
 		methods: {
-			// 加载已保存的业务范围数据(从缓存)
-			loadSavedCompanyScope() {
-				try {
-					let companyInfo = uni.getStorageSync('companyInfo');
-					console.log('从缓存获取的公司信息:', companyInfo);
-
-					if (companyInfo?.companyScope) {
-						this.processCompanyScope(companyInfo.companyScope);
-						console.log('已加载保存的业务范围数据');
-					} else {
-						console.log('缓存中没有业务范围数据');
-					}
-				} catch (error) {
-					console.error('加载业务范围数据失败:', error);
-				}
+			toNext() {
+				uni.redirectTo({
+					url: '/my/renzheng/companyImg'
+				})
+			},
+			
+			// 获取公司信息
+			getCompanyInfo() {
+				uni.showLoading({ title: '加载中' })
+				this.$Request.get('/app/company/selectCompanyByUserId')
+					.then((res) => {
+						if (res.code != 0) {
+							uni.showToast({
+								title: res.msg || '查询状态失败',
+								icon: 'none'
+							});
+							return
+						}
+						this.companyId = res.data.companyId
+						this.processCompanyScope(res.data.companyScope);
+						uni.hideLoading()
+					})
+					.catch((err) => {
+						uni.hideLoading()
+						uni.showToast({
+							title: '网络异常',
+							icon: 'none'
+						})
+					})
 			},
 
 			// 处理业务范围数据
@@ -218,6 +238,7 @@
 			},
 
 			goJobPostingSecond() {
+				if (this.loading) return
 				// 获取所有选中的标签
 				const allSelectedTags = [...this.selectedProducts, ...this.selectedCustomTags];
 
@@ -231,231 +252,51 @@
 
 				console.log("选中的业务标签:", allSelectedTags);
 
+				this.loading = true
+				uni.showLoading({ title: '保存中' })
 				let companyData = {
-					companyId: this.$queue.getData('companyId'),
+					companyId: this.companyId,
 					companyScope: allSelectedTags.join(',')
 				}
-				this.$Request.postJson('/app/company/updateCompany', companyData).then(res => {
-					if (res.code == 0) {
-						uni.showToast({
-							title: '提交成功',
-							duration: 1500,
-						});
-						setTimeout(() => {
-							uni.switchTab({
-								url: '/pages/my/index'
+				this.$Request.postJson('/app/company/updateCompany', companyData)
+					.then(res => {
+						if (res.code == 0) {
+							uni.showToast({
+								title: '提交成功',
+								duration: 1500,
 							});
-						}, 500)
-					}
-				})
+							setTimeout(() => {
+								uni.$emit('updateCompanyInfo')
+								uni.navigateBack()
+							}, 500)
+						}
+						this.loading = false
+						uni.hideLoading()
+					})
+					.catch(() => {
+						this.loading = false
+						uni.hideLoading()
+					})
 			},
 		},
 	};
 </script>
 
 <style lang="scss" scoped>
-	.switch-roles {
-		background-color: #fff;
-		position: absolute;
-		left: 0;
-		right: 0;
-		top: 0;
-		bottom: 0;
-		display: flex;
-		flex-direction: column;
-
-		.roles-content {
-			width: 100%;
-			flex: 1;
-			overflow: hidden;
-			overflow-y: auto;
-
-			.content {
-				padding: 40rpx;
-				box-sizing: border-box;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-
-				.progress-num {
-					color: #016bf6;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 500;
-					width: 100%;
-					padding-bottom: 20rpx;
-					box-sizing: border-box;
-
-					text {
-						font-size: 48rpx;
-						font-weight: 700;
-					}
-				}
-
-				.title {
-					color: #333;
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 48rpx;
-					font-weight: 700;
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					margin-bottom: 20rpx;
-				}
-
-				.desc {
-					color: rgba(102, 102, 102, 1);
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 400;
-					line-height: 32rpx;
-					letter-spacing: 0.5%;
-					text-align: left;
-					padding: 20rpx 0;
-					box-sizing: border-box;
-					margin-bottom: 20rpx;
-				}
-
-				.content-index {
-					width: 100%;
-
-					.content-item {
-						margin-bottom: 40rpx;
-
-						.content-item-title {
-							color: rgba(34, 37, 42, 1);
-							font-family: DM Sans;
-							font-size: 32rpx;
-							font-weight: 400;
-							line-height: 48rpx;
-							padding-bottom: 12rpx;
-							box-sizing: border-box;
-						}
-
-						.check-box {
-							display: flex;
-							gap: 12rpx;
-							flex-wrap: wrap;
-							align-items: center;
-						}
-
-						// 自定义标签区域
-						.custom-tags-box {
-							display: flex;
-							gap: 12rpx;
-							flex-wrap: wrap;
-							align-items: center;
-
-							.custom-tag {
-								position: relative;
-								padding-right: 30rpx;
-
-								.delete-tag {
-									position: absolute;
-									right: 8rpx;
-									top: 50%;
-									transform: translateY(-50%);
-									font-size: 18rpx;
-									color: #999;
-									width: 20rpx;
-									height: 20rpx;
-									display: flex;
-									align-items: center;
-									justify-content: center;
-								}
-							}
-
-							.add-tag-btn {
-								flex-shrink: 0;
-								padding: 8rpx 16rpx;
-								border-radius: 8rpx;
-								background: #9999991a;
-								border: 1rpx solid #9999991a;
-								box-sizing: border-box;
-								color: rgba(102, 102, 102, 1);
-								font-family: DM Sans;
-								font-size: 16rpx;
-								font-weight: 400;
-								display: flex;
-								align-items: center;
-								gap: 4rpx;
-
-								.add-text {
-									color: #016bf6;
-								}
-
-								.add-icon {
-									width: 16rpx;
-									height: 16rpx;
-								}
-							}
-						}
-					}
-				}
-
-				.check-item {
-					flex-shrink: 0;
-					padding: 8rpx 16rpx;
-					border-radius: 8rpx;
-					background: #9999991a;
-					border: 1rpx solid #9999991a;
-					box-sizing: border-box;
-					color: rgba(102, 102, 102, 1);
-					font-family: DM Sans;
-					font-size: 16rpx;
-					font-weight: 400;
-				}
-
-				.check-active {
-					box-sizing: border-box;
-					border: 1rpx solid #016bf6;
-					border-radius: 8rpx;
-					background: rgba(252, 233, 220, 1);
-					color: #016bf6;
-				}
-			}
-		}
-
-		.submit-btn {
-			flex-shrink: 0;
-			border-radius: 999px;
-			background: #ff6600;
-			color: rgba(255, 255, 255, 1);
-			font-family: DM Sans;
-			font-size: 32rpx;
-			font-weight: 400;
-			line-height: 48rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			padding: 24rpx 32rpx;
-			box-sizing: border-box;
-			margin: 30rpx 40rpx;
-			margin-top: 20rpx;
-		}
+	@import './company.scss';
+	
+	.delete-tag {
+		margin-left: 6rpx;
 	}
-
-	// 弹框内容样式
-	.dialog-content {
-		padding: 40rpx;
-		box-sizing: border-box;
-
-		.input-tips {
-			color: #999;
-			font-size: 24rpx;
-			text-align: right;
-			margin-top: 10rpx;
-		}
+	.add-icon {
+		width: 16rpx;
+		height: 16rpx;
+		margin-left: 8rpx;
 	}
-
-	// 输入框placeholder样式
-	.input-placeholder {
-		color: rgba(153, 153, 153, 1);
-		font-family: DM Sans;
-		font-size: 16rpx;
-		font-weight: 400;
+	.custom-tag {
+		color: rgba(1, 107, 246, 1) !important;
+	}
+	.dialog-content {
+		padding-top: 20rpx;
 	}
 </style>

+ 138 - 263
my/renzheng/peopleDev.vue

@@ -1,43 +1,59 @@
 <template>
-	<view class="switch-roles">
-		<nav-bar title="公司信息" color="#000"></nav-bar>
-		<view class="roles-content">
-			<view class="content">
-				<view class="progress-num"> <text>4</text>/8 </view>
-				<view class="title">
-					<view>人才发展</view>
+	<view class="page-container">
+		<nav-bar title="公司信息"></nav-bar>
+
+		<view class="content">
+			<view class="num-title">
+				<text class="current-num">6</text>
+				<text>/6</text>
+			</view>
+			
+			<view class="main-title">人才发展</view>
+			<view>介绍公司可提供的员工培养&晋升制度,良好的职业成长空间对人才更有吸引力</view>
+			
+			<view class="section">
+				<view class="title">晋升制度</view>
+				<view class="tags">
+					<view
+						class="tag"
+						:class="{ 'active-tag': selectedUp.includes(index) }"
+						v-for="(item, index) in upList"
+						:key="index"
+						@click="checkUp(index)"
+					>{{ item }}</view>
+				</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">人才激励</view>
+				<view class="tags">
+					<view
+						class="tag"
+						:class="{ 'active-tag': selectedPeople.includes(index) }"
+						v-for="(item, index) in peopleList"
+						:key="index"
+						@click="checkPeople(index)"
+					>{{ item }}</view>
 				</view>
-				<view class="desc">
-					介绍公司可提供的员工培养&晋升制度,良好的职业成长空间对人才更有吸引力</view>
-				<view class="content-index">
-					<view class="content-item">
-						<view class="content-item-title">晋升制度</view>
-						<view class="check-box">
-							<view class="check-item" :class="{ 'check-active': selectedUp.includes(index) }"
-								v-for="(item, index) in upList" :key="index" @click="checkUp(index)">{{ item }}</view>
-						</view>
-					</view>
-					<view class="content-item">
-						<view class="content-item-title">人才激励</view>
-						<view class="check-box">
-							<view class="check-item" :class="{ 'check-active': selectedPeople.includes(index) }"
-								v-for="(item, index) in peopleList" :key="index" @click="checkPeople(index)">{{ item }}
-							</view>
-						</view>
-					</view>
-					<view class="content-item">
-						<view class="content-item-title">能力培养</view>
-						<view class="check-box">
-							<view class="check-item" :class="{ 'check-active': selectedPower.includes(index) }"
-								v-for="(item, index) in powerList" :key="index" @click="checkPower(index)">{{ item }}
-							</view>
-						</view>
-					</view>
+			</view>
+			
+			<view class="section">
+				<view class="title">能力培养</view>
+				<view class="tags">
+					<view
+						class="tag"
+						:class="{ 'active-tag': selectedPower.includes(index) }"
+						v-for="(item, index) in powerList"
+						:key="index"
+						@click="checkPower(index)"
+					>{{ item }}</view>
 				</view>
 			</view>
 		</view>
 
-		<view class="submit-btn" @click="goJobPostingSecond">下一步</view>
+		<view class="fixed-button">
+			<view class="button" @click="goJobPostingSecond">保存</view>
+		</view>
 	</view>
 </template>
 
@@ -46,6 +62,8 @@
 	export default {
 		data() {
 			return {
+				companyId: '',
+				loading: false,
 				upList: ["考核晋升", "定期晋升", "完善的晋升机制"],
 				selectedUp: [], // 改为数组存储多个选择
 
@@ -85,61 +103,71 @@
 			navBar,
 		},
 		onLoad(options) {
-			this.loadSavedPeopleDevelop();
-
-			// if (options.companyData) {
-			// 	this.companyData = JSON.parse(options.companyData);
-			// 	// 如果之前有保存的数据,恢复选择状态
-			// 	this.restoreSelections();
-			// }
+			this.getCompanyInfo()
 		},
 		methods: {
-			// 加载已保存的人才发展数据(从缓存)
-			loadSavedPeopleDevelop() {
-				try {
-					let companyInfo = uni.getStorageSync('companyInfo');
-
-					if (companyInfo?.companyPeopleDevelop) {
-						// 处理字符串并分割为数组
-						const savedPeopleDevelop = companyInfo.companyPeopleDevelop
-							.replace(/,/g, ',') // 替换中文逗号
-							.split(',') // 分割
-							.map(item => item.trim()) // 去除空格
-							.filter(item => item); // 过滤空值
-
-						console.log('加载的人才发展数据:', savedPeopleDevelop);
-
-						// 清空之前的选中
-						this.selectedUp = [];
-						this.selectedPeople = [];
-						this.selectedPower = [];
-
-						// 恢复晋升制度选择
-						this.upList.forEach((item, index) => {
-							if (savedPeopleDevelop.includes(item)) {
-								this.selectedUp.push(index);
-							}
-						});
-
-						// 恢复人才激励选择
-						this.peopleList.forEach((item, index) => {
-							if (savedPeopleDevelop.includes(item)) {
-								this.selectedPeople.push(index);
-							}
-						});
-
-						// 恢复能力培养选择
-						this.powerList.forEach((item, index) => {
-							if (savedPeopleDevelop.includes(item)) {
-								this.selectedPower.push(index);
-							}
-						});
-						console.log('人才发展数据已加载完成');
-					} else {
-						console.log('缓存中没有人才发展数据');
-					}
-				} catch (error) {
-					console.error('加载人才发展数据失败:', error);
+			// 获取公司信息
+			getCompanyInfo() {
+				uni.showLoading({ title: '加载中' })
+				this.$Request.get('/app/company/selectCompanyByUserId')
+					.then((res) => {
+						if (res.code != 0) {
+							uni.showToast({
+								title: res.msg || '查询状态失败',
+								icon: 'none'
+							});
+							return
+						}
+						this.companyId = res.data.companyId
+						this.initData(res.data)
+						uni.hideLoading()
+					})
+					.catch((err) => {
+						uni.hideLoading()
+						uni.showToast({
+							title: '网络异常',
+							icon: 'none'
+						})
+					})
+			},
+			
+			initData(companyInfo) {
+				if (companyInfo?.companyPeopleDevelop) {
+					// 处理字符串并分割为数组
+					const savedPeopleDevelop = companyInfo.companyPeopleDevelop
+						.replace(/,/g, ',') // 替换中文逗号
+						.split(',') // 分割
+						.map(item => item.trim()) // 去除空格
+						.filter(item => item); // 过滤空值
+				
+					console.log('加载的人才发展数据:', savedPeopleDevelop);
+				
+					// 清空之前的选中
+					this.selectedUp = [];
+					this.selectedPeople = [];
+					this.selectedPower = [];
+				
+					// 恢复晋升制度选择
+					this.upList.forEach((item, index) => {
+						if (savedPeopleDevelop.includes(item)) {
+							this.selectedUp.push(index);
+						}
+					});
+				
+					// 恢复人才激励选择
+					this.peopleList.forEach((item, index) => {
+						if (savedPeopleDevelop.includes(item)) {
+							this.selectedPeople.push(index);
+						}
+					});
+				
+					// 恢复能力培养选择
+					this.powerList.forEach((item, index) => {
+						if (savedPeopleDevelop.includes(item)) {
+							this.selectedPower.push(index);
+						}
+					});
+					console.log('人才发展数据已加载完成');
 				}
 			},
 
@@ -175,35 +203,8 @@
 				}
 			},
 
-			// 恢复之前的选择(编辑时使用)
-			// restoreSelections() {
-			// 	if (this.companyData.companyPeopleDevelop) {
-			// 		const savedData = this.companyData.companyPeopleDevelop.split(',');
-
-			// 		// 恢复晋升制度选择
-			// 		this.upList.forEach((item, index) => {
-			// 			if (savedData.includes(item)) {
-			// 				this.selectedUp.push(index);
-			// 			}
-			// 		});
-
-			// 		// 恢复人才激励选择
-			// 		this.peopleList.forEach((item, index) => {
-			// 			if (savedData.includes(item)) {
-			// 				this.selectedPeople.push(index);
-			// 			}
-			// 		});
-
-			// 		// 恢复能力培养选择
-			// 		this.powerList.forEach((item, index) => {
-			// 			if (savedData.includes(item)) {
-			// 				this.selectedPower.push(index);
-			// 			}
-			// 		});
-			// 	}
-			// },
-
 			goJobPostingSecond() {
+				if (this.loading) return
 				// 清空之前的数组
 				this.companyPeopleDevelop = [];
 
@@ -237,24 +238,31 @@
 					return;
 				}
 
-				
+				this.loading = true
+				uni.showLoading({ title: '保存中' })
 				let companyData = {
-					companyId: this.$queue.getData('companyId'),
+					companyId: this.companyId,
 					companyPeopleDevelop: this.companyPeopleDevelop.join(',')
 				}
-				this.$Request.postJson('/app/company/updateCompany', companyData).then(res => {
-					if (res.code == 0) {
-						uni.showToast({
-							title: '提交成功',
-							duration: 1500,
-						});
-						setTimeout(() => {
-							uni.switchTab({
-								url: '/pages/my/index'
+				this.$Request.postJson('/app/company/updateCompany', companyData)
+					.then(res => {
+						if (res.code == 0) {
+							uni.showToast({
+								title: '提交成功',
+								duration: 1500,
 							});
-						}, 500)
-					}
-				})
+							setTimeout(() => {
+								uni.$emit('updateCompanyInfo')
+								uni.navigateBack()
+							}, 500)
+						}
+						this.loading = false
+						uni.hideLoading()
+					})
+					.catch(() => {
+						this.loading = false
+						uni.hideLoading()
+					})
 
 				// 如果是编辑模式,同时更新缓存
 				// if (this.isUpdateMode) {
@@ -282,138 +290,5 @@
 </script>
 
 <style lang="scss" scoped>
-	/* 样式保持不变 */
-	.switch-roles {
-		background-color: #fff;
-		position: absolute;
-		left: 0;
-		right: 0;
-		top: 0;
-		bottom: 0;
-		display: flex;
-		flex-direction: column;
-
-		.roles-content {
-			width: 100%;
-			flex: 1;
-			overflow: hidden;
-			overflow-y: auto;
-
-			.content {
-				padding: 40rpx;
-				box-sizing: border-box;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-
-				.progress-num {
-					color: #016bf6;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 500;
-					width: 100%;
-					padding-bottom: 20rpx;
-					box-sizing: border-box;
-
-					text {
-						font-size: 48rpx;
-						font-weight: 700;
-					}
-				}
-
-				.title {
-					color: #333;
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 48rpx;
-					font-weight: 700;
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					margin-bottom: 20rpx;
-				}
-
-				.desc {
-					color: rgba(102, 102, 102, 1);
-					width: 100%;
-					font-family: DM Sans;
-					font-size: 24rpx;
-					font-weight: 400;
-					line-height: 32rpx;
-					letter-spacing: 0.5%;
-					text-align: left;
-					padding: 20rpx 0;
-					box-sizing: border-box;
-					margin-bottom: 20rpx;
-				}
-
-				.content-index {
-					width: 100%;
-
-					.content-item {
-						margin-bottom: 40rpx;
-
-						.content-item-title {
-							color: rgba(34, 37, 42, 1);
-							font-family: DM Sans;
-							font-size: 32rpx;
-							font-weight: 400;
-							line-height: 48rpx;
-							padding-bottom: 12rpx;
-							box-sizing: border-box;
-						}
-
-						.check-box {
-							display: flex;
-							gap: 20rpx;
-							flex-wrap: wrap;
-							align-items: center;
-
-							.check-item {
-								flex-shrink: 0;
-								padding: 8rpx;
-								border-radius: 8rpx;
-								background: #9999991a;
-								border: 1rpx solid #9999991a;
-								box-sizing: border-box;
-								color: rgba(102, 102, 102, 1);
-								font-family: DM Sans;
-								font-size: 26rpx;
-								font-weight: 400;
-								cursor: pointer;
-								transition: all 0.3s;
-							}
-
-							.check-active {
-								box-sizing: border-box;
-								border: 1rpx solid #016bf6;
-								border-radius: 8rpx;
-								background: rgba(252, 233, 220, 1);
-								color: #016bf6;
-							}
-						}
-					}
-				}
-			}
-		}
-
-		.submit-btn {
-			flex-shrink: 0;
-			border-radius: 999px;
-			background: #ff6600;
-			color: rgba(255, 255, 255, 1);
-			font-family: DM Sans;
-			font-size: 32rpx;
-			font-weight: 400;
-			line-height: 48rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			padding: 24rpx 32rpx;
-			box-sizing: border-box;
-			margin: 30rpx 40rpx;
-			margin-top: 20rpx;
-		}
-	}
+	@import './company.scss';
 </style>

+ 2 - 2
package/jobIntention/addAddress.vue

@@ -131,12 +131,12 @@ export default {
 
 		// 合并完整地址信息
 		const fullAddress = {
-			province: this.province,
+			province: '',
 			city,
 			district,
 			latitude: this.latitude || '',
 			longitude: this.longitude || '',
-			fullText: `${this.province}${city}${district}${address}`
+			fullText: `${this.province || ''}${city}${district}${address}`
 		};
 
 		// 回传上一页

+ 2 - 2
package/jobIntention/basicInfo.vue

@@ -86,7 +86,7 @@
 			
 
 			<!-- 求职状态 -->
-			<view class="form-item">
+			<!-- <view class="form-item">
 				<view class="form-label">
 					<text>求职状态</text>
 				</view>
@@ -94,7 +94,7 @@
 					<text class="select-text">{{ jobStatusList[selectedJobStatus].text }}</text>
 					<u-icon name="arrow-down" color="#999" size="24"></u-icon>
 				</view>
-			</view>
+			</view> -->
 		</view>
 
 		<!-- 保存按钮 -->

+ 7 - 2
package/jobIntention/completeMsg.vue

@@ -85,12 +85,13 @@ export default {
 			email: '',
 			emailError: "", // 添加错误提示
 			userpost: [],
-			showAfterBtn: false, // 显示页面的稍后完善按钮,用户没有职务时显示
+			showAfterBtn: true, // 显示页面的稍后完善按钮,用户没有职务时显示
 			showModal: false,
 			companyStatus: 1, // 公司状态 1审核中 2审核通过 3审核拒绝
 			isAdmin: false, // 是否是管理员
 			hasReviewPosition: false, // 判断是否有审核中的岗位
-			companyId: ''
+			companyId: '',
+			companyInfo: {}
 		};
 	},
 	components: {
@@ -276,6 +277,7 @@ export default {
 						if (res.data.status) {
 							this.companyStatus = res.data.status
 						}
+						this.companyInfo = res.data
 						this.companyId = res.data.companyId
 					}
 				})
@@ -302,6 +304,9 @@ export default {
 		
 		// 稍后完善,如果没有职位等待审核中,则跳转到陈列页
 		handleAfterFinished() {
+			if (!this.isAdmin) {
+				return uni.reLaunch({ url: '/pages/index/index' })
+			}
 			if (this.hasReviewPosition) {
 				// 第一次发布岗位,并且正在审核中
 				uni.reLaunch({ url: '/pages/index/index' })

+ 3 - 3
package/jobIntention/fund.vue

@@ -8,7 +8,7 @@
 		<view class="other-input-area">
 			<textarea v-model="otherWelfare" placeholder="请详细描述公司的福利待遇" maxlength="5000" class="other-textarea" />
 			<view class="input-count flex align-center justify-end">
-				<text class="hight-light">0</text>
+				<text class="hight-light">{{ otherWelfare.length }}</text>
 				<text>/5000</text>
 			</view>
 		</view>
@@ -227,8 +227,8 @@ export default {
 		.other-textarea {
 			width: 100%;
 			height: 340rpx;
-			font-size: 20rpx;
-			line-height: 26rpx;
+			font-size: 28rpx;
+			line-height: 36rpx;
 		}
 		.input-count {
 			font-size: 20rpx;

+ 3 - 0
package/jobIntention/updateCertificates.vue

@@ -107,6 +107,9 @@
 					})
 				}
 			},
+			removeCustomTag(index) {
+				this.certificates.splice(index, 1)
+			},
 			confirmSelection() {
 				const certificates = this.certificates.map(certificate => {
 					return {

+ 3 - 0
package/my/editUserInfo.vue

@@ -117,6 +117,9 @@
 				this.updateSkills(data.selectedTags)
 			})
 		},
+		onUniLoad() {
+			uni.$off('skillsUpdated')
+		},
 		methods: {
 			goBack() {
 				uni.navigateBack()

+ 16 - 13
package/my/hiddenManagement/hiddenCompany.vue

@@ -1,14 +1,14 @@
 <template>
 	<view class="hidden-management">
-		<nav-bar color="#000" title="屏蔽管理"></nav-bar>
-		<view class="content">
-			<view class="search-bar flex align-center justify-between">
-				<view class="search-input flex align-center">
-					<image src="@/static/images/svg/search.svg" class="search-icon"></image>
-					<input v-model="searchValue" type="text" placeholder="输入的是一个公司的名称,全模糊搜索" class="input" />
-				</view>
-				<view class="search-btn" @click="getData">搜索</view>
+		<nav-bar title="屏蔽管理"></nav-bar>
+		<view class="search-bar flex align-center justify-between">
+			<view class="search-input flex align-center">
+				<image src="@/static/images/svg/search.svg" class="search-icon"></image>
+				<input v-model="searchValue" type="text" placeholder="输入的是一个公司的名称,全模糊搜索" class="input" />
 			</view>
+			<view class="search-btn" @click="getData">搜索</view>
+		</view>
+		<view class="content">
 			<scroll-view :scroll-y="true" class="scroll-view">
 				<view class="scroll-wrapper">
 					<view class="company-item" v-for="company in companys" :key="company.companyId">
@@ -22,8 +22,8 @@
 			</scroll-view>			
 		</view>
 		
-		<view class="fixed-section">
-			<u-button type="primary" class="submit-btn" @click="handleSave">屏蔽所选公司({{ selectCount }})</u-button>
+		<view class="button-section">
+			<view class="submit-btn" @click="handleSave">屏蔽所选公司({{ selectCount }})</view>
 		</view>
 	</view>
 </template>
@@ -127,14 +127,18 @@
 	@import '@/common.scss';
 	
 	.hidden-management {
+		display: flex;
+		flex-direction: column;
 		height: 100vh;
 		font-family: DM Sans;
 		
 		.content {
+			flex: 1;
 			padding: 0 40rpx;
+			overflow: auto;
 		}
 		.search-bar {
-			margin: 32rpx 0 40rpx;
+			margin: 32rpx 40rpx 40rpx;
 			.search-input {
 				flex: 1;
 				box-sizing: border-box;
@@ -156,6 +160,7 @@
 				}
 			}
 			.search-btn {
+				width: 60rpx;
 				font-size: 20rpx;
 				font-weight: 500;
 				line-height: 48rpx;
@@ -165,8 +170,6 @@
 		}
 		
 		.scroll-view {
-			height: calc(100vh - 160rpx);
-			padding-bottom: 200rpx;
 			.scroll-wrapper {
 				padding-bottom: 100rpx;
 			}

+ 12 - 6
package/screen/city.vue

@@ -6,13 +6,14 @@
 					<u-icon name="close" color="#333" size="32"></u-icon>
 				</view>
 				<view class="nav-title">{{city}}</view>
-				<view @click="goTo" class="nav-right">
+				<view class="nav-right" v-if="onlyShowOneCity"></view>
+				<view @click="goTo" class="nav-right" v-else>
 					<image src="../../static/images/filter.svg" mode="widthFix"></image> 筛选城市
 				</view>
 			</view>
 		</view>
 		<view class="page-content">
-		  <hg-level4-address :city="city" :county="county" :street="street" @confirm="onAddressConfirm"></hg-level4-address>
+		  <hg-level4-address :city="city" :county="county" :street="street" :onlyShowOneCity="onlyShowOneCity" @confirm="onAddressConfirm"></hg-level4-address>
 		</view>
 	</view>
 </template>
@@ -28,7 +29,8 @@
 				statusBarHeight: 0, // 状态栏高度
 				city: '', //市
 				county: '', //区
-				street:''//街道
+				street:'',//街道
+				onlyShowOneCity: false, // 判断是否只显示一个城市
 			};
 		},
 		onLoad(options) {
@@ -38,6 +40,10 @@
 			this.city = options&&options.city||'深圳市'
 			this.county = options&&options.county||''
 			this.street = options&&options.street||''
+			
+			if (options.onlyShowOneCity) {
+				this.onlyShowOneCity = true
+			}
 		},
 		onShow() {
 
@@ -59,7 +65,7 @@
 			},
 			goTo(){
 				uni.navigateTo({
-					url:'/package/jobIntention/city?type=search'
+					url:'/package/jobIntention/city?type=search&onlyShowOneCity=true'
 				})
 			}
 		}
@@ -94,11 +100,11 @@
 				padding-left: 20rpx;
 			}
 			.nav-right{
-				width: fit-content;
+				// width: fit-content;
 				white-space: nowrap;
 				color: #016Bf6;
 				align-items: center;
-				justify-content: flex-start;
+				justify-content: flex-end;
 				padding-left: 0rpx;
 				image{
 					width: 28rpx;

+ 26 - 5
pages.json

@@ -583,6 +583,13 @@
 				"navigationBarTitleText": "加入公司",
 				"navigationStyle": "custom"
 			}
+		},
+		{
+			"path": "pages/my/searchCompanys",
+			"style": {
+				"navigationBarTitleText": "搜索公司",
+				"navigationStyle": "custom"
+			}
 		}
 	],
 	"subPackages": [
@@ -1469,6 +1476,20 @@
 						"navigationBarTitleText": "",
 						"navigationStyle": "custom"
 					}
+				},
+				{
+					"path": "renzheng/companyBaseInfo",
+					"style": {
+						"navigationStyle": "custom",
+						"navigationBarTitleText": "公司信息"
+					}
+				},
+				{
+					"path": "renzheng/companyWelfare",
+					"style": {
+						"navigationStyle": "custom",
+						"navigationBarTitleText": "公司信息"
+					}
 				}
 				// #endif 
 			]
@@ -1521,11 +1542,11 @@
 	"condition": { //模式配置,仅开发期间生效
 		"current": 0, //当前激活的模式(list 的索引项)
 		"list": [
-			{
-				"name": "首页", //模式名称
-				"path": "pages/index/index", //启动页面,必选
-				"query": "" //启动参数,在页面的onLoad函数里面得到
-			}
+			// {
+			// 	"name": "首页", //模式名称
+			// 	"path": "pages/index/index", //启动页面,必选
+			// 	"query": "" //启动参数,在页面的onLoad函数里面得到
+			// }
 		]
 	}
 }

+ 286 - 153
pages/index/game/order.vue

@@ -1,5 +1,6 @@
 <template>
-	<view style="padding: 148rpx 0 40rpx;">
+	<!-- <view style="padding: 148rpx 0 40rpx;"> -->
+	<view :style="{ padding: `${65 + statusBarHeight}px 0` }">
 		<!-- 固定顶部导航 -->
 		<view class="fixed-nav" :style="{ paddingTop: (12 + statusBarHeight) + 'px' }">
 			<view class="nav-bar">
@@ -7,12 +8,11 @@
 				<u-icon name="arrow-leftward" color="rgba(51, 51, 51, 1)" style="font-size: 38rpx;"></u-icon>
 			</view>
 
-				<view class="nav-title">职位详情</view>
-
+			<view class="nav-title">职位详情</view>
 
 			<view class="nav-right">
 				<view class="nav-icons">
-					<view class="nav-icon" @click="setCollection">
+					<view class="nav-icon" @click="setCollection" v-if="!hideBottomBtn">
 						<image v-if="info.isCollection==0" src="/static/images/index/guanzhu.svg" class="icon-img"></image>
 						<image v-else src="/static/images/index/gzActive.svg" style="width: 52rpx;height: 52rpx;"></image>
 					</view>
@@ -28,28 +28,26 @@
 		<view class="job flex justify-center" style="padding: 0 40rpx;">
 			<view class="job-info flex justify-center">
 				<view class="job-info-c">
-					<view class="job-info-c-top flex align-center justify-between">
+					<view class="job-info-c-top flex justify-between">
 						<view class="job-info-c-title">
-							<!-- <block v-if="isSameName(info.ruleClassifyName,info.stationName)">
-								{{info.ruleClassifyName}}-
-							</block> -->
-							<block>
-								{{info.ruleClassifyName}}
-							</block>
+							{{info.ruleClassifyName}}
 						</view>
 						<view class="job-info-c-price" v-if="info.salaryRange">
-							{{info.salaryRange}}
+							{{info.salaryRange}}·{{ info.salaryTimes }}
 						</view>
 					</view>
+					
+					<view class="warning-box flex align-center" v-if="hideBottomBtn && info.status == 3">
+						<image src="@/static/images/index/tishi.png" class="warning-icon" />
+						<view class="warning-txt">{{ info.auditContent || '审核失败' }}</view>
+					</view>
+					
 					<view class="enterprise-box-c-bto flex align-center justify-between" @click.stop="gotoMap()">
-						<view class="enterprise-box-c-bto-l flex align-center gap-10rpx">
-							<u-icon name="map" color="rgba(58, 57, 67, 1)" style="margin-right: 10rpx;"
+						<view class="enterprise-box-c-bto-l flex gap-10rpx">
+							<u-icon name="map-fill" color="rgba(58, 57, 67, 1)" style="margin-right: 10rpx;"
 								size="24"></u-icon>
 							{{info.province?info.province:''}}{{info.city?info.city:''}}{{info.county?info.county:''}}{{info.address?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>
-						</view> -->
 					</view>
 					<view class="job-info-c-label flex align-center flex-wrap">
 						<view class="job-info-c-label-item" v-if="info.county">
@@ -78,11 +76,11 @@
 		</view>
 
 		<!-- 企业信息 -->
-		<view class="enterprise-box-c-info flex align-start justify-between" style="margin: 0 40rpx;">
+		<view class="enterprise-box-c-info flex align-start justify-between" style="margin: 0 40rpx;" v-if="!hideBottomBtn">
 			<view class="enterprise-left flex align-center">
 				<view class="avatar-container">
-					<image :src="info.hr && info.hr.hrImg ? info.hr.hrImg : info.user ? info.user.avatar : '../../static/logo.png'"
-						style="width: 95rpx;height: 95rpx;border-radius: 50%;" mode=""></image>
+					<image v-if="avatar" :src="avatar" mode="aspectFill" class="avatar"></image>
+					<image v-else src="@/static/logo.png" mode="" class="avatar"></image>
 					<view class="online-dot" :style="{'background':info.user&&info.user.onlineStatus=='ONLINE'?'#00D26A':'#999'}"></view>
 				</view>
 				<view class="enterprise-box-c-info-n">
@@ -99,7 +97,7 @@
 			</view>
 			<view class="more-jobs flex align-center" @click="goToMoreJobs">
 				<text>更多职位</text>
-				<u-icon name="arrow-right" color="rgba(51, 51, 51, 1)" size="28"></u-icon>
+				<u-icon name="arrow-right" color="rgba(29, 33, 41, 1)" size="20"></u-icon>
 			</view>
 		</view>
 
@@ -112,47 +110,50 @@
 						<image src="/static/images/index/ins.png" class="title-icon"></image>
 						<text>职位说明</text>
 					</view>
-					<view class="jobRemarks-box-c-label flex align-center flex-wrap" v-if="info.tag">
+					<!-- <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">
 							{{item}}
 						</view>
+					</view> -->
+					<view class="job-info-c-label flex align-center flex-wrap" v-if="info.positionTag">
+						<view class="job-info-c-label-item active-item"
+							v-for="(item,index) in positionTags"
+							:key="index">
+							{{item}}
+						</view>
+						<view class="job-info-c-label-item" v-if="showAllPositionTagBtn" @click="showAllPositionTag = true">
+							查看全部<u-icon name="arrow-down" size="18" style="margin-left: 2px"></u-icon>
+						</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="job-info-c-label flex align-center flex-wrap" v-if="info.positionTag">
-						<view class="job-info-c-label-item"
-							v-for="(item,index) in info.positionTag?info.positionTag.split(','):[]"
-							:key="index">
-							{{item}}
-						</view>
-					</view>
 
-					<view class="jobRemarks-box-c-line"></view>
-
-					<view class="jobRemarks-box-c-title flex align-center" style="margin-top: 25rpx;">
+					<view class="jobRemarks-box-c-title flex align-center" style="margin-top: 20rpx;">
 						<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"
+					<view class="job-info-c-label flex align-center flex-wrap" v-if="info.welfareTag">
+						<view class="job-info-c-label-item active-item"
 							v-for="(item,index) in info.welfareTag?info.welfareTag.split(';'):[]"
 							:key="index">
 							{{item}}
 						</view>
 					</view>
-					<view class="jobRemarks-box-c-label flex align-center flex-wrap" v-else>
+					<view class="jobRemarks-box-c-con" v-if="info.welfareText">
+						<view class="jobRemarks-box-c-con-item" v-html="info.welfareText">
+						</view>
+					</view>
+					<!-- <view class="jobRemarks-box-c-label flex align-center flex-wrap" v-else>
 						<view class="jobRemarks-box-c-label-item">
 							暂无
 						</view>
-					</view>
+					</view> -->
 
-					<view class="job-description">
+					<view class="job-description" v-if="info.positionWelfare">
 						<view class="description-item">{{info.positionWelfare}}</view>
 					</view>
 				</view>
@@ -166,11 +167,11 @@
 			<view class="company-intro-card" @click="goInfo(info.company.companyId)">
 				<view class="company-avatar">
 					<image :src="info.company&&info.company.companyLogo||'../../../static/logo.png'"
-						style="width: 95rpx;height: 95rpx;border-radius: 50%;" mode="aspectFill"></image>
+						style="width: 95rpx;height: 95rpx;border-radius: 50%;border: 0.5px solid #eee;" mode="aspectFill"></image>
 				</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:''}} <text v-if="info.company && info.company.companyScope">· {{info.company?info.company.companyScope:''}}</text></view>
 				</view>
 				<view class="company-arrow">
 					<u-icon name="arrow-right" color="rgba(51, 51, 51, 1)" size="32"></u-icon>
@@ -189,9 +190,33 @@
 					<!-- #endif -->
 				</view>
 			</view>
+			
+			<!-- 职位招聘数据 -->
+			<view class="postNum" v-if="hideBottomBtn">
+				<view class="postNum-title">职位招聘数据</view>
+				<view class="postNum-ul flex justify-around align-center">
+					<view class="postNum-li">
+						<view class="postNum-li-num align-center">{{ postData.chatCount || 0 }}</view>
+						<view class="postNum-li-txt">沟通过</view>
+					</view>
+					<view class="postNum-li ">
+						<view class="postNum-li-num">{{ postData.viewCount || 0 }}</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">{{ postData.collectCount || 0 }}</view>
+						<view class="postNum-li-txt">收藏</view>
+					</view>
+				</view>
+				<view class="post-time">职位发布时间:{{ info.createTime }}</view>
+			</view>
 		</view>
 		<!-- 底部操作 -->
-		<view class="caozuo flex justify-center align-center">
+		<view class="caozuo flex justify-center align-center" v-if="!hideBottomBtn && userType == 1">
 			<view v-if="info&&info.isDue==1" class="caozuo-box-l flex justify-center align-center" @click="attachmentShow=true">
 				一键投递
 			</view>
@@ -339,14 +364,51 @@
 				}],
 				sharType: 0,
 				sharMsg: '',
-				content:[]
+				content:[],
+				showAllPositionTag: false,
+				hideBottomBtn: false,
+				postData: { //岗位招聘数据
+					chatCount: 0,
+					collectCount: 0,
+					viewCount: 0,
+				},
+				userType: null
 			};
 		},
+		computed: {
+			avatar() {
+				if (this.info?.hr?.harImg) {
+					return this.info.hr.harImg
+				} else if (this.info?.user?.avatar) {
+					return this.info.user.avatar
+				}
+				return ''
+			},
+			showAllPositionTagBtn() {
+				let positionTag = this.info?.positionTag ? this.info.positionTag.split(',') : []
+				return !this.showAllPositionTag && positionTag.length > 12
+			},
+			positionTags() {
+				let positionTag = this.info?.positionTag ? this.info.positionTag.split(',') : []
+				if (this.showAllPositionTag) {
+					return positionTag
+				} else {
+					return positionTag.filter((tag, i) => i < 12)
+				}
+			}
+		},
 		onLoad(option) {
 			// 获取状态栏高度
 			let systemInfo = uni.getSystemInfoSync();
 			this.statusBarHeight = systemInfo.statusBarHeight || 0;
 			
+			// 从岗位列表进入时隐藏底部按钮
+			if (option.hideBottomBtn) {
+				this.hideBottomBtn = true
+			}
+			
+			this.userType = this.$queue.getData('userType') || null
+			
 			// 获取邀请码保存到本地
 			if (option.invitation) {
 				this.$queue.setData('inviterCode', option.invitation);
@@ -531,7 +593,7 @@
 									complete(ret) {
 										if (ret.confirm) {
 											uni.navigateTo({
-												url: '/package/my/resume'
+												url: '/pages/my/onlineResume'
 											})
 										}
 									}
@@ -669,7 +731,7 @@
 									complete(ret) {
 										if (ret.confirm) {
 											uni.navigateTo({
-												url: '/package/my/resume'
+												url: '/pages/my/onlineResume'
 											})
 										}
 									}
@@ -711,6 +773,19 @@
 					});
 				}
 			},
+			
+			// 获取岗位招聘数据
+			getPostData() {
+				this.$Request.get('/app/postPush/postPushData', {
+					postPushId: this.postPushId
+				}).then(res => {
+					if (res.code == 0) {
+						this.postData = res.data
+					} else {
+						this.$queue.showToast(res.msg);
+					}
+				});
+			},
 		}
 	}
 </script>
@@ -733,14 +808,13 @@
 	}
 
 	.urgent-banner {
-		width: 100%;
 		height: 120rpx;
 		background: linear-gradient(90deg, rgba(255, 65, 86, 1) 0%, rgba(255, 102, 0, 0.35) 100%);
 		border-radius: 16rpx;
 		display: flex;
 		align-items: center;
 		padding: 0 30rpx;
-		margin: 0 auto 20rpx auto;
+		margin: 0 40rpx 20rpx;
 
 		.urgent-icon {
 			width: 64rpx;
@@ -891,7 +965,7 @@
 
 	.job {
 		width: 100%;
-		margin-top: 30rpx;
+		margin-top: 24rpx;
 
 		.job-info {
 			// width: 686rpx;
@@ -904,30 +978,27 @@
 				// width: 626rpx;
 				width: 100%;
 				height: 100%;
-				padding-top: 30rpx;
-				padding-bottom: 30rpx;
+				margin-bottom: 8rpx;
 			}
 
 			.enterprise-box-c-bto {
 				width: 100%;
 				border-radius: 30rpx;
-				margin-top: 34rpx;
+				margin-top: 20rpx;
 				color: rgba(156, 164, 171, 1);
 				font-family: DM Sans;
-				font-size: 12px;
+				font-size: 10px;
 				font-weight: 400;
 				line-height: 12px;
-				letter-spacing: 0.5%;
 			}
 
 			.job-info-c-title {
+				flex: 1;
 				color: rgba(58, 57, 67, 1);
 				font-family: DM Sans;
-				font-size: 26px;
+				font-size: 24px;
 				font-weight: 700;
 				line-height: 30px;
-				letter-spacing: 0px;
-				text-align: left;
 			}
 
 			
@@ -935,94 +1006,103 @@
 			.job-info-c-price {
 				color: rgba(1, 107, 246, 1);
 				font-family: DM Sans;
-				font-size: 18px;
+				font-size: 16px;
 				font-weight: 700;
 				line-height: 20px;
-				letter-spacing: 0.5%;
-				text-align: right;
-				flex-shrink: 0;
 			}
 		}
 	}
 	.job-info-c-label {
-		margin-top: 30rpx;
+		margin-top: 20rpx;
 	
 		.job-info-c-label-item {
-			margin-bottom: 15rpx;
-			margin-right: 20rpx;
+			margin-bottom: 8rpx;
+			margin-right: 8rpx;
 			color: rgba(153, 153, 153, 1);
-			font-size: 24rpx;
+			font-size: 20rpx;
+			line-height: 1;
 			padding: 4px;
-			border-radius: 6px;
+			border-radius: 4px;
 			background: rgba(198, 198, 198, 0.1);
+			&.active-item {
+				color: rgba(1, 107, 246, 1);
+				background: rgba(1, 107, 246, 0.1);
+			}
 		}
 	}
 
 	.enterprise-box-c-info {
-				height: auto;
-				padding: 16px;
-				border: 0.5px solid rgba(227, 231, 236, 1);
-				border-radius: 6px;
-				background: rgba(253, 253, 253, 1);
-				// margin-top: 40rpx;
-
-				.enterprise-left {
-					flex: 1;
-				}
+		height: auto;
+		padding: 16px;
+		border: 0.5px solid rgba(227, 231, 236, 1);
+		border-radius: 6px;
+		background: rgba(253, 253, 253, 1);
+		// margin-top: 40rpx;
+
+		.enterprise-left {
+			flex: 1;
+		}
 
-				.avatar-container {
-					position: relative;
-					display: inline-block;
-				}
+		.avatar-container {
+			position: relative;
+			display: inline-block;
+			.avatar {
+				display: block;
+				width: 95rpx;
+				height: 95rpx;
+				border-radius: 50%;
+				border: 0.5px solid #eee;
+			}
+		}
 
-				.online-dot {
-					position: absolute;
-					bottom: 4rpx;
-					right: 4rpx;
-					width: 20rpx;
-					height: 20rpx;
-					background: #00D26A;
-					border: 2rpx solid #ffffff;
-					border-radius: 50%;
-				}
+		.online-dot {
+			position: absolute;
+			bottom: 4rpx;
+			right: 4rpx;
+			width: 10px;
+			height: 10px;
+			background: #00D26A;
+			border: 1px solid #ffffff;
+			border-radius: 50%;
+		}
 
-				.more-jobs {
-					color: rgba(153, 153, 153, 1);
-					font-size: 22rpx;
-					font-weight: 400;
-					gap: 8rpx;
-				}
+		.more-jobs {
+			color: rgba(153, 153, 153, 1);
+			font-size: 22rpx;
+			font-weight: 400;
+			gap: 8rpx;
+		}
 
-				.enterprise-box-c-info-n {
-					margin-left: 18rpx;
+		.enterprise-box-c-info-n {
+			margin-left: 18rpx;
 
-					view:nth-of-type(1) {
-						color: #333333;
-						font-size: 24rpx;
-						font-weight: 600;
-					}
+			view:nth-of-type(1) {
+				color: #333333;
+				font-size: 24rpx;
+				font-weight: 600;
+			}
 
-					view:nth-of-type(2) {
-						color: #999999;
-						font-size: 24rpx;
-						font-weight: 500;
-						margin-top: 8rpx;
-					}
+			view:nth-of-type(2) {
+				color: #999999;
+				font-size: 24rpx;
+				font-weight: 500;
+				margin-top: 8rpx;
+			}
 
-					view:nth-of-type(3) {
-						display: inline-block;
-						width: auto;
-						border-radius: 6px;
-						padding: 4rpx 12rpx;
-						background: rgba(236, 225, 253, 1);
-						color: rgba(107, 85, 214, 0.96);
-						font-size: 20rpx;
-						font-weight: 500;
-						margin-top: 8rpx;
-						white-space: nowrap;
-					}
-				}
+			view:nth-of-type(3) {
+				display: inline-block;
+				width: auto;
+				border-radius: 6px;
+				padding: 4rpx 12rpx;
+				background: rgba(236, 225, 253, 1);
+				color: rgba(107, 85, 214, 0.96);
+				font-size: 20rpx;
+				font-weight: 500;
+				margin-top: 8rpx;
+				white-space: nowrap;
 			}
+		}
+	}
 
 	.jobRemarks {
 		width: 100%;
@@ -1036,21 +1116,23 @@
 			.jobRemarks-box-c {
 				width: 100%;
 				height: 100%;
-				padding-top: 30rpx;
-				padding-bottom: 30rpx;
+				padding-top: 20rpx;
 			}
 
 			.jobRemarks-box-c-title {
 				color: rgba(1, 107, 246, 1);
-				font-size: 32rpx;
+				font-size: 28rpx;
+				line-height: 36rpx;
 				padding: 8px 12px;
-				border-radius: 36px;
 				font-weight: 500;
+				border-radius: 55px;
+				box-shadow: 0px 8px 150px 0px rgba(0, 0, 0, 0.06);
 				background: rgba(246, 246, 246, 1);
 
 				.title-icon {
-					width: 32rpx;
-					height: 32rpx;
+					width: 28rpx;
+					height: 28rpx;
+					margin-right: 8rpx;
 				}
 			}
 
@@ -1070,46 +1152,40 @@
 				}
 			}
 
-			.jobRemarks-box-c-label {
-				width: 100%;
-				margin-top: 25rpx;
-
-				.jobRemarks-box-c-label-item {
-					color: rgba(1, 107, 246, 1);
-					font-size: 20rpx;
-					padding: 10rpx 15rpx;
-					background-color: #F6F6F6;
-					border-radius: 10rpx;
-					margin-right: 20rpx;
-					margin-bottom: 10rpx;
-					background: rgba(252, 233, 220, 1);
-				}
-			}
+			// .jobRemarks-box-c-label {
+			// 	width: 100%;
+			// 	margin-top: 25rpx;
+
+			// 	.jobRemarks-box-c-label-item {
+			// 		color: rgba(1, 107, 246, 1);
+			// 		font-size: 20rpx;
+			// 		padding: 10rpx 15rpx;
+			// 		background-color: #F6F6F6;
+			// 		border-radius: 10rpx;
+			// 		margin-right: 20rpx;
+			// 		margin-bottom: 10rpx;
+			// 		background: rgba(252, 233, 220, 1);
+			// 	}
+			// }
 
 			.jobRemarks-box-c-con {
 				width: 100%;
-				margin-top: 25rpx;
+				margin-top: 12rpx;
 
 				.jobRemarks-box-c-con-item {
-					margin-bottom: 10rpx;
-					color: #141414;
+					color: rgba(97, 110, 124, 1);
 					font-size: 28rpx;
-					font-weight: 500;
+					font-weight: 400;
+					line-height: 36rpx;
 					white-space: pre-wrap;
 				}
 			}
-
-			.jobRemarks-box-c-line {
-				width: 100%;
-				border: 1rpx solid #E6E6E6;
-				margin-top: 25rpx;
-			}
 		}
 	}
 
 	.enterprise {
 		width: 100%;
-		margin-top: 25rpx;
+		margin-top: 20rpx;
 
 		.company-intro-card {
 			width: 100%;
@@ -1227,4 +1303,61 @@
 		// 	}
 		// }
 	}
+	
+	// 警告内容
+	.warning-box {
+		background: rgba(255, 251, 232, 1);
+		border-radius: 4px;
+		padding: 20rpx 32rpx;
+		margin-top: 20rpx;
+		.warning-icon {
+			display: block;
+			width: 32rpx;
+			height: 32rpx;
+			margin-right: 16rpx;
+		}
+		.warning-txt {
+			color: rgba(237, 106, 12, 1);
+			font-size: 22rpx;
+			font-weight: 400;
+			line-height: 40rpx;
+		}
+	}
+	
+	.postNum {
+		// padding: 12rpx;
+	}
+	
+	.postNum-title {
+		color: rgba(34, 37, 42, 1);
+		font-size: 32rpx;
+		font-weight: 600;
+		line-height: 48rpx;
+	}
+	
+	.postNum-ul {
+		margin: 30rpx auto;
+		font-family: DM Sans;
+	}
+	
+	.postNum-li-num {
+		font-size: 36rpx;
+		font-weight: 400;
+		line-height: 52rpx;
+		text-align: center;
+	}
+	
+	.postNum-li-txt {
+		font-size: 28rpx;
+		font-weight: 400;
+		line-height: 40rpx;
+		text-align: center;
+	}
+	
+	.post-time {
+		color: rgba(102, 102, 102, 1);
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+	}
 </style>

+ 11 - 7
pages/index/index.vue

@@ -405,7 +405,7 @@
 								<view class="qyList-box-item-box">
 									<view class="qyList-box-item-info flex align-center">
 										<view class="qyList-box-item-info-r">
-											<image :src="item.userAvatar ? item.userAvatar : '../../static/images/logo.jpg'" class="avatar"></image>
+											<image :src="item.userAvatar ? item.userAvatar : '../../static/images/logo.jpg'" class="avatar" mode="aspectFill"></image>
 											<image src="@/static/images/svg/male.svg" v-if="item.userSex == 1" class="sex-icon"></image>
 											<image src="@/static/images/svg/female.svg" v-else-if="item.userSex == 2" class="sex-icon"></image>
 										</view>
@@ -413,8 +413,8 @@
 											<view class="flex align-center justify-between">
 												<view class="flex align-center">
 													<view class="user-name">{{ item.userName }}</view>
-													<view class="status-tag online-minutes">{{ item.onlineMinutes }}</view>
-													<!-- <view class="status-tag online-status">3天前已看</view> -->
+													<view class="status-tag online-minutes" v-if="item.onlineMinutes">{{ item.onlineMinutes }}</view>
+													<view class="status-tag online-status" v-if="item.browseTag">{{ item.browseTag }}</view>
 												</view>
 												<text class="clip-color" v-if="item.salaryRange">{{ item.salaryRange }}</text>
 											</view>
@@ -433,7 +433,7 @@
 										<view class="time">{{ item.lastWorkTime }}</view>
 									</view>
 									<view class="tags">
-										<view class="tag" v-for="(skill, i) in parseSkills(item.intentPostSkill)" :key="i">{{ skill }}</view>
+										<view class="tag" v-for="(skill, i) in parseSkills(item.intentIndustry)" :key="i">{{ skill }}</view>
 									</view>
 									<view class="bottom-section flex align-center">
 										<image src="@/static/images/svg/heart.svg" class="expection-icon"></image>
@@ -1163,8 +1163,9 @@ export default {
 						// #endif
 					} else {
 						that.city = uni.getStorageSync('city')
-						if (go == 'go')
-							that.goNav('/package/screen/city?city=' + that.city + '&county=' + that.county + '&type=' + 'search')
+						if (go == 'go') {
+							that.goNav(`/package/screen/city?city=${that.city}&county=${that.county}&type=search&onlyShowOneCity=true`)
+						}
 					}
 				},
 				fail: function () {
@@ -1523,7 +1524,10 @@ export default {
 							
 							// 判断是否是跨境公司
 							let isCrossCompany = false
-							let workTypeArr = JSON.parse(item.workType.split(';')[0])
+							let workTypeArr = []
+							if (typeof item.workType == 'string') {
+								workTypeArr = JSON.parse(item.workType?.split(';')[0] || [])
+							}
 							if (Array.isArray(workTypeArr)) {
 								isCrossCompany = workTypeArr.findIndex(type => type == '0') != -1
 							}

+ 103 - 6
pages/jobManagement/jobManagement.vue

@@ -40,7 +40,7 @@
 						class="job-card"
 						v-for="(job, index) in jobList" 
 						:key="index"
-						@click="goNav('/my/order/pay?postPushId='+job.postPushId)"
+						@click="goNav(`/pages/index/game/order?postPushId=${job.postPushId}&hideBottomBtn=true`)"
 					>
 						<view class="job-card-content">
 							<view class="job-header">
@@ -62,7 +62,7 @@
 								<view class="tag" v-for="(tag, i) in job.positionTags" :key="i">{{ tag }}</view>
 							</view>
 							<view class="company-info flex align-center">
-								<image :src="job.company.companyLogo ? job.company.companyLogo : '/static/logo.png'" class="logo"></image>
+								<image :src="job.company.companyLogo || '/static/logo.png'" class="logo"></image>
 								<text class="company-name">{{ job.company.companyName }}</text>
 							</view>
 							<view class="buttons flex align-center">
@@ -84,6 +84,37 @@
 			</view>
 		</view>
 		
+		<c-modal
+			:value="showTipModal"
+			title="温馨提示"
+			:show-cancel-button="false"
+			:confirm-button-text="tipType == 3 ? '立即认证' : '我知道了'"
+			@confirm="handleConfirm"
+		>
+			<!-- 关联已有企业,等待审核通过 -->
+			<template v-if="tipType == 1">
+				<view>请您等待企业审核通知</view>
+				<view>审核通过后即可立即发布岗位拉!</view>
+			</template>
+			
+			<!-- 新企业待审核 -->
+			<template v-else-if="tipType == 2">
+				<view>企业入住提交后需要提示1-3个工作日审核</view>
+				<view>审核通过后即可立即发布岗位!</view>
+			</template>
+			
+			<!-- 新企业,没有填写资料 -->
+			<template v-else-if="tipType == 3">
+				<view>没有进行企业认证,请立即认证!</view>
+				<view>认证后可发布岗位招聘拉!</view>
+			</template>
+			
+			<!-- 发布岗位待审核 -->
+			<template v-else-if="tipType == 4">
+				<view>发布提交后需要提示1-3个工作日审核</view>
+			</template>
+		</c-modal>
+		
 		<!-- 底部发布按钮 -->
 		<view class="button-section">
 			<view class="submit-btn" @click="publishNewJob">发布新职位</view>
@@ -94,10 +125,12 @@
 <script>
 import navBar from "@/components/nav-bar/index.vue";
 import empty from '@/components/empty.vue'
+import cModal from '@/components/c-modal.vue'
 
 export default {
 	components: {
 		navBar,
+		cModal
 	},
   data() {
     return {
@@ -121,6 +154,10 @@ export default {
 	  status:'',
 	  canClose: false, // 判断页面是否是关闭,如果是从“完善招聘名片”页面进入,则是可以关闭,反之则不可以
 	  loading: false,
+	  showTipModal: false,
+	  companyInfo: {},
+	  tipType: 1,
+	  positionCount: 0, // 剩余可发布岗位数量
     }
   },
   filters: {
@@ -162,7 +199,9 @@ export default {
     this.setBodyHeight();
   },
   onShow() {
-  	this.getJobList();
+		this.getCompanyInfo()
+		this.getJobList();
+		this.getVipData();
   },
   methods: {
     // 获取职位列表(新增分页逻辑)
@@ -239,7 +278,33 @@ export default {
 	 },
     goNav(url) { uni.navigateTo({ url }); },
    // publishNewJob() { uni.navigateTo({ url: '/package/addJob/addJob' }); },
-	 publishNewJob() { uni.navigateTo({ url: `/pages/my/jobPosting?status=${this.status}&companyId=${this.companyId}` }); },
+   
+    // 发布新岗位
+	publishNewJob() {
+		// 1. 非管理员,申请加入企业,但是未审核通过
+		// 2. 管理员,企业申请了,但是未审核通过
+		// 3. 管理员,企业审核通过了,但是未完善资料(营业执照数据未上传)
+		// 4. 发布岗位正在审核中(非VIP只能发布一个岗位,后端设置)
+		if (this.companyInfo?.companyUser?.isAdmin != 1 && this.companyInfo?.companyUser?.status == 1) {
+			this.tipType = 1
+			this.showTipModal = true
+			return
+		} else if (this.companyInfo?.companyUser?.isAdmin == 1 && this.companyInfo?.status != 2) {
+			this.tipType = 2
+			this.showTipModal = true
+			return
+		} else if (this.companyInfo?.companyUser?.isAdmin == 1 && !this.companyInfo?.companyDutyParagraph) {
+			this.tipType = 3
+			this.showTipModal = true
+			return
+		} else if (this.positionCount == 0) {
+			this.tipType = 4
+			this.showTipModal = true
+			return
+		}
+		
+		uni.navigateTo({ url: `/pages/my/jobPosting?status=${this.status}&companyId=${this.companyId}` });
+	},
 	
     setBodyHeight() { /* 原有逻辑不变 */ },
 	
@@ -366,6 +431,38 @@ export default {
 			uni.hideLoading()
 			this.loading = false
 		})
+	},
+	
+	// 获取公司状态
+	getCompanyInfo() {
+		this.$Request.get('/app/company/selectCompanyByUserId')
+			.then((res) => {
+				if (res.code == 0) {
+					this.companyInfo = res.data
+				}
+			})
+	},
+	
+	// 获取岗位数量
+	getVipData(){
+		this.$Request.get("/app/user/vipData").then((res) => {
+			if (res.code == 0) {
+				this.positionCount = Number(res.data.lastDueTimes || 0) + Number(res.data.lastPostTimes || 0)
+			}
+		})
+	},
+	
+	handleConfirm() {
+		if (this.tipType == 3) {
+			uni.navigateTo({
+				url: '/pages/my/businessLicense',
+				success: () => {
+					this.showTipModal = false
+				}
+			})
+		} else {
+			this.showTipModal = false
+		}
 	}
   }
 }
@@ -513,8 +610,8 @@ page {
 			.company-info {
 				.logo {
 					display: block;
-					width: 28rpx;
-					height: 28rpx;
+					width: 30rpx;
+					height: 30rpx;
 					border: 1px solid rgba(240, 240, 240, 1);
 					border-radius: 28rpx;
 					margin-right: 8rpx;

+ 9 - 1
pages/my/businessLicense.vue

@@ -23,7 +23,7 @@
 		 	</view>
         </view>
 		
-		<view class="join-btn">加入已认证的公司</view>
+		<view class="join-btn" @click="handleJoinCompany">加入已认证的公司</view>
 		
         <view class="desc-txt">
           <view class="desc-txt-item">注意事项:</view>
@@ -83,6 +83,7 @@ export default {
 	handleInput(value) {
 	  this.currentLength = value.length;
 	},
+	
 	// 创建公司
 	createCompany() {
 		if (this.loading) return
@@ -119,6 +120,13 @@ export default {
 					icon: 'none'
 				})
 			})
+	},
+	
+	// 加入公司
+	handleJoinCompany() {
+		uni.navigateTo({
+			url: '/pages/my/joinCompany'
+		})
 	}
   },
 };

+ 13 - 1
pages/my/educationExperience.vue

@@ -117,7 +117,9 @@
 				
 				<!-- 教育经历 -->
 				<view class="form-item">
-					<view class="form-label">教育经历</view>
+					<view class="form-label">
+						<text class="label-text">教育经历</text>
+					</view>
 					<view class="form-input">
 						<textarea auto-height v-model="formData.workContent" placeholder="请输入教育经历内容"></textarea>
 					</view>
@@ -319,6 +321,16 @@ export default {
 				uni.showToast({ title: "请完善在校时间", icon: "none" });
 				return
 			}
+			
+			if (!this.departments[this.formData.departmentIndex]) {
+				uni.showToast({ title: "请选择学历", icon: "none" });
+				return
+			}
+			
+			if (!this.formData.workPerformance) {
+				uni.showToast({ title: "请输入专业", icon: "none" });
+				return
+			}
 		  
 			let data={
 				eduId:id,

+ 159 - 483
pages/my/index.vue

@@ -27,7 +27,7 @@
 								<view class="flex align-center">
 									<view class="info-box-header-l">
 										<image :src="avatar ? avatar : '../../static/images/logo.jpg'" mode="aspectFill"></image>
-										<view class="info-tip" v-if="score < 20">待完善</view>
+										<view class="info-tip" v-if="score < 60">待完善</view>
 									</view>
 									<view class="info-box-header-r">
 										<view class="info-box-header-r-name flex align-center">
@@ -55,27 +55,6 @@
 										<view class="progress-bar" :style="{ width: `${score}%` }"></view>
 									</view>
 								</view>
-								<!-- <view
-                  class="flex align-center status-txt"
-                  @click="currenStatus()"
-                  v-if="token && XCXIsSelect != '否'"
-                >
-                  <image
-                    src="@/static/images/jobApplicant/qiehuan.svg"
-                    style="width: 50rpx; height: 50rpx"
-                    mode=""
-                  ></image>
-                  {{
-					  resumesStatus == 0
-					    ? "离职-随时到岗"
-					    :
-                    resumesStatus == 1
-                      ? "离职-正在找工作"
-                      : resumesStatus == 2
-                      ? "在职-考虑机会"
-                      : "在职-暂不考虑"
-                  }}
-                </view> -->
 							</view>
 							<view class="info-box-num flex align-center justify-between" v-if="XCXIsSelect != '否'">
 								<view class="info-box-num-td" @click="gojiLuList('/package/records/records', '沟通记录')">
@@ -115,53 +94,6 @@
 							</view>
 						</view>
 					</view>
-					<!-- vip -->
-					<!-- <view
-        class="vip flex justify-center"
-        @click="goNav('/my/vip/index')"
-        v-if="XCXIsSelect != '否'"
-      >
-        <view class="vip-box">
-          <image
-            class="vip-box-bg"
-            src="../../static/images/my/icon/vip.png"
-            mode=""
-          ></image>
-          <view class="vip-box-cont flex justify-center">
-            <view
-              class="flex justify-between align-center"
-              style="width: 626rpx; z-index: 9; margin-top: 30rpx"
-            >
-              <view class="flex align-center">
-                <image
-                  src="../../static/images/my/icon/vip2.png"
-                  style="width: 32rpx; height: 29rpx; margin-right: 5rpx"
-                  mode=""
-                ></image>
-                <image
-                  src="../../static/images/my/icon/vip3.png"
-                  style="width: 140rpx; height: 29rpx; margin-right: 20rpx"
-                  mode=""
-                ></image>
-                <text style="color: #914016; font-size: 24rpx">开通享受特权找工作</text>
-              </view>
-              <view
-                class="flex align-center"
-                style="
-                  color: #914016;
-                  font-size: 24rpx;
-                  font-weight: bold;
-                  z-index: 999;
-                  margin-right: 10rpx;
-                "
-              >
-                {{ isVip == true ? "已开通" : "去开通" }}
-                <u-icon name="play-right-fill" color="#914016" size="18"></u-icon>
-              </view>
-            </view>
-          </view>
-        </view>
-      </view> -->
 					<!-- 求职服务 -->
 					<view class="jobServer flex justify-center" v-if="XCXIsSelect != '否'"
 						:style="XCXIsSelect == '否' ? 'margin-top:30rpx' : ''">
@@ -173,7 +105,7 @@
 										@click="goNav('/pages/my/onlineResume')">
 										<image src="../../static/images/index/qwzn.svg" mode=""></image>
 										<view class=""> 在线简历 </view>
-										<view class="info-tip" v-if="score < 20">待完善</view>
+										<view class="info-tip" v-if="score < 60">待完善</view>
 									</view>
 									<view class="jobServer-box-btn-item flex justify-center flex-wrap"
 										@click="goNav('/pages/my/attachment')">
@@ -199,10 +131,6 @@
 					<view class="more-functions">
 						<view class="section-title">更多功能</view>
 						<view class="function-grid">
-							<!-- <view class="function-item">
-								<image src="../../static/images/index/moreSkill2.svg" class="function-icon"></image>
-								<text class="function-text">精选公司</text>
-							</view> -->
 							<view class="function-item" @click="goNav('/pages/my/ruleCenter')">
 								<image src="../../static/images/index/moreSkill3.svg" class="function-icon"></image>
 								<text class="function-text">规则中心</text>
@@ -223,100 +151,6 @@
 								<image src="@/static/images/svg/building.svg" class="function-icon"></image>
 								<text class="function-text">屏蔽管理</text>
 							</view>
-							<!-- <view v-if="token" class="function-item" @click="goOut()">
-								<image src="../../static/images/my/icon/utils/utils8.png"
-									class="function-icon"></image>
-								<view class="function-text">
-									退出登录
-								</view>
-							</view> -->
-						</view>
-					</view>
-					<view v-if="false" class="utils flex justify-center">
-						<view class="utils-box">
-							<view class="utils-box-c">
-								<view class="util-list">
-									<!-- <view class="flex justify-center flex-wrap" style="width: 102rpx;" @click="goNav('/package/my/resume')">
-								<image src="../../static/images/my/icon/utils/utils1.png"
-									style="width: 54rpx;height: 54rpx;" mode=""></image>
-								<view class="" style="color: #1A1A1A;font-size: 24rpx;margin-top: 15rpx;">
-									我的简历
-								</view>
-							</view> -->
-									<view class="util-item" @click="goNavNoLogin('/pages/my/invitationUser')">
-										<image src="../../static/images/my/icon/utils/utils2.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											邀请好友
-										</view>
-									</view>
-									<view v-if="XCXIsSelect != '否'" class="util-item"
-										@click="goNavNoLogin('/my/setting/feedbackIndex')">
-										<image src="../../static/images/my/icon/utils/help.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											帮助中心
-										</view>
-									</view>
-									<view v-if="iosAudit == 0" class="util-item" @click="goChat">
-										<image src="../../static/images/my/icon/utils/utils4.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											联系客服
-										</view>
-									</view>
-									<view class="util-item" @click="goNavNoLogin('/my/setting/mimi')">
-										<image src="../../static/images/my/icon/utils/utils5.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											隐私协议
-										</view>
-									</view>
-									<!-- <view class="flex justify-center flex-wrap" style="width: 112rpx;" @click="goNav('/my/setting/xieyi')">
-								<image src="../../static/images/my/icon/utils/utils6.png"
-									style="width: 54rpx;height: 54rpx;" mode=""></image>
-								<view class="" style="color: #1A1A1A;font-size: 24rpx;margin-top: 15rpx;">
-									用户协议
-								</view>
-							</view> -->
-									<view class="util-item" @click="goNavNoLogin('/my/setting/xieyi')">
-										<image src="../../static/images/my/icon/utils/utils6.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											用户协议
-										</view>
-									</view>
-									<view class="util-item" @click="goNavNoLogin('/my/setting/about')">
-										<!-- goNavNoLogin('/my/setting/about') -->
-										<!-- pages/my/jobApplicant/startPage -->
-										<image src="../../static/images/my/icon/utils/utils7.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											关于我们
-										</view>
-									</view>
-									<view v-if="token" class="util-item" @click="goOut()">
-										<image src="../../static/images/my/icon/utils/utils8.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											退出登录
-										</view>
-									</view>
-									<view class="util-item" @click="goNav('/pages/my/ruleCenter')">
-										<image src="../../static/images/my/icon/utils/utils5.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											规则中心
-										</view>
-									</view>
-									<!-- <view class="flex justify-center flex-wrap" style="width: 112rpx;height: 0;" v-if="!token">
-
-							</view>
-							<view class="flex justify-center flex-wrap" style="width: 112rpx;height: 0;">
-
-							</view> -->
-								</view>
-							</view>
 						</view>
 					</view>
 					<view class="beian">客服电话 400-000-0100 工作时间08:00-22:00</view>
@@ -347,17 +181,16 @@
 										<image v-if="isUserVip"
 											style="margin-left: 10rpx; width: 80rpx; height: 30rpx"
 											src="../../static/images/my/isVip.png" mode=""></image>
+										<view class="un-verify" v-if="showCompanyStatusTip">账号待审核</view>
 									</view>
 
 									<view v-if="XCXIsSelect != '否'" class="info-box-header-r-bj flex align-center">
-										{{ companyInfo.companyAllName || "" }}
+										{{ companyInfo.companyAllName || "" }}<text v-if="companyInfo.hrTitle"> · {{ companyInfo.hrTitle }}</text>
 										<!-- <image src="@/static/images/jobApplicant/edit-user.svg" mode="scaleToFill" /> -->
 									</view>
-
-								</view>
-								<view class="arrow-icon" style="margin-left: 10%;">
-									<u-icon name="arrow-right" color="#FFF" size="24"></u-icon>
 								</view>
+								
+								<u-icon name="arrow-right" color="#fff"></u-icon>
 							</view>
 							<!-- 记录栏 -->
 							<view class="info-box-num flex align-center justify-between" v-if="XCXIsSelect != '否'"
@@ -393,75 +226,18 @@
 							<view class="vip-upgrade-button"> 去升级 </view>
 						</view>
 					</view>
-
-					<!-- 职位管理 -->
-					<view class="job-management-card" @click="goJobManagement">
-						<view class="job-management-content">
-							<view class="job-count-text">
-								<text class="count-number">{{ postPushCount || 0 }}</text>
-								<text class="count-label">个在线职位</text>
-							</view>
-							<view class="arrow-icon">
-								<u-icon name="arrow-right" color="#999" size="24"></u-icon>
-							</view>
-						</view>
-					</view>
-
-					<!-- vip -->
-					<!-- <view
-        class="vip flex justify-center"
-        @click="goNav('/my/vip/index')"
-        v-if="XCXIsSelect != '否'"
-      >
-        <view class="vip-box">
-          <image
-            class="vip-box-bg"
-            src="../../static/images/my/icon/vip.png"
-            mode=""
-          ></image>
-          <view class="vip-box-cont flex justify-center">
-            <view
-              class="flex justify-between align-center"
-              style="width: 626rpx; z-index: 9; margin-top: 30rpx"
-            >
-              <view class="flex align-center">
-                <image
-                  src="../../static/images/my/icon/vip2.png"
-                  style="width: 32rpx; height: 29rpx; margin-right: 5rpx"
-                  mode=""
-                ></image>
-                <image
-                  src="../../static/images/my/icon/vip4.png"
-                  style="width: 140rpx; height: 29rpx; margin-right: 20rpx"
-                  mode=""
-                ></image>
-                <text style="color: #914016; font-size: 24rpx">尊享超多特权</text>
-              </view>
-              <view
-                class="flex align-center"
-                style="
-                  color: #914016;
-                  font-size: 24rpx;
-                  font-weight: bold;
-                  z-index: 999;
-                  margin-right: 10rpx;
-                "
-              >
-                {{ isUserVip == true ? "已开通" : "去开通" }}
-                <u-icon name="play-right-fill" color="#914016" size="18"></u-icon>
-              </view>
-            </view>
-          </view>
-        </view>
-      </view> -->
-					<!-- 求职服务 -->
+					<!-- 招聘服务 -->
 					<view class="jobServer flex justify-center" v-if="XCXIsSelect != '否'"
 						:style="XCXIsSelect == '否' ? 'margin-top:30rpx' : ''">
-						<view class="jobServer-box flex justify-center"
-							style="padding: 0 80rpx;box-sizing: border-box;">
+						<view class="jobServer-box flex justify-center">
 							<view class="jobServer-box-c">
 								<!-- <view class="jobServer-box-title"> 招聘服务 </view> -->
 								<view class="jobServer-box-btn flex justify-between">
+									<view class="jobServer-box-btn-item flex justify-center flex-wrap"
+										@click="goJobManagement">
+										<image src="../../static/images/index/gangwei.svg" mode=""></image>
+										<view class=""> 职位管理 </view>
+									</view>
 									<view v-if="$queue.getData('companyId')"
 										class="jobServer-box-btn-item flex justify-center flex-wrap"
 										@click="goNav('/pages/recruitmentData/index')">
@@ -473,21 +249,12 @@
 										<image src="../../static/images/index/qwzn.svg" mode=""></image>
 										<view class=""> 发布招聘 </view>
 									</view>
-									<!-- <view class="jobServer-box-btn-item flex justify-center flex-wrap"
-										@click="refreshJob()">
-										<image src="../../static/images/index/cpbk.svg" mode=""></image>
-										<view class=""> 招聘刷新 </view>
-									</view> -->
 									<view class="jobServer-box-btn-item flex justify-center flex-wrap"
-										@click="$queue.getData('companyId') ? goNav('/my/renzheng/editCompany?companyId=' + $queue.getData('companyId')) : goNav('/pages/my/businessLicense')">
+										@click="handleToCompanyIndex">
 										<image src="../../static/images/index/fwzx.svg" mode=""></image>
 										<view class=""> 公司主页 </view>
+										<view class="info-tip" v-if="showCompanyInfoTip">待完善</view>
 									</view>
-									<!-- <view class="jobServer-box-btn-item flex justify-center flex-wrap"
-										@click="goNav('/package/deliveryRecord/deliveryRecord')">
-										<image src="../../static/images/index/rmhd.svg" mode=""></image>
-										<view class=""> 已投简历 </view>
-									</view> -->
 								</view>
 							</view>
 						</view>
@@ -506,85 +273,8 @@
 						</view>
 					</view>
 
-					<!-- 我的钱包 -->
-					<!-- <view class="money flex justify-center" v-if="XCXIsSelect != '否'">
-						<view class="money-box flex justify-center align-center">
-							<view class="money-box-c flex justify-between">
-								<view class="money-box-c-l flex flex-wrap" @click="goNav('/my/wallet/wallet')">
-									<view class="money-box-c-l-name"> 我的钻石 </view>
-									<view class="money-box-c-l-price flex align-center">
-										{{ money }}
-										<text style="margin-left: 10rpx">钻石</text>
-									</view>
-								</view>
-								<view class="money-box-c-r flex flex-wrap" @click="goNav('/my/gird/browse')">
-									<view class="money-box-c-r-name"> 浏览记录 </view>
-									<view class="money-box-c-r-more"> 点击查看更多 </view>
-								</view>
-							</view>
-						</view>
-					</view> -->
-
-					<!-- 我的招聘 -->
-					<!-- <view
-        class="jobServer flex justify-center"
-        style="margin-top: 20rpx"
-        v-if="XCXIsSelect != '否'"
-      >
-        <view class="jobServer-box flex justify-center">
-          <view class="jobServer-box-c" @click="goNav('/my/order/index')">
-            <view class="jobServer-box-title"> 我的招聘 </view>
-            <view class="jobServer-box-btn flex justify-between">
-              <view
-                class="jobServer-box-btn-item flex justify-center flex-wrap item-width"
-                @click.stop="goNav('/my/order/index?index=' + 1)"
-              >
-                <image
-                  src="../../static/images/my/my/my1.png"
-                  style="width: 46rpx; height: 38rpx"
-                  mode=""
-                ></image>
-                <view class=""> 待审核 </view>
-              </view>
-              <view
-                class="jobServer-box-btn-item flex justify-center flex-wrap item-width"
-                @click.stop="goNav('/my/order/index?index=' + 2)"
-              >
-                <image
-                  src="../../static/images/my/my/my2.png"
-                  style="width: 46rpx; height: 38rpx"
-                  mode=""
-                ></image>
-                <view class=""> 招聘中 </view>
-              </view>
-              <view
-                class="jobServer-box-btn-item flex justify-center flex-wrap item-width"
-                @click.stop="goNav('/my/order/index?index=' + 5)"
-              >
-                <image
-                  src="../../static/images/my/my/my3.png"
-                  style="width: 46rpx; height: 38rpx"
-                  mode=""
-                ></image>
-                <view class=""> 已关闭 </view>
-              </view>
-              <view
-                class="jobServer-box-btn-item flex justify-center flex-wrap item-width"
-                @click.stop="goNav('/my/order/index?index=' + 3)"
-              >
-                <image
-                  src="../../static/images/my/my/my4.png"
-                  style="width: 50rpx; height: 38rpx"
-                  mode=""
-                ></image>
-                <view class=""> 已拒绝 </view>
-              </view>
-            </view>
-          </view>
-        </view>
-      </view> -->
-
 					<!-- 更多工具 -->
+					<view class="utils-title">更多功能</view>
 					<view class="utils flex justify-center">
 						<view class="utils-box flex justify-center">
 							<view class="utils-box-c">
@@ -604,27 +294,6 @@
 											我的权益
 										</view>
 									</view>
-									<!-- <view class="util-item" @click="showToast('功能开发中')">
-										<image src="../../static/images/my/icon/utils/wallet.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											钱包
-										</view>
-									</view>
-									<view class="util-item" @click="showToast('功能开发中')">
-										<image src="../../static/images/my/icon/utils/invoice.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											发票
-										</view>
-									</view> -->
-									<!-- <view class="util-item" @click="showToast('功能开发中')">
-										<image src="../../static/images/my/icon/utils/user.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											个人主页
-										</view>
-									</view> -->
 									<view v-if="$queue.getData('companyId')" class="util-item"
 										@click="goNav('/pages/my/myCompany')">
 										<image src="../../static/images/my/icon/utils/company.png"
@@ -640,94 +309,6 @@
 											我的客服
 										</view>
 									</view>
-									<!-- <view class="util-item" @click="goNav('/my/setting/mimi')">
-										<image src="../../static/images/my/icon/utils/privacy.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											隐私规则
-										</view>
-									</view> -->
-									<!-- <view v-if="XCXIsSelect != '否'" class="util-item"
-										@click="goNav('/package/myLove/myLove')">
-										<image src="../../static/images/my/icon/utils/myLovere.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											我的收藏
-										</view>
-									</view>
-									<view v-if="XCXIsSelect != '否'" class="util-item" @click="goNav('/my/jilu/jilu')">
-										<image src="../../static/images/my/icon/utils/jilu.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											面试记录
-										</view>
-									</view>
-									<view class="util-item" v-if="XCXIsSelect != '否'"
-										@click="goNav('/my/renzheng/zhuanrang')">
-										<image src="../../static/images/my/icon/utils/qy.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											转让企业
-										</view>
-									</view>
-									<view v-if="XCXIsSelect != '否'" class="util-item"
-										@click="goNav('/package/blackList/blackList')">
-										<image src="../../static/images/my/icon/utils/utils3.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											黑名单
-										</view>
-									</view>
-									<view class="util-item" @click="goNav('/pages/my/invitationUserqy')">
-										<image src="../../static/images/my/icon/utils/utils2.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											邀请好友
-										</view>
-									</view>
-									<view class="util-item" @click="goChat">
-										<image src="../../static/images/my/icon/utils/utils4.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											联系客服
-										</view>
-									</view>
-									<view class="util-item" @click="goNav('/my/setting/mimi')">
-										<image src="../../static/images/my/icon/utils/utils5.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											隐私协议
-										</view>
-									</view>
-									<view class="util-item" @click="goNav('/my/setting/xieyi')">
-										<image src="../../static/images/my/icon/utils/utils6.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											用户协议
-										</view>
-									</view>
-									<view class="util-item" @click="goNav('/my/setting/about')">
-										<image src="../../static/images/my/icon/utils/utils7.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											关于我们
-										</view>
-									</view>
-									<view v-if="XCXIsSelect != '否'" class="util-item"
-										@click="goNav('/my/setting/feedbackIndex')">
-										<image src="../../static/images/my/icon/utils/help.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											帮助中心
-										</view>
-									</view>-->
-									<!-- <view v-if="token" class="util-item" @click="goOut()">
-										<image src="../../static/images/my/icon/utils/utils8.png"
-											style="width: 54rpx; height: 54rpx" mode=""></image>
-										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
-											退出登录
-										</view>
-									</view> -->
 								</view>
 							</view>
 						</view>
@@ -766,11 +347,24 @@
 				<u-button @click="handleCloseNotice" class="pop-btn">确认</u-button>
 			</view>
 		</u-popup>
+		
+		<!-- 重新提交审核弹窗 -->
+		<c-modal :value="auditModal" title="提示" @cancel="auditModal = false" @confirm="handleAudit">
+			{{ modalMessage }}
+		</c-modal>
 	</view>
 </template>
 
 <script>
+import cModal from '@/components/c-modal.vue'
+
+const rejectModalMessage = '您提交的申请被驳回,是否重新提交审核?'
+const registModalMessage = '您还未注册企业,是否立即注册企业?'
+
 export default {
+	components: {
+		cModal
+	},
 	data() {
 		return {
 			tips: {
@@ -802,26 +396,6 @@ export default {
 				text: "实习",
 				fontSize: 24,
 			},
-				/* {
-					id: '0',
-					text: '离职-随时到岗',
-					fontSize: 24,
-				},
-				{
-					id: '1',
-					text: '在职-月内到岗',
-					fontSize: 24,
-				},
-				{
-					id: '2',
-					text: '在职-考虑机会',
-					fontSize: 24,
-				},
-				{
-					id: '3',
-					text: '在职-暂不考虑',
-					fontSize: 24,
-				} */
 			],
 			userType: 1,
 			avatar: "",
@@ -849,8 +423,39 @@ export default {
 			iosAudit: 1,
 			showNotice:false,
 			score: 0, // 简历完善度
+			auditModal: false,
+			modalMessage: '',
 		};
 	},
+	computed: {
+		// 显示公司审核状态
+		showCompanyStatusTip() {
+			// 管理员且公司未审核通过
+			if (this.companyInfo?.companyUser?.isAdmin == 1 && this.companyInfo.status != 2) {
+				return true
+			}
+			return false
+		},
+		// 显示公司待完善tip
+		showCompanyInfoTip() {
+			// 1. 管理员
+			// 2. 未完成资料完善
+			if (
+				this.companyInfo?.companyUser?.isAdmin == 1 &&
+				(!this.companyInfo?.companyPeopleDevelop ||
+				!this.companyInfo?.photos || 
+				!this.companyInfo?.companyScope || 
+				!this.companyInfo?.companyContent ||
+				!this.companyInfo?.welfare ||
+				!this.companyInfo?.workTime ||
+				!this.companyInfo?.companyPeople ||
+				!this.companyInfo?.companyLogo)
+			) {
+				return true
+			}
+			return false
+		},		
+	},
 	onLoad(e) {
 		this.XCXIsSelect = this.$queue.getData("XCXIsSelect");
 		var that = this
@@ -1005,8 +610,17 @@ export default {
 				icon: "none",
 			});
 		},
+		// 点击招聘端的“发布招聘”
 		goNavStatus(url) {
-			if (this.companyStatus) {
+			// 判断是否是管理员
+			if (!this.checkUnAdminStatus()) return
+			if (this.companyInfo?.companyUser?.isAdmin != 1 && this.companyInfo?.companyUser?.status == 1) {
+				// 非管理员,并且是待审核状态
+				uni.showToast({
+					title: "等待企业审核通知,请审核通过后操作!",
+					icon: "none",
+				});
+			} else if (this.companyStatus) {
 				if (this.companyStatus == 1) {
 					uni.showToast({
 						title: "企业认证审核中,请审核通过后操作!",
@@ -1298,6 +912,7 @@ export default {
 		},
 		// 跳转到职位管理页面
 		goJobManagement() {
+			if (!this.checkUnAdminStatus()) return
 			let status = '';
 			if (this.companyInfo && !this.companyInfo.companyCertification) {
 				status = 1;
@@ -1455,23 +1070,14 @@ export default {
 		//跳转
 		goNav(e) {
 			if (this.userId) {
-				// #ifdef MP-WEIXIN
-				if (uni.getStorageSync("sendMsg")) {
-					// console.log('授权+1')
-					wx.requestSubscribeMessage({
-						tmplIds: this.arr,
-						success(re) {
-							var datas = JSON.stringify(re);
-							if (datas.indexOf("accept") != -1) {
-								// console.log(re)
-							}
-						},
-						fail: (res) => {
-							// console.log(res)
-						},
-					});
+				// 跳转不进行校验
+				if (e != 'switchRoles' && e != '/pages/my/setup' && e != '/pages/my/ruleCenter') {
+					if (!this.checkUnAdminStatus()) return
+				}
+				// 跳转判断是否完成了认证信息完善
+				if (e == '/pages/my/myCompany') {
+					if (!this.checkUnAdminStatus({ unFinishCompanyInfo: true })) return
 				}
-				// #endif
 				uni.navigateTo({
 					url: e,
 				});
@@ -1709,6 +1315,58 @@ export default {
 		handleCloseNotice() {
 			this.$queue.setData('hadShowPoster', '1')
 			this.showNotice = false
+		},
+		
+		// 点击公司首页
+		handleToCompanyIndex() {
+			// 如果员工申请被拒绝,则跳转到加入企业页面
+			if (!this.checkUnAdminStatus({ notAudit: true })) return
+			// 如果是非管理员,则提示“仅企业管理员可以打开”
+			if (this.companyInfo.companyUser?.isAdmin != 1) {
+				return this.$queue.showToast('仅企业管理员可以打开')
+			}
+			this.$queue.getData('companyId') ? this.goNav('/my/renzheng/editCompany?companyId=' + this.$queue.getData('companyId')) : this.goNav('/pages/my/businessLicense')
+		},
+		
+		// 非管理员,且提交申请被拒绝
+		checkUnAdminStatus(options) {
+			// 如果是招聘端
+			if (this.userType == 2) {
+				// 企业未注册
+				if (!this.companyInfo?.status) {
+					this.modalMessage = registModalMessage
+					this.auditModal = true
+					return false
+				}
+				// 企业待审核是否限制跳转
+				if (options && options.notAudit && this.companyInfo?.status == 1) {
+					this.$queue.showToast('企业认证审核中,请审核通过后操作!')
+					return false
+				}
+				// 企业认证信息未完善
+				if (options && options.unFinishCompanyInfo) {
+					this.modalMessage = '没有进行企业认证,是否立即认证!'
+					this.auditModal = true
+					return false
+				}
+				// 非管理员,且提交审核被拒绝
+				if (this.companyInfo?.companyUser?.isAdmin != 1 && this.companyInfo?.companyUser?.status == 3) {
+					this.modalMessage = rejectModalMessage
+					this.auditModal = true
+					return false
+				}
+			}
+			return true
+		},
+		
+		// 重新提交审核
+		handleAudit() {
+			uni.navigateTo({
+				url: '/pages/my/businessLicense',
+				success: () => {
+					this.auditModal = false
+				}
+			})
 		}
 	},
 };
@@ -1837,11 +1495,11 @@ page {
 
 // 推广横幅
 .promo-banner {
-	margin: 10rpx 40rpx 10rpx 40rpx;
+	margin: 32rpx 40rpx 10rpx 40rpx;
 	background: var(--线性渐变,
 			linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%));
 	border-radius: 24rpx;
-	padding: 16rpx 40rpx;
+	padding: 16rpx 32rpx;
 
 	.banner-content {
 		display: flex;
@@ -1904,7 +1562,7 @@ page {
 
 // VIP升级横幅
 .vip-upgrade-banner {
-	margin: 20rpx 40rpx 10rpx 40rpx;
+	margin: 20rpx 40rpx 16rpx 40rpx;
 	background: linear-gradient(165.89deg,
 			rgba(251, 231, 185, 1),
 			rgba(240, 176, 72, 1) 100%);
@@ -1954,7 +1612,7 @@ page {
 	margin: 0rpx 40rpx;
 	background: #ffffff;
 	border-radius: 12rpx;
-	padding: 12rpx 32rpx;
+	padding: 18rpx 50rpx;
 	box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
 
 	.job-management-content {
@@ -1971,11 +1629,12 @@ page {
 				font-size: 32rpx;
 				font-weight: 600;
 				margin-right: 8rpx;
+				line-height: 40rpx;
 			}
 
 			.count-label {
-				color: #666666;
-				font-size: 28rpx;
+				color: #616E7C;
+				font-size: 16rpx;
 				font-weight: 400;
 			}
 		}
@@ -2090,6 +1749,17 @@ page {
 					font-weight: 400;
 					line-height: 72rpx;
 					text-align: left;
+					
+					.un-verify {
+						border-radius: 4px;
+						background: rgba(255, 0, 0, 1);
+						color: rgba(255, 255, 255, 1);
+						font-size: 10px;
+						font-weight: 400;
+						line-height: 10px;
+						margin-left: 10px;
+						padding: 4px;
+					}
 				}
 
 				.info-box-header-r-bj {
@@ -2195,7 +1865,7 @@ page {
 .jobServer {
 	width: 100%;
 	// height: 235rpx;
-	margin-top: 16rpx;
+	// margin-top: 16rpx;
 	z-index: 1;
 
 	.jobServer-box {
@@ -2250,18 +1920,24 @@ page {
 	}
 }
 
+.utils-title {
+	padding: 48rpx 0 16rpx;
+	margin: 0 64rpx;
+	border-bottom: 0.5px solid rgba(238, 238, 238, 1);
+}
+
 .utils {
 	width: 100%;
 	// height: 308rpx;
-	margin-top: 20rpx;
+	// margin-top: 20rpx;
 	margin-bottom: 20rpx;
 
 	.utils-box {
 		width: 686rpx;
 		height: 100%;
-		background-color: #ffffff;
+		// background-color: #ffffff;
 		border-radius: 24rpx;
-		padding: 40rpx 20rpx;
+		padding: 16rpx 20rpx;
 		box-sizing: border-box;
 
 		.utils-box-c {
@@ -2361,7 +2037,7 @@ page {
 
 // 更多功能区域
 .more-functions {
-	margin: 48rpx 32rpx 0;
+	margin: 40rpx 32rpx 0;
 	padding: 24rpx 48rpx 48rpx 48rpx;
 	/* background: #fff;
 		border-radius: 24rpx; */

+ 88 - 10
pages/my/jobPosting.vue

@@ -87,13 +87,25 @@
 			</view>
 		</view>
 		<view class="button-section">
-			<view class="link-btn" @click="handleToIndex">稍后发布</view>
-			<view class="submit-btn" @click="goJobPostingSecond">下一步</view>
+			<view class="link-btn" v-if="showNotPushBtn" @click="handleToIndex">稍后发布</view>
+			<view class="submit-btn" :class="{ 'active-btn': canNext }" @click="goJobPostingSecond">下一步</view>
 		</view>
+		
+		<c-modal
+			:value="showTipModal"
+			title="温馨提示"
+			:show-cancel-button="false"
+			confirm-button-text="我知道了"
+			@confirm="showTipModal = false"
+		>
+			<view>发布提交后需要企业管理员认证账号,</view>
+			<view>岗位将会在1-3个工作日审核</view>
+		</c-modal>
 	</view>
 </template>
 <script>
 import navBar from "@/components/nav-bar/index.vue";
+import cModal from '@/components/c-modal.vue'
 export default {
 	data() {
 		return {
@@ -134,11 +146,38 @@ export default {
 				province:'',
 				city:'',
 				district:'',
-			}
+			},
+			remainingPostionCount: 0, // 剩余岗位数量
+			showTipModal: false,
+			isAdmin: true,
+			companyInfo: {}
 		};
 	},
 	components: {
 		navBar,
+		cModal
+	},
+	computed: {
+		// 判断是否可以点击下一步
+		canNext() {
+			if (this.jobInfo.ruleClassifyId && this.text && this.remainingPostionCount) {
+				return true
+			}
+			return false
+		},
+		
+		// 显示稍后发布按钮
+		showNotPushBtn() {
+			// 显示条件
+			// 1. 企业是待审核状态
+			// 2. 员工申请加入是待审核状态
+			let adminStatus = this.isAdmin && this.status != 2
+			let employeeStatus = !this.isAdmin && this.companyInfo?.companyUser?.status == 1
+			if (adminStatus || employeeStatus) {
+				return true
+			}
+			return false
+		}
 	},
 
 	onLoad(options) {
@@ -190,6 +229,7 @@ export default {
 		console.log('接收的公司ID:', this.companyId);
 		console.log('接收的公司状态:', this.status);
 		this.getAddress();
+		this.getcompanystatus();
 	},
 	onUnload() {
 		// 页面卸载时移除监听,避免内存泄漏
@@ -224,8 +264,14 @@ export default {
 		},
 		getVipData(){
 			this.$Request.get("/app/user/vipData").then((res) => {
-				this.lastDueTimes = res.data.lastDueTimes || 0;
-				this.lastPostTimes = res.data.lastPostTimes || 0;
+				if (res.code == 0) {
+					this.lastDueTimes = res.data.lastDueTimes || 0;
+					this.lastPostTimes = res.data.lastPostTimes || 0;
+					this.remainingPostionCount = Number(res.data.lastDueTimes || 0) + Number(res.data.lastPostTimes || 0)
+					if (!this.remainingPostionCount) {
+						this.showTipModal = true
+					}
+				}
 			})
 		},
 		goBusinessLicense() {
@@ -406,6 +452,11 @@ export default {
 					return
 				}
 			}
+			
+			if (!this.remainingPostionCount) {
+				this.showTipModal = true
+				return
+			}
 
 
 			const data = {
@@ -474,10 +525,32 @@ export default {
 		
 		// 跳转至公司认证页面
 		handleToIndex() {
-			uni.navigateTo({
-				url: `/package/jobIntention/companyImg?companyName=${this.companyName}&companyId=${this.companyId}`
-			})
-		}
+			if (!this.isAdmin) {
+				uni.reLaunch({
+					url: '/pages/index/index'
+				})
+			} else {
+				uni.navigateTo({
+					url: `/package/jobIntention/companyImg?companyName=${this.companyName}&companyId=${this.companyId}`
+				})
+			}
+		},
+		
+		// 查询用户企业状态
+		getcompanystatus() {
+			this.$Request.get('/app/company/selectCompanyByUserId')
+				.then((res) => {
+					if (res.code == 0) {
+						// 判断是否是管理员
+						if (res.data?.companyUser?.isAdmin != 1) {
+							this.isAdmin = false
+						}
+						this.status = res.data.status
+						this.companyInfo = res.data
+						this.companyId = res.data.companyId
+					}
+				})
+		},
 	},
 };
 </script>
@@ -684,6 +757,7 @@ export default {
 			.radioseletvi {
 				position: relative;
 				padding: 0;
+				box-shadow: none;
 				::v-deep uni-radio-group{
 					flex: 1;
 					.radio {
@@ -759,7 +833,8 @@ export default {
 		flex-shrink: 0;
 		border-radius: 999px;
 		box-shadow: 0px -4px 16px 0px rgba(0, 0, 0, 0.04);
-		background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+		// background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+		background: rgba(0, 0, 0, 0.08);
 		color: rgba(255, 255, 255, 1);
 		font-family: DM Sans;
 		font-size: 32rpx;
@@ -770,6 +845,9 @@ export default {
 		align-items: center;
 		padding: 16rpx 32rpx;
 		box-sizing: border-box;
+		&.active-btn {
+			background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
+		}
 	}
 	.link-btn {
 		text-align: center;

+ 57 - 24
pages/my/jobPostingSecond.vue

@@ -75,7 +75,7 @@
 		</view>
 
 		<view class="button-section">
-			<view class="link-btn" @click="handleToIndex">稍后发布</view>
+			<view class="link-btn" v-if="showNotPushBtn" @click="handleToIndex">稍后发布</view>
 			<view class="submit-btn" @click="submitPost">发布</view>
 		</view>
 
@@ -256,7 +256,9 @@ export default {
 			type: '',
 			ruleClassifyId:'',//岗位id
 			dataInfo:{},
-			companyAddressInfo:{}
+			companyAddressInfo:{},
+			isAdmin: true,
+			companyInfo: {},
 		};
 	},
 	components: {
@@ -265,6 +267,18 @@ export default {
 	computed: {
 		welfareValue() {
 			return this.welfareTag + this.welfareText
+		},
+		// 显示稍后发布按钮
+		showNotPushBtn() {
+			// 显示条件
+			// 1. 管理员,企业是待审核状态
+			// 2. 员工申请加入是待审核状态
+			let adminStatus = this.isAdmin && this.status != 2
+			let employeeStatus = !this.isAdmin && this.companyInfo?.companyUser?.status == 1
+			if (adminStatus || employeeStatus) {
+				return true
+			}
+			return false
 		}
 	},
 	onLoad(options) {
@@ -279,18 +293,19 @@ export default {
 		// 	this.isBack = true;
 		// }
 		// 接收上个页面传递的公司名称参数
-		if (options.companyName) {
-			this.companyName = decodeURIComponent(options.companyName);
-			console.log('接收的公司名称:', this.companyName);
-		}
-
-		if (options.status) {
-			this.status = decodeURIComponent(options.status);
-			console.log('接收的公司状态:', this.status);
-		} else {
-			//this.status = uni.getStorageSync('companyStatus')
-			this.getcompanystatus()
-		}
+		// if (options.companyName) {
+		// 	this.companyName = decodeURIComponent(options.companyName);
+		// 	console.log('接收的公司名称:', this.companyName);
+		// }
+		this.getcompanystatus()
+
+		// if (options.status) {
+		// 	this.status = decodeURIComponent(options.status);
+		// 	console.log('接收的公司状态:', this.status);
+		// } else {
+		// 	//this.status = uni.getStorageSync('companyStatus')
+		// 	this.getcompanystatus()
+		// }
 		if(options.companyAddressInfo){
 			this.companyAddressInfo = JSON.parse(decodeURIComponent(options.companyAddressInfo));
 		}
@@ -347,7 +362,7 @@ export default {
 			}
 			console.log('接收PID:', this.pid);
 		} 
-
+		this.getcompanystatus()
 	},
 	onUnload() {
 		// 页面关闭时移除监听,避免内存泄漏
@@ -426,10 +441,15 @@ export default {
 						});
 						return;
 					}
-					this.status = res.data.companyinfo || "";
+					if (res.data?.companyUser?.isAdmin != 1) {
+						this.isAdmin = false
+					}
+					this.companyInfo = res.data
+					this.status = res.data.status || "";
+					this.companyName = res.data.companyAllName || '';
 					this.$queue.setData('companyId', res.data.companyId);
 					this.$queue.setData('companyStatus', res.data.companyStatus);
-					console.log("查询用户企业状态", this.companyinfo)
+					console.log("查询用户企业状态", this.status)
 				})
 				.catch((err) => {
 					console.error("查询失败:", err);
@@ -599,10 +619,17 @@ export default {
 									'&companyId=' + this.companyId
 							});
 						} else if (this.status == 2) {//审核通过
-							uni.navigateTo({
-								url: '/pages/jobManagement/jobManagement'
-							})
-
+							// 判断是否是管理员
+							if (this.companyInfo.companyUser.isAdmin != 1 && this.companyInfo.companyUser.status == 1) {
+								// 非管理员,状态是待审核
+								uni.navigateTo({
+									url: '/package/jobIntention/completeMsg'
+								});
+							} else {
+								uni.navigateTo({
+									url: '/pages/jobManagement/jobManagement'
+								})								
+							}
 						} else {
 							// uni.navigateTo({
 							// 	url: '/my/renzheng/editCompany'
@@ -634,9 +661,15 @@ export default {
 		
 		// 跳转至公司认证页面
 		handleToIndex() {
-			uni.navigateTo({
-				url: `/package/jobIntention/companyImg?companyName=${this.companyName}&companyId=${this.companyId}`
-			})
+			if (!this.isAdmin) {
+				uni.reLaunch({
+					url: '/pages/index/index'
+				})
+			} else {
+				uni.navigateTo({
+					url: `/package/jobIntention/companyImg?companyName=${this.companyName}&companyId=${this.companyId}`
+				})
+			}
 		}
 	},
 };

+ 92 - 2
pages/my/joinCompany.vue

@@ -1,9 +1,16 @@
 <template>
 	<view class="page-container">
+		<cTop></cTop>
 		<view class="content">
 			<view class="title">Hi,欢迎加入亿职赞</view>
 			<view class="desc">填写企业信息,开启高效招聘方式</view>
 			<view class="sub-title">公司名称</view>
+			<view class="select-bar flex align-center justify-between" @click="handleToSelectPage">
+				<view class="name" v-if="companyName">{{ companyName }}</view>
+				<view class="placeholder" v-else>请输入关键字搜索,选择已经认证的公司</view>
+				<u-icon name="arrow-down" color="rgba(198, 197, 202, 1)"></u-icon>
+			</view>
+			<image src="/static/images/company.png" class="company-bg"></image>
 		</view>
 		
 		<view class="fixed-section">
@@ -13,14 +20,80 @@
 </template>
 
 <script>
+	import cTop from '@/components/c-top.vue'
 	export default {
+		components: {
+			cTop
+		},
 		data() {
 			return {
-				
+				companyName: '',
+				companyId: '',
+				loading: false
 			};
 		},
+		onLoad() {
+			uni.$on('selectCompany', data => {
+				this.companyId = data.companyId
+				this.companyName = data.companyName
+			})
+		},
+		onUnload() {
+			uni.$off('selectCompany')
+		},
 		methods: {
-			handleNext() {}
+			handleToSelectPage() {
+				uni.navigateTo({
+					url: '/pages/my/searchCompanys'
+				})
+			},
+			handleNext() {
+				if (this.companyId) {
+					this.createCompany()
+				} else {
+					uni.showToast({
+						title: '请选择公司',
+						icon :"none",
+						duration: 2000
+					});
+				}
+			},
+			// 创建公司
+			createCompany() {
+				if (this.loading) return
+				this.loading = true
+				
+				uni.showLoading({
+					title: '创建中'
+				})
+				this.$Request
+					.postJson('/app/company/insertCompany', {
+						companyId: this.companyId
+					})
+					.then(res => {
+						if (res.code === 0) {
+							// 跳转至招聘岗位页面
+							uni.navigateTo({
+								url: `/pages/my/jobPosting?companyName=${this.companyName}&companyId=${res.data.companyId}&isBack=${false}&status=${res.data.status}`
+							})
+						} else {
+							uni.showToast({
+								title: res.msg || '提交失败,请重试',
+								icon: 'none'
+							})
+						}
+						uni.hideLoading()
+						this.loading = false
+					})
+					.catch(() => {
+						uni.hideLoading()
+						this.loading = false
+						uni.showToast({
+							title: '网络异常,请稍后重试',
+							icon: 'none'
+						})
+					})
+			}
 		}
 	}
 </script>
@@ -50,6 +123,23 @@
 				font-size: 28rpx;
 				font-weight: 500;
 				line-height: 44rpx;
+				margin-bottom: 16rpx;
+			}
+			.select-bar {
+				padding: 32rpx 44rpx;
+				border-radius: 6px;
+				box-shadow: 0px 8px 150px 0px rgba(0, 0, 0, 0.06);
+				background: rgba(255, 255, 255, 1);
+				line-height: 40rpx;
+				.placeholder {
+					color: rgba(153, 153, 153, 1);
+				}
+			}
+			.company-bg {
+				display: block;
+				width: 550rpx;
+				height: 550rpx;
+				margin: 200rpx auto 100rpx;
 			}
 		}
 	}

+ 587 - 345
pages/my/myCompany.vue

@@ -1,13 +1,7 @@
 <template>
 	<view class="my-company-page flex flex-direction">
 		<!-- 自定义导航栏 -->
-		<view class="navbar-content" :style="{ paddingTop: 12 + BarHeight + 'px' }">
-			<view class="nav-left" @click="goBack">
-				<u-icon name="arrow-leftward" color="#FFF" size="42"></u-icon>
-			</view>
-			<view class="nav-title">我的公司</view>
-			<view class="nav-right"></view>
-		</view>
+		<nav-bar title="我的公司" color="#fff"></nav-bar>
 
 		<!-- 头部渐变背景区域 -->
 		<view class="header-section">
@@ -15,185 +9,436 @@
 			<view class="illustration-area">
 				<image src="/static/images/gongsi.svg" class="company-illustration" mode="aspectFit" />
 			</view>
-
-			<!-- 公司名称显示 -->
-			<view class="company-name-section">
-				<!-- <view class="company-brand">{{companyInfo.companyName}}</view> -->
-				<view class="company-full-name">{{ companyInfo.companyAllName }}</view>
-			</view>
 		</view>
-
-		<!-- 公司信息卡片和按钮整体 -->
-		<view class="company-content-wrapper">
-			<view class="company-info-card">
-				<view class="info-item">
-					<view class="info-label">公司规模</view>
-					<view class="info-value">{{ companyInfo.companyPeople ? (companyInfo.companyPeople + '人') : '--' }}
-					</view>
-				</view>
-				<view class="info-item">
-					<view class="info-label">融资阶段</view>
-					<view class="info-value">{{ companyInfo.companyDevelop || '--' }}</view>
-				</view>
-				<view class="info-item">
-					<view class="info-label">所属行业</view>
-					<view class="info-value">{{ companyInfo.companyScope || '--' }}</view>
-				</view>
-			</view>
-
-			<!-- 操作按钮 -->
-			<view class="action-buttons">
-				<view class="leave-btn" @click="leaveCompany" v-if="companyInfo && !companyInfo.isNo">
-					<text>离开公司</text>
+		
+		<template v-if="!loading">
+			<!-- 管理员端 -->
+			<view class="admin-container" v-if="isAdmin">
+				<view class="company-name">{{ companyInfo.companyAllName }}</view>
+				<view class="buttons flex">
+					<view class="button" @click="showLeaveModal = true">离开公司</view>
+					<view class="button" @click="showChangeModal = true">变更账号</view>
 				</view>
-				<view class="change-btn" @click="goCompany" v-else>
-					<text>加入公司</text>
+				
+				<view class="list-wrapper">
+					<scroll-view scroll-y="true" class="scroll-view">
+						<view class="list">
+							<view class="list-title">账号审核列表</view>
+							<view class="account-item" v-for="(item, index) in auditList" :key="index">
+								<view class="account-info flex justify-between">
+									<view class="account-info-l">
+										<view class="title flex align-center">
+											<text>{{ item.userName }}/{{ item.phone }}</text>
+											<view class="badge" v-if="item.isAdmin">管理员</view>
+										</view>
+										<view class="sub-title">提交时间:{{ item.createTime }}</view>
+										<view class="sub-title">{{ item.hrPosition || '--' }}</view>
+									</view>
+									<view class="status-text" :class="getStatusClass(item.status)" @click="handleAudit(item)">{{ item.status | statusText }}</view>
+								</view>
+								<view class="bottom-button" v-if="item.status == 2" @click="changeSelectAccount(item)">变更账号</view>
+							</view>
+						</view>
+					</scroll-view>					
 				</view>
 			</view>
-		</view>
-
-		<!-- 离开公司确认弹窗 -->
-		<u-popup v-model="showLeaveModal" mode="center" width="630rpx" border-radius="24" :closeable="false">
-			<view class="leave-modal">
-				<view class="modal-content">
-					<view class="modal-title">离开/更换公司可能造成的影响:</view>
-					<view class="impact-list">
-						<view class="impact-item">
-							<text class="item-number">1.</text>
-							<text class="item-text">注销招聘者的身份 (后续需要重新认证)</text>
-						</view>
-						<view class="impact-item">
-							<text class="item-number">2.</text>
-							<text class="item-text">发布中的职位将会被关闭</text>
+			
+			<!-- 非管理员端 -->
+			<view class="un-admin-container" v-else>
+				<view class="company-name">{{ companyInfo.companyAllName }}</view>
+				
+				<view class="content-wrapper">
+					<view class="info-list">
+						<view class="info-item">
+							<text>公司规模</text>
+							<text>{{ companyInfo.companyPeople || '--' }}</text>
 						</view>
-						<view class="impact-item">
-							<text class="item-number">3.</text>
-							<text class="item-text">正在使用中的付费职位等相关权益不在生效, 并且不做退还</text>
+						<view class="info-item">
+							<text>融资阶段</text>
+							<text>{{ companyInfo.companyDevelop || '--' }}</text>
 						</view>
-						<view class="impact-item">
-							<text class="item-number">4.</text>
-							<text class="item-text">更换/离开公司后, 若您有绑定的免密支付将自动解除</text>
+						<view class="info-item">
+							<text>所属行业</text>
+							<text>{{ companyInfo.companyScope || '--' }}</text>
 						</view>
 					</view>
-				</view>
-
-				<view class="modal-buttons">
-					<view class="cancel-btn" @click="closeLeaveModal">
-						<text>取消</text>
+					
+					<view class="buttons">
+						<view class="button plain" @click="showLeaveModal = true">离开公司</view>
+						<view class="button primary" @click="showChangeModal = true">变更账号</view>
 					</view>
-					<view class="confirm-btn" @click="confirmLeaveCompany">
-						<text>仍要离开/更换</text>
+				</view>
+			</view>
+		</template>
+		
+		<!-- 审核 -->
+		<c-modal
+			:value="showAuditModal"
+			:maskCloseAble="true"
+			title="审核"
+			cancel-button-text="拒绝"
+			confirm-button-text="通过"
+			@cancel="handleRejest"
+			@confirm="handlePass"
+			@close="handleCloseModal"
+		>
+			<view class="audit-modal">
+				<view>请审核账号是否为您公司的员工</view>
+				
+				<view class="account-info flex">
+					<view class="account-info-l">
+						<view class="title flex align-center">
+							<text>王先生/18828000000</text>
+						</view>
+						<view class="sub-title">提交时间:2021.09.22 09:55</view>
+						<view class="sub-title">总监</view>
 					</view>
 				</view>
+				
+				<view class="check-bar flex align-center">
+					<u-checkbox v-model="auditChecked" label-size="24">通过并设置为管理员</u-checkbox>
+					<view class="tip">仅能设置2个管理员</view>
+				</view>
+			</view>
+		</c-modal>
+		
+		<!-- 离开公司 -->
+		<c-modal
+			:value="showLeaveModal"
+			:maskCloseAble="true"
+			title="温馨提示"
+			cancel-button-text="确定离开"
+			confirm-button-text="去变更"
+			@cancel="handleLeave"
+			@confirm="handleChange"
+			@close="handleCloseModal"
+		>
+			<view class="audit-modal">
+				<view>您是企业的超级管理员</view>
+				<view>如若需要保留数据请取消,并变更账号</view>
+				<view>如您确定离开公司,公司及其相关所有数据均会删除,请确认!</view>
+			</view>
+		</c-modal>
+
+		<!-- 变更账号 -->
+		<c-modal
+			:value="showChangeModal"
+			title="请填写您需要变更的账号"
+			@cancel="showChangeModal = false"
+			@confirm="submitChangeAccount"
+		>
+			<view class="input-wrapper" style="margin-top: 30px">
+				<input v-model="phoneNum" type="number" placeholder="请输入要变更的手机号码" maxlength="11" placeholder-class="placeholder" />
 			</view>
-		</u-popup>
+			<view class="input-wrapper flex align-center justify-between" style="margin-bottom: 30px;">
+				<input v-model="verifyCode" type="number" placeholder="输入验证码" maxlength="6" class="verify-input" placeholder-class="placeholder" />
+				<view class="verify-btn" @click="getVerifyCode">{{ disabled ? `${countdown}s` : '获取验证码' }}</view>
+			</view>
+		</c-modal>
 	</view>
 </template>
 
 <script>
+import navBar from '@/components/nav-bar/index.vue'
+import cModal from '@/components/c-modal.vue'
+	
 export default {
+	components: {
+		navBar,
+		cModal
+	},
 	data() {
 		return {
 			companyInfo: {
 				isNo: true,
 			},
-			showLeaveModal: false, // 控制弹窗显示
-			leaveType: 1,
-			BarHeight: 0,
+			isAdmin: false,
+			companyId: '',
+			loading: false,
+			showAuditModal: false,
+			auditChecked: false, // 是否设置成管理员
+			showLeaveModal: false,
+			auditList: [],
+			updating: false,
+			currentAuditItem: {}, // 当前被审核人
+			showChangeModal: false, // 变更弹窗
+			disabled: false,
+			timer: null,
+			countdown: 60,
+			getting: false,
+			verifyCode: '',
+			phoneNum: '', // 输入手机号
+			changePhoneNum: '', // 被变更手机号
+			userPhoneNum: '', // 当前登录人手机号
 		};
 	},
+	filters: {
+		statusText(status) {
+			switch (status) {
+				case 1:
+					return '请审核'
+				case 2:
+					return '已通过'
+				case 3:
+					return '已拒绝'
+				default:
+					return ''
+			}
+		}
+	},
+	watch: {
+		showAuditModal(nValue) {
+			if (!nValue) {
+				this.auditChecked = false
+			}
+		},
+		showChangeModal(nValue) {
+			if (!nValue) {
+				// 关闭弹窗时清除选择的手机号
+				this.changePhoneNum = ''
+				this.verifyCode = ''
+				this.phoneNum = ''
+				this.clearCountdownTimer()
+			}
+		}
+	},
 	onLoad() {
-		// #ifdef APP-PLUS
-		let systemInfo = uni.getSystemInfoSync();
-		this.BarHeight = systemInfo.statusBarHeight;
-		// #endif
+		// /app/user/selectUserById
 		this.getCompanyStatus()
 	},
+	onUnload() {
+		this.clearCountdownTimer()
+	},
 	methods: {
-		// 返回上一页
-		goBack() {
-			uni.navigateBack();
+		getStatusClass(status) {
+			switch (status) {
+			    case 1:
+			        return 'btn'; // 待审核
+			    case 2:
+			        return '';    // 已通过
+			    case 3:
+			        return 'info';  // 已拒绝
+			    default:
+			        return '';
+			}
 		},
 		getCompanyStatus() {
-			this.$Request.get("/app/company/selectCompanyByUserId").then((res) => {
-				if (res.code == 0 && res.data) {
-					this.companyInfo = res.data
+			uni.showLoading({ title: '加载中' })
+			this.loading = true
+			this.$Request.get("/app/company/selectCompanyByUserId")
+				.then((res) => {
+					this.loading = false
+					uni.hideLoading()
+					if (res.code == 0 && res.data) {
+						this.companyInfo = res.data
+						this.companyId = res.data.companyId
+						this.userPhoneNum = res.data.phone
+						this.auditList = res.data.companyUserVos || []
+						if (res.data.companyUser?.isAdmin == 1) {
+							this.isAdmin = true
+						}
+					} else {
+						this.companyInfo = {
+							isNo: true,
+						};
+					}
+				}).catch(err => {
+					this.loading = false
+					uni.hideLoading()
+				});
+		},
+		
+		// 审核账号
+		handleAudit(item) {
+			if (item.status != 1) return
+			this.showAuditModal = true
+			this.currentAuditItem = item
+		},
+		
+		handleCloseModal() {
+			this.showAuditModal = false
+			this.showLeaveModal = false
+		},
+		
+		// 审核账号
+		auditAccount(status) {
+			if (this.updating) return
+			this.updating = true
+			uni.showLoading({ title: '处理中' })
+			this.$Request.getT('/app/company/auditCompanyUser', {
+				companyId: this.companyId,
+				auditedUserId: this.currentAuditItem.userId,
+				isAdmin: this.auditChecked ? 1: 0,
+				status
+			}).then(res => {
+				if (res.code == 0) {
+					this.$queue.showToast('操作成功')
+					this.showAuditModal = false
+					this.getCompanyStatus()
 				} else {
-					this.companyInfo = {
-						isNo: true,
-					};
+					this.$queue.showToast(res.msg || '操作成功')
 				}
-			});
+				this.updating = false
+				uni.hideLoading()
+			}).catch(() => {
+				this.$queue.showToast('失败了,请重试')
+				this.updating = false
+				uni.hideLoading()
+			})
 		},
-		// 离开公司
-		leaveCompany() {
-			this.showLeaveModal = true;
+		
+		// 审核拒绝
+		handleRejest() {
+			this.auditAccount(3)
 		},
-		// 加入公司
-		goCompany() {
-			uni.navigateTo({
-				url: '/pages/my/businessLicense'
+		
+		// 审核通过
+		handlePass() {
+			this.auditAccount(2)
+		},
+		
+		// 确定离开
+		handleLeave() {
+			if (this.updating) return
+			this.updating = true
+			uni.showLoading({ title: '处理中' })
+			this.$Request.getT('/app/company/deleteCompany', {
+				companyId: this.companyId
+			}).then(res => {
+				if (res.code == 0) {
+					this.showLeaveModal = false
+					this.logout()
+				} else {
+					this.$queue.showToast(res.msg || '出错了,请稍后再试')
+				}
+				this.updating = false
+				uni.hideLoading()
+			}).catch(() => {
+				this.$queue.showToast('出错了,请稍后再试')
+				this.updating = false
+				uni.hideLoading()
 			})
+			// /sqx_fast/app/company/deleteCompany
 		},
-		// 关闭离开公司弹窗
-		closeLeaveModal() {
-			this.showLeaveModal = false;
+		
+		// 去变更
+		handleChange() {
+			this.showLeaveModal = false
+			this.showChangeModal = true
 		},
-
-		// 确认离开公司
-		confirmLeaveCompany() {
-			this.showLeaveModal = false;
-			uni.showLoading({
-				title: '处理中...'
-			});
-			this.$Request.postJson("/app/company/deleteCompany").then(res => {
-				uni.hideLoading();
-				if(res.code == 0 && res.data && res.data.code != 0){
-					uni.showToast({
-						title: res.data.msg || '已离开公司',
-						icon:'none'
-					});
-					return;
-				}
-				if (res.code === 0) {
-					// 离开公司之后需要清除缓存的公司信息
-					uni.removeStorageSync('companyId');
-					uni.removeStorageSync('companyInfo');
-					uni.removeStorageSync('companyName');
-					uni.removeStorageSync('companyStatus')
-					setTimeout(() => {
-						uni.switchTab({
-							url: '/pages/my/index'
-						})
-					}, 1000)
-					if (this.leaveType === 1) {
-						uni.showToast({
-							title: '已离开公司',
-							icon: 'success'
-						});
+		
+		// 获取验证码
+		getVerifyCode() {
+			if (!this.phoneNum) {
+				uni.showToast({
+					title: '请输入手机号',
+					icon: 'none'
+				})
+				return
+			}
+			if (!/^1[3-9]\d{9}$/.test(this.phoneNum)) {
+				uni.showToast({
+					title: '请输入正确的手机号',
+					icon: 'none'
+				})
+				return
+			}
+			
+			if (this.disabled || this.getting) return
+			
+			uni.showLoading({ title: '正在发送验证码' })
+			this.getting = true
+			this.$Request
+				.getT('/app/Login/sendMsg/' + this.phoneNum + '/bind')
+				.then((res) => {
+					if (res.code === 0) {
+						this.startCountdown()
 					} else {
-						uni.navigateTo({
-							url: 'pages/my/businessLicense'
+						uni.showModal({
+							showCancel: false,
+							title: '短信发送失败',
+							content: res.msg ? res.msg : '请一分钟后再获取验证码',
 						});
 					}
+				})
+				.finally(() => {
+					this.getting = false
+					uni.hideLoading();
+				})
+		},
+		
+		startCountdown() {
+			this.disabled = true
+			this.timer = setInterval(() => {
+				this.countdown--
+				if (this.countdown <= 0) {
+				    this.clearCountdownTimer()
+				}
+			}, 1000)
+		},
+		clearCountdownTimer() {
+		    if (this.timer) {
+				clearInterval(this.timer)
+				this.timer = null // 重置定时器实例
+				this.countdown = 60
+				this.disabled = false
+			}
+		},
+		
+		// 变更选择的账号
+		changeSelectAccount(item) {
+			this.changePhoneNum = item.phone
+			this.showChangeModal = true
+		},
+		
+		// 提交变更
+		submitChangeAccount() {
+			if (this.updating) return
+			this.updating = true
+			
+			if (!this.phoneNum) {
+				uni.showToast({
+					title: '请输入手机号',
+					icon: 'none'
+				})
+				return
+			}
+			
+			if (!this.verifyCode) {
+				uni.showToast({
+					title: '请输入验证码',
+					icon: 'none'
+				})
+				return
+			}
+			
+			uni.showLoading({ title: '处理中' })
+			this.$Request.postJson('/app/company/giveCompany', {
+				phone: this.changePhoneNum || this.userPhoneNum,
+				msg: this.verifyCode,
+				givePhone: this.phoneNum
+			}).then(res => {
+				if (res.code == 0) {
+					this.showChangeModal = false
+					this.logout()
+				} else {
+					this.$queue.showToast(res.msg || '出错了,请稍后再试')
 				}
+			}).finally(() => {
+				uni.hideLoading()
+				this.updating = false
 			})
-			// setTimeout(() => {
-			// 	uni.hideLoading();
-			// 	uni.showToast({
-			// 		title: '已离开公司',
-			// 		icon: 'success'
-			// 	});
-
-			// 	setTimeout(() => {
-			// 		uni.navigateBack();
-			// 	}, 1500);
-			// }, 1500);
 		},
-
-		// 更换公司
-		changeCompany() {
-			this.showLeaveModal = true;
+		
+		logout() {
+			uni.showToast({
+				title: '操作成功',
+				icon: 'none',
+			})
+			setTimeout(() => {
+				this.$queue.toLogin()
+				this.$queue.logout()
+			}, 1500)
 		}
 	}
 }
@@ -201,249 +446,246 @@ export default {
 
 <style lang="scss" scoped>
 .my-company-page {
+	display: flex;
+	flex-direction: column;
 	height: 100vh;
 	background: linear-gradient(90.00deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
 	background-size: 100% 40%;
 	background-position: center top;
 	background-repeat: no-repeat;
-}
-
-/* 导航栏 */
-.navbar-content {
-	width: 100%;
-	padding: 24rpx 32rpx 20rpx 32rpx;
-	box-sizing: border-box;
-	color: #000;
 	font-family: DM Sans;
-	font-size: 30rpx;
-	font-weight: 700;
-	line-height: 26px;
-	display: flex;
-	align-items: center;
-	.nav-left,.nav-right {
-		width: 32.61px;
-		height: 26px;
-	}
-
-	.nav-title {
-		color: rgba(255, 255, 255, 1);
-		font-family: DM Sans;
-		font-size: 32rpx;
-		font-weight: 700;
-		line-height: 52rpx;
-		letter-spacing: 0.5%;
-		text-align: center;
-		flex: 1;
-	}
+	font-style: Regular;
 }
 
 /* 头部区域 */
 .header-section {
-	padding: 70rpx 40rpx;
 	text-align: center;
 }
 
 .illustration-area {
-	margin-bottom: 30rpx;
-
 	.company-illustration {
+		display: block;
 		width: 280rpx;
 		height: 180rpx;
-		max-width: 100%;
+		margin: 0 auto;
 	}
 }
 
-.company-name-section {
-	.company-brand {
-		color: rgba(255, 255, 255, 1);
-		font-family: DM Sans;
-		font-size: 28rpx;
+// 管理员端
+.admin-container {
+	flex: 1;
+	.company-name {
 		font-weight: 500;
 		line-height: 44rpx;
-		letter-spacing: 0%;
+		color: #fff;
 		text-align: center;
-		margin-bottom: 8rpx;
+		margin: 20rpx 40rpx;
+	}
+	.buttons {
+		padding: 0 40rpx 28rpx;
+		gap: 20rpx;
+		.button {
+			flex: 1;
+			height: 80rpx;
+			border-radius: 40rpx;
+			background: rgba(255, 255, 255, 0.2);
+			font-size: 32rpx;
+			font-weight: 400;
+			text-align: center;
+			color: #fff;
+			line-height: 80rpx;
+		}
+	}
+	.list-wrapper {
+		border-radius: 20rpx 20rpx 0 0;
+		background-color: #fff;
+	}
+	.scroll-view {
+		height: calc(100vh - 470rpx);
+		overflow-y: auto;
+	}
+	.list {
+		padding: 40rpx;
+		.list-title {
+			font-size: 32rpx;
+			font-weight: 500;
+			line-height: 56rpx;
+			color: rgba(51, 51, 51, 1);
+		}
+		.account-item {
+			padding: 32rpx 32rpx 28rpx 0;
+			.title {
+				color: rgba(51, 51, 51, 1);
+				font-size: 30rpx;
+				font-weight: 400;
+				line-height: 44rpx;
+				.badge {
+					box-sizing: border-box;
+					border: 1px solid rgba(1, 107, 246, 1);
+					border-radius: 3px;
+					background: rgba(1, 107, 246, 0.1);
+					font-size: 20rpx;
+					font-weight: 400;
+					line-height: 24rpx;
+					color: rgba(1, 107, 246, 1);
+					margin-left: 16rpx;
+					padding: 6rpx 12rpx;
+				}
+			}
+			.sub-title {
+				color: rgba(153, 153, 153, 1);
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 28rpx;
+				margin-top: 10rpx;
+			}
+			.status-text {
+				height: 54rpx;
+				padding: 12rpx 24rpx;
+				border-radius: 30rpx;
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 28rpx;
+				color: rgba(1, 107, 246, 1);
+				box-sizing: border-box;
+				&.info {
+					color: rgba(153, 153, 153, 1);
+				}
+				&.btn {
+					color: #fff;
+					background-color: #016BF6;
+				}
+			}
+			.bottom-button {
+				height: 44rpx;
+				text-align: center;
+				border-radius: 2px;
+				background: rgba(1, 107, 246, 0.1);
+				font-size: 24rpx;
+				line-height: 44rpx;
+				color: rgba(1, 107, 246, 1);
+				margin-top: 10rpx;
+			}
+		}
 	}
+}
 
-	.company-full-name {
+// 非管理员端
+.un-admin-container {
+	.company-name {
+		margin: 40rpx 40rpx 60rpx;
 		color: rgba(255, 255, 255, 1);
-		font-family: DM Sans;
 		font-size: 28rpx;
 		font-weight: 500;
 		line-height: 44rpx;
-		letter-spacing: 0%;
 		text-align: center;
 	}
-}
-
-/* 公司内容整体包装 */
-.company-content-wrapper {
-	width: 100%;
-	height: 100%;
-	background: rgba(255, 255, 255, 1);
-	border-radius: 10px 10px 0px 0px;
-	padding: 54rpx 76rpx;
-
-	display: flex;
-	flex-direction: column;
-	gap: 30rpx;
-}
-
-/* 公司信息卡片 */
-.company-info-card {
-	background: rgba(255, 255, 255, 1);
-	border-radius: 24rpx;
-	overflow: hidden;
-}
-
-.info-item {
-	display: flex;
-	align-items: center;
-	padding: 12rpx 24rpx;
-	gap: 32rpx;
-
-	.info-label,
-	.info-value {
-		color: rgba(153, 153, 153, 1);
-		font-family: DM Sans;
-		font-size: 26rpx;
-		font-weight: 400;
-		line-height: 32rpx;
-		letter-spacing: 0%;
-		text-align: left;
+	.content-wrapper {
+		border-radius: 20rpx 20rpx 0 0;
+		background-color: #fff;
+		padding: 52rpx 76rpx;
+		.info-list {
+			.info-item {
+				color: rgba(153, 153, 153, 1);
+				font-size: 24rpx;
+				font-weight: 400;
+				line-height: 32rpx;
+				margin-bottom: 12rpx;
+				text {
+					padding-right: 48rpx;
+				}
+			}
+		}
+		.buttons {
+			margin-top: 40rpx;
+			.button {
+				width: 100%;
+				height: 40px;
+				box-sizing: border-box;
+				border: 1px solid rgba(1, 107, 246, 1);
+				border-radius: 40px;
+				background: rgba(255, 255, 255, 1);
+				text-align: center;
+				line-height: 38px;
+				font-size: 16px;
+				font-weight: 400;
+				margin-bottom: 40rpx;
+				&.plain {
+					color: rgba(1, 107, 246, 1);
+				}
+				&.primary {
+					color: #fff;
+					background: rgba(1, 107, 246, 1);
+				}
+			}
+		}
 	}
 }
 
-.leave-btn {
-	flex: 1;
-	height: 88rpx;
-	background: transparent;
-	border: 2rpx solid rgba(255, 122, 69, 1);
-	border-radius: 44rpx;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	margin-bottom: 38rpx;
-
-	text {
-		color: rgba(255, 102, 0, 1);
-		font-family: DM Sans;
-		font-size: 32rpx;
+// 审核弹窗
+.audit-modal {
+	min-height: 180rpx;
+	.title {
+		color: rgba(51, 51, 51, 1);
+		font-size: 30rpx;
 		font-weight: 400;
-		line-height: 48rpx;
-		letter-spacing: 0%;
-		text-align: center;
-	}
-
-	&:active {
-		background: rgba(255, 122, 69, 0.1);
+		line-height: 44rpx;
+		margin-top: 48rpx;
+		.badge {
+			box-sizing: border-box;
+			border: 1px solid rgba(1, 107, 246, 1);
+			border-radius: 3px;
+			background: rgba(1, 107, 246, 0.1);
+			font-size: 20rpx;
+			font-weight: 400;
+			line-height: 24rpx;
+			color: rgba(1, 107, 246, 1);
+			margin-left: 16rpx;
+			padding: 6rpx 12rpx;
+		}
 	}
-}
-
-.change-btn {
-	flex: 1;
-	height: 88rpx;
-	background: linear-gradient(90deg, rgba(255, 122, 69, 1) 0%, rgba(255, 122, 69, 1) 100%);
-	border-radius: 44rpx;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-
-	text {
-		color: rgba(255, 255, 255, 1);
-		font-family: DM Sans;
-		font-size: 32rpx;
+	.sub-title {
+		color: rgba(153, 153, 153, 1);
+		font-size: 24rpx;
 		font-weight: 400;
-		line-height: 48rpx;
-		letter-spacing: 0%;
-		text-align: center;
+		line-height: 28rpx;
+		margin-top: 10rpx;
 	}
-
-	&:active {
-		opacity: 0.8;
+	.check-bar {
+		font-size: 24rpx;
+		margin-top: 50rpx;
+		::v-deep .u-checkbox__label {
+			margin-right: 20rpx;
+		}
+		.tip {
+			padding-bottom: 5px;
+		}
 	}
 }
 
-/* 离开公司弹窗样式 */
-.modal-title {
-	color: rgba(88, 88, 88, 1);
-	font-family: DM Sans;
-	font-size: 28rpxpx;
-	font-weight: 700;
-	line-height: 36rpx;
-	letter-spacing: 0%;
-	text-align: left;
-	margin-bottom: 30rpx;
-}
-
-.modal-content {
-	padding: 40rpx;
-}
-
-.impact-list {
-	display: flex;
-	flex-direction: column;
-	gap: 12rpx;
-}
-
-.impact-item {
-	display: flex;
-	gap: 8rpx;
-}
-
-.item-number,
-.item-text {
-	color: rgba(158, 158, 158, 1);
-	font-family: DM Sans;
-	font-size: 26rpx;
-	font-weight: 400;
-	line-height: 26rpx;
-	letter-spacing: 0%;
-	text-align: left;
-}
-
-.modal-buttons {
-	display: flex;
-}
-
-.cancel-btn {
-	flex: 1;
-	height: 100rpx;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	border-right: 0.5px solid rgba(153, 153, 153, 0.2);
-	border-top: 0.5px solid rgba(153, 153, 153, 0.2);
-}
-
-.cancel-btn text {
-	color: rgba(153, 153, 153, 0.5);
-	font-family: DM Sans;
-	font-size: 28rpx;
-	font-weight: 500;
-	line-height: 36rpx;
-	letter-spacing: 0%;
-	text-align: center;
-	text-transform: uppercase;
-}
-
-.confirm-btn {
-	flex: 1;
-	height: 100rpx;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	border-top: 0.5px solid rgba(153, 153, 153, 0.2);
-}
-
-.confirm-btn text {
-	color: rgba(1, 107, 246, 1);
-	font-family: DM Sans;
+// 更换账号弹窗
+.input-wrapper {
+	box-sizing: border-box;
+	border: 1px solid rgba(242, 242, 242, 1);
+	border-radius: 6px;
+	background: rgba(250, 250, 250, 1);
+	margin-bottom: 16rpx;
+	padding: 10rpx 24rpx;
 	font-size: 28rpx;
-	font-weight: 500;
-	line-height: 36rpx;
-	letter-spacing: 0%;
-	text-align: center;
-	text-transform: uppercase;
+	line-height: 60rpx;
+	input {
+		height: 60rpx;
+		font-size: 28rpx;
+		color: #1f2c37;
+	}
+	.placeholder {
+		color: rgba(158, 161, 168, 1);
+	}
+	.verify-input {
+		width: 300rpx;
+	}
+	.verify-btn {
+		color: rgba(1, 107, 246, 1);
+	}
 }
 </style>

+ 33 - 57
pages/my/onlineResume.vue

@@ -11,7 +11,10 @@
 				</view>
 				<view class="user-name">{{ detail.userEntity && detail.userEntity.userName || '匿名' }}</view>
 				<view class="user-info">
-					{{ detail.workExpTimes }}经验·{{ detail.userEntity && detail.userEntity.age }}岁·{{ detail.degree }}·{{ detail.userEntity && detail.userEntity.sex == 1 ? '男' : '女' }}
+					<text v-if="detail.workExpTimes">{{ detail.workExpTimes }}经验</text>
+					<text v-if="detail.userEntity && detail.userEntity.age">· {{ detail.userEntity.age }}岁</text>
+					<text v-if="detail.degree">· {{ detail.degree }}</text>
+					<text v-if="detail.userEntity && detail.userEntity.sex">· {{ detail.userEntity && detail.userEntity.sex == 1 ? '男' : '女' }}</text>
 				</view>
 				<view class="contact-info">
 					<view class="contact-item">
@@ -418,12 +421,6 @@ export default {
 			that.getData()
 		})
 
-		// 监听技能设置更新
-		uni.$on('skillsUpdated', (data) => {
-			if (data.set != 1)
-				return
-			that.changeSkill(data.selectedTags)
-		})
 		uni.$on('preferenceUpdated', (data) => {
 			if (data.set != 1)
 				return
@@ -433,7 +430,6 @@ export default {
 	onUnload() {
 		uni.$off('updateResume')
 		uni.$off('preferenceUpdated')
-		uni.$off('skillsUpdated')
 	},
 	methods: {
 		toggleEdit(){
@@ -590,53 +586,27 @@ export default {
 				return []
 			}
 		},
-		// 设置
-		setResume() {
-			let data = {
-				ifExp: this.hasEcommerceExperience ? 1 : 0,
-				adv: this.detail.resumeList && this.detail.resumeList.adv || '',
-			}
-			uni.showLoading({
-				title: "提交中..."
-			});
-			this.$Request.postJson("/app/userFirst/regist", data).then((res) => {
-				uni.hideLoading();
-				if (res.code == 0) {
-					// 实际开发中可以在这里添加跳转逻辑
-				} else {
-					uni.showToast({
-						title: res.msg,
-						icon: "none",
-					});
-				}
-			});
-		},
-		changeSkill(skill) {
-			var skills = []
-			for (var i in skill) {
-				skills[i] = {
-					"userId": "",
-					"skillId": "",
-					"skillName": skill[i],
-					"isuse": 1
-				}
-			}
-			let data = {
-				skills
-			}
-			var that = this
-			this.$Request.postJson("/app/userFirst/updateSkill", skills).then((res) => {
-				if (res.code == 0) {
-					// 实际开发中可以在这里添加跳转逻辑
-					that.getData()
-				} else {
-					uni.showToast({
-						title: res.msg,
-						icon: "none",
-					});
-				}
-			});
-		},
+		// // 设置
+		// setResume() {
+		// 	let data = {
+		// 		ifExp: this.hasEcommerceExperience ? 1 : 0,
+		// 		adv: this.detail.resumeList && this.detail.resumeList.adv || '',
+		// 	}
+		// 	uni.showLoading({
+		// 		title: "提交中..."
+		// 	});
+		// 	this.$Request.postJson("/app/userFirst/regist", data).then((res) => {
+		// 		uni.hideLoading();
+		// 		if (res.code == 0) {
+		// 			// 实际开发中可以在这里添加跳转逻辑
+		// 		} else {
+		// 			uni.showToast({
+		// 				title: res.msg,
+		// 				icon: "none",
+		// 			});
+		// 		}
+		// 	});
+		// },
 		changePreference(preference) {
 			// if (intentionId == 0)
 			// 	return;
@@ -738,20 +708,23 @@ export default {
 			uni.showLoading({
 				title: '更新中'
 			})
+			const oldCheckedValue = this.showChecked
 			const isRecommend = this.showChecked ? 0 : 1
 			this.$Request
 				.getT('/app/resumes/setIsRecommend', {
 					isRecommend
 				})
 				.then((res) => {
+					uni.hideLoading()
 					if (res.code !== 0) {
 						uni.showToast({
 							title: res.msg,
 							icon: 'none'
 						})
+						this.showChecked = oldCheckedValue
 					}
 				})
-				.finally(() => {
+				.catch(() => {
 					uni.hideLoading()
 				})
 		},
@@ -765,7 +738,9 @@ export default {
 		
 		// 获取简历解析数据
 		getAiResumesAnalysis(fileId) {
-			this.$queue.showLoading('解析中')
+			uni.showLoading({
+				title: '解析中'
+			})
 			// this.$Request
 			// 	.postT('/app/resumes/aiResumesAnalysis', {
 			// 		workflowId: '7594327567932309547',
@@ -877,6 +852,7 @@ export default {
 	}
 
 	.user-info {
+		min-height: 20rpx;
 		color: rgba(102, 112, 122, 1);
 		font-size: 28rpx;
 		line-height: 64rpx;

+ 158 - 0
pages/my/searchCompanys.vue

@@ -0,0 +1,158 @@
+<template>
+	<view class="page-container">
+		<nav-bar title="选择公司"></nav-bar>
+		<view class="search-bar flex align-center justify-between">
+			<view class="search-input flex align-center">
+				<image src="@/static/images/svg/search.svg" class="search-icon"></image>
+				<input v-model="searchValue" type="text" placeholder="输入的是一个公司的名称,全模糊搜索" class="input" />
+			</view>
+			<view class="search-btn" @click="getData">搜索</view>
+		</view>
+		<view class="content">
+			<scroll-view :scroll-y="true" class="scroll-view">
+				<view class="scroll-wrapper">
+					<u-radio-group v-model="companyId" @change="handleChangeSelect">
+						<u-radio
+							shape="circle"
+							v-for="company in companys"
+							:key="company.companyId"
+							:name="company.companyId"
+						>{{ company.companyName }}</u-radio>
+					</u-radio-group>
+					<!-- <view class="company-item" v-for="company in companys" :key="company.companyId">
+						<u-radio 
+							v-model="company.checked" 
+							:name="company.companyId"
+							@change="checkboxChange"
+						>{{company.companyName}}</u-radio>						
+					</view> -->
+				</view>
+			</scroll-view>			
+		</view>
+		
+		<view class="button-section">
+			<view class="submit-btn" @click="handleSave">确定</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import navBar from '@/components/nav-bar/index.vue'
+	export default {
+		components: {
+			navBar
+		},
+		data() {
+			return {
+				searchValue: '',
+				companyId: '',
+				companyName: '',
+				companys: [],
+				searching: false,
+			};
+		},
+		methods: {
+			getData() {
+				if (!this.searchValue) {
+					return this.$queue.showToast('请输入公司名称')
+				}
+				if (this.searching) return
+				this.searching = true
+				uni.showLoading({
+					title: '搜索中'
+				})
+				this.$Request
+					.getT('/app/company/getVerifiedCompany', {
+						companyName: this.searchValue
+					})
+					.then(res => {
+						if (res.code === 0) {
+							this.companyId = ''
+							this.companyName = ''
+							if (res.data && res.data.length) {
+								this.companys = res.data								
+							} else {
+								this.$queue.showToast('没有搜索到对应公司')
+							}
+						}
+					})
+					.finally(() => {
+						this.searching = false
+						uni.hideLoading()
+					})
+			},
+			handleChangeSelect(e) {
+				this.companys.forEach(c => {
+					if (c.companyId == e) {
+						this.companyName = c.companyName
+					}
+				})
+			},
+			// 提交数据
+			handleSave() {
+				if (!this.companyId) {
+					return this.$queue.showToast('请选择公司')
+				}
+				uni.$emit('selectCompany', {
+					companyId: this.companyId,
+					companyName: this.companyName
+				})
+				uni.navigateBack()
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import '@/common.scss';
+	
+	.page-container {
+		display: flex;
+		flex-direction: column;
+		height: 100vh;
+		font-family: DM Sans;
+		
+		.content {
+			flex: 1;
+			padding: 0 40rpx;
+			overflow: auto;
+		}
+		.search-bar {
+			margin: 32rpx 40rpx 40rpx;
+			.search-input {
+				flex: 1;
+				box-sizing: border-box;
+				border: 1px solid rgba(227, 231, 236, 1);
+				border-radius: 48rpx;
+				background: rgba(241, 241, 241, 1);
+				padding: 8rpx 32rpx;
+				.search-icon {
+					display: block;
+					width: 36rpx;
+					height: 36rpx;
+					margin-right: 16rpx;
+				}
+				.input {
+					width: 500rpx;
+					font-size: 20rpx;
+					font-weight: 500;
+					color: rgba(51, 51, 51, 1);
+				}
+			}
+			.search-btn {
+				width: 60rpx;
+				font-size: 20rpx;
+				font-weight: 500;
+				line-height: 48rpx;
+				color: rgba(1, 107, 246, 1);
+				padding-left: 16rpx;
+			}
+		}
+		
+		.scroll-view {
+			.scroll-wrapper {
+				padding-bottom: 100rpx;
+			}
+		}
+	}
+</style>

+ 1 - 1
pages/my/setup.vue

@@ -17,7 +17,7 @@
 
 			<!-- 我的公司 -->
 			<view class="usermain-item item-padding" @click="goNavNoLogin('/my/setting/mimi')">
-				<view class="usermain-item-title">隐私协议</view>
+				<view class="usermain-item-title">隐私协议11</view>
 				<view>
 					<u-icon name="arrow-right"></u-icon>
 				</view>

+ 2 - 0
pages/my/switchRoles.vue

@@ -61,6 +61,7 @@ export default {
 							};
 							that.$Request.postT("/app/user/updateUserEntity", data).then((res) => {
 							  if (res.code == 0) {
+								  uni.setStorageSync("userType", 1);
 								  uni.$emit('changeRole',{userType:index})
 								  uni.navigateBack()
 							  }
@@ -84,6 +85,7 @@ export default {
 							};
 							 that.$Request.postT("/app/user/updateUserEntity", data).then((res) => {
 							   if (res.code == 0) {
+								   uni.setStorageSync("userType", 2);
 							 	  uni.$emit('changeRole',{userType:index})
 							 	  uni.navigateBack()
 							   }

+ 20 - 15
pages/public/loginV2.vue

@@ -68,7 +68,7 @@
 				timer: null,
 				disabled: false,
 				loading: false,
-				isFirst: false,
+				// isFirst: false,
 				// show: false,
 				// currentType: 1,
 				// infos: [
@@ -95,10 +95,10 @@
 			this.checkLoginStatus()
 			// #endif
 			
-			// 判断是否是第一次
-			if (options.isFirst) {
-				this.isFirst = true
-			}
+			// // 判断是否是第一次
+			// if (options.isFirst) {
+			// 	this.isFirst = true
+			// }
 			
 			// 获取状态栏高度
 			let systemInfo = uni.getSystemInfoSync();
@@ -230,6 +230,7 @@
 							.postT('/app/Login/wxAppLogin', data)
 							.then(res => {
 								this.loginFinished(res)
+								uni.hideLoading()
 							})
 							.catch(() => {
 								this.$queue.showToast('登录失败,请稍后重试或更换其他登录方式')
@@ -265,17 +266,21 @@
 							url: '/pages/my/index',
 							success: closeVerifyView
 						})
-					} else if (this.isFirst) {
-						// 首次登录,跳转至基本详情页
-						uni.reLaunch({
-							url: '/package/jobIntention/basicInfo',
-							success: closeVerifyView
-						})
+					// } else if (this.isFirst) {
+					// 	// 首次登录,跳转至基本详情页
+					// 	uni.reLaunch({
+					// 		url: '/package/jobIntention/basicInfo',
+					// 		success: closeVerifyView
+					// 	})
 					} else {
-						uni.reLaunch({
-							url: '/pages/my/jobApplicant/guidePage',
-							success: closeVerifyView
-						})
+						// uni.reLaunch({
+						// 	url: '/pages/my/jobApplicant/guidePage',
+						// 	success: closeVerifyView
+						// })
+							uni.reLaunch({
+								url: '/package/jobIntention/basicInfo',
+								success: closeVerifyView
+							})
 					}
 				} else {
 					uni.showToast({

+ 1 - 2
pages/public/loginphone.vue

@@ -250,9 +250,8 @@
 													//   });
 													// }
 												} else {
-													//表示是第一次进来,走引导页
 													uni.navigateTo({
-														url: "/pages/my/jobApplicant/guidePage",
+														url: "/package/jobIntention/basicInfo",
 													});
 												}
 											}

+ 101 - 38
pages/recruitmentData/communicationRecords.vue

@@ -20,7 +20,7 @@
 		<view class="tab-section">
 			<u-tabs :list="tabs" :current="activeTab" @change="switchTab" :is-scroll="false" :height="88"
 				:font-size="24" active-color="rgba(1, 107, 246, 1)" inactive-color="rgba(102, 102, 102, 1)"
-				:bar-width="80" :bar-height="4" :gutter="40" bg-color="#ffffff" :bar-style="{
+				:bar-width="80" :bar-height="4" item-width="80" :gutter="40" bg-color="#ffffff" :bar-style="{
           borderRadius: '2rpx'
         }"></u-tabs>
 		</view>
@@ -43,12 +43,16 @@
 							<view class="talent-content">
 								<!-- 头像和基本信息 -->
 								<view class="talent-header">
-									<image :src="record.userAvatar" class="talent-avatar" mode="aspectFill"></image>
+									<view class="avatar-wrapper">
+										<image :src="record.userAvatar || '/static/logo.png'" class="talent-avatar" mode="aspectFill"></image>
+										<image src="/static/images/svg/male.svg" class="sex-icon" v-if="record.userSex == 1"></image>
+										<image src="/static/images/svg/female.svg" class="sex-icon" v-if="record.userSex == 2"></image>
+									</view>
 									<view class="talent-info">
 										<view class="talent-name-section">
 											<view class="talent-name">{{ record.userName }}</view>
 											<view class="talent-tags">
-												<view class="status-tag online" v-if="record.isOnline">在线</view>
+												<view class="status-tag online flex align-center" v-if="record.isOnline"><view class="dot"></view>在线</view>
 												<view class="status-tag hot" v-if="record.isHot">热门搜索</view>
 												<view class="status-tag active" v-if="record.lastActive">
 													{{ record.lastActive }}</view>
@@ -57,8 +61,8 @@
 										<!-- 经验和薪资 -->
 										<view class="talent-experience">
 											<text class="experience-text">{{ record.resumesWorkExperience }}</text>
-											<text class="education-salary">{{ record.degree }}
-												{{ record.minSalary }}-{{record.maxSalary}}</text>
+											<text class="education-salary">{{ record.degree }}</text>
+											<text>{{ record.salaryRange }}</text>
 											<text
 												class="status-text">{{ record.resumesStatus==1?'在职&考虑机会':"离职" }}</text>
 										</view>
@@ -67,9 +71,15 @@
 
 								<!-- 当前职位 -->
 								<view class="current-job" v-if="record.companyName">
-									<image src="../../static/images/aixin.svg" class="job-icon" mode="aspectFit">
-									</image>
-									<text class="job-text">{{ record.companyName }}</text>
+									<view class="flex align-start">
+										<image src="../../static/images/aixin.svg" class="job-icon" mode="aspectFit">
+										</image>
+										<text class="job-text">
+											<text>{{ record.companyName }}</text>
+											<text v-if="record.lastWorkPosition"> · {{ record.lastWorkPosition }}</text>
+										</text>										
+									</view>
+									<text class="work-period">{{ record.resumesWorkExperience }}</text>
 								</view>
 
 								<!-- 求职期望 -->
@@ -81,7 +91,7 @@
 
 								<!-- 技能标签 -->
 								<view class="skill-tags">
-									<view class="skill-tag" v-for="(skill, skillIndex) in record.skillName.split(',')"
+									<view class="skill-tag" v-for="(skill, skillIndex) in record.intentIndustry"
 										:key="skillIndex">
 										{{ skill }}
 									</view>
@@ -150,7 +160,6 @@
 									<text
 										class="time-label">{{ record.detailTime? record.detailTime : record.interviewDateTime.substring(11, 16) }}</text>
 								</view>
-								<view class="record-divider"></view>
 								<view class="record-right">
 									<text class="candidate-name">{{ record.userEntity.userName }}</text>
 									<block v-if="record.resumesListDto.length > 0">
@@ -310,6 +319,7 @@
 					.filter(r => r && r.lastTime) // 过滤掉 null 或没有 lastTime 的数据
 					.forEach(record => {
 						const date = record.lastTime.substring(0, 10)
+						record.intentIndustry = record.intentIndustry?.split('/')
 						if (!groups[date]) {
 							groups[date] = {
 								date,
@@ -528,7 +538,9 @@
 				})
 			},
 			getData() {
-				this.$Request.getT("/app/chat/chatUser").then(res => {
+				this.$Request.getT("/app/chat/chatUser", {
+					limit: 50
+				}).then(res => {
 					console.log(res);
 					this.communicationRecords = res.data.records //沟通记录
 				})
@@ -634,7 +646,7 @@
 	/* Content Section */
 	.content-section {
 		margin-top: 330rpx;
-		padding: 20rpx;
+		padding: 20rpx 40rpx;
 		height: calc(100vh - 330rpx) !important;
 		overflow-y: auto;
 	}
@@ -645,24 +657,24 @@
 	}
 
 	.date-header {
-		margin-bottom: 16rpx;
+		margin-bottom: 20rpx;
 	}
 
 	.date-text {
 		color: rgba(153, 153, 153, 1);
 		font-family: DM Sans;
-		font-size: 24rpx;
+		font-size: 16rpx;
 		font-weight: 400;
-		line-height: 32rpx;
+		line-height: 20rpx;
 		margin-left: 32rpx;
 	}
 
 	/* Talent Card */
 	.talent-card {
 		background-color: #ffffff;
-		border-radius: 16rpx;
+		border-radius: 12rpx;
 		margin-bottom: 20rpx;
-		padding: 30rpx;
+		padding: 36rpx;
 		//   box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
 	}
 
@@ -670,12 +682,30 @@
 		.talent-header {
 			display: flex;
 			align-items: flex-start;
+			
+			.avatar-wrapper {
+				position: relative;
+				width: 72rpx;
+				height: 72rpx;
+				border-radius: 50%;
+				border: 0.5px solid rgba(240, 240, 240, 1);
+				margin-right: 20rpx;
+			}
 
 			.talent-avatar {
-				width: 80rpx;
-				height: 80rpx;
+				width: 100%;
+				height: 100%;
+				border-radius: 50%;
+			}
+			
+			.sex-icon {
+				position: absolute;
+				top: 0;
+				right: 0;
+				width: 20rpx;
+				height: 20rpx;
+				background: #fff;
 				border-radius: 50%;
-				margin-right: 20rpx;
 			}
 
 			.talent-info {
@@ -697,7 +727,7 @@
 					line-height: 36rpx;
 					letter-spacing: 0.5%;
 					text-align: left;
-					margin-right: 16rpx;
+					margin-right: 12rpx;
 				}
 
 				.talent-tags {
@@ -707,8 +737,8 @@
 
 					.status-tag {
 						padding: 8rpx;
-						border-radius: 12rpx;
-						font-size: 18rpx;
+						border-radius: 8rpx;
+						font-size: 16rpx;
 						font-family: DM Sans;
 						font-weight: 400;
 						line-height: 20rpx;
@@ -721,7 +751,7 @@
 						}
 
 						&.hot {
-							background: rgba(252, 233, 220, 1);
+							background: rgba(1, 107, 246, 0.1);
 							color: rgba(1, 107, 246, 1);
 						}
 
@@ -729,6 +759,15 @@
 							color: rgba(153, 153, 153, 1);
 						}
 					}
+					
+					.dot {
+						width: 8rpx;
+						height: 8rpx;
+						border-radius: 50%;
+						background: rgba(29, 209, 104, 1);
+						border: 1px solid #fff;
+						margin-right: 8rpx;
+					}
 				}
 			}
 		}
@@ -750,6 +789,7 @@
 		.current-job {
 			display: flex;
 			align-items: center;
+			justify-content: space-between;
 			margin-bottom: 12rpx;
 
 			.job-icon {
@@ -768,14 +808,18 @@
 				text-align: left;
 				flex: 1;
 			}
-
-			.work-period {
-				color: rgba(153, 153, 153, 1);
-				font-family: DM Sans;
-				font-size: 22rpx;
-				font-weight: 400;
-				line-height: 28rpx;
-			}
+		}
+		.work-period {
+			align-self: flex-start;
+			min-width: 80rpx;
+			word-wrap: nowrap;
+			color: rgba(153, 153, 153, 1);
+			font-family: DM Sans;
+			font-size: 16rpx;
+			font-weight: 400;
+			line-height: 44rpx;
+			text-align: right;
+			margin-left: 20rpx;
 		}
 
 		.job-expectation {
@@ -941,7 +985,20 @@
 	}
 
 	.interview-record.today {
-		background: rgba(250, 187, 143, 1);
+		background: #fff;
+		
+		.record-content {
+			background: rgba(1, 107, 246, 0.1);
+			
+			.record-right {
+				border-left: 5px solid rgba(1, 107, 246, 1);
+				background: rgba(1, 107, 246, 0.1);
+				.candidate-name,
+				.candidate-details{
+					color: rgba(1, 107, 246, 1);
+				}
+			}
+		}
 	}
 
 	.interview-record:not(.today) {
@@ -958,7 +1015,7 @@
 		flex: 1;
 		display: flex;
 		align-items: center;
-		gap: 24rpx;
+		
 	}
 
 	.record-left {
@@ -976,10 +1033,15 @@
 	}
 
 	.record-right {
+		height: 100%;
 		flex: 1;
 		display: flex;
 		flex-direction: column;
-		gap: 8rpx;
+		box-sizing: border-box;
+		border-left: 5px solid rgba(91, 91, 91, 1);
+		border-radius: 0px 6px 6px 0px;
+		// background: rgba(1, 107, 246, 0.1);
+		padding: 28rpx 16rpx;
 	}
 
 	.date-label {
@@ -1005,9 +1067,10 @@
 	.candidate-name {
 		color: rgba(51, 51, 51, 1);
 		font-family: DM Sans;
-		font-size: 32rpx;
-		font-weight: 600;
-		line-height: 40rpx;
+		font-size: 28rpx;
+		font-weight: 400;
+		line-height: 36rpx;
+		margin-bottom: 8rpx;
 	}
 
 	.candidate-details {

+ 4 - 3
pages/recruitmentData/interviewManage.vue

@@ -276,7 +276,7 @@ export default {
   margin-top: 268rpx;
   height: calc(100vh - 268rpx);
   overflow-y: auto;
-  padding: 32rpx;
+  padding: 20rpx;
 }
 
 /* Empty State */
@@ -310,7 +310,7 @@ export default {
 .interview-list {
   .interview-item {
     background-color: #ffffff;
-    padding: 32rpx;
+    padding: 20rpx;
     border-bottom: 1rpx solid rgba(240, 240, 240, 1);
     display: flex;
     align-items: flex-start;
@@ -320,7 +320,8 @@ export default {
     }
     
     .interview-avatar {
-      margin-right: 24rpx;
+	  align-self: center;
+      margin-right: 16rpx;
       
       .avatar-image {
         width: 96rpx;

+ 21 - 799
pages/talentSearch/resumeDetail.vue

@@ -5,7 +5,7 @@
 			<view class="navbar">
 				<view class="navbar-content">
 					<view class="navbar-left" @click="goBack">
-						<u-icon name="arrow-leftward" size="38" color="#333"></u-icon>
+						<u-icon name="arrow-left" size="36" color="#333"></u-icon>
 					</view>
 					<view class="navbar-title">简历详情</view>
 					<view class="nav-right">
@@ -18,197 +18,8 @@
 			</view>
 		</view>
 
-		<!-- 用户信息区域 -->
-		<view class="user-profile" style="margin-top: 20rpx;">
-			<view class="profile-header">
-				<view class="name-section">
-					<view class="user-name">{{ resumeList.userName || '匿名用户' }}</view>
-					<view class="status-tag">热门搜索</view>
-				</view>
-				<view class="avatar-container">
-					<image :src="resumeList.userAvatar || '../../static/logo.png'" class="user-avatar"
-						mode="aspectFill">
-					</image>
-					<!-- <view class="notification-badge"></view> -->
-				</view>
-			</view>
-
-			<view class="current-job">
-				<image src="../../static/images/aixin.svg" class="job-icon" mode="aspectFit"></image>
-				<text class="job-text">{{ workExpList && workExpList.length > 0 && workExpList[0].companyName || '暂无'
-					}}</text>
-				<text class="job-text">{{ workExpList && workExpList.length > 0 &&
-					workExpList[0].workExpDetailList[0].position || '暂无' }}</text>
-			</view>
-
-			<view class="availability">
-				<text class="status-text">{{ resumesStatus[resumeList.resumesStatus] || '离职&随时到岗位' }}</text>
-			</view>
-
-			<view class="summary-info">
-				<view class="summary-item">
-					<text class="summary-text">{{ resumeData.resumesWorkExperience || '0' }}</text>
-				</view>
-				<view class="summary-item">
-					<text class="summary-text">{{ resumeList.degree || '无' }}</text>
-				</view>
-				<view class="summary-item">
-					<text class="summary-text">{{ resumeList.userAge || '无' }}岁</text>
-				</view>
-			</view>
-		</view>
-
-		<!-- 内容区域 -->
-		<view class="content-section">
-			<!-- 个人优势 -->
-			<view class="section-item">
-				<view class="advantage-content">
-					{{ resumeList.adv || '暂无个人优势。(最多展示三行)' }}
-				</view>
-			</view>
-
-			<!-- 附件简历 -->
-			<!-- 	<view class="attachment-section">
-				<view class="attachment-btn">
-					<image src="../../static/images/fujian.svg" class="attachment-icon" mode="aspectFit"></image>
-					<text class="attachment-text">已上传附件简历</text>
-				</view>
-			</view> -->
-
-			<!-- 求职期望 -->
-			<view class="expectation-card" v-if="intentions && intentions.length > 0">
-				<view class="card-header">
-					<text class="header-title">求职期望</text>
-				</view>
-				<view class="job-expectation" v-for="(item, index) in intentions" :key="item.intentionId">
-					<view class="expectation-text">
-						{{ item.ruleClassifyName || '无' }},{{ item.citys || '无' }}
-						<text v-if="item.postType">({{ item.postType }})</text>
-					</view>
-					<text class="salary-range">
-						{{ item.salaryRange ? item.salaryRange + '元' : '薪资未填写' }}
-					</text>
-				</view>
-			</view>
-
-			<!-- 如果为空 -->
-			<view v-else class="expectation-card">
-				<view class="card-header">
-					<text class="header-title">求职期望</text>
-				</view>
-				<view class="job-expectation">
-					<text class="expectation-text">暂无求职期望</text>
-				</view>
-			</view>
-
-			<view class="jobRemarks-box-c-title flex align-center">
-				<image src="/static/images/index/ins.png" class="title-icon"></image>
-				<text>工作经历</text>
-			</view>
-
-			<!-- 工作经历 -->
-			<view class="work-experience-section">
-				<view class="section-header">
-					<view class="section-title">
-						<text class="required-title">工作经历</text>
-						<view class="section-desc">请填写专属跨境行业的工作经验</view>
-					</view>
-				</view>
-
-				<view class="experience-list" v-if="workExpList && workExpList.length > 0">
-					<view class="experience-item" v-for="(item, index) in workExpList" :key="item.workExpId">
-						<view class="company-logo">
-							<image src="../../static/images/index/changsha.svg" class="logo-img" mode="aspectFit">
-							</image>
-						</view>
-						<view class="experience-content">
-							<!-- 公司名 -->
-							<view class="company-title">{{ item.companyName }}</view>
-							<!-- 遍历详细工作经历 -->
-							<view class="job-detail" v-for="(detail, i) in item.workExpDetailList"
-								:key="detail.workExpDetailId">
-								<view class="job-info-row">
-									<view class="job-title">{{ detail.position || '未填写职位' }}</view>
-									<!-- <view class="job-department">{{ detail.department || '' }}</view> -->
-									<view class="work-period">
-										{{ detail.startTime ? detail.startTime.slice(0, 7) : '' }} -
-										{{ detail.endTime ? detail.endTime.slice(0, 7) : '至今' }}
-									</view>
-								</view>
-
-								<!-- <view class="job-description">
-									{{ detail.workContent ? detail.workContent : '暂无工作描述' }}
-								</view> -->
-								<view style="margin-bottom: 10rpx;font-size: 28rpx;">工作内容</view>
-								<view class="job-description">
-									{{ detail.workContent || '暂无工作内容'}}
-								</view>
-								<view style="margin: 12rpx 0;font-size: 28rpx;">工作业绩</view>
-								<view class="job-description">
-									{{detail.workPerformance || '暂无工作业绩'}}
-								</view>
-
-								<view class="skill-tags" v-if="detail.skills">
-									<view class="tag" v-for="(tag, j) in JSON.parse(detail.skills)" :key="j">
-										{{ tag }}
-									</view>
-								</view>
-							</view>
-						</view>
-					</view>
-				</view>
-				<view class="experience-list" v-else>
-					<view class="job-info-row">
-						<view class="job-title">暂无工作经历</view>
-					</view>
-				</view>
-			</view>
-
-			<!-- 教育经历 -->
-			<view class="education-section">
-				<view class="section-header">
-					<view class="section-title">
-						<text>教育经历</text>
-					</view>
-
-				</view>
-
-				<view class="education-list">
-					<view class="education-item" v-for="(item, index) in eduList" :key="index">
-						<view class="school-logo">
-							<image src="../../static/images/index/wuhan.svg" class="logo-img" mode="aspectFit"></image>
-						</view>
-						<view class="education-content">
-							<view class="school-name">{{ item.school }}</view>
-							<view class="degree-info">{{ item.degree }} • {{ item.profession }} •
-								{{ item.startTime?item.startTime.slice(0, 4):'' }}-{{ item.endTime?item.endTime.slice(0, 4):'' }}
-							</view>
-							<view class="education-description">
-								{{ item.detail }}
-							</view>
-						</view>
-					</view>
-
-
-				</view>
-			</view>
-
-			<!-- 资格证书 -->
-			<view class="certificates-section">
-				<view class="section-header">
-					<view class="section-title">
-						<text>专业技能</text>
-					</view>
-				</view>
-				<view class="certificates-grid" v-if="skills && skills.length > 0">
-					<view class="certificate-tag" v-for="(skll, index) in skills || {}" :key="index">
-						{{ skll.skillName }}
-					</view>
-				</view>
-				<view class="certificates-grid" v-else>
-					<view class="certificate-tag">暂无技能</view>
-				</view>
-			</view>
+		<view style="margin-top: 20px; border-top: 20rpx solid rgba(241, 245, 248, 1);">
+			<previewResume :resumesId="resumesId" :postPushId="postPushId"></previewResume>
 		</view>
 
 		<!-- 底部操作按钮 -->
@@ -221,7 +32,12 @@
 </template>
 
 <script>
+import previewResume from '@/components/resume/preview-resume.vue';
+	
 export default {
+	components: {
+		previewResume
+	},
 	data() {
 		return {
 			statusBarHeight: 0, // 状态栏高度
@@ -235,7 +51,9 @@ export default {
 			workExpList: [],
 			workExpTimes: "",
 			resumesStatus: ['离职&随时到岗', '在职&月内到岗', '在职&考虑机会', '在职&暂不考虑'],
-			isShowBtn:0
+			isShowBtn:0,
+			resumesId: '',
+			postPushId: ''
 		}
 	},
 	onLoad(option) {
@@ -261,10 +79,14 @@ export default {
 		if (option.resumesId) {
 			this.resumesId = option.resumesId
 			this.getDetail()
-		} else if (option.userId) {
-			this.byuserId = option.userId
-			this.getDetail()
 		}
+		// if (option.resumesId) {
+		// 	this.resumesId = option.resumesId
+		// 	this.getDetail()
+		// } else if (option.userId) {
+		// 	this.byuserId = option.userId
+		// 	this.getDetail()
+		// }
 		if(option.isShowBtn){
 			this.isShowBtn = option.isShowBtn
 		}
@@ -416,18 +238,16 @@ export default {
 		height: 60rpx;
 
 		.navbar-left {
-			width: 60rpx;
-			height: 60rpx;
+			width: 96rpx;
 			display: flex;
 			align-items: center;
-			justify-content: center;
 		}
 
 		.navbar-title {
 			color: rgba(23, 23, 37, 1);
 			font-family: DM Sans;
-			font-size: 38rpx;
-			font-weight: 700;
+			font-size: 34rpx;
+			font-weight: 400;
 			line-height: 52rpx;
 			letter-spacing: 0%;
 			text-align: center;
@@ -455,604 +275,6 @@ export default {
 	}
 }
 
-// 用户信息区域
-.user-profile {
-	background: #fff;
-	padding: 30rpx;
-	// margin: 0 32rpx;
-
-	.profile-header {
-		display: flex;
-		justify-content: space-between;
-		align-items: flex-start;
-		margin-bottom: 20rpx;
-
-		.name-section {
-			flex: 1;
-			display: flex;
-			align-items: center;
-			justify-content: flex-start;
-			gap: 12rpx;
-
-			.user-name {
-				color: rgba(58, 57, 67, 1);
-				font-family: DM Sans;
-				font-size: 48rpx;
-				font-weight: 700;
-				line-height: 60rpx;
-				letter-spacing: 0px;
-				text-align: left;
-				margin-right: 12rpx;
-			}
-
-			.status-tag {
-				background: rgba(252, 233, 220, 1);
-				color: rgba(1, 107, 246, 1);
-				font-family: DM Sans;
-				font-size: 18rpx;
-				padding: 4rpx 8rpx;
-				border-radius: 8rpx;
-				display: inline-block;
-			}
-		}
-
-		.avatar-container {
-			position: relative;
-			.user-avatar {
-				width: 72rpx;
-				height: 72rpx;
-				border-radius: 50%;
-				// border: 1px solid #0d27f7;
-			}
-
-			.notification-badge {
-				position: absolute;
-				top: 0;
-				right: 0;
-				width: 20rpx;
-				height: 20rpx;
-				background: #FF3B30;
-				border-radius: 50%;
-				border: 2rpx solid #fff;
-			}
-		}
-	}
-
-	.current-job {
-		display: flex;
-		align-items: center;
-		gap: 8rpx;
-		margin-bottom: 12rpx;
-
-		.job-icon {
-			width: 36rpx;
-			height: 36rpx;
-		}
-
-		.job-text {
-			color: rgba(156, 164, 171, 1);
-			font-family: DM Sans;
-			font-size: 24rpx;
-			font-weight: 400;
-			line-height: 40rpx;
-			letter-spacing: 0.5%;
-			text-align: left;
-		}
-	}
-
-	.availability {
-		display: flex;
-		align-items: center;
-		gap: 8rpx;
-		margin-bottom: 12rpx;
-
-		.status-text {
-			color: rgba(156, 164, 171, 1);
-			font-family: DM Sans;
-			font-size: 24rpx;
-			font-weight: 400;
-			line-height: 32rpx;
-			letter-spacing: 0%;
-			text-align: left;
-		}
-	}
-
-	.summary-info {
-		display: flex;
-		gap: 12rpx;
-		margin-right: 12rpx;
-
-		.summary-item {
-			.summary-text {
-				color: rgba(153, 153, 153, 1);
-				font-family: DM Sans;
-				font-size: 20rpx;
-				font-weight: 400;
-				line-height: 20rpx;
-				letter-spacing: -0.5px;
-				text-align: left;
-				padding: 12rpx;
-				border-radius: 8rpx;
-				background: rgba(198, 198, 198, 0.1);
-			}
-		}
-	}
-}
-
-// 内容区域
-.content-section {
-	padding: 0 30rpx 30rpx 30rpx;
-
-	.section-item {
-		background: #fff;
-		border-radius: 12rpx;
-		padding: 30rpx 0;
-		margin-bottom: 20rpx;
-		box-sizing: border-box;
-
-		.advantage-content {
-			color: rgba(97, 110, 124, 1);
-			font-family: DM Sans;
-			font-size: 26rpx;
-			font-weight: 400;
-			line-height: 32rpx;
-			letter-spacing: 0px;
-			text-align: left;
-		}
-	}
-
-	.attachment-section {
-		margin-bottom: 20rpx;
-
-		.attachment-btn {
-			background: rgba(246, 246, 246, 1);
-			border-radius: 8rpx;
-			padding: 20rpx;
-			display: flex;
-			align-items: center;
-			gap: 12rpx;
-
-			.attachment-icon {
-				width: 32rpx;
-				height: 32rpx;
-			}
-
-			.attachment-text {
-				color: rgba(1, 107, 246, 1);
-				font-family: DM Sans;
-				font-size: 24rpx;
-				font-weight: 400;
-				line-height: 32rpx;
-				letter-spacing: 0px;
-				text-align: left;
-			}
-		}
-	}
-
-	// 求职期望卡片样式
-	.expectation-card {
-		background: #ffffff;
-		border-radius: 12rpx;
-		padding: 30rpx 0;
-		margin-bottom: 20rpx;
-		box-sizing: border-box;
-
-		.card-header {
-			margin-bottom: 20rpx;
-
-			.header-title {
-				color: rgba(34, 37, 42, 1);
-				font-family: DM Sans;
-				font-size: 32rpx;
-				font-weight: 400;
-				line-height: 48rpx;
-				letter-spacing: 0px;
-				text-align: left;
-			}
-		}
-
-		.job-expectation {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-
-			.expectation-text {
-				color: rgba(153, 153, 153, 1);
-				font-family: DM Sans;
-				font-size: 24rpx;
-				font-weight: 500;
-				line-height: 48rpx;
-				letter-spacing: 0.5%;
-				text-align: left;
-				flex-shrink: 0;
-			}
-
-			.salary-range {
-				color: rgba(1, 107, 246, 1);
-				font-family: DM Sans;
-				font-size: 32rpx;
-				font-weight: 700;
-				line-height: 40rpx;
-				letter-spacing: 0.5%;
-				text-align: right;
-			}
-		}
-	}
-
-	// 工作经历部分样式
-	.work-experience-section {
-		background: #fff;
-		border-radius: 12px;
-		padding: 30rpx;
-		margin-bottom: 20rpx;
-		box-sizing: border-box;
-		border: 1px solid rgba(1, 107, 246, 1);
-
-		.section-header {
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			margin-bottom: 20rpx;
-
-			.section-title {
-
-				display: flex;
-				align-items: center;
-
-				.required-mark {
-					color: #FF3B30;
-					font-size: 40rpx;
-					font-weight: 600;
-					margin-right: 8rpx;
-				}
-
-				.required-title {
-					font-family: DM Sans;
-					font-size: 30rpx;
-					font-weight: 700;
-					line-height: 52rpx;
-					letter-spacing: 0%;
-					text-align: left;
-					margin-right: 12rpx;
-				}
-
-				text {
-					color: rgba(23, 23, 37, 1);
-					font-family: Inter;
-					font-size: 44rpx;
-					font-weight: 600;
-					line-height: 24px;
-				}
-			}
-
-			.section-desc {
-				color: rgba(1, 107, 246, 1);
-				font-family: DM Sans;
-				font-size: 24rpx;
-				font-weight: 400;
-				line-height: 44rpx;
-				letter-spacing: 0%;
-				text-align: left;
-			}
-		}
-
-		.experience-list {
-			.experience-item {
-				display: flex;
-				padding: 24rpx 0;
-				border-bottom: 1rpx solid #F0F0F0;
-
-				&:last-child {
-					border-bottom: none;
-				}
-
-				.company-logo {
-					width: 90rpx;
-					height: 90rpx;
-					margin-right: 24rpx;
-					flex-shrink: 0;
-					border-radius: 8px;
-					background: rgba(246, 246, 246, 1);
-
-					.logo-img {
-						width: 100%;
-						height: 100%;
-						border-radius: 8rpx;
-					}
-				}
-
-				.experience-content {
-					flex: 1;
-
-					.job-info-row {
-						display: flex;
-						align-items: center;
-						margin-bottom: 4rpx;
-					}
-
-					.job-title {
-						color: rgba(102, 102, 102, 1);
-						font-family: DM Sans;
-						font-size: 24rpx;
-						font-weight: 400;
-						line-height: 44rpx;
-						letter-spacing: 0%;
-						text-align: left;
-						margin-right: 12rpx;
-					}
-
-					.job-department {
-						color: rgba(120, 130, 138, 1);
-						font-family: DM Sans;
-						font-size: 24rpx;
-						font-weight: 400;
-						line-height: 44rpx;
-						letter-spacing: 0%;
-						text-align: left;
-					}
-
-					.company-period-row {
-						display: flex;
-						align-items: center;
-						justify-content: flex-start;
-						margin-bottom: 12rpx;
-						gap: 12rpx;
-						padding: 12rpx 0;
-					}
-
-					.company-name {
-						color: rgba(120, 130, 138, 1);
-						font-family: DM Sans;
-						font-size: 24rpx;
-						font-weight: 400;
-						line-height: 10px;
-						letter-spacing: 0.5%;
-						text-align: left;
-					}
-
-					.work-period {
-						color: rgba(120, 130, 138, 1);
-						font-family: DM Sans;
-						font-size: 24rpx;
-						font-weight: 400;
-						line-height: 10px;
-						letter-spacing: 0.5%;
-						text-align: left;
-						margin-left: 12rpx;
-					}
-
-					.job-description {
-						color: rgba(120, 130, 138, 1);
-						font-family: DM Sans;
-						font-size: 24rpx;
-						font-weight: 400;
-						line-height: 30rpx;
-						letter-spacing: 0%;
-						text-align: left;
-						white-space: pre-wrap;
-					}
-
-					.skill-tags {
-						display: flex;
-						flex-wrap: wrap;
-						gap: 8rpx;
-						margin-top: 12rpx;
-
-						.tag {
-							background: rgba(153, 153, 153, 0.1);
-							border-radius: 12rpx;
-							padding: 6rpx 10rpx;
-							color: rgba(102, 102, 102, 1);
-							font-family: DM Sans;
-							font-size: 22rpx;
-							font-weight: 400;
-							letter-spacing: 0%;
-							text-align: left;
-						}
-					}
-				}
-			}
-		}
-	}
-
-	// 教育经历部分样式
-	.education-section {
-		background: #fff;
-		border-radius: 12px;
-		padding: 30rpx;
-		margin-bottom: 20rpx;
-		box-sizing: border-box;
-		border: 1px solid rgba(227, 231, 236, 1);
-
-		.section-header {
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			margin-bottom: 30rpx;
-
-			.section-title {
-				text {
-					color: rgba(23, 23, 37, 1);
-					font-family: Inter;
-					font-size: 30rpx;
-					font-weight: 600;
-					line-height: 24px;
-				}
-			}
-		}
-
-		.education-list {
-			.education-item {
-				display: flex;
-				padding: 24rpx 0;
-				border-bottom: 1rpx solid #F0F0F0;
-
-				&:last-child {
-					border-bottom: none;
-				}
-
-				.school-logo {
-					width: 90rpx;
-					height: 90rpx;
-					margin-right: 24rpx;
-					flex-shrink: 0;
-					border-radius: 8px;
-					background: rgba(246, 246, 246, 1);
-
-					.logo-img {
-						width: 100%;
-						height: 100%;
-						border-radius: 8rpx;
-					}
-				}
-
-				.education-content {
-					flex: 1;
-
-					.school-name {
-						color: rgba(23, 23, 37, 1);
-						font-family: DM Sans;
-						font-size: 32rpx;
-						font-weight: 400;
-						line-height: 22px;
-						letter-spacing: 0%;
-						text-align: left;
-					}
-
-					.degree-info {
-						color: rgba(120, 130, 138, 1);
-						font-family: DM Sans;
-						font-size: 26rpx;
-						font-weight: 500;
-						line-height: 24px;
-						letter-spacing: 0%;
-						text-align: left;
-						padding: 12rpx 0;
-					}
-
-					.education-description {
-						color: rgba(120, 130, 138, 1);
-						font-family: DM Sans;
-						font-size: 26rpx;
-						font-weight: 400;
-						line-height: 16px;
-						letter-spacing: 0%;
-						text-align: left;
-					}
-				}
-			}
-		}
-	}
-
-	// 资格证书部分样式
-	.certificates-section {
-		background: #fff;
-		border-radius: 12px;
-		padding: 30rpx 0;
-		margin-bottom: 20rpx;
-		box-sizing: border-box;
-
-		.section-header {
-			margin-bottom: 30rpx;
-
-			.section-title {
-				text {
-					color: rgba(34, 37, 42, 1);
-					font-family: DM Sans;
-					font-size: 32rpx;
-					font-weight: 400;
-					line-height: 48rpx;
-					letter-spacing: 0px;
-					text-align: left;
-				}
-			}
-		}
-
-		.certificates-grid {
-			display: flex;
-			flex-wrap: wrap;
-			gap: 12rpx;
-
-			.certificate-tag {
-				padding: 8rpx 16rpx;
-				color: rgba(1, 107, 246, 1);
-				font-family: DM Sans;
-				font-size: 16rpx;
-				font-weight: 400;
-				line-height: 20rpx;
-				letter-spacing: -0.5px;
-				text-align: left;
-				border-radius: 8rpx;
-				background: #ebebebb5;
-			}
-		}
-	}
-
-	// 专业技能部分样式
-	.skills-section {
-		background: #fff;
-		border-radius: 12px;
-		padding: 30rpx 0;
-		margin-bottom: 20rpx;
-		box-sizing: border-box;
-
-		.section-header {
-			margin-bottom: 30rpx;
-
-			.section-title {
-				text {
-					color: rgba(34, 37, 42, 1);
-					font-family: DM Sans;
-					font-size: 32rpx;
-					font-weight: 400;
-					line-height: 48rpx;
-					letter-spacing: 0px;
-					text-align: left;
-				}
-			}
-		}
-
-		.skills-content {
-			color: rgba(97, 110, 124, 1);
-			font-family: DM Sans;
-			font-size: 24rpx;
-			font-weight: 400;
-			line-height: 32rpx;
-			letter-spacing: 0px;
-			text-align: left;
-		}
-	}
-
-	// 工作经历标题样式
-	.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);
-		display: flex;
-		align-items: center;
-		margin-bottom: 20rpx;
-
-		.title-icon {
-			width: 32rpx;
-			height: 32rpx;
-			margin-right: 12rpx;
-		}
-
-		text {
-			color: rgba(1, 107, 246, 1);
-			font-family: DM Sans;
-			font-size: 32rpx;
-			font-weight: 500;
-			line-height: 48rpx;
-			letter-spacing: 0px;
-			text-align: left;
-		}
-	}
-}
-
 // 底部操作按钮
 .bottom-actions {
 	position: fixed;

BIN
static/checked-iOS.png


BIN
static/close-iOS.png


BIN
static/images/company.png


+ 8 - 0
static/images/index/gangwei.svg

@@ -0,0 +1,8 @@
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32.000000" height="32.000000" fill="none">
+	<rect id="svg 78" width="32.000000" height="32.000000" x="0.000000" y="0.000000" />
+	<path id="矢量 82" d="M16 0C18.8086 0 21.5677 0.7393 24 2.14359C26.4323 3.54789 28.4521 5.56769 29.8564 8C31.2607 10.4323 32 13.1914 32 16C32 18.8086 31.2607 21.5677 29.8564 24C28.4521 26.4323 26.4323 28.4521 24 29.8564C21.5677 31.2607 18.8086 32 16 32C13.1914 32 10.4323 31.2607 8 29.8564C5.56769 28.4521 3.54789 26.4323 2.14359 24C0.739301 21.5677 0 18.8086 0 16C0 13.1914 0.739302 10.4323 2.1436 8C3.54789 5.56769 5.56769 3.54789 8 2.14359C10.4323 0.7393 13.1914 0 16 0Z" fill="rgb(198,205,255)" fill-opacity="0.5" fill-rule="nonzero" />
+	<g id="组合 87">
+		<path id="矢量 83" d="M11.828 5L19.172 5L17.328 8.5051L13.672 8.5051L11.828 5L11.828 5ZM15.5 26L10 20.75L13.672 10.25L17.328 10.25L21 20.75L15.5 26ZM11.844 20.3367L15.5 23.8265L19.156 20.3367L16.1735 11.7806L14.8265 11.7806L11.844 20.3367Z" fill="rgb(11,35,206)" fill-rule="nonzero" />
+		<path id="矢量 84" d="M12.4213 14.5353L17.1837 11.918L18.0977 13.4333L13.3353 16.0506L12.4213 14.5353ZM11.1545 18.5302L17.4883 15.0404L18.4023 16.5557L12.0685 20.0455L11.1545 18.5302L11.1545 18.5302ZM12.4053 21.6833L18.7551 18.1935L19.6691 19.6935L13.3192 23.1986L12.4053 21.6833L12.4053 21.6833Z" fill="rgb(11,35,206)" fill-rule="nonzero" />
+	</g>
+</svg>

BIN
static/login-btn-iOS.png


BIN
static/unchecked-iOS.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/res/Android/agconnect-services.json


+ 40 - 4
utils/jVerificationLogin.js

@@ -13,6 +13,8 @@ const jvState = {
 	isInit: false, // SDK 是否已初始化
 };
 
+const isIOS = uni.getSystemInfoSync().platform == "ios"
+
 /**
  * 初始化极光 SDK(仅初始化一次)
  */
@@ -44,8 +46,35 @@ function initJVerification() {
  * 配置极光一键登录自定义 UI
  */
 function configJVerificationUI() {
-	if (uni.getSystemInfoSync().platform == "ios") {
+	if (isIOS) {
 		// iOS平台
+		jv.setCustomUIWithConfigiOS({
+			logoImg: 'static/invite.png',
+			logoWidth: 200,
+			logoHeight: 200,
+			navColor: 0xffffff,
+			navReturnImg: 'static/close-iOS.png',
+			numberColor: 0xff333333,
+			numberSize: 28,
+			numFieldOffsetY: 340,
+			sloganOffsetY: 380,
+			logBtnText: '一键登录',
+			logBtnOffsetY: 418,
+			logBtnImgs: ['static/login-btn-iOS.png', 'static/login-btn-iOS.png', 'static/login-btn-iOS.png'],
+			uncheckedImg: 'static/unchecked-iOS.png',
+			checkedImg: 'static/checked-iOS.png',
+			privacyCheckToastMessage: '请点击同意协议',
+			privacyShowBookSymbol: true,
+			privacyTextFontSize: 12,
+			appPrivacyColor: [0xff605D67, 0xff016BF6],
+			appPrivacys:[
+				"已阅读并同意",
+			["、","《亿职赞用户协议》","https://h5.bosszan.com/my/setting/xieyi","亿职赞用户协议"],
+			["和","《隐私协议》","https://h5.bosszan.com/my/setting/mimi","隐私协议"],
+			",允许亿职赞统一管理本人账号信息"],
+			agreementNavBackgroundColor: 0xffffff,
+			agreementNavReturnImage: 'static/close-iOS.png'
+		})
 	} else {
 		// Android平台
 		jv.setCustomUIWithConfigAndroid({
@@ -110,10 +139,10 @@ function doJVerificationLogin(callback) {
 
 			// 显示一键登录界面
 			jv.loginAuth({
-				autoFinish: false,
+				autoFinish: isIOS ? true : false,
 				timeout: 5000
 			}, (loginRes) => {
-				console.log(' loginRes ', loginRes)
+				uni.showLoading({ title: '登录中' })
 				if (loginRes.code == 6000) {
 					// 成功获取运营商的loginToken
 					// 请求后端接口进行登录
@@ -134,10 +163,15 @@ function doJVerificationLogin(callback) {
 							}
 							plus.nativeUI.toast('登录失败:', response.msg)
 						})
+						.finally(() => {
+							uni.hideLoading()
+						})
 				} else if (loginRes.code == 6002) {
 					// 用户取消了一键登录
+					uni.hideLoading()
 				} else {
 					// 其他情况则跳转到手机验证码登录
+					uni.hideLoading()
 					plus.nativeUI.toast('一键登录失败')
 				}
 			}, (event) => {
@@ -152,7 +186,9 @@ function doJVerificationLogin(callback) {
  */
 export function closeVerifyView() {
 	// #ifdef APP-PLUS
-	jv.dismissLoginAuth(true);
+	if (!isIOS) {
+		jv.dismissLoginAuth(true);
+	}
 	// #endif
 }
 

+ 1 - 0
uview-ui/components/u-modal/u-modal.vue

@@ -226,6 +226,7 @@
 			},
 			// 点击遮罩关闭modal,设置v-model的值为false,否则无法第二次弹起modal
 			popupClose() {
+				this.$emit('close')
 				this.$emit('input', false);
 			},
 			// 清除加载中的状态

+ 3 - 2
uview-ui/components/u-radio/u-radio.vue

@@ -1,11 +1,12 @@
 <template>
 	<view class="u-radio" :style="[radioStyle]">
 		<view class="u-radio__icon-wrap" @tap="toggle" :class="[iconClass]" :style="[iconStyle]">
-			<u-icon
+			<!-- <u-icon
 				class="u-radio__icon-wrap__icon"
 			    name="checkbox-mark"
 			    :size="elIconSize" 
-				:color="iconColor"/>
+				:color="iconColor"/> -->
+			<view style="width: 100%; height: 100%; border: 1.5px solid #fff; border-radius: 50%;"></view>
 		</view>
 		<view class="u-radio__label" @tap="onClickLabel" :style="{
 			fontSize: $u.addUnit(labelSize)

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