Преглед на файлове

地址点选跳转、商品详情页显示调整

MS-IOHQJGHXZHQD\Administrator преди 5 месеца
родител
ревизия
0888316153

+ 12 - 2
src/pages/address/index.vue

@@ -62,6 +62,7 @@ export default {
 			dataList: [],
 			selected: '',
 			selectedAddressId: null,
+			productId: null
 		}
 	},
 	computed: {
@@ -73,6 +74,7 @@ export default {
 		if (query.selectedAddressId) {
 			this.selectedAddressId = query.selectedAddressId
 		}
+		if (query.productId) this.productId = query.productId
 	},
 	onShow() {
 		this.canReset && this.$refs.paging.reload();
@@ -89,6 +91,11 @@ export default {
 				// 赋值
 				prevPage.$vm.selectedAddressId = this.selectedAddressId;
 			}
+			if (this.productId) {
+				uni.navigateTo({
+					url: `/points/productDetails/index?id=${this.productId}&selectedAddressId=${this.selectedAddressId}`
+				});
+			}
 
 		},
 		// 获取数据
@@ -107,9 +114,12 @@ export default {
 						});
 						if (!flag) {
 							let pages = getCurrentPages();
-							let prevPage = pages[pages.length - 2];
+							let prevPage = pages.length >= 2 ? pages[pages.length - 2] : null;
 							// 传参
-							prevPage.$vm.selectedAddressId = null;
+							if (prevPage) {
+								// 赋值
+								prevPage.$vm.selectedAddressId = this.selectedAddressId;
+							}
 						}
 					}
 					this.$refs.paging.complete(res.data.data);

+ 1 - 1
src/points/components/product-list/product-list.vue

@@ -48,7 +48,7 @@
     <!-- 商品列表 -->
     <u-loading-icon text="加载中" textSize="18" v-if="status === 'loading' && products.length <= 0" style="margin-top: 200rpx;"/>
     <view class="product-grid" v-else-if="products.length > 0">
-      <view class="product-item" v-for="(product, index) in products" :key="index">
+      <view class="product-item" v-for="(product, index) in products" :key="index" @click="handleExchange(product)">
         <view class="product-image">
           <view v-if="!imageErrorMap[product.id]" class="product-image">
             <ImageItem 

+ 4 - 7
src/points/productDetails/applyExchange.vue

@@ -31,23 +31,21 @@
                 <view class="mustInput">
                     <u--form>
                         <u-form-item required label="申请原因" label-width="120rpx" prop="selectReasonValue">
-                            <view class="tip">
+                            <view class="tip" @click="selectApplyReasonFun('1')">
                                 <view :style="{ color: selectReasonValue ? '#333' : '#999' }">{{
                                     selectReasonValue !== null ? selectReasonValue : '请选择申请原因' }}</view>
                                 <image style="width: 35rpx;height: 35rpx;margin-left: 8rpx;"
-                                    @click="selectApplyReasonFun('1')" src="@/static/points/Keyboard_arrow_rifht.png"
-                                    mode=""></image>
+                                    src="@/static/points/Keyboard_arrow_rifht.png" mode=""></image>
                             </view>
                         </u-form-item>
 
                         <u-form-item required label="问题描述/凭证" label-width="181rpx" prop="selectReasonValue">
-                            <view class="tip">
+                            <view class="tip" @click="selectApplyReasonFun('2')">
                                 <view :style="{ color: questionOrDiscribeValue ? '#333' : '#999' }"
                                     class="questionOrDiscribeValue">
                                     {{ questionOrDiscribeValue ? questionOrDiscribeValue : '请您务必上传描述和凭证' }}</view>
                                 <image style="width: 35rpx;height: 35rpx;margin-left: 8rpx;"
-                                    @click="selectApplyReasonFun('2')" src="@/static/points/Keyboard_arrow_rifht.png"
-                                    mode=""></image>
+                                    src="@/static/points/Keyboard_arrow_rifht.png" mode=""></image>
                             </view>
                         </u-form-item>
 
@@ -122,7 +120,6 @@ export default {
 
             if (data.fileList && data.fileList !== "[]") {
                 this.fileList = JSON.parse(data.fileList)
-                console.log(this.fileList, 'this.fileList')
             }
             if (data.selectReasonValue && data.selectReasonValue !== "null") {
                 this.selectReasonValue = data.selectReasonValue

+ 1 - 4
src/points/productDetails/applyRefund.vue

@@ -20,7 +20,7 @@
                                 <!-- //1 未收到,申请退款 list;  2.已收到货,申请退款 list2     3.已收货-换货申请 list3-->
                                 <view class="item" v-for="item in filteredList">
                                     <view v-if="item.title" class="title">{{ item.title }}:</view>
-                                    <view class="obj" v-for="obj in item.data">
+                                    <view class="obj" v-for="obj in item.data" style="width: 100%;" @change="groupChange(obj.value)">
                                         <view class="radioBox">
                                             <u-radio activeColor="#03C1B8 " :name=obj.value></u-radio>{{ obj.text }}
                                         </view>
@@ -190,7 +190,6 @@ export default {
 
             if (data.fileList && data.fileList !== "[]") {
                 this.fileList = JSON.parse(data.fileList)
-                console.log(this.fileList, 'this.fileList')
             }
             if (data.selectReasonValue && data.selectReasonValue !== "null") {
                 this.selectReasonValue = data.selectReasonValue
@@ -220,7 +219,6 @@ export default {
         }
     },
     onShow(data) {
-        console.log(this.orderStatus, this.filteredList)
         let flag = this.servicePromise.some(f => {
             return f.indexOf('7天无理由退') !== -1
         })
@@ -276,7 +274,6 @@ export default {
         },
         //提交
         goSubmit() {
-            console.log('提交 applyRefund')
             if (this.receiptStatus == 'notReceived' || (this.receiptStatus == "received" && this.afterSalesType == "refund")) {
                 afterSaleOrder({ // 未收到-申请退款,已收到货-申请退款
                     orderId: this.orderId,

+ 28 - 22
src/points/productDetails/components/selectProduct.vue

@@ -5,17 +5,17 @@
         <view class="addressBox">
             <image style="width: 40rpx;height: 40rpx;" src="@/static/points/addressIcon.png" mode=""></image>
 
-            <text class="name" v-if="defaultAddress">{{ defaultAddress.userName }}</text>
+            <view class="name" v-if="defaultAddress">{{ defaultAddress.userName }}</view>
+            <view style="width: 60%;display: flex;" @click="addressSelectFun">
+                <text class="address" v-if="defaultAddress">{{ defaultAddress.address + defaultAddress.atlasAdd
+                    }}</text>
+                <text class="addAddress" style="color: #999;position: absolute;right: 35rpx;top:0"
+                    v-if='!defaultAddress'>添加收货地址</text>
+                <image style="width: 35rpx;height: 35rpx;position: absolute;right: 0;top: 0rpx;"
+                    @click="addressSelectFun" src="@/static/points/Keyboard_arrow_rifht.png" mode=""></image>
+            </view>
 
-            <text class="address" v-if="defaultAddress">{{ defaultAddress.address + defaultAddress.atlasAdd
-            }}</text>
-            <view style="position: absolute;right: 0;display: flex;width: 195rpx;align-items: center;height: 33rpx;
-            ">
-                <text class="addAddress" style="color: #999;" v-if='!defaultAddress'>添加收货地址</text>
 
-                <image style="width: 35rpx;height: 35rpx;position: absolute;right: 0;top: 2rpx;" @click="addressSelectFun"
-                    src="@/static/points/Keyboard_arrow_rifht.png" mode=""></image>
-            </view>
 
 
 
@@ -68,7 +68,9 @@
         <!--运费 -->
         <view class="yunFeiClass">
             <view class="text">运费</view>
-            <view class="text" :style="{color:params.freight == 0?'#666':'#333'}" v-if="params">{{ params.freight == 0 ? '免运费' :  '¥'+params.freight }}</view>
+            <view class="text" :style="{ color: params.freight == 0 ? '#666' : '#333' }" v-if="params">{{ params.freight
+                == 0 ?
+                '免运费' : '¥' +params.freight }}</view>
 
         </view>
         <!--订单备注 -->
@@ -80,8 +82,8 @@
         </view>
         <!--支付方式 -->
         <view v-if="params">
-            <u-radio-group v-if="selectPayMeth && (params.paymentType !== 1 || params.freight>0) "
-                class="nodeClass" v-model="selectPayMeth">
+            <u-radio-group v-if="selectPayMeth && (params.paymentType !== 1 || params.freight > 0)" class="nodeClass"
+                v-model="selectPayMeth">
                 <view style="width: 100%;">
                     <view style="display: flex;justify-content: space-between;width: 100%;">
                         <view style="display: flex;">
@@ -113,6 +115,10 @@
                 color: '#fff',
                 background: '#03C1B8'
             }">请选择</u-button>
+            <u-button v-else-if="selectedObj.stock === 0" :customStyle="{
+                color: '#999999 ',
+                background: '#eee'
+            }">库存不足</u-button>
             <u-button :disabled="redeemNowBtnDisable" v-else-if="selectedObj.stock && params" :customStyle="{
                 color: '#fff',
                 background: '#03C1B8'
@@ -121,10 +127,6 @@
                 params.paymentType == 2 ? '¥' + selectedObj.priceMoney + '元' :
                     params.paymentType == 3 ? '¥' + selectedObj.priceMoney + '元' + '+' +
                         selectedObj.pricePoint + '积分' : null }}</u-button>
-            <u-button v-else-if="selectedObj.stock === 0" :customStyle="{
-                color: '#999999 ',
-                background: '#eee'
-            }">库存不足</u-button>
         </view>
     </view>
 
@@ -163,17 +165,14 @@ export default {
         }
     },
     onLoad(data) {
-        console.log('555')
     },
     onShow() {
-        console.log('555')
         this.$emit('getAddrListFun')
 
     },
     onPageScroll() {
     },
     create() {
-        console.log('55522')
     },
     computed: {
         // specValuePrice() {
@@ -241,7 +240,7 @@ export default {
         //去我的地址页面
         addressSelectFun() {
             uni.navigateTo({
-                url: `/pages/address/index?selectedAddressId=${this.defaultAddress ? this.defaultAddress.id : null}`
+                url: `/pages/address/index?selectedAddressId=${this.defaultAddress ? this.defaultAddress.id : null}&productId=${this.params.id}`
             });
         }
 
@@ -267,6 +266,8 @@ export default {
         border-radius: 20rpx 20rpx 20rpx 20rpx;
 
         .name {
+            min-width: 30rpx;
+            max-width: 140rpx;
             margin: 0 24rpx;
             font-weight: 500;
             font-size: 32rpx;
@@ -275,6 +276,9 @@ export default {
             text-align: left;
             font-style: normal;
             text-transform: none;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
         }
 
         .addAddress {
@@ -351,7 +355,8 @@ export default {
             font-style: normal;
             text-transform: none;
         }
-        .specWrap{
+
+        .specWrap {
             display: flex;
             flex-wrap: wrap;
             gap: 16rpx;
@@ -368,7 +373,8 @@ export default {
             line-height: 56rpx;
             background: #F0F0F0;
             border-radius: 38rpx 38rpx 38rpx 38rpx;
-            white-space: nowrap; /* 文字不换行 */
+            white-space: nowrap;
+            /* 文字不换行 */
             //margin-right: 16rpx;
             padding: 0 16rpx;
             margin-top: 24rpx;

+ 76 - 70
src/points/productDetails/index.vue

@@ -48,13 +48,13 @@
                 <text style="color: #666666;">规格</text>
                 <ImageItem v-if="selectedObj" class="imgClass" :src="$globalData.publicUrl + selectedObj.image" />
               </view>
-              <view style="display: flex;align-items: center;position: relative;">
-                <text v-if="selectedObj" style="color: #666666;margin-right: 30rpx;">已选:{{
-                  selectedObj.specValueText }}</text>
-                <text v-else style="color: #999;margin-right: 30rpx;">选择商品</text>
-                <span style="position: absolute;right: 0;top: -3rpx;">
-                  <image style="width: 35rpx;height: 35rpx;" @click="selectProductShowFun"
-                    src="@/static/points/Keyboard_arrow_rifht.png" mode=""></image>
+              <view style="display: flex;align-items: center;position: relative;" @click="selectProductShowFun">
+                <text v-if="selectedObj" style="color: #666666;margin-right: 35rpx;">
+                  已选:{{ selectedObj.specValueText }}</text>
+                <text v-else style="color: #999;margin-right: 35rpx;">选择商品</text>
+                <span style="position: absolute;right: 0;top: -5rpx;">
+                  <image style="width: 35rpx;height: 35rpx;" src="@/static/points/Keyboard_arrow_rifht.png" mode="">
+                  </image>
                 </span>
               </view>
             </view>
@@ -62,19 +62,23 @@
           </view>
           <view class="arriveAddressClass">
             <text style="color: #666666;margin-right: 24rpx;">送至</text>
-            <text v-if="defaultAddress"
-              style="width: 520rpx;white-space:nowrap;overflow: hidden;text-overflow: ellipsis;">
-              {{ defaultAddress.address + defaultAddress.atlasAdd }}</text>
-            <text v-else style="color: #999;position: absolute;right: 30rpx;">添加收货地址</text>
-            <span style="position: absolute;right: 0;top: -3rpx;">
-              <image style="width: 35rpx;height: 35rpx;" @click="addressSelectFun"
-                src="@/static/points/Keyboard_arrow_rifht.png" mode=""></image>
-            </span>
+            <view style="width: 80%; white-space:nowrap; overflow: hidden; text-overflow: ellipsis;" @click="addressSelectFun">
+              <text v-if="defaultAddress">
+                {{ defaultAddress.address + defaultAddress.atlasAdd }}</text>
+
+              <text v-else style="color: #999;position: absolute;right: 35rpx;top:0">添加收货地址</text>
+              <span style="position: absolute;right: 0;top: -5rpx;">
+                <image style="width: 35rpx;height: 35rpx;"
+                  src="@/static/points/Keyboard_arrow_rifht.png" mode=""></image>
+              </span>
+            </view>
+
           </view>
           <view class="seedAddressClass">
             <text style="color: #666666;margin-right: 24rpx;">发货</text>
-            <text>山西省太原市小店区 
-              <text v-if="params.freight!=undefined"> | {{ params.freight == 0 ? '免运费' : '运费' + params.freight + '元' }}</text>
+            <text>山西省太原市小店区
+              <text v-if="params.freight != undefined"> | {{ params.freight == 0 ? '免运费' : '运费' + params.freight + '元'
+              }}</text>
             </text>
           </view>
           <view class="promiseSeedTime" style="margin-left: 80rpx;">
@@ -126,7 +130,7 @@
         <u-button :disabled="redeemNowBtnDisable" v-if="selectedObj ? selectedObj.stock : params.stock" :customStyle="{
           color: '#fff',
           background: '#03C1B8'
-        }" @click="redeemNowFun">{{ redeemNowBtnDisable ? '支付中...' : '立即兑换' }}</u-button>
+        }" @click="selectProductShowFun">{{ redeemNowBtnDisable ? '支付中...' : '立即兑换' }}</u-button>
         <u-button v-else :customStyle="{
           color: '#999999 ',
           background: '#eee'
@@ -190,21 +194,31 @@ export default {
       dBalance: 0.00,
       wxconfig: {},
       orderNo: null,
+      isGetAddrListFunLoaded:false,
 
 
     }
   },
   onLoad(data) {
-    console.log(data, '66666')
+    console.log(data, 'onLoad66666')
+    if(data.selectedAddressId)this.selectedAddressId=data.selectedAddressId
     if (data.id) {
       this.productGetByIdFun(data.id)
       this.getAddrListFun()
+      this.isGetAddrListFunLoaded=true
       this.getinfo()
     }
 
   },
-  onShow() {
-    this.getAddrListFun()
+  onShow(onShow) {
+    console.log(onShow, this.isGetAddrListFunLoaded,'onShow55555')
+    if(!this.isGetAddrListFunLoaded){
+       this.getAddrListFun()
+    }else{
+      this.isGetAddrListFunLoaded=false
+    }
+   
+    
   },
   onPageScroll(e) {
     //console.log("滚动距离为:" + e.scrollTop);
@@ -251,8 +265,6 @@ export default {
             } else {
               this.defaultAddress = res.data.data[0]
             }
-            console.log(this.selectedAddressId, 'this.selectedAddressId99999999999')
-            console.log(this.defaultAddress, 'this.defaultAddress9999999999')
             return
           } else if (!this.selectedAddressId || !this.defaultAddress) {
             let flag = res.data.data.some(item => {
@@ -301,7 +313,6 @@ export default {
       if (selectPayMeth) this.selectPayMeth = selectPayMeth
       if (orderRemarks) this.orderRemarks = orderRemarks
 
-      console.log(this.selectedObj, 'this.selectedObj')
       if (!this.defaultAddress) {
         uni.showToast({
           title: '请选择添加地址',
@@ -309,52 +320,48 @@ export default {
         })
         return
       }
+      if (this.selectPayMeth == null && (params.paymentType !== 1 || this.params.freight > 0)) {
+        uni.showToast({
+          title: '请选择支付方式',
+          icon: 'none'
+        })
+        return
+      }
 
-      if (this.selectedObj) {
-        if (this.selectPayMeth == null && (params.paymentType !== 1 || this.params.freight>0)) {
-          uni.showToast({
-            title: '请选择支付方式',
-            icon: 'none'
-          })
-          return
-        }
-        this.redeemNowBtnDisable = redeemNowBtnDisable ? redeemNowBtnDisable : true
-        let params = {}
-        //params.openId = uni.getStorageSync('wx_copenid');//用户openId
-        params.userPhone = this.defaultAddress.phone;//用户手机号
-        params.userName = this.defaultAddress.userName;//用户名
-        params.userAddress = this.defaultAddress.address + this.defaultAddress.atlasAdd;//地图地址+详细地址
-        params.addressId = this.defaultAddress.id;//地址ID
-        params.productId = this.params.id;
-        params.name = this.params.name;
-        params.productMainImage = this.params.productMainImage;
-        params.skuId = this.selectedObj.skuId; //选中的SKU ID
-        params.specNameValueLis = this.selectedObj.specNameValueList; // SKU列表(规格组合明细)
-        params.quantity = 1; //购买数量
-        params.payType = this.params.paymentType == 1 ? 3 : Number(this.selectPayMeth);//支付方式:1微信支付 2账户余额
-        params.freightAmount = this.params.freight; //运费
-        params.totalAmount = (this.selectedObj.priceMoney + (this.params.freight > 0 ? this.params.freight : 0));// 支付金额+运费=总金额
-        params.payAmount = this.selectedObj.priceMoney;// 支付金额
-        params.pointsUsed = this.selectedObj.pricePoint;// 使用的积分
-        params.buyerRemark = this.orderRemarks;//买家备注信息
-        if (this.params.paymentType == 1 && this.params.freight==0) {//只有积分兑换
-          this.productOrderCreateFun(params)
-          return
-        }
-        if (this.selectPayMeth == 1) {
-          //微信支付 
-          this.weixinPay(params)
-        } else if (this.selectPayMeth == 2) {
-          //余额支付
-          this.nowYuyue(params)
-        }
-
+      this.selectProductShowPopup = true
+      this.$nextTick(() => {
+        this.$refs.selectProductRef.onShowFun(this.selectedObj, this.orderRemarks, this.selectPayMeth)
+      });
 
-      } else {
-        this.selectProductShowPopup = true
-        this.$nextTick(() => {
-          this.$refs.selectProductRef.onShowFun(this.selectedObj, this.orderRemarks, this.selectPayMeth)
-        });
+      this.redeemNowBtnDisable = redeemNowBtnDisable ? redeemNowBtnDisable : true
+      let params = {}
+      //params.openId = uni.getStorageSync('wx_copenid');//用户openId
+      params.userPhone = this.defaultAddress.phone;//用户手机号
+      params.userName = this.defaultAddress.userName;//用户名
+      params.userAddress = this.defaultAddress.address + this.defaultAddress.atlasAdd;//地图地址+详细地址
+      params.addressId = this.defaultAddress.id;//地址ID
+      params.productId = this.params.id;
+      params.name = this.params.name;
+      params.productMainImage = this.params.productMainImage;
+      params.skuId = this.selectedObj.skuId; //选中的SKU ID
+      params.specNameValueLis = this.selectedObj.specNameValueList; // SKU列表(规格组合明细)
+      params.quantity = 1; //购买数量
+      params.payType = this.params.paymentType == 1 ? 3 : Number(this.selectPayMeth);//支付方式:1微信支付 2账户余额
+      params.freightAmount = this.params.freight; //运费
+      params.totalAmount = (this.selectedObj.priceMoney + (this.params.freight > 0 ? this.params.freight : 0));// 支付金额+运费=总金额
+      params.payAmount = this.selectedObj.priceMoney;// 支付金额
+      params.pointsUsed = this.selectedObj.pricePoint;// 使用的积分
+      params.buyerRemark = this.orderRemarks;//买家备注信息
+      if (this.params.paymentType == 1 && this.params.freight == 0) {//只有积分兑换
+        this.productOrderCreateFun(params)
+        return
+      }
+      if (this.selectPayMeth == 1) {
+        //微信支付 
+        this.weixinPay(params)
+      } else if (this.selectPayMeth == 2) {
+        //余额支付
+        this.nowYuyue(params)
       }
 
     },
@@ -365,7 +372,6 @@ export default {
       let payConfig = JSON.parse(data.data)
       getSignature(h5Url).then(res => {
         this.wxconfig = res.data
-        console.log(this.wxconfig, 'this.wxconfig66666')
         wx.config({
           beta: true,
           debug: false,
@@ -497,7 +503,7 @@ export default {
     //去我的地址页面 /points/productDetails/addressManagement
     addressSelectFun() {
       uni.navigateTo({
-        url: `/pages/address/index?selectedAddressId=${this.defaultAddress ? this.defaultAddress.id : null}`
+        url: `/pages/address/index?selectedAddressId=${this.defaultAddress ? this.defaultAddress.id : null}&productId=${this.params.id}`
       });
     },
 

+ 5 - 4
src/points/productDetails/pendingPayment.vue

@@ -112,6 +112,8 @@
                 <u-button v-if="orderInfo.orderStatus == 0" :customStyle="{
                     color: '#999',
                     background: '',
+                    height:'52rpx',
+                    lineHeight: '52rpx',
                     border: '2rpx solid rgba(153, 153, 153, 1)'
                 }" @click="cancelOrderFun">取消支付</u-button>
 
@@ -141,10 +143,9 @@
                 <!-- 项目列表 -->
                 <view class="refund-items">
                     <view class="reason">请选择退款原因</view>
-                    <u-radio-group v-model="selectReason" @change="groupChange">
-
-                        <view style="padding: 0 20rpx 24rpx 20rpx;">
-                            <view class="radioBox" v-for="item in selectReasonList">
+                    <u-radio-group v-model="selectReason">
+                        <view style="padding: 0 20rpx 24rpx 20rpx;width: 100%;">
+                            <view class="radioBox" v-for="item in selectReasonList" @click="groupChange(item.value)">
                                 <u-radio activeColor="#03C1B8 " :name=item.value></u-radio>{{ item.text }}
                             </view>
                         </view>