jianghaili 7 месяцев назад
Родитель
Сommit
5c1b503993
8 измененных файлов с 2516 добавлено и 2572 удалено
  1. 39 31
      my/feedback/index.vue
  2. 278 259
      my/feedback/jubao.vue
  3. 179 275
      my/publish/editor.vue
  4. 80 99
      my/renzheng/companyImg.vue
  5. 459 440
      my/wallet/tixian.vue
  6. 610 579
      pages/my/attachment.vue
  7. 254 290
      pages/my/jobApplicant/workRecord.vue
  8. 617 599
      pages/my/setup.vue

+ 39 - 31
my/feedback/index.vue

@@ -8,24 +8,21 @@
           <text @tap="chooseMsg">快速键入</text>
         </view>
         <view class="feedback-body">
-          <textarea
-            placeholder="请详细描述你的问题和意见..."
-            v-model="sendDate.content"
-            class="feedback-textare"
-          />
+          <textarea placeholder="请详细描述你的问题和意见..." v-model="sendDate.content" class="feedback-textare" />
         </view>
         <view class="feedback-title"><text>联系方式</text></view>
-        <view class="feedback-body"
-          ><input
-            class="feedback-input"
-            v-model="sendDate.contact"
-            placeholder="方便我们联系你 "
-          />
+        <view class="feedback-body"><input class="feedback-input" v-model="sendDate.contact" placeholder="方便我们联系你 " />
         </view>
 
         <button style="" class="feedback-submit" @tap="send">提交</button>
       </view>
     </view>
+    <!-- 权限说明弹窗 -->
+    <u-popup mode="top" ref="permission">
+      <view class="popup-content">
+        <view class="popup-text-permission">选择/拍摄照片需要相机/相册权限,用于上传用户头像</view>
+      </view>
+    </u-popup>
   </view>
 </template>
 
@@ -79,26 +76,36 @@ export default {
         },
       });
     },
-    chooseImg() {
-		// // 1. 先判断系统类型,区分Android/iOS权限
-		// const systemInfo = uni.getSystemInfoSync();
-		// const isAndroid = systemInfo.system.includes('Android');
-		// const permissionType = isAndroid ? 'storage' : 'photos'; // Android=存储,iOS=相册
-			  
-		// // 2. 权限检查(复用之前封装的 checkPermission 函数)
-		// const hasPermission = this.$queue.checkPermission(
-		//   permissionType,
-		//   isAndroid 
-		//     ? '选择/拍摄照片需要相机/相册权限,用于上传简历/求职资料' // Android 专属提示
-		//     : '选择/拍摄照片需要相机/相册权限,用于上传简历/求职资料'
-		// );
-			  
-		// if (!hasPermission) {
-		//   uni.showToast({ title: '未获取权限,无法选择照片', icon: 'none' });
-		//   return;
-		// }
-		
-		
+    async chooseImg() {
+      // // 1. 先判断系统类型,区分Android/iOS权限
+      // const systemInfo = uni.getSystemInfoSync();
+      // const isAndroid = systemInfo.system.includes('Android');
+      // const permissionType = isAndroid ? 'storage' : 'photos'; // Android=存储,iOS=相册
+
+      // // 2. 权限检查(复用之前封装的 checkPermission 函数)
+      // const hasPermission = this.$queue.checkPermission(
+      //   permissionType,
+      //   isAndroid 
+      //     ? '选择/拍摄照片需要相机/相册权限,用于上传简历/求职资料' // Android 专属提示
+      //     : '选择/拍摄照片需要相机/相册权限,用于上传简历/求职资料'
+      // );
+
+      // if (!hasPermission) {
+      //   uni.showToast({ title: '未获取权限,无法选择照片', icon: 'none' });
+      //   return;
+      // }
+
+      // 1. 检查权限状态
+      const hasPermission = await this.$queue.checkPermission(
+        'camera',
+        '选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+        this
+      );
+
+      // 2. 如果未授权或者用户拒绝,显示提示
+      if (!hasPermission) {
+        return;
+      }
       //选择图片
       uni.chooseImage({
         sourceType: ["camera", "album"],
@@ -184,6 +191,7 @@ page {
     overflow: hidden;
     display: flex;
     flex-direction: column;
+
     .page-content {
       flex: 1;
       overflow: hidden;

+ 278 - 259
my/feedback/jubao.vue

@@ -1,298 +1,317 @@
 <template>
-	<view v-if="XCXIsSelect == '是'" class="page" style="background-color: #ffffff;">
-		<view class="feedback-title">
-			<text>问题和意见</text>
-			<text @tap="chooseMsg">快速键入</text>
-		</view>
-		<view class="feedback-body"><textarea placeholder="请详细描述你的问题和意见..." v-model="sendDate.content"
-				class="feedback-textare" /></view>
-		<view class="feedback-title"><text>电话/微信</text></view>
-		<view class="feedback-body"><input class="feedback-input" v-model="sendDate.contact" placeholder="方便我们联系你 " />
-		</view>
-		<view class="feedback-title"><text>上传图片</text></view>
-		<view class="imgs flex align-center justify-between flex-wrap">
-			<!-- imgs -->
-			<view class="imgs-item" v-for="(item,index) in imgs" :key="index">
-				<image :src="item" mode="aspectFill"></image>
-				<view class="imgs-item-close" @click="close(index)">
-					<u-icon name="close-circle" color="red" size="38"></u-icon>
-				</view>
+	<view>
+		<view v-if="XCXIsSelect == '是'" class="page" style="background-color: #ffffff;">
+			<view class="feedback-title">
+				<text>问题和意见</text>
+				<text @tap="chooseMsg">快速键入</text>
 			</view>
-			<view class="imgs-item" @click="uploadImg">
-				<u-icon name="photo" color="#016BF6" size="58"></u-icon>
-				<view class="imgs-item-txt">
-					上传图片
-				</view>
+			<view class="feedback-body"><textarea placeholder="请详细描述你的问题和意见..." v-model="sendDate.content"
+					class="feedback-textare" /></view>
+			<view class="feedback-title"><text>电话/微信</text></view>
+			<view class="feedback-body"><input class="feedback-input" v-model="sendDate.contact"
+					placeholder="方便我们联系你 " />
 			</view>
-			<view class="imgs-item" style="height: 0;">
+			<view class="feedback-title"><text>上传图片</text></view>
+			<view class="imgs flex align-center justify-between flex-wrap">
+				<!-- imgs -->
+				<view class="imgs-item" v-for="(item, index) in imgs" :key="index">
+					<image :src="item" mode="aspectFill"></image>
+					<view class="imgs-item-close" @click="close(index)">
+						<u-icon name="close-circle" color="red" size="38"></u-icon>
+					</view>
+				</view>
+				<view class="imgs-item" @click="uploadImg">
+					<u-icon name="photo" color="#016BF6" size="58"></u-icon>
+					<view class="imgs-item-txt">
+						上传图片
+					</view>
+				</view>
+				<view class="imgs-item" style="height: 0;">
+				</view>
 			</view>
+			<button style="" class="feedback-submit" @tap="send">提交</button>
 		</view>
-		<button style="" class="feedback-submit" @tap="send">提交</button>
-	</view>
-	<view class="" v-else>
-		帮助中心,联系我们,为你提供帮助
+		<view class="" v-else>
+			帮助中心,联系我们,为你提供帮助
+		</view>
+		<!-- 权限说明弹窗 -->
+		<u-popup mode="top" ref="permission">
+			<view class="popup-content">
+				<view class="popup-text-permission">选择/拍摄照片需要相机/相册权限,用于上传用户头像</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
 <script>
-	import config from '../../common/config';
-	export default {
-		data() {
-			return {
-				msgContents: ['岗位不符', '虚假岗位', '内容违规', '虚假招聘'],
-				stars: [1, 2, 3, 4, 5],
-				imageList: [],
-				sendDate: {
-					score: 5,
-					content: '',
-					contact: ''
-				},
-				postPushId: '',
-				XCXIsSelect: '是',
-				imgs: [],
-				resumesId: '',
-			};
-		},
-		onLoad(e) {
-			this.XCXIsSelect = uni.getStorageSync('XCXIsSelect')
-			if (e.resumesId) {
-				this.resumesId = e.resumesId
-			}
-			if (e.postPushId) {
-				this.postPushId = e.postPushId
+import config from '../../common/config';
+export default {
+	data() {
+		return {
+			msgContents: ['岗位不符', '虚假岗位', '内容违规', '虚假招聘'],
+			stars: [1, 2, 3, 4, 5],
+			imageList: [],
+			sendDate: {
+				score: 5,
+				content: '',
+				contact: ''
+			},
+			postPushId: '',
+			XCXIsSelect: '是',
+			imgs: [],
+			resumesId: '',
+		};
+	},
+	onLoad(e) {
+		this.XCXIsSelect = uni.getStorageSync('XCXIsSelect')
+		if (e.resumesId) {
+			this.resumesId = e.resumesId
+		}
+		if (e.postPushId) {
+			this.postPushId = e.postPushId
+		}
+		// #ifdef APP
+		let deviceInfo = {
+			appid: plus.runtime.appid,
+			imei: plus.device.imei, //设备标识
+			p: plus.os.name === 'Android' ? 'a' : 'i', //平台类型,i表示iOS平台,a表示Android平台。
+			md: plus.device.model, //设备型号
+			app_version: plus.runtime.version,
+			plus_version: plus.runtime.innerVersion, //基座版本号
+			os: plus.os.version,
+			net: '' + plus.networkinfo.getCurrentType()
+		};
+		this.sendDate = Object.assign(deviceInfo, this.sendDate);
+		// #endif
+
+	},
+	methods: {
+		//上传图片
+		async uploadImg() {
+			let that = this
+			// // 1. 先判断系统类型,区分Android/iOS权限
+			// const systemInfo = uni.getSystemInfoSync();
+			// const isAndroid = systemInfo.system.includes('Android');
+			// const permissionType = isAndroid ? 'storage' : 'photos'; // Android=存储,iOS=相册
+
+			// // 2. 权限检查(复用之前封装的 checkPermission 函数)
+			// const hasPermission = this.$queue.checkPermission(
+			//   permissionType,
+			//   isAndroid 
+			//     ? '选择/拍摄照片需要相机/相册权限,用于上传举报证据' // Android 专属提示
+			//     : '选择/拍摄照片需要相机/相册权限,用于上传举报证据'
+			// );
+
+			// if (!hasPermission) {
+			//   uni.showToast({ title: '未获取权限,无法选择照片', icon: 'none' });
+			//   return;
+			// }
+			// 1. 检查权限状态
+			const hasPermission = await this.$queue.checkPermission(
+				'camera',
+				'选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+				this
+			);
+
+			// 2. 如果未授权或者用户拒绝,显示提示
+			if (!hasPermission) {
+				return;
 			}
-			// #ifdef APP
-			let deviceInfo = {
-				appid: plus.runtime.appid,
-				imei: plus.device.imei, //设备标识
-				p: plus.os.name === 'Android' ? 'a' : 'i', //平台类型,i表示iOS平台,a表示Android平台。
-				md: plus.device.model, //设备型号
-				app_version: plus.runtime.version,
-				plus_version: plus.runtime.innerVersion, //基座版本号
-				os: plus.os.version,
-				net: '' + plus.networkinfo.getCurrentType()
-			};
-			this.sendDate = Object.assign(deviceInfo, this.sendDate);
-			// #endif
+			uni.chooseImage({
+				count: 1, //默认9
+				sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+				sourceType: ['album'], //从相册选择
+				success: function (res) {
+					uni.showLoading({
+						title: '上传中...'
+					});
+					uni.uploadFile({
+						url: 'https://h5.bosszan.com/sqx_fast/alioss/upload',
+						// url: config.APIHOST + '/alioss/upload',
+						filePath: res.tempFilePaths[0],
+						name: 'file',
+						success: uploadFileRes => {
+							uni.hideLoading();
+							let url = JSON.parse(uploadFileRes.data);
+							console.log(url)
+							that.imgs.push(url.data)
 
+						},
+						fail() {
+							uni.hideLoading()
+							uni.showToast({
+								title: '上传失败',
+								icon: 'none'
+							})
+						}
+					});
+				}
+			});
+		},
+		close(e) {
+			this.imgs.splice(e, 1);
+		},
+		chooseMsg() {
+			//快速输入
+			uni.showActionSheet({
+				itemList: this.msgContents,
+				success: res => {
+					this.sendDate.content = this.msgContents[res.tapIndex];
+				}
+			});
 		},
-		methods: {
-			//上传图片
-			uploadImg() {
-				let that = this
-					    // 1. 先判断系统类型,区分Android/iOS权限
-					    const systemInfo = uni.getSystemInfoSync();
-					    const isAndroid = systemInfo.system.includes('Android');
-					    const permissionType = isAndroid ? 'storage' : 'photos'; // Android=存储,iOS=相册
-					  
-					    // 2. 权限检查(复用之前封装的 checkPermission 函数)
-					    const hasPermission = this.$queue.checkPermission(
-					      permissionType,
-					      isAndroid 
-					        ? '选择/拍摄照片需要相机/相册权限,用于上传举报证据' // Android 专属提示
-					        : '选择/拍摄照片需要相机/相册权限,用于上传举报证据'
-					    );
-					  
-					    if (!hasPermission) {
-					      uni.showToast({ title: '未获取权限,无法选择照片', icon: 'none' });
-					      return;
-					    }
-				
-				uni.chooseImage({
-					count: 1, //默认9
-					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
-					sourceType: ['album'], //从相册选择
-					success: function(res) {
-						uni.showLoading({
-							title: '上传中...'
-						});
-						uni.uploadFile({
-							url: 'https://h5.bosszan.com/sqx_fast/alioss/upload',
-							// url: config.APIHOST + '/alioss/upload',
-							filePath: res.tempFilePaths[0],
-							name: 'file',
-							success: uploadFileRes => {
-								uni.hideLoading();
-								let url = JSON.parse(uploadFileRes.data);
-								console.log(url)
-								that.imgs.push(url.data)
+		chooseStar(e) {
+			//点击评星
+			this.sendDate.score = e;
+		},
+		previewImage() {
+			//预览图片
+			uni.previewImage({
+				urls: this.imageList
+			});
+		},
+		send() {
+			//发送反馈
+			console.log(JSON.stringify(this.sendDate));
 
-							},
-							fail() {
-								uni.hideLoading()
-								uni.showToast({
-									title: '上传失败',
-									icon: 'none'
-								})
-							}
-						});
-					}
-				});
-			},
-			close(e) {
-				this.imgs.splice(e, 1);
-			},
-			chooseMsg() {
-				//快速输入
-				uni.showActionSheet({
-					itemList: this.msgContents,
-					success: res => {
-						this.sendDate.content = this.msgContents[res.tapIndex];
-					}
+			if (!this.sendDate.content) {
+				uni.showToast({
+					icon: 'none',
+					title: '请输入反馈内容'
 				});
-			},
-			chooseStar(e) {
-				//点击评星
-				this.sendDate.score = e;
-			},
-			previewImage() {
-				//预览图片
-				uni.previewImage({
-					urls: this.imageList
+				return;
+			}
+			if (!this.sendDate.contact) {
+				uni.showToast({
+					icon: 'none',
+					title: '请填写电话或微信'
 				});
-			},
-			send() {
-				//发送反馈
-				console.log(JSON.stringify(this.sendDate));
-
-				if (!this.sendDate.content) {
+				return;
+			}
+			this.$queue.showLoading('加载中...');
+			if (this.imgs.length > 0) {
+				this.sendDate.imgs = this.imgs.join(',')
+			}
+			this.$Request.postJson('/app/message/insertMessage', {
+				title: this.sendDate.contact,
+				content: JSON.stringify(this.sendDate),
+				state: this.postPushId ? 3 : 6, //3:举报岗位 6:举报简历
+				byUserId: this.postPushId ? this.postPushId : this.resumesId
+			}).then(res => {
+				if (res.code === 0) {
 					uni.showToast({
-						icon: 'none',
-						title: '请输入反馈内容'
+						title: '提交成功'
 					});
-					return;
-				}
-				if (!this.sendDate.contact) {
-					uni.showToast({
-						icon: 'none',
-						title: '请填写电话或微信'
+					setTimeout(function () {
+						uni.navigateBack();
+					}, 1000);
+				} else {
+					uni.hideLoading();
+					uni.showModal({
+						showCancel: false,
+						title: '投诉失败',
+						content: res.msg
 					});
-					return;
 				}
-				this.$queue.showLoading('加载中...');
-				if (this.imgs.length > 0) {
-					this.sendDate.imgs = this.imgs.join(',')
-				}
-				this.$Request.postJson('/app/message/insertMessage', {
-					title: this.sendDate.contact,
-					content: JSON.stringify(this.sendDate),
-					state: this.postPushId ? 3 : 6, //3:举报岗位 6:举报简历
-					byUserId: this.postPushId ? this.postPushId : this.resumesId
-				}).then(res => {
-					if (res.code === 0) {
-						uni.showToast({
-							title: '提交成功'
-						});
-						setTimeout(function() {
-							uni.navigateBack();
-						}, 1000);
-					} else {
-						uni.hideLoading();
-						uni.showModal({
-							showCancel: false,
-							title: '投诉失败',
-							content: res.msg
-						});
-					}
-				});
-			}
+			});
 		}
-	};
+	}
+};
 </script>
 
 <style>
-	@font-face {
-		font-family: uniicons;
-		font-weight: normal;
-		font-style: normal;
-		src: url('https://img-cdn-qiniu.dcloud.net.cn/fonts/uni.ttf') format('truetype');
-	}
+@font-face {
+	font-family: uniicons;
+	font-weight: normal;
+	font-style: normal;
+	src: url('https://img-cdn-qiniu.dcloud.net.cn/fonts/uni.ttf') format('truetype');
+}
 
-	page {
-		background-color: #F5F5F5 !important;
-	}
+page {
+	background-color: #F5F5F5 !important;
+}
 
-	view {
-		font-size: 28upx;
-	}
+view {
+	font-size: 28upx;
+}
 
 
-	/*问题反馈*/
-	.feedback-title {
-		display: flex;
-		flex-direction: row;
-		justify-content: space-between;
-		align-items: center;
-		padding: 20upx;
-		color: #8f8f94;
-		font-size: 28upx;
-	}
+/*问题反馈*/
+.feedback-title {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+	align-items: center;
+	padding: 20upx;
+	color: #8f8f94;
+	font-size: 28upx;
+}
 
-	.feedback-star-view.feedback-title {
-		justify-content: flex-start;
-		margin: 0;
-	}
+.feedback-star-view.feedback-title {
+	justify-content: flex-start;
+	margin: 0;
+}
 
-	.feedback-body {
-		font-size: 32upx;
-		padding: 16upx;
-		margin: 16upx;
-		border-radius: 16upx;
-		background: #FFFFFF;
-		/* color: #FFF; */
-	}
+.feedback-body {
+	font-size: 32upx;
+	padding: 16upx;
+	margin: 16upx;
+	border-radius: 16upx;
+	background: #FFFFFF;
+	/* color: #FFF; */
+}
 
-	.feedback-textare {
-		height: 200upx;
-		font-size: 34upx;
-		line-height: 50upx;
-		width: 100%;
-		box-sizing: border-box;
-		padding: 20upx 30upx 0;
+.feedback-textare {
+	height: 200upx;
+	font-size: 34upx;
+	line-height: 50upx;
+	width: 100%;
+	box-sizing: border-box;
+	padding: 20upx 30upx 0;
 
-	}
+}
 
-	.feedback-input {
-		font-size: 32upx;
-		height: 60upx;
-		padding: 15upx 20upx;
-		line-height: 60upx;
-	}
+.feedback-input {
+	font-size: 32upx;
+	height: 60upx;
+	padding: 15upx 20upx;
+	line-height: 60upx;
+}
 
-	.imgs {
-		margin: 20rpx;
+.imgs {
+	margin: 20rpx;
 
-	}
+}
 
-	.imgs-item {
-		width: 220rpx;
-		height: 220rpx;
-		background-color: #f5f5f5;
-		margin-bottom: 20rpx;
-		border-radius: 10rpx;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		position: relative;
-	}
+.imgs-item {
+	width: 220rpx;
+	height: 220rpx;
+	background-color: #f5f5f5;
+	margin-bottom: 20rpx;
+	border-radius: 10rpx;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: center;
+	position: relative;
+}
 
-	.imgs-item-close {
-		position: absolute;
-		top: 0;
-		right: 0;
-	}
+.imgs-item-close {
+	position: absolute;
+	top: 0;
+	right: 0;
+}
 
-	.imgs-item image {
-		width: 100%;
-		height: 100%;
-		border-radius: 10rpx;
-	}
+.imgs-item image {
+	width: 100%;
+	height: 100%;
+	border-radius: 10rpx;
+}
 
-	.feedback-submit {
-		background: #016BF6;
-		color: #ffffff;
-		margin: 20upx;
-		margin-top: 32upx;
-	}
+.feedback-submit {
+	background: #016BF6;
+	color: #ffffff;
+	margin: 20upx;
+	margin-top: 32upx;
+}
 </style>

+ 179 - 275
my/publish/editor.vue

@@ -2,258 +2,162 @@
   <view class="page-box">
     <!-- 顶部占位区域 -->
     <navBar title="我的简历" color="#000" />
-	<view class="page-content">
-	
-    <!-- <view class="text-white padding margin bg" v-if="form.isRecommend==2">
+    <view class="page-content">
+
+      <!-- <view class="text-white padding margin bg" v-if="form.isRecommend==2">
 			<view class="flex align-center justify-between" style="color: red;">
 				<view class=" text-bold">已录入人才库</view>
 			</view>
 		</view> -->
-    <view class="text-white padding margin bg" v-if="form.status == 3">
-      <view class="flex align-center justify-between" style="color: red">
-        <view class="text-bold">拒绝理由</view>
-        <view class="text-right">
-          {{ form.auditContent }}
+      <view class="text-white padding margin bg" v-if="form.status == 3">
+        <view class="flex align-center justify-between" style="color: red">
+          <view class="text-bold">拒绝理由</view>
+          <view class="text-right">
+            {{ form.auditContent }}
+          </view>
         </view>
       </view>
-    </view>
-    <view class="text-white padding margin bg">
-      <u-form label-width="150" :label-style="labelStyle" :model="form" ref="uForm">
-        <u-form-item label="姓名">
-          <u-input height="200rpx" v-model="form.resumesName" placeholder="请输入姓名" />
-        </u-form-item>
-        <u-form-item label="年龄">
-          <u-input v-model="form.resumesAge" type="number" placeholder="请输入年龄" />
-        </u-form-item>
-        <u-form-item label="家庭住址" placeholder="请输入家庭住址">
-          <u-input v-model="form.address" />
-        </u-form-item>
-        <u-form-item label="性别" right-icon="arrow-right">
-          <u-input
-            v-model="resumesSex"
-            placeholder="请选择性别"
-            :disabled="true"
-            @click="SexChen()"
-          />
-        </u-form-item>
-        <u-form-item label="手机号">
-          <u-input
-            v-model="form.resumesPhone"
-            type="number"
-            maxlength="11"
-            placeholder="请输入手机号"
-          />
-        </u-form-item>
-        <u-form-item label="学历" right-icon="arrow-right">
-          <u-input
-            v-model="form.resumesEducation"
-            placeholder="请选择学历"
-            :disabled="true"
-            @click="learnChen()"
-          />
-        </u-form-item>
-        <u-form-item label="婚姻状况" right-icon="arrow-right">
-          <u-input
-            v-model="form.resumesMarriage"
-            placeholder="请选择婚姻状况"
-            :disabled="true"
-            @click="MarriageChen()"
-          />
-        </u-form-item>
-        <u-form-item label="期望薪资" right-icon="arrow-right">
-          <u-input
-            v-model="form.resumesCompensation"
-            placeholder="请选择期望薪资"
-            :disabled="true"
-            @click="getMonyList()"
-          />
-        </u-form-item>
-        <u-form-item label="电子邮箱">
-          <u-input v-model="form.resumesEmail" placeholder="请输入电子邮箱" />
-        </u-form-item>
-        <u-form-item label="工作经验" right-icon="arrow-right">
-          <u-input
-            v-model="form.resumesWorkExperience"
-            placeholder="请选择工作经验"
-            :disabled="true"
-            @click="IntentionChen()"
-          />
-        </u-form-item>
-        <u-form-item label="毕业院校">
-          <u-input v-model="form.school" placeholder="请输入毕业院校" />
-        </u-form-item>
-        <u-form-item label="所学专业">
-          <u-input v-model="form.major" placeholder="请输入所学专业" />
-        </u-form-item>
-        <u-form-item label="毕业时间" right-icon="arrow-right">
-          <u-input
-            v-model="form.graduationTime"
-            :disabled="true"
-            @click="showGraduationTime = true"
-            placeholder="请选择毕业时间"
-          />
-        </u-form-item>
-        <u-form-item label="行业" right-icon="arrow-right">
-          <u-input
-            v-model="form.industryName"
-            :disabled="true"
-            @click="gotoHy('/package/jobIntention/industry')"
-            placeholder="请选择行业"
-          />
-        </u-form-item>
-        <u-form-item label="意向城市" right-icon="arrow-right">
-          <u-input
-            v-model="form.city"
-            :disabled="true"
-            @click="cityShow = true"
-            placeholder="请选择意向城市"
-          />
-        </u-form-item>
-      </u-form>
-    </view>
+      <view class="text-white padding margin bg">
+        <u-form label-width="150" :label-style="labelStyle" :model="form" ref="uForm">
+          <u-form-item label="姓名">
+            <u-input height="200rpx" v-model="form.resumesName" placeholder="请输入姓名" />
+          </u-form-item>
+          <u-form-item label="年龄">
+            <u-input v-model="form.resumesAge" type="number" placeholder="请输入年龄" />
+          </u-form-item>
+          <u-form-item label="家庭住址" placeholder="请输入家庭住址">
+            <u-input v-model="form.address" />
+          </u-form-item>
+          <u-form-item label="性别" right-icon="arrow-right">
+            <u-input v-model="resumesSex" placeholder="请选择性别" :disabled="true" @click="SexChen()" />
+          </u-form-item>
+          <u-form-item label="手机号">
+            <u-input v-model="form.resumesPhone" type="number" maxlength="11" placeholder="请输入手机号" />
+          </u-form-item>
+          <u-form-item label="学历" right-icon="arrow-right">
+            <u-input v-model="form.resumesEducation" placeholder="请选择学历" :disabled="true" @click="learnChen()" />
+          </u-form-item>
+          <u-form-item label="婚姻状况" right-icon="arrow-right">
+            <u-input v-model="form.resumesMarriage" placeholder="请选择婚姻状况" :disabled="true" @click="MarriageChen()" />
+          </u-form-item>
+          <u-form-item label="期望薪资" right-icon="arrow-right">
+            <u-input v-model="form.resumesCompensation" placeholder="请选择期望薪资" :disabled="true" @click="getMonyList()" />
+          </u-form-item>
+          <u-form-item label="电子邮箱">
+            <u-input v-model="form.resumesEmail" placeholder="请输入电子邮箱" />
+          </u-form-item>
+          <u-form-item label="工作经验" right-icon="arrow-right">
+            <u-input v-model="form.resumesWorkExperience" placeholder="请选择工作经验" :disabled="true"
+              @click="IntentionChen()" />
+          </u-form-item>
+          <u-form-item label="毕业院校">
+            <u-input v-model="form.school" placeholder="请输入毕业院校" />
+          </u-form-item>
+          <u-form-item label="所学专业">
+            <u-input v-model="form.major" placeholder="请输入所学专业" />
+          </u-form-item>
+          <u-form-item label="毕业时间" right-icon="arrow-right">
+            <u-input v-model="form.graduationTime" :disabled="true" @click="showGraduationTime = true"
+              placeholder="请选择毕业时间" />
+          </u-form-item>
+          <u-form-item label="行业" right-icon="arrow-right">
+            <u-input v-model="form.industryName" :disabled="true" @click="gotoHy('/package/jobIntention/industry')"
+              placeholder="请选择行业" />
+          </u-form-item>
+          <u-form-item label="意向城市" right-icon="arrow-right">
+            <u-input v-model="form.city" :disabled="true" @click="cityShow = true" placeholder="请选择意向城市" />
+          </u-form-item>
+        </u-form>
+      </view>
 
-    <view class="text-white padding margin bg radius">
-      <view>
-        <view class="flex align-center justify-between">
-          <view class="text-bold">求职岗位</view>
-          <view @click="PostChen()">
-            <image src="../static/add.png" style="width: 54upx; height: 54upx"></image>
+      <view class="text-white padding margin bg radius">
+        <view>
+          <view class="flex align-center justify-between">
+            <view class="text-bold">求职岗位</view>
+            <view @click="PostChen()">
+              <image src="../static/add.png" style="width: 54upx; height: 54upx"></image>
+            </view>
           </view>
-        </view>
-        <view class="flex align-center label" v-if="form.resumesPost">
-          <view v-if="form.resumesPost">{{ form.resumesPost }}</view>
-          <!-- <view v-if="form.rulePostName">-</view>
+          <view class="flex align-center label" v-if="form.resumesPost">
+            <view v-if="form.resumesPost">{{ form.resumesPost }}</view>
+            <!-- <view v-if="form.rulePostName">-</view>
 					<view v-if="form.rulePostName" class="">{{form.rulePostName}}</view> -->
+          </view>
+          <view class="margin-top-sm text-sm" style="color: #999999" v-else>添加岗位会根据你的岗位需求为你推荐</view>
         </view>
-        <view class="margin-top-sm text-sm" style="color: #999999" v-else
-          >添加岗位会根据你的岗位需求为你推荐</view
-        >
-      </view>
 
-      <view
-        class="margin-tb-sm"
-        style="width: 100%; height: 1rpx; background: #f2f2f2"
-      ></view>
-      <view>
-        <view class="flex align-center justify-between">
-          <view class="text-bold">工作经历</view>
-          <view @click="gowork(1)">
-            <image src="../static/add.png" style="width: 54upx; height: 54upx"></image>
+        <view class="margin-tb-sm" style="width: 100%; height: 1rpx; background: #f2f2f2"></view>
+        <view>
+          <view class="flex align-center justify-between">
+            <view class="text-bold">工作经历</view>
+            <view @click="gowork(1)">
+              <image src="../static/add.png" style="width: 54upx; height: 54upx"></image>
+            </view>
           </view>
-        </view>
-        <view
-          class="margin-top-sm text-sm"
-          style="color: #999999"
-          v-if="form.resumesCompanyList.length == 0"
-        >
-          添加工作经历向企业全面展示你的能力</view
-        >
-        <view
-          v-for="(item, index) in form.resumesCompanyList"
-          class="gzjl"
-          :key="index"
-          v-else
-        >
-          <view class="flex justify-between" style="color: #121212">
-            <view class="text-bold">
-              {{ item.resumesTitle }}
+          <view class="margin-top-sm text-sm" style="color: #999999" v-if="form.resumesCompanyList.length == 0">
+            添加工作经历向企业全面展示你的能力</view>
+          <view v-for="(item, index) in form.resumesCompanyList" class="gzjl" :key="index" v-else>
+            <view class="flex justify-between" style="color: #121212">
+              <view class="text-bold">
+                {{ item.resumesTitle }}
+              </view>
+              <view class="">
+                <u-icon name="trash" color="rgb(146,146,146)" @click="deleteList(form.resumesCompanyList, index)"
+                  size="38"></u-icon>
+                <u-icon style="margin-left: 20rpx" name="edit-pen" @click="updataLists(item, index, 1)"
+                  color="rgb(146,146,146)" size="38"></u-icon>
+              </view>
             </view>
-            <view class="">
-              <u-icon
-                name="trash"
-                color="rgb(146,146,146)"
-                @click="deleteList(form.resumesCompanyList, index)"
-                size="38"
-              ></u-icon>
-              <u-icon
-                style="margin-left: 20rpx"
-                name="edit-pen"
-                @click="updataLists(item, index, 1)"
-                color="rgb(146,146,146)"
-                size="38"
-              ></u-icon>
+            <view v-if="item.resumesProject">
+              {{ item.resumesProject }}
             </view>
+            <view class="flex align-center margin-tb-xs" style="color: #999999">
+              <view>{{ item.resumesTime }}</view>
+              <view class="margin-left">{{ item.resumesPost }}</view>
+            </view>
+            <view>{{ item.resumesContent }}</view>
           </view>
-          <view v-if="item.resumesProject">
-            {{ item.resumesProject }}
-          </view>
-          <view class="flex align-center margin-tb-xs" style="color: #999999">
-            <view>{{ item.resumesTime }}</view>
-            <view class="margin-left">{{ item.resumesPost }}</view>
-          </view>
-          <view>{{ item.resumesContent }}</view>
         </view>
-      </view>
-      <view
-        class="margin-tb-sm"
-        style="width: 100%; height: 1rpx; background: #f2f2f2"
-      ></view>
-      <view>
-        <view class="flex align-center justify-between">
-          <view class="text-bold">项目经验</view>
-          <view @click="gowork(2)">
-            <image src="../static/add.png" style="width: 54upx; height: 54upx"></image>
+        <view class="margin-tb-sm" style="width: 100%; height: 1rpx; background: #f2f2f2"></view>
+        <view>
+          <view class="flex align-center justify-between">
+            <view class="text-bold">项目经验</view>
+            <view @click="gowork(2)">
+              <image src="../static/add.png" style="width: 54upx; height: 54upx"></image>
+            </view>
           </view>
-        </view>
-        <view
-          class="margin-top-sm text-sm"
-          style="color: #999999"
-          v-if="form.resumesWorkList.length == 0"
-        >
-          添加工作经历向企业全面展示你的能力</view
-        >
-        <view
-          v-for="(item, index) in form.resumesWorkList"
-          class="gzjl"
-          :key="index"
-          v-else
-        >
-          <view class="flex justify-between" style="color: #121212">
-            <view class="text-bold">
-              {{ item.resumesTitle }}
+          <view class="margin-top-sm text-sm" style="color: #999999" v-if="form.resumesWorkList.length == 0">
+            添加工作经历向企业全面展示你的能力</view>
+          <view v-for="(item, index) in form.resumesWorkList" class="gzjl" :key="index" v-else>
+            <view class="flex justify-between" style="color: #121212">
+              <view class="text-bold">
+                {{ item.resumesTitle }}
+              </view>
+              <view class="">
+                <u-icon name="trash" color="rgb(146,146,146)" @click="deleteList(form.resumesWorkList, index)"
+                  size="38"></u-icon>
+                <u-icon style="margin-left: 20rpx" name="edit-pen" @click="updataLists(item, index, 2)"
+                  color="rgb(146,146,146)" size="38"></u-icon>
+              </view>
             </view>
-            <view class="">
-              <u-icon
-                name="trash"
-                color="rgb(146,146,146)"
-                @click="deleteList(form.resumesWorkList, index)"
-                size="38"
-              ></u-icon>
-              <u-icon
-                style="margin-left: 20rpx"
-                name="edit-pen"
-                @click="updataLists(item, index, 2)"
-                color="rgb(146,146,146)"
-                size="38"
-              ></u-icon>
+            <view class="flex align-center margin-tb-xs" style="color: #999999">
+              <view>{{ item.resumesTime }}</view>
+              <view class="margin-left">{{ item.resumesPost }}</view>
             </view>
+            <view>{{ item.resumesContent }}</view>
           </view>
-          <view class="flex align-center margin-tb-xs" style="color: #999999">
-            <view>{{ item.resumesTime }}</view>
-            <view class="margin-left">{{ item.resumesPost }}</view>
-          </view>
-          <view>{{ item.resumesContent }}</view>
-        </view>
-      </view>
-      <view
-        class="margin-tb-sm"
-        style="width: 100%; height: 1rpx; background: #f2f2f2"
-      ></view>
-      <view>
-        <view class="flex align-center justify-between">
-          <view class="text-bold">个人优势</view>
         </view>
-        <view class="padding-xs radius margin-top-sm" style="background: #f5f5f5">
-          <u-input
-            v-model="form.resumesDetails"
-            type="textarea"
-            height="300"
-            placeholder="详细的个人信息与工作经历会让企业更加感兴趣"
-            inputAlign="text-alight:left"
-          />
+        <view class="margin-tb-sm" style="width: 100%; height: 1rpx; background: #f2f2f2"></view>
+        <view>
+          <view class="flex align-center justify-between">
+            <view class="text-bold">个人优势</view>
+          </view>
+          <view class="padding-xs radius margin-top-sm" style="background: #f5f5f5">
+            <u-input v-model="form.resumesDetails" type="textarea" height="300" placeholder="详细的个人信息与工作经历会让企业更加感兴趣"
+              inputAlign="text-alight:left" />
+          </view>
         </view>
-      </view>
-      <!-- <view style="margin-top: 20rpx;">
+        <!-- <view style="margin-top: 20rpx;">
 				<view class="flex align-center justify-between">
 					<view class=" text-bold">资格证书</view>
 				</view>
@@ -263,7 +167,7 @@
 				</view>
 
 			</view> -->
-      <!-- <view class="margin-top">
+        <!-- <view class="margin-top">
 				<view class=" text-bold">资格证书上传
 				</view>
 				<view class="flex" style="overflow: hidden;flex-direction: initial;flex-wrap: wrap;">
@@ -291,47 +195,34 @@
 					</view>
 				</view>
 			</view> -->
-    </view>
+      </view>
 
-    <view class="margin-lr">
-      <!-- <u-button v-if="id" @click="update" class="margin-top" :custom-style="customStyle" shape="square"
+      <view class="margin-lr">
+        <!-- <u-button v-if="id" @click="update" class="margin-top" :custom-style="customStyle" shape="square"
 			:hair-line="false">提交审核</u-button> -->
-      <u-button
-        @click="submit"
-        class="margin-top"
-        :custom-style="customStyle"
-        shape="square"
-        :hair-line="false"
-      >
-        提交审核</u-button
-      >
+        <u-button @click="submit" class="margin-top" :custom-style="customStyle" shape="square" :hair-line="false">
+          提交审核</u-button>
+      </view>
+      <!-- 选择学历 -->
+      <u-select v-model="learnShow" :list="learnList" @confirm="learnConfirm"></u-select>
+      <!-- 专业-->
+      <u-select v-model="sexShow" :list="Sexlist" @confirm="sexConfirm"></u-select>
+      <!-- 婚姻状况 -->
+      <u-select v-model="MarriageShow" :list="Marriagelist" @confirm="MarriageConfirm"></u-select>
+      <!-- 工作经验 -->
+      <u-select v-model="IntentionShow" :list="Intentionlist" @confirm="IntentionConfirm"></u-select>
+      <!-- 薪资 -->
+      <u-select v-model="monyShow" :list="monyList" @confirm="moneyConfirm"></u-select>
     </view>
-    <!-- 选择学历 -->
-    <u-select v-model="learnShow" :list="learnList" @confirm="learnConfirm"></u-select>
-    <!-- 专业-->
-    <u-select v-model="sexShow" :list="Sexlist" @confirm="sexConfirm"></u-select>
-    <!-- 婚姻状况 -->
-    <u-select
-      v-model="MarriageShow"
-      :list="Marriagelist"
-      @confirm="MarriageConfirm"
-    ></u-select>
-    <!-- 工作经验 -->
-    <u-select
-      v-model="IntentionShow"
-      :list="Intentionlist"
-      @confirm="IntentionConfirm"
-    ></u-select>
-    <!-- 薪资 -->
-    <u-select v-model="monyShow" :list="monyList" @confirm="moneyConfirm"></u-select>
-	</view>
-    <u-picker
-      v-model="showGraduationTime"
-      mode="time"
-      @confirm="setGraduationTime"
-    ></u-picker>
+    <u-picker v-model="showGraduationTime" mode="time" @confirm="setGraduationTime"></u-picker>
     <!-- 意向城市 -->
     <u-picker v-model="cityShow" mode="region" @confirm="cityConfirm"></u-picker>
+    <!-- 权限说明弹窗 -->
+    <u-popup mode="top" ref="permission">
+      <view class="popup-content">
+        <view class="popup-text-permission">选择/拍摄照片需要相机/相册权限,用于上传用户头像</view>
+      </view>
+    </u-popup>
   </view>
 </template>
 
@@ -898,8 +789,19 @@ export default {
       });
     },
     // 图片上传
-    addImages(e) {
+   async addImages(e) {
       let that = this;
+      // 1. 检查权限状态
+      const hasPermission = await this.$queue.checkPermission(
+        'camera',
+        '选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+        this
+      );
+
+      // 2. 如果未授权或者用户拒绝,显示提示
+      if (!hasPermission) {
+        return;
+      }
       uni.chooseImage({
         count: 99,
         sourceType: ["album", "camera"],
@@ -959,15 +861,17 @@ export default {
   overflow: hidden;
   display: flex;
   flex-direction: column;
-  .page-content{
-	flex: 1;
-	width: 100%;
-	overflow: hidden;
-	overflow-y: auto;
-	padding-bottom: 40rpx;
-	box-sizing: border-box;
+
+  .page-content {
+    flex: 1;
+    width: 100%;
+    overflow: hidden;
+    overflow-y: auto;
+    padding-bottom: 40rpx;
+    box-sizing: border-box;
   }
 }
+
 page {
   background-color: #f5f5f5;
 }

+ 80 - 99
my/renzheng/companyImg.vue

@@ -14,12 +14,7 @@
           <view class="upload-section">
             <view class="images-grid">
               <!-- 已上传的图片 -->
-              <view
-                class="image-item"
-                v-for="(image, index) in imageList"
-                :key="index"
-                @click="previewImage(index)"
-              >
+              <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>
@@ -28,13 +23,9 @@
                   <u-icon name="close" color="#fff" size="20"></u-icon>
                 </view>
               </view>
-              
+
               <!-- 添加图片按钮 -->
-              <view
-                class="upload-box"
-                v-if="imageList.length < maxCount"
-                @click="chooseImage"
-              >
+              <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>
@@ -50,10 +41,7 @@
             <!-- 上传进度 -->
             <view v-if="uploading" class="upload-progress">
               <view class="progress-bar">
-                <view
-                  class="progress-inner"
-                  :style="{ width: uploadProgress + '%' }"
-                ></view>
+                <view class="progress-inner" :style="{ width: uploadProgress + '%' }"></view>
               </view>
               <text class="progress-text">{{ uploadProgress }}%</text>
             </view>
@@ -64,22 +52,22 @@
             <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="warning-item">2.
+                请上传品牌相关的图片,含有其他内容将无法通过审核(包括但不限于含有水印、招聘信息、联系方式、二维码等相关内容)</view>
+              <view class="warning-item">3. 上传图片须符合中国相关法律法规,不得含有违法内容或不良信息</view>
             </view>
           </view>
         </view>
       </view>
     </view>
 
-    <view class="submit-btn" :class="{ disabled: imageList.length === 0 }" @click="goJobPostingSecond"
-      >下一步</view
-    >
+    <view class="submit-btn" :class="{ disabled: imageList.length === 0 }" @click="goJobPostingSecond">下一步</view>
+    <!-- 权限说明弹窗 -->
+    <u-popup mode="top" ref="permission">
+      <view class="popup-content">
+        <view class="popup-text-permission">选择/拍摄照片需要相机/相册权限,用于上传用户头像</view>
+      </view>
+    </u-popup>
   </view>
 </template>
 
@@ -93,7 +81,7 @@ export default {
       maxCount: 20, // 最大上传数量
       uploading: false, // 是否正在上传
       uploadProgress: 0, // 上传进度
-	  companyData:{}
+      companyData: {}
     };
   },
   components: {
@@ -106,37 +94,28 @@ export default {
   },
   methods: {
     // 选择图片
-    chooseImage() {
+    async chooseImage() {
       const that = this;
       const remainingCount = this.maxCount - this.imageList.length;
-      
-	  
-	      // 1. 先判断系统类型,区分Android/iOS权限
-			const systemInfo = uni.getSystemInfoSync();
-			const isAndroid = systemInfo.system.includes('Android');
-			const permissionType = isAndroid ? 'storage' : 'photos'; // Android=存储,iOS=相册
-		  
-			// 2. 权限检查(复用之前封装的 checkPermission 函数)
-			const hasPermission = this.$queue.checkPermission(
-			  permissionType,
-			  isAndroid 
-				? '选择/拍摄照片需要相机/相册权限,用于上传企业主页照片' // Android 专属提示
-				: '选择/拍摄照片需要相机/相册权限,用于上传企业主页照片'
-			);
-		  
-			if (!hasPermission) {
-			  uni.showToast({ title: '未获取权限,无法选择照片', icon: 'none' });
-			  return;
-			}
-	  
-	  
+      // 1. 检查权限状态
+      const hasPermission = await this.$queue.checkPermission(
+        'camera',
+        '选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+        this
+      );
+
+      // 2. 如果未授权或者用户拒绝,显示提示
+      if (!hasPermission) {
+        return;
+      }
+
       uni.chooseImage({
         count: remainingCount, // 最多选择剩余数量
         sizeType: ["compressed"],
         sourceType: ["album", "camera"],
         success: (res) => {
           const tempFilePaths = res.tempFilePaths;
-          
+
           // 批量上传图片
           that.uploadMultipleImages(tempFilePaths);
         },
@@ -174,7 +153,7 @@ export default {
       //     url: filePath,
       //     // 实际开发中这里应该是服务器返回的URL
       //   }));
-        
+
       //   that.imageList = [...that.imageList, ...newImages];
 
       //   setTimeout(() => {
@@ -189,39 +168,39 @@ export default {
       // 实际开发中应该使用下面的代码:
       let uploadedCount = 0;
       const totalCount = filePaths.length;
-      
+
       filePaths.forEach((filePath, index) => {
-		this.$queue.uploadFile(filePath,(path)=>{
-				if(path) {
-					uploadedCount++;					
-					that.imageList.push({
-					  url: path
-					});
-					
-					// 更新进度
-					that.uploadProgress = Math.floor((uploadedCount / totalCount) * 100);
-					
-					// 所有图片上传完成
-					if (uploadedCount === totalCount) {
-					  that.uploading = false;
-					  uni.showToast({
-					    title: `成功上传${uploadedCount}张图片`,
-					    icon: 'success'
-					  });
-					}
-				}
-				else {
-					uploadedCount++;
-					console.log(`第${index + 1}张图片上传失败:`, error);
-					if (uploadedCount === totalCount) {
-					  that.uploading = false;
-					  uni.showToast({
-					    title: '部分图片上传失败',
-					    icon: 'none'
-					  });
-					}
-				}
-		})
+        this.$queue.uploadFile(filePath, (path) => {
+          if (path) {
+            uploadedCount++;
+            that.imageList.push({
+              url: path
+            });
+
+            // 更新进度
+            that.uploadProgress = Math.floor((uploadedCount / totalCount) * 100);
+
+            // 所有图片上传完成
+            if (uploadedCount === totalCount) {
+              that.uploading = false;
+              uni.showToast({
+                title: `成功上传${uploadedCount}张图片`,
+                icon: 'success'
+              });
+            }
+          }
+          else {
+            uploadedCount++;
+            console.log(`第${index + 1}张图片上传失败:`, error);
+            if (uploadedCount === totalCount) {
+              that.uploading = false;
+              uni.showToast({
+                title: '部分图片上传失败',
+                icon: 'none'
+              });
+            }
+          }
+        })
         // uni.uploadFile({
         //   url: '你的上传接口地址',
         //   filePath: filePath,
@@ -237,10 +216,10 @@ export default {
         //         url: data.data.url
         //       });
         //     }
-            
+
         //     // 更新进度
         //     that.uploadProgress = Math.floor((uploadedCount / totalCount) * 100);
-            
+
         //     // 所有图片上传完成
         //     if (uploadedCount === totalCount) {
         //       that.uploading = false;
@@ -253,7 +232,7 @@ export default {
         //   fail: (error) => {
         //     uploadedCount++;
         //     console.log(`第${index + 1}张图片上传失败:`, error);
-            
+
         //     if (uploadedCount === totalCount) {
         //       that.uploading = false;
         //       uni.showToast({
@@ -307,8 +286,8 @@ export default {
 
       // 跳转到下一页,传递图片数据
       const imageUrls = this.imageList.map(item => item.url);
-	  const companyData = this.companyData
-	  companyData.photos=imageUrls.join(',')
+      const companyData = this.companyData
+      companyData.photos = imageUrls.join(',')
       uni.navigateTo({
         url: "/my/renzheng/mainWorkIntro?companyData=" + encodeURIComponent(JSON.stringify(companyData)),
       });
@@ -350,6 +329,7 @@ export default {
         width: 100%;
         padding-bottom: 20rpx;
         box-sizing: border-box;
+
         text {
           font-size: 48rpx;
           font-weight: 700;
@@ -386,25 +366,25 @@ export default {
 
         .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;
@@ -418,7 +398,7 @@ export default {
                 opacity: 0;
                 transition: opacity 0.3s;
               }
-              
+
               .delete-btn {
                 position: absolute;
                 top: 8rpx;
@@ -431,12 +411,12 @@ export default {
                 align-items: center;
                 justify-content: center;
               }
-              
+
               &:active .image-mask {
                 opacity: 1;
               }
             }
-            
+
             .upload-box {
               width: 142rpx;
               height: 142rpx;
@@ -445,13 +425,13 @@ export default {
               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;
@@ -461,7 +441,7 @@ export default {
               }
             }
           }
-          
+
           .upload-count {
             color: #666;
             font-size: 24rpx;
@@ -503,7 +483,8 @@ export default {
           font-size: 24rpx;
           font-weight: 400;
           line-height: 32rpx;
-          .warning-item{
+
+          .warning-item {
             margin-top: 8rpx;
           }
         }

+ 459 - 440
my/wallet/tixian.vue

@@ -4,25 +4,27 @@
 			<view class="bg radius padding">
 				<view class="text-lg">可提金额</view>
 				<view class="flex margin-top-sm">
-					<view class="text-xxl">{{money}}元</view>
+					<view class="text-xxl">{{ money }}元</view>
 				</view>
 			</view>
 			<view class="bg radius padding margin-top">
 				<view class="text-lg margin-bottom">提现金额</view>
 				<input type="number" placeholder="请输入提现金额" v-model="moneyNum">
 				<view class="margin-tb-sm" style="width: 100%;height: 1rpx;background: #cccccc;"></view>
-				<view class="text-red">{{placeholder}}</view>
+				<view class="text-red">{{ placeholder }}</view>
 			</view>
 
 
 			<view class="part_three">
 				<view class="three_name">提现方式</view>
 				<view class="btn">
-					<view class="btn_right" v-if="zhifub=='是'" :class="current==1?'btna':''" @click="bindToindex(1)">
+					<view class="btn_right" v-if="zhifub == '是'" :class="current == 1 ? 'btna' : ''"
+						@click="bindToindex(1)">
 						<image src="../static/zhifubao.png"></image>
 						<text>支付宝</text>
 					</view>
-					<view v-if="values==2" class="btn_left" :class="current==2?'btna':''" @click="bindToindex(2)">
+					<view v-if="values == 2" class="btn_left" :class="current == 2 ? 'btna' : ''"
+						@click="bindToindex(2)">
 						<image src="../static/weixin.png"></image>
 						<text>微信</text>
 					</view>
@@ -36,7 +38,7 @@
 		<view class="flex justify-around margin-top">
 			<view @click="goNav('./zhifubao')">提现账号</view>
 			<view @click="goNav('/my/wallet/shouyi')">钱包明细</view>
-			<view v-if="values==2" class="box_right" @click="isShow">
+			<view v-if="values == 2" class="box_right" @click="isShow">
 				微信收款码
 			</view>
 			<view @click="goNav('./cashList')">提现记录</view>
@@ -48,7 +50,7 @@
 				<view class="text-center text-lg text-bold flex justify-between">
 					<view></view>
 					<view>添加微信收款码</view>
-					<view @click="show=false">X</view>
+					<view @click="show = false">X</view>
 				</view>
 
 				<view style="width: 80%;margin: 0 auto;">
@@ -61,496 +63,513 @@
 
 			</view>
 		</u-popup>
+		<!-- 权限说明弹窗 -->
+		<u-popup mode="top" ref="permission">
+			<view class="popup-content">
+				<view class="popup-text-permission">选择/拍摄照片需要相机/相册权限,用于上传用户头像</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
 <script>
-	import configdata from '../../common/config.js';
-	export default {
-		data() {
-			return {
-				title_color: 1,
-				money: 0,
-				avatar: '',
-				Profit: 0,
-				moneyNum: null,
-				thisSelect: {
-					id: 1,
-					num: '50',
-					price: '50',
-					isSelect: true
-				},
-				charge: 0, //提现手续费
-				maxMoney: 0, //最高提现额度
-				minMoney: 0, //最低提现额度
-				placeholder: '',
-				sp: 0,
-
-				current: '1',
-				values: '',
-				show: false,
-				wximg: '',
-				zhifubaoName: '',
-				zhifubao: '',
-				zhifub: '是'
+import configdata from '../../common/config.js';
+export default {
+	data() {
+		return {
+			title_color: 1,
+			money: 0,
+			avatar: '',
+			Profit: 0,
+			moneyNum: null,
+			thisSelect: {
+				id: 1,
+				num: '50',
+				price: '50',
+				isSelect: true
+			},
+			charge: 0, //提现手续费
+			maxMoney: 0, //最高提现额度
+			minMoney: 0, //最低提现额度
+			placeholder: '',
+			sp: 0,
+
+			current: '1',
+			values: '',
+			show: false,
+			wximg: '',
+			zhifubaoName: '',
+			zhifubao: '',
+			zhifub: '是'
+		}
+	},
+	onLoad() {
+		this.avatar = uni.getStorageSync('avatar')
+		//判断微信提现方式
+		this.$Request.getT('/app/common/type/355').then(res => {
+			if (res.code == 0) {
+				if (res.data && res.data.value) {
+					if (res.data.value == '是') {
+						this.values = 2
+					} else {
+						this.values = 1
+					}
+
+				}
 			}
+		})
+		//支付宝是否开启
+		this.$Request.getT('/app/common/type/356').then(res => {
+			if (res.code == 0) {
+				if (res.data && res.data.value) {
+					this.zhifub = res.data.value
+				}
+			}
+		})
+	},
+	onShow() {
+
+		this.getCharge()
+		this.getMinMoney()
+		this.getMaxMoney()
+		this.getUserInfo()
+	},
+	methods: {
+		isShow() {
+			this.getUserInfo()
+			this.show = true
 		},
-		onLoad() {
-			this.avatar = uni.getStorageSync('avatar')
-			//判断微信提现方式
-			this.$Request.getT('/app/common/type/355').then(res => {
+		bindToindex(e) {
+			this.current = e
+			// console.log(e, this.current)
+		},
+		getUserInfo() {
+			this.$Request.getT("/app/user/selectUserById").then(res => {
 				if (res.code == 0) {
-					if (res.data && res.data.value) {
-						if (res.data.value == '是') {
-							this.values = 2
-						} else {
-							this.values = 1
-						}
-
-					}
+					this.money = res.data.balance // 我的余额
+					this.zhifubaoName = res.data.zhiFuBaoName
+					this.zhifubao = res.data.zhiFuBao
+					this.wximg = res.data.wxImg
+					uni.setStorageSync('zhiFuBao', res.data.zhiFuBao)
+					uni.setStorageSync('zhiFuBaoName', res.data.zhiFuBaoName)
 				}
-			})
-			//支付宝是否开启
-			this.$Request.getT('/app/common/type/356').then(res => {
+			});
+		},
+		// 提现手续费
+		getCharge() {
+			this.$Request.get("/app/common/type/152").then(res => {
 				if (res.code == 0) {
-					if (res.data && res.data.value) {
-						this.zhifub = res.data.value
-					}
+					this.charge = res.data.value
+					this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
+						this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
 				}
+			});
+		},
+		// 最低提现额度
+		getMinMoney() {
+			this.$Request.get("/app/common/type/112").then(res => {
+				if (res.code == 0) {
+					this.minMoney = res.data.value
+					this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
+						this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
+				}
+			});
+		},
+		// 最高提现额度
+		getMaxMoney() {
+			this.$Request.get("/app/common/type/153").then(res => {
+				if (res.code == 0) {
+					this.maxMoney = res.data.value
+					this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
+						this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
+				}
+			});
+		},
+		cut(e) {
+			this.title_color = e
+		},
+		goNav(url) {
+			uni.navigateTo({
+				url
 			})
 		},
-		onShow() {
-
-			this.getCharge()
-			this.getMinMoney()
-			this.getMaxMoney()
-			this.getUserInfo()
+		active(e) {
+			this.wallet.forEach(res => {
+				if (res.id == e.id) {
+					res.isSelect = true
+					this.thisSelect = e
+				} else {
+					res.isSelect = false
+				}
+			})
 		},
-		methods: {
-			isShow() {
-				this.getUserInfo()
-				this.show = true
-			},
-			bindToindex(e) {
-				this.current = e
-				// console.log(e, this.current)
-			},
-			getUserInfo() {
-				this.$Request.getT("/app/user/selectUserById").then(res => {
-					if (res.code == 0) {
-						this.money = res.data.balance // 我的余额
-						this.zhifubaoName = res.data.zhiFuBaoName
-						this.zhifubao = res.data.zhiFuBao
-						this.wximg = res.data.wxImg
-						uni.setStorageSync('zhiFuBao', res.data.zhiFuBao)
-						uni.setStorageSync('zhiFuBaoName', res.data.zhiFuBaoName)
-					}
-				});
-			},
-			// 提现手续费
-			getCharge() {
-				this.$Request.get("/app/common/type/152").then(res => {
-					if (res.code == 0) {
-						this.charge = res.data.value
-						this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
-							this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
-					}
-				});
-			},
-			// 最低提现额度
-			getMinMoney() {
-				this.$Request.get("/app/common/type/112").then(res => {
-					if (res.code == 0) {
-						this.minMoney = res.data.value
-						this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
-							this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
-					}
-				});
-			},
-			// 最高提现额度
-			getMaxMoney() {
-				this.$Request.get("/app/common/type/153").then(res => {
-					if (res.code == 0) {
-						this.maxMoney = res.data.value
-						this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
-							this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
-					}
-				});
-			},
-			cut(e) {
-				this.title_color = e
-			},
-			goNav(url) {
-				uni.navigateTo({
-					url
-				})
-			},
-			active(e) {
-				this.wallet.forEach(res => {
-					if (res.id == e.id) {
-						res.isSelect = true
-						this.thisSelect = e
-					} else {
-						res.isSelect = false
-					}
-				})
-			},
 
 
-			selectWay: function(item) {
-				this.openWay = item.id;
-			},
-			// 提现
-			cashMoney() {
-				if (this.current == 1) {
-					if (!/^\d+$/.test(this.moneyNum)) {
-						uni.showToast({
-							icon: 'none',
-							title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
-						});
-						return;
-					}
-					if (Number(this.money) < Number(this.moneyNum)) {
-						uni.showToast({
-							icon: 'none',
-							title: '可提现金额不足'
-						});
-						return;
-					}
-
-					if (Number(this.moneyNum) < Number(this.minMoney)) {
-						uni.showToast({
-							icon: 'none',
-							title: '提现金额不能小于' + this.minMoney + '元'
-						});
-						return;
-					}
+		selectWay: function (item) {
+			this.openWay = item.id;
+		},
+		// 提现
+		cashMoney() {
+			if (this.current == 1) {
+				if (!/^\d+$/.test(this.moneyNum)) {
+					uni.showToast({
+						icon: 'none',
+						title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
+					});
+					return;
+				}
+				if (Number(this.money) < Number(this.moneyNum)) {
+					uni.showToast({
+						icon: 'none',
+						title: '可提现金额不足'
+					});
+					return;
+				}
 
-					if (Number(this.moneyNum) > Number(this.maxMoney)) {
-						uni.showToast({
-							icon: 'none',
-							title: '提现金额不能大于' + this.maxMoney + '元'
-						});
-						return;
-					}
+				if (Number(this.moneyNum) < Number(this.minMoney)) {
+					uni.showToast({
+						icon: 'none',
+						title: '提现金额不能小于' + this.minMoney + '元'
+					});
+					return;
+				}
 
+				if (Number(this.moneyNum) > Number(this.maxMoney)) {
+					uni.showToast({
+						icon: 'none',
+						title: '提现金额不能大于' + this.maxMoney + '元'
+					});
+					return;
+				}
 
 
-					let zhiFuBao = uni.getStorageSync('zhiFuBao')
-					let zhiFuBaoName = uni.getStorageSync('zhiFuBaoName')
 
-					if (!zhiFuBao && !zhiFuBaoName) {
-						uni.showModal({
-							title: '提示',
-							content: '请先绑定提现账号',
-							confirmText: '去添加',
-							complete(res) {
-								if (res.confirm) {
-									uni.navigateTo({
-										url: './zhifubao'
-									})
-								}
-							}
-						})
-						return
-					}
+				let zhiFuBao = uni.getStorageSync('zhiFuBao')
+				let zhiFuBaoName = uni.getStorageSync('zhiFuBaoName')
 
-					let that = this
-					that.sp = (that.moneyNum * this.charge).toFixed(2)
+				if (!zhiFuBao && !zhiFuBaoName) {
 					uni.showModal({
 						title: '提示',
-						content: '本次提现' + that.moneyNum + '元,服务费' + this.sp + '元,是否确认提现?',
-						success: function(res) {
+						content: '请先绑定提现账号',
+						confirmText: '去添加',
+						complete(res) {
 							if (res.confirm) {
-								that.$Request.getT("/app/cash/cashMoney", {
-									money: that.moneyNum,
-									classify: 1
-								}).then(res => {
-									if (res.code == 0) {
-										uni.showToast({
-											icon: 'none',
-											title: res.msg
-										})
-										that.moneyNum = null
-									} else {
-										uni.showToast({
-											icon: 'none',
-											title: res.msg
-										})
-									}
-									that.getUserInfo()
-								});
-							} else if (res.cancel) {
-								console.log('用户点击取消');
+								uni.navigateTo({
+									url: './zhifubao'
+								})
 							}
 						}
-					});
-				} else {
-					if (!/^\d+$/.test(this.moneyNum)) {
-						uni.showToast({
-							icon: 'none',
-							title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
-						});
-						return;
-					}
-					// if (!this.zhifubao) {
-					// 	uni.navigateTo({
-					// 		url: '/pageA/wallet/zhifubao'
-					// 	});
-					// 	return
-					// }
-
-					if (Number(this.money) < Number(this.moneyNum)) {
-						uni.showToast({
-							icon: 'none',
-							title: '可提现金额不足'
-						});
-						return;
-					}
-
-					if (Number(this.moneyNum) < Number(this.minMoney)) {
-						uni.showToast({
-							icon: 'none',
-							title: '提现金额不能小于' + this.minMoney + '元'
-						});
-						return;
-					}
+					})
+					return
+				}
 
-					if (Number(this.moneyNum) > Number(this.maxMoney)) {
-						uni.showToast({
-							icon: 'none',
-							title: '提现金额不能大于' + this.maxMoney + '元'
-						});
-						return;
-					}
-					// if (this.moneyNum*1+this.charge*this.moneyNum > this.money*1) {
-					// 	uni.showToast({
-					// 		icon: 'none',
-					// 		title: '您的手续费不足'
-					// 	})
-					// 	return
-					// }
-					let that = this
-					if (!that.wximg) {
-						uni.showModal({
-							title: '提现提示',
-							content: '请上传微信收款码',
-							showCancel: true,
-							cancelText: '取消',
-							confirmText: '上传',
-							success: res => {
-								if (res.confirm) {
-									that.show = true;
+				let that = this
+				that.sp = (that.moneyNum * this.charge).toFixed(2)
+				uni.showModal({
+					title: '提示',
+					content: '本次提现' + that.moneyNum + '元,服务费' + this.sp + '元,是否确认提现?',
+					success: function (res) {
+						if (res.confirm) {
+							that.$Request.getT("/app/cash/cashMoney", {
+								money: that.moneyNum,
+								classify: 1
+							}).then(res => {
+								if (res.code == 0) {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg
+									})
+									that.moneyNum = null
+								} else {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg
+									})
 								}
-							},
-							fail: () => {},
-							complete: () => {}
-						});
-						return;
+								that.getUserInfo()
+							});
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
 					}
+				});
+			} else {
+				if (!/^\d+$/.test(this.moneyNum)) {
+					uni.showToast({
+						icon: 'none',
+						title: '请输入正确金额,不能包含中文,英文,特殊字符和小数'
+					});
+					return;
+				}
+				// if (!this.zhifubao) {
+				// 	uni.navigateTo({
+				// 		url: '/pageA/wallet/zhifubao'
+				// 	});
+				// 	return
+				// }
+
+				if (Number(this.money) < Number(this.moneyNum)) {
+					uni.showToast({
+						icon: 'none',
+						title: '可提现金额不足'
+					});
+					return;
+				}
 
-					that.sp = (that.moneyNum * this.charge).toFixed(2)
+				if (Number(this.moneyNum) < Number(this.minMoney)) {
+					uni.showToast({
+						icon: 'none',
+						title: '提现金额不能小于' + this.minMoney + '元'
+					});
+					return;
+				}
+
+				if (Number(this.moneyNum) > Number(this.maxMoney)) {
+					uni.showToast({
+						icon: 'none',
+						title: '提现金额不能大于' + this.maxMoney + '元'
+					});
+					return;
+				}
+				// if (this.moneyNum*1+this.charge*this.moneyNum > this.money*1) {
+				// 	uni.showToast({
+				// 		icon: 'none',
+				// 		title: '您的手续费不足'
+				// 	})
+				// 	return
+				// }
+				let that = this
+				if (!that.wximg) {
 					uni.showModal({
-						title: '提示',
-						content: '本次提现' + that.moneyNum + '元,服务费' + this.sp + '元,是否确认提现?',
-						success: function(res) {
+						title: '提现提示',
+						content: '请上传微信收款码',
+						showCancel: true,
+						cancelText: '取消',
+						confirmText: '上传',
+						success: res => {
 							if (res.confirm) {
-								that.$Request.getT("/app/cash/cashMoney", {
-									money: that.moneyNum,
-									classify: 2
-								}).then(res => {
-									if (res.code == 0) {
-										uni.showToast({
-											icon: 'none',
-											title: res.msg
-										})
-										that.moneyNum = null
-									} else {
-										uni.showToast({
-											icon: 'none',
-											title: res.msg
-										})
-									}
-									that.getUserInfo()
-								});
-							} else if (res.cancel) {
-								console.log('用户点击取消');
+								that.show = true;
 							}
-						}
+						},
+						fail: () => { },
+						complete: () => { }
 					});
+					return;
 				}
-			},
-			weixin() {
-				let that = this
-				uni.chooseImage({
-					count: 1, //默认9
-					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
-					sourceType: ['album', 'camera'], //从相册选择
-					success: (res) => {
-						console.log('`````````````', res.tempFilePaths[0])
-						that.$queue.showLoading("上传中...");
-						for (let i = 0; i < 1; i++) {
-							uni.uploadFile({ // 上传接口
-								// url: that.config("APIHOST") + '/alioss/upload',
-								url: 'https://jianzhijiedan.xianmaxiong.com/sqx_fast/alioss/upload', //真实的接口地址
-								filePath: res.tempFilePaths[i],
-								name: 'file',
-								success: (uploadFileRes) => {
-									let img = JSON.parse(uploadFileRes.data).data
-									// this.img.push()
-									console.log(img)
-									that.show = false
-									let userId = that.$queue.getData('userId');
-
-									let data = {
-										wxImg: img
-									}
-									that.$Request.postJson('/app/user/updateUser',
-										data).then(
-										res => {
-											uni.hideLoading();
-											that.$queue.showToast('上传成功,请重新操作提现')
-											that.getUserInfo()
-										});
+
+				that.sp = (that.moneyNum * this.charge).toFixed(2)
+				uni.showModal({
+					title: '提示',
+					content: '本次提现' + that.moneyNum + '元,服务费' + this.sp + '元,是否确认提现?',
+					success: function (res) {
+						if (res.confirm) {
+							that.$Request.getT("/app/cash/cashMoney", {
+								money: that.moneyNum,
+								classify: 2
+							}).then(res => {
+								if (res.code == 0) {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg
+									})
+									that.moneyNum = null
+								} else {
+									uni.showToast({
+										icon: 'none',
+										title: res.msg
+									})
 								}
+								that.getUserInfo()
 							});
+						} else if (res.cancel) {
+							console.log('用户点击取消');
 						}
 					}
 				});
-			},
-			config: function(name) {
-				var info = null;
-				if (name) {
-					var name2 = name.split("."); //字符分割
-					if (name2.length > 1) {
-						info = configdata[name2[0]][name2[1]] || null;
-					} else {
-						info = configdata[name] || null;
-					}
-					if (info == null) {
-						let web_config = cache.get("web_config");
-						if (web_config) {
-							if (name2.length > 1) {
-								info = web_config[name2[0]][name2[1]] || null;
-							} else {
-								info = web_config[name] || null;
+			}
+		},
+		async weixin() {
+			let that = this
+			// 1. 检查权限状态
+			const hasPermission = await this.$queue.checkPermission(
+				'camera',
+				'选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+				this
+			);
+
+			// 2. 如果未授权或者用户拒绝,显示提示
+			if (!hasPermission) {
+				return;
+			}
+			uni.chooseImage({
+				count: 1, //默认9
+				sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+				sourceType: ['album', 'camera'], //从相册选择
+				success: (res) => {
+					console.log('`````````````', res.tempFilePaths[0])
+					that.$queue.showLoading("上传中...");
+					for (let i = 0; i < 1; i++) {
+						uni.uploadFile({ // 上传接口
+							// url: that.config("APIHOST") + '/alioss/upload',
+							url: 'https://jianzhijiedan.xianmaxiong.com/sqx_fast/alioss/upload', //真实的接口地址
+							filePath: res.tempFilePaths[i],
+							name: 'file',
+							success: (uploadFileRes) => {
+								let img = JSON.parse(uploadFileRes.data).data
+								// this.img.push()
+								console.log(img)
+								that.show = false
+								let userId = that.$queue.getData('userId');
+
+								let data = {
+									wxImg: img
+								}
+								that.$Request.postJson('/app/user/updateUser',
+									data).then(
+										res => {
+											uni.hideLoading();
+											that.$queue.showToast('上传成功,请重新操作提现')
+											that.getUserInfo()
+										});
 							}
+						});
+					}
+				}
+			});
+		},
+		config: function (name) {
+			var info = null;
+			if (name) {
+				var name2 = name.split("."); //字符分割
+				if (name2.length > 1) {
+					info = configdata[name2[0]][name2[1]] || null;
+				} else {
+					info = configdata[name] || null;
+				}
+				if (info == null) {
+					let web_config = cache.get("web_config");
+					if (web_config) {
+						if (name2.length > 1) {
+							info = web_config[name2[0]][name2[1]] || null;
+						} else {
+							info = web_config[name] || null;
 						}
 					}
 				}
-				return info;
 			}
+			return info;
 		}
 	}
+}
 </script>
 
 <style>
-	page {
-		background-color: #F7F7F7;
-	}
-
-
-
-	.bgCol2 {
-		color: #82A9FE;
-	}
-
-	.bg {
-		background-color: #FFFFFF;
-	}
-
-	.active {
-		border: 1px solid #82A9FE !important;
-		color: #82A9FE !important;
-	}
-
-	.title_btn {
-		height: 78upx;
-		line-height: 78upx;
-		/* background: #f7f7f7; */
-	}
-
-	.btn1 {
-		width: 100%;
-		height: 88upx;
-		background: #82A9FE;
-		border-radius: 44upx;
-		text-align: center;
-		line-height: 88upx;
-		margin-top: 40upx;
-		font-size: 28upx;
-		color: #FFF;
-	}
-
-	.part_three {
-		margin: 0 auto;
-		background: #FFFFFF;
-		margin-top: 20rpx;
-		border-radius: 20rpx;
-	}
-
-	.three_name {
-		width: 90%;
-		margin: 0 auto;
-		font-size: 33rpx;
-		color: black;
-		line-height: 80rpx;
-	}
-
-	.btn {
-		width: 96%;
-		margin: 0 auto;
-		display: flex;
-		justify-content: space-between;
-		padding-bottom: 30rpx;
-	}
-
-	.btn_left {
-		flex: 1;
-		/* width: 240rpx; */
-		height: 90rpx;
-		border: 1rpx solid #ccc;
-		border-radius: 20rpx;
-		margin-right: 10rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		margin-right: 20rpx;
-	}
-
-	.btn_right {
-		flex: 1;
-		/* width: 240rpx; */
-		height: 90rpx;
-		border: 1rpx solid #ccc;
-		border-radius: 20rpx;
-		margin-left: 10rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		margin-right: 20rpx;
-	}
-
-	/* 	.beizhu {
+page {
+	background-color: #F7F7F7;
+}
+
+
+
+.bgCol2 {
+	color: #82A9FE;
+}
+
+.bg {
+	background-color: #FFFFFF;
+}
+
+.active {
+	border: 1px solid #82A9FE !important;
+	color: #82A9FE !important;
+}
+
+.title_btn {
+	height: 78upx;
+	line-height: 78upx;
+	/* background: #f7f7f7; */
+}
+
+.btn1 {
+	width: 100%;
+	height: 88upx;
+	background: #82A9FE;
+	border-radius: 44upx;
+	text-align: center;
+	line-height: 88upx;
+	margin-top: 40upx;
+	font-size: 28upx;
+	color: #FFF;
+}
+
+.part_three {
+	margin: 0 auto;
+	background: #FFFFFF;
+	margin-top: 20rpx;
+	border-radius: 20rpx;
+}
+
+.three_name {
+	width: 90%;
+	margin: 0 auto;
+	font-size: 33rpx;
+	color: black;
+	line-height: 80rpx;
+}
+
+.btn {
+	width: 96%;
+	margin: 0 auto;
+	display: flex;
+	justify-content: space-between;
+	padding-bottom: 30rpx;
+}
+
+.btn_left {
+	flex: 1;
+	/* width: 240rpx; */
+	height: 90rpx;
+	border: 1rpx solid #ccc;
+	border-radius: 20rpx;
+	margin-right: 10rpx;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	margin-right: 20rpx;
+}
+
+.btn_right {
+	flex: 1;
+	/* width: 240rpx; */
+	height: 90rpx;
+	border: 1rpx solid #ccc;
+	border-radius: 20rpx;
+	margin-left: 10rpx;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	margin-right: 20rpx;
+}
+
+/* 	.beizhu {
 		line-height: 55rpx;
 		color: red;
 		letter-spacing: 1rpx;
 	} */
 
-	.btna {
-		border: 1rpx solid #2B80FF !important;
-	}
+.btna {
+	border: 1rpx solid #2B80FF !important;
+}
 
 
-	.btn_left image {
-		width: 50rpx;
-		height: 50rpx;
-		margin-right: 12rpx;
-	}
+.btn_left image {
+	width: 50rpx;
+	height: 50rpx;
+	margin-right: 12rpx;
+}
 
-	.btn_right image {
-		width: 50rpx;
-		height: 50rpx;
-		margin-right: 12rpx;
-	}
+.btn_right image {
+	width: 50rpx;
+	height: 50rpx;
+	margin-right: 12rpx;
+}
 </style>

+ 610 - 579
pages/my/attachment.vue

@@ -15,652 +15,683 @@
 		<view class="contain flex flex-direction">
 			<view class="usermain">
 				<scroll-view scroll-with-animation scroll-y>
-				<!-- 我的公司 -->
+					<!-- 我的公司 -->
 					<view class="usermain-item item-padding" v-for="item in content">
-						<view class="usermain-item-title c-flex-center"><image :src="item.fileType=='pdf'?'../../static/images/pdf.svg':'../../static/images/docx.svg'" class="header-icon" mode="aspectFill"/></view>
+						<view class="usermain-item-title c-flex-center">
+							<image
+								:src="item.fileType == 'pdf' ? '../../static/images/pdf.svg' : '../../static/images/docx.svg'"
+								class="header-icon" mode="aspectFill" />
+						</view>
 						<view @click="seekDoc(item)" class="fileContent c-flex-center">
-							<view class="fileName m-ellipsis">{{item.attachmentName}}</view>
-							<view class="filedesc">{{item.attachmentSize}}kb 更新于{{item.createTime}}</view>
+							<view class="fileName m-ellipsis">{{ item.attachmentName }}</view>
+							<view class="filedesc">{{ item.attachmentSize }}kb 更新于{{ item.createTime }}</view>
 						</view>
 						<view @click.stop="more(item.resumesAttachmentId)" class="c-flex-center">
 							<u-icon name="more-dot-fill"></u-icon>
 						</view>
 					</view>
-					<empty :isShow="false" v-if="content.length==0" />
+					<empty :isShow="false" v-if="content.length == 0" />
 				</scroll-view>
 			</view>
-			
+
 			<view class="footer-btn">
-				<fileSelector title="上传简历" allowType=".doc,.docx,.xls,.xlsx,.pdf" @fileSelected="uploadResumes" @filesChanged="onFilesChanged" />
+				<fileSelector title="上传简历" allowType=".doc,.docx,.xls,.xlsx,.pdf" @fileSelected="uploadResumes"
+					@filesChanged="onFilesChanged" />
 			</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 configdata from '../../common/config.js';
-	import navBar from "@/components/nav-bar/index.vue";
-	// 引入组件
-	import fileSelector from '@/uni_modules/zhouquan-fileSelector/components/zhouquan-fileSelector/file-selector.vue';
-	import empty from '../../components/empty.vue'
-	export default {
-		components: {
-			navBar,
-			fileSelector,
-			empty
+import configdata from '../../common/config.js';
+import navBar from "@/components/nav-bar/index.vue";
+// 引入组件
+import fileSelector from '@/uni_modules/zhouquan-fileSelector/components/zhouquan-fileSelector/file-selector.vue';
+import empty from '../../components/empty.vue'
+export default {
+	components: {
+		navBar,
+		fileSelector,
+		empty
+	},
+	data() {
+		return {
+			statusBarHeight: 0, // 状态栏高度
+			phone: '',
+			weChatNum: '',//微信号
+			email: '',//接收简历邮箱
+			selectedCompany: '深圳市汉瑞国际猎头服务有限公司', // 我的公司
+			selectedPosition: '人事总监', // 我的职务
+			avatar: '../../static/logo.png',
+			userName: '',
+			nickName: '',
+			userId: '',
+			realName: '',
+			weChatId: "",
+			password: '',
+			platform: '',
+			createTime: '',
+			money: '',
+			jiFen: '',
+			status: '',
+			zhiFuBao: '',
+			zhiFuBaoName: '',
+			sex: 1,
+			age: 0,
+			content: []
+		};
+	},
+	computed: {
+		phoneWithMask() {
+			if (this.phone && this.phone.length >= 11) {
+				return this.phone.substring(0, 3) + '******' + this.phone.substring(9);
+			}
+			return this.phone || '请设置手机号';
+		}
+	},
+	onLoad(e) {
+		// 获取状态栏高度
+		let systemInfo = uni.getSystemInfoSync();
+		this.statusBarHeight = systemInfo.statusBarHeight || 0;
+
+		this.getUserInfo()
+		// this.avatar = uni.getStorageSync('avatar')
+	},
+	methods: {
+		// 返回上一页
+		goBack() {
+			uni.navigateBack();
 		},
-		data() {
-			return {
-				statusBarHeight: 0, // 状态栏高度
-				phone: '',
-				weChatNum:'',//微信号
-				email: '',//接收简历邮箱
-				selectedCompany: '深圳市汉瑞国际猎头服务有限公司', // 我的公司
-				selectedPosition: '人事总监', // 我的职务
-				avatar: '../../static/logo.png',
-				userName: '',
-				nickName: '',
-				userId: '',
-				realName: '',
-				weChatId: "",
-				password: '',
-				platform: '',
-				createTime: '',
-				money: '',
-				jiFen: '',
-				status: '',
-				zhiFuBao: '',
-				zhiFuBaoName: '',
-				sex: 1,
-				age: 0,
-				content:[]
-			};
+		// 修改手机号
+		modifyPhone() {
+			console.log('点击修改手机号,当前手机号:', this.phone);
+			const url = `/pages/my/userphone?currentPhone=${this.phone}`;
+			console.log('跳转路径:', url);
+
+			uni.navigateTo({
+				url: url,
+			});
 		},
-		computed: {
-			phoneWithMask() {
-				if (this.phone && this.phone.length >= 11) {
-					return this.phone.substring(0, 3) + '******' + this.phone.substring(9);
-				}
-				return this.phone || '请设置手机号';
-			}
+		// 选择公司
+		selectCompany() {
+			uni.navigateTo({
+				url: '/pages/my/myCompany'
+			});
 		},
-		onLoad(e) {
-			// 获取状态栏高度
-			let systemInfo = uni.getSystemInfoSync();
-			this.statusBarHeight = systemInfo.statusBarHeight || 0;
-			
-			this.getUserInfo()
-			// this.avatar = uni.getStorageSync('avatar')
+		// 选择职务
+		selectPosition() {
+			// 这里可以跳转到职务选择页面或显示职务选择弹窗
+			console.log('选择职务');
 		},
-		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');
-				uni.uploadFile({
-					url: that.config("APIHOST1") +
+		onChooseAvatar(e) {
+			let that = this;
+			let token = uni.getStorageSync('token');
+			uni.uploadFile({
+				url: that.config("APIHOST1") +
 					'/alioss/upload', //真实的接口地址
-					filePath: e.detail.avatarUrl,
-					header: {
-						token: token
-					},
-					name: 'file',
-					success: uploadFileRes => {
-						let url = JSON.parse(uploadFileRes.data);
-						that.avatar = url.data
-						uni.hideLoading();
-			 	}
-			 });
-
-			},
-			goMyAddress() {
-				uni.navigateTo({
-					url: '../jifen/myaddress'
-				});
-			},
-			uploadImg() {
-				let token = uni.getStorageSync('token')
-
-				if (!token) {
-					this.goLoginInfo();
-					return;
+				filePath: e.detail.avatarUrl,
+				header: {
+					token: token
+				},
+				name: 'file',
+				success: uploadFileRes => {
+					let url = JSON.parse(uploadFileRes.data);
+					that.avatar = url.data
+					uni.hideLoading();
 				}
-				let that = this;
-				var url = null;
-				uni.showActionSheet({
-					// itemList按钮的文字接受的是数组
-					itemList: ["查看头像", "从相册选择图片"],
-					success(e) {
-						var index = e.tapIndex
-						if (index === 0) {
-							// 用户点击了预览当前图片
-							// 可以自己实现当前头像链接的读取
-							let url = that.avatar;
-							let arr = []
-							arr.push(url)
-							uni.previewImage({
-								// 预览功能图片也必须是数组的
-								urls: arr
-							})
-						} else if (index === 1) {
-							uni.chooseImage({
-								count: 1, //默认9
-								sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
-								sourceType: ['album'], //从相册选择
-								success: function(res) {
-									uni.showLoading({
-										title: '上传中...'
-									});
-									let token = uni.getStorageSync('token');
-									let userId = uni.getStorageSync('userId');
-									uni.uploadFile({
-										url: that.config("APIHOST1") +
-										'/alioss/upload', //真实的接口地址
+			});
 
-										filePath: res.tempFilePaths[0],
-										header: {
-											token: token
-										},
-										name: 'file',
-										success: uploadFileRes => {
-											url = JSON.parse(uploadFileRes.data);
-											that.avatar = url.data
-											uni.hideLoading();
-										}
-									});
-								}
-							});
+		},
+		goMyAddress() {
+			uni.navigateTo({
+				url: '../jifen/myaddress'
+			});
+		},
+		uploadImg() {
+			let token = uni.getStorageSync('token')
+
+			if (!token) {
+				this.goLoginInfo();
+				return;
+			}
+			let that = this;
+			var url = null;
+			uni.showActionSheet({
+				// itemList按钮的文字接受的是数组
+				itemList: ["查看头像", "从相册选择图片"],
+				async success(e) {
+					var index = e.tapIndex
+					if (index === 0) {
+						// 用户点击了预览当前图片
+						// 可以自己实现当前头像链接的读取
+						let url = that.avatar;
+						let arr = []
+						arr.push(url)
+						uni.previewImage({
+							// 预览功能图片也必须是数组的
+							urls: arr
+						})
+					} else if (index === 1) {
+						// 1. 检查权限状态
+						const hasPermission = await this.$queue.checkPermission(
+							'camera',
+							'选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+							this
+						);
+
+						// 2. 如果未授权或者用户拒绝,显示提示
+						if (!hasPermission) {
+							return;
 						}
-					}
-				})
-			},
-			config: function(name) {
-				var info = null;
-				if (name) {
-					var name2 = name.split("."); //字符分割
-					if (name2.length > 1) {
-						info = configdata[name2[0]][name2[1]] || null;
-					} else {
-						info = configdata[name] || null;
-					}
-					if (info == null) {
-						let web_config = cache.get("web_config");
-						if (web_config) {
-							if (name2.length > 1) {
-								info = web_config[name2[0]][name2[1]] || null;
-							} else {
-								info = web_config[name] || null;
+						uni.chooseImage({
+							count: 1, //默认9
+							sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+							sourceType: ['album'], //从相册选择
+							success: function (res) {
+								uni.showLoading({
+									title: '上传中...'
+								});
+								let token = uni.getStorageSync('token');
+								let userId = uni.getStorageSync('userId');
+								uni.uploadFile({
+									url: that.config("APIHOST1") +
+										'/alioss/upload', //真实的接口地址
+
+									filePath: res.tempFilePaths[0],
+									header: {
+										token: token
+									},
+									name: 'file',
+									success: uploadFileRes => {
+										url = JSON.parse(uploadFileRes.data);
+										that.avatar = url.data
+										uni.hideLoading();
+									}
+								});
 							}
-						}
+						});
 					}
 				}
-				return info;
-			},
-			getUserInfo() {
-				this.$Request.get("/app/resumes/getAttachment").then(res => {
-					if (res.code == 0) {
-						res.data.forEach(function(item){
-							const ext = item.attachmentName.split('.').pop().toLowerCase();
-							item.fileType=ext
-						})
-						this.content=res.data
+			})
+		},
+		config: function (name) {
+			var info = null;
+			if (name) {
+				var name2 = name.split("."); //字符分割
+				if (name2.length > 1) {
+					info = configdata[name2[0]][name2[1]] || null;
+				} else {
+					info = configdata[name] || null;
+				}
+				if (info == null) {
+					let web_config = cache.get("web_config");
+					if (web_config) {
+						if (name2.length > 1) {
+							info = web_config[name2[0]][name2[1]] || null;
+						} else {
+							info = web_config[name] || null;
+						}
 					}
-					uni.hideLoading();
-				});
-
-
-			},
-			// 保存
-			uploadResumes(e) {
-				var that=this
-				console.log(e.path)
-				const validExtensions = ['pdf', 'doc', 'docx'];
-				  const ext = e.name.split('.').pop().toLowerCase();
-				  if (!validExtensions.includes(ext)) {
-					  this.$queue.showToast('仅支持PDF/DOC/DOCX格式')
-					return;
-				  }
-				uni.getFileInfo({
-				  filePath: e.path,
-				  success: (info) => {
-					  
-				    console.log('文件大小:', info.size); // 单位:字节
-					let attachment_size=(info.size/1024).toFixed(1)
-					that.$queue.uploadFile(e.path,function(path){
-						if(path)
+				}
+			}
+			return info;
+		},
+		getUserInfo() {
+			this.$Request.get("/app/resumes/getAttachment").then(res => {
+				if (res.code == 0) {
+					res.data.forEach(function (item) {
+						const ext = item.attachmentName.split('.').pop().toLowerCase();
+						item.fileType = ext
+					})
+					this.content = res.data
+				}
+				uni.hideLoading();
+			});
+
+
+		},
+		// 保存
+		uploadResumes(e) {
+			var that = this
+			console.log(e.path)
+			const validExtensions = ['pdf', 'doc', 'docx'];
+			const ext = e.name.split('.').pop().toLowerCase();
+			if (!validExtensions.includes(ext)) {
+				this.$queue.showToast('仅支持PDF/DOC/DOCX格式')
+				return;
+			}
+			uni.getFileInfo({
+				filePath: e.path,
+				success: (info) => {
+
+					console.log('文件大小:', info.size); // 单位:字节
+					let attachment_size = (info.size / 1024).toFixed(1)
+					that.$queue.uploadFile(e.path, function (path) {
+						if (path)
 							that.$Request.postJson("/app/resumes/saveAttachment", {
-							  		attachmentAddress:path,
-									attachmentName:e.name,
-									attachmentSize:attachment_size
-							  	}).then(res => {
-							  		if (res.code === 0) {
-							  			that.getUserInfo()
-							  		} else {
-							  			uni.showToast({
-							  				title: res.msg,
-							  				icon: "none"
-							  			})
-							  		}
-							  	})
+								attachmentAddress: path,
+								attachmentName: e.name,
+								attachmentSize: attachment_size
+							}).then(res => {
+								if (res.code === 0) {
+									that.getUserInfo()
+								} else {
+									uni.showToast({
+										title: res.msg,
+										icon: "none"
+									})
+								}
+							})
 						else
 							that.$queue.showToast('文件上传失败')
 					})
-				  },
-				  fail: (err) => {
-				    console.error('获取失败', err);
-				  }
-				});
-				
-			},
-			more(id){
-				var that=this
-				uni.showActionSheet({
-					itemList: ["删除"],
-					itemColor: "#3273db",
-					success(res) {
-						if(res.tapIndex==0)
-							that.deleteAttachment(id)
-					},
-					fail(res) {
-						console.log(res.errMsg);
-					},
-				});
-			},
-			deleteAttachment(id){
-			  var that = this;
-			  uni.showModal({
-			    title: '提示',
-			    content: '确定删除?',
-			    success(res) {
-			      if (res.confirm) {
-			        that.$Request.postJson("/app/resumes/deleteAttachment", {
-			        		resumesAttachmentId: id
-			        	}).then(res => {
-			        		if (res.code === 0) {
-			        			var info = that.content.filter(function (item) {
-			        			  return item.resumesAttachmentId != id;
-			        			});
-			        			that.content=info
-			        		} else {
-			        			uni.showToast({
-			        				title: res.msg,
-			        				icon: "none"
-			        			})
-			        		}
-			        	})
-			      } else if (res.cancel) {
-			        console.log('用户点击取消')
-			      }
-			    }
-			  })
-			},
-			onFilesChanged(e){
-				console.log(e)
-			},
-			seekDoc(it){
-				//#ifdef APP-PLUS
-				uni.downloadFile({
-				  url: it.attachmentAddress,
-				  success: function (res) {
-				    var filePath = res.tempFilePath;
-				    uni.openDocument({
-				      filePath: filePath,
-				      showMenu: true,
-				      success: function (res) {
-				        console.log('打开文档成功');
-				      }
-				    });
-				  }
-				});
-				return;
-				//#endif
-				uni.navigateTo({
-					url: '/pages/index/webView?url=' + it.attachmentAddress+'&title='+it.attachmentName
-				});
-			}
-		},
-		// userphone(){
-		// 	uni.navigateTo({
-		// 		url:'/pages/my/userphone'
-		// 	})
-		// }
+				},
+				fail: (err) => {
+					console.error('获取失败', err);
+				}
+			});
 
-	};
+		},
+		more(id) {
+			var that = this
+			uni.showActionSheet({
+				itemList: ["删除"],
+				itemColor: "#3273db",
+				success(res) {
+					if (res.tapIndex == 0)
+						that.deleteAttachment(id)
+				},
+				fail(res) {
+					console.log(res.errMsg);
+				},
+			});
+		},
+		deleteAttachment(id) {
+			var that = this;
+			uni.showModal({
+				title: '提示',
+				content: '确定删除?',
+				success(res) {
+					if (res.confirm) {
+						that.$Request.postJson("/app/resumes/deleteAttachment", {
+							resumesAttachmentId: id
+						}).then(res => {
+							if (res.code === 0) {
+								var info = that.content.filter(function (item) {
+									return item.resumesAttachmentId != id;
+								});
+								that.content = info
+							} else {
+								uni.showToast({
+									title: res.msg,
+									icon: "none"
+								})
+							}
+						})
+					} else if (res.cancel) {
+						console.log('用户点击取消')
+					}
+				}
+			})
+		},
+		onFilesChanged(e) {
+			console.log(e)
+		},
+		seekDoc(it) {
+			//#ifdef APP-PLUS
+			uni.downloadFile({
+				url: it.attachmentAddress,
+				success: function (res) {
+					var filePath = res.tempFilePath;
+					uni.openDocument({
+						filePath: filePath,
+						showMenu: true,
+						success: function (res) {
+							console.log('打开文档成功');
+						}
+					});
+				}
+			});
+			return;
+			//#endif
+			uni.navigateTo({
+				url: '/pages/index/webView?url=' + it.attachmentAddress + '&title=' + it.attachmentName
+			});
+		}
+	},
+	// userphone(){
+	// 	uni.navigateTo({
+	// 		url:'/pages/my/userphone'
+	// 	})
+	// }
+
+};
 </script>
 
 <style lang="scss" scoped>
-	page {
-		/* background: #f6f6f6; */
-	}
+page {
+	/* background: #f6f6f6; */
+}
+
+.navbar {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	z-index: 999;
+	background: #fff;
+	padding: 0 0 40rpx 20rpx;
+
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 0 30rpx;
+		height: 60rpx;
 
-	.navbar {
-		position: fixed;
-		top: 0;
-		left: 0;
-		right: 0;
-		z-index: 999;
-		background: #fff;
-		padding: 0 0 40rpx 20rpx;
-		
-		.navbar-content {
+		.navbar-left {
+			width: 60rpx;
+			height: 60rpx;
 			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: 36rpx;
-                font-weight: 700;
-                line-height: 52rpx;
-                letter-spacing: 0%;
-                text-align: center;
-			}
-			
-			.navbar-right {
-				width: 60rpx;
-				height: 60rpx;
-			}
-		}
-	}
-
-	button::after {
-		border: none;
-		background-color: none;
-	}
-
-	button {
-		position: relative;
-		display: block;
-		margin-left: auto;
-		margin-right: auto;
-		padding-left: 0px;
-		padding-right: 0px;
-		box-sizing: border-box;
-		text-decoration: none;
-		line-height: 1.35;
-		overflow: hidden;
-		color: #666666;
-		/* background-color: #fff; */
-		background-color: rgba(255, 255, 255, 0) !important;
-		width: 100%;
-		height: 100%;
-	}
-	.contain{
-		padding-top: 120rpx; /* 为固定导航栏留出空间 */
-		/* #ifdef APP*/
-		padding-top: calc(120rpx + var(--status-bar-height));
-		/* #endif*/
-		height: 100vh;
-	}
-	.usermain {
-		background: #ffffff;
-		/* color: #fff; */
-		height: 100vh;
-		scroll-view{
-			height: 100%;
+			justify-content: center;
 		}
-	}
 
-	.usermain-item {
-		display: flex;
-		justify-content: space-between;
-		margin: 0 40rpx;
-		padding: 30rpx 0;
-		// border-bottom: 1rpx solid rgba(229, 229, 229, 0.3);
-		background: #fff;
-		.fileContent{
-			width: 85%;
-			margin:0 20rpx;
-		}
-		.fileName{
-			color: #222;
-			font-size: 32rpx;
-		}
-		.filedesc{
-			margin-top: 10rpx;
-			font-size: 24rpx;
-		}
-		.c-flex-center{
-			align-self: center;
-			color: #aaa;
-			flex-shrink: 0;
+		.navbar-title {
+			color: rgba(23, 23, 37, 1);
+			font-family: DM Sans;
+			font-size: 36rpx;
+			font-weight: 700;
+			line-height: 52rpx;
+			letter-spacing: 0%;
+			text-align: center;
 		}
-		
-	}
 
-	.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;
-		.header-icon{
-			width: 50rpx;
-			height: 50rpx;
-			display: block;
+		.navbar-right {
+			width: 60rpx;
+			height: 60rpx;
 		}
 	}
-
-	.usermain-item.item-padding {
-		/* padding: 0; */
-	}
-
-	.cu-form-group {
-		padding: 0;
-		background: #ffffff;
-		text-align: right;
+}
+
+button::after {
+	border: none;
+	background-color: none;
+}
+
+button {
+	position: relative;
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+	padding-left: 0px;
+	padding-right: 0px;
+	box-sizing: border-box;
+	text-decoration: none;
+	line-height: 1.35;
+	overflow: hidden;
+	color: #666666;
+	/* background-color: #fff; */
+	background-color: rgba(255, 255, 255, 0) !important;
+	width: 100%;
+	height: 100%;
+}
+
+.contain {
+	padding-top: 120rpx;
+	/* 为固定导航栏留出空间 */
+	/* #ifdef APP*/
+	padding-top: calc(120rpx + var(--status-bar-height));
+	/* #endif*/
+	height: 100vh;
+}
+
+.usermain {
+	background: #ffffff;
+	/* color: #fff; */
+	height: 100vh;
+
+	scroll-view {
+		height: 100%;
 	}
-
-	.cu-form-group input {
-		background: #ffffff;
-		font-size: 28rpx;
-		/* color: #fff; */
-
+}
+
+.usermain-item {
+	display: flex;
+	justify-content: space-between;
+	margin: 0 40rpx;
+	padding: 30rpx 0;
+	// border-bottom: 1rpx solid rgba(229, 229, 229, 0.3);
+	background: #fff;
+
+	.fileContent {
+		width: 85%;
+		margin: 0 20rpx;
 	}
 
-	/* 姓名字段样式 - 参考basicInfo.vue */
-	.usermain-item .form-label {
-		color: rgba(31, 44, 55, 1);
-		font-family: DM Sans;
+	.fileName {
+		color: #222;
 		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;
+	.filedesc {
+		margin-top: 10rpx;
+		font-size: 24rpx;
 	}
 
-	.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;
+	.c-flex-center {
+		align-self: center;
+		color: #aaa;
+		flex-shrink: 0;
 	}
 
-	.usermain-item .cu-form-group input::placeholder {
-		color: rgba(155, 155, 155, 1);
-		font-size: 28rpx;
-	}
+}
 
-	/* 联系方式样式 */
-	.contact-structure {
-		border-bottom: none !important;
-	}
+.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;
 
-	.contact-wrapper {
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		padding: 0;
-		margin-top: 8rpx;
+	.header-icon {
+		width: 50rpx;
+		height: 50rpx;
+		display: block;
 	}
-
-	.phone-display {
-		color: rgba(23, 23, 37, 1);
+}
+
+.usermain-item.item-padding {
+	/* padding: 0; */
+}
+
+.cu-form-group {
+	padding: 0;
+	background: #ffffff;
+	text-align: right;
+}
+
+.cu-form-group input {
+	background: #ffffff;
+	font-size: 28rpx;
+	/* color: #fff; */
+
+}
+
+/* 姓名字段样式 - 参考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: 40rpx;
+	padding-bottom: 40rpx;
+}
+
+.footer-btn .usermain-btn {
+	color: rgba(255, 255, 255, 1);
+	background: rgba(1, 107, 246, 1);
+	text-align: center;
+	width: 90%;
+	height: 80rpx;
+	font-size: 32rpx;
+	line-height: 80rpx;
+	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;
-		letter-spacing: 0.5%;
 	}
 
-	.modify-link {
-		color: rgba(24, 144, 255, 1);
+	text {
+		color: rgba(23, 23, 37, 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: 40rpx;
-		padding-bottom: 40rpx;
-	}
-
-	.footer-btn .usermain-btn {
-		color: rgba(255, 255, 255, 1);
-		background: rgba(1, 107, 246, 1);
-		text-align: center;
-		width: 90%;
-		height: 80rpx;
-		font-size: 32rpx;
-		line-height: 80rpx;
-		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);
 	}
+}
+
+.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>

+ 254 - 290
pages/my/jobApplicant/workRecord.vue

@@ -9,18 +9,8 @@
       <view class="avatar-section">
         <view class="avatar-upload" @click="chooseAvatar">
           <view class="avatar-preview">
-            <image
-              v-if="formData.avatar"
-              :src="formData.avatar"
-              class="avatar-image"
-              mode="aspectFill"
-            ></image>
-            <image
-            v-else
-              src="@/static/images/jobApplicant/touxiang.svg"
-              mode="scaleToFill"
-              class="user-img"
-            />
+            <image v-if="formData.avatar" :src="formData.avatar" class="avatar-image" mode="aspectFill"></image>
+            <image v-else src="@/static/images/jobApplicant/touxiang.svg" mode="scaleToFill" class="user-img" />
           </view>
           <view class="upload-view">上传头像</view>
         </view>
@@ -31,12 +21,7 @@
         <!-- 姓名 -->
         <view class="form-item required">
           <view class="form-label">姓名</view>
-          <u-input
-            placeholder="请输入姓名"
-            v-model="formData.name"
-            :border="false"
-            class="form-input"
-          ></u-input>
+          <u-input placeholder="请输入姓名" v-model="formData.name" :border="false" class="form-input"></u-input>
         </view>
 
         <!-- 性别 -->
@@ -44,43 +29,24 @@
           <view class="form-label">性别</view>
           <view class="gender-select">
             <view class="gender-option" @click="formData.gender = 1">
-              <image
-                v-if="formData.gender === 1"
-                src="/static/images/jobApplicant/radio-check.svg"
-                mode="scaleToFill"
-              />
-              <image
-                v-else
-                src="/static/images/jobApplicant/radio.svg"
-                mode="scaleToFill"
-              />
-              男</view
-            >
+              <image v-if="formData.gender === 1" src="/static/images/jobApplicant/radio-check.svg"
+                mode="scaleToFill" />
+              <image v-else src="/static/images/jobApplicant/radio.svg" mode="scaleToFill" />
+              男
+            </view>
             <view class="gender-option" @click="formData.gender = 2">
-              <image
-                v-if="formData.gender === 2"
-                src="/static/images/jobApplicant/radio-check.svg"
-                mode="scaleToFill"
-              />
-              <image
-                v-else
-                src="/static/images/jobApplicant/radio.svg"
-                mode="scaleToFill"
-              />
-              女</view
-            >
+              <image v-if="formData.gender === 2" src="/static/images/jobApplicant/radio-check.svg"
+                mode="scaleToFill" />
+              <image v-else src="/static/images/jobApplicant/radio.svg" mode="scaleToFill" />
+              女
+            </view>
           </view>
         </view>
 
         <!-- 联系方式 -->
         <view class="form-item required">
           <view class="form-label">联系方式</view>
-          <u-input
-            placeholder="请输入联系方式"
-            v-model="formData.phone"
-            :border="false"
-            class="form-input"
-          ></u-input>
+          <u-input placeholder="请输入联系方式" v-model="formData.phone" :border="false" class="form-input"></u-input>
         </view>
 
         <!-- 出生年月 -->
@@ -98,7 +64,7 @@
         <view class="form-item required">
           <view class="form-label">求职状态</view>
           <view @click.stop="showJobStatus" class="form-input-time">
-            <text>{{ statusList[formData.jobStatus].text}}</text>
+            <text>{{ statusList[formData.jobStatus].text }}</text>
             <image src="@/static/images/jobApplicant/icon-next.svg" mode="scaleToFill" />
           </view>
         </view>
@@ -109,57 +75,47 @@
         <view class="section-header">
           <view class="form-item required">
             <view class="job-title">
-              <view class="job-title-txt"
-                >工作经历 <text class="job-txt">请填写专属聘用行业的工作经验</text></view
-              >
-              <image 
-              @click="goWorkProgress"
-                class="job-image"
-                src="@/static/images/jobApplicant/edit.svg"
-                mode="scaleToFill"
-              />
+              <view class="job-title-txt">工作经历 <text class="job-txt">请填写专属聘用行业的工作经验</text></view>
+              <image @click="goWorkProgress" class="job-image" src="@/static/images/jobApplicant/edit.svg"
+                mode="scaleToFill" />
             </view>
           </view>
         </view>
 
-        <view
-          class="experience-item"
-          v-for="(exp, index) in workExperiences"
-          :key="index"
-        >
+        <view class="experience-item" v-for="(exp, index) in workExperiences" :key="index">
           <view class="job-content">
             <view class="job-icon">
               <image src="/static/images/jobApplicant/xuexiao.svg" mode="scaleToFill" />
             </view>
-			<view class="right-content">
-            <view class="job-content-txt" v-for="it in exp.workExpDetails">
-              <view class="exp-header">
-                <view class="exp-position">
-                  <view class="position">{{ it.position }}</view>
-                  <view class="department">{{ it.department }}</view>
-                </view>
-                <!-- <u-icon
+            <view class="right-content">
+              <view class="job-content-txt" v-for="it in exp.workExpDetails">
+                <view class="exp-header">
+                  <view class="exp-position">
+                    <view class="position">{{ it.position }}</view>
+                    <view class="department">{{ it.department }}</view>
+                  </view>
+                  <!-- <u-icon
                   name="close"
                   size="18"
                   color="#999"
                   @click="removeWorkExperience(index)"
                 ></u-icon> -->
-              </view>
-              <view class="exp-company">
-                <view class="company">{{ exp.companyName }}</view>
-                <view class="yuan">·</view>
-                <view class="duration">{{ it.startTime }} - {{ it.endTime }}</view>
-              </view>
-              <view class="exp-content">
-                <view class="content-label">{{it.workContent}}</view>
-              </view>
-              <view class="exp-content">
-                <view class="skill-tags">
-					<view class="tag" v-for="skill in it.skills">{{skill}}</view>
-				</view>
+                </view>
+                <view class="exp-company">
+                  <view class="company">{{ exp.companyName }}</view>
+                  <view class="yuan">·</view>
+                  <view class="duration">{{ it.startTime }} - {{ it.endTime }}</view>
+                </view>
+                <view class="exp-content">
+                  <view class="content-label">{{ it.workContent }}</view>
+                </view>
+                <view class="exp-content">
+                  <view class="skill-tags">
+                    <view class="tag" v-for="skill in it.skills">{{ skill }}</view>
+                  </view>
+                </view>
               </view>
             </view>
-			</view>
           </view>
         </view>
       </view>
@@ -170,21 +126,13 @@
           <view class="form-item required">
             <view class="job-title">
               <view class="job-title-txt">教育经历</view>
-              <image
-			   @click="goEducationalBackground"
-                class="job-image"
-                src="@/static/images/jobApplicant/edit.svg"
-                mode="scaleToFill"
-              />
+              <image @click="goEducationalBackground" class="job-image" src="@/static/images/jobApplicant/edit.svg"
+                mode="scaleToFill" />
             </view>
           </view>
         </view>
 
-        <view
-          class="experience-item"
-          v-for="(item, index) in eduList"
-          :key="index"
-        >
+        <view class="experience-item" v-for="(item, index) in eduList" :key="index">
           <view class="job-content">
             <view class="job-icon">
               <image src="/static/images/jobApplicant/bumen.svg" mode="scaleToFill" />
@@ -192,18 +140,19 @@
             <view class="job-content-txt">
               <view class="exp-header">
                 <view class="exp-position">
-                  <view class="position">{{item.school}}</view>
+                  <view class="position">{{ item.school }}</view>
                 </view>
               </view>
               <view class="exp-company">
-                <view class="company">{{item.degree}}</view>
+                <view class="company">{{ item.degree }}</view>
                 <view class="yuan">·</view>
-                <view class="duration">{{item.profession}}</view>
+                <view class="duration">{{ item.profession }}</view>
                 <view class="yuan">·</view>
-                <view class="duration">{{new Date(item.startTime).getFullYear()}} - {{new Date(item.endTime).getFullYear()}}</view>
+                <view class="duration">{{ new Date(item.startTime).getFullYear() }} - {{ new
+                  Date(item.endTime).getFullYear()}}</view>
               </view>
               <view class="exp-content">
-                <view class="content-label">{{item.detail}}</view>
+                <view class="content-label">{{ item.detail }}</view>
               </view>
             </view>
           </view>
@@ -226,38 +175,30 @@
         </view>
         <view class="advantage-content">
           <view type="textarea" class="advantage-textarea">
-			<textarea
-			  placeholder="请输入个人优势"
-			  v-model="formData.advantages"
-			  class=""
-			></textarea>
+            <textarea placeholder="请输入个人优势" v-model="formData.advantages" class=""></textarea>
           </view>
         </view>
       </view>
 
       <!-- 底部按钮 -->
       <view class="footer">
-        <u-button
-          type="primary"
-          @click="submitResume"
-          :customStyle="{
-            height: '90rpx',
-            fontSize: '32rpx',
-            borderRadius: '45rpx',
-            margin: '40rpx 0',
-          }"
-          >开启求职之旅</u-button
-        >
+        <u-button type="primary" @click="submitResume" :customStyle="{
+          height: '90rpx',
+          fontSize: '32rpx',
+          borderRadius: '45rpx',
+          margin: '40rpx 0',
+        }">开启求职之旅</u-button>
       </view>
     </view>
-    <u-picker
-      v-model="showBirthDatePicker"
-      :columns="dateColumns"
-      keyName="label"
-      @confirm="confirmBirthDate"
-      @cancel="showBirthDatePicker = false"
-    ></u-picker>
+    <u-picker v-model="showBirthDatePicker" :columns="dateColumns" keyName="label" @confirm="confirmBirthDate"
+      @cancel="showBirthDatePicker = false"></u-picker>
     <u-action-sheet :list="statusList" v-model="showStatus" @click="confirmStatus"></u-action-sheet>
+    <!-- 权限说明弹窗 -->
+    <u-popup mode="top" ref="permission">
+      <view class="popup-content">
+        <view class="popup-text-permission">选择/拍摄照片需要相机/相册权限,用于上传用户头像</view>
+      </view>
+    </u-popup>
   </view>
 </template>
 
@@ -288,104 +229,104 @@ export default {
       showBirthDatePicker: false,
       dateColumns: [years, months, days],
       statusList: [
-					{
-						value: '0',
-						text: '离职-随时到岗'
-					},
-					{
-						value: '1',
-						text: '在职-月内到岗',
-					
-					},
-					{
-						value: '2',
-						text: '在职-考虑机会',
-						
-					},
-					{
-						value: '3',
-						text: '在职-暂不考虑',
-			
-					}
-				],
+        {
+          value: '0',
+          text: '离职-随时到岗'
+        },
+        {
+          value: '1',
+          text: '在职-月内到岗',
+
+        },
+        {
+          value: '2',
+          text: '在职-考虑机会',
+
+        },
+        {
+          value: '3',
+          text: '在职-暂不考虑',
+
+        }
+      ],
       showStatus: false,
       formData: {
-		avatar:"",
+        avatar: "",
         name: "",
         gender: 1,
-		jobStatus:0,
-		phone:'',
+        jobStatus: 0,
+        phone: '',
         birthDate: "",
         advantages: "",
-		ifExp:0
+        ifExp: 0
       },
       workExperiences: [
         {
           companyName: "公司名称",
-		  workExpDetails:[{
-			  department: "部门",
-			  position: "职位名称",
-			  startTime: "就职时间",
-			  endTime: "离职时间",
-			  workContent: "请填写简历工作内容",
-			  skills: ["请填写面试技能要求"],
-			  }
-		  ]
+          workExpDetails: [{
+            department: "部门",
+            position: "职位名称",
+            startTime: "就职时间",
+            endTime: "离职时间",
+            workContent: "请填写简历工作内容",
+            skills: ["请填写面试技能要求"],
+          }
+          ]
         },
       ],
-	  eduList:[{
-			  school: "学校时间",
-			  profession: "专业",
-			  startTime: "2012-09-1",
-			  endTime: "2016-6-10",
-			  detail: "请填写您的教育经历",
-			  degree: "学历",
-			  }
-		  ]
+      eduList: [{
+        school: "学校时间",
+        profession: "专业",
+        startTime: "2012-09-1",
+        endTime: "2016-6-10",
+        detail: "请填写您的教育经历",
+        degree: "学历",
+      }
+      ]
     };
   },
-    components: {
+  components: {
     navBar,
   },
-  onLoad(){
-	this.getData()
-	var that=this
-	uni.$on('updateResume',()=>{
-		that.getData()
-	})  
+  onLoad() {
+    this.getData()
+    var that = this
+    uni.$on('updateResume', () => {
+      that.getData()
+    })
   },
   methods: {
-	  getData(){
-	  	var that=this
-	  	this.$Request.getT("/app/userFirst/getUserResumes", {}).then((res) => {
-	  	  if (res.code == 0) { 
-	  		  res.data.workExps.forEach(function(item){
-	  		  	item.type=JSON.parse(item.type)
-	  			item.workExpDetails=[]
-	  			res.data.workExpList.forEach(function(it){
-	  				it.skills=JSON.parse(it.skills)
-	  				it.startTime=it.startTime.slice(0, 7);
-	  				if(that.$queue.isCurrentMonth(new Date(it.endTime)))
-	  					it.endTime='至今'
-	  				else
-	  					it.endTime=	it.endTime.slice(0, 7);
-	  				if(it.workExpId==item.workExpId)
-	  					item.workExpDetails.push(it)
-	  			})
-	  		  })
-			  if(res.data.workExps.length>0)
-	  		  that.workExperiences=res.data.workExps
-			  if(res.data.eduList.length>0)
-			  that.eduList=res.data.eduList
-			  that.formData.ifExp=res.data.resumeList.ifExp
-	  	  } else {
-	  	    uni.showToast({
-	  	      title: res.msg,
-	  	      icon: "none",
-	  	    });
-	  	  }
-	  	});
-	  },
+    getData() {
+      var that = this
+      this.$Request.getT("/app/userFirst/getUserResumes", {}).then((res) => {
+        if (res.code == 0) {
+          res.data.workExps.forEach(function (item) {
+            item.type = JSON.parse(item.type)
+            item.workExpDetails = []
+            res.data.workExpList.forEach(function (it) {
+              it.skills = JSON.parse(it.skills)
+              it.startTime = it.startTime.slice(0, 7);
+              if (that.$queue.isCurrentMonth(new Date(it.endTime)))
+                it.endTime = '至今'
+              else
+                it.endTime = it.endTime.slice(0, 7);
+              if (it.workExpId == item.workExpId)
+                item.workExpDetails.push(it)
+            })
+          })
+          if (res.data.workExps.length > 0)
+            that.workExperiences = res.data.workExps
+          if (res.data.eduList.length > 0)
+            that.eduList = res.data.eduList
+          that.formData.ifExp = res.data.resumeList.ifExp
+        } else {
+          uni.showToast({
+            title: res.msg,
+            icon: "none",
+          });
+        }
+      });
+    },
     showJobStatus() {
       this.showStatus = true;
     },
@@ -394,37 +335,37 @@ export default {
     },
     confirmStatus(e) {
       this.showStatus = false;
-      this.formData.jobStatus=e
+      this.formData.jobStatus = e
     },
-    goWorkProgress(){
+    goWorkProgress() {
       uni.navigateTo({ url: '/pages/my/workExperience' })
     },
-	goEducationalBackground(){
-		uni.navigateTo({ url: '/pages/my/educationExperience' })
-	},
+    goEducationalBackground() {
+      uni.navigateTo({ url: '/pages/my/educationExperience' })
+    },
     // 选择头像
     async chooseAvatar() {
-		var that=this
-		// 1. 检查权限状态
-		const hasPermission = await this.$queue.checkPermission(
-			'camera',
-			'选择/拍摄照片需要相机/相册权限,用于上传用户头像',
-			this
-		);
-		
-		// 2. 如果未授权或者用户拒绝,显示提示
-		if (!hasPermission) {
-			return;
-		}
+      var that = this
+      // 1. 检查权限状态
+      const hasPermission = await this.$queue.checkPermission(
+        'camera',
+        '选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+        this
+      );
+
+      // 2. 如果未授权或者用户拒绝,显示提示
+      if (!hasPermission) {
+        return;
+      }
       uni.chooseImage({
         count: 1,
         sizeType: ["compressed"],
         sourceType: ["album", "camera"],
         success: (res) => {
-		    that.$queue.uploadFile(res.tempFilePaths[0],function(path){
-		      if(path)
-		    	that.formData.avatar = path;
-		    })
+          that.$queue.uploadFile(res.tempFilePaths[0], function (path) {
+            if (path)
+              that.formData.avatar = path;
+          })
         },
       });
     },
@@ -462,7 +403,7 @@ export default {
 
     // 提交简历
     submitResume() {
-		var that=this
+      var that = this
       if (!this.formData.name) {
         uni.showToast({ title: "请输入姓名", icon: "none" });
         return;
@@ -475,51 +416,51 @@ export default {
         uni.showToast({ title: "请输入出生年月", icon: "none" });
         return;
       }
-	  let age=this.$queue.calculateAgeFromBirthday(this.formData.birthDate)||0
-		let data={
-			avatar:this.formData.avatar,
-			userName:this.formData.name,
-			age,
-			sex:this.formData.gender,
-			phone:this.formData.phone
-		}
+      let age = this.$queue.calculateAgeFromBirthday(this.formData.birthDate) || 0
+      let data = {
+        avatar: this.formData.avatar,
+        userName: this.formData.name,
+        age,
+        sex: this.formData.gender,
+        phone: this.formData.phone
+      }
       uni.showLoading({ title: "提交中..." });
-	  this.$Request.postJson("/app/user/updateUser", data).then((res) => {
-		  uni.hideLoading();
-	    if (res.code == 0) {
-	        that.setResume()
-	    } else {
-	      uni.showToast({
-	        title: res.msg,
-	        icon: "none",
-	      });
-	    }
-	  });
+      this.$Request.postJson("/app/user/updateUser", data).then((res) => {
+        uni.hideLoading();
+        if (res.code == 0) {
+          that.setResume()
+        } else {
+          uni.showToast({
+            title: res.msg,
+            icon: "none",
+          });
+        }
+      });
     },
-	setResume() {
-		let data={
-			birthday:this.formData.birthDate,
-			resumesStatus:this.formData.jobStatus,
-			adv:this.formData.advantages,
-			ifExp:this.formData.ifExp,
-		}
-	  this.$Request.postJson("/app/userFirst/regist", data).then((res) => {
-	    if (res.code == 0) {
-	        // 实际开发中可以在这里添加跳转逻辑
-			uni.showToast({ title: "提交成功", icon: "none" });
-			  uni.setStorageSync("firstLogin", true);
-			  // 实际开发中可以在这里添加跳转逻辑
-			setTimeout(() => {
-			  uni.switchTab({ url: '/pages/index/index' })
-			}, 1000);
-	    } else {
-	      uni.showToast({
-	        title: res.msg,
-	        icon: "none",
-	      });
-	    }
-	  });
-	}
+    setResume() {
+      let data = {
+        birthday: this.formData.birthDate,
+        resumesStatus: this.formData.jobStatus,
+        adv: this.formData.advantages,
+        ifExp: this.formData.ifExp,
+      }
+      this.$Request.postJson("/app/userFirst/regist", data).then((res) => {
+        if (res.code == 0) {
+          // 实际开发中可以在这里添加跳转逻辑
+          uni.showToast({ title: "提交成功", icon: "none" });
+          uni.setStorageSync("firstLogin", true);
+          // 实际开发中可以在这里添加跳转逻辑
+          setTimeout(() => {
+            uni.switchTab({ url: '/pages/index/index' })
+          }, 1000);
+        } else {
+          uni.showToast({
+            title: res.msg,
+            icon: "none",
+          });
+        }
+      });
+    }
   },
 };
 </script>
@@ -535,15 +476,18 @@ export default {
   display: flex;
   flex-direction: column;
 }
+
 .job-title {
   display: flex;
   justify-content: space-between;
   align-items: center;
 }
+
 .job-image {
   width: 48rpx;
   height: 48rpx;
 }
+
 .nav-bar {
   height: 88rpx;
   display: flex;
@@ -602,6 +546,7 @@ export default {
 .form-item {
   padding-bottom: 24rpx;
   box-sizing: border-box;
+
   .job-txt {
     color: #016bf6;
     font-family: DM Sans;
@@ -633,6 +578,7 @@ export default {
   background: rgba(255, 255, 255, 1);
   padding: 0rpx 24rpx !important;
 }
+
 .form-input-time {
   flex: 1;
   box-sizing: border-box;
@@ -647,21 +593,25 @@ export default {
   display: flex;
   justify-content: space-between;
   align-items: center;
+
   image {
     width: 48rpx;
     height: 48rpx;
   }
 }
+
 ::v-deep .input-placeholder {
   color: rgba(153, 153, 153, 1) !important;
   font-family: DM Sans;
   font-size: 24rpx !important;
   font-weight: 500;
 }
+
 .user-img {
   width: 48rpx;
   height: 48rpx;
 }
+
 .required .form-label::before {
   content: "*";
   color: #fa3534;
@@ -698,6 +648,7 @@ export default {
   font-size: 32rpx;
   color: #333;
 }
+
 .section {
   box-sizing: border-box;
   border: 2rpx solid #016bf6;
@@ -707,6 +658,7 @@ export default {
   box-sizing: border-box;
   margin-bottom: 30rpx;
 }
+
 .section-header {
   margin-bottom: 24rpx;
 }
@@ -717,9 +669,11 @@ export default {
   padding: 24rpx;
   box-sizing: border-box;
 }
+
 .job-content {
   display: flex;
   gap: 42rpx;
+
   .job-icon {
     width: 96rpx;
     height: 96rpx;
@@ -728,19 +682,23 @@ export default {
     display: flex;
     justify-content: center;
     align-items: center;
-	flex-shrink: 0;
+    flex-shrink: 0;
+
     image {
       width: 64rpx;
       height: 64rpx;
     }
   }
-  .right-content{
-	  width: 100%;
+
+  .right-content {
+    width: 100%;
   }
+
   .job-content-txt {
-	margin-bottom: 20rpx;
+    margin-bottom: 20rpx;
   }
 }
+
 .exp-header {
   display: flex;
   justify-content: space-between;
@@ -778,12 +736,14 @@ export default {
   font-weight: 400;
   line-height: 40rpx;
   text-align: left;
+
   .yuan {
     padding: 0 16rpx;
     box-sizing: border-box;
     font-size: 40rpx;
   }
 }
+
 .exp-content {
   margin-bottom: 12rpx;
 }
@@ -801,24 +761,26 @@ export default {
   text-align: left;
   margin-bottom: 10rpx;
 }
+
 .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;
-                                color: rgba(102, 102, 102, 1);
-                                font-family: DM Sans;
-                                font-size: 16rpx;
-                                font-weight: 400;
-                                letter-spacing: 0%;
-                                text-align: left;
-							}
-						}
+  display: flex;
+  flex-wrap: wrap;
+  gap: 8rpx;
+  margin-top: 12rpx;
+
+  .tag {
+    background: rgba(153, 153, 153, 0.1);
+    border-radius: 12rpx;
+    padding: 6rpx;
+    color: rgba(102, 102, 102, 1);
+    font-family: DM Sans;
+    font-size: 16rpx;
+    font-weight: 400;
+    letter-spacing: 0%;
+    text-align: left;
+  }
+}
+
 .content-view {
   font-size: 28rpx;
   color: #333;
@@ -863,6 +825,7 @@ export default {
 .edu-content {
   margin-top: 12rpx;
 }
+
 .add-view {
   font-size: 28rpx;
   margin-left: 12rpx;
@@ -882,6 +845,7 @@ export default {
 .footer {
   padding-bottom: 40rpx;
 }
+
 ::v-deep .u-input {
   text-align: left !important;
 }

+ 617 - 599
pages/my/setup.vue

@@ -14,7 +14,7 @@
 		<!-- <nav-bar title="基本信息"></nav-bar> -->
 
 		<view class="usermain">
-			
+
 			<!-- 我的公司 -->
 			<view class="usermain-item item-padding" @click="goNavNoLogin('/my/setting/mimi')">
 				<view class="usermain-item-title">隐私协议</view>
@@ -43,666 +43,684 @@
 			<view class="usermain-item item-padding" @click="clear">
 				<view class="usermain-item-title">清除缓存</view>
 				<view>
-					{{storageSize}} <u-icon name="arrow-right"></u-icon>
+					{{ storageSize }} <u-icon name="arrow-right"></u-icon>
 				</view>
 			</view>
 		</view>
 		<view v-if="token" class="footer-btn">
 			<view class="usermain-btn" @click="goOut()">退出</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 configdata from '../../common/config.js';
-	import navBar from "@/components/nav-bar/index.vue";
-	export default {
-		components: {
-			navBar
+import configdata from '../../common/config.js';
+import navBar from "@/components/nav-bar/index.vue";
+export default {
+	components: {
+		navBar
+	},
+	data() {
+		return {
+			statusBarHeight: 0, // 状态栏高度
+			phone: '',
+			weChatNum: '',//微信号
+			email: '',//接收简历邮箱
+			selectedCompany: '深圳市汉瑞国际猎头服务有限公司', // 我的公司
+			selectedPosition: '人事总监', // 我的职务
+			avatar: '../../static/logo.png',
+			userName: '',
+			nickName: '',
+			userId: '',
+			realName: '',
+			weChatId: "",
+			password: '',
+			platform: '',
+			createTime: '',
+			money: '',
+			jiFen: '',
+			status: '',
+			zhiFuBao: '',
+			zhiFuBaoName: '',
+			sex: 1,
+			age: 0,
+			arr: [],
+			storageSize: 0.,
+			appname: '亿职赞',//默认名称只对小程序生效,因为小程序获取不到名称
+			appversion: '',
+			token: ''
+		};
+	},
+	computed: {
+		phoneWithMask() {
+			if (this.phone && this.phone.length >= 11) {
+				return this.phone.substring(0, 3) + '******' + this.phone.substring(9);
+			}
+			return this.phone || '请设置手机号';
+		}
+	},
+	onLoad(e) {
+		// 获取状态栏高度
+		let systemInfo = uni.getSystemInfoSync();
+		this.statusBarHeight = systemInfo.statusBarHeight || 0;
+
+		this.getUserInfo()
+		// #ifdef APP-PLUS
+		var sys = uni.getSystemInfoSync()
+		this.appname = sys.appName
+		this.appversion = sys.appVersion
+		// #endif
+		// this.avatar = uni.getStorageSync('avatar')
+		this.token = uni.getStorageSync("token");
+		try {
+			const storageInfo = uni.getStorageInfoSync();
+			console.log(storageInfo.limitSize)
+			const currentSizeMB = (storageInfo.currentSize / 1024).toFixed(2);  // 保留2位小数
+			this.storageSize = `${currentSizeMB}MB`
+		} catch (e) {
+			// error
+		}
+	},
+	methods: {
+		// 返回上一页
+		goBack() {
+			uni.navigateBack();
 		},
-		data() {
-			return {
-				statusBarHeight: 0, // 状态栏高度
-				phone: '',
-				weChatNum:'',//微信号
-				email: '',//接收简历邮箱
-				selectedCompany: '深圳市汉瑞国际猎头服务有限公司', // 我的公司
-				selectedPosition: '人事总监', // 我的职务
-				avatar: '../../static/logo.png',
-				userName: '',
-				nickName: '',
-				userId: '',
-				realName: '',
-				weChatId: "",
-				password: '',
-				platform: '',
-				createTime: '',
-				money: '',
-				jiFen: '',
-				status: '',
-				zhiFuBao: '',
-				zhiFuBaoName: '',
-				sex: 1,
-				age: 0,
-				arr:[],
-				storageSize:0.,
-				appname:'亿职赞',//默认名称只对小程序生效,因为小程序获取不到名称
-				appversion:'',
-				token:''
-			};
+		// 修改手机号
+		modifyPhone() {
+			console.log('点击修改手机号,当前手机号:', this.phone);
+			const url = `/pages/my/userphone?currentPhone=${this.phone}`;
+			console.log('跳转路径:', url);
+
+			uni.navigateTo({
+				url: url,
+			});
 		},
-		computed: {
-			phoneWithMask() {
-				if (this.phone && this.phone.length >= 11) {
-					return this.phone.substring(0, 3) + '******' + this.phone.substring(9);
-				}
-				return this.phone || '请设置手机号';
-			}
+		// 选择公司
+		selectCompany() {
+			uni.navigateTo({
+				url: '/pages/my/myCompany'
+			});
 		},
-		onLoad(e) {
-			// 获取状态栏高度
-			let systemInfo = uni.getSystemInfoSync();
-			this.statusBarHeight = systemInfo.statusBarHeight || 0;
-			
-			this.getUserInfo()
-			// #ifdef APP-PLUS
-			var sys=uni.getSystemInfoSync()
-			this.appname=sys.appName
-			this.appversion=sys.appVersion
-			  // #endif
-			// this.avatar = uni.getStorageSync('avatar')
-			this.token = uni.getStorageSync("token");
-			try {
-				const storageInfo = uni.getStorageInfoSync();
-				console.log(storageInfo.limitSize)
-				const currentSizeMB = (storageInfo.currentSize / 1024 ).toFixed(2);  // 保留2位小数
-				this.storageSize=`${currentSizeMB}MB`
-			} catch (e) {
-				// error
-			}
+		// 选择职务
+		selectPosition() {
+			// 这里可以跳转到职务选择页面或显示职务选择弹窗
+			console.log('选择职务');
 		},
-		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');
-				uni.uploadFile({
-					url: that.config("APIHOST1") +
+		onChooseAvatar(e) {
+			let that = this;
+			let token = uni.getStorageSync('token');
+			uni.uploadFile({
+				url: that.config("APIHOST1") +
 					'/alioss/upload', //真实的接口地址
-					filePath: e.detail.avatarUrl,
-					header: {
-						token: token
-					},
-					name: 'file',
-					success: uploadFileRes => {
-						let url = JSON.parse(uploadFileRes.data);
-						that.avatar = url.data
-						uni.hideLoading();
-			 	}
-			 });
-
-			},
-			goMyAddress() {
-				uni.navigateTo({
-					url: '../jifen/myaddress'
-				});
-			},
-			uploadImg() {
-				let token = uni.getStorageSync('token')
-
-				if (!token) {
-					this.goLoginInfo();
-					return;
+				filePath: e.detail.avatarUrl,
+				header: {
+					token: token
+				},
+				name: 'file',
+				success: uploadFileRes => {
+					let url = JSON.parse(uploadFileRes.data);
+					that.avatar = url.data
+					uni.hideLoading();
 				}
-				let that = this;
-				var url = null;
-				uni.showActionSheet({
-					// itemList按钮的文字接受的是数组
-					itemList: ["查看头像", "从相册选择图片"],
-					success(e) {
-						var index = e.tapIndex
-						if (index === 0) {
-							// 用户点击了预览当前图片
-							// 可以自己实现当前头像链接的读取
-							let url = that.avatar;
-							let arr = []
-							arr.push(url)
-							uni.previewImage({
-								// 预览功能图片也必须是数组的
-								urls: arr
-							})
-						} else if (index === 1) {
-							uni.chooseImage({
-								count: 1, //默认9
-								sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
-								sourceType: ['album'], //从相册选择
-								success: function(res) {
-									uni.showLoading({
-										title: '上传中...'
-									});
-									let token = uni.getStorageSync('token');
-									let userId = uni.getStorageSync('userId');
-									uni.uploadFile({
-										url: that.config("APIHOST1") +
-										'/alioss/upload', //真实的接口地址
+			});
 
-										filePath: res.tempFilePaths[0],
-										header: {
-											token: token
-										},
-										name: 'file',
-										success: uploadFileRes => {
-											url = JSON.parse(uploadFileRes.data);
-											that.avatar = url.data
-											uni.hideLoading();
-										}
-									});
-								}
-							});
+		},
+		goMyAddress() {
+			uni.navigateTo({
+				url: '../jifen/myaddress'
+			});
+		},
+		uploadImg() {
+			let token = uni.getStorageSync('token')
+
+			if (!token) {
+				this.goLoginInfo();
+				return;
+			}
+			let that = this;
+			var url = null;
+			uni.showActionSheet({
+				// itemList按钮的文字接受的是数组
+				itemList: ["查看头像", "从相册选择图片"],
+				async success(e) {
+					var index = e.tapIndex
+					if (index === 0) {
+						// 用户点击了预览当前图片
+						// 可以自己实现当前头像链接的读取
+						let url = that.avatar;
+						let arr = []
+						arr.push(url)
+						uni.previewImage({
+							// 预览功能图片也必须是数组的
+							urls: arr
+						})
+					} else if (index === 1) {
+						// 1. 检查权限状态
+						const hasPermission = await this.$queue.checkPermission(
+							'camera',
+							'选择/拍摄照片需要相机/相册权限,用于上传用户头像',
+							this
+						);
+
+						// 2. 如果未授权或者用户拒绝,显示提示
+						if (!hasPermission) {
+							return;
 						}
-					}
-				})
-			},
-			config: function(name) {
-				var info = null;
-				if (name) {
-					var name2 = name.split("."); //字符分割
-					if (name2.length > 1) {
-						info = configdata[name2[0]][name2[1]] || null;
-					} else {
-						info = configdata[name] || null;
-					}
-					if (info == null) {
-						let web_config = cache.get("web_config");
-						if (web_config) {
-							if (name2.length > 1) {
-								info = web_config[name2[0]][name2[1]] || null;
-							} else {
-								info = web_config[name] || null;
+						uni.chooseImage({
+							count: 1, //默认9
+							sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+							sourceType: ['album'], //从相册选择
+							success: function (res) {
+								uni.showLoading({
+									title: '上传中...'
+								});
+								let token = uni.getStorageSync('token');
+								let userId = uni.getStorageSync('userId');
+								uni.uploadFile({
+									url: that.config("APIHOST1") +
+										'/alioss/upload', //真实的接口地址
+
+									filePath: res.tempFilePaths[0],
+									header: {
+										token: token
+									},
+									name: 'file',
+									success: uploadFileRes => {
+										url = JSON.parse(uploadFileRes.data);
+										that.avatar = url.data
+										uni.hideLoading();
+									}
+								});
 							}
+						});
+					}
+				}
+			})
+		},
+		config: function (name) {
+			var info = null;
+			if (name) {
+				var name2 = name.split("."); //字符分割
+				if (name2.length > 1) {
+					info = configdata[name2[0]][name2[1]] || null;
+				} else {
+					info = configdata[name] || null;
+				}
+				if (info == null) {
+					let web_config = cache.get("web_config");
+					if (web_config) {
+						if (name2.length > 1) {
+							info = web_config[name2[0]][name2[1]] || null;
+						} else {
+							info = web_config[name] || null;
 						}
 					}
 				}
-				return info;
-			},
-			getUserInfo() {
-				let userId = uni.getStorageSync('userId')
-				if (userId) {
-					this.$Request.getT("/app/common/type/310").then((res) => {
-						//消息未读提醒
-						if (res.code == 0) {
-							if (res.data && res.data.value) {
-								this.arr.push(res.data.value);
-							}
+			}
+			return info;
+		},
+		getUserInfo() {
+			let userId = uni.getStorageSync('userId')
+			if (userId) {
+				this.$Request.getT("/app/common/type/310").then((res) => {
+					//消息未读提醒
+					if (res.code == 0) {
+						if (res.data && res.data.value) {
+							this.arr.push(res.data.value);
 						}
-					});
-					this.$Request.getT("/app/common/type/337").then((res) => {
-						//预约成功通知(通用)
-						if (res.code == 0) {
-							if (res.data && res.data.value) {
-								this.arr.push(res.data.value);
-							}
+					}
+				});
+				this.$Request.getT("/app/common/type/337").then((res) => {
+					//预约成功通知(通用)
+					if (res.code == 0) {
+						if (res.data && res.data.value) {
+							this.arr.push(res.data.value);
 						}
-					});
-					this.$Request.getT("/app/common/type/338").then((res) => {
-						//订单状态通知
-						if (res.code == 0) {
-							if (res.data && res.data.value) {
-								this.arr.push(res.data.value);
-							}
+					}
+				});
+				this.$Request.getT("/app/common/type/338").then((res) => {
+					//订单状态通知
+					if (res.code == 0) {
+						if (res.data && res.data.value) {
+							this.arr.push(res.data.value);
 						}
-					});
-				}
+					}
+				});
+			}
 
 
-			},
-			// 保存
-			messagebtn() {
-				if (!this.userName) {
-					// this.$queue.showToast('用户名不能为空');
-					uni.showToast({
-						title: "用户名不能为空",
-						icon: "none"
-					})
-				} else if (!this.phone) {
-					// this.$queue.showToast('用户名不能为空');
-					uni.showToast({
-						title: "联系电话不能为空",
-						icon: "none"
-					})
-				} else {
-					let that = this
-					uni.showModal({
-						title: '温馨提示',
-						content: '确定保存信息',
-						success: e => {
-							if (e.confirm) {
-								that.$Request.postJson("/app/user/updateUser", {
-									userName: that.userName,
-									avatar: that.avatar,
-									phone: that.phone,
-									sex: that.sex,
-									age: that.age,
-									weChatNum:that.weChatNum
-								}).then(res => {
-									if (res.code === 0) {
-										uni.showToast({
-											title: '保存成功',
-											icon: "none"
-										})
-										that.getUserInfo()
-										setTimeout(function() {
-											uni.navigateBack()
-										}, 1000)
-									} else {
-										uni.showToast({
-											title: res.msg,
-											icon: "none"
-										})
-									}
-								})
-							}
-						}
-					});
-				}
-			},
-			goOut() {
-				let that = this;
+		},
+		// 保存
+		messagebtn() {
+			if (!this.userName) {
+				// this.$queue.showToast('用户名不能为空');
+				uni.showToast({
+					title: "用户名不能为空",
+					icon: "none"
+				})
+			} else if (!this.phone) {
+				// this.$queue.showToast('用户名不能为空');
+				uni.showToast({
+					title: "联系电话不能为空",
+					icon: "none"
+				})
+			} else {
+				let that = this
 				uni.showModal({
-					title: "提示",
-					content: "确定退出登录吗?",
-					confirmColor: "#016BF6",
-					success: function(res) {
-						if (res.confirm) {
-							console.log("用户点击确定");
-							that.$queue.logout()
-							uni.$emit('offLogin')
-							uni.showToast({
-								title: "退出成功!",
-								icon: "none",
-								success() {
-									uni.navigateBack()
+					title: '温馨提示',
+					content: '确定保存信息',
+					success: e => {
+						if (e.confirm) {
+							that.$Request.postJson("/app/user/updateUser", {
+								userName: that.userName,
+								avatar: that.avatar,
+								phone: that.phone,
+								sex: that.sex,
+								age: that.age,
+								weChatNum: that.weChatNum
+							}).then(res => {
+								if (res.code === 0) {
+									uni.showToast({
+										title: '保存成功',
+										icon: "none"
+									})
+									that.getUserInfo()
+									setTimeout(function () {
+										uni.navigateBack()
+									}, 1000)
+								} else {
+									uni.showToast({
+										title: res.msg,
+										icon: "none"
+									})
 								}
-							});
-							/* that.isLogin = true;
-							that.userName = "登录";
-							that.avatar = "../../static/logo.png";
-							that.isVip = false; */
-							// uni.reLaunch({
-							// 	url: '/pages/public/selectIdentity/selectIdentity'
-							// })
-						} else if (res.cancel) {
-							console.log("用户点击取消");
+							})
 						}
-					},
-				});
-			},
-			goNavNoLogin(e) {
-				// #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)
-						},
-					});
-				}
-				// #endif
-				uni.navigateTo({
-					url: e,
+					}
 				});
-			},
-			deleteAccountCon(){
-				var that=this
-				this.$queue.appConfirm('账号注销后,关联数据将永久清除,请再次确认?',function(res){
-					if(res)
-						that.deleteAccount()
-				})
-			},
-			deleteAccount(){
-				var that=this
-				this.$Request.postJson("/app/user/logout").then((res) => {
-					//订单状态通知
-					if (res.code == 0) {
+			}
+		},
+		goOut() {
+			let that = this;
+			uni.showModal({
+				title: "提示",
+				content: "确定退出登录吗?",
+				confirmColor: "#016BF6",
+				success: function (res) {
+					if (res.confirm) {
+						console.log("用户点击确定");
 						that.$queue.logout()
 						uni.$emit('offLogin')
 						uni.showToast({
-							title: "注销成功!",
+							title: "退出成功!",
 							icon: "none",
 							success() {
 								uni.navigateBack()
 							}
 						});
+						/* that.isLogin = true;
+						that.userName = "登录";
+						that.avatar = "../../static/logo.png";
+						that.isVip = false; */
+						// uni.reLaunch({
+						// 	url: '/pages/public/selectIdentity/selectIdentity'
+						// })
+					} else if (res.cancel) {
+						console.log("用户点击取消");
 					}
+				},
+			});
+		},
+		goNavNoLogin(e) {
+			// #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)
+					},
 				});
-			},
-			clear(){
-				var that=this
-				this.$queue.appConfirm('是否确认清除数据缓存?',function(res){
-					if(res){
-						uni.clearStorage();
-						that.storageSize=`0.00MB`
-					}
-				})
 			}
+			// #endif
+			uni.navigateTo({
+				url: e,
+			});
 		},
-		// userphone(){
-		// 	uni.navigateTo({
-		// 		url:'/pages/my/userphone'
-		// 	})
-		// }
-
-	};
+		deleteAccountCon() {
+			var that = this
+			this.$queue.appConfirm('账号注销后,关联数据将永久清除,请再次确认?', function (res) {
+				if (res)
+					that.deleteAccount()
+			})
+		},
+		deleteAccount() {
+			var that = this
+			this.$Request.postJson("/app/user/logout").then((res) => {
+				//订单状态通知
+				if (res.code == 0) {
+					that.$queue.logout()
+					uni.$emit('offLogin')
+					uni.showToast({
+						title: "注销成功!",
+						icon: "none",
+						success() {
+							uni.navigateBack()
+						}
+					});
+				}
+			});
+		},
+		clear() {
+			var that = this
+			this.$queue.appConfirm('是否确认清除数据缓存?', function (res) {
+				if (res) {
+					uni.clearStorage();
+					that.storageSize = `0.00MB`
+				}
+			})
+		}
+	},
+	// userphone(){
+	// 	uni.navigateTo({
+	// 		url:'/pages/my/userphone'
+	// 	})
+	// }
+
+};
 </script>
 
 <style lang="scss" scoped>
-	page {
-		/* background: #1c1b20; */
-	}
+page {
+	/* background: #1c1b20; */
+}
+
+.navbar {
+	// position: fixed;
+	// top: 0;
+	// left: 0;
+	// right: 0;
+	// z-index: 999;
+	background: #fff;
+	// padding: 0 0 40rpx 20rpx;
+
+	.navbar-content {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 0 30rpx;
+		height: 88rpx;
 
-	.navbar {
-		// position: fixed;
-		// top: 0;
-		// left: 0;
-		// right: 0;
-		// z-index: 999;
-		background: #fff;
-		// padding: 0 0 40rpx 20rpx;
-		
-		.navbar-content {
+		.navbar-left {
+			width: 60rpx;
+			height: 60rpx;
 			display: flex;
 			align-items: center;
-			justify-content: space-between;
-			padding: 0 30rpx;
-			height: 88rpx;
-			
-			.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: 36rpx;
-                font-weight: 700;
-                line-height: 52rpx;
-                letter-spacing: 0%;
-                text-align: center;
-			}
-			
-			.navbar-right {
-				width: 60rpx;
-				height: 60rpx;
-			}
+			justify-content: center;
 		}
-	}
-
-	button::after {
-		border: none;
-		background-color: none;
-	}
-
-	button {
-		position: relative;
-		display: block;
-		margin-left: auto;
-		margin-right: auto;
-		padding-left: 0px;
-		padding-right: 0px;
-		box-sizing: border-box;
-		text-decoration: none;
-		line-height: 1.35;
-		overflow: hidden;
-		color: #666666;
-		/* background-color: #fff; */
-		background-color: rgba(255, 255, 255, 0) !important;
-		width: 100%;
-		height: 100%;
-	}
-
-	.usermain {
-		background: #ffffff;
-		/* color: #fff; */
-		margin-top: 20rpx; /* 为固定导航栏留出空间 */
-	}
-
-	.usermain-item {
-		display: flex;
-		justify-content: space-between;
-		margin: 0 40rpx;
-		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 {
-		/* padding: 0; */
-	}
-
-	.cu-form-group {
-		padding: 0;
-		background: #ffffff;
-		text-align: right;
-	}
-
-	.cu-form-group input {
-		background: #ffffff;
-		font-size: 28rpx;
-		/* color: #fff; */
-
-	}
-
-	/* 姓名字段样式 - 参考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;
-	}
+		.navbar-title {
+			color: rgba(23, 23, 37, 1);
+			font-family: DM Sans;
+			font-size: 36rpx;
+			font-weight: 700;
+			line-height: 52rpx;
+			letter-spacing: 0%;
+			text-align: center;
+		}
 
-	.contact-wrapper {
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		padding: 0;
-		margin-top: 8rpx;
+		.navbar-right {
+			width: 60rpx;
+			height: 60rpx;
+		}
 	}
-
-	.phone-display {
-		color: rgba(23, 23, 37, 1);
+}
+
+button::after {
+	border: none;
+	background-color: none;
+}
+
+button {
+	position: relative;
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+	padding-left: 0px;
+	padding-right: 0px;
+	box-sizing: border-box;
+	text-decoration: none;
+	line-height: 1.35;
+	overflow: hidden;
+	color: #666666;
+	/* background-color: #fff; */
+	background-color: rgba(255, 255, 255, 0) !important;
+	width: 100%;
+	height: 100%;
+}
+
+.usermain {
+	background: #ffffff;
+	/* color: #fff; */
+	margin-top: 20rpx;
+	/* 为固定导航栏留出空间 */
+}
+
+.usermain-item {
+	display: flex;
+	justify-content: space-between;
+	margin: 0 40rpx;
+	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 {
+	/* padding: 0; */
+}
+
+.cu-form-group {
+	padding: 0;
+	background: #ffffff;
+	text-align: right;
+}
+
+.cu-form-group input {
+	background: #ffffff;
+	font-size: 28rpx;
+	/* color: #fff; */
+
+}
+
+/* 姓名字段样式 - 参考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: 40rpx;
+	padding-bottom: 40rpx;
+}
+
+.footer-btn .usermain-btn {
+	color: rgba(255, 255, 255, 1);
+	background: rgba(1, 107, 246, 1);
+	text-align: center;
+	width: 90%;
+	height: 80rpx;
+	font-size: 32rpx;
+	line-height: 80rpx;
+	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;
-		letter-spacing: 0.5%;
 	}
 
-	.modify-link {
-		color: rgba(24, 144, 255, 1);
+	text {
+		color: rgba(23, 23, 37, 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: 40rpx;
-		padding-bottom: 40rpx;
-	}
-
-	.footer-btn .usermain-btn {
-		color: rgba(255, 255, 255, 1);
-		background: rgba(1, 107, 246, 1);
-		text-align: center;
-		width: 90%;
-		height: 80rpx;
-		font-size: 32rpx;
-		line-height: 80rpx;
-		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);
 	}
+}
+
+.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>