From c56fd8b471ef27a71baa3f543202b542a89aa184 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E6=85=A2=E6=85=A2?= <994797151@qq.com>
Date: Mon, 28 Dec 2020 09:16:11 +0800
Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=E5=95=86=E5=9F=8E=EF=BC=8C?=
=?UTF-8?q?=E8=AE=A2=E5=8D=95=EF=BC=8C=E4=BC=98=E6=83=A0=E5=88=B8=EF=BC=8C?=
=?UTF-8?q?=E6=94=B6=E8=B4=A7=E5=9C=B0=E5=9D=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apis/index.js | 4 +-
apis/interfaces/address.js | 24 +
apis/interfaces/mall.js | 56 +-
apis/interfaces/order.js | 17 +-
.../mallIndex_coupon/mallIndex_coupon.js | 32 +
.../mallIndex_coupon/mallIndex_coupon.json | 3 +
.../mallIndex_coupon/mallIndex_coupon.wxml | 29 +
.../mallIndex_coupon/mallIndex_coupon.wxss | 116 +++
components/mallIndex_hot/mallIndex_hot.js | 29 +
components/mallIndex_hot/mallIndex_hot.json | 3 +
components/mallIndex_hot/mallIndex_hot.wxml | 24 +
components/mallIndex_hot/mallIndex_hot.wxss | 120 +++
components/mallIndex_list/mallIndex_list.js | 38 +
components/mallIndex_list/mallIndex_list.json | 3 +
components/mallIndex_list/mallIndex_list.wxml | 43 +
components/mallIndex_list/mallIndex_list.wxss | 96 ++
components/mallIndex_nav/mallIndex_nav.js | 36 +
components/mallIndex_nav/mallIndex_nav.json | 3 +
components/mallIndex_nav/mallIndex_nav.wxml | 11 +
components/mallIndex_nav/mallIndex_nav.wxss | 33 +
components/mallIndex_video/mallIndex_video.js | 19 +
.../mallIndex_video/mallIndex_video.json | 3 +
.../mallIndex_video/mallIndex_video.wxml | 43 +
.../mallIndex_video/mallIndex_video.wxss | 122 +++
pages/mall/index.js | 96 +-
pages/mall/index.json | 10 +-
pages/mall/index.wxml | 43 +-
pages/mall/index.wxss | 76 +-
pages/mall/mall_address/mall_address.js | 100 ++
pages/mall/mall_address/mall_address.json | 4 +
pages/mall/mall_address/mall_address.wxml | 46 +
pages/mall/mall_address/mall_address.wxss | 124 +++
.../mall_address_form/mall_address_form.js | 234 +++++
.../mall_address_form/mall_address_form.json | 4 +
.../mall_address_form/mall_address_form.wxml | 77 ++
.../mall_address_form/mall_address_form.wxss | 181 ++++
pages/mall/mall_assess/mall_assess.js | 23 +
pages/mall/mall_assess/mall_assess.json | 4 +
pages/mall/mall_assess/mall_assess.wxml | 39 +
pages/mall/mall_assess/mall_assess.wxss | 101 ++
.../mall/mall_assess_form/mall_assess_form.js | 41 +
.../mall_assess_form/mall_assess_form.json | 4 +
.../mall_assess_form/mall_assess_form.wxml | 54 +
.../mall_assess_form/mall_assess_form.wxss | 173 ++++
pages/mall/mall_cart/mall_cart.js | 230 +++++
pages/mall/mall_cart/mall_cart.json | 4 +
pages/mall/mall_cart/mall_cart.wxml | 54 +
pages/mall/mall_cart/mall_cart.wxss | 258 +++++
pages/mall/mall_classify/mall_classify.js | 85 ++
pages/mall/mall_classify/mall_classify.json | 4 +
pages/mall/mall_classify/mall_classify.wxml | 21 +
pages/mall/mall_classify/mall_classify.wxss | 82 ++
pages/mall/mall_details/mall_details.js | 292 ++++++
pages/mall/mall_details/mall_details.json | 4 +
pages/mall/mall_details/mall_details.wxml | 274 +++++
pages/mall/mall_details/mall_details.wxss | 946 ++++++++++++++++++
pages/mall/mall_goods/mall_goods.js | 182 ++++
pages/mall/mall_goods/mall_goods.json | 5 +
pages/mall/mall_goods/mall_goods.wxml | 74 ++
pages/mall/mall_goods/mall_goods.wxss | 155 +++
pages/mall/mall_order/mall_order.js | 70 ++
pages/mall/mall_order/mall_order.json | 4 +
pages/mall/mall_order/mall_order.wxml | 50 +
pages/mall/mall_order/mall_order.wxss | 158 +++
pages/mall/mall_order_data/mall_order_data.js | 82 ++
.../mall/mall_order_data/mall_order_data.json | 4 +
.../mall/mall_order_data/mall_order_data.wxml | 134 +++
.../mall/mall_order_data/mall_order_data.wxss | 356 +++++++
.../mall_order_submit/mall_order_submit.js | 198 ++++
.../mall_order_submit/mall_order_submit.json | 4 +
.../mall_order_submit/mall_order_submit.wxml | 108 ++
.../mall_order_submit/mall_order_submit.wxss | 459 +++++++++
pages/mall/mall_pay/mall_pay.js | 30 +
pages/mall/mall_pay/mall_pay.json | 4 +
pages/mall/mall_pay/mall_pay.wxml | 41 +
pages/mall/mall_pay/mall_pay.wxss | 116 +++
pages/mall/mall_search/mall_search.js | 59 ++
pages/mall/mall_search/mall_search.json | 4 +
pages/mall/mall_search/mall_search.wxml | 18 +
pages/mall/mall_search/mall_search.wxss | 156 +++
pages/mall/mall_video/mall_video.js | 66 ++
pages/mall/mall_video/mall_video.json | 4 +
pages/mall/mall_video/mall_video.wxml | 47 +
pages/mall/mall_video/mall_video.wxss | 118 +++
pages/ticket/goods/goods.js | 121 +++
pages/ticket/goods/goods.json | 4 +
pages/ticket/goods/goods.wxml | 68 ++
pages/ticket/goods/goods.wxss | 165 +++
pages/ticket/index.js | 141 ++-
pages/ticket/index.json | 3 +-
pages/ticket/index.wxml | 91 +-
pages/ticket/index.wxss | 303 +++++-
pages/user/index.js | 2 +-
pages/user/index.json | 5 +-
pages/user/index.wxml | 114 ++-
pages/user/index.wxss | 220 +++-
pages/user/user_coupon/user_coupon.js | 164 +++
pages/user/user_coupon/user_coupon.json | 4 +
pages/user/user_coupon/user_coupon.wxml | 107 ++
pages/user/user_coupon/user_coupon.wxss | 270 +++++
.../user/user_coupon_data/user_coupon_data.js | 62 ++
.../user_coupon_data/user_coupon_data.json | 4 +
.../user_coupon_data/user_coupon_data.wxml | 61 ++
.../user_coupon_data/user_coupon_data.wxss | 145 +++
static/images/car_icon.png | Bin 0 -> 205067 bytes
static/images/goods_text.png | Bin 0 -> 14527 bytes
static/mall_icon/adddefault-bg.png | Bin 0 -> 1084 bytes
static/mall_icon/address_back.png | Bin 0 -> 314 bytes
static/mall_icon/bag_more_icon.png | Bin 0 -> 171 bytes
static/mall_icon/close_icon.png | Bin 0 -> 324 bytes
static/mall_icon/coupon-null00.png | Bin 0 -> 7077 bytes
static/mall_icon/goodsShare_icon.png | Bin 0 -> 411 bytes
static/mall_icon/liveEnd_icon_white.png | Bin 0 -> 299 bytes
static/mall_icon/liveIng_bf.png | Bin 0 -> 1371 bytes
static/mall_icon/liveIng_icon.png | Bin 0 -> 1061 bytes
static/mall_icon/liveIng_icon_white.png | Bin 0 -> 1034 bytes
static/mall_icon/liveIng_viedo.png | Bin 0 -> 15287 bytes
static/mall_icon/mallAddress_00.png | Bin 0 -> 483 bytes
static/mall_icon/mallAddress_01.png | Bin 0 -> 328 bytes
static/mall_icon/mallAddress_02.png | Bin 0 -> 602 bytes
static/mall_icon/mallAddress_03.png | Bin 0 -> 385 bytes
static/mall_icon/mallAddress_04.png | Bin 0 -> 385 bytes
static/mall_icon/mallAddress_del.png | Bin 0 -> 447 bytes
static/mall_icon/mallAddress_modify.png | Bin 0 -> 546 bytes
static/mall_icon/mallCode.png | Bin 0 -> 10486 bytes
static/mall_icon/mallCoupon_back.png | Bin 0 -> 8604 bytes
static/mall_icon/mallCoupon_back_red.png | Bin 0 -> 7391 bytes
static/mall_icon/mallCoupon_back_yellow.png | Bin 0 -> 8687 bytes
static/mall_icon/mallCoupon_cash.png | Bin 0 -> 29491 bytes
static/mall_icon/mallCoupon_free.png | Bin 0 -> 22566 bytes
static/mall_icon/mallCoupon_rebate.png | Bin 0 -> 14411 bytes
static/mall_icon/mallCoupon_rebate2.png | Bin 0 -> 38169 bytes
static/mall_icon/mallCoupon_rebate3.png | Bin 0 -> 37064 bytes
static/mall_icon/mallData_00.png | Bin 0 -> 504 bytes
static/mall_icon/mallData_01.png | Bin 0 -> 624 bytes
static/mall_icon/mallData_02.png | Bin 0 -> 693 bytes
static/mall_icon/mallData_03.png | Bin 0 -> 709 bytes
static/mall_icon/mallDetails_car.png | Bin 0 -> 2708 bytes
static/mall_icon/mallDetails_company.png | Bin 0 -> 582 bytes
static/mall_icon/mallDetails_gold.png | Bin 0 -> 581 bytes
static/mall_icon/mallDetails_member.png | Bin 0 -> 456 bytes
static/mall_icon/mallDetails_member_grey.png | Bin 0 -> 1647 bytes
static/mall_icon/mallDetails_service.png | Bin 0 -> 3313 bytes
static/mall_icon/mallDetails_user.png | Bin 0 -> 933 bytes
static/mall_icon/mallFloor.png | Bin 0 -> 452 bytes
static/mall_icon/mallIndex_more.png | Bin 0 -> 380 bytes
static/mall_icon/mallLocation.png | Bin 0 -> 459 bytes
static/mall_icon/mallNav_07.png | Bin 0 -> 997 bytes
static/mall_icon/mallStar.png | Bin 0 -> 531 bytes
static/mall_icon/mallStar_avtive.png | Bin 0 -> 448 bytes
static/mall_icon/mallTel.png | Bin 0 -> 460 bytes
static/mall_icon/mall_arrow.png | Bin 0 -> 200 bytes
static/mall_icon/mall_close.png | Bin 0 -> 506 bytes
static/mall_icon/mall_search.png | Bin 0 -> 937 bytes
static/mall_icon/null_icon.png | Bin 0 -> 7491 bytes
static/mall_icon/pay_00.png | Bin 0 -> 929 bytes
static/mall_icon/price_icon.png | Bin 0 -> 327 bytes
static/mall_icon/price_icon_active.png | Bin 0 -> 329 bytes
static/mall_icon/select.png | Bin 0 -> 475 bytes
static/mall_icon/select_avtive.png | Bin 0 -> 404 bytes
static/mall_icon/share_pyq.png | Bin 0 -> 1338 bytes
static/mall_icon/share_wx.png | Bin 0 -> 1414 bytes
static/user_iocn/userNav_00.png | Bin 0 -> 585 bytes
static/user_iocn/userNav_01.png | Bin 0 -> 398 bytes
static/user_iocn/userNav_02.png | Bin 0 -> 648 bytes
static/user_iocn/userTool_00.png | Bin 0 -> 2011 bytes
static/user_iocn/userTool_01.png | Bin 0 -> 1868 bytes
static/user_iocn/userTool_02.png | Bin 0 -> 1768 bytes
static/user_iocn/userTool_03.png | Bin 0 -> 2036 bytes
static/user_iocn/userTool_04.png | Bin 0 -> 2035 bytes
static/user_iocn/userTool_05.png | Bin 0 -> 1610 bytes
static/user_iocn/userTool_06.png | Bin 0 -> 2362 bytes
static/user_iocn/userTool_07.png | Bin 0 -> 1753 bytes
static/user_iocn/user_crown.png | Bin 0 -> 1734 bytes
static/user_iocn/user_vip.png | Bin 0 -> 467 bytes
175 files changed, 9259 insertions(+), 96 deletions(-)
create mode 100644 apis/interfaces/address.js
create mode 100644 components/mallIndex_coupon/mallIndex_coupon.js
create mode 100644 components/mallIndex_coupon/mallIndex_coupon.json
create mode 100644 components/mallIndex_coupon/mallIndex_coupon.wxml
create mode 100644 components/mallIndex_coupon/mallIndex_coupon.wxss
create mode 100644 components/mallIndex_hot/mallIndex_hot.js
create mode 100644 components/mallIndex_hot/mallIndex_hot.json
create mode 100644 components/mallIndex_hot/mallIndex_hot.wxml
create mode 100644 components/mallIndex_hot/mallIndex_hot.wxss
create mode 100644 components/mallIndex_list/mallIndex_list.js
create mode 100644 components/mallIndex_list/mallIndex_list.json
create mode 100644 components/mallIndex_list/mallIndex_list.wxml
create mode 100644 components/mallIndex_list/mallIndex_list.wxss
create mode 100644 components/mallIndex_nav/mallIndex_nav.js
create mode 100644 components/mallIndex_nav/mallIndex_nav.json
create mode 100644 components/mallIndex_nav/mallIndex_nav.wxml
create mode 100644 components/mallIndex_nav/mallIndex_nav.wxss
create mode 100644 components/mallIndex_video/mallIndex_video.js
create mode 100644 components/mallIndex_video/mallIndex_video.json
create mode 100644 components/mallIndex_video/mallIndex_video.wxml
create mode 100644 components/mallIndex_video/mallIndex_video.wxss
create mode 100644 pages/mall/mall_address/mall_address.js
create mode 100644 pages/mall/mall_address/mall_address.json
create mode 100644 pages/mall/mall_address/mall_address.wxml
create mode 100644 pages/mall/mall_address/mall_address.wxss
create mode 100644 pages/mall/mall_address_form/mall_address_form.js
create mode 100644 pages/mall/mall_address_form/mall_address_form.json
create mode 100644 pages/mall/mall_address_form/mall_address_form.wxml
create mode 100644 pages/mall/mall_address_form/mall_address_form.wxss
create mode 100644 pages/mall/mall_assess/mall_assess.js
create mode 100644 pages/mall/mall_assess/mall_assess.json
create mode 100644 pages/mall/mall_assess/mall_assess.wxml
create mode 100644 pages/mall/mall_assess/mall_assess.wxss
create mode 100644 pages/mall/mall_assess_form/mall_assess_form.js
create mode 100644 pages/mall/mall_assess_form/mall_assess_form.json
create mode 100644 pages/mall/mall_assess_form/mall_assess_form.wxml
create mode 100644 pages/mall/mall_assess_form/mall_assess_form.wxss
create mode 100644 pages/mall/mall_cart/mall_cart.js
create mode 100644 pages/mall/mall_cart/mall_cart.json
create mode 100644 pages/mall/mall_cart/mall_cart.wxml
create mode 100644 pages/mall/mall_cart/mall_cart.wxss
create mode 100644 pages/mall/mall_classify/mall_classify.js
create mode 100644 pages/mall/mall_classify/mall_classify.json
create mode 100644 pages/mall/mall_classify/mall_classify.wxml
create mode 100644 pages/mall/mall_classify/mall_classify.wxss
create mode 100644 pages/mall/mall_details/mall_details.js
create mode 100644 pages/mall/mall_details/mall_details.json
create mode 100644 pages/mall/mall_details/mall_details.wxml
create mode 100644 pages/mall/mall_details/mall_details.wxss
create mode 100644 pages/mall/mall_goods/mall_goods.js
create mode 100644 pages/mall/mall_goods/mall_goods.json
create mode 100644 pages/mall/mall_goods/mall_goods.wxml
create mode 100644 pages/mall/mall_goods/mall_goods.wxss
create mode 100644 pages/mall/mall_order/mall_order.js
create mode 100644 pages/mall/mall_order/mall_order.json
create mode 100644 pages/mall/mall_order/mall_order.wxml
create mode 100644 pages/mall/mall_order/mall_order.wxss
create mode 100644 pages/mall/mall_order_data/mall_order_data.js
create mode 100644 pages/mall/mall_order_data/mall_order_data.json
create mode 100644 pages/mall/mall_order_data/mall_order_data.wxml
create mode 100644 pages/mall/mall_order_data/mall_order_data.wxss
create mode 100644 pages/mall/mall_order_submit/mall_order_submit.js
create mode 100644 pages/mall/mall_order_submit/mall_order_submit.json
create mode 100644 pages/mall/mall_order_submit/mall_order_submit.wxml
create mode 100644 pages/mall/mall_order_submit/mall_order_submit.wxss
create mode 100644 pages/mall/mall_pay/mall_pay.js
create mode 100644 pages/mall/mall_pay/mall_pay.json
create mode 100644 pages/mall/mall_pay/mall_pay.wxml
create mode 100644 pages/mall/mall_pay/mall_pay.wxss
create mode 100644 pages/mall/mall_search/mall_search.js
create mode 100644 pages/mall/mall_search/mall_search.json
create mode 100644 pages/mall/mall_search/mall_search.wxml
create mode 100644 pages/mall/mall_search/mall_search.wxss
create mode 100644 pages/mall/mall_video/mall_video.js
create mode 100644 pages/mall/mall_video/mall_video.json
create mode 100644 pages/mall/mall_video/mall_video.wxml
create mode 100644 pages/mall/mall_video/mall_video.wxss
create mode 100644 pages/ticket/goods/goods.js
create mode 100644 pages/ticket/goods/goods.json
create mode 100644 pages/ticket/goods/goods.wxml
create mode 100644 pages/ticket/goods/goods.wxss
create mode 100644 pages/user/user_coupon/user_coupon.js
create mode 100644 pages/user/user_coupon/user_coupon.json
create mode 100644 pages/user/user_coupon/user_coupon.wxml
create mode 100644 pages/user/user_coupon/user_coupon.wxss
create mode 100644 pages/user/user_coupon_data/user_coupon_data.js
create mode 100644 pages/user/user_coupon_data/user_coupon_data.json
create mode 100644 pages/user/user_coupon_data/user_coupon_data.wxml
create mode 100644 pages/user/user_coupon_data/user_coupon_data.wxss
create mode 100644 static/images/car_icon.png
create mode 100644 static/images/goods_text.png
create mode 100644 static/mall_icon/adddefault-bg.png
create mode 100644 static/mall_icon/address_back.png
create mode 100644 static/mall_icon/bag_more_icon.png
create mode 100644 static/mall_icon/close_icon.png
create mode 100644 static/mall_icon/coupon-null00.png
create mode 100644 static/mall_icon/goodsShare_icon.png
create mode 100644 static/mall_icon/liveEnd_icon_white.png
create mode 100644 static/mall_icon/liveIng_bf.png
create mode 100644 static/mall_icon/liveIng_icon.png
create mode 100644 static/mall_icon/liveIng_icon_white.png
create mode 100644 static/mall_icon/liveIng_viedo.png
create mode 100644 static/mall_icon/mallAddress_00.png
create mode 100644 static/mall_icon/mallAddress_01.png
create mode 100644 static/mall_icon/mallAddress_02.png
create mode 100644 static/mall_icon/mallAddress_03.png
create mode 100644 static/mall_icon/mallAddress_04.png
create mode 100644 static/mall_icon/mallAddress_del.png
create mode 100644 static/mall_icon/mallAddress_modify.png
create mode 100644 static/mall_icon/mallCode.png
create mode 100644 static/mall_icon/mallCoupon_back.png
create mode 100644 static/mall_icon/mallCoupon_back_red.png
create mode 100644 static/mall_icon/mallCoupon_back_yellow.png
create mode 100644 static/mall_icon/mallCoupon_cash.png
create mode 100644 static/mall_icon/mallCoupon_free.png
create mode 100644 static/mall_icon/mallCoupon_rebate.png
create mode 100644 static/mall_icon/mallCoupon_rebate2.png
create mode 100644 static/mall_icon/mallCoupon_rebate3.png
create mode 100644 static/mall_icon/mallData_00.png
create mode 100644 static/mall_icon/mallData_01.png
create mode 100644 static/mall_icon/mallData_02.png
create mode 100644 static/mall_icon/mallData_03.png
create mode 100644 static/mall_icon/mallDetails_car.png
create mode 100644 static/mall_icon/mallDetails_company.png
create mode 100644 static/mall_icon/mallDetails_gold.png
create mode 100644 static/mall_icon/mallDetails_member.png
create mode 100644 static/mall_icon/mallDetails_member_grey.png
create mode 100644 static/mall_icon/mallDetails_service.png
create mode 100644 static/mall_icon/mallDetails_user.png
create mode 100644 static/mall_icon/mallFloor.png
create mode 100644 static/mall_icon/mallIndex_more.png
create mode 100644 static/mall_icon/mallLocation.png
create mode 100644 static/mall_icon/mallNav_07.png
create mode 100644 static/mall_icon/mallStar.png
create mode 100644 static/mall_icon/mallStar_avtive.png
create mode 100644 static/mall_icon/mallTel.png
create mode 100644 static/mall_icon/mall_arrow.png
create mode 100644 static/mall_icon/mall_close.png
create mode 100644 static/mall_icon/mall_search.png
create mode 100644 static/mall_icon/null_icon.png
create mode 100644 static/mall_icon/pay_00.png
create mode 100644 static/mall_icon/price_icon.png
create mode 100644 static/mall_icon/price_icon_active.png
create mode 100644 static/mall_icon/select.png
create mode 100644 static/mall_icon/select_avtive.png
create mode 100644 static/mall_icon/share_pyq.png
create mode 100644 static/mall_icon/share_wx.png
create mode 100644 static/user_iocn/userNav_00.png
create mode 100644 static/user_iocn/userNav_01.png
create mode 100644 static/user_iocn/userNav_02.png
create mode 100644 static/user_iocn/userTool_00.png
create mode 100644 static/user_iocn/userTool_01.png
create mode 100644 static/user_iocn/userTool_02.png
create mode 100644 static/user_iocn/userTool_03.png
create mode 100644 static/user_iocn/userTool_04.png
create mode 100644 static/user_iocn/userTool_05.png
create mode 100644 static/user_iocn/userTool_06.png
create mode 100644 static/user_iocn/userTool_07.png
create mode 100644 static/user_iocn/user_crown.png
create mode 100644 static/user_iocn/user_vip.png
diff --git a/apis/index.js b/apis/index.js
index bd0aeae..4d757e1 100644
--- a/apis/index.js
+++ b/apis/index.js
@@ -14,6 +14,7 @@ import order from "./interfaces/order"
import company from "./interfaces/company"
import home from "./interfaces/home"
import ticket from "./interfaces/ticket"
+import address from "./interfaces/address"
export default{
publics,
@@ -26,5 +27,6 @@ export default{
order,
company,
home,
- ticket
+ ticket,
+ address
}
diff --git a/apis/interfaces/address.js b/apis/interfaces/address.js
new file mode 100644
index 0000000..c5f394d
--- /dev/null
+++ b/apis/interfaces/address.js
@@ -0,0 +1,24 @@
+/**
+ * 手太欠
+ * 5g获客星光网 - 我的地址
+ */
+
+import {req} from "../request"
+
+const create = data => req({url: "user/addresses/create", data: data}) //获取省市区层级信息
+const index = () => req({url: "user/addresses"}) //我的地址列表
+const info = (address_id) => req({url: "user/addresses/" + address_id}) //地址列表-详情
+const add = data => req({url: "user/addresses", method: "POST", data: data}) //新增-地址列表
+const revise = (address_id, data) => req({url: "user/addresses/" + address_id, method: "PUT", data: data}) //修改-地址列表
+const del = (address_id) => req({url: "user/addresses/" + address_id, method: "DELETE"}) //地址列表-删除
+const def = (address_id) => req({url: "user/addresses/" + address_id + "/default", method: "POST"}) //地址列表-默认
+
+export default({
+ create,
+ index,
+ info,
+ add,
+ revise,
+ del,
+ def
+})
diff --git a/apis/interfaces/mall.js b/apis/interfaces/mall.js
index 9fb9b6c..fe9d751 100644
--- a/apis/interfaces/mall.js
+++ b/apis/interfaces/mall.js
@@ -4,6 +4,60 @@
*/
import {req} from "../request"
+const index = () => req({url: "shop/index"}) //商城首页
+const pushData = data => req({url: "goods/push", data: data}) //商城为您推荐
+const first = () => req({url: "shop/category/first"}) //商城分类-左侧
+const second = data => req({url: "shop/category/second", data: data}) //商城分类-右侧
+const hotData = data => req({url: "goods/hot", data: data}) //优惠热卖更多
+const freeData = data => req({url: "goods/free", data: data}) //免费券专区更多
+const hotkey = data => req({url: "shop/hotkey", data: data}) //热门关键字
+const lists = data => req({url: "goods/lists", data: data}) //全部商品列表
+
+const details = (goods_id) => req({url: "goods/" + goods_id + '/show'}) //商品详情
+const grant = data => req({url: "coupons/grant", method: "POST", data: data}) //优惠券领取
+const jionCar = data => req({url: "carts/jion", method: "POST", data: data}) //加入购物车
+const carKist = () => req({url: "carts/index"}) //购物车列表
+const carRemove= data => req({url: "carts/remove", method: "POST", data: data}) //购物车移除商品
+const carClear = () => req({url: "carts/clear", method: "POST"}) //清空购物车
+const increment= (id) => req({url: "carts/" + id + "/increment", method: "POST"}) //购物车增加数量
+const decrement= (id) => req({url: "carts/" + id + "/decrement", method: "POST"}) //购物车减少数量
+
+const coupon = data => req({url: "coupons", data: data}) //店铺优惠券列表
+const coupons = data => req({url: "user/coupons", data: data}) //我的优惠券
+const couponDetails = (user_coupon_id) => req({url: "user/coupons/" + user_coupon_id}) //我的优惠券详情
+const couponsGoods = data => req({url: "user/coupons/goods", data: data}) //可领取的商品
+
+const orderSystem = data => req({url: "orders/goods/create", data: data}) //商品确认订单
+const orderBuy = data => req({url: "orders/goods/buy", method: "POST", data: data}) //商品确认提交
+
+const cartSystem = data => req({url: "orders/carts/create",data: data}) //购物车确认订单
+const cartBuy = data => req({url: "orders/carts/buy", method: "POST", data: data}) //购物车确认订单
+const wechat = data => req({url: "payments/wechat", method: "POST", data: data}) //购物车确认订单
+
export default({
-
+ index,
+ pushData,
+ first,
+ second,
+ hotData,
+ freeData,
+ hotkey,
+ lists,
+ details,
+ grant,
+ jionCar,
+ carKist,
+ carRemove,
+ carClear,
+ increment,
+ decrement,
+ coupon,
+ coupons,
+ couponDetails,
+ couponsGoods,
+ orderSystem,
+ orderBuy,
+ cartSystem,
+ cartBuy,
+ wechat
})
diff --git a/apis/interfaces/order.js b/apis/interfaces/order.js
index 08adaae..ab5ca7b 100644
--- a/apis/interfaces/order.js
+++ b/apis/interfaces/order.js
@@ -1,9 +1,16 @@
-
-/*
- * 订单
+/**
+ * 手太欠
+ * 5g获客星光网 - 商城首页
*/
+
import {req} from "../request"
+const index = () => req({url: "orders"}) //登录
+const cancel = (orderId) => req({url: "orders/cancel/" + orderId}) //取消订单
+const orders = (orderId) => req({url: "orders/" + orderId}) //订单-详情
+
export default({
-
-})
+ index,
+ cancel,
+ orders
+})
\ No newline at end of file
diff --git a/components/mallIndex_coupon/mallIndex_coupon.js b/components/mallIndex_coupon/mallIndex_coupon.js
new file mode 100644
index 0000000..9d6b8c9
--- /dev/null
+++ b/components/mallIndex_coupon/mallIndex_coupon.js
@@ -0,0 +1,32 @@
+
+/**
+ * Web唐明明
+ * 一个梦想做木雕手艺人的程序员
+ * explain: userInfoLayer
+ */
+
+Component({
+ /**
+ * 组件的属性列表
+ */
+ properties:{
+ freeCoupon:{
+ type : Array,
+ value : []
+ }
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ // 页面跳转
+ jumpUrl(e) {
+ let id = e.currentTarget.dataset.id
+ wx.navigateTo({
+ url : '/pages/mall_details/mall_details?id=' + id,
+ })
+ }
+ },
+
+})
diff --git a/components/mallIndex_coupon/mallIndex_coupon.json b/components/mallIndex_coupon/mallIndex_coupon.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/components/mallIndex_coupon/mallIndex_coupon.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/components/mallIndex_coupon/mallIndex_coupon.wxml b/components/mallIndex_coupon/mallIndex_coupon.wxml
new file mode 100644
index 0000000..b0998e6
--- /dev/null
+++ b/components/mallIndex_coupon/mallIndex_coupon.wxml
@@ -0,0 +1,29 @@
+
+
+
+
+ 免费券专区
+
+
+ 更多
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+ ¥{{item.prices.price}}
+ 协会 {{item.prices.association}}
+
+
+ vip
+ ¥{{item.prices.vip}}
+
+
+
+
+
\ No newline at end of file
diff --git a/components/mallIndex_coupon/mallIndex_coupon.wxss b/components/mallIndex_coupon/mallIndex_coupon.wxss
new file mode 100644
index 0000000..dba75e1
--- /dev/null
+++ b/components/mallIndex_coupon/mallIndex_coupon.wxss
@@ -0,0 +1,116 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+
+/* 商城优惠券专区 */
+.coupon {
+ background-color: white;
+ border-radius: 10rpx;
+ padding: 20rpx;
+ box-sizing: border-box;
+ margin-top: 30rpx;
+}
+
+.coupon-title {
+ display: flex;
+ margin-bottom: 20rpx;
+}
+
+.coupon-name {
+ flex: 1;
+}
+
+.coupon-more {
+ font-size: 30rpx;
+ color: #666666;
+ display: flex;
+}
+
+.coupon-more-icon {
+ width: 34rpx;
+ height: 34rpx;
+ margin: 4rpx 0 0 10rpx;
+ vertical-align: middle;
+}
+
+/* 优惠券列表 */
+.coupon-list {
+ white-space: nowrap;
+ margin: 30rpx 10rpx 0;
+ height: 340rpx;
+}
+
+.coupon-label {
+ height: 340rpx;
+ width: 180rpx;
+ margin-right: 40rpx;
+ overflow: hidden;
+ display: inline-block;
+}
+
+.coupon-label:last-child {
+ margin-right: 0;
+}
+
+.coupon-img {
+ position: relative;
+ width: 100%;
+ padding-top: 100%;
+ margin: 0 auto;
+ border-radius: 10rpx;
+ margin-bottom: 20rpx;
+ overflow: hidden;
+}
+
+.coupon-img image {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.coupon-cont-tips {
+ display: flex;
+ font-size: 26rpx;
+ margin: 5rpx 0 10px;
+}
+
+.coupon-cont-tips text {
+ display: block;
+ margin-right: 10rpx;
+ font-weight: 600;
+}
+
+.coupon-cont-price {
+ font-size: 24rpx;
+ color: #999;
+}
+
+.recommend-mark {
+ background-color: #f2e4c0;
+ border-radius: 6rpx;
+ display: inline-block;
+ font-size: 24rpx;
+ overflow: hidden;
+ height: 38rpx;
+ line-height: 38rpx;
+ padding-right: 10rpx;
+}
+
+.recommend-vip {
+ display: inline-block;
+ line-height: 38rpx;
+ background-color: #333333;
+ color: #f2e4c0;
+ padding: 0 10rpx;
+}
+
+.recommend-sell {
+ float: right;
+ font-size: 24rpx;
+ line-height: 38rpx;
+ color: #aaabab;
+}
\ No newline at end of file
diff --git a/components/mallIndex_hot/mallIndex_hot.js b/components/mallIndex_hot/mallIndex_hot.js
new file mode 100644
index 0000000..16ebfd5
--- /dev/null
+++ b/components/mallIndex_hot/mallIndex_hot.js
@@ -0,0 +1,29 @@
+/**
+ * 手太欠
+ * 5g星光网-商城
+ */
+
+Component({
+ /**
+ * 组件的属性列表
+ */
+ properties:{
+ hotSale:{
+ type : Array,
+ value : []
+ }
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ // 页面跳转
+ hotTap(e) {
+ let id = e.currentTarget.dataset.id
+ wx.navigateTo({
+ url : '/pages/mall_details/mall_details?id=' + id,
+ })
+ }
+ }
+})
diff --git a/components/mallIndex_hot/mallIndex_hot.json b/components/mallIndex_hot/mallIndex_hot.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/components/mallIndex_hot/mallIndex_hot.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/components/mallIndex_hot/mallIndex_hot.wxml b/components/mallIndex_hot/mallIndex_hot.wxml
new file mode 100644
index 0000000..eac459f
--- /dev/null
+++ b/components/mallIndex_hot/mallIndex_hot.wxml
@@ -0,0 +1,24 @@
+
+
+
+
+ 优惠热卖
+
+
+ 更多
+
+
+
+
+
+
+ {{item.title}}
+ ¥{{item.prices.price}}协会 ¥{{item.prices.association}}
+
+ vip
+ ¥{{item.prices.vip}}
+
+
+
+
+
\ No newline at end of file
diff --git a/components/mallIndex_hot/mallIndex_hot.wxss b/components/mallIndex_hot/mallIndex_hot.wxss
new file mode 100644
index 0000000..4d7b87e
--- /dev/null
+++ b/components/mallIndex_hot/mallIndex_hot.wxss
@@ -0,0 +1,120 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+
+/* 商城优惠热卖 */
+.hot {
+ background-color: white;
+ border-radius: 10rpx;
+ padding: 20rpx;
+ box-sizing: border-box;
+ margin-top: 30rpx;
+}
+
+.hot-title {
+ display: flex;
+ margin-bottom: 30rpx;
+}
+
+.hot-name {
+ flex: 1;
+}
+
+.hot-more {
+ font-size: 30rpx;
+ color: #666666;
+ display: flex;
+}
+
+.hot-more-icon {
+ width: 34rpx;
+ height: 34rpx;
+ margin: 4rpx 0 0 10rpx;
+ vertical-align: middle;
+}
+
+/* 热卖列表 */
+.hot-scroll {
+ white-space: nowrap;
+}
+
+.hot-list {
+ width: 420rpx;
+ background-image: linear-gradient(to top, #fff, #fcf5f3);
+ border-radius: 10rpx;
+ display: inline-block;
+ position: relative;
+ padding: 20rpx;
+ box-sizing: border-box;
+ margin-right: 20rpx;
+ border: 2rpx #eeeeee dashed;
+}
+
+.hot-list:last-child {
+ margin-right: 0;
+}
+
+.hot-img {
+ width: 140rpx;
+ height: 140rpx;
+ border-radius: 10rpx;
+}
+
+.hot-price {
+ color: #ea4e2f
+}
+
+.hot-price text {
+ font-size: 24rpx;
+ line-height: 40rpx;
+}
+
+.hot-cont {
+ position: absolute;
+ left: 180rpx;
+ top: 20rpx;
+ right: 20rpx;
+}
+
+.hot-price {
+ margin: 10rpx 0;
+ font-size: 28rpx;
+ display: flex;
+}
+
+.hot-cost {
+ font-size: 24rpx;
+ color: #999;
+ /* text-decoration:line-through; */
+ margin-left: 20rpx;
+ line-height: 38rpx;
+}
+
+
+.recommend-mark {
+ background-color: #f2e4c0;
+ border-radius: 6rpx;
+ display: inline-block;
+ font-size: 24rpx;
+ overflow: hidden;
+ height: 38rpx;
+ line-height: 38rpx;
+ padding-right: 10rpx;
+}
+
+.recommend-vip {
+ display: inline-block;
+ line-height: 38rpx;
+ background-color: #333333;
+ color: #f2e4c0;
+ padding: 0 10rpx;
+}
+
+.recommend-sell {
+ float: right;
+ font-size: 24rpx;
+ line-height: 38rpx;
+ color: #aaabab;
+}
\ No newline at end of file
diff --git a/components/mallIndex_list/mallIndex_list.js b/components/mallIndex_list/mallIndex_list.js
new file mode 100644
index 0000000..b8e9f5c
--- /dev/null
+++ b/components/mallIndex_list/mallIndex_list.js
@@ -0,0 +1,38 @@
+
+/**
+ * 手太欠
+ * 5g星光网-商城
+ */
+
+Component({
+ /**
+ * 组件的属性列表
+ */
+ properties:{
+ pushList :{
+ type : Array,
+ value : []
+ },
+ lodingStats :{
+ type : Boolean,
+ value : false
+ },
+ hasMore :{
+ type : Boolean,
+ value : false
+ },
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ // 页面跳转
+ push(e) {
+ let id = e.currentTarget.dataset.id
+ wx.navigateTo({
+ url : '/pages/mall_details/mall_details?id=' + id,
+ })
+ }
+ }
+})
diff --git a/components/mallIndex_list/mallIndex_list.json b/components/mallIndex_list/mallIndex_list.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/components/mallIndex_list/mallIndex_list.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/components/mallIndex_list/mallIndex_list.wxml b/components/mallIndex_list/mallIndex_list.wxml
new file mode 100644
index 0000000..800d169
--- /dev/null
+++ b/components/mallIndex_list/mallIndex_list.wxml
@@ -0,0 +1,43 @@
+
+
+
+ 为您推荐
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+ ¥{{item.prices.price}}
+
+
+ 协会: ¥{{item.prices.association}}
+
+
+
+
+ vip
+ ¥{{item.prices.vip}}
+
+ 已售{{item.sell_number}}
+
+
+
+
+
+
+ 加载中...
+
+
+ 没有更多了~
+
+
+
+
\ No newline at end of file
diff --git a/components/mallIndex_list/mallIndex_list.wxss b/components/mallIndex_list/mallIndex_list.wxss
new file mode 100644
index 0000000..af478e8
--- /dev/null
+++ b/components/mallIndex_list/mallIndex_list.wxss
@@ -0,0 +1,96 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+ @import "/app.wxss";
+
+/* 商城首页为您推荐 */
+.recommend {
+ margin-top: 30rpx;
+}
+
+.recommend-title {
+ padding: 0 10rpx 30rpx;
+}
+
+.recommend-list {
+ overflow: hidden;
+ margin: 0 -10rpx;
+}
+
+.recommend-label {
+ float: left;
+ width: calc(50% - 20rpx);
+ margin: 0 10rpx 20rpx;
+ border-radius: 10rpx;
+ overflow: hidden;
+ background-color: white ;
+}
+
+.recommend-img {
+ position: relative;
+ width: 100%;
+ padding-top: 100%;
+}
+
+.recommend-img image {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+}
+
+.recommend-cont {
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.recommend-price {
+ margin: 20rpx 0;
+ display: flex;
+ font-size: 28rpx;
+}
+
+.recommend-ruling {
+ color: #ea4e2f;
+ font-weight: 600;
+}
+
+.recommend-ruling text {
+ font-size: 24rpx;
+}
+
+.recommend-cost {
+ font-size: 24rpx;
+ color: #999;
+ /* text-decoration:line-through; */
+ margin: 2rpx 0 0 20rpx;
+}
+
+.recommend-mark {
+ background-color: #f2e4c0;
+ border-radius: 6rpx;
+ display: inline-block;
+ font-size: 24rpx;
+ overflow: hidden;
+ height: 38rpx;
+ line-height: 38rpx;
+ padding-right: 10rpx;
+}
+
+.recommend-vip {
+ display: inline-block;
+ line-height: 38rpx;
+ background-color: #333333;
+ color: #f2e4c0;
+ padding: 0 10rpx;
+}
+
+.recommend-sell {
+ float: right;
+ font-size: 24rpx;
+ line-height: 38rpx;
+ color: #aaabab;
+}
\ No newline at end of file
diff --git a/components/mallIndex_nav/mallIndex_nav.js b/components/mallIndex_nav/mallIndex_nav.js
new file mode 100644
index 0000000..f42275b
--- /dev/null
+++ b/components/mallIndex_nav/mallIndex_nav.js
@@ -0,0 +1,36 @@
+/**
+ * 手太欠
+ * 5g星光网-商城
+ */
+
+Component({
+ /**
+ * 组件的属性列表
+ */
+ properties:{
+ categories:{
+ type : Array,
+ value : []
+ }
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ // 页面跳转
+ handeItemTap(e) {
+ let id = e.currentTarget.dataset.id
+ wx.navigateTo({
+ url: '/pages/mall_goods/mall_goods?sort=' + id,
+ })
+ },
+
+ // 查看更所分类
+ homeTap() {
+ wx.navigateTo({
+ url: '/pages/mall_classify/mall_classify',
+ })
+ }
+ }
+})
diff --git a/components/mallIndex_nav/mallIndex_nav.json b/components/mallIndex_nav/mallIndex_nav.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/components/mallIndex_nav/mallIndex_nav.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/components/mallIndex_nav/mallIndex_nav.wxml b/components/mallIndex_nav/mallIndex_nav.wxml
new file mode 100644
index 0000000..ac32371
--- /dev/null
+++ b/components/mallIndex_nav/mallIndex_nav.wxml
@@ -0,0 +1,11 @@
+
+
+
+
+ {{item.title}}
+
+
+
+ 全部
+
+
\ No newline at end of file
diff --git a/components/mallIndex_nav/mallIndex_nav.wxss b/components/mallIndex_nav/mallIndex_nav.wxss
new file mode 100644
index 0000000..0ab860e
--- /dev/null
+++ b/components/mallIndex_nav/mallIndex_nav.wxss
@@ -0,0 +1,33 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+
+/* 商城分类 */
+.mallNav {
+ background-color: white;
+ border-radius: 20rpx;
+ margin-top: 30rpx;
+}
+
+.mallNav {
+ overflow: hidden;
+ padding-top: 40rpx;
+}
+
+.mallNav-label {
+ font-size: 28rpx;
+ color: #666666;
+ float: left;
+ text-align: center;
+ width: 25%;
+ margin-bottom: 40rpx;
+}
+
+.mallNav-icon {
+ width: 70rpx;
+ height: 70rpx;
+ display: block;
+ margin: 0 auto 10rpx;
+}
\ No newline at end of file
diff --git a/components/mallIndex_video/mallIndex_video.js b/components/mallIndex_video/mallIndex_video.js
new file mode 100644
index 0000000..710de4d
--- /dev/null
+++ b/components/mallIndex_video/mallIndex_video.js
@@ -0,0 +1,19 @@
+/**
+ * 手太欠
+ * 5g星光网-商城
+ */
+
+Component({
+ /**
+ * 组件的属性列表
+ */
+ properties:{
+
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {
+ }
+})
diff --git a/components/mallIndex_video/mallIndex_video.json b/components/mallIndex_video/mallIndex_video.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/components/mallIndex_video/mallIndex_video.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/components/mallIndex_video/mallIndex_video.wxml b/components/mallIndex_video/mallIndex_video.wxml
new file mode 100644
index 0000000..1b5abd2
--- /dev/null
+++ b/components/mallIndex_video/mallIndex_video.wxml
@@ -0,0 +1,43 @@
+
+
+
+
+ 商品直播间专区
+
+ LIVE
+
+
+
+ 查看更多
+
+
+
+
+
+
+
+ 正在直播
+
+
+
+ 风光雪月跨年季
+
+
+ 张慢慢呀
+
+
+
+
+
+
+
+
+ 风光雪月跨年季
+
+
+ 张慢慢呀
+
+
+
+
+
\ No newline at end of file
diff --git a/components/mallIndex_video/mallIndex_video.wxss b/components/mallIndex_video/mallIndex_video.wxss
new file mode 100644
index 0000000..2a92c42
--- /dev/null
+++ b/components/mallIndex_video/mallIndex_video.wxss
@@ -0,0 +1,122 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+
+/* 商城分类 */
+.video {
+ margin-top: 30rpx;
+}
+
+.videoTitle {
+ display: flex;
+ padding: 0 10rpx 30rpx;
+}
+
+.videoTitle-name {
+ flex: 1;
+ display: flex;
+}
+
+.videoTitle-name-color {
+ background: linear-gradient(to right, #9756fa, #5079ff);
+ -webkit-background-clip: text;
+ color: transparent;
+ display: inline-block;
+ font-weight: 600;
+ margin-right: 20rpx;
+}
+
+.videoTitle-name-img {
+ background-image: linear-gradient(to right, #9756fa, #5079ff);
+ color: #fff;
+ font-size: 24rpx;
+ border-radius: 50rpx;
+ display: flex;
+ width: 110rpx;
+ height: 37rpx;
+ line-height: 37rpx;
+ margin-top: 5rpx;
+}
+
+.videoTitle-name-img image {
+ width: 34rpx;
+ height: 34rpx;
+ margin: 1rpx 6rpx 0 10rpx;
+}
+
+.videoTitle-more {
+ font-size: 28rpx;
+ line-height: 40rpx;
+ color: #999;
+}
+
+/* 列表 */
+.videoList {
+ overflow: hidden;
+ margin: 0 -10rpx;
+}
+
+.videoList-label {
+ width: calc(50% - 20rpx);
+ margin: 0 10rpx;
+ float: left;
+ background-color: #fff;
+ border-radius: 20rpx;
+ overflow: hidden;
+}
+
+.videoList-img {
+ position: relative;
+ width: 100%;
+ padding-top: 80%;
+}
+
+.videoList-img .videoList-cover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.videoList-tips {
+ position: absolute;
+ top: 20rpx;
+ left: 20rpx;
+ color: #fc6c27;
+ background-color: #f6f5f1;
+ border-radius: 40rpx;
+ font-size: 24rpx;
+ padding: 0 12rpx;
+ height: 44rpx;
+ line-height: 44rpx;
+ display: flex;
+ box-shadow: 0 0 10rpx rgba(0, 0, 0, .05);
+}
+
+.videoList-tips image {
+ width: 30rpx;
+ height: 30rpx;
+ margin: 8rpx 10rpx 6rpx 0;
+}
+
+.videoList-cont {
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.videoList-user {
+ display: flex;
+ line-height: 46rpx;
+ font-size: 28rpx;
+ margin-top: 20rpx;
+ color: #999;
+}
+
+.videoList-head {
+ width: 46rpx;
+ height: 46rpx;
+ margin-right: 20rpx;
+}
diff --git a/pages/mall/index.js b/pages/mall/index.js
index eb795c7..ee82216 100644
--- a/pages/mall/index.js
+++ b/pages/mall/index.js
@@ -1,66 +1,90 @@
-// pages/mall/index.js
-Page({
+/**
+ * 手太欠
+ * 5g获客星光网 - 商城
+ */
+const data = require("../../data/demo")
+
+Page({
/**
* 页面的初始数据
*/
data: {
-
+ banners : [], //banner图
+ categories : [], //分类
+ freeCoupon : [], //免费劵商品列表
+ hotSale : [], //优惠热爱列表
+ pushList : [], //推荐商品列表
+ page : {}, //分页信息
+ lodingStats : false //加载状态
},
/**
* 生命周期函数--监听页面加载
*/
- onLoad: function (options) {
+ onLoad(){
+ // 获取商城首页数据
+ this.indexInfo();
+ // 获取为您推荐
+ this.pushInfo();
},
/**
- * 生命周期函数--监听页面初次渲染完成
+ * 商城首页数据
*/
- onReady: function () {
-
+ indexInfo () {
+ wx.$api.mall.index().then(res=>{
+ this.setData({
+ banners : res.banners,
+ categories : res.categories,
+ freeCoupon : res.free_coupon,
+ hotSale : res.hot_sale
+ })
+ })
},
/**
- * 生命周期函数--监听页面显示
+ * 为您推荐
*/
- onShow: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
-
+ pushInfo(page) {
+ wx.$api.mall.pushData({
+ page : page,
+ pagesize: 15
+ }).then(res=>{
+ let listArr = this.data.pushList,
+ newData = []
+ if(page == 1 || page == undefined) listArr = []
+ newData = listArr.concat(res.data)
+ this.setData({
+ pushList : newData,
+ page : res.page,
+ lodingStats : false
+ })
+ wx.stopPullDownRefresh()
+ })
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
- onPullDownRefresh: function () {
-
+ onPullDownRefresh() {
+ // 获取为您推荐
+ this.pushInfo();
},
/**
- * 页面上拉触底事件的处理函数
+ * 上拉加载
*/
- onReachBottom: function () {
-
- },
-
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
-
+ onReachBottom(){
+ this.setData({
+ lodingStats: true
+ })
+ let pageNumber = this.data.page.current
+ if(this.data.page.has_more){
+ pageNumber++
+ // 获取为您推荐
+ this.pushInfo(pageNumber);
+ }
}
})
\ No newline at end of file
diff --git a/pages/mall/index.json b/pages/mall/index.json
index 8835af0..e022b9a 100644
--- a/pages/mall/index.json
+++ b/pages/mall/index.json
@@ -1,3 +1,11 @@
{
- "usingComponents": {}
+ "usingComponents": {
+ "mallIndex_nav" : "/components/mallIndex_nav/mallIndex_nav",
+ "mallIndex_coupon" : "/components/mallIndex_coupon/mallIndex_coupon",
+ "mallIndex_hot" : "/components/mallIndex_hot/mallIndex_hot",
+ "mallIndex_list" : "/components/mallIndex_list/mallIndex_list",
+ "mallIndex_video" : "/components/mallIndex_video/mallIndex_video"
+ },
+ "navigationBarTitleText": "商城",
+ "enablePullDownRefresh" : true
}
\ No newline at end of file
diff --git a/pages/mall/index.wxml b/pages/mall/index.wxml
index 93fe9d4..50f298e 100644
--- a/pages/mall/index.wxml
+++ b/pages/mall/index.wxml
@@ -1,2 +1,41 @@
-
-pages/mall/index.wxml
+
+
+
+
+
+
+ 搜索商品
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/index.wxss b/pages/mall/index.wxss
index 0d35e2f..3ef2d27 100644
--- a/pages/mall/index.wxss
+++ b/pages/mall/index.wxss
@@ -1 +1,75 @@
-/* pages/mall/index.wxss */
\ No newline at end of file
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+
+page {
+ background-color: #f3f3f3;
+}
+
+/* 商城红色背景 */
+.mallBox {
+ position: relative;
+}
+
+.mallBox::after {
+ position: absolute;
+ content: '';
+ background-color: #ea4e2f;
+ border-radius: 0 0 10% 10%;
+ width: 100%;
+ height: 38vh;
+ top: 0;
+ left: 0;
+ z-index: 0;
+}
+
+.mallCont {
+ position: absolute;
+ left: 30rpx;
+ top: 30rpx;
+ right: 30rpx;
+ z-index: 1;
+}
+
+/* 商城搜索 */
+.mallCont-search {
+ background-color: white;
+ border-radius: 100rpx;
+ padding: 18rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ color: #999999;
+}
+
+.mallCont-search-icon {
+ width: 44rpx;
+ height: 44rpx;
+ margin-right: 30rpx;
+}
+
+/* 轮播图 */
+.banner {
+ position: relative;
+ padding-top: 38%;
+ width: 100%;
+ background: white;
+ border-radius: 10rpx;
+ overflow: hidden;
+ margin: 30rpx 0;
+}
+
+.banner-swiper {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.banner-img {
+ width: 100%;
+ height: 100%;
+ vertical-align: top;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_address/mall_address.js b/pages/mall/mall_address/mall_address.js
new file mode 100644
index 0000000..a8688e6
--- /dev/null
+++ b/pages/mall/mall_address/mall_address.js
@@ -0,0 +1,100 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ addressType : '', //类型 selectAddress为选择地址
+ addressArr : [], //收货地址列表
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ console.log(options)
+ this.setData({
+ addressType : options.type
+ })
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow () {
+ // 获取地址列表
+ this.addressInfo();
+ },
+
+ /**
+ * 地址列表
+ */
+ addressInfo () {
+ wx.$api.address.index().then(res=>{
+ this.setData({
+ addressArr : res
+ })
+ })
+ },
+
+ /**
+ * 删除地址
+ */
+ addressRemove(e){
+ let id = e.target.dataset.id,
+ index = e.target.dataset.index,
+ list = this.data.addressArr
+
+ list.splice(index,1)
+
+ wx.showModal({
+ title : '提示',
+ content : '是否删除地址',
+ success : res=> {
+ if (res.confirm) {
+ wx.showLoading({
+ title: '删除中',
+ })
+ wx.$api.address.del(id).then(res=>{
+ this.setData({
+ addressArr: list
+ })
+ wx.hideLoading()
+ })
+ }
+ }
+ })
+ },
+
+ /**
+ * 设为默认地址
+ */
+ addressDefault(e){
+ let id = e.currentTarget.dataset.id
+ wx.$api.address.def(id).then(res=>{
+ // 获取地址列表
+ this.addressInfo();
+ })
+ },
+
+ /**
+ * 选择地址
+ */
+ selectAddress(e){
+ let atAdds = this.data.addressArr[e.currentTarget.dataset.index]
+ let pages = getCurrentPages(),
+ prepage = pages[pages.length-2]
+
+ prepage.setData({
+ addressDel: atAdds
+ })
+
+ wx.navigateBack()
+ }
+})
\ No newline at end of file
diff --git a/pages/mall/mall_address/mall_address.json b/pages/mall/mall_address/mall_address.json
new file mode 100644
index 0000000..4702470
--- /dev/null
+++ b/pages/mall/mall_address/mall_address.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "我的地址"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_address/mall_address.wxml b/pages/mall/mall_address/mall_address.wxml
new file mode 100644
index 0000000..b2cae66
--- /dev/null
+++ b/pages/mall/mall_address/mall_address.wxml
@@ -0,0 +1,46 @@
+
+
+
+
+ {{item.name}}{{item.mobile}}
+ 默认
+
+
+
+
+ {{item.full_address}}
+
+
+ 设为默认地址
+
+
+
+
+ 默认地址
+
+
+
+
+
+ 选择地址
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 还未添加收货地址
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_address/mall_address.wxss b/pages/mall/mall_address/mall_address.wxss
new file mode 100644
index 0000000..fb9fafd
--- /dev/null
+++ b/pages/mall/mall_address/mall_address.wxss
@@ -0,0 +1,124 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+ page {
+ background-color: #f7f7f7;
+ }
+
+ .address{
+ border-bottom: 130rpx solid transparent;
+}
+
+/* 地址列表 */
+.address-list {
+ background: #fff;
+ padding: 30rpx;
+ box-sizing: border-box;
+ overflow: hidden;
+}
+
+.address-name {
+ display: flex;
+}
+
+.address-name>text{
+ padding-left: 40rpx;
+}
+
+.address-state {
+ margin-left: 20rpx;
+}
+
+.address-state text {
+ font-size: 24rpx;
+ height: 40rpx;
+ line-height: 40rpx;
+ border-radius: 50rpx;
+ padding: 0 10rpx;
+ background-color: #c3c3c3;
+ color: #fff;
+ display: inline-block;
+ transform:scale(0.85);
+}
+
+.address-state text.active {
+ background-color: #ea4e2f;
+}
+
+.address-text {
+ color: #666666;
+ font-size: 28rpx;
+ margin: 20rpx 0;
+}
+
+.address-default{
+ height: 46rpx;
+ line-height: 44rpx;
+ border-radius: 6rpx;
+ font-size: 28rpx;
+ color:#666666;
+}
+
+.address-default image {
+ width: 34rpx;
+ height: 34rpx;
+ margin-right: 10rpx;
+ vertical-align: -6rpx;
+}
+
+.address-cont {
+ display: flex;
+}
+
+.address-site {
+ width: calc(100% - 180rpx)
+}
+
+.address-tool {
+ display: flex;
+ width: 172rpx;
+ margin-top: 48rpx;
+}
+
+.address-tool image {
+ width: 36rpx;
+ height: 36rpx;
+ margin-left: 50rpx;
+}
+
+.address-tool-btn{
+ margin-left: 30rpx;
+ border:solid 1rpx #747788;
+ height: 56rpx;
+ line-height: 54rpx;
+ padding: 0 20rpx;
+ font-size: 24rpx;
+}
+
+/* footer */
+
+.address-footer{
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ padding-left: 30rpx;
+ padding-right: 30rpx;
+ background: white;
+ border-top: 2rpx solid #eeeeee;
+ z-index: 9;
+ height: 130rpx;
+}
+
+.address-footer navigator{
+ width: 100%;
+ line-height: 90rpx;
+ height: 90rpx;
+ margin: 20rpx 0;
+ text-align: center;
+ background: #224bf6;
+ font-size: 30rpx;
+ color: white;
+ border-radius: 60rpx;
+}
diff --git a/pages/mall/mall_address_form/mall_address_form.js b/pages/mall/mall_address_form/mall_address_form.js
new file mode 100644
index 0000000..58939bb
--- /dev/null
+++ b/pages/mall/mall_address_form/mall_address_form.js
@@ -0,0 +1,234 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ id : '', //列表id
+ stateType : '', //类型 Add为添加地址 compile为编辑地址
+ saveArr : [], //省级列表
+ saveIndex : 0, //省级index
+ saveId : 0, //省级id
+ cityArr : [], //城市列表
+ cityIndex : 0, //城市index
+ cityId : 0, //城市id
+ regiArr : [], //区域列表
+ regiIndex : 0, //区域index
+ regiId : 0, //区域id
+ defaultVal : '', //是否为默认地址
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ this.setData({
+ stateType : options.type,
+ id : options.id
+ })
+
+ if (options.type == 'Add') {
+ wx.setNavigationBarTitle({
+ title: '添加收货地址'
+ })
+ // 获取省级信息列表
+ this.getProvince()
+ } else if (options.type == 'Compile') {
+ wx.setNavigationBarTitle({
+ title: '编辑收货地址'
+ })
+ // 获取地址编辑信息
+ this.getUserAddress(options.id)
+ }
+ },
+
+ /**
+ * 地址编辑信息
+ */
+ getUserAddress(id){
+ wx.$api.address.info(id).then(res=>{
+ this.setData({
+ name : res.name,
+ mobile : res.mobile,
+ address : res.address,
+ defaultVal : res.default
+ })
+
+ let cityArr = [
+ res.province,
+ res.city,
+ res.district
+ ]
+
+ this.getProvince(cityArr)
+ })
+ },
+
+ /**
+ * 省级信息列表
+ */
+ getProvince(city) {
+ wx.$api.address.create().then(res=>{
+ let saveArr = res,
+ saveIndex = this.data.saveIndex
+ this.setData({
+ saveArr : saveArr,
+ saveId : saveArr[saveIndex].id,
+ })
+
+ if(city){
+ // 获取市级列表
+ this.citylist(city[0].id, city)
+ this.setData({
+ saveIndex: res.findIndex(val => val.id == city[0].id),
+ saveId : city[0].id
+ })
+
+ }else{
+ // 获取市级列表
+ this.citylist(saveArr[saveIndex].id)
+ }
+ })
+ },
+
+ /**
+ * 省份选择-筛选
+ */
+ areasChange(e) {
+ let save = this.data.saveArr,
+ index = e.detail.value,
+ atsave = save[index].id
+ if (index != this.data.saveIndex) {
+ this.setData({
+ saveIndex : index,
+ saveId : atsave
+ })
+
+ // 获取市级列表
+ this.citylist(atsave)
+ }
+ },
+
+ /**
+ * 市级列表
+ */
+ citylist(id, city) {
+ wx.$api.address.create({parent_id: id}).then(res=>{
+ let cityArr = res
+ this.setData({
+ cityArr : cityArr,
+ cityId : cityArr[0].id,
+ cityIndex : 0
+ })
+
+ if(city){
+ // 获取区域列表
+ this.regilist(city[1].id, city)
+ this.setData({
+ cityIndex: res.findIndex(val => val.id == city[1].id),
+ cityId : city[1].id
+ })
+ }else{
+ // 获取区域列表
+ this.regilist(cityArr[0].id)
+ }
+ })
+ },
+
+ /**
+ * 城市选择-筛选
+ */
+ city(e) {
+ let city = this.data.cityArr,
+ index = e.detail.value,
+ atcity = city[index].id
+ if (index != this.data.saveIndex) {
+ this.setData({
+ cityIndex: index,
+ cityId : atcity
+ })
+
+ // 获取市级列表
+ this.regilist(atcity)
+ }
+ },
+
+ /**
+ * 区域列表
+ */
+ regilist(id, city) {
+ wx.$api.address.create({parent_id: id}).then(res=>{
+ this.setData({
+ regiArr : res,
+ regiId : res[0].id,
+ regiIndex : 0
+ })
+ if(city){
+ this.setData({
+ regiIndex: res.findIndex(val => val.id == city[2].id),
+ regiId : city[2].id
+ })
+ }
+ })
+ },
+
+ /**
+ * 区域选择-筛选
+ */
+ regi(e) {
+ let newIndex = e.detail.value
+ this.setData({
+ regiIndex : newIndex,
+ regiId : this.data.regiArr[newIndex].id
+ })
+ },
+
+ /**
+ * 保存信息
+ */
+ siteform(e) {
+ if(this.data.stateType == 'Compile') {
+ // 编辑地址
+ wx.$api.address.revise(this.data.id,{
+ name : e.detail.value.name,
+ mobile : e.detail.value.mobile,
+ province_id : this.data.saveId,
+ city_id : this.data.cityId,
+ district_id : this.data.regiId,
+ address : e.detail.value.address,
+ is_default : this.data.defaultVal
+ }).then(res=>{
+ wx.navigateBack()
+ })
+ }else if(this.data.stateType == 'Add') {
+ // 创建地址
+ wx.$api.address.add({
+ name : e.detail.value.name,
+ mobile : e.detail.value.mobile,
+ province_id : this.data.saveId,
+ city_id : this.data.cityId,
+ district_id : this.data.regiId,
+ address : e.detail.value.address,
+ is_default : this.data.defaultVal
+ }).then(res=>{
+ wx.navigateBack()
+ })
+ }
+ },
+
+ /**
+ * 设为默认地址
+ */
+ addressDefault(e) {
+ let val = e.detail.value
+ this.setData({
+ defaultVal: val
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/mall/mall_address_form/mall_address_form.json b/pages/mall/mall_address_form/mall_address_form.json
new file mode 100644
index 0000000..0d3d5a1
--- /dev/null
+++ b/pages/mall/mall_address_form/mall_address_form.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : ""
+}
\ No newline at end of file
diff --git a/pages/mall/mall_address_form/mall_address_form.wxml b/pages/mall/mall_address_form/mall_address_form.wxml
new file mode 100644
index 0000000..21731e3
--- /dev/null
+++ b/pages/mall/mall_address_form/mall_address_form.wxml
@@ -0,0 +1,77 @@
+
\ No newline at end of file
diff --git a/pages/mall/mall_address_form/mall_address_form.wxss b/pages/mall/mall_address_form/mall_address_form.wxss
new file mode 100644
index 0000000..f6192f2
--- /dev/null
+++ b/pages/mall/mall_address_form/mall_address_form.wxss
@@ -0,0 +1,181 @@
+
+/**
+ * 手太欠
+ * 物业小程序
+ */
+
+ .site-form {
+ background: white;
+ display: block;
+}
+
+.site-input{
+ padding: 0 30rpx 0 200rpx;
+ position: relative;
+ line-height: 100rpx;
+ min-height: 100rpx;
+}
+
+.site-input label{
+ width: 220rpx;
+ position: absolute;
+ left: 30rpx;
+ top: 0;
+ display: flex;
+}
+
+.site-input image {
+ width: 28rpx;
+ height: 28rpx;
+ position: absolute;
+ right: 20rpx;
+ top: calc(50% - 14rpx);
+}
+
+.site-input input,
+.site-input picker{
+ padding-left: 60rpx;
+ height: 100rpx;
+}
+
+.site-switch switch {
+ position: absolute;
+ right: 20rpx;
+ top: 0;
+}
+
+.site-input::before{
+ position: absolute;
+ bottom: 0;
+ left: 30rpx;
+ right: 0;
+ height: 1rpx;
+ content: "";
+ background: #e4e6f2;
+}
+
+.site-input:last-child::before{
+ display: none;
+}
+
+.tui-picker-detail{
+ width: 33%;
+}
+
+.siteTag {
+ display: flex;
+ margin: 50rpx 30rpx;
+}
+
+.siteTag-title {
+ margin-right: 20rpx;
+}
+
+.siteTag-label {
+ display: flex;
+}
+
+.siteTag-label text {
+ display: inline-block;
+ background-color: #eeeeee;
+ border-radius: 50rpx;
+ font-size: 26rpx;
+ padding: 6rpx 25rpx;
+ margin-left: 30rpx;
+}
+
+.siteTag-label text.active {
+ background-color: #224bf6;
+ color: #fff;
+}
+
+/* footer */
+
+.address-footer{
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ padding-left: 30rpx;
+ padding-right: 30rpx;
+ background: white;
+ border-top: 2rpx solid #eeeeee;
+ z-index: 9;
+ height: 130rpx;
+}
+
+.address-footer button[size="mini"]{
+ width: 100%;
+ line-height: 90rpx;
+ height: 90rpx;
+ margin: 20rpx 0;
+ text-align: center;
+ background: #224bf6;
+ font-size: 30rpx;
+ color: white;
+ border-radius: 60rpx;
+}
+
+/* pickerView */
+
+.pickerView-back{
+ background: rgba(0, 0, 0, .3);
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: none;
+}
+
+.pickerView-back.active{
+ display: block;
+}
+
+.pickerView-layer{
+ position: fixed;
+ bottom: -571rpx;
+ left: 0;
+ width: 100%;
+ background: white;
+ transition: all .3s;
+}
+
+.pickerView-layer.active{
+ bottom: 0;
+}
+
+.pickerView-btn{
+ line-height: 90rpx;
+ font-size: 30rpx;
+ padding: 0 30rpx;
+ display: flex;
+ justify-content:space-between;
+}
+
+.pickerView{
+ height: 480rpx;
+ padding: 0 10rpx;
+}
+
+.pickerView-name{
+ line-height: 80rpx;
+ padding: 0 20rpx;
+ text-align: center;
+}
+
+.pickerView-mask{
+ border-top: solid 1rpx #e4e6f2;
+}
+
+.pickerView-indicator{
+ height: 80rpx;
+}
+
+.pickerView-determine{
+ color: #3ec28e;
+}
+
+.pickerView-cancel{
+ color: #747788;
+}
diff --git a/pages/mall/mall_assess/mall_assess.js b/pages/mall/mall_assess/mall_assess.js
new file mode 100644
index 0000000..585d276
--- /dev/null
+++ b/pages/mall/mall_assess/mall_assess.js
@@ -0,0 +1,23 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ commentArr: [], //商品评价列表
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+
+ },
+})
\ No newline at end of file
diff --git a/pages/mall/mall_assess/mall_assess.json b/pages/mall/mall_assess/mall_assess.json
new file mode 100644
index 0000000..56bb8a3
--- /dev/null
+++ b/pages/mall/mall_assess/mall_assess.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "评价列表"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_assess/mall_assess.wxml b/pages/mall/mall_assess/mall_assess.wxml
new file mode 100644
index 0000000..8a01f13
--- /dev/null
+++ b/pages/mall/mall_assess/mall_assess.wxml
@@ -0,0 +1,39 @@
+
+
+
+ 全部
+ 最新
+ 图片视频
+
+
+
+
+
+
+
+
+ 张慢慢呀
+ 2020-12-04
+
+
+
+
+ 真的是太棒了,很满意的一次购物,真好,很喜欢
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_assess/mall_assess.wxss b/pages/mall/mall_assess/mall_assess.wxss
new file mode 100644
index 0000000..2ed87ef
--- /dev/null
+++ b/pages/mall/mall_assess/mall_assess.wxss
@@ -0,0 +1,101 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+ page {
+ background-color: #f7f7f7;
+ }
+
+/* 评价标签 */
+.assessTag {
+ background-color: white;
+ white-space: nowrap;
+ margin-bottom: 20rpx;
+ padding: 20rpx;
+}
+
+.assessTag text {
+ display: inline-block;
+ font-size: 28rpx;
+ background-color: #e6e8f0;
+ line-height: 60rpx;
+ padding: 0 30rpx;
+ border-radius: 40rpx;
+ margin: 15rpx;
+}
+
+.assessTag text.active {
+ background-color: #56669a;
+ color: #fff;
+}
+
+/* 评价列表 */
+.assessList {
+ padding: 20rpx;
+ box-sizing: border-box;
+ background: #fff;
+ margin-bottom: 20rpx;
+}
+
+.assessList:last-child::after {
+ display: none;
+}
+
+.assessList-top {
+ display: flex;
+ line-height: 80rpx;
+ margin: 30rpx 0 20rpx;
+}
+
+.assessList-cont {
+ display: flex;
+ flex: 1;
+ width: calc(100% - 100rpx);
+}
+
+.assessList-img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ margin-right: 20rpx;
+}
+
+.assessList-name {
+ flex: 1;
+ font-weight: 600;
+}
+
+.assessList-time {
+ color: #999;
+ font-size: 26rpx;
+}
+
+.assessList-text {
+ font-size: 26rpx;
+ line-height: 40rpx;
+}
+
+
+.assessList-float {
+ width: 100%;
+ white-space: nowrap;
+ margin: 20rpx 0 0;
+}
+
+.assessList-picture {
+ width: 150rpx;
+ display: inline-block;
+ height: 150rpx;
+ position: relative;
+ margin-right: 20rpx;
+ border-radius: 4rpx;
+ overflow: hidden;
+}
+
+.assessList-picture image {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_assess_form/mall_assess_form.js b/pages/mall/mall_assess_form/mall_assess_form.js
new file mode 100644
index 0000000..9ef8e3d
--- /dev/null
+++ b/pages/mall/mall_assess_form/mall_assess_form.js
@@ -0,0 +1,41 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ num : 4,//后端给的分数,显示相应的星星
+ one_2 : 0,
+ two_2 : 5
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+
+ },
+
+ //情况二:用户给评分
+ in_xin(e){
+ var in_xin = e.currentTarget.dataset.in;
+ var one_2;
+ if (in_xin === 'use_sc2'){
+ one_2 = Number(e.currentTarget.id);
+ } else {
+ one_2 = Number(e.currentTarget.id) + this.data.one_2;
+ }
+ this.setData({
+ one_2: one_2,
+ two_2: 5 - one_2
+ })
+ }
+
+})
\ No newline at end of file
diff --git a/pages/mall/mall_assess_form/mall_assess_form.json b/pages/mall/mall_assess_form/mall_assess_form.json
new file mode 100644
index 0000000..d4ebcc8
--- /dev/null
+++ b/pages/mall/mall_assess_form/mall_assess_form.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "商品评价"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_assess_form/mall_assess_form.wxml b/pages/mall/mall_assess_form/mall_assess_form.wxml
new file mode 100644
index 0000000..0793f1c
--- /dev/null
+++ b/pages/mall/mall_assess_form/mall_assess_form.wxml
@@ -0,0 +1,54 @@
+
+
+
+
+
+ 商品名称哦
+
+
+
+
+
+
+
+
+
+
+
+
+ {{one_2}}星
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_assess_form/mall_assess_form.wxss b/pages/mall/mall_assess_form/mall_assess_form.wxss
new file mode 100644
index 0000000..8df32bf
--- /dev/null
+++ b/pages/mall/mall_assess_form/mall_assess_form.wxss
@@ -0,0 +1,173 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+page {
+ background-color: #f7f7f7;
+}
+
+/* 评星 */
+.goods {
+ margin: 20rpx 0;
+ background-color: white;
+ padding: 30rpx;
+ box-sizing: border-box;
+ position: relative;
+}
+
+.goodsImg {
+ width: 140rpx;
+ height: 140rpx;
+ border-radius: 10rpx;
+}
+
+.goodsCont {
+ position: absolute;
+ top: 40rpx;
+ left: 200rpx;
+ right: 30rpx;
+ width: calc(100% - 230rpx);
+}
+
+.goodsCont-name {
+ font-size: 34rpx;
+ margin-bottom: 20rpx;
+}
+
+.goodsCont-star {
+ display: flex;
+}
+
+.goodsCont-star-icon image {
+ height: 50rpx;
+ width: 50rpx;
+ display: inline-block
+}
+
+.goodsCont-star-number {
+ margin-left: 20rpx;
+ line-height: 50rpx;
+}
+
+
+/* 多图上传图片 */
+.papers {
+ background: #fff;
+ padding: 30rpx;
+ box-sizing: border-box;
+ margin: 20rpx 0;
+}
+
+.papers-title {
+ font-weight: 600;
+ font-size: 30rpx;
+}
+
+.issue-info-img {
+ padding: 20rpx 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 -10rpx;
+}
+
+.issue-info-img-itme {
+ width: calc(33.33% - 20rpx);
+ padding-top: calc(33.33% - 20rpx);
+ box-sizing: border-box;
+ position: relative;
+ margin: 10rpx;
+}
+
+.issue-info-img-itme>image {
+ width: 100%;
+ height: calc(100% - 20rpx);
+ height: -webkit-calc(100% - 20rpx);
+ position: absolute;
+ top: 10rpx;
+ left: 0;
+}
+
+.issue-info-img-remove {
+ position: absolute;
+ z-index: 5;
+ top: -5rpx;
+ right: -6rpx;
+ height: 36rpx;
+ width: 36rpx;
+ text-align: center;
+ line-height: 34rpx;
+ background: #ec202c;
+ color: white;
+ font-size: 28rpx;
+ font-weight: bold;
+ border-radius: 50%;
+}
+
+.issue-info-img-add {
+ position: absolute;
+ top: 10rpx;
+ bottom: 10rpx;
+ width: 100%;
+ left: 0;
+ text-align: center;
+ background: #f3f4f8;
+ color: #8d8d8d;
+ font-size: 24rpx;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-box-pack: center;
+}
+
+.issue-info-img-add image {
+ width: 48rpx;
+ vertical-align: bottom;
+ margin-bottom: 15rpx;
+ margin-top: 15rpx;
+}
+
+.issue-info-img-hint {
+ line-height: 60rpx;
+ color: #666;
+ font-size: 26rpx;
+ padding: 0 30rpx 15rpx 30rpx;
+}
+
+
+/* 评论 */
+.texTarea {
+ background: #fff;
+ padding: 30rpx;
+ box-sizing: border-box;
+ margin: 20rpx 0;
+ font-size: 28rpx;
+ width: 100%;
+ height: 200rpx;
+}
+
+.texTarea texTarea {
+ width: 100%;
+ height: 120rpx;
+}
+
+.texTarea text {
+ text-align: right;
+ display: block;
+ font-size: 24rpx;
+ color: #999;
+}
+
+.site-btn {
+ width: calc(100% - 40rpx);
+ margin: 30rpx 20rpx;
+}
+
+.site-btn button[size="mini"]{
+ width: 100%;
+ background: #224bf6;
+ height: 94rpx;
+ line-height: 94rpx;
+ border-radius: 50rpx;
+ font-size: 30rpx;
+ color: white;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_cart/mall_cart.js b/pages/mall/mall_cart/mall_cart.js
new file mode 100644
index 0000000..77b994c
--- /dev/null
+++ b/pages/mall/mall_cart/mall_cart.js
@@ -0,0 +1,230 @@
+/*
+ * 手太欠
+ * 星光网-商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ carArr : [], //购物车列表
+ allCheckbox : false, //全选
+ bagNumber : 0, //合计多少件商品
+ allPrice : '0.00', //合计金额
+ number : 0,
+ total : '0', //价格
+ cartId : 0, //购物车id
+ paramsCart : [],
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ // 获取购物车列表
+ this.carInfo();
+ },
+
+ /**
+ * 购物车列表
+ */
+ carInfo() {
+ if(wx.getStorageSync("token") == ""){
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+ wx.$api.mall.carKist().then(res => {
+ console.log(res)
+ this.setData({
+ carArr: res.lists
+ })
+
+ })
+ },
+
+ /**
+ * 单选
+ */
+ checkbox(e){
+ let goodsIndex = e.currentTarget.dataset.goods,
+ goodsList = this.data.carArr,
+ checkbox = goodsList[goodsIndex].is_check,
+ sellerLength = 0
+ goodsList[goodsIndex].is_check = !checkbox
+ for(let i of goodsList){
+ if(i.is_check){
+ sellerLength++
+ if(sellerLength == goodsList.length){
+ this.setData({
+ allCheckbox: true
+ })
+ }
+ }else{
+ if(this.data.allCheckbox){
+ this.setData({
+ allCheckbox: false
+ })
+ }
+ }
+ }
+ this.setData({
+ carArr : goodsList
+ })
+
+ // 获取计算价格
+ this.totalPrice()
+ },
+
+ /**
+ * 全选
+ */
+ allCheckbox(){
+ let bagList = this.data.carArr,
+ allCheckbox = this.data.allCheckbox
+
+ allCheckbox = !allCheckbox
+
+ for(let i of bagList){
+ i.is_check = allCheckbox
+ }
+
+ this.setData({
+ paramsCart : params,
+ allCheckbox : allCheckbox,
+ carArr : bagList
+ })
+
+
+ console.log(this.data.paramsCart)
+
+ // 获取计算价格
+ this.totalPrice()
+ },
+
+ /**
+ * 商品数量加减
+ */
+ goodsNumber(e){
+ let goodsId = e.currentTarget.dataset.id,
+ goodsIndex = e.currentTarget.dataset.goods,
+ goodsNew = this.data.carArr,
+ goodsNumber = goodsNew[goodsIndex].number
+
+ if (e.currentTarget.dataset.type == 'plus'){
+ wx.$api.mall.increment(goodsId).then(res => {
+ goodsNew[goodsIndex].number = res.number
+ goodsNew[goodsIndex].total = res.total
+ this.setData({
+ carArr : goodsNew
+ })
+ // 获取计算价格
+ this.totalPrice()
+ })
+ }else{
+ if (goodsNumber > 1){
+ wx.$api.mall.decrement(goodsId).then(res => {
+ goodsNew[goodsIndex].number = res.number
+ goodsNew[goodsIndex].total = res.total
+ this.setData({
+ carArr : goodsNew
+ })
+ // 获取计算价格
+ this.totalPrice()
+ })
+ }else{
+ wx.showToast({
+ title : '商品数量不能小于1',
+ icon : 'none'
+ })
+ }
+ }
+ },
+
+ /**
+ * 计算价格
+ */
+ totalPrice() {
+ let bagNumber = 0,
+ allPrice = 0,
+ goodsList = this.data.carArr
+
+ for (let i of goodsList){
+ if(i.is_check){
+ bagNumber = bagNumber + i.number
+ allPrice = allPrice + i.total
+ }
+ }
+
+ this.setData({
+ bagNumber : bagNumber,
+ allPrice : allPrice
+ })
+ },
+
+ /**
+ * 菜单
+ */
+ actionSheet(e){
+ let goodIndex = e.currentTarget.dataset.goods,
+ goodRowid = e.currentTarget.dataset.rowid,
+ goodsList = this.data.carArr,
+ allCheckbox = this.data.allCheckbox
+
+ wx.showActionSheet({
+ itemList: ['删除'],
+ success : res=>{
+ if(res.tapIndex == 0){
+ wx.$api.mall.carRemove({ids: goodRowid}).then(res=>{
+ goodsList.splice([goodIndex],1)
+ if (goodsList.length == 0){
+ allCheckbox = false
+ }
+
+ this.setData({
+ allCheckbox : allCheckbox,
+ carArr : goodsList
+ })
+
+ // 获取计算价格
+ this.totalPrice()
+ })
+ }
+ }
+ })
+ },
+
+ /**
+ * 结算
+ */
+ bagOrder() {
+ let arrCart = this.data.carArr,
+ params = new Array
+
+ for (var i of arrCart){
+ params.push(i.id)
+ }
+
+ let listData = params.join(",")
+
+ if(wx.getStorageSync("token") == ""){
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+ wx.navigateTo({
+ url: '/pages/mall_order_submit/mall_order_submit?cart_ids=' + listData + '&type=arrCart'
+ })
+ },
+})
\ No newline at end of file
diff --git a/pages/mall/mall_cart/mall_cart.json b/pages/mall/mall_cart/mall_cart.json
new file mode 100644
index 0000000..77bc1f2
--- /dev/null
+++ b/pages/mall/mall_cart/mall_cart.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "购物车"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_cart/mall_cart.wxml b/pages/mall/mall_cart/mall_cart.wxml
new file mode 100644
index 0000000..6060df7
--- /dev/null
+++ b/pages/mall/mall_cart/mall_cart.wxml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+ {{item.goods.title}}
+ {{attrItem}}
+
+ ¥{{item.prices.amount}}
+
+ -
+
+ +
+
+
+
+
+
+
+
+
+
+
+ 购物车空空如也,快去首页购物吧~
+
+ 去购物
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_cart/mall_cart.wxss b/pages/mall/mall_cart/mall_cart.wxss
new file mode 100644
index 0000000..de1f13a
--- /dev/null
+++ b/pages/mall/mall_cart/mall_cart.wxss
@@ -0,0 +1,258 @@
+page {
+ background-color: #f7f7f7;
+}
+
+/* 内容区域 */
+
+.bag-content {
+ margin: 20rpx;
+}
+
+.bag-content-mall {
+ padding-bottom: 20rpx;
+}
+
+.bag-content-mall-name {
+ line-height: 80rpx;
+ padding: 0 30rpx;
+ border-bottom: solid 1rpx #e5e7f3;
+}
+
+.bag-content-mall-goods {
+ position: relative;
+ padding: 30rpx 20rpx;
+ box-sizing: border-box;
+ background-color: #fff;
+ border-radius: 10rpx;
+ margin-bottom: 20rpx;
+}
+
+.mall-good-cover {
+ width: 148rpx;
+ height: 148rpx;
+ background: #f5f6fa;
+ vertical-align: top;
+}
+
+.mall-good-content {
+ position: absolute;
+ top: 30rpx;
+ left: 268rpx;
+ right: 80rpx;
+}
+
+.mall-good-value {
+ color: #747788;
+ font-size: 26rpx;
+ line-height: 48rpx;
+}
+
+.mall-good-value text {
+ padding-right: 10rpx;
+}
+
+.mall-good-title {
+ line-height: 40rpx;
+}
+
+.mall-good-price {
+ color: #eb532a;
+ padding-top: 14rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ font-weight: bold;
+ padding-right: 200rpx;
+ position: relative;
+}
+
+.mall-good-number {
+ display: flex;
+ position: absolute;
+ right: 0;
+ top: 10rpx;
+ width: 180rpx;
+ font-weight: normal;
+ text-align: center;
+ height: 50rpx;
+ border: 2rpx solid #d6d6d6;
+ overflow: hidden;
+ border-radius: 10rpx;
+}
+
+.mall-good-number-btn {
+ width: 50rpx;
+}
+
+.mall-good-number-input {
+ flex: 1;
+ margin: 0 6rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ border-left: 2rpx solid #d6d6d6;
+ border-right: 2rpx solid #d6d6d6;
+}
+
+.mall-good-number-input,
+.mall-good-number-btn {
+ background: #fff;
+ color: #464854;
+}
+
+.mall-good-more {
+ height: 148rpx;
+ line-height: 148rpx;
+ width: 36rpx;
+ position: absolute;
+ top: 20rpx;
+ right: 0;
+ padding: 0 20rpx;
+}
+
+.mall-good-more image {
+ width: 100%;
+ vertical-align: middle;
+}
+
+/* checkbox */
+
+.checkbox {
+ height: 40rpx;
+ width: 40rpx;
+ line-height: 40rpx;
+ display: inline-block;
+ padding-top: 54rpx;
+ padding-right: 30rpx;
+}
+
+.checkbox.sellerCheckbox,
+.checkbox.allCheckbox {
+ padding-top: 0;
+}
+
+.checkbox.allCheckbox {
+ padding-right: 10rpx;
+}
+
+.checkbox checkbox {
+ vertical-align: top;
+ margin-top: -2rpx;
+}
+
+.checkbox checkbox .wx-checkbox-input {
+ background: white;
+ border-radius: 50%;
+ border: solid 3rpx #464854;
+ height: 34rpx;
+ width: 34rpx;
+}
+
+.checkbox checkbox .wx-checkbox-input.wx-checkbox-input-checked {
+ background: #224bf6;
+ border-color: #224bf6;
+}
+
+.checkbox checkbox .wx-checkbox-input.wx-checkbox-input-checked:before {
+ color: white;
+ line-height: 34rpx;
+ text-align: center;
+ width: 34rpx;
+ height: 34rpx;
+ font-size: 32rpx;
+}
+
+/* footer */
+
+.bag-footer {
+ border-bottom: solid 1rpx #e5e7f3;
+ border-top: solid 1rpx #e5e7f3;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ padding: 0 20rpx;
+ height: 100rpx;
+ box-sizing: border-box;
+ display: flex;
+}
+
+.bag-footer,
+.bag-header {
+ background: white;
+ z-index: 9;
+}
+
+.bag-footer-price {
+ font-size: 32rpx;
+ line-height: 100rpx;
+ margin-right: 40rpx;
+}
+
+.bag-footer-price text {
+ color: #eb532a;
+ padding-left: 10rpx;
+ font-weight: 600;
+}
+
+.bag-footer-rests {
+ color: #747788;
+ font-size: 26rpx;
+}
+
+.bag-footer-btn[size="mini"] {
+ width: 200rpx;
+ height: 76rpx;
+ line-height: 76rpx;
+ padding: 0;
+ border-radius: 40rpx;
+ background: #eb532a;
+ color: white;
+ font-size: 32rpx;
+ margin-top: 13rpx;
+ font-weight: normal;
+}
+
+.bag-footer-btn::after {
+ border: none;
+}
+
+.bag-footer-select {
+ position: absolute;
+ left: 20rpx;
+ top: 0;
+ line-height: 100rpx;
+}
+
+.bag-footer-right {
+ display: flex;
+ position: absolute;
+ right: 20rpx;
+ top: 0;
+ height: 100rpx;
+}
+
+
+/* 购物车为空 */
+.cart-hint {
+ background: #fff;
+ padding: 40rpx 0;
+ text-align: center;
+ color: #767676;
+ font-size: 26rpx;
+}
+
+.cart-hint-img {
+ width: 240rpx;
+ height: 240rpx;
+ border-radius: 50%;
+}
+
+.cart-hint-click {
+ width: 200rpx;
+ height: 70rpx;
+ line-height: 70rpx;
+ text-align: center;
+ border-radius: 80rpx;
+ border: 2rpx solid #fe4b51;
+ color: #fe4b51;
+ margin: 40rpx auto 0;
+}
diff --git a/pages/mall/mall_classify/mall_classify.js b/pages/mall/mall_classify/mall_classify.js
new file mode 100644
index 0000000..bf81928
--- /dev/null
+++ b/pages/mall/mall_classify/mall_classify.js
@@ -0,0 +1,85 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ stairIndex : 0, //左侧下标默认
+ firstList : [], //左侧数据列表
+ stairTitle : '', //右侧分类标题名
+ categoryId : 0, //右侧传参id
+ secondList : [], //右侧数据列表
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ // 获取商城左侧数据
+ this.mallFirst();
+ },
+
+ /**
+ * 商城左侧数据
+ */
+ mallFirst () {
+ wx.$api.mall.first().then(res=>{
+ this.setData({
+ firstList : res,
+ categoryId : res[0].category_id,
+ stairTitle : res[0].title
+ })
+
+ // 获取商城右侧数据
+ this.mallSecond();
+ })
+ },
+
+ /**
+ * 商城右侧数据
+ */
+ mallSecond () {
+ wx.$api.mall.second({
+ category_id : this.data.categoryId
+ }).then(res=>{
+ this.setData({
+ secondList : res
+ })
+ })
+ },
+
+ /**
+ * 更新左侧分类
+ */
+ stairNav(e){
+ let categoryid = e.currentTarget.dataset.id,
+ index = e.currentTarget.dataset.index,
+ firstNew = this.data.firstList
+ if(this.data.categoryId != categoryid){
+ this.setData({
+ stairTitle: firstNew[index].title,
+ categoryId: categoryid
+ })
+
+ // 获取商城右侧数据
+ this.mallSecond();
+ }
+ },
+
+ /**
+ * 页面跳转
+ */
+ jumpUrl(e){
+ let id = e.currentTarget.dataset.id
+ wx.navigateTo({
+ url: '/pages/mall_goods/mall_goods?sort=' + id,
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/mall/mall_classify/mall_classify.json b/pages/mall/mall_classify/mall_classify.json
new file mode 100644
index 0000000..f75f4df
--- /dev/null
+++ b/pages/mall/mall_classify/mall_classify.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText": "商品分类"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_classify/mall_classify.wxml b/pages/mall/mall_classify/mall_classify.wxml
new file mode 100644
index 0000000..41c7552
--- /dev/null
+++ b/pages/mall/mall_classify/mall_classify.wxml
@@ -0,0 +1,21 @@
+
+
+
+ {{item.title}}
+
+
+
+
+ {{stairTitle}}
+
+
+
+
+
+ {{item.title}}
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_classify/mall_classify.wxss b/pages/mall/mall_classify/mall_classify.wxss
new file mode 100644
index 0000000..2e28898
--- /dev/null
+++ b/pages/mall/mall_classify/mall_classify.wxss
@@ -0,0 +1,82 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+/* 一级分类 */
+.stair-nav{
+ position: fixed;
+ top: 0;
+ left: 0;
+ background: #f7f7f7;
+ height: 100vh;
+ width: 200rpx;
+ text-align: center;
+ z-index: 9;
+ padding-top: 20rpx;
+ box-sizing: border-box;
+}
+
+.stair-nav-li{
+ line-height: 100rpx;
+}
+
+
+/* 二级分类 */
+
+.level-content{
+ position: fixed;
+ top: 0;
+ left: 0;
+ margin-left: 200rpx;
+ width: calc(100vw - 200rpx);
+ width: -webkit-calc(100vw - 200rpx);
+ height: 100vh;
+ padding: 10rpx;
+ background: white;
+ box-sizing: border-box;
+}
+
+.levelList-title {
+ color: #2c2c2c;
+ padding: 20rpx;
+ font-weight: 600;
+}
+
+.level-nav{
+ display: flex;
+ flex-wrap:wrap;
+}
+
+.level-nav-li{
+ width: 33.333%;
+ text-align: center;
+ padding: 10rpx;
+ box-sizing: border-box;
+}
+
+.stair-nav-li.active {
+ background-color: #fff;
+}
+
+.level-nav-cover{
+ width: 100%;
+ padding-top: 100%;
+ position: relative;
+ border-radius: 10rpx;
+ overflow: hidden;
+}
+
+.level-nav-cover image {
+ position: absolute;
+ border-radius: 4rpx;
+ width: 60%;
+ height: 60%;
+ left: 20%;
+ top: 20%;
+}
+
+.level-nav-title{
+ font-size: 28rpx;
+ color: #464854;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_details/mall_details.js b/pages/mall/mall_details/mall_details.js
new file mode 100644
index 0000000..1287d08
--- /dev/null
+++ b/pages/mall/mall_details/mall_details.js
@@ -0,0 +1,292 @@
+/*
+ * 手太欠
+ * 星光网-商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ goosId : '', //商品id
+ storyData : '', //商品详情
+ content : '', //商品详情介绍
+ storeCoupons: [], //全场优惠券
+ coupons : [], //商品优惠券
+ couponShow : false, //优惠券弹出状态
+ specsShow : false, //规格弹出状态
+ goodsNumber : '1', //input商品数量
+ changeSku : [], //规格选择
+ shareShow : false, //分享弹出
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+ this.setData({
+ goosId: options.id
+ })
+ },
+
+ onShow() {
+ // 获取商品详情
+ this.storyInfo();
+ },
+
+ /**
+ * 商品详情
+ */
+ storyInfo() {
+ wx.$api.mall.details(this.data.goosId).then(res => {
+ console.log(res)
+ this.setData({
+ storyData : res,
+ storeCoupons: res.store_coupons, //全场优惠券数组
+ coupons : res.coupons, //商品优惠券数组
+ skus : res.skus, //规格数据
+ changeSku : res.skus.default_attr, //规格默认
+ prices : res.skus.prices, //规格所有组合
+ content : res.content.replace(/\
{
+ wx.showToast({
+ title: res,
+ // title: '恭喜你抢到了',
+ icon: 'none'
+ })
+ })
+ },
+
+ /**
+ * 产品数量
+ */
+ goodsNumber(e){
+ let type = e.currentTarget.dataset.type,
+ atNumber = this.data.goodsNumber
+
+ if(type == "plus"){
+ if(atNumber < this.data.changeSku.prices.stock){
+ atNumber++
+ }else{
+ wx.showToast({
+ title: "商品数量不足",
+ icon : "none"
+ })
+ }
+ }else if(type == "remove"){
+ if(atNumber > 1){
+ atNumber--
+ }else{
+ wx.showToast({
+ title: "商品数量不能小于1",
+ icon : "none"
+ })
+ }
+ }
+
+ this.setData({
+ goodsNumber: atNumber
+ })
+ },
+
+ /**
+ * 输入产品数量
+ */
+ goodsNumberInput(e){
+ let value = e.detail.value,
+ atNumber = this.data.goodsNumber
+
+ if(value > 1){
+ if(value <= this.data.changeSku.prices.stock){
+ atNumber = value
+ }else{
+ atNumber = this.data.changeSku.prices.stock
+ wx.showToast({
+ title: "商品数量不足",
+ icon : "none"
+ })
+ }
+ }else{
+ wx.showToast({
+ title: "商品数量不能小于1",
+ icon : "none"
+ })
+ }
+
+ this.setData({
+ goodsNumber: atNumber
+ })
+ },
+
+ /**
+ * 加入购物车
+ */
+ addBag(){
+ if(wx.getStorageSync("token") == ""){
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+
+ wx.$api.mall.jionCar({
+ sku_id : this.data.changeSku.sku_id,
+ goods_id: this.data.goosId,
+ number : this.data.goodsNumber
+ }).then(res => {
+ this.setData({
+ specsShow: !this.data.specsShow
+ })
+ })
+ },
+
+ /**
+ * 结算
+ */
+ buy() {
+ if(wx.getStorageSync("token") == ""){
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+
+ if(this.data.changeSku.prices.stock != '') {
+ if(this.data.changeSku.prices.stock < this.data.goodsNumber) {
+ wx.showToast({
+ title : '抱歉,库存不足',
+ icon : 'none'
+ })
+ } else {
+ wx.navigateTo({
+ url: '/pages/mall_order_submit/mall_order_submit?skuId=' + this.data.changeSku.sku_id + '&qty=' + this.data.goodsNumber
+ })
+
+ this.setData({
+ specsShow: false
+ })
+ }
+ }
+ },
+
+ /**
+ * 分享
+ */
+ shareLay(e) {
+ if(wx.getStorageSync("token") == ""){
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+
+ this.setData({
+ shareShow: !this.data.shareShow
+ })
+ },
+
+ /**
+ * 分享-关闭
+ */
+ shareLayEnd(e) {
+ this.setData({
+ shareShow: false
+ })
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+ this.setData({
+ shareShow: false
+ })
+ },
+})
\ No newline at end of file
diff --git a/pages/mall/mall_details/mall_details.json b/pages/mall/mall_details/mall_details.json
new file mode 100644
index 0000000..042e2c8
--- /dev/null
+++ b/pages/mall/mall_details/mall_details.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "商品详情"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_details/mall_details.wxml b/pages/mall/mall_details/mall_details.wxml
new file mode 100644
index 0000000..5861886
--- /dev/null
+++ b/pages/mall/mall_details/mall_details.wxml
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 分享
+
+
+ ¥{{changeSku.prices.price}}
+ ¥{{changeSku.prices.cast}}
+
+
+
+ vip
+ ¥{{changeSku.prices.vip}}
+
+
+
+ {{storyData.title}}
+ {{storyData.description}}
+
+
+
+ 开通会员,尊享会员价
+
+ 立即开通
+
+
+
+
+
+ 分享奖 ¥{{changeSku.prices.bonus1}}
+
+
+
+ 规格:
+
+
+ {{item}}/
+
+
+
+
+
+ 邮费:
+ 包邮
+
+ 已售:{{storyData.sell_number}}
+
+
+
+
+
+
+
+ 优惠:
+
+ 领取优惠券
+
+
+
+
+
+
+
+
+
+
+
+ 企业名称A
+
+
+
+
+ 用户A
+
+ 会员
+
+
+
+
+
+
+
+
+
+ 用户评价(100)
+
+
+
+
+
+
+
+
+
+ 看看**看看看看
+
+ 产品好好,真棒产品好好,真棒产品好好,真棒
+
+
+
+
+
+
+
+ 看看**看看看看
+
+ 产品好好,真棒产品好好,真棒产品好好,真棒
+
+
+
+
+
+
+
+
+ 商品详情
+
+
+
+
+
+
+
+
+
+
+
+ 优惠
+
+
+ 全场优惠券
+
+
+
+
+ {{item.type_text}}
+
+
+
+
+
+ ¥{{item.price}}
+ 免费
+
+ {{item.title}}无门槛免费使用
+
+
+ 立即领取
+
+
+ 已领取
+
+
+
+
+
+
+ 商品优惠券
+
+
+ {{item.type_text}}
+
+
+ ¥{{item.price}}
+ 免费
+
+
+
+ {{item.title}}{{item.type_text == '免费券' ? '免费券' : item.full}}
+ 立即领取
+ {{item.start_at}} - {{item.end_at}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ¥{{changeSku.prices.price}}
+
+ 已选:
+
+
+ "{{item}}"
+
+
+ 剩余:{{changeSku.prices.stock}}件
+
+
+
+ {{name}}:
+
+
+ {{item}}
+
+
+
+
+ 数量:
+
+ -
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+ 分享
+
+
+
+
+
+
+ 好物推荐,和大家一起分享你发现的好物
+
diff --git a/pages/mall/mall_details/mall_details.wxss b/pages/mall/mall_details/mall_details.wxss
new file mode 100644
index 0000000..f468ff9
--- /dev/null
+++ b/pages/mall/mall_details/mall_details.wxss
@@ -0,0 +1,946 @@
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+page {
+ background-color: #f7f7f7;
+}
+
+/* 商品轮播 */
+
+.banner {
+ overflow: hidden;
+ position: relative;
+ padding-top: 100%;
+}
+
+.swiperCont,
+.swiperImg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+/* 商品名称 */
+.goods {
+ padding: 30rpx;
+ box-sizing: border-box;
+ background-color: white;
+ position: relative;
+}
+
+.goodsShare {
+ position: absolute;
+ right: 0;
+ top: 50rpx;
+ background-color: #fa8442;
+ color: #fff;
+ display: flex;
+ font-size: 26rpx;
+ border-radius: 30rpx 0 0 30rpx;
+ line-height: 52rpx;
+ height: 52rpx;
+ padding: 0 12rpx 0 18rpx;
+ box-sizing: border-box;
+}
+
+.goodsShare image {
+ width: 28rpx;
+ height: 28rpx;
+ margin: 12rpx 10rpx 0 0;
+}
+
+.goods-price {
+ display: flex;
+ color: #ea4e2f;
+}
+
+.goods-price-prime {
+ font-size: 36rpx;
+}
+
+.goods-price-cost {
+ font-size: 26rpx;
+ color: #999;
+ text-decoration: line-through;
+ margin: 10rpx 0 0 30rpx;
+}
+
+.recommend-tips {
+ margin: 20rpx 0 30rpx;
+}
+
+.recommend-mark {
+ background-color: #f2e4c0;
+ border-radius: 6rpx;
+ display: inline-block;
+ font-size: 26rpx;
+ overflow: hidden;
+ height: 45rpx;
+ line-height: 45rpx;
+ padding-right: 20rpx;
+}
+
+.recommend-vip {
+ display: inline-block;
+ line-height: 45rpx;
+ background-color: #333333;
+ color: #f2e4c0;
+ padding: 0 20rpx;
+}
+
+.goods-title-name {
+ font-size: 36rpx;
+ margin-bottom: 20rpx;
+}
+
+.goods-title-text {
+ font-size: 28rpx;
+ color: #999999;
+ line-height: 40rpx;
+}
+
+.goodsMember,
+.goods-tips {
+ margin: 30rpx 0 20rpx;
+ border-radius: 10rpx;
+ line-height: 78rpx;
+ display: flex;
+ font-size: 26rpx;
+}
+
+.goodsMember {
+ background-color: #fbf7ec;
+ padding-right: 20rpx;
+ box-sizing: border-box;
+}
+
+.goodsMember-name {
+ display: flex;
+ flex: 1;
+}
+
+.goodsMember-btn {
+ display: flex;
+}
+
+.goods-tips-arrow {
+ width: 24rpx;
+ height: 24rpx;
+ margin: 28rpx 0 0 10rpx;
+}
+
+.goods-tips {
+ background-color: #f7f7f7;
+ border: 2rpx #f2f2f2 dotted;
+}
+
+.goods-tips text {
+ color: #ea4e2f;
+ padding-left: 20rpx;
+}
+
+.goods-tips-gold {
+ width: 34rpx;
+ height: 34rpx;
+ margin: 22rpx 20rpx;
+}
+
+.specs {
+ display: flex;
+ height: 80rpx;
+ line-height: 80rpx;
+ font-size: 30rpx;
+}
+
+.specsName {
+ flex: 1;
+ display: flex;
+}
+
+.specsName text {
+ color: #a9a9a9;
+ padding: 0 10rpx;
+}
+
+.specsGive:last-child text {
+ display: none;
+}
+
+.specsTitle,
+.specsText {
+ color: #000;
+ padding-right: 20rpx;
+}
+
+.specs,
+.specsText text {
+ color: #666;
+}
+
+.specsGive {
+ font-size: 28rpx;
+ /* margin-right: 30rpx; */
+ line-height: 84rpx;
+}
+
+
+/* 优惠券 */
+.coupon {
+ background-color: white;
+ padding: 10rpx 30rpx;
+ box-sizing: border-box;
+ margin: 20rpx 0;
+}
+
+.specsName-arrow {
+ width: 30rpx;
+ height: 30rpx;
+ margin-top: 25rpx;
+}
+
+.couponTips {
+ position: relative;
+ border: 2rpx dotted #ea4e2f;
+ color: #ea4e2f;
+ border-radius: 10rpx;
+ height: 52rpx;
+ line-height: 52rpx;
+ font-size: 26rpx;
+ padding: 0 10rpx;
+ margin-top: 12rpx;
+}
+
+/* 企业名称 */
+.specsName-company {
+ width: 36rpx;
+ height: 36rpx;
+ margin: 22rpx 20rpx 22rpx 0;
+}
+
+.specsUser,
+.specsUser-text {
+ display: flex;
+}
+
+.specsUser-img {
+ width: 54rpx;
+ height: 54rpx;
+ margin: 13rpx 10rpx 0 0;
+}
+
+.specsUser-member {
+ border: 2rpx solid #ab8553;
+ color: #ab8553;
+ border-radius: 50rpx;
+ height: 44rpx;
+ line-height: 44rpx;
+ font-size: 26rpx;
+ display: flex;
+ margin: 16rpx 0 16rpx 10rpx;
+ padding: 0 10rpx;
+}
+
+.specsUser-member image {
+ width: 30rpx;
+ height: 30rpx;
+ margin: 7rpx 7rpx 7rpx 0;
+}
+
+/* 评价列表 */
+.assess {
+ background-color: white;
+}
+
+.assess-title {
+ padding: 30rpx;
+ box-sizing: border-box;
+ display: flex;
+}
+
+.assess-title-name {
+ flex: 1;
+ font-size: 30rpx;
+}
+
+.assess-title-name text {
+ color: #999;
+ padding-left: 10rpx;
+}
+
+.assess-title-more image {
+ width: 30rpx;
+ height: 30rpx;
+}
+
+.assess-list {
+ white-space: nowrap;
+}
+
+.assess-label {
+ width: 500rpx;
+ height: 200rpx;
+ border-radius: 10rpx;
+ display: inline-block;
+ position: relative;
+ border: 2rpx solid #e7e7e7;
+ overflow: hidden;
+ margin: 0 0 20rpx 30rpx;
+}
+
+.assess-label:last-child {
+ margin-right: 30rpx;
+}
+
+.assess-img {
+ width: 200rpx;
+ height: 200rpx;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.assess-cont {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: calc(100% - 200rpx);
+ font-size: 26rpx;
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.assess-user {
+ display: flex;
+ line-height: 60rpx;
+ margin-bottom: 25rpx;
+}
+
+.assess-user-head {
+ width: 60rpx;
+ height: 60rpx;
+ margin-right: 10rpx;
+}
+
+.assess-user-text {
+ padding: 0 10rpx;
+ box-sizing: border-box;
+ line-height: 40rpx;
+ white-space: initial;
+}
+
+/* 商品详情 */
+.details {
+ background-color: white;
+ margin: 30rpx 0;
+ padding: 30rpx;
+ box-sizing: border-box;
+}
+
+.details-title {
+ margin-bottom: 20rpx;
+ font-weight: 600;
+}
+
+.details-footer {
+ border-bottom: solid 130rpx transparent;
+ line-height: 40rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color: #747788;
+ padding-top: 20rpx;
+ margin-bottom: 20rpx;
+}
+
+
+/* 底部菜单栏 */
+
+.footer {
+ background: #fff;
+ height: 100rpx;
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ z-index: 99;
+ width: 100%;
+ display: flex;
+ box-shadow: 0 -3rpx 3rpx 0 rgba(0, 0, 0, 0.05);
+}
+
+.footer-img,
+.specsEject-footer-img {
+ width: 300rpx;
+ text-align: center;
+ font-size: 26rpx;
+ color: #575757;
+ display: flex;
+ margin-right: 20rpx;
+}
+
+.footer-img-tool {
+ width: 140rpx;
+ position: relative;
+}
+
+.footer-img-tool:first-child::after {
+ position: absolute;
+ content: '';
+ right: 0;
+ top: 15rpx;
+ background-color: #f1f1f1;
+ width: 2rpx;
+ height: calc(100% - 30rpx);
+}
+
+.footer-img-tool text {
+ font-size: 24rpx;
+ background-color: #fff;
+ border: #ff7020 2rpx solid;
+ color: #ff7020;
+ border-radius: 50%;
+ position: absolute;
+ display: inline-block;
+ top: 5rpx;
+ right: 25rpx;
+ width: 30rpx;
+ height: 30rpx;
+ transform: scale(0.8);
+}
+
+.footer-img image {
+ width: 48rpx;
+ height: 48rpx;
+ display: block;
+ margin: 10rpx auto 0;
+}
+
+.footer-btn{
+ width: calc(100% - 240rpx);
+ display: flex;
+}
+
+.footer-btn view,
+.specsEject-footer view {
+ color: #fff;
+ height: 100%;
+ line-height: 100rpx;
+ text-align: center;
+ font-size: 32rpx;
+ width: 50%;
+}
+
+view.footer-btn-car {
+ background-color: #f8c232;
+}
+
+view.footer-btn-buy {
+ background-color: #f97b35;
+}
+
+/* 优惠券弹出层 */
+.couponBack,
+.specsBack {
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, .5);
+ z-index: 100;
+ display: none;
+}
+
+.couponBack.active,
+.specsBack.active {
+ display: block;
+}
+
+.couponEject,
+.specsEject {
+ position: fixed;
+ width: 100%;
+ bottom: -100%;
+ left: 0;
+ border-radius: 30rpx 30rpx 0 0;
+ background-color: white;
+ z-index: 101;
+ transition: .2s;
+}
+
+.couponEject.active,
+.specsEject.active {
+ bottom: 0;
+}
+
+.couponClose {
+ width: 40rpx;
+ height: 40rpx;
+ position: absolute;
+ top: 30rpx;
+ right: 30rpx;
+ z-index: 103;
+}
+
+.couponEject-title {
+ text-align: center;
+ width: 100%;
+ padding: 30rpx 0 10rpx;
+ font-weight: 600;
+}
+
+.couponEject-list {
+ padding: 20rpx 30rpx;
+ box-sizing: border-box;
+}
+
+.couponEject-list-label {
+ position: relative;
+ width: 100%;
+ padding-top: 32%;
+ margin-bottom: 20rpx;
+}
+
+.couponEject-list-label::after,
+.couponEject-list-label::before,
+.couponDraw-list-label::after,
+.couponDraw-list-label::before {
+ position: absolute;
+ content: '';
+ width: 30rpx;
+ height: 30rpx;
+ border-radius: 50%;
+ background-color: white;
+ z-index: 111;
+}
+
+.couponEject-list-label::after {
+ top: -15rpx;
+ right: 160rpx;
+}
+
+.couponEject-list-label::before {
+ bottom: -15rpx;
+ right: 160rpx;
+}
+
+.couponEject-list-title {
+ margin-bottom: 30rpx;
+}
+
+.couponEject-list-back {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ border-radius: 20rpx;
+}
+
+.couponEject-list-tips,
+.couponDraw-list-tips {
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: #c0d3fc;
+ color: #2151f5;
+ z-index: 102;
+ font-size: 26rpx;
+ border-radius: 10rpx 0 10rpx 0;
+ padding: 6rpx 20rpx;
+}
+
+.couponEject-list-cont {
+ z-index: 102;
+ position: absolute;
+ top: calc(50% - 45rpx);
+ left: 0;
+ right: 0;
+ color: #fff;
+ display: flex;
+ height: 90rpx;
+}
+
+.couponEject-list-left {
+ width: calc(100% - 200rpx);
+ display: flex;
+ margin-right: 40rpx;
+}
+
+.couponEject-list-price {
+ font-size: 50rpx;
+ position: relative;
+ width: 45%;
+ text-align: center;
+ font-weight: 600;
+ line-height: 90rpx;
+}
+
+.couponEject-list-price::after {
+ position: absolute;
+ content: '';
+ right: 0;
+ top: 0;
+ width: 2rpx;
+ height: 100%;
+ background-color: rgba(255, 255, 255, .5);
+}
+
+.couponEject-list-price text,
+.couponDraw-list-part text {
+ font-size: 28rpx;
+ font-weight: normal;
+}
+
+.couponEject-list-name {
+ text-align: center;
+ width: 55%;
+}
+
+.couponEject-list-name text {
+ font-size: 26rpx;
+ display: block;
+ margin-top: 10rpx;
+}
+
+.couponEject-list-btn {
+ width: 140rpx;
+ color: #2d6bf6;
+ background-color: #fff;
+ border-radius: 50rpx;
+ text-align: center;
+ height: 56rpx;
+ line-height: 56rpx;
+ font-size: 28rpx;
+ box-shadow: 0 0 10rpx rgba(0, 50, 61, .2);
+ margin-top: 20rpx;
+}
+
+.couponEject-list-line {
+ position: absolute;
+ width: 0;
+ height: 100%;
+ content: '';
+ border: 2rpx dotted #fff;
+ right: 175rpx;
+ top: 0;
+ z-index: 102;
+}
+
+.couponEject-list-tips-yellow {
+ background-color: #fae5c2;
+ color: #bf7b06;
+}
+
+.couponEject-list-yellow {
+ color: #b67c18;
+}
+
+/* 已领取的优惠券 */
+.couponDraw-list-label {
+ position: relative;
+ width: 100%;
+ padding-top: 32%;
+ border: 2rpx solid #eeeeee;
+ border-radius: 10rpx;
+ margin-bottom: 20rpx;
+}
+
+.couponDraw-list-label::after {
+ top: -15rpx;
+ left: calc(40% - 15rpx);
+}
+
+.couponDraw-list-label::before {
+ bottom: -15rpx;
+ left: calc(40% - 15rpx);
+}
+
+.couponDraw-list-tips {
+ background-color: #fae5c2;
+ color: #9b6404;
+}
+
+
+.couponDraw-list-price {
+ width: 40%;
+ background-color: #eea931;
+ color: #fff;
+ position: absolute;
+ height: 100%;
+ left: 0;
+ top: 0;
+ border-radius: 10rpx 0 0 10rpx;
+ text-align: center;
+}
+
+.couponDraw-list-part {
+ position: absolute;
+ width: 100%;
+ height: 70rpx;
+ top: calc(50% - 35rpx);
+ z-index: 102;
+ text-align: center;
+ font-size: 50rpx;
+ font-weight: 600;
+}
+
+.couponDraw-list-text {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 60%;
+ padding: 10rpx 20rpx;
+ box-sizing: border-box;
+}
+
+.couponDraw-list-name text {
+ color: #999;
+ display: block;
+ font-size: 26rpx;
+ margin: 10rpx 0 5rpx;
+}
+
+.couponDraw-list-btn {
+ color: #b67c18;
+ border: 2rpx solid #b67c18;
+ border-radius: 50rpx;
+ display: inline-block;
+ font-size: 26rpx;
+ padding: 4rpx 30rpx;
+ float: right;
+ margin-bottom: 20rpx;
+}
+
+.couponDraw-list-time {
+ font-size: 26rpx;
+ color: #999;
+ clear: both;
+}
+
+/* 规格弹出 */
+.specsEject-cont {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+}
+
+.specsEject-goods {
+ position: relative;
+}
+
+.specsEject-goods-img {
+ width: 140rpx;
+ height: 140rpx;
+ border-radius: 10rpx;
+}
+
+.specsEject-goods-text {
+ width: calc(100% - 160rpx);
+ left: 160rpx;
+ top: 0;
+ position: absolute;
+}
+
+.specsEject-goods-price {
+ color: #eb532a;
+ font-size: 34rpx;
+}
+
+.specsEject-goods-norms {
+ display: flex;
+}
+
+.specsEject-goods-norms,
+.specsEject-goods-stock {
+ font-size: 26rpx;
+ margin-top: 10rpx;
+}
+
+.specsEject-goods-tips {
+ color: #999;
+ width: 80rpx;
+}
+
+.jectGive {
+ width: calc(100% - 80rpx);
+}
+
+.jectGive text {
+ padding-right: 10rpx;
+}
+
+.specsEject-label {
+ margin: 20rpx 0;
+ flex-wrap: wrap;
+}
+
+.specsEject-label-title {
+ margin-bottom: 20rpx;
+}
+
+.specsEject-label-opt {
+ margin: 0 -20rpx;
+}
+
+.specsEject-label-opt text {
+ font-size: 26rpx;
+ border: 2rpx solid #dedede;
+ border-radius: 50rpx;
+ margin: 10rpx;
+ padding: 10rpx 40rpx;
+ display: inline-block;
+}
+
+.specsEject-label-opt text.active {
+ border-color: #eb532a;
+ color: #eb532a;
+}
+
+.specsEject-number {
+ display: flex;
+ border: 2rpx solid #dddddd;
+ border-radius: 10rpx;
+ overflow: hidden;
+ width: 270rpx;
+ height: 64rpx;
+ line-height: 64rpx;
+}
+
+.specsEject-number-btn,
+.specsEject-number-input {
+ width: 90rpx;
+ height: 100%;
+ text-align: center;
+ display: inline-block;
+}
+
+.specsEject-number-input {
+ position: relative;
+}
+
+.specsEject-number-input::after,
+.specsEject-number-input::before {
+ position: absolute;
+ content: '';
+ top: 0;
+ width: 2rpx;
+ height: 100%;
+ background-color: #dddddd;
+}
+
+.specsEject-number-input::after {
+ left: 0;
+}
+
+.specsEject-number-input::before {
+ right: 0;
+}
+
+.specsEject-footer {
+ display: flex;
+}
+
+
+/* 分享弹出 */
+
+.share-back {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.3);
+ z-index: 99;
+ left: 0;
+ top: 0;
+ display: none;
+}
+
+.share-back.active {
+ display: block;
+}
+
+.share-layer {
+ position: fixed;
+ bottom: -100%;
+ left: 0;
+ width: 100%;
+ background: white;
+ z-index: 100;
+ transition: all 0.2s;
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1);
+}
+
+.share-layer.active {
+ bottom: 0;
+}
+
+.share-title {
+ display: flex;
+ padding: 20rpx;
+ background: #f7f7f7;
+ margin-bottom: 20rpx;
+}
+
+.share-title text {
+ flex: 1;
+}
+
+.share-close {
+ width: 46rpx;
+ height: 46rpx;
+}
+
+.share-cont {
+ display: flex;
+}
+
+.share-list {
+ text-align: center;
+ flex: 2;
+ background: #fff;
+}
+
+.share-list-img {
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 50%;
+ padding: 8rpx;
+ margin: 20rpx auto;
+}
+
+.share-list-img image {
+ width: 100%;
+ height: 100%;
+}
+
+.share-list-text {
+ font-size: 28rpx;
+ color: #6b6b6b;
+ font-weight: normal;
+}
+
+.share-tips {
+ background: #f7f7f7;
+ border-radius: 30rpx;
+ display: inline-flex;
+ padding: 8rpx 20rpx;
+ font-size: 26rpx;
+ margin: 40rpx 10rpx 30rpx 20rpx;
+}
+
+.share-list-after {
+ position: relative;
+}
+
+.share-list-after::after {
+ position: absolute;
+ content: '';
+ right: 0;
+ top: 25%;
+ height: 60%;
+ bottom: 15%;
+ background: #e9e9e9;
+ width: 2rpx;
+}
diff --git a/pages/mall/mall_goods/mall_goods.js b/pages/mall/mall_goods/mall_goods.js
new file mode 100644
index 0000000..b7d36ac
--- /dev/null
+++ b/pages/mall/mall_goods/mall_goods.js
@@ -0,0 +1,182 @@
+/**
+ * 手太欠
+ * 5g获客星光网 - 商城
+ */
+
+const app = getApp();
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ type : '', //列表类型 hotCut为优惠特卖 couponCut为免费券专区
+ title : '请输入查找的关键字', //搜索关键字标题
+ sortId : '', //行业分类id
+ dataArr : [], //列表数据
+ page : {}, //分页信息
+ lodingStats : false, //加载状态
+ ordertype : '', //排序类型 price为价格 sell为销量
+ orderasc : '', //排序方式 asc为正序 desc为倒序
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ this.setData({
+ type : options.type,
+ title : options.title,
+ sortId : options.sort
+ })
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow () {
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+
+ /**
+ * 商品列表数据
+ */
+ goosInfo(page) {
+ let title = this.data.title,
+ orderasc = this.data.orderasc,
+ ordertype = this.data.ordertype
+
+ if(this.data.type == 'hotCut') {
+ wx.$api.mall.hotData({
+ title : title || '',
+ category_id : this.data.sortId || '',
+ orderasc : orderasc,
+ ordertype : ordertype,
+ page : page || '',
+ }).then(res=>{
+ let listArr = this.data.dataArr,
+ newData = []
+ if(page == 1 || page == undefined) listArr = []
+ newData = listArr.concat(res.data)
+ this.setData({
+ dataArr : newData,
+ page : res.page,
+ lodingStats : false
+ })
+ wx.stopPullDownRefresh()
+ })
+ } else if(this.data.type == 'couponCut') {
+ wx.$api.mall.freeData({
+ title : title || '',
+ category_id : this.data.sortId || '',
+ orderasc : orderasc,
+ ordertype : ordertype,
+ page : page || '',
+ }).then(res=>{
+ let listArr = this.data.dataArr,
+ newData = []
+ if(page == 1 || page == undefined) listArr = []
+ newData = listArr.concat(res.data)
+ this.setData({
+ dataArr : newData,
+ page : res.page,
+ lodingStats : false
+ })
+ wx.stopPullDownRefresh()
+ })
+ } else {
+ wx.$api.mall.lists({
+ title : title || '',
+ category_id : this.data.sortId || '',
+ orderasc : orderasc,
+ ordertype : ordertype,
+ page : page || '',
+ }).then(res=>{
+ let listArr = this.data.dataArr,
+ newData = []
+ if(page == 1 || page == undefined) listArr = []
+ newData = listArr.concat(res.data)
+ this.setData({
+ dataArr : newData,
+ page : res.page,
+ lodingStats : false
+ })
+ wx.stopPullDownRefresh()
+ })
+ }
+ },
+
+ /**
+ * 销量排序
+ */
+ orderTap (e) {
+ let type = e.currentTarget.dataset.type
+ this.setData({
+ ordertype : type,
+ })
+ if (this.data.orderasc == 'asc') {
+ this.setData({
+ orderasc : 'desc',
+ })
+ } else {
+ this.setData({
+ orderasc : 'asc',
+ })
+ }
+
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+
+ /**
+ * 综合推荐
+ */
+ emptyTap() {
+ this.setData({
+ orderasc : '',
+ ordertype : ''
+ })
+
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+
+ /**
+ * 商品本页面搜索
+ */
+ confirmTap(event) {
+ let searchvalue = event.detail.value
+ this.setData({
+ title : searchvalue
+ })
+
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+
+ /**
+ * 上拉加载
+ */
+ onReachBottom(){
+ this.setData({
+ lodingStats: true
+ })
+ let pageNumber = this.data.page.current
+ if(this.data.page.has_more){
+ pageNumber++
+ // 获取为您推荐
+ this.goosInfo(pageNumber);
+ }
+ }
+
+})
\ No newline at end of file
diff --git a/pages/mall/mall_goods/mall_goods.json b/pages/mall/mall_goods/mall_goods.json
new file mode 100644
index 0000000..c947951
--- /dev/null
+++ b/pages/mall/mall_goods/mall_goods.json
@@ -0,0 +1,5 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "商品",
+ "enablePullDownRefresh" : true
+}
\ No newline at end of file
diff --git a/pages/mall/mall_goods/mall_goods.wxml b/pages/mall/mall_goods/mall_goods.wxml
new file mode 100644
index 0000000..9852f12
--- /dev/null
+++ b/pages/mall/mall_goods/mall_goods.wxml
@@ -0,0 +1,74 @@
+
+
+
+
+
+ 综合推荐
+
+ 销量
+
+
+
+
+
+
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+ ¥{{item.prices.price}}
+
+
+ 协会: ¥{{item.prices.association}}
+
+
+
+
+ vip
+ ¥{{item.prices.vip}}
+
+ 已售{{item.sell_number}}
+
+
+
+
+
+ 加载中...
+
+
+ 没有更多了~
+
+
+
+
+
+
+
+ 暂无内容
+
\ No newline at end of file
diff --git a/pages/mall/mall_goods/mall_goods.wxss b/pages/mall/mall_goods/mall_goods.wxss
new file mode 100644
index 0000000..92c4ec6
--- /dev/null
+++ b/pages/mall/mall_goods/mall_goods.wxss
@@ -0,0 +1,155 @@
+/**
+ * 手太欠
+ * 5g获客星光网 - 商城
+ */
+
+ page {
+ background-color: #f7f7f7;
+ }
+
+/* 商城搜索 */
+.mallSearch {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ left: 0;
+ height: 120rpx;
+ box-sizing: border-box;
+ padding: 20rpx 30rpx;
+ background-color: #fff;
+ z-index: 9;
+}
+
+.mallSearch-cont {
+ background-color: #f7f7f7;
+ border-radius: 100rpx;
+ padding: 18rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ color: #999999;
+ height: 80rpx;
+ width: 100%;
+}
+
+.mallSearch-cont-icon {
+ width: 44rpx;
+ height: 44rpx;
+ margin-right: 30rpx;
+}
+
+.mallSearch-cont input {
+ width: calc(100% - 44px);
+}
+
+.mallTag {
+ position: fixed;
+ left: 0;
+ top: 110rpx;
+ width: 100%;
+ background-color: #fff;
+ padding: 40rpx;
+ box-sizing: border-box;
+ display: flex;
+}
+
+.mallTag-one {
+ width: 200rpx;
+}
+
+.mallTag-name {
+ display: flex;
+ width: 150rpx;
+}
+
+.mallTag-name image {
+ width: 30rpx;
+ height: 30rpx;
+ margin: 7rpx 10rpx;
+}
+
+.mallTag-name.active,
+.mallTag-one.active {
+ color: #d32300;
+}
+
+/* 商品 */
+
+.recommend-list {
+ overflow: hidden;
+ margin: 260rpx 20rpx 30rpx;
+}
+
+.recommend-label {
+ float: left;
+ width: calc(50% - 20rpx);
+ margin: 0 10rpx 20rpx;
+ border-radius: 10rpx;
+ overflow: hidden;
+ background-color: white ;
+}
+
+.recommend-img {
+ position: relative;
+ width: 100%;
+ padding-top: 100%;
+}
+
+.recommend-img image {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+}
+
+.recommend-cont {
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.recommend-price {
+ margin: 20rpx 0;
+ display: flex;
+ font-size: 28rpx;
+}
+
+.recommend-ruling {
+ color: #ea4e2f;
+ font-weight: 600;
+}
+
+.recommend-ruling text {
+ font-size: 24rpx;
+}
+
+.recommend-cost {
+ font-size: 24rpx;
+ color: #999;
+ margin: 2rpx 0 0 20rpx;
+}
+
+.recommend-mark {
+ background-color: #f2e4c0;
+ border-radius: 6rpx;
+ display: inline-block;
+ font-size: 24rpx;
+ overflow: hidden;
+ height: 38rpx;
+ line-height: 38rpx;
+ padding-right: 10rpx;
+}
+
+.recommend-vip {
+ display: inline-block;
+ line-height: 38rpx;
+ background-color: #333333;
+ color: #f2e4c0;
+ padding: 0 10rpx;
+}
+
+.recommend-sell {
+ float: right;
+ font-size: 24rpx;
+ line-height: 38rpx;
+ color: #aaabab;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_order/mall_order.js b/pages/mall/mall_order/mall_order.js
new file mode 100644
index 0000000..e8e3cb6
--- /dev/null
+++ b/pages/mall/mall_order/mall_order.js
@@ -0,0 +1,70 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ stateType : 'ALL', //订单类型
+ orderArr : [], //订单列表
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {},
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ if(wx.getStorageSync("token") == ""){
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+
+ // 获取订单列表
+ this.orderInfo()
+ },
+
+ /**
+ * 订单列表
+ */
+ orderInfo(){
+ wx.$api.orders.index().then(res=>{
+ console.log(res.data)
+ this.setData({
+ orderArr : res.data
+ })
+ })
+ },
+
+ /**
+ * 订单支付
+ */
+ orderPay(e){
+ let orderId = e.currentTarget.dataset.orderid
+ wx.navigateTo({
+ url: '/pages/many_pay/many_pay?orderid=' + orderId + "&type=orderPay",
+ })
+
+ },
+
+ /**
+ * 取消订单
+ */
+ orderDelete(e) {
+ let orderId = e.currentTarget.dataset.orderid
+ wx.$api.orders.cancel(orderId).then(res=>{
+ // 获取列表
+ this.orderInfo()
+ })
+ },
+})
\ No newline at end of file
diff --git a/pages/mall/mall_order/mall_order.json b/pages/mall/mall_order/mall_order.json
new file mode 100644
index 0000000..24dafe1
--- /dev/null
+++ b/pages/mall/mall_order/mall_order.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "订单列表"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_order/mall_order.wxml b/pages/mall/mall_order/mall_order.wxml
new file mode 100644
index 0000000..91d23ea
--- /dev/null
+++ b/pages/mall/mall_order/mall_order.wxml
@@ -0,0 +1,50 @@
+
+
+
+ 全部
+
+
+ 待支付
+
+
+ 待发货
+
+
+ 待收货
+
+
+ 已完成
+
+
+
+
+
+
+
+
+ {{goods.orderid}}
+
+
+
+ {{goods.state_text}}
+
+
+
+
+
+ {{item.title}}
+
+ ¥{{item.price}}
+ 共{{item.qty}}件
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_order/mall_order.wxss b/pages/mall/mall_order/mall_order.wxss
new file mode 100644
index 0000000..1cde509
--- /dev/null
+++ b/pages/mall/mall_order/mall_order.wxss
@@ -0,0 +1,158 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+page {
+ background-color: #eee;
+}
+
+/* 订单tab */
+.order-tab{
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 100%;
+ display: flex;
+ height: 80rpx;
+ line-height: 80rpx;
+ z-index: 9;
+ background: white;
+}
+
+.order-tab-item{
+ font-size: 28rpx;
+ width: 20%;
+ text-align: center;
+ border-bottom: solid 2rpx #f7f7f7;
+ color: #464854;
+ background: white;
+ position: relative;
+}
+
+.order-tab-item:after {
+ position: absolute;
+ content: '';
+ left: calc(50% - 30rpx);
+ bottom: 0;
+ background-color: transparent;
+ width: 60rpx;
+ height: 8rpx;
+ border-radius: 50rpx;
+ color: #666666;
+}
+
+.order-tab-item.active{
+ color:#000;
+ font-weight: 600;
+}
+
+.order-tab-item.active:after {
+ background-color: #2151f5;
+}
+
+/* 订单列表 */
+.order-content{
+ border-bottom: solid 100rpx transparent;
+ padding: 80rpx 0 20rpx 0;
+}
+
+.order-list {
+ background-color: white;
+ margin: 30rpx 0;
+}
+
+.order-company {
+ display: flex;
+ line-height: 50rpx;
+ margin-bottom: 20rpx;
+ padding: 20rpx 30rpx;
+ box-sizing: border-box;
+}
+
+.order-company-name {
+ font-weight: 600;
+ flex: 1;
+ display: flex;
+}
+
+.order-logo {
+ width: 50rpx;
+ height: 50rpx;
+ margin-right: 20rpx;
+}
+
+.order-arrow {
+ width: 28rpx;
+ height: 28rpx;
+ margin: 10rpx 0 10rpx 20rpx;
+}
+
+.order-company-state {
+ color: #eb532a;
+}
+
+.order-goods {
+ position: relative;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+}
+
+.order-goods-img {
+ width: 160rpx;
+ height: 160rpx;
+ border-radius: 10rpx;
+}
+
+.order-goods-text {
+ position: absolute;
+ padding-left: 220rpx;
+ padding-right: 30rpx;
+ right: 0;
+ top: 0;
+ left: 0;
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.order-goods-name {
+ height: 80rpx;
+ margin-bottom: 30rpx;
+}
+
+.order-goods-price {
+ display: flex;
+ font-size: 28rpx;
+ color: #999999;
+}
+
+.order-goods-price text {
+ flex: 1;
+ display: block;
+ font-size: 32rpx;
+ color: #000;
+}
+
+.order-footer {
+ border-top: 2rpx solid #eee;
+ margin-top: 20rpx;
+ padding: 30rpx;
+ overflow: hidden;
+}
+
+.order-footer-btn {
+ margin-left: 20rpx;
+ height: 60rpx;
+ line-height: 56rpx;
+ box-sizing: border-box;
+ border: solid 1rpx #dddddd;
+ padding: 0 20rpx;
+ font-size: 26rpx;
+ border-radius: 40rpx;
+ float: right;
+}
+
+.order-footer-btn-back {
+ border-color: #eb532a;
+ color: #eb532a;
+}
diff --git a/pages/mall/mall_order_data/mall_order_data.js b/pages/mall/mall_order_data/mall_order_data.js
new file mode 100644
index 0000000..b5eac06
--- /dev/null
+++ b/pages/mall/mall_order_data/mall_order_data.js
@@ -0,0 +1,82 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ logisticsPop: false, //物流弹出框状态
+ orderData : '', //商品详情
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ console.log(options.orderId)
+ this.orderData(options.orderId)
+ },
+
+ /**
+ * 订单详情
+ */
+ orderData(orderId){
+ wx.$api.orders.orders(orderId).then(res=>{
+ console.log(res)
+ this.setData({
+ orderData: res
+ })
+ })
+ },
+
+ /**
+ * 物流弹出
+ */
+ logisticsShow() {
+ this.setData({
+ logisticsPop: !this.data.logisticsPop
+ })
+ },
+
+ /**
+ * 物流隐藏
+ */
+ logisticsHide() {
+ this.setData({
+ logisticsPop: !this.data.logisticsPop
+ })
+ },
+
+ orderRun() {
+ wx.navigateBack({
+ delta: 1,
+ })
+ },
+
+ /**
+ * 订单支付
+ */
+ orderPay(e){
+ let orderId = e.currentTarget.dataset.orderid
+ wx.navigateTo({
+ url: '/pages/many_pay/many_pay?orderid=' + orderId + "&type=orderPay",
+ })
+ },
+
+ /**
+ * 取消订单
+ */
+ orderDelete(e) {
+ let orderId = e.currentTarget.dataset.orderid
+ wx.$api.orders.cancel(orderId).then(res=>{
+ wx.redirectTo({
+ url: '/pages/mall_order/mall_order?stateType=ALL',
+ })
+ })
+ },
+})
\ No newline at end of file
diff --git a/pages/mall/mall_order_data/mall_order_data.json b/pages/mall/mall_order_data/mall_order_data.json
new file mode 100644
index 0000000..c04b0ac
--- /dev/null
+++ b/pages/mall/mall_order_data/mall_order_data.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "订单详情"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_order_data/mall_order_data.wxml b/pages/mall/mall_order_data/mall_order_data.wxml
new file mode 100644
index 0000000..64c7e75
--- /dev/null
+++ b/pages/mall/mall_order_data/mall_order_data.wxml
@@ -0,0 +1,134 @@
+
+
+
+ {{orderData.state_text}}
+
+
+
+
+
+ {{orderData.express.name}}{{orderData.express.mobile}}
+
+
+
+ {{orderData.express.address}}
+
+
+
+
+
+ {{orderData.type_text}}
+
+
+
+
+
+ {{item.title}}
+ {{item.value}}
+ 数量:{{item.qty}}
+ ¥{{item.price}}
+
+
+
+
+
+
+ {{orderData.orderid}}
+
+
+
+ {{orderData.created_at}}
+
+
+
+ 在线支付
+
+
+
+ 商品总价
+ ¥{{orderData.amount}}
+
+
+ 运费
+ ¥{{orderData.freight}}
+
+
+
+ 需付款
+
+ ¥{{orderData.amount}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 收货地址:黑龙江省哈尔滨市测试区域测试地址123
+
+
+
+ 您的快件由【青岛】准备发往【上海】
+
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】
+
+ 您的快件由【青岛】准备发往【上海】111
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_order_data/mall_order_data.wxss b/pages/mall/mall_order_data/mall_order_data.wxss
new file mode 100644
index 0000000..0df6157
--- /dev/null
+++ b/pages/mall/mall_order_data/mall_order_data.wxss
@@ -0,0 +1,356 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+page {
+ background-color: #f1f1f1;
+}
+
+.orderData {
+ border-bottom: solid 110rpx transparent;
+}
+
+/* 订单地址 */
+.orderCont {
+ margin-top: -30rpx;
+}
+
+.orderSite {
+ background-color: white;
+ border-radius: 20rpx;
+ margin-bottom: 20rpx;
+ padding: 20rpx 0;
+}
+
+.orderSite-laebl {
+ display: flex;
+ padding: 10rpx 30rpx;
+ box-sizing: border-box;
+}
+
+.orderSite-laebl image {
+ width: 34rpx;
+ height: 34rpx;
+ margin: 4rpx 20rpx 0 0;
+}
+
+.orderSite-laeb-name {
+ font-weight: 600;
+}
+
+.orderSite-laeb-name text {
+ padding-left: 30rpx;
+}
+
+.orderSite-laeb-address {
+ font-size: 28rpx;
+ color: #666666;
+}
+
+/* 订单商品 */
+.orderGoods,
+.orderLabel {
+ background-color: white;
+ border-radius: 20rpx;
+ margin: 20rpx 0;
+}
+
+.orderGoods {
+ padding: 30rpx;
+ box-sizing: border-box;
+}
+
+.orderGoods-company {
+ display: flex;
+ line-height: 50rpx;
+ font-weight: 600;
+ margin-bottom: 40rpx;
+}
+
+.orderGoods-logo {
+ width: 50rpx;
+ height: 50rpx;
+ margin-right: 20rpx;
+}
+
+.orderGoods-arrow {
+ width: 28rpx;
+ height: 28rpx;
+ margin: 10rpx 0 10rpx 20rpx;
+}
+
+.orderGoods-goods-li {
+ position: relative;
+ border-bottom: solid 1rpx #f2f2f2;
+ min-height: 160rpx;
+ background: white;
+}
+
+.orderGoods-goods-li:last-child {
+ border-bottom: none;
+}
+
+.orderGoods-img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 200rpx;
+ width: 200rpx;
+ border-radius: 10rpx;
+ background: #f5f6fa;
+}
+
+.orderGoods-body {
+ padding-left: 240rpx;
+}
+
+.orderGoods-params {
+ font-size: 28rpx;
+ color: #999999;
+ margin-top: 10rpx;
+}
+
+.orderGoods-price {
+ color: #e92344;
+ margin-top: 20rpx;
+}
+
+/* 订单标签 */
+
+.order-total {
+ border-top: 2rpx solid #eee;
+ border-bottom: 2rpx solid #eee;
+}
+
+.order-total-li {
+ padding: 20rpx 30rpx;
+ display: flex;
+ position: relative;
+}
+
+.order-total-name {
+ flex: 1;
+}
+
+.order-total-li text {
+ color: #999;
+}
+
+.coupon-picker-red {
+ color: #ea4e2f;
+}
+
+.order-input {
+ padding: 0 30rpx 0 200rpx;
+ position: relative;
+ line-height: 80rpx;
+ min-height: 80rpx;
+}
+
+.order-input label {
+ width: 220rpx;
+ position: absolute;
+ left: 30rpx;
+ top: 0;
+ display: flex;
+ color: #666666;
+}
+
+.order-input image {
+ width: 36rpx;
+ height: 36rpx;
+ margin: 24rpx 20rpx 0 0;
+}
+
+.order-input text {
+ padding-left: 60rpx;
+ font-size: 28rpx;
+}
+
+
+/* 订单状态 */
+.orderBack {
+ background-image: linear-gradient(to left, #de3936, #ea6a32);
+ color: #fff;
+ text-align: center;
+ padding: 70rpx 0 100rpx;
+ font-size: 40rpx;
+}
+
+.orderBack image {
+ width: 40rpx;
+ height: 40rpx;
+ vertical-align: middle;
+ margin-right: 30rpx;
+}
+
+/* 底部工具栏 */
+.orderFooter {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ border-top: solid 1rpx #f2f2f2;
+ padding-top: 17rpx;
+ padding-right: 30rpx;
+ padding-left: 30rpx;
+ height: 90rpx;
+ background: white;
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: row-reverse;
+}
+
+.orderFooter-btn {
+ margin-left: 20rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ box-sizing: border-box;
+ border: solid 1rpx #747788;
+ padding: 0 20rpx;
+ font-size: 26rpx;
+ border-radius: 40rpx;
+ margin-top: 10rpx;
+}
+
+.orderFooter-btn-back {
+ border-color: #eb532a;
+ color: #eb532a;
+}
+
+
+/* 物流信息 */
+.logistics-back {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ background-color: rgba(0, 0, 0, .7);
+ z-index: 101;
+ display: none;
+}
+
+.logistics-back.active {
+ display: block;
+}
+
+.logistics-cont {
+ position: fixed;
+ width: 100%;
+ background-color: white;
+ left: 0;
+ bottom: -100%;
+ z-index: 102;
+ border-radius: 20rpx 20rpx 0 0;
+ padding: 90rpx 30rpx 30rpx;
+ box-sizing: border-box;
+ transition: .2s;
+ height: 40vh;
+}
+
+.logistics-cont.active {
+ bottom: 0;
+}
+
+.logistics-close {
+ position: absolute;
+ right: 20rpx;
+ top: 20rpx;
+ z-index: 103;
+ width: 45rpx;
+ height: 45rpx;
+}
+
+.logistics-list,
+.logistics-title {
+ position: relative;
+ padding-left: 80rpx;
+ padding-right: 20rpx;
+}
+
+.logistics-list::before,
+.logistics-title::before {
+ position: absolute;
+ left: 30rpx;
+ top: 0;
+ content: "";
+ width: 2rpx;
+ height: 100%;
+ background: #eeeeee;
+ z-index: 2;
+}
+
+.logistics-list {
+ height: calc(100% - 80rpx);
+ overflow-y: scroll;
+}
+
+.logistics-title {
+ font-size: 30rpx;
+}
+
+.logistics-label {
+ position: relative;
+ padding-top: 20rpx;
+ padding-bottom: 20rpx;
+ font-size: 26rpx;
+ color: #aeaeae;
+ border-bottom: solid 2rpx #f2f2f2;
+}
+
+.logistics-label:nth-child(1) {
+ color: #000;
+ font-weight: 600;
+ font-size: 30rpx;
+}
+
+.logistics-label::before {
+ position: absolute;
+ left: -58rpx;
+ top: calc(50% - 7rpx);
+ content: "";
+ width: 14rpx;
+ height: 14rpx;
+ border: solid 2rpx #fff;
+ background: #c1c1c1;
+ z-index: 9;
+ border-radius: 50%;
+}
+
+
+.logistics-label:nth-child(1)::before {
+ border: solid 2rpx #dd3835;
+ background: #dd3835;
+}
+
+
+.logistics-label:nth-child(1)::after {
+ position: absolute;
+ left: 0rpx;
+ top: 0;
+ content: "";
+ width: 2rpx;
+ height: calc(50% - 7rpx);
+ background: #fff;
+ z-index: 3;
+ border-radius: 50%;
+}
+
+.logistics-title-icon {
+ width: 60rpx;
+ height: 60rpx;
+ border-radius: 50%;
+ background-color: #dddddd;
+ position: absolute;
+ left: 0;
+ z-index: 102;
+ top: 0;
+}
+
+.logistics-title-icon image {
+ width: 34rpx;
+ height: 34rpx;
+ margin: 13rpx;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_order_submit/mall_order_submit.js b/pages/mall/mall_order_submit/mall_order_submit.js
new file mode 100644
index 0000000..eaaaab8
--- /dev/null
+++ b/pages/mall/mall_order_submit/mall_order_submit.js
@@ -0,0 +1,198 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ coupons : [], //优惠券列表
+ couponShow : false, //优惠券弹出状态
+ goodBuyQty : '', //商品数量
+ goodBuyId : '', //商品id
+ addressDel : '', //默认地址
+ detail : '', //商品详情
+ allShow : false, //优惠券状态
+ choiceTitle : '请选择优惠券', //优惠券标题
+ couponId : 0, //优惠券id
+ amount : 0, //商品总价格
+ freight : '0.00', //运费
+ allAmount : 0, //总共价格
+ remark : '', //备注信息
+ lists : [], //购物车列表
+ typeCart : '', //订单类型 arrCart为购物车订单
+ cartIds : '', //购物车id
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ console.log(options)
+ this.setData({
+ goodBuyQty : options.qty,
+ goodBuyId : options.skuId,
+ cartIds : options.cart_ids,
+ typeCart : options.type
+ })
+
+ // 获取订单信息
+ this.getBuyNow()
+ },
+
+ /**
+ * 订单信息
+ */
+ getBuyNow () {
+ if(this.data.typeCart == 'arrCart') {
+ wx.$api.mall.cartSystem({
+ cart_ids : this.data.cartIds
+ }).then(res=>{
+ console.log(res)
+ this.setData({
+ coupons : res.coupons,
+ addressDel : res.address,
+ lists : res.lists,
+ amount : res.total,
+ freight : res.freight
+ })
+ })
+ } else {
+ wx.$api.mall.orderSystem({
+ goods_sku_id : this.data.goodBuyId,
+ qty : this.data.goodBuyQty
+ }).then(res=>{
+ this.setData({
+ coupons : res.coupons,
+ addressDel : res.address,
+ detail : res.detail,
+ amount : res.amount,
+ freight : res.freight
+ })
+ })
+ }
+ },
+
+ /**
+ * 优惠券弹出
+ */
+ couponTap() {
+ this.setData({
+ couponShow : !this.data.couponShow
+ })
+ },
+
+ /**
+ * 优惠券关闭
+ */
+ couponHide() {
+ this.setData({
+ couponShow : !this.data.couponShow
+ })
+ },
+
+ /**
+ * 支付
+ */
+ submitOrder() {
+ if(this.data.typeCart == 'arrCart') {
+ wx.$api.mall.cartBuy({
+ cart_ids : this.data.cartIds,
+ user_coupon_id: this.data.couponId,
+ remark : this.data.remark,
+ address_id : this.data.addressDel.address_id
+ }).then(res=>{
+ console.log(res)
+ })
+ } else {
+ wx.$api.mall.orderBuy({
+ goods_sku_id : this.data.goodBuyId,
+ qty : this.data.goodBuyQty,
+ user_coupon_id: this.data.couponId,
+ remark : this.data.remark,
+ address_id : this.data.addressDel.address_id
+ }).then(res=>{
+ console.log(res.trade_no)
+ wx.$api.mall.wechat({
+ trade_no : res.trade_no
+ }).then(res=>{
+ console.log(res)
+ // let payInfo = JSON.parse(res.data)
+ // wx.requestPayment({
+ // timeStamp: payInfo.timeStamp,
+ // nonceStr : payInfo.nonceStr,
+ // package : payInfo.package,
+ // paySign : payInfo.paySign,
+ // signType : payInfo.signType,
+ // success : res=>{
+ // if(res.errMsg == "requestPayment:ok"){
+ // wx.showToast({
+ // title: '支付成功',
+ // icon : 'success'
+ // })
+ // setTimeout(()=>{
+ // wx.reLaunch({
+ // url: '/pages/coupon/coupon?type=couponPublic'
+ // })
+ // },2000)
+ // }
+ // },
+ // fail : res=>{
+ // wx.reLaunch({
+ // url: '/pages/order/order?stateType=unpay'
+ // })
+ // }
+ // })
+ })
+ })
+ }
+ },
+
+ /**
+ * 选择使用优惠券
+ */
+ detailLink(e) {
+ let index = e.currentTarget.dataset.index,
+ coupons = this.data.coupons,
+ coupon_id = ''
+
+ coupons[index].is_check = !coupons[index].is_check
+
+ if(coupons[index].is_check){
+ coupon_id = coupons[index].user_coupon_id
+ }else{
+ coupon_id = 0
+ }
+ for(let i in coupons){
+ if(i!=index){
+ coupons[i].is_check = false
+ }
+ }
+
+ console.log(coupon_id)
+
+ this.setData({
+ couponShow : false,
+ coupons : coupons,
+ choiceTitle : coupons[index].title,
+ allShow : !this.data.allShow,
+ couponId : coupon_id,
+ allAmount : Number(coupons[index].price)
+ })
+ },
+
+ /**
+ * 备注信息
+ */
+ bindTextAreaBlur(e) {
+ this.setData({
+ remark : e.detail.value
+ })
+ },
+
+})
\ No newline at end of file
diff --git a/pages/mall/mall_order_submit/mall_order_submit.json b/pages/mall/mall_order_submit/mall_order_submit.json
new file mode 100644
index 0000000..2831c5d
--- /dev/null
+++ b/pages/mall/mall_order_submit/mall_order_submit.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "商城-提交订单"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_order_submit/mall_order_submit.wxml b/pages/mall/mall_order_submit/mall_order_submit.wxml
new file mode 100644
index 0000000..cb548a1
--- /dev/null
+++ b/pages/mall/mall_order_submit/mall_order_submit.wxml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+ {{addressDel.name}}{{addressDel.mobile}}
+
+ {{addressDel.full_address}}
+
+
+
+ 添加收货地址
+
+
+
+
+
+
+
+
+
+
+ {{item.goods.title}}
+ {{index}}
+ ¥{{item.total}}×{{item.number}}
+
+
+
+
+
+
+
+ {{detail.title}}
+ {{detail.value}}
+ ¥{{detail.price}}×{{detail.qty}}
+
+
+
+
+
+
+ 配送方式
+ 快递配送
+
+
+ 运费
+ {{freight}}元
+
+
+ 订单备注:
+
+
+
+
+
+ 商品总价
+ ¥{{amount}}
+
+
+ 优惠
+
+ {{coupon_id == 0 ? '请选择优惠券' : choiceTitle}}
+
+
+
+
+ 应付总价
+ ¥{{amount - allAmount}}
+
+
+
+
+
+
+
+
+
+
+
+ 优惠
+
+
+ 可使用优惠券
+
+
+ 代金劵
+
+ ¥{{item.price}}
+
+
+ 商品代金券满{{item.full}}元可用金额可减{{item.price}}元
+
+
+
+
+ 2020.11.01 - 2020.11.10
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_order_submit/mall_order_submit.wxss b/pages/mall/mall_order_submit/mall_order_submit.wxss
new file mode 100644
index 0000000..c52cafe
--- /dev/null
+++ b/pages/mall/mall_order_submit/mall_order_submit.wxss
@@ -0,0 +1,459 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+page {
+ background-color: #f7f7f7;
+}
+
+.order-content {
+ border-bottom: solid 120rpx transparent;
+}
+
+/* 收货地址 */
+.order-address {
+ padding: 30rpx 80rpx 40rpx 30rpx;
+ position: relative;
+ background: white;
+}
+
+.order-address-back {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ vertical-align: bottom;
+}
+
+.order-address-name {
+ padding-right: 300rpx;
+ position: relative;
+ font-size: 33rpx;
+ padding-bottom: 10rpx;
+}
+
+.order-address-name text {
+ padding-right: 30rpx;
+}
+
+.order-address-text {
+ color: #464854;
+ font-size: 26rpx;
+}
+
+.arrows-right {
+ position: absolute;
+ height: 28rpx;
+ width: 28rpx;
+ right: 30rpx;
+ top: calc(50% - 19rpx);
+ top: -webkit-calc(50% - 19rpx);
+}
+
+.order-add-address {
+ text-align: center;
+ padding: 30rpx 0;
+}
+
+.order-add-address navigator {
+ display: inline-block;
+ background: #e92344;
+ color: white;
+ line-height: 60rpx;
+ padding: 0 30rpx;
+ margin-right: 20rpx;
+}
+
+.arrows-add {
+ text-align: center;
+ width: 100%;
+}
+
+/* 商品信息 */
+
+.order-goods {
+ border-top: solid 20rpx #f2f2f2;
+}
+
+.goods-goods-mall {
+ padding: 20rpx 30rpx 0 30rpx;
+ line-height: 50rpx;
+}
+
+.goods-goods-mall image {
+ width: 48rpx;
+ height: 48rpx;
+ vertical-align: middle;
+ margin-right: 15rpx;
+ margin-bottom: 2rpx;
+}
+
+.goods-goods-li {
+ padding: 20rpx 30rpx;
+ position: relative;
+ border-bottom: solid 1rpx #f2f2f2;
+ min-height: 160rpx;
+ background: white;
+}
+
+.goods-goods-li:last-child {
+ border-bottom: none;
+}
+
+.goods-img {
+ position: absolute;
+ top: 20rpx;
+ left: 30rpx;
+ height: 160rpx;
+ width: 160rpx;
+ background: #f5f6fa;
+}
+
+.goods-body {
+ padding-left: 190rpx;
+}
+
+.goods-name {
+ padding-bottom: 20rpx;
+}
+
+.goods-price {
+ color: gray;
+ display: flex;
+}
+
+.goods-qty {
+ color: #e92344;
+ font-size: 32rpx;
+ flex: 1;
+}
+
+.goods-params {
+ color: gray;
+ padding-bottom: 20rpx;
+ font-size: 28rpx;
+}
+
+/* 统计信息 */
+
+.order-total {
+ background: white;
+ border-top: solid 20rpx #f2f2f2;
+}
+
+.order-total-li {
+ padding: 20rpx 30rpx;
+ display: flex;
+ position: relative;
+}
+
+.coupon-picker-icon {
+ position: absolute;
+ height: 28rpx;
+ width: 28rpx;
+ right: 30rpx;
+ top: calc(50% - 14rpx);
+}
+
+.coupon-picker-icon {
+ position: absolute;
+ height: 28rpx;
+ width: 28rpx;
+ right: 30rpx;
+ top: calc(50% - 14rpx);
+}
+
+.coupon-picker-text {
+ text-align: right;
+ color: gray;
+ padding-right: 40rpx;
+}
+
+.coupon-picker-red {
+ color: #ea4e2f;
+}
+
+.order-total-name {
+ flex: 1;
+}
+
+.order-total-li text {
+ color: #999;
+}
+
+.order-total-textarea {
+ width: 200rpx;
+ height: 80rpx;
+}
+
+
+.order-total-li textarea {
+ line-height: 50rpx;
+ height: 100rpx;
+}
+
+
+/* 底部工具栏 */
+
+.order-footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ border-top: solid 1rpx #f2f2f2;
+ height: 100rpx;
+ line-height: 100rpx;
+ z-index: 99;
+ background: white;
+}
+
+.order-footer-total {
+ padding-right: calc(30vw + 30rpx);
+ padding-right: -webkit-calc(30vw + 30rpx);
+ padding-left: 30rpx;
+ color: #737787;
+ font-size: 28rpx;
+}
+
+.order-footer-total text {
+ color: #e92344;
+}
+
+.order-footer-total-price {
+ font-size: 32rpx;
+}
+
+.order-footer-btn[size="mini"] {
+ width: 40vw;
+ background: #eb532a;
+ color: white;
+ border-radius: 0;
+ height: 80rpx;
+ line-height: 80rpx;
+ font-size: 28rpx;
+ position: absolute;
+ top: 10rpx;
+ right: 10rpx;
+ border-radius: 50rpx;
+}
+
+.order-footer-btn:after {
+ border: none;
+}
+
+/* 选择优惠券弹出层 */
+.couponBack{
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, .5);
+ z-index: 100;
+ display: none;
+}
+
+.couponBack.active{
+ display: block;
+}
+
+.couponEject {
+ position: fixed;
+ width: 100%;
+ bottom: -100%;
+ left: 0;
+ border-radius: 30rpx 30rpx 0 0;
+ background-color: white;
+ z-index: 101;
+ transition: .2s;
+}
+
+.couponEject.active {
+ bottom: 0;
+}
+
+.couponEject-list {
+ padding: 30rpx;
+ box-sizing: border-box;
+}
+
+.couponEject-list-title {
+ margin-bottom: 30rpx;
+}
+
+.couponClose {
+ width: 40rpx;
+ height: 40rpx;
+ position: absolute;
+ top: 30rpx;
+ right: 30rpx;
+ z-index: 103;
+}
+
+.couponEject-title {
+ text-align: center;
+ width: 100%;
+ padding: 30rpx 0 10rpx;
+ font-weight: 600;
+}
+
+.couponDraw-list-label {
+ position: relative;
+ width: 100%;
+ padding-top: 32%;
+ border: 2rpx solid #eeeeee;
+ border-radius: 10rpx;
+ margin-bottom: 30rpx;
+}
+
+.couponDraw-list-label::after,
+.couponDraw-list-label::before {
+ position: absolute;
+ content: '';
+ width: 30rpx;
+ height: 30rpx;
+ border-radius: 50%;
+ background-color: white;
+ z-index: 111;
+}
+
+.couponEject-list-label::after {
+ top: -15rpx;
+ right: 160rpx;
+}
+
+.couponEject-list-label::before {
+ bottom: -15rpx;
+ right: 160rpx;
+}
+
+
+.couponDraw-list-label::after {
+ top: -15rpx;
+ left: calc(40% - 15rpx);
+}
+
+.couponDraw-list-label::before {
+ bottom: -15rpx;
+ left: calc(40% - 15rpx);
+}
+
+.couponDraw-list-tips {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 102;
+ font-size: 26rpx;
+ border-radius: 10rpx 0 10rpx 0;
+ padding: 6rpx 20rpx;
+ background-color: #fae5c2;
+ color: #9b6404;
+}
+
+.couponDraw-list-price {
+ width: 40%;
+ background-color: #eea931;
+ color: #fff;
+ position: absolute;
+ height: 100%;
+ left: 0;
+ top: 0;
+ border-radius: 10rpx 0 0 10rpx;
+ text-align: center;
+}
+
+.couponDraw-list-part {
+ position: absolute;
+ width: 100%;
+ height: 70rpx;
+ top: calc(50% - 35rpx);
+ z-index: 102;
+ text-align: center;
+ font-size: 50rpx;
+ font-weight: 600;
+}
+
+.couponDraw-list-text {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 60%;
+ padding: 10rpx 20rpx;
+ box-sizing: border-box;
+ background-color: #fff;
+ height: 100%;
+}
+
+.couponDraw-list-name text {
+ color: #999;
+ display: block;
+ font-size: 26rpx;
+ margin: 10rpx 0 5rpx;
+}
+
+.couponDraw-list-btn {
+ color: #b67c18;
+ position: absolute;
+ top: 90rpx;
+ right: 20rpx;
+ margin-bottom: 20rpx;
+}
+
+.couponDraw-list-btn image {
+ width: 40rpx;
+ height: 40rpx;
+}
+
+.couponDraw-list-time {
+ font-size: 26rpx;
+ color: #999;
+ clear: both;
+ position: absolute;
+ bottom: 20rpx;
+}
+
+.couponDraw-list-red .couponDraw-list-price {
+ background-color: #ee3158;
+}
+
+.couponDraw-list-red .couponDraw-list-tips {
+ background-color: #fac2cd;
+ color: #94001f;
+}
+
+
+.couponDraw-list-blue .couponDraw-list-price {
+ background-color: #2d6bf6;
+}
+
+.couponDraw-list-blue .couponDraw-list-tips {
+ background-color: #c0d3fc;
+ color: #2151f5;
+}
+
+.arrows-add-img {
+ width: 40rpx;
+ height: 40rpx;
+ vertical-align: middle;
+ margin: -8rpx 6rpx 0 0;
+}
+
+.addressDef, .seTup {
+ display: inline-block;
+ font-size: 24rpx;
+ border-radius: 6rpx;
+ margin-top: 10rpx;
+ color: #e92344;
+ border: 2rpx solid #e92344;
+}
+
+.addressDef {
+ padding: 0 10rpx;
+ height: 32rpx;
+ line-height: 32rpx;
+}
+
+.seTup {
+ padding: 4rpx 10rpx;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_pay/mall_pay.js b/pages/mall/mall_pay/mall_pay.js
new file mode 100644
index 0000000..825ff46
--- /dev/null
+++ b/pages/mall/mall_pay/mall_pay.js
@@ -0,0 +1,30 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+
+ },
+
+ /**
+ * 订单支付
+ */
+ payment() {
+ wx.redirectTo({
+ url: '/pages/mall_order_data/mall_order_data',
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/mall/mall_pay/mall_pay.json b/pages/mall/mall_pay/mall_pay.json
new file mode 100644
index 0000000..4b07a8f
--- /dev/null
+++ b/pages/mall/mall_pay/mall_pay.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "订单支付"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_pay/mall_pay.wxml b/pages/mall/mall_pay/mall_pay.wxml
new file mode 100644
index 0000000..5ee0586
--- /dev/null
+++ b/pages/mall/mall_pay/mall_pay.wxml
@@ -0,0 +1,41 @@
+
+
+ 订单信息
+
+
+ 订单编号
+ 454fdsf54f5d4f54sdf4d
+
+
+ 商品总价
+ ¥999.00
+
+
+ 运费
+ -¥999.00
+
+
+ 应付总价
+
+ ¥999.00
+
+
+
+
+ 支付方式
+
+
+
+
+
+ 微信支付
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_pay/mall_pay.wxss b/pages/mall/mall_pay/mall_pay.wxss
new file mode 100644
index 0000000..02c9d3b
--- /dev/null
+++ b/pages/mall/mall_pay/mall_pay.wxss
@@ -0,0 +1,116 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+page {
+ background-color: #f7f7f7;
+}
+
+.order-content {
+ border-bottom: solid 100rpx transparent;
+}
+
+/* 订单支付 */
+
+.order-title {
+ font-weight: 600;
+ padding: 30rpx;
+}
+
+.order-total {
+ background: white;
+ margin-bottom: 30rpx;
+ border-top: 2rpx solid #eee;
+ border-bottom: 2rpx solid #eee;
+}
+
+.order-total-number {
+ border-bottom: 2rpx solid #eee;
+ line-height: 54rpx;
+}
+
+.order-total-li {
+ padding: 20rpx 30rpx;
+ display: flex;
+ position: relative;
+}
+
+.order-total-name {
+ flex: 1;
+}
+
+.order-total-li text {
+ color: #999;
+}
+
+.coupon-picker-red {
+ color: #ea4e2f;
+}
+
+.order-total-textarea {
+ width: 200rpx;
+ height: 80rpx;
+}
+
+
+.order-total-li textarea {
+ line-height: 50rpx;
+ height: 100rpx;
+}
+
+
+/* 支付类型 */
+
+.payContList {
+ border-top: 2rpx solid #eee;
+ border-bottom: 2rpx solid #eee;
+ padding: 30rpx;
+ background: #fff;
+}
+
+.payContList-label {
+ height: 60rpx;
+ line-height: 60rpx;
+ display: flex;
+}
+
+.payContList-label-name {
+ flex: 1;
+ display: flex;
+}
+
+.payContList-label-img {
+ width: 60rpx;
+ height: 60rpx;
+ margin-right: 20rpx;
+}
+
+
+/* 支付按钮 */
+
+.address-footer{
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ padding-left: 30rpx;
+ padding-right: 30rpx;
+ background: white;
+ border-top: 2rpx solid #eeeeee;
+ z-index: 9;
+ height: 130rpx;
+}
+
+.address-footer text{
+ display: block;
+ width: 100%;
+ line-height: 90rpx;
+ height: 90rpx;
+ margin: 20rpx 0;
+ text-align: center;
+ background: #eb532a;
+ font-size: 30rpx;
+ color: white;
+ border-radius: 60rpx;
+}
diff --git a/pages/mall/mall_search/mall_search.js b/pages/mall/mall_search/mall_search.js
new file mode 100644
index 0000000..1672961
--- /dev/null
+++ b/pages/mall/mall_search/mall_search.js
@@ -0,0 +1,59 @@
+/**
+ * 手太欠
+ * 5g获客星光网 - 商城
+ */
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ hotkey: []
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ // 获取热门关键字数据
+ this.hotkeyInfo();
+ },
+
+ /**
+ * 热门关键字
+ */
+ hotkeyInfo () {
+ wx.$api.mall.hotkey({}).then(res=>{
+ console.log(res)
+ this.setData({
+ hotkey : res
+ })
+ })
+ },
+
+ /**
+ * 搜索
+ */
+ searchForm(e) {
+ console.log(e.detail.value.search)
+ let searchValue = e.detail.value.search
+ wx.redirectTo({
+ url: '/pages/mall_goods/mall_goods?title=' + searchValue
+ })
+ },
+
+ /**
+ * 返回上一页
+ */
+ goback(){
+ wx.navigateBack()
+ }
+})
\ No newline at end of file
diff --git a/pages/mall/mall_search/mall_search.json b/pages/mall/mall_search/mall_search.json
new file mode 100644
index 0000000..5298e09
--- /dev/null
+++ b/pages/mall/mall_search/mall_search.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "商品搜索"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_search/mall_search.wxml b/pages/mall/mall_search/mall_search.wxml
new file mode 100644
index 0000000..c4c91fb
--- /dev/null
+++ b/pages/mall/mall_search/mall_search.wxml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ 热门搜索
+
+ {{index}}
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_search/mall_search.wxss b/pages/mall/mall_search/mall_search.wxss
new file mode 100644
index 0000000..9c488e4
--- /dev/null
+++ b/pages/mall/mall_search/mall_search.wxss
@@ -0,0 +1,156 @@
+
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+/* 搜索 */
+
+.search {
+ height: 100rpx;
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 100%;
+ z-index: 999;
+ padding: 20rpx;
+ box-sizing: border-box;
+ line-height: 80rpx;
+}
+
+.search-inputs{
+ border: #ea4e2f solid 2rpx;
+ position: absolute;
+ left: 20rpx;
+ top: 20rpx;
+ border-radius: 50rpx;
+ height: 80rpx;
+ line-height: 80rpx;
+ width: calc(100% - 150rpx);
+}
+
+.search-input{
+ height: 80rpx;
+ line-height: 80rpx;
+ width: calc(100% - 150rpx);
+ padding-left: 120rpx;
+ box-sizing: border-box;
+}
+
+.search-icon{
+ width: 48rpx;
+ height: 48rpx;
+ position: absolute;
+ top: 16rpx;
+ left: 30rpx;
+}
+
+.search-btn[size="mini"]{
+ font-size: 32rpx;
+ width: 150rpx;
+ text-align: center;
+ color: #3ec28e;
+ background: transparent;
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 80rpx;
+ line-height: 80rpx;
+ font-weight: bold;
+ padding: 0;
+}
+
+.search-cancel {
+ position: absolute;
+ right: 20rpx;
+ top: 20rpx;
+ width: 90rpx;
+ text-align: right;
+ font-size: 34rpx;
+ color: #666666;
+}
+
+/* 产品列表 */
+.link-products {
+ flex-wrap: wrap;
+ padding: 112rpx 15rpx 0 15rpx;
+}
+
+.link-product {
+ background: white;
+ width: calc(50% - 20rpx);
+ box-sizing: border-box;
+ margin: 0 10rpx 20rpx 10rpx;
+ border-radius: 6rpx;
+ overflow: hidden;
+ display: inline-block;
+}
+
+.link-product-img {
+ position: relative;
+ width: 100%;
+ padding-top: 100%;
+ background: #ddd;
+}
+
+.link-product-img-src {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.link-product-text {
+ padding: 15rpx 20rpx;
+}
+
+.link-product-picer {
+ position: relative;
+ height: 52rpx;
+ line-height: 52rpx;
+ padding-right: 72rpx;
+ color: #f85d6b;
+ font-weight: bold;
+ font-size: 32rpx;
+}
+
+.link-product-card {
+ position: absolute;
+ right: 0;
+ top: 0;
+ background: #f85d6b;
+ width: 28rpx;
+ height: 28rpx;
+ padding: 12rpx;
+ border-radius: 50%;
+ z-index: 1;
+}
+
+.link-product-title {
+ height: 50rpx;
+ line-height: 50rpx;
+ margin-bottom: 15rpx;
+}
+
+
+/* 热门搜索 */
+.hot-search {
+ flex-wrap: wrap;
+ padding: 140rpx 20rpx 20rpx;
+}
+
+.hot-search-title {
+ margin-bottom: 20rpx;
+ font-weight: 600;
+}
+
+.hot-search-list navigator {
+ display: inline-block;
+ background-color: #f7f7f7;
+ border-radius: 50rpx;
+ margin: 10rpx;
+ padding: 0 30rpx;
+ line-height: 58rpx;
+ font-size: 26rpx;
+}
\ No newline at end of file
diff --git a/pages/mall/mall_video/mall_video.js b/pages/mall/mall_video/mall_video.js
new file mode 100644
index 0000000..8929ac4
--- /dev/null
+++ b/pages/mall/mall_video/mall_video.js
@@ -0,0 +1,66 @@
+// pages/mall_video/mall_video.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/mall/mall_video/mall_video.json b/pages/mall/mall_video/mall_video.json
new file mode 100644
index 0000000..67ea6cc
--- /dev/null
+++ b/pages/mall/mall_video/mall_video.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "商品直播"
+}
\ No newline at end of file
diff --git a/pages/mall/mall_video/mall_video.wxml b/pages/mall/mall_video/mall_video.wxml
new file mode 100644
index 0000000..c972959
--- /dev/null
+++ b/pages/mall/mall_video/mall_video.wxml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+ 正在直播
+
+
+
+ 风光雪月跨年季
+
+
+
+ 张慢慢呀
+
+
+
+ 开播时间:2020-12-22 19:00:00
+
+
+
+
+
+
+
+
+
+ 已结束
+
+
+
+ 风光雪月跨年季
+
+
+
+ 张慢慢呀
+
+
+
+ 开播时间:2020-12-22 19:00:00
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mall/mall_video/mall_video.wxss b/pages/mall/mall_video/mall_video.wxss
new file mode 100644
index 0000000..b8bbf17
--- /dev/null
+++ b/pages/mall/mall_video/mall_video.wxss
@@ -0,0 +1,118 @@
+page {
+ background-color: #f7f7f7;
+}
+
+/* 列表 */
+.videoList {
+ overflow: hidden;
+ margin: 20rpx;
+}
+
+.videoList-label {
+ width: 100%;
+ background-color: #fff;
+ overflow: hidden;
+ margin-bottom: 20rpx;
+ box-shadow: 0 0 10rpx rgba(0, 0, 0, .05);
+}
+
+.videoList-img {
+ position: relative;
+ width: 100%;
+ padding-top: 80%;
+}
+
+.videoList-img .videoList-cover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.videoList-tips {
+ position: absolute;
+ top: 20rpx;
+ left: 20rpx;
+ font-size: 24rpx;
+}
+
+.videoList-tips-img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: #f2a861;
+ width: 58rpx;
+ height: 58rpx;
+ padding: 14rpx;
+ box-sizing: border-box;
+ border-radius: 8rpx;
+ overflow: hidden;
+}
+
+.videoList-tips-text {
+ position: absolute;
+ left: 56rpx;
+ top: 5rpx;
+ height: 48rpx;
+ line-height: 48rpx;
+ background-image: linear-gradient(to right, #f5813d, #e9c140);
+ width: 110rpx;
+ color: #fff;
+ border-radius: 0 8rpx 8rpx 0;
+ opacity: .8;
+ text-align: center;
+}
+
+.videoList-tips-end .videoList-tips-img {
+ background: #606564;
+}
+
+.videoList-tips-end .videoList-tips-text {
+ background-image: linear-gradient(to right, #25292d, #847f7c);
+}
+
+.videoList-tips image {
+ width: 100%;
+ height: 100%;
+}
+
+.videoList-cont {
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.videoList-title {
+ font-size: 34rpx;
+}
+
+.videoList-user {
+ display: flex;
+ line-height: 50rpx;
+ font-size: 28rpx;
+ margin-top: 20rpx;
+ color: #999;
+}
+
+.videoList-head {
+ flex: 1;
+ width: 150rpx;
+ display: flex;
+}
+
+.videoList-head text {
+ display: inline-block;
+ width: calc(100% - 50rpx);
+}
+
+.videoList-time {
+ width: calc(100% - 150rpx);
+ display: flex;
+}
+
+.videoList-head image,
+.videoList-time image {
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 10rpx;
+}
\ No newline at end of file
diff --git a/pages/ticket/goods/goods.js b/pages/ticket/goods/goods.js
new file mode 100644
index 0000000..dd4efa1
--- /dev/null
+++ b/pages/ticket/goods/goods.js
@@ -0,0 +1,121 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ user_coupon_id : '', //券id
+ title : '', //搜索关键字标题
+ dataArr : [],
+ page : {}, //分页信息
+ lodingStats : false, //加载状态
+ ordertype : '', //排序类型 price为价格 sell为销量
+ orderasc : '', //排序方式 asc为正序 desc为倒序
+ total_page : '',
+ current : '',
+ nomore :false
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ this.setData({
+ user_coupon_id: options.user_coupon_id,
+
+ })
+ this.goosInfo()
+ },
+
+ goosInfo() {
+ if (wx.getStorageSync("token") == "") {
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+ let orderasc = this.data.orderasc,
+ ordertype = this.data.ordertype
+ wx.$api.mall.couponsGoods({
+ user_coupon_id : this.data.user_coupon_id,
+ title : this.data.title || '',
+ page : this.data.page || '',
+ orderasc : orderasc,
+ ordertype : ordertype,
+ }).then(res => {
+ this.setData({
+ dataArr : res.data,
+ total_page: res.page.total_page,
+ current : res.page.current,
+ })
+
+ })
+ },
+ confirmTap(event) {
+ let searchvalue = event.detail.value
+ this.setData({
+ title: searchvalue
+ })
+
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+ /**
+ * 综合推荐
+ */
+ emptyTap() {
+ this.setData({
+ orderasc : '',
+ ordertype : ''
+ })
+
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+ /**
+ * 销量排序
+ */
+ orderTap(e) {
+ let type = e.currentTarget.dataset.type
+ this.setData({
+ ordertype: type,
+ })
+ if (this.data.orderasc == 'asc') {
+ this.setData({
+ orderasc: 'desc',
+ })
+ } else {
+ this.setData({
+ orderasc: 'asc',
+ })
+ }
+
+ // 拉取商品列表数据
+ this.goosInfo();
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ let total_page = this.data.total_page;
+ let current = parseInt(this.data.current) + 1;
+ this.setData({
+ page: current
+ })
+ if (current > total_page) {
+ this.setData({
+ nomore: true
+ })
+ } else {
+ this.goosInfo();
+ }
+ }
+ })
\ No newline at end of file
diff --git a/pages/ticket/goods/goods.json b/pages/ticket/goods/goods.json
new file mode 100644
index 0000000..e97a873
--- /dev/null
+++ b/pages/ticket/goods/goods.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText": "商品"
+}
\ No newline at end of file
diff --git a/pages/ticket/goods/goods.wxml b/pages/ticket/goods/goods.wxml
new file mode 100644
index 0000000..39a93b4
--- /dev/null
+++ b/pages/ticket/goods/goods.wxml
@@ -0,0 +1,68 @@
+
+
+
+
+
+ 综合推荐
+
+ 销量
+
+
+
+
+
+
+
+ 价格
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+ ¥{{item.prices.price}}
+
+
+ 协会: ¥{{item.prices.association}}
+
+
+
+
+ vip
+ ¥{{item.prices.vip}}
+
+ 已售{{item.sell_number}}
+
+
+
+
+
+
+
+
+
+ 暂无内容
+
+没有更多了~
\ No newline at end of file
diff --git a/pages/ticket/goods/goods.wxss b/pages/ticket/goods/goods.wxss
new file mode 100644
index 0000000..4e31ef1
--- /dev/null
+++ b/pages/ticket/goods/goods.wxss
@@ -0,0 +1,165 @@
+/**
+
+ * 优惠券可用商品
+ */
+
+ page {
+ background-color: #f7f7f7;
+ }
+
+ /* 商城搜索 */
+ .mallSearch {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ left: 0;
+ height: 120rpx;
+ box-sizing: border-box;
+ padding: 20rpx 30rpx;
+ background-color: #fff;
+ z-index: 9;
+ }
+
+ .mallSearch-cont {
+ background-color: #f7f7f7;
+ border-radius: 100rpx;
+ padding: 18rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ color: #999999;
+ height: 80rpx;
+ width: 100%;
+ }
+
+ .mallSearch-cont-icon {
+ width: 44rpx;
+ height: 44rpx;
+ margin-right: 30rpx;
+ }
+
+ .mallSearch-cont input {
+ width: calc(100% - 44px);
+ }
+
+ .mallTag {
+ position: fixed;
+ left: 0;
+ top: 110rpx;
+ width: 100%;
+ background-color: #fff;
+ padding: 40rpx;
+ box-sizing: border-box;
+ display: flex;
+ z-index: 9;
+ }
+
+ .mallTag-one {
+ width: 200rpx;
+ }
+
+ .mallTag-name {
+ display: flex;
+ width: 150rpx;
+ }
+
+ .mallTag-name image {
+ width: 30rpx;
+ height: 30rpx;
+ margin: 7rpx 10rpx;
+ }
+
+ .mallTag-name.active,
+ .mallTag-one.active {
+ color: #d32300;
+ }
+
+ /* 商品 */
+
+ .recommend-list {
+ overflow: hidden;
+ margin: 260rpx 20rpx 30rpx;
+ }
+
+ .recommend-label {
+ float: left;
+ width: calc(50% - 20rpx);
+ margin: 0 10rpx 20rpx;
+ border-radius: 10rpx;
+ overflow: hidden;
+ background-color: white ;
+ }
+
+ .recommend-img {
+ position: relative;
+ width: 100%;
+ padding-top: 100%;
+ }
+
+ .recommend-img image {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ }
+
+ .recommend-cont {
+ padding: 20rpx;
+ box-sizing: border-box;
+ }
+
+ .recommend-price {
+ margin: 20rpx 0;
+ display: flex;
+ font-size: 28rpx;
+ }
+
+ .recommend-ruling {
+ color: #ea4e2f;
+ font-weight: 600;
+ }
+
+ .recommend-ruling text {
+ font-size: 24rpx;
+ }
+
+ .recommend-cost {
+ font-size: 24rpx;
+ color: #999;
+ margin: 2rpx 0 0 20rpx;
+ }
+
+ .recommend-mark {
+ background-color: #f2e4c0;
+ border-radius: 6rpx;
+ display: inline-block;
+ font-size: 24rpx;
+ overflow: hidden;
+ height: 38rpx;
+ line-height: 38rpx;
+ padding-right: 10rpx;
+ }
+
+ .recommend-vip {
+ display: inline-block;
+ line-height: 38rpx;
+ background-color: #333333;
+ color: #f2e4c0;
+ padding: 0 10rpx;
+ }
+
+ .recommend-sell {
+ float: right;
+ font-size: 24rpx;
+ line-height: 38rpx;
+ color: #aaabab;
+ }
+ .nomore {
+ width: 100%;
+ height: 60rpx;
+ line-height: 60rpx;
+ text-align: center;
+ color: #999;
+ margin-bottom: 20rpx;
+ font-size: 28rpx;
+ }
\ No newline at end of file
diff --git a/pages/ticket/index.js b/pages/ticket/index.js
index f0f0b00..020a5a8 100644
--- a/pages/ticket/index.js
+++ b/pages/ticket/index.js
@@ -1,25 +1,41 @@
-// pages/ticket/index.js
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
-
- },
-
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
-
- },
-
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
-
+ couponList : [],
+ couponMenu : [
+ {
+ type: 'all',
+ text: '全部'
+ },
+ {
+ type: 1,
+ text: '免费券'
+ },
+ {
+ type: 2,
+ text: '代金券'
+ },
+ {
+ type: 3,
+ text: '提货卡'
+ }
+ ],
+ currentTab : 0,
+ type :'',
+ total_page :'',
+ current :'',
+ page :'',
+ default :'',
+ nomore : false
},
/**
@@ -27,40 +43,85 @@ Page({
*/
onShow: function () {
+ this.couponInfo();
},
+ couponInfo() {
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
+ wx.$api.mall.coupon({
+ type: this.data.type || '',
+ page: this.data.page || ''
+ } ).then(res => {
+ console.log(res)
+ let newrcoupon = res.data;
+ this.setData({
+ couponList: this.data.couponList.concat(newrcoupon), //优惠券数组
+ total_page:res.page.total_page,
+ current:res.page.current,
+ })
+ if(this.data.couponList.concat(newrcoupon).length==0){
+ this.setData({
+ default:true
+ })
+ }else{
+ this.setData({
+ default:''
+ })
+ }
+ })
},
-
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
-
+ couponChange(e) {
+ let cur = e.target.dataset.current;
+ let type = e.target.dataset.type;
+ this.setData({
+ currentTab: cur,
+ type:type,
+ page:'',
+ couponList:[],
+ nomore: false
+ })
+ this.couponInfo();
},
-
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
-
+ receive(e) {
+ if (wx.getStorageSync("token") == "") {
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+ console.log('e', e)
+ let coupon_id = e.target.dataset.id;
+ wx.$api.mall.grant({
+ coupon_id: coupon_id
+ }).then(res => {
+ console.log(res)
+ wx.showToast({
+ title: res,
+ icon : 'none'
+ })
+ })
+ },
+ linkMy(){
+ wx.navigateTo({
+ url: '/pages/user_coupon/user_coupon'
+ })
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
-
- },
-
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
-
+ let total_page = this.data.total_page;
+ let current = parseInt(this.data.current) + 1;
+ this.setData({
+ page: current
+ })
+ if(current > total_page){
+ this.setData({
+ nomore: true
+ })
+ }else{
+ this.couponInfo();
+ }
}
})
\ No newline at end of file
diff --git a/pages/ticket/index.json b/pages/ticket/index.json
index 8835af0..46750b6 100644
--- a/pages/ticket/index.json
+++ b/pages/ticket/index.json
@@ -1,3 +1,4 @@
{
- "usingComponents": {}
+ "usingComponents" : {},
+ "navigationBarTitleText" : "优惠"
}
\ No newline at end of file
diff --git a/pages/ticket/index.wxml b/pages/ticket/index.wxml
index 82545bb..e754f52 100644
--- a/pages/ticket/index.wxml
+++ b/pages/ticket/index.wxml
@@ -1,2 +1,89 @@
-
-pages/ticket/index.wxml
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 优惠券
+
+ 我的卡券
+
+
+
+ {{item.text}}
+
+
+
+
+
+ 暂无优惠券
+
+
+
+
+
+
+ {{item.type_text}}
+
+
+
+
+
+
+
+ {{item.title}}{{item.whole}}{{item.way}}
+
+ 立即领取
+
+
+
+
+
+ {{item.type_text}}
+
+
+
+ ¥{{item.price}}
+
+
+ {{item.title}}{{item.whole}}{{item.way}}
+
+ 立即领取
+
+
+
+
+ {{item.type_text}}
+
+
+
+
+
+
+
+ {{item.title}}{{item.whole}}{{item.way}}
+
+ 立即领取
+
+
+
+ 没有更多了~
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/ticket/index.wxss b/pages/ticket/index.wxss
index 2d42574..cae3d14 100644
--- a/pages/ticket/index.wxss
+++ b/pages/ticket/index.wxss
@@ -1 +1,302 @@
-/* pages/ticket/index.wxss */
\ No newline at end of file
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+ .coupon {
+ margin: 0 20rpx;
+}
+
+/* 轮播图 */
+.banner {
+ position: relative;
+ padding-top: 50%;
+ width: 100%;
+ background: white;
+ border-radius: 10rpx;
+ overflow: hidden;
+ margin: 30rpx 0;
+}
+
+.banner-swiper {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.banner-img {
+ width: 100%;
+ height: 100%;
+ vertical-align: top;
+}
+
+/* 优惠券列表 */
+.couponTitle {
+ display: flex;
+}
+
+.couponTitle text {
+ flex: 1;
+ display: block;
+ font-weight: 600;
+}
+
+.couponTitle-more {
+ display: flex;
+ color: #666666;
+}
+
+.couponTitle-more image {
+ width: 30rpx;
+ height: 30rpx;
+ margin: 6rpx 0 0 10rpx;
+}
+
+.couponLabel {
+ /* white-space: nowrap; */
+ margin: 20rpx -15rpx;
+ display: flex;
+}
+
+.couponLabel text {
+ display: inline-block;
+ flex: auto;
+ font-size: 28rpx;
+ background-color: #e6e8f0;
+ line-height: 60rpx;
+ padding: 0 30rpx;
+ border-radius: 40rpx;
+ width: 90rpx;
+ margin: 15rpx;
+ text-align: center;
+}
+
+.couponLabel text.active {
+ background-color: #2151f5;
+ color: #fff;
+}
+
+.couponEject-list-label {
+ position: relative;
+ width: 100%;
+ padding-top: 32%;
+ margin-bottom: 30rpx;
+}
+
+.couponEject-list-label::after,
+.couponEject-list-label::before {
+ position: absolute;
+ content: '';
+ width: 30rpx;
+ height: 30rpx;
+ border-radius: 50%;
+ background-color: white;
+ z-index: 111;
+}
+
+.couponEject-list-label::after {
+ top: -15rpx;
+ right: 160rpx;
+}
+
+.couponEject-list-label::before {
+ bottom: -15rpx;
+ right: 160rpx;
+}
+
+.couponEject-list-title {
+ margin-bottom: 30rpx;
+}
+
+.couponEject-list-back {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ border-radius: 20rpx;
+}
+
+.couponEject-list-tips {
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: #c0d3fc;
+ color: #2151f5;
+ z-index: 102;
+ font-size: 26rpx;
+ border-radius: 10rpx 0 10rpx 0;
+ padding: 6rpx 20rpx;
+}
+
+.couponEject-list-cont {
+ z-index: 102;
+ position: absolute;
+ top: calc(50% - 70rpx);
+ left: 0;
+ right: 0;
+ color: #fff;
+ display: flex;
+ height: 140rpx;
+}
+
+.couponEject-list-left {
+ width: calc(100% - 200rpx);
+ display: flex;
+ margin-right: 40rpx;
+}
+
+.couponEject-list-price {
+ position: relative;
+ width: 45%;
+ height: 140rpx;
+
+}
+
+.couponEject-list-price2 {
+ position: relative;
+ width: 45%;
+ height: 140rpx;
+ font-size: 50rpx;
+ text-align: center;
+ font-weight: 600;
+ line-height: 140rpx;
+}
+
+.coupon-icon {
+ height: 120rpx;
+ margin-top: 10rpx;
+ margin-left: calc(50% - 60rpx);
+ width: 120rpx;
+}
+
+.couponEject-list-price::after {
+ position: absolute;
+ content: '';
+ right: 0;
+ top: 20%;
+ width: 2rpx;
+ height: 60%;
+ background-color: rgba(255, 255, 255, .5);
+}
+
+.couponEject-list-price2::after {
+ position: absolute;
+ content: '';
+ right: 0;
+ top: 20%;
+ width: 2rpx;
+ height: 60%;
+ background-color: rgba(255, 255, 255, .5);
+}
+
+.couponEject-list-price text {
+ font-size: 28rpx;
+ font-weight: normal;
+}
+
+.couponEject-list-name {
+ text-align: center;
+ width: 55%;
+}
+
+.couponEject-list-name text {
+ font-size: 26rpx;
+ display: block;
+ margin-top: 10rpx;
+ opacity: .7;
+}
+
+.couponEject-list-btn {
+ width: 140rpx;
+ color: #2d6bf6;
+ background-color: #fff;
+ border-radius: 50rpx;
+ text-align: center;
+ height: 56rpx;
+ line-height: 56rpx;
+ font-size: 28rpx;
+ box-shadow: 0 0 10rpx rgba(0, 50, 61, .2);
+ margin-top: 50rpx;
+}
+
+.couponEject-list-line {
+ position: absolute;
+ width: 0;
+ height: 100%;
+ content: '';
+ border: 2rpx dotted #fff;
+ right: 175rpx;
+ top: 0;
+ z-index: 102;
+}
+
+.couponEject-list-blue {
+ height: 140rpx;
+ top: calc(50% - 70rpx);
+}
+
+.couponEject-list-blue .couponEject-list-price {
+ line-height: 140rpx;
+}
+
+.couponEject-list-blue .couponEject-list-price::after {
+ height: 60%;
+ top: 20%;
+}
+
+.couponEject-list-blue .couponEject-list-btn {
+ margin-top: 50rpx;
+}
+
+
+.couponEject-list-tips-red {
+ background-color: #fac2cd;
+ color: #ae1635;
+}
+
+.couponEject-list-red {
+ color: #f16d83;
+}
+
+.couponEject-list-tips-yellow {
+ background-color: #fae5c2;
+ color: #bf7b06;
+}
+
+.couponEject-list-yellow {
+ color: #b67c18;
+}
+
+.price-tips {
+ font-size: 20rpx;
+}
+
+.coupon-null {
+ width: 100%;
+ padding : 20% 0;
+ text-align: center;
+
+}
+
+.coupon-null image {
+ width: 300rpx;
+}
+
+.coupon-text {
+ width: 100%;
+ text-align: center;
+ margin-top: 50rpx;
+ color: #666;
+}
+.nomore {
+ width: 100%;
+ height: 60rpx;
+ line-height: 60rpx;
+ text-align: center;
+ color: #999;
+ margin-bottom: 20rpx;
+ font-size: 28rpx;
+}
\ No newline at end of file
diff --git a/pages/user/index.js b/pages/user/index.js
index aa4d173..6547a73 100644
--- a/pages/user/index.js
+++ b/pages/user/index.js
@@ -1,4 +1,4 @@
-// pages/user/index.js
+// pages/user/user.js
Page({
/**
diff --git a/pages/user/index.json b/pages/user/index.json
index 8835af0..e6c9b1d 100644
--- a/pages/user/index.json
+++ b/pages/user/index.json
@@ -1,3 +1,6 @@
{
- "usingComponents": {}
+ "usingComponents" : {},
+ "navigationBarTitleText" : "个人中心",
+ "navigationBarBackgroundColor" : "#2e81fc",
+ "navigationBarTextStyle" : "white"
}
\ No newline at end of file
diff --git a/pages/user/index.wxml b/pages/user/index.wxml
index 753ccb2..57b9b78 100644
--- a/pages/user/index.wxml
+++ b/pages/user/index.wxml
@@ -1,2 +1,112 @@
-
-pages/user/index.wxml
+
+
+
+
+ 艾米家的傻钢^
+ 游客
+
+
+
+
+
+ 89
+ 钱包
+
+
+ 5
+ 关注
+
+
+ 125
+ 团队
+
+
+
+
+
+ 升级VIP会员 享会员特权
+
+
+
+ 立即开通
+
+
+
+
+
+
+
+
+
+ 我的卡券
+
+
+
+
+
+ 我的订单
+
+
+
+
+
+ 分享海报
+
+
+
+
+
+ 更多服务
+
+
+
+
+
+
+ 活动参与
+
+
+
+
+
+ 项目预购
+
+
+
+
+ 2
+
+ 我的购物车
+
+
+
+
+
+ 客服服务
+
+
+
+
+
+ 收货地址
+
+
+
+
+
+ 项目关注
+
+
+
+
+
+ 区块链证书
+
+
+
+
+
+ 设置
+
+
+
\ No newline at end of file
diff --git a/pages/user/index.wxss b/pages/user/index.wxss
index ea787be..4ab7aba 100644
--- a/pages/user/index.wxss
+++ b/pages/user/index.wxss
@@ -1 +1,219 @@
-/* pages/user/index.wxss */
\ No newline at end of file
+/*
+ * 手太欠
+ * 企获客商城模块
+ */
+
+page {
+ background-color: #e9e9e9;
+}
+
+/* 个人中心头部 */
+.userTop {
+ background-color: #2e81fc;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ color: #fff;
+}
+
+.userTop-head {
+ display: flex;
+ padding: 30rpx;
+}
+
+.userTop-name {
+ flex: 1;
+ font-size: 40rpx;
+ font-weight: 600;
+ margin-top: 20rpx;
+}
+
+.userTop-name text {
+ font-size: 28rpx;
+ border: 2rpx #fff solid;
+ border-radius: 20rpx;
+ padding: 0 20rpx;
+ line-height: 40rpx;
+ display: inline-block;
+ margin-left: 10rpx;
+}
+
+.userTop-img {
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 50%;
+}
+
+.userTop-nav {
+ display: flex;
+}
+
+.userTop-label {
+ flex: 3;
+ text-align: center;
+ font-size: 28rpx;
+}
+
+.userTop-label text {
+ display: block;
+ font-size: 42rpx;
+}
+
+.userTop-vip {
+ background-image: linear-gradient(to left, #1b2653, #354273);
+ border-radius: 20rpx 20rpx 0 0;
+ padding: 25rpx;
+ box-sizing: border-box;
+ margin-top: 30rpx;
+}
+
+.userTop-vip,
+.userTop-text,
+.userTop-btn {
+ display: flex;
+}
+
+.userTop-text {
+ flex: 1;
+ line-height: 60rpx;
+ font-size: 30rpx;
+}
+
+.userTop-text image {
+ width: 54rpx;
+ height: 54rpx;
+ margin-right: 20rpx;
+}
+
+.userTop-btn {
+ background-color: #fedd7c;
+ color: #313c6d;
+ border-radius: 50rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ padding-right: 20rpx;
+ font-size: 26rpx;
+}
+
+.userTop-btn image {
+ width: 30rpx;
+ height: 30rpx;
+ margin: 15rpx 8rpx 15rpx 20rpx;
+}
+
+.userNav {
+ padding: 30rpx 0;
+ box-sizing: border-box;
+ border-radius: 30rpx;
+ background-color: white;
+ overflow: hidden;
+ margin: 30rpx 20rpx;
+}
+
+.userNav-label {
+ width: 33.33%;
+ float: left;
+ text-align: center;
+ font-weight: 600;
+ color: #353535;
+ font-size: 30rpx;
+}
+
+.userNav-label-img {
+ width: 104rpx;
+ height: 104rpx;
+ border-radius: 40rpx;
+ margin: 0 auto 20rpx;
+ color: #fff;
+ padding: 25rpx;
+ box-sizing: border-box;
+}
+
+.userNav-label:nth-child(1) .userNav-label-img {
+ background-image: linear-gradient(to top, #91d634, #75c470);
+}
+
+.userNav-label:nth-child(2) .userNav-label-img {
+ background-image: linear-gradient(to top, #04d2c1, #3caff1);
+}
+
+.userNav-label:nth-child(3) .userNav-label-img {
+ background-image: linear-gradient(to top, #ff686c, #ff0d76);
+}
+
+.userNav-label image {
+ width: 100%;
+ height: 100%;
+ display: block;
+
+}
+
+/* 更多服务 */
+.userTool {
+ background-color: white;
+ border-radius: 20rpx;
+ margin: 0 20rpx;
+ padding: 30rpx 20rpx 0;
+ box-sizing: border-box;
+}
+
+.userTool-title {
+ position: relative;
+ padding-left: 30rpx;
+ font-weight: 600;
+ margin-bottom: 30rpx;
+}
+
+.userTool-title::after {
+ position: absolute;
+ content: '';
+ background-color: #066aff;
+ left: 0;
+ top: 15%;
+ width: 8rpx;
+ height: 70%;
+ border-radius: 20rpx;
+}
+
+.userTool-list {
+ overflow: hidden;
+ padding-top: 20rpx;
+ font-size: 30rpx;
+}
+
+.userTool-label {
+ width: 25%;
+ float: left;
+ text-align: center;
+ margin-bottom: 50rpx;
+}
+
+.userTool-label-img {
+ position: relative;
+ width: 94rpx;
+ height: 94rpx;
+ margin: 0 auto;
+ margin-bottom: 15rpx;
+}
+
+.userTool-label-img image {
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ width: 100%;
+}
+
+.userTool-label-tips {
+ position: absolute;
+ top: -5rpx;
+ right: -5rpx;
+ background-color: #ffffff;
+ border: 2rpx solid #ff106e;
+ color: #ff106e;
+ font-size: 24rpx;
+ border-radius: 50%;
+ width: 32rpx;
+ height: 32rpx;
+ line-height: 32rpx;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/pages/user/user_coupon/user_coupon.js b/pages/user/user_coupon/user_coupon.js
new file mode 100644
index 0000000..1387123
--- /dev/null
+++ b/pages/user/user_coupon/user_coupon.js
@@ -0,0 +1,164 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ stateType : 'ALL', //卡券分类
+ couponList : [],
+ status : 1,
+ type : '',
+ statusTab : 0,
+ currentTab : 0,
+ statusMenu : [
+ {
+ type: 1,
+ text: '未使用'
+ },
+ {
+ type: 2,
+ text: '已使用'
+ },
+ {
+ type: 3,
+ text: '已失效'
+ }
+ ],
+ couponMenu : [
+ {
+ type: '',
+ text: '全部'
+ },
+ {
+ type: 1,
+ text: '免费券'
+ },
+ {
+ type: 2,
+ text: '代金券'
+ },
+ {
+ type: 3,
+ text: '提货卡'
+ }
+ ],
+ coupontype : '',
+ couponstatus: '1',
+ total_page :'',
+ current :'',
+ page :'',
+ default :'',
+ nomore :false
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ this.couponInfo()
+ },
+
+ couponInfo() {
+ if (wx.getStorageSync("token") == "") {
+ wx.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+ wx.$api.mall.coupons({
+ type : this.data.coupontype || '',
+ status : this.data.couponstatus || '',
+ page : this.data.page || ''
+ }).then(res => {
+ let newrcoupon = res.data;
+ this.setData({
+ couponList: this.data.couponList.concat(newrcoupon), //优惠券数组
+ total_page:res.page.total_page,
+ current:res.page.current,
+ })
+ if(this.data.couponList.concat(newrcoupon).length==0){
+ this.setData({
+ default:true
+ })
+ }else{
+ this.setData({
+ default:''
+ })
+ }
+ })
+ },
+ statusChange(e) {
+ let cur = e.target.dataset.current;
+ let couponstatus = e.target.dataset.type;
+ this.setData({
+ statusTab : cur,
+ couponstatus:couponstatus,
+ coupontype :'',
+ page :'',
+ couponList :[],
+ currentTab :0,
+ nomore :false
+ })
+ this.couponInfo()
+ },
+
+ couponChange(e){
+ let cur = e.target.dataset.current;
+ let type = e.target.dataset.type;
+ this.setData({
+ currentTab : cur,
+ coupontype :type,
+ page :'',
+ couponList :[],
+ nomore :false
+ })
+ this.couponInfo();
+ },
+ detailLink(e){
+ let verification = e.target.dataset.verification;
+ let itemtype = e.target.dataset.itemtype;
+ let couponid = e.target.dataset.couponid;
+ if(itemtype==1){
+ var type='free'
+ }else if(itemtype==2){
+ var type='cash'
+ }else if(itemtype==3){
+ var type='rebate'
+ }
+ if(verification==2){
+ wx.navigateTo({
+ url: '/pages/user_coupon_data/user_coupon_data?user_coupon_id='+couponid+'&type='+type
+ })
+ }else if(verification==1){
+ wx.navigateTo({
+ url: '/pages/coupon_goods/coupon_goods?user_coupon_id='+couponid
+ })
+ }
+
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+ let total_page = this.data.total_page;
+ let current = parseInt(this.data.current) + 1;
+ this.setData({
+ page: current
+ })
+ if(current > total_page){
+ this.setData({
+ nomore: true
+ })
+ }else{
+ this.couponInfo();
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/user/user_coupon/user_coupon.json b/pages/user/user_coupon/user_coupon.json
new file mode 100644
index 0000000..67031a0
--- /dev/null
+++ b/pages/user/user_coupon/user_coupon.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "我的卡券"
+}
\ No newline at end of file
diff --git a/pages/user/user_coupon/user_coupon.wxml b/pages/user/user_coupon/user_coupon.wxml
new file mode 100644
index 0000000..cb636c3
--- /dev/null
+++ b/pages/user/user_coupon/user_coupon.wxml
@@ -0,0 +1,107 @@
+
+
+ {{item.text}}
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+ 暂无优惠券
+
+
+
+
+
+ 免费劵
+
+
+
+
+
+ {{item.title}}{{item.whole}}{{item.way}}
+
+ 去使用
+ 查看券码
+
+
+ 已使用
+
+
+ 已失效
+
+ {{item.time}}
+
+
+
+
+
+ 代金券
+
+ ¥{{item.price}}
+
+
+
+ {{item.title}}{{item.whole}}{{item.way}}
+
+ 去使用
+ 查看券码
+
+
+ 已使用
+
+
+ 已失效
+
+ {{item.time}}
+
+
+
+
+
+ 提货卡
+
+
+
+
+
+ {{item.title}}{{item.whole}}{{item.way}}
+
+ 去使用
+ 查看券码
+
+
+
+ 已使用
+
+
+ 已失效
+
+ {{item.time}}
+
+
+
+
+ 没有更多了~
+
+
\ No newline at end of file
diff --git a/pages/user/user_coupon/user_coupon.wxss b/pages/user/user_coupon/user_coupon.wxss
new file mode 100644
index 0000000..b473dc6
--- /dev/null
+++ b/pages/user/user_coupon/user_coupon.wxss
@@ -0,0 +1,270 @@
+page {
+ background-color: #f7f7f7;
+}
+
+/* 卡券分类tab */
+.coupon-tab,
+.couponCut {
+ position: fixed;
+ left: 0;
+ width: 100%;
+ display: flex;
+ z-index: 112;
+}
+
+.coupon-tab {
+ top: 0;
+ height: 80rpx;
+ line-height: 80rpx;
+ background: white;
+}
+
+.coupon-tab-item {
+ width: 33.33%;
+ text-align: center;
+ border-bottom: solid 2rpx #f7f7f7;
+ color: #464854;
+ background: white;
+ position: relative;
+ font-size: 30rpx;
+}
+
+.coupon-tab-item:after {
+ position: absolute;
+ content: '';
+ left: calc(50% - 30rpx);
+ bottom: 0;
+ background-color: transparent;
+ width: 60rpx;
+ height: 8rpx;
+ border-radius: 50rpx;
+ color: #666666;
+}
+
+.coupon-tab-item.active {
+ color: #2151f5;
+ font-weight: 600;
+}
+
+.coupon-tab-item.active:after {
+ background-color: #2151f5;
+}
+
+/* 卡券类型 */
+.couponList {
+ margin: 220rpx 20rpx 0;
+}
+
+.couponCut {
+ top: 80rpx;
+ height: 126rpx;
+ line-height: 66rpx;
+ padding: 30rpx 40rpx;
+ box-sizing: border-box;
+ margin-bottom: 30rpx;
+ background-color: #f7f7f7;
+}
+
+.couponCut text {
+ flex: 4;
+ text-align: center;
+ background-color: white;
+ color: #666666;
+ margin: 0 20rpx;
+ border-radius: 50rpx;
+ font-size: 28rpx;
+}
+
+.couponCut text.active {
+ background-color: #2151f5;
+ color: #fff;
+}
+
+.couponDraw-list-label {
+ position: relative;
+ width: 100%;
+ padding-top: 32%;
+ border: 2rpx solid #eeeeee;
+ border-radius: 10rpx;
+ margin-bottom: 30rpx;
+}
+
+.couponDraw-list-label::after,
+.couponDraw-list-label::before {
+ position: absolute;
+ content: '';
+ width: 30rpx;
+ height: 30rpx;
+ border-radius: 50%;
+ background-color: #f7f7f7;
+ z-index: 111;
+}
+
+.couponEject-list-label::after {
+ top: -15rpx;
+ right: 160rpx;
+}
+
+.couponEject-list-label::before {
+ bottom: -15rpx;
+ right: 160rpx;
+}
+
+
+.couponDraw-list-label::after {
+ top: -15rpx;
+ left: calc(40% - 15rpx);
+}
+
+.couponDraw-list-label::before {
+ bottom: -15rpx;
+ left: calc(40% - 15rpx);
+}
+
+.couponDraw-list-tips {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 102;
+ font-size: 26rpx;
+ border-radius: 10rpx 0 10rpx 0;
+ padding: 6rpx 20rpx;
+ background-color: #fae5c2;
+ color: #9b6404;
+}
+
+.couponDraw-list-price {
+ width: 40%;
+ background-color: #eea931;
+ color: #fff;
+ position: absolute;
+ height: 100%;
+ left: 0;
+ top: 0;
+ border-radius: 10rpx 0 0 10rpx;
+ text-align: center;
+}
+
+.couponDraw-list-part {
+ position: absolute;
+ width: 100%;
+ height: 70rpx;
+ top: calc(50% - 35rpx);
+ z-index: 102;
+ text-align: center;
+ font-size: 50rpx;
+ font-weight: 600;
+}
+
+.couponDraw-list-text {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 60%;
+ padding: 10rpx 20rpx;
+ box-sizing: border-box;
+ background-color: #fff;
+ height: 100%;
+}
+
+.couponDraw-list-name text {
+ color: #999;
+ display: block;
+ font-size: 26rpx;
+ margin: 10rpx 0 5rpx;
+}
+
+.couponDraw-list-btn {
+ color: #b67c18;
+ border: 2rpx solid #b67c18;
+ border-radius: 50rpx;
+ display: inline-block;
+ font-size: 26rpx;
+ padding: 6rpx 20rpx;
+ position: absolute;
+ top: 90rpx;
+ right: 20rpx;
+ margin-bottom: 20rpx;
+ min-width: 110rpx;
+ text-align: center;
+}
+
+.couponDraw-list-time {
+ font-size: 26rpx;
+ color: #999;
+ clear: both;
+ position: absolute;
+ bottom: 20rpx;
+}
+
+.couponDraw-list-red .couponDraw-list-price {
+ background-color: #ee3158;
+}
+
+.couponDraw-list-red .couponDraw-list-btn {
+ border-color: #ba062b;
+ color: #b80026;
+}
+
+.couponDraw-list-red .couponDraw-list-tips {
+ background-color: #fac2cd;
+ color: #94001f;
+}
+
+
+.couponDraw-list-blue .couponDraw-list-price {
+ background-color: #2d6bf6;
+}
+
+.couponDraw-list-blue .couponDraw-list-btn {
+ border-color: #0f4acf;
+ color: #003fcc;
+}
+
+.couponDraw-list-blue .couponDraw-list-tips {
+ background-color: #c0d3fc;
+ color: #2151f5;
+}
+
+.coupon-null {
+ width: 100%;
+ padding: 20% 0;
+ text-align: center;
+
+}
+
+.coupon-null image {
+ width: 300rpx;
+}
+
+.coupon-text {
+ width: 100%;
+ text-align: center;
+ margin-top: 50rpx;
+ color: #666;
+}
+
+.coupon-icon {
+ height: 120rpx;
+ margin-top: 60rpx;
+ width: 120rpx;
+}
+
+.price-tips {
+ font-size: 20rpx;
+}
+
+.loose {
+ border-color: #999 !important;
+ color: #999 !important;
+}
+
+.nomore {
+ width: 100%;
+ height: 60rpx;
+ line-height: 60rpx;
+ text-align: center;
+ color: #999;
+ margin-bottom: 20rpx;
+ font-size: 28rpx;
+}
\ No newline at end of file
diff --git a/pages/user/user_coupon_data/user_coupon_data.js b/pages/user/user_coupon_data/user_coupon_data.js
new file mode 100644
index 0000000..8ffa09a
--- /dev/null
+++ b/pages/user/user_coupon_data/user_coupon_data.js
@@ -0,0 +1,62 @@
+/*
+ * 手太欠
+ * 企获客商城
+ */
+
+const app = getApp()
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ type : '', //cash为代金券; rebate为折扣券; free为免费券
+ user_coupon_id :'',//券id
+ title :'',//券标题
+ price :'',//券金额
+ way :'',//券途径
+ code_url :'',//券二维码
+ code :'',//券码编号
+ type_text :'',//券类型
+ start_at :'',//开始时间
+ startend_at :'',//结束时间
+ address :'',//核销地址
+ phone :'',//客服电话
+ name :''
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ this.setData({
+ type : options.type,
+ user_coupon_id : options.user_coupon_id
+ })
+ this.couponDetails()
+ },
+ couponDetails(){
+ wx.$api.mall.couponDetails(this.data.user_coupon_id).then(res => {
+ this.setData({
+ title : res.title,
+ price : res.price,
+ way : res.way,
+ code_url : res.code_url,
+ code : res.code,
+ type_text : res.type_text,
+ start_at : res.start_at,
+ end_at : res.end_at,
+ rule : res.rule,
+ address :res.company.address,
+ phone :res.company.phone,
+ name :res.company.name,
+ })
+
+ })
+ },
+ makeCall(){
+ wx.makePhoneCall({
+ phoneNumber: this.data.phone
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/user/user_coupon_data/user_coupon_data.json b/pages/user/user_coupon_data/user_coupon_data.json
new file mode 100644
index 0000000..78e495c
--- /dev/null
+++ b/pages/user/user_coupon_data/user_coupon_data.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents" : {},
+ "navigationBarTitleText" : "我的卡券-查看券码"
+}
\ No newline at end of file
diff --git a/pages/user/user_coupon_data/user_coupon_data.wxml b/pages/user/user_coupon_data/user_coupon_data.wxml
new file mode 100644
index 0000000..facf337
--- /dev/null
+++ b/pages/user/user_coupon_data/user_coupon_data.wxml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+ {{title}}
+
+
+ 金额
+ ¥{{price}}
+
+
+ 类型
+ {{type_text}}
+
+
+ 渠道
+ {{way}}
+
+
+
+ 券码信息
+
+ {{code}}
+
+
+
+
+
+
+
+ {{name}}
+
+
+
+ {{address}}
+
+
+
+
+ 联系客服
+
+
+
+
+ 使用说明
+
+
+ 有效期:
+ {{start_at}}至{{end_at}}
+
+
+ 使用规格则:
+ {{rule}}
+
+
+
+
\ No newline at end of file
diff --git a/pages/user/user_coupon_data/user_coupon_data.wxss b/pages/user/user_coupon_data/user_coupon_data.wxss
new file mode 100644
index 0000000..8860ecc
--- /dev/null
+++ b/pages/user/user_coupon_data/user_coupon_data.wxss
@@ -0,0 +1,145 @@
+page {
+ background: #f7f7f7;
+}
+
+/* 券码 */
+.couponData-top {
+ position: relative;
+ padding-top: 40%;
+ width: 100%;
+}
+
+.couponData-top-img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+}
+
+.couponData-cont {
+ position: relative;
+ margin: -60rpx 30rpx 20rpx;
+}
+
+.couponCode {
+ background-color: #fff;
+ border-radius: 20rpx;
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, .1);
+ margin-bottom: 30rpx;
+}
+
+.couponCode-title {
+ padding: 20rpx 20rpx 0;
+ font-weight: 600;
+ font-size: 36rpx;
+}
+
+.couponCode-list {
+ padding: 20rpx;
+ box-sizing: border-box;
+ margin: 30rpx 0;
+}
+
+.couponCode-list-label {
+ display: flex;
+ line-height: 60rpx;
+
+}
+
+.couponCode-list-name {
+ flex: 1;
+}
+
+.couponCode-list-label text {
+ color: #666;
+}
+
+.couponCode-list-price {
+ color: #d9263a !important;
+ font-size: 36rpx;
+}
+
+.couponCode-info,
+.couponCompany-tel {
+ border-top: 2rpx #dddddd dotted;
+ padding: 20rpx;
+ box-sizing: border-box;
+ text-align: center;
+}
+
+.couponCode-info-title {
+ margin-bottom: 20rpx;
+ font-weight: 600;
+ text-align: left;
+}
+
+.couponCode-info-img {
+ width: 260rpx;
+ height: 260rpx;
+ margin: 0 auto 20rpx;
+}
+
+.couponCode-info-number {
+ color: #666666;
+ font-style: 28rpx;
+}
+
+/* 公司简介 */
+.couponCompany-list {
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.couponCompany-list-label {
+ line-height: 64rpx;
+ display: flex;
+ color: #666666;
+}
+
+.couponCompany-list-label image {
+ width: 34rpx;
+ height: 34rpx;
+ margin: 15rpx 20rpx 10rpx 0;
+}
+
+.couponCompany-list-label text {
+ color: #000;
+}
+
+.couponCompany-tel {
+ line-height: 50rpx;
+}
+
+.couponCompany-tel image {
+ width: 34rpx;
+ height: 34rpx;
+ margin-right: 20rpx;
+ vertical-align: -4rpx;
+}
+
+.couponCompany-tel text {
+ display: inline-block;
+ line-height: 34rpx;
+}
+
+
+/* 使用说明 */
+.couponExplain {
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.couponExplain-info-title {
+ font-weight: 600;
+ margin-bottom: 30rpx;
+}
+
+.couponExplain-list-label {
+ color: #666666;
+ line-height: 60rpx;
+}
+
+.couponExplain-list-label text {
+ color: #000;
+}
\ No newline at end of file
diff --git a/static/images/car_icon.png b/static/images/car_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b1994d6a428f76f0eb374167373bf4f554d6d55
GIT binary patch
literal 205067
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
@i4vrKpklZdB
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