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 + + + + + + + + + + + 📖 + 暂无纪念册 + 您还没有数字资产纪念册 + 快去购买数字资产创建您的专属纪念册吧 @@ -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 @@ + .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 @@ + .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 @@ + // 主题色彩变量 + $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 @@ >