yann 5 сар өмнө
parent
commit
3e23157ba7

+ 5 - 3
app.json

@@ -3,14 +3,16 @@
       "pages/index/index",
       "pages/all/all",
       "pages/cart/cart",
-      "pages/my/my",
+      "pages/my/personalCenter/personalCenter",
       "pages/detail/detail",
       "pages/login/login",
       "pages/Mall/sortCommodity/sortCommodity",
       "pages/Mall/presaleCommodity/presaleCommodity",
       "pages/Mall/newCommodity/newCommodity",
       "pages/Mall/hotCommodity/hotCommodity",
-      "pages/order/confirmOrder/confirmOrder"
+      "pages/order/confirmOrder/confirmOrder",
+      "pages/my/addressManage/addressManage",
+      "pages/my/addAddress/addAddress"
   ],
   "window": {
     "backgroundColor": "#FFFFFF",
@@ -53,7 +55,7 @@
         "text": "购物车"
       },
       {
-        "pagePath": "pages/my/my",
+        "pagePath": "pages/my/personalCenter/personalCenter",
         "text": "我的"
       }
     ]

+ 4 - 0
pages/cart/cart.js

@@ -133,6 +133,10 @@ Page({
     // 确认下单
     confirmOrder(){
         let prods = this.data.cartList.filter(item=>item.checkFlag === "1");
+        prods.forEach(item=>{
+            item.cartsId = item.id;
+            delete item.id;
+        })
         wx.navigateTo({
             url: '/pages/order/confirmOrder/confirmOrder?prods='+encodeURIComponent(JSON.stringify(prods)),
         })

+ 42 - 1
pages/my/addAddress/addAddress.js

@@ -1,3 +1,5 @@
+import { API } from "../../../service/api";
+
 // pages/my/addAddress/addAddress.js
 Page({
 
@@ -7,7 +9,14 @@ Page({
   data: {
     form:{
         checked:false
-    }
+    },
+    region: []
+  },
+  handleRegionChange(e) {
+    this.setData({
+      region: e.detail.value
+    });
+    console.log('选择地区:', e.detail.value);
   },
   // 监听input的输入
   inputChange(e){
@@ -17,10 +26,42 @@ Page({
     obj[key] = value;
     this.setData({
         form:{
+            ...this.data.form,
             ...obj
         }
     })
   },
+  // 监听默认地址设置
+  radioChange(e){
+      this.setData({
+          "form.checked":!this.data.form.checked
+      })
+  },
+  // 保存地址
+  formSubmit(){
+      let {name,phone,address,checked} = this.data.form;
+      let region = this.data.region;
+      if(!name || !phone || !address || region.length === 0){
+        wx.showToast({
+          title: !name?"请输入收件人":!phone?"请输入手机号":region.length === 0?"请选择所在地区":"请输入详细地址",
+          icon:"none",
+          duration:3000
+        })  
+        return;
+      }
+      let data = {
+        mobile:phone,
+        recipient:name,
+        province:region[0],
+        city:region[1],
+        district:region[2],
+        address:address,
+        defaultFlag:checked?1:0
+      }
+      API.saveAddress(data).then(res=>{
+        wx.navigateBack();
+      })
+  },
   /**
    * 生命周期函数--监听页面加载
    */

+ 14 - 5
pages/my/addAddress/addAddress.wxml

@@ -2,23 +2,32 @@
 <view>
     <form catchsubmit="formSubmit">
         <label class="radio">
-            <radio value="r1" checked="{{form.checked}}"/>设置为默认地址
+            <radio value="r1" checked="{{form.checked}}" bindtap="radioChange"/>设置为默认地址
         </label>
         <view class="info">
            <text class="name">收件人</text>
-           <input type="text" class="input" data-key="name" bindinput="inputChange"/>
+           <input type="text" class="input" data-key="name" placeholder="请输入收件人姓名" bindinput="inputChange"/>
         </view>
         <view class="info">
            <text class="name">手机号</text>
-           <input type="text" data-key="phone" class="input" bindinput="inputChange"/>
+           <input type="number" data-key="phone" class="input" placeholder="请输入收件人手机号" bindinput="inputChange"/>
         </view>
         <view class="info">
            <text class="name">所在地区</text>
-           <input type="text" data-key="region" class="input" bindinput="inputChange"/>
+           <picker mode="region"
+                class="input"
+                bindchange="handleRegionChange" 
+                value="{{region}}"
+                >
+                <view wx:if="region.length > 0">{{region[0]}} {{region[1]}} {{region[2]}}</view>
+                <text class="placeholder" wx:if="{{region.length === 0}}">请输入收件人地区</text>
+            </picker>
         </view>
         <view class="info">
            <text class="name">详细地址</text>
-           <input type="text" data-key="address" class="input" bindinput="inputChange"/>
+           <input type="text" data-key="address" class="input" placeholder="请输入收件人详细地址" bindinput="inputChange"/>
         </view>
+        
+        <button class="saveAddress" formType="submit">保 存</button>
     </form>
 </view>

+ 13 - 0
pages/my/addAddress/addAddress.wxss

@@ -14,7 +14,20 @@
 .info .input{
     width: 450rpx;
     height: 100rpx;
+    line-height: 100rpx;
     background: #F2F2F2;
     border-radius: 10rpx;
     padding-left: 20rpx;
+}
+.info .input .placeholder{
+    color: rgb(119, 117, 117);
+}
+.saveAddress{
+    width: 583rpx !important;
+    height: 96rpx;
+    background: #FED279;
+    position: fixed;
+    left: 50%;
+    bottom: 100rpx;
+    transform: translate(-50%,0);
 }

+ 11 - 3
pages/my/addressManage/addressManage.js

@@ -12,16 +12,24 @@ Page({
   // 获取地址列表
   getAddressList(){
       API.getAddressList().then(res=>{
+          res.userAddressList.forEach(item=>{
+              item.defaultFlag = Number(item.defaultFlag);
+          })
           this.setData({
               addressList:res.userAddressList
           })
       })
-  },  
+  },
+  // 添加地址
+  addAddress(){
+      wx.navigateTo({
+        url: '/pages/my/addAddress/addAddress',
+      })
+  }, 
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
-    this.getAddressList();
   },
 
   /**
@@ -35,7 +43,7 @@ Page({
    * 生命周期函数--监听页面显示
    */
   onShow() {
-
+    this.getAddressList();
   },
 
   /**

+ 5 - 5
pages/my/addressManage/addressManage.wxml

@@ -2,17 +2,17 @@
 <view>
    <view class="header">
       <text>常用地址</text>
-      <text>+新增</text>
+      <text bindtap="addAddress">+新增</text>
    </view>
    <view class="addressList">
     <view class="itemAddress" wx:for="{{addressList}}" wx:key="id">
-        <checkbox checked="{{item.checked}}"/>
+        <checkbox checked="{{item.defaultFlag}}"/>
         <view class="content">
             <view>
-              <text>{{item.name}}</text>
-              <text>{{item.phone}}</text>
+              <text>{{item.recipient}} </text>
+              <text>{{item.mobile}}</text>
             </view>
-            <text class="address">{{item.address}}</text>
+            <text class="address">{{item.province}}{{item.city}}{{item.district }} {{item.address}}</text>
         </view>
         <text>删除</text>
     </view>

+ 3 - 0
pages/my/addressManage/addressManage.wxss

@@ -19,4 +19,7 @@
     display: flex;
     justify-content: space-between;
     align-items: center;
+}
+.itemAddress .content{
+    max-width: 530rpx;
 }

+ 43 - 3
pages/order/confirmOrder/confirmOrder.js

@@ -1,4 +1,5 @@
 // pages/order/confirmOrder/confirmOrder.js
+import { API } from "../../../service/api";
 import {formatPrice} from "../../../utils/utils";
 
 Page({
@@ -9,20 +10,59 @@ Page({
   data: {
     prods:[],
     totalPrice:0, // 订单总金额
+    address:""
+  },
+  // 获取地址列表
+  getAddressList(){
+      API.getAddressList().then(res=>{
+        let address = res.userAddressList.filter(item=>item.defaultFlag === "1");
+        if(address.length === 0){
+            address = res.userAddressList[0];
+        }else{
+            address = address[0];
+        }
+        this.setData({
+            address
+        })
+      })
+  },
+  // 去地址管理页面
+  goAddressMange(){
+      wx.navigateTo({
+        url: '/pages/my/addressManage/addressManage',
+      })
+  },
+  // 确认订单
+  submitOrder(){
+      let data = {
+        orderItemDTOS:this.data.orderItemDTOS,
+        userAddressId:this.data.address.userAddressId
+      }
+      API.createOrder(data).then(res=>{
+
+      })
   },
-
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
     let list = JSON.parse(decodeURIComponent(options.prods));
     let total = 0;
+    let orderItemDTOS = [];
     list.forEach(item=>{
         total += item.quantity*item.price;
+        orderItemDTOS.push({
+            cartsId:item.cartsId,
+            mercId:item.mercId || item.mercProdId,
+            prodId:item.id,
+            prodAttrId:item.prodAttrId,
+            count:item.quantity
+        })
     })
     this.setData({
         prods:list,
-        totalPrice:formatPrice(total)
+        totalPrice:formatPrice(total),
+        orderItemDTOS
     })
   },
 
@@ -37,7 +77,7 @@ Page({
    * 生命周期函数--监听页面显示
    */
   onShow() {
-
+    this.getAddressList();
   },
 
   /**

+ 10 - 7
pages/order/confirmOrder/confirmOrder.wxml

@@ -1,13 +1,16 @@
 <!--pages/order/confirmOrder/confirmOrder.wxml-->
 <!-- 地址 -->
-<view class="address">
+<view class="address" bindtap="goAddressMange">
     <image class="icon" src="/images/mall/address.png" mode="widthFix"/>
-    <view class="addressInfo">
+    <view class="addressInfo" wx:if="{{address}}">
         <view class="userInfo">
-          <text>张某某</text>
-          <text>12345678901</text>
+          <text>{{address.recipient}}</text>
+          <text>{{address.mobile}}</text>
         </view>
-        <text>上海市普陀区金沙江路250弄43号101室</text>
+        <text>{{address.province}} {{address.city}} {{address.district}} {{address.address}}</text>
+    </view>
+    <view class="addressInfo" wx:if="{{!address}}">
+        <text>请添加收获地址</text>
     </view>
     <image class="more" src="/images/mall/back.png" mode="widthFix" srcset=""/>
 </view>
@@ -31,7 +34,7 @@
    </view> -->
    <view class="info">
       <text class="title">商品总件数</text>
-      <text class="value">共5件商品</text>
+      <text class="value">共{{prods.length}}件商品</text>
    </view>
    <view class="info">
       <text class="title">商品总价</text>
@@ -39,4 +42,4 @@
    </view>
 </view>
 
-<button class="submit">确 定</button>
+<button class="submit" bindtap="submitOrder">确 定</button>

+ 9 - 1
service/api.js

@@ -269,5 +269,13 @@ export const API = {
     // 获取地址列表
     getAddressList: function(){
         return http.post("/api/store/user-profile/address-list",{})
-    }
+    },
+    // 保存地址
+    saveAddress: function(playload){
+        return http.post("/api/store/user-profile/save-address",playload)
+    },
+    // 创建订单
+    createOrder: function(playload){
+        return http.post("/api/store/order/create",playload)
+    },
 }