From 08300102d46271dd34073465763debd8507e8552 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 26 二月 2026 16:15:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 mini-program/pages.json                                  |    6 
 mini-program/pages/zhuanqu/zhuanqu.vue                   |   21 +
 mini-program/pages/index/index.vue                       |   60 +++-
 mini-program/pages/my-collection/my-collection.vue       |   90 +++++++
 mini-program/App.vue                                     |    3 
 mini-program/pages/details/details.vue                   |   38 ++
 mini-program/utils/http.api.js                           |   12 +
 mini-program/unpackage/dist/dev/mp-weixin/common/main.js |    3 
 mini-program/pages/search/search.vue                     |   36 ++
 mini-program/pages/address/address.vue                   |   18 +
 mini-program/pages/confirm-order/confirm-order.vue       |  360 ++++++++++++++++++++++++-------
 11 files changed, 512 insertions(+), 135 deletions(-)

diff --git a/mini-program/App.vue b/mini-program/App.vue
index 0685b0a..3898567 100644
--- a/mini-program/App.vue
+++ b/mini-program/App.vue
@@ -104,11 +104,12 @@
 						const qqmapsdk = new QQMapWX({
 							key: 'HEIBZ-QJLLM-SZ36X-6ZBHI-S6Y2J-S6FND'
 						});
+						console.log(locParam)
 						qqmapsdk.reverseGeocoder({
 							locParam,
 							success: function(res) {
 								console.log(res, '==================鑾峰彇鍦板潃');
-								that.$store.commit('setPosition', res)
+								that.$store.commit('setPosition', res.result)
 								that.$isResolve()
 							},
 							fail: (err) => {
diff --git a/mini-program/pages.json b/mini-program/pages.json
index a525c57..0a16566 100644
--- a/mini-program/pages.json
+++ b/mini-program/pages.json
@@ -185,6 +185,12 @@
 			"style": {
 				"navigationBarTitleText": "閿�鍞�"
 			}
+		},
+		{
+			"path": "pages/zhuanqu/zhuanqu",
+			"style": {
+				"navigationBarTitleText": "涓撳尯"
+			}
 		}
 	],
 	"subPackages": [
diff --git a/mini-program/pages/address/address.vue b/mini-program/pages/address/address.vue
index 42d1412..fa56059 100644
--- a/mini-program/pages/address/address.vue
+++ b/mini-program/pages/address/address.vue
@@ -1,6 +1,6 @@
 <template>
 	<view class="list">
-		<view class="list-item" v-for="(item, index) in list" :key="index">
+		<view class="list-item" v-for="(item, index) in list" :key="index" @click="selectRow(item)">
 			<view class="list-item-left">
 				<view class="list-item-a">
 					<text>{{item.name}}</text>
@@ -9,7 +9,7 @@
 				</view>
 				<view class="list-item-b">{{item.areaDetail}}{{item.addr}}</view>
 			</view>
-			<image src="/static/icon/address_ic_edit@2x.png" mode="widthFix" @click="edit(item)"></image>
+			<image src="/static/icon/address_ic_edit@2x.png" mode="widthFix" @click.stop="edit(item)"></image>
 		</view>
 		<view class="button" @click="add">
 			<image src="/static/images/icon_add_dz@2x.png" mode="widthFix"></image>
@@ -22,13 +22,25 @@
 	export default {
 		data() {
 			return {
-				list: []
+				list: [],
+				type: null
 			};
 		},
 		onShow() {
 			this.getAddr()
 		},
+		onLoad(option) {
+			if (option.type) {
+				this.type = option.type
+			}
+		},
 		methods: {
+			selectRow(item) {
+				if (this.type == 1) {
+					uni.$emit('update', item)
+					uni.navigateBack({ delta: 1 });
+				}
+			},
 			getAddr() {
 				this.$u.api.findListAddr()
 					.then(res => {
diff --git a/mini-program/pages/confirm-order/confirm-order.vue b/mini-program/pages/confirm-order/confirm-order.vue
index d5db9c4..f239f1c 100644
--- a/mini-program/pages/confirm-order/confirm-order.vue
+++ b/mini-program/pages/confirm-order/confirm-order.vue
@@ -1,71 +1,79 @@
 <template>
-	<view class="box">
+	<view class="box" v-if="orderInfo">
 		<view class="box-addr">
 			<view class="box-addr-list">
-				<view class="box-addr-list-row active">
+				<view @click="changeOrderType(0)" :class="receiveType === 0 ? 'box-addr-list-row active' : 'box-addr-list-row'">
 					<image src="/static/icon/ic_wuliu_sel@2x.png" mode="widthFix"></image>
 					<text>鐗╂祦閰嶉��</text>
 				</view>
-				<view class="box-addr-list-row">
+				<view @click="changeOrderType(1)" :class="receiveType === 1 ? 'box-addr-list-row active' : 'box-addr-list-row'">
 					<image src="/static/icon/ic_daodian@2x.png" mode="widthFix"></image>
 					<text>闂ㄥ簵鑷彁</text>
 				</view>
 			</view>
 			<!-- 鐗╂祦閰嶉�� -->
-			<!-- <view class="box-addr-val">
+			<view class="box-addr-val" v-if="receiveType === 0">
 				<image class="icon1" src="/static/icon/ic_location@2x.png" mode="widthFix"></image>
-				<view class="info">
-					<view class="info-top">
-						<text>鏉庨噾骞�</text>
-						<text>181777889338</text>
-					</view>
-					<view class="info-bottom">
-						瀹夊窘鐪佸悎鑲ュ競缁忓紑鍖烘澗璋疯矾鍑ゅ嚢鍥介檯B搴�808 璞嗙背绉戞妧鏈夐檺鍏徃
+				<view class="info" @click="jumpAddr">
+					<template v-if="addr">
+						<view class="info-top">
+							<text>{{addr.name}}</text>
+							<text>{{addr.phone}}</text>
+						</view>
+						<view class="info-bottom">
+							{{addr.areaDetail}}{{addr.addr}}
+						</view>
+					</template>
+					<view class="info-wu" v-else>
+						<text>閫夋嫨鍦板潃</text>
+						<image class="icon2" src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
 					</view>
 				</view>
-				<image class="icon2" src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
-			</view> -->
+				<image class="icon2" src="/static/icon/ic_ar2@2x.png" mode="widthFix" v-if="addr"></image>
+			</view>
 			<!-- 闂ㄥ簵鑷彁 -->
-			<view class="box-addr-val">
-				<image class="icon1" src="/static/icon/ic_address@2x1.png" mode="widthFix"></image>
-				<view class="info">
-					<view class="info-top">
-						<text>XXX缁忛攢鍟�</text>
+			<template v-if="receiveType === 1">
+				<view class="box-addr-val">
+					<image class="icon1" src="/static/icon/ic_address@2x1.png" mode="widthFix"></image>
+					<view class="info">
+						<view class="info-top">
+							<text>XXX缁忛攢鍟�</text>
+						</view>
+						<view class="info-bottom">
+							瀹夊窘鐪佸悎鑲ュ競缁忓紑鍖烘澗璋疯矾鍑ゅ嚢鍥介檯B搴�808瀹�
+						</view>
 					</view>
-					<view class="info-bottom">
-						瀹夊窘鐪佸悎鑲ュ競缁忓紑鍖烘澗璋疯矾鍑ゅ嚢鍥介檯B搴�808瀹�
+					<image class="icon2" src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
+				</view>
+				<view class="box-addr-time">
+					<text>钀ヤ笟鏃堕棿锛�</text>
+					<text>鍛ㄤ竴鑷冲懆浜� 09:00-19:00</text>
+				</view>
+				<view class="box-addr-dz">
+					<view class="box-addr-dz-left">
+						<text>鑱旂郴鐢佃瘽锛�</text>
+						<text>0551-87899903</text>
+					</view>
+					<view class="box-addr-dz-r">
+						<image src="/static/icon/ic_address@2x.png" mode="widthFix"></image>
+						<text>1.3km</text>
 					</view>
 				</view>
-				<image class="icon2" src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
-			</view>
-			<view class="box-addr-time">
-				<text>钀ヤ笟鏃堕棿锛�</text>
-				<text>鍛ㄤ竴鑷冲懆浜� 09:00-19:00</text>
-			</view>
-			<view class="box-addr-dz">
-				<view class="box-addr-dz-left">
-					<text>鑱旂郴鐢佃瘽锛�</text>
-					<text>0551-87899903</text>
-				</view>
-				<view class="box-addr-dz-r">
-					<image src="/static/icon/ic_address@2x.png" mode="widthFix"></image>
-					<text>1.3km</text>
-				</view>
-			</view>
+			</template>
 		</view>
 		<view class="box-shop">
-			<view class="item">
+			<view class="item" v-for="(item, index) in orderInfo.goodsCalculateList" :key="index">
 				<view class="item-image">
-					<image src="/static/logo.png" mode="widthFix"></image>
+					<image :src="item.skuImg" mode="widthFix"></image>
 				</view>
 				<view class="item-info">
-					<view class="item-info-title">涓仈鑹剧瀹介娇 閫傜敤闆锋矁/涓仈/涔呬繚鐢�</view>
+					<view class="item-info-title">{{item.name}}</view>
 					<view class="item-info-bottom">
-						<view class="price">楼499.00</view>
+						<view class="price">楼{{item.skuAmount}}</view>
 						<view class="num">
-							<view class="num-add">-</view>
-							<view class="num-total">0</view>
-							<view class="num-add">+</view>
+							<!-- <view class="num-add">-</view> -->
+							<view class="num-total">鏁伴噺锛歿{item.goodsNum}}</view>
+							<!-- <view class="num-add">+</view> -->
 						</view>
 					</view>
 				</view>
@@ -75,104 +83,95 @@
 				<view class="info-item">
 					<view class="info-item-label">鍟嗗搧鎬讳环</view>
 					<view class="info-item-price">
-						<text>897</text>
-						<text>.00</text>
+						<text>{{orderInfo.amount}}</text>
 					</view>
 				</view>
 				<view class="info-item">
 					<view class="info-item-label">杩愯垂</view>
-					<view class="info-item-price1">楼10.00</view>
+					<view class="info-item-price1">楼{{orderInfo.mailAmount}}</view>
 				</view>
 				<view class="info-item">
 					<view class="info-item-label">浼樻儬鍒�</view>
-					<view class="info-item-price1">
-						-楼100.00
+					<view class="info-item-price1" @click="show = true">
+						-楼{{orderInfo.couponAmount}}
 						<image src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
 					</view>
 				</view>
 				<view class="info-item">
 					<view class="info-item-label">绉垎鎶垫墸</view>
-					<view class="info-item-price1">
-						-楼10.00
+					<view class="info-item-price1" @click="show1 = true">
+						-楼{{orderInfo.integralAmount}}
 						<image src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
 					</view>
 				</view>
 				<view class="info-item">
 					<view class="info-item-label" style="color: #222222; font-size: 30rpx; font-weight: 600;">搴斾粯娆�</view>
 					<view class="info-item-price2">
-						<text>797</text>
-						<text>.00</text>
+						<text>{{orderInfo.payAmount}}</text>
 					</view>
 				</view>
 			</view>
 		</view>
 		<view class="remark">
 			<view class="remark-label">璁㈠崟澶囨敞</view>
-			<input type="text" placeholder="璇疯緭鍏ュ娉�" />
+			<input type="text" v-model="remark" placeholder="璇疯緭鍏ュ娉�" />
 		</view>
 		<view class="play">
 			<view class="play-info">
 				<image src="/static/icon/order_ic_wepay@2x.png" mode="widthFix"></image>
 				<text>寰俊鏀粯</text>
 			</view>
-			<image src="/static/icon/ic_agree@2x.png" mode=""></image>
+			<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix"></image>
 		</view>
 		<view class="footer">
 			<view class="edit">
-				<view class="edit-btn">绔嬪嵆鏀粯 楼799.00</view>
+				<view class="edit-btn" @click="payment">绔嬪嵆鏀粯 楼{{orderInfo.payAmount}}</view>
 			</view>
 			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
 		</view>
 		<!-- 浼樻儬鍒� -->
-		<u-popup :show="show" round="15" :closeable="true" mode="bottom">
+		<u-popup :show="show" round="15" :closeable="true" @close="show = false" mode="bottom">
 			<view class="coupon">
 				<view class="coupon-title">閫夋嫨浼樻儬鍒�</view>
-				<view class="coupon-list">
-					<view class="coupon-list-item">
-						<view class="jiage">
-							<text>100</text>
-							<text>婊�300鍙敤</text>
+				<scroll-view scroll-y class="coupon-list">
+					<view class="coupon-list-item" v-for="(item, index) in orderInfo.memberCouponList" :key="index" @click="selectCoupon(index)">
+						<view class="jiage" v-if="item.couponType === 0">
+							<text>{{item.price}}</text>
+							<text>婊{item.limitPrice}}鍙敤</text>
+						</view>
+						<view class="jiage1" v-if="item.couponType === 1">
+							<text>{{item.price}}</text>
+							<text>婊{item.limitPrice}}鍙敤</text>
 						</view>
 						<view class="juaninfo">
 							<view class="juaninfo-info">
-								<text>鏂板涓撲韩</text>
-								<text>2020.5.25 鏃ュ埌鏈�</text>
+								<text>{{item.name}}</text>
+								<text>{{item.endDate.substring(0, 10)}} 鏃ュ埌鏈�</text>
 							</view>
-							<image src="/static/icon/ic_agree@2x.png" mode="widthFix"></image>
+							<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="!item.active"></image>
+							<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix" v-else></image>
 						</view>
 					</view>
-					<view class="coupon-list-item disable">
-						<view class="jiage">
-							<text>100</text>
-							<text>婊�300鍙敤</text>
-						</view>
-						<view class="juaninfo">
-							<view class="juaninfo-info">
-								<text>鏂板涓撲韩</text>
-								<text>2020.5.25 鏃ュ埌鏈�</text>
-							</view>
-							<image src="/static/icon/ic_agree@2x.png" mode="widthFix"></image>
-						</view>
-					</view>
-				</view>
-				<view class="coupon-btn">纭畾</view>
+				</scroll-view>
+				<view class="coupon-btn" @click="confirmCoupon">纭畾</view>
 			</view>
 		</u-popup>
 		<!-- 绉垎 -->
-		<u-popup :show="show1" round="15" :closeable="true" mode="bottom">
+		<u-popup :show="show1" round="15" @close="show1 = false" :closeable="true" mode="bottom">
 			<view class="coupon">
 				<view class="coupon-title">浣跨敤绉垎</view>
 				<view class="coupon-content">
 					<view class="coupon-content-a">
 						<text>褰撳墠绉垎锛�</text>
-						<text>1200</text>
+						<text>{{orderInfo.surplusIntegral || 0}}</text>
 					</view>
-					<view class="coupon-content-b">
-						<text>鏈崟鍙敤绉垎锛�1000</text>
-						<image src="/static/icon/ic_agree_sel@2x.png" mode="widthFix"></image>
+					<view class="coupon-content-b" @click="useIntegralCopy = useIntegralCopy === 1 ? 0 : 1">
+						<text>鏈崟鍙敤绉垎锛歿{orderInfo.deductIntegral}}</text>
+						<image src="/static/icon/ic_agree_sel@2x.png" mode="widthFix" v-if="useIntegralCopy === 1"></image>
+						<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-else></image>
 					</view>
 				</view>
-				<view class="coupon-btn">纭畾</view>
+				<view class="coupon-btn" @click="confirmJF">纭畾</view>
 			</view>
 		</u-popup>
 		<!-- 闂ㄥ簵 -->
@@ -226,15 +225,154 @@
 </template>
 
 <script>
+	import { mapState } from 'vuex'
 	export default {
+		computed: {
+			...mapState(['position'])
+		},
 		data() {
 			return {
 				show: false,
 				show1: false,
 				show2: false,
-				show3: true,
-				keyword: ''
+				show3: false,
+				keyword: '',
+				orderInfo: null,
+				addr: null,
+				remark: '',
+				useIntegralCopy: 0,
+				useIntegral: 0,
+				receiveType: 0,
+				couponId: null,
+				payDetailRequestList: []
 			};
+		},
+		onLoad(option) {
+			const shop = uni.getStorageSync('shop');
+			if (shop) {
+				this.payDetailRequestList = shop
+				uni.removeStorageSync('shop');
+			}
+			uni.$on('update', (data) => {
+				this.addr = data
+				this.getOrderInfo()
+			})
+			this.getDefaultAddr()
+		},
+		methods: {
+			// 鑾峰彇闄勮繎闂ㄥ簵
+			getShopLists() {
+				this.$u.api.getShopList({
+					cityName: this.position.ad_info.city,
+					lat: this.position.location.lat,
+					lgt: this.position.location.lng
+				}).then(res => {
+					if (res.code === 200) {
+						console.log(res)
+					}
+				})
+			},
+			// 鏀粯
+			payment() {
+				this.$u.api.orderPay({
+					addressId: this.addr.id,
+					couponId: this.couponId,
+					payDetailRequestList: this.payDetailRequestList,
+					receiveType: this.receiveType,
+					useIntegral: this.useIntegral,
+					remark: this.remark,
+					titlePrice: this.orderInfo.payAmount
+				}).then(res => {
+					if (res.code === 200) {
+						// 绉垎鎶垫墸
+						if (res.data.payType === 1) {
+							uni.reLaunch({
+								url: `/pagesA/pages/order-details/order-details?id=${res.data.orderId}&userType=0`
+							})
+						} else {
+							wx.requestPayment({
+								timeStamp: res.data.response.timeStamp,
+								nonceStr: res.data.response.nonceStr,
+								package: res.data.response.packageValue,
+								signType: res.data.response.signType,
+								paySign: res.data.response.paySign,
+								success (pay) {
+									if (pay.errMsg === "requestPayment:ok") {
+										uni.reLaunch({
+											url: `/pagesA/pages/order-details/order-details?id=${res.data.orderId}&userType=0`
+										})
+									} else {
+										uni.showToast({ title: '璁㈠崟鍙栨秷鏀粯', icon: 'none' })
+									}
+								}
+							})
+						}
+					}
+				})
+			},
+			// 纭畾浣跨敤绉垎
+			confirmJF() {
+				this.useIntegral = this.useIntegralCopy
+				this.show1 = false
+				this.getOrderInfo()
+			},
+			// 纭畾閫夋嫨浼樻儬鍒�
+			confirmCoupon() {
+				let arr = this.orderInfo.memberCouponList.filter(item => item.active)
+				if (arr.length > 0) {
+					this.couponId = arr[0].id
+				}
+				this.show = false
+				this.getOrderInfo()
+			},
+			// 閫夋嫨浼樻儬鍒�
+			selectCoupon(i) {
+				this.orderInfo.memberCouponList.forEach((item, index) => {
+					item.active = index === i
+				})
+			},
+			// 鑾峰彇璁㈠崟璇︾粏淇℃伅
+			getOrderInfo() {
+				this.$u.api.orderPayConfirm({
+					addressId: this.addr ? this.addr.id : null,
+					couponId: this.couponId,
+					payDetailRequestList: this.payDetailRequestList,
+					receiveType: this.receiveType,
+					useIntegral: this.useIntegral
+				}).then(res => {
+					if (res.code === 200) {
+						if (!res.data.memberCouponList) {
+							res.data.memberCouponList = []
+						} else {
+							res.data.memberCouponList.forEach(item => {
+								item.active = false
+							})
+						}
+						this.orderInfo = res.data
+					}
+				})
+			},
+			changeOrderType(type) {
+				this.receiveType = type
+				if (this.receiveType === 1) {
+					this.getShopLists()
+				}
+				this.getOrderInfo()
+			},
+			jumpAddr() {
+				uni.navigateTo({
+					url: '/pages/address/address?type=1'
+				})
+			},
+			getDefaultAddr() {
+				this.$u.api.findDefault()
+					.then(res => {
+						if (res.code === 200) {
+							this.addr = res.data
+							this.getOrderInfo()
+						}
+					})
+			}
 		}
 	}
 </script>
@@ -434,6 +572,7 @@
 			}
 			.coupon-list {
 				width: 100%;
+				max-height: 600rpx;
 				display: flex;
 				flex-direction: column;
 				.disable {
@@ -481,6 +620,35 @@
 								color: #E4001D;
 								&::before {
 									content: '锟�';
+									font-weight: 600;
+									font-size: 24rpx;
+									color: #E4001D;
+								}
+							}
+							&:nth-child(2) {
+								font-weight: 400;
+								font-size: 24rpx;
+								color: #E93047;
+								margin-top: 8rpx;
+							}
+						}
+					}
+					.jiage1 {
+						flex-shrink: 0;
+						width: 208rpx;
+						height: 100%;
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						justify-content: center;
+						border-right: 1rpx dashed #E3C1C1;
+						text {
+							&:nth-child(1) {
+								font-weight: 600;
+								font-size: 44rpx;
+								color: #E4001D;
+								&::after {
+									content: '鎶�';
 									font-weight: 600;
 									font-size: 24rpx;
 									color: #E4001D;
@@ -868,6 +1036,7 @@
 				}
 				.info {
 					flex: 1;
+					min-height: 48rpx;
 					display: flex;
 					flex-direction: column;
 					.info-top {
@@ -893,6 +1062,23 @@
 						color: #333333;
 						margin-top: 14rpx;
 					}
+					.info-wu {
+						flex: 1;
+						height: 100%;
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						text {
+							font-weight: 400;
+							font-size: 26rpx;
+							color: #333333;
+						}
+						image {
+							width: 12rpx;
+							height: 24rpx;
+							margin: 0 !important;
+						}
+					}
 				}
 				.icon2 {
 					flex-shrink: 0;
diff --git a/mini-program/pages/details/details.vue b/mini-program/pages/details/details.vue
index 512ff82..682eca0 100644
--- a/mini-program/pages/details/details.vue
+++ b/mini-program/pages/details/details.vue
@@ -27,9 +27,10 @@
 		<view class="footer">
 			<view class="edit">
 				<view class="edit-left">
-					<view class="edit-left-row" @click="toIndex">
-						<image src="/static/icon/detail_ic_home@2x.png" mode="widthFix"></image>
-						<text>棣栭〉</text>
+					<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>
@@ -71,9 +72,33 @@
 			this.cardNum()
 		},
 		methods: {
+			shoucang() {
+				if (this.info.collectStatus === 1) {
+					this.$u.api.cancelbatch({ ids: this.info.id })
+						.then(res => {
+							if (res.code === 200) {
+								this.info.collectStatus = 0
+							}
+						})
+				} else {
+					this.$u.api.saveCollect({ objId: this.info.id, type: 1 })
+						.then(res => {
+							if (res.code === 200) {
+								this.info.collectStatus = 1
+							}
+						})
+				}
+			},
 			submit() {
+				let shop = [
+					{
+						goodsNum: 1,
+						goodsSkuId: this.info.goodsSkuResponseList[0].id
+					}
+				]
+				uni.setStorageSync('shop', shop)
 				uni.navigateTo({
-					url: '/pages/confirm-order/confirm-order?id=' + this.id
+					url: '/pages/confirm-order/confirm-order'
 				})
 			},
 			addCard(e) {
@@ -91,11 +116,6 @@
 			toCard() {
 				uni.navigateTo({
 					url: '/pages/shopping-cart/shopping-cart'
-				})
-			},
-			toIndex() {
-				uni.switchTab({
-					url: '/pages/index/index'
 				})
 			},
 			cardNum() {
diff --git a/mini-program/pages/index/index.vue b/mini-program/pages/index/index.vue
index 14f505b..d6f113a 100644
--- a/mini-program/pages/index/index.vue
+++ b/mini-program/pages/index/index.vue
@@ -6,7 +6,7 @@
 				<view :style="{ width: '100%', height: statusbarHeight + 'px' }"></view>
 				<view class="head-bar-nav" :style="{ height: navHeight + 'px' }" @click="openLoacing">
 					<image src="/static/icon/home_ic_location@2x.png" mode="widthFix"></image>
-					<text>鑾茶姳绉戞妧鍒涙柊浜т笟鍥璅搴�</text>
+					<text>{{position.formatted_addresses.recommend}}</text>
 					<u-icon name="arrow-right" color="#222222" size="13"></u-icon>
 				</view>
 			</view>
@@ -20,7 +20,7 @@
 			<u-scroll-list indicatorActiveColor="#004096">
 				<view class="scroll-list">
 					<view class="scroll-list__line" v-for="(item, index) in labels" :key="index">
-						<view class="cate-item" v-for="(child, index) in item" :key="index">
+						<view class="cate-item" v-for="(child, index) in item" :key="index" @click="jumpSearch(child, 1)">
 							<view class="cate-item-image">
 								<image :src="child.imgUrl" mode="widthFix"></image>
 							</view>
@@ -35,7 +35,7 @@
 			<u-scroll-list indicatorActiveColor="#004096">
 				<view class="scroll-list" style="padding: 0;">
 					<view class="scroll-list__line" v-for="(item, index) in brand" :key="index">
-						<view class="cate-item1" v-for="(child, index) in item" :key="index">
+						<view class="cate-item1" v-for="(child, index) in item" :key="index" @click="jumpSearch(child, 2)">
 							<image :src="child.imgUrl" mode="widthFix"></image>
 							<text>{{child.name}}</text>
 						</view>
@@ -44,7 +44,7 @@
 			</u-scroll-list>
 			<view class="title">
 				<view class="title-left">鍝佽川涓撳尯</view>
-				<view class="title-right">
+				<view class="title-right" @click="toZhuanqu">
 					<text>鏇村</text>
 					<u-icon name="arrow-right" color="#AAAAAA" size="10"></u-icon>
 				</view>
@@ -143,6 +143,11 @@
 			this.getGoodsList()
 		},
 		methods: {
+			toZhuanqu() {
+				uni.navigateTo({
+					url: '/pages/zhuanqu/zhuanqu'
+				})
+			},
 			addCard(e) {
 				this.$u.api.addCart({
 					goodsId: e.id,
@@ -260,10 +265,19 @@
 					highAccuracyExpireTime: 3000,
 					isHighAccuracy: true,
 					success: function(addr) {
+						
+					}
+				});
+			},
+			openLoacing() {
+				var that = this;
+				uni.chooseLocation({
+					success(res1) {
 						const locParam = {
-							latitude: addr.latitude,
-							longitude: addr.longitude
+							latitude: res1.latitude,
+							longitude: res1.longitude
 						};
+						console.log(locParam)
 						const qqmapsdk = new QQMapWX({
 							key: 'HEIBZ-QJLLM-SZ36X-6ZBHI-S6Y2J-S6FND'
 						});
@@ -271,26 +285,32 @@
 						qqmapsdk.reverseGeocoder({
 							locParam,
 							success: function(res) {
-								console.log(res, '==================鑾峰彇鍦板潃');
+								console.log(res,  '==================index鑾峰彇鍦板潃')
+								that.$store.commit('setPosition', res.result)
 							},
 							fail: (err) => {
 								console.error('鑾峰彇浣嶇疆澶辫触===========', err);
 							}
 						});
 					}
-				});
+				})
 			},
-			openLoacing() {
-				uni.chooseLocation({
-					success(res) {
-						console.log(res)
+			jumpSearch(row, type) {
+				if (row) {
+					if (type === 1) {
+						uni.navigateTo({
+							url: '/pages/search/search?categoryId=' + row.id
+						})
+					} else {
+						uni.navigateTo({
+							url: '/pages/search/search?applicableBrandId=' + row.id
+						})
 					}
-				})
-			},
-			jumpSearch() {
-				uni.navigateTo({
-					url: '/pages/search/search'
-				})
+				} else {
+					uni.navigateTo({
+						url: '/pages/search/search'
+					})
+				}
 			}
 		}
 	}
@@ -380,10 +400,14 @@
 					}
 
 					text {
+						max-width: 400rpx;
 						font-weight: 500;
 						font-size: 32rpx;
 						color: #111111;
 						margin-right: 8rpx;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
 					}
 				}
 			}
diff --git a/mini-program/pages/my-collection/my-collection.vue b/mini-program/pages/my-collection/my-collection.vue
index 5a0c510..97cb341 100644
--- a/mini-program/pages/my-collection/my-collection.vue
+++ b/mini-program/pages/my-collection/my-collection.vue
@@ -5,7 +5,7 @@
 				<text>{{item.name}}</text>
 				<view class="cate-item-x" v-if="type === item.id"></view>
 			</view>
-			<view class="cate-item" style="flex: 0.7; justify-content: flex-end; padding-right: 30rpx; box-sizing: border-box;" @click="edit = !edit">
+			<view class="cate-item" style="flex: 0.7; justify-content: flex-end; padding-right: 30rpx; box-sizing: border-box;" @click="guanli">
 				<image src="/static/icon/ic_guanli@2x.png" mode="widthFix" v-show="!edit"></image>
 				<image src="/static/icon/ic_guanli_sel@2x.png" mode="widthFix" v-show="edit"></image>
 				<text class="wz" :style="{ color: edit ? '#004096' : '' }">绠$悊</text>
@@ -13,8 +13,9 @@
 		</view>
 		<view class="list1" v-if="type === '1'">
 			<view class="list-item" v-for="(item, index) in list" :key="index">
-				<view class="left" v-if="edit">
-					<image src="/static/icon/ic_agree@2x.png" mode="widthFix"></image>
+				<view class="left" v-if="edit" @click="select(index)">
+					<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="!item.active"></image>
+					<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix" v-else></image>
 				</view>
 				<view class="right">
 					<view class="list-item-image">
@@ -33,12 +34,13 @@
 		<view class="list" v-else>
 			<view class="list-item" v-for="(item, index) in list" :key="index">
 				<view class="info">
-					<view class="check" v-if="edit">
-						<image src="/static/icon/ic_agree@2x.png" mode="widthFix"></image>
+					<view class="check" v-if="edit" @click="select(index)">
+						<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="!item.active"></image>
+						<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix" v-else></image>
 					</view>
 					<view class="info-right">
 						<view class="info-title">{{item.name}}</view>
-						<view class="info-desc">{{item.remark}}</view>
+						<view class="info-desc">{{item.content}}</view>
 						<view class="info-data">
 							<view class="tips">{{item.labelName}}</view>
 							<text>{{item.readNum}} 闃呰锝渰{item.createDate}}</text>
@@ -54,22 +56,47 @@
 			<view style="width: 100%; height: calc(100rpx + env(safe-area-inset-bottom));"></view>
 			<view class="footer">
 				<view class="caozuo">
-					<view class="caozuo-left">
-						<image src="/static/icon/ic_agree@2x.png" mode="widthFix"></image>
+					<view class="caozuo-left" @click="quanxuan">
+						<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="!selectAll"></image>
+						<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix" v-else></image>
 						<text>鍏ㄩ��</text>
 					</view>
-					<view class="caozuo-btn">鍒犻櫎(0)</view>
+					<view class="caozuo-btn" @click="shanchu">鍒犻櫎({{totalNum}})</view>
 				</view>
 				<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
 			</view>
 		</template>
+		<u-modal :show="show" :showCancelButton="true" @confirm="dele" @cancel="show = false">
+			纭鍒犻櫎鍚楋紵
+		</u-modal>
 	</view>
 </template>
 
 <script>
 	export default {
+		computed: {
+			totalNum() {
+				let total = 0
+				this.list.forEach((item) => {
+					if (item.active) {
+						total++
+					}
+				})
+				return total;
+			},
+			selectAll() {
+				let isSelectAll = true
+				this.list.forEach((item) => {
+					if (!item.active) {
+						isSelectAll = false
+					}
+				})
+				return isSelectAll;
+			}
+		},
 		data() {
 			return {
+				show: false,
 				edit: false,
 				type: '1',
 				page: 1,
@@ -89,8 +116,48 @@
 			this.getList()
 		},
 		methods: {
+			shanchu() {
+				if (this.totalNum > 0) {
+					this.show = true
+				} else {
+					uni.showToast({
+						title: '鑷冲皯閫夋嫨涓�椤瑰唴瀹�',
+						icon: 'none'
+					})
+				}
+			},
+			dele() {
+				this.$u.api.cancelbatch({
+					ids: this.list.filter(item => item.active).map(item => item.id).join(',')
+				}).then(res => {
+					if (res.code === 200) {
+						this.show = false
+						this.edit = false
+						this.page = 1
+						this.list = []
+						this.next = true
+						this.getList()
+						this.getNum()
+					}
+				})
+			},
+			quanxuan() {
+				this.list.forEach(item => {
+					item.active = true
+				})
+			},
+			guanli() {
+				this.edit = !this.edit
+				this.list.forEach(item => {
+					item.active = false
+				})
+			},
+			select(index) {
+				this.list[index].active = !this.list[index].active
+			},
 			changeRow(id) {
 				this.type = id
+				this.edit = false
 				this.page = 1
 				this.list = []
 				this.next = true
@@ -115,8 +182,10 @@
 					}
 				}).then(res => {
 					if (res.code === 200) {
-						console.log(res)
 						this.page++
+						res.data.records.forEach(item => {
+							item.active = false
+						})
 						this.list.push(...res.data.records)
 						if (res.data.total === this.list.length) {
 							this.next = false
@@ -378,6 +447,7 @@
 									font-size: 24rpx;
 									color: #999999;
 									margin-left: 10rpx;
+									text-decoration: line-through;
 								}
 							}
 						}
diff --git a/mini-program/pages/search/search.vue b/mini-program/pages/search/search.vue
index 2700b46..6ec5f00 100644
--- a/mini-program/pages/search/search.vue
+++ b/mini-program/pages/search/search.vue
@@ -7,7 +7,7 @@
 		<view class="history" v-if="historyList && historyList.length > 0">
 			<view class="history-title">鍘嗗彶鎼滅储</view>
 			<view class="history-list">
-				<view class="history-list-item" v-for="(item, index) in historyList" :key="index">{{item.content}}</view>
+				<view class="history-list-item" v-for="(item, index) in historyList" :key="index" @click="seleContent(item.content)">{{item.content}}</view>
 			</view>
 		</view>
 		<template v-if="isSearch">
@@ -54,23 +54,38 @@
 				page: 1,
 				next: true,
 				isSearch: false,
-				historyList: []
+				historyList: [],
+				categoryId: null,
+				applicableBrandId: null
 			};
 		},
-		onLoad() {
+		onLoad(option) {
+			if (option.categoryId) {
+				this.categoryId = option.categoryId
+				this.isSearch = true
+				this.getGoodsList()
+			}
+			if (option.applicableBrandId) {
+				this.applicableBrandId = option.applicableBrandId
+				this.isSearch = true
+				this.getGoodsList()
+			}
 			this.gethistary()
 		},
 		onReachBottom() {
 			this.getGoodsList()
 		},
 		methods: {
+			seleContent(val) {
+				this.goodsName = val
+				this.search()
+			},
 			gethistary() {
 				if (!this.userInfo) return
 				this.$u.api.searchHistoryList({
 					memberId: this.userInfo.id
 				}).then(res => {
 					if (res.code === 200) {
-						console.log(res)
 						this.historyList = res.data
 					}
 				})
@@ -92,10 +107,14 @@
 					model: {
 						type: 0,
 						sortInfo: 3,
-						goodsName: this.goodsName
+						goodsName: this.goodsName,
+						memberId: this.userInfo.id,
+						categoryId: this.categoryId,
+						applicableBrandId: this.applicableBrandId
 					}
 				}).then(res => {
 					if (res.code === 200) {
+						this.gethistary()
 						res.data.records.forEach(item => {
 							item.minPrice = item.minPrice.toFixed(2).split('.')
 						})
@@ -111,6 +130,11 @@
 	}
 </script>
 
+<style>
+	page {
+		background-color: #F9F9FB;
+	}
+</style>
 <style lang="scss" scoped>
 	.box {
 		width: 100%;
@@ -152,7 +176,7 @@
 					margin-right: 24rpx;
 					margin-bottom: 24rpx;
 					&:last-child {
-						margin: 0 !important;
+						margin-right: 0 !important;
 					}
 				}
 			}
diff --git a/mini-program/pages/zhuanqu/zhuanqu.vue b/mini-program/pages/zhuanqu/zhuanqu.vue
new file mode 100644
index 0000000..cfbad9e
--- /dev/null
+++ b/mini-program/pages/zhuanqu/zhuanqu.vue
@@ -0,0 +1,21 @@
+<template>
+	<view class="box">
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.box {
+		width: 100%;
+	}
+</style>
\ No newline at end of file
diff --git a/mini-program/unpackage/dist/dev/mp-weixin/common/main.js b/mini-program/unpackage/dist/dev/mp-weixin/common/main.js
index 36ec4e7..7f5252f 100644
--- a/mini-program/unpackage/dist/dev/mp-weixin/common/main.js
+++ b/mini-program/unpackage/dist/dev/mp-weixin/common/main.js
@@ -298,11 +298,12 @@
           var qqmapsdk = new QQMapWX({
             key: 'HEIBZ-QJLLM-SZ36X-6ZBHI-S6Y2J-S6FND'
           });
+          console.log(locParam);
           qqmapsdk.reverseGeocoder({
             locParam: locParam,
             success: function success(res) {
               console.log(res, '==================鑾峰彇鍦板潃');
-              that.$store.commit('setPosition', res);
+              that.$store.commit('setPosition', res.result);
               that.$isResolve();
             },
             fail: function fail(err) {
diff --git a/mini-program/utils/http.api.js b/mini-program/utils/http.api.js
index 088f215..b222308 100644
--- a/mini-program/utils/http.api.js
+++ b/mini-program/utils/http.api.js
@@ -6,6 +6,12 @@
 	    return config;
 	})
 	
+	let getShopList = (data = {}) => vm.$u.http.post('web/shop/getShopList', data);	// 鐢ㄦ埛涓嬪崟鏌ヨ鍙�夋嫨鐨勮嚜鎻愮粡閿�鍟�
+	let replayPay = (params = {}) => vm.$u.http.get('web/orders/replayPay', {params});	// 璁㈠崟閲嶆柊鏀粯
+	let orderPay = (data = {}) => vm.$u.http.post('web/orders/orderPay', data);	// 璁㈠崟鏀粯
+	let getApplyCoupon = (data = {}) => vm.$u.http.post('web/orders/getApplyCoupon', data);	// 鍙敤浼樻儬鍒镐俊鎭�
+	let orderPayConfirm = (data = {}) => vm.$u.http.post('web/orders/orderPayConfirm', data);	// 璁㈠崟寰呮敮浠樹俊鎭�
+	let findDefault = (params = {}) => vm.$u.http.get('web/addr/findDefault', {params});	// 鏌ヨ鐢ㄦ埛榛樿鍦板潃
 	let getCollectNum = (params = {}) => vm.$u.http.get('web/collect/getCollectNum', {params});	// 鎴戠殑鏀惰棌鏁伴噺
 	let myCollectPage = (data = {}) => vm.$u.http.post('web/collect/myCollectPage', data);	// 鎴戠殑鏀惰棌
 	let memberCouponDetail = (params = {}) => vm.$u.http.get('web/orders/memberCouponDetail', {params});	// 浼氬憳浼樻儬鍒歌鎯�
@@ -78,6 +84,12 @@
 	
 	
 	vm.$u.api = {
+		getShopList,
+		replayPay,
+		orderPay,
+		getApplyCoupon,
+		orderPayConfirm,
+		findDefault,
 		getCollectNum,
 		myCollectPage,
 		memberCouponDetail,

--
Gitblit v1.9.3