Browse Source

样式修改

dev_des
1054425342@qq.com 2 months ago
parent
commit
d3249c5098
  1. 54
      components/ActivateAgentPopup.vue
  2. 10
      components/DynamicIsland.vue
  3. 3
      pages.json
  4. 42
      pages/index/iSoul.vue
  5. 20
      pages/index/timeShopBank.vue
  6. 4
      static/js/request.js
  7. 937
      subPackages/memorialAlbum/detail.vue

54
components/ActivateAgentPopup.vue

@ -19,7 +19,7 @@
<view class="agent-avatar">
<view class="avatar-bubble">
<image
:src="agent.avatar"
:src="agent.headImage"
mode="aspectFill"
class="avatar-img"
></image>
@ -29,8 +29,8 @@
<!-- 信息区域 -->
<view class="agent-info">
<view class="agent-name">
<text class="name-chinese">{{ agent.nameChinese }}</text>
<text class="name-pinyin">{{ agent.namePinyin }}</text>
<text class="name-chinese">{{ agent.name }}</text>
<!-- <text class="name-pinyin">{{ agent.namePinyin }}</text> -->
</view>
</view>
@ -39,10 +39,10 @@
<view
class="status-btn"
:class="
agent.status === '待激活' ? 'status-inactive' : 'status-active'
agent.status == '0' ? 'status-inactive' : 'status-active'
"
>
<text class="status-text">{{ agent.status }}</text>
<text class="status-text">{{ agent.status==1?'已激活':'待激活' }}</text>
</view>
</view>
</view>
@ -54,42 +54,10 @@
<script>
export default {
name: "ActivateAgentPopup",
props:["agentList"],
data() {
return {
agentList: [
{
id: 1,
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d27ef6e6c26877da7775664fed376c6f.png",
nameChinese: "颜真卿",
namePinyin: "YAN ZHENQING",
status: "待激活",
},
{
id: 2,
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d7bf0dd2f3f272afba687b525a7c575c.png",
nameChinese: "杜丽娘",
namePinyin: "DU LINNIANG",
status: "去使用",
},
{
id: 3,
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d27ef6e6c26877da7775664fed376c6f.png",
nameChinese: "文徵明",
namePinyin: "WEN ZHENGMING",
status: "去使用",
},
{
id: 4,
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d7bf0dd2f3f272afba687b525a7c575c.png",
nameChinese: "朵朵",
namePinyin: "DUODUO",
status: "去使用",
},
],
};
},
methods: {
@ -110,7 +78,7 @@ export default {
if (agent.status === "待激活") {
//
uni.showToast({
title: `正在激活${agent.nameChinese}...`,
title: `正在激活${agent.name}...`,
icon: "loading",
});
@ -118,21 +86,21 @@ export default {
setTimeout(() => {
agent.status = "去使用";
uni.showToast({
title: `${agent.nameChinese}激活成功!`,
title: `${agent.name}激活成功!`,
icon: "success",
});
}, 2000);
} else {
// 使
uni.showToast({
title: `正在启动${agent.nameChinese}...`,
title: `正在启动${agent.name}...`,
icon: "loading",
});
// AGENT
setTimeout(() => {
uni.showToast({
title: `${agent.nameChinese}启动成功!`,
title: `${agent.name}启动成功!`,
icon: "success",
});
}, 1500);

10
components/DynamicIsland.vue

@ -94,14 +94,16 @@
userInfo && userInfo.token ? userInfo.nickname : "用户"
}}
</view>
<view class="time-reward-label" style="margin-top: 15rpx;font-weight: bold;font-size: 24rpx;">
积分:999<text style="color: #999999;font-size: 20rpx;margin-left: 10rpx;">积分获取规则</text>
<view class="time-reward-label" style="margin-top: 15rpx;font-weight: bold;font-size: 26rpx;">
积分:999<text style="color: #999999;font-size: 22rpx;margin-left: 10rpx;">积分获取规则</text>
</view>
</view>
</view>
<view class="" style="display: flex;align-items: center;font-size: 24rpx;font-weight: bold;display: flex;align-items: center;margin-top: 20rpx;">
<view class="" style="display: flex;align-items: center;font-size: 26rpx;font-weight: bold;display: flex;align-items: center;margin-top: 20rpx;">
<view class="" style="width: 200rpx;">
时长:10H
时长:{{
userInfo && userInfo.token ? userInfo.hour+'h' : "-"
}}
</view>
<view class="">
<image style="width: 22rpx;height: 22rpx;margin-right: 15rpx;" :src="showImg('/uploads/20250822/c8ee7615823a1ffaba400a4d5746de9a.png')"></image>

3
pages.json

@ -33,7 +33,8 @@
{
"path": "pages/index/iSoul",
"style": {
"navigationStyle": "custom"
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},
{

42
pages/index/iSoul.vue

@ -66,8 +66,12 @@
</view>
<view class="stat-item">
<view class="stat-number">{{ userStats.likes || "5.4万" }}</view>
<view class="stat-label">获赞与收藏</view>
<view class="stat-label">点赞</view>
</view>
<view class="stat-item">
<view class="stat-number">{{ userStats.likes || "5.4万" }}</view>
<view class="stat-label">收藏</view>
</view>
</view>
<!-- 权益兑换入口 -->
<!-- <view class="exchange-entry" @click="showExchangePopup">
@ -279,7 +283,7 @@
<MusicControl />
<!-- 激活AGENT弹窗 -->
<ActivateAgentPopup ref="activateAgentPopup" />
<ActivateAgentPopup :agentList="agentList" ref="activateAgentPopup" />
<!-- 权益兑换弹窗 -->
<uni-popup ref="exchangePopup" type="center">
@ -341,24 +345,6 @@ export default {
followers: "2462",
likes: "5.4万",
},
agentList: [
{
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d27ef6e6c26877da7775664fed376c6f.png",
},
{
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d7bf0dd2f3f272afba687b525a7c575c.png",
},
{
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d27ef6e6c26877da7775664fed376c6f.png",
},
{
avatar:
"https://epic.js-dyyj.com/uploads/20250728/d7bf0dd2f3f272afba687b525a7c575c.png",
},
],
menuItems: [
{
title: "账号与安全",
@ -388,11 +374,11 @@ export default {
exchangeCode: "", //
memorialItems: [],
assetList: [],
agentList:[]
};
},
onLoad() {
//
console.log("iSoul页面加载完成");
},
onShow() {
this.userInfo =
@ -400,13 +386,25 @@ export default {
JSON.parse(uni.getStorageSync("userInfo"))) ||
this.$store.state.user.userInfo ||
{};
console.log(this.userInfo);
if (this.userInfo && this.userInfo.token) {
this.getListIp();
this.getOrderChildList();
this.getUserInfo();
this.getAgentList()
}
},
methods: {
getAgentList(){
this.Post({}, "/framework/agent/purchaseList", "DES").then((res) => {
this.agentList = res.data
});
},
getUserInfo() {
this.Post({}, "/framework/user/getInfo", "DES").then((res) => {
uni.setStorageSync("userInfo", JSON.stringify(res.data));
this.userInfo = res.data
});
},
getListIp() {
this.Post({}, "/framework/order/ipOrderList", "DES").then((res) => {
if (res.code == 200) {

20
pages/index/timeShopBank.vue

@ -4,7 +4,7 @@
<headerVue fixed></headerVue>
<!-- 灵动岛组件 -->
<DynamicIsland :page-id="'timeShopBank_page'" :style-type="'timeShop'" />
<DynamicIsland ref="dynamicIsland" :page-id="'timeShopBank_page'" :style-type="'timeShop'" />
<!-- Tab切换组件 -->
<view class="tab-container">
@ -137,8 +137,17 @@ export default {
},
onLoad() {
this.initializeData();
this.userInfo =
(uni.getStorageSync("userInfo") &&
JSON.parse(uni.getStorageSync("userInfo"))) ||
this.$store.state.user.userInfo ||
{};
if (this.userInfo && this.userInfo.token) {
this.getUserInfo()
}
},
//
onReachBottom() {
this.loadMoreItems();
@ -150,6 +159,15 @@ export default {
uni.$emit("pageScroll_timeShopBank_page", e.scrollTop);
},
methods: {
getUserInfo() {
this.Post({}, "/framework/user/getInfo", "DES").then((res) => {
uni.setStorageSync("userInfo", JSON.stringify(res.data));
this.userInfo = res.data
this.$nextTick(() =>{
this.$refs.dynamicIsland.getUserInfo();
})
});
},
//
getRandomItem() {
const titleType =

4
static/js/request.js

@ -7,8 +7,8 @@ const DEV_API_URL = 'https://epic.js-dyyj.com';
// const PROD_API_URL = 'https://epic.js-dyyj.com';
const PROD_API_URL = 'https://epic.new.js-dyyj.com';
const NEWAPIURL = process.env.NODE_ENV === 'development' ? DEV_API_URL : PROD_API_URL;
const DEV_API_URL_DES = 'http://192.168.124.118:8083/xcx';
// const DEV_API_URL_DES = 'https://des.js-dyyj.com/xcx';
// const DEV_API_URL_DES = 'http://192.168.124.118:8083/xcx';
const DEV_API_URL_DES = 'https://des.js-dyyj.com/xcx';
const PROD_API_URL_DES = 'https://des.js-dyyj.com/xcx';
const NEWAPIURL_DES = process.env.NODE_ENV === 'development' ? DEV_API_URL_DES : PROD_API_URL_DES;
const getToken = () => {

937
subPackages/memorialAlbum/detail.vue

@ -1,382 +1,569 @@
<template>
<view class="memorial-detail">
<!-- 轮播图区域 -->
<view class="banner-content">
<swiper class="top-banner" :circular="true" :interval="6000" :duration="800" :indicator-dots="false"
:autoplay="true" @change="swiperChange">
<swiper-item v-for="(item, index) in topBanner" :key="index">
<image class="top-banner" :src="showImg(item)" mode="aspectFill"></image>
</swiper-item>
</swiper>
<view class="dot-container">
<view :class="['dot-line', index == swiperIndex ? 'active' : '']" v-for="(item, index) in topBanner"
:key="index"></view>
</view>
<!-- 页码指示器 -->
<view class="page-indicator">
<text class="page-text">{{ swiperIndex + 1 }}/{{ topBanner.length }}</text>
</view>
</view>
<!-- 数字资产信息卡片 -->
<view class="asset-info-card">
<view class="card-header">
<text class="asset-title">{{ detailInfo.goodsName }}</text>
</view>
<view class="info-row">
<text class="info-label">发行数量</text>
<text class="info-value">{{ detailInfo.publishQuantity||0 }}</text>
</view>
<view class="divider"></view>
<view class="info-row">
<text class="info-label">数字资产所有方</text>
<text class="info-value">{{ detailInfo.ownPart||'-' }}</text>
</view>
<view class="info-row">
<text class="info-label">数字资产权利方</text>
<text class="info-value">{{ detailInfo.powerPart||'-' }}</text>
</view>
<view class="info-row">
<text class="info-label">授权品牌</text>
<text class="info-value">{{ detailInfo.authorizeBrand||'-' }}</text>
</view>
<!-- 收藏信息 -->
<view class="collection-info">
<view class="collection-header"> 收藏信息 </view>
<view class="collector-info">
<text class="collector-label">收藏者</text>
<text class="collector-name">{{ detailInfo.nickname||'--' }}</text>
<text class="collection-number">编号</text>
<text class="collection-code">{{ detailInfo.code||'--' }}</text>
<text class="collection-time-label">收藏时间</text>
<text class="collection-time">{{ detailInfo.activeTime||'--' }}</text>
</view>
</view>
</view>
<!-- 认证信息卡片 -->
<view class="cert-info-card">
<view class="cert-header"> 认证信息 </view>
<view class="cert-row">
<text class="cert-label">授权码</text>
<text class="cert-value">{{ detailInfo.activeCode||"--" }}</text>
</view>
</view>
<!-- 藏品详情卡片 -->
<view class="product-detail-card">
<view class="product-header"> 藏品详情 </view>
<view class="product-content">
<view class="" v-html="detailInfo.detailUrl">
</view>
</view>
</view>
</view>
<view class="memorial-detail">
<!-- 轮播图区域 -->
<view class="content">
<view class="banner-content">
<swiper
class="top-banner"
:circular="true"
:interval="6000"
:duration="800"
:indicator-dots="false"
:autoplay="true"
@change="swiperChange"
>
<swiper-item v-for="(item, index) in topBanner" :key="index">
<image
class="top-banner"
:src="showImg(item)"
mode="aspectFill"
></image>
</swiper-item>
</swiper>
<view class="dot-container">
<view
:class="['dot-line', index == swiperIndex ? 'active' : '']"
v-for="(item, index) in topBanner"
:key="index"
></view>
</view>
</view>
<view class="asset-title">
{{ detailInfo.goodsName }}
</view>
<!-- 发行数量胶囊 -->
<view class="issue-quantity-pill">
<text class="pill-text"
>发行数量: {{ detailInfo.publishQuantity || 0 }}</text
>
</view>
<!-- 收藏信息区域 -->
<view class="info-section">
<view
class="info-row"
style="flex-direction: row; justify-content: space-around"
>
<view class="info-item">
<text class="info-label">收藏者</text>
<text class="info-value">{{
(userInfo && userInfo.nickname) || "--"
}}</text>
</view>
<view class="info-item">
<text class="info-label">编号</text>
<text class="info-value">{{ detailInfo.code || "--" }}</text>
</view>
<view class="info-item">
<text class="info-label">收藏时间</text>
<text class="info-value">{{ detailInfo.activeTime || "--" }}</text>
</view>
</view>
</view>
<!-- 分割线 -->
<view class="section-divider"></view>
<!-- 资产权利信息区域 -->
<view class="info-section">
<view class="info-row">
<view class="info-item">
<text class="info-label">数字资产所有方</text>
<text class="info-value">{{ detailInfo.ownPart || "--" }}</text>
</view>
<view class="info-item">
<text class="info-label">数字资产权利方</text>
<text class="info-value">{{ detailInfo.powerPart || "--" }}</text>
</view>
<view class="info-item">
<text class="info-label">授权品牌</text>
<text class="info-value">{{
detailInfo.authorizeBrand || "--"
}}</text>
</view>
</view>
</view>
<!-- 分割线 -->
<view class="section-divider"></view>
<!-- 授权码和下载按钮区域 -->
<view class="auth-section">
<view class="auth-code-item">
<text class="info-label">授权码</text>
<text class="auth-code-value">{{
detailInfo.activeCode || "--"
}}</text>
</view>
<view class="download-button" @click="handleDownload">
<text class="download-text">点击下载</text>
</view>
</view>
</view>
<!-- 藏品详情卡片 -->
<view class="product-detail-card">
<view class="product-header"> 藏品详情 </view>
<view class="product-content">
<view class="" v-html="detailInfo.detailUrl"> </view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "MemorialDetail",
data() {
return {
swiperIndex: 0,
detailInfo: {
},
topBanner: []
};
},
onLoad(options) {
//
if (options.id) {
this.loadDetailInfo(options.id);
}
},
methods: {
swiperChange(e) {
this.swiperIndex = e.detail.current;
},
//
async loadDetailInfo(id) {
try {
this.Post({
orderChildId: id
}, `/framework/order/ipOrderDetail`, "DES").then((res) => {
if (res.code == 200) {
res.data.detailUrl = this.addImgStyleToHtml(res.data.detailUrl)
this.detailInfo = res.data;
this.topBanner = res.data.hdUrl.split(',')
} else {
uni.showToast({
title: res.msg,
icon: "none",
});
}
});
//
console.log("加载纪念册详情,ID:", id);
} catch (error) {
console.error("加载详情失败:", error);
uni.showToast({
title: "加载失败",
icon: "none",
});
}
},
//
previewMainImage() {
const imageUrl = this.showImg(this.detailInfo.image);
uni.previewImage({
urls: [imageUrl],
current: imageUrl,
});
},
//
showImg(img) {
if (!img) return "";
if (img.startsWith("http")) {
return img;
}
const NEWAPIURL = "https://epic.js-dyyj.com";
return `${NEWAPIURL}${img}`;
},
},
};
export default {
name: "MemorialDetail",
data() {
return {
swiperIndex: 0,
detailInfo: {},
topBanner: [],
userInfo: null,
};
},
onLoad(options) {
let userInfo = uni.getStorageSync("userInfo");
if (userInfo) {
this.userInfo = JSON.parse(userInfo);
}
//
if (options.id) {
this.loadDetailInfo(options.id);
}
},
methods: {
swiperChange(e) {
this.swiperIndex = e.detail.current;
},
//
async loadDetailInfo(id) {
try {
this.Post(
{
orderChildId: id,
},
`/framework/order/ipOrderDetail`,
"DES"
).then((res) => {
if (res.code == 200) {
res.data.detailUrl = this.addImgStyleToHtml(res.data.detailUrl);
this.detailInfo = res.data;
this.topBanner = res.data.hdUrl.split(",");
} else {
uni.showToast({
title: res.msg,
icon: "none",
});
}
});
//
console.log("加载纪念册详情,ID:", id);
} catch (error) {
console.error("加载详情失败:", error);
uni.showToast({
title: "加载失败",
icon: "none",
});
}
},
//
previewMainImage() {
const imageUrl = this.showImg(this.detailInfo.image);
uni.previewImage({
urls: [imageUrl],
current: imageUrl,
});
},
//
handleDownload() {
// URL
const imageUrl = this.topBanner[0];
console.log(imageUrl);
//
uni.downloadFile({
url: imageUrl,
success: (res) => {
console.log(res);
if (res.statusCode === 200) {
//
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
uni.showToast({
title: "图片已保存到相册",
icon: "success",
});
},
fail: (err) => {
uni.showToast({
title: "保存失败,请检查权限",
icon: "none",
});
},
});
} else {
uni.showToast({
title: "下载失败",
icon: "none",
});
}
},
fail: (err) => {
console.log(err);
uni.showToast({
title: "下载失败",
icon: "none",
});
},
});
},
},
};
</script>
<style lang="scss" scoped>
.memorial-detail {
min-height: 100vh;
background: #f8f9fa;
padding-bottom: env(safe-area-inset-bottom);
}
//
.main-image-section {
width: 100%;
height: 600rpx;
background: #f0f0f0;
display: flex;
align-items: center;
justify-content: center;
.main-image {
width: 100%;
height: 100%;
object-fit: cover;
}
}
//
.asset-info-card,
.cert-info-card,
.product-detail-card {
margin: 20rpx;
background: white;
border-radius: 16rpx;
padding: 32rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
}
//
.asset-info-card {
.card-header {
margin-bottom: 32rpx;
.asset-title {
font-size: 36rpx;
font-weight: 600;
color: #333;
line-height: 1.4;
}
}
.info-row {
display: flex;
margin-bottom: 20rpx;
align-items: flex-start;
.info-label {
font-size: 28rpx;
color: #666;
margin-right: 16rpx;
flex-shrink: 0;
}
.info-value {
font-size: 28rpx;
color: #333;
flex: 1;
}
}
.divider {
height: 1rpx;
background: #e0e0e0;
margin: 24rpx 0;
}
//
.collection-info {
margin-top: 40rpx;
padding: 32rpx;
background: #f8f9fa;
border-radius: 12rpx;
border: 2rpx solid #e0e0e0;
.collection-header {
text-align: center;
font-size: 28rpx;
color: #666;
margin-bottom: 24rpx;
font-weight: 500;
}
.collector-info {
display: grid;
grid-template-columns: auto auto;
gap: 16rpx 24rpx;
text-align: center;
.collector-label,
.collection-number,
.collection-time-label {
font-size: 24rpx;
color: #666;
}
.collector-name,
.collection-code,
.collection-time {
font-size: 26rpx;
color: #333;
font-weight: 500;
}
.collection-code {
font-family: "Courier New", monospace;
}
.collection-time {
font-family: "Courier New", monospace;
}
}
}
}
//
.cert-info-card {
.cert-header {
text-align: center;
font-size: 28rpx;
color: #666;
margin-bottom: 32rpx;
font-weight: 500;
}
.cert-row {
margin-bottom: 24rpx;
padding-bottom: 20rpx;
border-bottom: 1rpx solid #f0f0f0;
&:last-child {
margin-bottom: 0;
padding-bottom: 0;
border-bottom: none;
}
.cert-label {
display: block;
font-size: 26rpx;
color: #666;
margin-bottom: 8rpx;
}
.cert-value {
display: block;
font-size: 24rpx;
color: #333;
font-family: "Courier New", monospace;
word-break: break-all;
line-height: 1.5;
}
}
}
//
.product-detail-card {
.product-header {
text-align: center;
font-size: 28rpx;
color: #666;
margin-bottom: 32rpx;
font-weight: 500;
}
.product-content {
.product-description {
font-size: 28rpx;
color: #333;
line-height: 1.6;
}
}
}
.banner-content {
width: 100%;
height: 700rpx;
position: relative;
.top-banner {
width: 100%;
height: 100%;
}
.dot-container {
position: absolute;
bottom: 43rpx;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
left: 0;
.dot-line {
width: 52rpx;
height: 4rpx;
margin: 0 8rpx;
background: RGBA(189, 170, 173, 0.8);
&.active {
background: #94fafa;
}
}
}
.page-indicator {
position: absolute;
bottom: 20rpx;
right: 20rpx;
// background: rgba(0, 0, 0, 0.5);
border-radius: 10rpx;
padding: 10rpx 20rpx;
.page-text {
font-size: 24rpx;
color: #fff;
font-weight: 500;
}
}
}
</style>
.memorial-detail {
min-height: 100vh;
background: #f8f9fa;
padding-bottom: env(safe-area-inset-bottom);
}
//
.main-image-section {
width: 100%;
height: 600rpx;
background: #f0f0f0;
display: flex;
align-items: center;
justify-content: center;
.main-image {
width: 100%;
height: 100%;
object-fit: cover;
}
}
//
.asset-info-card,
.cert-info-card,
.product-detail-card {
margin: 20rpx;
background: white;
border-radius: 16rpx;
padding: 32rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
}
.asset-title {
font-size: 44rpx;
font-weight: 600;
color: #333;
line-height: 1.4;
text-align: center;
margin-top: 45rpx;
}
//
.asset-info-card {
.card-header {
margin-bottom: 32rpx;
}
.info-row {
display: flex;
margin-bottom: 20rpx;
align-items: center;
.info-label {
font-size: 28rpx;
color: #989898;
margin-right: 16rpx;
flex-shrink: 0;
text-align: center;
}
.info-value {
font-size: 28rpx;
color: #333;
flex: 1;
}
}
.divider {
height: 1rpx;
background: #e0e0e0;
margin: 24rpx 0;
}
//
.collection-info {
margin-top: 40rpx;
padding: 32rpx;
background: #f8f9fa;
border-radius: 12rpx;
border: 2rpx solid #e0e0e0;
.collection-header {
text-align: center;
font-size: 28rpx;
color: #666;
margin-bottom: 24rpx;
font-weight: 500;
}
.collector-info {
display: grid;
grid-template-columns: auto auto;
gap: 16rpx 24rpx;
text-align: center;
.collector-label,
.collection-number,
.collection-time-label {
font-size: 24rpx;
color: #666;
}
.collector-name,
.collection-code,
.collection-time {
font-size: 26rpx;
color: #333;
font-weight: 500;
}
.collection-code {
font-family: "Courier New", monospace;
}
.collection-time {
font-family: "Courier New", monospace;
}
}
}
}
//
.cert-info-card {
.cert-header {
text-align: center;
font-size: 28rpx;
color: #666;
margin-bottom: 32rpx;
font-weight: 500;
}
.cert-row {
margin-bottom: 24rpx;
padding-bottom: 20rpx;
border-bottom: 1rpx solid #f0f0f0;
&:last-child {
margin-bottom: 0;
padding-bottom: 0;
border-bottom: none;
}
.cert-label {
display: block;
font-size: 26rpx;
color: #666;
margin-bottom: 8rpx;
}
.cert-value {
display: block;
font-size: 24rpx;
color: #333;
font-family: "Courier New", monospace;
word-break: break-all;
line-height: 1.5;
}
}
}
//
.product-detail-card {
.product-header {
text-align: center;
font-size: 28rpx;
color: #000000;
margin-bottom: 32rpx;
font-weight: bold;
}
.product-content {
.product-description {
font-size: 28rpx;
color: #333;
line-height: 1.6;
}
}
}
.banner-content {
width: 100%;
height: 1624rpx;
position: relative;
.top-banner {
width: 100%;
height: 100%;
border-radius: 20rpx;
}
.dot-container {
position: absolute;
bottom: 43rpx;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
left: 0;
.dot-line {
width: 52rpx;
height: 4rpx;
margin: 0 8rpx;
background: RGBA(189, 170, 173, 0.8);
&.active {
background: #94fafa;
}
}
}
.page-indicator {
position: absolute;
bottom: 20rpx;
right: 20rpx;
// background: rgba(0, 0, 0, 0.5);
border-radius: 10rpx;
padding: 10rpx 20rpx;
.page-text {
font-size: 24rpx;
color: #fff;
font-weight: 500;
}
}
}
.content {
margin: 30rpx;
background: white;
border-radius: 16rpx;
padding: 20rpx;
box-shadow: 0 4rpx 20rpx #00ff02;
}
//
.issue-quantity-pill {
display: flex;
justify-content: center;
margin: 30rpx 0;
.pill-text {
background: linear-gradient(135deg, #00fffe, #00ff08);
border-radius: 50rpx;
padding: 10rpx 20rpx;
font-size: 24rpx;
color: #333333;
font-weight: 500;
}
}
//
.info-section {
margin: 20rpx 0;
.info-row {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.info-item {
display: flex;
flex-direction: column;
gap: 8rpx;
padding: 16rpx;
align-items: center;
.info-label {
font-size: 24rpx;
color: #989898;
font-weight: 500;
}
.info-value {
font-size: 28rpx;
color: #333;
font-weight: bold;
word-break: break-all;
}
}
}
// 线
.section-divider {
height: 2rpx;
background: #e5e5e5;
margin: 30rpx 0;
}
//
.auth-section {
margin: 20rpx 0;
.auth-code-item {
display: flex;
flex-direction: column;
gap: 8rpx;
padding: 16rpx;
margin-bottom: 30rpx;
align-items: center;
.info-label {
font-size: 24rpx;
color: #989898;
font-weight: 500;
}
.auth-code-value {
font-size: 24rpx;
color: #333;
font-family: "Courier New", monospace;
font-weight: bold;
word-break: break-all;
padding: 12rpx;
border-radius: 8rpx;
}
}
.download-button {
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(135deg, #00fffe, #00ff08);
width: 334rpx;
border-radius: 20rpx;
padding: 15rpx 40rpx;
transition: all 0.3s ease;
margin: 0 auto;
&:active {
transform: scale(0.95);
box-shadow: 0 2rpx 10rpx rgba(119, 243, 249, 0.5);
}
.download-text {
margin: 0 auto;
font-size: 28rpx;
color: #000000;
font-weight: bold;
}
}
}
</style>

Loading…
Cancel
Save