Bladeren bron

no message

una 3 maanden geleden
bovenliggende
commit
97f98e7666
45 gewijzigde bestanden met toevoegingen van 9672 en 4 verwijderingen
  1. 63 0
      api/mall.js
  2. 11 1
      app.json
  3. 464 0
      pages/mall/cart/cart.js
  4. 4 0
      pages/mall/cart/cart.json
  5. 91 0
      pages/mall/cart/cart.wxml
  6. 509 0
      pages/mall/cart/cart.wxss
  7. 188 0
      pages/mall/catalog/catalog.js
  8. 4 0
      pages/mall/catalog/catalog.json
  9. 66 0
      pages/mall/catalog/catalog.wxml
  10. 352 0
      pages/mall/catalog/catalog.wxss
  11. 1160 0
      pages/mall/checkout/checkout.js
  12. 4 0
      pages/mall/checkout/checkout.json
  13. 261 0
      pages/mall/checkout/checkout.wxml
  14. 711 0
      pages/mall/checkout/checkout.wxss
  15. 267 0
      pages/mall/dxkOrder/dxkOrder.js
  16. 3 0
      pages/mall/dxkOrder/dxkOrder.json
  17. 67 0
      pages/mall/dxkOrder/dxkOrder.wxml
  18. 129 0
      pages/mall/dxkOrder/dxkOrder.wxss
  19. 66 0
      pages/mall/dxkOrderXy/dxkOrderXy.js
  20. 4 0
      pages/mall/dxkOrderXy/dxkOrderXy.json
  21. 162 0
      pages/mall/dxkOrderXy/dxkOrderXy.wxml
  22. 45 0
      pages/mall/dxkOrderXy/dxkOrderXy.wxss
  23. 1115 0
      pages/mall/goods/goods.js
  24. 3 0
      pages/mall/goods/goods.json
  25. 328 0
      pages/mall/goods/goods.wxml
  26. 1375 0
      pages/mall/goods/goods.wxss
  27. 441 0
      pages/mall/order/order.js
  28. 3 0
      pages/mall/order/order.json
  29. 166 0
      pages/mall/order/order.wxml
  30. 420 0
      pages/mall/order/order.wxss
  31. 79 0
      pages/mall/payResult/payResult.js
  32. 4 0
      pages/mall/payResult/payResult.json
  33. 50 0
      pages/mall/payResult/payResult.wxml
  34. 102 0
      pages/mall/payResult/payResult.wxss
  35. 203 0
      pages/mall/search/search.js
  36. 3 0
      pages/mall/search/search.json
  37. 75 0
      pages/mall/search/search.wxml
  38. 353 0
      pages/mall/search/search.wxss
  39. 131 0
      pages/mall/toolkitConfirm/toolkitConfirm.js
  40. 3 0
      pages/mall/toolkitConfirm/toolkitConfirm.json
  41. 39 0
      pages/mall/toolkitConfirm/toolkitConfirm.wxml
  42. 113 0
      pages/mall/toolkitConfirm/toolkitConfirm.wxss
  43. 12 0
      pages/temp/serviceOrder/serviceOrder.js
  44. 17 0
      pages/temp/serviceOrder/serviceOrder.wxml
  45. 6 3
      pages/temp/serviceOrder/serviceOrder.wxss

+ 63 - 0
api/mall.js

@@ -0,0 +1,63 @@
+
+// var WxApiRoot = 'http://localhost:19110/jzworkerapiservice/wx/'; 
+// uat环境使用 
+ var WxApiRoot = 'https://uat.jms.lifejingzhi.com/jzfranchiseeapiservice/jmsapp/'; 
+ var WxApiRootMall = 'https://uat.servant.lifejingzhi.com/jzworkerapiservice/wxservant/'; 
+ // 云平台上线时使用 
+  // var WxApiRoot = 'https://servant.lifejingzhi.com/jzworkerapiservice/wx/'; 
+
+const app = getApp();
+module.exports = { 
+  AuthRegister: WxApiRoot + 'auth/register', //账号注册
+  CatalogList: WxApiRoot + 'catalog/index', //分类目录全部分类数据接口
+  CatalogCurrent: WxApiRoot + 'catalog/current', //分类目录当前分类数据接口
+  GoodsCount: WxApiRoot + 'goods/count', //统计商品总数
+  GoodsL1Category:WxApiRoot+'goods/categoryGoods',//类目下所有商品
+  OrderList: WxApiRoot + 'order/list', //订单列表
+  OrderPrepay: WxApiRoot + 'order/prepay', // 订单的预支付会话
+  OrderDelete: WxApiRoot + 'order/delete', //删除订单
+  OrderCancel: WxApiRoot + 'order/cancel', //取消订单
+  OrderConfirm: WxApiRoot + 'order/confirm', //确认收货
+  OrderRefund: WxApiRoot + 'order/refund', //退款取消订单
+  QrGoodsCodeCreate:WxApiRoot+'qrcode/createshare',//商品分享链接 会员和普通用于一致 在分享用户注册时区分
+  GroupOnJoin: WxApiRoot + 'groupon/join', //团购API-详情
+  GoodsDetail: WxApiRoot + 'goods/detail', //获得商品的详情
+  GoodsRelated: WxApiRoot + 'goods/related', //商品详情页的关联商品(大家都在看) 
+  CollectAddOrDelete: WxApiRoot + 'collect/addordelete', //添加或取消收藏
+  CartFastAdd: WxApiRoot + 'cart/fastadd', // 立即购买商品
+  CartAdd: WxApiRoot + 'cart/add', // 添加商品到购物车
+  CartCheckout: WxApiRoot + 'cart/checkout', // 下单前信息确认
+  OrderCheck:WxApiRoot+ 'order/check',
+  OrderSubmit: WxApiRoot + 'order/submit', // 提交订单
+  OrderPrepay: WxApiRoot + 'order/prepay', // 订单的预支付会话
+  OrderAppoint: WxApiRoot + 'orderbook/estimate', // POST  预约服务人员结果预估
+  SearchIndex: WxApiRoot + 'search/index', //搜索关键字
+  SearchResult: WxApiRoot + 'search/result', //搜索结果
+  SearchHelper: WxApiRoot + 'search/helper', //搜索帮助
+  SearchClearHistory: WxApiRoot + 'search/clearhistory', //搜索历史清楚
+  GoodsList: WxApiRoot + 'goods/list', //获得商品列表
+  CartList: WxApiRoot + 'cart/index', //获取购物车的数据
+  CartChecked: WxApiRoot + 'cart/checked', // 选择或取消选择商品
+  CartUpdate: WxApiRoot + 'cart/update', // 更新购物车的商品
+  CartDelete: WxApiRoot + 'cart/delete', // 删除购物车的商品
+
+  //请假,商城和服务者crm一起
+  GetLeaveAllType: WxApiRoot + 'workerLeave/getAllType', // 获取所有请假类型
+  GetLeavePageList: WxApiRoot + 'workerLeave/getPageList', // 查询请假列表
+  SubmitLeave: WxApiRoot + 'workerLeave/submitLeave', //发起请假
+  CancelLeave: WxApiRoot + 'workerLeave/cancelLeave', // 取消请假 
+  StorageUpload:function(){
+    let durs= WxApiRoot + 'storage/addFile'; //图片上传,
+    let isUat=wx.getStorageSync('isUat');
+     if(!isUat){
+      durs=durs.replace('uat.','')
+     }
+    return durs;
+	 },
+	 ToolkitList: WxApiRoot + 'workerToolkit/list', //工具包待领取
+	 ToolkitToComplete: WxApiRoot + 'workerToolkit/getWorkerToolInfoToComplete', 
+	 ToolkitReceive: WxApiRoot + 'workerToolkit/receive', 
+	 getDetailInfo:WxApiRoot + 'telecomCard/getDetailInfo',
+	 saveOrder:WxApiRoot + 'telecomCard/saveOrder',  
+	 selectNumber:WxApiRoot + 'telecomCard/selectNumber',  
+}

+ 11 - 1
app.json

@@ -19,7 +19,17 @@
 		"pages/refund/refundList/refundList",
 		"pages/refund/refundDetail/refundDetail",
 		"pages/refund/refundRemark/refundRemark",
-		"pages/refund/refundAudit/refundAudit"
+		"pages/refund/refundAudit/refundAudit",
+		"pages/mall/catalog/catalog",
+		"pages/mall/order/order",
+		"pages/mall/checkout/checkout",
+		"pages/mall/goods/goods",
+		"pages/mall/search/search",
+		"pages/mall/cart/cart",
+		"pages/mall/payResult/payResult",
+		"pages/mall/toolkitConfirm/toolkitConfirm",
+		"pages/mall/dxkOrder/dxkOrder",
+		"pages/mall/dxkOrderXy/dxkOrderXy"
 
   ],
   "window": {

+ 464 - 0
pages/mall/cart/cart.js

@@ -0,0 +1,464 @@
+var util = require('../../../utils/jmsUtil.js');
+var mall = require('../../../api/mall.js');
+var user = require('../../../utils/user.js');
+
+var app = getApp();
+
+Page({
+  data: {
+    cartGoods: [],
+    cartTotal: {
+      "goodsCount": 0,
+      "goodsAmount": 0.00,
+      "checkedGoodsCount": 0,
+      "checkedGoodsAmount": 0.00
+    },
+    isEditCart: false,
+    checkedAllStatus: true,
+    editCartList: [],
+    hasLogin: false
+  },
+  onLoad: function (options) {
+    // 页面初始化 options为页面跳转所带来的参数
+
+  },
+  onReady: function () {
+    // 页面渲染完成
+  },
+  onPullDownRefresh() {
+    wx.showNavigationBarLoading() //在标题栏中显示加载
+    this.getCartList();
+    wx.hideNavigationBarLoading() //完成停止加载
+    wx.stopPullDownRefresh() //停止下拉刷新
+  },
+  goIndex: function () {
+    wx.switchTab({
+      url: '/pages/index/index',
+    })
+  },
+  onShow: function () {
+    console.info(app.globalData.hasLogin)
+    let that = this;
+    that.getCartList();
+    // if (app.globalData.hasLogin) {
+    //   that.setData({
+    //     hasLogin: app.globalData.hasLogin
+    //   });
+    //   that.getCartList();
+    // } else {
+    //   app.checkLoginReadyCallback = res => {
+    //     this.setData({
+    //       hasLogin: true
+    //     });
+    //     that.getCartList();
+    //   }
+    // } 
+
+  },
+  onHide: function () {
+    // 页面隐藏
+  },
+  onUnload: function () {
+    // 页面关闭
+  },
+  getPhoneNumber: function (e) {
+    let that = this;
+    var ivObj = e.detail.iv
+    var telObj = e.detail.encryptedData
+    let r_userid = wx.getStorageSync('r_userid');
+    if (r_userid == null || r_userid == "") r_userid = 0;
+    //------执行Login---------
+    wx.login({
+      success: res => {
+        util.request(mall.AuthRegister, {
+          code: res.code,
+          encryptedData: telObj,
+          iv: ivObj,
+          r_userid: r_userid
+        }).then(function (res) {
+          if (res.errno === 0) {
+            that.setData({
+              hasLogin: true
+            });
+            //存储用户信息  
+            app.globalData.hasLogin = true;
+            wx.setStorageSync('userInfo', res.data.userInfo);
+            wx.setStorageSync('token', res.data.token);
+            wx.showToast({
+              title: '授权注册成功',
+              icon: 'success',
+              duration: 2000
+            })
+          }
+        });
+      }
+    });
+
+    //-----------------是否授权,授权通过进入主页面,授权拒绝则停留在登陆界面
+    if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { //用户点击拒绝 
+      wx.showModal({
+        title: '警告',
+        content: '您点击了拒绝授权,部分功能无法使用!!!',
+        showCancel: false,
+        confirmText: '确定',
+        success: function (res) {
+          // 用户没有授权成功,不需要改变 isHide 的值
+          if (res.confirm) {
+            wx.switchTab({
+              url: '/pages/index/index',
+            })
+          };
+        }
+      })
+    }
+  },
+  getCartList: function () {
+    let that = this;
+    util.request(mall.CartList).then(function (res) {
+      if (res.errno === 0) {
+        that.setData({
+          cartGoods: res.data.cartList,
+          cartTotal: res.data.cartTotal
+        });
+        that.setData({
+          checkedAllStatus: that.isCheckedAll()
+        });
+        //显示购物车角标
+        if (res.data.cartTotal != null) {
+          wx.setStorageSync('cartcount', res.data.cartTotal.goodsCount);
+          // user.cartshow();
+        }
+      }
+    });
+  },
+  isCheckedAll: function () {
+    //判断购物车商品已全选
+    return this.data.cartGoods.every(function (element, index, array) {
+      if (element.checked == true) {
+        return true;
+      } else {
+        return false;
+      }
+    });
+  },
+  doCheckedAll: function () {
+    let checkedAll = this.isCheckedAll()
+    this.setData({
+      checkedAllStatus: this.isCheckedAll()
+    });
+  },
+  checkedItem: function (event) {
+    let itemIndex = event.target.dataset.itemIndex;
+    let that = this;
+
+    let productIds = [];
+    productIds.push(that.data.cartGoods[itemIndex].commoditySkuId);
+    if (!this.data.isEditCart) {
+      util.request(mall.CartChecked, {
+        productIds: productIds,
+        isChecked: that.data.cartGoods[itemIndex].checked ? 0 : 1
+      }, 'POST').then(function (res) {
+        if (res.errno === 0) {
+          that.setData({
+            cartGoods: res.data.cartList,
+            cartTotal: res.data.cartTotal
+          });
+        }
+
+        that.setData({
+          checkedAllStatus: that.isCheckedAll()
+        });
+      });
+    } else {
+      //编辑状态
+      let tmpCartData = this.data.cartGoods.map(function (element, index, array) {
+        if (index == itemIndex) {
+          element.checked = !element.checked;
+        }
+
+        return element;
+      });
+
+      that.setData({
+        cartGoods: tmpCartData,
+        checkedAllStatus: that.isCheckedAll(),
+        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
+      });
+    }
+  },
+  getCheckedGoodsCount: function () {
+    let checkedGoodsCount = 0;
+    this.data.cartGoods.forEach(function (v) {
+      if (v.checked === true) {
+        checkedGoodsCount += v.number;
+      }
+    });
+    console.log(checkedGoodsCount);
+    return checkedGoodsCount;
+  },
+  getCheckedGoodsAmount: function () {
+    let checkedGoodsAmount = 0;
+    this.data.cartGoods.forEach(function (v) {
+      if (v.checked === true) {
+        checkedGoodsAmount += v.number * v.price;
+      }
+    });
+    return checkedGoodsAmount.toFixed(2);
+  },
+  checkedAll: function () {
+    let that = this;
+
+    if (!this.data.isEditCart) {
+      var productIds = this.data.cartGoods.map(function (v) {
+        return v.commoditySkuId;
+      });
+      util.request(mall.CartChecked, {
+        productIds: productIds,
+        isChecked: that.isCheckedAll() ? 0 : 1
+      }, 'POST').then(function (res) {
+        if (res.errno === 0) {
+          console.log(res.data);
+          that.setData({
+            cartGoods: res.data.cartList,
+            cartTotal: res.data.cartTotal
+          });
+        }
+
+        that.setData({
+          checkedAllStatus: that.isCheckedAll()
+        });
+      });
+    } else {
+      //编辑状态
+      let checkedAllStatus = that.isCheckedAll();
+      let tmpCartData = this.data.cartGoods.map(function (v) {
+        v.checked = !checkedAllStatus;
+        return v;
+      });
+
+      that.setData({
+        cartGoods: tmpCartData,
+        checkedAllStatus: that.isCheckedAll(),
+        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
+      });
+    }
+
+  },
+  editCart: function () {
+    var that = this;
+    if (this.data.isEditCart) {
+      this.getCartList();
+      this.setData({
+        isEditCart: !this.data.isEditCart
+      });
+    } else {
+      //编辑状态
+      let tmpCartList = this.data.cartGoods.map(function (v) {
+        v.checked = false;
+        return v;
+      });
+      this.setData({
+        editCartList: this.data.cartGoods,
+        cartGoods: tmpCartList,
+        isEditCart: !this.data.isEditCart,
+        checkedAllStatus: that.isCheckedAll(),
+        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
+      });
+    }
+
+  },
+  updateCart: function (cartItem,index,number,count) {
+    let that = this;
+
+    util.request(mall.CartUpdate, {
+      id:cartItem.id,
+      commodityId:cartItem.commodityId,
+      commoditySkuId:cartItem.commoditySkuId,
+      number:number
+    }, 'POST').then(res=> {
+      console.log(res);
+      if(res.errno==0){
+
+        // cartItem.number = number;
+        let cartItem = "cartGoods[" + index + "].number";
+        this.setData({
+          [cartItem]:number,
+        });
+        console.log(this.cartGoods);
+    this.setData({
+     
+      'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
+      'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
+    });
+
+
+        user.cartadd(count);
+        that.setData({
+          checkedAllStatus: that.isCheckedAll()
+        });
+      }else{
+        util.showErrorToast(res.errmsg);
+      }
+     
+    }).catch(err=>{
+      console.log(err);
+      util.showErrorToast(err.errno);
+    });
+
+  },
+  cutNumber: function (event) {
+    let that = this;
+    let itemIndex = event.target.dataset.itemIndex;
+    let cartItem = this.data.cartGoods[itemIndex];
+    //删除操作
+    if (cartItem.number == 1) {
+      wx.showModal({
+        title: "提醒",
+        content: "确定从购物车删除?",
+        success(res) {
+          if (res.confirm)
+            that.deleteCartGoods(cartItem);
+        }
+      })
+      
+    } else {
+      let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1;
+      // cartItem.number = number;
+      // this.setData({
+      //   cartGoods: this.data.cartGoods,
+      //   'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
+      //   'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
+      // });
+      this.updateCart(cartItem,itemIndex,number,-1);
+      //显示tab购物车
+      // user.cartadd(-1);
+    }
+  },
+  addNumber: function (event) {
+
+    let that = this;
+    let itemIndex = event.target.dataset.itemIndex;
+    let cartItem = this.data.cartGoods[itemIndex];
+    console.log(cartItem);
+    if(cartItem.goodsSn=='1036016'){
+      wx.showToast({
+        title: '此款商品只能购买一个',
+        icon: 'none',
+        duration: 2000
+      });
+      var number=1;
+    }else{
+
+    var number = cartItem.number + 1;
+    //显示tab购物车
+    // user.cartadd(1);
+  }
+
+  // cartItem.number = number;
+  //   this.setData({
+  //     cartGoods: this.data.cartGoods,
+  //     'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
+  //     'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
+  //   });
+    this.updateCart(cartItem,itemIndex,number,1);
+    
+  },
+  checkoutOrder: function () { //下单
+    //获取已选择的商品
+    let that = this;
+
+    var checkedGoods = this.data.cartGoods.filter(function (element, index, array) {
+      if (element.checked == true) {
+        return true;
+      } else {
+        return false;
+      }
+    });
+
+    if (checkedGoods.length <= 0) {
+      util.showErrorToast('请先选择商品')
+      return false;
+    }
+
+    // storage中设置了cartId,则是购物车购买
+    try {
+      wx.setStorageSync('cartId', 0);
+      wx.navigateTo({
+        url: '/pages/mall/checkout/checkout'
+      })
+    } catch (e) {}
+
+  },
+  deleteCart: function () {
+    //获取已选择的商品
+    let that = this;
+
+    let productIds = this.data.cartGoods.filter(function (element, index, array) {
+      if (element.checked == true) {
+        return true;
+      } else {
+        return false;
+      }
+    });
+
+    if (productIds.length <= 0) {
+      return false;
+    }
+
+    productIds = productIds.map(function (element, index, array) {
+      if (element.checked == true) {
+        return element.productId;
+      }
+    });
+let arr=[];
+arr.push(productIds);
+console.log(arr);
+
+    util.request(mall.CartDelete, {
+      productIds: arr
+    }, 'POST').then(function (res) {
+      console.log(res);
+      if (res.errno === 0) {
+        let cartList = res.data.cartList.map(v => {
+          v.checked = false;
+          return v;
+        });
+
+        that.setData({
+          cartGoods: cartList,
+          cartTotal: res.data.cartTotal
+        });
+      }
+
+      that.setData({
+        checkedAllStatus: that.isCheckedAll()
+      });
+    });
+  },
+  deleteCartGoods: function (cartItem) {
+    //获取已选择的商品
+    let that = this;
+    console.log(cartItem);
+    util.request(mall.CartDelete, {
+      productIds:[cartItem.commoditySkuId],
+    }, 'POST').then(function (res) {
+      console.log(res.data);
+      if (res.errno === 0) {
+        let cartList = res.data.cartList.map(v => {
+          v.checked = false;
+          return v;
+        });
+
+        that.setData({
+          cartGoods: cartList,
+          cartTotal: res.data.cartTotal
+        });
+        user.cartadd(-1);
+        user.cartshow();
+      }
+      that.setData({
+        checkedAllStatus: that.isCheckedAll()
+      });
+    });
+  }
+})

+ 4 - 0
pages/mall/cart/cart.json

@@ -0,0 +1,4 @@
+{
+  "enablePullDownRefresh": true,
+  "navigationBarTitleText": "购物车"
+}

+ 91 - 0
pages/mall/cart/cart.wxml

@@ -0,0 +1,91 @@
+<view class="container">
+  <!-- <view class="no-login" wx:if="{{!hasLogin}}">
+    <view class="c">
+      <text>您还没有注册</text>
+      <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">
+				<image class="wechat" src="/static/images/wechat.png"></image>
+        点击授权微信登录</button>
+    </view>
+  </view> -->
+  <!-- wx:else -->
+  <view class='login' >
+    <!--<view class="service-policy">
+      <view class="item">30天无忧退货</view>
+      <view class="item">48小时快速退款</view>
+      <view class="item">满88元免邮费</view>
+    </view>-->
+
+    <view class="no-cart" wx:if="{{cartGoods.length <= 0}}">
+      <view class="c">
+       <image src='/static/images/cart.png' bindtap="goIndex"></image>
+        <text>空空如也~</text>
+        <text>去添加点什么吧</text>
+      </view>
+    </view>
+    <view class="cart-view" wx:else>
+      <view class="list">
+        <view class="group-item">
+          <view class="goods">
+
+<!-- <view class="item {{isEditCart ? 'edit' : ''}}" wx:for="{{cartGoods}}" wx:key="id">
+              <van-checkbox value="{{ item.checked }}" bind:change="checkedItem" data-item-index="{{index}}"></van-checkbox>
+              <view class="cart-goods">
+                <image class="img" src="{{item.picUrl}}"></image>
+                <view class="info">
+                  <view class="t">
+                    <text class="name">{{item.goodsName}}</text>
+                    <text class="num">x{{item.number}}</text>
+                  </view>
+                  <view class="attr">{{ isEditCart ? '已选择:' : ''}}{{item.specifications||''}}</view>
+                  <view class="b">
+                    <text class="price">¥{{item.price}}</text>
+                    <view class="selnum">
+                      <view class="cut" bindtap="cutNumber" data-item-index="{{index}}">-</view>
+                      <input value="{{item.number}}" class="number" disabled="true" type="number" />
+                      <view class="add" bindtap="addNumber" data-item-index="{{index}}">+</view>
+                    </view>
+                  </view>
+                </view>
+              </view>
+            </view>-->
+
+            <view class="item  edit" wx:for="{{cartGoods}}" wx:key="id">
+              <van-checkbox value="{{ item.checked }}" bind:change="checkedItem" data-item-index="{{index}}"></van-checkbox>
+              <view class="cart-goods">
+                <image class="img" src="{{item.picUrl}}"></image>
+                <view class="info">
+                  <view class="t">
+                    <text class="name">{{item.commodityName}}</text>
+                    <!--<text class="num">x{{item.number}}</text>-->
+                  </view>
+                  <view class="attr">{{item.attributeValue||''}}</view>
+                  <view class="b">
+                    <text class="price">¥{{item.price}}</text>
+                    <view class="selnum">
+                      <view class="cut" bindtap="cutNumber" data-item-index="{{index}}">-</view>
+                      <input value="{{item.number}}" class="number" disabled="true" type="number" />
+                      <view class="add" bindtap="addNumber" data-item-index="{{index}}">+</view>
+                    </view>
+                  </view>
+                </view>
+              </view>
+            </view>
+
+
+          </view>
+        </view>
+
+      </view>
+      <view class="cart-bottom">
+        <van-checkbox value="{{ checkedAllStatus }}" bind:change="checkedAll">全选({{cartTotal.checkedGoodsCount}})</van-checkbox>
+        <view class="total">合计:{{'¥'+cartTotal.checkedGoodsAmount}}</view>
+        <view class='action_btn_area'>
+          <!--<view class="{{!isEditCart ? 'edit' : 'sure'}}" bindtap="editCart">{{!isEditCart ? '编辑' : '完成'}}</view>
+          <view class="delete" bindtap="deleteCart" wx:if="{{isEditCart}}">删除({{cartTotal.checkedGoodsCount}})</view>-->
+          <view class="checkout" bindtap="checkoutOrder" >结算</view>
+          <!-- </view>  -->
+        </view>
+      </view>
+    </view>
+  </view>
+</view>

+ 509 - 0
pages/mall/cart/cart.wxss

@@ -0,0 +1,509 @@
+page {
+  height: 100%;
+  min-height: 100%;
+  background: #f4f4f4;
+}
+
+.container {
+  background: #f4f4f4;
+  width: 100%;
+  height: auto;
+  min-height: 100%;
+  overflow: hidden;
+}
+
+.service-policy {
+  width: 750rpx;
+  height: 73rpx;
+  background: #f4f4f4;
+  padding: 0 31.25rpx;
+  display: flex;
+  flex-flow: row nowrap;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.service-policy .item {
+  background-size: 10rpx;
+  padding-left: 15rpx;
+  display: flex;
+  align-items: center;
+  font-size: 25rpx;
+  color: #666;
+}
+
+.no-login {
+  width: 100%;
+  height: auto;
+  margin: 0 auto;
+}
+
+.no-login .c {
+  width: 100%;
+  height: auto;
+  margin-top: 400rpx;
+}
+
+.no-login .c text {
+  margin: 0 auto;
+  display: block;
+  width: 258rpx;
+  height: 59rpx;
+  line-height: 29rpx;
+  text-align: center;
+  font-size: 35rpx;
+  color: #999;
+}
+
+.no-login button {
+  width: 90%;
+  margin: 0 auto;
+  color: #fff;
+  font-size: 30rpx;
+  height: 96rpx;
+  line-height: 96rpx;
+  right: 0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  position: flex;
+  bottom: 0;
+  left: 0;
+  border-radius: 0;
+  padding: 0;
+  margin-left: 5%;
+  text-align: center; 
+  border-radius: 6rpx;
+  letter-spacing: 3rpx;
+  background-color: #242a48;
+}
+
+.wechat{
+  width: 80rpx;
+  height: 80rpx;
+  margin-right: 15rpx;
+}
+
+.no-cart {
+  width: 100%;
+  height: auto;
+  margin: 0 auto;
+}
+
+.no-cart .c {
+  width: 100%;
+  height: auto;
+  margin-top: 400rpx;
+  text-align: center;
+}
+
+.no-cart .c image{
+  width: 120rpx;
+  height: 120rpx; 
+}
+
+.no-cart .c text {
+  margin: 0 auto;
+  display: block;
+  width: 258rpx;
+  height: 29rpx;
+  line-height: 29rpx;
+  text-align: center;
+  font-size: 29rpx;
+  color: #999;
+}
+
+.cart-view {
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+}
+
+.cart-view .list {
+  height: auto;
+  width: 100%;
+  overflow: hidden;
+  margin-bottom: 120rpx;
+}
+
+.cart-view .group-item {
+  height: auto;
+  width: 100%;
+  background: #fff;
+  margin-bottom: 18rpx;
+}
+
+.cart-view .item {
+  height: 164rpx;
+  width: 100%;
+  display: flex;
+  /* overflow: hidden; */
+}
+
+.cart-view .item .van-checkbox {
+  float: left;
+  margin: 65rpx 18rpx 65rpx 18rpx;  
+} 
+
+.cart-view .item .van-checkbox .van-icon {
+  color: #fff;
+}
+
+.cart-view .item .cart-goods {
+  /* float: left; */
+  height: 164rpx;
+  width: 672rpx;
+  border-bottom: 1px solid #f4f4f4;
+  display: flex;
+  align-items: center;
+}
+
+.cart-view .item .img {
+  float: left;
+  height: 125rpx;
+  width: 125rpx;
+  background: #f4f4f4;
+  margin: 19.5rpx 18rpx 19.5rpx 0;
+}
+
+.cart-view .item .info {
+  float: left;
+  height: 125rpx;
+  width: 503rpx;
+  margin: 19.5rpx 26rpx 19.5rpx 0;
+}
+
+.cart-view .item .t {
+  margin: 8rpx 0;
+  height: 28rpx;
+  font-size: 25rpx;
+  color: #333;
+  overflow: hidden;
+}
+
+.cart-view .item .name {
+  height: 28rpx;
+  max-width: 310rpx;
+  line-height: 28rpx;
+  font-size: 25rpx;
+  color: #333;
+  overflow: hidden;
+}
+
+.cart-view .item .num {
+  height: 28rpx;
+  line-height: 28rpx;
+  float: right;
+}
+
+.cart-view .item .attr {
+  margin-bottom: 17rpx;
+  height: 24rpx;
+  line-height: 24rpx;
+  font-size: 22rpx;
+  color: #666;
+  overflow: hidden;
+}
+
+.cart-view .item .b {
+  height: 28rpx;
+  line-height: 28rpx;
+  font-size: 25rpx;
+  color: #333;
+  overflow: hidden;
+}
+
+.cart-view .item .price {
+  float: left;
+  color: #ab956d;
+}
+
+/*.cart-view .item.edit .t {
+  display: none;
+}*/
+
+.cart-view .item.edit .attr {
+  text-align: left;
+  padding-right: 25rpx;
+  background-size: 12rpx 20rpx;
+  margin-bottom: 10rpx;
+  height: 35rpx;
+  line-height: 35rpx;
+  font-size: 24rpx;
+  color: #999;
+  overflow: hidden;
+}
+
+.cart-view .item.edit .b {
+  display: flex;
+  height: 60rpx;
+  overflow: hidden;
+}
+
+.cart-view .item.edit .price {
+  line-height: 42rpx;
+  height: 42rpx;
+  flex: 1;
+  color: #ab956d;
+}
+
+.cart-view .item.edit .selnum {
+  width: 235rpx;
+  height: 52rpx;
+  border: 1rpx solid #ccc;
+  display: flex;
+  margin-bottom: 10rpx;
+}
+
+.selnum .cut {
+  width: 70rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 50rpx;
+}
+
+.selnum .number {
+  flex: 1;
+  height: 100%;
+  text-align: center;
+  line-height: 50rpx;
+  border-left: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  float: left;
+}
+
+.selnum .add {
+  width: 80rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 50rpx;
+}
+
+.cart-view .group-item .header {
+  width: 100%;
+  height: 94rpx;
+  line-height: 94rpx;
+  padding: 0 26rpx;
+  border-bottom: 1px solid #f4f4f4;
+}
+
+.cart-view .promotion .icon {
+  display: inline-block;
+  height: 24rpx;
+  width: 15rpx;
+}
+
+.cart-view .promotion {
+  margin-top: 25.5rpx;
+  float: left;
+  height: 43rpx;
+  width: 480rpx;
+  /*margin-right: 84rpx;*/
+  line-height: 43rpx;
+  font-size: 0;
+}
+
+.cart-view .promotion .tag {
+  border: 1px solid #f48f18;
+  height: 37rpx;
+  line-height: 31rpx;
+  padding: 0 9rpx;
+  margin-right: 10rpx;
+  color: #f48f18;
+  font-size: 24.5rpx;
+}
+
+.cart-view .promotion .txt {
+  height: 43rpx;
+  line-height: 43rpx;
+  padding-right: 10rpx;
+  color: #333;
+  font-size: 29rpx;
+  overflow: hidden;
+}
+
+.cart-view .get {
+  margin-top: 18rpx;
+  float: right;
+  height: 58rpx;
+  padding-left: 14rpx;
+  border-left: 1px solid #d9d9d9;
+  line-height: 58rpx;
+  font-size: 29rpx;
+  color: #333;
+}
+
+.cart-bottom {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  height: 100rpx;
+  width: 100%;
+  background: #fff;
+  display: flex;
+}
+
+.cart-bottom .van-checkbox {
+  float: left;
+  margin: 33rpx 18rpx 33rpx 26rpx;
+  font-size: 29rpx;
+}
+
+.cart-bottom .van-checkbox .van-icon {
+  color: #fff;
+}
+
+.cart-bottom .total {
+  height: 34rpx;
+  flex: 1;
+  margin: 33rpx 15rpx;
+  font-size: 29rpx;
+}
+
+.cart-bottom .delete {
+  text-align: center;
+  width: 180rpx;
+  height: 80rpx;
+  line-height: 82rpx;
+  padding: 0;
+  margin: 0;
+  margin-left: -5rpx;
+  padding-right: 25rpx;
+  font-size: 25rpx;
+  color: #f4f4f4;
+  /* text-align: center; */
+  border-top-left-radius: 0rpx;
+  border-bottom-left-radius: 0rpx;
+  border-top-right-radius: 50rpx;
+  border-bottom-right-radius: 50rpx;
+  letter-spacing: 3rpx;
+  background-image: linear-gradient(to right, #9a9ba1 0%, #ae8b9c 100%);
+}
+
+.cart-bottom .checkout {
+  height: 100rpx;
+  width: 100rpx;
+  text-align: center;
+  line-height: 100rpx;
+  font-size: 29rpx;
+  /*background: #b4282d;*/
+  background: #242a48;
+  color: #fff;  
+}
+
+.action_btn_area {
+  /* border: 1px solid #333; */
+  position: absolute;
+  display: inline;
+  justify-content: center;
+  align-items: center;
+  right: 0;
+  top: 0;
+  /*width: 380rpx;
+  height: 100rpx;  */
+  display: inline;
+}
+
+.action_btn_area .edit {
+  width: 140rpx;
+  /* border: 1px solid #000; 
+  height: 70rpx;
+  line-height: 72rpx;
+  padding: 0;
+  margin: 0;
+  margin-right: 5rpx;
+  text-align: center;
+  margin-left: 20rpx;
+  /* padding-left: 25rpx; */
+  font-size: 25rpx;
+  color: #f4f4f4;
+  border-top-left-radius: 50rpx;
+  border-bottom-left-radius: 50rpx;
+  border-top-right-radius: 50rpx;
+  border-bottom-right-radius: 50rpx;
+  letter-spacing: 3rpx;
+  /* background-image: linear-gradient(to right, #ff7701 100%); */
+  background-image: linear-gradient(to right, #ab956d 0%, #ab956d 100%); 
+}
+
+.action_btn_area .checkout {
+  width: 140rpx;
+  height: 70rpx;
+  line-height: 72rpx;
+  padding: 0;
+  margin: 0;
+  margin-left: 5rpx;
+  margin-right: 10rpx;
+  margin-top: 15rpx;
+   /*padding-right: 25rpx; */
+  font-size: 25rpx;
+  color: #f4f4f4;
+  text-align: center;
+  border-top-left-radius: 50rpx;
+  border-bottom-left-radius: 50rpx;
+  border-top-right-radius: 50rpx;
+  border-bottom-right-radius: 50rpx;
+  letter-spacing: 3rpx;  
+  background: #242a48; 
+
+  float: right;
+}
+
+.action_btn_area .delete {
+  width: 140rpx;
+  /* border: 1px solid #000; */
+  height: 70rpx;
+  line-height: 72rpx;
+  padding: 0;
+  margin: 0;
+  margin-right: 5rpx;
+  text-align: center;
+  padding-left: -5rpx;
+  font-size: 25rpx;
+  color: #f4f4f4;
+  border-top-left-radius: 50rpx;
+  border-bottom-left-radius: 50rpx;
+  border-top-right-radius: 50rpx;
+  border-bottom-right-radius: 50rpx;
+  letter-spacing: 3rpx;
+  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%); 
+}
+
+.action_btn_area .sure {
+  text-align: center;
+  width: 140rpx;
+  height: 80rpx;
+  line-height: 82rpx;
+  padding: 0;
+  margin: 0;
+  margin-right: 10rpx;
+  padding-left: -5rpx;
+  font-size: 25rpx;
+  color: #f4f4f4;
+  /* text-align: center; */
+  border-top-left-radius: 50rpx;
+  border-bottom-left-radius: 50rpx;
+  border-top-right-radius: 50rpx;
+  border-bottom-right-radius: 50rpx;
+  letter-spacing: 3rpx;
+  background-image: linear-gradient(to right, #ab956d 0%, #ab956d 100%);
+  /* background-image: linear-gradient(to right, #ff7701 0%, #fe4800 100%); */
+}
+
+.auth_btn {
+  position: fixed;
+  top: 55vh;
+  left: 10vw;
+  width: 80vw;
+  height: 96rpx;
+  line-height: 96rpx;
+  font-size: 25rpx;
+  color: #f4f4f4;
+  /* text-align: center; */
+  border-top-left-radius: 50rpx;
+  border-bottom-left-radius: 50rpx;
+  border-top-right-radius: 50rpx;
+  border-bottom-right-radius: 50rpx;
+  letter-spacing: 3rpx;
+  background-image: linear-gradient(to right, #8baaaa 0%, #9a9ba1 100%);
+}

+ 188 - 0
pages/mall/catalog/catalog.js

@@ -0,0 +1,188 @@
+var util = require('../../../utils/jmsUtil');
+var mall = require('../../../api/mall.js'); 
+const user = require('../../../utils/user.js');
+// const area = require('../../../utils/area.js');
+
+//获取应用实例
+const app = getApp();
+
+Page({
+  data: {
+    categoryList: [],
+    currentCategory: {},
+    currentSubCategoryList: {},
+    scrollLeft: 0,
+    scrollTop: 0,
+    goodsList:[],
+    goodsCount: 0,
+    scrollHeight: 0,
+    hasLogin: true, 
+    city:'',//当前业务城市
+    citys:[],
+    cityIndex:0,
+    addressInfo:{}, 
+  },
+  onLoad: function (options) { 
+    
+  },
+  onPullDownRefresh() {
+    wx.showNavigationBarLoading() //在标题栏中显示加载
+    this.getCatalog();
+    wx.hideNavigationBarLoading() //完成停止加载
+    wx.stopPullDownRefresh() //停止下拉刷新
+  }, 
+  listenerCitySelected(e){
+    this.setData({
+      cityIndex:e.detail.value,
+      city:this.data.citys[e.detail.value]
+    }) 
+    app.globalData.city=this.data.city;
+  },
+  getCatalog: function () {
+ 
+    let that = this;
+    wx.showLoading({
+      title: '加载中...',
+    });
+    util.request(mall.CatalogList).then(function (res) {
+      //1036763 写死值 如果地址不是苏州市 隐藏活动专享
+      //20220223关闭所有活动合作专区
+     //console.info(res.data.categoryList)
+      var list=res.data.categoryList;
+     // if(that.data.addressInfo.city&&that.data.addressInfo.city!="苏州市"){
+        var categorys=[];
+        res.data.categoryList.forEach(item=>{
+          if(item.id!=1036763)
+             categorys.push(item);
+        });
+        list=categorys;
+     // } 
+      that.setData({
+        categoryList:list,
+        currentCategory: res.data.currentCategory,
+        currentSubCategoryList: res.data.currentSubCategory
+      });
+      that.getCategoryGoods();
+      wx.hideLoading();
+    }).catch((err)=>{
+      wx.hideLoading();
+      console.log(err);
+    });
+    util.request(mall.GoodsCount).then(function (res) {
+      that.setData({
+        goodsCount: res.data
+      });
+    }); 
+  },
+  getCategoryGoods(){//获取一级类目下所有商品
+    let that=this;
+    util.request(mall.GoodsL1Category,{
+      id:that.data.currentCategory.name=='热销商品'?'-1':that.data.currentCategory.id,
+      // shopId:that.data.addressInfo.shopId,
+      // isHot:that.data.currentCategory.name=='热销商品'?true:false
+    }).then(res=>{
+      console.info(res.data)
+      that.setData({
+        goodsList:res.data
+      }) 
+    })
+
+  },
+  getCurrentCategory: function (id) {
+    let that = this;
+    util.request(mall.CatalogCurrent, {
+        id:id,
+      })
+      .then(function (res) {
+        that.setData({
+          currentCategory: res.data.currentCategory,
+          currentSubCategoryList: res.data.currentSubCategory,
+
+        });
+        that.getCategoryGoods();
+      });
+  },
+  onReady: function () {
+    // 页面渲染完成 
+    if (app.globalData.hasLogin) {
+      this.setData({
+        hasLogin: true
+      });
+    }
+  },
+  onShow: function () {
+    this.getCatalog();  
+    // 页面显示
+    //显示购物车角标
+    //user.cartshow();
+    //确定业务城市 
+     var addressInfo=wx.getStorageSync('addressInfo'); 
+     if(addressInfo){
+       this.setData({
+         addressInfo:addressInfo
+       })
+     }else{ 
+        //手机性能慢,可能首页接口没初始化完毕
+        let that=this;
+        setTimeout(() => {
+          var addressInfo=wx.getStorageSync('addressInfo'); 
+          if(addressInfo){
+            that.setData({
+                addressInfo:addressInfo
+              })
+            }
+        }, 700);
+      
+     }
+
+  },
+
+  goLogin: function (e) { 
+    if (e.detail.userInfo == null) {
+      app.globalData.hasLogin = false;
+      util.showErrorToast('微信授权失败');
+      return;
+    }
+    app.globalData.hasLogin = false;
+    wx.setStorageSync('userInfo', null);
+
+    user.loginByWeixin(e.detail.userInfo).then(res => {
+      //跳转注册页
+      wx.navigateTo({
+        url: "/pages/auth/register/register"
+      });
+
+    }).catch((err) => {
+      app.globalData.hasLogin = false;
+    });
+  },
+  onHide: function () {
+    // 页面隐藏
+  },
+  onUnload: function () {
+    // 页面关闭
+  },
+  switchCate: function (event) {
+    var that = this;
+    var currentTarget = event.currentTarget;
+    if (this.data.currentCategory.id == event.currentTarget.dataset.id) {
+      return false;
+    }
+
+    this.getCurrentCategory(event.currentTarget.dataset.id);
+  },
+  
+  goinviteFriends(e) {
+    console.log(app.globalData.hasLogin);
+    //跳转到邀请页面
+    if (app.globalData.hasLogin) {
+      wx.navigateTo({
+        url: '/pages/activity/invitefriends/inviteFriends'
+      })
+    } else {
+      wx.navigateTo({
+        url: "/pages/auth/login/login"
+      });
+    };
+  },
+})

+ 4 - 0
pages/mall/catalog/catalog.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "分类",
+  "navigationBarBackgroundColor": "#09afff"
+}

+ 66 - 0
pages/mall/catalog/catalog.wxml

@@ -0,0 +1,66 @@
+<view class="container" style="padding-bottom: 100rpx;">
+ <view class="no-login" wx:if="{{!hasLogin}}">
+    <view class="c">
+      <text>您还没有注册</text>
+      <button  open-type="getUserInfo" bindgetuserinfo="goLogin">点击授权微信登录</button>
+    </view>
+  </view>
+  <view class='login' wx:else>
+  <view class="search">
+    <!-- <picker mode="selector" style="font-size:32rpx" range="{{citys}}" value="{{cityIndex}}" bindchange="listenerCitySelected">
+    <view style="width: 160rpx;text-align: center;display: flex;">
+      <image style="width: 45rpx;height: 45rpx;" src="/static/images/address.png"></image>
+      <view style="font-size:32rpx">{{city}}</view>
+    </view>
+    </picker> -->
+
+    <navigator url="/pages/mall/search/search" class="input">
+      <van-icon name="search" size="16px"/>
+      <text class="txt">商品搜索, 共{{goodsCount}}款好物</text>
+    </navigator>
+  </view>
+  <view class="catalog">
+    <scroll-view class="nav" scroll-y="true">
+      <view class="item {{ currentCategory.id == item.id ? 'active' : ''}}" wx:for="{{categoryList}}" wx:key="id" data-id="{{item.id}}" data-index="{{index}}"  data-name="{{item.categoryName}}" bindtap="switchCate">{{item.categoryName}}</view>
+    </scroll-view>
+    <scroll-view class="cate" scroll-y="true">
+     
+      <!-- <navigator url="/pages/servant/servantList/servantList" class="banner"  wx:if="{{currentCategory.name=='保姆/月嫂'}}">
+        <image class="category-banner"  mode="aspectFill" src="{{currentCategory.picUrl}}"></image>
+     
+      </navigator> -->
+      <!-- wx:for="{{goodsList}}" wx:for-index="idx" wx:for-item="category" wx:key="id" -->
+      <view wx:if="{{goodsList.length > 0}}"   wx:for="{{goodsList}}" wx:for-index="idx" wx:for-item="category" wx:key="id">
+       <view class="hd" >
+     
+        <text class="txt">{{category.categoryName}}</text>
+      </view> 
+  
+
+    
+		<view class="a-section a-popular" > 
+			<view class="b category-line">
+				<view class="item" wx:for="{{category.spus}}" wx:for-index="index" wx:for-item="item" wx:key="id">
+					<navigator url="/pages/mall/goods/goods?id={{item.id}}" class="product-item">
+            <image class="img" src="{{item.picAddress.length>=1?item.picAddress[0]:''}}" mode="aspectFill"></image>
+            <view class="product-name">{{item.commodityName}}</view>
+					
+					</navigator>
+				</view>
+			</view>
+		</view>
+  </view>
+
+
+    </scroll-view>
+  </view>
+  </view>
+
+   <!--广告-->
+   <!-- <view class="adv" bindtap='goinviteFriends'>
+    <view  style="width:100%;height:100%">
+      <image src="/static/images/active/xyhxd.jpg" style="width:100%;height:100%" /> 
+    </view>
+  </view> -->
+
+</view>

+ 352 - 0
pages/mall/catalog/catalog.wxss

@@ -0,0 +1,352 @@
+page {
+  height: 100vh; 
+}
+
+.container {
+  height: 100%;
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  background-color: #f5f5f5;
+}
+
+
+.adv{
+  position: fixed;
+  left: 0rpx;
+  bottom: 0;
+  z-index: 100;
+  width: 750rpx;
+  height: 165rpx;
+  display: flex;
+  /* border: 1px solid red; */
+}
+
+.search {
+  height: 98rpx;
+  width: 100%;
+  padding: 0 24rpx;
+  display: flex;
+  align-items: center;
+}
+
+.search .input {
+  width: 700rpx;
+  height: 54rpx;
+  background: #fff;
+  border-radius: 28rpx;
+  display: flex;
+  align-items: center;
+  justify-content: center; 
+  color:#85868A;
+}
+
+.search .txt {
+  font-size: 24rpx;
+   padding:0 0 0 14rpx;
+}
+
+.login{
+  height: 100%;
+  /* margin-bottom: 380rpx; */
+}
+
+.catalog {
+  flex: 1;
+  width: 100%;
+  /* background: #fff; */
+  display: flex;
+  /* border-top: 1px solid #fafafa; */
+  height:100%;
+  /* line-height: 100%; */
+}
+
+.catalog .nav {
+  width: 162rpx;
+  height: 100%;
+  background:#EDEDED;
+}
+
+.catalog .nav .item {
+  text-align: center;
+  line-height: 88rpx;
+  width: 162rpx;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  height: 88rpx;
+  color: #333;
+  font-size: 26rpx;
+  border-left: 4rpx solid #fff;
+  white-space: nowrap;
+}
+
+.catalog .nav .item.active {
+ 
+  font-size: 28rpx;
+  /*border-left: 6rpx solid #ab956d;*/
+  /* border-left: 6rpx solid #333;
+  color: #ab956d; */
+  border-left: 4rpx solid #09afff;
+  color: #09afff;
+  background:#fff;
+
+}
+
+.catalog .cate {
+  /* border-left: 1px solid #fafafa; */
+  flex: 1;
+  height: 100%;
+  padding: 0 30rpx 0 10rpx;
+}
+
+.banner {
+  display: block;
+  height: 212rpx;
+  width: 100%;
+  position: relative;
+}
+
+.banner .category-banner {
+  /* position: absolute;
+  top: 30rpx;
+  left: 0; */
+  border-radius: 8rpx;
+  height: 212rpx;
+  width: 566rpx;
+}
+
+.banner .txt {
+  position: absolute;
+  top: 30rpx;
+  text-align: center;
+  color: #fff;
+  font-size: 28rpx;
+  left: 0;
+  height: 192rpx;
+  line-height: 192rpx;
+  width: 100%;
+}
+
+.catalog .hd {
+  height: 64rpx;
+  width: 100%;
+  display: flex;
+  align-items: center;
+  margin:20rpx 0 0 ;
+}
+
+.catalog .hd .txt {
+  font-size: 26rpx;
+  padding: 0 6rpx;
+}
+
+.catalog .hd .line {
+  width: 100%;
+  height: 1px;
+  background: #d9d9d9;
+  position: absolute;
+  z-index: 1;
+}
+
+.catalog .bd {
+  height: auto;
+  width: 100%;
+  overflow: hidden;
+}
+
+.catalog .bd .item {
+  display: block;
+  float: left;
+  height: 216rpx;
+  width: 144rpx;
+  margin-right: 34rpx;
+}
+
+.catalog .bd .item.last {
+  margin-right: 0;
+}
+
+.catalog .bd .item .icon {
+  height: 144rpx;
+  width: 144rpx;
+}
+
+.catalog .bd .item .txt {
+  display: block;
+  text-align: center;
+  font-size: 24rpx;
+  color: #333;
+  height: 72rpx;
+  width: 144rpx;
+}
+
+
+
+.no-login {
+  width: 100%;
+  height: auto;
+  margin: 0 auto;
+  background-color: #fff;
+}
+
+.no-login .c {
+  width: 100%;
+  height: auto;
+  margin-top: 400rpx;
+}
+
+.no-login .c text {
+  margin: 0 auto;
+  display: block;
+  width: 258rpx;
+  height: 59rpx;
+  line-height: 29rpx;
+  text-align: center;
+  font-size: 35rpx;
+}
+
+.no-login button {
+  width: 90%;
+  margin: 0 auto;
+  color: #fff;
+  font-size: 30rpx;
+  height: 96rpx;
+  line-height: 96rpx;
+  right: 0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  position: flex;
+  bottom: 0;
+  left: 0;
+  border-radius: 0;
+  padding: 0;
+  margin-left: 5%;
+  text-align: center; 
+  border-top-left-radius: 50rpx;
+  border-bottom-left-radius: 50rpx;
+  border-top-right-radius: 50rpx;
+  border-bottom-right-radius: 50rpx;
+  letter-spacing: 3rpx;
+  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);
+}
+
+
+
+
+.a-popular {
+  width: 588rpx;
+  height: auto;
+  overflow: hidden;
+}
+
+/* .a-popular .b .item {
+  border-bottom: 1px solid #d9d9d9;
+  margin: 0 20rpx;
+  height: 284rpx;
+  width: 588rpx;
+  padding-top: 20rpx;
+} */
+
+.a-popular .b .img {
+  width: 170rpx;
+  height: 174rpx;
+  border-radius: 10rpx;
+  margin:0 0 10rpx 0;
+}
+
+.a-popular .b .right {
+  float: left;
+  height: 264rpx;
+  width: 336rpx;
+  display: flex;
+  flex-flow: row nowrap;
+}
+
+.a-popular .b .text {
+  display: flex;
+  flex-wrap: nowrap;
+  flex-direction: column;
+  /* justify-content: center; */
+  overflow: hidden;
+  height: 264rpx;
+  width: 280rpx; 
+}
+
+.a-popular .b .name {
+  width: 280rpx;
+  display: block;
+  color: #333;
+  line-height: 72rpx;
+  font-size: 36rpx;
+}
+
+.a-popular .b .desc {
+  width: 280rpx;
+  display: block;
+  color: #a98f76;
+  line-height: 50rpx;
+  font-size: 25rpx;
+  height: 120rpx;
+}
+
+.a-popular .b .price {
+  width: 280rpx;
+  display: block;
+  color: darkred;
+  /*color: #a81d28;*/
+  line-height: 50rpx;
+  font-size: 33rpx;  
+}
+
+.a-popular .b .price span {
+ font-size: 24rpx;
+ color: gray;
+}
+
+.a-popular .b .price .btn {
+ width: 120rpx;
+ border-radius: 30rpx;
+ height: 54rpx;
+ line-height: 54rpx;
+ font-size:28rpx;
+ background-color: #09AFFF;
+ color: #fff;
+ text-align: center;
+ float: right;
+ /* margin-right: 10rpx; */
+ margin-top: -10rpx;
+ }
+ 
+
+.a-popular .b .brand {
+  font-size: 20rpx;
+  color:#a98f76 ;
+  display: block;
+  line-height: 30rpx;  
+  padding: 2rpx; 
+}
+.category-line{
+  display: flex;
+  flex-wrap: wrap;
+}
+.product-item{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width:174rpx;
+  margin:0 20rpx 40rpx 0;
+}
+.product-name{
+  width:166rpx;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 2;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  font-size: 20rpx;
+  text-align: center;
+}
+view,text{
+  color:#666;
+}

File diff suppressed because it is too large
+ 1160 - 0
pages/mall/checkout/checkout.js


+ 4 - 0
pages/mall/checkout/checkout.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "填写订单"
+
+}

+ 261 - 0
pages/mall/checkout/checkout.wxml

@@ -0,0 +1,261 @@
+
+<wxs src="../../../utils/formatFuc.wxs" module="formatFuc" />
+<view class="container">
+  <view class="address-box">
+  
+    <view class="address-item address-empty" >
+      <image class="map-icon" mode="aspectFit" src='/static/images/new/dingwei.png'></image>
+      <view class="m">
+        {{shopAddress}}
+      </view>
+      <view class="r">
+        <!-- <van-icon name="arrow" /> -->
+      </view>
+    </view>
+
+
+
+		
+  </view>
+ 
+
+    <view class="order-box" wx:if="{{couponId==24}}"> 
+    <view class="order-item no-border">
+      <view class="l">
+        <text class="name">预约时间</text>
+      </view>
+      <view class="r">
+        <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange"
+          value="{{multiIndex}}" range="{{multiArray}}">
+          <text class="message-app txt">{{orderData}}</text>
+        </picker>
+      </view>
+    </view> 
+  </view>   
+
+<!-- 预约时间 -->
+<view class="appoint-time-block" wx:if="{{isNeedAppoint||couponId==24}}">
+  <view class="appoint-time-operate">
+      <view class="operate-left">
+        预约时间
+      </view>
+      <view class="operate-right" bindtap="showAppoint">
+        <text class="not-select" wx:if="{{!isFinishAppoint}}">请选择</text>
+        <text wx:if="{{isFinishAppoint}}">更改</text>
+        <van-icon name="arrow" color="#2a2a2a" />
+      </view>
+  </view>
+  <view class="appoint-time-show" wx:if="{{isFinishAppoint}}">
+        <!-- 服务时间 -->
+      <view class="one-time" wx:if="{{isOneAppoint}}">
+         <text>服务时间</text>
+         <text>{{oneTimeAppoint}}</text>
+      </view>
+      <view class="multi-times" wx:if="{{!isOneAppoint}}">
+        <view class="multi-times-item">
+          <text>服务频率</text>
+          <text>{{activeTab==1?'一周1次':(activeTab==2?'一周2次':'二周1次')}}</text>
+        </view>
+        <view class="multi-times-item">
+          <text>服务时间</text>
+          <text>{{selectedDateList[0].weekStr+' '+selectedDateList[0].time}}</text>
+        </view>
+        <view class="multi-times-item" wx:if="{{activeTab==2}}">
+          <text></text>
+          <text>{{selectedDateList[1].weekStr+' '+selectedDateList[1].time}}</text>
+        </view>
+        <view class="multi-times-item">
+          <text>首次服务时间</text>
+          <text>{{firstAppointList[firstDateIndex].date}}</text>
+        </view>
+      </view>
+  </view>
+</view>
+
+<!-- 多次预约结果 -->
+<view class="appoint-result" wx:if="{{appointFailTip}}">
+  根据您的预约需求,有<text class="orange-font">{{noSerTimes}}</text>个日期暂时无法提供预约服务,为您保留<text class="orange-font">{{noSerTimes}}</text>个保洁次卡,下单成功后在"<text class="orange-font">我的订单-查看服务</text>"里预约服务
+</view>
+
+  <view class="order-box">
+
+    <view class="order-item  no-border">
+      <view class="l">
+        <text class="name">备注</text>
+      </view>
+      <view class="r">
+        <input class="txt" 
+        disabled="{{remarkDisable}}"
+        class="message-item" bindinput="bindMessageInput" placeholder="如需要,请输入备注信息" value="{{message}}" />
+      </view>
+    </view>
+  </view>
+
+
+
+
+<!-- 商品详情 -->
+  <view class="goods-items">
+    <view class="item" wx:for="{{checkedGoodsList}}" wx:key="id">
+      <!-- <view class="name">{{item.goodsName}}</view> -->
+      <view style="display: flex;">
+      <view class="img">
+        <image src="{{item.picAddress.length>=1?item.picAddress[0]:''}}" mode="aspectFill"></image>
+      </view>
+      <view class="info"> 
+        <view class="name">{{item.skuName}}</view>
+        <view class="m" style="margin-top:20rpx">规格:{{item.propertyValue}}</view>
+        <view class="m">skuCode:{{item.skuCode}}</view>
+        <view class="b">单价:¥{{item.salePrice}}</view> 
+      </view>
+    </view>
+    </view>
+  </view>
+   <!-- 分享进来并且是客户的,不展示会员信息 -->
+    <!-- 超级鲸会员 -->
+      <!-- 开通会员 -->
+  <!-- <block hidden="{{shareId!=0&&!userInfo.isDis}}">
+ 
+  <view class="member-benefit" wx:if="{{isMember}}">
+    <view class="member-tag">
+      <text>超级鲸会员</text>
+    </view>
+    <view class="member-tip">会员专享已省{{memberDiscount}}元</view>
+  </view>
+
+  <view class="buy-member" wx:else  bindtap="goBuyMember">
+    <view class="member-tag">
+      <text>超级鲸会员</text>
+    </view>
+    <view class="member-tip">开通会员,本单立省{{memberDiscount}}元</view>
+    <van-icon name="arrow" color="#85868A"/>
+  </view>
+</block> -->
+
+<view class="actual-price">
+
+数量:<text>{{buyNumber}}</text>
+</view>
+<view class="actual-price">
+
+  需支付:<text>¥{{actualPrice}}</text>
+</view>
+
+  <view class="go-pay-wrapper">
+    <!-- submitOrder -->
+    <van-button type="info" block round bindtap="orderPay">去付款</van-button>
+  </view>
+
+  <!-- custom-style="height: 80%" -->
+<van-popup
+  show="{{ choosePopup }}"
+  round
+  position="bottom"
+  
+  bind:click-overlay="onClose"
+>
+<view class="popup-wrapper  {{popupType==1?'popup-wrapper-special':''}}">
+<!-- 标题 -->
+<view class="popup-title {{popupType==1?'popup-title-special':''}}">
+  {{popupType==1?'选择预约时间':(popupType==2?'选择服务频次':'选择首次预约时间')}}
+</view>
+
+    <block wx:if="{{popupType==1}}">
+      <view class="popup-content {{popupType==1?'popup-content-special':''}}">
+      <view class="time-select-left">
+          <view wx:for="{{dateList}}" wx:key="index" class="time-select-left-item" bindtap="dateCheck" data-week="{{item.week}}" data-index="{{index}}" data-date="{{item.date}}">
+            <!-- <view hidden="{{index>1}}" class="date-tag">{{index==0?'明天':'后天'}}</view> -->
+            <view>
+            <text  wx:if="{{index<=1}}" class="date-tag">{{index==0?'明天':'后天'}}</text>
+            <!-- <text  hidden="{{index>=2}}" class="full-time">约满</text> -->
+            <text  wx:if="{{checkedGoodsList[0].goodsId != 1190332&&(index<=1||(index<=7&&(item.week=='周六'||item.week=='周日')))}}" class="full-time">约满</text>
+            </view>
+          
+            <view class="{{dateIndex==index?'current-date':''}}">{{item.date+' '+item.week}}</view>
+          </view>
+      </view>
+      <view class="time-select-right">
+       <view wx:for="{{timeList}}" wx:key="id" class="time-select-right-item" bindtap="timeCheck" data-index="{{index}}">
+         <view class="{{timeIndex==index?'current-date':''}}">{{item.time}}</view>
+         <view  wx:if="{{timeIndex==index}}" class="date-tag">已选</view>
+       </view>
+      </view>
+    </view>
+    </block>
+   <!-- 选择频次 -->
+   <block wx:if="{{popupType==2}}">
+   <van-tabs wx:if="{{ choosePopup }}" active="{{ activeTab }}" color="#09afff" bind:change="onTabChange">
+    <van-tab title="一周1次" name="1"></van-tab>
+    <van-tab title="一周2次" name="2"></van-tab>
+    <van-tab title="二周1次" name="3"></van-tab>
+  </van-tabs>
+  <view class="popup-content select-week-times">
+    <view class="time-select-left week-select-left">
+          <view wx:for="{{weekArrList}}" wx:key="index" class="time-select-left-item " bindtap="weekCheck" data-index="{{index}}">
+          
+            <view class="week-str {{weekIndex==index?'current-date':''}}">{{item.week}}</view>
+            <view class="select-num-tag" wx:if="{{item.num>0}}">{{item.num}}</view>
+          </view>
+      </view>
+      <view class="time-select-right">
+       <view wx:for="{{timeList}}" wx:key="id" class="time-select-right-item" bindtap="timeSelect" data-index="{{index}}" data-time="{{item.time}}">
+        <!-- <view class="{{formatFuc.defineIndexOf(selectedWeekList,weekIndex)>-1?'current-date':''}}">{{item.time}}</view>
+         <view  wx:if="{{formatFuc.defineIndexOf(selectedWeekList,weekIndex)>-1}}" class="date-tag">已选</view> -->
+         <view class="{{formatFuc.includeItem(selectedDateList,weekIndex,item.time)&&formatFuc.defineIndexOf(selectedWeekList,weekIndex)>-1?'current-date':''}}">{{item.time}}</view>
+         <view  wx:if="{{formatFuc.includeItem(selectedDateList,weekIndex,item.time)&&formatFuc.defineIndexOf(selectedWeekList,weekIndex)>-1}}" class="date-tag">已选</view>
+       </view>
+      </view>
+
+</view>
+
+  </block>
+  
+
+
+    <!-- 选择首次预约时间 -->
+    <block wx:if="{{popupType==3}}">
+      <view class="popup-content">
+        <view class="first-appoint-date-list">
+          <view class="first-appoint-date-item" wx:for="{{firstAppointList}}" wx:key="index" bindtap="firstDateCheck" data-index="{{index}}">
+            <view class="{{firstDateIndex==index?'current-date':''}}">{{item.date+' '+item.week}}</view>
+            <view  wx:if="{{firstDateIndex==index}}" class="first-time-selected date-tag">已选</view>
+          </view>
+        </view>
+      </view>
+    </block>
+
+</view>
+
+
+<!-- 确认按钮 -->
+<view class="popup-btn-wrapper {{popupType==1?'popup-btn-special':''}}">
+<van-button type="info" block round bindtap="confirmTime">确定</van-button>
+</view>
+
+
+
+</van-popup>
+
+
+
+  <!-- 支付失败弹框 -->
+
+  <van-overlay show="{{ payFailShow }}" >
+    <view class="overlay-wrapper">
+      <view class="fail-wrapper">
+          <view class="fail-top">
+             <image src="/static/images/new/icon-fail.png"></image>
+             <view class="fail-text">支付失败</view>
+             <view class="sub-color">支付遇到问题,请尝试重新支付</view>
+          </view>
+          <view class="fail-bottom">
+             <view class="cancel-btn" bindtap="cancelPay">取消</view>
+             <view class="btn-devide"></view>
+             <view class="repay-btn" bindtap="rePay">重新支付</view>
+          </view>
+      </view>
+    </view>
+  </van-overlay>
+
+
+</view>

+ 711 - 0
pages/mall/checkout/checkout.wxss

@@ -0,0 +1,711 @@
+page {
+  height: 100%;
+  background: #f4f4f4;
+}
+.container{
+  padding: 50rpx 28rpx 180rpx ;
+}
+
+.address-box {
+  width: 100%;
+  /* height: 166.55rpx;
+  background-size: 62.5rpx 10.5rpx; */
+  /* margin-bottom: 20rpx; */
+  /* padding-top: 10.5rpx; */
+}
+
+.address-item {
+  display: flex;
+  /* height: 142rpx; */
+  background: #fff;
+  padding: 26rpx 16rpx 20rpx;
+  border-radius: 10rpx;
+}
+
+.address-item.address-empty {
+  line-height: 75rpx;
+  text-align: center;
+  align-items: center;
+}
+.address-item .map-icon{
+  width:28rpx;
+  height: 28rpx;
+  margin:0 18rpx 0 0;
+}
+.address-box .l {
+  width: 125rpx;
+  height: 100%;
+}
+
+.address-box .l .name {
+  margin-left: 6.25rpx;
+  margin-top: -7.25rpx;
+  display: block;
+  width: 125rpx;
+  height: 43rpx;
+  line-height: 43rpx;
+  font-size: 30rpx;
+  color: #333;
+  margin-bottom: 5rpx;
+}
+
+.address-box .l .default {
+  margin-left: 6.25rpx;
+  display: block;
+  width: 62rpx;
+  height: 33rpx;
+  border-radius: 5rpx;
+  border: 1px solid #b4282d;
+  font-size: 20.5rpx;
+  text-align: center;
+  line-height: 29rpx;
+  color: #b4282d;
+}
+
+.address-box .m {
+  /* flex: 1; */
+}
+
+.address-box .mobile {
+  display: block;
+  height: 29rpx;
+  line-height: 29rpx;
+  margin-bottom: 6.25rpx;
+  font-size: 26rpx;
+}
+
+.address-box .address {
+  display: block;
+  height: 30rpx;
+  line-height: 30rpx;
+  font-size: 26rpx;
+  margin:0 0 18rpx 0;
+}
+.address-bottom{
+  color: #85868A;
+line-height: 24rpx;
+height: 24rpx;
+font-size: 22rpx;
+}
+.address-bottom .user-name{
+  margin:0 32rpx 0 0;
+}
+
+.address-box .r {
+  width: 77rpx;
+  height: 77rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.address-box .r image {
+  width: 52.078rpx;
+  height: 52.078rpx;
+}
+
+.coupon-box {
+  width: 100%;
+  height: 210rpx;
+  background: #fff;
+  border-radius:10rpx;
+}
+
+.coupon-box .coupon-item {
+ margin: 0 10rpx;
+  height: 70rpx;
+  overflow: hidden;
+  background: #fff;
+  display: flex;
+  padding:0 20rpx 0 10rpx;
+  align-items: center;
+  justify-content: space-between;
+  border-bottom:2rpx solid #E4E4E4;
+}
+
+.coupon-box .l {
+  flex: 1;
+ height: 70rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.coupon-box .l .name {
+  font-size: 24rpx;
+}
+
+.coupon-box .l .txt {
+  font-size: 24rpx;
+}
+
+.coupon-box .r {
+  width: 30rpx;
+  height: 40rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.coupon-box .r image {
+  width: 52.078rpx;
+  height: 52.078rpx;
+}
+
+.message-box {
+  margin-top: 20rpx;
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+  background: #fff;
+}
+
+.message-box .message-item {
+  height: 86.078rpx;
+  overflow: hidden;
+  background: #fff;
+  display: flex;
+  margin-left: 31.25rpx;
+  padding-right: 31.25rpx; 
+}
+
+
+.message-box .message-app {
+  height: 74.078rpx;
+  overflow: hidden;
+  background: #fff;
+  display: flex;
+  margin-left: 31.25rpx;
+  padding-right: 31.25rpx;
+  padding-top: 18rpx;border-radius: 20rpx;
+}
+
+.order-box {
+  margin-top: 20rpx;
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+  background: #fff;
+}
+
+.order-box .order-item {
+  border-radius: 10rpx;
+  height: 70rpx;
+  overflow: hidden;
+  background: #fff;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding:0 20rpx;
+  border-bottom: 1px solid #d9d9d9;
+}
+.order-box .order-item.tip-item{
+  padding-bottom:26rpx;
+  height: auto;
+  display: flex;
+  flex-direction: column;
+}
+
+.order-box .order-item .l {
+ width:100rpx;
+ height: 70rpx;
+ line-height: 70rpx;
+ align-items: center;
+}
+
+.order-box .order-item .l .name{
+  font-size: 24rpx;
+}
+
+.order-box .order-item .r {
+  line-height: 70rpx;
+   flex:1;
+  height: 70rpx;
+  line-height: 70rpx;
+  align-items: center;
+  text-align: right;
+  /* overflow: hidden; */
+}
+
+.order-box .order-item.no-border {
+  border-bottom: none;
+}
+
+.goods-items {
+  margin-top: 20rpx;
+  background: #fff;
+  /* margin-bottom: 120rpx; */
+  border-radius: 10rpx;
+  padding: 20rpx 12rpx;
+}
+
+.goods-items .item {
+  height:210rpx;
+  align-items: center;
+}
+
+.goods-items .item .name{
+  font-size: 28rpx;
+  height: 28rpx;
+  line-height: 28rpx;
+  color: #2a2a2a;
+}
+
+.goods-items .item.no-border {
+  border-bottom: none;
+}
+
+.goods-items .item:last-child {
+  border-bottom: none;
+}
+
+.goods-items .img {
+  height: 178rpx;
+  width: 178rpx;
+  /* background-color: #f4f4f4; */
+  margin-right: 26rpx;
+  border-radius: 10rpx;
+}
+
+.goods-items .img image {
+  height: 178rpx;
+  width: 178rpx;
+  border-radius:10rpx;
+}
+
+.goods-items .info {
+  flex: 1;
+  height: 210rpx;
+  padding:14rpx 0 0;
+}
+ 
+.goods-items .t {
+  height: 33rpx;
+  line-height: 33rpx;
+  margin-bottom: 10rpx;
+  overflow: hidden;
+  font-size: 30rpx;
+  color: #333;
+}
+
+.goods-items .t .name {
+  display: block;
+  float: left;
+}
+.goods-items .t .number {
+  display: block;
+  float: right;
+  text-align: right;
+}
+
+.goods-items .m {
+  height: 28rpx;
+  overflow: hidden;
+  line-height: 28rpx;
+  margin-bottom: 16rpx;
+  font-size: 24rpx;
+  color: #85868A;
+}
+
+.goods-items .b {
+  height: 28rpx;
+  line-height: 28rpx;
+  font-size: 24rpx;
+  color: #85868A;
+}
+
+.order-total {
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  height: 100rpx;
+  width: 100%;
+  display: flex;
+}
+
+.order-total .l {
+  flex: 1;
+  height: 100rpx;
+  line-height: 100rpx;
+  color: #b4282d;
+  background: #fff;
+  font-size: 33rpx;
+  padding-left: 31.25rpx;
+  border-top: 1rpx solid rgba(0, 0, 0, 0.2);
+  border-bottom: 1rpx solid rgba(0, 0, 0, 0.2);
+}
+
+.order-total .r {
+  width: 233rpx;
+  height: 100rpx;
+  background: #b4282d;
+  border: 1px solid #b4282d;
+  line-height: 100rpx;
+  text-align: center;
+  color: #fff;
+  font-size: 30rpx;
+}
+.actual-price{
+  color: #2a2a2a;
+  /* font-weight: bold; */
+  font-size: 30rpx;
+  text-align: right;
+  margin:28rpx 0 0;
+}
+.actual-price text{
+  color:#DF1717;
+}
+.go-pay-wrapper{
+  position: fixed;
+  bottom: 0;
+  left:0;
+  right:0;
+  height: 130rpx;
+  padding:20rpx 24rpx;
+  /* background:#fff; */
+
+}
+view.go-pay-wrapper button > view{
+  color:#fff;
+}
+.appoint-time-block{
+  margin-top:20rpx;
+  background:#fff;
+  border-radius: 10rpx;
+}
+.appoint-time-block view.appoint-time-operate{
+  padding:0 20rpx;
+  height: 70rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 24rpx;
+}
+view.operate-left{
+  color:#2a2a2a;
+}
+view.operate-right{
+   display: flex;
+   align-items:center;
+}
+view.operate-right{
+  color:#09AFFF;
+}
+view.operate-right .not-select{
+  color:#333;
+}
+.appoint-time-show{
+  border-top:2rpx solid #E4E4E4;
+  padding:0 24rpx;
+  font-size: 24rpx;
+}
+view.one-time{
+  height: 70rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+view.one-time text{
+  color:#999;
+  font-size: 26rpx;
+}
+.multi-times{
+  padding:30rpx 0
+}
+.multi-times-item{
+  height: 54rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.multi-times-item text{
+  font-weight: bold;
+  font-size: 24rpx;
+}
+view.appoint-result{
+  margin-top:18rpx;
+  border:2rpx solid #09AFFF;
+  border-radius:20rpx;
+  line-height:46rpx;
+  font-size: 26rpx;
+  padding:10rpx;
+}
+.orange-font{
+  color:#FA6400;
+  font-weight: bold;
+  font-size: 26rpx;
+}
+.order-item .message-item{
+  color:#2a2a2a;
+  font-size: 24rpx;
+  font-weight: normal;
+  height: 70rpx;
+}
+/* 选择时间 */
+view.popup-wrapper{
+  /* padding: 0 0 20rpx; */
+  color:#333;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  height: 100%;
+  z-index:999;
+}
+view.popup-wrapper view{
+  color:#888;
+  font-size: 30rpx;
+}
+
+.popup-content{
+  flex:1;
+}
+.popup-title{
+  height: 96rpx;
+  line-height: 96rpx;
+  text-align: center;
+  border-bottom: 1rpx solid #ddd;
+}
+.popup-content{
+  display: flex;
+}
+.time-select-left{
+  flex:2;
+  border-right:1rpx solid #ddd;
+  padding:0 20rpx;
+}
+.time-select-right{
+  flex:3;
+  padding:0 8rpx;
+}
+.time-select-left-item{
+  height: 108rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+}
+.popup-content view.current-date{
+  color:#09afff;
+  font-weight: bold;
+}
+view.popup-wrapper .time-select-right-item{
+  height: 104rpx;
+  border-bottom:1rpx solid #ddd;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding:0 24rpx;
+}
+.time-select-right-item view{
+  color:#6D7278;
+  font-weight: bold;
+}
+view.popup-btn-wrapper{
+  margin:20rpx 0 0;
+  padding:0 24rpx 20rpx;
+}
+view.popup-btn-wrapper button > view{
+  color:#fff;
+}
+view.popup-wrapper .date-tag{
+  color:#09afff;
+  height: 44rpx;
+  line-height: 42rpx;
+  width:130rpx;
+  border:2rpx solid #09afff;
+  border-radius:44rpx;
+  text-align: center;
+  font-weight: normal;
+  font-size: 28rpx;
+  display: inline-block;
+}
+view.popup-wrapper .full-time{
+  color:#09AFFF;
+  font-size: 24rpx;
+  margin:0 0 0 20rpx;
+  height: 44rpx;
+  line-height: 44rpx;
+  float: right;
+  padding-right:40rpx;
+}
+.first-appoint-date-item{
+  height: 108rpx;
+  display: flex;
+  align-items: center;
+  padding:0 0 0 240rpx;
+
+}
+.first-time-selected{
+  margin:0 0 0 60rpx;
+}
+
+.select-week-times{
+  border-top:1rpx solid #ddd;
+}
+.week-select-left{
+  flex:1.2;
+}
+.week-select-left>view.time-select-left-item{
+  padding:0 0 0 60rpx;
+  display: flex;
+  align-items: flex-start;
+  justify-content: flex-start;
+  flex-direction: row;
+  padding:10rpx 0 0 60rpx;
+}
+.week-select-left>view.time-select-left-item .week-str{
+  padding:12rpx 0 0 0;
+}
+view.popup-wrapper view.select-num-tag{
+  width:32rpx;
+  height: 32rpx;
+  line-height: 32rpx;
+  background:#09AFFF;
+  border-radius: 34rpx;
+  font-size: 20rpx;
+  color:#fff;
+  text-align: center;
+  margin:0 0 0 6rpx;
+
+}
+
+/* 支付失败弹框 */
+.overlay-wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+	height: 100%;
+}
+.fail-wrapper {
+  width: 588rpx;
+  height:502rpx;
+	border-radius:10rpx;
+	background: #fff;
+  padding-bottom:40rpx;
+  padding:80rpx 0 0;
+  font-size: 24rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+.fail-top{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.fail-top image{
+  width:110rpx;
+  height: 110rpx;
+}
+.fail-text{
+  font-size: 34rpx;
+  font-weight: bold;
+  margin:66rpx 0 24rpx;
+  height: 34rpx;
+}
+.fail-bottom{
+  height: 132rpx;
+  border-top:2rpx solid #E4E4E4;
+  display: flex;
+ justify-content: space-around;
+ align-items: center;
+}
+.fail-bottom .btn-devide{
+  width:2rpx;
+  height: 130rpx;
+  background: #E4E4E4;
+}
+.cancel-btn{
+  width:202rpx;
+  height: 72rpx;
+  line-height: 72rpx;
+  border:2rpx solid #85868A;
+  color:#282728;
+  border-radius:72rpx;
+  text-align: center;
+}
+.repay-btn{
+  width:202rpx;
+  height: 72rpx;
+  line-height: 72rpx;
+ background: #09AFFF;
+  color:#fff;
+  border-radius:72rpx;
+  text-align: center;
+}
+.discount-title{
+  height:70rpx;
+  background: #E0F5FC;
+  padding:0 10rpx;
+  display: flex;
+  align-items: center;
+}
+.discount-title image{
+  width:24rpx;
+  height: 26rpx;
+  margin:0 8rpx 0 0;
+}
+.discount-title text{
+  font-size: 28rpx;
+  font-weight:bold;
+color: #323232;
+}
+.discount-line{
+  padding:0 50rpx 0 20rpx;
+}
+.discount-line .txt{
+  color: #DF1717;
+  font-size: 24rpx;
+}
+.member-benefit,.buy-member{
+  margin:20rpx 0 0;
+  height: 70rpx;
+  background: #fff;
+  border-radius: 10rpx;
+  padding:0 20rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.member-benefit .member-tip{
+  text-align: right;
+}
+.member-tag{
+  width: 142rpx;
+  padding:0 10rpx;
+height: 44rpx;
+line-height: 44rpx;
+text-align: center;
+background: #2E3235;
+border-radius: 5rpx;
+}
+.member-tag text{
+  font-size: 24rpx;
+color: #2A2A2A;
+background: linear-gradient(177deg, #F1E3C8 0%, #E6C162 100%);
+-webkit-background-clip: text;
+-webkit-text-fill-color: transparent;
+}
+.member-tip{
+  flex:1;
+  margin:0 0 0 26rpx;
+  color:#DF1717;
+  font-size: 24rpx;
+}
+.popup-content-special{
+  position: relative;
+}
+.popup-title-special{
+  position: absolute; 
+  left:0;
+  top:0;
+  right:0;
+  background: #fff;
+}
+.popup-content-special{
+  height:900rpx ;
+  margin-top:96rpx;
+}
+.popup-content-special .time-select-left{
+  height: 900rpx;
+  overflow-y: scroll;
+}

+ 267 - 0
pages/mall/dxkOrder/dxkOrder.js

@@ -0,0 +1,267 @@
+// pages/mall/dxkOrder/dxkOrder.js
+var app = getApp();
+var WxParse = require('../../../lib/wxParse/wxParse.js');
+var util = require('../../../utils/jmsUtil.js');
+var mall = require('../../../api/mall.js');
+var user = require('../../../utils/user.js');
+Page({
+
+	/**
+	 * 页面的初始数据
+	 */
+	data: {
+			skuText:"39元语音版:2500分钟语音+40GB通用流量+30GB定向流量",
+			region: ['上海市', '上海市', '浦东新区'],
+			customItem: '全部',
+			showModal: false,
+			phoneList:['13873344047','13873344048','13873344049','13873344168','13873344169','13873344100','13873344120','13873344121','13873344122','13873344123'],
+			tempPhone:"",
+			phone:"",
+			isSelectedIndex:'',
+			isPhone:false,
+			currentSkuId:'',
+			workerInfo:{},
+			isChecked:false,
+			installedAddress:"",
+			contactMobile:"",
+			goodId:"",
+			isSelect:true
+
+	},
+	/**
+	 * 生命周期函数--监听页面加载
+	 */
+	onLoad(options) {
+			console.log(options)
+			this.setData({
+				currentSkuId: options.currentSkuId,
+				goodId: options.goodId
+			})
+	},
+
+	/**
+	 * 生命周期函数--监听页面初次渲染完成
+	 */
+	onReady() {
+
+	},
+
+	/**
+	 * 生命周期函数--监听页面显示
+	 */
+	onShow() {
+		this.getDetailInfo()
+	},
+	getDetailInfo(){
+		let that=this;
+		wx.showLoading({
+      title: '加载中',
+    });
+		util.request(mall.getDetailInfo, {
+      skuId: that.data.currentSkuId
+    }).then(function (res) {
+      wx.hideLoading();
+      if (res.errno == 0) {
+        that.setData({
+          skuText: res.data.wmsSkuProperty.propertyValue,
+          workerInfo: res.data.workerSupplier,
+        });
+      } else if (res.errno == 501) {
+        wx.redirectTo({
+          url: "/pages/auth/login/login"
+        });
+      } else {
+        wx.showToast({
+          title: res.errmsg,
+          duration: 5000
+        })
+      }
+    });
+	},
+	selectNumber:function(e){
+		let that=this;
+		let params={
+				skuId:that.data.currentSkuId
+		}
+		wx.showLoading({
+			title: '加载中',
+		});
+		util.request(mall.selectNumber,params,'post').then(function (res) {
+			wx.hideLoading();
+			if (res.errno == 0) {
+				that.setData({
+					phoneList: res.data
+				});
+			} else if (res.errno == 501) {
+				wx.redirectTo({
+					url: "/pages/auth/login/login"
+				});
+			} else {
+				wx.showToast({
+					title: res.errmsg,
+					duration: 5000
+				})
+			}
+		});
+	
+		this.setData({
+			showModal:true
+		})
+	},
+	bindRegionChange: function (e) {
+    console.log('picker发送选择改变,携带值为', e.detail.value)
+    this.setData({
+      region: e.detail.value
+    })
+	},
+	hideModal:function(){
+		this.setData({
+			showModal:false
+		})
+	},
+	selectdNumber(e){
+		let index=e.currentTarget.dataset.index
+		this.setData({
+			isSelectedIndex:e.currentTarget.dataset.index,
+			tempPhone: e.currentTarget.dataset.num
+		})
+	},
+	selectedPhone(e){
+		this.setData({
+			phone: this.data.tempPhone,
+			showModal: false,
+			isPhone: true
+		})
+
+	},
+	checkChange(e){
+		console.log(e)
+		this.setData({
+      isChecked: e.detail,
+    });
+	},
+	checkboxChange(e) {
+		if(e.detail.value=="true"){
+			this.setData({
+				isChecked : true,
+				isSelect:false
+			})
+		}else{
+			this.setData({
+				isChecked : false,
+				isSelect:true
+			})
+		}
+		
+	},
+	checkProBtn() {
+    wx.navigateTo({
+      url: '/pages/mall/dxkOrderXy/dxkOrderXy'
+    })
+	},
+	inputAddress(e){
+			this.setData({
+				installedAddress : e.detail.value
+			})
+	},
+	inputPhone(e){
+		this.setData({
+			contactMobile : e.detail.value
+		})
+	},
+	saveOrder(){
+			if(this.data.phone==""){
+				util.showErrorToast('请选择手机号!');
+      	return false;
+			}
+			if(this.data.region[0]=="全部" || this.data.region[1]=="全部" || this.data.region[2]=="全部"){
+				util.showErrorToast('请选择正确的省市区!');
+      	return false;
+			}
+
+			if(this.data.installedAddress==""){
+				util.showErrorToast('请输入详细地址!');
+      	return false;
+			}
+			if(this.data.contactMobile==""){
+				util.showErrorToast('请输入联系手机号!');
+      	return false;
+			}
+			if(!this.data.isChecked){
+				util.showErrorToast('请阅读并同意入网协议!');
+      	return false;
+			}
+			let that=this;
+			wx.showLoading({
+				title: '加载中',
+			});
+			let params={
+				name: that.data.workerInfo.workerName,
+				idCard: that.data.workerInfo.workerIdcard,
+				workerNo: that.data.workerInfo.workerNo,
+				contactMobile: that.data.contactMobile,
+				province: that.data.region[0],
+				city: that.data.region[1],
+				county: that.data.region[2],
+				installedAddress: that.data.installedAddress,
+				number:that.data.phone.replaceAll("-",""),
+				skuId: that.data.currentSkuId,
+				goodId: that.data.goodId
+			}
+			util.request(mall.saveOrder,params,'post').then(function (res) {
+				wx.hideLoading();
+				if (res.errno == 0) {
+					wx.showToast({
+						title: "领取成功",
+						duration: 2000
+					})
+					wx.redirectTo({
+						url: "/pages/mall/order/order"
+					});
+				} else if (res.errno == 501) {
+					wx.redirectTo({
+						url: "/pages/auth/login/login"
+					});
+				} else {
+					wx.showToast({
+						title: res.errmsg,
+						duration: 5000
+					})
+				}
+			});
+	},
+	/**
+	 * 生命周期函数--监听页面隐藏
+	 */
+	onHide() {
+
+	},
+
+	/**
+	 * 生命周期函数--监听页面卸载
+	 */
+	onUnload() {
+
+	},
+
+	/**
+	 * 页面相关事件处理函数--监听用户下拉动作
+	 */
+	onPullDownRefresh() {
+
+	},
+
+	/**
+	 * 页面上拉触底事件的处理函数
+	 */
+	onReachBottom() {
+
+	},
+
+	/**
+	 * 用户点击右上角分享
+	 */
+	onShareAppMessage() {
+
+	}
+})

+ 3 - 0
pages/mall/dxkOrder/dxkOrder.json

@@ -0,0 +1,3 @@
+{
+	"navigationBarTitleText": "填写订单"
+}

+ 67 - 0
pages/mall/dxkOrder/dxkOrder.wxml

@@ -0,0 +1,67 @@
+<view>
+	<text class="desc">领取类型</text>
+	<text class="desc">【员工福利】 {{skuText}}</text>
+</view>
+<view class="myView">
+	<view>第一步</view>
+	<view  wx:if="{{isPhone}}">{{phone}}</view>
+	<view bindtap="selectNumber" wx:if="{{!isPhone}}">点击选择号码</view>
+</view>
+
+<view class="myView">
+	<view>第二步</view>
+	<view>确认信息(无需操作)</view>
+</view>
+
+<view class="myDesc">
+	<view class="myText">
+		<text style="color: rgb(176, 176, 176)">姓名</text>
+		<text  style="color:black">{{workerInfo.workerName}}</text>
+	</view>
+	<view class="myText">
+		<text style="color: rgb(176, 176, 176)">身份证号</text>
+		<text style="color:black">{{workerInfo.workerIdcard}}</text>
+	</view>
+</view>
+
+<view class="myView">
+	<view>第三步</view>
+	<view>填写收获信息</view>
+</view>
+
+<view class="myInput">
+	<view>  
+	<picker mode="region" bindchange="bindRegionChange" value="{{region}}" custom-item="{{customItem}}">
+    <view class="picker">
+     省/市/区:{{region[0]}},{{region[1]}},{{region[2]}}
+    </view>
+  </picker>
+	</view>
+	<view>  <input  type="text"  placeholder-class="cs" placeholder="详细地址,具体到门牌号" bindinput="inputAddress" /></view>
+	<view> 	<input maxlength="11" placeholder-class="cs" type="number"  placeholder="联系手机号" bindinput="inputPhone" /></view> 
+</view>
+<view style="margin-top:40rpx;margin-left:20rpx;  display: flex;align-items: center; ">
+			<checkbox-group bindchange="checkboxChange">
+            <view class="weui-cell__hd">
+              <checkbox value="{{isSelect}}" />
+            </view>
+        </checkbox-group>
+        
+      <view><text style="color: black;">我已阅读并同意</text><text bindtap="checkProBtn" style="color:#09afff">《2024中国电信用户入网协议》</text></view>
+</view>
+
+<view class="mybutton">
+	<view bindtap="saveOrder">确认领取</view>
+</view>
+
+<!-- 号码弹窗 -->
+<view class="modal-mask" catchtouchmove="preventTouchMove" wx:if="{{showModal}}">
+	<view class="modal-dialog" wx:if="{{showModal}}">
+      <view style="color: black;margin: 20px;">请选择号码</view>
+			<view class="{{isSelectedIndex==index?'selectedPhoneClass':'phoneClass'}}" wx:for="{{phoneList}}" bindtap="selectdNumber" data-num="{{item}}" data-index="{{index}}"  wx:key="*this">
+				{{item}}
+			</view>
+			<view class="phoneButton" bindtap="selectedPhone">选中号码</view>
+			<view class="phoneButton" bindtap="hideModal">取消</view>
+    </view>
+</view>

+ 129 - 0
pages/mall/dxkOrder/dxkOrder.wxss

@@ -0,0 +1,129 @@
+.desc{
+	color: rgb(176, 176, 176);
+	margin-top: 10px;
+	margin-bottom: 10px;
+	display: block;
+}
+
+.myView{
+	margin: 20rpx;
+	height: 120rpx;
+	background-color:rgb(25, 136, 249) ;
+	border-radius: 15rpx;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+
+.myView view{
+	margin: 30rpx;
+	color: aliceblue;
+}
+
+.mybutton{
+	margin: 50rpx;
+	height: 100rpx;
+	background-color:rgb(25, 136, 249) ;
+	border-radius: 120rpx;
+	line-height:100rpx;
+	text-align: center;
+}
+
+.mybutton view{
+	margin: 30rpx;
+	color: aliceblue;
+}
+
+.myDesc{
+	margin: 20rpx;
+	height: 165rpx;
+	border-radius: 15rpx;
+	border: 1rpx rgb(25, 136, 249) solid;
+}
+
+.myText{
+	margin: 30rpx;
+	border-radius: 15rpx;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+
+.myInput>view{
+	margin: 20rpx;
+	height: 105rpx;
+	border-radius: 15rpx;
+	border: 1rpx rgb(25, 136, 249) solid;
+	color: rgb(176, 176, 176);
+}
+.myInput>view>input{
+	height: 105rpx;
+}
+.cs{
+	padding-left: 20rpx;
+	color: rgb(176, 176, 176);
+}
+.picker{
+	padding-top:30rpx;
+	padding-left: 20rpx;
+	color: rgb(176, 176, 176);
+}
+.modal-mask{
+	display: flex;
+  justify-content: center;
+  align-items: center;
+  position: fixed;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 999;
+}
+.modal-dialog {
+		width: 600rpx;
+		height: 900rpx;
+		overflow: hidden;
+		position: fixed;
+		margin: 0 auto;
+		z-index: 9999;
+		background: #f9f9f9;
+		border-radius: 36rpx;
+	}
+
+	.phoneClass{
+		margin-left: 12rpx;
+		margin-bottom: 20rpx;
+		width: 280rpx;
+		height: 80rpx;
+		line-height:80rpx;
+		text-align: center;
+		display: inline-block;
+		border: 1rpx rgb(25, 136, 249) solid;
+		border-radius: 15rpx
+	}
+
+.phoneButton{
+	margin: 30rpx;
+	height: 80rpx;
+	background-color:rgb(25, 136, 249) ;
+	border-radius: 30rpx;
+	line-height:80rpx;
+	text-align: center;
+	color:aliceblue;
+}
+.selectedPhoneClass{
+		margin-left: 12rpx;
+		margin-bottom: 20rpx;
+		width: 280rpx;
+		height: 80rpx;
+		line-height:80rpx;
+		text-align: center;
+		display: inline-block;
+		border: 1rpx rgb(25, 136, 249) solid;
+		border-radius: 15rpx;
+		background-color:rgb(25, 136, 249) ;
+		color:aliceblue;
+}
+	
+

+ 66 - 0
pages/mall/dxkOrderXy/dxkOrderXy.js

@@ -0,0 +1,66 @@
+// pages/mall/dxkOrderXy/dxkOrderXy.js
+Page({
+
+	/**
+	 * 页面的初始数据
+	 */
+	data: {
+
+	},
+
+	/**
+	 * 生命周期函数--监听页面加载
+	 */
+	onLoad(options) {
+
+	},
+
+	/**
+	 * 生命周期函数--监听页面初次渲染完成
+	 */
+	onReady() {
+
+	},
+
+	/**
+	 * 生命周期函数--监听页面显示
+	 */
+	onShow() {
+
+	},
+
+	/**
+	 * 生命周期函数--监听页面隐藏
+	 */
+	onHide() {
+
+	},
+
+	/**
+	 * 生命周期函数--监听页面卸载
+	 */
+	onUnload() {
+
+	},
+
+	/**
+	 * 页面相关事件处理函数--监听用户下拉动作
+	 */
+	onPullDownRefresh() {
+
+	},
+
+	/**
+	 * 页面上拉触底事件的处理函数
+	 */
+	onReachBottom() {
+
+	},
+
+	/**
+	 * 用户点击右上角分享
+	 */
+	onShareAppMessage() {
+
+	}
+})

+ 4 - 0
pages/mall/dxkOrderXy/dxkOrderXy.json

@@ -0,0 +1,4 @@
+{
+	"usingComponents": {},
+	"navigationBarTitleText": "2024中国电信用户入网协议"
+}

File diff suppressed because it is too large
+ 162 - 0
pages/mall/dxkOrderXy/dxkOrderXy.wxml


+ 45 - 0
pages/mall/dxkOrderXy/dxkOrderXy.wxss

@@ -0,0 +1,45 @@
+page {
+  height: 100%;
+  background-size: 100%;
+  background: #f9f9f9;
+}
+
+.content-box-page {
+  padding: 40rpx;
+}
+
+.rule-name {
+  color: #646464;
+  font-weight: 700;
+  text-align: center;
+  font-size: 24px;
+  margin: 30px 0px 10px 0px;
+}
+
+.little-title {
+  color: #646464;
+  font-size: 16px;
+  margin: 0px 0px 15px 0px;
+  text-align: center;
+}
+
+.rule-title {
+  color: #646464;
+  font-weight: 700;
+  margin-top: 25px;
+  margin-bottom: 10px;
+}
+
+.rule-items {
+  color: #636363;
+  text-indent: 30px;
+  line-height: 24px;
+}
+
+
+.rule-items2 {
+  color: #636363;
+  text-indent: 30px;
+	line-height: 24px;
+	color: black;font-weight: bold;
+}

File diff suppressed because it is too large
+ 1115 - 0
pages/mall/goods/goods.js


+ 3 - 0
pages/mall/goods/goods.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "商品详情"
+}

+ 328 - 0
pages/mall/goods/goods.wxml

@@ -0,0 +1,328 @@
+<!-- 展示蒙层 显示推广画报 -->
+<view class="poster" wx:if="{{myqr_show}}">
+	<view class="title">
+		<text>推广文案</text></view>
+	<view class="ads">
+		<view style="width:480rpx">{{myqr_ads}}</view>
+	</view>
+	<image src="{{myqr_url}}" mode="widthFix" style="width:480rpx" show-menu-by-longpress="true"></image>
+	<view class="tool">
+		<view bindtap="posterCopy" style="text-align:right">
+			<image class="img" style="width:110rpx;height:130rpx" src="/static/images/share/p_copy.png"></image>
+		</view>
+		<button open-type='share' class="share-btn">
+			<image class="img" style="width: 85rpx;height: 127rpx;" src="/static/images/share/p_wx.png"></image>
+		</button>
+		<view style="text-align:left">
+			<image class="img" bindtap="goSaveQrcode" src="/static/images/share/p_save.png"></image>
+		</view>
+	</view>
+	<view style="text-align:center">
+		<image class="closeImg" bindtap="hidePoster" src="/static/images/share/close.png"></image>
+	</view>
+</view>
+
+
+<view class="container" style="filter:brightness({{myqr_blur}}%)">
+	<image src="/static/images/new/isnew.png" wx:if="{{goods.isNew}}" class="isNew"></image>
+	<swiper class="goodsimgs" indicator-dots="true" autoplay="true" interval="3000" duration="1000">
+		<swiper-item wx:for="{{goods.picAddress}}" wx:key="*this">
+			<image src="{{item}}" mode="aspectFill"></image>
+		</swiper-item>
+	</swiper>
+
+	<!-- 分享  
+	<view class='goods_name'>
+		<view class='goods_name_left'>{{goods.name}}</view>
+		<view hidden="{{!canShare}}" class="goods_name_right" bindtap="shareFriendOrCircle"> 
+			<image class="img" src="/static/images/share.png" />
+		</view> 
+	</view>-->
+
+	<view class="share-pop-box" hidden="{{!openShare}}">
+		<view class="share-pop">
+			<view class="close" bindtap="closeShare">
+				<van-icon class="icon" name="cross" />
+			</view>
+		
+		</view>
+	</view>
+
+	<view class="goods-info">
+		<view class="c">
+			<view>
+				<view class='goods_name'>
+					<view class='goods_name_left'>{{goods.commodityName}}</view>
+				</view>
+				<!-- <text class="desc sub-color" wx:if="{{goods.commodityName}}">{{goods.commodityName}}</text>  -->
+				<view class="price" >
+					<view class="retailPrice">商品编码:<text class="checked-price">{{goods.spuCode}}</text></view>
+					<!-- <view class="member-price-tag spread-tag">推广优惠价</view> -->
+				</view>  
+				<!-- <view class="price" wx:else> 
+					<view class="retailPrice">¥<text class="checked-price">{{checkedSpecPrice}}</text><text
+							wx:if="{{goods.type=='2'}}"> 起</text></view> -->
+				
+					<!-- <view class="memberPrice"  wx:if="{{goods.memberPrice!=checkedSpecPrice}}">¥{{goods.memberPrice}}</view> -->
+					<!-- <view class="member-price-tag"  wx:if="{{goods.memberPrice!=checkedSpecPrice}}" bindtap="goMemberCenter">会员价</view> -->
+				<!-- </view> -->
+
+			</view>
+
+			<!-- 分享商品 -->
+			<!-- <view hidden="{{!canShare}}" class="goods_name_right" bindtap="shareFriendOrCircle">
+				<image class="img" src="/static/images/share.png" />
+			</view> -->
+		</view>
+	</view>
+
+     <!-- 数量和sku列表 -->
+	
+
+		 <view class="sku-list">
+			<view class="sku-title">请输入商品数量:</view>
+			<view class="spu-number">
+			  <view class="minus" bindtap="minusNumber">-</view>
+				<input value="{{goosNumber}}" class="goods-number" maxlength="4" type="number" placeholder="" bindinput="bindNumberInput"/>
+				<view class="add" bindtap="addNumber" >+</view>
+			</view>
+
+		    <view class="sku-title">规格选择:</view>
+				<view >
+					<label class="radio" wx:for="{{goods.skus}}" wx:key="index">
+      
+   
+		    <view  class="sku-item" bindtap="skuSelect" data-id="{{item.id}}" data-stock="{{item.inHouseCount}}">
+             
+				     <view>
+							<radio 
+							color="#09afff" value="{{item.id}}" checked="{{currentSku==item.id?true:false}}" disabled="{{!isDxk && item.inHouseCount<=0}}"/>
+						 </view>
+				      <view class="sku-center"><text class="sku-name">{{item.propertyValue}} <text class="sku-name" wx:if="{{!isDxk}}">(库存:{{item.inHouseCount}} )</text></text></view>
+							<view class="sku-price">
+						单价:¥<text>{{item.salePrice}}</text>
+							</view>
+				</view>
+			</label>
+			</view>
+		 </view>
+<!-- 商品详情图片 -->
+<view hidden="{{!isDetailPic}}" style="height: 4285px;width: 100%;">
+	<image class="img" style="height: 4285px;width: 100%;" src="{{detailPic}}"></image>
+</view> 
+
+
+
+
+	<!-- <view class="detail">
+		<import src="/lib/wxParse/wxParse.wxml" />
+		<template is="wxParse" data="{{wxParseData:goodsDetail.nodes}}" />
+	</view> -->
+
+
+
+	<!-- 大家都在看 -->
+	<view class="related-goods" wx:if="{{relatedGoods.length > 0}}">
+		<view class="h">
+			<view class="line"></view>
+			<text class="title">大家都在看</text>
+		</view>
+		<view class="b">
+			<view class="item" wx:for="{{relatedGoods}}" wx:key="id">
+				<navigator url="/pages/goods/goods?id={{item.id}}">
+					<image class="img" src="{{item.picUrl}}" background-size="cover"></image>
+					<text class="name">{{item.name}}(库存:{{item.inHouseCount}} )</text>
+					<text class="price">¥{{item.retailPrice}}</text>
+				</navigator>
+			</view>
+		</view>
+	</view>
+</view>
+<!-- 规格选择界面 -->
+<view class="attr-pop-box" hidden="{{!openshow}}">
+	<view class="attr-pop">
+		<view class="close" bindtap="closeAttr">
+			<van-icon class="icon" name="cross" />
+		</view>
+	</view>
+</view>
+<!-- 规格选择界面 -->
+<view class="attr-pop-box" hidden="{{!openAttr}}">
+	<view class="attr-pop">
+		<view class="close" bindtap="closeAttr">
+			<van-icon class="icon" name="cross" />
+		</view>
+		<view class="img-info">
+			<image class="img" src="{{goods.picUrl}}"></image>
+			<view class="info">
+				<view class="c">
+					<view class="p">价格:¥{{checkedSpecPrice}}</view>
+					<view class="a">{{tmpSpecText}}</view>
+				</view>
+			</view>
+		</view>
+
+		<!-- 规格列表 -->
+		<view class="spec-con">
+			<view class="spec-item" wx:for="{{specificationList}}" wx:key="name">
+				<view class="name">{{item.name}}</view>
+				<view class="values">
+					<view class="value {{vitem.checked ? 'selected' : ''}}" bindtap="clickSkuValue" wx:for="{{item.valueList}}"
+						wx:for-item="vitem" wx:key="id" data-value-id="{{vitem.id}}" data-name="{{vitem.specification}}">
+						{{vitem.value}}</view>
+				</view>
+			</view>
+
+			<view class="spec-item" wx:if="{{groupon.length > 0}}">
+				<view class="name">团购立减</view>
+				<view class="values">
+					<view class="value {{vitem.checked ? 'selected' : ''}}" bindtap="clickGroupon" wx:for="{{groupon}}"
+						wx:for-item="vitem" wx:key="{{vitem.id}}" data-value-id="{{vitem.id}}" data-name="{{vitem.specification}}">
+						¥{{vitem.discount}} ({{vitem.discountMember}}人)</view>
+				</view>
+			</view>
+
+			<!-- 数量 -->
+			<view class="number-item">
+				<view class="name">数量</view>
+				<view class="selnum">
+					<!-- <view class="cut" bindtap="cutNumber">-</view> -->
+					<input value="{{number}}" class="number" disabled="true" type="number" />
+					<!-- <view class="add" bindtap="addNumber">+</view> -->
+				</view>
+			</view>
+
+
+		</view>
+	</view>
+</view>
+
+<!-- 联系客服
+<view class="contact">
+	<contact-button style="opacity:0;position:absolute;" type="default-dark" session-from="weapp" size="36">
+	</contact-button>
+</view> -->
+
+<!-- 底部按钮 -->
+<view class="bottom-btn" style="position:{{myqr_bottom_btn}}">
+	<!-- <view class="l l-collect" bindtap="addCollectOrNot" wx:if="{{!isGroupon}}">
+		<view class="collect-wrapper">
+
+			<van-icon class="icon" name="star" color="#09afff" wx:if="{{collect}}" size="22px" />
+			<van-icon class="icon" size="22px" color="#09afff" name="star-o" wx:else />
+			<text class="jz-color collect-text">收藏</text>
+		</view>
+	</view> -->
+
+	 <view class="l l-kefu">
+		<!-- bindtap="goCustomerService" -->
+		<view class="service-wrapper" >
+			<view class="contact-block">
+				<van-icon name="service-o" color="#09afff" size="22px" />
+			</view>
+
+			<text class="jz-color">在线客服</text>
+		</view>
+		<contact-button  class="csr"   type="default-dark" style="opacity: 0;position: absolute;z-index: 99999; width: 100rpx;height: 84rpx;top:0;left:0" session-from="weapp" size="27">
+			</contact-button>
+	</view>
+
+	<view class="l l-cart" bindtap="openCartPage" >
+		<view class="collect-wrapper box" wx:if="{{!isDxk}}">
+			<text class="cart-count" wx:if="{{cartGoodsCount>0}}">{{cartGoodsCount}}</text>
+			<van-icon class="icon" size="22px" color="#09afff" name="cart-o"  />
+			<text class="jz-color collect-text">购物车</text>
+		</view>
+	</view>
+	<view class="c" >
+	<view bindtap="addToCart" wx:if="{{!isDxk}}" class="add-cart">加入购物车</view>
+	<view bindtap="addFast" class="buy-now" >立即购买</view>
+	</view>
+	
+	<!-- <view class="l l-cart" wx:if="{{!isGroupon}}">
+		<view class="box" bindtap="openCartPage">
+			<text class="cart-count" wx:if="{{cartGoodsCount>0}}">{{cartGoodsCount}}</text>
+			<van-icon   class="icon" name="cart-o" />
+			<text class="txt">购物车</text>
+		</view>
+	</view>
+	 <view class="r" bindtap="addToCart" wx:if="{{!soldout}}" wx:if="{{!isGroupon}}">加入购物车</view>  -->
+<!-- 
+	 <view class="r" bindtap="copyToHM">
+		<view class="title">复制链接</view>
+     <view  class="subtitle">去盒马APP下单</view>
+	</view> -->
+
+
+	 <!-- <view class="c" bindtap="addFast" wx:if="{{!soldout||!hasLogin}}">{{isGroupon?'参加团购':'立即预约'}}</view>
+	<view class="n" wx:if="{{soldout}}">商品已售空</view> -->
+
+
+
+	<!-- 自购&推广 分享进入有shareId不展示自购推广-->
+	<!-- (hasLogin&&userInfo.isDis)||(hasLogin&&shareId==0) -->
+
+	
+	<!-- <view class="dis-order-wrapper" wx:if="{{hasLogin&&userInfo.isDis&&referee.self>0}}">
+		<view class="self-order" bindtap="goSelfPay">
+			<view class="buy-type">自购</view>
+			<view>立省 {{referee.self}}元</view>
+		</view>
+		<view class="spread-order" bindtap="goSpread">
+			<view class="buy-type jz-color" style="overflow: hidden;">推广</view>
+			<view class="jz-color" style="overflow: hidden;">最高返 {{referee.share}}元</view>
+		</view>
+	</view>
+	<block wx:else>
+		<view class="c" bindtap="addFast" wx:if="{{!soldout||!hasLogin}}">{{isGroupon?'参加团购':'立即预约'}}</view>
+		<view class="n" wx:if="{{soldout}}">商品已售空</view>
+	</block>  -->
+
+
+
+</view>
+
+
+<!-- 自购提示 -->
+<van-overlay show="{{ selfPayShow }}">
+	<view class="overlay-wrapper">
+		<view class="tips-wrapper">
+			<view class="tips-top">
+				<view class="tips-title">立省金额说明</view>
+				<view>立省金额会以佣金形式发放,请在引荐人中心查收哦</view>
+			</view>
+			<view class="notip-again">
+				<van-checkbox value="{{selfPayChecked}}" shape="square" icon-size="20px" bind:change="onSelfPayChange"
+					checked-color="#09afff"></van-checkbox>
+				<text class="user-agree">我已知晓,不再提示</text>
+			</view>
+			<view class="tips-bottom">
+				<view class="cancel-btn" bindtap="cancelSelfPay">取消</view>
+				<view class="btn-devide"></view>
+				<view class="repay-btn" bindtap="reSelfPay">继续购买</view>
+			</view>
+		</view>
+	</view>
+</van-overlay>
+
+<!-- 推广提示 -->
+<van-overlay show="{{spreadPayShow }}">
+	<view class="overlay-wrapper">
+		<view class="tips-wrapper">
+			<view class="tips-top">
+				<view class="tips-title">推广佣金说明</view>
+				<view>页面展示推广佣金为预计最高返现金额,实际金额根据购买者团队身份计算,请在引荐人中心查看实际佣金</view>
+			</view>
+			<view class="notip-again">
+				<van-checkbox value="{{spreadPayChecked}}" shape="square" icon-size="20px" bind:change="onSpreadPayChange"
+					checked-color="#09afff"></van-checkbox>
+				<text class="user-agree">我已知晓,不再提示</text>
+			</view>
+			<view class="tips-bottom">
+				<view class="cancel-btn" bindtap="cancelSpreadPay">取消</view>
+				<view class="btn-devide"></view>
+				<view class="repay-btn" bindtap="reSpread">继续推广</view>
+			</view>
+		</view>
+	</view>
+</van-overlay>

File diff suppressed because it is too large
+ 1375 - 0
pages/mall/goods/goods.wxss


+ 441 - 0
pages/mall/order/order.js

@@ -0,0 +1,441 @@
+var util = require('../../../utils/jmsUtil.js');
+var mall = require('../../../api/mall.js'); 
+var app = getApp();
+Page({
+  data: {
+    orderList: [],
+    showType: 0,
+    page: 1,
+    limit: 10,
+    totalPages: 1,
+    myqr_show:false,//我的分享二维码
+    myqr_url:null,
+    myqr_blur:0,//背景模糊值
+    myqr_width:0,
+    hasLogin:false,
+    goodsId:''
+  },
+  onLoad: function(options) {
+    // 页面初始化 options为页面跳转所带来的参数
+    // let that = this
+    // try {
+    //   var tab = wx.getStorageSync('tab');
+
+    //   this.setData({
+    //     showType: tab
+    //   });
+    // } catch (e) {}
+  this.getOrderList();
+  },
+  getOrderList() {
+    wx.showLoading({
+      title: '加载中',
+    });
+    let that = this;
+    util.request(mall.OrderList, {
+      showType: that.data.showType,
+      page: that.data.page,
+      limit: that.data.limit
+    }).then(function(res) {
+      wx.hideLoading();
+      if (res.errno === 0) {
+        console.log(res.data);
+        that.setData({
+          orderList: that.data.orderList.concat(res.data.list),
+          totalPages: res.data.pages
+        });
+      }
+    });
+	},
+	getToolkitList() {
+    wx.showLoading({
+      title: '加载中',
+    });
+    let that = this;
+    util.request(mall.ToolkitList, {
+    
+      page: that.data.page,
+			size: that.data.limit,
+			// disStatus:2
+    }).then(function(res) {
+      wx.hideLoading();
+      if (res.errno === 0) {
+        console.log(res.data);
+        that.setData({
+          orderList: that.data.orderList.concat(res.data.list),
+          totalPages: res.data.pages
+        });
+      }
+    });
+  },
+  onReachBottom() {
+    if (this.data.totalPages > this.data.page) {
+      this.setData({
+        page: this.data.page + 1
+      });
+      if(this.data.showType!=6){
+        this.getOrderList();
+      }else{
+				// 待领取订单
+				this.getToolkitList();
+      }
+      
+    } else {
+      wx.showToast({
+        title: '没有更多订单了',
+        icon: 'none',
+        duration: 2000
+      });
+      return false;
+    }
+  },
+ 
+  onTabChange(e){
+ 
+  let showType = e.detail.name;
+  this.setData({
+    orderList: [],
+    showType: showType,
+    page: 1,
+    limit: 10,
+    totalPages: 1
+  });
+  if(showType==6){
+		this.getToolkitList();
+  }else{
+    this.getOrderList();
+  }
+  
+  },
+ 
+  viewService(e){
+    let id=e.currentTarget.dataset.id;
+    wx.navigateTo({
+      url: '../serviceDetail/serviceDetail?orderId=' +id
+    })
+  },
+  qrtouchstart:function(){
+    this.setData({
+      myqr_blur:0,
+      myqr_show:false  
+    });
+  },
+  shareFriendOrCircle: function(e) {  
+    // let that = this;
+    // if (!app.globalData.hasLogin) {
+    //   wx.navigateTo({
+    //     url: "/pages/auth/login/login"
+    //   });
+    //   return;
+    // }
+    // //获取分享id 用来追踪链接
+    // //引荐人和非引荐人的 链接不同
+    // let imgUrl = that.data.goods.shareWxUrl ? that.data.goods.shareWxUrl : that.data.goods.gallery[0]; 
+    // var path = '/pages/goods/goods?id=' + that.data.id + '&rId=' + that.data.userInfo.id;
+    // if (that.data.userInfo.isDis) { //是引荐人 
+    //   path = '/pages/goods/goods?id=' + that.data.id + '&shareId=' + that.data.wxShareId;
+    // }
+    // this.hidePoster();
+    // return {
+    //   title: that.data.goods.name,
+    //   desc: that.data.myqr_ads,
+    //   path: path,
+    //   imageUrl: imgUrl
+    // }
+  },
+  // 保存分享图
+  saveShare: function() {
+    let that = this;
+    wx.showLoading({
+      title: '图片保存中',
+    });
+    console.log(that.data);
+    wx.downloadFile({
+      url: that.data.myqr_url,
+      success: function(res) {
+        console.log(res)
+        wx.saveImageToPhotosAlbum({
+          filePath: res.tempFilePath,
+          success: function(res) {
+            wx.hideLoading();
+            wx.showModal({
+              title: '存图成功',
+              content: '图片成功保存到相册了,可以分享到朋友圈了',
+              showCancel: false,
+              confirmText: '好的',
+              confirmColor: '#a78845',
+              success: function(res) {
+                if (res.confirm) {
+                  console.log('用户点击确定');
+                  that.setData({ 
+                    myqr_show:false,
+                    myqr_blur:0
+                    }); 
+                }
+              }
+            })
+          },
+          fail: function(res) {
+            wx.hideLoading();
+           wx.showModal({
+              title: '警告',
+              content: '不授权无法保存',
+              showCancel: false
+          })
+          that.setData({ 
+            myqr_show:false,
+            myqr_blur:0
+            }); 
+        }
+        })
+      },
+      fail: function(res) {
+        wx.hideLoading();
+        console.log(res);
+      }
+    })
+  },
+  // “去付款”按钮点击效果
+  payOrder: function(e) {
+    let that = this;
+    let id = e.currentTarget.dataset.id;
+    util.request(mall.OrderPrepay, {
+      orderId: id
+    }, 'POST').then(function(res) {
+      if (res.errno === 0) {
+        const payParam = res.data;
+        console.log("支付过程开始");
+        wx.requestPayment({
+          'timeStamp': payParam.timeStamp,
+          'nonceStr': payParam.nonceStr,
+          'package': payParam.packageValue,
+          'signType': payParam.signType,
+          'paySign': payParam.paySign,
+          'success': function(res) {
+            console.log("支付过程成功");
+            that.setData({
+              orderList: [],
+              page: 1,
+              limit: 10,
+              totalPages: 1
+            });
+            that.getOrderList();
+            // wx.redirectTo({
+            //   url: '/pages/mall/order/order'
+            // });
+            // util.redirect('/pages/mall/order/order');
+          },
+          'fail': function(res) {
+            console.log("支付过程失败");
+            util.showErrorToast('支付失败');
+          },
+          'complete': function(res) {
+            console.log("支付过程结束")
+          }
+        });
+      }
+    });
+
+  },
+   // “删除”点击效果
+   deleteOrder: function(e) {
+    let that = this;
+    let id = e.currentTarget.dataset.id;
+
+    wx.showModal({
+      title: '',
+      content: '确定要删除此订单?',
+      success: function(res) {
+        if (res.confirm) {
+          util.request(mall.OrderDelete, {
+            orderId: id
+          }, 'POST').then(res=> {
+            if (res.errno === 0) {
+              wx.showToast({
+                title: '删除订单成功'
+              });
+              that.setData({
+                orderList: [],
+                page: 1,
+                limit: 10,
+                totalPages: 1
+              });
+              that.getOrderList();
+              // wx.redirectTo({
+              //   url: '/pages/mall/order/order'
+              // });
+              // util.redirect('/pages/mall/order/order');
+            } else {
+              util.showErrorToast(res.errmsg);
+            }
+          });
+        }
+      }
+    });
+  },
+ // “取消订单”点击效果
+ cancelOrder: function(e) {
+  let that = this;
+  let id = e.currentTarget.dataset.id;
+
+  wx.showModal({
+    title: '',
+    content: '确定要取消此订单?',
+    success: function(res) {
+      if (res.confirm) {
+        util.request(mall.OrderCancel, {
+          orderId: id
+        }, 'POST').then(function(res) {
+          if (res.errno === 0) {
+            wx.showToast({
+              title: '取消订单成功'
+            });
+            that.setData({
+              orderList: [],
+              page: 1,
+              limit: 10,
+              totalPages: 1
+            });
+            that.getOrderList();
+            // wx.redirectTo({
+            //   url: '/pages/mall/order/order'
+            // });
+            // util.redirect('/pages/ucenter/order/order');
+          } else {
+            util.showErrorToast(res.errmsg);
+          }
+        });
+      }
+    }
+  });
+},
+// “取消订单”点击效果
+cancelSpec: function(e) {
+  let id = e.currentTarget.dataset.id;
+
+  wx.showModal({
+    title: '',
+    content: '确定我不需要?',
+    success: res=> {
+      if (res.confirm) {
+        util.request(mall.ToolkitReceive, {
+					agree:false,
+          toolkitId: id
+        }, 'POST').then(resp=>{
+          if (resp.errno === 0) {
+            wx.showToast({
+              title: '操作成功'
+            });
+            this.setData({
+              orderList: [],
+              page: 1,
+              limit: 10,
+              totalPages: 1
+            });
+            this.getToolkitList();
+          } else {
+            util.showErrorToast(res.errmsg);
+          }
+        });
+      }
+    }
+  });
+},
+ // “确认领取”点击效果
+ confirmOrder: function(e) {
+  let id = e.currentTarget.dataset.id;
+
+  wx.showModal({
+    title: '',
+    content: '确认领取?',
+    success:res => {
+      if (res.confirm) {
+        util.request(mall.OrderConfirm, {
+          orderId: id
+        }, 'POST').then(res=> {
+          if (res.errno === 0) {
+            wx.showToast({
+              title: '操作成功!'
+            });
+						this.setData({
+							orderList: [],
+							page: 1,
+							limit: 10,
+							totalPages: 1
+						});
+						this.getOrderList();
+          } else {
+            util.showErrorToast(res.errmsg);
+          }
+        });
+      }
+    }
+  });
+},
+// “取消订单并退款”点击效果
+refundOrder: function(e) {
+  let that = this;
+  let id = e.currentTarget.dataset.id;
+
+  wx.showModal({
+    title: '',
+    content: '确定要申请退款么?',
+    success: function(res) {
+      if (res.confirm) {
+        util.request(mall.OrderRefund, {
+          orderId: id
+        }, 'POST').then(function(res) {
+          if (res.errno === 0) {
+            wx.showToast({
+              title: '申请成功'
+            });
+            that.setData({
+              orderList: [],
+              page: 1,
+              limit: 10,
+              totalPages: 1
+            });
+            that.getOrderList();
+            // wx.redirectTo({
+            //   url: '/pages/mall/order/order'
+            // });
+            // util.redirect('/pages/mall/order/order');
+          } else {
+            util.showErrorToast(res.errmsg);
+          }
+        });
+      }
+    }
+  });
+},
+confirmSpec(e){
+	app.globalData.specRefresh=false;
+	let id=e.currentTarget.dataset.id;
+	wx.navigateTo({
+		url: '/pages/mall/toolkitConfirm/toolkitConfirm?id='+id,
+	})
+},
+  onReady: function() {
+    // 页面渲染完成
+  },
+  onShow: function() {
+    // 页面显示
+		// this.getOrderList(); 
+		if(app.globalData.specRefresh&&this.data.showType==6){
+			this.setData({
+				orderList: [],
+				page: 1,
+				limit: 10,
+				totalPages: 1
+			});
+		
+				this.getToolkitList();
+		}
+  },
+  onHide: function() {
+    // 页面隐藏
+  },
+  onUnload: function() {
+    // 页面关闭
+  }
+})

+ 3 - 0
pages/mall/order/order.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "我的订单"
+}

+ 166 - 0
pages/mall/order/order.wxml

@@ -0,0 +1,166 @@
+<wxs src="../../../utils/formatFuc.wxs" module="formatFuc" />
+<view class="poster" wx:if="{{myqr_show}}">
+<view>
+  <image src="{{myqr_url}}" style="width:{{myqr_width}}rpx;" mode="widthFix">
+  </image>
+  <view class="tool">
+    <view>
+    <button open-type='share' class="share-btn">
+      <image class="img" style="width: 85rpx;margin-right: 25rpx;"  mode="widthFix" src="/static/images/share/p_wx.png"></image>
+    </button>
+    </view>
+    <view>
+      <image class="img" mode="widthFix" bindtap="goSaveQrcode" src="/static/images/share/p_save.png"></image>
+    </view>
+  </view>
+  <view style="text-align:center">
+    <image class="closeImg" bindtap="hidePoster" src="/static/images/share/close.png"></image>
+  </view>
+  </view>
+</view>
+
+<view class="container" style="filter:blur({{myqr_blur}}rpx)">
+
+
+	<van-sticky>
+<van-tabs active="{{showType }}" color="#09afff" bind:change="onTabChange">
+    <van-tab title="全部" name="0"></van-tab>
+    <van-tab title="待付款" name="1"></van-tab>
+    <van-tab title="待确认" name="5"></van-tab>
+    <!-- <van-tab title="待领取" name="6"></van-tab> -->
+    <van-tab title="已付款" name="2"></van-tab>
+    <van-tab title="已取消" name="3"></van-tab>
+    <van-tab title="待退款" name="4"></van-tab>
+   
+  </van-tabs>
+
+</van-sticky>
+
+  <view class="no-order" wx:if="{{orderList.length <= 0}}">
+    <view class="c">
+      <text>还没有任何订单呢</text>
+    </view>
+  </view>
+
+  <view class="orders" wx:if="{{showType!=5&&showType!=6}}">
+   
+      <view class="order"  wx:for="{{orderList}}" wx:key="index">
+      <view class="h">
+        <!-- <view class="l">订单编号:{{item.orderNo}}</view> -->
+				<view class="l"  wx:if="{{item.buyType==1}}">{{item.orderNo}}(自购)</view>
+				<view class="l"  wx:if="{{item.buyType==2}}">{{item.orderNo}} (代购)</view>
+        <view class="r" wx:if="{{showType==0}}">{{formatFuc.statusText(item.orderStatus)}}</view>
+      </view>
+      <!-- <navigator url="../orderDetail/orderDetail?id={{item.id}}"  open-type="redirect" > -->
+				<view class="special-content">
+			  <scroll-view class="goods-scroll" scroll-x="true" >
+      <view class="goods" wx:for="{{item.orderItemList}}" wx:key="id" wx:for-item="gitem">
+        <view class="img">
+          <image src="{{gitem.thumbnail}}"></image>
+        </view>
+        <view class="info">
+          <view class="name">{{gitem.skuName}}</view>
+          <view class="number">件数:{{gitem.buyNumber}}</view>
+        </view>   
+        <view class="status"> 
+        </view>
+      </view>
+      </scroll-view>
+			<view class="goods-num">共{{item.commodityNum}}件</view>
+		</view>
+    <!-- </navigator> -->
+      <view class="b">
+        <view class="l">实付:¥{{item.orderAmount}}</view>
+				<view style="float:right">{{item.createTime}}</view>
+      </view>
+      <!-- 操作事件 -->
+      <view  class="order-item-operate" >
+            <view class="order-item-result">
+
+            </view>
+            <view class="order-operate-wrapper">
+              <view catchtap="payOrder" wx:if="{{item.orderStatus==0}}" data-id="{{item.id}}">去付款</view>
+              <!-- <view  catchtap="confirmOrder" wx:if="{{item.handleOption.confirm}}" data-id="{{item.id}}">待上门</view> -->
+              <view catchtap="deleteOrder" wx:if="{{item.orderStatus==0||item.orderStatus==2||item.orderStatus==3}}" data-id="{{item.id}}">删除订单</view>
+              <view  catchtap="cancelOrder" wx:if="{{item.orderStatus==0}}" data-id="{{item.id}}">取消订单</view>
+
+              <view  catchtap="refundOrder" wx:if="{{item.orderStatus==1}}" data-id="{{item.id}}">申请退款</view>
+              <!-- <view  data-id="{{item.goodsList[0].goodsId}}" catchtap="shareFriendOrCircle" >分享商品</view> -->
+               <!-- <view catchtap="viewService" data-id="{{item.id}}" wx:if="{{!(item.orderStatus==101||item.orderStatus==102||item.orderStatus==103)}}">查看服务</view> -->
+            </view>
+      </view>
+ 
+  </view>
+  </view> 
+  <view class="special-orders" wx:if="{{showType==5}}">
+     <view class="special-item" wx:for="{{orderList}}" wx:key="index">
+     <view class="title">
+     <image src="/static/images/upgrade/order@selected.png"></image>
+     <view wx:if="{{item.buyType==1}}">
+		 {{item.orderNo}} (自购)</view>
+		 <view wx:if="{{item.buyType==2}}">
+		 {{item.orderNo}} (代购)</view>
+     </view>
+     <view class="special-content">
+      <scroll-view class="special-scroll" scroll-x="true" >
+          <view class="scroll-item" wx:for="{{item.orderItemList}}" wx:key="id" wx:for-item="gitem">
+            <image src="{{gitem.thumbnail}}" class="goods-img"></image>
+            <view class="googs-name">
+							{{gitem.skuName}}
+            </view>
+						<view  class="buy-num">件数:{{gitem.buyNumber}}</view>
+
+          </view>
+         
+        </scroll-view>
+      <view class="goods-num">共{{item.commodityNum}}件</view>
+     </view>
+     <view class="special-operate">
+       <view class="special-btn" bindtap="confirmOrder" data-id="{{item.id}}">确认领取</view>
+
+     </view>
+
+     </view>
+
+  </view>
+
+	<view class="special-orders" wx:if="{{showType==6}}">
+     <view class="special-item" wx:for="{{orderList}}" wx:key="index">
+     <view class="title-wrapper">
+		 <view class="title">
+     <image src="/static/images/upgrade/order@selected.png"></image>
+     <view>
+		 {{item.kitNo}}</view>
+		</view>
+		<view class="status-special">
+			{{formatFuc.specialStatusText(item.disStatus)}}
+		</view>
+
+     </view>
+     <view class="special-content">
+      <scroll-view class="special-scroll" scroll-x="true" >
+          <view class="scroll-item" wx:for="{{item.detailList}}" wx:key="id" wx:for-item="gitem">
+            <image src="{{gitem.commodityPic}}" class="goods-img"></image>
+            <view class="googs-name">
+							{{gitem.name}}
+            </view>
+						<view  class="buy-num">件数:{{gitem.num}}</view>
+
+          </view>
+         
+        </scroll-view>
+      <view class="goods-num">共{{item.total}}件</view>
+     </view>
+		 <view class="fail-reason" wx:if="{{item.disStatus==8}}">{{item.failReason}}</view>
+     <view class="special-operate">
+		 
+			<view class="special-btn"  wx:if="{{item.disStatus==2}}" bindtap="cancelSpec" data-id="{{item.id}}">我不需要</view>
+       <view class="special-btn" wx:if="{{item.disStatus==2}}" bindtap="confirmSpec" data-id="{{item.id}}">确认规格</view>
+
+     </view>
+
+     </view>
+
+  </view>
+
+</view>

+ 420 - 0
pages/mall/order/order.wxss

@@ -0,0 +1,420 @@
+page {
+  height: 100%;
+  width: 100%;
+  background: #f4f4f4;
+}
+view,text{
+  color:#333;
+  font-size: 32rpx;
+}
+view.van-tab--active .van-ellipsis{
+  color:#09afff;
+}
+.orders-switch {
+  width: 100%;
+  background: #fff;
+  height: 84rpx;
+  /* border-bottom: 1px solid rgba(0,0,0,.15); */
+}
+
+.orders-switch .item {
+  display: inline-block;
+  height: 82rpx;
+  width: 18%;
+  padding: 0 15rpx;
+  text-align: center;
+}
+
+.orders-switch .item .txt {
+  display: inline-block;
+  height: 82rpx;
+  padding: 0 20rpx;
+  line-height: 82rpx;
+  color: #9a9ba1;
+  font-size: 30rpx;
+  width: 170rpx;
+}
+
+.orders-switch .item.active .txt {
+  color: #ab956d;
+  border-bottom: 4rpx solid #ab956d;
+}
+
+.no-order {
+  width: 100%;
+  height: auto;
+  margin: 0 auto;
+}
+
+.no-order .c {
+  width: 100%;
+  height: auto;
+  margin-top: 400rpx;
+}
+
+.no-order .c text {
+  margin: 0 auto;
+  display: block;
+  width: 258rpx;
+  height: 29rpx;
+  line-height: 29rpx;
+  text-align: center;
+  font-size: 29rpx;
+  color: #999;
+}
+
+.orders {
+  height: auto;
+  width: 100%;
+  overflow: hidden;
+}
+
+.order {
+  margin-top: 20rpx;
+  background: #fff;
+  padding:0 0 20rpx
+}
+
+.order .h {
+  height: 83.3rpx;
+  line-height: 83.3rpx;
+  margin-left: 31.25rpx;
+  padding-right: 31.25rpx;
+  border-bottom: 1px solid #f4f4f4;
+  font-size: 30rpx;
+  color: #333;
+}
+
+.order .h .l {
+  float: left;
+}
+
+.order .h .r {
+  float: right;
+  color: #b4282d;
+  font-size: 24rpx;
+}
+
+.order .goods {
+	display: inline-block;
+  align-items: center;
+  height: 340rpx;
+  margin-right: 16rpx;
+  width:180rpx;
+  flex-direction: column;
+  
+}
+
+.order .goods .img {
+  height: 180rpx;
+  width: 180rpx;
+	background: #f4f4f4;
+	margin-bottom:12rpx;
+}
+
+.order .goods .img image {
+  height: 180rpx;
+  width: 180rpx;
+  border-radius:8rpx;
+}
+
+.order .goods .info {
+	width:180rpx;
+  flex: 1;
+  /* padding-left: 20rpx; */
+}
+
+.order .goods .name {
+  /* margin-top: 30rpx; */
+  /* display: block; */
+  /*height: 44rpx;
+  line-height: 44rpx;*/
+  color: #333;
+	font-size: 30rpx;
+	line-height:40rpx;
+	height: 80rpx;
+	overflow: hidden;
+}
+
+.order .goods .number {
+  height: 37rpx;
+  line-height: 37rpx;
+  color: #666;
+  font-size: 25rpx;
+  /* margin-top: 10rpx; */
+}
+
+.order .goods .status {
+  width: 105rpx;  
+  color: #b4282d;
+  font-size: 25rpx;
+} 
+ 
+
+.order .b {
+  height: 103rpx;
+  line-height: 103rpx;
+  margin-left: 31.25rpx;
+  padding-right: 31.25rpx;
+  border-top: 1px solid #f4f4f4;
+  font-size: 30rpx;
+  color: #333;
+}
+
+.order .b .l {
+  float: left;
+}
+
+.order .b .r {
+  float: right;
+}
+
+.order .b .btn {
+  margin-top: 19rpx;
+  height: 64.5rpx;
+  line-height: 64.5rpx;
+  text-align: center;
+  padding: 0 20rpx;
+  border-radius: 5rpx;
+  font-size: 28rpx;
+  color: #fff;
+  background: #b4282d;
+}
+.order-item-operate{
+  height: 80rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding:0 32rpx;
+}
+.order-operate-wrapper{
+  height: 80rpx;
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
+.order-operate-wrapper>view{
+  height: 44rpx;
+  width:148rpx;
+  text-align: center;
+  line-height: 44rpx;
+  text-align: center;
+  border-radius:44rpx;
+  border:1rpx solid #09afff;
+  font-size: 28rpx;
+  margin-left:20rpx;
+}
+
+.myqr{ 
+  position: fixed;
+  z-index: 999;
+  width: 100%;
+  text-align: center;
+  height: auto;
+  padding-top: 50rpx;
+  top:0;
+  left:0;
+  right:0;
+  bottom:0;
+}
+.myqr .cancel{
+  width: 60rpx;
+  height: 60rpx;
+  margin-top: 30rpx;
+  margin-left: 480rpx;
+}
+.myqr .img{  
+  width: 480rpx; 
+}
+.myqr .btn{  
+  width: 120rpx;
+  height: 120rpx;
+  line-height: 120rpx;
+  margin-top: 20rpx; 
+  padding: 30rpx;
+  background: #ffffff;
+  border-radius:60rpx;
+
+}
+
+
+
+
+
+/* 会员卡蒙层的样式 */
+.poster{
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+  background-color: #333333d1;
+  /* padding: 0rpx 80rpx; 
+  padding-top: 20%;*/
+  z-index: 99;
+  height: 100%;
+  text-align: center;
+  justify-content: center;
+  align-items: center;
+  display: flex;
+} 
+
+.title{
+	color: #fff;
+	margin: 20rpx 0;
+	font-size: 30rpx;
+}
+.ads{
+	margin: 10rpx 0rpx;
+	color: #fff;
+}
+.tool{
+	display: flex;
+    text-align: center;
+    justify-content: baseline;
+    width: 100%;   
+    margin-top: 20rpx;
+}
+.tool view{
+	flex: 1;
+}
+
+
+.img{
+	width: 99rpx; 
+} 
+
+.closeImg{
+  width: 57rpx;
+  height: 57rpx;
+}
+
+.share-btn{
+  background-color:transparent; 
+}
+
+.share-btn::after {
+  border: none;
+}
+
+.m-card{
+  width: 100%;
+  height: 230rpx;
+  margin: 20rpx 0;
+}
+.m-card image{
+  width: 100%;
+  height: 230rpx;
+}
+.special-orders{
+  margin-top:20rpx;
+}
+ .special-item{
+   margin:0 24rpx 20rpx;
+   width: 702rpx;
+   /* height: 506rpx; */
+   background: #FFFFFF;
+   border-radius: 18rpx;
+ }
+ .special-item .title-wrapper{
+	height:116rpx;
+	padding:0 20rpx;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+ }
+ .status-special{
+	color: #b4282d;
+	font-size: 22rpx;
+ }
+ .fail-reason{
+	color: #b4282d;
+	font-size: 22rpx;
+
+	margin:14rpx 0;
+	padding:0 20rpx;
+ }
+ .special-item .title{
+	 flex:1;
+	 height: 116rpx;
+   display: flex;
+   align-items: center;
+ }
+ .special-item .title image{
+   width:30rpx;
+   height:30rpx;
+   margin-right:12rpx;
+ }
+ .special-item .title  view{
+   font-size: 30rpx;
+ }
+ .special-content{
+   height:352rpx;
+   display:flex;
+   padding:0 20rpx;
+   justify-content: space-between;
+ }
+ .special-scroll{
+	 width:544rpx;
+	 display: flex;
+	 white-space: nowrap;
+	 align-items: center;
+ }
+ .scroll-item{
+   height: 352rpx;
+   display: inline-block;
+   flex-direction: column;
+   align-items: center;
+   width:180rpx;
+   margin-right:16rpx;
+ }
+
+ .special-item .goods-img{
+   width:180rpx;
+   height:180rpx;
+   margin-bottom:20rpx;
+ }
+ .special-item .googs-name{
+   width:180rpx;
+	 line-height:40rpx;
+	 height: 80rpx;
+   font-size: 30rpx;
+	 overflow: hidden;
+	 white-space: normal;
+	 /* white-space: nowrap; */
+ }
+ .goods-num{
+	width:120rpx;
+	padding-top:80rpx;
+	text-align: right;
+	font-size: 30rpx;
+ }
+ .special-operate{
+   padding:0 24rpx;
+   height:86rpx;
+   display:flex;
+   align-items: center;
+   justify-content: flex-end;
+   border-top: 2rpx solid #EFEFEF;
+ }
+ .special-btn{
+  color: #09AFFF;
+  font-size: 38rpx;
+  margin-left:24rpx;
+ }
+ 
+ .goods-scroll{
+	 /* width:720rpx; */
+	 width:580rpx;
+   height: 340rpx;
+   display:flex;
+   white-space: nowrap;
+   margin:20rpx 0;
+ }
+ 
+ .buy-num{
+	font-size: 24rpx;
+	color:#666;
+	height:40rpx;
+	margin-top:8rpx;
+ }

+ 79 - 0
pages/mall/payResult/payResult.js

@@ -0,0 +1,79 @@
+var util = require('../../../utils/jmsUtil.js');
+var mall = require('../../../api/mall.js');
+
+var app = getApp();
+Page({
+  data: {
+    imgUrl:'',
+    type:'',
+    status: false,
+    orderId: 0,
+    payAmount:''
+  },
+  onLoad: function(options) {
+    // 页面初始化 options为页面跳转所带来的参数
+    this.setData({
+      orderId: options.orderId,
+      payAmount:options.actualPrice,
+      // type:app.globalData.infoGoods.type,
+      // status: options.status === '1' ? true : false,
+      // imgUrl:app.globalData.infoGoods.type=='2'?'https://jzmall.lifejingzhi.com/file/jzmall/weixin/new/icon-jpjzs.png':app.globalData.infoGoods.picUrl
+    })
+  },
+  goIndex(){
+    wx.switchTab({
+      url: '/pages/index/index',
+    })
+  },
+  goOrder(){
+    wx.redirectTo({
+      url: '/pages/mall/order/order',
+    })
+  },
+  onReady: function() {
+
+  },
+  onShow: function() {
+    // 页面显示
+
+  },
+  onHide: function() {
+    // 页面隐藏
+
+  },
+  onUnload: function() {
+    // 页面关闭
+
+  },
+  payOrder() {
+    let that = this;
+    util.request(mall.OrderPrepay, {
+      orderId: that.data.orderId
+    }, 'POST').then(function(res) {
+      if (res.errno === 0) {
+        const payParam = res.data;
+        console.log("支付过程开始")
+        wx.requestPayment({
+          'timeStamp': payParam.timeStamp,
+          'nonceStr': payParam.nonceStr,
+          'package': payParam.packageValue,
+          'signType': payParam.signType,
+          'paySign': payParam.paySign,
+          'success': function(res) {
+            console.log("支付过程成功")
+            that.setData({
+              status: true
+            });
+          },
+          'fail': function(res) {
+            console.log("支付过程失败")
+            util.showErrorToast('支付失败');
+          },
+          'complete': function(res) {
+            console.log("支付过程结束")
+          }
+        });
+      }
+    });
+  }
+})

+ 4 - 0
pages/mall/payResult/payResult.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": ""
+ 
+}

+ 50 - 0
pages/mall/payResult/payResult.wxml

@@ -0,0 +1,50 @@
+<view class="container">
+  <!-- <view class="pay-result">
+    <view class="success" wx:if="{{status}}">
+      <view class="msg">付款成功</view>
+      <view class="btns">
+        <navigator class="btn" url="/pages/ucenter/order/order" open-type="redirect">查看订单</navigator>
+        <navigator class="btn" url="/pages/index/index" open-type="switchTab">继续逛</navigator>
+      </view>
+    </view>
+    <view class="error" wx:if="{{!status}}">
+      <view class="msg">付款失败</view>
+      <view class="tips">
+        <view class="p">请在
+          <text class="time">半小时</text> 内完成付款</view>
+        <view class="p">否则订单将会被系统取消</view>
+      </view>
+      <view class="btns">
+        <navigator class="btn" url="/pages/ucenter/order/order" open-type="redirect">查看订单</navigator>
+        <view class="btn" bindtap='payOrder'>重新付款</view>
+      </view>
+    </view>
+  </view> -->
+
+
+     <view class="pay-result-top">
+        <image src="/static/images/new/icon-success.png" alt="" class="pay-success"></image>
+
+        <!-- <view class="result-text" wx:if="{{type=='2'}}">预约成功</view> -->
+        <view class="result-text" >支付成功</view>
+        <!-- <view class="result-tip" wx:if="{{type=='2'}}">专属管家将尽快与您联系</view> -->
+        <view class="result-tip" >支付:¥{{payAmount}}</view>
+     </view>
+     <!-- 商品图片 -->
+     <view class="pay-img-wrapper">
+       <image src="{{imgUrl}}"></image>
+     </view>
+     <!-- <view class="service-tips sub-color" wx:if="{{type!='2'&&type!=0}}">
+      工作时间(7:30-21:30)内的订单,鲸致客服将在6小时内与您联系。工作时间外,我们将在第二天工作时间与您联系,建议提前7天进行预约。
+     </view>
+     <view class="service-tips sub-color" wx:if="{{type==0}}">已完成预约,如有特殊情况需调整服务日期,我们客服团队将第一时间与您联系。</view> -->
+
+     <view class="common-btn-wrapper">
+		<!-- <van-button type="info" block round bindtap="goIndex">返回首页</van-button> -->
+    <!-- wx:if="{{type!='2'}}" -->
+    <van-button type="info" block round   bindtap="goOrder"   wx:if="{{type!='2'}}">查看订单</van-button>
+  </view>
+
+
+
+</view>

+ 102 - 0
pages/mall/payResult/payResult.wxss

@@ -0,0 +1,102 @@
+page {
+  min-height: 100%;
+  width: 100%;
+}
+
+.container {
+  height: 100%;
+}
+
+.pay-result-top {
+	background:url('https://jzmall.lifejingzhi.com/file/jzmall/weixin/new/pay-result.png') no-repeat center;
+	background-size: 100% 100%;
+	width:750rpx;
+  height: 516rpx;
+  padding:32rpx 0 0;
+  display: flex;
+  flex-direction: column;
+  justify-content: top;
+  align-items: center;
+  color:#fff;
+}
+.pay-img-wrapper{
+  display: none;
+  width:316rpx;
+  height: 316rpx;
+  border-radius: 316rpx;
+  padding:10rpx;
+  margin:0 auto;
+  margin-top:-158rpx;
+  margin-bottom:50rpx;
+  background:#f5f5f5 ;
+
+}
+.pay-img-wrapper image{
+  width:296rpx;
+  height: 296rpx;
+  border-radius: 296rpx;
+}
+.pay-result .msg {
+  text-align: center;
+  margin: 100rpx auto;
+  color: #2bab25;
+  font-size: 36rpx;
+}
+
+.pay-result .btns {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.pay-result .btn {
+  text-align: center;
+  height: 80rpx;
+  margin: 0 20rpx;
+  width: 200rpx;
+  line-height: 78rpx;
+  border: 1px solid #868686;
+  color: #000;
+  border-radius: 5rpx;
+}
+
+.pay-result .error .msg {
+  color: #b4282d;
+  margin-bottom: 60rpx;
+}
+
+.pay-result .error .tips {
+  color: #7f7f7f;
+  margin-bottom: 70rpx;
+}
+
+.pay-result .error .tips .p {
+  font-size: 24rpx;
+  line-height: 42rpx;
+  text-align: center;
+}
+
+.pay-result .error .tips .p {
+  line-height: 42rpx;
+  text-align: center;
+}
+.pay-result-top image{
+  width:110rpx;
+  height: 110rpx;
+}
+.result-text{
+  margin:50rpx 0 20rpx;
+  font-size: 34rpx;
+  font-weight: bold;
+}
+.service-tips{
+  font-size: 22rpx;
+  padding:0 30rpx 0;
+}
+.common-btn-wrapper{
+  margin-top:300rpx;
+  padding:0 40rpx;
+}
+view,text{
+  color:#fff;
+}

+ 203 - 0
pages/mall/search/search.js

@@ -0,0 +1,203 @@
+var util = require('../../../utils/jmsUtil.js');
+var mall = require('../../../api/mall.js');
+
+var app = getApp()
+Page({
+  data: {
+    keywrod: '',
+    searchStatus: false,
+    goodsList: [],
+    helpKeyword: [],
+    historyKeyword: [],
+    categoryFilter: false,
+    currentSort: 'name',
+    currentSortType: 'default',
+    currentSortOrder: 'desc',
+    filterCategory: [],
+    defaultKeyword: {},
+    hotKeyword: [],
+    page: 1,
+    limit: 20,
+    categoryId: 0,
+    addressInfo:{}
+  },
+  //事件处理函数
+  closeSearch: function() {
+    wx.navigateBack()
+  },
+  clearKeyword: function() {
+    this.setData({
+      keyword: '',
+      searchStatus: false
+    });
+  },
+  onLoad: function() {
+    // var addressInfo=wx.getStorageSync('addressInfo');
+    // if(addressInfo){
+    //   this.setData({
+    //     addressInfo:addressInfo
+    //   })
+    // }
+    this.getSearchKeyword();
+  },
+
+  getSearchKeyword() {
+    let that = this;
+    util.request(mall.SearchIndex).then(function(res) {
+      if (res.errno === 0) {
+        that.setData({
+          historyKeyword: res.data.historyKeywordList,
+          defaultKeyword: res.data.defaultKeyword,
+          hotKeyword: res.data.hotKeywordList
+        });
+      }
+    });
+  },
+
+  inputChange: function(e) {
+    this.setData({
+      keyword: e.detail.value,
+      searchStatus: false
+    });
+
+    if (e.detail.value) {
+      this.getHelpKeyword();
+    }
+  },
+  getHelpKeyword: function() {
+    let that = this;
+    util.request(mall.SearchHelper, {
+      keyword: that.data.keyword
+    }).then(function(res) {
+      if (res.errno === 0) {
+        that.setData({
+          helpKeyword: res.data
+        });
+      }
+    });
+  },
+  inputFocus: function() {
+    this.setData({
+      searchStatus: false,
+      goodsList: []
+    });
+
+    if (this.data.keyword) {
+      this.getHelpKeyword();
+    }
+  },
+  clearHistory: function() {
+    this.setData({
+      historyKeyword: []
+    })
+
+    util.request(mall.SearchClearHistory, {}, 'POST')
+      .then(function(res) {
+        console.log('清除成功');
+      });
+  },
+  getGoodsList: function() {
+    let that = this;
+    util.request(mall.GoodsList, {
+      commodityName: that.data.keyword,
+      page: that.data.page,
+      limit: that.data.limit,
+      sort: that.data.currentSort,
+      order: that.data.currentSortOrder,
+      // categoryId: that.data.categoryId,
+      // city:that.data.addressInfo.city,
+      // shopId:that.data.addressInfo.shopId
+    }).then(function(res) {
+      if (res.errno === 0) {
+        that.setData({
+          searchStatus: true,
+          categoryFilter: false,
+          goodsList: res.data.list,
+          filterCategory: res.data.filterCategoryList
+        });
+      }
+
+      //重新获取关键词
+      that.getSearchKeyword();
+    });
+  },
+  onKeywordTap: function(event) {
+
+    this.getSearchResult(event.target.dataset.keyword);
+
+  },
+  getSearchResult(keyword) {
+    if (keyword === '') {
+      keyword = this.data.defaultKeyword.keyword;
+    }
+    this.setData({
+      keyword: keyword,
+      page: 1,
+      categoryId: 0,
+      goodsList: []
+    });
+
+    this.getGoodsList();
+  },
+  openSortFilter: function(event) {
+    let currentId = event.currentTarget.id;
+    switch (currentId) {
+      case 'categoryFilter':
+        this.setData({
+          categoryFilter: !this.data.categoryFilter,
+          currentSortType: 'category',
+          currentSort: 'add_time',
+          currentSortOrder: 'desc'
+        });
+        break;
+      case 'priceSort':
+        let tmpSortOrder = 'asc';
+        if (this.data.currentSortOrder == 'asc') {
+          tmpSortOrder = 'desc';
+        }
+        this.setData({
+          currentSortType: 'price',
+          currentSort: 'retail_price',
+          currentSortOrder: tmpSortOrder,
+          categoryFilter: false
+        });
+
+        this.getGoodsList();
+        break;
+      default:
+        //综合排序
+        this.setData({
+          currentSortType: 'default',
+          currentSort: 'name',
+          currentSortOrder: 'desc',
+          categoryFilter: false,
+          categoryId: 0,
+        });
+        this.getGoodsList();
+    }
+  },
+  selectCategory: function(event) {
+    let currentIndex = event.target.dataset.categoryIndex;
+    let filterCategory = this.data.filterCategory;
+    let currentCategory = null;
+    for (let key in filterCategory) {
+      if (key == currentIndex) {
+        filterCategory[key].selected = true;
+        currentCategory = filterCategory[key];
+      } else {
+        filterCategory[key].selected = false;
+      }
+    }
+    this.setData({
+      filterCategory: filterCategory,
+      categoryFilter: false,
+      categoryId: currentCategory.id,
+      page: 1,
+      goodsList: []
+    });
+    this.getGoodsList();
+  },
+  onKeywordConfirm(event) {
+    this.getSearchResult(event.detail.value);
+  }
+})

+ 3 - 0
pages/mall/search/search.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "搜索"
+}

+ 75 - 0
pages/mall/search/search.wxml

@@ -0,0 +1,75 @@
+<scroll-view class="container" style="height: 100%;">
+  <view class="search-header">
+    <view class="input-box">
+      <van-icon name="search"/>
+      <input name="input" class="keywrod" focus="true" value="{{keyword}}" confirm-type="search" bindinput="inputChange" bindfocus="inputFocus" bindconfirm="onKeywordConfirm" placeholder="{{defaultKeyword.keyword}}" />
+      <van-icon class="del" wx:if="{{keyword}}" bindtap="clearKeyword" name="cross" />
+    </view>
+    <view class="right" bindtap="closeSearch">取消</view>
+  </view>
+  <view class="no-search" wx:if="{{ !searchStatus}}">
+    <view class="search-keywords search-history" wx:if="{{!keyword  && historyKeyword.length}}">
+      <view class="h">
+        <text class="title">历史记录</text>
+        <van-icon bindtap="clearHistory" name="delete" class="icon"/>
+      </view>
+      <view class="b">
+        <view class="item" bindtap="onKeywordTap" data-keyword="{{item.keyword}}" wx:for="{{historyKeyword}}" wx:key="keyword" hover-class="navigator-hover">{{item.keyword}}</view>
+      </view>
+    </view>
+    <view class="search-keywords search-hot" wx:if="{{!keyword && hotKeyword.length}}">
+      <view class="h">
+        <text class="title">热门搜索</text>
+      </view>
+      <view class="b">
+        <view class="item {{item.is_hot === 1 ? 'active' : ''}}" hover-class="navigator-hover" bindtap="onKeywordTap" data-keyword="{{item.keyword}}" wx:for="{{hotKeyword}}" wx:key="id">{{item.keyword}}</view>
+      </view>
+    </view>
+    <view class="shelper-list" wx:if="{{keyword}}">
+      <view class="item" hover-class="navigator-hover" wx:for="{{helpKeyword}}" wx:key="id" bindtap="onKeywordTap" data-keyword="{{item}}">{{item}}</view>
+    </view>
+  </view>
+
+  <view class="search-result" wx:if="{{ searchStatus && goodsList.length}}">
+    <!-- <view class="sort">
+      <view class="sort-box">
+        <view class="item {{currentSortType == 'default' ? 'active' : ''}}" bindtap="openSortFilter" id="defaultSort">
+          <text class="txt">综合</text>
+        </view>
+        <view class="item {{currentSortType == 'price' ? 'active' : ''}}" bindtap="openSortFilter" id="priceSort">
+          <text class="txt">价格</text>
+          <van-icon name="arrow-up" wx:if="{{ currentSortType == 'price' && currentSortOrder == 'asc' }}" />
+          <van-icon name="arrow-down" wx:elif="{{ currentSortType == 'price' && currentSortOrder == 'desc'}}" />
+        </view>
+        <view class="item {{currentSortType == 'category' ? 'active' : ''}}" bindtap="openSortFilter" id="categoryFilter">
+          <text class="txt">分类</text>
+        </view>
+      </view>
+      <view class="sort-box-category" wx-if="{{categoryFilter}}">
+        <view class="item {{item.checked ? 'active' : ''}}" wx:for="{{filterCategory}}" wx:key="id" data-category-index="{{index}}" bindtap="selectCategory">{{item.name}}</view>
+      </view>
+    </view> -->
+    <view class="cate-item">
+      <view class="b">
+        <navigator class="item {{(iindex + 1) % 2 == 0 ? 'item-b' : ''}}" url="/pages/mall/goods/goods?id={{iitem.id}}" wx:for="{{goodsList}}" wx:key="id" wx:for-item="iitem" wx:for-index="iindex">
+          <image class="img" src="{{iitem.picAddress.length>=1?iitem.picAddress[0]:''}}" background-size="cover"></image>
+          <text class="name">{{iitem.commodityName}}</text>
+<!-- 
+          <view class="price">
+            <view class="retailPrice">¥{{iitem.retailPrice}}</view>
+            <view class="memberPrice">¥{{iitem.memberPrice}}</view>
+            <view class="member-price-tag">会员价</view>
+            </view> -->
+
+          <!-- <view  class="price"><text>¥{{iitem.retailPrice}}</text>
+          <text class="counterPrice sub-color">¥{{iitem.counterPrice}}</text>
+          </view>  -->
+        </navigator>
+      </view>
+    </view>
+  </view>
+
+  <view class="search-result-empty" wx:if="{{!goodsList.length && searchStatus}}">
+    <text class="text">未搜到相关商品</text>
+  </view>
+</scroll-view>

+ 353 - 0
pages/mall/search/search.wxss

@@ -0,0 +1,353 @@
+page {
+  min-height: 100%;
+  background-color: #f4f4f4;
+}
+
+.container {
+  min-height: 100%;
+  background-color: #f4f4f4;
+}
+
+.search-header {
+  position: fixed;
+  top: 0;
+  width: 750rpx;
+  height: 91rpx;
+  display: flex;
+  background: #fff;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
+  /* padding: 0 31.25rpx; */
+  font-size: 29rpx;
+  color: #333;
+}
+
+.search-header .van-icon-search {
+  line-height: 59rpx;
+}
+
+.search-header .input-box {
+  position: relative;
+  margin-top: 16rpx;
+  float: left;
+  width: 0;
+  flex: 1;
+  height: 59rpx;
+  line-height: 59rpx;
+  padding: 0 20rpx;
+  background: #f4f4f4;
+  margin-left:32rpx;
+}
+
+.search-header .icon {
+  position: absolute;
+  top: 14rpx;
+  left: 20rpx;
+  width: 31rpx;
+  height: 31rpx;
+}
+
+.search-header .del {
+  position: absolute;
+  top: 3rpx;
+  right: 10rpx;
+  width: 53rpx;
+  height: 53rpx;
+  z-index: 10;
+}
+
+.search-header .keywrod {
+  position: absolute;
+  top: 0;
+  left: 40rpx;
+  width: 506rpx;
+  height: 59rpx;
+  padding-left: 30rpx;
+}
+
+.search-header .right {
+  margin-top: 24rpx;
+  margin-left: 31rpx;
+  margin-right: 6rpx;
+  width: 58rpx;
+  height: 43rpx;
+  line-height: 43rpx;
+  float: right;
+}
+
+.no-search {
+  height: auto;
+  overflow: hidden;
+  margin-top: 91rpx;
+}
+
+.search-keywords {
+  background: #fff;
+  width: 750rpx;
+  height: auto;
+  overflow: hidden;
+  margin-bottom: 20rpx;
+}
+
+.search-keywords .h {
+  padding: 0 31.25rpx;
+  height: 93rpx;
+  line-height: 93rpx;
+  width: 100%;
+  color: #999;
+  font-size: 29rpx;
+}
+
+.search-keywords .title {
+  display: block;
+  width: 120rpx;
+  float: left;
+}
+
+.search-keywords .icon {
+  margin-top: 19rpx;
+  float: right;
+  display: block;
+  margin-left: 511rpx;
+  height: 55rpx;
+  width: 55rpx;
+}
+
+.search-keywords .b {
+  width: 750rpx;
+  height: auto;
+  overflow: hidden;
+  padding-left: 31.25rpx;
+}
+
+.search-keywords .item {
+  display: inline-block;
+  width: auto;
+  height: 48rpx;
+  line-height: 48rpx;
+  padding: 0 15rpx;
+  border: 1px solid #999;
+  margin: 0 31.25rpx 31.25rpx 0;
+  font-size: 24rpx;
+  color: #333;
+}
+
+.search-keywords .item.active {
+  color: #b4282d;
+  border: 1px solid #b4282d;
+}
+
+.shelper-list {
+  width: 750rpx;
+  height: auto;
+  overflow: hidden;
+  background: #fff;
+  padding: 0 31.25rpx;
+}
+
+.shelper-list .item {
+  height: 93rpx;
+  width: 687.5rpx;
+  line-height: 93rpx;
+  font-size: 24rpx;
+  color: #333;
+  border-bottom: 1px solid #f4f4f4;
+}
+
+.sort {
+  position: fixed;
+  top: 91rpx;
+  background: #fff;
+  width: 100%;
+  height: 78rpx;
+}
+
+.sort-box {
+  background: #fff;
+  width: 100%;
+  height: 78rpx;
+  overflow: hidden;
+  padding: 0 30rpx;
+  display: flex;
+  border-bottom: 1px solid #d9d9d9;
+}
+
+.sort-box .item {
+  height: 78rpx;
+  line-height: 78rpx;
+  text-align: center;
+  flex: 1;
+  color: #333;
+  font-size: 30rpx;
+}
+
+.sort-box .item .txt {
+  color: #333;
+}
+
+.sort-box .item.active .txt {
+  color: #b4282d;
+}
+
+.sort-box .item .van-icon {
+  margin-left: 6rpx;
+}
+
+.sort-box-category {
+  background: #fff;
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+  padding: 40rpx 40rpx 0 0;
+  border-bottom: 1px solid #d9d9d9;
+}
+
+.sort-box-category .item {
+  height: 54rpx;
+  line-height: 54rpx;
+  text-align: center;
+  float: left;
+  padding: 0 16rpx;
+  margin: 0 0 40rpx 40rpx;
+  border: 1px solid #666;
+  color: #333;
+  font-size: 24rpx;
+}
+
+.sort-box-category .item.active {
+  color: #b4282d;
+  border: 1px solid #b4282d;
+}
+
+.cate-item {
+  margin-top: 130rpx;
+  height: auto;
+  overflow: hidden;
+}
+
+.cate-item .h {
+  height: 145rpx;
+  width: 750rpx;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+
+.cate-item .h .name {
+  display: block;
+  height: 35rpx;
+  margin-bottom: 18rpx;
+  font-size: 30rpx;
+  color: #333;
+}
+
+.cate-item .h .desc {
+  display: block;
+  height: 24rpx;
+  font-size: 24rpx;
+  color: #999;
+}
+
+.cate-item .b {
+  width: 750rpx;
+  padding: 0 6.25rpx;
+  height: auto;
+  overflow: hidden;
+}
+
+.cate-item .list-filter {
+  height: 80rpx;
+  width: 100%;
+  background: #fff;
+  margin-bottom: 6.25rpx;
+}
+
+.cate-item .b .item {
+  float: left;
+  background: #fff;
+  width: 365rpx;
+  margin-bottom: 6.25rpx;
+  padding-bottom: 33.333rpx;
+  height: auto;
+  overflow: hidden;
+  text-align: center;
+}
+
+.cate-item .b .item-b {
+  margin-left: 6.25rpx;
+}
+
+.cate-item .item .img {
+  width: 302rpx;
+  height: 302rpx;
+}
+
+.cate-item .item .name {
+  display: block;
+  width: 365.625rpx;
+  height: 35rpx;
+  margin: 11.5rpx 0 22rpx 0;
+  text-align: center;
+  overflow: hidden;
+  padding: 0 20rpx;
+  font-size: 30rpx;
+  color: #333;
+}
+
+.cate-item .item .price {
+  height: 40rpx;
+  line-height: 40rpx;
+  text-align: center;
+  font-size: 30rpx;
+  color: #b4282d;
+}
+
+.search-result-empty {
+  width: 100%;
+  height: 100%;
+  padding-top: 600rpx;
+}
+
+.search-result-empty .text {
+  display: block;
+  width: 100%;
+  height: 40rpx;
+  font-size: 28rpx;
+  text-align: center;
+  color: #999;
+}
+.cate-item .item .price {
+  height: 40rpx;
+  justify-content: center;
+  display: flex;
+  margin-top: 20rpx;
+  align-items:flex-end;
+}
+.counterPrice{
+  text-decoration: line-through;
+  font-size: 24rpx;
+  margin:0 0 0 20rpx;
+}
+
+.retailPrice{
+  font-size: 30rpx;
+  height: 30rpx;
+  line-height: 30rpx;
+}
+.memberPrice{
+  font-size: 22rpx;
+ color: #DD483E;
+ margin:0 10rpx 0 20rpx;
+ }
+.member-price-tag{
+  width:88rpx;
+  height: 26rpx;
+  line-height: 26rpx;
+  background: url('https://jzmall.lifejingzhi.com/file/jzmall/weixin/member/member-price-bg.png') no-repeat center center;
+  background-size: 100% 100%;
+  color: #5E3A11;
+  font-size: 16rpx;
+  padding:0 8rpx 0 0;
+  text-align: right;
+  margin:0 0 6rpx 0;
+}

+ 131 - 0
pages/mall/toolkitConfirm/toolkitConfirm.js

@@ -0,0 +1,131 @@
+var util = require('../../../utils/jmsUtil.js');
+var mall = require('../../../api/mall.js'); 
+var app = getApp();
+Page({
+  data: {
+		index:'',
+		columns:[],
+		skus:[],
+		showPicker:false,
+	 id:'',
+	 toolkitType:'',//1上线礼包 2晋升礼包
+	 detailList:[
+		
+	 ]
+  },
+  onLoad: function(options) {
+		// 页面初始化 options为页面跳转所带来的参数
+		if(options){
+			this.setData({
+				id:options.id
+			})
+		}
+   this.getOrderInfo();
+  },
+  getOrderInfo() {
+    
+    util.request(mall.ToolkitToComplete, {
+      toolId: 'autoTool_'+this.data.id,
+    }).then(res=>{
+      if (res.errno === 0) {
+				console.log(res.data);
+				let list=res.data.detailList;
+				 list.forEach(item=>{
+					//  if(item.needConfirm==0){
+
+					//  }else if(item.needConfirm==1){
+						 
+					//  }
+					 let pickerProps=item.canChoiceProps.split('|');
+					 let pickerPrices=item.canChoicePrice.split('|');
+					 let pickerSkus=item.canChoiceSkus.split(',');
+					 item.pickerProps=pickerProps;
+					 item.pickerSkus=pickerSkus;
+					 item.pickerPrices=pickerPrices;
+					 item.finalChoice='';
+					 item.finalChoiceName='待确认';
+					 item.pickerPrice='';
+					//  item.finalChoice=pickerSkus[0];
+					//  item.finalChoiceName=pickerProps[0];
+				 });
+        this.setData({
+					detailList:list,
+					toolkitType:res.data.toolkitType,
+        });
+      }
+    });
+	},
+	showSpec(e){
+		let index=e.currentTarget.dataset.index;
+		let columns=e.currentTarget.dataset.columns;
+		let skus=e.currentTarget.dataset.skus;
+   this.setData({
+		 showPicker:true,
+		 index:index,
+		 columns:columns,
+		 skus:skus
+	 });
+	},
+	pickerCancel(){
+		this.setData({
+			showPicker:false
+		});
+	},
+  pickerConfirm(e){
+		let value=e.detail.value;
+		let index=e.detail.index;
+		let item1='detailList['+this.data.index+']'+'.finalChoiceName';
+		let item2='detailList['+this.data.index+']'+'.finalChoice';
+		let item3='detailList['+this.data.index+']'+'.pickerPrice';
+		this.setData({
+			[item1]:value,
+		});
+		this.setData({
+			[item2]:this.data.detailList[this.data.index].pickerSkus[index],
+			[item3]:this.data.detailList[this.data.index].pickerPrices[index],
+			showPicker:false
+		});
+		
+	},
+	confirmSpec(){
+     let isUnSelected=this.data.detailList.some(item=>{
+			 return item.finalChoice=='';
+		 });
+		 if(isUnSelected){
+			 wx.showToast({
+				 title: '请选择商品规格',
+				 icon:'none',
+			 });
+		 }else{ 
+			util.request(mall.ToolkitReceive, {
+				agree:true,
+				detail:this.data.detailList,
+				allDefault:false,
+				toolkitId: this.data.id,
+			},'POST').then(res=>{
+				if (res.errno === 0) {
+					app.globalData.specRefresh=true;
+					wx.navigateBack({
+						delta: 1,
+					});
+				}else{
+					util.showErrorToast(res.errmsg);
+				}
+			});
+
+		 }
+	},
+ 
+  onReady: function() {
+    // 页面渲染完成
+  },
+  onShow: function() {
+    // 页面显示
+  },
+  onHide: function() {
+    // 页面隐藏
+  },
+  onUnload: function() {
+    // 页面关闭
+  }
+})

+ 3 - 0
pages/mall/toolkitConfirm/toolkitConfirm.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "订单详情"
+}

+ 39 - 0
pages/mall/toolkitConfirm/toolkitConfirm.wxml

@@ -0,0 +1,39 @@
+<view class="container">
+ <view class="top">
+   <view class="tool-name" wx:if="{{toolkitType==1}}">上线礼包</view>
+	 <view class="tool-name" wx:if="{{toolkitType==2}}">晋升礼包</view>
+	 <view>待领取</view>
+ </view>
+  <view class="goods-block">
+	  <view class="goods-item" wx:for="{{detailList}}" wx:key="index" bindtap="showSpec" data-columns="{{item.pickerProps}}" data-skus="{{item.pickerSkus}}" data-index="{{index}}">
+			<image src="{{item.commodityPic}}" mode="aspectFit" class="goods-img" >
+      </image>
+			<view class="goods-info" >
+			  <view class="goods-name">
+				  <view class="left">商品名称:{{item.name}}</view>
+					<view class="right">x{{item.num}}</view>
+				</view>
+				<view class="goods-spec" >
+				 <view class="spec">商品规格:{{item.finalChoiceName}}</view>
+				 <!-- <van-icon name="arrow" color="#2a2a2a" /> -->
+				 <image mode="aspectFit"  src="https://jzmall.lifejingzhi.com/file/wx-servant/icon-right.png"  class="arrow"></image>
+				</view>
+				<view class="goods-price">¥ {{item.pickerPrice}}
+				</view>
+			</view>
+
+		</view>
+	</view>
+	<view class="tips">商品规格选错了,点击修改</view>
+	<view class="confirm-btn" bindtap="confirmSpec">
+	确认保存
+	</view>
+</view>
+ <!-- 弹框 -->
+ <van-popup show="{{showPicker}}" position="bottom">
+
+<van-picker show-toolbar columns="{{columns}}" 
+title="请选择规格"
+bind:cancel="pickerCancel" bind:confirm="pickerConfirm" 
+/>
+</van-popup>

+ 113 - 0
pages/mall/toolkitConfirm/toolkitConfirm.wxss

@@ -0,0 +1,113 @@
+page {
+  height: 100%;
+  width: 100%;
+	background: #f4f4f4;
+	
+}
+.container{
+  padding-bottom:200rpx;
+}
+view,text{
+  color:#333;
+	font-size: 30rpx;
+	box-sizing: border-box;
+}
+.top{
+	width: 750rpx;
+height: 200rpx;
+background: linear-gradient(334deg, #8BF2F7 0%, #09AFFF 100%);
+display: flex;
+align-items: center;
+justify-content: space-between;
+padding:0 48rpx;
+margin-bottom:26rpx;
+}
+.top view{
+	font-size: 50rpx;
+color:#fff;
+font-weight: bold;
+}
+.goods-block{
+	width: 702rpx;
+background: #FFFFFF;
+border-radius: 18rpx;
+margin:0 24rpx;
+padding:20rpx 24rpx 12rpx;
+}
+.goods-item{
+	border-bottom: 1rpx solid #DBDBDB;
+	height:220rpx;
+	padding:20rpx 10rpx 20rpx 24rpx;
+  display: flex;
+}
+.goods-item:last-child{
+	border-bottom:none;
+}
+.goods-img{
+	width: 180rpx;
+height: 180rpx;
+border-radius: 4rpx;
+border: 1rpx solid #979797;
+margin-right:24rpx;
+}
+.goods-info{
+	flex:1;
+}
+.goods-name{
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	height: 54rpx;
+}
+.goods-name .left{
+ line-height: 54rpx;
+ width:320rpx;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.goods-spec{
+	height: 54rpx;
+	line-height: 54rpx;
+	margin-bottom:14rpx;
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
+.goods-spec .spec{
+	line-height: 54rpx;
+	width:320rpx;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+ }
+.goods-spec .arrow{
+ width:44rpx;
+ height:44rpx;
+ margin-right:-8rpx;
+}
+.goods-price{
+	height: 54rpx;
+	text-align: right;
+}
+.confirm-btn{
+	width: 674rpx;
+height: 110rpx;
+line-height: 110rpx;
+background: #3D7FFF linear-gradient(270deg, rgba(0,202,255,0.5) 0%, rgba(9,175,255,0.5) 100%);
+border-radius: 110rpx;
+left:38rpx;
+right:38rpx;
+bottom:40rpx;
+position: fixed;
+font-size: 48rpx;
+text-align: center;
+color:#fff;
+
+}
+.tips{
+	font-size: 24rpx;
+	color:#999;
+	text-align: center;
+	margin-top:20rpx;
+}

+ 12 - 0
pages/temp/serviceOrder/serviceOrder.js

@@ -16,6 +16,7 @@ Page({
 		serviceOrder:'',
 		ticket:'',
 		aftersale:'',
+		wmsOrderCount:'',
    
 
   },
@@ -46,6 +47,7 @@ Page({
 						serviceOrder:res.data.serviceOrder,
 						ticket:res.data.ticket,
 						aftersale:res.data.aftersale,
+						wmsOrderCount:res.data.wmsOrderCount
 					})
 			} else {
 				wx.showToast({
@@ -112,6 +114,16 @@ Page({
 			url: '/pages/refund/refundList/refundList'
 		});
 	},
+	goMall(){
+		wx.navigateTo({
+			url: '/pages/mall/catalog/catalog'
+		});
+	},
+	goOrder(){
+		wx.navigateTo({
+			url: '/pages/mall/order/order'
+		});
+	},
 
   /**
    * 生命周期函数--监听页面初次渲染完成

+ 17 - 0
pages/temp/serviceOrder/serviceOrder.wxml

@@ -56,6 +56,23 @@
 		 <view class="board-num">{{aftersale}} 单</view>
 
  </view>
+ <view class="module-item" bindtap="goMall">
+     <view class="title">
+			物料采购
+		 </view>
+		 <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-mall.png" mode="aspectFill"></image>
+		 <view class="board-num"></view>
+
+ </view>
+ <view class="module-item" bindtap="goOrder">
+     <view class="title">
+			物料订单
+		 </view>
+		 <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-order-jms.png" mode="aspectFill"></image>
+		 <view class="board-num">{{wmsOrderCount}} 单</view>
+
+ </view>
+
  </view>
 
 

+ 6 - 3
pages/temp/serviceOrder/serviceOrder.wxss

@@ -133,9 +133,9 @@ margin-right:10rpx;
 	font-weight: normal;
 }
 .dashboard{
-	padding:0 24rpx;
+	padding:0 0 0 24rpx;
 	display: flex;
-	justify-content: space-between;
+	flex-wrap: wrap;
 }
 .module-item{
 	display: flex;
@@ -146,7 +146,8 @@ margin-right:10rpx;
 height: 324rpx;
 background: #FFFFFF;
 border-radius: 18rpx;
-padding:24rpx;
+padding:30rpx 24rpx;
+margin:0 20rpx 20rpx 0;
 }
 .module-item .title{
 	height: 46rpx;
@@ -162,4 +163,6 @@ padding:24rpx;
 .module-item .board-num{
 	color: #666666;
 	font-size: 28rpx;
+	height:32rpx;
+	line-height: 32rpx;
 }