|
@@ -4,12 +4,11 @@
|
|
|
<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">
|
|
|
- <imag e 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')">
|
|
|
- </imag>
|
|
|
+ <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">
|
|
@@ -23,12 +22,23 @@
|
|
|
</button>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ <view class="sign-card">
|
|
|
+ <image class="sign-card__bg-img"
|
|
|
+ src="https://seal-img.nos-jd.163yun.com/obj/w5rCgMKVw6DCmGzCmsK-/60938586057/a6c7/0b14/00ec/e47d6346bcc8c5764ca7a85c4da7736f.png" />
|
|
|
+ <view class="sign-card__content">
|
|
|
+ <view class="sign-card__info">
|
|
|
|
|
|
+ <view class="sign-card__title">
|
|
|
+ <image class="sign-card__icon" :src="sheep.$url.static('/static/user/qd.png')" />
|
|
|
+ <text class="sign-card__text">每日签到</text>
|
|
|
+ </view>
|
|
|
+ <text class="sign-card__desc">积分可在购物时抵扣现金结算</text>
|
|
|
+ </view>
|
|
|
+ <text class="sign-card__btn" @tap="sheep.$router.go('/pages/app/sign')">立即签到</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
<!-- 提示绑定手机号 先隐藏 yudao 需要再修改 -->
|
|
|
- <view
|
|
|
- class="bind-mobile-box ss-flex ss-row-between ss-col-center"
|
|
|
- v-if="isLogin && !userInfo.mobile"
|
|
|
- >
|
|
|
+ <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>
|
|
@@ -39,147 +49,227 @@
|
|
|
</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 } 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');
|
|
|
- }
|
|
|
+/**
|
|
|
+ * 用户卡片
|
|
|
+ *
|
|
|
+ * @property {Number} leftSpace - 容器左间距
|
|
|
+ * @property {Number} rightSpace - 容器右间距
|
|
|
+ *
|
|
|
+ * @property {String} avatar - 头像
|
|
|
+ * @property {String} nickname - 昵称
|
|
|
+ * @property {String} vip - 等级
|
|
|
+ * @property {String} collectNum - 收藏数
|
|
|
+ * @property {String} likeNum - 点赞数
|
|
|
+ *
|
|
|
+ *
|
|
|
+ */
|
|
|
+import { computed } 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%;
|
|
|
- }
|
|
|
- }
|
|
|
+.sign-card {
|
|
|
+ position: relative;
|
|
|
+ width: calc(100% - 32px);
|
|
|
+ height: auto;
|
|
|
+ overflow: hidden;
|
|
|
+ border-radius: 8px;
|
|
|
+ background: linear-gradient(268.29deg, #2d3057 5.97%, #3f446f 87.85%);
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: flex-start;
|
|
|
+ min-height: 85px;
|
|
|
+ margin: 0 16px;
|
|
|
|
|
|
- .nick-name {
|
|
|
- font-size: 34rpx;
|
|
|
- font-weight: 400;
|
|
|
- color: #333333;
|
|
|
- line-height: normal;
|
|
|
- }
|
|
|
+ &__bg-img {
|
|
|
+ width: 230px;
|
|
|
+ height: 225px;
|
|
|
+ position: absolute;
|
|
|
+ transform: rotate(34deg);
|
|
|
+ object-fit: cover;
|
|
|
+ right: -124px;
|
|
|
+ bottom: -131px;
|
|
|
+ }
|
|
|
|
|
|
- .vip-img {
|
|
|
- width: 30rpx;
|
|
|
- height: 30rpx;
|
|
|
- }
|
|
|
+ &__content {
|
|
|
+ position: absolute;
|
|
|
+ top: 6px;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 83px;
|
|
|
+ width: max-content;
|
|
|
+ height: max-content;
|
|
|
+ margin: auto;
|
|
|
+ }
|
|
|
|
|
|
- .sicon-qrcode {
|
|
|
- font-size: 40rpx;
|
|
|
- }
|
|
|
+ &__info {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 8px;
|
|
|
}
|
|
|
|
|
|
- .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;
|
|
|
- }
|
|
|
+ &__desc {
|
|
|
+ font-size: 12px;
|
|
|
+ font-family: 'PingFang SC';
|
|
|
+ line-height: 17px;
|
|
|
+ color: rgba(255, 255, 255, 0.4);
|
|
|
+ white-space: pre;
|
|
|
+ }
|
|
|
|
|
|
- .mobile-title {
|
|
|
- font-size: 24rpx;
|
|
|
- font-weight: 500;
|
|
|
- color: #ff690d;
|
|
|
- }
|
|
|
+ &__title {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 6px;
|
|
|
+ font-size: 16px;
|
|
|
+ font-family: 'PingFang SC';
|
|
|
+ line-height: 22px;
|
|
|
+ color: #ffffff;
|
|
|
+ white-space: pre;
|
|
|
+ }
|
|
|
|
|
|
- .bind-btn {
|
|
|
- width: 100rpx;
|
|
|
- height: 50rpx;
|
|
|
- background: #ff6100;
|
|
|
- border-radius: 25rpx;
|
|
|
- font-size: 24rpx;
|
|
|
- font-weight: 500;
|
|
|
- color: #ffffff;
|
|
|
+ &__icon {
|
|
|
+ width: 25px;
|
|
|
+ height: 25px;
|
|
|
+ // margin: -34px 0 4px 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ &__btn {
|
|
|
+ padding: 4px 12px;
|
|
|
+ border-radius: 286px;
|
|
|
+ background-color: #ffffff;
|
|
|
+ font-size: 12px;
|
|
|
+ font-family: 'PingFang SC';
|
|
|
+ line-height: 16px;
|
|
|
+ color: #31345c;
|
|
|
+ white-space: pre;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.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>
|