19 Commits c394a943b6 ... d47c9d03ac

Author SHA1 Message Date
  una d47c9d03ac no message 3 months ago
  una 2f73a68c8a no message 3 months ago
  una 658ed7fea8 no message 3 months ago
  una b171c0b22f no message 3 months ago
  una 97f98e7666 no message 3 months ago
  una 80c6ce2b2e no message 7 months ago
  una 360381689f no message 7 months ago
  lurunzhen fda2f66146 屏蔽取消工单按钮 7 months ago
  una 6ce1281de6 no message 10 months ago
  una c386e9df83 no message 10 months ago
  una 89dcb4bb2d no message 10 months ago
  una 484ea6db6b no message 10 months ago
  una 31fb8e7778 no message 10 months ago
  una 422d8d90d5 no message 10 months ago
  una 13ab227171 no message 10 months ago
  una 13b5e0750a no message 10 months ago
  una c41b856bdc no message 10 months ago
  una 50ff8e9840 no message 10 months ago
  una 0ed5aee6c7 no message 10 months ago
88 changed files with 15740 additions and 1621 deletions
  1. 14 0
      api/jms.js
  2. 64 0
      api/mall.js
  3. 3 0
      app.js
  4. 23 5
      app.json
  5. 3 2
      pages/index/index.js
  6. 3 5
      pages/index/index.wxml
  7. 464 0
      pages/mall/cart/cart.js
  8. 4 0
      pages/mall/cart/cart.json
  9. 91 0
      pages/mall/cart/cart.wxml
  10. 509 0
      pages/mall/cart/cart.wxss
  11. 188 0
      pages/mall/catalog/catalog.js
  12. 4 0
      pages/mall/catalog/catalog.json
  13. 66 0
      pages/mall/catalog/catalog.wxml
  14. 352 0
      pages/mall/catalog/catalog.wxss
  15. 1273 0
      pages/mall/checkout/checkout.js
  16. 4 0
      pages/mall/checkout/checkout.json
  17. 373 0
      pages/mall/checkout/checkout.wxml
  18. 976 0
      pages/mall/checkout/checkout.wxss
  19. 267 0
      pages/mall/dxkOrder/dxkOrder.js
  20. 3 0
      pages/mall/dxkOrder/dxkOrder.json
  21. 67 0
      pages/mall/dxkOrder/dxkOrder.wxml
  22. 129 0
      pages/mall/dxkOrder/dxkOrder.wxss
  23. 66 0
      pages/mall/dxkOrderXy/dxkOrderXy.js
  24. 4 0
      pages/mall/dxkOrderXy/dxkOrderXy.json
  25. 162 0
      pages/mall/dxkOrderXy/dxkOrderXy.wxml
  26. 45 0
      pages/mall/dxkOrderXy/dxkOrderXy.wxss
  27. 1115 0
      pages/mall/goods/goods.js
  28. 3 0
      pages/mall/goods/goods.json
  29. 328 0
      pages/mall/goods/goods.wxml
  30. 1375 0
      pages/mall/goods/goods.wxss
  31. 452 0
      pages/mall/order/order.js
  32. 3 0
      pages/mall/order/order.json
  33. 166 0
      pages/mall/order/order.wxml
  34. 420 0
      pages/mall/order/order.wxss
  35. 79 0
      pages/mall/payResult/payResult.js
  36. 4 0
      pages/mall/payResult/payResult.json
  37. 50 0
      pages/mall/payResult/payResult.wxml
  38. 102 0
      pages/mall/payResult/payResult.wxss
  39. 203 0
      pages/mall/search/search.js
  40. 3 0
      pages/mall/search/search.json
  41. 75 0
      pages/mall/search/search.wxml
  42. 353 0
      pages/mall/search/search.wxss
  43. 131 0
      pages/mall/toolkitConfirm/toolkitConfirm.js
  44. 3 0
      pages/mall/toolkitConfirm/toolkitConfirm.json
  45. 39 0
      pages/mall/toolkitConfirm/toolkitConfirm.wxml
  46. 113 0
      pages/mall/toolkitConfirm/toolkitConfirm.wxss
  47. 171 0
      pages/refund/refundAudit/refundAudit.js
  48. 4 0
      pages/refund/refundAudit/refundAudit.json
  49. 36 0
      pages/refund/refundAudit/refundAudit.wxml
  50. 166 0
      pages/refund/refundAudit/refundAudit.wxss
  51. 259 0
      pages/refund/refundDetail/refundDetail.js
  52. 8 0
      pages/refund/refundDetail/refundDetail.json
  53. 254 0
      pages/refund/refundDetail/refundDetail.wxml
  54. 121 0
      pages/refund/refundDetail/refundDetail.wxss
  55. 201 0
      pages/refund/refundList/refundList.js
  56. 8 0
      pages/refund/refundList/refundList.json
  57. 52 0
      pages/refund/refundList/refundList.wxml
  58. 90 0
      pages/refund/refundList/refundList.wxss
  59. 94 0
      pages/refund/refundRemark/refundRemark.js
  60. 4 0
      pages/refund/refundRemark/refundRemark.json
  61. 26 0
      pages/refund/refundRemark/refundRemark.wxml
  62. 166 0
      pages/refund/refundRemark/refundRemark.wxss
  63. 807 0
      pages/temp/orderBoard/orderBoard.js
  64. 7 0
      pages/temp/orderBoard/orderBoard.json
  65. 210 0
      pages/temp/orderBoard/orderBoard.wxml
  66. 818 0
      pages/temp/orderBoard/orderBoard.wxss
  67. 45 701
      pages/temp/serviceOrder/serviceOrder.js
  68. 2 2
      pages/temp/serviceOrder/serviceOrder.json
  69. 45 212
      pages/temp/serviceOrder/serviceOrder.wxml
  70. 42 692
      pages/temp/serviceOrder/serviceOrder.wxss
  71. 167 0
      pages/ticket/ticketDetail/ticketDetail.js
  72. 8 0
      pages/ticket/ticketDetail/ticketDetail.json
  73. 183 0
      pages/ticket/ticketDetail/ticketDetail.wxml
  74. 115 0
      pages/ticket/ticketDetail/ticketDetail.wxss
  75. 322 0
      pages/ticket/ticketHandle/ticketHandle.js
  76. 4 0
      pages/ticket/ticketHandle/ticketHandle.json
  77. 80 0
      pages/ticket/ticketHandle/ticketHandle.wxml
  78. 223 0
      pages/ticket/ticketHandle/ticketHandle.wxss
  79. 254 0
      pages/ticket/ticketList/ticketList.js
  80. 8 0
      pages/ticket/ticketList/ticketList.json
  81. 54 0
      pages/ticket/ticketList/ticketList.wxml
  82. 84 0
      pages/ticket/ticketList/ticketList.wxss
  83. 94 0
      pages/ticket/ticketRemark/ticketRemark.js
  84. 4 0
      pages/ticket/ticketRemark/ticketRemark.json
  85. 27 0
      pages/ticket/ticketRemark/ticketRemark.wxml
  86. 166 0
      pages/ticket/ticketRemark/ticketRemark.wxss
  87. 21 0
      project.private.config.json
  88. 116 2
      utils/formatFuc.wxs

+ 14 - 0
api/jms.js

@@ -40,6 +40,20 @@
 	SelectServiceOrderPerson: WxApiRoot + 'franManager/serviceOrder/selectServiceOrderPerson',//接单
 	GetGoodsTimeRange: WxApiRoot + 'franManager/serviceOrder/getGoodsTimeRange',//时间
 	UpdateOrderAddressV2: WxApiRoot + 'franManager/serviceOrder/updateOrderAddressV2',//修改预约
+	StorageUpload: WxApiRoot + 'admin/storage/addFile',
+	GetHomeInfo: WxApiRoot + 'jmsapp/mallAftersale/getInfo',
+	TicketList: WxApiRoot + 'jmsapp/ticket/list',
+	TicketDetail: WxApiRoot + 'jmsapp/ticket/ticketDetail',
+	HandleTicket: WxApiRoot + 'jmsapp/ticket/handleTicket',
+	AppendTicketMemo: WxApiRoot + 'jmsapp/ticket/appendTicketMemo',
+	TicketResult: WxApiRoot + 'jmsapp/ticket/ticketResult',
+	GetAfterSaleList: WxApiRoot + 'jmsapp/mallAftersale/getAfterSaleList',
+	GetAftersaleById: WxApiRoot + 'jmsapp/mallAftersale/getAftersaleById',
+	GetOrderBookDetailByOrderId: WxApiRoot + 'jmsapp/mallAftersale/getOrderBookDetailByOrderId',
+	AddRemark: WxApiRoot + 'jmsapp/mallAftersale/addRemark',
+	GetOrderGoodsById: WxApiRoot + 'jmsapp/mallAftersale/getOrderGoodsById',
+	RefundisPass: WxApiRoot + 'jmsapp/mallAftersale/isPass',
+	PreRefundCheck: WxApiRoot + 'jmsapp/mallAftersale/preRefundCheck',
 
  };
 

+ 64 - 0
api/mall.js

@@ -0,0 +1,64 @@
+
+// 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',  
+	 AddressList:WxApiRoot + 'address/list', 
+}

+ 3 - 0
app.js

@@ -18,6 +18,9 @@ App({
 		isUat:false,
 		activeTab:7,
 		currentDay: util.formetdate(new Date()),
+		refundDetail:{
+			
+		}
   }
 })
  

+ 23 - 5
app.json

@@ -9,7 +9,28 @@
 		"pages/temp/jzxhAppletsUserPro/jzxhAppletsUserPro",
 		"pages/temp/cancelOrder/cancelOrder",
 		"pages/temp/takeOrder/takeOrder",
-		"pages/temp/assignOrder/assignOrder"
+		"pages/temp/assignOrder/assignOrder",
+
+		"pages/temp/orderBoard/orderBoard",
+		"pages/ticket/ticketList/ticketList",
+		"pages/ticket/ticketDetail/ticketDetail",
+		"pages/ticket/ticketHandle/ticketHandle",
+		"pages/ticket/ticketRemark/ticketRemark",
+		"pages/refund/refundList/refundList",
+		"pages/refund/refundDetail/refundDetail",
+		"pages/refund/refundRemark/refundRemark",
+		"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": {
     "backgroundTextStyle": "light",
@@ -55,10 +76,7 @@
 	},
 	
   "requiredPrivateInfos": [
-    "getLocation",
-    "chooseAddress",
-    "chooseLocation",
-    "choosePoi"
+    "chooseLocation"
 	]
 	
 }

+ 3 - 2
pages/index/index.js

@@ -14,7 +14,7 @@ Page({
     code: '', //小程序登录code
     jmsMobile: '',
     jmsCaptcha: '',
-    loginType: '1' //1一键登录 2:验证登录
+    loginType: '2' //1一键登录 2:验证登录
   },
 
   onShareAppMessage: function () {
@@ -242,7 +242,8 @@ Page({
           app.globalData.hasLogin = true;
           let user = res.data.fraUser;
           wx.setStorageSync('userInfo', user);
-          wx.setStorageSync('token', res.data.token);
+					wx.setStorageSync('token', res.data.token);
+					app.globalData.userInfo=user;
           wx.redirectTo({
             url: '/pages/temp/serviceOrder/serviceOrder',
           });

+ 3 - 5
pages/index/index.wxml

@@ -7,8 +7,8 @@
       <text >鲸致生活-加盟商系统</text>
     </view>
 
-    <view class="form-item">
-      <!-- <view class="label" style="font-size:29rpx">登录方式</view> -->
+    <!-- <view class="form-item">
+     
       <view class="content" >
 				<van-radio-group value="{{ loginType }}" bind:change="onLoginChange">
         <van-radio name="1" >一键登录
@@ -16,10 +16,8 @@
         <van-radio name="2" style="margin-left: 30rpx;"
          >验证登录</van-radio>
 					</van-radio-group>
-
-       
       </view>
-    </view>
+    </view> -->
   
 
       <!-- 加盟商登录 -->

+ 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.skuId;
+      });
+      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.skuId,
+      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.data.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.skuId],
+    }, '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
+ 1273 - 0
pages/mall/checkout/checkout.js


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

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

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

@@ -0,0 +1,373 @@
+
+<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">
+     
+      </view>
+    </view> -->
+
+      <!-- 有地址,选择 -->
+    <view wx:if="{{addressId>0}}" class="address-select" bindtap="addressSelect">
+      <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-order-map.png" class="map-img">
+      </image>
+
+      <view class="address-main">
+        <view class="main-line">
+          <view>{{checkedAddress.receiverName}}</view>
+          <view class="phone">{{checkedAddress.receiverPhone}}</view>
+        </view>
+        <view class="customer-address">{{checkedAddress.receiverAddress}}</view>
+       
+      </view>
+      <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/wx-dy/arrow-grey.png" class="arrow-img"></image>
+
+    </view>
+    <!-- 没地址,输入 -->
+    <view wx:else class="address-input-module add-address">
+      <view class="add-form">
+        <!-- <view class="form-item" bindtap="goMap" style="height:auto;min-height:78rpx; ">
+          <view class="label"><text>*</text>服务地址</view>
+          <view class="content" style="height:auto;min-height:78rpx; ">
+            <view wx:if="{{address.addressname==''}}" style="color: #ACADB1;;font-size:24rpx;" class="input">
+              选择省、市、县(区)、乡(镇)
+            </view>
+            <view wx:else class="input"> {{address.addressname}}</view>
+         
+
+            <image src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-address-map.png"
+              style="width: 28rpx;height: 28rpx;margin:28rpx 0 0 10rpx;"></image>
+          </view>
+        </view> -->
+        <view class="form-item">
+          <view class="label"><text>*</text>收货地址</view>
+          <view class="content">
+            <input class="input" bindinput="bindinputAddress" value="{{address.detail}}"
+              placeholder="请输入收货地址" placeholder-style="color: #ACADB1;;font-size:24rpx;" />
+          </view>
+        </view>
+        <view class="form-item">
+          <view class="label"><text>*</text>联系人</view>
+          <view class="content special-content">
+            <input class="input" bindinput="bindinputName" placeholder="姓名" value="{{address.name}}" auto-focus
+              placeholder-style="color: #ACADB1;;font-size:24rpx;" />
+            <!-- <view class="gender-wrapper">
+              <view class="female" bindtap="femaleSelect">
+                <image src="https://mall.zhaijieshi.cc/file/jzmall-dy/icon-select-popup.png" mode="asceptFit"
+                  wx:if="{{gender==2}}"></image>
+                <image src="https://mall.zhaijieshi.cc/file/jzmall-dy/icon-unselect-popup.png" mode="asceptFit" wx:else>
+                </image>
+                <text>女士</text>
+              </view>
+              <view class="male" bindtap="maleSelect">
+                <image src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-select-popup.png" mode="asceptFit"
+                  wx:if="{{gender==1}}"></image>
+                <image src="https://mall.zhaijieshi.cc/file/jzmall-dy/icon-unselect-popup.png" mode="asceptFit" wx:else>
+                </image>
+                <text>先生</text>
+              </view>
+
+
+            </view> -->
+
+          </view>
+        </view>
+        <view class="form-item">
+          <view class="label"><text>*</text>联系电话</view>
+          <view class="content">
+            <input class="input" bindinput="bindinputMobile" value="{{address.tel}}" type="number" placeholder="手机号码"
+              maxlength="11" placeholder-style="color: #ACADB1;;font-size:24rpx;" />
+          </view>
+        </view>
+
+
+
+
+
+
+      </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 class="appoint-overlay-wrapper address-overlay" wx:if="{{ addressShow }}" bindtap="onAddressClose">
+
+<view class="address-popup" cantap="onAddressClick">
+	<view class="title">
+		选择地址
+	</view>
+	<view class="address-list">
+		<view class="address-item" wx:for="{{addressList}}" wx:key="index" data-address="{{item}}"
+			bindtap="addressConfirm">
+			<image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-order-map.png"
+				class="map-img"></image>
+
+			<view class="address-main">
+				<view class="main-line">
+					<view>{{item.receiverName}}</view>
+					<view class="phone">{{item.receiverPhone}}</view>
+				</view>
+			
+				<view class="customer-address" >{{item.receiverAddress}}</view>
+			</view>
+			<image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/wx-dy/arrow-grey.png" class="arrow-img">
+			</image>
+		</view>
+	</view>
+	<view class="add-address-btn" bindtap="goAddAddress">新增地址</view>
+</view>
+</view>
+
+
+
+</view>

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

@@ -0,0 +1,976 @@
+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;
+}
+
+  /* 顶部地址 */
+  .address-select {
+    padding: 22rpx 24rpx 22rpx 30rpx;
+    background: #FFFFFF;
+    border-radius: 24rpx;
+    display: flex;
+    align-items: center;
+    min-height: 132rpx;
+  }
+  
+  .address-select .map-img {
+    width: 48rpx;
+    height: 48rpx;
+    margin-right: 24rpx;
+  
+  }
+  
+  .address-main {
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+  }
+  
+  .address-main .main-line {
+    display: flex;
+    height: 44rpx;
+    margin-bottom: 4rpx;
+    align-items: center;
+  }
+  
+  .main-line view {
+    color: #333333;
+    font-size: 32rpx;
+  }
+  
+  .main-line view.phone {
+    color: #999999;
+    font-size: 24rpx;
+    margin-left: 14rpx;
+  }
+  
+  .customer-info .customer-address {
+    color: #666666;
+    line-height: 40rpx;
+  }
+  
+  .address-select .arrow-img {
+    width: 28rpx;
+    height: 28rpx;
+    margin-left: 20rpx;
+  }
+  
+  /* 地址选择 */
+  .appoint-overlay-wrapper.address-overlay {
+    display: flex;
+    align-items: flex-end;
+  }
+  
+  .address-popup {
+    width: 750rpx;
+    padding: 0 24rpx 0rpx;
+    background: #FFFFFF;
+    border-radius: 56rpx 56rpx 0 0;
+  }
+  
+  .address-popup .title {
+    font-weight: 600;
+    color: #191919;
+    font-size: 28rpx;
+    height: 122rpx;
+    line-height: 122rpx;
+    text-align: center;
+  }
+  
+  .address-list {
+    height: 720rpx;
+    overflow-y: scroll;
+    padding-bottom: 20rpx;
+  }
+  
+  .address-popup .add-address-btn {
+    width: 654rpx;
+    margin: 40rpx 24rpx 40rpx;
+    height: 90rpx;
+    background: linear-gradient(90deg, #00BAFF 0%, #008DFF 100%);
+    border-radius: 45rpx;
+    font-size: 36rpx;
+    text-align: center;
+    color: rgba(255, 255, 255, 0.9);
+    line-height: 90rpx;
+  }
+  
+  .address-item {
+    width: 702rpx;
+    display: flex;
+    align-items: center;
+    min-height: 132rpx;
+    border-radius: 24rpx;
+    border: 2rpx solid #E3E3E3;
+    margin-bottom: 30rpx;
+  }
+  
+  .address-item .arrow-img {
+    width: 28rpx;
+    height: 28rpx;
+    margin-left: 20rpx;
+  }
+  
+  .address-item .map-img {
+    width: 48rpx;
+    height: 48rpx;
+    margin-right: 24rpx;
+  
+  }
+  
+  /* 地址输入 */
+  .add-address .add-form {
+    background: #fff;
+    width: 702rpx;
+    border-radius: 25rpx;
+    padding: 4rpx 24rpx 24rpx;
+  }
+  
+  .add-address .form-item {
+    height: 78rpx;
+    display: flex;
+    align-items: center;
+  }
+  
+  .add-address .input {
+    flex: 1;
+    /* height: 78rpx; */
+    /* line-height: 44rpx; */
+    /* overflow: hidden; */
+    font-size: 26rpx;
+    color: #333;
+    padding-top: 24rpx;
+  }
+  
+  .add-address .label {
+    font-size: 26rpx;
+    font-weight: bold;
+    width: 160rpx;
+    text-align: left;
+    color: rgba(0, 0, 0, 0.9);
+  }
+  
+  .add-address .label text {
+    color: #FF0000;
+  }
+  
+  .add-address .content {
+    border-bottom: 2rpx solid #E0E0E0;
+    /* height: 88rpx; */
+    /* line-height: 88rpx; */
+    align-content: center;
+    flex: 1;
+    display: flex;
+    align-items: center;
+    padding-bottom: 8rpx;
+    height: 78rpx;
+  }
+  
+  .gender-wrapper image {
+    width: 26rpx;
+    height: 26rpx;
+    margin-right: 10rpx;
+  }
+  
+  .gender-wrapper {
+    display: flex;
+    /* align-items: center;
+     */
+  
+    height: 78rpx;
+    justify-content: space-between;
+    width: 220rpx;
+  }
+  
+  .male,
+  .female {
+    display: flex;
+    align-items: center;
+    height: 78rpx;
+    padding-top: 24rpx;
+  }
+  
+  .male text,
+  .female text {
+    color: #ACADB1;
+    font-size: 24rpx;
+	}
+	
+/* 地址选择 */
+.appoint-overlay-wrapper.address-overlay {
+  display: flex;
+  align-items: flex-end;
+}
+
+.address-popup {
+  width: 750rpx;
+  padding: 0 24rpx 0rpx;
+  background: #FFFFFF;
+  border-radius: 56rpx 56rpx 0 0;
+}
+
+.address-popup .title {
+  font-weight: 600;
+  color: #191919;
+  font-size: 28rpx;
+  height: 122rpx;
+  line-height: 122rpx;
+  text-align: center;
+}
+
+.address-list {
+  height: 720rpx;
+  overflow-y: scroll;
+  padding-bottom: 20rpx;
+}
+
+.address-popup .add-address-btn {
+  width: 654rpx;
+  margin: 40rpx 24rpx 40rpx;
+  height: 90rpx;
+  background: linear-gradient(90deg, #00BAFF 0%, #008DFF 100%);
+  border-radius: 45rpx;
+  font-size: 36rpx;
+  text-align: center;
+  color: rgba(255, 255, 255, 0.9);
+  line-height: 90rpx;
+}
+
+.address-item {
+  width: 702rpx;
+  display: flex;
+  align-items: center;
+  min-height: 132rpx;
+  border-radius: 24rpx;
+  border: 2rpx solid #E3E3E3;
+  margin-bottom: 30rpx;
+}
+
+.address-item .arrow-img {
+  width: 28rpx;
+  height: 28rpx;
+  margin-left: 20rpx;
+}
+
+.address-item .map-img {
+  width: 48rpx;
+  height: 48rpx;
+  margin-right: 24rpx;
+
+}
+.appoint-overlay-wrapper {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, .7);
+  z-index: 999;
+}

+ 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


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

@@ -0,0 +1,452 @@
+var util = require('../../../utils/jmsUtil.js');
+var mall = require('../../../api/mall.js'); 
+var user = require('../../../utils/user.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:'',
+		code:'',
+  },
+  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,
+      pageNo: 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);
+      }
+    })
+	},
+	async getWxCode(){
+		let res=await user.login();
+		console.log(res);
+		this.setData({
+			code:res.code
+		});
+		},
+  // “去付款”按钮点击效果
+   async payOrder(e) {
+    let that = this;
+		let id = e.currentTarget.dataset.id;
+		await	this.getWxCode();
+    util.request(mall.OrderPrepay, {
+			orderId: id,
+			code:this.data.code
+    }, '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;
+}

+ 171 - 0
pages/refund/refundAudit/refundAudit.js

@@ -0,0 +1,171 @@
+// index.js
+// 获取应用实例
+const app = getApp();
+const util = require('../../../utils/jmsUtil.js');
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+Page({
+  data: {
+		isFinish:false,
+		id:'',
+		orderId:'',
+		type:'',
+		refusalRemark:'',
+		noUserRemark:'',
+  
+  },
+  // 事件处理函数
+ 
+  onLoad(options) {
+	if(options.id||options.type){
+		this.setData({
+			id:options.id,
+			type:options.type,
+			orderId:options.orderId
+		});
+	}
+
+	},
+	onshow(){
+	
+	},
+
+	bindRrmark1(e){
+		this.setData({
+			refusalRemark:e.detail.value
+		});
+	},
+	bindRrmark2(e){
+		this.setData({
+			noUserRemark:e.detail.value
+		});
+	},
+ 
+	confTap(){
+		if(this.data.refusalRemark==''){
+			wx.showToast({
+				title: '请输入理由!',
+				icon:'none'
+			});
+			return false;
+		}
+		if(this.data.rnoUserRemark==''){
+			wx.showToast({
+				title: '请输入备注!',
+				icon:'none'
+			});
+			return false;
+		}
+		//如果是不通过 不用调用校验接口
+	if(this.data.type==4){
+		this.confirmPass();
+	}else{
+    
+			wx.showLoading({
+				title: '加载中',
+			})
+	
+			let params={
+			id:this.data.id,
+			orderId:this.data.orderId,
+			amount:app.globalData.refundDetail.amount
+
+			}
+			util.request(api.PreRefundCheck, 
+			params
+			, 'POST').then(res=>{
+				wx.hideLoading();
+				if(res.errno==0){
+			 if (res.data.code == 0) {
+				 this.confirmPass();
+		
+			 }else if(res.data.code==1){
+				 let that=this;
+				wx.showModal({
+					title: '',
+					confirmColor: '#b4282d',
+					content: res.data.msg,
+					success: function (res) {
+						if (res.confirm) {
+							that.confirmPass();
+						}
+		
+					}
+				})
+			
+			 }else{
+				wx.showToast({
+					title: res.data.msg,
+					icon:'none'
+				});
+			 }
+			}else {
+				wx.showToast({
+					title: res.errmsg,
+					icon:'none'
+				});
+			 }
+		 
+		 }).catch(err=>{
+			 wx.hideLoading();
+		 });
+	}
+
+		
+
+	},
+	confirmPass(){
+		wx.showLoading({
+			title: '提交中',
+		})
+
+		let params={
+			refusalRemark:this.data.refusalRemark,
+		id:this.data.id,
+		orderId:this.data.orderId,
+		noUserRemark:this.data.noUserRemark,
+		status:this.data.type
+
+		}
+		util.request(api.RefundisPass, 
+		params
+		, 'POST').then(res=>{
+			wx.hideLoading();
+		 if (res.errno == 0) {
+			 this.setData({
+				 isFinish:true,
+			 })
+		wx.showModal({
+			title: '提示',
+			content: '操作成功',
+			showCancel:false,
+			complete: (res) => {
+				if (res.cancel) {
+					
+				}
+		
+				if (res.confirm) {
+					wx.navigateBack({
+						delta:1
+					});
+				
+				}
+			}
+		})
+	
+
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 }).catch(err=>{
+		 wx.hideLoading();
+	 });
+
+	},
+
+ 
+})

+ 4 - 0
pages/refund/refundAudit/refundAudit.json

@@ -0,0 +1,4 @@
+{
+	"navigationBarTitleText": "退款审核",
+  "usingComponents": {}
+}

+ 36 - 0
pages/refund/refundAudit/refundAudit.wxml

@@ -0,0 +1,36 @@
+<!--index.wxml-->
+<view class="container">
+	<view class="receipt-content">
+		<view class="title">
+			<text>*</text>理由:该信息将送达用户
+		</view>
+
+		<textarea class="textarea" bindinput="bindRrmark1" value="{{refusalRemark}}" placeholder='请输入理由' disabled="{{isFinish}}" placeholder-style="line-height:48rpx;color: #979694;"></textarea>
+		<view style="color: red;text-align: right;">客户可见,请谨慎填写此信息!!!</view>
+
+
+	</view>
+
+	<view class="receipt-content">
+		<view class="title">
+			<text>*</text>备注:该信息不会送达用户
+		</view>
+
+		<textarea class="textarea" bindinput="bindRrmark2" value="{{noUserRemark}}" placeholder='请输入备注内容' disabled="{{isFinish}}" placeholder-style="line-height:48rpx;color: #979694;"></textarea>
+
+
+	</view>
+
+
+
+
+
+
+
+
+
+	<view class="edit-btn" bindtap="confTap">确认</view>
+
+
+
+</view>

+ 166 - 0
pages/refund/refundAudit/refundAudit.wxss

@@ -0,0 +1,166 @@
+/**index.wxss**/
+page {
+  /* background: #f3f3f3; */
+	background:#F4F2F2;
+}
+.container{
+	padding-top:20rpx;
+ padding-bottom:80rpx;
+}
+view{
+	font-size: 28rpx;
+}
+.edit-btn{
+	width: 686rpx;
+height: 80rpx;
+background: #09AFFF;
+border-radius: 200rpx;
+line-height: 80rpx;
+position: fixed;
+left:28rpx;
+right:28rpx;
+bottom:94rpx;
+color: #fff;
+text-align: center;
+/* margin:94rpx 28rpx 0; */
+}
+.title{
+	color: #646566;
+	height:40rpx;
+	line-height: 40rpx;
+	/* font-weight: bold; */
+	/* padding:0 32rpx; */
+	margin:0rpx 0 16rpx;
+}
+.tips{
+	color: #969799;
+line-height: 32rpx;
+font-size:24rpx;
+line-height: 32rpx;
+padding:0 32rpx;
+margin-bottom:16rpx;
+}
+.common-module{
+	width: 750rpx;
+	/* background: #FFFFFF; */
+	/* padding:0 32rpx; */
+	box-sizing: border-box;
+}
+.input-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.input-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.input-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+	color:#333;
+}
+.input-placeholder{
+	color: #C8C9CC;
+}
+.select-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.no-border{
+	border-bottom:none;
+}
+.select-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.select-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+}
+.select-value.default-value{
+	color: #C8C9CC;
+}
+.special-tips{
+	height: 48rpx;
+	line-height: 32rpx;
+	color: #969799;
+	font-size: 24rpx;
+	padding:12rpx 20rpx 0 32rpx;
+}
+.worker-scroll{
+	margin:8rpx 4rpx 0;
+	background: #fff;
+	border-radius: 8rpx;
+	width:742rpx;
+	
+
+}
+.worker-item{
+	height: 80rpx;
+	padding:0 40rpx;
+	line-height: 80rpx;
+	border-bottom:2rpx solid #F4F2F2;
+}
+.disable-input{
+ color:#999;
+}
+.address-block{
+	min-height: 160rpx;
+	height: auto;
+}
+.address-block .input-value{
+	line-height: 44rpx;
+	white-space: pre-wrap;
+	/* display: flex;
+	align-items: center; */
+	height: 120rpx;
+	padding:0 0 0rpx 20rpx;
+	/* overflow-y: auto; */
+	/* margin-bottom:16rpx; */
+}
+.receipt-content{
+  width: 750rpx;
+background: #FFFFFF;
+padding:30rpx 30rpx 24rpx 20rpx;
+/* margin:0 24rpx; */
+}
+.receipt-content .title{
+  height:48rpx;
+}
+.receipt-content .title text{
+  color: red;
+
+}
+.receipt-content .textarea{
+  height: 204rpx;
+border-radius: 12rpx;
+border: 2rpx solid #DADADA;
+margin:18rpx 0 22rpx;
+width:700rpx;
+padding:16rpx 22rpx;
+box-sizing: border-box;
+}
+.upload-block{
+	background: #fff;
+	padding:24rpx 30rpx 24rpx 20rpx;
+margin-bottom:10rpx;
+}
+.upload-block view{
+	color: #646566;
+}

+ 259 - 0
pages/refund/refundDetail/refundDetail.js

@@ -0,0 +1,259 @@
+const app = getApp()
+const util = require("../../../utils/jmsUtil.js");
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+
+
+
+Page({
+  data: {
+		id:'',
+		orderId:'',
+		refundDetail:{},
+		logList:[],
+		orderInfo:{},
+		orderBookInfo:[],
+   type:'1',
+		statusDesc: {
+			0: "",
+			1: "待审核",
+			2: "审核通过",
+			3: "退款成功",
+			4: "审核未通过",
+			5:"退款失败"
+	},
+	
+	typeTag: ["", "primary","success","success", "warning", "warning"],
+ccResultList:{  
+  Y: "成立",
+  N: "不成立",
+  // O: "无法判定",
+},
+ccResList:{
+  P: "服务人员",
+  S: "商家运营",
+  C: "客服",
+  O: "其他"
+},
+refundMethodDesc:{
+  1: "银行卡",
+  2: "支付宝",
+  3: "微信",
+  4: "盒马二线手工退",
+  5: "盒马XP工单退"
+} 
+
+
+   
+
+  },
+
+ 
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+      if(options.id||options.orderId){
+				this.setData({
+					id:options.id,
+					orderId:options.orderId,
+					refundDetail:app.globalData.refundDetail
+				});
+				
+				// this.getTicketDetail();
+			}
+
+
+	},
+	onChange(e){
+		this.setData({
+			type:e.detail.name
+		});
+	},
+	getTicketDetail(){
+		util.request(api.GetAftersaleById, {
+		id:this.data.id
+		}, 'GET').then(res=>{
+		 if (res.errno == 0) {
+			 	 let actions=res.data;
+			 let list=[];
+			 actions.forEach(item=>{
+           let obj={
+						inactiveIcon: 'passed',
+						activeIcon: 'passed',
+						 text:"["+item.statusName+'] '+item.comment,
+						 desc:item.createTime+' '+item.handlerName
+					 };
+					 list.push(obj);
+
+			 });
+			this.setData({
+				logList:list
+			});
+
+	    // this.setData({
+			// 	actions:res.data.acitons,
+			// 	consults:res.data.consults,
+			// 	consultslist:res.data.consultslist,
+			// 	ticket:res.data.ticket
+			// });
+			//  let actions=res.data.actions;
+			//  let list=[];
+			//  actions.forEach(item=>{
+      //      let obj={
+			// 			inactiveIcon: 'passed',
+			// 			activeIcon: 'passed',
+			// 			 text:"["+item.statusDes+'] '+item.content,
+			// 			 desc:item.createTime+' '+item.createUserName
+			// 		 };
+			// 		 list.push(obj);
+
+			//  });
+			//  this.setData({
+			// 	 actions:list
+			//  });
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 });
+	},
+	getOrderGoodsDetail(){
+		util.request(api.GetOrderGoodsById, {
+		orderId:this.data.orderId
+		}, 'GET').then(res=>{
+		 if (res.errno == 0) {
+			this.setData({
+				orderInfo:res.data
+			});
+   
+	    // this.setData({
+			// 	actions:res.data.acitons,
+			// 	consults:res.data.consults,
+			// 	consultslist:res.data.consultslist,
+			// 	ticket:res.data.ticket
+			// });
+			//  let actions=res.data.actions;
+			//  let list=[];
+			//  actions.forEach(item=>{
+      //      let obj={
+			// 			inactiveIcon: 'passed',
+			// 			activeIcon: 'passed',
+			// 			 text:"["+item.statusDes+'] '+item.content,
+			// 			 desc:item.createTime+' '+item.createUserName
+			// 		 };
+			// 		 list.push(obj);
+
+			//  });
+			//  this.setData({
+			// 	 actions:list
+			//  });
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 });
+	},
+	getOrderBookDetail(){
+		util.request(api.GetOrderBookDetailByOrderId, {
+		orderId:this.data.orderId,
+		fraId:app.globalData.userInfo.fraId
+		}, 'GET').then(res=>{
+		 if (res.errno == 0) {
+		
+     this.setData({
+			 orderBookInfo:res.data
+		 });
+	    // this.setData({
+			// 	actions:res.data.acitons,
+			// 	consults:res.data.consults,
+			// 	consultslist:res.data.consultslist,
+			// 	ticket:res.data.ticket
+			// });
+			//  let actions=res.data.actions;
+			//  let list=[];
+			//  actions.forEach(item=>{
+      //      let obj={
+			// 			inactiveIcon: 'passed',
+			// 			activeIcon: 'passed',
+			// 			 text:"["+item.statusDes+'] '+item.content,
+			// 			 desc:item.createTime+' '+item.createUserName
+			// 		 };
+			// 		 list.push(obj);
+
+			//  });
+			//  this.setData({
+			// 	 actions:list
+			//  });
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 });
+	},
+ 
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+  
+		this.getTicketDetail();
+		this.getOrderGoodsDetail();
+		this.getOrderBookDetail();
+  },
+
+
+ 
+
+
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+	},
+
+	preImg(e){
+		let url=e.currentTarget.dataset.url;
+		wx.previewImage({
+      current: url, // 当前显示图片的http链接
+      urls: this.data.refundDetail.pictures// 需要预览的图片http链接列表
+    })
+	},
+
+	goRemark(){
+		wx.navigateTo({
+			url: '/pages/refund/refundRemark/refundRemark?id='+this.data.id
+		});
+	},
+	handleAudit(e){
+		let type=e.currentTarget.dataset.type;
+		wx.navigateTo({
+			url: '/pages/refund/refundAudit/refundAudit?id='+this.data.id+'&orderId='+this.data.orderId+'&type='+type
+		});
+	},
+
+
+
+
+
+ 
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  },
+
+})

+ 8 - 0
pages/refund/refundDetail/refundDetail.json

@@ -0,0 +1,8 @@
+{ 
+  "navigationBarTitleText": "退款审核",
+	"navigationBarBackgroundColor": "#fff",
+	"onReachBottomDistance":20,
+  "usingComponents": {
+   
+  }
+}

+ 254 - 0
pages/refund/refundDetail/refundDetail.wxml

@@ -0,0 +1,254 @@
+<wxs src="../../../utils/formatFuc.wxs" module="format" />
+
+
+<view class="whole-page">
+
+
+	<view class="ticket-item">
+		<view class="ticket-top">
+			<image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-refund.png" mode="aspectFit"></image>
+			<view>{{refundDetail.goodsName}}</view>
+		</view>
+		<view class="ticket-line">
+			退款工单编号:{{refundDetail.aftersaleSn}}
+		</view>
+		<view class="ticket-line">
+			退款金额:{{refundDetail.amount}}
+		</view>
+		<view class="ticket-line">
+			申请时间:{{refundDetail.addTime}}
+		</view>
+		<view class="ticket-line">
+			退款状态:<van-tag type="{{typeTag[refundDetail.status]}}">{{ statusDesc[refundDetail.status]}}</van-tag>
+		</view>
+
+
+
+	</view>
+	
+	<van-tabs active="{{type}}" bind:change="onChange" sticky >
+  <van-tab title="退款工单信息" name="1"></van-tab>
+  <van-tab title="订单信息" name="2"></van-tab>
+  <van-tab title="服务工单信息" name="3"></van-tab>
+ 
+</van-tabs>
+
+<block wx:if="{{type==1}}">
+<view class="common-info">
+		<view class="common-title">退款信息</view>
+		<view class="common-content">
+			<view class="common-line">
+				<view class="line-left">退款类型:</view>
+				<view>{{refundDetail.typeName}}</view>
+			</view>
+			<view class="common-line">
+				<view class="line-left">退款时间:</view>
+				<view>{{refundDetail.refundTime}}</view>
+			</view>
+				<!-- 图片 -->
+				
+				<view wx:if="{{refundDetail.pictures != null&&ticket.pictures.length>0}}">
+				<image wx:for="{{refundDetail.pictures}}" wx:key="index" src="{{item}}" mode="aspectFit" style="width:100rpx;height:100rpx;margin:0 20rpx 20rpx 0;" bindtap="preImg" data-url="{{item}}">
+				</image>
+			</view>
+		</view>
+		</view>
+	<!-- 日志 -->
+
+	<view class="common-info" >
+		<view class="common-title"> 退款工单日志</view>
+		<view class="common-content">
+			<van-steps steps="{{ logList }}" active="{{20}}" direction="vertical" />
+		</view>
+	</view>
+</block>
+<block wx:if="{{type==2}}">
+	<view class="common-info">
+	   <view class="common-title">商品信息</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">商品图片:</view>
+			<view>
+				<image  src="{{orderInfo.picUrl}}" mode="aspectFit" style="width:100rpx;height:100rpx;"></image></view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">商品名称:</view>
+			<view>{{orderInfo.shortName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">商品简称:</view>
+			<view>{{orderInfo.shortName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">商品编号:</view>
+			<view>{{orderInfo.goodsSn}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">规格:</view>
+			<view>{{orderInfo.specifications}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">加购:</view>
+			<view>{{orderInfo.unitIncreaseNumber}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务次数:</view>
+			<view>{{orderInfo.serviceTimes}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">商品价格:</view>
+			<view>{{orderInfo.price}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">商品类型:</view>
+			<view>{{format.goodsTypeText(orderInfo.type)}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">核销方式:</view>
+			<view>{{orderInfo.verifytype==1?'首次预约即核销':'服务完成后核销'}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">所需技能:</view>
+			<view>{{orderInfo.itemName}}</view>
+			</view>
+			
+	
+		 </view>
+		 
+	 </view>
+	 <view class="common-info">
+	   <view class="common-title">订单信息</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">订单编号:</view>
+			<view>{{orderInfo.orderSn}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">下单时间:</view>
+			<view>{{orderInfo.createTime}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">订单状态:</view>
+			<view>{{format.orderStatusText(orderInfo.orderStatus)}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">已服务次数:</view>
+			<view>{{orderInfo.servicedTimes}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">用户备注:</view>
+			<view>{{orderInfo.message}}</view>
+			</view>
+
+			</view>
+			</view>
+			<view class="common-info">
+	   <view class="common-title">支付信息</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">支付编号:</view>
+			<view>{{orderInfo.payId}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">支付方式:</view>
+			<view>{{format.payTypeText(orderInfo.payChannel) }}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">商品总价:</view>
+			<view>{{orderInfo.goodsPrice}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">优惠券:</view>
+			<view>{{orderInfo.couponPrice}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">实际支付:</view>
+			<view>{{orderInfo.actualPrice}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">支付时间:</view>
+			<view>{{orderInfo.payTime}}</view>
+			</view>
+
+			</view>
+			</view>
+
+</block>
+
+<block wx:if="{{type==3}}">
+	<view class="common-info" wx:for="{{orderBookInfo}}" wx:key="index">
+	   <view class="common-title">服务工单信息</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">服务工单ID:</view>
+			<view>{{item.serviceId}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">创建时间:</view>
+			<view>{{item.createTime}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务工单状态:</view>
+			<view>{{format.serviceOrderStatusText(item.status)}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">提醒:</view>
+			<view>{{item.customerServiceReminder}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">联系人:</view>
+			<view>{{item.customerName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">联系人电话:</view>
+			<view>{{item.customerPhone}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">地址:</view>
+			<view>{{item.customerAddr}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">预约时间:</view>
+			<view>{{item.bookTime}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">用户备注:</view>
+			<view>{{item.message}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">加盟商名称:</view>
+			<view>{{item.fraName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务者名称:</view>
+			<view>{{item.workerName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务者电话:</view>
+			<view>{{item.workerTel}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务时间:</view>
+			<view>{{item.provideTime}}</view>
+			</view>
+
+
+	
+		 </view>
+		 
+	 </view>
+</block>
+
+
+
+	<view class="operate-block">
+		<view class="remark-btn" bindtap="goRemark">追加备注</view>
+		<view class="remark-btn" wx:if="{{refundDetail.status==1}}" data-type="2" bindtap="handleAudit">审核通过</view>
+		<view class="handle-btn" wx:if="{{refundDetail.status==1}}" data-type="4" bindtap="handleAudit">审核驳回</view>
+	</view>
+
+
+
+
+
+</view>

+ 121 - 0
pages/refund/refundDetail/refundDetail.wxss

@@ -0,0 +1,121 @@
+page {
+  background: #F3F3F3;
+	color: #333;
+  /* padding:0 24rpx; */
+}
+view,text{
+  box-sizing: border-box;
+  color:#333;
+  font-size: 28rpx;
+}
+.whole-page{
+	padding:24rpx 0 200rpx;
+
+}
+
+.ticket-item{
+	width:702rpx;
+	background: #FFFFFF;
+border-radius: 18rpx;
+padding:24rpx;
+margin:0 24rpx 20rpx;
+
+}
+.ticket-top{
+	display: flex;
+	align-items: center;
+	margin-bottom:8rpx;
+}
+.ticket-top image{
+	width:40rpx;
+	height:40rpx;
+	margin-right:6rpx;
+}
+.ticket-top view{
+	font-size: 32rpx;
+	/* overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis; */
+}
+.ticket-line{
+	line-height: 56rpx;
+	height: 56rpx;
+} 
+.ticket-detail{
+	color: #0EAEFC;
+	text-decoration: underline;
+	/* display: inline-block; */
+	text-align: right;
+	line-height: 36rpx;
+}
+.common-info{
+	width:750rpx;
+	background: #fff;
+	margin-bottom:16rpx;
+}
+.common-title{
+	height: 80rpx;
+	color: #666666;
+	line-height: 80rpx;
+	padding:0 24rpx 0 48rpx;
+	border-bottom:1rpx solid #eee;
+}
+.common-content{
+	padding: 20rpx 24rpx 20rpx 48rpx;
+}
+.common-line{
+	line-height: 48rpx;
+	display: flex;
+	justify-content: space-between;
+	margin-bottom:6rpx;
+}
+.common-line view{
+	color:#666;
+}
+.common-line view.line-left{
+	color:#999;
+}
+.operate-block{
+	padding:38rpx 0;
+	padding-bottom: constant(safe-area-inset-bottom);
+	padding-bottom: env(safe-area-inset-bottom);
+	/* height:128rpx; */
+	position: fixed;
+	bottom:0;
+	left:0;
+	right:0;
+	display: flex;
+	justify-content: flex-end;
+	align-items: center; 
+	background: #fff;
+	box-shadow: -2px 0 2px 2px #f0f0f0;
+}
+.remark-btn{
+	width: 152rpx;
+height: 54rpx;
+background: #FFFFFF;
+border-radius: 8rpx;
+border: 2rpx solid #1677FF;
+line-height: 52rpx;
+color: #1677FF;
+font-size: 26rpx;
+text-align: center;
+margin-right:24rpx;
+}
+.handle-btn{
+	width: 152rpx;
+height: 54rpx;
+background: #1677FF;
+border-radius: 8rpx;
+line-height: 54rpx;
+color: #fFF;
+font-size: 26rpx;
+text-align: center;
+margin-right:24rpx;
+}
+.whole-page  .van-tabs{
+	margin-bottom:20rpx;
+}
+.whole-page  .van-tabs__line{
+	background-color: #09afff;
+}

+ 201 - 0
pages/refund/refundList/refundList.js

@@ -0,0 +1,201 @@
+const app = getApp()
+const util = require("../../../utils/jmsUtil.js");
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+
+
+
+Page({
+  data: {
+		ticketList:[],
+		totalPages:'',
+		page:1,
+   listQuery:{
+		 status:'1',
+		 
+	 },
+	 selectVisible:false,
+	 columns:[],
+	 selectType:1,
+	 statusList:[
+		{
+			text:'全部',
+			value:'0'
+		},
+		 {
+		 text:'待审核',
+		 value:'1'
+	 },
+	 {
+		text:'审核通过',
+		value:'2'
+	},
+	{
+		text:'审核未通过',
+		value:'4'
+	},
+	{
+		text:'退款成功',
+		value:'3'
+	},
+
+	],
+
+
+	statusDesc: {
+		0: "",
+		1: "待审核",
+		2: "审核通过",
+		3: "退款成功",
+		4: "审核未通过",
+		5:"退款失败"
+},
+
+typeTag: ["", "primary","success","success", "warning", "warning"],
+	levelMap: {
+		0: "无",
+		1: "一般",
+		2: "严重",
+		3: "非常严重",
+},
+	
+
+  },
+
+ 
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+  
+
+		this.getTicketList();
+
+  },
+ 
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+  
+
+  },
+	showPicker(e){
+		let type=e.currentTarget.dataset.type;
+		this.setData({
+			selectType:type,
+			columns:type==1?this.data.statusList:this.data.levelList,
+			selectVisible:true,
+		});
+
+	},
+	onPickerConfirm(e){
+		console.log(e);
+		if(this.data.selectType==1){
+			this.setData({
+				'listQuery.statusVal':e.detail.value.text,
+				'listQuery.status':e.detail.value.value,
+			});
+		}else{
+			this.setData({
+				'listQuery.levelVal':e.detail.value.text,
+				'listQuery.level':e.detail.value.value,
+			});
+		}
+		this.setData({
+		
+			selectVisible:false,
+			page:1,
+			ticketList:[]
+		});
+		this.getTicketList();
+	},
+	onPickerCancel(){
+		this.setData({
+			selectVisible:false
+		});
+	},
+
+ 
+	goDetail(e){
+		let id=e.currentTarget.dataset.id;
+		let orderId=e.currentTarget.dataset.orderid;
+		let info=e.currentTarget.dataset.info;
+		app.globalData.refundDetail=info;
+		wx.navigateTo({
+			url: '/pages/refund/refundDetail/refundDetail?id='+id+"&orderId="+orderId
+		});
+	},
+
+
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+	},
+	onReachBottom() {
+    if (this.data.totalPages > this.data.page) {
+      this.setData({
+        page: this.data.page + 1
+      });
+      this.getTicketList();
+    } else if (this.data.ticketList.length > 0) {
+      wx.showToast({
+        title: '没有更多工单了',
+        icon: 'none',
+        duration: 2000
+      });
+      return false;
+    }
+	},
+	onChange(e){
+		this.setData({
+			'listQuery.status':e.detail.name,
+			'listQuery.page':1,
+			ticketList:[]
+		});
+		this.getTicketList();
+	},
+	getTicketList(){
+		util.request(api.GetAfterSaleList, {
+			pageNo: this.data.page,
+			pageSize: 10,
+			status:this.data.listQuery.status,
+
+		}, 'POST').then(res=>{
+		 if (res.errno == 0) {
+		
+	    this.setData({
+				totalPages:Math.ceil(res.data.total/10),
+				ticketList:this.data.ticketList.concat(res.data.list)
+			});
+
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 });
+	},
+
+
+
+
+
+
+
+
+ 
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  },
+
+})

+ 8 - 0
pages/refund/refundList/refundList.json

@@ -0,0 +1,8 @@
+{ 
+  "navigationBarTitleText": "退款审核",
+	"navigationBarBackgroundColor": "#fff",
+	"onReachBottomDistance":20,
+  "usingComponents": {
+   
+  }
+}

+ 52 - 0
pages/refund/refundList/refundList.wxml

@@ -0,0 +1,52 @@
+<wxs src="../../../utils/format.wxs" module="format" />
+
+
+<view class="whole-page"> 
+	<van-tabs active="{{ listQuery.status }}" bind:change="onChange" sticky>
+  <van-tab title="待审核" name="1"></van-tab>
+  <van-tab title="审核通过" name="2"></van-tab>
+  <van-tab title="审核未通过" name="4"></van-tab>
+  <van-tab title="退款成功" name="3"></van-tab>
+	<van-tab title="全部" name=" "></van-tab>
+</van-tabs>
+  
+	 <view class="ticket-list">
+	 <view class="ticket-item" wx:for="{{ticketList}}" wx:key="index" bindtap="goDetail" data-id="{{item.id}}" data-orderid="{{item.orderId}}" data-info="{{item}}">
+	   <view class="ticket-top">
+		  <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-refund.png" mode="aspectFit" ></image>
+			<view>{{item.goodsName}}</view>
+		 </view>
+		 <view class="ticket-line">
+		 退款工单编号:{{item.aftersaleSn}}
+		 </view>
+		 <!-- <view class="ticket-line">
+		 订单编号:{{item.orderSn}}
+		 </view> -->
+		 <view class="ticket-line">
+		 退款金额:{{item.amount}}
+		 </view>
+		 <view class="ticket-line">
+		 申请时间:{{item.addTime}}
+		 </view>
+		 <view class="ticket-line">
+		 退款状态:<van-tag type="{{typeTag[item.status]}}">{{ statusDesc[item.status]}}</van-tag>
+		 </view>
+		 <view class="ticket-detail" >查看详情</view>
+
+	 </view>
+	 </view>
+	 <view class="no-data" wx:if="{{ticketList.length==0}}">没有相关数据~</view>
+
+
+</view>
+
+<van-popup show="{{selectVisible}}" position="bottom">
+		<van-picker
+  show-toolbar
+  title=" "
+  columns="{{ columns }}"
+  bind:cancel="onPickerCancel"
+  bind:confirm="onPickerConfirm"
+/>
+</van-popup>
+

+ 90 - 0
pages/refund/refundList/refundList.wxss

@@ -0,0 +1,90 @@
+page {
+  background: #F3F3F3;
+	color: #333;
+  /* padding:0 24rpx; */
+}
+view,text{
+  box-sizing: border-box;
+  color:#333;
+  font-size: 28rpx;
+}
+.whole-page{
+	padding:0rpx 0 40rpx;
+
+}
+.top-block{
+	position: fixed;
+	top:0;
+	left:0;
+	right:0;
+	height:80rpx;
+	display: flex;
+	background: #fff;
+	align-items: center;
+	padding:0 24rpx;
+}
+.select-item{
+	height: 80rpx;
+	display: flex;
+	align-items: center;
+	margin-right:60rpx;
+}
+.select-item view{
+	color: #666;
+}
+.select-item image{
+	width:24rpx;
+	height:14rpx;
+	margin-left:10rpx;
+}
+.ticket-list{
+	padding:20rpx 24rpx 32rpx;
+}
+.ticket-item{
+	width:702rpx;
+	background: #FFFFFF;
+border-radius: 18rpx;
+padding:24rpx;
+margin-bottom:20rpx;
+
+}
+.ticket-top{
+	display: flex;
+	align-items: center;
+	margin-bottom:8rpx;
+}
+.ticket-top image{
+	width:40rpx;
+	height:40rpx;
+	margin-right:6rpx;
+}
+.ticket-top view{
+	font-size: 32rpx;
+	/* overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis; */
+}
+.ticket-line{
+	line-height: 56rpx;
+	height: 56rpx;
+} 
+.ticket-detail{
+	color: #0EAEFC;
+	text-decoration: underline;
+	/* display: inline-block; */
+	text-align: right;
+	line-height: 36rpx;
+}
+.no-data{
+	text-align: center;
+	color: #999;
+	font-size: 26rpx;
+	line-height: 80rpx;
+	padding-top:100rpx;
+}
+.whole-page .van-ellipsis{
+	overflow: visible;
+}
+.whole-page  .van-tabs__line{
+	background-color: #09afff;
+}

+ 94 - 0
pages/refund/refundRemark/refundRemark.js

@@ -0,0 +1,94 @@
+// index.js
+// 获取应用实例
+const app = getApp();
+const util = require('../../../utils/jmsUtil.js');
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+Page({
+  data: {
+		isFinish:false,
+		id:'',
+		memo:''
+  
+  },
+  // 事件处理函数
+ 
+  onLoad(options) {
+	if(options.id){
+		this.setData({
+			id:options.id
+		})
+	}
+
+	},
+	onshow(){
+	
+	},
+
+	bindRrmark(e){
+		this.setData({
+     memo:e.detail.value
+		});
+	},
+ 
+	confTap(){
+		if(this.data.memo==''){
+			wx.showToast({
+				title: '请输入备注内容',
+				icon:'none'
+			});
+			return false;
+		}
+	
+
+			wx.showLoading({
+				title: '加载中',
+			})
+	
+			let params={
+			remark:this.data.memo,
+			id:this.data.id
+
+			}
+			util.request(api.AddRemark, 
+			params
+			, 'POST').then(res=>{
+				wx.hideLoading();
+			 if (res.errno == 0) {
+		     this.setData({
+					 isFinish:true,
+				 })
+			wx.showModal({
+				title: '提示',
+				content: '操作成功',
+				showCancel:false,
+				complete: (res) => {
+					if (res.cancel) {
+						
+					}
+			
+					if (res.confirm) {
+						wx.navigateBack({
+							delta:1
+						});
+					
+					}
+				}
+			})
+		
+	
+			 }else{
+				 wx.showToast({
+					 title: res.errmsg,
+					 icon:'none'
+				 })
+			 }
+		 
+		 }).catch(err=>{
+			 wx.hideLoading();
+		 });
+		
+
+	},
+ 
+})

+ 4 - 0
pages/refund/refundRemark/refundRemark.json

@@ -0,0 +1,4 @@
+{
+	"navigationBarTitleText": "添加备注",
+  "usingComponents": {}
+}

+ 26 - 0
pages/refund/refundRemark/refundRemark.wxml

@@ -0,0 +1,26 @@
+<!--index.wxml-->
+<view class="container">
+
+
+	<view class="receipt-content">
+		<view class="title">
+			<text>*</text>添加备注
+		</view>
+		<textarea class="textarea" bindinput="bindRrmark" value="{{content}}" placeholder='请输入备注内容' disabled="{{isFinish}}" placeholder-style="line-height:48rpx;color: #979694;"></textarea>
+
+
+	</view>
+
+
+
+
+
+
+
+
+
+	<view class="edit-btn" bindtap="confTap">确认</view>
+
+
+
+</view>

+ 166 - 0
pages/refund/refundRemark/refundRemark.wxss

@@ -0,0 +1,166 @@
+/**index.wxss**/
+page {
+  /* background: #f3f3f3; */
+	background:#F4F2F2;
+}
+.container{
+	padding-top:20rpx;
+ padding-bottom:80rpx;
+}
+view{
+	font-size: 28rpx;
+}
+.edit-btn{
+	width: 686rpx;
+height: 80rpx;
+background: #09AFFF;
+border-radius: 200rpx;
+line-height: 80rpx;
+position: fixed;
+left:28rpx;
+right:28rpx;
+bottom:94rpx;
+color: #fff;
+text-align: center;
+/* margin:94rpx 28rpx 0; */
+}
+.title{
+	color: #646566;
+	height:40rpx;
+	line-height: 40rpx;
+	/* font-weight: bold; */
+	/* padding:0 32rpx; */
+	margin:0rpx 0 16rpx;
+}
+.tips{
+	color: #969799;
+line-height: 32rpx;
+font-size:24rpx;
+line-height: 32rpx;
+padding:0 32rpx;
+margin-bottom:16rpx;
+}
+.common-module{
+	width: 750rpx;
+	/* background: #FFFFFF; */
+	/* padding:0 32rpx; */
+	box-sizing: border-box;
+}
+.input-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.input-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.input-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+	color:#333;
+}
+.input-placeholder{
+	color: #C8C9CC;
+}
+.select-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.no-border{
+	border-bottom:none;
+}
+.select-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.select-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+}
+.select-value.default-value{
+	color: #C8C9CC;
+}
+.special-tips{
+	height: 48rpx;
+	line-height: 32rpx;
+	color: #969799;
+	font-size: 24rpx;
+	padding:12rpx 20rpx 0 32rpx;
+}
+.worker-scroll{
+	margin:8rpx 4rpx 0;
+	background: #fff;
+	border-radius: 8rpx;
+	width:742rpx;
+	
+
+}
+.worker-item{
+	height: 80rpx;
+	padding:0 40rpx;
+	line-height: 80rpx;
+	border-bottom:2rpx solid #F4F2F2;
+}
+.disable-input{
+ color:#999;
+}
+.address-block{
+	min-height: 160rpx;
+	height: auto;
+}
+.address-block .input-value{
+	line-height: 44rpx;
+	white-space: pre-wrap;
+	/* display: flex;
+	align-items: center; */
+	height: 120rpx;
+	padding:0 0 0rpx 20rpx;
+	/* overflow-y: auto; */
+	/* margin-bottom:16rpx; */
+}
+.receipt-content{
+  width: 750rpx;
+background: #FFFFFF;
+padding:30rpx 30rpx 24rpx 20rpx;
+/* margin:0 24rpx; */
+}
+.receipt-content .title{
+  height:48rpx;
+}
+.receipt-content .title text{
+  color: red;
+
+}
+.receipt-content .textarea{
+  height: 204rpx;
+border-radius: 12rpx;
+border: 2rpx solid #DADADA;
+margin:18rpx 0 22rpx;
+width:700rpx;
+padding:16rpx 22rpx;
+box-sizing: border-box;
+}
+.upload-block{
+	background: #fff;
+	padding:24rpx 30rpx 24rpx 20rpx;
+margin-bottom:10rpx;
+}
+.upload-block view{
+	color: #646566;
+}

+ 807 - 0
pages/temp/orderBoard/orderBoard.js

@@ -0,0 +1,807 @@
+const app = getApp()
+const util = require("../../../utils/jmsUtil.js");
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+
+
+
+Page({
+  data: {
+		waitMatchCount:'',
+		watiServiceCount:'',
+		totalCount:'',
+		userInfo:{
+			userName:'',
+			headImg:'',
+			fraName:'',
+		},
+    timer: "",
+    dayCalendar: {
+      day: '',
+      workerOrderInfoDTOList: [],
+      workerName: '',
+
+    },
+    currentMonth: moment(new Date()).format('YYYY-MM'),
+    calcendarFold: true,
+    stickShow: false,
+    today: util.formetdate(new Date()),
+    currentDay: util.formetdate(new Date()),
+    isLeaveFold: true,
+    orderDisable: true,
+    orderDisable1: false,
+    ticketList: [{}, {}],
+    monthInfo: {
+      recCode: '',
+      fraName: '',
+      workerName: ''
+    },
+    workerDayInfoList: [],
+    weekCalendar: [],
+    wholeCalendar: [],
+    myqr_show: false,
+    myqr_url: '',
+		myqr_blur: 0 ,//背景模糊值
+		activeTab:7,
+		page:1,
+		limit:20,
+		serviceList:[]
+
+  },
+  onPageScroll(e) {
+    // console.log(e.scrollTop);
+    // if(e.scrollTop > 200){
+    //   this.setData({
+    //     stickShow: true
+    //   });
+    // } else {
+    //   this.setData({
+    //     stickShow: false
+    //   });
+    // }
+  },
+  leaveFold() {
+    let fold = this.data.isLeaveFold;
+    this.setData({
+      isLeaveFold: !fold
+    });
+  },
+  copyCode(e) {
+    let code = this.data.monthInfo.recCode;
+    wx.setClipboardData({
+      data: code,
+      success: function (res) {
+
+        wx.showToast({
+          title: '复制成功',
+          icon: 'none',
+          duration: 2000
+        });
+      }
+    })
+  },
+  copyNum(e) {
+    let bookno = e.currentTarget.dataset.bookno;
+    console.log(bookno);
+    wx.setClipboardData({
+      data: bookno,
+      success: function (res) {
+
+        wx.showToast({
+          title: '复制成功',
+          icon: 'none',
+          duration: 2000
+        });
+      }
+    })
+  },
+  callUp(e) {
+    let status = e.currentTarget.dataset.status;
+    let phone = e.currentTarget.dataset.phone;
+    if (status == '1' || status == '2'|| status == '7') {
+      wx.makePhoneCall({
+        phoneNumber: phone
+      });
+    }
+
+  },
+  openMap(e) { //打开地图
+
+    let status = e.currentTarget.dataset.status;
+    let address = e.currentTarget.dataset.address;
+    if (status == '待履约' || status == '服务中') {
+      let lnglat = e.currentTarget.dataset.lnglat.split(',');
+      let lng = '';
+      let lat = "";
+      if (lnglat.length > 0) {
+        lng = Number(lnglat[0]);
+        lat = Number(lnglat[1]);
+      }
+      console.log(lng, lat);
+      wx.openLocation({
+        latitude: lat,
+        longitude: lng,
+        //   name: address,
+        address: address,
+        scale: 28
+      });
+    }
+
+  },
+  goSchedule() {
+    wx.navigateTo({
+      url: '/pages/upgrade/scheduleCalc/scheduleCalc',
+    })
+  },
+  goDetail(e) {
+    let id = e.currentTarget.dataset.id;
+    wx.navigateTo({
+      url: '/pages/upgrade/ticketDetail/ticketDetail?bookTradeNo=' + id,
+    });
+  },
+  evalMaster(e) {
+    let id = e.currentTarget.dataset.id;
+    let workerno = e.currentTarget.dataset.workerno;
+    this.setData({
+      evalMasterShow: true,
+      star: 0,
+      masterComment: '',
+      bookTradeNo: id,
+      workerNo: workerno
+    });
+  },
+  onClickMsterOverlay() {
+    this.setData({
+      evalMasterShow: false,
+    });
+  },
+  onClickDiscipleOverlay() {
+    this.setData({
+      evalDiscipleShow: false,
+    });
+  },
+  onStarChange(event) {
+    this.setData({
+      star: event.detail,
+    });
+  },
+  onRadioChange(event) {
+    this.setData({
+      radioDisciple: event.detail,
+    });
+  },
+  bindMasterComment(e) {
+    this.setData({
+      masterComment: e.detail.value
+    })
+  },
+  bindDiscipleComment(e) {
+    this.setData({
+      discipleComment: e.detail.value
+    })
+  },
+  stop: function () {
+    //阻止弹框冒泡和捕获的空事件,不要删除!!!
+  },
+  submitEvalMaster() {
+    if (this.data.star == 0) {
+      wx.showToast({
+        title: '请选择评价星级',
+        icon: 'none'
+      })
+    } else if (this.data.masterComment == '') {
+      wx.showToast({
+        title: '请输入跟单体会',
+        icon: 'none'
+      })
+    } else {
+      util.request(api.discipleFeedback, {
+        feedback: this.data.discipleComment,
+        level: this.data.star,
+        bookTradeNo: this.data.bookTradeNo,
+        workerNo: this.data.workerNo
+      }, 'GET').then(res => {
+        if (res.errno === 0) {
+          wx.showToast({
+            title: '评价成功',
+            icon: 'none'
+          })
+          this.setData({
+            evalMasterShow: false,
+          });
+          this.getDayCalendar();
+        } else {
+          wx.showToast({
+            title: res.errmsg,
+            icon: 'none'
+          })
+        }
+      });
+
+
+    }
+  },
+  evalDisciple(e) {
+    let id = e.currentTarget.dataset.id;
+    let workerno = e.currentTarget.dataset.workerno;
+    this.setData({
+      evalDiscipleShow: true,
+      radioDisciple: '通过',
+      discipleComment: '',
+      bookTradeNo: id,
+      workerNo: workerno
+    });
+  },
+  submitEvalDisciple() {
+    if (this.data.radioDisciple == '') {
+      wx.showToast({
+        title: '请选择是否通过',
+        icon: 'none'
+      })
+    } else if (this.data.discipleComment == '') {
+      wx.showToast({
+        title: '请输入内容',
+        icon: 'none'
+      })
+    } else {
+      util.request(api.masterFeedback, {
+        remark: this.data.discipleComment,
+        feedback: this.data.radioDisciple,
+        bookTradeNo: this.data.bookTradeNo,
+        workerNo: this.data.workerNo
+      }, 'GET').then(res => {
+        if (res.errno === 0) {
+          wx.showToast({
+            title: '评价成功',
+            icon: 'none'
+          })
+          this.setData({
+            evalDiscipleShow: false,
+          });
+          this.getDayCalendar();
+
+        } else {
+          wx.showToast({
+            title: res.errmsg,
+            icon: 'none'
+          })
+        }
+      });
+
+
+    }
+  },
+  goProblemList(e) {
+    // this.setData({
+    //   navigateType: 1
+    // })
+    let id = e.currentTarget.dataset.id;
+    wx.navigateTo({
+      url: '/pages/problem/list/list?bookTradeNo=' + id,
+    })
+  },
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+    //   let current=this.data.wholeCalendar.filter(item=>{return item.day==this.data.currentDay});
+    //   if(current.length==0){
+    //       return false;
+    //   }
+    //   let week=current[0].weekOfYear;
+    //   let weekCalendar=this.data.wholeCalendar.filter(item=>{
+    //     return item.weekOfYear==week;
+    //   });
+    //   this.setData({
+    //      workerDayInfoList:weekCalendar,
+    //      weekCalendar:weekCalendar
+    //   });
+
+
+
+
+    this.getMonthCalender(false, 'first');
+
+
+		let userInfo=wx.getStorageSync('userInfo');
+		console.log(userInfo);
+		this.setData({
+			userInfo:userInfo
+		});
+
+		// this.getDayCalendar();
+  },
+  closeMyQr() {
+    this.setData({
+      myqr_show: false,
+      myqr_blur: 0
+    });
+  },
+
+  goSaveQrcode: function () { //保存二维码图片
+    let that = this;
+    console.info(that.data.myqr_url);
+    wx.downloadFile({
+      url: that.data.myqr_url,
+      success: function (res) {
+        if (res.statusCode === 200) {
+          let img = res.tempFilePath;
+          wx.saveImageToPhotosAlbum({
+            filePath: img,
+            success(res) {
+              that.closeMyQr();
+              wx.showModal({
+                title: '提示',
+                showCancel:false,
+                content: '此单复购专属二维码图片已保存到您的相册'
+              })
+            },
+            fail(res) {
+              wx.showModal({
+                title: '提示',
+                showCancel:false,
+                content: '网络或授权问题 图片保存失败 请重试'
+              })
+            }
+          })
+        } else
+          wx.showModal({
+            title: '提示',
+            showCancel:false,
+            content: '网络或授权问题 图片保存失败 请重试'
+          })
+      },
+      fail(res) {
+        wx.showModal({
+          title: '提示',
+          showCancel:false,
+          content: '网络或授权问题 图片保存失败 请重试'
+        })
+      }
+    })
+  },
+  getQrCode(e) { //获取复购码 
+    let bookno = e.currentTarget.dataset.bookno;
+    util.request(api.getWorkerQrCode, {
+      bookTradeNo: bookno
+    }, 'GET').then(res => {
+      if (res.errno === 0) {
+        wx.showToast({
+          title: '获取成功',
+          icon: 'none'
+        })
+        this.setData({
+          myqr_show: true,
+          myqr_blur: 20,
+          myqr_url: res.data
+        });
+        wx.pageScrollTo({
+          scrollTop: 0,
+        });
+      } else {
+        wx.showToast({
+          title: res.errmsg,
+          icon: 'none'
+        })
+      }
+    });
+  },
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+    // this.getDayCalendar();
+    // let timer = setInterval(() => {
+    //   console.log('定时刷新日历数据', new Date());
+    //   this.getMonthCalender();
+    //   this.getDayCalendar();
+    // }, 2 * 60 * 1000);
+    // this.setData({
+    //   timer: timer
+		// });
+		this.setData({
+			activeTab:app.globalData.activeTab,
+			currentDay:app.globalData.currentDay
+		});
+		this.getDayCalendar();
+
+  },
+  onHide: function () {
+    console.log('onHide');
+    // clearInterval(this.data.timer);
+  },
+  onUnload: function () {
+    console.log('onunload');
+    // clearInterval(this.data.timer);
+  },
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+    this.getMonthCalender();
+    this.setData({
+			page:1
+		});
+    this.getDayCalendar();
+  },
+  getDayCalendar() {
+    wx.showLoading({
+      title: '加载中...',
+    });
+    util.request(api.ServiceList, {
+			reservationStartTime: this.data.currentDay,
+			reservationEndTime:this.data.currentDay,
+			status:this.data.activeTab==0?'':this.data.activeTab,
+			limit:this.data.limit,
+			page:this.data.page
+    }, 'GET').then(res => {
+
+      // console.log(res);
+      wx.hideLoading();
+      if (res.errno === 0) {
+
+        this.setData({
+					totalPages:Math.ceil(res.data.total/this.data.limit)
+				});
+				
+				if (this.data.page == 1) {
+          this.setData({
+						serviceList: res.data.list,
+          });
+        } else{
+					this.setData({
+            serviceList: this.data.serviceList.concat(res.data.list),
+            
+          });
+				}
+         
+      }
+    }).catch(err => {
+      wx.hideLoading();
+    });
+  },
+  getMonthCalender(flag, tag) {
+    wx.showLoading({
+      title: '加载中...',
+    });
+    util.request(api.	GetCalendar, {
+      month: this.data.currentMonth,
+
+    }, 'GET').then(res => {
+      console.log(res);
+      wx.hideLoading();
+      if (res.errno === 0) {
+
+        this.setData({
+         
+          wholeCalendar: res.data
+        });
+        if (flag) {
+          this.setData({
+            calcendarFold: false,
+            workerDayInfoList: this.data.wholeCalendar,
+
+          });
+        }
+        let current = this.data.wholeCalendar.filter(item => {
+          return item.day == this.data.currentDay
+        });
+        if (current.length == 0) {
+          return false;
+        }
+        let week = current[0].weekOfYear;
+        let weekCalendar = this.data.wholeCalendar.filter(item => {
+          return item.weekOfYear == week;
+        });
+        this.setData({
+
+					weekCalendar: weekCalendar,
+					waitMatchCount:current[0].waitMatchCount,
+					waitServiceCount:current[0].waitServiceCount,
+					totalCount:current[0].totalCount
+					
+        });
+        if (tag == 'first') {
+          this.setData({
+            workerDayInfoList: weekCalendar,
+          });
+        }
+        if (this.data.calcendarFold) {
+          this.setData({
+            workerDayInfoList: weekCalendar,
+          });
+        } else {
+          this.setData({
+            workerDayInfoList: this.data.wholeCalendar,
+          });
+        }
+      } else {
+        wx.showToast({
+          title: res.errmsg,
+          duration: 3000,
+          icon: 'none'
+        });
+      }
+
+
+    }).catch(err => {
+      wx.hideLoading();
+    });
+  },
+  switchDay(e) {
+		let day = e.currentTarget.dataset.day;
+		let item=e.currentTarget.dataset.item;
+    this.setData({
+			currentDay: day,
+			waitMatchCount:item.waitMatchCount,
+			waitServiceCount:item.waitServiceCount,
+			totalCount:item.totalCount
+		});
+		app.globalData.currentDay=day;
+    this.getDayCalendar();
+  },
+  calcendarCollapse() {
+    let calcendarFold = this.data.calcendarFold;
+    if (calcendarFold) {
+      this.setData({
+        workerDayInfoList: this.data.wholeCalendar,
+        calcendarFold: !calcendarFold
+      });
+    } else {
+      this.setData({
+        workerDayInfoList: this.data.weekCalendar,
+        calcendarFold: !calcendarFold
+      });
+    }
+
+  },
+  lastMonth() {
+    console.log(this.data);
+    let params = util.getYearMonth(this.data.currentMonth, '-');
+    this.setData({
+      currentMonth: params
+    });
+    this.getMonthCalender(true);
+  },
+  nextMonth() {
+    let params = util.getYearMonth(this.data.currentMonth, '+');
+    console.log(params);
+    this.setData({
+      currentMonth: params
+    });
+    this.getMonthCalender(true);
+  },
+  goIssueTicket() {
+    wx.navigateTo({
+      url: '/pages/upgrade/issueTicket/issueTicket',
+    })
+  },
+  arriveCus(e) {
+    let status = e.currentTarget.dataset.status;
+    let id = e.currentTarget.dataset.id;
+    if (status == '待履约') {
+      wx.showModal({
+        title: '',
+        content: '确定已经到门?',
+        success: res => {
+          if (res.confirm) {
+            util.request(api.ClockIn, {
+              relationTradeNo: id,
+
+            }, 'POST').then(res => {
+              if (res.errno === 0) {
+                wx.showToast({
+                  title: '操作成功'
+                });
+
+                this.getDayCalendar();
+
+              } else {
+                wx.showToast({
+                  title: res.errmsg,
+                  icon: 'none'
+                });
+                // util.showErrorToast(res.errmsg);
+              }
+            });
+          }
+        }
+      });
+
+    }
+  },
+
+  finishOrder(e) {
+    let status = e.currentTarget.dataset.status;
+    let id = e.currentTarget.dataset.id;
+
+    if (status == '服务中') {
+      wx.showModal({
+        title: '',
+        content: '确定服务完成?',
+        success: res => {
+          if (res.confirm) {
+            util.request(api.ServiceProvided, {
+              relationTradeNo: id,
+
+            }, 'POST').then(res => {
+              if (res.errno === 0) {
+                wx.showToast({
+                  title: '操作成功'
+                });
+                this.getDayCalendar();
+
+
+              } else {
+                wx.showToast({
+                  title: res.errmsg,
+                  icon: 'none'
+                });
+                // util.showErrorToast(res.errmsg);
+              }
+            });
+          }
+        }
+      });
+
+    }
+  },
+  exitLogin: function () {
+    wx.showModal({
+      title: '',
+      confirmColor: '#b4282d',
+      content: '退出登录?',
+      success: function (res) {
+        if (!res.confirm) {
+          return;
+        }
+
+        // util.request(api.AuthLogout, {}, 'POST');
+        app.globalData.hasLogin = false;
+        wx.removeStorageSync('token');
+        wx.removeStorageSync('userInfo');
+        // wx.redirectTo({
+        //   url: '/pages/temp/login/login'
+        // });
+        wx.redirectTo({
+          url: '/pages/index/index'
+        });
+      }
+    })
+
+	},
+	onTabChange(e) {
+
+		this.setData({
+			activeTab: e.detail.name,
+			page:1
+		});
+		app.globalData.activeTab=e.detail.name;
+   this.getDayCalendar();
+	
+  },
+  onReachBottom() {
+    // if (this.data.totalPages > this.data.page) {
+    //   this.setData({
+    //     page: this.data.page + 1
+    //   });
+    //   this.getGoodsList();
+    // } else {
+    //   wx.showToast({
+    //     title: '没有更多工单了',
+    //     icon: 'none',
+    //     duration: 2000
+    //   });
+    //   return false;
+    // }
+	},
+	handleCopy(e) {
+		let  serviceid= e.currentTarget.dataset.serviceid;
+		let item=this.data.serviceList.filter(item=>{return item.serviceId==serviceid});
+		let row=item[0];
+		let address = row.address.slice(0, -5) + '*****'
+		let data = `工单编号:${row.serviceId}\n商品简称:${row.orderType ? row.orderType : ''}\n预约时间:${row.bookTime}\n服务地址:${address}\n服务备注:${row.message}`
+    wx.setClipboardData({
+      data: data,
+      success: function (res) {
+
+        wx.showToast({
+          title: '复制成功',
+          icon: 'none',
+          duration: 2000
+        });
+      }
+    })
+	},
+	// 接单
+	handleTake(e){
+		let  serviceid= e.currentTarget.dataset.serviceid;
+		wx.navigateTo({
+			url: '/pages/temp/takeOrder/takeOrder?serviceid='+serviceid,
+		});
+	
+	},
+		// 转发
+		handleSend(e){
+			let  serviceid= e.currentTarget.dataset.serviceid;
+			wx.navigateToMiniProgram({
+			appId:'wxcd00bbeb981bec8b',
+			path:'/pages/upgrade/tempDetail/tempDetail?id='+serviceid+"&mini=1",
+			envVersion:'release',//develop开发版,trial体验版,release正式版
+			success(res){
+				console.log('跳转小程序成功'+res)
+			},
+			});
+		},
+	// 取消工单
+	handleCancel(e){
+		let  serviceid= e.currentTarget.dataset.serviceid;
+		wx.navigateTo({
+			url: '/pages/temp/cancelOrder/cancelOrder?serviceid='+serviceid,
+		});
+	},
+	// 修改预约
+	handleAppoint(e){
+		let  item= e.currentTarget.dataset.item;
+	 app.globalData.orderInfo=item;
+		wx.navigateTo({
+			url: '/pages/temp/assignOrder/assignOrder',
+		});
+	},
+	// 完成工单
+	handleFinish(e){
+		let  serviceid= e.currentTarget.dataset.serviceid;
+      wx.showModal({
+        title: '',
+        content: '确定要手动完成此服务单吗?',
+        success: res => {
+          if (res.confirm) {
+            util.request(api.CompleteServiceOrder, {
+							serviceId: serviceid
+
+            }, 'GET').then(res => {
+              if (res.errno === 0) {
+                wx.showToast({
+                  title: '操作成功'
+                });
+                this.getDayCalendar();
+
+
+              } else {
+                wx.showToast({
+                  title: res.errmsg,
+                  icon: 'none'
+                });
+                // util.showErrorToast(res.errmsg);
+              }
+            });
+          }
+        }
+      });
+
+   
+	},
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+
+
+
+
+
+
+
+ 
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  },
+
+})

+ 7 - 0
pages/temp/orderBoard/orderBoard.json

@@ -0,0 +1,7 @@
+{ 
+  "navigationBarTitleText": "我的服务单",
+  "navigationBarBackgroundColor": "#fff",
+  "usingComponents": {
+   
+  }
+}

+ 210 - 0
pages/temp/orderBoard/orderBoard.wxml

@@ -0,0 +1,210 @@
+<wxs src="../../../utils/format.wxs" module="format" />
+
+
+
+<view class="whole-page"  > 
+
+
+  <!-- 日历-月维度 -->
+  <!-- wx:if="{{!stickShow}}" -->
+  <view class="calendar-wrapper">
+    <view class="month-title">
+      <view class="month-title-left">
+        <view>工作日历</view>
+        <image mode="aspectFit" src="/static/images/upgrade/icon-calendar.png"></image>
+      </view>
+      <view class="month-title-right">
+        <block>
+          <image bindtap="lastMonth" mode="aspectFit" src="/static/images/upgrade/icon-arrow-left.png"></image>
+          <view bindtap="lastMonth" class="last-month">上月</view>
+        </block>
+        <block>
+          <view class="next-month" bindtap="nextMonth">
+            下月</view>
+          <image bindtap="nextMonth" mode="aspectFit" src="/static/images/upgrade/icon-arrow-right.png"></image>
+        </block>
+      </view>
+
+    </view>
+    <view class="current-month">
+      {{currentMonth}}
+    </view>
+
+    <view class="whole-calendar">
+      <view class="{{currentDay==item1.day?'selected-calendar':''}} calendar-item" wx:for="{{workerDayInfoList}}"
+        wx:for-item="item1" bindtap="switchDay" data-day="{{item1.day}}" wx:key="index1" wx:for-index="index1" data-item="{{item1}}">
+        <view class="calendar-week" wx:if="{{index1<=6}}">
+          {{item1.dayOfWeek}}
+        </view>
+        <view class="calendar-day">
+          {{format.substrText(item1.day,8,10)}}</view>
+        <view class="selected-dot">
+        </view>
+				<!-- <view class="appoint-time" wx:if="{{item1.appointmentCount!=null}}">{{item1.appointmentCount==null?'':(''+item1.appointmentCount)}}</view> -->
+     
+      </view>
+    </view>
+    <!-- 折叠收起 -->
+    <view wx:if="{{!calcendarFold}}" class="fold-calcendar" bindtap="calcendarCollapse">
+      <image mode="aspectFit" src="/static/images/upgrade/icon-unfold.png"></image>
+      <view>收起</view>
+    </view>
+    <view wx:else class="fold-calcendar" bindtap="calcendarCollapse">
+      <image mode="aspectFit" src="/static/images/upgrade/icon-fold.png"></image>
+      <view>展开</view>
+    </view> 
+  </view>
+
+
+
+  <!-- 日历-日维度 -->
+  <!-- wx:if="{{stickShow}}" -->
+  <van-sticky>
+    <!-- 日期 -->
+    <view class="current-date">
+      <view class="day">{{currentDay}}</view>
+      <view class="today" wx:if="{{currentDay==today}}">今天</view> 
+    </view> 
+		<van-tabs active="{{ activeTab }}" color="#1677FF"  id="tabs" bind:change="onTabChange">
+    <van-tab title="匹配中({{waitMatchCount}})" name="7"></van-tab>
+    <van-tab title="待履约({{waitServiceCount}})" name="1"></van-tab>
+		<van-tab title="全部({{totalCount}})" name="0"></van-tab>
+
+  </van-tabs>
+
+  </van-sticky>
+
+
+
+
+  <!-- 服务工单 -->
+  <view  wx:if="{{serviceList.length>0}}">
+  <view class="service-order {{item.status=='已取消'||item.status=='已退款'?'cancel-order':''}}"
+    wx:for="{{serviceList}}" wx:key="index">
+    <view class="service-title">
+      <view class="ser-title-left">
+        <image mode="aspectFit"
+          src="{{item.status=='已取消'?'/static/images/upgrade/order.png':'/static/images/upgrade/order@selected.png'}}">
+        </image>
+        <view>服务工单
+
+        </view>
+      </view>
+      <view class="ser-title-right">
+        <!-- <image mode="aspectFit" src="/static/images/upgrade/jzlife-logo.png"></image> -->
+        <view>{{item.channelName}}</view>
+      </view>
+    </view>
+    <view class="related-info" wx:if="{{item.status!='已取消'}}">
+      <view class="column">
+        <view class="title">相关信息</view>
+        <!-- <view>客户剩余总服务次数:{{item.cusRemain}}次</view> -->
+      </view>
+      <!-- 消息 -->
+      <!-- <view class="notice" wx:if="{{item.rebuySpeach!=''}}">
+       <image mode="aspectFit" src="/static/images/upgrade/icon-alert.png"></image>
+       <view>
+       {{item.rebuySpeach}}
+       </view>
+       
+       </view> -->
+      <!-- <view class="row">服务内容:{{item.goodsName}} </view> -->
+      <!-- <view class="row">客户信息: {{item.syncTag}} {{item.cusStatus}}</view>
+       <view class="column">
+         <view>订单类型:{{item.itemType}}</view>
+         <view>此次服务进度:{{item.serviceProcess}}</view>
+       </view> -->
+      <view class="row">商品简称:{{item.orderType}}</view>
+      <!--<view class="row">需求备注:{{item.preCollectInfo}}</view> -->
+
+    </view>
+    <view class="service-info">
+      <view class="order-num">
+        <view>服务单号:{{item.serviceId}}</view>
+        <image src="/static/images/upgrade/icon-copy.png" mode="aspectFit" class="copy-img" bindtap="copyNum"
+          data-bookno="{{item.serviceId}}"></image>
+      </view>
+      <view class="row service-status">
+        <view>当前状态:{{item.statusVal}}</view>
+
+
+        <!-- 
+        <view class="invite-comment" wx:if="{{item.canEval}}">可邀评</view>
+        <view class="hp-wrapper" wx:if="{{item.evalType=='好评'}}">
+          <image src="/static/images/upgrade/icon-hp.png" mode="aspectFit" class="hp-img" ></image>
+        <text>好评</text>
+        </view> -->
+        <!--        
+        <view class="cp-wrapper" wx:if="{{item.evalType=='差评'}}">
+          <image src="/static/images/upgrade/icon-cp.png" mode="aspectFit" class="cp-img"></image>
+          <text>差评</text>
+        </view> -->
+      </view>
+
+
+			<view class="row">价格:{{item.price}}</view>
+      <view class="row">服务时间:{{item.bookDate}} {{item.bookStartTime}}-{{item.bookEndTime}}</view>
+			<view class="row">服务者姓名:{{item.workerName}}</view>
+			<view class="row">服务者手机号:{{item.workerTel}}</view>
+			<view class="row">预约联系人:{{item.consignee}}</view>
+      
+      <view class="column">
+        <view bindtap="callUp"   data-phone="{{item.mobile}}" data-status="{{item.status}}">预约电话:{{item.mobile}}</view>
+        <image src="/static/images/upgrade/icon-phone1.png" mode="aspectFit" class="callup-img" bindtap="callUp"
+          data-phone="{{item.mobile}}" wx:if="{{item.status=='1'||item.status=='2'||item.status=='7'}}"
+          data-status="{{item.status}}"></image>
+      </view>
+      <view class="address">
+        <view>服务地址:</view>
+        <view class="detail">{{item.address}}</view>
+        <image src="/static/images/upgrade/icon-map1.png" bindtap="openMap" data-status="{{item.status}}"
+          data-lnglat="{{item.addrDetail}}" data-address="{{item.addr}}"
+          wx:if="{{item.status=='待履约'||item.status=='服务中'}}"></image>
+      </view>
+      <view class="row">客户备注:{{item.message}}</view>
+
+    </view>
+    <view class="operate-block">
+
+      <!-- 待履约: 修改 完成 取消
+			     待匹配:接单 转发 修改 取消-->  
+      <view class="operate-item" wx:if="{{item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleTake">
+				<image src="/static/images/upgrade/icon-qjsq.png" mode="widthFix" style="width:28rpx;">
+            </image>
+        <view>接单</view>
+      </view>
+			<view class="operate-item" wx:if="{{item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleCopy">
+				<image src="/static/images/upgrade/icon-copy.png" mode="widthFix" style="width:36rpx;"></image>
+        <view>复制</view>
+      </view>
+			<view class="operate-item" wx:if="{{item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleSend">
+				<image src="/static/images/upgrade/icon-qtjm.png"></image>
+        <view>转发</view>
+      </view>
+			<view class="operate-item" wx:if="{{item.status=='1'||item.status=='7'}}"  data-item="{{item}}" bindtap="handleAppoint">
+				<image src="https://jzmall.lifejingzhi.com/file/wx-servant/icon-gdth.png"></image>
+        <view>修改预约</view>
+      </view>
+			<view class="operate-item" wx:if="{{item.status=='1'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleFinish">
+				<image src="/static/images/upgrade/icon-fwwc.png"></image>
+        <view>完成工单</view>
+      </view>
+			<!-- <view class="operate-item" wx:if="{{item.status=='1'||item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleCancel">
+				<image src="/static/images/upgrade/icon-ycbb.png"></image>
+        <view>取消工单</view>
+      </view> -->
+     
+
+
+
+
+   
+    </view> 
+  </view> 
+</view>
+  <view wx:else="" style="text-align: center;padding: 40rpx;color: #bbb4b4; font-size: 24rpx;">选中日期无服务单</view>
+
+  <!-- 退出登录 -->
+  <!-- <view class="logout" bindtap="exitLogin">退出登录</view> -->
+</view>
+

+ 818 - 0
pages/temp/orderBoard/orderBoard.wxss

@@ -0,0 +1,818 @@
+page {
+  background: #F3F3F3;
+	color: #333;
+	padding:24rpx 0 80rpx;
+  /* padding:0 24rpx; */
+}
+view,text{
+  box-sizing: border-box;
+  color:#333;
+  font-size: 34rpx;
+}
+.whole-page{
+  min-height: 2000rpx;
+
+}
+
+/* 服务单 */
+.service-order{
+  margin:10rpx 24rpx 16rpx;
+  width:702rpx;
+  background: #fff;
+border-radius: 18rpx;
+min-height: 300rpx;
+padding:0 20rpx 32rpx;
+}
+.service-title{
+  height:96rpx;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  line-height: 96rpx;
+}
+.ser-title-left image{
+  width:36rpx;
+  height:36rpx;
+  margin-right:6rpx;
+}
+.ser-title-left view{
+  font-size: 32rpx;
+}
+.ser-title-right view{
+  font-size: 22rpx;
+  color: #09AFFF;
+}
+.ser-title-right image{
+  width:76px;
+  height:36px;
+  margin-right:6rpx;
+}
+.ser-title-left,.ser-title-right{
+  display: flex;
+  align-items: center;
+  height: 96rpx;
+}
+.related-info{
+  background: #F6FFED;
+border-radius: 18rpx;
+padding:24rpx 12rpx 32rpx;
+}
+.related-info .column{
+  height: 60rpx;
+  line-height: 60rpx;
+  display: flex;
+  justify-content: space-between;
+}
+.column .title{
+  font-weight: bold;
+}
+.related-info .row{
+  line-height: 60rpx;
+}
+.notice{
+padding:10rpx 12rpx;
+background: #E6F7FF;
+border-radius: 14rpx;
+display: flex;
+line-height: 36rpx;
+align-items: center;
+}
+.notice image{
+  width:30rpx;
+  height:30rpx;
+  margin-right:20rpx;
+}
+.notice view{
+  color: #09AFFF;
+  font-size: 26rpx;
+}
+.service-info{
+  padding-left:12rpx;
+}
+.service-info .row{
+  line-height: 60rpx;
+}
+.service-info .order-num{
+  height: 60rpx;
+  display: flex;
+  align-items: center;
+}
+.copy-img{
+ width:36rpx;
+ height:36rpx;
+ margin-left:4rpx;
+}
+.service-info .column{
+  height: 60rpx;
+  line-height: 60rpx;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.callup-img{
+  width:36rpx;
+  height: 36rpx;
+}
+.service-info .address{
+  display: flex;
+  margin:6rpx 0;
+  line-height: 48rpx;
+}
+.service-info .address .detail{
+  flex:1;
+}
+.service-info .address image{
+  margin:12rpx 0 0 30rpx;
+  width:36rpx;
+  height: 36rpx;
+}
+.operate-block{
+  display: flex;
+  align-items: center;
+  margin-top:22rpx;
+  height: 40rpx;
+  line-height: 40rpx;
+  justify-content: flex-end;
+}
+.operate-item{
+  display: flex;
+  height: 40rpx;
+  align-items: center;
+  margin-left:10rpx;
+}
+.operate-item image{
+  width:32rpx;
+  height:32rpx;
+  margin-right:4rpx;
+}
+.operate-item view{
+  font-size: 30rpx;
+color: #0EAEFC;
+}
+.operate-item.disable view{
+  color: rgba(0,0,0,0.25);
+}
+/* 日维度 */
+.date-board-wrapper{
+  width: 702rpx;
+height: 250rpx;
+background: #FFFFFF;
+border-radius: 18rpx;
+padding:16rpx 26rpx;
+margin:0 24rpx;
+}
+.date-board{
+  width: 650rpx;
+height: 218rpx;
+background: #E6F7FF;
+border-radius: 15rpx;
+display:flex;
+align-items: center;
+margin-bottom:38rpx;
+}
+view.date-order-left{
+  height:218rpx;
+  width:172rpx;
+  border-right:2rpx solid #e4e4e4;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  font-size:30rpx;
+}
+.date-order-left view{
+  font-size: 30rpx;
+}
+view.date-order-left .number{
+  font-size: 36rpx;
+  height: 50rpx;
+  line-height: 50rpx;
+  margin-bottom:10rpx;
+}
+.date-order-right{
+  display:flex;
+  flex-wrap: wrap;
+  height: 218rpx;
+  flex:1;
+}
+.data-item{
+  height: 100rpx;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: space-around;
+  width:158rpx;
+}
+.data-item .num{
+  font-size: 36rpx;
+  height: 50rpx;
+  color:#E2B650;
+}
+.data-item .item-tag{
+  font-size: 24rpx;
+  height: 36rpx;
+  line-height: 36rpx;
+  border-radius:4rpx;
+  color:#fff;
+  width:120rpx;
+  text-align: center;
+  background:#E2B650;
+}
+.data-item.red .num{
+
+  color: #E85050;
+  } 
+.data-item.red .item-tag{
+  width:74rpx;
+background: #FF5050;
+} 
+.data-item.green .num{
+
+  color: #39CB7F;
+  } 
+  .data-item.green .num text{
+    font-size: 24rpx;
+    color: #39CB7F;
+  }
+.data-item.green .item-tag{
+  width:74rpx;
+background: #39CB7F;
+} 
+.data-item.blue .num{
+
+  color: #09AFFF;
+  } 
+  .data-item.blue .num text{
+    font-size: 24rpx;
+    color: #09AFFF;
+  }
+.data-item.blue .item-tag{
+   
+  width:74rpx;
+  background: #09AFFF;
+} 
+.current-date{
+  height: 70rpx;
+  display:flex;
+  align-items: center;
+  padding-left:48rpx;
+  background:#F3F3F3;
+}
+.current-date .day{
+  color: #09AFFF;
+line-height: 48rpx;
+height: 48rpx;
+font-size: 30rpx;
+border-bottom: 4rpx solid #09afff;
+}
+.current-date .today{
+  width: 64rpx;
+height: 40rpx;
+background: #FFFFFF;
+border-radius: 4rpx;
+border: 2rpx solid #1677FF;
+font-size: 24rpx;
+color:#1677FF;
+margin:8rpx 0 0 8rpx;
+text-align: center;
+}
+/* 请假记录 */
+.leave-fold{
+  width: 702rpx;
+height: 66rpx;
+background: #FFFFFF;
+border-radius: 16rpx;
+display: flex;
+align-items: center;
+justify-content: space-between;
+margin:12rpx 24rpx;
+padding:0 20rpx 0 40rpx;
+}
+.fold-left{
+  font-size: 32rpx;
+}
+.fold-right{
+  display: flex;
+  align-items: center;
+  height: 66rpx;
+
+}
+.fold-right .leave-num{
+  color: #666;
+}
+.fold-right image{
+  width:24rpx;
+  height: 24rpx;
+  margin-left:6rpx;
+}
+.leave-item{
+  width: 702rpx;
+background: #FFFFFF;
+border-radius: 18rpx;
+padding:28rpx 26rpx 40rpx;
+margin:0 24rpx;
+}
+.leave-title{
+  height: 48rpx;
+  display:flex;
+  align-items: center;
+  margin-bottom:16rpx;
+}
+.leave-title image{
+  width:34rpx;
+  height: 34rpx;
+  margin-right:10rpx;
+}
+.leave-title view{
+  font-size: 32rpx;
+  line-height: 48rpx;
+}
+.leave-line{
+  margin-bottom:6rpx;
+  line-height: 48rpx;
+  display:flex ;
+}
+.leave-line view:first-child{
+  width:150rpx;
+}
+.leave-line view:last-child{
+  flex:1;
+}
+.dqjsq{
+  width:110rpx;
+  height: 110rpx;
+  background:#fff;
+  border-radius: 110rpx;
+  position:fixed;
+  z-index: 99;
+  right:64rpx;
+  bottom:254rpx;
+}
+.calendar-wrapper{
+  margin:12rpx 24rpx 0;
+  width:702rpx;
+  border-radius:18rpx;
+  background:#fff;
+  min-height: 200rpx;
+  padding:30rpx 24rpx 18rpx;
+}
+.current-month{
+  margin:12rpx 0 22rpx;
+  height: 48rpx;
+font-size: 28rpx;
+line-height: 48rpx;
+}
+.month-title{
+  height: 48rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.month-title-left{
+  height: 48rpx;
+  display: flex;
+  align-items: center;
+}
+.month-title-left view{
+  font-size: 32rpx;
+}
+.month-title-left image{
+  margin-left:12rpx;
+  width:32rpx;
+  height: 32rpx;
+}
+.month-title-right{
+  display: flex;
+  align-items: center;
+  height: 48rpx;
+}
+.month-title-right image{
+  width:28rpx;
+  height: 28rpx;
+  margin-left:4rpx;
+}
+.last-month{
+  line-height: 48rpx;
+}
+.next-month{
+  line-height: 48rpx;
+  margin-left:14rpx;
+}
+.month-border-wrapper view.date-order-left{
+  justify-content: space-between;
+} 
+.month-order-item{
+  height: 100rpx;
+  display:flex;
+  flex-direction: column;
+  align-items: center;
+}
+view.date-order-left .month-order-item .number{
+  margin-bottom:0;
+}
+.whole-calendar{
+  display: flex;
+  flex-wrap: wrap;
+}
+.calendar-item{
+  display: flex;
+  flex-direction: column;
+  width:92rpx;
+  align-items: flex-end;
+  padding:14rpx 0 6rpx;
+}
+.calendar-week{
+  font-size: 32rpx;
+  color:#999;
+  height: 36rpx;
+  line-height: 36rpx;
+  width: 68rpx;
+  text-align: center;
+}
+.calendar-day{
+  height: 30rpx;
+  line-height: 30rpx;
+  font-size: 32rpx;
+  color:#666;
+  margin:6rpx 0;
+  width: 68rpx;
+  text-align: center;
+}
+.selected-calendar{
+  background: rgba(9,175,255,0.05);
+border-radius: 12rpx;
+}
+.selected-calendar .calendar-week{
+  color:#09afff;
+}
+.selected-calendar .calendar-day{
+  color:#09afff;
+}
+.selected-dot{
+  margin:0 30rpx 6rpx 0;
+  width:6rpx;
+  height: 6rpx;
+  border-radius: 6rpx;
+  background:transparent;
+}
+.selected-calendar .selected-dot{
+  background:#09afff;
+}
+.calendar-order-item .time{
+  /* width: 48rpx;
+  height: 18rpx;
+  line-height: 18rpx;
+  font-size: 12rpx; */
+  width: 68rpx;
+  height: 32rpx;
+  line-height: 32rpx;
+  font-size: 24rpx;
+  border-radius: 4rpx;
+  background: #39CB7F;
+  color:#fff;
+  text-align:center;
+  margin-bottom:8rpx;
+}
+.calendar-order-item .time.pl{
+  background: #09AFFF;
+}
+.calendar-order-item .time.no-finish{
+  background: #fff;
+  color:#39CB7F;
+  border:2rpx solid #39CB7F;
+}
+.calendar-order-item .time.pl.no-finish{
+  background: #fff;
+  color:#09AFFF;
+  border:2rpx solid #09AFFF;
+}
+.eval-wrapper{
+  width:14rpx;
+  height: 32rpx;
+  align-items: center;
+  display: flex;
+  margin-right:2rpx;
+}
+.calendar-order-item{
+  display: flex;
+  width:92rpx;
+  justify-content: flex-end;
+}
+.eval-wrapper image{
+  width:14rpx;
+  height: 14rpx;
+}
+.fold-calcendar{
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  width:140rpx;
+  margin:0 auto;
+}
+.fold-calcendar image{
+  width:36rpx;
+  height: 36rpx;
+}
+.fold-calcendar view{
+  color: #09AFFF;
+  font-size: 24rpx;
+  margin-left:6rpx;
+  line-height: 14rpx;
+}
+.service-status{
+  height:60rpx;
+  align-items: center;
+  display: flex;
+}
+.service-status image{
+  width:24rpx;
+  height:24rpx;
+  margin-right:8rpx;
+}
+.invite-comment{
+  background: #E6F7FF;
+  border-radius: 7rpx;
+  border: 2px solid #91D5FF;
+  color: #096DD9;
+  font-size: 22rpx;
+  width: 92rpx;
+height: 32rpx;
+text-align:center;
+margin:0 10rpx;
+line-height: 24rpx;
+}
+.hp-wrapper{
+  display:flex;
+  align-items: center;
+  margin-right:10rpx;
+  width: 96rpx;
+height: 32rpx;
+background: #F6FFED;
+border-radius: 7rpx;
+border: 2rpx solid #A0D911;
+justify-content: center;
+
+}
+.hp-wrapper text{
+  color: #73D13D;
+  line-height: 24rpx;
+  font-size: 22rpx;
+}
+.cp-wrapper{
+  display:flex;
+  align-items: center;
+  width: 96rpx;
+height: 32rpx;
+background: #FFF2E8;
+border-radius: 7rpx;
+border: 2rpx solid #FA541C;
+justify-content: center;
+
+}
+.cp-wrapper text{
+  color: #FA541C;
+  line-height: 24rpx;
+  font-size: 22rpx;
+}
+.service-order.cancel-order view{
+  color:#aaa;
+}
+.service-order.cancel-order view.blue-font{
+  color:#09AFFF;
+}
+
+.interview{
+  width: 702rpx;
+/* height: 476rpx; */
+background: #FFFFFF;
+border-radius: 18rpx;
+padding:46rpx 24rpx 32rpx 24rpx;
+margin:20rpx 24rpx;
+}
+.interview-title{
+  height:48rpx;
+  display: flex;
+  align-items: center;
+}
+.interview-title image{
+  width:34rpx;
+  height:34rpx;
+  margin-right:14rpx;
+}
+.interview-date{
+  height:48rpx;
+  line-height: 48rpx;
+  margin:70rpx 0 46rpx;
+}
+.interview-location{
+  line-height: 48rpx;
+  margin-bottom:48rpx;
+  padding-right:24rpx;
+}
+.interview-operate{
+  display:flex;
+  align-items: center;
+  justify-content: flex-end;
+  height: 40rpx;
+  color: #0EAEFC;
+}
+.overlay-wrapper{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+  /* z-index:999; */
+  padding:0 50rpx;
+  flex-direction: column;
+ 
+}
+.star-wrapper{
+  width: 650rpx;
+height: 624rpx;
+background: #FFFFFF;
+border-radius: 33rpx;
+border: 1px solid #979797;
+padding:44rpx  40rpx 0;
+display:flex;
+flex-direction: column;
+align-items: center;
+}
+.star-wrapper .title{
+  font-size: 34rpx;
+  height: 48rpx;
+  margin-bottom:40rpx;
+}
+.submit-eval{
+  width: 650rpx;
+height: 110rpx;
+background: #3D7FFF linear-gradient(270deg, rgba(0,202,255,0.5) 0%, rgba(9,175,255,0.5) 100%);
+border-radius: 110rpx;
+line-height: 110rpx;
+font-size: 44rpx;
+text-align: center;
+color:#fff;
+margin-top:40rpx;
+}
+.comment-area{
+  margin-top: 40rpx;
+  height: 280rpx;
+  border: 2rpx solid #ddd;
+  padding: 16rpx;
+  width: 560rpx;
+  box-sizing: border-box;
+  text-align: justify;
+  border-radius: 8rpx;
+}
+view.van-radio__icon-wrap .van-icon{
+  color:#fff;
+  font-size: 32rpx;
+}
+.logout{
+  font-weight: 600;
+color: #716F6F;
+line-height: 42rpx;
+text-decoration: underline;
+margin:34rpx 0  80rpx;
+font-size: 30rpx;
+text-align: center;
+}
+.user-wrapper{
+
+  margin:0 24rpx 16rpx;
+  background: #FFFFFF;
+border-radius: 18rpx;
+padding:28rpx 18rpx 32rpx 24rpx;
+width:702rpx;
+}
+.user-info{
+display: flex;
+align-items: center;
+height:100rpx;
+}
+.user-img{
+  width:148rpx;
+  height: 148rpx;
+  border-radius:148rpx;
+  margin-right:16rpx;
+  background: #eee;
+  margin-top:-100rpx;
+}
+.user-right{
+  /* height: 150rpx; */
+  display: flex;
+  flex-direction: column;
+  /* justify-content: space-between; */
+  flex:1;
+  line-height:32rpx;
+}
+.user-name{
+  display: flex;
+  height: 32rpx;
+  justify-content: space-between;
+  margin-bottom:24rpx;
+}
+.user-name text{
+  font-size: 38rpx;
+  font-weight: bold;
+}
+.city-station{
+  line-height: 40rpx;
+}
+.job-year{
+  color: #096DD9;
+}
+.user-bottom{
+  
+}
+.user-tag{
+  display: flex;
+}
+.user-tag view{
+  background: #E6F7FF;
+border-radius: 4rpx;
+border: 1rpx solid #91D5FF;
+width:74rpx;
+height: 34rpx;
+color: #096DD9;
+font-size: 22rpx;
+text-align: center;
+margin-right:10rpx;
+}
+.health{
+  display: flex;
+}
+.health image{
+  width:36rpx;
+  height: 34rpx;
+  /* margin-right:6rpx; */
+}
+.health text{
+  color: #096DD9;
+  font-size: 26rpx;
+  line-height: 26rpx;
+}
+.company{
+	color: #666;
+	margin:0 0 16rpx 10rpx;
+}
+.recommend{
+	display: flex;
+	height: 68rpx;
+	align-items: center;
+}
+.recommend view{
+	font-size: 32rpx;
+	margin-left:10rpx;
+	
+}
+.recommend view text{
+	font-weight: bold;
+	color:#064952;
+	font-size: 36rpx;
+}
+.recommend .copy-img{
+	width:40rpx;
+	height:40rpx;
+	margin:4rpx 0 0 8rpx;
+}
+
+
+
+
+/*二维码弹框*/
+.myqr{
+  position: absolute;
+  z-index: 999;
+  width: 100%;
+  text-align: center;
+  height: auto;
+}
+.myqr .cancel{
+  width: 60rpx;
+  height: 60rpx;
+  margin-top: 30rpx;
+  margin-left: 480rpx;
+}
+.myqr .img{  
+  width: 480rpx;
+  /* margin-top: 150rpx;  */
+}
+.myqr .btn{  
+  width: 120rpx;
+  height: 120rpx;
+  line-height: 120rpx;
+  margin-top: 40rpx; 
+  padding: 30rpx;
+  background: #ffffff;
+  border-radius:60rpx;
+}
+.appoint-time{
+	width:80rpx;
+	text-align: center;
+	font-size: 26rpx;
+	line-height: 30rpx;
+	background: #fff;
+  color:#39CB7F;
+	/* border:2rpx solid #39CB7F; */
+	border-radius: 8rpx;
+}

+ 45 - 701
pages/temp/serviceOrder/serviceOrder.js

@@ -7,645 +7,74 @@ import moment from 'moment'
 
 Page({
   data: {
-		waitMatchCount:'',
-		watiServiceCount:'',
-		totalCount:'',
+	
 		userInfo:{
 			userName:'',
 			headImg:'',
 			fraName:'',
 		},
-    timer: "",
-    dayCalendar: {
-      day: '',
-      workerOrderInfoDTOList: [],
-      workerName: '',
-
-    },
-    currentMonth: moment(new Date()).format('YYYY-MM'),
-    calcendarFold: true,
-    stickShow: false,
-    today: util.formetdate(new Date()),
-    currentDay: util.formetdate(new Date()),
-    isLeaveFold: true,
-    orderDisable: true,
-    orderDisable1: false,
-    ticketList: [{}, {}],
-    monthInfo: {
-      recCode: '',
-      fraName: '',
-      workerName: ''
-    },
-    workerDayInfoList: [],
-    weekCalendar: [],
-    wholeCalendar: [],
-    myqr_show: false,
-    myqr_url: '',
-		myqr_blur: 0 ,//背景模糊值
-		activeTab:7,
-		page:1,
-		limit:20,
-		serviceList:[]
+		serviceOrder:'',
+		ticket:'',
+		aftersale:'',
+		wmsOrderCount:'',
+   
 
   },
   onPageScroll(e) {
-    // console.log(e.scrollTop);
-    // if(e.scrollTop > 200){
-    //   this.setData({
-    //     stickShow: true
-    //   });
-    // } else {
-    //   this.setData({
-    //     stickShow: false
-    //   });
-    // }
-  },
-  leaveFold() {
-    let fold = this.data.isLeaveFold;
-    this.setData({
-      isLeaveFold: !fold
-    });
-  },
-  copyCode(e) {
-    let code = this.data.monthInfo.recCode;
-    wx.setClipboardData({
-      data: code,
-      success: function (res) {
-
-        wx.showToast({
-          title: '复制成功',
-          icon: 'none',
-          duration: 2000
-        });
-      }
-    })
-  },
-  copyNum(e) {
-    let bookno = e.currentTarget.dataset.bookno;
-    console.log(bookno);
-    wx.setClipboardData({
-      data: bookno,
-      success: function (res) {
-
-        wx.showToast({
-          title: '复制成功',
-          icon: 'none',
-          duration: 2000
-        });
-      }
-    })
-  },
-  callUp(e) {
-    let status = e.currentTarget.dataset.status;
-    let phone = e.currentTarget.dataset.phone;
-    if (status == '1' || status == '2'|| status == '7') {
-      wx.makePhoneCall({
-        phoneNumber: phone
-      });
-    }
-
-  },
-  openMap(e) { //打开地图
-
-    let status = e.currentTarget.dataset.status;
-    let address = e.currentTarget.dataset.address;
-    if (status == '待履约' || status == '服务中') {
-      let lnglat = e.currentTarget.dataset.lnglat.split(',');
-      let lng = '';
-      let lat = "";
-      if (lnglat.length > 0) {
-        lng = Number(lnglat[0]);
-        lat = Number(lnglat[1]);
-      }
-      console.log(lng, lat);
-      wx.openLocation({
-        latitude: lat,
-        longitude: lng,
-        //   name: address,
-        address: address,
-        scale: 28
-      });
-    }
-
-  },
-  goSchedule() {
-    wx.navigateTo({
-      url: '/pages/upgrade/scheduleCalc/scheduleCalc',
-    })
-  },
-  goDetail(e) {
-    let id = e.currentTarget.dataset.id;
-    wx.navigateTo({
-      url: '/pages/upgrade/ticketDetail/ticketDetail?bookTradeNo=' + id,
-    });
-  },
-  evalMaster(e) {
-    let id = e.currentTarget.dataset.id;
-    let workerno = e.currentTarget.dataset.workerno;
-    this.setData({
-      evalMasterShow: true,
-      star: 0,
-      masterComment: '',
-      bookTradeNo: id,
-      workerNo: workerno
-    });
-  },
-  onClickMsterOverlay() {
-    this.setData({
-      evalMasterShow: false,
-    });
-  },
-  onClickDiscipleOverlay() {
-    this.setData({
-      evalDiscipleShow: false,
-    });
-  },
-  onStarChange(event) {
-    this.setData({
-      star: event.detail,
-    });
-  },
-  onRadioChange(event) {
-    this.setData({
-      radioDisciple: event.detail,
-    });
-  },
-  bindMasterComment(e) {
-    this.setData({
-      masterComment: e.detail.value
-    })
-  },
-  bindDiscipleComment(e) {
-    this.setData({
-      discipleComment: e.detail.value
-    })
-  },
-  stop: function () {
-    //阻止弹框冒泡和捕获的空事件,不要删除!!!
-  },
-  submitEvalMaster() {
-    if (this.data.star == 0) {
-      wx.showToast({
-        title: '请选择评价星级',
-        icon: 'none'
-      })
-    } else if (this.data.masterComment == '') {
-      wx.showToast({
-        title: '请输入跟单体会',
-        icon: 'none'
-      })
-    } else {
-      util.request(api.discipleFeedback, {
-        feedback: this.data.discipleComment,
-        level: this.data.star,
-        bookTradeNo: this.data.bookTradeNo,
-        workerNo: this.data.workerNo
-      }, 'GET').then(res => {
-        if (res.errno === 0) {
-          wx.showToast({
-            title: '评价成功',
-            icon: 'none'
-          })
-          this.setData({
-            evalMasterShow: false,
-          });
-          this.getDayCalendar();
-        } else {
-          wx.showToast({
-            title: res.errmsg,
-            icon: 'none'
-          })
-        }
-      });
-
-
-    }
-  },
-  evalDisciple(e) {
-    let id = e.currentTarget.dataset.id;
-    let workerno = e.currentTarget.dataset.workerno;
-    this.setData({
-      evalDiscipleShow: true,
-      radioDisciple: '通过',
-      discipleComment: '',
-      bookTradeNo: id,
-      workerNo: workerno
-    });
+ 
   },
-  submitEvalDisciple() {
-    if (this.data.radioDisciple == '') {
-      wx.showToast({
-        title: '请选择是否通过',
-        icon: 'none'
-      })
-    } else if (this.data.discipleComment == '') {
-      wx.showToast({
-        title: '请输入内容',
-        icon: 'none'
-      })
-    } else {
-      util.request(api.masterFeedback, {
-        remark: this.data.discipleComment,
-        feedback: this.data.radioDisciple,
-        bookTradeNo: this.data.bookTradeNo,
-        workerNo: this.data.workerNo
-      }, 'GET').then(res => {
-        if (res.errno === 0) {
-          wx.showToast({
-            title: '评价成功',
-            icon: 'none'
-          })
-          this.setData({
-            evalDiscipleShow: false,
-          });
-          this.getDayCalendar();
-
-        } else {
-          wx.showToast({
-            title: res.errmsg,
-            icon: 'none'
-          })
-        }
-      });
 
-
-    }
-  },
-  goProblemList(e) {
-    // this.setData({
-    //   navigateType: 1
-    // })
-    let id = e.currentTarget.dataset.id;
-    wx.navigateTo({
-      url: '/pages/problem/list/list?bookTradeNo=' + id,
-    })
-  },
+ 
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
-    //   let current=this.data.wholeCalendar.filter(item=>{return item.day==this.data.currentDay});
-    //   if(current.length==0){
-    //       return false;
-    //   }
-    //   let week=current[0].weekOfYear;
-    //   let weekCalendar=this.data.wholeCalendar.filter(item=>{
-    //     return item.weekOfYear==week;
-    //   });
-    //   this.setData({
-    //      workerDayInfoList:weekCalendar,
-    //      weekCalendar:weekCalendar
-    //   });
-
-
-
-
-    this.getMonthCalender(false, 'first');
-
+  
 
 		let userInfo=wx.getStorageSync('userInfo');
 		console.log(userInfo);
+		app.globalData.userInfo=userInfo;
 		this.setData({
 			userInfo:userInfo
 		});
+		
 
-		// this.getDayCalendar();
-  },
-  closeMyQr() {
-    this.setData({
-      myqr_show: false,
-      myqr_blur: 0
-    });
-  },
-
-  goSaveQrcode: function () { //保存二维码图片
-    let that = this;
-    console.info(that.data.myqr_url);
-    wx.downloadFile({
-      url: that.data.myqr_url,
-      success: function (res) {
-        if (res.statusCode === 200) {
-          let img = res.tempFilePath;
-          wx.saveImageToPhotosAlbum({
-            filePath: img,
-            success(res) {
-              that.closeMyQr();
-              wx.showModal({
-                title: '提示',
-                showCancel:false,
-                content: '此单复购专属二维码图片已保存到您的相册'
-              })
-            },
-            fail(res) {
-              wx.showModal({
-                title: '提示',
-                showCancel:false,
-                content: '网络或授权问题 图片保存失败 请重试'
-              })
-            }
-          })
-        } else
-          wx.showModal({
-            title: '提示',
-            showCancel:false,
-            content: '网络或授权问题 图片保存失败 请重试'
-          })
-      },
-      fail(res) {
-        wx.showModal({
-          title: '提示',
-          showCancel:false,
-          content: '网络或授权问题 图片保存失败 请重试'
-        })
-      }
-    })
-  },
-  getQrCode(e) { //获取复购码 
-    let bookno = e.currentTarget.dataset.bookno;
-    util.request(api.getWorkerQrCode, {
-      bookTradeNo: bookno
-    }, 'GET').then(res => {
-      if (res.errno === 0) {
-        wx.showToast({
-          title: '获取成功',
-          icon: 'none'
-        })
-        this.setData({
-          myqr_show: true,
-          myqr_blur: 20,
-          myqr_url: res.data
-        });
-        wx.pageScrollTo({
-          scrollTop: 0,
-        });
-      } else {
-        wx.showToast({
-          title: res.errmsg,
-          icon: 'none'
-        })
-      }
-    });
-  },
+	},
+	getHomeInfo(){
+		util.request(api.GetHomeInfo, {}, 'GET').then(res => {
+			if (res.errno === 0) {
+			    this.setData({
+						serviceOrder:res.data.serviceOrder,
+						ticket:res.data.ticket,
+						aftersale:res.data.aftersale,
+						wmsOrderCount:res.data.wmsOrderCount
+					})
+			} else {
+				wx.showToast({
+					title: res.errmsg,
+					icon: 'none'
+				})
+			}
+		});
+	},
+ 
   /**
    * 生命周期函数--监听页面显示
    */
   onShow: function () {
-    // this.getDayCalendar();
-    // let timer = setInterval(() => {
-    //   console.log('定时刷新日历数据', new Date());
-    //   this.getMonthCalender();
-    //   this.getDayCalendar();
-    // }, 2 * 60 * 1000);
-    // this.setData({
-    //   timer: timer
-		// });
-		this.setData({
-			activeTab:app.globalData.activeTab,
-			currentDay:app.globalData.currentDay
-		});
-		this.getDayCalendar();
-
+  
+		this.getHomeInfo();
   },
   onHide: function () {
     console.log('onHide');
-    // clearInterval(this.data.timer);
   },
   onUnload: function () {
     console.log('onunload');
-    // clearInterval(this.data.timer);
   },
   /**
    * 页面相关事件处理函数--监听用户下拉动作
    */
-  onPullDownRefresh: function () {
-    this.getMonthCalender();
-    this.setData({
-			page:1
-		});
-    this.getDayCalendar();
-  },
-  getDayCalendar() {
-    wx.showLoading({
-      title: '加载中...',
-    });
-    util.request(api.ServiceList, {
-			reservationStartTime: this.data.currentDay,
-			reservationEndTime:this.data.currentDay,
-			status:this.data.activeTab==0?'':this.data.activeTab,
-			limit:this.data.limit,
-			page:this.data.page
-    }, 'GET').then(res => {
-
-      // console.log(res);
-      wx.hideLoading();
-      if (res.errno === 0) {
-
-        this.setData({
-					totalPages:Math.ceil(res.data.total/this.data.limit)
-				});
-				
-				if (this.data.page == 1) {
-          this.setData({
-						serviceList: res.data.list,
-          });
-        } else{
-					this.setData({
-            serviceList: this.data.serviceList.concat(res.data.list),
-            
-          });
-				}
-         
-      }
-    }).catch(err => {
-      wx.hideLoading();
-    });
-  },
-  getMonthCalender(flag, tag) {
-    wx.showLoading({
-      title: '加载中...',
-    });
-    util.request(api.	GetCalendar, {
-      month: this.data.currentMonth,
-
-    }, 'GET').then(res => {
-      console.log(res);
-      wx.hideLoading();
-      if (res.errno === 0) {
-
-        this.setData({
-         
-          wholeCalendar: res.data
-        });
-        if (flag) {
-          this.setData({
-            calcendarFold: false,
-            workerDayInfoList: this.data.wholeCalendar,
-
-          });
-        }
-        let current = this.data.wholeCalendar.filter(item => {
-          return item.day == this.data.currentDay
-        });
-        if (current.length == 0) {
-          return false;
-        }
-        let week = current[0].weekOfYear;
-        let weekCalendar = this.data.wholeCalendar.filter(item => {
-          return item.weekOfYear == week;
-        });
-        this.setData({
-
-					weekCalendar: weekCalendar,
-					waitMatchCount:current[0].waitMatchCount,
-					waitServiceCount:current[0].waitServiceCount,
-					totalCount:current[0].totalCount
-					
-        });
-        if (tag == 'first') {
-          this.setData({
-            workerDayInfoList: weekCalendar,
-          });
-        }
-        if (this.data.calcendarFold) {
-          this.setData({
-            workerDayInfoList: weekCalendar,
-          });
-        } else {
-          this.setData({
-            workerDayInfoList: this.data.wholeCalendar,
-          });
-        }
-      } else {
-        wx.showToast({
-          title: res.errmsg,
-          duration: 3000,
-          icon: 'none'
-        });
-      }
-
-
-    }).catch(err => {
-      wx.hideLoading();
-    });
-  },
-  switchDay(e) {
-		let day = e.currentTarget.dataset.day;
-		let item=e.currentTarget.dataset.item;
-    this.setData({
-			currentDay: day,
-			waitMatchCount:item.waitMatchCount,
-			waitServiceCount:item.waitServiceCount,
-			totalCount:item.totalCount
-		});
-		app.globalData.currentDay=day;
-    this.getDayCalendar();
-  },
-  calcendarCollapse() {
-    let calcendarFold = this.data.calcendarFold;
-    if (calcendarFold) {
-      this.setData({
-        workerDayInfoList: this.data.wholeCalendar,
-        calcendarFold: !calcendarFold
-      });
-    } else {
-      this.setData({
-        workerDayInfoList: this.data.weekCalendar,
-        calcendarFold: !calcendarFold
-      });
-    }
-
-  },
-  lastMonth() {
-    console.log(this.data);
-    let params = util.getYearMonth(this.data.currentMonth, '-');
-    this.setData({
-      currentMonth: params
-    });
-    this.getMonthCalender(true);
-  },
-  nextMonth() {
-    let params = util.getYearMonth(this.data.currentMonth, '+');
-    console.log(params);
-    this.setData({
-      currentMonth: params
-    });
-    this.getMonthCalender(true);
-  },
-  goIssueTicket() {
-    wx.navigateTo({
-      url: '/pages/upgrade/issueTicket/issueTicket',
-    })
-  },
-  arriveCus(e) {
-    let status = e.currentTarget.dataset.status;
-    let id = e.currentTarget.dataset.id;
-    if (status == '待履约') {
-      wx.showModal({
-        title: '',
-        content: '确定已经到门?',
-        success: res => {
-          if (res.confirm) {
-            util.request(api.ClockIn, {
-              relationTradeNo: id,
 
-            }, 'POST').then(res => {
-              if (res.errno === 0) {
-                wx.showToast({
-                  title: '操作成功'
-                });
-
-                this.getDayCalendar();
-
-              } else {
-                wx.showToast({
-                  title: res.errmsg,
-                  icon: 'none'
-                });
-                // util.showErrorToast(res.errmsg);
-              }
-            });
-          }
-        }
-      });
-
-    }
-  },
-
-  finishOrder(e) {
-    let status = e.currentTarget.dataset.status;
-    let id = e.currentTarget.dataset.id;
-
-    if (status == '服务中') {
-      wx.showModal({
-        title: '',
-        content: '确定服务完成?',
-        success: res => {
-          if (res.confirm) {
-            util.request(api.ServiceProvided, {
-              relationTradeNo: id,
-
-            }, 'POST').then(res => {
-              if (res.errno === 0) {
-                wx.showToast({
-                  title: '操作成功'
-                });
-                this.getDayCalendar();
-
-
-              } else {
-                wx.showToast({
-                  title: res.errmsg,
-                  icon: 'none'
-                });
-                // util.showErrorToast(res.errmsg);
-              }
-            });
-          }
-        }
-      });
-
-    }
-  },
   exitLogin: function () {
     wx.showModal({
       title: '',
@@ -670,117 +99,32 @@ Page({
     })
 
 	},
-	onTabChange(e) {
-
-		this.setData({
-			activeTab: e.detail.name,
-			page:1
+	goService(){
+		wx.navigateTo({
+			url: '/pages/temp/orderBoard/orderBoard'
 		});
-		app.globalData.activeTab=e.detail.name;
-   this.getDayCalendar();
-	
-  },
-  onReachBottom() {
-    // if (this.data.totalPages > this.data.page) {
-    //   this.setData({
-    //     page: this.data.page + 1
-    //   });
-    //   this.getGoodsList();
-    // } else {
-    //   wx.showToast({
-    //     title: '没有更多工单了',
-    //     icon: 'none',
-    //     duration: 2000
-    //   });
-    //   return false;
-    // }
 	},
-	handleCopy(e) {
-		let  serviceid= e.currentTarget.dataset.serviceid;
-		let item=this.data.serviceList.filter(item=>{return item.serviceId==serviceid});
-		let row=item[0];
-		let address = row.address.slice(0, -5) + '*****'
-		let data = `工单编号:${row.serviceId}\n商品简称:${row.orderType ? row.orderType : ''}\n预约时间:${row.bookTime}\n服务地址:${address}\n服务备注:${row.message}`
-    wx.setClipboardData({
-      data: data,
-      success: function (res) {
-
-        wx.showToast({
-          title: '复制成功',
-          icon: 'none',
-          duration: 2000
-        });
-      }
-    })
+	goTicket(){
+		wx.navigateTo({
+			url: '/pages/ticket/ticketList/ticketList'
+		});
 	},
-	// 接单
-	handleTake(e){
-		let  serviceid= e.currentTarget.dataset.serviceid;
+	goRefund(){
 		wx.navigateTo({
-			url: '/pages/temp/takeOrder/takeOrder?serviceid='+serviceid,
+			url: '/pages/refund/refundList/refundList'
 		});
-	
 	},
-		// 转发
-		handleSend(e){
-			let  serviceid= e.currentTarget.dataset.serviceid;
-			wx.navigateToMiniProgram({
-			appId:'wxcd00bbeb981bec8b',
-			path:'/pages/upgrade/tempDetail/tempDetail?id='+serviceid+"&mini=1",
-			envVersion:'release',//develop开发版,trial体验版,release正式版
-			success(res){
-				console.log('跳转小程序成功'+res)
-			},
-			});
-		},
-	// 取消工单
-	handleCancel(e){
-		let  serviceid= e.currentTarget.dataset.serviceid;
+	goMall(){
 		wx.navigateTo({
-			url: '/pages/temp/cancelOrder/cancelOrder?serviceid='+serviceid,
+			url: '/pages/mall/catalog/catalog'
 		});
 	},
-	// 修改预约
-	handleAppoint(e){
-		let  item= e.currentTarget.dataset.item;
-	 app.globalData.orderInfo=item;
+	goOrder(){
 		wx.navigateTo({
-			url: '/pages/temp/assignOrder/assignOrder',
+			url: '/pages/mall/order/order'
 		});
 	},
-	// 完成工单
-	handleFinish(e){
-		let  serviceid= e.currentTarget.dataset.serviceid;
-      wx.showModal({
-        title: '',
-        content: '确定要手动完成此服务单吗?',
-        success: res => {
-          if (res.confirm) {
-            util.request(api.CompleteServiceOrder, {
-							serviceId: serviceid
-
-            }, 'GET').then(res => {
-              if (res.errno === 0) {
-                wx.showToast({
-                  title: '操作成功'
-                });
-                this.getDayCalendar();
-
 
-              } else {
-                wx.showToast({
-                  title: res.errmsg,
-                  icon: 'none'
-                });
-                // util.showErrorToast(res.errmsg);
-              }
-            });
-          }
-        }
-      });
-
-   
-	},
   /**
    * 生命周期函数--监听页面初次渲染完成
    */

+ 2 - 2
pages/temp/serviceOrder/serviceOrder.json

@@ -1,6 +1,6 @@
 { 
-  "navigationBarTitleText": "我的服务单",
-  "navigationBarBackgroundColor": "#F3F3F3",
+  "navigationBarTitleText": "工作台",
+  "navigationBarBackgroundColor": "#fff",
   "usingComponents": {
    
   }

+ 45 - 212
pages/temp/serviceOrder/serviceOrder.wxml

@@ -1,25 +1,14 @@
 <wxs src="../../../utils/format.wxs" module="format" />
 
-<view class="myqr" wx:if="{{myqr_show}}">
-	<view>
-		<image class="cancel" src="/static/images/cancel.png" bindtouchstart="closeMyQr" ></image>
-	</view>
-	<view>
-     <image class="img" src="{{myqr_url}}" mode="widthFix"/>
-	 </view>
-	 <view>
-     <image class="btn" bindtap="goSaveQrcode" src="/static/images/right.png"/>
-	 </view>
-</view>
 
-<view class="whole-page"  style="filter:blur({{myqr_blur}}rpx)"> 
+<view class="whole-page"  > 
   <view class="user-wrapper">
     <view class="user-info">
       <image class="user-img" src="{{userInfo.headImg?userInfo.headImg:'/static/images/upgrade/head-user.png'}}" mode="aspectFill"></image>
       <view class="user-right">
         <view class="user-name">
           <view> <text>{{userInfo.userName}}</text> </view>
-					<view class="job-year"  style="font-size: 26rpx;color:#777" bindtap="exitLogin">退出登录</view>
+					<view class="logout-text"  bindtap="exitLogin">退出登录</view>
           <!-- <view class="job-year" wx:if="{{momthInfo.state==1}}">已上线</view>
           <view class="job-year" wx:if="{{momthInfo.state==0}}">审核中</view> -->
         </view>
@@ -42,206 +31,50 @@
     </view>
   </view>
 
-  <!-- 日历-月维度 -->
-  <!-- wx:if="{{!stickShow}}" -->
-  <view class="calendar-wrapper">
-    <view class="month-title">
-      <view class="month-title-left">
-        <view>工作日历</view>
-        <image mode="aspectFit" src="/static/images/upgrade/icon-calendar.png"></image>
-      </view>
-      <view class="month-title-right">
-        <block>
-          <image bindtap="lastMonth" mode="aspectFit" src="/static/images/upgrade/icon-arrow-left.png"></image>
-          <view bindtap="lastMonth" class="last-month">上月</view>
-        </block>
-        <block>
-          <view class="next-month" bindtap="nextMonth">
-            下月</view>
-          <image bindtap="nextMonth" mode="aspectFit" src="/static/images/upgrade/icon-arrow-right.png"></image>
-        </block>
-      </view>
-
-    </view>
-    <view class="current-month">
-      {{currentMonth}}
-    </view>
-
-    <view class="whole-calendar">
-      <view class="{{currentDay==item1.day?'selected-calendar':''}} calendar-item" wx:for="{{workerDayInfoList}}"
-        wx:for-item="item1" bindtap="switchDay" data-day="{{item1.day}}" wx:key="index1" wx:for-index="index1" data-item="{{item1}}">
-        <view class="calendar-week" wx:if="{{index1<=6}}">
-          {{item1.dayOfWeek}}
-        </view>
-        <view class="calendar-day">
-          {{format.substrText(item1.day,8,10)}}</view>
-        <view class="selected-dot">
-        </view>
-				<!-- <view class="appoint-time" wx:if="{{item1.appointmentCount!=null}}">{{item1.appointmentCount==null?'':(''+item1.appointmentCount)}}</view> -->
-     
-      </view>
-    </view>
-    <!-- 折叠收起 -->
-    <view wx:if="{{!calcendarFold}}" class="fold-calcendar" bindtap="calcendarCollapse">
-      <image mode="aspectFit" src="/static/images/upgrade/icon-unfold.png"></image>
-      <view>收起</view>
-    </view>
-    <view wx:else class="fold-calcendar" bindtap="calcendarCollapse">
-      <image mode="aspectFit" src="/static/images/upgrade/icon-fold.png"></image>
-      <view>展开</view>
-    </view> 
-  </view>
+ <view class="dashboard">
+ <view class="module-item" bindtap="goService">
+     <view class="title">
+			服务单
+		 </view>
+		 <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-service.png" mode="aspectFit" style="width:80rpx;height:80rpx;"></image>
+		 <view class="board-num">{{serviceOrder}} 单</view>
+
+ </view>
+ <view class="module-item" bindtap="goTicket">
+     <view class="title">
+			咨询投诉
+		 </view>
+		 <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-ticket.png" mode="aspectFit" style="width:100rpx;height:100rpx;"></image>
+		 <view class="board-num">{{ticket}} 单</view>
+
+ </view>
+ <view class="module-item" bindtap="goRefund">
+     <view class="title">
+			退款审核
+		 </view>
+		 <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-refund.png" mode="aspectFill"></image>
+		 <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>
 
 
-
-  <!-- 日历-日维度 -->
-  <!-- wx:if="{{stickShow}}" -->
-  <van-sticky>
-    <!-- 日期 -->
-    <view class="current-date">
-      <view class="day">{{currentDay}}</view>
-      <view class="today" wx:if="{{currentDay==today}}">今天</view> 
-    </view> 
-		<van-tabs active="{{ activeTab }}" color="#1677FF"  id="tabs" bind:change="onTabChange">
-    <van-tab title="匹配中({{waitMatchCount}})" name="7"></van-tab>
-    <van-tab title="待履约({{waitServiceCount}})" name="1"></van-tab>
-		<van-tab title="全部({{totalCount}})" name="0"></van-tab>
-
-  </van-tabs>
-
-  </van-sticky>
-
-
-
-
-  <!-- 服务工单 -->
-  <view  wx:if="{{serviceList.length>0}}">
-  <view class="service-order {{item.status=='已取消'||item.status=='已退款'?'cancel-order':''}}"
-    wx:for="{{serviceList}}" wx:key="index">
-    <view class="service-title">
-      <view class="ser-title-left">
-        <image mode="aspectFit"
-          src="{{item.status=='已取消'?'/static/images/upgrade/order.png':'/static/images/upgrade/order@selected.png'}}">
-        </image>
-        <view>服务工单
-
-        </view>
-      </view>
-      <view class="ser-title-right">
-        <image mode="aspectFit" src="/static/images/upgrade/jzlife-logo.png"></image>
-        <view>{{item.channel}}</view>
-      </view>
-    </view>
-    <view class="related-info" wx:if="{{item.status!='已取消'}}">
-      <view class="column">
-        <view class="title">相关信息</view>
-        <!-- <view>客户剩余总服务次数:{{item.cusRemain}}次</view> -->
-      </view>
-      <!-- 消息 -->
-      <!-- <view class="notice" wx:if="{{item.rebuySpeach!=''}}">
-       <image mode="aspectFit" src="/static/images/upgrade/icon-alert.png"></image>
-       <view>
-       {{item.rebuySpeach}}
-       </view>
-       
-       </view> -->
-      <!-- <view class="row">服务内容:{{item.goodsName}} </view> -->
-      <!-- <view class="row">客户信息: {{item.syncTag}} {{item.cusStatus}}</view>
-       <view class="column">
-         <view>订单类型:{{item.itemType}}</view>
-         <view>此次服务进度:{{item.serviceProcess}}</view>
-       </view> -->
-      <view class="row">商品简称:{{item.orderType}}</view>
-      <!--<view class="row">需求备注:{{item.preCollectInfo}}</view> -->
-
-    </view>
-    <view class="service-info">
-      <view class="order-num">
-        <view>服务单号:{{item.serviceId}}</view>
-        <image src="/static/images/upgrade/icon-copy.png" mode="aspectFit" class="copy-img" bindtap="copyNum"
-          data-bookno="{{item.serviceId}}"></image>
-      </view>
-      <view class="row service-status">
-        <view>当前状态:{{item.statusVal}}</view>
-
-
-        <!-- 
-        <view class="invite-comment" wx:if="{{item.canEval}}">可邀评</view>
-        <view class="hp-wrapper" wx:if="{{item.evalType=='好评'}}">
-          <image src="/static/images/upgrade/icon-hp.png" mode="aspectFit" class="hp-img" ></image>
-        <text>好评</text>
-        </view> -->
-        <!--        
-        <view class="cp-wrapper" wx:if="{{item.evalType=='差评'}}">
-          <image src="/static/images/upgrade/icon-cp.png" mode="aspectFit" class="cp-img"></image>
-          <text>差评</text>
-        </view> -->
-      </view>
-
-
-			<view class="row">价格:{{item.price}}</view>
-      <view class="row">服务时间:{{item.bookDate}} {{item.bookStartTime}}-{{item.bookEndTime}}</view>
-			<view class="row">服务者姓名:{{item.workerName}}</view>
-			<view class="row">服务者手机号:{{item.workerTel}}</view>
-			<view class="row">预约联系人:{{item.consignee}}</view>
-      
-      <view class="column">
-        <view bindtap="callUp"   data-phone="{{item.mobile}}" data-status="{{item.status}}">预约电话:{{item.mobile}}</view>
-        <image src="/static/images/upgrade/icon-phone1.png" mode="aspectFit" class="callup-img" bindtap="callUp"
-          data-phone="{{item.mobile}}" wx:if="{{item.status=='1'||item.status=='2'||item.status=='7'}}"
-          data-status="{{item.status}}"></image>
-      </view>
-      <view class="address">
-        <view>服务地址:</view>
-        <view class="detail">{{item.address}}</view>
-        <image src="/static/images/upgrade/icon-map1.png" bindtap="openMap" data-status="{{item.status}}"
-          data-lnglat="{{item.addrDetail}}" data-address="{{item.addr}}"
-          wx:if="{{item.status=='待履约'||item.status=='服务中'}}"></image>
-      </view>
-      <view class="row">客户备注:{{item.message}}</view>
-
-    </view>
-    <view class="operate-block">
-
-      <!-- 待履约: 修改 完成 取消
-			     待匹配:接单 转发 修改 取消-->  
-      <view class="operate-item" wx:if="{{item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleTake">
-				<image src="/static/images/upgrade/icon-qjsq.png" mode="widthFix" style="width:28rpx;">
-            </image>
-        <view>接单</view>
-      </view>
-			<view class="operate-item" wx:if="{{item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleCopy">
-				<image src="/static/images/upgrade/icon-copy.png" mode="widthFix" style="width:36rpx;"></image>
-        <view>复制</view>
-      </view>
-			<view class="operate-item" wx:if="{{item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleSend">
-				<image src="/static/images/upgrade/icon-qtjm.png"></image>
-        <view>转发</view>
-      </view>
-			<view class="operate-item" wx:if="{{item.status=='1'||item.status=='7'}}"  data-item="{{item}}" bindtap="handleAppoint">
-				<image src="https://jzmall.lifejingzhi.com/file/wx-servant/icon-gdth.png"></image>
-        <view>修改预约</view>
-      </view>
-			<view class="operate-item" wx:if="{{item.status=='1'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleFinish">
-				<image src="/static/images/upgrade/icon-fwwc.png"></image>
-        <view>完成工单</view>
-      </view>
-			<view class="operate-item" wx:if="{{item.status=='1'||item.status=='7'}}"  data-serviceid="{{item.serviceId}}" bindtap="handleCancel">
-				<image src="/static/images/upgrade/icon-ycbb.png"></image>
-        <view>取消工单</view>
-      </view>
-     
-
-
-
-
-   
-    </view> 
-  </view> 
-</view>
-  <view wx:else="" style="text-align: center;padding: 40rpx;color: #bbb4b4; font-size: 24rpx;">选中日期无服务单</view>
-
-  <!-- 退出登录 -->
-  <!-- <view class="logout" bindtap="exitLogin">退出登录</view> -->
 </view>
 

+ 42 - 692
pages/temp/serviceOrder/serviceOrder.wxss

@@ -1,7 +1,7 @@
 page {
   background: #F3F3F3;
 	color: #333;
-	padding:80rpx 0;
+	padding:24rpx 0 40rpx;
   /* padding:0 24rpx; */
 }
 view,text{
@@ -10,659 +10,10 @@ view,text{
   font-size: 34rpx;
 }
 .whole-page{
-  min-height: 2000rpx;
+  min-height: 1000rpx;
 
 }
 
-/* 服务单 */
-.service-order{
-  margin:10rpx 24rpx 16rpx;
-  width:702rpx;
-  background: #fff;
-border-radius: 18rpx;
-min-height: 300rpx;
-padding:0 20rpx 32rpx;
-}
-.service-title{
-  height:96rpx;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  line-height: 96rpx;
-}
-.ser-title-left image{
-  width:36rpx;
-  height:36rpx;
-  margin-right:6rpx;
-}
-.ser-title-left view{
-  font-size: 32rpx;
-}
-.ser-title-right view{
-  font-size: 22rpx;
-  color: #09AFFF;
-}
-.ser-title-right image{
-  width:76px;
-  height:36px;
-  margin-right:6rpx;
-}
-.ser-title-left,.ser-title-right{
-  display: flex;
-  align-items: center;
-  height: 96rpx;
-}
-.related-info{
-  background: #F6FFED;
-border-radius: 18rpx;
-padding:24rpx 12rpx 32rpx;
-}
-.related-info .column{
-  height: 60rpx;
-  line-height: 60rpx;
-  display: flex;
-  justify-content: space-between;
-}
-.column .title{
-  font-weight: bold;
-}
-.related-info .row{
-  line-height: 60rpx;
-}
-.notice{
-padding:10rpx 12rpx;
-background: #E6F7FF;
-border-radius: 14rpx;
-display: flex;
-line-height: 36rpx;
-align-items: center;
-}
-.notice image{
-  width:30rpx;
-  height:30rpx;
-  margin-right:20rpx;
-}
-.notice view{
-  color: #09AFFF;
-  font-size: 26rpx;
-}
-.service-info{
-  padding-left:12rpx;
-}
-.service-info .row{
-  line-height: 60rpx;
-}
-.service-info .order-num{
-  height: 60rpx;
-  display: flex;
-  align-items: center;
-}
-.copy-img{
- width:36rpx;
- height:36rpx;
- margin-left:4rpx;
-}
-.service-info .column{
-  height: 60rpx;
-  line-height: 60rpx;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-.callup-img{
-  width:36rpx;
-  height: 36rpx;
-}
-.service-info .address{
-  display: flex;
-  margin:6rpx 0;
-  line-height: 48rpx;
-}
-.service-info .address .detail{
-  flex:1;
-}
-.service-info .address image{
-  margin:12rpx 0 0 30rpx;
-  width:36rpx;
-  height: 36rpx;
-}
-.operate-block{
-  display: flex;
-  align-items: center;
-  margin-top:22rpx;
-  height: 40rpx;
-  line-height: 40rpx;
-  justify-content: flex-end;
-}
-.operate-item{
-  display: flex;
-  height: 40rpx;
-  align-items: center;
-  margin-left:10rpx;
-}
-.operate-item image{
-  width:32rpx;
-  height:32rpx;
-  margin-right:4rpx;
-}
-.operate-item view{
-  font-size: 30rpx;
-color: #0EAEFC;
-}
-.operate-item.disable view{
-  color: rgba(0,0,0,0.25);
-}
-/* 日维度 */
-.date-board-wrapper{
-  width: 702rpx;
-height: 250rpx;
-background: #FFFFFF;
-border-radius: 18rpx;
-padding:16rpx 26rpx;
-margin:0 24rpx;
-}
-.date-board{
-  width: 650rpx;
-height: 218rpx;
-background: #E6F7FF;
-border-radius: 15rpx;
-display:flex;
-align-items: center;
-margin-bottom:38rpx;
-}
-view.date-order-left{
-  height:218rpx;
-  width:172rpx;
-  border-right:2rpx solid #e4e4e4;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  font-size:30rpx;
-}
-.date-order-left view{
-  font-size: 30rpx;
-}
-view.date-order-left .number{
-  font-size: 36rpx;
-  height: 50rpx;
-  line-height: 50rpx;
-  margin-bottom:10rpx;
-}
-.date-order-right{
-  display:flex;
-  flex-wrap: wrap;
-  height: 218rpx;
-  flex:1;
-}
-.data-item{
-  height: 100rpx;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: space-around;
-  width:158rpx;
-}
-.data-item .num{
-  font-size: 36rpx;
-  height: 50rpx;
-  color:#E2B650;
-}
-.data-item .item-tag{
-  font-size: 24rpx;
-  height: 36rpx;
-  line-height: 36rpx;
-  border-radius:4rpx;
-  color:#fff;
-  width:120rpx;
-  text-align: center;
-  background:#E2B650;
-}
-.data-item.red .num{
-
-  color: #E85050;
-  } 
-.data-item.red .item-tag{
-  width:74rpx;
-background: #FF5050;
-} 
-.data-item.green .num{
-
-  color: #39CB7F;
-  } 
-  .data-item.green .num text{
-    font-size: 24rpx;
-    color: #39CB7F;
-  }
-.data-item.green .item-tag{
-  width:74rpx;
-background: #39CB7F;
-} 
-.data-item.blue .num{
-
-  color: #09AFFF;
-  } 
-  .data-item.blue .num text{
-    font-size: 24rpx;
-    color: #09AFFF;
-  }
-.data-item.blue .item-tag{
-   
-  width:74rpx;
-  background: #09AFFF;
-} 
-.current-date{
-  height: 70rpx;
-  display:flex;
-  align-items: center;
-  padding-left:48rpx;
-  background:#F3F3F3;
-}
-.current-date .day{
-  color: #09AFFF;
-line-height: 48rpx;
-height: 48rpx;
-font-size: 30rpx;
-border-bottom: 4rpx solid #09afff;
-}
-.current-date .today{
-  width: 64rpx;
-height: 40rpx;
-background: #FFFFFF;
-border-radius: 4rpx;
-border: 2rpx solid #1677FF;
-font-size: 24rpx;
-color:#1677FF;
-margin:8rpx 0 0 8rpx;
-text-align: center;
-}
-/* 请假记录 */
-.leave-fold{
-  width: 702rpx;
-height: 66rpx;
-background: #FFFFFF;
-border-radius: 16rpx;
-display: flex;
-align-items: center;
-justify-content: space-between;
-margin:12rpx 24rpx;
-padding:0 20rpx 0 40rpx;
-}
-.fold-left{
-  font-size: 32rpx;
-}
-.fold-right{
-  display: flex;
-  align-items: center;
-  height: 66rpx;
-
-}
-.fold-right .leave-num{
-  color: #666;
-}
-.fold-right image{
-  width:24rpx;
-  height: 24rpx;
-  margin-left:6rpx;
-}
-.leave-item{
-  width: 702rpx;
-background: #FFFFFF;
-border-radius: 18rpx;
-padding:28rpx 26rpx 40rpx;
-margin:0 24rpx;
-}
-.leave-title{
-  height: 48rpx;
-  display:flex;
-  align-items: center;
-  margin-bottom:16rpx;
-}
-.leave-title image{
-  width:34rpx;
-  height: 34rpx;
-  margin-right:10rpx;
-}
-.leave-title view{
-  font-size: 32rpx;
-  line-height: 48rpx;
-}
-.leave-line{
-  margin-bottom:6rpx;
-  line-height: 48rpx;
-  display:flex ;
-}
-.leave-line view:first-child{
-  width:150rpx;
-}
-.leave-line view:last-child{
-  flex:1;
-}
-.dqjsq{
-  width:110rpx;
-  height: 110rpx;
-  background:#fff;
-  border-radius: 110rpx;
-  position:fixed;
-  z-index: 99;
-  right:64rpx;
-  bottom:254rpx;
-}
-.calendar-wrapper{
-  margin:12rpx 24rpx 0;
-  width:702rpx;
-  border-radius:18rpx;
-  background:#fff;
-  min-height: 200rpx;
-  padding:30rpx 24rpx 18rpx;
-}
-.current-month{
-  margin:12rpx 0 22rpx;
-  height: 48rpx;
-font-size: 28rpx;
-line-height: 48rpx;
-}
-.month-title{
-  height: 48rpx;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-.month-title-left{
-  height: 48rpx;
-  display: flex;
-  align-items: center;
-}
-.month-title-left view{
-  font-size: 32rpx;
-}
-.month-title-left image{
-  margin-left:12rpx;
-  width:32rpx;
-  height: 32rpx;
-}
-.month-title-right{
-  display: flex;
-  align-items: center;
-  height: 48rpx;
-}
-.month-title-right image{
-  width:28rpx;
-  height: 28rpx;
-  margin-left:4rpx;
-}
-.last-month{
-  line-height: 48rpx;
-}
-.next-month{
-  line-height: 48rpx;
-  margin-left:14rpx;
-}
-.month-border-wrapper view.date-order-left{
-  justify-content: space-between;
-} 
-.month-order-item{
-  height: 100rpx;
-  display:flex;
-  flex-direction: column;
-  align-items: center;
-}
-view.date-order-left .month-order-item .number{
-  margin-bottom:0;
-}
-.whole-calendar{
-  display: flex;
-  flex-wrap: wrap;
-}
-.calendar-item{
-  display: flex;
-  flex-direction: column;
-  width:92rpx;
-  align-items: flex-end;
-  padding:14rpx 0 6rpx;
-}
-.calendar-week{
-  font-size: 32rpx;
-  color:#999;
-  height: 36rpx;
-  line-height: 36rpx;
-  width: 68rpx;
-  text-align: center;
-}
-.calendar-day{
-  height: 30rpx;
-  line-height: 30rpx;
-  font-size: 32rpx;
-  color:#666;
-  margin:6rpx 0;
-  width: 68rpx;
-  text-align: center;
-}
-.selected-calendar{
-  background: rgba(9,175,255,0.05);
-border-radius: 12rpx;
-}
-.selected-calendar .calendar-week{
-  color:#09afff;
-}
-.selected-calendar .calendar-day{
-  color:#09afff;
-}
-.selected-dot{
-  margin:0 30rpx 6rpx 0;
-  width:6rpx;
-  height: 6rpx;
-  border-radius: 6rpx;
-  background:transparent;
-}
-.selected-calendar .selected-dot{
-  background:#09afff;
-}
-.calendar-order-item .time{
-  /* width: 48rpx;
-  height: 18rpx;
-  line-height: 18rpx;
-  font-size: 12rpx; */
-  width: 68rpx;
-  height: 32rpx;
-  line-height: 32rpx;
-  font-size: 24rpx;
-  border-radius: 4rpx;
-  background: #39CB7F;
-  color:#fff;
-  text-align:center;
-  margin-bottom:8rpx;
-}
-.calendar-order-item .time.pl{
-  background: #09AFFF;
-}
-.calendar-order-item .time.no-finish{
-  background: #fff;
-  color:#39CB7F;
-  border:2rpx solid #39CB7F;
-}
-.calendar-order-item .time.pl.no-finish{
-  background: #fff;
-  color:#09AFFF;
-  border:2rpx solid #09AFFF;
-}
-.eval-wrapper{
-  width:14rpx;
-  height: 32rpx;
-  align-items: center;
-  display: flex;
-  margin-right:2rpx;
-}
-.calendar-order-item{
-  display: flex;
-  width:92rpx;
-  justify-content: flex-end;
-}
-.eval-wrapper image{
-  width:14rpx;
-  height: 14rpx;
-}
-.fold-calcendar{
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  width:140rpx;
-  margin:0 auto;
-}
-.fold-calcendar image{
-  width:36rpx;
-  height: 36rpx;
-}
-.fold-calcendar view{
-  color: #09AFFF;
-  font-size: 24rpx;
-  margin-left:6rpx;
-  line-height: 14rpx;
-}
-.service-status{
-  height:60rpx;
-  align-items: center;
-  display: flex;
-}
-.service-status image{
-  width:24rpx;
-  height:24rpx;
-  margin-right:8rpx;
-}
-.invite-comment{
-  background: #E6F7FF;
-  border-radius: 7rpx;
-  border: 2px solid #91D5FF;
-  color: #096DD9;
-  font-size: 22rpx;
-  width: 92rpx;
-height: 32rpx;
-text-align:center;
-margin:0 10rpx;
-line-height: 24rpx;
-}
-.hp-wrapper{
-  display:flex;
-  align-items: center;
-  margin-right:10rpx;
-  width: 96rpx;
-height: 32rpx;
-background: #F6FFED;
-border-radius: 7rpx;
-border: 2rpx solid #A0D911;
-justify-content: center;
-
-}
-.hp-wrapper text{
-  color: #73D13D;
-  line-height: 24rpx;
-  font-size: 22rpx;
-}
-.cp-wrapper{
-  display:flex;
-  align-items: center;
-  width: 96rpx;
-height: 32rpx;
-background: #FFF2E8;
-border-radius: 7rpx;
-border: 2rpx solid #FA541C;
-justify-content: center;
-
-}
-.cp-wrapper text{
-  color: #FA541C;
-  line-height: 24rpx;
-  font-size: 22rpx;
-}
-.service-order.cancel-order view{
-  color:#aaa;
-}
-.service-order.cancel-order view.blue-font{
-  color:#09AFFF;
-}
-
-.interview{
-  width: 702rpx;
-/* height: 476rpx; */
-background: #FFFFFF;
-border-radius: 18rpx;
-padding:46rpx 24rpx 32rpx 24rpx;
-margin:20rpx 24rpx;
-}
-.interview-title{
-  height:48rpx;
-  display: flex;
-  align-items: center;
-}
-.interview-title image{
-  width:34rpx;
-  height:34rpx;
-  margin-right:14rpx;
-}
-.interview-date{
-  height:48rpx;
-  line-height: 48rpx;
-  margin:70rpx 0 46rpx;
-}
-.interview-location{
-  line-height: 48rpx;
-  margin-bottom:48rpx;
-  padding-right:24rpx;
-}
-.interview-operate{
-  display:flex;
-  align-items: center;
-  justify-content: flex-end;
-  height: 40rpx;
-  color: #0EAEFC;
-}
-.overlay-wrapper{
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  height: 100%;
-  /* z-index:999; */
-  padding:0 50rpx;
-  flex-direction: column;
- 
-}
-.star-wrapper{
-  width: 650rpx;
-height: 624rpx;
-background: #FFFFFF;
-border-radius: 33rpx;
-border: 1px solid #979797;
-padding:44rpx  40rpx 0;
-display:flex;
-flex-direction: column;
-align-items: center;
-}
-.star-wrapper .title{
-  font-size: 34rpx;
-  height: 48rpx;
-  margin-bottom:40rpx;
-}
-.submit-eval{
-  width: 650rpx;
-height: 110rpx;
-background: #3D7FFF linear-gradient(270deg, rgba(0,202,255,0.5) 0%, rgba(9,175,255,0.5) 100%);
-border-radius: 110rpx;
-line-height: 110rpx;
-font-size: 44rpx;
-text-align: center;
-color:#fff;
-margin-top:40rpx;
-}
-.comment-area{
-  margin-top: 40rpx;
-  height: 280rpx;
-  border: 2rpx solid #ddd;
-  padding: 16rpx;
-  width: 560rpx;
-  box-sizing: border-box;
-  text-align: justify;
-  border-radius: 8rpx;
-}
 view.van-radio__icon-wrap .van-icon{
   color:#fff;
   font-size: 32rpx;
@@ -678,7 +29,7 @@ text-align: center;
 }
 .user-wrapper{
 
-  margin:0 24rpx 16rpx;
+  margin:0 24rpx 24rpx;
   background: #FFFFFF;
 border-radius: 18rpx;
 padding:28rpx 18rpx 32rpx 24rpx;
@@ -687,7 +38,7 @@ width:702rpx;
 .user-info{
 display: flex;
 align-items: center;
-height:100rpx;
+height:160rpx;
 }
 .user-img{
   width:148rpx;
@@ -695,7 +46,7 @@ height:100rpx;
   border-radius:148rpx;
   margin-right:16rpx;
   background: #eee;
-  margin-top:-100rpx;
+  /* margin-top:-100rpx; */
 }
 .user-right{
   /* height: 150rpx; */
@@ -722,7 +73,7 @@ height:100rpx;
   color: #096DD9;
 }
 .user-bottom{
-  
+  margin-top:16rpx;
 }
 .user-tag{
   display: flex;
@@ -775,44 +126,43 @@ margin-right:10rpx;
 	height:40rpx;
 	margin:4rpx 0 0 8rpx;
 }
-
-
-
-
-/*二维码弹框*/
-.myqr{
-  position: absolute;
-  z-index: 999;
-  width: 100%;
-  text-align: center;
-  height: auto;
+.logout-text{
+	color: #09AFFF;
+	font-size: 28rpx;
+	text-decoration: underline;
+	font-weight: normal;
+}
+.dashboard{
+	padding:0 0 0 24rpx;
+	display: flex;
+	flex-wrap: wrap;
+}
+.module-item{
+	display: flex;
+	flex-direction: column;
+	justify-content: space-between;
+	align-items: center;
+	width: 220rpx;
+height: 324rpx;
+background: #FFFFFF;
+border-radius: 18rpx;
+padding:30rpx 24rpx;
+margin:0 20rpx 20rpx 0;
 }
-.myqr .cancel{
-  width: 60rpx;
-  height: 60rpx;
-  margin-top: 30rpx;
-  margin-left: 480rpx;
+.module-item .title{
+	height: 46rpx;
+	line-height: 46rpx;
+	font-size: 32rpx;
+	font-weight: bold;
+	align-self: flex-start;
 }
-.myqr .img{  
-  width: 480rpx;
-  /* margin-top: 150rpx;  */
+.module-item  image{
+	width:88rpx;
+	height:88rpx;
 }
-.myqr .btn{  
-  width: 120rpx;
-  height: 120rpx;
-  line-height: 120rpx;
-  margin-top: 40rpx; 
-  padding: 30rpx;
-  background: #ffffff;
-  border-radius:60rpx;
+.module-item .board-num{
+	color: #666666;
+	font-size: 28rpx;
+	height:32rpx;
+	line-height: 32rpx;
 }
-.appoint-time{
-	width:80rpx;
-	text-align: center;
-	font-size: 26rpx;
-	line-height: 30rpx;
-	background: #fff;
-  color:#39CB7F;
-	/* border:2rpx solid #39CB7F; */
-	border-radius: 8rpx;
-}

+ 167 - 0
pages/ticket/ticketDetail/ticketDetail.js

@@ -0,0 +1,167 @@
+const app = getApp()
+const util = require("../../../utils/jmsUtil.js");
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+
+
+
+Page({
+  data: {
+		id:'',
+	ticket:{},
+	ations:[],
+	consults:[],
+	consultslist:[],
+	statusDesc: {
+		0: "创建",
+		1: "处理中",
+		2: "已完成",
+		3: "作废",
+},
+substatusDesc: {
+		101: "待处理",
+		102: "升级",
+		103: "超时驳回",
+		104: "重新打开",
+		106: "等待客户上传图片",
+		107: "客户已上传图片",
+		108: "加盟商处理中",
+		109: "加盟商已处理",
+		201: "完成",
+		301: "作废",
+		0: "创建",
+},
+typeTag: ["", "success", "warning", "danger"],
+	levelMap: {
+		0: "无",
+		1: "一般",
+		2: "严重",
+		3: "非常严重",
+},
+ccResultList:{  
+  Y: "成立",
+  N: "不成立",
+  // O: "无法判定",
+},
+ccResList:{
+  P: "服务人员",
+  S: "商家运营",
+  C: "客服",
+  O: "其他"
+},
+refundMethodDesc:{
+  1: "银行卡",
+  2: "支付宝",
+  3: "微信",
+  4: "盒马二线手工退",
+  5: "盒马XP工单退"
+} 
+
+
+   
+
+  },
+
+ 
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+      if(options.id){
+				this.setData({id:options.id});
+				// this.getTicketDetail();
+			}
+
+
+	},
+	getTicketDetail(){
+		util.request(api.TicketDetail, {
+		id:this.data.id
+		}, 'GET').then(res=>{
+		 if (res.errno == 0) {
+		
+
+	    this.setData({
+				actions:res.data.acitons,
+				consults:res.data.consults,
+				consultslist:res.data.consultslist,
+				ticket:res.data.ticket
+			});
+			 let actions=res.data.actions;
+			 let list=[];
+			 actions.forEach(item=>{
+           let obj={
+						inactiveIcon: 'passed',
+						activeIcon: 'passed',
+						 text:"["+item.statusDes+'] '+item.content,
+						 desc:item.createTime+' '+item.createUserName
+					 };
+					 list.push(obj);
+
+			 });
+			 this.setData({
+				 actions:list
+			 });
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 });
+	},
+ 
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+  
+		this.getTicketDetail();
+  },
+
+
+ 
+
+
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+	},
+
+	preImg(e){
+		let url=e.currentTarget.dataset.url;
+		wx.previewImage({
+      current: url, // 当前显示图片的http链接
+      urls: this.data.ticket.fileUrl // 需要预览的图片http链接列表
+    })
+	},
+
+	goRemark(){
+		wx.navigateTo({
+			url: '/pages/ticket/ticketRemark/ticketRemark?id='+this.data.id
+		});
+	},
+	handleTicket(){
+		wx.navigateTo({
+			url: '/pages/ticket/ticketHandle/ticketHandle?id='+this.data.id
+		});
+	},
+
+
+
+
+
+ 
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  },
+
+})

+ 8 - 0
pages/ticket/ticketDetail/ticketDetail.json

@@ -0,0 +1,8 @@
+{ 
+  "navigationBarTitleText": "咨询投诉",
+	"navigationBarBackgroundColor": "#fff",
+	"onReachBottomDistance":20,
+  "usingComponents": {
+   
+  }
+}

+ 183 - 0
pages/ticket/ticketDetail/ticketDetail.wxml

@@ -0,0 +1,183 @@
+<wxs src="../../../utils/formatFuc.wxs" module="format" />
+
+
+<view class="whole-page"> 
+  
+
+	 <view class="ticket-item" >
+	   <view class="ticket-top">
+		  <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-ticket.png" mode="aspectFit" ></image>
+			<view>{{ticket.ticketTitle}}</view>
+		 </view>
+		 <view class="ticket-line">
+		 工单编号:{{ticket.ticketSn}}
+		 </view>
+		 <view class="ticket-line">
+		 工单类型:{{ticket.ticketType == 0 ? '咨询' : '投诉'}}
+		 </view>
+		 <view class="ticket-line">
+		 工单状态:
+		 <van-tag type="{{typeTag[ticket.status]}}">{{ statusDesc[ticket.status] }}->{{substatusDesc[ticket.substatus] }}</van-tag>
+		 </view>
+		 <view class="ticket-line">
+		 产生时间:{{ticket.createTime}}
+		 </view>
+		 <view class="ticket-line">
+		 工单等级:{{levelMap[ticket.ticketLevel]}}
+		 </view>
+	
+
+	 </view>
+	 <view class="common-info">
+	   <view class="common-title">{{ticket.ticketType == 0 ? '咨询' : '投诉'}}信息</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">工单来源:</view>
+			<view>{{format.filterSource(ticket.source)}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">归属技能组:</view>
+			<view>{{ticket.skillGroupName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">处理结果:</view>
+			<view>{{ticket.resultName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">最后处理人:</view>
+			<view>{{ticket.updateUserName}}</view>
+			</view>
+			<block wx-if="{{ticket.ticketType != 0}}">
+				<view class="common-line">
+			<view class="line-left">客诉是否成立:</view>
+			<view>{{ccResultList[ticket.ccResult]}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">责任方:</view>
+			<view>{{ccResList[ticket.ccRes]}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">赔偿现金:</view>
+			<view>{{ticket.fines}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">赔偿优惠券金额:</view>
+			<view>{{ticket.couponAmount}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">赔偿其他金额:</view>
+			<view>{{ticket.otherAmount}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">银行卡号:</view>
+			<view>{{refundMethodDesc[ticket.refundMethod]}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">开户信息:</view>
+			<view>{{ticket.cardNumber}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">退款方式:</view>
+			<view>{{ticket.bankInformation}}</view>
+			</view>
+			</block>
+		 </view>
+		 
+	 </view>
+	 <view class="common-info">
+	   <view class="common-title">客户信息</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">客户名称:</view>
+			<view>{{ticket.customer.customerName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">客户电话:</view>
+			<view>{{ticket.customer.tel}}</view>
+			</view>
+	
+		 </view>
+		 
+	 </view>
+	 <view class="common-info">
+	   <view class="common-title">服务工单</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">工单编号:</view>
+			<view>{{ticket.bookSn}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务站:</view>
+			<view>{{ticket.stationName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务人员:</view>
+			<view>{{ticket.servicer}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">服务时间:</view>
+			<view>{{ticket.serviceTime}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">工单服务商:</view>
+			<view>{{ticket.fraName}}</view>
+			</view>
+			<view class="common-line">
+			<view class="line-left">期望改约时间:</view>
+			<view>{{ticket.changeTime}}</view>
+			</view>
+	
+		 </view>
+		 
+	 </view>
+	 <view class="common-info">
+	   <view class="common-title"> {{ ticket.ticketType == 0 ? "咨询" : "投诉" }}内容描述</view>
+		 <view class="common-content">
+			<view class="common-line">
+			<view class="line-left">内容描述:</view>
+			<view>{{ticket.ticketDes}}</view>
+			</view>
+			<view class="common-line" wx:for="{{consults}}" wx:key="index"> 
+			<view class="line-left">
+			<!-- <van-tag type="primary"> -->
+			{{item}}
+			<!-- </van-tag> -->
+			</view>
+		
+			</view>
+			
+			<!-- 图片 -->
+			<view wx:if="{{ticket.fileUrl != null&&ticket.fileUrl.length>0}}">
+			<image wx:for="{{ticket.fileUrl}}" wx:key="index" src="{{item}}" mode="aspectFit" style="width:100rpx;height:100rpx;margin:0 20rpx 20rpx 0;" bindtap="preImg" data-url="{{item}}">
+			</image>
+			</view>
+
+	
+		 </view>
+		 
+	 </view>
+	 <!-- 工单日志 -->
+	 <view class="common-info">
+	   <view class="common-title"> {{ ticket.ticketType == 0 ? "咨询" : "投诉" }}内容描述</view>
+		 <view class="common-content">
+	 <van-steps
+  steps="{{ actions }}"
+  active="{{10}}"
+  direction="vertical"
+/>
+</view>
+	 </view>
+
+
+	 <view class="operate-block">
+	      <view class="remark-btn" bindtap="goRemark">追加备注</view>
+				<view class="handle-btn"  wx:if="{{ticket.substatus == 108 && ticket.ticketType == 1}}" bindtap="handleTicket">处理工单</view>
+	 </view>
+
+
+
+
+
+</view>
+
+

+ 115 - 0
pages/ticket/ticketDetail/ticketDetail.wxss

@@ -0,0 +1,115 @@
+page {
+  background: #F3F3F3;
+	color: #333;
+  /* padding:0 24rpx; */
+}
+view,text{
+  box-sizing: border-box;
+  color:#333;
+  font-size: 28rpx;
+}
+.whole-page{
+	padding:24rpx 0 200rpx;
+
+}
+
+.ticket-item{
+	width:702rpx;
+	background: #FFFFFF;
+border-radius: 18rpx;
+padding:24rpx;
+margin:0 24rpx 20rpx;
+
+}
+.ticket-top{
+	display: flex;
+	align-items: center;
+	margin-bottom:8rpx;
+}
+.ticket-top image{
+	width:40rpx;
+	height:40rpx;
+	margin-right:6rpx;
+}
+.ticket-top view{
+	font-size: 32rpx;
+	/* overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis; */
+}
+.ticket-line{
+	line-height: 56rpx;
+	height: 56rpx;
+} 
+.ticket-detail{
+	color: #0EAEFC;
+	text-decoration: underline;
+	/* display: inline-block; */
+	text-align: right;
+	line-height: 36rpx;
+}
+.common-info{
+	width:750rpx;
+	background: #fff;
+	margin-bottom:16rpx;
+}
+.common-title{
+	height: 80rpx;
+	color: #666666;
+	line-height: 80rpx;
+	padding:0 24rpx 0 48rpx;
+	border-bottom:1rpx solid #eee;
+}
+.common-content{
+	padding: 20rpx 24rpx 20rpx 48rpx;
+}
+.common-line{
+	line-height: 48rpx;
+	display: flex;
+	justify-content: space-between;
+	margin-bottom:6rpx;
+}
+.common-line view{
+	color:#666;
+}
+.common-line view.line-left{
+	color:#999;
+}
+.operate-block{
+	padding:38rpx 0;
+	padding-bottom: constant(safe-area-inset-bottom);
+	padding-bottom: env(safe-area-inset-bottom);
+	/* height:128rpx; */
+	position: fixed;
+	bottom:0;
+	left:0;
+	right:0;
+	display: flex;
+	justify-content: flex-end;
+	align-items: center; 
+	background: #fff;
+	box-shadow: -2px 0 2px 2px #f0f0f0;
+}
+.remark-btn{
+	width: 152rpx;
+height: 54rpx;
+background: #FFFFFF;
+border-radius: 8rpx;
+border: 2rpx solid #1677FF;
+line-height: 52rpx;
+color: #1677FF;
+font-size: 26rpx;
+text-align: center;
+margin-right:24rpx;
+}
+.handle-btn{
+	width: 152rpx;
+height: 54rpx;
+background: #1677FF;
+border-radius: 8rpx;
+line-height: 54rpx;
+color: #fFF;
+font-size: 26rpx;
+text-align: center;
+margin-right:24rpx;
+}

+ 322 - 0
pages/ticket/ticketHandle/ticketHandle.js

@@ -0,0 +1,322 @@
+// index.js
+// 获取应用实例
+const app = getApp();
+const util = require('../../../utils/jmsUtil.js');
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+Page({
+  data: {
+	 id:'',
+	 fines:'',
+	 memo:'',
+	 resultList:[],
+	 scrollShow:false,
+	 result:[],
+
+		serviceId:'',
+		keywords:'',
+		wholeList:[],
+		orderInfo:{
+			consignee:'',
+			mobile:'',
+			address:'',
+			bookDate:'',
+			time:'',
+			workerName:'',
+		  workerId:'' ,
+			workerTel:''
+		},
+		selectValue:'',
+		selectVisible:false,
+		selectKey:'',
+		timeList:[],
+		currentDate:new Date().getTime(),
+		max:5,
+    uploadShow:true,
+    isFinish:false,
+    feedbackInfo:{
+      noticeType:'',
+      sendTime:'',
+    },
+    fileList: [],
+    pictures:[],
+
+  
+  },
+  // 事件处理函数
+ 
+  onLoad(options) {
+		if(options.id){
+			this.setData({
+				id:options.id
+			});
+		}
+	
+		this.getResultList();
+
+	},
+	onshow(){
+	
+	},
+	finesInput(e){
+		this.setData({
+			fines:e.detail.value
+		});
+	},
+	bindMemo(e){
+		this.setData({
+     memo:e.detail.value
+		});
+	},
+	getResultList(){
+		util.request(api.TicketResult, {
+		
+		}, 'GET').then(res=>{
+		 if (res.errno == 0) {
+		
+	    this.setData({
+				resultList:res.data
+			});
+
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 });
+	
+	},
+
+
+	inputClue(e){
+		let obj=e.currentTarget.dataset.obj;
+		let item=`clueInfo.${obj}`;
+		this.setData({
+     [item]:e.detail.value
+		});
+		// console.log(this.data.clueInfo);
+	},
+	selectClue(e){
+		let obj=e.currentTarget.dataset.obj;
+	
+		this.setData({
+			selectKey:obj,
+			selectVisible:true
+		});
+		console.log(this.data.selectKey);
+	},
+
+
+	onPickerConfirm(e){
+		console.log(e);
+		let obj={
+			label:e.detail.value.text,
+			value:e.detail.value.value
+		}
+		this.setData({
+			'orderInfo.changeReason':obj,
+			selectVisible:false
+		});
+	},
+	onPickerCancel(){
+		this.setData({
+			selectVisible:true
+		});
+	},
+
+	selectDate(){
+    this.setData({
+			scrollShow:true
+		});
+	},
+	hidePicker(){
+    this.setData({
+			dateTimeVisible:false
+		});
+	},
+	
+	onDateTimeConfirm(e){
+		console.log(e);
+		this.setData({
+	 currentDate:e.detail,
+	 'orderInfo.bookDate':util.formetdate(new Date(e.detail)),
+	 dateTimeVisible:false
+		});
+	},
+
+	onPickerConfirm(e){
+		console.log(e);
+	
+		this.setData({
+			'orderInfo.time':e.detail.value,
+			selectVisible:false
+		});
+	},
+	onPickerCancel(){
+		this.setData({
+			selectVisible:false
+		});
+	},
+	inputAddress(e){
+		this.setData({
+     address:e.detail.value
+		});
+	},
+  deleteImage (event) {
+    const { fileList = [] } = this.data;
+    fileList.splice(event.detail.index, 1)
+    this.setData({
+      fileList: fileList
+    })
+    let urls=[];
+    fileList.forEach(function(e){
+      urls.push(e.url);
+    })
+    this.setData({
+      "pictures": urls
+    })
+  },
+  afterRead(event) {
+    console.log(event);
+    const { file } = event.detail
+    let that = this;
+    const uploadTask = wx.uploadFile({
+      url: api.StorageUpload,
+      filePath: file.url,
+			name: 'file',
+			header: {
+			'X-JZ-Admin-Token': wx.getStorageSync('token')},
+      success: function (res) {
+        console.log(res);
+        var _res = JSON.parse(res.data);
+        if (_res.errno === 0) {
+          var url = _res.data.fileUrl;
+          that.data.pictures.push(url)
+          const { fileList = [] } = that.data;
+          fileList.push({ ...file, url: url });
+          that.setData({
+            fileList: fileList
+          })
+        }
+      },
+      fail: function (e) {
+        wx.showModal({
+          title: '错误',
+          content: '上传失败',
+          showCancel: false
+        })
+      },
+    })
+	},
+	workerTap(e){
+		let id=e.currentTarget.dataset.id;
+		let name=e.currentTarget.dataset.name;
+		let current=[];
+		if(this.data.result.indexOf(id)>=0){
+			current=this.data.result;
+			
+			current.splice(this.data.result.indexOf(id),1);
+
+
+	
+		}else{
+		current=this.data.result;
+		current.push(id);
+		}
+		this.setData({
+			result:current
+		});
+		let resultName=[];
+		current.forEach(item=>{
+			let matchRes=this.data.resultList.filter(obj=>{return obj.id==item});
+			resultName.push(matchRes[0].name)
+		});
+		this.setData({
+			resultName:resultName
+		});
+
+	},
+	resultCancel(){
+		this.setData({
+			result:[],
+			resultName:[],
+			scrollShow:false,
+
+		})
+	},
+	resultConf(){
+		this.setData({
+			scrollShow:false,
+
+		})
+	},
+	confTap(){
+		if(this.data.result.length==0){
+			wx.showToast({
+				title: '请选择处理结果',
+				icon:'none'
+			});
+			return false;
+		}
+		if(this.data.memo==''){
+			wx.showToast({
+				title: '请输入处理备注',
+				icon:'none'
+			});
+			return false;
+		}
+	
+
+			wx.showLoading({
+				title: '加载中',
+			})
+
+			let params={
+			id:this.data.id,
+			result:this.data.result,
+			memo:this.data.memo,
+			fines:Number(this.data.fines),
+			fileUrl:this.data.pictures
+			}
+			util.request(api.HandleTicket, 
+			params
+			, 'POST').then(res=>{
+				wx.hideLoading();
+			 if (res.errno == 0) {
+		
+			wx.showModal({
+				title: '提示',
+				content: '操作成功',
+				showCancel:false,
+				complete: (res) => {
+					if (res.cancel) {
+						
+					}
+			
+					if (res.confirm) {
+						wx.navigateBack({
+							delta:1
+						});
+					
+					}
+				}
+			})
+		
+	
+			 }else{
+				 wx.showToast({
+					 title: res.errmsg,
+					 icon:'none'
+				 })
+			 }
+		 
+		 }).catch(err=>{
+			 wx.hideLoading();
+		 });
+		
+
+	},
+ 
+})

+ 4 - 0
pages/ticket/ticketHandle/ticketHandle.json

@@ -0,0 +1,4 @@
+{
+	"navigationBarTitleText": "工单处理",
+  "usingComponents": {}
+}

+ 80 - 0
pages/ticket/ticketHandle/ticketHandle.wxml

@@ -0,0 +1,80 @@
+<!--index.wxml-->
+<wxs src="../../../utils/formatFuc.wxs" module="format" />
+<view class="container">
+	<view class="common-module">
+		<view class="select-block result-select" bindtap="selectDate">
+			<view class="select-label"><text style="color:red;">*</text>
+			处理结果</view>
+			<view class="select-value result-name {{	orderInfo.date=='请选择(必填)'?'default-value':''}}">
+			<view wx:for="{{resultName}}" wx:key="index">{{	item}}
+			</view>
+			
+			</view>
+			<van-icon name="arrow" size="30rpx" color="#969799" />
+		</view>
+    <view class="scroll-wrapper" wx:if="{{scrollShow}}" >
+		<view class="scroll-title">
+		  <view class="cancel-btn" bindtap="resultCancel">取消</view>
+			<view class="conf-btn" bindtap="resultConf">确定</view>
+		</view>
+		<scroll-view  scroll-y="true" style="height: 520rpx;" class="worker-scroll">
+	 <view class="worker-item {{format.isSelectResult(result,item.id)?'selected-result':''}}" wx:for="{{resultList}}" wx:key="index" data-id="{{item.id}}" data-name="{{item.name}}" bindtap="workerTap"
+	 >
+	 <view>{{item.name}}</view>
+	 
+	 <van-icon name="success" color="#09afff" wx:if="{{format.isSelectResult(result,item.id)}}"/>
+	 </view>
+	
+	</scroll-view>
+</view>
+
+		<view class="input-block ">
+			<view class="input-label">现金补偿</view>
+			<input class="input-value disable-input" value="{{fines}}"   type="number" placeholder="请输入现金补偿"  bindinput="finesInput" placeholder-class="input-placeholder" />
+		</view>
+	
+	
+	
+	
+	
+	
+
+	</view>
+<view class="upload-block">
+<view style="margin-bottom:20rpx;">上传图片</view>
+
+	<van-uploader file-list="{{ fileList }}" max-count="{{max}}" bind:after-read="afterRead" bind:delete="deleteImage"  wx:if="{{uploadShow}}"  deletable="{{ !isFinish }}"/>
+</view>
+
+	<view class="receipt-content">
+      <view class="title">
+       <text>*</text>处理备注</view>
+       <textarea 
+       class="textarea"
+      bindinput="bindMemo" value="{{memo}}" placeholder='请输入处理备注' 	 disabled="{{isFinish}}" placeholder-style="line-height:48rpx;color: #979694;"></textarea>
+
+
+   </view>
+
+
+
+
+
+
+
+
+
+	<view class="edit-btn" bindtap="confTap">确认</view>
+
+
+<van-popup show="{{selectVisible}}" position="bottom">
+		<van-picker
+  show-toolbar
+  title=" "
+  columns="{{ timeList }}"
+  bind:cancel="onPickerCancel"
+  bind:confirm="onPickerConfirm"
+/>
+</van-popup>
+
+</view>

+ 223 - 0
pages/ticket/ticketHandle/ticketHandle.wxss

@@ -0,0 +1,223 @@
+/**index.wxss**/
+page {
+  /* background: #f3f3f3; */
+	background:#F4F2F2;
+}
+.container{
+	padding-top:20rpx;
+ padding-bottom:80rpx;
+}
+view{
+	font-size: 28rpx;
+}
+.edit-btn{
+	width: 686rpx;
+height: 80rpx;
+background: #09AFFF;
+border-radius: 200rpx;
+line-height: 80rpx;
+position: fixed;
+left:28rpx;
+right:28rpx;
+bottom:94rpx;
+color: #fff;
+text-align: center;
+/* margin:94rpx 28rpx 0; */
+}
+.title{
+	color: #646566;
+	height:40rpx;
+	line-height: 40rpx;
+	/* font-weight: bold; */
+	/* padding:0 32rpx; */
+	margin:0rpx 0 16rpx;
+}
+.tips{
+	color: #969799;
+line-height: 32rpx;
+font-size:24rpx;
+line-height: 32rpx;
+padding:0 32rpx;
+margin-bottom:16rpx;
+}
+.common-module{
+	width: 750rpx;
+	/* background: #FFFFFF; */
+	/* padding:0 32rpx; */
+	box-sizing: border-box;
+	position: relative;
+}
+.input-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.input-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.input-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+	color:#333;
+}
+.input-placeholder{
+	color: #C8C9CC;
+}
+.select-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.no-border{
+	border-bottom:none;
+}
+.select-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.select-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+}
+.select-value.default-value{
+	color: #C8C9CC;
+}
+.special-tips{
+	height: 48rpx;
+	line-height: 32rpx;
+	color: #969799;
+	font-size: 24rpx;
+	padding:12rpx 20rpx 0 32rpx;
+}
+
+.worker-item{
+	height: 80rpx;
+	padding:0 40rpx;
+	line-height: 80rpx;
+	border-bottom:2rpx solid #F4F2F2;
+}
+.disable-input{
+ color:#999;
+}
+.address-block{
+	min-height: 160rpx;
+	height: auto;
+}
+.address-block .input-value{
+	line-height: 44rpx;
+	white-space: pre-wrap;
+	/* display: flex;
+	align-items: center; */
+	height: 120rpx;
+	padding:0 0 0rpx 20rpx;
+	/* overflow-y: auto; */
+	/* margin-bottom:16rpx; */
+}
+.receipt-content{
+  width: 750rpx;
+background: #FFFFFF;
+padding:30rpx 30rpx 24rpx 20rpx;
+/* margin:0 24rpx; */
+}
+.receipt-content .title{
+  height:48rpx;
+}
+.receipt-content .title text{
+  color: red;
+
+}
+.receipt-content .textarea{
+  height: 174rpx;
+border-radius: 12rpx;
+border: 2rpx solid #DADADA;
+margin:18rpx 0 22rpx;
+width:700rpx;
+padding:16rpx 22rpx;
+box-sizing: border-box;
+}
+.upload-block{
+	background: #fff;
+	padding:24rpx 30rpx 24rpx 20rpx;
+margin-bottom:10rpx;
+}
+.upload-block view{
+	color: #646566;
+}
+.scroll-wrapper{
+	position: fixed;
+	bottom:0;
+	left:0;
+	right:0;
+	top:0;
+	z-index:99;
+	background: rgba(0,0,0,0.4);
+	padding-top:108rpx;
+
+}
+.worker-scroll{
+	padding:8rpx 4rpx 0;
+	background: #fff;
+	/* border-radius: 8rpx; */
+	width:750rpx;
+	background: #fff;
+	position: fixed;
+	bottom:0;
+	left:0;
+	right:0;
+	z-index:999;
+
+}
+.worker-item{
+	height: 80rpx;
+	padding:0 40rpx;
+	line-height: 80rpx;
+	border-bottom:2rpx solid #F4F2F2;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+.selected-result.worker-item{
+	color:#09afff;
+}
+.scroll-title{
+	height: 100rpx;
+	position: fixed;
+	bottom:520rpx;
+	left:0;
+	right:0;
+	z-index:1000;
+	background: #fff;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding:0 24rpx;
+ box-shadow: 0 2rpx 8rpx 2rpx #f0f0f0;
+}
+.conf-btn{
+	color:#09afff;
+
+}
+.result-select.select-block{
+	min-height: 88rpx;
+	height: auto;
+}
+.result-select .select-value{
+	line-height:44rpx ;
+	padding:20rpx 0 20rpx 20rpx;
+	height: auto;
+}

+ 254 - 0
pages/ticket/ticketList/ticketList.js

@@ -0,0 +1,254 @@
+const app = getApp()
+const util = require("../../../utils/jmsUtil.js");
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+
+
+
+Page({
+  data: {
+		ticketList:[],
+		totalPages:'',
+		page:1,
+   listQuery:{
+		 status:'108',
+		 statusVal:'加盟商处理中',
+		 level:'',
+		 levelVal:'全部'
+	 },
+	 selectVisible:false,
+	 columns:[],
+	 selectType:1,
+	 statusList:[
+		{
+			text:'全部',
+			value:''
+		},
+		 {
+		 text:'待处理',
+		 value:'101'
+	 },
+	 {
+		text:'升级',
+		value:'102'
+	},
+	{
+		text:'超时驳回',
+		value:'103'
+	},
+	{
+		text:'重新打开',
+		value:'104'
+	},
+	{
+		text:'等待客户上传图片',
+		value:'106'
+	},
+	{
+		text:'客户已上传图片',
+		value:'107'
+	},
+	{
+		text:'加盟商处理中',
+		value:'108'
+	},
+	{
+		text:'加盟商已处理',
+		value:'109'
+	},
+	{
+		text:'完成',
+		value:'201'
+	},
+	{
+		text:'作废',
+		value:'301'
+	},
+	{
+		text:'创建',
+		value:'0'
+	},
+
+
+	],
+
+	levelList:[
+		{
+			text:'全部',
+			value:''
+		},
+		{
+			text:'无',
+			value:'0'
+		},
+		{
+			text:'一般',
+			value:'1'
+		},
+		{
+			text:'严重',
+			value:'2'
+		},
+		{
+			text:'非常严重',
+			value:'3'
+		},
+		
+	],
+	statusDesc: {
+		0: "创建",
+		1: "处理中",
+		2: "已完成",
+		3: "作废",
+},
+substatusDesc: {
+		101: "待处理",
+		102: "升级",
+		103: "超时驳回",
+		104: "重新打开",
+		106: "等待客户上传图片",
+		107: "客户已上传图片",
+		108: "加盟商处理中",
+		109: "加盟商已处理",
+		201: "完成",
+		301: "作废",
+		0: "创建",
+},
+typeTag: ["", "success", "warning", "danger"],
+	levelMap: {
+		0: "无",
+		1: "一般",
+		2: "严重",
+		3: "非常严重",
+},
+	
+
+  },
+
+ 
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+  
+
+		this.getTicketList();
+
+  },
+ 
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+  
+
+  },
+	showPicker(e){
+		let type=e.currentTarget.dataset.type;
+		this.setData({
+			selectType:type,
+			columns:type==1?this.data.statusList:this.data.levelList,
+			selectVisible:true,
+		});
+
+	},
+	onPickerConfirm(e){
+		console.log(e);
+		if(this.data.selectType==1){
+			this.setData({
+				'listQuery.statusVal':e.detail.value.text,
+				'listQuery.status':e.detail.value.value,
+			});
+		}else{
+			this.setData({
+				'listQuery.levelVal':e.detail.value.text,
+				'listQuery.level':e.detail.value.value,
+			});
+		}
+		this.setData({
+		
+			selectVisible:false,
+			page:1,
+			ticketList:[]
+		});
+		this.getTicketList();
+	},
+	onPickerCancel(){
+		this.setData({
+			selectVisible:false
+		});
+	},
+
+ 
+	goDetail(e){
+		let id=e.currentTarget.dataset.id;
+		wx.navigateTo({
+			url: '/pages/ticket/ticketDetail/ticketDetail?id='+id
+		});
+	},
+
+
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+	},
+	onReachBottom() {
+    if (this.data.totalPages > this.data.page) {
+      this.setData({
+        page: this.data.page + 1
+      });
+      this.getTicketList();
+    } else if (this.data.ticketList.length > 0) {
+      wx.showToast({
+        title: '没有更多工单了',
+        icon: 'none',
+        duration: 2000
+      });
+      return false;
+    }
+	},
+	getTicketList(){
+		util.request(api.TicketList, {
+			page: this.data.page,
+			limit: 10,
+			substatus:this.data.listQuery.status,
+			level:this.data.listQuery.level
+
+		}, 'GET').then(res=>{
+		 if (res.errno == 0) {
+		
+	    this.setData({
+				totalPages:res.data.pages,
+				ticketList:this.data.ticketList.concat(res.data.list)
+			});
+
+		 }else{
+			 wx.showToast({
+				 title: res.errmsg,
+				 icon:'none'
+			 })
+		 }
+	 
+	 });
+	},
+
+
+
+
+
+
+
+
+ 
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  },
+
+})

+ 8 - 0
pages/ticket/ticketList/ticketList.json

@@ -0,0 +1,8 @@
+{ 
+  "navigationBarTitleText": "咨询投诉",
+	"navigationBarBackgroundColor": "#fff",
+	"onReachBottomDistance":20,
+  "usingComponents": {
+   
+  }
+}

+ 54 - 0
pages/ticket/ticketList/ticketList.wxml

@@ -0,0 +1,54 @@
+<wxs src="../../../utils/format.wxs" module="format" />
+
+
+<view class="whole-page"> 
+   <view class="top-block">
+	   <view class="select-item"  data-type="1" bindtap="showPicker">
+		 <view class="select-text">{{listQuery.statusVal}}</view>
+		 <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-arrow-down.png" mode="aspectFit" ></image>
+		 </view>
+		 <view class="select-item" data-type="2" bindtap="showPicker">
+		 <view class="select-text">{{listQuery.levelVal}}</view>
+		 <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-arrow-down.png" mode="aspectFit" ></image>
+		 </view>
+	 </view>
+	 <view class="ticket-list">
+	 <view class="ticket-item" wx:for="{{ticketList}}" wx:key="index" bindtap="goDetail" data-id="{{item.id}}">
+	   <view class="ticket-top">
+		  <image src="https://mall.zhaijieshi.cc/file/wx-jms/icon-ticket.png" mode="aspectFit" ></image>
+			<view>{{item.ticketTitle}}</view>
+		 </view>
+		 <view class="ticket-line">
+		 工单编号:{{item.ticketSn}}
+		 </view>
+		 <view class="ticket-line">
+		 工单类型:{{item.ticketType == 0 ? '咨询' : '投诉'}}
+		 </view>
+		 <view class="ticket-line">
+		 工单状态:<van-tag type="{{typeTag[item.status]}}">{{ statusDesc[item.status] }}->{{substatusDesc[item.substatus] }}</van-tag>
+		 </view>
+		 <view class="ticket-line">
+		 产生时间:{{item.createTime}}
+		 </view>
+		 <view class="ticket-line">
+		 工单等级:{{levelMap[item.ticketLevel]}}
+		 </view>
+		 <view class="ticket-detail" >查看详情</view>
+
+	 </view>
+	 </view>
+	 <view class="no-data" wx:if="{{ticketList.length==0}}">没有相关数据~</view>
+
+
+</view>
+
+<van-popup show="{{selectVisible}}" position="bottom">
+		<van-picker
+  show-toolbar
+  title=" "
+  columns="{{ columns }}"
+  bind:cancel="onPickerCancel"
+  bind:confirm="onPickerConfirm"
+/>
+</van-popup>
+

+ 84 - 0
pages/ticket/ticketList/ticketList.wxss

@@ -0,0 +1,84 @@
+page {
+  background: #F3F3F3;
+	color: #333;
+  /* padding:0 24rpx; */
+}
+view,text{
+  box-sizing: border-box;
+  color:#333;
+  font-size: 28rpx;
+}
+.whole-page{
+	padding:100rpx 0 40rpx;
+
+}
+.top-block{
+	position: fixed;
+	top:0;
+	left:0;
+	right:0;
+	height:80rpx;
+	display: flex;
+	background: #fff;
+	align-items: center;
+	padding:0 24rpx;
+}
+.select-item{
+	height: 80rpx;
+	display: flex;
+	align-items: center;
+	margin-right:60rpx;
+}
+.select-item view{
+	color: #666;
+}
+.select-item image{
+	width:24rpx;
+	height:14rpx;
+	margin-left:10rpx;
+}
+.ticket-list{
+	padding:0 24rpx 32rpx;
+}
+.ticket-item{
+	width:702rpx;
+	background: #FFFFFF;
+border-radius: 18rpx;
+padding:24rpx;
+margin-bottom:20rpx;
+
+}
+.ticket-top{
+	display: flex;
+	align-items: center;
+	margin-bottom:8rpx;
+}
+.ticket-top image{
+	width:40rpx;
+	height:40rpx;
+	margin-right:6rpx;
+}
+.ticket-top view{
+	font-size: 32rpx;
+	/* overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis; */
+}
+.ticket-line{
+	line-height: 56rpx;
+	height: 56rpx;
+} 
+.ticket-detail{
+	color: #0EAEFC;
+	text-decoration: underline;
+	/* display: inline-block; */
+	text-align: right;
+	line-height: 36rpx;
+}
+.no-data{
+	text-align: center;
+	color: #999;
+	font-size: 26rpx;
+	line-height: 80rpx;
+	padding-top:100rpx;
+}

+ 94 - 0
pages/ticket/ticketRemark/ticketRemark.js

@@ -0,0 +1,94 @@
+// index.js
+// 获取应用实例
+const app = getApp();
+const util = require('../../../utils/jmsUtil.js');
+const api = require('../../../api/jms.js');
+import moment from 'moment'
+Page({
+  data: {
+		isFinish:false,
+		id:'',
+		memo:''
+  
+  },
+  // 事件处理函数
+ 
+  onLoad(options) {
+	if(options.id){
+		this.setData({
+			id:options.id
+		})
+	}
+
+	},
+	onshow(){
+	
+	},
+
+	bindRrmark(e){
+		this.setData({
+     memo:e.detail.value
+		});
+	},
+ 
+	confTap(){
+		if(this.data.memo==''){
+			wx.showToast({
+				title: '请输入备注内容',
+				icon:'none'
+			});
+			return false;
+		}
+	
+
+			wx.showLoading({
+				title: '加载中',
+			})
+	
+			let params={
+			memo:this.data.memo,
+			id:this.data.id
+
+			}
+			util.request(api.AppendTicketMemo, 
+			params
+			, 'POST').then(res=>{
+				wx.hideLoading();
+			 if (res.errno == 0) {
+		     this.setData({
+					 isFinish:true,
+				 })
+			wx.showModal({
+				title: '提示',
+				content: '操作成功',
+				showCancel:false,
+				complete: (res) => {
+					if (res.cancel) {
+						
+					}
+			
+					if (res.confirm) {
+						wx.navigateBack({
+							delta:1
+						});
+					
+					}
+				}
+			})
+		
+	
+			 }else{
+				 wx.showToast({
+					 title: res.errmsg,
+					 icon:'none'
+				 })
+			 }
+		 
+		 }).catch(err=>{
+			 wx.hideLoading();
+		 });
+		
+
+	},
+ 
+})

+ 4 - 0
pages/ticket/ticketRemark/ticketRemark.json

@@ -0,0 +1,4 @@
+{
+	"navigationBarTitleText": "工单备注",
+  "usingComponents": {}
+}

+ 27 - 0
pages/ticket/ticketRemark/ticketRemark.wxml

@@ -0,0 +1,27 @@
+<!--index.wxml-->
+<view class="container">
+
+
+	<view class="receipt-content">
+      <view class="title">
+       <text>*</text>追加工单备注</view>
+       <textarea 
+       class="textarea"
+      bindinput="bindRrmark" value="{{content}}" placeholder='请输入工单备注' 	 disabled="{{isFinish}}" placeholder-style="line-height:48rpx;color: #979694;"></textarea>
+
+
+   </view>
+
+
+
+
+
+
+
+
+
+	<view class="edit-btn" bindtap="confTap">确认</view>
+
+
+
+</view>

+ 166 - 0
pages/ticket/ticketRemark/ticketRemark.wxss

@@ -0,0 +1,166 @@
+/**index.wxss**/
+page {
+  /* background: #f3f3f3; */
+	background:#F4F2F2;
+}
+.container{
+	padding-top:20rpx;
+ padding-bottom:80rpx;
+}
+view{
+	font-size: 28rpx;
+}
+.edit-btn{
+	width: 686rpx;
+height: 80rpx;
+background: #09AFFF;
+border-radius: 200rpx;
+line-height: 80rpx;
+position: fixed;
+left:28rpx;
+right:28rpx;
+bottom:94rpx;
+color: #fff;
+text-align: center;
+/* margin:94rpx 28rpx 0; */
+}
+.title{
+	color: #646566;
+	height:40rpx;
+	line-height: 40rpx;
+	/* font-weight: bold; */
+	/* padding:0 32rpx; */
+	margin:0rpx 0 16rpx;
+}
+.tips{
+	color: #969799;
+line-height: 32rpx;
+font-size:24rpx;
+line-height: 32rpx;
+padding:0 32rpx;
+margin-bottom:16rpx;
+}
+.common-module{
+	width: 750rpx;
+	/* background: #FFFFFF; */
+	/* padding:0 32rpx; */
+	box-sizing: border-box;
+}
+.input-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.input-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.input-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+	color:#333;
+}
+.input-placeholder{
+	color: #C8C9CC;
+}
+.select-block{
+height: 88rpx;
+display: flex;
+align-items: center;
+/* border-bottom:1rpx solid #EBEDF0; */
+padding:0 30rpx 0 20rpx;
+background: #fff;
+margin-bottom:10rpx;
+}
+.no-border{
+	border-bottom:none;
+}
+.select-label{
+	line-height: 88rpx;
+	color: #646566;
+	width:160rpx;
+}
+.select-value{
+	flex:1;
+	padding-left:20rpx;
+	height: 88rpx;
+	line-height: 88rpx;
+}
+.select-value.default-value{
+	color: #C8C9CC;
+}
+.special-tips{
+	height: 48rpx;
+	line-height: 32rpx;
+	color: #969799;
+	font-size: 24rpx;
+	padding:12rpx 20rpx 0 32rpx;
+}
+.worker-scroll{
+	margin:8rpx 4rpx 0;
+	background: #fff;
+	border-radius: 8rpx;
+	width:742rpx;
+	
+
+}
+.worker-item{
+	height: 80rpx;
+	padding:0 40rpx;
+	line-height: 80rpx;
+	border-bottom:2rpx solid #F4F2F2;
+}
+.disable-input{
+ color:#999;
+}
+.address-block{
+	min-height: 160rpx;
+	height: auto;
+}
+.address-block .input-value{
+	line-height: 44rpx;
+	white-space: pre-wrap;
+	/* display: flex;
+	align-items: center; */
+	height: 120rpx;
+	padding:0 0 0rpx 20rpx;
+	/* overflow-y: auto; */
+	/* margin-bottom:16rpx; */
+}
+.receipt-content{
+  width: 750rpx;
+background: #FFFFFF;
+padding:30rpx 30rpx 24rpx 20rpx;
+/* margin:0 24rpx; */
+}
+.receipt-content .title{
+  height:48rpx;
+}
+.receipt-content .title text{
+  color: red;
+
+}
+.receipt-content .textarea{
+  height: 204rpx;
+border-radius: 12rpx;
+border: 2rpx solid #DADADA;
+margin:18rpx 0 22rpx;
+width:700rpx;
+padding:16rpx 22rpx;
+box-sizing: border-box;
+}
+.upload-block{
+	background: #fff;
+	padding:24rpx 30rpx 24rpx 20rpx;
+margin-bottom:10rpx;
+}
+.upload-block view{
+	color: #646566;
+}

+ 21 - 0
project.private.config.json

@@ -46,6 +46,27 @@
 					"query": "",
 					"launchMode": "default",
 					"scene": null
+				},
+				{
+					"name": "ticketList",
+					"pathName": "pages/ticket/ticketList/ticketList",
+					"query": "",
+					"launchMode": "default",
+					"scene": null
+				},
+				{
+					"name": "",
+					"pathName": "pages/ticket/ticketDetail/ticketDetail",
+					"query": "",
+					"launchMode": "default",
+					"scene": null
+				},
+				{
+					"name": "",
+					"pathName": "pages/ticket/ticketHandle/ticketHandle",
+					"query": "",
+					"launchMode": "default",
+					"scene": null
 				}
 			]
 		}

+ 116 - 2
utils/formatFuc.wxs

@@ -192,6 +192,115 @@ function specialStatusText(type) {
 
 }
 
+function filterSource(source) {
+	var result='';
+	var sourceList= [
+		{ label: "400进线", value: "IB" },
+		{ label: "日常回访", value: "OB" },
+		{ label: "XP反馈", value: "XP" },
+		{ label: "在线chat", value: "IM" },
+		{ label: "钉钉反馈", value: "DD" },
+		{ label: "APP差评", value: "HMAPP" },
+		{ label: "企微反馈", value: "CP" },
+		{ label: "勤鸽XP", value: "QG" },
+		{ label: "阿姨自主报备", value: "SS" },
+		{ label: "保姆工具", value: "APP" },
+		{ label: "公众号", value: "WX" },
+		{ label: "其他", value: "OT" },
+		{ label: "回访话务", value: "CallRecord" },
+		{ label: "客户中心", value: "Customer" }
+	];
+	for(var i=0;i<sourceList.length;i++){
+		if(sourceList[i].value==source){
+		result=sourceList[i].label;
+		break;
+		}
+	}
+	// var list = sourceList.filter(item => { return item.value == source });
+	// if (list.length > 0){
+	// 	return list[0].label;
+	// } 
+	return result;
+}
+function isSelectResult(arr,item){
+	return arr.indexOf(item)>-1;
+
+}
+function goodsTypeText(goodsType) {
+	if (goodsType == '0') {
+		return '服务类商品'
+	} else if (goodsType == '1') {
+		return '保险'
+	} else if (goodsType == '2') {
+		return '中介'
+	} else if (goodsType == '3') {
+		return '买约分离次卡'
+	} else if (goodsType == '4') {
+		return '补差价商品'
+	} else if (goodsType == '5') {
+		return '中介代金券'
+	} else if (goodsType == '6') {
+		return '实物商品'
+	} else if (goodsType == '7') {
+		return '补差'
+	}
+}
+function orderStatusText(status) {
+	//订单状态 101 未付款 102已取消 103系统取消 201 已付款 202订单取消,退款中 203已退款 204 已超时团购 301服务中 401服务已完成 402系统完成服务
+	if (status == '101') {
+		return '未付款'
+	} else if (status == '102') {
+		return '已取消'
+	} else if (status == '103') {
+		return '系统取消'
+	} else if (status == '201') {
+		return '已付款'
+	} else if (status == '202') {
+		return '订单取消,退款中'
+	} else if (status == '203') {
+		return '已退款'
+	} else if (status == '204') {
+		return '已超时团购'
+	} else if (status == '301') {
+		return '服务中'
+	} else if (status == '401') {
+		return '服务已完成'
+	} else if (status == '402') {
+		return '系统完成服务'
+	}
+}
+function payTypeText(payType) {
+	if (payType == 'WX') {
+		return '微信'
+	} else if (payType == 'ZFB') {
+		return '支付宝'
+	} else if (payType == 'ZZ') {
+		return '对公转账'
+	} else if (payType == 'DOUYIN') {
+		return '抖音'
+	}
+}
+function serviceOrderStatusText(status) {
+	//工单状态 0-未预约,7匹配中,1-待履约,2-服务中,3-服务已提供,4-服务已完成,5-取消 未付款,6-退款
+	if (status == 0) {
+		return '未付款'
+	} else if (status == 1) {
+		return '待履约'
+	} else if (status == 2) {
+		return '服务中'
+	} else if (status == 3) {
+		return '服务已提供'
+	} else if (status == 4) {
+		return '服务已完成'
+	} else if (status == 5) {
+		return '取消/未付款'
+	} else if (status == 6) {
+		return '退款'
+	} else if (status == 7) {
+		return '匹配中'
+	} 
+}
+
 module.exports = {
   formatTime: formatTime,
   formatNumber: formatNumber,
@@ -204,7 +313,12 @@ module.exports = {
   serviceModel:serviceModel,
   sliceStr:sliceStr,
 	statusText:statusText,
-	specialStatusText:specialStatusText
+	specialStatusText:specialStatusText,
+	filterSource:filterSource,
+	isSelectResult:isSelectResult,
+	goodsTypeText:goodsTypeText,
+	orderStatusText:orderStatusText,
+	payTypeText:payTypeText,
+	serviceOrderStatusText:serviceOrderStatusText
 }
 
-// 截取文字*号代替