| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 | 
							- <template>
 
- 	<view class="common_page" :style="{'height':h+'px', 'padding-top':mt+'px'}">
 
- 		<cus-header title="个人资料" bgColor="#FFFFFF"></cus-header>
 
- 		<div class="form">
 
- 			<div class="avatar">
 
- 				<div class="title">头像</div>
 
- 				<div class="imgbox">
 
- 					<up-upload
 
- 						:fileList="fileList"
 
- 						@afterRead="afterRead"
 
- 						@delete="deletePic"
 
- 						multiple
 
- 						:maxCount="1"
 
- 						width="122rpx"
 
- 						height="122rpx"
 
- 					>
 
- 						<image src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/09/29/b04d6b0e-0d30-4043-a2b1-d639e15e2aac.png" 
 
- 						mode="widthFix" style="width: 122rpx;height: 122rpx;"></image>
 
- 					</up-upload>
 
- 				</div>
 
- 			</div>
 
- 			<div class="item adfacjb">
 
- 				<div class="left">用户名</div>
 
- 				<div class="right">
 
- 					<up-input v-model="userInfo.username" border="none" placeholder="请输入用户名"></up-input>
 
- 				</div>
 
- 			</div>
 
- 			<div class="item adfacjb">
 
- 				<div class="left">手机号码</div>
 
- 				<div class="right">
 
- 					<up-input v-model="userInfo.phone" border="none" placeholder="请输入手机号码"></up-input>
 
- 				</div>
 
- 			</div>
 
- 			<div class="item adfacjb">
 
- 				<div class="left">家庭公益名称</div>
 
- 				<div class="right">
 
- 					<up-input v-model="userInfo.nonprofitName" border="none" placeholder="请输入家庭公益名称"></up-input>
 
- 				</div>
 
- 			</div>
 
- 			<div class="item adfacjb">
 
- 				<div class="left">家庭公益口号</div>
 
- 				<div class="right">
 
- 					<up-input v-model="userInfo.nonprofitNo" border="none" placeholder="请输入家庭公益口号"></up-input>
 
- 				</div>
 
- 			</div>
 
- 		</div>
 
- 		<div class="btn" @tap="save">保存</div>
 
- 	</view>
 
- </template>
 
- <script setup name="">
 
- 	import CusHeader from '@/components/CusHeader/index.vue'
 
- 	import { ref, onMounted, getCurrentInstance } from 'vue'
 
- 	const { proxy } = getCurrentInstance()
 
- 	
 
- 	const fileList = ref([])
 
- 	const userInfo = ref({
 
- 		avatar:'',
 
- 		username:'',
 
- 		phone:'',
 
- 		nonprofitName:'',
 
- 		nonprofitNo:''
 
- 	})
 
- 	
 
- 	const save = () => {
 
- 		if(!userInfo.value.avatar) return proxy.$showToast('请上传用户头像')
 
- 		if(!userInfo.value.username) return proxy.$showToast('请输入用户名')
 
- 		if(!proxy.$reg.mobile(userInfo.value.phone)) return proxy.$showToast('请输入正确的手机号')
 
- 		if(!userInfo.value.nonprofitName) return proxy.$showToast('请输入家庭公益名称')
 
- 		if(!userInfo.value.nonprofitNo) return proxy.$showToast('请输入家庭公益口号')
 
- 		console.log(userInfo.value,'userInfo');
 
- 	}
 
- 	
 
- 	const deletePic = (event) => {
 
- 	  fileList.value.splice(event.index, 1);
 
- 	};
 
- 	
 
- 	// 新增图片
 
- 	const afterRead = async (event) => {
 
- 	  // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
 
- 	  let lists = [].concat(event.file);
 
- 	  let fileListLen = fileList.value.length;
 
- 	  lists.map((item) => {
 
- 	    fileList.value.push({
 
- 	      ...item,
 
- 	      status: 'uploading',
 
- 	      message: '上传中',
 
- 	    });
 
- 	  });
 
- 	  for (let i = 0; i < lists.length; i++) {
 
- 	    const result = await uploadFilePromise(lists[i].url);
 
- 	    let item = fileList.value[fileListLen];
 
- 	    fileList.value.splice(fileListLen, 1, {
 
- 	      ...item,
 
- 	      status: 'success',
 
- 	      message: '',
 
- 	      url: result,
 
- 	    });
 
- 	    fileListLen++;
 
- 	  }
 
- 	};
 
- 	
 
- 	const uploadFilePromise = (url) => {
 
- 	  return new Promise((resolve, reject) => {
 
- 	    let a = uni.uploadFile({
 
- 	      url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
 
- 	      filePath: url,
 
- 	      name: 'file',
 
- 	      formData: {
 
- 	        user: 'test',
 
- 	      },
 
- 	      success: (res) => {
 
- 	        setTimeout(() => {
 
- 	          resolve(res.data.data);
 
- 	        }, 1000);
 
- 	      },
 
- 	    });
 
- 	  });
 
- 	};
 
- 	
 
- 	onMounted(()=>{
 
- 		
 
- 	})
 
- </script>
 
- <style scoped lang="scss">
 
- 	::v-deep .u-input__content input{
 
- 		font-family: PingFangSC, PingFang SC;
 
- 		font-weight: 400;
 
- 		font-size: 30rpx !important;
 
- 		color: #252525 !important;
 
- 		line-height: 42rpx !important;
 
- 		text-align: right !important;
 
- 	}
 
- 	
 
- 	.common_page{
 
- 		.form{
 
- 			background: #FFFFFF;
 
- 			border-radius: 24rpx;
 
- 			padding: 14rpx 22rpx 0;
 
- 			margin-top: 20rpx;
 
- 			
 
- 			.avatar{
 
- 				.title{
 
- 					font-family: PingFang-SC, PingFang-SC;
 
- 					font-weight: bold;
 
- 					font-size: 30rpx;
 
- 					color: #252525;
 
- 					line-height: 42rpx;
 
- 				}
 
- 				.imgbox{
 
- 					padding: 34rpx 0 47rpx;
 
- 				}
 
- 				border-bottom: 1rpx solid #E6E6E6;
 
- 			}
 
- 			.item{
 
- 				height: 110rpx;
 
- 				box-shadow: inset 0rpx -1rpx 0rpx 0rpx #E6E6E6;
 
- 				.left{
 
- 					width: 200rpx;
 
- 					font-family: PingFang-SC, PingFang-SC;
 
- 					font-weight: bold;
 
- 					font-size: 30rpx;
 
- 					color: #252525;
 
- 					line-height: 42rpx;
 
- 					padding-right: 20rpx;
 
- 					box-sizing: border-box;
 
- 				}
 
- 				.right{
 
- 					width: calc(100% - 200rpx);
 
- 				}
 
- 			}
 
- 		}
 
- 		
 
- 		.btn{
 
- 			width: calc(100% - 80rpx);
 
- 			height: 90rpx;
 
- 			background: #B7F358;
 
- 			border-radius: 45rpx;
 
- 			font-family: PingFang-SC, PingFang-SC;
 
- 			font-weight: bold;
 
- 			font-size: 32rpx;
 
- 			color: #151B29;
 
- 			line-height: 90rpx;
 
- 			text-align: center;
 
- 			letter-spacing: 2rpx;
 
- 			position: fixed;
 
- 			left: 40rpx;
 
- 			bottom: 64rpx;
 
- 		}
 
- 	}
 
- </style>
 
 
  |