1
0
Переглянути джерело

优惠券、满减代码提交

hyq 5 роки тому
батько
коміт
c1414bbd82
27 змінених файлів з 2351 додано та 4 видалено
  1. 0 0
      wx-mall/lib/rich-text/rich-text.js
  2. 0 0
      wx-mall/lib/rich-text/rich-text.wxml
  3. 26 0
      wx-mall/lib/rich-text/rich-text.wxss
  4. 3 2
      wx-mall/pages/catalog/catalog.wxml
  5. 1 1
      wx-mall/pages/category/category.wxml
  6. 397 0
      wx-mall/pages/categoryBrand/categoryBrand.js
  7. 7 0
      wx-mall/pages/categoryBrand/categoryBrand.json
  8. 130 0
      wx-mall/pages/categoryBrand/categoryBrand.wxml
  9. 299 0
      wx-mall/pages/categoryBrand/categoryBrand.wxss
  10. 114 0
      wx-mall/pages/images/images.js
  11. 4 0
      wx-mall/pages/images/images.json
  12. 4 0
      wx-mall/pages/images/images.wxml
  13. 34 0
      wx-mall/pages/images/images.wxss
  14. 1 1
      wx-mall/pages/index/index.js
  15. 216 0
      wx-mall/pages/ucenter/campMinus/campMinus.js
  16. 3 0
      wx-mall/pages/ucenter/campMinus/campMinus.json
  17. 128 0
      wx-mall/pages/ucenter/campMinus/campMinus.wxml
  18. 526 0
      wx-mall/pages/ucenter/campMinus/campMinus.wxss
  19. 156 0
      wx-mall/pages/ucenter/couponDetail/couponDetail.js
  20. 3 0
      wx-mall/pages/ucenter/couponDetail/couponDetail.json
  21. 27 0
      wx-mall/pages/ucenter/couponDetail/couponDetail.wxml
  22. 125 0
      wx-mall/pages/ucenter/couponDetail/couponDetail.wxss
  23. 59 0
      wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.js
  24. 5 0
      wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.json
  25. 23 0
      wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.wxml
  26. 53 0
      wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.wxss
  27. 7 0
      wx-mall/sitemap.json

+ 0 - 0
wx-mall/lib/rich-text/rich-text.js


+ 0 - 0
wx-mall/lib/rich-text/rich-text.wxml


+ 26 - 0
wx-mall/lib/rich-text/rich-text.wxss

@@ -0,0 +1,26 @@
+rich-text {
+  width: 700rpx;
+  padding: 25rpx 0;
+}
+
+.rich-text-wrp {
+  padding: 0 25rpx;
+  background-color: #fff;
+}
+
+.page-section{
+  width: 100%;
+  margin-bottom: 60rpx;
+}
+
+.page-section:last-child{
+  margin-bottom: 0;
+}
+
+.page-section-title{
+  font-size: 28rpx;
+  color: #999999;
+  margin-bottom: 10rpx;
+  padding-left: 30rpx;
+  padding-right: 30rpx;
+}

+ 3 - 2
wx-mall/pages/catalog/catalog.wxml

@@ -134,8 +134,9 @@
           <view class="right">
             <view class="text">
             <navigator url="/pages/goods/goods?id={{item.id}}&&storeId={{item.storeId}}">
-              <text class="name" bindtap="bindtapGoodsDetail" data-item-id="{{filterDiscount != 2?item.id:item.group_id}}">{{item.name?item.name:""}}</text>
-              <text class="desc" bindtap="bindtapGoodsDetail" data-item-id="{{filterDiscount != 2?item.id:item.group_id}}">{{item.goods_brief?item.goods_brief:""}}</text>
+              <text class="name" data-item-id="{{filterDiscount != 2?item.id:item.group_id}}">{{item.name?item.name:""}}</text>
+              <!-- <text class="name" bindtap="bindtapGoodsDetail" data-item-id="{{filterDiscount != 2?item.id:item.group_id}}">{{item.name?item.name:""}}</text> -->
+              <!-- <text class="desc" bindtap="bindtapGoodsDetail" data-item-id="{{filterDiscount != 2?item.id:item.group_id}}">{{item.goods_brief?item.goods_brief:""}}</text> -->
             </navigator>
 
             <!-- 描述开始 -->

+ 1 - 1
wx-mall/pages/category/category.wxml

@@ -64,7 +64,7 @@
     <view class="b">
       <block wx:for="{{goodsList}}" wx:for-index="iindex" wx:for-item="iitem" wx:key="unique">
         <view class="item {{iindex % 2 == 0 ? 'item-b' : '' }}">
-         <navigator url="../goods/goods?id={{iitem.id}}&&currentIndex={{navIndex}}&&storeId={{item.storeId}}">
+         <navigator url="../goods/goods?id={{iitem.id}}&&currentIndex={{navIndex}}&&storeId={{iitem.storeId}}">
             <image class="img" src="{{iitem.list_pic_url}}"></image>
             <text class="name">{{iitem.name}}</text>
           </navigator>

+ 397 - 0
wx-mall/pages/categoryBrand/categoryBrand.js

@@ -0,0 +1,397 @@
+// pages/categoryBrand/categoryBrand.js
+var util = require('../../utils/util.js');
+var goodsUtil = require('../../utils/goods.js');
+var api = require('../../config/api.js');
+
+Page({
+  data: {
+    // text:"这是一个页面"
+    navList: [],
+    goodsList: [],
+    id: 0,
+    goodsBizType: '00',
+    currentTab: 0,
+    navIndex: 0,
+    currentBrand: {},
+    scrollLeft: 0,
+    scrollTop: 0,
+    scrollHeight: 0,
+    page: 1,
+    size: 4,
+    showNavList: false,
+    footCart: {},
+    openAttr: false,
+    productList: {},
+    specificationList: {},
+    checkedSpecText: '请选择规格数量',
+    number: 1,
+    brandId: 0,
+    isShow: 0,
+    totalPages: 0,
+    stockNum: 0,
+    cartNumber: 0,
+  },
+  toggleNav() {
+    this.setData({
+      showNavList: !this.data.showNavList
+    })
+  },
+  // 滚动切换标签样式
+  switchTab: function (e) {
+    let that = this;
+    //当页面改变是会触发
+    console.log("e.detail.current:" + e.detail.current);
+    this.setData({
+      currentTab: e.detail.current
+    });
+    // console.log("currentTab:" + that.data.currentTab);
+    if (that.data.navIndex == e.detail.current) {
+      this.setData({
+        navIndex: -1
+      });
+      return;
+    }
+    let navListCount = that.data.navList.length;
+    for (let i = 0; i < navListCount; i++) {
+      if (i == e.detail.current) {
+        that.setData({
+          brandId: that.data.navList[i].id
+        });
+        break;
+      }
+    }
+    that.setData({
+      scrollLeft: (e.detail.current - 1) * 60
+    });
+    that.refreshCategoryInfo();
+  },
+  switchNav(event) {
+    let name = event.currentTarget.dataset.name;
+    wx.switchTab({
+      url: `/pages/${name}/${name}`,
+    });
+  },
+  onLoad: function (options) {
+    // 页面初始化 options为页面跳转所带来的参数
+    var that = this;
+    if (options.brandId) {
+      that.setData({
+        brandId: parseInt(options.brandId)
+      });
+    } else {
+      that.setData({
+        brandId: 0,
+        currentBrand: {}
+      });
+    }
+    if (options.goodsBizType) {
+      that.setData({
+        goodsBizType: options.goodsBizType
+      });
+    }
+    if (options.currentIndex) {
+      that.setData({
+        currentTab: options.currentIndex
+      });
+    }
+    wx.getSystemInfo({
+      success: function (res) {
+        var clientHeight = res.windowHeight,
+          clientWidth = res.windowWidth,
+          rpxR = 750 / clientWidth;
+        var calc = clientHeight * rpxR - 180;
+        that.setData({
+          scrollHeight: calc
+        });
+      }
+    });
+    this.getCategoryInfo();
+  },
+  getFootCart: function () {
+    let that = this;
+    util.request(api.GetFootCart).then(function (res) {
+      if (res.errno === 0) {
+        that.setData({
+          footCart: res.data,
+        });
+      }
+    });
+  },
+  getCategoryInfo: function () {
+    let that = this;
+    util.request(api.GoodsCategoryBrand, { id: that.data.brandId, goodsBizType: that.data.goodsBizType })
+      .then(function (res) {
+        if (res.errno == 0) {
+          that.setData({
+            navList: res.data.brandList,
+            currentBrand: res.data.currentBrand,
+            isShow: 0
+          });
+          //nav位置
+          let currentIndex = that.data.currentTab;
+          let navListCount = that.data.navList.length;
+          for (let i = 0; i < navListCount; i++) {
+            if (that.data.navList[i].id == that.data.brandId) {
+              break;
+            }
+          }
+          if (currentIndex > navListCount / 2 && navListCount > 5) {
+            that.setData({
+              scrollLeft: currentIndex * 60
+            });
+          }
+          that.setData({
+            currentTab: currentIndex,
+            navIndex: currentIndex
+          });
+          that.getGoodsList();
+        } else {
+          //显示错误信息
+        }
+      });
+  },
+  refreshCategoryInfo: function () {
+    let that = this;
+    util.request(api.GoodsCategoryBrand, { id: that.data.brandId, goodsBizType: that.data.goodsBizType})
+      .then(function (res) {
+        if (res.errno == 0) {
+          that.setData({
+            currentBrand: res.data.currentBrand,
+            goodsList: [],
+            isShow: 1
+          });
+          that.getGoodsList();
+        } else {
+          //显示错误信息
+        }
+      });
+  },
+  onReady: function () {
+    // 页面渲染完成
+  },
+  onShow: function () {
+    // 页面显示
+    this.getFootCart();
+  },
+  onHide: function () {
+    // 页面隐藏
+  },
+  hideSwitchAttrPop: function () {
+    this.setData({
+      openAttr: false
+    })
+  },
+  getGoodsList: function () {
+    var that = this;
+    wx.showLoading({
+      title: '加载中...',
+    });
+    util.request(api.GoodsList, { brandId: that.data.brandId, goodsBizType: that.data.goodsBizType, page: that.data.page, size: that.data.size })
+      .then(function (res) {
+        let goodsList = that.data.goodsList.concat(res.data.data);
+        that.setData({
+          goodsList: goodsList,
+          totalPages: res.data.totalPages
+        });
+        wx.hideLoading();
+      });
+  },
+  onUnload: function () {
+    // 页面关闭
+  },
+  switchAttrPop: function () {
+    this.setData({
+      openAttr: !this.data.openAttr
+    })
+  }
+  ,
+  //购物车增加
+  addCart: function (e) {
+    let that = this;
+    that.setData({
+      number: 1
+    });
+    var goodsId = e.currentTarget.dataset.goodsId;
+    util.request(api.GoodsSku, { goodsId: goodsId }).then(function (res) {
+      if (res.errno === 0 && null != res.data) {
+        that.setData({
+          goodsVo: res.data.goodsVo,
+          specificationList: res.data.specificationList,
+          productList: res.data.productList,
+          stockNum: res.data.stockNum,
+          openAttr: !that.data.openAttr,
+          cartNumber: res.data.cartNumber,
+          checkedSpecText: res.data.specificationList[0].valueList[0].value
+        });
+        //
+        let _specificationList = res.data.specificationList;
+        for (let i = 0; i < _specificationList.length; i++) {
+          if (_specificationList[i].valueList.length == 1) {
+            //如果已经选中,则反选
+            _specificationList[i].valueList[0].checked = true;
+          }
+        }
+        that.setData({
+          'specificationList': _specificationList
+        });
+
+      }
+    });
+  }
+  ,
+  clickSkuValue: function (event) {
+    let that = this;
+    let specValueId = event.currentTarget.dataset.valueId;
+    let index = event.currentTarget.dataset.index;
+    let _specificationList = this.data.specificationList;
+    for (let j = 0; j < _specificationList[index].valueList.length; j++) {
+      if (_specificationList[index].valueList[j].id == specValueId) {
+        //如果已经选中,则反选
+        if (_specificationList[index].valueList[j].checked) {
+          _specificationList[index].valueList[j].checked = false;
+        } else {
+          _specificationList[index].valueList[j].checked = true;
+        }
+      } else {
+        _specificationList[index].valueList[j].checked = false;
+      }
+    }
+    this.setData({
+      'specificationList': _specificationList
+    });
+    //重新计算spec改变后的信息
+    goodsUtil.changeSpecInfo(that);
+  }
+  ,
+  cutNumber: function () {
+    this.setData({
+      number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1
+    });
+  }
+  ,
+  addNumber: function () {
+    this.setData({
+      number: this.data.number + 1
+    });
+  }
+  ,
+  //购物车增加
+  addToCart: function () {
+    let that = this;
+    var goodsId = that.data.goodsVo.id;
+    //提示选择完整规格
+    if (!that.data.productList || !that.data.productList.length) {
+      util.showErrorToast('当前门店没有库存');
+      return false;
+    }
+    //提示选择完整规格
+    if (!goodsUtil.isCheckedAllSpec(that)) {
+      return false;
+    }
+    //根据选中的规格,判断是否有对应的sku信息
+    let checkedProduct = goodsUtil.getCheckedProductItem(goodsUtil.getCheckedSpecKey(that), that);
+    if (!checkedProduct || checkedProduct.length <= 0) {
+      //找不到对应的product信息,提示没有库存
+      return false;
+    }
+    //验证库存
+    if (checkedProduct.stock_num < this.data.number) {
+      //找不到对应的product信息,提示没有库存
+      return false;
+    }
+    util.request(api.CartAdd, {
+      goodsId: goodsId,
+      productId: checkedProduct[0].id,
+      number: this.data.number
+    }, 'POST').then(function (res) {
+      if (res.errno === 0 && null != res.data) {
+        wx.showToast({
+          title: '添加成功',
+          icon: 'success',
+          mask: true
+        });
+        that.setData({
+          openAttr: !that.data.openAttr
+        })
+        that.getFootCart();
+      } else {
+        wx.showToast({
+          title: res.errmsg,
+          icon: 'none'
+        })
+      }
+    });
+  },
+  switchCate: function (event) {
+    // console.log(this.data.scrollLeft);
+    // console.log(this.data.brandId);
+    // console.log(event.currentTarget.dataset.id);
+    if (this.data.brandId == event.currentTarget.dataset.id) {
+      return false;
+    }
+    var that = this;
+    that.setData({
+      goodsList: [],
+      page: 1,
+      currentTab: event.currentTarget.dataset.current
+    });
+    // console.log("currentIndex:" + that.data.currentTab);
+    var clientX = event.detail.x;
+    var currentTarget = event.currentTarget;
+    if (clientX < 60) {
+      that.setData({
+        scrollLeft: currentTarget.offsetLeft - 60
+      });
+    } else if (clientX > 330) {
+      that.setData({
+        scrollLeft: currentTarget.offsetLeft
+      });
+    }
+    this.setData({
+      brandId: event.currentTarget.dataset.id,
+      goodsBizType: that.data.goodsBizType
+    });
+    this.getCategoryInfo();
+
+  }, 
+  onPullDownRefresh: function () {
+    console.log("下拉");
+    wx.startPullDownRefresh();
+    // that.setData({ page: 10, refresh: false })
+    wx.showLoading({
+      title: '加载中...',
+    })
+    that.setData({
+      page: that.data.page,
+    });
+    that.getGoodsList();
+
+  },
+  toggleTab(e) {
+    if (this.data.brandId == e.currentTarget.dataset.index) {
+      return false;
+    }
+    var that = this;
+    that.setData({
+      goodsList: [],
+      page: 1,
+      brandId: e.currentTarget.dataset.index,
+      goodsBizType: that.data.goodsBizType,
+      currentTab: e.currentTarget.dataset.current
+    });
+    this.getCategoryInfo();
+  },
+  onReachBottom() {
+    // wx.stopPullDownRefresh();
+    var that = this;
+    if (!that.data.goodsList) {
+      wx.showLoading({
+        title: '加载中...',
+      })
+    }
+    that.setData({
+      page: that.data.page + 1,
+    });
+    that.getGoodsList();
+  }
+})

+ 7 - 0
wx-mall/pages/categoryBrand/categoryBrand.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+  "navigationBarTitleText": "品牌",
+  "enablePullDownRefresh": true, 
+  "backgroundColor": "#f0145a" ,
+  "onReachBottomDistance": 50
+}

+ 130 - 0
wx-mall/pages/categoryBrand/categoryBrand.wxml

@@ -0,0 +1,130 @@
+<!--pages/categoryBrand/categoryBrand.wxml-->
+<view class="container">
+  <view class="cart-panel" wx:if="{{footCart.goodsCount>0}}" bindtap="hideSwitchAttrPop">
+    <view class="cart-icon">
+      <navigator class="nav-cell" open-type='switchTab' url="/pages/cart/cart">
+        <image src="../../static/images/cart-fixed.png">
+        </image>
+      </navigator>
+      <view class="cart-num" bindtap="switchNav" data-name="cart">{{footCart.goodsCount}}</view>
+    </view>
+    <view class="cart-body" bindtap="switchNav" data-name="cart">¥{{footCart.checkedGoodsAmount}}</view>
+    <navigator class="nav-cell" open-type='switchTab' url="/pages/cart/cart">
+      <view class="cart-pay">去结算 > </view>
+    </navigator>
+  </view>
+  <view wx:if="{{showNavList}}" class="modal-wrap"></view>
+  <view class="fast-nav">
+    <contact-button wx:if="{{!showNavList}}" class="contact" size="25" type="primary" session-from="weapp">
+      <text>找客服</text>
+    </contact-button>
+    <view wx:if="{{!showNavList}}" class="nav" bindtap="toggleNav">
+      <text>快捷</text>
+      <text>导航</text>
+    </view>
+    <view class="nav-list" wx:if="{{showNavList}}">
+      <view class="nav-item">
+        <text class="nav-text">首页</text>
+        <view class="nav-cell" bindtap="switchNav" data-name="index">
+          <image src="../../static/images/nav-1.png"></image>
+        </view>
+      </view>
+      <view class="nav-item">
+        <text class="nav-text">足迹</text>
+        <navigator class="nav-cell" url="../ucenter/footprint/footprint">
+          <image src="../../static/images/nav-2.png"></image>
+        </navigator>
+      </view>
+      <view class="nav-item">
+        <text class="nav-text">搜索</text>
+        <navigator class="nav-cell" url="../search/search">
+          <image src="../../static/images/nav-3.png"></image>
+        </navigator>
+      </view>
+      <view class="nav-item">
+        <text class="nav-text">购物车</text>
+        <view class="nav-cell" bindtap="switchNav" data-name="cart">
+          <image src="../../static/images/nav-4.png"></image>
+        </view>
+      </view>
+    </view>
+    <view wx:if="{{showNavList}}" class="close" bindtap="toggleNav">X</view>
+  </view>
+  <!-- <view class="cate-nav">
+    <scroll-view scroll-x="true" class="cate-nav-body" style="width: 750rpx;" scroll-left="{{scrollLeft}}" >
+      <view wx:for="{{navList}}" class="item {{ brandId == item.id ? 'active' : ''}}" data-current="{{index}}" data-id="{{item.id}}" bindtap="switchCate" wx:key="{{index}}">
+        <view class="name">{{item.name}}</view>
+      </view>
+    </scroll-view>
+  </view> -->
+  <view class="cate-nav" bindtap="hideSwitchAttrPop">
+    <scroll-view scroll-x="true" class="cate-nav-body" style="width: 750rpx;" scroll-left="{{scrollLeft}}" >
+      <view wx:for="{{navList}}" class="item {{ brandId == item.id ? 'active' : ''}}" data-current="{{index}}" data-id="{{item.id}}" bindtap="switchCate" wx:key="{{index}}">
+        <view class="name">{{item.name}}</view>
+      </view>
+    <!-- <view wx:for="{{navList}}" wx:key="{{index}}" bindtap="toggleTab" data-current="{{index}}" data-index="{{item.id}}" class="item {{ brandId == item.id ? 'active' : '' }}"><view class="name">{{item.name}}</view></view> -->
+    </scroll-view>
+  </view>
+
+  <view class="cate-item" bindtap="hideSwitchAttrPop">
+    <view class="h">
+      <text class="name">{{currentBrand.name}}</text>
+      <text class="desc">{{currentBrand.simple_desc?currentBrand.simple_desc:""}}</text>
+    </view>
+    <view class="b">
+      <block wx:for="{{goodsList}}" wx:for-index="iindex" wx:for-item="iitem" wx:key="unique">
+        <view class="item {{iindex % 2 == 0 ? 'item-b' : '' }}">
+           <navigator url="../goods/goods?id={{iitem.id}}&&currentIndex={{navIndex}}&&storeId={{iitem.storeId}}">
+            <image class="img" src="{{iitem.list_pic_url}}"></image>
+            <text class="name">{{iitem.name}}</text>
+           </navigator>
+           <view class="price">¥{{iitem.retail_price == null?'':iitem.retail_price}}
+             <image class="cart" src="/static/images/cart.png" data-goods-id="{{iitem.id}}" data-product-id="{{iitem.product_id}}" bindtap='addCart' background-size="cover"></image>
+           </view>
+         </view>
+       </block>
+     </view>
+  </view>
+  <!-- bindchange="switchTab" -->
+  <!-- <swiper class="" current="{{currentTab}}" scroll-top="{{scrollTop}}" style="height:{{scrollHeight}}px;">
+    <swiper-item wx:for="{{navList}}"  wx:key="{{navIndex}}">
+    <scroll-view scroll-y="true" class="cate-item">
+    </scroll-view>
+    </swiper-item>
+  </swiper> -->
+
+   <view wx:if="{{openAttr}}" class="attr-pop">
+          <view class="attr-close" bindtap="switchAttrPop">X</view>
+          <view class="img-info">
+            <image class="img" src="{{goodsVo.list_pic_url}}"></image>
+            <view class="info">
+              <view class="c">
+                <view class="p">价格:¥{{goodsVo.retail_price}}</view>
+                <view class="a" wx:if="{{productList.length>0}}">已选择:{{checkedSpecText}}</view>
+                <view class="a">库存{{stockNum}}件</view>
+              </view>
+            </view>
+          </view>
+          <view class="spec-con">
+            <view class="spec-item" wx:for="{{specificationList}}" wx:key="{{item.specification_id}}" wx:for-index="itemIndex">
+              <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="{{vitem.id}}" data-index="{{itemIndex}}" data-value-id="{{vitem.id}}" data-name-id="{{vitem.specification_id}}">{{vitem.value}}</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 class="{{number+cartNumber>= stockNum? 'addEnabel':'add'}}" bindtap="{{number+cartNumber>= stockNum ? '':'addNumber'}}">+</view>
+              </view>
+            </view>
+          </view>
+          <view class="bottom-btn">
+            <view class="r" bindtap="addToCart">加入购物车</view>
+          </view>
+        </view>
+</view>

+ 299 - 0
wx-mall/pages/categoryBrand/categoryBrand.wxss

@@ -0,0 +1,299 @@
+/* pages/categoryBrand/categoryBrand.wxss */
+.container{
+    background: #f9f9f9;
+}
+
+.cate-nav{
+    position: fixed;
+    left:0;
+    top:0;
+    z-index: 100;
+    width: 100%;
+    white-space: nowrap;
+}
+
+.cate-nav-body{
+  width: auto;
+    height: 84rpx;
+    /* white-space: nowrap;    */
+    background: #fff;
+     border-top: 1px solid rgba(0,0,0,.15); 
+    overflow: hidden;
+}
+
+::-webkit-scrollbar{
+width: 0;
+height: 0;
+color: transparent;
+}
+/* scroll-view隐藏滚动条方法 */
+.cate-nav .item{
+    display: inline-block;
+    height: 84rpx;
+    /* min-width: 130rpx; */
+    padding: 0 15rpx;
+}
+
+.cate-nav .item .name{
+    display: block;
+    height: 84rpx;
+    padding: 0 20rpx;
+    line-height: 84rpx;
+    color: #333;
+    font-size: 30rpx;
+    width: auto;
+}
+
+.cate-nav .item.active .name{
+    color: #ab2b2b;
+    border-bottom: 2px solid #ab2b2b;
+}
+
+.cate-item{
+    margin-top: 94rpx;
+    height: 100%;
+    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;
+  margin-bottom: 400rpx;
+}
+
+.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;
+  background-size: 202rpx 202rpx;
+}
+
+.cate-item .item .name{
+  display: block;
+  width: 365.625rpx;
+  height: 70rpx;
+  margin: 11.5rpx 0 22rpx 0;
+  text-align: center;
+  padding: 0 20rpx;
+  font-size: 26rpx;
+  color: #333;
+}
+.cate-item .item .price{
+  display: block;
+  width: 365.625rpx;
+  height: 30rpx;
+  text-align: center;
+  font-size: 30rpx;
+  color: #b4282d;
+}
+.cate-item .item .price .cart{
+  margin-left: 20rpx;
+  width: 35rpx;
+  height: 35rpx;
+  vertical-align: -6rpx;
+}
+
+
+.attr-pop {
+  width: 100%;
+  height: auto;
+  padding: 31.25rpx;
+  background: #fff;
+  position: fixed;
+  bottom: 100rpx;
+  z-index: 500;
+}
+
+.attr-close{
+  float: right;
+  width: 40rpx;
+  height: 40rpx;
+  line-height: 40rpx;
+  border-radius: 50%;
+  font-size: 40rpx;
+  text-align: center;
+  overflow: hidden;
+}
+
+.attr-pop .img-info {
+  width: 687.5rpx;
+  height: 177rpx;
+  overflow: hidden;
+  margin-bottom: 41.5rpx;
+}
+
+.attr-pop .img {
+  float: left;
+  height: 177rpx;
+  width: 177rpx;
+  background: #f4f4f4;
+  margin-right: 31.25rpx;
+}
+
+.attr-pop .info {
+  /* float: left; */
+  height: 177rpx;
+  display: flex;
+  align-items: flex-start;
+}
+
+.attr-pop .p {
+  font-size: 33rpx;
+  color: #333;
+  height: 33rpx;
+  line-height: 33rpx;
+  margin-bottom: 10rpx;
+}
+
+.attr-pop .a {
+  font-size: 29rpx;
+  color: #333;
+  height: 40rpx;
+  line-height: 40rpx;
+  width: 260px;
+  display:block;
+  word-break: break-all;
+  word-wrap: break-word;
+}
+
+.spec-con {
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+}
+
+.spec-con .name {
+  height: 32rpx;
+  margin-bottom: 22rpx;
+  font-size: 29rpx;
+  color: #333;
+}
+
+.spec-con .values {
+  height: auto;
+  margin-bottom: 31.25rpx;
+  font-size: 0;
+}
+
+.spec-con .value {
+  display: inline-block;
+  height: 62rpx;
+  padding: 0 35rpx;
+  line-height: 56rpx;
+  text-align: center;
+  margin-right: 25rpx;
+  margin-bottom: 16.5rpx;
+  border: 1px solid #333;
+  font-size: 25rpx;
+  color: #333;
+}
+
+.spec-con .value.disable {
+  border: 1px solid #ccc;
+  color: #ccc;
+}
+
+.spec-con .value.selected {
+  border: 1px solid #b4282d;
+  color: #b4282d;
+}
+
+.number-item .selnum {
+  width: 322rpx;
+  height: 71rpx;
+  border: 1px solid #ccc;
+  display: flex;
+}
+
+.number-item .cut {
+  width: 93.75rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 65rpx;
+}
+
+.number-item .number {
+  flex: 1;
+  height: 100%;
+  text-align: center;
+  line-height: 68.75rpx;
+  border-left: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  float: left;
+}
+
+.number-item .add {
+  width: 93.75rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 65rpx;
+}
+
+.bottom-btn {
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  z-index: 10;
+  width: 750rpx;
+  height: 100rpx;
+  display: flex;
+  background: #fff;
+}
+
+.bottom-btn .r {
+  border: 1px solid #b4282d;
+  background: #b4282d;
+  float: left;
+  height: 100rpx;
+  line-height: 96rpx;
+  flex: 1;
+  text-align: center;
+  color: #fff;
+}
+.addEnabel {
+  width: 93.75rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 65rpx;
+  color: #ccc;
+}

+ 114 - 0
wx-mall/pages/images/images.js

@@ -0,0 +1,114 @@
+Component({
+  // 组件的属性列表
+  properties: {
+    // 判断是否还有更多数据
+    hasMore: {
+      type: Boolean,
+      value: false
+    },
+    // 加载中的显示文本
+    loadingText: {
+      type: String,
+      value: '加载中...'
+    },
+    // 加载失败的显示文本
+    failText: {
+      type: String,
+      value: '加载失败, 请点击重试!'
+    },
+    // 没有更多后的显示文本, 默认没有则隐藏加载更多控件
+    finishText: {
+      type: String,
+      value: ''
+    },
+    // 列表渲染延时, 默认为 500 ms, 我在开发工具中测试列表渲染速度时快时慢, 可根据实际使用中界面复杂度自行调整
+    // ps 如果能监听setData() 渲染结束的话则可以不需要延时 
+    listRenderingDelay: {
+      type: Number,
+      value: 500
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+    showThis: false,
+    text: '',
+    showIcon: false,
+    isLoading: false
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+
+    //加载更多的入口方法, 直接在page中使用时请在onReachBottom() 方法中调用这个方法, 并实现loadMoreListener方法去获取数据
+    loadMore: function () {
+      console.log('properties', this.properties)
+      if (!this.properties.hasMore) {
+        console.log('load more finish')
+        return
+      }
+      if (this.data.isLoading) {
+        console.log('loading ...')
+        return
+      }
+      this.setData({
+        isLoading: true
+      })
+      this.triggerEvent('loadMoreListener')
+    },
+    //加载完成, 传入hasMore 
+    loadMoreComplete: function (data) {
+      var hasMore = data.curPage < data.pageCount && data.pageCount != 1
+      var text = '', showThis = false, showIcon = false
+
+      if (hasMore) {
+        showIcon = true
+        showThis = true
+        text = this.properties.loadingText
+      } else if (this.properties.finishText.length > 0) {
+        text = this.properties.finishText
+        showThis = true
+      }
+      this.setData({
+        hasMore: hasMore,
+        text: text,
+        showIcon: showIcon,
+        showThis: showThis
+      })
+      //界面渲染延迟, 避免列表还未渲染完成就再次触发 loadMore 方法
+      setTimeout(function () {
+        this.setData({
+          isLoading: false
+        })
+      }.bind(this), this.properties.listRenderingDelay)
+    },
+    // 加载失败
+    loadMoreFail: function () {
+      this.setData({
+        showIcon: false,
+        text: this.properties.failText
+      })
+
+      //界面渲染延迟, 避免列表还未渲染完成就再次触发 loadMore 方法
+      setTimeout(function () {
+        this.setData({
+          isLoading: false
+        })
+      }.bind(this), this.properties.listRenderingDelay)
+    },
+    //点击 loadmore 控件时触发, 只有加载失败时才会进入页面回调方法
+    clickLoadMore: function () {
+      if (this.data.text != this.properties.failText) return
+      this.setData({
+        showIcon: true,
+        text: this.properties.loadingText,
+        isLoading: true
+      })
+      this.triggerEvent('clickLoadMore')
+    }
+  }
+})

+ 4 - 0
wx-mall/pages/images/images.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 4 - 0
wx-mall/pages/images/images.wxml

@@ -0,0 +1,4 @@
+<view class="loadmore" hidden='{{!showThis}}' bindtap='clickLoadMore'>
+    <image class="icon {{showIcon?'active':''}}" src='/static/images/20140524124233131.gif' hidden='{{!showIcon}}'/>
+    <text>{{text}}</text>
+</view>

+ 34 - 0
wx-mall/pages/images/images.wxss

@@ -0,0 +1,34 @@
+.loadmore {
+   height: 35px;
+   width: 100%;
+   display: flex;
+   justify-content: center;
+   align-items: center;
+ }
+ 
+ .loadmore text{
+   font-size: 13px;
+   color: #bfbfbf;
+   font-weight: bold;
+   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+ 
+ .icon{
+   width: 25px;
+   height: 25px;
+   margin-right: 10px;
+ }
+
+ .active {
+   animation: weuiLoading 0.6s steps(12, end) infinite;
+ }
+
+ @keyframes weuiLoading {
+   0% {
+     transform: rotate3d(0, 0, 1, 0deg);
+   }
+ 
+   100% {
+     transform: rotate3d(0, 0, 1, 360deg);
+   }
+ }

+ 1 - 1
wx-mall/pages/index/index.js

@@ -28,7 +28,7 @@ Page({
     let that = this;
     wx.setStorageSync("navUrl", "/pages/index/index");
     // options.scene = 38;
-    // options.scene = 65;
+    // options.scene = 67;
     // options.scene = 28;
     // options.scene = 8;
     if (options.scene) {

+ 216 - 0
wx-mall/pages/ucenter/campMinus/campMinus.js

@@ -0,0 +1,216 @@
+var app = getApp();
+var util = require('../../../utils/util.js');
+var api = require('../../../config/api.js');
+
+Page({
+  data: {
+    campMinus: {},
+    page: 1,
+    size: 4,
+    referrer: 0,
+    storeId: '',
+    campMinusId: '',
+    merchSn: '',
+    openCampAttr: false,
+    storeName: '',
+    isShare: '',
+    categoryFilter: false,
+    filterCategory: [],
+    goodsList: [],
+    categoryId: 0,
+    currentSortType: 'desc',
+    currentSortOrder: 'a.create_time',
+    goodsCount: 0,
+  },
+  onLoad: function(options) {
+    let that = this;
+    // options.scene = '6&8&满4件减1&1';
+    if (options.scene) {
+      var scene = decodeURIComponent(options.scene);
+      console.log("scene is ", scene);
+      var scanArray = scene.split('&');
+      var id = scanArray[0];
+      var storeId = scanArray[1];
+      var campName = scanArray[2];
+      var isShare = scanArray[3];
+      // console.log(campName);
+      // console.log(storeId);
+      this.setData({
+        campMinusId: id,
+        storeId: storeId,
+        campName: campName,
+        isShare: isShare
+      });
+      if(campName){
+        wx.setNavigationBarTitle({
+          title: campName
+        })
+      }
+    } else {
+      if (options.campName) {
+        wx.setNavigationBarTitle({
+          title: options.campName
+        })
+      }
+      if (options.campMinusId) {
+        that.setData({
+          campMinusId: options.campMinusId
+        });
+      }
+      if (options.storeId) {
+        that.setData({
+          storeId: options.storeId
+        });
+      }
+      if (options.isShare) {
+        that.setData({
+          isShare: options.isShare
+        });
+      }
+    }
+  },
+  onReady: function() {
+    let that = this;
+    that.getCampminusDetail();
+    that.getGoodsList();
+  },
+  getCampminusDetail() {
+    var that = this;
+    util.request(api.CampminusDetail, {
+      campMinusId: that.data.campMinusId,
+      storeId: that.data.storeId
+    })
+      .then(function (res) {
+        if (res.errno === 0) {
+          if (res.data) {
+            that.setData({
+              campMinus: res.data,
+              storeName: res.data.storeName
+            });
+            util.countdown(that, that.data.campMinus, 'campMinus', null);
+
+            // console.log(that.data.campMinus.dateformat.day)
+            // console.log(that.data.campMinus.dateformat.hr)
+            // console.log(that.data.campMinus.dateformat.min)
+            // console.log(that.data.campMinus.dateformat)
+            // console.log(that.data.campMinus.dateformat.sec)
+          }
+        }
+      });
+  },
+  getGoodsList() {
+    wx.showLoading({
+      title: '加载中...',
+    });
+    var that = this;
+    util.request(api.StoreCampMinusGoodsList, { campMinusId: that.data.campMinusId, page: that.data.page, size: that.data.size, order: that.data.currentSortOrder, sort: that.data.currentSortType, categoryId: that.data.categoryId, storeId: that.data.storeId })
+      .then(function (res) {
+        if (res.errno === 0) {
+          console.log(res.data.goodsList);
+          let goodsList = that.data.goodsList.concat(res.data.goodsList);
+          that.setData({
+            goodsList: goodsList,
+            goodsCount: res.data.goodsCount,
+            filterCategory: res.data.filterCategory
+          });
+          wx.hideLoading();
+          if (that.data.categoryId > 0) {
+            let filterCategory = that.data.filterCategory;
+            filterCategory.forEach(function (val, index, arr) {
+              if (val.id == that.data.categoryId) {
+                val.checked = true;
+                filterCategory[index] = val;
+                that.setData({ filterCategory: filterCategory });
+              } else {
+                val.checked = false;
+              }
+            }, that);
+          }
+        }
+      });
+  },
+  openSortFilter: function (event) {
+    let currentId = event.currentTarget.id;
+    switch (currentId) {
+      case 'categoryFilter':
+        this.setData({
+          'categoryFilter': !this.data.categoryFilter,
+          'currentSortType': 'category',
+          'currentSortOrder': 'asc'
+        });
+        break;
+      case 'priceSort':
+        let tmpSortOrder = 'asc';
+        if (this.data.currentSortOrder == 'asc') {
+          tmpSortOrder = 'desc';
+        }
+        this.setData({
+          'currentSortType': 'price',
+          'currentSortOrder': tmpSortOrder,
+          'categoryFilter': false,
+          goodsList: [],
+          page: 1
+        });
+        this.getGoodsList();
+        break;
+      default:
+        //综合排序
+        this.setData({
+          'currentSortType': 'default',
+          'currentSortOrder': 'desc',
+          'categoryFilter': false,
+          goodsList: [],
+          page: 1
+        });
+        this.getGoodsList();
+    }
+  },
+  selectCategory: function (event) {
+    let that = this;
+    let currentIndex = event.target.dataset.categoryIndex;
+    this.setData({
+      categoryFilter: false,
+      categoryId: this.data.filterCategory[currentIndex].id,
+      goodsList: []
+    });
+    that.getGoodsList();
+  },
+  /**
+   * 去逛逛
+   */
+  toIndexPage: function() {
+    wx.switchTab({
+      url: "/pages/index/index"
+    });
+  },
+  selectCampMinus(e) {
+    let goodsBizType = e.currentTarget.dataset.goodsType;
+    let that = this;
+    // wx.navigateTo({
+    //   url: '/pages/shopping/coupon/coupon',
+    // })
+    that.setData({
+      openCampAttr: !that.data.openCampAttr
+    })
+    if (that.data.openCampAttr) {
+      // that.getTicketDiscountList(goodsBizType);
+    }
+  },
+  hideSwitchCampPop: function() {
+    this.setData({
+      openCampAttr: false
+    })
+  },
+  onReachBottom() {
+    var that = this;
+    if (!that.data.goodsList) {
+      wx.showLoading({
+        title: '加载中...',
+      })
+    }
+    that.setData({
+      page: that.data.page + 1,
+    });
+    that.getGoodsList();
+  }
+})

+ 3 - 0
wx-mall/pages/ucenter/campMinus/campMinus.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "满减满折"
+}

+ 128 - 0
wx-mall/pages/ucenter/campMinus/campMinus.wxml

@@ -0,0 +1,128 @@
+<view class="container">
+  <view class='goods-view-image' bindtap="hideSwitchCampPop">
+    <image lazy-load="true" class="imagess" src="{{campMinus.advImgUrl}}" mode="aspectFill"></image>
+  </view>
+  <view class='goods-view'>
+    <view class='goods-store'>活动规则</view>
+    <view class='goods-shop' bindtap="selectCampMinus">查看活动规则 > </view>
+  </view>
+  <view class='goods-view' bindtap="hideSwitchCampPop">
+    <view class='goods-store'>{{storeName}}</view>
+    <view class='goods-shop' bindtap="toIndexPage">进入店铺 > </view>
+  </view>
+  <view class='goods-view' bindtap="hideSwitchCampPop">
+    <view class='goods-time'>距结束 
+      <text class='time_data'>{{campMinus.dateformat.day}}</text>天
+      <text class='time_data'>{{campMinus.dateformat.hr}}</text>时
+      <text class='time_data'>{{campMinus.dateformat.min}}</text>分
+      <text class='time_data'>{{campMinus.dateformat.sec}}</text>秒</view>
+  </view>
+</view>
+<view class='goods-view2' bindtap="hideSwitchCampPop">
+  <view class='goods-store2'>该活动适用于以下商品</view>
+  <view class='goods-shop2'>共{{goodsCount}}件 </view>
+</view>
+
+<view class="sort">
+  <view class="sort-box" bindtap="hideSwitchCampPop">
+    <view class="item {{currentSortType == 'default' ? 'active' : ''}}" bindtap="openSortFilter" id="defaultSort">
+      <text class="txt">综合</text>
+    </view>
+    <view class="item by-price {{currentSortType == 'price' ? 'active' : ''}} {{currentSortOrder == 'asc'  ? 'asc' : 'desc'}}" bindtap="openSortFilter" id="priceSort">
+      <text class="txt">价格</text>
+    </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}}" bindtap="hideSwitchCampPop">
+    <view class="item {{item.checked ? 'active' : ''}}" wx:for="{{filterCategory}}" wx:key="cate-{{item.id}}" data-category-index="{{index}}" bindtap="selectCategory">{{item.name}}</view>
+  </view>
+</view>
+
+<view class="no-coupon" wx:if="{{goodsList.length == 0}}" bindtap="hideSwitchCampPop">
+  <view class="c" bindtap="hideSwitchCampPop">
+    <view class="title-box">
+      暂无商品
+    </view>
+  </view>
+</view>
+<view class="cate-item" bindtap="hideSwitchCampPop" wx:if="{{goodsList.length > 0}}">
+  <view class="b">
+    <block wx:for="{{goodsList}}" wx:for-index="iindex" wx:for-item="iitem" wx:key="unique">
+      <view class="item {{iindex % 2 == 0 ? 'item-b' : '' }}">
+        <navigator url="../../goods/goods?id={{iitem.id}}&&storeId={{iitem.storeId}}">
+          <image class="img" src="{{iitem.list_pic_url}}"></image>
+          <text class="name">{{iitem.name}}</text>
+        </navigator>
+
+        <view class="price">¥{{iitem.retail_price}}
+          <!-- <image class="cart" src="/static/images/cart.png" data-goods-id="{{iitem.id}}" data-retail-price="{{iitem.retail_price}}" bindtap='addCart' background-size="cover"></image> -->
+        </view>
+      </view>
+    </block>
+  </view>
+</view>
+<!-- 查看活动规则弹框start -->
+<view wx:if="{{openCampAttr}}" class="attr-pop">
+  <view class="attr-title">活动规则</view>
+  <view class="ticket-img-info">
+    <view style="margin-top: 16rpx;height:50rpx;width:687.5rpx;">
+      <view class="camp-title">
+        <view style='float:left;font-size:24rpx'>活动时间:</view>
+        <view class="camp-title-text">{{campMinus.inValidTime}}</view>
+      </view>
+      <view class="camp-title">
+        <view style='float:left;font-size:24rpx'>优惠内容:</view>
+        <view class="camp-title-text">{{campMinus.advDesc}}</view>
+      </view>
+      <view class="camp-title">
+        <view style='float:left;font-size:24rpx'>使用商品:</view>
+        <view class="camp-title-text">{{campMinus.applyType=='00'?'全部商品':''}}{{campMinus.applyType=='01'?'部分商品':''}}{{campMinus.applyType=='02'?'部分商品':''}},详见活动页</view>
+      </view>
+      <view class="camp-title">
+        <view style='float:left;font-size:24rpx'>优惠叠加:</view>
+        <view style='width:500rpx' class="camp-title-text">不与会员折扣、优惠券/码、限时折扣、特权价同时使用</view>
+      </view>
+    </view>
+  </view>
+</view>
+<!-- 查看活动规则end -->
+<view class="btns">
+  <view class="save" bindtap="toIndexPage">进店逛逛</view>
+</view>
+<!--
+<view wx:if="{{openAttr && goodsList.length > 0}}" class="attr-pop">
+  <view class="attr-close" bindtap="switchAttrPop">X</view>
+  <view class="img-info">
+    <image class="img" src="{{goodsVo.list_pic_url}}"></image>
+    <view class="info">
+      <view class="c">
+        <view class="p">价格:¥{{retailPrice}}</view>
+        <view class="a" wx:if="{{productList.length>0}}">已选择:{{checkedSpecText}}</view>
+        <view class="a">库存{{goodsVo.goodsBizType==00 && goodsVo.isStockShare==1?goodsVo.goods_number:goodsVo.stockNum}}件</view>
+      </view>
+    </view>
+  </view>
+ 
+  <view class="spec-con">
+    <view class="spec-item" wx:for="{{specificationList}}" wx:key="{{item.specification_id}}" wx:for-index="itemIndex">
+      <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="{{vitem.id}}" data-index="{{itemIndex}}" data-value-id="{{vitem.id}}" data-name-id="{{vitem.specification_id}}">{{vitem.value}}</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="{{number+cartNumber>= stockNum? 'addEnabel':'add'}}" bindtap="{{number+cartNumber>= stockNum ? '':'addNumber'}}">+</view>
+      </view>
+    </view>
+    <view class="bottom-btn">
+      <view class="r" bindtap="addToCart">加入购物车</view>
+    </view> 
+  </view>
+</view>-->

+ 526 - 0
wx-mall/pages/ucenter/campMinus/campMinus.wxss

@@ -0,0 +1,526 @@
+/* pages/ucenter/campMinus/campMinus.wxss */
+page {
+  background: #f4f4f4;
+  min-height: 100%;
+}
+
+.container {
+  background: #f4f4f4;
+  min-height: 100%;
+}
+.goods-view{
+  /* border: 1px solid #999; */
+  height: 70rpx;
+  line-height: 70rpx;
+  background: white;
+  margin-top:10rpx;
+}
+.goods-view-image{
+  height: 200rpx;
+  line-height: 200rpx;
+  background: white;
+}
+.goods-view-image .imagess{
+  height: 200rpx;
+  width: 100%;
+}
+.goods-store{
+  text-align: left;
+  margin-left: 10rpx;
+  font-size: 30rpx;
+  float: left;
+}
+.goods-shop{
+  text-align: right;
+  margin-right: 10rpx;
+  font-size: 30rpx;
+  color: #999;
+}
+.goods-time{
+  text-align: center;
+  font-size: 25rpx;
+  color: #999;
+}
+.time_data{
+  background-color: red;
+  border-radius: 10rpx;
+  height: 30rpx;
+  line-height: 30rpx;
+  margin:6rpx;
+  color:white;
+  font-size:28rpx;
+}
+.sort{
+    position: relative;
+    background: #fff;
+    width: 100%;
+    height: 78rpx;
+    margin-top:10rpx;
+}
+
+.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{
+    display: block;
+    width: 100%;
+    height: 100%;
+    color: #333;
+}
+
+.sort-box .item.active .txt{
+    color: #b4282d;
+}
+
+.sort-box .item.by-price{
+    background: url(http://120.76.26.84:80/group1/M00/00/02/rBJEdVvr3CSAazwCAAABD1aCMbo520.png) 155rpx center no-repeat;
+    background-size: 15rpx 21rpx;
+}
+
+.sort-box .item.by-price.active.asc{
+    background: url(http://120.76.26.84:80/group1/M00/00/02/rBJEdVvr3FOACHzqAAABHU5MD_M687.png) 155rpx center no-repeat;
+    background-size: 15rpx 21rpx;
+}
+
+.sort-box .item.by-price.active.desc{
+    background: url(http://120.76.26.84:80/group1/M00/00/02/rBJEdVvr3JCAcOP5AAABdVcSS6A457.png) 155rpx center no-repeat;
+    background-size: 15rpx 21rpx;
+}
+
+.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 .b{
+  width: 750rpx;
+  height: auto;
+  overflow: hidden;
+  border-top: 1rpx solid #f4f4f4;
+  margin-top: 20rpx;
+  margin-bottom: 120rpx;
+}
+
+.cate-item .b .item{
+  float: left;
+  background: #fff;
+  width: 375rpx;
+  padding-bottom: 33.333rpx;
+  border-bottom: 1rpx solid #f4f4f4;
+  height: auto;
+  overflow: hidden;
+  text-align: center;
+}
+
+.cate-item .b .item-b{
+ border-right: 1rpx solid #f4f4f4;
+}
+
+.cate-item .item .img{
+  margin-top: 10rpx;
+  width: 302rpx;
+  height: 302rpx;
+  background-size:202rpx 202rpx;
+}
+
+.cate-item .item .name{
+  display: block;
+  width: 365.625rpx;
+  height: 70rpx;
+  padding: 0 20rpx;
+  margin: 11.5rpx 0 22rpx 0;
+  text-align: center;
+  font-size: 26rpx;
+  color: #333;
+}
+
+.cate-item .item .price{
+  display: block;
+  width: 365.625rpx;
+  height: 30rpx;
+  text-align: center;
+  font-size: 30rpx;
+  color: #b4282d;
+}
+.cate-item .item .price .cart{
+  margin-left: 20rpx;
+  width: 35rpx;
+  height: 35rpx;
+  vertical-align: -6rpx;
+}
+
+
+.attr-pop {
+  width: 100%;
+  height: auto;
+  padding: 31.25rpx;
+  background: #fff;
+  position: fixed;
+  bottom: 100rpx;
+  z-index: 500;
+}
+
+.attr-close{
+  float: right;
+  width: 40rpx;
+  height: 40rpx;
+  line-height: 40rpx;
+  border-radius: 50%;
+  font-size: 40rpx;
+  text-align: center;
+  overflow: hidden;
+}
+
+.attr-pop .img-info {
+  width: 687.5rpx;
+  height: 177rpx;
+  overflow: hidden;
+  margin-bottom: 41.5rpx;
+}
+
+.attr-pop .img {
+  float: left;
+  height: 177rpx;
+  width: 177rpx;
+  background: #f4f4f4;
+  margin-right: 31.25rpx;
+}
+
+.attr-pop .info {
+  /* float: left; */
+  height: 177rpx;
+  display: flex;
+  align-items: flex-start;
+}
+
+.attr-pop .p {
+  font-size: 33rpx;
+  color: #333;
+  height: 33rpx;
+  line-height: 33rpx;
+  margin-bottom: 10rpx;
+}
+
+.attr-pop .a {
+  font-size: 29rpx;
+  color: #333;
+  height: 40rpx;
+  line-height: 40rpx;
+  width: 260px;
+  display:block;
+  word-break: break-all;
+  word-wrap: break-word;
+}
+
+.spec-con {
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+}
+
+.spec-con .name {
+  height: 32rpx;
+  margin-bottom: 22rpx;
+  font-size: 29rpx;
+  color: #333;
+}
+
+.spec-con .values {
+  height: auto;
+  margin-bottom: 31.25rpx;
+  font-size: 0;
+}
+
+.spec-con .value {
+  display: inline-block;
+  height: 62rpx;
+  padding: 0 35rpx;
+  line-height: 56rpx;
+  text-align: center;
+  margin-right: 25rpx;
+  margin-bottom: 16.5rpx;
+  border: 1px solid #333;
+  font-size: 25rpx;
+  color: #333;
+}
+
+.spec-con .value.disable {
+  border: 1px solid #ccc;
+  color: #ccc;
+}
+
+.spec-con .value.selected {
+  border: 1px solid #b4282d;
+  color: #b4282d;
+}
+
+.number-item .selnum {
+  width: 322rpx;
+  height: 71rpx;
+  border: 1px solid #ccc;
+  display: flex;
+}
+
+.number-item .cut {
+  width: 93.75rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 65rpx;
+}
+
+.number-item .number {
+  flex: 1;
+  height: 100%;
+  text-align: center;
+  line-height: 68.75rpx;
+  border-left: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  float: left;
+}
+
+.number-item .add {
+  width: 93.75rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 65rpx;
+}
+
+.bottom-btn {
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  z-index: 10;
+  width: 750rpx;
+  height: 100rpx;
+  display: flex;
+  background: #fff;
+}
+
+.bottom-btn .r {
+  border: 1px solid #b4282d;
+  background: #b4282d;
+  float: left;
+  height: 100rpx;
+  line-height: 96rpx;
+  flex: 1;
+  text-align: center;
+  color: #fff;
+}
+.addEnabel {
+  width: 93.75rpx;
+  height: 100%;
+  text-align: center;
+  line-height: 65rpx;
+  color: #ccc;
+}
+
+.no-coupon {
+  width: 100%;
+  height: auto;
+  margin: 0 auto;
+}
+
+.no-coupon .c {
+  width: 100%;
+  height: auto;
+  margin-top: 40rpx;
+}
+
+.no-coupon .c image {
+  margin: 0 auto;
+  display: block;
+  text-align: center;
+  width: 258rpx;
+  height: 258rpx;
+}
+
+.no-coupon .c text {
+  margin: 0 auto;
+  display: block;
+  width: 258rpx;
+  height: 29rpx;
+  line-height: 29rpx;
+  text-align: center;
+  font-size: 29rpx;
+  color: #999;
+}
+
+.title-box {
+  width: 100%;
+  padding-top: 260rpx;
+  text-align: center;
+  font-size: 28rpx;
+  color: #999;
+  background: url(http://120.76.26.84:80/group1/M00/00/27/rBJEdVzbw4yAWd_IAAAaTsVixsQ773.png) no-repeat center 5rpx;
+  background-size: 250rpx auto;
+  margin-bottom: 50rpx;
+}
+
+.goods-view2{
+  /* border: 1px solid #999; */
+  height: 70rpx;
+  line-height: 70rpx;
+  margin-top:20rpx;
+}
+.goods-store2{
+  text-align: left;
+  margin-left: 10rpx;
+  font-size: 24rpx;
+  float: left;
+  color: #999;
+}
+.goods-shop2{
+  text-align: right;
+  margin-right: 10rpx;
+  font-size: 24rpx;
+  color: #999;
+}
+
+.btns {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  overflow: hidden;
+  display: flex;
+  height: 70rpx;
+  width: 100%;
+}
+.btns .save {
+  flex: 1;
+  height: 70rpx;
+  text-align: center;
+  line-height: 70rpx;
+  font-size: 28rpx;
+  color: #fff;
+  border: none;
+  border-radius: 0;
+  background: #b4282d;
+}
+
+.attr-pop {
+  width: 100%;
+  height: auto;
+  padding: 31.25rpx;
+  background: #fff;
+  position: fixed;
+  bottom: 1rpx;
+  z-index: 600;
+}
+
+.attr-close {
+  float: right;
+  width: 40rpx;
+  height: 40rpx;
+  line-height: 40rpx;
+  border-radius: 50%;
+  font-size: 40rpx;
+  text-align: center;
+  overflow: hidden;
+}
+
+.attr-pop .img-info {
+  width: 687.5rpx;
+  height: 177rpx;
+  overflow: hidden;
+  margin-bottom: 41.5rpx;
+}
+
+.attr-pop .img {
+  float: left;
+  height: 30rpx;
+  width: 30rpx;
+  background: #f4f4f4;
+  margin-right: 31.25rpx;
+}
+
+.attr-pop .info {
+  /* float: left; */
+  height: 177rpx;
+  display: flex;
+  align-items: flex-start;
+}
+
+.attr-pop .p {
+  font-size: 33rpx;
+  color: #333;
+  height: 33rpx;
+  line-height: 33rpx;
+  margin-bottom: 10rpx;
+}
+
+.attr-pop .a {
+  font-size: 29rpx;
+  color: #333;
+  height: 40rpx;
+  line-height: 40rpx;
+  width: 260px;
+  display: block;
+  word-break: break-all;
+  word-wrap: break-word;
+}
+
+.attr-title{
+  /* float: left; */
+  height: 40rpx;
+  line-height: 40rpx;
+  font-size: 35rpx;
+  text-align: center;
+  overflow: hidden;
+}
+.ticket-img-info {
+  width: 687.5rpx;
+  height: 300rpx;
+  /* overflow: scroll; */
+  margin-bottom: 41.5rpx;
+  padding-top: 50rpx;
+}
+.camp-title {
+  font-size: 0.9rem;
+  margin-top: 22rpx;
+  width: 100%;
+  height: 30rpx;
+  line-height: 30rpx;
+}
+.camp-title-text{
+  float:left;
+  margin-right:30rpx;
+  font-size:24rpx;
+  color: rgb(158, 157, 157);
+}

+ 156 - 0
wx-mall/pages/ucenter/couponDetail/couponDetail.js

@@ -0,0 +1,156 @@
+var util = require('../../../utils/util.js');
+var api = require('../../../config/api.js');
+
+
+
+var app = getApp();
+
+Page({
+  data: {
+    discStatus: '',
+    couponId: '',
+    storeId: '',
+    storeTopicId: '',
+    tickDiscount: {},
+    isShare: '',
+    referrer: 0,
+    discId: ''
+  },
+  onLoad: function(options) {
+    // 页面初始化 options为页面跳转所带来的参数
+    // options.scene = "4&8&0";
+    if (options.scene) {
+      var scene = decodeURIComponent(options.scene);
+      console.log("scene is ", scene);
+      var scanArray = scene.split('&');
+      var discId = scanArray[0];
+      var storeId = scanArray[1];
+      var isShare = scanArray[2];
+      // console.log("discId is ", discId);
+      // console.log("storeId is ", storeId);
+      // console.log("isShare is ", isShare);
+      this.setData({
+        discId: discId,
+        storeId: storeId,
+        isShare: isShare
+      });
+      if (storeId) {
+        wx.setStorageSync('storeId', storeId);
+      }
+    } else {
+      if (options.couponId) {
+        this.setData({
+          couponId: options.couponId,
+          storeId: options.storeId,
+          isShare: options.isShare
+        });
+      }
+      if (options.discId) {
+        this.setData({
+          discId: options.discId,
+          storeId: options.storeId,
+          isShare: options.isShare
+        });
+      }
+    }
+    console.log("discId is ", options.discId);
+    console.log("storeId is ", options.storeId);
+    console.log("isShare is ", options.isShare);
+    this.getTickDiscountDetail();
+  },
+  onReady: function() {},
+  onShow: function() {},
+  onHide: function() {
+    // 页面隐藏
+
+  },
+  onUnload: function() {
+    // 页面关闭
+  },
+  getTickDiscountDetail() {
+    var that = this;
+    util.request(api.DiscountDetail, {
+        couponId: that.data.couponId,
+        storeId: that.data.storeId,
+        discId: that.data.discId
+      })
+      .then(function(res) {
+        if (res.errno === 0) {
+          console.log(res.data);
+          if (res.data) {
+            that.setData({
+              tickDiscount: res.data
+            });
+          }
+        }
+      });
+  },
+  linkCouponInfo(event) {
+    // let url = event.currentTarget.dataset.couponUrl;
+    let discId = event.currentTarget.dataset.discId;
+    let storeId = wx.getStorageSync('storeId');
+    let couponId = event.currentTarget.dataset.couponId;
+
+    console.log('couponId' + couponId)
+    console.log('discId' + discId)
+    if (couponId) {
+      console.log('couponId' + couponId)
+      wx.navigateTo({
+        url: '../couponTickInfo/couponTickInfo?couponId=' + couponId + '&&storeId=' + storeId
+      })
+    }
+    if (discId) {
+      console.log('discId' + discId)
+      wx.navigateTo({
+        url: '../couponTickInfo/couponTickInfo?discId=' + discId + '&&storeId=' + storeId
+      })
+    }
+  },
+  linkMyCoupon() {
+    wx.navigateTo({
+      url: '../coupon/coupon'
+    })
+  },
+  /**
+   * 领取优惠券
+   */
+  getUserCoupon(event) {
+    var that = this;
+    let tickDiscId = event.currentTarget.dataset.tickId;
+    let storeTopicId = event.currentTarget.dataset.storeTopicId;
+    let storeId = wx.getStorageSync('storeId');
+    util.request(api.getUserCoupon, {
+      tickDiscId: tickDiscId,
+      storeTopicId: storeTopicId,
+      storeId: storeId
+    }, 'POST').then(function(res) {
+      if (res.errno === 0) {
+        wx.showToast({
+          title: '领取成功'
+        });
+        that.setData({
+          discStatus: 0
+        });
+        that.getTickDiscountDetail();
+      } else {
+        wx.showToast({
+          title: res.errmsg,
+          icon: 'none'
+        })
+      }
+    });
+  },
+  /**
+   * 优惠券可使用商品
+   */
+  linkCoupon(event) {
+    // let url = event.currentTarget.dataset.couponUrl;
+    let tickDiscId = event.currentTarget.dataset.tickId;
+    let storeTopicId = event.currentTarget.dataset.storeTopicId;
+    let storeId = wx.getStorageSync('storeId');
+
+    wx.navigateTo({
+      url: '../ticketDiscountGoods/ticketDiscountGoods?tickDiscId=' + tickDiscId + '&&storeId=' + storeId + '&&storeTopicId=' + storeTopicId
+    })
+  },
+})

+ 3 - 0
wx-mall/pages/ucenter/couponDetail/couponDetail.json

@@ -0,0 +1,3 @@
+{
+  "navigationBarTitleText": "领取优惠券"
+}

+ 27 - 0
wx-mall/pages/ucenter/couponDetail/couponDetail.wxml

@@ -0,0 +1,27 @@
+<view class="container" style='background:{{tickDiscount.ticketColor}}'>
+  <view class="coupon-form" style='background:{{tickDiscount.ticketColor}}'>
+    <view class='coupon-center'>
+      <view class="image-view">
+        <image class="image" src="{{tickDiscount.advImgUrl}}"></image>
+      </view>
+      <view class='title'>{{tickDiscount.storeName}}</view>
+      <view class='title2'>{{tickDiscount.name}}</view>
+      <view class='title-sub'>{{tickDiscount.tickDiscSubTitle==null?'-':tickDiscount.tickDiscSubTitle}}</view>
+      <view class='btn' wx:if="{{isShare==0}}">
+        <button class="r" style='background: {{tickDiscount.ticketColor}};border: 1px solid {{tickDiscount.ticketColor}};' bindtap="{{tickDiscount.isReceive==0?'getUserCoupon':''}}" data-tick-Id="{{tickDiscount.tickDiscId}}" data-store-Topic-Id="{{tickDiscount.storeTopicId}}">{{tickDiscount.isReceive==0?'领取优惠券'+isReceive:''}}{{tickDiscount.isReceive==1?'已领完':''}}</button>
+      </view>
+      <view class='btn' wx:if="{{isShare==2}}">
+        <button class="r" style='background: {{tickDiscount.ticketColor}};border: 1px solid {{tickDiscount.ticketColor}};' bindtap='linkCoupon' data-tick-Id="{{tickDiscount.tickDiscId}}" data-store-Topic-Id="{{tickDiscount.storeTopicId}}">立即使用</button>
+      </view>
+      <view class='time'>有效期:{{tickDiscount.inValidTime}}</view>
+    </view>
+    <view class='tick-info' bindtap="linkCouponInfo" data-disc-Id="{{tickDiscount.tickDiscId}}" data-coupon-Id="{{tickDiscount.couponId}}">
+      <view class='txte'>{{tickDiscount.tickDiscType=='00'?'代金券':''}}{{tickDiscount.tickDiscType=='01'?'折扣券':''}}{{tickDiscount.tickDiscType=='02'?'兑换券':''}}详情</view>
+      <view class='txte2'> > </view>
+    </view>
+    <view class='tick-info' bindtap="linkMyCoupon">
+      <view class='txte'>查看我的优惠券</view>
+      <view class='txte2'> > </view>
+    </view>
+  </view>
+</view>

+ 125 - 0
wx-mall/pages/ucenter/couponDetail/couponDetail.wxss

@@ -0,0 +1,125 @@
+page {
+  background: #f4f4f4;
+  min-height: 100%;
+}
+
+.container {
+  background: #f4f4f4;
+  min-height: 1220rpx;
+  padding-top: 30rpx;
+}
+
+.coupon-form {
+  height: 550rpx;
+  width: 100%;
+  background: #fff;
+  padding-top: 20rpx;
+  margin-left: 20rpx;
+}
+
+.to-index-btn {
+  color: #fff;
+  background: #e64340;
+  border-radius: 6px;
+  width: 300rpx;
+  height: auto;
+  line-height: 70rpx;
+  text-align: center;
+  font-size: 28rpx;
+  margin: 0 auto;
+  display: block;
+  margin-bottom: 180rpx;
+}
+
+.coupon-center {
+  background: white;
+  height: 550rpx;
+  text-align: center;
+  width: 88%;
+  margin-left:24rpx;
+}
+
+.coupon-center .image-view {
+  text-align: center;
+  height: 140rpx;
+
+}
+.coupon-center .image {
+  /* display:block; */
+  width:140rpx;
+  height:140rpx;
+  /* margin:35rpx; */
+  border-radius:50%;
+
+}
+
+.coupon-center .title {
+  font-size: 24rpx;
+  color: rgb(160, 159, 159);
+  text-align: center;
+  height:60rpx;
+  line-height:60rpx;
+
+}
+
+.coupon-center .title2 {
+  font-size: 28rpx;
+  text-align: center;
+  height:60rpx;
+  line-height:60rpx;
+}
+.coupon-center .time {
+  font-size: 28rpx;
+  text-align: center;
+  height: 80rpx;
+  line-height: 80rpx;
+  color: rgb(160, 159, 159);
+}
+
+.coupon-center .title-sub {
+  font-size: 22rpx;
+  text-align: center;
+  height:60rpx;
+  line-height:60rpx;
+}
+
+.coupon-center .btn {
+  text-align: center;
+  height: 80rpx;
+}
+
+.coupon-center .btn .r {
+  height: 60rpx;
+  line-height: 60rpx;
+  text-align: center;
+  color: #fff;
+  font-size: 30rpx;
+  border-radius: 1;
+  width: 300rpx;
+}
+
+.tick-info {
+  border-top: 1px solid rgb(221, 219, 219);
+  height:80rpx;
+  width: 88%;
+  margin-left:24rpx;
+  background:white;
+}
+
+.tick-info .txte {
+  height: 40rpx;
+  line-height: 40rpx;
+  float: left;
+  margin-left: 20rpx;
+  margin-top: 16rpx;
+  color: rgb(122, 121, 121);
+}
+
+.tick-info .txte2 {
+  height: 40rpx;
+  line-height: 40rpx;
+  float: right;
+  margin-right: 20rpx;
+  margin-top: 16rpx;
+  color: rgb(122, 121, 121);
+}

+ 59 - 0
wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.js

@@ -0,0 +1,59 @@
+var util = require('../../../utils/util.js');
+var api = require('../../../config/api.js');
+var app = getApp();
+
+Page({
+  data: {
+    couponId: '',
+    discId: '',
+    storeId: '',
+    storeTopicId: '',
+    tickDiscount: {}
+  },
+  onLoad: function (options) {
+    // 页面初始化 options为页面跳转所带来的参数
+    // console.log('discId' + options.discId)
+    // console.log('couponId' + options.couponId)
+    if (options.couponId) {
+      this.setData({
+        couponId: options.couponId
+      });
+    }
+    if (options.discId) {
+      this.setData({
+        discId: options.discId
+      });
+    }
+    this.setData({
+      storeId: options.storeId
+    });
+    this.getTickDiscountDetail();
+  },
+  onReady: function () { },
+  onShow: function () { },
+  onHide: function () {
+    // 页面隐藏
+
+  },
+  onUnload: function () {
+    // 页面关闭
+  },
+  getTickDiscountDetail() {
+    var that = this;
+    util.request(api.DiscountDetail, {
+      couponId: that.data.couponId,
+      storeId: that.data.storeId,
+      discId: that.data.discId
+    })
+      .then(function (res) {
+        if (res.errno === 0) {
+          console.log(res.data);
+          if (res.data) {
+            that.setData({
+              tickDiscount: res.data
+            });
+          }
+        }
+      });
+  }
+})

+ 5 - 0
wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.json

@@ -0,0 +1,5 @@
+{
+  "component": true,
+  "usingComponents": {},
+  "navigationBarTitleText": "优惠券详情"
+}

+ 23 - 0
wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.wxml

@@ -0,0 +1,23 @@
+<view class="container">
+  <view class="coupon-form">
+    <view class='coupon-center'>
+      <view class='title'>{{tickDiscount.name}}</view>
+      <view class='coupon-data-view'>
+        <view class='coupon-data'>
+          <view class='title2'>优惠说明</view>
+          <view class='info'>满{{tickDiscount.tickDiscType=='00'?tickDiscount.voucherCond:''}}{{tickDiscount.tickDiscType=='01'?tickDiscount.discCond:''}}元,{{tickDiscount.tickDiscType=='00'?'减'+tickDiscount.voucherMoney+'元,':''}}{{tickDiscount.tickDiscType=='01'?tickDiscount.discRatio+'折,':''}}
+            {{tickDiscount.applyType==00?'全部商品可用':''}}{{tickDiscount.applyType==01?'部分商品可用':''}}{{tickDiscount.applyType==02?'部分商品可用':''}}{{tickDiscount.goodsBizType==00?'-仅限保税仓商品':''}}{{tickDiscount.goodsBizType==02?'-仅限补货商品':''}}{{tickDiscount.goodsBizType==10?'-仅限现场速递商品':''}}{{tickDiscount.goodsBizType==11?'-仅限普通商品':''}}
+          </view>
+        </view>
+        <view class='coupon-data'>
+          <view class='title2'>有效日期</view>
+          <view class='info'>{{tickDiscount.inValidTime}}</view>
+        </view>
+        <view class='coupon-data'>
+          <view class='title2'>使用须知</view>
+          <view class='info'>{{tickDiscount.useNoti}}</view>
+        </view>
+      </view>
+    </view>
+  </view>
+</view>

+ 53 - 0
wx-mall/pages/ucenter/couponTickInfo/couponTickInfo.wxss

@@ -0,0 +1,53 @@
+page {
+  background: #f4f4f4;
+  min-height: 100%;
+}
+
+.container {
+  background: white;
+  min-height: 1220rpx;
+  /* padding-top: 30rpx; */
+}
+
+.coupon-form {
+  height: 100%;
+  width: 100%;
+  background: white;
+  /* padding-top: 20rpx; */
+}
+
+.coupon-center {
+  background: white;
+  width: 95%;
+  margin-left:10rpx;
+}
+
+.coupon-center .title {
+  font-size: 28rpx;
+  height:80rpx;
+  line-height:60rpx;
+  margin-left:20rpx;
+  border-bottom:1px solid rgb(235, 235, 235);
+}
+
+.coupon-data-view {
+  margin-top: 40rpx;
+}
+.coupon-data {
+  height: 80rpx;
+}
+.coupon-data .title2{
+  font-size: 28rpx;
+  color: rgb(160, 159, 159);
+  margin-left: 20rpx;
+  height: 40rpx;
+  line-height: 40rpx;
+  float: left;
+}
+.coupon-data .info{
+  font-size: 28rpx;
+  margin-left: 160rpx;
+  height: 40rpx;
+  line-height: 40rpx;
+  text-align:left;
+}

+ 7 - 0
wx-mall/sitemap.json

@@ -0,0 +1,7 @@
+{
+  "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
+  "rules": [{
+  "action": "allow",
+  "page": "*"
+  }]
+}