From 2d5090c2b215a5ea7e489d4b50fbf30aae569324 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期五, 26 七月 2024 15:03:01 +0800
Subject: [PATCH] fix bug 接口对接和样式调整

---
 sub_pages/customer/shopping/shopping.vue |  373 ++++++++++++++++++++++++++++------------------------
 1 files changed, 201 insertions(+), 172 deletions(-)

diff --git a/sub_pages/customer/shopping/shopping.vue b/sub_pages/customer/shopping/shopping.vue
index 96f93dd..df79d8b 100644
--- a/sub_pages/customer/shopping/shopping.vue
+++ b/sub_pages/customer/shopping/shopping.vue
@@ -14,40 +14,46 @@
     <view class="">
       <no-data v-if="!list||list.length===0" style="width: 100%;"></no-data>
       <view class="shopping-item m-t-20" v-for="(item,index) of list" :key="index">
-        <u-swipe-action>
-          <u-swipe-action-item
-              :options="options1"
-              @click="(e)=>{clickSwipeButton(item)}"
-          >
-            <view class="sup-title">
-              <radio :checked="ids.indexOf(item.id)>=0" @change="changeItem(item,'supplier')">></radio>
-              {{ item.supplierName || '-' }}
-            </view>
-            <u-divider></u-divider>
-            <view v-for="(dto,j) of item.flowerList" :key="j">
-              <u-divider v-if="j>0"></u-divider>
+
+
+        <view class="sup-title">
+          <radio :checked="ids.indexOf(item.id)>=0" @click="changeItem(item,'supplier')"></radio>
+          {{ item.supplierName || '-' }}
+        </view>
+        <u-divider></u-divider>
+        <view v-for="(dto,j) of item.flowerList" :key="j">
+          <u-divider v-if="j>0"></u-divider>
+          <u-swipe-action>
+            <u-swipe-action-item
+                :options="options1"
+                @click="(e)=>{clickSwipeButton(dto)}"
+            >
               <view class="item-each flex">
-                <radio :checked="ids.indexOf(dto.id)>=0" @change="changeItem(dto,'flower')"></radio>
+                <radio :checked="ids.indexOf(dto.id)>=0" @click="changeItem(dto,'flower')"></radio>
                 <image class="img img100 m-r-6" :src="dto.url||dto.cover"></image>
-                <view>
+                <view class="flex1">
                   <view class="title"><span>{{ dto.levelStr || '-' }}</span>&nbsp;&nbsp;{{ dto.name || '-' }}</view>
                   <view class="price">
                     {{ dto.price || '-' }}元/扎
                   </view>
-                  <view class="desc m-t-12">
-                    <view class="m-r-15">剩余:{{ dto.stock || 0 }}</view>
-                  </view>
-                  <view class="button-icons flex">
-                    <uni-icons v-if="dto.num&&dto.num>=1" type="minus" size="32"
-                               @click="addnum(dto,-1)"></uni-icons>
-                    <view class="curnums" v-if="dto.num&&dto.num>=1">{{ dto.num }}</view>
-                    <uni-icons type="plus-filled" size="32" @click="addnum(dto,1)"></uni-icons>
+                  <view class="flex">
+                    <view class="desc m-t-12">
+                      <view class="m-r-15">剩余:{{ dto.stock || 0 }}</view>
+                    </view>
+                    <view class="button-icons flex m-l-a m-r-0">
+                      <uni-icons v-if="dto.num&&dto.num>=1" type="minus" size="32"
+                                 @click="addnum(dto,-1)"></uni-icons>
+                      <view class="curnums" v-if="dto.num&&dto.num>=1">{{ dto.num }}</view>
+                      <uni-icons type="plus-filled" size="32" @click="addnum(dto,1)"></uni-icons>
+                    </view>
                   </view>
                 </view>
               </view>
-            </view>
-          </u-swipe-action-item>
-        </u-swipe-action>
+            </u-swipe-action-item>
+          </u-swipe-action>
+        </view>
+
+
       </view>
 
     </view>
@@ -61,7 +67,7 @@
       <view class="m-t-12 m-l-a m-r-20 text-center">
         合计:<span class="t-red">¥ {{ totalprice || 0 }}</span> 元
       </view>
-      <view class="button-green-1 m-l-a m-r-0" style="min-width: 240rpx">
+      <view class="button-green-1 m-l-a m-r-0" style="min-width: 240rpx" @click="submitPay">
         提交订单
       </view>
     </view>
@@ -82,7 +88,8 @@
       checkall: false,
       options1: [{
         text: '删除'
-      }]
+      }],
+      list: []
     }
   },
   onShow() {
@@ -90,7 +97,7 @@
       this.init()
     }
   },
-  onLoad() {
+  mounted() {
     this.init()
   },
   computed: {
@@ -106,161 +113,174 @@
       })
       return totalprice.toFixed(2)
     },
-    methods: {
-      async submitPay() {
-        // order/confirm/info
-        var arr = []
-        for (var j = 0; j < this.list.flowerList; j++) {
-
-          if (this.ids.indexOf(this.list.flowerList[j].id) >= 0) {
+  },
+  methods: {
+    async submitPay() {
+      // order/confirm/info
+      var arr = []
+      for (var j = 0; j < this.list.length; j++) {
+        if(!this.list[j].flowerList){
+          continue
+        }
+        for (var k = 0; k < this.list[j].flowerList.length; k++) {
+          if (this.ids.indexOf(this.list[j].flowerList[k].id) >= 0) {
             arr.push({
-              id: this.list.flowerList[j].id,
-              num: this.list.flowerList[j].num
-            })
-          }
-        }
-        if (this.arr.length < 1) {
-          return
-        }
-        this.$message.showLoading()
-        const {code, data} = await http.request('post', '/api/api/customer/order/confirm/info', {
-              data: {
-                flowers: arr,
-              }
-            }
-        )
-        this.$message.hideLoading()
-        if (code === 0) {
-          uni.navigateTo({
-            url: '/sub_pages/customer/shopping/confirm?dto=' + +encodeURIComponent(JSON.stringify(data))
-          })
-        }
-      },
-      async clickSwipeButton(item) {
-        //删除商品,重新加载数据?
-
-        this.$message.showLoading()
-        const {code} = await http.request('post', '/api/api/customer/flower/cart/change-num', {
-              data: {
-                id: dto.id,
-                num: addnum
-              }
-            }
-        )
-        this.$message.hideLoading()
-        if (code === 0) {
-          if (this.ids.indexOf(item.id) >= 0) {
-            this.ids.splice(this.ids.indexOf(item.id), 1)
-          }
-          for (var i = 0; i < this.list.length; i++) {
-            if (this.list[i].id === dto.supplierId) {
-              this.list[i].splice(i, 1)
-              if (this.list.flowerList.length === 1) {
-                if (this.ids.indexOf(this.list[i].id) >= 0) {
-                  this.ids.splice(this.ids.indexOf(this.list[i].id), 1)
-                }
-                this.list[i].flowerList.splice(0, 1)
-                this.list.splice(i, 1)
-              } else {
-                //只需要清楚这个元素
-                var k = -1
-                for (var j = 0; j < this.list[i].flowerList.length; j++) {
-                  if (this.list[i][j].id === item.id) {
-                    k = j;
-                    break
-                  }
-                }
-                this.list[i].flowerList.splice(k, 1)
-              }
-              break
-            }
-          }
-        }
-      },
-
-      selectAll() {
-        console.log('selectAll', this.checkall)
-        if (this.checkall) {
-          this.ids = []
-          this.checkall = false
-          // this.$forceUpdate()
-        } else {
-          this.list.forEach(dto => {
-            if (this.ids.indexOf(dto.id) < 0) {
-              this.ids.push(dto.id)
-            }
-            dto.flowerList.forEach(item => {
-              if (this.ids.indexOf(item.id) < 0) {
-                this.ids.push(item.id)
-              }
-            })
-          })
-          this.checkall = true
-        }
-      },
-      changeItem(dto, type) {
-        if (type === 'supplier') {
-          //全选上
-          if (this.ids.indexOf(dto.id) < 0) {
-            this.ids.push(dto.id)
-            dto.flowerList.forEach(item => {
-              if (this.ids.indexOf(item.id) < 0) {
-                this.ids.push(item.id)
-              }
+              id: this.list[j].flowerList[k].id,
+              num: this.list[j].flowerList[k].num
             })
           } else {
-            this.checkall = false
-            this.ids.splice(this.ids.indexOf(dto.id), 1)
-            dto.flowerList.forEach(item => {
-              this.ids.splice(this.ids.indexOf(item.id), 1)
-            })
+            // console.log('skip', arr, this.list.flowerList[j],this.list.flowerList[j].id)
           }
+        }
 
-        } else {
-          //更换个人的
-          if (this.ids.indexOf(dto.id) < 0) {
-            this.ids.push(dto.id)
-          } else {
-            this.checkall = false
-
-            if (this.ids.indexOf(dto.supplierId) >= 0) {
-              this.ids.splice(this.ids.indexOf(dto.supplierId), 1)
+      }
+      if (arr.length < 1) {
+        console.log('请选择商品', arr, this.ids)
+        return
+      }
+      this.$message.showLoading()
+      const {code, data} = await http.request('post', '/api/customer/flower/order/confirm/info', {
+            data: {
+              flowers: arr,
             }
           }
+      )
+      this.$message.hideLoading()
+      if (code === 0) {
+        this.$storage.setItem('_cache_shopping_dto',JSON.stringify(data))
+        uni.navigateTo({
+          url: '/sub_pages/customer/shopping/confirm'
+        })
+      }
+    },
+    async clickSwipeButton(item) {
+      //删除商品,重新加载数据?
 
+      this.$message.showLoading()
+      const {code} = await http.request('get', '/api/customer/flower/cart/delete', {
+            params: {
+              id: item.id,
+            }
+          }
+      )
+      this.$message.hideLoading()
+      if (code === 0) {
+        if (this.ids.indexOf(item.id) >= 0) {
+          this.ids.splice(this.ids.indexOf(item.id), 1)
         }
-      },
-      async addnum(dto, addnum) {
-        if (dto.num + addnum >= 0) {
-
-        } else {
-          return
-        }
-        this.$message.showLoading()
-        const {code} = await http.request('post', '/api/api/customer/flower/cart/change-num', {
-              data: {
-                id: dto.id,
-                num: addnum
+        for (var i = 0; i < this.list.length; i++) {
+          if (this.list[i].id === item.supplierId) {
+            this.list[i].splice(i, 1)
+            if (this.list[i].flowerList.length === 1) {
+              if (this.ids.indexOf('supplier@' + this.list[i].supplierId) >= 0) {
+                this.ids.splice(this.ids.indexOf('supplier@' + this.list[i].supplierId), 1)
               }
+              this.list[i].flowerList.splice(0, 1)
+              this.list.splice(i, 1)
+            } else {
+              //只需要清楚这个元素
+              var k = -1
+              for (var j = 0; j < this.list[i].flowerList.length; j++) {
+                if (this.list[i][j].id === item.id) {
+                  k = j;
+                  break
+                }
+              }
+              this.list[i].flowerList.splice(k, 1)
             }
-        )
-        this.$message.hideLoading()
-        if (code === 0) {
-          dto.num += addnum
-        }
-      },
-      async init() {
-        this.$message.showLoading()
-        await this.$store.dispatch('sign_clear', 'shopping');
-        const {code, data} = await this.$http.request('get', '/api/customer/flower/cart/list', {})
-        this.$message.hideLoading()
-        this.list = []
-        if (code === 0) {
-          this.list = data.list || []
-
+            break
+          }
         }
       }
     },
+
+    selectAll() {
+      console.log('selectAll', this.checkall)
+      if (this.checkall) {
+        this.ids = []
+        this.checkall = false
+        // this.$forceUpdate()
+      } else {
+        this.list.forEach(dto => {
+          if (this.ids.indexOf(dto.id) < 0) {
+            this.ids.push(dto.id)
+          }
+          dto.flowerList.forEach(item => {
+            if (this.ids.indexOf(item.id) < 0) {
+              this.ids.push(item.id)
+            }
+          })
+        })
+        this.checkall = true
+      }
+    },
+    changeItem(dto, type) {
+      console.log('click changeItem', dto, type, this.ids)
+      if (type === 'supplier') {
+        //全选上
+        if (this.ids.indexOf('supplier@' + dto.supplierId) < 0) {
+          this.ids.push('supplier@' + dto.supplierId)
+          dto.flowerList.forEach(item => {
+            if (this.ids.indexOf(item.id) < 0) {
+              this.ids.push(item.id)
+            }
+          })
+        } else {
+          this.checkall = false
+          this.ids.splice(this.ids.indexOf('supplier@' + dto.supplierId), 1)
+          dto.flowerList.forEach(item => {
+            this.ids.splice(this.ids.indexOf('supplier@' + item.supplierId), 1)
+          })
+        }
+
+      } else {
+        //更换个人的
+        if (this.ids.indexOf(dto.id) < 0) {
+          this.ids.push(dto.id)
+        } else {
+          this.checkall = false
+
+          if (this.ids.indexOf(dto.id) >= 0) {
+            this.ids.splice(this.ids.indexOf(dto.id), 1)
+          }
+        }
+
+      }
+    },
+    async addnum(dto, addnum) {
+      if (dto.num + addnum >= 0) {
+
+      } else {
+        return
+      }
+      this.$message.showLoading()
+      const {code} = await http.request('post', '/api/customer/flower/cart/change-num', {
+            data: {
+              id: dto.id,
+              num: addnum
+            }
+          }
+      )
+      this.$message.hideLoading()
+      if (code === 0) {
+        dto.num += addnum
+      }
+    },
+    async init() {
+      if (!this.currentInfo.customerDTO) {
+        this.$message.showToast('请先前往个人中心补充个人信息')
+        return
+      }
+      this.$message.showLoading()
+      await this.$store.dispatch('sign_clear', 'shopping');
+      const {code, data} = await this.$http.request('get', '/api/customer/flower/cart/list', {})
+      this.$message.hideLoading()
+      this.list = []
+      if (code === 0) {
+        this.list = data || []
+
+      }
+    }
   }
 }
 </script>
@@ -282,13 +302,15 @@
   .shopping-item {
     padding: 28rpx 22rpx;
     position: relative;
+    background-color: #ffffff;
 
     .sup-title {
-
+      margin-left: 10rpx;
+      margin-top: 10rpx;
     }
 
     .item-each {
-      padding-left: 88rpx;
+      padding-left: 40rpx;
 
       .img {
         width: 124rpx;
@@ -323,7 +345,14 @@
     }
 
     .button-icons {
-      position: absolute;
+      //position: absolute;
+      //z-index: 10;
+      line-height: 40rpx;
+
+      .curnums {
+        margin-left: 10rpx;
+        margin-right: 10rpx;
+      }
     }
   }
 

--
Gitblit v1.9.3