浏览代码

基本信息改

your_username 2 周之前
父节点
当前提交
e1d74d9ddf

+ 1 - 1
pages/jobManagement/jobManagement.vue

@@ -125,7 +125,7 @@ export default {
 	},
 	methods: {
 		goBack() {
-			uni.navigateBack()
+			uni.navigateBack();
 		},
 		// 切换菜单
 		tabChange(e) {

+ 157 - 0
pages/my/changeCompanies.vue

@@ -0,0 +1,157 @@
+<template>
+    <view class="switch-roles">
+      <view class="roles-content">
+        <view class="content">
+          <view class="title">公司全称</view>
+          <view class="desc">填写当前就职的公司</view>
+          <view class="title-second">公司营业执照名称</view>
+          <view class="input-box">
+            <u-input
+              placeholder="请输入您所属公司营业执照上的公司名称"
+              v-model="phoneNumber"
+              clearable
+              class="custom-input"
+              maxlength="46"
+            >
+              <template #prefix>
+                <u-icon name="phone" size="36rpx" color="#999" marginRight="20rpx"></u-icon>
+              </template>
+            </u-input>
+          </view>
+          <view class="desc-txt">
+            <view class="desc-txt-item">注意事项:</view>
+            <view class="desc-txt-item">1.请输入您所述公司营业执照上的公司名称</view>
+            <view class="desc-txt-item"
+              >2.公司名称将用于后续企业认证环节,请确保准确性</view
+            >
+          </view>
+          <image src="@/static/images/my/join-yzz.svg" mode="scaleToFill" />
+        </view>
+      </view>
+      <view class="next-btn" @click="goPeopleNumber">下一步</view>
+    </view>
+  </template>
+  <script>
+  import navBar from "@/components/nav-bar/index.vue";
+  export default {
+    data() {
+      return {};
+    },
+    components: {
+      navBar,
+    },
+    methods: {
+      goBusinessLicense() {
+        uni.navigateTo({ url: "/pages/my/businessLicense" });
+      },
+      goPeopleNumber(){
+          uni.navigateTo({ url: '/pages/my/changePosition' })
+      }
+    },
+  };
+  </script>
+  <style lang="scss" scoped>
+  .input-box{
+      width: 100%;
+      padding: 16rpx 0 32rpx 0;
+      box-sizing: border-box;
+  }
+  ::v-deep .u-input {
+    text-align: left !important;
+  }
+  .custom-input {
+      width: 100%;
+    box-sizing: border-box;
+    border: 2rpx solid rgba(158, 161, 168, 1);
+    border-radius: 100rpx;
+    background: rgba(255, 255, 255, 1);
+    padding: 0rpx 24rpx !important;
+  }
+  .switch-roles {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    padding: 60rpx;
+    padding-top: 80rpx;
+    display: flex;
+    flex-direction: column;
+    .roles-content {
+      width: 100%;
+      flex: 1;
+      overflow: hidden;
+      overflow-y: auto;
+      box-sizing: border-box;
+      .content {
+        padding-top: 60rpx;
+        box-sizing: border-box;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        .title {
+          width: 100%;
+          color: rgba(29, 33, 41, 1);
+          font-family: DM Sans;
+          font-size: 36rpx;
+          font-weight: 500;
+          line-height: 44rpx;
+          text-align: left;
+        }
+        .desc {
+          width: 100%;
+          color: rgba(102, 102, 102, 1);
+          font-family: DM Sans;
+          font-size: 24rpx;
+          font-weight: 400;
+          line-height: 32rpx;
+          text-align: left;
+          padding: 22rpx 0;
+          box-sizing: border-box;
+        }
+        .title-second {
+          width: 100%;
+          color: #1f2c37;
+          font-family: DM Sans;
+          font-size: 28rpx;
+          font-weight: 500;
+          line-height: 44rpx;
+          text-align: left;
+        }
+        .desc-txt {
+          width: 100%;
+          color: rgba(102, 102, 102, 1);
+          font-family: DM Sans;
+          font-size: 24rpx;
+          font-weight: 400;
+          line-height: 32rpx;
+          text-align: left;
+          .desc-txt-item {
+            margin-top: 8rpx;
+          }
+        }
+        image {
+          margin-top: 106rpx;
+          width: 550rpx;
+          height: 550rpx;
+        }
+      }
+    }
+    .next-btn {
+      border-radius: 999px;
+      background: rgba(255, 102, 0, 1);
+      padding: 16rpx 32rpx;
+      box-sizing: border-box;
+      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;
+    }
+  }
+  </style>
+  

+ 217 - 0
pages/my/changePosition.vue

@@ -0,0 +1,217 @@
+<template>
+	<view class="change-position-page">
+		<!-- 自定义导航栏 -->
+		<view class="custom-navbar">
+			<view class="navbar-content">
+				<view class="nav-left" @click="goBack">
+					<u-icon name="arrow-leftward" color="#333" size="32"></u-icon>
+				</view>
+				<view class="nav-title">更换职务</view>
+				<view class="nav-right"></view>
+			</view>
+		</view>
+		
+		<!-- 内容区域 -->
+		<view class="content-area">
+			<view class="position-section">
+				<view class="section-title">我的职务</view>
+				<view class="section-desc">填写职务名称,让求职者更了解您的身份</view>
+				
+				<view class="input-container">
+					<view class="input-box">
+						<u-input
+							v-model="positionName"
+							placeholder="请填写职务名称"
+							maxlength="50"
+                            input-align="left"
+                            height="96"
+                            padding="40"
+                            class="position-input"
+							clearable
+						/>
+					</view>
+					<view class="hint-text">每个月可修改3次,您还有2次机会</view>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 底部确定按钮 -->
+		<view class="bottom-confirm-btn" @click="confirmPosition">
+			<text>确定</text>
+		</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			positionName: '',
+			remainingChanges: 2 // 剩余修改次数
+		};
+	},
+	methods: {
+		// 返回上一页
+		goBack() {
+			uni.navigateBack();
+		},
+		
+		// 确认职务修改
+		confirmPosition() {
+			if (!this.positionName.trim()) {
+				uni.showToast({
+					title: '请输入职务名称',
+					icon: 'none'
+				});
+				return;
+			}
+			
+			if (this.remainingChanges <= 0) {
+				uni.showToast({
+					title: '本月修改次数已用完',
+					icon: 'none'
+				});
+				return;
+			}
+			
+			uni.showLoading({
+				title: '处理中...'
+			});
+			
+			setTimeout(() => {
+				uni.hideLoading();
+				uni.showToast({
+					title: '职务修改成功',
+					icon: 'success'
+				});
+				
+				setTimeout(() => {
+					uni.navigateBack();
+				}, 1500);
+			}, 1500);
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+.change-position-page {
+	min-height: 100vh;
+	// background: #f5f5f5;
+}
+
+/* 自定义导航栏 */
+.custom-navbar {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	background: #fff;
+	z-index: 9999;
+	
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		height: 88rpx;
+		padding: 0 40rpx;
+		padding-top: 80rpx;
+		
+		.nav-left {
+			display: flex;
+			align-items: center;
+		}
+		
+		.nav-title {
+			color: rgba(51, 51, 51, 1);
+			font-size: 32rpx;
+			font-weight: 600;
+			line-height: 44rpx;
+			text-align: center;
+		}
+		
+		.nav-right {
+			width: 60rpx;
+		}
+	}
+}
+
+/* 内容区域 */
+.content-area {
+	padding: 160rpx 30rpx 30rpx;
+}
+
+.position-section {
+	background: #fff;
+	border-radius: 24rpx;
+	// padding: 40rpx;
+}
+
+.section-title {
+    color: rgba(51, 51, 51, 1);
+    font-family: DM Sans;
+    font-size: 48rpx;
+    font-weight: 700;
+    line-height: 60rpx;
+    letter-spacing: 0px;
+    text-align: left;
+	margin-bottom: 12rpx;
+}
+
+.section-desc {
+    color: rgba(102, 102, 102, 1);
+    font-family: DM Sans;
+    font-size: 24rpx;
+    font-weight: 400;
+    line-height: 32rpx;
+    letter-spacing: 0.5%;
+    text-align: left;
+	margin-bottom: 20rpx;
+}
+
+.input-container {
+	.input-box {
+		margin-bottom: 20rpx;
+		
+		.position-input {
+			background: rgba(247, 248, 249, 1);
+            // padding: 32rpx;
+		}
+	}
+	
+	.hint-text {
+        color: rgba(102, 102, 102, 1);
+        font-family: DM Sans;
+        font-size: 24rpx;
+        font-weight: 400;
+        line-height: 32rpx;
+        letter-spacing: 0.5%;
+        margin-left: rpx;
+        text-align: left;
+	}
+}
+
+/* 底部确定按钮 */
+.bottom-confirm-btn {
+    width: 90%;
+	height: 88rpx;
+	background: var(--线性渐变, linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1) 100%));
+	border-radius: 44rpx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+    margin: 0 auto;
+	
+	text {
+		color: rgba(255, 255, 255, 1);
+		font-size: 32rpx;
+		font-weight: 600;
+		line-height: 44rpx;
+	}
+	
+	&:active {
+		opacity: 0.8;
+	}
+}
+</style>

+ 425 - 0
pages/my/myCompany.vue

@@ -0,0 +1,425 @@
+<template>
+	<view class="my-company-page">
+		<!-- 自定义导航栏 -->
+		<view class="custom-navbar">
+			<view class="navbar-content">
+				<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>
+		</view>
+		
+		<!-- 头部渐变背景区域 -->
+		<view class="header-section">
+			<!-- 插画区域 -->
+			<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">汉睿国际</view>
+				<view class="company-full-name">深圳市汉睿国际猎头服务有限公司</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">0-20人</view>
+				</view>
+				<view class="info-item">
+					<view class="info-label">融资阶段</view>
+					<view class="info-value">暂无融资</view>
+				</view>
+				<view class="info-item">
+					<view class="info-label">所属行业</view>
+					<view class="info-value">跨境电商</view>
+				</view>
+			</view>
+			
+			<!-- 操作按钮 -->
+			<view class="action-buttons">
+				<view class="leave-btn" @click="leaveCompany">
+					<text>离开公司</text>
+				</view>
+				<view class="change-btn" @click="changeCompany">
+					<text>更换公司</text>
+				</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>
+						<view class="impact-item">
+							<text class="item-number">3.</text>
+							<text class="item-text">正在使用中的付费职位等相关权益不在生效, 并且不做退还</text>
+						</view>
+						<view class="impact-item">
+							<text class="item-number">4.</text>
+							<text class="item-text">更换/离开公司后, 若您有绑定的免密支付将自动解除</text>
+						</view>
+					</view>
+				</view>
+				
+				<view class="modal-buttons">
+					<view class="cancel-btn" @click="closeLeaveModal">
+						<text>取消</text>
+					</view>
+					<view class="confirm-btn" @click="confirmLeaveCompany">
+						<text>仍要离开</text>
+					</view>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			companyInfo: {
+				name: '汉睿国际',
+				fullName: '深圳市汉睿国际猎头服务有限公司',
+				size: '0-20人',
+				finance: '暂无融资',
+				industry: '跨境电商'
+			},
+			showLeaveModal: false // 控制弹窗显示
+		};
+	},
+	methods: {
+		// 返回上一页
+		goBack() {
+			uni.navigateBack();
+		},
+		
+		// 离开公司
+		leaveCompany() {
+			this.showLeaveModal = true;
+		},
+		
+		// 关闭离开公司弹窗
+		closeLeaveModal() {
+			this.showLeaveModal = false;
+		},
+		
+		// 确认离开公司
+		confirmLeaveCompany() {
+			this.showLeaveModal = false;
+			uni.showLoading({
+				title: '处理中...'
+			});
+			
+			setTimeout(() => {
+				uni.hideLoading();
+				uni.showToast({
+					title: '已离开公司',
+					icon: 'success'
+				});
+				
+				setTimeout(() => {
+					uni.navigateBack();
+				}, 1500);
+			}, 1500);
+		},
+		
+		// 更换公司
+		changeCompany() {
+			uni.navigateTo({
+				url: '/pages/my/changeCompanies'
+			});
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+.my-company-page {
+	min-height: 100vh;
+	background: var(--线性渐变, linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1) 100%));
+	background-size: 100% 35%;
+	background-position: center top;
+	background-repeat: no-repeat;
+	position: relative;
+	padding-bottom: 40rpx;
+}
+
+/* 导航栏 */
+.custom-navbar {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	background: transparent;
+	z-index: 9999;
+	
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		height: 88rpx;
+		padding: 0 40rpx;
+		padding-top: 80rpx;
+		
+		.nav-left {
+			display: flex;
+			align-items: center;
+			gap: 8rpx;
+			
+			.nav-breadcrumb {
+				color: rgba(255, 255, 255, 1);
+				font-family: DM Sans;
+				font-size: 28rpx;
+				font-weight: 400;
+				line-height: 40rpx;
+			}
+		}
+		
+		.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;
+		}
+		
+		.nav-right {
+			width: 60rpx;
+		}
+	}
+}
+
+/* 头部区域 */
+.header-section {
+	padding: 160rpx 40rpx  66rpx 40rpx;
+	text-align: center;
+}
+
+.illustration-area {
+	margin-bottom: 30rpx;
+	
+	.company-illustration {
+		width: 280rpx;
+		height: 180rpx;
+		max-width: 100%;
+	}
+}
+
+.company-name-section {
+	.company-brand {
+        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;
+		margin-bottom: 8rpx;
+	}
+	
+	.company-full-name {
+        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;
+	}
+}
+
+.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;
+        font-weight: 400;
+        line-height: 48rpx;
+        letter-spacing: 0%;
+        text-align: center;
+	}
+	
+	&:active {
+		background: rgba(255, 122, 69, 0.1);
+	}
+}
+
+.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;
+        font-weight: 400;
+        line-height: 48rpx;
+        letter-spacing: 0%;
+        text-align: center;
+	}
+	
+	&:active {
+		opacity: 0.8;
+	}
+}
+
+/* 离开公司弹窗样式 */
+.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;
+    font-size: 28rpx;
+    font-weight: 500;
+    line-height: 36rpx;
+    letter-spacing: 0%;
+    text-align: center;
+    text-transform: uppercase;
+}
+</style>

+ 326 - 42
pages/my/userinfo.vue

@@ -1,73 +1,123 @@
 <template>
 	<view>
+		<!-- 顶部导航栏 -->
+		<view class="navbar">
+			<view class="navbar-content">
+				<view class="navbar-left" @click="goBack">
+					<u-icon name="arrow-leftward" size="38" color="#333"></u-icon>
+				</view>
+				<view class="navbar-title">基本信息</view>
+				<view class="navbar-right"></view>
+			</view>
+		</view>
+
 		<view class="usermain">
 			<view class="usermain-item ">
-				<view>头像</view>
-				<!-- #ifdef MP-WEIXIN -->
-				<view>
-					<button open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
-						<image style="width: 111rpx;height: 111rpx;border-radius: 50%"
+				<view class="usermain-item-title">头像</view>
+				<view class="avatar-wrapper">
+					<!-- #ifdef MP-WEIXIN -->
+					<button open-type="chooseAvatar" class="avatar-button" @chooseavatar="onChooseAvatar">
+						<image style="width: 78rpx;height: 78rpx;border-radius: 50%"
 							:src="avatar?avatar:'../../static/logo.png'"></image>
 					</button>
+					<!-- #endif -->
+					<!-- #ifndef MP-WEIXIN -->
+					<view @click="uploadImg()">
+						<image src="../../static/logo.png" v-if="avatar==null" mode=""
+							style="width: 78rpx;height: 78rpx;border-radius: 50%;"></image>
+						<image v-else :src="avatar" mode="" style="width: 78rpx;height: 78rpx;border-radius: 50%;">
+						</image>
+					</view>
+					<!-- #endif -->
+					<view class="edit-avatar-icon">
+						<image src="/static/images/index/Combined-Shape.svg" style="width: 32rpx;height: 32rpx;" mode="scaleToFill"></image>
+					</view>
 				</view>
-				<!-- #endif -->
-				<!-- #ifndef MP-WEIXIN -->
-				<view @click="uploadImg()">
-					<image src="../../static/logo.png" v-if="avatar==null" mode=""
-						style="width: 111rpx;height: 111rpx;border-radius: 50%;"></image>
-					<image v-else :src="avatar" mode="" style="width: 111rpx;height: 111rpx;border-radius: 50%;">
-					</image>
+			</view>
+			<view class="usermain-item item-padding ">
+				<view class="form-label">
+					<text class="required-mark">*</text>
+					<text class="usermain-item-title">姓名</text>
+				</view>
+				<view class="cu-form-group">
+					<input type="nickname" v-model="userName" placeholder="请输入用户名" />
 				</view>
-				<!-- #endif -->
-
 			</view>
 			<view class="usermain-item item-padding ">
-				<view>用户名</view>
+				<view class="form-label">
+					<text class="required-mark">*</text>
+					<view class="usermain-item-title">性别</view>
+				</view>
+
 				<view>
 					<view class="cu-form-group">
-						<input type="nickname" v-model="userName" placeholder="请输入用户名" />
+						<u-radio-group v-model="sex">
+							<u-radio shape="circle" :name="1">男</u-radio>
+							<u-radio shape="circle" active-color="red" :name="2">女</u-radio>
+						</u-radio-group>
 					</view>
 				</view>
 			</view>
 			<view class="usermain-item item-padding ">
-				<view>年龄</view>
+				<view class="usermain-item-title">年龄</view>
 				<view>
 					<view class="cu-form-group">
 						<input v-model="age" />
 					</view>
 				</view>
 			</view>
+			<view class="usermain-item item-padding contact-structure">
+				<view class="usermain-item-title">联系方式</view>
+				<view class="contact-wrapper">
+					<text class="phone-display">{{phoneWithMask}}</text>
+					<text class="modify-link" @click="modifyPhone">修改手机号</text>
+				</view>
+			</view>
 			<!-- <view class="usermain-item item-padding">
 				<view  >姓名</view>
 				<view class="cu-form-group">
 					<input    v-model="realName" placeholder="请填写您的真实姓名" />
 				</view>
 			</view> -->
-
 			<view class="usermain-item item-padding ">
-				<view>手机</view>
+				<view class="usermain-item-title">微信号码</view>
 				<view>
 					<view class="cu-form-group">
-						<input v-model="phone" placeholder="请输入联系电话" :disabled="true" />
+						<input v-model="weChatNum" placeholder="请输入微信号码,方便给求职者交换微信联系" />
 					</view>
 				</view>
 			</view>
-			<view class="usermain-item item-padding ">
-				<view>微信号</view>
+			
+			<!-- 接收简历邮箱 -->
+			<view class="usermain-item item-padding">
+				<view class="usermain-item-title">接收简历邮箱</view>
 				<view>
 					<view class="cu-form-group">
-						<input v-model="weChatNum" placeholder="请输入微信号" />
+						<input v-model="email" placeholder="建议录入企业邮箱" />
 					</view>
 				</view>
 			</view>
-			<view class="usermain-item item-padding ">
-				<view>性别</view>
+			
+			<!-- 我的公司 -->
+			<view class="usermain-item item-padding">
+				<view class="usermain-item-title">我的公司</view>
 				<view>
-					<view class="cu-form-group">
-						<u-radio-group v-model="sex">
-							<u-radio shape="circle" :name="1">男</u-radio>
-							<u-radio shape="circle" active-color="red" :name="2">女</u-radio>
-						</u-radio-group>
+					<view class="form-input-selector" @click="selectCompany">
+						<text v-if="selectedCompany">{{ selectedCompany }}</text>
+						<text v-else class="placeholder">请选择公司</text>
+						<u-icon name="arrow-down" color="#999" size="36"></u-icon>
+					</view>
+				</view>
+			</view>
+			
+			<!-- 我的职务 -->
+			<view class="usermain-item item-padding">
+				<view class="usermain-item-title">我的职务</view>
+				<view>
+					<view class="form-input-selector" @click="selectPosition">
+						<text v-if="selectedPosition">{{ selectedPosition }}</text>
+						<text v-else class="placeholder">请选择职务</text>
+						<u-icon name="arrow-down" color="#999" size="36"></u-icon>
 					</view>
 				</view>
 			</view>
@@ -85,6 +135,9 @@
 			return {
 				phone: '',
 				weChatNum:'',//微信号
+				email: '',//接收简历邮箱
+				selectedCompany: '深圳市汉瑞国际猎头服务有限公司', // 我的公司
+				selectedPosition: '人事总监', // 我的职务
 				avatar: '../../static/logo.png',
 				userName: '',
 				nickName: '',
@@ -103,11 +156,44 @@
 				age: 0
 			};
 		},
+		computed: {
+			phoneWithMask() {
+				if (this.phone && this.phone.length >= 11) {
+					return this.phone.substring(0, 3) + '******' + this.phone.substring(9);
+				}
+				return this.phone || '请设置手机号';
+			}
+		},
 		onLoad(e) {
 			this.getUserInfo()
 			// this.avatar = uni.getStorageSync('avatar')
 		},
 		methods: {
+			// 返回上一页
+			goBack() {
+				uni.navigateBack();
+			},
+			// 修改手机号
+			modifyPhone() {
+				console.log('点击修改手机号,当前手机号:', this.phone);
+				const url = `/pages/my/userphone?currentPhone=${this.phone}`;
+				console.log('跳转路径:', url);
+				
+				uni.navigateTo({
+					url: url,
+				});
+			},
+			// 选择公司
+			selectCompany() {
+				uni.navigateTo({
+					url: '/pages/my/myCompany'
+				});
+			},
+			// 选择职务
+			selectPosition() {
+				// 这里可以跳转到职务选择页面或显示职务选择弹窗
+				console.log('选择职务');
+			},
 			onChooseAvatar(e) {
 				let that = this;
 				let token = uni.getStorageSync('token');
@@ -297,11 +383,47 @@
 	};
 </script>
 
-<style>
+<style lang="scss" scoped>
 	page {
 		/* background: #1c1b20; */
 	}
 
+	.navbar {
+		background: #fff;
+		padding: 80rpx 0 40rpx 20rpx;
+		
+		.navbar-content {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 0 30rpx;
+			height: 60rpx;
+			
+			.navbar-left {
+				width: 60rpx;
+				height: 60rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+			
+			.navbar-title {
+                color: rgba(23, 23, 37, 1);
+                font-family: DM Sans;
+                font-size: 20px;
+                font-weight: 700;
+                line-height: 26px;
+                letter-spacing: 0%;
+                text-align: center;
+			}
+			
+			.navbar-right {
+				width: 60rpx;
+				height: 60rpx;
+			}
+		}
+	}
+
 	button::after {
 		border: none;
 		background-color: none;
@@ -332,12 +454,20 @@
 
 	.usermain-item {
 		display: flex;
-		align-items: center;
+		flex-direction: column;
 		margin: 0 40rpx;
-		padding: 10rpx 0;
-		justify-content: space-between;
-		border-bottom: 1rpx solid #e5e5e5;
-		/* border-bottom: 2rpx solid #f2f2f2; */
+		padding: 20rpx 0;
+		// border-bottom: 1rpx solid rgba(229, 229, 229, 0.3);
+		gap: 16rpx;
+	}
+
+	.usermain-item-title {
+		color: rgba(31, 44, 55, 1);
+		font-family: DM Sans;
+		font-size: 28rpx;
+		font-weight: 500;
+		line-height: 44rpx;
+		text-align: left;
 	}
 
 	.usermain-item.item-padding {
@@ -357,19 +487,173 @@
 
 	}
 
+	/* 姓名字段样式 - 参考basicInfo.vue */
+	.usermain-item .form-label {
+		color: rgba(31, 44, 55, 1);
+		font-family: DM Sans;
+		font-size: 32rpx;
+		font-weight: 500;
+		line-height: 44rpx;
+		letter-spacing: 0.5%;
+		text-align: left;
+		display: flex;
+		align-items: center;
+		margin-bottom: 16rpx;
+	}
+
+	.usermain-item .required-mark {
+		color: #FF3B30;
+		font-size: 36rpx;
+		font-weight: 600;
+		margin-right: 8rpx;
+	}
+
+	.usermain-item .cu-form-group {
+		background: transparent;
+		text-align: left;
+		padding: 0;
+	}
+
+	.usermain-item .cu-form-group input {
+		width: 100%;
+		height: 68rpx;
+		font-size: 28rpx;
+		border: 1rpx solid rgba(227, 231, 236, 1);
+		border-radius: 44rpx;
+		color: rgba(23, 23, 37, 1);
+		padding: 0 32rpx;
+		background: #ffffff;
+		font-family: DM Sans;
+		font-weight: 400;
+	}
+
+	.usermain-item .cu-form-group input::placeholder {
+		color: rgba(155, 155, 155, 1);
+		font-size: 28rpx;
+	}
+
+	/* 联系方式样式 */
+	.contact-structure {
+		border-bottom: none !important;
+	}
+
+	.contact-wrapper {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 0;
+		margin-top: 8rpx;
+	}
+
+	.phone-display {
+		color: rgba(23, 23, 37, 1);
+		font-family: DM Sans;
+		font-size: 28rpx;
+		font-weight: 400;
+		line-height: 40rpx;
+		letter-spacing: 0.5%;
+	}
+
+	.modify-link {
+		color: rgba(24, 144, 255, 1);
+		font-family: DM Sans;
+		font-size: 28rpx;
+		font-weight: 400;
+		line-height: 40rpx;
+		letter-spacing: 0.5%;
+		cursor: pointer;
+		text-decoration: none;
+	}
+
+	.modify-link:active {
+		opacity: 0.7;
+	}
+
+	/* 头像编辑图标样式 */
+	.avatar-wrapper {
+		position: relative;
+		display: inline-block;
+	}
+
+	.edit-avatar-icon {
+		position: absolute;
+		bottom: 10rpx;
+		right: 2rpx;
+		width: 24rpx;
+		height: 24rpx;
+		// background: #fff;
+		border-radius: 50%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
+	}
+
+	.avatar-button {
+		position: relative;
+		padding: 0;
+		margin: 0;
+		background: transparent;
+		border: none;
+	}
+
 	.footer-btn {
-		margin-top: 150rpx;
+		margin-top: 40rpx;
+		padding-bottom: 40rpx;
 	}
 
 	.footer-btn .usermain-btn {
-		color: #FFFFFF;
-		background: #6696FF;
+		color: rgba(255, 255, 255, 1);
+		background: rgba(1, 107, 246, 1);
 		text-align: center;
-		width: 450rpx;
+		width: 90%;
 		height: 80rpx;
-		font-size: 28rpx;
+		font-size: 32rpx;
 		line-height: 80rpx;
-		margin: 0 auto;
+		margin: 20rpx auto;
 		border-radius: 40rpx;
 	}
+
+	/* 选择器样式 - 参考workExperience页面 */
+	.form-input-selector {
+		width: 100%;
+		height: 68rpx;
+		padding: 0 40rpx;
+		border: 1px solid rgba(227, 231, 236, 1);
+		border-radius: 24px;
+		background: rgba(255, 255, 255, 1);
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		cursor: pointer;
+		transition: all 0.2s ease;
+		
+		.placeholder {
+			color: #999999;
+			font-family: DM Sans;
+			font-size: 28rpx;
+			font-weight: 400;
+			line-height: 40rpx;
+		}
+		
+		text {
+			color: rgba(23, 23, 37, 1);
+			font-family: DM Sans;
+			font-size: 28rpx;
+			font-weight: 400;
+			line-height: 40rpx;
+		}
+	}
+
+	.arrow-down {
+		color: rgba(96, 98, 102, 1);
+		font-size: 24rpx;
+		font-weight: 400;
+		transform: scale(1.5);
+	}
+
+	.selector-group:active {
+		background: #f5f7fa !important;
+		transform: scale(0.99);
+	}
 </style>

+ 519 - 0
pages/my/userphone.vue

@@ -0,0 +1,519 @@
+<template>
+	<view class="modify-phone-page">
+		<!-- 自定义导航栏 -->
+		<view class="custom-navbar">
+			<view class="navbar-content">
+				<view class="nav-left" @click="goBack">
+					<u-icon name="arrow-leftward" color="#333" size="42"></u-icon>
+				</view>
+				<view class="nav-title">修改手机号</view>
+				<view class="nav-right"></view>
+			</view>
+		</view>
+		
+		<!-- 主要内容 -->
+		<view class="main-content">
+			<!-- 页面标题 -->
+			<view class="page-title">修改手机号</view>
+			
+			<!-- 说明文字 -->
+			<view class="description">
+				<text>修改手机号后,可以使用新手机号登录亿职赞,聊天时"交换电话"功能的手机号会统一修改</text>
+			</view>
+			
+			<!-- 当前手机号显示 -->
+			<view class="current-phone-section">
+				<text class="current-label">当前手机号:</text>
+				<text class="current-phone">{{currentPhoneMask}}</text>
+			</view>
+			
+			<!-- 新手机号输入 -->
+			<view class="input-section">
+				<view class="phone-input-container">
+					<view class="country-selector" @click="showCountrySelector">
+						<text class="country-code">+ 86</text>
+						<u-icon name="arrow-down" color="#999" size="24"></u-icon>
+					</view>
+					<input 
+						v-model="newPhone" 
+						type="number" 
+						placeholder="请输入新手机号" 
+						maxlength="11"
+						class="phone-input"
+					/>
+				</view>
+			</view>
+			
+			<!-- 验证码输入 -->
+			<view class="verification-section">
+				<view class="verify-input-container">
+					<view class="verify-boxes">
+						<input 
+							v-for="(digit, index) in verificationDigits" 
+							:key="index"
+							v-model="verificationDigits[index]"
+							type="number"
+							maxlength="1"
+							class="verify-box"
+							@input="handleDigitInput(index, $event)"
+							@keyup.delete="handleDelete(index)"
+						/>
+					</view>
+					<view class="get-code-btn" @click="getVerificationCode" :class="{ disabled: isCountingDown }">
+						<text>{{ countdownText }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 底部确定按钮 -->
+		<view class="bottom-btn-container">
+			<view class="confirm-btn" @click="confirmChange" :class="{ disabled: !canConfirm }">
+				<text>确定</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import configdata from '../../common/config.js';
+
+export default {
+	data() {
+		return {
+			currentPhone: '18800000097', // 当前手机号
+			newPhone: '', // 新手机号
+			verificationDigits: ['', '', '', '', ''], // 验证码
+			isCountingDown: false,
+			countdown: 60,
+			countdownText: '获取验证码',
+		};
+	},
+	computed: {
+		// 当前手机号脱敏显示
+		currentPhoneMask() {
+			if (this.currentPhone && this.currentPhone.length >= 11) {
+				return this.currentPhone.substring(0, 3) + '********' + this.currentPhone.substring(9);
+			}
+			return this.currentPhone || '请设置手机号';
+		},
+		// 是否可以确认
+		canConfirm() {
+			return this.newPhone.length === 11 && this.verificationDigits.join('').length === 5;
+		}
+	},
+	onLoad(options) {
+		// 从用户信息页面获取当前手机号
+		if (options.currentPhone) {
+			this.currentPhone = options.currentPhone;
+		}
+	},
+	methods: {
+		// 返回上一页
+		goBack() {
+			uni.navigateBack();
+		},
+		
+		// 显示国家选择器
+		showCountrySelector() {
+			uni.showToast({
+				title: '选择国家/地区',
+				icon: 'none'
+			});
+		},
+		
+		// 验证码输入处理
+		handleDigitInput(index, event) {
+			const value = event.detail.value;
+			this.verificationDigits[index] = value;
+			
+			// 自动跳转到下一框
+			if (value && index < 4) {
+				this.$nextTick(() => {
+					const nextInput = this.$el.querySelector(`input[data-index="${index + 1}"]`);
+					if (nextInput) nextInput.focus();
+				});
+			}
+		},
+		
+		// 删除处理
+		handleDelete(index) {
+			if (!this.verificationDigits[index] && index > 0) {
+				this.$nextTick(() => {
+					const prevInput = this.$el.querySelector(`input[data-index="${index - 1}"]`);
+					if (prevInput) prevInput.focus();
+				});
+			}
+		},
+		
+		// 获取验证码
+		async getVerificationCode() {
+			if (!this.newPhone) {
+				uni.showToast({
+					title: '请输入新手机号',
+					icon: 'none'
+				});
+				return;
+			}
+			
+			if (this.newPhone.length !== 11) {
+				uni.showToast({
+					title: '请输入正确的手机号',
+					icon: 'none'
+				});
+				return;
+			}
+			
+			uni.showLoading({
+				title: '发送中...'
+			});
+			
+			try {
+				// 调用发送验证码API
+				const res = await this.request({
+					url: '/msg/sendMsg/' + this.newPhone + '/changePhone',
+					method: 'GET'
+				});
+				
+				uni.hideLoading();
+				
+				if (res.status === 0) {
+					uni.showToast({
+						title: '验证码发送成功',
+						icon: 'success'
+					});
+					this.startCountdown();
+				} else {
+					uni.showToast({
+						title: res.msg || '发送失败,请重试',
+						icon: 'none'
+					});
+				}
+			} catch (error) {
+				uni.hideLoading();
+				uni.showToast({
+					title: '网络错误,请重试',
+					icon: 'none'
+				});
+			}
+		},
+		
+		// 开始倒计时
+		startCountdown() {
+			this.isCountingDown = true;
+			this.countdown = 60;
+			this.countdownText = '60秒后重新获取';
+			
+			const timer = setInterval(() => {
+				this.countdown--;
+				this.countdownText = `${this.countdown}秒后重新获取`;
+				
+				if (this.countdown <= 0) {
+					clearInterval(timer);
+					this.isCountingDown = false;
+					this.countdownText = '获取验证码';
+				}
+			}, 1000);
+		},
+		
+		// 确认修改
+		async confirmChange() {
+			if (!this.canConfirm) {
+				uni.showToast({
+					title: '请完整填写信息',
+					icon: 'none'
+				});
+				return;
+			}
+			
+			uni.showLoading({
+				title: '处理中...'
+			});
+			
+			try {
+				const userId = uni.getStorageSync('userId');
+				const res = await this.request({
+					url: '/user/changePhone',
+					method: 'GET',
+					data: {
+						userId: userId,
+						phone: this.newPhone,
+						msg: this.verificationDigits.join('')
+					}
+				});
+				
+				uni.hideLoading();
+				
+				if (res.status === 0) {
+					uni.showToast({
+						title: '修改成功',
+						icon: 'success'
+					});
+					setTimeout(() => {
+						uni.navigateBack();
+					}, 1500);
+				} else {
+					uni.showToast({
+						title: res.msg || '修改失败',
+						icon: 'none'
+					});
+				}
+			} catch (error) {
+				uni.hideLoading();
+				uni.showToast({
+					title: '网络错误,请重试',
+					icon: 'none'
+				});
+			}
+		},
+		
+		// 请求封装
+		request(options) {
+			return new Promise((resolve, reject) => {
+				uni.request({
+					url: configdata.APIHOST1 + options.url,
+					method: options.method || 'POST',
+					data: options.data || {},
+					success: resolve,
+					fail: reject
+				});
+			});
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+.modify-phone-page {
+	min-height: 100vh;
+	background: #ffffff;
+}
+
+/* 导航栏 */
+.custom-navbar {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	padding-top: 80rpx;
+	background-color: #ffffff;
+	z-index: 9999;
+	// border-bottom: 1rpx solid #f0f0f0;
+	
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		height: 88rpx;
+		padding: 0 40rpx;
+		
+		.nav-left, .nav-right {
+			width: 60rpx;
+			height: 60rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		
+		.nav-title {
+			color: rgba(51, 51, 51, 1);
+			font-family: PingFang SC;
+			font-size: 36rpx;
+			font-weight: 600;
+			line-height: 50rpx;
+			text-align: center;
+		}
+	}
+}
+
+/* 主要内容 */
+.main-content {
+	margin-top: 168rpx;
+	padding: 40rpx 30rpx;
+}
+
+.page-title {
+	color: rgba(51, 51, 51, 1);
+	font-family: DM Sans;
+	font-size: 48rpx;
+	font-weight: 700;
+	line-height: 60rpx;
+	letter-spacing: 0px;
+	text-align: left;
+	margin-bottom: 20rpx;
+}
+
+.description {
+	color: rgba(102, 102, 102, 1);
+	font-family: DM Sans;
+	font-size: 24rpx;
+	font-weight: 400;
+	line-height: 32rpx;
+	letter-spacing: 0.5%;
+	text-align: left;
+	margin-bottom: 20rpx;
+}
+
+.current-phone-section {
+	display: flex;
+	align-items: center;
+	margin-bottom: 20rpx;
+	gap: 16rpx;
+	
+	.current-label , .current-phone{
+		color: rgba(102, 102, 102, 1);
+		font-family: DM Sans;
+		font-size: 24rpx;
+		font-weight: 400;
+		line-height: 32rpx;
+		letter-spacing: 0.5%;
+		text-align: left;
+	}
+}
+
+/* 手机号输入 */
+.input-section {
+	margin-bottom: 40rpx;
+}
+
+.phone-input-container {
+	width: 100%;
+	height: 88rpx;
+	// border: 1px solid rgba(227, 231, 236, 1);
+	// border-radius: 24px;
+	background: rgba(255, 255, 255, 1);
+	display: flex;
+	align-items: center;
+	// padding: 0 20rpx;
+	
+	.country-selector {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 208rpx;
+		height: 96rpx;
+		border-radius: 12rpx;
+		background: rgba(247, 248, 249, 1);
+		// border-right: 1rpx solid #e4e6ea;
+		margin-right: 20rpx;
+		gap: 26rpx;
+		
+		.country-code {
+			color: rgba(56, 59, 70, 1);
+			font-family: DM Sans;
+			font-size: 32rpx;
+			font-weight: 500;
+			line-height: 48rpx;
+			letter-spacing: 0%;
+			text-align: center;
+		}
+	}
+	
+	.phone-input {
+		flex: 1;
+		width: 446rpx;
+		height: 96rpx;
+		border-radius: 12rpx;
+		padding: 0 32rpx;
+		background: rgba(247, 248, 249, 1);
+		// color: rgba(195, 196, 199, 1);
+		font-family: DM Sans;
+		font-size: 32rpx;
+		font-weight: 400;
+		line-height: 48rpx;
+		letter-spacing: 0%;
+		text-align: left;
+		
+		&::placeholder {
+			color: rgba(195, 196, 199, 1);
+		}
+	}
+}
+
+/* 验证码部分 */
+.verification-section {
+	margin-bottom: 60rpx;
+}
+
+.verify-input-container {
+	display: flex;
+	flex-direction: column;
+	width: 100%;
+	gap: 20rpx;
+	padding: 20rpx 0;
+}
+
+.verify-boxes {
+	display: flex;
+	gap: 20rpx;
+	justify-content: space-between;
+	width: 100%;
+	
+	.verify-box {
+		width: 110rpx;
+		height: 96rpx;
+		border: 1px solid rgba(234, 239, 245, 1);
+		border-radius: 24rpx;
+		background: rgba(245, 249, 254, 1);
+		text-align: center;
+		color: rgba(23, 23, 37, 1);
+		font-family: PingFang SC;
+		font-size: 32rpx;
+		font-weight: 500;
+		line-height: 80rpx;
+		
+		&:focus {
+			border-color: rgba(24, 144, 255, 1);
+			background: rgba(255, 255, 255, 1);
+		}
+		
+		&::placeholder {
+			color: rgba(155, 155, 155, 1);
+		}
+	}
+}
+
+.get-code-btn {
+	color:rgba(1, 107, 246, 1);
+	font-family: DM Sans;
+	font-size: 26rpx;
+	font-weight: 400;
+	line-height: 32rpx;
+	letter-spacing: 0.5%;
+	text-align: left;
+	
+	&.disabled {
+		color: rgba(155, 155, 155, 1);
+	}
+}
+
+/* 底部按钮 */
+.bottom-btn-container {
+	padding: 30rpx;
+	background: #fff;
+	// border-top: 1rpx solid #f0f0f0;
+	z-index: 9999;
+}
+
+.confirm-btn {
+	width: 100%;
+	height: 88rpx;
+	background: var(--线性渐变, linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1) 100%));
+	border-radius: 44rpx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	
+	&.disabled {
+		opacity: 0.4;
+	}
+	
+	text {
+		color: rgba(255, 255, 255, 1);
+		font-family: PingFang SC;
+		font-size: 32rpx;
+		font-weight: 600;
+		line-height: 44rpx;
+	}
+}
+</style>

文件差异内容过多而无法显示
+ 2 - 0
static/images/gongsi.svg


部分文件因为文件数量过多而无法显示