From 96c45550662b4b7c1989ef94dd2aad3c9199da1d Mon Sep 17 00:00:00 2001
From: "1054425342@qq.com" <1054425342@qq.com>
Date: Thu, 14 Aug 2025 15:00:09 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/index/iSoul.vue | 209 ++-
static/js/CommonFunction.js | 24 +-
static/js/request.js | 7 +-
subPackages/equityGoods/detail.vue | 2 +-
subPackages/memorialAlbum/detail.vue | 707 +++----
subPackages/memorialAlbum/index.vue | 383 ++--
subPackages/orderQy/confrim.vue | 2542 +++++++++++---------------
subPackages/orderQy/detail.vue | 257 ++-
subPackages/orderQy/list.vue | 131 +-
subPackages/user/collection.vue | 2 +-
10 files changed, 2105 insertions(+), 2159 deletions(-)
diff --git a/pages/index/iSoul.vue b/pages/index/iSoul.vue
index fabfa09..043fce7 100644
--- a/pages/index/iSoul.vue
+++ b/pages/index/iSoul.vue
@@ -153,24 +153,43 @@
数字资产纪念册
-
-
-
-
- 世界花园|凤景里的苏州
- MORE
+
+
+
+
+
+
+
+
+ 专属纪念册
+ {{ memorialItems[0].goodsTitle || '数字资产纪念册' }}
+ {{memorialItems[0].code}}
+
+ 立即查看
+ →
+
+
+
-
-
-
-
- 男神女神罗曼史
- MORE
+
+
+
+
+
+
+ {{ item.goodsTitle || '数字资产纪念册' }}
+ MORE
+
+
+
+
+
+
+ 📖
+ 暂无纪念册
+ 您还没有数字资产纪念册
+ 快去购买数字资产创建您的专属纪念册吧
@@ -267,6 +286,7 @@
],
exchangeCode: "", // 兑换码
+ memorialItems:[]
};
},
onLoad() {
@@ -279,8 +299,28 @@
JSON.parse(uni.getStorageSync("userInfo"))) ||
this.$store.state.user.userInfo || {};
console.log(this.userInfo);
+ if (this.userInfo && this.userInfo.token) {
+ this.getListIp()
+ }
},
methods: {
+ getListIp() {
+ this.Post({},
+ "/framework/order/ipOrderList",
+ "DES"
+ ).then((res) => {
+ if (res.code == 200) {
+ if(res.data){
+ this.memorialItems = res.data.slice(0,2)
+ }
+ } else {
+ uni.showToast({
+ title: res.msg,
+ icon: "none",
+ });
+ }
+ });
+ },
// 返回上一页
goBack() {
uni.navigateBack();
@@ -917,6 +957,104 @@
gap: 20rpx;
}
+ /* 单条数据特殊展示样式 */
+ .memorial-card-single {
+ width: 100%;
+ max-width: 100%;
+ margin: 0 auto;
+ border-radius: 20rpx;
+ overflow: hidden;
+ box-shadow: 0 12rpx 40rpx rgba(0, 0, 0, 0.15);
+ transition: all 0.3s ease;
+ position: relative;
+ }
+
+ .memorial-card-single:active {
+ transform: scale(0.98);
+ box-shadow: 0 8rpx 30rpx rgba(0, 0, 0, 0.2);
+ }
+
+ .single-card-wrapper {
+ position: relative;
+ width: 100%;
+ height: 400rpx;
+ overflow: hidden;
+ }
+
+ .memorial-img-single {
+ width: 100%;
+ height: 100%;
+ transition: transform 0.3s ease;
+ }
+
+ .memorial-card-single:active .memorial-img-single {
+ transform: scale(1.05);
+ }
+
+ .single-overlay {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
+ padding: 60rpx 30rpx 30rpx;
+ color: white;
+ }
+
+ .single-badge {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: white;
+ font-size: 22rpx;
+ padding: 8rpx 16rpx;
+ border-radius: 20rpx;
+ display: inline-block;
+ margin-bottom: 16rpx;
+ font-weight: 500;
+ box-shadow: 0 4rpx 12rpx rgba(102, 126, 234, 0.3);
+ }
+
+ .single-title {
+ font-size: 32rpx;
+ font-weight: bold;
+ margin-bottom: 8rpx;
+ line-height: 1.3;
+ }
+
+ .single-desc {
+ font-size: 24rpx;
+ color: rgba(255, 255, 255, 0.8);
+ margin-bottom: 20rpx;
+ line-height: 1.4;
+ }
+
+ .single-action {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ background: rgba(255, 255, 255, 0.1);
+ border-radius: 25rpx;
+ padding: 12rpx 20rpx;
+ backdrop-filter: blur(10rpx);
+ border: 1rpx solid rgba(255, 255, 255, 0.2);
+ }
+
+ .action-text {
+ font-size: 26rpx;
+ font-weight: 500;
+ color: white;
+ }
+
+ .action-arrow {
+ font-size: 28rpx;
+ font-weight: bold;
+ color: white;
+ transition: transform 0.3s ease;
+ }
+
+ .memorial-card-single:active .action-arrow {
+ transform: translateX(6rpx);
+ }
+
.memorial-card {
flex: 1;
border-radius: 10rpx;
@@ -950,6 +1088,45 @@
color: #999;
}
+ /* 无数据时的空状态样式 */
+ .memorial-empty {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ min-height: 280rpx;
+ }
+
+ .empty-content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ color: #333333;
+ }
+
+ .empty-icon {
+ font-size: 80rpx;
+ margin-bottom: 20rpx;
+ opacity: 0.6;
+ }
+
+ .empty-title {
+ font-size: 32rpx;
+ color: white;
+ font-weight: 500;
+ margin-bottom: 10rpx;
+ }
+
+ .empty-desc {
+ font-size: 26rpx;
+ margin-bottom: 8rpx;
+ }
+
+ .empty-tip {
+ font-size: 24rpx;
+ line-height: 1.4;
+ }
+
/* 底部菜单 */
.bottom-menu {
padding: 40rpx 30rpx;
diff --git a/static/js/CommonFunction.js b/static/js/CommonFunction.js
index 3dce24e..e0b29a0 100644
--- a/static/js/CommonFunction.js
+++ b/static/js/CommonFunction.js
@@ -393,4 +393,26 @@ Vue.prototype.appendToStorage = (key, newData) => {
uni.setStorageSync(key, updated);
}
-Vue.prototype.JDSU_IMG_URL = "https://static.ticket.sz-trip.com"
\ No newline at end of file
+Vue.prototype.JDSU_IMG_URL = "https://static.ticket.sz-trip.com"
+Vue.prototype.addImgStyleToHtml = (htmlStr) => {
+ return htmlStr.replace(/
]*)>/gi, (match, attrs) => {
+ // 检查是否已有 style 属性
+ if (/style\s*=/.test(attrs)) {
+ // 已有 style,合并 width:100%
+ return `
{
+ // 合并 width:100% 到已有 style
+ let newStyle = styleVal;
+ if (!/width\s*:\s*100%/.test(styleVal)) {
+ newStyle = `width:100%;${styleVal}`;
+ }
+ return `style=${quote}${newStyle}${quote}`;
+ }
+ )}>`;
+ } else {
+ // 没有 style,直接加
+ return `
`;
+ }
+ });
+ }
\ No newline at end of file
diff --git a/static/js/request.js b/static/js/request.js
index 4b4cb20..be6433a 100644
--- a/static/js/request.js
+++ b/static/js/request.js
@@ -4,12 +4,13 @@ import store from '@/store';
// 定义 API URL
// const DEV_API_URL = 'https://epic.new.js-dyyj.com';
const DEV_API_URL = 'https://epic.js-dyyj.com';
-const PROD_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 PROD_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;
-// 获取token
const getToken = () => {
const userInfoFromStorage = uni.getStorageSync('userInfo');
if (userInfoFromStorage) {
diff --git a/subPackages/equityGoods/detail.vue b/subPackages/equityGoods/detail.vue
index 9e198f8..157200c 100644
--- a/subPackages/equityGoods/detail.vue
+++ b/subPackages/equityGoods/detail.vue
@@ -243,7 +243,7 @@ export default {
res.data.goodsVos.forEach((element) => {
element.detailUrl = this.addImgStyleToHtml(element.detailUrl);
});
- if(res.data.sku){
+ if(res.data.sku&&res.data.sku.product.scene){
this.scene = JSON.parse(res.data.sku.product.scene)
this.scene.content = this.addImgStyleToHtml(this.scene.content);
}
diff --git a/subPackages/memorialAlbum/detail.vue b/subPackages/memorialAlbum/detail.vue
index e04d196..9fbd25e 100644
--- a/subPackages/memorialAlbum/detail.vue
+++ b/subPackages/memorialAlbum/detail.vue
@@ -1,339 +1,382 @@
-
-
-
-
-
-
-
-
-
-
-
- 发行数量:
- {{ detailInfo.totalSupply }}份
-
-
-
-
-
- 数字资产所有方:
- {{ detailInfo.owner }}
-
-
-
- 数字资产权利方:
- {{ detailInfo.rightHolder }}
-
-
-
- 数字资产所有方:
- {{ detailInfo.assetOwner }}
-
-
-
-
-
-
- 收藏者
- {{ detailInfo.collector }}
- 编号
- {{ detailInfo.collectionCode }}
- 收藏时间
- {{ detailInfo.collectionTime }}
-
-
-
-
-
-
-
-
-
- 权证码
- {{ detailInfo.certificateCode }}
-
-
-
- 合约地址
- {{ detailInfo.contractAddress }}
-
-
-
- 交易HASH
- {{ detailInfo.transactionHash }}
-
-
-
- 钱包地址
- {{ detailInfo.walletAddress }}
-
-
-
-
-
-
-
-
- {{ detailInfo.description }}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ swiperIndex + 1 }}/{{ topBanner.length }}
+
+
+
+
+
+
+
+
+ 发行数量:
+ {{ detailInfo.publishQuantity||0 }}份
+
+
+
+
+
+ 数字资产所有方:
+ {{ detailInfo.ownPart||'-' }}
+
+
+
+ 数字资产权利方:
+ {{ detailInfo.powerPart||'-' }}
+
+
+ 授权品牌:
+ {{ detailInfo.authorizeBrand||'-' }}
+
+
+
+
+
+ 收藏者
+ {{ detailInfo.nickname||'--' }}
+ 编号
+ {{ detailInfo.code||'--' }}
+ 收藏时间
+ {{ detailInfo.activeTime||'--' }}
+
+
+
+
+
+
+
+
+
+ 授权码
+ {{ detailInfo.activeCode||"--" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .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;
+ }
+ }
+ }
+
\ No newline at end of file
diff --git a/subPackages/memorialAlbum/index.vue b/subPackages/memorialAlbum/index.vue
index f71cdef..9ef0f7d 100644
--- a/subPackages/memorialAlbum/index.vue
+++ b/subPackages/memorialAlbum/index.vue
@@ -1,212 +1,185 @@
-
-
-
-
-
-
-
- {{ item.goodsTitle }}
- {{ item.code }}
- {{ item.ownPart }}
-
-
-
-
-
+
+
+
+
+
+
+
+ {{ item.goodsTitle }}
+ {{ item.code }}
+ {{ item.ownPart }}
+
+
+
+
+
+ .memorial-album {
+ min-height: 100vh;
+ background: #f8f9fa;
+ padding-bottom: env(safe-area-inset-bottom);
+ }
+
+ // 顶部导航
+ .nav-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 20rpx 30rpx;
+ background: white;
+ border-bottom: 1rpx solid #eee;
+ position: sticky;
+ top: 0;
+ z-index: 100;
+ }
+
+ .nav-back {
+ width: 60rpx;
+ height: 60rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .nav-title {
+ font-size: 32rpx;
+ font-weight: 600;
+ color: #333;
+ }
+
+ .nav-placeholder {
+ width: 60rpx;
+ }
+
+ // 纪念册网格
+ .memorial-grid {
+ padding: 30rpx;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 20rpx;
+ }
+
+ .memorial-item {
+ background: white;
+ border-radius: 16rpx;
+ overflow: hidden;
+ box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
+ transition: transform 0.2s ease;
+
+ &:active {
+ transform: scale(0.98);
+ }
+ }
+
+ .memorial-card {
+ width: 100%;
+ }
+
+ .memorial-image {
+ width: 100% !important;
+ height: 460rpx !important;
+ background: #f5f5f5;
+ display: block;
+ object-fit: cover;
+ }
+
+ .memorial-info {
+ padding: 28rpx 24rpx;
+ display: flex;
+ flex-direction: column;
+ gap: 12rpx;
+ }
+
+ .memorial-title {
+ font-size: 32rpx;
+ font-weight: 600;
+ color: #333;
+ line-height: 1.4;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ }
+
+ .memorial-code {
+ font-size: 26rpx;
+ color: #666;
+ font-family: "Courier New", monospace;
+ }
+
+ .memorial-status {
+ font-size: 24rpx;
+ color: #999;
+ overflow: hidden;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ }
+
+ // 响应式处理
+ @media screen and (max-width: 400px) {
+ .memorial-grid {
+ padding: 20rpx;
+ gap: 15rpx;
+ }
+
+ .memorial-image {
+ height: 460rpx !important; // 保持较高的高度,即使在小屏幕上
+ }
+
+ .memorial-info {
+ padding: 24rpx 20rpx;
+ }
+
+ .memorial-title {
+ font-size: 28rpx;
+ }
+ }
+
\ No newline at end of file
diff --git a/subPackages/orderQy/confrim.vue b/subPackages/orderQy/confrim.vue
index 64a8170..2cf8a21 100644
--- a/subPackages/orderQy/confrim.vue
+++ b/subPackages/orderQy/confrim.vue
@@ -1,1511 +1,1051 @@
-
-
-
-
-
-
-
-
-
-
-
-
- 请选择收货地址
- 点击添加收货地址信息
-
-
-
-
-
-
-
-
-
- 预约日期
- *
-
-
-
-
-
- {{ selectedDate || "请选择预约日期" }}
-
-
-
-
-
-
-
-
-
-
- IP资产供应商:{{ supplier || "苏州XXX博物馆" }}
-
-
-
-
- {{
- item.name || "食在苏州 | 世界美食之都巡礼+实物探真"
- }}
-
-
-
-
-
- 规格{{ specIndex + 1 }}
-
- {{ spec.selectedSpec || "请选择规格" }}
-
-
-
-
-
-
-
- + 添加规格
-
-
-
- ¥{{ item.price || "699.00" }}
-
-
-
-
-
-
-
-
-
-
- 备注
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ 请选择收货地址
+ 点击添加收货地址信息
+
+
+
+
+
+
+
+
+
+ 预约日期
+ *
+
+
+
+
+
+ {{ selectedDate || "请选择预约日期" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ goodsInfo.goodsName || "--" }}
+
+
+
+
+
+ 第{{ specIndex + 1 }}份规格
+
+ {{ spec.selectedSpec || "请选择规格" }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 备注
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
- ¥{{ totalAmount || "699.00" }}
-
-
-
-
-
+ -->
+
+ 优惠券
+ {{ coupon || "无可用 >" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ¥{{ shipping || "0.00" }}
+
+
+
+
+
+ // 主题色彩变量
+ $primary-color: #667eea;
+ $secondary-color: #f8f9fa;
+ $text-primary: #2d3748;
+ $text-secondary: #718096;
+ $text-muted: #a0aec0;
+ $border-color: #e2e8f0;
+ $success-color: #48bb78;
+ $warning-color: #ed8936;
+ $danger-color: #f56565;
+ $bg-light: #f7fafc;
+
+ .confirm-container {
+ height: 100vh;
+ background-color: $bg-light;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .content-scroll {
+ flex: 1;
+ padding: 20rpx;
+ width: 710rpx;
+ }
+
+ // 通用section样式
+ .section-header,
+ .section-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 24rpx 30rpx;
+ background-color: #ffffff;
+ border-radius: 16rpx;
+ margin-bottom: 20rpx;
+ }
+
+ .section-title {
+ font-size: 28rpx;
+ color: $text-primary;
+ font-weight: 600;
+ margin-bottom: 16rpx;
+
+ .required {
+ color: $danger-color;
+ margin-left: 4rpx;
+ }
+ }
+
+ // 收货地址
+ .address-section {
+ margin-bottom: 24rpx;
+ }
+
+ .address-info {
+ flex: 1;
+ }
+
+ .user-info {
+ display: flex;
+ align-items: center;
+ margin-bottom: 12rpx;
+ gap: 16rpx;
+ }
+
+ .username {
+ font-size: 28rpx;
+ color: $text-primary;
+ font-weight: 600;
+ }
+
+ .phone {
+ font-size: 24rpx;
+ color: $text-secondary;
+ }
+
+ .default-tag {
+ font-size: 20rpx;
+ color: $primary-color;
+ background-color: rgba(102, 126, 234, 0.1);
+ padding: 4rpx 12rpx;
+ border-radius: 12rpx;
+ }
+
+ .address-detail {
+ font-size: 26rpx;
+ color: $text-secondary;
+ line-height: 1.4;
+ }
+
+ // 空地址状态
+ .empty-address {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 24rpx 30rpx;
+ background-color: #ffffff;
+ border-radius: 16rpx;
+ margin-bottom: 20rpx;
+ border: 2rpx dashed $border-color;
+ transition: all 0.3s ease;
+
+ &:active {
+ background-color: rgba(102, 126, 234, 0.02);
+ border-color: $primary-color;
+ }
+ }
+
+ .empty-address-content {
+ display: flex;
+ align-items: center;
+ gap: 16rpx;
+ }
+
+ .empty-address-text {
+ display: flex;
+ flex-direction: column;
+ gap: 6rpx;
+ }
+
+ .empty-title {
+ font-size: 28rpx;
+ color: $text-primary;
+ font-weight: 500;
+ }
+
+ .empty-tip {
+ font-size: 24rpx;
+ color: $text-muted;
+ }
+
+ // 预约日期
+ .date-section {
+ margin-bottom: 24rpx;
+ }
+
+ .date-picker-container {
+ background-color: #ffffff;
+ border-radius: 16rpx;
+ padding: 24rpx 30rpx;
+ }
+
+ .date-input {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .date-text {
+ font-size: 28rpx;
+ color: $text-primary;
+
+ &.placeholder {
+ color: $text-muted;
+ }
+ }
+
+ // 商品信息
+ .goods-section {
+ margin-bottom: 24rpx;
+ }
+
+ .goods-card {
+ display: flex;
+ background-color: #ffffff;
+ border-radius: 16rpx;
+ padding: 24rpx;
+ gap: 20rpx;
+ }
+
+ .goods-image {
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 12rpx;
+ flex-shrink: 0;
+ }
+
+ .goods-info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ gap: 12rpx;
+ }
+
+ .goods-name {
+ font-size: 26rpx;
+ color: $text-primary;
+ font-weight: 600;
+ line-height: 1.4;
+ }
+
+ // 备注
+ .note-section {
+ margin-bottom: 24rpx;
+
+ .section-row {
+ align-items: flex-start;
+ }
+ }
+
+ .section-label {
+ font-size: 28rpx;
+ color: $text-primary;
+ font-weight: 500;
+ }
+
+ .note-input {
+ flex: 1;
+ margin-left: 40rpx;
+
+ input {
+ font-size: 26rpx;
+ color: $text-primary;
+ text-align: right;
+ width: 100%;
+ }
+
+ .placeholder {
+ color: $text-muted;
+ }
+ }
+
+ // 费用明细
+ .cost-section {
+ background-color: #ffffff;
+ border-radius: 16rpx;
+ padding: 24rpx 30rpx;
+ margin-bottom: 24rpx;
+ }
+
+ .cost-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 16rpx 0;
+
+ &:not(:last-child) {
+ border-bottom: 1px solid $border-color;
+ }
+ }
+
+ .cost-label {
+ font-size: 26rpx;
+ color: $text-primary;
+ }
+
+ .cost-value {
+ font-size: 26rpx;
+ color: $text-primary;
+
+ &.coupon {
+ color: $text-muted;
+ }
+ }
+
+ // 底部提交区域
+ .submit-section {
+ flex-shrink: 0; // 防止被压缩
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 24rpx 30rpx;
+ background-color: #ffffff;
+ border-top: 1px solid $border-color;
+ box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.04);
+
+ // 添加安全区域适配
+ padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
+ }
+
+ .submit-section-content {
+ padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
+ }
+
+ .total-price {
+ flex: 1;
+ }
+
+ .total-amount {
+ font-size: 36rpx;
+ color: $danger-color;
+ font-weight: 600;
+ font-family: "SF Mono", "Monaco", "Cascadia Code", monospace;
+ }
+
+ .submit-btn {
+ background-color: $text-primary;
+ color: #ffffff;
+ border: none;
+ border-radius: 32rpx;
+ padding: 4rpx 48rpx;
+ font-size: 28rpx;
+ font-weight: 600;
+ transition: all 0.3s ease;
+
+ &:active {
+ transform: scale(0.95);
+ background-color: rgba(45, 55, 72, 0.8);
+ }
+ }
+
+ // SKU选择弹窗样式
+ .specification-popup {
+ background: white;
+ border-radius: 24rpx 24rpx 0 0;
+ max-height: 80vh;
+ overflow: hidden;
+ }
+
+ .popup-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 32rpx 30rpx 24rpx;
+ border-bottom: 1rpx solid $border-color;
+
+ .popup-title {
+ font-size: 32rpx;
+ font-weight: 600;
+ color: $text-primary;
+ }
+
+ .popup-close {
+ font-size: 40rpx;
+ color: $text-muted;
+ line-height: 1;
+ padding: 8rpx;
+ cursor: pointer;
+ transition: color 0.3s;
+
+ &:active {
+ color: $text-secondary;
+ }
+ }
+ }
+
+ .popup-content {
+ padding: 30rpx;
+ max-height: 60vh;
+ overflow-y: auto;
+ }
+
+ // 商品预览
+ .goods-preview {
+ display: flex;
+ align-items: center;
+ gap: 20rpx;
+ padding: 24rpx;
+ background: $bg-light;
+ border-radius: 16rpx;
+ margin-bottom: 30rpx;
+
+ .preview-image {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 12rpx;
+ flex-shrink: 0;
+ }
+
+ .preview-info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ gap: 8rpx;
+ }
+
+ .preview-name {
+ font-size: 26rpx;
+ color: $text-primary;
+ font-weight: 500;
+ line-height: 1.3;
+ }
+ }
+
+ // SKU选择区域
+ .sku-section {
+ margin-bottom: 30rpx;
+
+ .sku-title {
+ font-size: 28rpx;
+ color: $text-primary;
+ font-weight: 600;
+ margin-bottom: 20rpx;
+ display: block;
+ }
+
+ .sku-options {
+ display: flex;
+ flex-direction: column;
+ gap: 16rpx;
+ }
+
+ .sku-option {
+ padding: 20rpx;
+ border: 2rpx solid $border-color;
+ border-radius: 12rpx;
+ background: white;
+ transition: all 0.3s ease;
+ cursor: pointer;
+
+ &:active {
+ transform: scale(0.98);
+ }
+
+ &.active {
+ border-color: $primary-color;
+ background: rgba(102, 126, 234, 0.05);
+ }
+
+ .sku-option-content {
+ display: flex;
+ flex-direction: column;
+ gap: 12rpx;
+ }
+
+ .sku-option-info {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .sku-option-name {
+ font-size: 28rpx;
+ color: $text-primary;
+ font-weight: 600;
+ }
+
+ .sku-option-price {
+ font-size: 28rpx;
+ color: $danger-color;
+ font-weight: 600;
+ }
+
+ .sku-option-details {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 24rpx;
+ color: $text-secondary;
+ }
+
+ .sku-option-quantity {
+ color: $success-color;
+ }
+
+ .sku-option-code {
+ color: $text-muted;
+ }
+ }
+ }
+
+ // 确认按钮
+ .popup-actions {
+ padding: 24rpx 30rpx 40rpx;
+ border-top: 1rpx solid $border-color;
+ background: white;
+
+ .confirm-spec-btn {
+ width: 100%;
+ height: 88rpx;
+ background: $primary-color;
+ color: white;
+ border: none;
+ border-radius: 44rpx;
+ font-size: 32rpx;
+ font-weight: 600;
+ transition: all 0.3s ease;
+
+ &:active {
+ transform: scale(0.98);
+ background: rgba(102, 126, 234, 0.8);
+ }
+
+ &:disabled {
+ background: $text-muted;
+ cursor: not-allowed;
+ }
+ }
+ }
+
+ // 商品卡片中的规格信息样式
+ .specifications-list {
+ margin: 12rpx 0;
+ }
+
+ .spec-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 16rpx 0;
+ border-bottom: 1rpx solid #f0f0f0;
+
+ &:last-child {
+ border-bottom: none;
+ }
+ }
+
+ .spec-content {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ gap: 8rpx;
+ }
+
+ .spec-label {
+ font-size: 22rpx;
+ color: $text-secondary;
+ font-weight: 500;
+ }
+
+ .spec-text {
+ font-size: 24rpx;
+ color: $text-primary;
+ font-weight: 500;
+
+ &.placeholder {
+ color: $text-muted;
+ }
+ }
+
\ No newline at end of file
diff --git a/subPackages/orderQy/detail.vue b/subPackages/orderQy/detail.vue
index f6d980f..7e201c1 100644
--- a/subPackages/orderQy/detail.vue
+++ b/subPackages/orderQy/detail.vue
@@ -25,6 +25,14 @@
mode="aspectFill"
:src="showImgJdsz(goods.goodsImg.split(',')[0])"
>
+
+
+ {{ getGoodsStatusText(goods.status) }}
+
@@ -35,20 +43,15 @@
-
-
+
@@ -77,10 +80,10 @@
订单编号:
{{ orderDetail.orderId }}
-
- 权益码:
- {{ orderDetail.activeCode }}
-
+
+ 权益码:
+ {{ orderDetail.activeCode }}
+
+
+
收货地址
@@ -204,7 +210,14 @@
-
+
+ 备注
+
+ {{
+ currentLogisticsInfo.remark || "--"
+ }}
+
+
预约发货时间
@@ -257,13 +270,18 @@ export default {
showEquityPopup: false,
showLogisticsPopup: false, // 物流信息弹窗
currentLogisticsInfo: null, // 当前物流信息
- orderDetail: {},
+ orderDetail: {
+ orderChildVos: [],
+ },
};
},
computed: {
// 是否有实体商品需要收货
hasPhysicalGoods() {
- return this.orderDetail.orderChildVos.some((goods) => goods.type === 2);
+ return (
+ this.orderDetail &&
+ this.orderDetail.orderChildVos.some((goods) => goods.type === 2)
+ );
},
// 是否显示底部操作按钮
showBottomActions() {
@@ -351,14 +369,14 @@ export default {
};
return textMap[type] || "去查看";
},
- getGoodsActionTexted(type) {
- const textMap = {
- 1: "去查看",
- 2: "查看物流",
- 3: "已使用",
- };
- return textMap[type] || "去查看";
- },
+ getGoodsActionTexted(type) {
+ const textMap = {
+ 1: "去查看",
+ 2: "查看物流",
+ 3: "已使用",
+ };
+ return textMap[type] || "去查看";
+ },
showImgJdsz(img) {
if (!img) return;
if (img.indexOf("https://") != -1 || img.indexOf("http://") != -1) {
@@ -400,6 +418,30 @@ export default {
return typeMap[type] || "未知类型";
},
+ // 获取商品状态文本
+ getGoodsStatusText(status) {
+ const statusMap = {
+ 1: "待使用",
+ 2: "待发货",
+ 3: "已发货",
+ 4: "已完成",
+ 5: "售后",
+ };
+ return statusMap[status] || "未知状态";
+ },
+
+ // 获取商品状态样式类
+ getGoodsStatusClass(status) {
+ const classMap = {
+ 1: "goods-status-waiting",
+ 2: "goods-status-pending",
+ 3: "goods-status-shipping",
+ 4: "goods-status-completed",
+ 5: "goods-status-refund",
+ };
+ return classMap[status] || "goods-status-default";
+ },
+
// 复制订单号
copyOrderNo() {
uni.setClipboardData({
@@ -423,49 +465,53 @@ export default {
this.showEquityPopup = false;
},
- // 处理商品操作
- handleGoodsAction(goods) {
- switch (goods.type) {
- case 1: // IP数字资产 - 查看
- this.viewDigitalAsset(goods);
- break;
- case 2: // IP资源商品 - 预约发货
- this.reserveDelivery(goods);
- break;
- case 3: // 君道苏州门票 - 去使用
- this.useTicket(goods);
- break;
- }
- },
-
- // 查看数字资产
- viewDigitalAsset(goods) {
- // 跳转到数字资产详情页面
- uni.showToast({
- title: "查看数字资产",
- icon: "none",
- });
- uni.navigateTo({
- url: "/subPackages/memorialAlbum/detail",
- });
- },
-
- // 预约发货
- reserveDelivery(goods) {
- // 跳转到确认订单页面
- uni.navigateTo({
- url: `/subPackages/orderQy/confrim?goodsId=${goods.orderId}`,
- });
- },
-
- // 使用门票
- useTicket(goods) {
- // 处理使用门票逻辑
- uni.showToast({
- title: "使用门票",
- icon: "none",
- });
- },
+ // 处理商品操作
+ handleGoodsAction(goods) {
+ switch (goods.type) {
+ case 1: // IP数字资产 - 查看
+ this.viewDigitalAsset(goods);
+ break;
+ case 2: // IP资源商品 - 预约发货
+ this.reserveDelivery(goods);
+ break;
+ case 3: // 君道苏州门票 - 去使用
+ this.useTicket(goods);
+ break;
+ }
+ },
+
+ // 查看数字资产
+ viewDigitalAsset(goods) {
+ // 跳转到数字资产详情页面
+ uni.showToast({
+ title: "查看数字资产",
+ icon: "none",
+ });
+ uni.navigateTo({
+ url: "/subPackages/memorialAlbum/detail?id="+goods.childId,
+ });
+ },
+
+ // 预约发货
+ reserveDelivery(goods) {
+ // 跳转到确认订单页面
+ if (goods.status == 1) {
+ uni.navigateTo({
+ url: `/subPackages/orderQy/confrim?goodsId=${goods.goodsId}&orderChildId=${goods.childId}`,
+ });
+ } else {
+ this.showLogisticsInfo(goods);
+ }
+ },
+
+ // 使用门票
+ useTicket(goods) {
+ // 处理使用门票逻辑
+ uni.showToast({
+ title: "使用门票",
+ icon: "none",
+ });
+ },
// 显示物流信息
showLogisticsInfo(goods) {
@@ -724,6 +770,8 @@ export default {
.checkbox-icon {
width: 100rpx;
height: 100rpx;
+ position: relative;
+
image {
width: 100%;
height: 100%;
@@ -731,6 +779,43 @@ export default {
}
}
+// 商品状态标签
+.goods-status-badge {
+ position: absolute;
+ top: -8rpx;
+ right: -8rpx;
+ padding: 4rpx 8rpx;
+ border-radius: 8rpx;
+ font-size: 20rpx;
+ color: #fff;
+ font-weight: 500;
+ z-index: 10;
+
+ &.goods-status-waiting {
+ background-color: #007aff;
+ }
+
+ &.goods-status-pending {
+ background-color: #ff9500;
+ }
+
+ &.goods-status-shipping {
+ background-color: #34c759;
+ }
+
+ &.goods-status-completed {
+ background-color: #666;
+ }
+
+ &.goods-status-refund {
+ background-color: #ff3b30;
+ }
+
+ &.goods-status-default {
+ background-color: #999;
+ }
+}
+
.goods-content {
flex: 1;
display: flex;
@@ -1018,6 +1103,44 @@ export default {
}
}
+// 物流弹窗状态信息
+.status-info {
+ display: flex;
+ align-items: center;
+}
+
+.status-badge-popup {
+ padding: 8rpx 16rpx;
+ border-radius: 20rpx;
+ font-size: 24rpx;
+ color: #fff;
+ font-weight: 500;
+
+ &.goods-status-waiting {
+ background-color: #007aff;
+ }
+
+ &.goods-status-pending {
+ background-color: #ff9500;
+ }
+
+ &.goods-status-shipping {
+ background-color: #34c759;
+ }
+
+ &.goods-status-completed {
+ background-color: #666;
+ }
+
+ &.goods-status-refund {
+ background-color: #ff3b30;
+ }
+
+ &.goods-status-default {
+ background-color: #999;
+ }
+}
+
.logistics-section .section-title {
font-size: 28rpx;
font-weight: 600;
diff --git a/subPackages/orderQy/list.vue b/subPackages/orderQy/list.vue
index 25251bd..cf4a6cd 100644
--- a/subPackages/orderQy/list.vue
+++ b/subPackages/orderQy/list.vue
@@ -47,12 +47,18 @@
v-for="goods in order.orderChildVos"
:key="goods.id"
>
-
+
+
+
+
+ {{ getGoodsStatusText(goods.status) }}
+
+
{{ goods.goodsTitle }}
@@ -72,14 +78,17 @@
>
{{ getActionBtnText(goods.type) }}
-
+
+
+
+
@@ -107,7 +116,7 @@
{
if (res.code == 200) {
this.orderList.push(...res.rows);
+ console.log(this.orderList)
this.hasMore = res.rows.length === this.pageSize;
this.currentPage++;
} else {
@@ -313,6 +323,30 @@ export default {
return typeMap[type] || "未知类型";
},
+ // 获取商品状态文本
+ getGoodsStatusText(status) {
+ const statusMap = {
+ 1: "待使用",
+ 2: "待发货",
+ 3: "已发货",
+ 4: "已完成",
+ 5: "售后",
+ };
+ return statusMap[status] || "未知状态";
+ },
+
+ // 获取商品状态样式类
+ getGoodsStatusClass(status) {
+ const classMap = {
+ 1: "goods-status-waiting",
+ 2: "goods-status-pending",
+ 3: "goods-status-shipping",
+ 4: "goods-status-completed",
+ 5: "goods-status-refund",
+ };
+ return classMap[status] || "goods-status-default";
+ },
+
// 获取操作按钮文本
getActionBtnText(type) {
const textMap = {
@@ -364,16 +398,19 @@ export default {
icon: "none",
});
uni.navigateTo({
- url: "/subPackages/memorialAlbum/detail",
+ url: "/subPackages/memorialAlbum/detail?id="+goods.childId,
});
},
// 预约发货
reserveDelivery(goods) {
// 跳转到确认订单页面
- uni.navigateTo({
- url: `/subPackages/orderQy/confrim?goodsId=${goods.orderId}`,
- });
+ if(goods.status==1){
+ uni.navigateTo({
+ url: `/subPackages/orderQy/confrim?goodsId=${goods.goodsId}&orderChildId=${goods.childId}`,
+ });
+ }
+
},
// 使用门票
@@ -419,17 +456,6 @@ export default {
});
},
- // 格式化时间
- formatTime(time) {
- if (!time) return "";
- const date = new Date(time);
- return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(
- 2,
- "0"
- )}-${String(date.getDate()).padStart(2, "0")} ${String(
- date.getHours()
- ).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`;
- },
},
};
@@ -662,12 +688,53 @@ $bg-light: #f7fafc;
}
}
+.goods-image-container {
+ position: relative;
+ margin-right: 20rpx;
+ flex-shrink: 0;
+}
+
.goods-image {
width: 100rpx;
height: 100rpx;
border-radius: 12rpx;
- margin-right: 20rpx;
- flex-shrink: 0;
+}
+
+// 商品状态标签
+.goods-status-badge {
+ position: absolute;
+ top: -8rpx;
+ right: -8rpx;
+ padding: 4rpx 8rpx;
+ border-radius: 8rpx;
+ font-size: 20rpx;
+ color: #fff;
+ font-weight: 500;
+ z-index: 10;
+
+ &.goods-status-waiting {
+ background-color: #007aff;
+ }
+
+ &.goods-status-pending {
+ background-color: #ff9500;
+ }
+
+ &.goods-status-shipping {
+ background-color: #34c759;
+ }
+
+ &.goods-status-completed {
+ background-color: #666;
+ }
+
+ &.goods-status-refund {
+ background-color: #ff3b30;
+ }
+
+ &.goods-status-default {
+ background-color: #999;
+ }
}
.goods-info {
diff --git a/subPackages/user/collection.vue b/subPackages/user/collection.vue
index 617a1fb..68086c1 100644
--- a/subPackages/user/collection.vue
+++ b/subPackages/user/collection.vue
@@ -18,7 +18,7 @@
>