|
|
@ -1,13 +1,10 @@ |
|
|
|
<template> |
|
|
|
<view class="profile-container"> |
|
|
|
<view |
|
|
|
class="user-top" |
|
|
|
:style="{ |
|
|
|
<view class="user-top" :style="{ |
|
|
|
backgroundImage: `url(${showImg( |
|
|
|
'/uploads/20250728/4ad18fba010760a527d0cf5e24bcf467.png' |
|
|
|
)})`, |
|
|
|
}" |
|
|
|
> |
|
|
|
}"> |
|
|
|
<!-- 状态栏占位 --> |
|
|
|
<view class="status-bar-placeholder"></view> |
|
|
|
<!-- 顶部导航 --> |
|
|
@ -22,24 +19,13 @@ |
|
|
|
<!-- 用户信息区域 --> |
|
|
|
<view class="user-section" @click="gotoProfile"> |
|
|
|
<view class="user-avatar"> |
|
|
|
<image |
|
|
|
:src="userInfo.avatar ? showImg(userInfo.avatar) : defaultAvatar" |
|
|
|
mode="aspectFill" |
|
|
|
class="avatar-img" |
|
|
|
></image> |
|
|
|
<image :src="userInfo.avatar ? showImg(userInfo.avatar) : defaultAvatar" mode="aspectFill" |
|
|
|
class="avatar-img"></image> |
|
|
|
</view> |
|
|
|
<view class="user-info"> |
|
|
|
<view class="username" |
|
|
|
>{{ userInfo.nickname || "去登录" |
|
|
|
}}<uni-icons |
|
|
|
type="right" |
|
|
|
size="16" |
|
|
|
style="margin-left: 10rpx" |
|
|
|
color="#ffffff" |
|
|
|
/></view> |
|
|
|
<view class="user-id" v-if="userInfo.redBookId" |
|
|
|
>ID:{{ userInfo.redBookId || "123456" }}</view |
|
|
|
> |
|
|
|
<view class="username">{{ userInfo.nickname || "去登录" |
|
|
|
}}<uni-icons type="right" size="16" style="margin-left: 10rpx" color="#ffffff" /></view> |
|
|
|
<view class="user-id" v-if="userInfo.redBookId">ID:{{ userInfo.redBookId || "123456" }}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
@ -81,17 +67,12 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="action-box"> |
|
|
|
<image |
|
|
|
@click="showExchangePopup" |
|
|
|
:src="showImg('/uploads/20250822/7f18265ca351dfd2d6477322b17c1751.png')" |
|
|
|
style="width: 233rpx; height: 43rpx" |
|
|
|
></image> |
|
|
|
<image @click="showExchangePopup" :src="showImg('/uploads/20250822/7f18265ca351dfd2d6477322b17c1751.png')" |
|
|
|
style="width: 233rpx; height: 43rpx"></image> |
|
|
|
<view class="column-divider"></view> |
|
|
|
<image |
|
|
|
@click="showActivateAgentPopup" |
|
|
|
<image @click="showActivateAgentPopup" |
|
|
|
:src="showImg('/uploads/20250822/53718d0d8a655ac33d7197ad11a32f98.png')" |
|
|
|
style="width: 200rpx; height: 43rpx" |
|
|
|
></image> |
|
|
|
style="width: 200rpx; height: 43rpx"></image> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 数字资产权益 --> |
|
|
@ -103,33 +84,17 @@ |
|
|
|
</view> |
|
|
|
<!-- 有数据时显示滑动卡片 --> |
|
|
|
<view v-if="assetList.length > 0" class="asset-scroll-container"> |
|
|
|
<scroll-view |
|
|
|
class="asset-scroll" |
|
|
|
scroll-x="true" |
|
|
|
:show-scrollbar="false" |
|
|
|
:enhanced="true" |
|
|
|
> |
|
|
|
<scroll-view class="asset-scroll" scroll-x="true" :show-scrollbar="false" :enhanced="true"> |
|
|
|
<view class="asset-cards"> |
|
|
|
<view |
|
|
|
class="asset-card" |
|
|
|
v-for="(asset, index) in assetList" |
|
|
|
:key="index" |
|
|
|
@click="handleAction(asset)" |
|
|
|
> |
|
|
|
<view class="asset-card" v-for="(asset, index) in assetList" :key="index" |
|
|
|
@click="handleAction(asset)"> |
|
|
|
<view class="asset-card-wrapper"> |
|
|
|
<image |
|
|
|
:src="showImgJdsz(asset.image)" |
|
|
|
mode="aspectFill" |
|
|
|
class="asset-img" |
|
|
|
></image> |
|
|
|
<image :src="showImgJdsz(asset.image)" mode="aspectFill" class="asset-img"></image> |
|
|
|
<view class="asset-overlay"> |
|
|
|
<view class="asset-badge">{{ asset.badge }}</view> |
|
|
|
<view class="asset-name">{{ asset.name }}</view> |
|
|
|
<view class="asset-desc">{{ asset.desc }}</view> |
|
|
|
<view |
|
|
|
class="asset-action" |
|
|
|
style="flex-direction: row; padding: 20rpx" |
|
|
|
> |
|
|
|
<view class="asset-action" style="flex-direction: row; padding: 20rpx"> |
|
|
|
<text class="action-text-order">{{ |
|
|
|
asset.actionText |
|
|
|
}}</text> |
|
|
@ -144,32 +109,33 @@ |
|
|
|
|
|
|
|
<!-- 无数据时显示原来的图片风格 --> |
|
|
|
<view v-else class="asset-card-old"> |
|
|
|
<image |
|
|
|
@click="handleAssetAction('待使用')" |
|
|
|
:src=" |
|
|
|
<image @click="handleAssetAction('待使用')" :src=" |
|
|
|
showImg('/uploads/20250729/42598a2dcf4c9a6f8c6e122e54b65c4f.png') |
|
|
|
" |
|
|
|
mode="aspectFill" |
|
|
|
class="digital-img" |
|
|
|
></image> |
|
|
|
" mode="aspectFill" class="digital-img"></image> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 底部操作按钮 --> |
|
|
|
<view class="goods-actions"> |
|
|
|
<view class="goods-action" @click="handleAssetAction('待使用')"> |
|
|
|
<uni-badge size="small" :text="1" absolute="rightTop" > |
|
|
|
<uni-badge size="small" :text="orderStatus&&orderStatus[1].orderQuantity" absolute="rightTop"> |
|
|
|
<text>待使用</text> |
|
|
|
</uni-badge> |
|
|
|
|
|
|
|
</view> |
|
|
|
<view class="goods-action" @click="handleAssetAction('待收货')"> |
|
|
|
<uni-badge size="small" :text="orderStatus&&orderStatus[2].orderQuantity" absolute="rightTop"> |
|
|
|
<text>待收货</text> |
|
|
|
</uni-badge> |
|
|
|
</view> |
|
|
|
<view class="goods-action" @click="handleAssetAction('已完成')"> |
|
|
|
<uni-badge size="small" :text="orderStatus&&orderStatus[3].orderQuantity" absolute="rightTop"> |
|
|
|
<text>已完成</text> |
|
|
|
</uni-badge> |
|
|
|
</view> |
|
|
|
<view class="goods-action" @click="handleAssetAction('售后/退款')"> |
|
|
|
<uni-badge size="small" :text="orderStatus&&orderStatus[4].orderQuantity" absolute="rightTop"> |
|
|
|
<text>售后/退款</text> |
|
|
|
</uni-badge> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -177,13 +143,9 @@ |
|
|
|
<!-- 有感商品 --> |
|
|
|
<view class="feeling-goods"> |
|
|
|
<view class="goods-card"> |
|
|
|
<image |
|
|
|
:src=" |
|
|
|
<image :src=" |
|
|
|
showImg('/uploads/20250729/a010feb51e3f195563fb440f9235cc8b.png') |
|
|
|
" |
|
|
|
mode="aspectFill" |
|
|
|
class="digital-img" |
|
|
|
></image> |
|
|
|
" mode="aspectFill" class="digital-img"></image> |
|
|
|
<view class="goods-actions"> |
|
|
|
<view class="goods-action" @click="handleGoodsAction('购物车')"> |
|
|
|
<text>购物车</text> |
|
|
@ -209,20 +171,14 @@ |
|
|
|
<view class="divider-line"></view> |
|
|
|
</view> |
|
|
|
<!-- 有数据时显示 --> |
|
|
|
<view |
|
|
|
class="memorial-cards" |
|
|
|
v-if="memorialItems.length > 0" |
|
|
|
:class="{ 'single-item': memorialItems.length === 1 }" |
|
|
|
> |
|
|
|
<view class="memorial-cards" v-if="memorialItems.length > 0" |
|
|
|
:class="{ 'single-item': memorialItems.length === 1 }"> |
|
|
|
<!-- 单条数据特殊展示 --> |
|
|
|
<template v-if="memorialItems.length === 1"> |
|
|
|
<view class="memorial-card-single" @click="handleMemorialClick(0)"> |
|
|
|
<view class="single-card-wrapper"> |
|
|
|
<image |
|
|
|
:src="showImg(memorialItems[0].goodsImg)" |
|
|
|
mode="aspectFill" |
|
|
|
class="memorial-img-single" |
|
|
|
></image> |
|
|
|
<image :src="showImg(memorialItems[0].goodsImg)" mode="aspectFill" |
|
|
|
class="memorial-img-single"></image> |
|
|
|
<view class="single-overlay"> |
|
|
|
<view class="single-badge">专属纪念册</view> |
|
|
|
<view class="single-title">{{ |
|
|
@ -239,17 +195,9 @@ |
|
|
|
</template> |
|
|
|
<!-- 多条数据正常展示 --> |
|
|
|
<template v-else> |
|
|
|
<view |
|
|
|
class="memorial-card" |
|
|
|
v-for="(item, index) in memorialItems" |
|
|
|
:key="index" |
|
|
|
@click="handleMemorialClick(index)" |
|
|
|
> |
|
|
|
<image |
|
|
|
:src="showImg(item.goodsImg)" |
|
|
|
mode="aspectFill" |
|
|
|
class="memorial-img" |
|
|
|
></image> |
|
|
|
<view class="memorial-card" v-for="(item, index) in memorialItems" :key="index" |
|
|
|
@click="handleMemorialClick(index)"> |
|
|
|
<image :src="showImg(item.goodsImg)" mode="aspectFill" class="memorial-img"></image> |
|
|
|
<view class="memorial-info"> |
|
|
|
<text class="memorial-title">{{ |
|
|
|
item.goodsTitle || "数字资产纪念册" |
|
|
@ -272,12 +220,7 @@ |
|
|
|
|
|
|
|
<!-- 底部菜单 --> |
|
|
|
<view class="bottom-menu"> |
|
|
|
<view |
|
|
|
class="menu-item" |
|
|
|
v-for="(item, index) in menuItems" |
|
|
|
:key="index" |
|
|
|
@click="handleMenuClick(item)" |
|
|
|
> |
|
|
|
<view class="menu-item" v-for="(item, index) in menuItems" :key="index" @click="handleMenuClick(item)"> |
|
|
|
<text>{{ item.title }}</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -298,11 +241,7 @@ |
|
|
|
<view class="popup-content"> |
|
|
|
<view class="input-section"> |
|
|
|
<text class="input-label">请输入兑换码</text> |
|
|
|
<input |
|
|
|
class="exchange-input" |
|
|
|
v-model="exchangeCode" |
|
|
|
placeholder="请输入兑换码" |
|
|
|
/> |
|
|
|
<input class="exchange-input" v-model="exchangeCode" placeholder="请输入兑换码" /> |
|
|
|
</view> |
|
|
|
<view class="popup-actions"> |
|
|
|
<button class="cancel-btn" @click="closeExchangePopup">取消</button> |
|
|
@ -313,12 +252,8 @@ |
|
|
|
<view class="popup-actions-bottom"> |
|
|
|
<view class="" style="color: #77f3f9"> 如何查找兑换码 </view> |
|
|
|
<view class=""> |
|
|
|
前往「君到苏州」平台<text style="color: #77f3f9; margin: 0 10rpx" |
|
|
|
>>></text |
|
|
|
> |
|
|
|
【我的】→【权益订单】<text style="color: #77f3f9; margin: 0 10rpx" |
|
|
|
>>></text |
|
|
|
>复制权益码 |
|
|
|
前往「君到苏州」平台<text style="color: #77f3f9; margin: 0 10rpx">>></text> |
|
|
|
【我的】→【权益订单】<text style="color: #77f3f9; margin: 0 10rpx">>></text>复制权益码 |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -341,15 +276,13 @@ export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
userInfo: {}, |
|
|
|
defaultAvatar: |
|
|
|
"https://changshu.js-dyyj.com/uploads/20250326/516242619f0772bee371a60684618c01.png", |
|
|
|
defaultAvatar: "https://changshu.js-dyyj.com/uploads/20250326/516242619f0772bee371a60684618c01.png", |
|
|
|
userStats: { |
|
|
|
following: "140", |
|
|
|
followers: "2462", |
|
|
|
likes: "5.4万", |
|
|
|
}, |
|
|
|
menuItems: [ |
|
|
|
{ |
|
|
|
menuItems: [{ |
|
|
|
title: "账号与安全", |
|
|
|
icon: "🔒", |
|
|
|
}, |
|
|
@ -389,8 +322,7 @@ export default { |
|
|
|
this.userInfo = |
|
|
|
(uni.getStorageSync("userInfo") && |
|
|
|
JSON.parse(uni.getStorageSync("userInfo"))) || |
|
|
|
this.$store.state.user.userInfo || |
|
|
|
{}; |
|
|
|
this.$store.state.user.userInfo || {}; |
|
|
|
if (this.userInfo && this.userInfo.token) { |
|
|
|
this.getListIp(); |
|
|
|
this.getOrderChildList(); |
|
|
@ -408,16 +340,13 @@ export default { |
|
|
|
}, |
|
|
|
getAgentList() { |
|
|
|
this.Post({}, "/framework/agent/purchaseList", "DES").then((res) => { |
|
|
|
this.agentList = [ |
|
|
|
{ |
|
|
|
headImage: |
|
|
|
"https://epic.js-dyyj.com/uploads/20250728/d27ef6e6c26877da7775664fed376c6f.png", |
|
|
|
this.agentList = [{ |
|
|
|
headImage: "https://epic.js-dyyj.com/uploads/20250728/d27ef6e6c26877da7775664fed376c6f.png", |
|
|
|
name: '文徵明', |
|
|
|
status: 0 |
|
|
|
}, |
|
|
|
{ |
|
|
|
headImage: |
|
|
|
"https://epic.js-dyyj.com/uploads/20250728/d7bf0dd2f3f272afba687b525a7c575c.png", |
|
|
|
headImage: "https://epic.js-dyyj.com/uploads/20250728/d7bf0dd2f3f272afba687b525a7c575c.png", |
|
|
|
name: '颜真卿', |
|
|
|
status: 1 |
|
|
|
}, |
|
|
@ -455,23 +384,20 @@ export default { |
|
|
|
if (res.data && res.data.length > 0) { |
|
|
|
// 将接口返回的数据转换为assetList格式 |
|
|
|
this.assetList = res.data.map((item) => ({ |
|
|
|
image: |
|
|
|
item.goodsImg || |
|
|
|
image: item.goodsImg || |
|
|
|
"/uploads/20250729/42598a2dcf4c9a6f8c6e122e54b65c4f.png", |
|
|
|
badge: "待使用", |
|
|
|
name: item.goodsTitle || "数字资产权益", |
|
|
|
desc: |
|
|
|
item.type == 1 |
|
|
|
? "IP数字资产" |
|
|
|
: item.type == 2 |
|
|
|
? "IP周边" |
|
|
|
: item.skuName, |
|
|
|
actionText: |
|
|
|
item.type == 1 |
|
|
|
? "去查看" |
|
|
|
: item.type == 2 |
|
|
|
? "去预约" |
|
|
|
: "去核销", |
|
|
|
desc: item.type == 1 ? |
|
|
|
"IP数字资产" : |
|
|
|
item.type == 2 ? |
|
|
|
"IP周边" : |
|
|
|
item.skuName, |
|
|
|
actionText: item.type == 1 ? |
|
|
|
"去查看" : |
|
|
|
item.type == 2 ? |
|
|
|
"去预约" : |
|
|
|
"去核销", |
|
|
|
status: "待使用", |
|
|
|
...item, // 保留原始数据 |
|
|
|
})); |
|
|
@ -545,8 +471,7 @@ export default { |
|
|
|
case "帮助与客服": |
|
|
|
uni.showModal({ |
|
|
|
title: "客服电话", |
|
|
|
content: |
|
|
|
"0515-69186109\n服务时间:周一至周五\n9:00-12:00,13:00-18:00", |
|
|
|
content: "0515-69186109\n服务时间:周一至周五\n9:00-12:00,13:00-18:00", |
|
|
|
confirmText: "拨打", |
|
|
|
success: (res) => { |
|
|
|
if (res.confirm) { |
|
|
@ -696,8 +621,7 @@ export default { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
this.Post( |
|
|
|
{ |
|
|
|
this.Post({ |
|
|
|
activeCode: this.exchangeCode.trim(), |
|
|
|
}, |
|
|
|
"/framework/order/active", |
|
|
@ -1022,8 +946,7 @@ view { |
|
|
|
font-weight: 500; |
|
|
|
} |
|
|
|
|
|
|
|
.asset-scroll-container { |
|
|
|
} |
|
|
|
.asset-scroll-container {} |
|
|
|
|
|
|
|
.asset-scroll { |
|
|
|
width: 100%; |
|
|
@ -1149,6 +1072,7 @@ view { |
|
|
|
flex-shrink: 0; |
|
|
|
margin-left: 8rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.action-arrow-order { |
|
|
|
font-size: 26rpx; |
|
|
|
font-weight: bold; |
|
|
@ -1572,6 +1496,7 @@ view { |
|
|
|
background: #77f3f9; |
|
|
|
color: #000000; |
|
|
|
} |
|
|
|
|
|
|
|
.column-divider { |
|
|
|
width: 2rpx; |
|
|
|
height: 60rpx; |
|
|
@ -1579,6 +1504,7 @@ view { |
|
|
|
margin: 35rpx 16rpx; |
|
|
|
flex-shrink: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.action-box { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|