From 56d7ebbc6297c306ec7197f29737a59703ca4bda Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 04 三月 2026 10:38:19 +0800
Subject: [PATCH] 合并

---
 mini-program/pages/details/details.vue |  294 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 235 insertions(+), 59 deletions(-)

diff --git a/mini-program/pages/details/details.vue b/mini-program/pages/details/details.vue
index cdd2378..353f0b4 100644
--- a/mini-program/pages/details/details.vue
+++ b/mini-program/pages/details/details.vue
@@ -1,55 +1,97 @@
 <template>
 	<view class="details" v-if="info">
-		<u-swiper :list="info.banner" height="375" @click="preview"></u-swiper>
-		<view class="info">
-			<view class="info-title">
-				{{info.name}}
-			</view>
-			<view class="commodity-item-box-price">
-				<view class="commodity-item-box-price-a">
-					<text>{{info.minPrice[0]}}</text>
-					<text>.{{info.minPrice[1]}}</text>
+		<template v-if="info.isdeleted === 0">
+			<u-swiper :list="info.banner" height="375" @click="preview"></u-swiper>
+			<view class="info">
+				<view class="info-title">
+					{{info.name}}
 				</view>
-				<view class="commodity-item-box-price-b">
-					鍘熶环楼{{info.price}}
-				</view>
-			</view>
-			<view class="info-num">
-				<text>宸插敭 {{info.saleNum + info.realSaleNum}}+</text>
-				<text>搴撳瓨 {{info.stock}}</text>
-			</view>
-		</view>
-		<view class="content">
-			<view class="content-label">鍟嗗搧璇︽儏</view>
-			<view class="content-val" v-html="info.content"></view>
-		</view>
-		<view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 108rpx);"></view>
-		<view class="footer">
-			<view class="edit">
-				<view class="edit-left">
-					<view class="edit-left-row" @click="shoucang">
-						<image src="/static/icon/ic_collect_sel@2x.png" mode="widthFix" v-if="info.collectStatus === 1"></image>
-						<image src="/static/icon/ic_collect@2x.png" mode="widthFix" v-else></image>
-						<text>{{info.collectStatus === 1 ? '宸叉敹钘�' : '鏀惰棌'}}</text>
+				<view class="commodity-item-box-price">
+					<view class="commodity-item-box-price-a">
+						<text>{{info.minPrice[0]}}</text>
+						<text>.{{info.minPrice[1]}}</text>
 					</view>
-					<view class="edit-left-row">
-						<button open-type="contact">瀹㈡湇</button>
-						<image src="/static/icon/detail_ic_kefu@2x.png" mode="widthFix"></image>
-						<text>瀹㈡湇</text>
-					</view>
-					<view class="edit-left-row" @click="toCard">
-						<image src="/static/icon/detail_ic_cart@2x.png" mode="widthFix"></image>
-						<text>璐墿杞�</text>
-						<view class="edit-left-row-num" v-if="cardObj && cardObj.cartTypeNum > 0">{{cardObj.cartTypeNum}}</view>
+					<view class="commodity-item-box-price-b">
+						鍘熶环楼{{info.linePrice}}
 					</view>
 				</view>
-				<view class="edit-btn">
-					<view class="edit-btn-a" @click="addCard(info)">鍔犲叆璐墿杞�</view>
-					<view class="edit-btn-b" @click="submit">绔嬪嵆璐拱</view>
+				<view class="info-num">
+					<text>宸插敭 {{info.shou}}+</text>
+					<text>搴撳瓨 {{info.stock}}</text>
 				</view>
 			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
+			<view class="content">
+				<view class="content-label">鍟嗗搧璇︽儏</view>
+				<view class="content-val">
+					<u-parse :content="info.content"></u-parse>
+				</view>
+			</view>
+			<view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 108rpx);"></view>
+			<view class="footer">
+				<view class="edit">
+					<view class="edit-left">
+						<view class="edit-left-row" @click="shoucang">
+							<image src="/static/icon/ic_collect_sel@2x.png" mode="widthFix" v-if="info.collectStatus === 1"></image>
+							<image src="/static/icon/ic_collect@2x.png" mode="widthFix" v-else></image>
+							<text>{{info.collectStatus === 1 ? '宸叉敹钘�' : '鏀惰棌'}}</text>
+						</view>
+						<view class="edit-left-row">
+							<button open-type="contact">瀹㈡湇</button>
+							<image src="/static/icon/detail_ic_kefu@2x.png" mode="widthFix"></image>
+							<text>瀹㈡湇</text>
+						</view>
+						<view class="edit-left-row" @click="toCard">
+							<image src="/static/icon/detail_ic_cart@2x.png" mode="widthFix"></image>
+							<text>璐墿杞�</text>
+							<view class="edit-left-row-num" v-if="cardObj && cardObj.cartTypeNum > 0">{{cardObj.cartTypeNum}}</view>
+						</view>
+					</view>
+					<view class="edit-btn">
+						<template v-if="info.status === 0">
+							<!-- addCard(info) -->
+							<view class="edit-btn-a" @click="show = true">鍔犲叆璐墿杞�</view>
+							<view class="edit-btn-b" @click="submit">绔嬪嵆璐拱</view>
+						</template>
+						<template v-else>
+							<view style="width: 250rpx; height: 88rpx;"></view>
+							<view class="edit-btn-c">鍟嗗搧宸蹭笅鏋�</view>
+						</template>
+					</view>
+				</view>
+				<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
+			</view>
+		</template>
+		<template v-else>
+			<view class="wuImg">
+				<image src="/static/images/default_empty.png" mode="widthFix"></image>
+			</view>
+		</template>
+		<Login ref="login" />
+		<u-popup :show="show" mode="bottom" round="20" closeable @close="show = false">
+			<view class="cart">
+				<view class="goods">
+					<view class="goods-image">
+						<image :src="info.imgurl" mode="widthFix"></image>
+					</view>
+					<view class="goods-info">
+						<view class="commodity-item-box-price">
+							<view class="commodity-item-box-price-a">
+								<text>{{info.minPrice[0]}}</text>
+								<text>.{{info.minPrice[1]}}</text>
+							</view>
+							<view class="commodity-item-box-price-b">
+								鍘熶环楼{{info.linePrice}}
+							</view>
+						</view>
+						<view class="goods-info-kc">
+							搴撳瓨 210
+						</view>
+						<u-number-box v-model="num"></u-number-box>
+					</view>
+				</view>
+				<view class="cart-btn" @click="addCard(info)">鍔犲叆璐墿杞�</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -65,7 +107,9 @@
 			return {
 				id: null,
 				info: null,
-				cardObj: null
+				cardObj: null,
+				show: false,
+				num: 1
 			};
 		},
 		onLoad(option) {
@@ -80,6 +124,10 @@
 		},
 		methods: {
 			shoucang() {
+				if (!this.userInfo) {
+					this.$refs.login.open()
+					return
+				}
 				if (this.info.collectStatus === 1) {
 					this.$u.api.cancelbatch({ ids: this.info.id })
 						.then(res => {
@@ -97,6 +145,10 @@
 				}
 			},
 			submit() {
+				if (!this.userInfo) {
+					this.$refs.login.open()
+					return
+				}
 				let shop = [
 					{
 						goodsNum: 1,
@@ -109,18 +161,27 @@
 				})
 			},
 			addCard(e) {
+				if (!this.userInfo) {
+					this.$refs.login.open()
+					return
+				}
 				this.$u.api.addCart({
 					goodsId: e.id,
-					goodsSkuId: e.skuResponsesList[0].id,
-					num: 1
+					goodsSkuId: e.goodsSkuResponseList[0].id,
+					num: this.num
 				}).then(res => {
 					if (res.code === 200) {
 						this.cardNum()
-						uni.showToast({ title: '娣诲姞鎴愬姛', icon: 'none' })
+						this.show = false
+						uni.showToast({ title: '娣诲姞鎴愬姛', icon: 'success', mask: true })
 					}
 				})
 			},
 			toCard() {
+				if (!this.userInfo) {
+					this.$refs.login.open()
+					return
+				}
 				uni.navigateTo({
 					url: '/pages/shopping-cart/shopping-cart'
 				})
@@ -141,18 +202,23 @@
 				})
 			},
 			getDetails() {
-				this.$u.api.goodsInfo({
-					goodsId: this.id,
-					memberId: this.userInfo ? this.userInfo.id : null,
-				}).then(res => {
-					if (res.code === 200) {
-						res.data.minPrice = res.data.minPrice.toFixed(2).split('.')
-						if (res.data.goodBannerMultiFiles && res.data.goodBannerMultiFiles.length > 0) {
-							res.data.banner = res.data.goodBannerMultiFiles.map(item => item.fileurlfull)
+				try {
+					this.$u.api.goodsInfo({
+						goodsId: this.id,
+						memberId: this.userInfo ? this.userInfo.id : null,
+					}).then(res => {
+						if (res.code === 200) {
+							res.data.minPrice = res.data.minPrice.toFixed(2).split('.')
+							if (res.data.goodBannerMultiFiles && res.data.goodBannerMultiFiles.length > 0) {
+								res.data.banner = res.data.goodBannerMultiFiles.map(item => item.fileurlfull)
+							}
+							res.data.shou = (res.data.salenum  || 0) + (res.data.realSaleNum || 0)
+							this.info = res.data
 						}
-						this.info = res.data
-					}
-				})
+					})
+				} catch (err) {
+					console.log(err)
+				}
 			}
 		}
 	}
@@ -166,6 +232,105 @@
 <style lang="scss" scoped>
 	.details {
 		width: 100%;
+		.cart {
+			width: 100%;
+			padding: 40rpx 30rpx;
+			box-sizing: border-box;
+			display: flex;
+			flex-direction: column;
+			.goods {
+				width: 100%;
+				display: flex;
+				align-items: center;
+				.goods-image {
+					flex-shrink: 0;
+					margin-right: 30rpx;
+					width: 200rpx;
+					height: 200rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					overflow: hidden;
+					background: #FFFFFF;
+					border-radius: 8rpx;
+					border: 1rpx solid #EEEEEE;
+					image {
+						width: 100%;
+					}
+				}
+				.goods-info {
+					flex: 1;
+					height: 200rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					.goods-info-kc {
+						font-weight: 400;
+						font-size: 24rpx;
+						color: #999999;
+					}
+					.commodity-item-box-price {
+						width: 100%;
+						display: flex;
+						align-items: baseline;
+						margin-top: 8rpx;
+						.commodity-item-box-price-a {
+							display: flex;
+							align-items: baseline;
+							margin-right: 8rpx;
+							text {
+								&:nth-child(1) {
+									font-weight: bold;
+									font-size: 48rpx;
+									color: #E4001D;
+									&::before {
+										content: '锟�';
+										font-weight: 400;
+										font-size: 26rpx;
+										color: #E4001D;
+									}
+								}
+								&:nth-child(2) {
+									font-weight: 400;
+									font-size: 26rpx;
+									color: #E4001D;
+								}
+							}
+						}
+						.commodity-item-box-price-b {
+							font-weight: 400;
+							font-size: 24rpx;
+							color: #999999;
+							text-decoration: line-through;
+						}
+					}
+				}
+			}
+			.cart-btn {
+				width: 100%;
+				height: 88rpx;
+				line-height: 88rpx;
+				text-align: center;
+				background: #004096;
+				border-radius: 44rpx;
+				font-weight: 500;
+				font-size: 32rpx;
+				color: #FFFFFF;
+				margin-top: 80rpx;
+			}
+		}
+		.wuImg {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			padding-top: 400rpx;
+			box-sizing: border-box;
+			image {
+				width: 320rpx;
+				height: 320rpx;
+			}
+		}
 		.footer {
 			width: 100%;
 			position: fixed;
@@ -257,6 +422,17 @@
 						font-size: 30rpx;
 						color: #FFFFFF;
 					}
+					.edit-btn-c {
+						width: 200rpx;
+						height: 88rpx;
+						line-height: 88rpx;
+						text-align: center;
+						background: #999999;
+						border-radius: 44rpx;
+						font-weight: 500;
+						font-size: 30rpx;
+						color: #FFFFFF;
+					}
 				}
 			}
 		}

--
Gitblit v1.9.3