| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 | <!-- 装修用户组件:用户卡片 --><template>	<view class="ss-user-info-wrap ss-p-t-50" :style="[bgStyle, { marginLeft: `${data.space}px` }]">		<view class="ss-flex ss-col-center ss-row-between ss-m-b-20">			<view class="left-box ss-flex ss-col-center ss-m-l-36">				<view class="avatar-box ss-m-r-24">					<image class="avatar-img" :src="              isLogin                ? sheep.$url.cdn(userInfo.avatar)                : sheep.$url.static('/static/img/shop/default_avatar.png')            " mode="aspectFill" @tap="sheep.$router.go('/pages/user/info')"></image>				</view>				<view>					<view class="nickname-box ss-flex ss-col-center">						<view class="nick-name ss-m-r-20">{{ userInfo?.nickname || nickname }}</view>					</view>				</view>			</view>			<view class="right-box ss-m-r-52">				<button class="ss-reset-button" @tap="showShareModal">					<text class="sicon-qrcode"></text>				</button>			</view>		</view>		<!-- 提示绑定手机号 先隐藏 yudao 需要再修改 -->		<view      class="bind-mobile-box ss-flex ss-row-between ss-col-center"      v-if="isLogin && !userInfo.mobile"    >      <view class="ss-flex">        <text class="cicon-mobile-o" />        <view class="mobile-title ss-m-l-20"> 点击绑定手机号确保账户安全 </view>      </view>      <button class="ss-reset-button bind-btn" @tap="onBind">去绑定</button>    </view>	</view></template><script setup>	/**	 * 用户卡片	 *	 * @property {Number} leftSpace 									- 容器左间距	 * @property {Number} rightSpace 									- 容器右间距	 *	 * @property {String} avatar 					- 头像	 * @property {String} nickname 					- 昵称	 * @property {String} vip		  				- 等级	 * @property {String} collectNum 				- 收藏数	 * @property {String} likeNum 					- 点赞数	 *	 *	 */	import {		computed,		reactive	} from 'vue';	import sheep from '@/sheep';	import {		showShareModal,		showAuthModal	} from '@/sheep/hooks/useModal';	// 用户信息	const userInfo = computed(() => sheep.$store('user').userInfo);	console.log('用户信息', userInfo)	// 是否登录	const isLogin = computed(() => sheep.$store('user').isLogin);	// 接收参数	const props = defineProps({		// 装修数据		data: {		  type: Object,		  default: () => ({}),		},		// 装修样式		styles: {		  type: Object,		  default: () => ({}),		},		// 头像		avatar: {			type: String,			default: '',		},		nickname: {			type: String,			default: '请先登录',		},		vip: {			type: [String, Number],			default: '1',		},		collectNum: {			type: [String, Number],			default: '1',		},		likeNum: {			type: [String, Number],			default: '1',		},	});		// 设置背景样式	const bgStyle = computed(() => {	  // 直接从 props.styles 解构	  const { bgType, bgImg, bgColor } = props.styles; 		  // 根据 bgType 返回相应的样式	  return {		background: bgType === 'img'			? `url(${bgImg}) no-repeat top center / 100% 100%`			: bgColor		};	});	// 绑定手机号	function onBind() {		showAuthModal('changeMobile');	}</script><style lang="scss" scoped>	.ss-user-info-wrap {		box-sizing: border-box;		.avatar-box {			width: 100rpx;			height: 100rpx;			border-radius: 50%;			overflow: hidden;			.avatar-img {				width: 100%;				height: 100%;			}		}		.nick-name {			font-size: 34rpx;			font-weight: 400;			color: #333333;			line-height: normal;		}		.vip-img {			width: 30rpx;			height: 30rpx;		}		.sicon-qrcode {			font-size: 40rpx;		}	}	.bind-mobile-box {		width: 100%;		height: 84rpx;		padding: 0 34rpx 0 44rpx;		box-sizing: border-box;		background: #ffffff;		box-shadow: 0px -8rpx 9rpx 0px rgba(#e0e0e0, 0.3);		.cicon-mobile-o {			font-size: 30rpx;			color: #ff690d;		}		.mobile-title {			font-size: 24rpx;			font-weight: 500;			color: #ff690d;		}		.bind-btn {			width: 100rpx;			height: 50rpx;			background: #ff6100;			border-radius: 25rpx;			font-size: 24rpx;			font-weight: 500;			color: #ffffff;		}	}</style>
 |