From 1b70393b2d1756c183aab58f0aa7ffb0d4292ac0 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期五, 01 八月 2025 14:29:16 +0800
Subject: [PATCH] 添加优惠卷跳转指定页面

---
 config/api.js                               |   16 +-
 pages/product/goods.vue                     |    2 
 pages/commodity-square/coups-goods-list.vue |  435 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 pages.json                                  |   14 +
 pages/cart/coupon/myCoupon.vue              |    6 
 5 files changed, 463 insertions(+), 10 deletions(-)

diff --git a/config/api.js b/config/api.js
index b409e36..9db28a0 100644
--- a/config/api.js
+++ b/config/api.js
@@ -4,10 +4,10 @@
  */
 // 寮�鍙戠幆澧�
 const dev = {
-  // im: "http://192.168.0.15:8885",
-  // common: "http://192.168.0.15:8890",
-  // buyer: "http://192.168.0.15:8888",
-  // store: "http://192.168.0.15:8889",
+  im: "http://192.168.0.15:8885",
+  common: "http://192.168.0.15:8890",
+  buyer: "http://192.168.0.15:8888",
+  store: "http://192.168.0.15:8889",
 
   // im: "http://127.0.0.1:8885",
   // common: "http://127.0.0.1:8890",
@@ -17,10 +17,10 @@
   // common: "http://192.168.0.113:8890",
   // buyer: "http://192.168.0.113:8888",
   // im: "http://192.168.0.113:8885",
-  im: "https://myk.9village.cn",
-  common: "https://myk.9village.cn",
-  buyer: "https://myk.9village.cn",
-  store: "https://myk.9village.cn",
+  // im: "https://myk.9village.cn",
+  // common: "https://myk.9village.cn",
+  // buyer: "https://myk.9village.cn",
+  // store: "https://myk.9village.cn",
   // im: "https://www.meiyikuang.com/mykapi",
   // common: "https://www.meiyikuang.com/mykapi",
   // buyer: "https://www.meiyikuang.com/mykapi",
diff --git a/pages.json b/pages.json
index f3532d4..3dfba05 100644
--- a/pages.json
+++ b/pages.json
@@ -2017,6 +2017,20 @@
 			  "u-icon": "view"
             }
           }
+        },
+        {
+        	"path" : "coups-goods-list",
+        	"style" : 
+        	{
+				"navigationStyle": "custom",
+        		"navigationBarTitleText" : "浼樻儬鍗峰晢鍝侀〉闈�",
+				"componentPlaceholder": {
+				  "u-navbar": "view",
+				  "u-search": "view",
+				  "u-image": "view",
+				  "u-icon": "view"
+				}
+        	}
         }
       ]
     },
diff --git a/pages/cart/coupon/myCoupon.vue b/pages/cart/coupon/myCoupon.vue
index 8193706..30dfac2 100644
--- a/pages/cart/coupon/myCoupon.vue
+++ b/pages/cart/coupon/myCoupon.vue
@@ -252,8 +252,12 @@
       // uni.navigateTo({
       //   url: `/pages/navigation/search/searchPage?promotionsId=${item.couponId}&promotionType=COUPON`,
       // });
+	  if(item.scopeType ==='PORTION_GOODS'){
+		  //鑾峰彇浼樻儬鍗峰搴旂殑鍟嗗搧
+		  //鎸囧畾璺宠浆鍒板晢鍝佽鎯呴〉闈㈣繘琛岃喘涔�
+	  }
 	  uni.navigateTo({
-	  	url: '/pages/commodity-square/commoditySquare'
+	  	url: `/pages/commodity-square/coups-goods-list?promotionsId=${item.couponId}&promotionType=COUPON`
 	  });
     },
 
diff --git a/pages/commodity-square/coups-goods-list.vue b/pages/commodity-square/coups-goods-list.vue
new file mode 100644
index 0000000..6935d8e
--- /dev/null
+++ b/pages/commodity-square/coups-goods-list.vue
@@ -0,0 +1,435 @@
+<template>
+	<view class="container">
+		<u-navbar :is-back="false" title="浼樻儬鍗峰晢鍝�">
+			<u-icon name="arrow-left" size="34" @click="pageBack()" style="padding: 0 20rpx;"></u-icon>
+		</u-navbar>
+		<input type="text" value="flushDom" v-if="false" />
+		<view class="search">
+			<u-search class="nav-search" @change='searchGoods' v-model="searchInfo" placeholder="鎼滅储鍟嗗搧"
+				:show-action="false"></u-search>
+		</view>
+		<view style="display: flex;padding: 32rpx;box-sizing: border-box;height: 100%;">
+			<view class="navigatorMenue">
+				<scroll-view class="typeNavigation" :scroll-y="true" :show-scrollbar="false">
+					<view class="typeNavigationItem" :class="{typeNavigationItemCheck:currentCategort ==item.id}"
+						@click="chooseCategory(item.id)" v-for="item in categoryList" :key="item.id">
+						{{item.name}}
+					</view>
+				</scroll-view>
+
+			</view>
+			<view class="goodsInfos" style="position: relative;">
+				<scroll-view :scroll-y="true" :show-scrollbar="false" style="height: 100%;"
+					@scrolltolower="loadMoreData()">
+
+					<view class="goodsItem" v-for="item in goodsList" :key="item.id"
+						@click.prevent="goToGoodsInfo(item.id)" style="display: flex;align-items: flex-start;justify-content: flex-start;margin: 10rpx 0;
+						box-sizing: border-box; ">
+						<view class="pic" style="position: relative;">
+							<image :src="item.thumbnail" mode="aspectFill"
+								style="height: 150rpx;width: 150rpx;border-radius: 24rpx;">
+							</image>
+							<text style="background-color: #f92e20;color: #fff;
+								font-weight: bold;border-radius: 12rpx;padding: 5rpx;
+								margin-right: 15rpx;position: absolute;top: 0;left: 0;" v-if="item.salesModel==='PRESALE'">棰勫敭</text>
+						</view>
+						<view class="goodsContent" style="display: flex;align-items: flex-start;justify-content: space-between;
+							margin-left: 10rpx;flex-direction: column;width: 100%;">
+							<view class="goodsName">
+								<text>{{item.goodsName}}</text>
+							</view>
+
+							<view
+								style="display: flex; justify-content: space-between;align-items:center; 100%;margin-top: 32rpx;width: 100%;">
+								<view class="goodsPrice">锟{item.price}}</view>
+								<view class="addCard" style="display: flex; align-items: center;">
+									<view style="padding: 20rpx 0 20rpx 20rpx;" v-show="item.cardNum && item.cardNum>0"
+										@click.stop="miousCardNum($event,item.id)">
+										<uni-icons type="minus" size="30" color="#96a6bc"></uni-icons>
+									</view>
+									<input v-show="item.cardNum&&item.cardNum>0" @click.stop="" :maxlength="2"
+										type="number" confirm-type="numeric" style="width: 50rpx;text-align: center;"
+										v-model="item.cardNum" :disabled="true" />
+									<view style="padding: 20rpx 20rpx 20rpx 0;"
+										@click.stop="addCardNum($event,item.id)">
+										<uni-icons type="plus" size="30" color="#e06c75"></uni-icons>
+										<!-- <text class="iconfont" style="size: 1.5em;">&#xe7b1;</text> -->
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+			<view @click="gotoCardList()" style="position: absolute;bottom: 120rpx; right: 32rpx;">
+				<div class="settlement">鍘昏喘鐗╄溅缁撶畻</div>
+			</view>
+		</view>
+	</view>
+
+	</view>
+</template>
+
+<script>
+	import TopBar from "@/components/TopBar.vue";
+	import {
+		getCategoryList,
+		getGoodsList
+	} from "@/api/goods.js";
+	import {
+		addCard,
+		getCarts,
+		deleteSkuItem
+	} from '@/api/trade.js'
+	import {
+		getSTSToken
+	} from '@/api/common.js'
+	import {
+		data
+	} from "../../components/uview-components/uview-ui/libs/mixin/mixin";
+	export default {
+		components: {
+			TopBar
+		},
+		data() {
+			return {
+				canGoToCarList: false,
+				nums: 10,
+				searchInfo: '',
+				//鍟嗗搧鍒楄〃
+				goodsList: [],
+				buttonHeight: 0,
+				//璁板綍涓ゅ垪楂樺害
+				//鍟嗗搧瀵艰埅鍒嗙被
+				categoryList: [],
+				//褰撳墠閫変腑鐨勫垎绫�
+				currentCategort: '',
+				//鏄剧ず娌℃湁鏁版嵁
+				canLoadMore: false,
+				//鏈�澶ч〉鏁�
+				maxPages: 0,
+				//鍒锋柊dom浣跨敤
+				flushDom: '',
+				//鏌ヨ鍟嗗搧闇�瑕佺殑鍙傛暟
+				getGoodsParam: {
+					keyword: '',
+					pageSize: 12,
+					pageNumber: 1,
+					categoryId: null,
+					canFilter: true,
+					needFilterPre: true
+				},
+			}
+		},
+		methods: {
+			pageBack() {
+				if (getCurrentPages().length == 1) {
+					uni.navigateTo({
+						url: '/pages/commodity-square/commoditySquare'
+					})
+				} else {
+					uni.navigateBack();
+				}
+
+			},
+			gotoCardList() {
+				uni.navigateTo({
+					url: '/pages/cusbar/cart/cartList'
+				})
+			},
+			addCardNum(e, id) {
+				this.goodsList.forEach(item => {
+					if (item.id === id) {
+						if (item.cardNum) {
+							item.cardNum++;
+						} else {
+							item.cardNum = 1;
+						}
+						this.flushDom = new Date().getMilliseconds();
+						console.log("閫変腑鐨勫晢鍝佷负------------------->", JSON.stringify(item))
+						const data = {
+							skuId: item.id,
+							num: item.cardNum
+						}
+						addCard(data)
+						return;
+					}
+				})
+
+			},
+			miousCardNum(e, id) {
+				for (let i = 0; i < this.goodsList.length; i++) {
+					const item = this.goodsList[i];
+					if (item.id === id) {
+						if (item.cardNum && item.cardNum > 1) {
+							item.cardNum--;
+						} else {
+							deleteSkuItem([id]);
+							item.cardNum = 0;
+							this.flushDom = new Date().getMilliseconds();
+							break; // 閫�鍑烘暣涓惊鐜�
+						}
+						this.flushDom = new Date().getMilliseconds();
+						const data = {
+							skuId: item.id,
+							num: item.cardNum
+						};
+						addCard(data);
+						break; // 閫�鍑烘暣涓惊鐜�
+					}
+				}
+				// this.goodsList.forEach(item => {
+				// 	console.log('娴嬭瘯涓轰粈涔堜笉杩涘叆寰幆1',id,JSON.stringify(item.cardNum))
+				// 	if (item.id === id) {
+				// 		console.log('娴嬭瘯涓轰粈涔堜笉杩涘叆寰幆2',id,JSON.stringify(item.cardNum))
+				// 		if (item.cardNum && item.cardNum > 1) {
+				// 			console.log('娴嬭瘯涓轰粈涔堜笉杩涘叆寰幆3',id,JSON.stringify(item.cardNum))
+				// 			item.cardNum--;
+				// 		} else {
+				// 			console.log('娴嬭瘯涓轰粈涔堜笉杩涘叆寰幆4',id,JSON.stringify(item.cardNum))
+				// 			deleteSkuItem([id])
+				// 			item.cardNum = 0;
+				// 			this.flushDom = new Date().getMilliseconds();
+				// 			return;
+				// 		}
+				// 		this.flushDom = new Date().getMilliseconds();
+				// 		console.log("閫変腑鐨勫晢鍝佷负------------------->", JSON.stringify(item))
+				// 		console.log(item.cardNum, item.id)
+				// 		const data = {
+				// 			skuId: item.id,
+				// 			num: item.cardNum
+				// 		}
+				// 		addCard(data)
+				// 		return;
+				// 	}
+				// })
+
+			},
+			topBarChange(titleObj) {
+				if (titleObj.index === 'home') {
+					uni.switchTab({
+						url: titleObj.pagePath
+					});
+				} else {
+					uni.redirectTo({
+						url: titleObj.pagePath
+					});
+				}
+			},
+			async searchGoods(keyWard) {
+				this.getGoodsParam.keyword = keyWard
+				this.getGoodsParam.pageNumber = 1
+				this.getGoodsParam.categoryId = ''
+				this.goodsList = [];
+				await this.getgoodsData();
+			},
+			confirm() {},
+			// 鎵撳紑绐楀彛
+			showDrawer(e) {
+				this.$refs[e].open()
+			},
+			// 鍏抽棴绐楀彛
+			closeDrawer(e) {
+				this.$refs[e].close()
+			},
+			// 鎶藉眽鐘舵�佸彂鐢熷彉鍖栬Е鍙�
+			change(e, type) {
+				this[type] = e
+			},
+			getvideoInfo(e, arrName, index) {
+				const wight = e.detail.width;
+				const height = e.detail.height;
+				this[arrName][index].width = 310 + 'rpx';
+				//璁$畻瀹介珮姣�
+				const videoHeight = Math.floor(310 / (wight / height))
+				this[arrName][index].height = videoHeight + 'rpx';
+				this[arrName][index].show = true;
+				//璁$畻闆嗗悎楂樺害
+				if (arrName === 'goodsList2') {
+					if (videoHeight > 300) {
+						this.listHeight2 += videoHeight;
+					} else if (videoHeight < 300) {
+						this.listHeight2 -= videoHeight;
+					}
+				}
+				if (arrName === 'goodsList1') {
+					if (videoHeight > 300) {
+						this.listHeight1 += videoHeight;
+					} else if (videoHeight < 300) {
+						this.listHeight1 -= videoHeight;
+					}
+				}
+				console.log(this[arrName][index].width, this[arrName][index].height)
+				this.flushDom = new Date();
+			},
+			goToGoodsInfo(id) {
+				const item = this.goodsList.find(item => id === item.id);
+				console.log(item)
+				uni.navigateTo({
+					url: `/pages/product/goods?id=${item.id}&goodsId=${item.goodsId}`
+				});
+			},
+			//瑙﹀簳鑾峰彇鏁版嵁
+			async loadMoreData() {
+				console.log("瑙﹀簳鍔犺浇------------銆�", this.maxPages)
+				if (this.getGoodsParam.pageNumber < this.maxPages) {
+					this.getGoodsParam.pageNumber++;
+					await this.getgoodsData()
+				} else {
+					this.canLoadMore = true;
+				}
+
+			},
+			//鑾峰彇鍒嗙被瀵艰埅鏍�
+			async loadCategoryList() {
+				let list = await getCategoryList(0);
+				list.data.result.unshift({
+					id: 'ALL',
+					name: '鍏ㄩ儴'
+				})
+				this.categoryList = list.data.result
+			},
+			async getgoodsData() {
+				const cardInfos = await getCarts();
+				// 澶勭悊璐墿杞︿俊鎭�
+				let cardMap = new Map();
+				this.canGoToCarList = cardInfos.data.result.cartList.length > 0
+				cardInfos.data.result.cartList.forEach(item => {
+
+					item.skuList.forEach(sku => {
+						cardMap.set(sku.goodsSku.id, {
+							skuId: sku.goodsSku.id,
+							num: sku.num
+						})
+					})
+
+				})
+				//鍥炴樉璐墿杞︽暟鎹�
+				const goodsList = await getGoodsList(this.getGoodsParam);
+				goodsList.data.result.records.forEach(item => {
+					const cardItem = cardMap.get(item.id);
+					if (cardItem) {
+						item.cardNum = cardItem.num;
+					}
+				})
+				this.goodsList = [...this.goodsList, ...goodsList.data.result.records];
+				this.maxPages = goodsList.data.result.pages
+				console.log('this.goodsList----------------------->', JSON.stringify(goodsList.data.result))
+
+			},
+			async chooseCategory(id) {
+				this.searchInfo = '';
+				this.canLoadMore = false;
+				this.currentCategort = id
+				this.getGoodsParam.categoryId = id
+				this.getGoodsParam.keyword = ''
+				this.getGoodsParam.pageNumber = 1
+				this.goodsList = []
+				if (id === 'ALL') {
+					this.getGoodsParam.categoryId = '';
+				} else {
+					this.getGoodsParam.categoryId = id
+				}
+				await this.getgoodsData();
+				console.log(this.maxPages)
+			}
+		},
+
+		async onLoad(option) {
+			console.log('---------------------->鑾峰彇浼樻儬鍗蜂俊鎭�', option)
+			this.getGoodsParam.promotionType = option.promotionType
+			this.getGoodsParam.promotionsId = option.promotionsId
+			// 鑾峰彇鐘舵�佹爮楂樺害
+			const systemInfo = uni.getSystemInfoSync();
+
+			this.buttonHeight = systemInfo.statusBarHeight;
+			console.log('-------------------------------->', JSON.stringify(systemInfo))
+			await this.loadCategoryList();
+			this.getGoodsParam.pageNumber = 1
+			this.getGoodsParam.categoryId = ""
+			this.getGoodsParam.keyword = ""
+			await this.getgoodsData()
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.container {
+		width: 750rpx;
+		padding-bottom: 64rpx;
+		height: 100vh;
+		overflow: hidden;
+
+	}
+
+	.settlement {
+		width: 180rpx;
+		height: 70rpx;
+		line-height: 70rpx;
+		background: linear-gradient(91deg, $light-color 1%, $aider-light-color 99%);
+		border-radius: 900rpx;
+		text-align: center;
+		color: #fff;
+		margin-right: 10rpx;
+	}
+
+	.navigatorMenue {
+		margin-left: -32rpx;
+		background-color: #f4f4f4;
+		height: 100%;
+		width: 200rpx;
+		border-radius: 0 24rpx 24rpx 0;
+	}
+
+	.goodsInfos {
+		width: 500rpx;
+		margin-left: 10rpx;
+	}
+
+	.topBar {
+		position: fixed;
+		top: 20rpx;
+		left: 20rpx;
+		z-index: 1000;
+		background-color: #ffffff;
+	}
+
+	.typeNavigation {
+		box-sizing: border-box;
+		padding: 10rpx;
+		height: 100%;
+	}
+
+	.typeNavigationItem {
+		padding: 24rpx;
+		font-size: 28rpx;
+		color: black;
+		margin-top: 10rpx;
+	}
+
+	.typeNavigationItemCheck {
+		color: #ef321e;
+		font-size: 32rpx;
+		font-weight: bold;
+		border: 0;
+	}
+
+	.goodsName {
+		padding: 10rpx;
+		box-sizing: border-box;
+		display: -webkit-box;
+		-webkit-box-orient: vertical;
+		-webkit-line-clamp: 1;
+		height: 52rpx;
+		font-weight: bold;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		text-align: start;
+		vertical-align: middle;
+	}
+
+	.goodsPrice {
+		color: red;
+		font-weight: bold;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/product/goods.vue b/pages/product/goods.vue
index ea7f328..a7bbf36 100644
--- a/pages/product/goods.vue
+++ b/pages/product/goods.vue
@@ -648,7 +648,7 @@
       this.goodsSpec = response.data.result.specs;
       this.PromotionList = response.data.result.promotionMap;
       this.goodsParams = response.data.result.goodsParamsDTOList || [];
-
+	console.log('浼樻儬鍗锋椿鍔�--------------------銆�',response.data.result.promotionMap)
       // 鍒ゆ柇鏄惁鎷煎洟娲诲姩鎴栬�呯Н鍒嗗晢鍝� 濡傛灉鏈夊垯鏄剧ず鎷煎洟娲诲姩淇℃伅
       this.PromotionList &&
         Object.keys(this.PromotionList).forEach((item) => {

--
Gitblit v1.8.0