From 9eecb9b988a33184a5e952225287fa0de642881a Mon Sep 17 00:00:00 2001 From: chenshengle <954534408@qq.com> Date: Wed, 23 Mar 2022 15:04:56 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=8A=96=E9=9F=B3=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 + app.js | 93 ++ app.json | 42 + app.ttss | 141 ++ assets/images/aptitude.png | Bin 0 -> 1027 bytes assets/images/dindan.png | Bin 0 -> 521 bytes assets/images/dindan_a.png | Bin 0 -> 501 bytes assets/images/home.png | Bin 0 -> 756 bytes assets/images/home_a.png | Bin 0 -> 742 bytes assets/images/main.png | Bin 0 -> 944 bytes assets/images/order.png | Bin 0 -> 741 bytes assets/images/order_a.png | Bin 0 -> 719 bytes assets/images/portal.png | Bin 0 -> 946 bytes assets/images/portal_a.png | Bin 0 -> 924 bytes assets/images/quan.png | Bin 0 -> 934 bytes assets/images/questionnaire.png | Bin 0 -> 526 bytes assets/images/service.png | Bin 0 -> 1008 bytes assets/images/store.png | Bin 0 -> 1118 bytes assets/images/tousu.png | Bin 0 -> 902 bytes assets/images/user.png | Bin 0 -> 972 bytes assets/images/userInfo.png | Bin 0 -> 650 bytes assets/images/user_a.png | Bin 0 -> 928 bytes assets/itemImg/chevron.png | Bin 0 -> 376 bytes assets/itemImg/loading.gif | Bin 0 -> 450782 bytes assets/itemImg/noOrders.png | Bin 0 -> 12032 bytes assets/itemImg/phDel.png | Bin 0 -> 519 bytes assets/itemImg/spcode.png | Bin 0 -> 1368 bytes assets/itemImg/succ.png | Bin 0 -> 3135 bytes assets/itemImg/tel1.jpg | Bin 0 -> 2169 bytes assets/itemImg/topLine.png | Bin 0 -> 1709 bytes assets/itemImg/upDataRqF.png | Bin 0 -> 748 bytes assets/itemImg/updateRq.png | Bin 0 -> 1069 bytes assets/itemImg/wm01.jpg | Bin 0 -> 18397 bytes assets/itemImg/wm02.jpg | Bin 0 -> 18586 bytes assets/itemImg/wm03.jpg | Bin 0 -> 18559 bytes assets/itemImg/wm04.jpg | Bin 0 -> 24119 bytes components/advertisement/advertisement.js | 38 + components/advertisement/advertisement.json | 4 + components/advertisement/advertisement.ttml | 12 + components/advertisement/advertisement.ttss | 47 + components/banner/index.js | 91 + components/banner/index.json | 4 + components/banner/index.ttml | 19 + components/banner/index.ttss | 81 + components/commodityBox/commodityBox.js | 32 + components/commodityBox/commodityBox.json | 4 + components/commodityBox/commodityBox.ttml | 27 + components/commodityBox/commodityBox.ttss | 121 ++ components/commodityMould/commodityMould.js | 133 ++ components/commodityMould/commodityMould.json | 4 + components/commodityMould/commodityMould.ttml | 65 + components/commodityMould/commodityMould.ttss | 259 +++ components/coupons/index.js | 46 + components/coupons/index.json | 6 + components/coupons/index.ttml | 75 + components/coupons/index.ttss | 372 +++++ components/getPhoen/getPhoen.js | 120 ++ components/getPhoen/getPhoen.json | 4 + components/getPhoen/getPhoen.ttml | 29 + components/getPhoen/getPhoen.ttss | 95 ++ components/hot/hot.js | 143 ++ components/hot/hot.json | 4 + components/hot/hot.ttml | 59 + components/hot/hot.ttss | 133 ++ components/navbar/img/back.svg | 1 + components/navbar/img/home.svg | 1 + components/navbar/navbar.js | 83 + components/navbar/navbar.json | 3 + components/navbar/navbar.ttml | 20 + components/navbar/navbar.ttss | 92 ++ components/optimization/optimization.js | 45 + components/optimization/optimization.json | 4 + components/optimization/optimization.ttml | 40 + components/optimization/optimization.ttss | 202 +++ components/store/index.js | 79 + components/store/index.json | 3 + components/store/index.ttml | 19 + components/store/index.ttss | 76 + components/tabbar/tabbar.js | 72 + components/tabbar/tabbar.json | 4 + components/tabbar/tabbar.ttml | 8 + components/tabbar/tabbar.ttss | 41 + config/config.js | 398 +++++ dist/badge/index.js | 29 + dist/badge/index.json | 3 + dist/badge/index.ttml | 5 + dist/badge/index.ttss | 1 + dist/button/index.js | 80 + dist/button/index.json | 3 + dist/button/index.ttml | 20 + dist/button/index.ttss | 39 + dist/sticky-item/index.js | 40 + dist/sticky-item/index.json | 3 + dist/sticky-item/index.ttml | 10 + dist/sticky-item/index.ttss | 1 + dist/sticky/index.js | 64 + dist/sticky/index.json | 3 + dist/sticky/index.ttml | 3 + dist/sticky/index.ttss | 0 dist/tab/index.js | 50 + dist/tab/index.json | 7 + dist/tab/index.ttml | 10 + dist/tab/index.ttss | 48 + dist/tabs/index.js | 60 + dist/tabs/index.json | 3 + dist/tabs/index.ttml | 7 + dist/tabs/index.ttss | 42 + iconfont.ttss | 22 + index/index.js | 1322 +++++++++++++++ index/index.json | 16 + index/index.ttml | 257 +++ index/index.ttss | 828 ++++++++++ index/searchbar.js | 207 +++ index/searchbar.json | 9 + index/searchbar.ttml | 50 + index/searchbar.ttss | 191 +++ index/user.js | 132 ++ index/user.json | 8 + index/user.ttml | 82 + index/user.ttss | 156 ++ pages/bannerdetail/bannerdetail.js | 55 + pages/bannerdetail/bannerdetail.json | 6 + pages/bannerdetail/bannerdetail.ttml | 59 + pages/bannerdetail/bannerdetail.ttss | 568 +++++++ pages/complaint/complaint.js | 72 + pages/complaint/complaint.json | 6 + pages/complaint/complaint.ttml | 21 + pages/complaint/complaint.ttss | 63 + pages/coupon/detail/index.js | 1464 +++++++++++++++++ pages/coupon/detail/index.json | 11 + pages/coupon/detail/index.ttml | 286 ++++ pages/coupon/detail/index.ttss | 992 +++++++++++ pages/detailOrder/detailOrder.js | 205 +++ pages/detailOrder/detailOrder.json | 7 + pages/detailOrder/detailOrder.ttml | 57 + pages/detailOrder/detailOrder.ttss | 186 +++ pages/edit/edit.js | 288 ++++ pages/edit/edit.json | 5 + pages/edit/edit.ttml | 80 + pages/edit/edit.ttss | 159 ++ pages/editUser/editUser.js | 35 + pages/editUser/editUser.json | 6 + pages/editUser/editUser.ttml | 47 + pages/editUser/editUser.ttss | 61 + pages/getPhone/getPhone.js | 77 + pages/getPhone/getPhone.json | 5 + pages/getPhone/getPhone.ttml | 15 + pages/getPhone/getPhone.ttss | 70 + pages/getuserinfo/getuserinfo.js | 75 + pages/getuserinfo/getuserinfo.json | 5 + pages/getuserinfo/getuserinfo.ttml | 15 + pages/getuserinfo/getuserinfo.ttss | 70 + pages/index/index.js | 587 +++++++ pages/index/index.json | 5 + pages/index/index.ttml | 0 pages/index/index.ttss | 0 pages/index/searchbar/detail/index.js | 247 +++ pages/index/searchbar/detail/index.json | 10 + pages/index/searchbar/detail/index.ttml | 128 ++ pages/index/searchbar/detail/index.ttss | 365 ++++ pages/integralmall/index.js | 359 ++++ pages/integralmall/index.json | 9 + pages/integralmall/index.ttml | 85 + pages/integralmall/index.ttss | 506 ++++++ pages/integralmall/integraHistory/index.js | 107 ++ pages/integralmall/integraHistory/index.json | 7 + pages/integralmall/integraHistory/index.ttml | 26 + pages/integralmall/integraHistory/index.ttss | 128 ++ .../payIntegcouponStatus/index.js | 101 ++ .../payIntegcouponStatus/index.json | 9 + .../payIntegcouponStatus/index.ttml | 15 + .../payIntegcouponStatus/index.ttss | 74 + .../payIntegcoupondetail/index.js | 283 ++++ .../payIntegcoupondetail/index.json | 9 + .../payIntegcoupondetail/index.ttml | 42 + .../payIntegcoupondetail/index.ttss | 458 ++++++ pages/main/coupons/index.js | 225 +++ pages/main/coupons/index.json | 10 + pages/main/coupons/index.ttml | 15 + pages/main/coupons/index.ttss | 65 + pages/main/index.js | 569 +++++++ pages/main/index.json | 5 + pages/main/index.ttml | 0 pages/main/index.ttss | 7 + pages/mainOrder/mainOrder.js | 125 ++ pages/mainOrder/mainOrder.json | 6 + pages/mainOrder/mainOrder.ttml | 64 + pages/mainOrder/mainOrder.ttss | 221 +++ pages/mallInfo/mallInfo.js | 69 + pages/mallInfo/mallInfo.json | 8 + pages/mallInfo/mallInfo.ttml | 29 + pages/mallInfo/mallInfo.ttss | 106 ++ pages/order/detail/index.js | 501 ++++++ pages/order/detail/index.json | 6 + pages/order/detail/index.ttml | 134 ++ pages/order/detail/index.ttss | 708 ++++++++ pages/order/index/index.js | 299 ++++ pages/order/index/index.json | 10 + pages/order/index/index.ttml | 110 ++ pages/order/index/index.ttss | 434 +++++ pages/orderquanma/index.js | 236 +++ pages/orderquanma/index.json | 5 + pages/orderquanma/index.ttml | 62 + pages/orderquanma/index.ttss | 265 +++ pages/questionnaire/questionnaire.js | 265 +++ pages/questionnaire/questionnaire.json | 8 + pages/questionnaire/questionnaire.ttml | 25 + pages/questionnaire/questionnaire.ttss | 117 ++ .../questionnaireLsit/questionnaireLsit.js | 121 ++ .../questionnaireLsit/questionnaireLsit.json | 7 + .../questionnaireLsit/questionnaireLsit.ttml | 18 + .../questionnaireLsit/questionnaireLsit.ttss | 71 + pages/searchbar/searchbar.js | 195 +++ pages/searchbar/searchbar.json | 8 + pages/searchbar/searchbar.ttml | 42 + pages/searchbar/searchbar.ttss | 88 + pages/specialcourtesy/specialcourtesy.js | 72 + pages/specialcourtesy/specialcourtesy.json | 5 + pages/specialcourtesy/specialcourtesy.ttml | 36 + pages/specialcourtesy/specialcourtesy.ttss | 122 ++ pages/ticket/ticket.js | 132 ++ pages/ticket/ticket.json | 6 + pages/ticket/ticket.ttml | 38 + pages/ticket/ticket.ttss | 193 +++ pages/ticketDetail/ticketDetail.js | 217 +++ pages/ticketDetail/ticketDetail.json | 7 + pages/ticketDetail/ticketDetail.ttml | 69 + pages/ticketDetail/ticketDetail.ttss | 284 ++++ pages/topicDetail/index.js | 109 ++ pages/topicDetail/index.json | 6 + pages/topicDetail/index.ttml | 51 + pages/topicDetail/index.ttss | 558 +++++++ project.config.json | 39 + utils/HttpBasics.js | 119 ++ utils/barcode.js | 392 +++++ utils/bgColor.js | 38 + utils/creditType.js | 19 + utils/imgurl.js | 776 +++++++++ utils/iti.js | 87 + utils/memberqrcode.js | 843 ++++++++++ utils/qrcode.js | 778 +++++++++ utils/spell.js | 80 + utils/util.js | 207 +++ weui.ttss | 6 + 244 files changed, 26487 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 app.js create mode 100644 app.json create mode 100644 app.ttss create mode 100644 assets/images/aptitude.png create mode 100644 assets/images/dindan.png create mode 100644 assets/images/dindan_a.png create mode 100644 assets/images/home.png create mode 100644 assets/images/home_a.png create mode 100644 assets/images/main.png create mode 100644 assets/images/order.png create mode 100644 assets/images/order_a.png create mode 100644 assets/images/portal.png create mode 100644 assets/images/portal_a.png create mode 100644 assets/images/quan.png create mode 100644 assets/images/questionnaire.png create mode 100644 assets/images/service.png create mode 100644 assets/images/store.png create mode 100644 assets/images/tousu.png create mode 100644 assets/images/user.png create mode 100644 assets/images/userInfo.png create mode 100644 assets/images/user_a.png create mode 100644 assets/itemImg/chevron.png create mode 100644 assets/itemImg/loading.gif create mode 100644 assets/itemImg/noOrders.png create mode 100644 assets/itemImg/phDel.png create mode 100644 assets/itemImg/spcode.png create mode 100644 assets/itemImg/succ.png create mode 100644 assets/itemImg/tel1.jpg create mode 100644 assets/itemImg/topLine.png create mode 100644 assets/itemImg/upDataRqF.png create mode 100644 assets/itemImg/updateRq.png create mode 100644 assets/itemImg/wm01.jpg create mode 100644 assets/itemImg/wm02.jpg create mode 100644 assets/itemImg/wm03.jpg create mode 100644 assets/itemImg/wm04.jpg create mode 100644 components/advertisement/advertisement.js create mode 100644 components/advertisement/advertisement.json create mode 100644 components/advertisement/advertisement.ttml create mode 100644 components/advertisement/advertisement.ttss create mode 100644 components/banner/index.js create mode 100644 components/banner/index.json create mode 100644 components/banner/index.ttml create mode 100644 components/banner/index.ttss create mode 100644 components/commodityBox/commodityBox.js create mode 100644 components/commodityBox/commodityBox.json create mode 100644 components/commodityBox/commodityBox.ttml create mode 100644 components/commodityBox/commodityBox.ttss create mode 100644 components/commodityMould/commodityMould.js create mode 100644 components/commodityMould/commodityMould.json create mode 100644 components/commodityMould/commodityMould.ttml create mode 100644 components/commodityMould/commodityMould.ttss create mode 100644 components/coupons/index.js create mode 100644 components/coupons/index.json create mode 100644 components/coupons/index.ttml create mode 100644 components/coupons/index.ttss create mode 100644 components/getPhoen/getPhoen.js create mode 100644 components/getPhoen/getPhoen.json create mode 100644 components/getPhoen/getPhoen.ttml create mode 100644 components/getPhoen/getPhoen.ttss create mode 100644 components/hot/hot.js create mode 100644 components/hot/hot.json create mode 100644 components/hot/hot.ttml create mode 100644 components/hot/hot.ttss create mode 100644 components/navbar/img/back.svg create mode 100644 components/navbar/img/home.svg create mode 100644 components/navbar/navbar.js create mode 100644 components/navbar/navbar.json create mode 100644 components/navbar/navbar.ttml create mode 100644 components/navbar/navbar.ttss create mode 100644 components/optimization/optimization.js create mode 100644 components/optimization/optimization.json create mode 100644 components/optimization/optimization.ttml create mode 100644 components/optimization/optimization.ttss create mode 100644 components/store/index.js create mode 100644 components/store/index.json create mode 100644 components/store/index.ttml create mode 100644 components/store/index.ttss create mode 100644 components/tabbar/tabbar.js create mode 100644 components/tabbar/tabbar.json create mode 100644 components/tabbar/tabbar.ttml create mode 100644 components/tabbar/tabbar.ttss create mode 100644 config/config.js create mode 100644 dist/badge/index.js create mode 100644 dist/badge/index.json create mode 100644 dist/badge/index.ttml create mode 100644 dist/badge/index.ttss create mode 100644 dist/button/index.js create mode 100644 dist/button/index.json create mode 100644 dist/button/index.ttml create mode 100644 dist/button/index.ttss create mode 100644 dist/sticky-item/index.js create mode 100644 dist/sticky-item/index.json create mode 100644 dist/sticky-item/index.ttml create mode 100644 dist/sticky-item/index.ttss create mode 100644 dist/sticky/index.js create mode 100644 dist/sticky/index.json create mode 100644 dist/sticky/index.ttml create mode 100644 dist/sticky/index.ttss create mode 100644 dist/tab/index.js create mode 100644 dist/tab/index.json create mode 100644 dist/tab/index.ttml create mode 100644 dist/tab/index.ttss create mode 100644 dist/tabs/index.js create mode 100644 dist/tabs/index.json create mode 100644 dist/tabs/index.ttml create mode 100644 dist/tabs/index.ttss create mode 100644 iconfont.ttss create mode 100644 index/index.js create mode 100644 index/index.json create mode 100644 index/index.ttml create mode 100644 index/index.ttss create mode 100644 index/searchbar.js create mode 100644 index/searchbar.json create mode 100644 index/searchbar.ttml create mode 100644 index/searchbar.ttss create mode 100644 index/user.js create mode 100644 index/user.json create mode 100644 index/user.ttml create mode 100644 index/user.ttss create mode 100644 pages/bannerdetail/bannerdetail.js create mode 100644 pages/bannerdetail/bannerdetail.json create mode 100644 pages/bannerdetail/bannerdetail.ttml create mode 100644 pages/bannerdetail/bannerdetail.ttss create mode 100644 pages/complaint/complaint.js create mode 100644 pages/complaint/complaint.json create mode 100644 pages/complaint/complaint.ttml create mode 100644 pages/complaint/complaint.ttss create mode 100644 pages/coupon/detail/index.js create mode 100644 pages/coupon/detail/index.json create mode 100644 pages/coupon/detail/index.ttml create mode 100644 pages/coupon/detail/index.ttss create mode 100644 pages/detailOrder/detailOrder.js create mode 100644 pages/detailOrder/detailOrder.json create mode 100644 pages/detailOrder/detailOrder.ttml create mode 100644 pages/detailOrder/detailOrder.ttss create mode 100644 pages/edit/edit.js create mode 100644 pages/edit/edit.json create mode 100644 pages/edit/edit.ttml create mode 100644 pages/edit/edit.ttss create mode 100644 pages/editUser/editUser.js create mode 100644 pages/editUser/editUser.json create mode 100644 pages/editUser/editUser.ttml create mode 100644 pages/editUser/editUser.ttss create mode 100644 pages/getPhone/getPhone.js create mode 100644 pages/getPhone/getPhone.json create mode 100644 pages/getPhone/getPhone.ttml create mode 100644 pages/getPhone/getPhone.ttss create mode 100644 pages/getuserinfo/getuserinfo.js create mode 100644 pages/getuserinfo/getuserinfo.json create mode 100644 pages/getuserinfo/getuserinfo.ttml create mode 100644 pages/getuserinfo/getuserinfo.ttss create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.ttml create mode 100644 pages/index/index.ttss create mode 100644 pages/index/searchbar/detail/index.js create mode 100644 pages/index/searchbar/detail/index.json create mode 100644 pages/index/searchbar/detail/index.ttml create mode 100644 pages/index/searchbar/detail/index.ttss create mode 100644 pages/integralmall/index.js create mode 100644 pages/integralmall/index.json create mode 100644 pages/integralmall/index.ttml create mode 100644 pages/integralmall/index.ttss create mode 100644 pages/integralmall/integraHistory/index.js create mode 100644 pages/integralmall/integraHistory/index.json create mode 100644 pages/integralmall/integraHistory/index.ttml create mode 100644 pages/integralmall/integraHistory/index.ttss create mode 100644 pages/integralmall/payIntegcouponStatus/index.js create mode 100644 pages/integralmall/payIntegcouponStatus/index.json create mode 100644 pages/integralmall/payIntegcouponStatus/index.ttml create mode 100644 pages/integralmall/payIntegcouponStatus/index.ttss create mode 100644 pages/integralmall/payIntegcoupondetail/index.js create mode 100644 pages/integralmall/payIntegcoupondetail/index.json create mode 100644 pages/integralmall/payIntegcoupondetail/index.ttml create mode 100644 pages/integralmall/payIntegcoupondetail/index.ttss create mode 100644 pages/main/coupons/index.js create mode 100644 pages/main/coupons/index.json create mode 100644 pages/main/coupons/index.ttml create mode 100644 pages/main/coupons/index.ttss create mode 100644 pages/main/index.js create mode 100644 pages/main/index.json create mode 100644 pages/main/index.ttml create mode 100644 pages/main/index.ttss create mode 100644 pages/mainOrder/mainOrder.js create mode 100644 pages/mainOrder/mainOrder.json create mode 100644 pages/mainOrder/mainOrder.ttml create mode 100644 pages/mainOrder/mainOrder.ttss create mode 100644 pages/mallInfo/mallInfo.js create mode 100644 pages/mallInfo/mallInfo.json create mode 100644 pages/mallInfo/mallInfo.ttml create mode 100644 pages/mallInfo/mallInfo.ttss create mode 100644 pages/order/detail/index.js create mode 100644 pages/order/detail/index.json create mode 100644 pages/order/detail/index.ttml create mode 100644 pages/order/detail/index.ttss create mode 100644 pages/order/index/index.js create mode 100644 pages/order/index/index.json create mode 100644 pages/order/index/index.ttml create mode 100644 pages/order/index/index.ttss create mode 100644 pages/orderquanma/index.js create mode 100644 pages/orderquanma/index.json create mode 100644 pages/orderquanma/index.ttml create mode 100644 pages/orderquanma/index.ttss create mode 100644 pages/questionnaire/questionnaire.js create mode 100644 pages/questionnaire/questionnaire.json create mode 100644 pages/questionnaire/questionnaire.ttml create mode 100644 pages/questionnaire/questionnaire.ttss create mode 100644 pages/questionnaire/questionnaireLsit/questionnaireLsit.js create mode 100644 pages/questionnaire/questionnaireLsit/questionnaireLsit.json create mode 100644 pages/questionnaire/questionnaireLsit/questionnaireLsit.ttml create mode 100644 pages/questionnaire/questionnaireLsit/questionnaireLsit.ttss create mode 100644 pages/searchbar/searchbar.js create mode 100644 pages/searchbar/searchbar.json create mode 100644 pages/searchbar/searchbar.ttml create mode 100644 pages/searchbar/searchbar.ttss create mode 100644 pages/specialcourtesy/specialcourtesy.js create mode 100644 pages/specialcourtesy/specialcourtesy.json create mode 100644 pages/specialcourtesy/specialcourtesy.ttml create mode 100644 pages/specialcourtesy/specialcourtesy.ttss create mode 100644 pages/ticket/ticket.js create mode 100644 pages/ticket/ticket.json create mode 100644 pages/ticket/ticket.ttml create mode 100644 pages/ticket/ticket.ttss create mode 100644 pages/ticketDetail/ticketDetail.js create mode 100644 pages/ticketDetail/ticketDetail.json create mode 100644 pages/ticketDetail/ticketDetail.ttml create mode 100644 pages/ticketDetail/ticketDetail.ttss create mode 100644 pages/topicDetail/index.js create mode 100644 pages/topicDetail/index.json create mode 100644 pages/topicDetail/index.ttml create mode 100644 pages/topicDetail/index.ttss create mode 100644 project.config.json create mode 100644 utils/HttpBasics.js create mode 100644 utils/barcode.js create mode 100644 utils/bgColor.js create mode 100644 utils/creditType.js create mode 100644 utils/imgurl.js create mode 100644 utils/iti.js create mode 100644 utils/memberqrcode.js create mode 100644 utils/qrcode.js create mode 100644 utils/spell.js create mode 100644 utils/util.js create mode 100644 weui.ttss diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..323a8d0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "bytedanceMiniappIDE.previewScene": "default" +} \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..6d98e79 --- /dev/null +++ b/app.js @@ -0,0 +1,93 @@ +const Http = require("./utils/HttpBasics.js") +const config = require("./config/config.js"); +App({ + data:{}, + globalData:{ + token: null, + imgHttps: 'https://formall.oss-accelerate.aliyuncs.com/douyin/drawable-xhdpi/', + platform:null,//手机型号 + systemInfo:"", + curHtml:"", + marketName:"", + mouldType:1, + appId:"ttef6599d8705b49b101", + selected:0, + }, + onLaunch: function () { + let that = this + + try { + var res = tt.getSystemInfoSync(); + that.statusBarHeight = res.statusBarHeight + console.log(`手机型号为 ${res.platform}`); + this.globalData.platform = res.platform + } catch (error) { + console.log(`获取系统信息失败`); + } + tt.getSystemInfo({ + success(res) { + that.globalData.systemInfo = res + that.logn(); + }, + fail(res) { + console.log(`getSystemInfo 调用失败`); + }, + }); + + }, + statusBarHeight: 0, + logn(){ + let that = this; + tt.login({ + success:(res=>{ + let {code} = res + Http.post({ + url:config.api.login, + data:{ + code:code, + appId:'ttef6599d8705b49b101', + systemInfo:JSON.stringify(this.globalData.systemInfo) + } + }).then(res=>{ + // debugger + if (res.data.mall){ + that.globalData.marketName = res.data.mall.name ? res.data.mall.name : "" + } + that.globalData.mouldType = res.data.mouldType ? res.data.mouldType:0; + if (res.data.subMalls) { + const squareList = JSON.parse(res.data.subMalls) + tt.setStorageSync("squareList", squareList) + if (res.data.mall){ + tt.setStorageSync("selectedMall", res.data.mall.tenantId) + } + + } + Http.setToken(res.data.token); + that.globalData.token = res.data.token + if (that.tokenCallback) { + that.tokenCallback(res.data.token); + } + }).catch(err=>{ + console.log(err); + tt.showModal({ + title: '提示', + showCancel: false, + content: '登录失败,请重新尝试', + success: (res) => { + if (res.cancel) { + //点击取消,默认隐藏弹框 + } else { + //点击确定 + tt.reLaunch({ + url: '/pages/index/index', + }) + } + } + }); + }) + + }), + + }); + } +}) diff --git a/app.json b/app.json new file mode 100644 index 0000000..359100d --- /dev/null +++ b/app.json @@ -0,0 +1,42 @@ +{ + "pages": [ + "index/index", + "index/searchbar", + "pages/index/index", + "index/user", + "pages/mainOrder/mainOrder", + "pages/detailOrder/detailOrder", + "pages/ticket/ticket", + "pages/ticketDetail/ticketDetail", + "pages/coupon/detail/index", + "pages/editUser/editUser", + "pages/specialcourtesy/specialcourtesy", + "pages/complaint/complaint", + "pages/mallInfo/mallInfo", + "pages/getuserinfo/getuserinfo", + "pages/bannerdetail/bannerdetail", + "pages/topicDetail/index", + "pages/main/index", + "pages/integralmall/index", + "pages/integralmall/integraHistory/index", + "pages/order/detail/index", + "pages/order/index/index", + "pages/orderquanma/index", + "pages/edit/edit", + "pages/questionnaire/questionnaire", + "pages/questionnaire/questionnaireLsit/questionnaireLsit", + "pages/searchbar/searchbar", + "pages/index/searchbar/detail/index", + "pages/integralmall/payIntegcoupondetail/index", + "pages/integralmall/payIntegcouponStatus/index", + "pages/getPhone/getPhone" + ], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "Mini Program", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + } + +} \ No newline at end of file diff --git a/app.ttss b/app.ttss new file mode 100644 index 0000000..38e1ba9 --- /dev/null +++ b/app.ttss @@ -0,0 +1,141 @@ +.BoxBg{ + background-color: #f6f6f6; + min-height: 100vh; +} +view, text { + font-family: PingFangSC-Regular; + +} +@font-face { + font-family: "iconfont"; /* project id 777313 */ + src: url("//at.alicdn.com/t/font_777313_jq7td4d3uab.eot"); + src: url("//at.alicdn.com/t/font_777313_jq7td4d3uab.eot?#iefix") + format("embedded-opentype"), + url("//at.alicdn.com/t/font_777313_jq7td4d3uab.woff") format("woff"), + url("//at.alicdn.com/t/font_777313_jq7td4d3uab.ttf") format("truetype"), + url("//at.alicdn.com/t/font_777313_jq7td4d3uab.svg#iconfont") format("svg"); + } + + .iconfont { + font-family: "iconfont" !important; + font-size: 36rpx; + font-style: normal; + -webkit-font-smoothing: antialiased; + -webkit-text-stroke-width: 0.2rpx; + -moz-osx-font-smoothing: grayscale; + } + .clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; + } + /* 定位 */ + .icon-dingweib:before { + content: "\e652"; + } + /* 三角 */ + .icon-choose:before { + content: "\e601"; + } + /* 右箭头 */ + .icon-right:before { + content: "\e612"; + } + + /* 边框 */ + + .app-border-top, + .app-border-bottom { + position: relative; + width: 100%; + } + + .app-border-top::after, + .app-border-bottom::after { + content: ""; + position: absolute; + background-color: #ddd; + display: block !important; + z-index: 1; + top: auto; + right: auto; + width: 100%; + height: 1rpx; + transform-origin: 50% 100%; + transform: scaleY(0.5); + } + + .app-border-top:last-child:after, + .app-border-bottom:last-child::after { + display: none !important; + } + + .app-border-top::after { + top: 0; + } + + .app-border-bottom::after { + bottom: 0; + } + + .app-border-left, + .app-border-right { + position: relative; + height: 100%; + } + + .app-border-left::before, + .app-border-right::before { + content: ""; + position: absolute; + background-color: #ddd; + display: block; + z-index: 1; + top: 0; + bottom: 0; + height: 100%; + width: 1rpx; + transform-origin: 50% 100%; + transform: scaleX(0.5); + } + + .app-border-left::before { + left: 0; + } + + .app-border-right::before { + right: 0; + } + view, + text { + font-family: PingFangSC-Regular; + } + page { + width: 100%; + min-height: 100vh; + font-weight: 400; + padding-bottom: 160rpx; + background: #F4F5F9; + } + .fl{ + float: left; + } + .fr{ + float: right; + } + .canWrap{ + position: fixed; + bottom: -20000rpx; + left: -2000rpx; + width: 100%; + height: 100%; + overflow: visible; + } + .canWrap canvas{ + width: 690rpx; + height: 450rpx; + } + + \ No newline at end of file diff --git a/assets/images/aptitude.png b/assets/images/aptitude.png new file mode 100644 index 0000000000000000000000000000000000000000..94808b20562fb55b15e4266886e26e7e2e276ebe GIT binary patch literal 1027 zcmV+e1pNDnP)Px&y-7qtR9HvVmtTk#RUF5^zcVw-YC>4-gW`im5@ZGvh>Om-w-@O_qok|5=O!eW z;L?LVL%UR0b)6P3ZRkYNPa&i zP1=FCtu=lYUvnkl*1H^LZ z`63Wn<4)hz+GHo&t`#U+gj(xuxd1zc$|+oHOU`XXiBuuF}% zDukGdqxi@EiBE6l#pqclG%^d|RR-3!BpkN`e{Uy)ZnPwog1OJ7)<)QTsi<4mN%J_W`!h3eZ zA5UEM8WYU^0u{RMgo#wy6z!fH^}e5oIDYH##lzt~a**1IcX~AD?ZWy%x8Oy(O&8R6lz?>l;h;Cj+Ki zUNFAAsnQp%wzj12hqe={NCV2+L~=MF5>s}=+u!P&l!ixG(@6_rUF#fJpukd-F8Iol xszhx4up&6yRALc?RL88qZ(CbEQQ*J8{|h7FQ9nL$JRJZ4002ovPDHLkV1gz6)SCbR literal 0 HcmV?d00001 diff --git a/assets/images/dindan.png b/assets/images/dindan.png new file mode 100644 index 0000000000000000000000000000000000000000..d373ec4c39e27c2ec353b077fb5cfa94a3cfca88 GIT binary patch literal 521 zcmV+k0`~ohP)Px$!%0LzR9Hvtm$6R6Kn#ZMth_+uOWy$rkl3IP0AgY2z`y_!AQq4qOJP9>Bo>eu z7#J83EDQ{6l$}b5fj5Y6;|+R7hngyCljhPkYKLY#+rK~Cx!eU|%nyz^KTIwFGoJy# zqDzNFMUiF^_}z|4|IL_|(305iWM;+yaL=dSTR09xxk5xI61uzqm> z09Xcq10uR|(dYrNRkTH1;{SaT0PNbnQYy2M!T>CoF=i(Sg4=$T6bjHzyhTKJX%JZe z&m!`Z8jQGP$CWgKc#JV-GYEqFB%QthtyZg2E|(i=0AU!`5%D+z2*dCO5qDGkH;Cw= z+twGr3L9fm0X)y!M#O3iU=*6Ut8)C~u3;F3H)fQTF^r7m36yZxB?2>{k(>-jq1dEQE?RLY!d8lcwtQbZ01 z1^|Fx0QerX0|2l905ih?43RrAG~WnDoqf6sa(7_53&!#iMrV8h$vbz)zK4-DGV^EJ znLY$qlZfUsFC>uzGp~ur><|e%p@{fJL@!BNllyBnippIy#@>NHq=*|ZmCDNo00000 LNkvXXu0mjfEiTdb literal 0 HcmV?d00001 diff --git a/assets/images/dindan_a.png b/assets/images/dindan_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3c28d8173ad92a6101cc952aa4fa9f6cba3f619c GIT binary patch literal 501 zcmVPx$uSrBfR9Hvtm(5DUKoo_~P1Ax8;9j3WP>?q2M)3hGs3{_@T>1psy|{LvP;4v3 zK7=I|!Ii7J>89XL!IdaBI#&i;kfxJN($rQl%iJ?F-`qKOeh4G}XvE_~3E*0r%K|hX z2G9_wC9g`gH_JXqfbLDFcpB8cFMyk|FF{xgYV3&%EJ*;@vbhthCY@5&uOAOUJF_uM zWZZ-vTsH6m$iKc29srp>1K5udz!&1D0F)5J0(by0*(Zyh<%ku4K*y$2-2GU{?Fr_i zzRTG0NjDZV0G=6GNjjzLb~-o52Cw!)bW1ff05Pqb^(80IY$iVG5C@dihSr z$l4hYKwi=-J5A6bm}ffiSAd#ee)8xUdAV1F&VbHrv^2x?z@G%0XZOW%XG@q-(~SWOacIy#dfNGUI+w`f+$Zj rzww3fUYMv=TD_X_eVpo9dT`YzG5HKI4adH800000NkvXXu0mjf8+_SE literal 0 HcmV?d00001 diff --git a/assets/images/home.png b/assets/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..694cda80872b8d8236624d2a31be64aceb36a493 GIT binary patch literal 756 zcmVPx%u1Q2eR9Hvtm(NR8K@`W&ciy6%{sXlMp37){JXbA}{sx7Nev*+=S!AG)WhEF? zR2CT-{UihZ8^RW?e0SzXOCPkUe?WIZ&WRCkTz%K~-n}UjIGcOn%sJoBoO9;RT+j{= z?65u+2C&v1VCF+%0RX;et-lpnOd$YkZ4ZD+X8yeGwj!R)iK6HdfX761QEUBlGv7@C zthJYk=pi!?8Dk#g5l=x}1#q8;u4t_vWyQz@h~s$3dw-9aM~pFdi-@Nnh5<|nA+AX& z1I)Tn2jH9=X66ZIzF~~H^Dp8lh*1Ey0gNc6)-7lqfOGCTGp~wjt(!Jz9yn_)hxq_T zl~Uu0?_ZH>wR%_xG4H*JHMv8xo8tEEG!%>l}fP?qC-kqOUJA`aB8*M zp5^7`@80|AjoYaxz}oihYin!UUoMw_H3SGo=iGT_o&qq(%;U*VM_z#N^8z58u-yRq zl~T`}-UpHi&bcE*6z+l@d5+yW0br4c29#2tGQXaUf`@V}EiLV3=6yvV0Q_igZ~wV5 m?M+KiM69UKmfm`bK>Pvu=E^Yi)vLGw0000Px%ph-kQR9Hvtm(6R`P!z?_iHok(gP$ z;Q~W_^>4&$5NZs>6$nQe`gIM}0f?i{11O2o=(YyU0w<1=KkLV6^mrw=Dk9FlJ%F_U z;4*-Vs{~N04MbfuFJG4$tr;c;sD!n!Isj2uwev=RdXUuvsC2&U2>uxWaa25VE=<^0somH?$f1@8nz;_KHODC3o%j;sLXpBKgxwg+TCi~jw_??dw&QNh~_k!b*( zS;lU{+C`89Ec&mK>a@NSc6WE++lI}sxFr`vB%iVI`xnm7*KK>-BgiF|GigO{J$V>@ Y14T`IFkJd0V*mgE07*qoM6N<$f@a!JUjP6A literal 0 HcmV?d00001 diff --git a/assets/images/main.png b/assets/images/main.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2120978f7e147056df150fc14159e20d1260c0 GIT binary patch literal 944 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 BO1uC7 literal 0 HcmV?d00001 diff --git a/assets/images/portal.png b/assets/images/portal.png new file mode 100644 index 0000000000000000000000000000000000000000..d818f887d454ea9412469328d06c5742af565d74 GIT binary patch literal 946 zcmV;j15NyiP)Px&Y)M2xR9HvlS50VKRTTctof(1)H!cbl0ts`^dq%;asieA)j2lr=T0s#+>))yt z7it%R(7Mn?Q8yx@D3-djXsgzL#DWyG+ES31nRo6$AQ9_E+!#_A?vXRh3vV)$#xhS* z@xsiz+_~>N-}&zOxkK3EL0fDemnQ)csT0v102-=#RS7D61>g)b+p}*BRUpf<4~b}Z z35JUhzsDG7(lq_GxHv#SL>>e14iO#p-alFf2@$yu!21B+VCKD>5%>ncZ864M(=`3A z3<8EBA|C;mtJP}POiWDtmgDv*AR==Bz6J0(Gv8U3@g9N40lZB_&wKA*+=##t01p9p zn3>-zlRyYzo2oVeoM+~12M9Eq%_}RF%AWw-^73-6(P(taBw$!smK`RdJ-G8x zTU$GV5W+L6`m(CNmL$njxok1U@ll94=jNIDsA06*?R#U49{~7-neXW%AR>15b40}6 z`w&8yQPrPDG2S&mwCKH`w7IHQLkM;Zb!P55-~C!zTDoF&b#(>6NoH>3Mn%NVYTGCz zI-Snq)YQ~sjuAq5S5+U$9qkh68JY)hmYHWpF}T^gBJw(by{dXck|gKWVj#=1(?oPr zwOZXiIXQWLJ#cgs@vxw|6?7&x&3b6dg0c0bF3_Zfq3^>?fi_ zF~%3tG(EW9fQVQnvx;Wp{yeY>;CZ#Pb3ZmVHul8$`1l`191(d5z;ghOF!P>10u~_c zcKf)h-UYx295qjSWz@j!a~8mjJn=xJ^(ub90G9lkUdX2=T5{J&4FQkq|f*O0b9tjY>J3( z24ERr0r|ai?q|ziX1-v1n$70*wOZ{KRh>2EtktUOe3B$z=cHP#)-LCqVVD}rM08G7 zPpyxiVcl?UWo6~Z>FMdeHjC&>{oS(dq6G40L`2Ve?_ar80~g!hYPAkJ=ME6j4)6V$ zeDBb1xKSpILMSI-w=8Bp`TrvzA_scuy)_E_X9!r{&i@-hSSaP!6;pAb4ulYnsp_s# zB7UQHiRifZzVEs}K)||QrBbnrNw-;)HHhd<0H?h7)(zLj<@wjFEU*6w&Xz0iH|jo= UFmvo=UjP6A07*qoM6N<$f~PUM8~^|S literal 0 HcmV?d00001 diff --git a/assets/images/portal_a.png b/assets/images/portal_a.png new file mode 100644 index 0000000000000000000000000000000000000000..f87971d6236fe5d07b71a207594436105f489ad7 GIT binary patch literal 924 zcmV;N17rM&P)Px&R!KxbR9HvlmtBZdWf;eQ|Fg42kT+cj20|gd1hBzPOHtoy#4y-(UAtu7L5!0+Ja%xdR!0ZS z&%O^@-*wg=^;m90FxXc{i)L=dAg` zGT=m)!NHhTDZD8G$c&~ae|H90swhm7PrhvBhHL2S{}ZgJC_h{aYD2jJtg^T(h%(bU zIzC<3Ob72G9;zi;1xNzf6mUvW=rX@-%lz!?pl!t5p~K8Rue#W2hvNx^NPaJ zHUK|xoy>JKw>H)at1jN?c20I5mA|&?Na13$jtymB#PkfXOHsI`6(A{)@Are<2aF;W zT&A;a)CG2*Q^1{xsMrqrtQx@X#dx*)TgSkb1IIDm!khUJyJ|VI5sVx#g|xBeVrwU? zHj9seyV@<*r^MyQQQr!LbL#r`d+aeRbpTbIgPrC`OYjy4>Q=7WbSrUcCB&{_j z-Zw0|xK|Ssm#RgZy&b$kVwb6+-aK^pfQZ>X+`;0dI?~D;I`#Cx4nu&=h$p1HAQKfh8<5rH$V-5cv#VR z@qY>6>>q`NbKt)K&=^XWqX?_5T)M6KD0b)r!9HMJHx)n6fA=d2TORk@0o>H{ybPWt y!=h(PdK1MZeK~%vS@X(#HS1Z{|3YZN9rzn3=5R2BXGfF(0000Px&U`a$lR9HvNmrqC(aTLeD?>Dn)DHx%3D1zt@+aW|fM5owO33b@R&Z5SK9s)ru z(My4rAc+vD+eM5*wu04xgbrO*1P|FikVGQIQ$$qkp@XzD^J0FwtK<4-er{$zSeTvP zd++<1_ulU}zai}Lpgq>drT|tX5@w=uV!oIUBoTdJ=670Akx4^COY3882w+7buRv6t zk8q9<(MRDp2ASsU+PNG6%P{zF3a^iq7UIPIWO6Zc-veM9#sdagcM|~2QyLH=)BNq~ zWC50<(UUs!=Uo+F3GOi0?=#II4}jZrAbPPDfX|$P9gTvI9|sBwl-cO(SJ2E1w5Lx! zz6`_zBO^CG0BOUxN5I{TC7(VGtG!+R6_b;o@86XHoL~@q_AJEPx6u0gSN)mCb<+%O z31Hv41*ftSdPfInG21ih5SK2&uB(GKItnp5y6o=*}8pt%`HrF=u! zu^70j3i?gC-17hkhhc}q>Hv+6a4uXxwj^s2{APfU9)<0eAeB-sfwKbcS^pUbKLD}` zuV04?q4)NJ-oMW_p_`G71}!Z?>+Q`>r4xzlwem(}b$3hg^|hB^J^@^HnTb#c!hI(^ zdgOl?pExsTfMV0Z%H?6G&i>z#}9zj+6pc&m;1MP^Jd2oc746v zIraPZS0VfWxb=7Yz#a7M8<5$>R8Y#wz@?=SzZ zy$rsvAb(Hq)$ literal 0 HcmV?d00001 diff --git a/assets/images/questionnaire.png b/assets/images/questionnaire.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5e7d9d122acea50bbc947a7253576745132b87 GIT binary patch literal 526 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%0DcB!E;Ge{0(eW{zUJB+ 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�)DCQ#aLf#A{9|b3giAsW5l-kx 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

ivLK!sl@h{}r%d$etXNN6qP?E+{s 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 YJUDEBhz8b+Pr;3W& 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 literal 0 HcmV?d00001 diff --git a/assets/itemImg/noOrders.png b/assets/itemImg/noOrders.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0cf251ca501f80f7d081f43e1895695569f49f GIT binary patch literal 12032 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 JPDHLkV1l&k+718! literal 0 HcmV?d00001 diff --git a/assets/itemImg/spcode.png b/assets/itemImg/spcode.png new file mode 100644 index 0000000000000000000000000000000000000000..087c10f7d5b72f0e3c79b8712c03e1e5ce50cf4e GIT binary patch literal 1368 zcmV-e1*iInP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1no&gK~!i%?V8yu zbx|0`zrV$lDausHkPHz;ky#?4#Vbfa}M9hcb@tc=N;C5IA`s();@p8FBUbIlapf;#>U2IQ%khFyDRKz3G?&w zv?n#^k?QJdAz4{jOfPKi?d{E^7na55 z8XFs#I3P>S+~MIN69ewg(%M^5H*?d*$Wjk+roo;kZ1-#l=jmS#z$guEgKpp9BR3Y2xYW$<)H~>i+(o zvcJDiFA($i_(%tp_5A#-o9B18f-aRTEqWiE+r*JNK#S~ z@%8m(3KJ6(g}K1U$Ovr;GHPyndzM@RGzgW;!pHBC=X6E80>nim%rM;;y?q=msAU4fb$<}{>gPLJ@#VnjD_ z-kf}o1B?py!N6xz);~3eF)C3Hz+q0We0+QqB8!^Cy12NYjiG_aoL(7SIAg&Cg6sPG z`=!X2T3cJ0I7anW@axRo-rg$g?Cg-p$Vi&#=jTUeXJ?tXURG9COa{)(%oM(r04yWs z;2+W5-K{V>Ix1ypOeogyohuY<4$e=^$zjeC?9v?UmfhXm>FJXea8ibA;deO(Pi=Vd z=HO|n41OJs3b0O3PnleNq-e-ocz8IS3{Fl?G$|=5VQMQYE0x&Q)fF88OYcpbHz&G@ z%NR0e&51KU{SwLU%zb=(ke8Pi23g-_4wIamOuD+dh_|=5kfNd@=Gx#vr7TTzmOjD~ z$x?G_;+JM7H*p+vn3H5nbFhmSk)EC|Wr$@r=HP)pJercRg{(3MTbK3qbp~0yxrBrS z`WnEm2StMWl?)g+CwTITb5~barO4M8;_$V>f?bxTIW_U-FrpO-FPzU$|5)&jz_~+1 zLsCRt-)1fm2jBe~9v-HTl(c~FHsV^?ew3A!QTXqL@xZnS|8B%w zY-}tkEG!h#+}tcx3Cvjoo=`-aRScNZE8d(MsuPMeILt}>m^snS(-Jy6J84sU5jFQa aMaW-eGMOediD3Ky0000IT_ literal 0 HcmV?d00001 diff --git a/assets/itemImg/succ.png b/assets/itemImg/succ.png new file mode 100644 index 0000000000000000000000000000000000000000..c49775068dfad8f3ddfadfc691c26f48fbaa4a84 GIT binary patch literal 3135 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 literal 0 HcmV?d00001 diff --git a/assets/itemImg/topLine.png b/assets/itemImg/topLine.png new file mode 100644 index 0000000000000000000000000000000000000000..41a6042491228d584948af1b38c54dc1e6995a71 GIT binary patch literal 1709 zcmeAS@N?(olHy`uVBq!ia0y~yU^)k6YjCgu$#;1*vltlIN<3X0Ln`9l-Zjh-aThuE z@%y(aOq@zw+$!dJJ(C`N%UJQkW44Quqr#FU3*0@Kr+j?7?kLp)EXF=oLHA=i@6uI1BIlWzVfD}PsWuzvctedfmdKhB#UzS&rA)3;?a*UtXA z%jb2cy8haw%l8GWlZxk1XkcK15Hg00x=TM_``+#NaL(-Wvof!pN!xorH(Q^(T>oj+ zq=?t^p0B?rXQPv>t#8x{cv21XFk zsI0KSX77@O@2OU{rwZKl=CGf<(0EEYFa;wx4~k%#V$Zs?T=nPdl2(GsjF2>QtbSE0h-G z&0-CXQ+;+gTUzwoVbk-S@y}Wh?)q~?5gx!kP6@wV9c))^T2@)UUka$m{o3KXW@+a( zgx*zIHpdL%z*Ss4+vWt{sIYzYPV)ED{1^*(*rl1jQ{5C(A^5#WftHF?Uh6QXMi<8G zXIeM^ohqUof9#b^B_aR?R%i=s`Zj-3ZJ>GGoz~A`L2Kr8T($g!lwJbD6;j@wmH2J` zev5o*@8;RLYTerNugl(PFU-!)zBTpv_nkX;=Cj?8j*hNQON;;f`9H^l!|&O@v(M+R zvHSGBaex06_W!qkX}JB}VeS56+y7~iTiSOOa;Nui4@vGn^z-JOJ9oCrYtH#;Y4@k@ zO}s@>eE}H0`Q9%IGQsEQ^TQEb&tJx^I(WMA@r;rpC3qqU5ufpDI`hrGb-!AK8sVX0 zAlJC^UZ37WhAAJK|7X+lr;pXt3$(X&F~i z)%oD^3743Br{`SJn{&4Yl#9!+FJbqsM)tMngeRx0_)~WUnU)pQu02#4VKU#Q@NE8` ziumP$Nl59&f(KSIT+y7T4a&!7pS6nab)9D-e=Ov(8a(?s1UDX>oPOFWcIGCn?0LY# zX?ywk4X^ib+$dSq;SNvmGuRs6inG1_w_uZkfOWs6V?5@_lKKV%0cMCy-YgZ<)Bm61F%BIf4_A=ePR$cS%>V9lx zy5HjkFNEO^Wng+Nav{hnzjnWb$hnfz=R$r>mdKI;Vst E0O#tsBme*a literal 0 HcmV?d00001 diff --git a/assets/itemImg/upDataRqF.png b/assets/itemImg/upDataRqF.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f13b866a25fb39129444deb38a0d0773f3ecc5 GIT binary patch literal 748 zcmVPx%rb$FWR9HvNm)ncYQ545N-v=dROq5F$QOYE_q|5`#gEvW;2M;bq^TGrE05dPV zh{BsB4_-_Zkx03eCJ$30$|bk_0WvRgX=$DIIqmtK{X1vR`I(MYyE(sUUA}v*z1R9~ z(PdGW;?7#Yl6;iV6&vrluZ(VnJodnL(;U}0`N1hYy^{guH4oRgVb%n|%vJ%OBA1<#986_N z1y7cspx7(vTh-`g!OH+V1^R*KlGauYo@?K@1!ndhSPqOx8pw4}RWAlG4$K11N;+26 zajyM;1)%FCs2{>HNgHxgSXD1B!ExYpaM)8e@u~zgGoKCPl6;)kBnGe|u$q6`h@y7v zL+D!E1113Q4>OyRRvdg=05dAd`_04*1f_Tw`N(u0P+1BcaX`{Y5NHK$QAD zz}4{G)Z|ippvT*BL_j;{1ZH*^I3K03zevr>DA{V@MPxWBN@ivYfx&15e*z9jdQ_}u zD^j`)xC^WdMs-s9xNK5Jfe!(Tf}IB)l=L=rnA*|unZShvE%y@nL&RzMG{CR0Q!iiB zqd=E{qmq2iBxR}|CilWn^S>=63qZIXa{%vT{xsVdo@M?t`x7X<(|BLr%6;cqk_{ls eTL(&A2k;jIwfP}SAL~5;0000Px&=Sf6CR9Hv7mrraJRTRd*@6MEp#DoQH!-jNWG0>SuYb&v8j5SfBLERXluH;Y9 zmAgWuZ`$|XyaEx8AubFhYBcN`b%Fn)CJ=>%fokZyrdnO8Xt5F#|D@uZImZl5OIu#) zeSOupnm6;E@BHq$_nzEK{Kvm?=-pQrluj>}hReyX$2#h!CgVnzaYLOtH%&nKCn)W!l*<~RoNwI*u#1Kd66mU67L)iMii@f^;q*m=sU`_CFOs_1 zWTS_d1)yQ(Hlgl=VwVEvsr*B0K-rW8lo&f z-U*@&RRbhN?^&t|1v&=usGA*m+h)r2Q0uLdn4Vb>pu;$BBM*EvxiEgwDJbW?oH6VN z+3RFS4%#H1(Uc2*m!Wn7Y$wpBK)XP@D=o%~02+GR1w1J#_tf=`o~<4gJ zfnkEfN(?Vnz3Tw9xMi!Td|_N^;q#;4Rg*l`>cQ5{fE)9`g>jqMc>tPgTdR(oQpoF0 zPPoi@2?fTDMoD9@Ti>X{q;rxs(I*f{S$M1v2UAmTJY*w!LQ z#tn4?v!x$wOlr}@1^;Ohhnyf37_w|)cS9VZ*@Udq_^dlLFe;Is*%?zu6Q&xA#VwkQQXuJ8Gt}px*p!GKpF8K)6_{7X(A%!WUR6Gl-grdxJ>y_PflI3R zi$oKFCMvfov>W7~lIWYRn;e^2?TbNM-wjiPv?6htJ81X-p$z~V0IVVK3&2T0zZGK0 n%|=5@RcYpXRRFf8)#&~OV*#Wv3r$}000000NkvXXu0mjflDP@T literal 0 HcmV?d00001 diff --git a/assets/itemImg/wm01.jpg b/assets/itemImg/wm01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3a2369fc75bd2c06901a12be45cd21b257d268b GIT binary patch literal 18397 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

w_v26pxjb^6>)q>+a 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 literal 0 HcmV?d00001 diff --git a/assets/itemImg/wm02.jpg b/assets/itemImg/wm02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7dddd5d466ab6c33e805f6512af9eb4115f3ef38 GIT binary patch literal 18586 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 W0+P@G2LS(IlD?DSzmvej-v0xC(rB>& literal 0 HcmV?d00001 diff --git a/assets/itemImg/wm03.jpg b/assets/itemImg/wm03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50ecc7ab276392f2c57f1c30bfe8097a713e9695 GIT binary patch literal 18559 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 literal 0 HcmV?d00001 diff --git a/components/advertisement/advertisement.js b/components/advertisement/advertisement.js new file mode 100644 index 0000000..910aa20 --- /dev/null +++ b/components/advertisement/advertisement.js @@ -0,0 +1,38 @@ +// components/advertisement.js +const Http = require("../../utils/HttpBasics"); +var config = require("../../config/config.js"); +Component({ + properties: { + ggdata: { + type: Object, + value: {} + } + }, + data: { + flag: false, + alphaData1: null, + }, + methods: { + gotoGg: function (e) { + console.log(this.data.ggdata) + let that = this; + + tt.navigateTo({ + url: `/${that.data.ggdata.pagePath}&g=1`, + }) + }, + a: function () { + this.setData({ flag: false }) + }, + closeGg: function () { + let that = this; + var animation = tt.createAnimation({}) + // animation.opacity(0).step({ duration: 1000 }) + setTimeout(function () { + that.setData({ flag: true }) + }, 500) + animation.rotateZ(180).scale(0).opacity(0.5).step({ duration: 1000 }) + that.setData({ alphaData1: animation.export() }); + }, + }, +}); diff --git a/components/advertisement/advertisement.json b/components/advertisement/advertisement.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/advertisement/advertisement.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/advertisement/advertisement.ttml b/components/advertisement/advertisement.ttml new file mode 100644 index 0000000..8bc06aa --- /dev/null +++ b/components/advertisement/advertisement.ttml @@ -0,0 +1,12 @@ + + diff --git a/components/advertisement/advertisement.ttss b/components/advertisement/advertisement.ttss new file mode 100644 index 0000000..d6b68a9 --- /dev/null +++ b/components/advertisement/advertisement.ttss @@ -0,0 +1,47 @@ +/* components/advertisement.wxss */ +.b1{ + position:fixed; + width:100%; + height:100%; + top:0px; + background:rgba(0,0,0,0.8); + overflow: hidden; + z-index: 1000; +} +.b3{ + /* margin:0 auto; */ + width:100%; + height:100%; + position:relative; +} +.t_w{ + width: 100%; + position: absolute; + top: 50%; + left: 50%; + margin-top: -50%; + margin-left: -50%; +} +.b2{ + overflow: hidden; + border-radius: 10rpx; +} +.t_image{ + width: 70%; + border-radius: 16rpx; + display: block; + margin: 0 auto; +} +.cancel_icon{ + position: absolute; + right: 65rpx; + top: -40rpx; +} +.line{ + width:2rpx; + height: 75rpx; + background: #fff; + position: absolute; + right: 370rpx; + bottom: -125rpx; +} \ No newline at end of file diff --git a/components/banner/index.js b/components/banner/index.js new file mode 100644 index 0000000..c1e9a06 --- /dev/null +++ b/components/banner/index.js @@ -0,0 +1,91 @@ +// pages/index/sw/index.js +const imgurl = require("../../utils/imgurl"); +const app = getApp() + +Component({ + /** + * 组件的属性列表 + */ + properties: { + list: { + value: [], + type: Array + } + }, + + /** + * 组件的初始数据 + */ + data: { + bannerUrl: imgurl.banner.url, + currentIndex: 0, + mouldType:0, + }, + + /** + * 组件的方法列表 + */ + methods: { + gotobannerdetail: function(e) { + console.log(this.data.list) + if (e.currentTarget.dataset.data.type == 3) { + // 小程序路径 + let indexOf = (e.currentTarget.dataset.data.pagePath).indexOf("="); + console.log(indexOf, "123") + let id = (e.currentTarget.dataset.data.pagePath).substring(indexOf); + let type = (e.currentTarget.dataset.data.pagePath).substr(indexOf + 1, 2)// 2020/7/22 变量获取pagePath中的type + console.log(indexOf, id, type); + console.log(e.currentTarget.dataset.data.pagePath) + if(type == 'cd' || type == 'sd'){ + tt.navigateTo({ + url: `/${e.currentTarget.dataset.data.pagePath}`, + }) + }else if(type == "wj"){ + tt.navigateTo({ + url: `/pages/questionnaire/questionnaire?id=${id}`, + }) + }else if (type == 'ra'){ + tt.navigateTo({ + url: `/pages/radetail/index?id=${id}`, + }) + } + }else if(e.currentTarget.dataset.data.type==2){ + // 自由图文 + tt.navigateTo({ + url: `/pages/freeBannerDetail/index?id=${e.currentTarget.dataset.id}` + }); + }else if(e.currentTarget.dataset.data.type==4){ + tt.navigateToMiniProgram({ + appId: e.currentTarget.dataset.data.goAppid, + // path: 'page/index/index?id=123', + // extraData: { + // foo: 'bar' + // }, + // envVersion: 'develop', + success(res) { + // 打开成功 + } + }) + } + else{ + // 固定格式 + tt.navigateTo({ + url: `/pages/bannerdetail/bannerdetail?id=${e.currentTarget.dataset.id}` + }); + } + }, + handleChange: function (e) { + this.setData({ + currentIndex: e.detail.current + }) + }, + }, + attached: function () { + // 在组件实例进入页面节点树时执行 + if (app.globalData.mouldType){ + this.setData({ + mouldType: app.globalData.mouldType + }) + } + }, +}); diff --git a/components/banner/index.json b/components/banner/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/banner/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/banner/index.ttml b/components/banner/index.ttml new file mode 100644 index 0000000..e17e103 --- /dev/null +++ b/components/banner/index.ttml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/banner/index.ttss b/components/banner/index.ttss new file mode 100644 index 0000000..0f3add7 --- /dev/null +++ b/components/banner/index.ttss @@ -0,0 +1,81 @@ +.imageContainer { + width: 100%; + height: 304rpx; + } + + .itemImg { + position: absolute; + width: 640rpx; + height: 227rpx; + border-radius: 15rpx; + overflow: hidden; + z-index: 5; + opacity: 0.7; + top: 20%; + margin: 0 20rpx; + } + + .active { + opacity: 1; + z-index: 10; + width: 640rpx; + height: 270rpx; + top: 11%; + transition: all 0.2s ease-in 0s; + } + + .item { + width: 100%; + height: 304rpx; + overflow: hidden; + border-radius: 16rpx; + } + + .index-slide-view { + margin-top: -30rpx; + } + .index-slide-view1 { + margin-top: -40rpx; + } + + .imageContainer1 { + width: 100%; + height: 400rpx; + } + + .itemImg1 { + position: absolute; + width: 640rpx; + height: 360rpx; + border-radius: 15rpx; + overflow: hidden; + z-index: 5; + opacity: 0.7; + top: 12%; + margin: 0 20rpx; + } + + .active1_a { + opacity: 1; + z-index: 10; + width: 640rpx; + top: 11%; + transition: all 0.2s ease-in 0s; + } + + .active1 { + opacity: 1; + z-index: 10; + width: 640rpx; + height: 310rpx; + top: 17%; + transition: all 0.2s ease-in 0s; + } + + .item1 { + width: 100%; + height: 360rpx; + overflow: hidden; + border-radius: 16rpx; + } + \ No newline at end of file diff --git a/components/commodityBox/commodityBox.js b/components/commodityBox/commodityBox.js new file mode 100644 index 0000000..80cc9e1 --- /dev/null +++ b/components/commodityBox/commodityBox.js @@ -0,0 +1,32 @@ + +Component({ + data: { + schedule:0 + }, + properties: { + item:{ + type:Object, + value:{} + } + }, + methods: { + + go(e){ + let url = e.currentTarget.dataset.url + tt.navigateTo({ + url: url, // 指定页面的 url + success: (res) => { + + }, + fail: (res) => { + + }, + }); + } + }, + // created:function(){ + + + // } + +}) \ No newline at end of file diff --git a/components/commodityBox/commodityBox.json b/components/commodityBox/commodityBox.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/commodityBox/commodityBox.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/commodityBox/commodityBox.ttml b/components/commodityBox/commodityBox.ttml new file mode 100644 index 0000000..fb2be1a --- /dev/null +++ b/components/commodityBox/commodityBox.ttml @@ -0,0 +1,27 @@ + + + + + + {{item.title}} + + + + + {{item.remainInventoryText}} + + + + + + {{item.salePriceStr}} + + ¥{{item.priceStr}} + + 免费领取 + 立即购买 + 已售空 + + + + \ No newline at end of file diff --git a/components/commodityBox/commodityBox.ttss b/components/commodityBox/commodityBox.ttss new file mode 100644 index 0000000..a7bdda4 --- /dev/null +++ b/components/commodityBox/commodityBox.ttss @@ -0,0 +1,121 @@ +.commodityBox{ + width:96%; + margin: 20rpx auto 0 auto; + background-color: #ffffff; + overflow: hidden; + border-radius: 10rpx; + } + .commodiImg{ + float: left; + width: 300rpx; + height: 176rpx; + border-radius: 10rpx; + /* background-color: aqua; */ + margin: 20rpx; + + } + .img{ + width: 300rpx; + height: 176rpx; + border-radius: 10rpx; + } + .textBox{ + width: 50%; + float: left; + margin-top: 20rpx; + font-size: 28rpx; + + } + .title{ + height: 80rpx; + overflow:hidden; + text-overflow:ellipsis; + display:-webkit-box; + -webkit-box-orient:vertical; + -webkit-line-clamp:2; + font-size: 30rpx; + font-weight: 500; + } + .marketBox{ + overflow: hidden; + height: 40rpx; + } + .progress{ + height: 20rpx; + width: 46%; + border-radius: 10rpx; + float: left; + background-color: #e6e6e6; + margin-top: 10rpx; + position: relative; + overflow: hidden; + } + .progress_a{ + /* width: 20%; */ + height: 20rpx; + /* border-radius: 10rpx; */ + background-color: #fb3e5c; + position: absolute; + top: 0; + left: 0; + } + .progressText{ + float: right; + width: 50%; + font-size: 26rpx; + color: #707070; + } + .payBox{ + overflow: hidden; + } + .payNumBox{ + float: left; + /* overflow: hidden; + height: 40rpx; */ + } + .payIcon{ + font-size: 24rpx; + float: left; + color: #fb3e5c; + line-height: 40rpx; + } + .price{ + height: 40rpx; + line-height: 40rpx; + float: left; + font-size: 30rpx; + color: #fb3e5c; + } + .original{ + font-size: 26rpx; + color: #707070; + text-decoration: line-through; + } + + .payBtn{ + color: #fff; + background:linear-gradient(to right,#fc3e5a,#f86883); + float: right; + margin-right: 10%; + margin-top: 20rpx; + height: 60rpx; + line-height: 60rpx; + width: 180rpx; + text-align: center; + border-radius: 60rpx; + margin-bottom: 20rpx; + } + .noBtn{ + color: #fff; + background:#e6e6e6; + float: right; + margin-right: 10%; + margin-top: 20rpx; + height: 60rpx; + line-height: 60rpx; + width: 180rpx; + text-align: center; + border-radius: 60rpx; + margin-bottom: 20rpx; + } + \ No newline at end of file diff --git a/components/commodityMould/commodityMould.js b/components/commodityMould/commodityMould.js new file mode 100644 index 0000000..779149d --- /dev/null +++ b/components/commodityMould/commodityMould.js @@ -0,0 +1,133 @@ +const util = require("../../utils/util"); +Component({ + /** + * 组件的属性列表 util.toHHmmss(res.data.endTime,); + */ + properties: { + special:{ + type: Boolean, + value: false + }, + titleImgUrl:{ + type:String, + value:"", + }, + isShowCount:{ + type: Boolean, + value: false + }, + obj:{ + type:Object, + value:{} + } + }, + + /** + * 组件的初始数据 + */ + data: { + setIntervalLsit:[] + }, + + attached: function () { + let this_ =this + let arr = [] + let tempLsit = [] + // 处理首页定时 + if (this_.properties.obj.couponList!=null&&this_.properties.obj.couponList.length>0){ + //限时抢购 倒计时 + this_.properties.obj.couponList.map((item,index)=>{//初次渲染 + if (item.targetAd==2){ + let tempObj = {} + let beginTime = item.beginTime;//开始时间 + let endTime = item.endTime;//结束时间 + let present = new Date().getTime()//当前时间 + let textTime = item.beginTime >= present?"距开始":"距结束" + tempObj={ + value: item.beginTime >= present ? beginTime - present : endTime - present, + valueText: item.beginTime >= present ? util.toHHmmss(beginTime - present) : util.toHHmmss(endTime - present), + // vaFlag: tempObj.value<=0?true:false,//活动是否结束 + index:index, + interval:"" , + beginTime: beginTime,//开始时间 + endTime: endTime,//开始时间 + textTime: textTime + } + arr.push(tempObj) + this_.setData({ + setIntervalLsit: arr + }) + } + }) + } + tempLsit =this_.data.setIntervalLsit + tempLsit.map((item,index)=>{//再次渲染 + + item.interval = setInterval(function(){ + let present = new Date().getTime()//当前时间 + if(item.value<=1){ + + clearInterval(item.interval) + item.vaFlag = true,//活动是否结束 + console.log(item.value, "活动已经结束") + }else{ + + + let tempTime = item.beginTime >= present ? item.beginTime - present : item.endTime - present + // console.log(tempTime, "presents") + item.value = tempTime, + item.valueText = util.toHHmmss(tempTime - 1000) + item.textTime = item.beginTime >= present ? "距开始" : "距结束", + item.vaFlag= item.value <= 0 ? true : false,//活动是否结束 + this_.setData({ + setIntervalLsit: tempLsit + }) + + } + },1000) + }) + // 处理首页定时 + }, + detached: function () { + this.data.setIntervalLsit.map(item=>{ + clearInterval(item.interval) + }) + console.log("88888") + // 在组件实例被从页面节点树移除时执行 ; + }, + + /** + * 组件的方法列表 + */ + methods: { + lookAll(){ + tt.navigateTo({ + url: `/${this.properties.obj.weappPath}`, + }) + }, + goDetail(e){ + console.log(e.currentTarget.dataset) + let couponChannelId = e.currentTarget.dataset.id + let couponId = e.currentTarget.dataset.couponid + let type = e.currentTarget.dataset.type + if (type==9){ + tt.navigateTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${couponChannelId}&couponId=${couponId}`, + }) + }else{ + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${couponChannelId}&couponId=${couponId}`, + }) + } + + + }, + gotoTopic(e) { + + let id = e.currentTarget.dataset.id + tt.navigateTo({ + url: `/pages/topicDetail/index?id=${id}` + }) + }, + } +}) diff --git a/components/commodityMould/commodityMould.json b/components/commodityMould/commodityMould.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/commodityMould/commodityMould.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/commodityMould/commodityMould.ttml b/components/commodityMould/commodityMould.ttml new file mode 100644 index 0000000..2724943 --- /dev/null +++ b/components/commodityMould/commodityMould.ttml @@ -0,0 +1,65 @@ + + + + + + + + + + + + {{obj.name}} + 查看更多优惠活动 + + + + + + + + +

+ + + + \ No newline at end of file diff --git a/components/commodityMould/commodityMould.ttss b/components/commodityMould/commodityMould.ttss new file mode 100644 index 0000000..8275bed --- /dev/null +++ b/components/commodityMould/commodityMould.ttss @@ -0,0 +1,259 @@ +.commBox { + width: 96%; + margin: 27rpx auto; + background-color: #fff; + border-radius: 20rpx; + overflow: hidden; + } + + .titleBox { + width: 100%; + overflow: hidden; + height: 140rpx; + background-image: url("https://formall.oss-accelerate.aliyuncs.com/cimg/v20211214/home_icon_d9qt.png"); + background-size: 100% 100%; + background-repeat: no-repeat; + } + + .titleImg { + width: 180rpx; + height: 40rpx; + float: left; + margin: 20rpx; + display: block; + } + + .specialTitle { + float: left; + margin: 10rpx 20rpx; + font-size: 38rpx; + font-family: YouSheBiaoTiHei; + font-weight: 600; + color: #37332d; + } + + .more { + float: right; + font-size: 24rpx; + font-family: OPPOSans; + font-weight: 500; + color: #866741; + margin: 16rpx 20rpx; + } + + .rup { + width: 13rpx; + height: 20rpx; + margin: 2rpx 0 0 6rpx; + } + + .contBox { + overflow: hidden; + /* width: 96%; */ + margin: -50rpx auto 0 auto; + } + + .topImg { + width: 100%; + height: 140rpx; + border-radius: 16rpx; + margin-bottom: 40rpx; + /* background-color: chartreuse; */ + } + + .topImg image { + border-radius: 16rpx; + width: 100%; + height: 100%; + } + + .itemBox { + overflow: hidden; + display: -webkit-box; + overflow-x: scroll; + -webkit-overflow-scrolling: touch; + margin: 20rpx auto; + width: 96%; + } + + .itemBox::-webkit-scrollbar { + display: none; + } + + .item { + width: 240rpx; + /* background-color: antiquewhite; */ + margin-right: 20rpx; + } + + .itemImg { + position: relative; + width: 240rpx; + height: 240rpx; + border-radius: 16rpx; + /* background-color: aquamarine; */ + } + + .itemImg image { + width: 100%; + height: 100%; + border-radius: 16rpx; + } + + .sellout { + position: absolute; + top: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.5); + width: 240rpx; + height: 240rpx; + border-radius: 20rpx; + } + + .selloutImg { + width: 195rpx !important; + height: 154rpx !important; + margin: 18% auto; + display: block; + } + + .titleNameBox { + /* font-size: 18px; */ + height: 80rpx; + line-height: 40rpx; + display: flex; + align-items: center; + justify-content: center; + } + + .titleName { + width: 100%; + font-size: 28rpx; + font-family: OPPOSans; + font-weight: 500; + color: #333; + margin-top: 10rpx; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + } + + .priceBox { + overflow: hidden; + margin: 10rpx 0; + } + + .f { + float: left; + } + + .r { + float: right; + } + + .sellingBox { + overflow: hidden; + } + + .fuhao { + color: #df2d2d; + font-size: 24rpx; + float: left; + font-family: OPPOSans; + /* font-weight: bold; */ + margin-top: 10rpx; + } + + .int { + float: left; + font-size: 36rpx; + font-family: OPPOSans; + font-weight: bold; + color: #df2d2d; + } + + .originalBox { + overflow: hidden; + } + + .origina { + text-align: right; + font-size: 24rpx; + font-family: OPPOSans; + font-weight: 400; + text-decoration: line-through; + color: #999; + margin-top: 10rpx; + margin-right: 10rpx; + } + + .countBox { + width: 100%; + height: 46rpx; + background-image: url("https://formall.oss-accelerate.aliyuncs.com/cimg/v20211214/home_icon_bq.png"); + background-size: 100% 100%; + background-repeat: no-repeat; + margin-bottom: 20rpx; + line-height: 46rpx; + overflow: hidden; + } + + .countText { + font-size: 22rpx; + font-family: OPPOSans; + font-weight: 400; + color: #999; + background: linear-gradient(180deg, #dcb07d 0%, #f5e0bf 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + margin-left: 8rpx; + } + + .countDate { + font-size: 24rpx; + font-family: OPPOSans; + font-weight: bold; + color: #4c3820; + margin-right: 8rpx; + } + + .moreItem { + background: #f7f7f7; + border-radius: 8px; + } + + .noDataImg { + width: 160rpx; + height: 160rpx; + margin: 25% auto 5% auto; + } + + .noDataImg image { + width: 100%; + height: 100%; + } + + .noDataText { + text-align: center; + font-size: 22rpx; + font-family: OPPOSans; + font-weight: 500; + color: #999; + } + + .product { + width: 96%; + height: 140rpx; + margin: 30rpx auto 10rpx; + border-radius: 16rpx; + overflow: hidden; + } + + .product image { + height: 100%; + display: block; + width: 100%; + } + \ No newline at end of file diff --git a/components/coupons/index.js b/components/coupons/index.js new file mode 100644 index 0000000..a2c675f --- /dev/null +++ b/components/coupons/index.js @@ -0,0 +1,46 @@ +const app = getApp() +Component({ + /** + * 组件的属性列表 + */ + properties: { + paramAtoB: String, + from: String, + data: { + value: {}, + type: Object + }, + }, + + /** + * 组件的初始数据 + */ + data: { + mouldType: 0, + }, + attached: function () { + // 在组件实例进入页面节点树时执行 + if (app.globalData.mouldType) { + this.setData({ + mouldType: app.globalData.mouldType + }) + } + }, + methods: { + gotoDetail(e) { + let couponId = e.currentTarget.dataset.couponid; + let title = e.currentTarget.dataset.title; + let id = e.currentTarget.dataset.id; + let targetAd = e.currentTarget.dataset.targetad; + if (id && targetAd != 7) { + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${id}&couponId=${couponId}&title=${title}`, + }) + } else if (targetAd == 7) { + tt.navigateTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${id}&couponId=${couponId}&title=${title}`, + }) + } + } + } +}); \ No newline at end of file diff --git a/components/coupons/index.json b/components/coupons/index.json new file mode 100644 index 0000000..34e4209 --- /dev/null +++ b/components/coupons/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "i-button": "../../dist/button/index" + } +} \ No newline at end of file diff --git a/components/coupons/index.ttml b/components/coupons/index.ttml new file mode 100644 index 0000000..a2c4cfd --- /dev/null +++ b/components/coupons/index.ttml @@ -0,0 +1,75 @@ + + 预售 + + + + + + + + + + 限时券 + 砍价券 + 拼团券 + 消费卡 + + + + + + + {{data.title}} + {{data.subTitle}} + + + ¥ + {{data.salePriceStr}} + ¥{{data.priceStr}} + + + 抢购价 + ¥{{data.salePriceStr}} + + + 可砍至 + ¥{{data.salePriceStr}} + + + 拼团价 + ¥{{data.salePriceStr}} + + + + + {{data.priceStr}}小时 + + + + {{data.priceStr}}小时 + + + + 预售定金:¥{{data.salePriceStr}} + + + + + + 免费领 + 购买 + + 去抢购 + + 去砍价 + + 去拼团 + 已售罄 + 已下架 + + + \ No newline at end of file diff --git a/components/coupons/index.ttss b/components/coupons/index.ttss new file mode 100644 index 0000000..8cd561a --- /dev/null +++ b/components/coupons/index.ttss @@ -0,0 +1,372 @@ +@import "../../app.ttss"; + +.coupons { + position: relative; + width: 340rpx; + display: inline-block; + overflow: hidden; + border-radius: 12rpx; +} +.earnest{ + color: red; + font-size: 24rpx; + padding-left: 10rpx; +} +.coupons-border { + height: 1rpx; + left: 30rpx; + right: 30rpx; + background: #f5f5f5; + position: absolute; + bottom: 0; +} + +.coupons-img image { + display: block; + width: 300rpx; + height: 176rpx; + margin: 20rpx auto 0; + /* border-top-left-radius: 10rpx; + border-top-right-radius: 10rpx; */ +} + +.coupons-info { + width: 90%; + height: 152rpx; + border-radius: 0rpx 0rpx 10rpx 10rpx; + background: #fff; + margin: 0 auto; +} + +.coupons-info-name { + font-size: 30rpx; + color: #3c3c3c; + letter-spacing: 0; + line-height: 38rpx; +} + +.coupons-info-price { + padding: 16rpx 0 0; +} + +.i { + font-size: 24rpx; + font-style: normal; +} + +.coupons-info-price-p { + display: inline-block; + font-size: 50rpx; + margin-bottom: 26rpx; + width: 100%; +} + +.price { + font-size: 36rpx; + font-family: PingFang-SC-Bold; + font-weight: bold; + line-height: 44rpx; + margin-left: 16rpx; + padding-top: 16rpx; + color: #fd832d; + width: 60%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.rmb { + font-size: 24rpx !important; + margin-right: 4rpx !important; + color: #FD782D!; +} + +.num { + color: #fd782d; +} + +.tit { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 28rpx; + line-height: 32rpx; + padding-top: 20rpx; + padding-left: 10rpx; + color: #333; + letter-spacing: 0; +} + +.coupons-info-price-o { + display: block; + text-align: center; + font-size: 26rpx; + color: #b4b4b4; + letter-spacing: 0.96rpx; + text-decoration: line-through; + line-height: 24rpx; +} + +.coupons-info-distance { + font-size: 22rpx; + color: #c0c0c0; + letter-spacing: 0; + padding-bottom: 10rpx; + line-height: 30rpx; +} + +.coupons-info-address { + font-size: 22rpx; + color: #585858; + letter-spacing: 0; + line-height: 30rpx; +} + +.coupons-btn { + position: absolute; + bottom: 14rpx; + right: 24rpx; +} + +.coupons-btn-gm { + border-radius: 10px !important; + margin: 0 !important; + padding: 0 !important; + font-size: 26rpx; + color: #fff !important; + letter-spacing: 0; + height: 51rpx !important; + width: 100rpx !important; + line-height: 51rpx !important; + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%) !important; +} + +.coupons-btn-gms { + background: #b9b9b9 !important; + border-radius: 10px !important; + opacity: 0.6; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold; + font-size: 26rpx; + font-weight: 400; + color: #fff !important; + letter-spacing: 0; + height: 51rpx !important; + width: 100rpx !important; + line-height: 51rpx !important; +} + +.subtitle { + font-size: 24rpx; + color: #999; + overflow: hidden; + height: 24rpx; + width: 65%; + padding-left: 10rpx; + line-height: 24rpx; + white-space: nowrap; + text-overflow: ellipsis; + margin-top: 12rpx; +} + +.coupons-info-manjian { + font-weight: normal; + font-size: 20rpx; + line-height: 34rpx; + display: inline-block; + color: #ff4949; + letter-spacing: 0; +} + +.coupons-info-manjian1 { + font-weight: normal; + font-size: 20rpx; + line-height: 22rpx; + color: #919191; + letter-spacing: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + width: 300rpx; + margin-top: 16rpx; +} + +.coupons-info-manjian text { + display: block; + line-height: 20rpx; +} + +.coupons-info-manjian > text:nth-of-type(1) { + display: block; + /* color: #FF4949; */ + opacity: 0.6; +} + +.view02 { + font-size: 20rpx; + line-height: 34rpx; + text-decoration: line-through; + color: #999 !important; + font-weight: normal; + letter-spacing: 0; + margin-left: 10rpx; +} + +.view01 { + text-decoration: line-through; + color: #999 !important; +} + +.txt2 { + display: block; + color: #ccc; +} + +/**上拉加载更多**/ + +.userinfo { + display: flex; + flex-direction: column; + align-items: center; +} + +.userinfo-avatar { + width: 128rpx; + height: 128rpx; + margin: 20rpx; + border-radius: 50%; +} + +.userinfo-nickname { + color: #aaa; +} + +.sy { + display: block; + text-align: right; + width: 181rpx; + font-size: 24rpx; + color: #999; + height: 40rpx; + margin-top: 106rpx; +} + +.usermotto { + margin-top: 200px; +} + +scroll-view { + width: 100%; +} + +.item { + width: 90%; + height: 300rpx; + margin: 20rpx auto; + background: brown; + overflow: hidden; +} + +.item .img { + width: 430rpx; + margin-right: 20rpx; + float: left; +} + +.title { + font-size: 30rpx; + display: block; + margin: 30rpx auto; +} + +.description { + font-size: 26rpx; + line-height: 15rpx; +} + +.navigator-hover { + opacity: 1 !important; + background: #fff; +} + +.hover { + opacity: 0.6; +} + +.navigator { + display: inline-block; + background: #fff; + border-radius: 12rpx; + position: relative; +} + +.presell { + position: absolute; + width: 300rpx; + height: 40rpx; + background-color: rgba(247, 21, 21, 0.6); + z-index: 100; + top: 158rpx; + line-height: 20px; + text-align: center; + color: #fff; + margin-left: 20rpx; + font-size: 26rpx; +} + +.navigator:nth-of-type(2n+1) { + /* margin-right: 10rpx; */ +} + +.superscript { + position: absolute; + top: -10rpx; + left: -12rpx; + width: 86rpx; + height: 86rpx; + overflow: hidden; +} + +/* 使用背景色渐变 */ + +.superscript .gradual { + width: 100%; + height: 100%; + background: linear-gradient(135deg, #31b968 50%, transparent 50%); +} + +/* 使用三角形 */ + +.superscript .triangle { + width: 0; + height: 0; + border-top: 130rpx solid #31b968; + border-right: 130rpx solid transparent; +} + +/* 使用矩形旋转, 和父节点的 overflow:hidden 配合 */ + +.superscript .rect { + width: 176rpx; + height: 183rpx; + margin: -91rpx 0 0 -91rpx; + transform: rotateZ(45deg); +} + +.superscript .desc { + position: absolute; + top: 29%; + left: 16%; + z-index: 1; + color: #fff; + font-size: 23rpx; + transform: rotate(-45deg); +} + +.saleprice { + font-size: 24rpx; + display: inline-block; + margin-right: 10rpx; + font-weight: 400; +} diff --git a/components/getPhoen/getPhoen.js b/components/getPhoen/getPhoen.js new file mode 100644 index 0000000..098829f --- /dev/null +++ b/components/getPhoen/getPhoen.js @@ -0,0 +1,120 @@ +const config = require("../../config/config"); +const Http = require("../../utils/HttpBasics"); +// d:\fumaolianke\ttFmC\tt富茂C\components\getPhoen\getPhoen.js +Component({ + data: { + phone: "", + auth: "", + time: "获取验证码", + verFlag: true, + currentTime: 61, + setInter: '' + }, + properties: { + type: Boolean, + showBox: false + }, + + methods: { + getCode() { + var that = this; + var currentTime = that.data.currentTime + that.data.setInter = setInterval(function () { + currentTime--; + that.setData({ + time: currentTime + '秒' + }) + if (currentTime <= 0) { + clearInterval(that.data.setInter) + that.setData({ + time: '获取验证码', + currentTime: 61, + verFlag: true + }) + } + }, 1000) + }, + setPhone(e) { + this.setData({ + phone: e.detail.value + }) + }, + setAuth(e) { + this.setData({ + auth: e.detail.value + }) + }, + verify() { + let phoneReg = /(^1[3|4|5|7|8]\d{9}$)|(^09\d{8}$)/; + if (!this.data.verFlag) { + return + } + if (phoneReg.test(this.data.phone)) { + Http.get({ + url: config.api.sendValidationCode, + data: { + phone: this.data.phone, + type:6 + } + }).then(res => { + console.log(res, "res"); + this.setData({ + verFlag: false + }) + this.getCode() + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, // 内容 + icon: "none" + }); + }) + } else { + tt.showToast({ + title: '手机号有误', + icon: "none", + }) + } + + }, + hieBox(){ + this.triggerEvent("heiBox" ,false) + }, + hiePhoen(){ + this.triggerEvent("hiePhoen" ,false) + }, + send() { + let phoneReg = /(^1[3|4|5|7|8]\d{9}$)|(^09\d{8}$)/; + if (phoneReg.test(this.data.phone)) { + if(this.data.auth!=""){ + Http.get({ + url: config.api.validationCode, + data: { + phone: this.data.phone, + code: this.data.auth, + type:6 + } + }).then(res => { + this.hiePhoen() + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, // 内容 + icon: "none" + }); + }) + }else{ + tt.showToast({ + title: '请输入验证码', + icon: "none", + }) + } + + } else { + tt.showToast({ + title: '手机号有误', + icon: "none", + }) + } + + } + } +}) \ No newline at end of file diff --git a/components/getPhoen/getPhoen.json b/components/getPhoen/getPhoen.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/getPhoen/getPhoen.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/getPhoen/getPhoen.ttml b/components/getPhoen/getPhoen.ttml new file mode 100644 index 0000000..25de3cf --- /dev/null +++ b/components/getPhoen/getPhoen.ttml @@ -0,0 +1,29 @@ + + + + 授权手机号 + + + + + + + {{time}} + + + 授权手机号 + + \ No newline at end of file diff --git a/components/getPhoen/getPhoen.ttss b/components/getPhoen/getPhoen.ttss new file mode 100644 index 0000000..87469e0 --- /dev/null +++ b/components/getPhoen/getPhoen.ttss @@ -0,0 +1,95 @@ +.box{ + width: 100%; + height: 100vh; + position: fixed; + top: 0; + left: 0; + background: rgba(0, 0, 0, 0.3); + z-index: 100000; +} +.phoneBox{ + position: absolute; + width: 80%; + /* height: 200rpx; */ + border-radius: 12rpx; + background-color: #f6f6f6; + transform: translate(-50%, -50%); + top: 50%; + left: 50%; + overflow: hidden; + +} +.userPhone{ + overflow: hidden; + margin: 20rpx ; +} +.inputPhone{ + float: left; + text-indent: 40rpx; + font-size: 28rpx; + color: #000; + letter-spacing: 0; + margin-top: 28rpx; + width: 50%; + display: block; +} +.btn{ + width: 210rpx !important; + border-radius: 16rpx; + margin-top: 12rpx; + margin-right: 30rpx; + font-size: 30rpx!important; + letter-spacing: 0; + padding: 0!important; + float: right; + height: 80rpx; + line-height: 80rpx; + background: #52a0fd; + color: #fff; + text-align: center; +} +.auth{ + width: 50%; + text-indent: 40rpx; + font-size: 28rpx; + color: #000; + letter-spacing: 0; + margin: 20rpx; +} +.send{ + width: 80%; + line-height: 80rpx; + height: 80rpx; + background: #52a0fd; + color: #fff; + font-size: 36rpx; + text-align: center; + margin: 40rpx auto 20rpx auto; + border-radius: 12rpx; + font-size: 30rpx; +} +.hiePhone{ + width: 80%; + + margin: 10rpx auto; + overflow: hidden; +} +.f{ + float: left; + font-size: 30rpx; + height: 60rpx; + line-height: 60rpx; + margin-left: 30%; +} +.r{ + width: 40rpx; + height: 40rpx; + /* line-height: 60rpx; */ + text-align: center; + float: right; + margin-top: 10rpx; + /* font-size: 30rpx; */ +} +input{ + text-align: left; +} \ No newline at end of file diff --git a/components/hot/hot.js b/components/hot/hot.js new file mode 100644 index 0000000..174cfd5 --- /dev/null +++ b/components/hot/hot.js @@ -0,0 +1,143 @@ +// pages/index/sw/index.js +let config = require("../../config/config.js"); +let Http = require("../../utils/HttpBasics"); +let app = getApp(); +const imgurl = require("../../utils/imgurl"); +const bgColor = require("../../utils/bgColor.js") +Component({ + /** + * 组件的属性列表 + */ + properties: {}, + + /** + * 组件的初始数据 + */ + data: { + sql: bgColor.colorFirst.main.sql, + txt: bgColor.colorFirst.main.txt, + change: imgurl.change.url, + None: imgurl.None.url, + jianUrl: imgurl.jian.url, + barginicon: imgurl.barginicon.url, + wangmeimeibargin: imgurl.wangmeimeibargin.url, + kData:[], + kSize:'', + pSize: '', + pData:[], + couponId:'', + couponId1: '', + }, + /** + * 组件的方法列表 + */ + methods: { + //获取砍价拼团数据 + getList(val) { + // debugger + let that = this; + let param = '' + if(val=='1'){ + param={ + targetAd : 6, + couponId: this.data.couponId + } + }else{ + param = { + targetAd : 7, + couponId: this.data.couponId1 + } + } + Http.get({ + url: config.api.change, + data:param, + }).then(res => { + if(res.data != undefined && res.data){ + if(val=='1'){ + that.setData({ + kData: res.data.data, + kSize: res.data.size, + couponId: res.data.data.couponId, + }); + }else{ + that.setData({ + pData: res.data.data, + pSize:res.data.size, + couponId1: res.data.data.couponId + }); + + } + } else { + if(val=='1'){ + that.setData({ + kData: '', + kSize: '', + couponId: '', + }); + }else{ + that.setData({ + pData: '', + pSize:'', + couponId1: '' + }); + + } + } + + }) + .catch(err => { + console.log(err) + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + // 换一换 + getChange(){ + let that = this + if (that.kSize != 1 && that.kSize != 0){ + that.getList(1) + } + if (that.pSize!=1 && that.pSize !=0) { + that.getList(2) + } + }, + //跳转砍价详情 + gotokjdetail: function (e) { + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${ + e.currentTarget.dataset.couponchannelid + }&couponId=${ + e.currentTarget.dataset.couponid + }&targetAd=${ + e.currentTarget.dataset.targetad + }` + }); + }, + //跳转拼团详情 + gotoptdetail: function (e) { + tt.navigateTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${ + e.currentTarget.dataset.couponchannelid + }&couponId=${ + e.currentTarget.dataset.couponid + }&targetAd=${ + e.currentTarget.dataset.targetad + }` + }); + }, + }, + ready() { + app.couponChannelListCallback = (token,val) => { + Http.setToken(token); + this.getList(1); + this.getList(2); + }; + if (app.globalData.token && app.globalData.token != null) { + app.couponChannelListCallback(app.globalData.token); + } + } +}); diff --git a/components/hot/hot.json b/components/hot/hot.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/hot/hot.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/hot/hot.ttml b/components/hot/hot.ttml new file mode 100644 index 0000000..ee25e65 --- /dev/null +++ b/components/hot/hot.ttml @@ -0,0 +1,59 @@ + + + + + 爆款专区 + + + 换一换 + + + + + + + + + + + + {{kData.title}} + ¥{{kData.priceStr}} + {{kData.salePriceStr}} + 砍价 + + + + + + + + 疯狂补货中… + 敬请期待 + 砍价 + + + + + + + + + {{pData.title}} + ¥{{pData.priceStr}} + {{pData.salePriceStr}} + 拼团 + + + + + + + + 疯狂补货中... + 敬请期待 + 拼团 + + + + diff --git a/components/hot/hot.ttss b/components/hot/hot.ttss new file mode 100644 index 0000000..82a3092 --- /dev/null +++ b/components/hot/hot.ttss @@ -0,0 +1,133 @@ + +@import "../../app.ttss"; +.hotBox{ + width:710rpx; + margin: 0 auto ; +} +.hotTitle{ + width: 100%; + height: 60rpx; + line-height: 60rpx; + font-size: 30rpx; + display: flex; + justify-content: space-between; + font-family:PingFangSC-Medium; +} +.titleL .titleR{ + width: 100rpx; +} +.titleR text{ + float: left; + margin-right: 10rpx; + font-family:PingFangSC-Regular!important; +} +.titleR view{ + height: 40rpx; + width: 40rpx; + /* margin-top: 10rpx; */ + float: left; +} +.titleR image{ + height: 28rpx; + width: 28rpx; +} +.sql{ + width:12rpx; + height:24rpx; + border-radius:8rpx; + float: left; + margin: 20rpx 10rpx 0 0; +} +.hotCon{ + width: 100%; +} +.kanjia, .pintuan{ + width: 346rpx; + height: 156rpx; + float: left; + border-radius: 12rpx; + display: flex; + justify-content: space-between; + position: relative; +} +.kanjia{ + margin-right: 18rpx; + background:linear-gradient(130deg,rgba(50,177,252,1) 0%,rgba(47,108,255,1) 100%); +} +.pintuan{ + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); +} +.hotCon image{ + width: 86rpx; + height: 86rpx; + margin: 24rpx 0 46rpx 16rpx; +} +.hotCon .btn{ + width:80rpx; + height:44rpx; + line-height: 44rpx; + background:rgba(255,255,255,1); + border-radius:18rpx; + font-size: 24rpx; + position: absolute; + right: 20rpx; + bottom: 20rpx; + text-align: center; +} +.btnk{ + color: #2C8DFF; +} +.btnp{ + color: #FD782D; +} +.btnNone{ + width:80rpx; + height:44rpx; + line-height: 44rpx; + border-radius:18rpx; + font-size: 24rpx; + position: absolute; + right: 20rpx; + bottom: 20rpx; + text-align: center; + background:rgba(255,255,255,0.5) +} +.kjText,.ptText{ + color: #FFFFFF; + margin: 14rpx 10rpx 20rpx 10rpx; +} + +.title{ + width: 210rpx; + font-size: 30rpx; + overflow: hidden; + text-overflow:ellipsis; + white-space:nowrap; + float: left; +} +.price{ + width: 128rpx; + overflow: hidden; + text-overflow:ellipsis; + white-space:nowrap; + font-size: 22rpx; + text-decoration:line-through; + float: left; +} +.expect{ + width: 210rpx; + font-size: 22rpx; + float: left; +} +.sale{ + width: 140rpx; + font-size: 32rpx; + float: left; + margin-top: -8rpx; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.sale text{ + font-size: 20rpx!important; +} diff --git a/components/navbar/img/back.svg b/components/navbar/img/back.svg new file mode 100644 index 0000000..614c029 --- /dev/null +++ b/components/navbar/img/back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/components/navbar/img/home.svg b/components/navbar/img/home.svg new file mode 100644 index 0000000..b8fe7ed --- /dev/null +++ b/components/navbar/img/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/components/navbar/navbar.js b/components/navbar/navbar.js new file mode 100644 index 0000000..04910f3 --- /dev/null +++ b/components/navbar/navbar.js @@ -0,0 +1,83 @@ +const app = getApp() + +Component({ + + properties: { + background: { + type: String, + value: '#F4F5F9' + }, + color: { + type: String, + value: '#000' + }, + text: { + type: String, + value: 'Wechat' + }, + showLocationIf: { + type: Boolean, + value: false + }, + back: { + type: Boolean, + value: false + }, + home: { + type: Boolean, + value: false + } + }, + + data: { + array: ['A广场', 'B广场-北京西单'], + index: 1, + statusBarHeight: app.statusBarHeight + 'px', + navigationBarHeight: (app.statusBarHeight + 44) + 'px', + indexFlaig:null, + }, + methods: { + backHome: function () { + app.globalData.selected = 0 + let tempUrl = '/index/index' + tt.reLaunch({ + url: tempUrl, + success(res) { + console.log(`${res}`); + }, + fail(err) { + console.log(`navigateTo调用失败`,err,tempUrl); + }, + }); + }, + bindPickerChange: function (e) { + console.log('picker发送选择改变,携带值为', e.detail.value) + this.setData({ + index: e.detail.value + }) + }, + back:function() { + tt.navigateBack({ + delta: 1, + success(res) { + console.log(`${res}`); + }, + fail(err) { + console.log(`navigateTo调用失败`,err); + }, + }) + } + }, + attached: function(){ + this.setData({ + indexFlaig:app.globalData.selected + }) + let pages = getCurrentPages(); + console.log(pages.length); + if (pages.length <= 1) { + this.setData({ + back: false + }) + } + } +}) diff --git a/components/navbar/navbar.json b/components/navbar/navbar.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/components/navbar/navbar.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/components/navbar/navbar.ttml b/components/navbar/navbar.ttml new file mode 100644 index 0000000..01b8c13 --- /dev/null +++ b/components/navbar/navbar.ttml @@ -0,0 +1,20 @@ + + + + + + + + + + + + {{text}} + + + + {{array[index]}} + + + + \ No newline at end of file diff --git a/components/navbar/navbar.ttss b/components/navbar/navbar.ttss new file mode 100644 index 0000000..055b358 --- /dev/null +++ b/components/navbar/navbar.ttss @@ -0,0 +1,92 @@ +.navbar { + width: 100vw; + background-color: #F4F5F9; + position: fixed; + left: 0; + top: 0; + /* height:150rpx; */ + overflow: hidden; + z-index: 400000000; +} + +.title-container { + height: 44px; + display: flex; + align-items: center; + position: relative; +} + +.capsule { + margin-left: 10px; + height: 32px; + border: 1px solid #e1e1e3; + border-radius: 60px; + display: flex; + align-items: center; + padding: 0 20rpx; + background: #fff!important; +} + +.capsule > view { + width: 35px; + height: 60%; + position: relative; +} + +.capsule > view:nth-child(2) { + border-left: 1px solid #777; +} + +.capsule image { + width: 70%; + height: 100%; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%,-50%); +} + +.title { + color: #000; + position: absolute; + left: 104px; + right: 104px; + font-weight: 600; + font-size: 32rpx; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +@font-face { + font-family: 'iconfont'; /* project id 1353695 */ + src: url('//at.alicdn.com/t/font_1353695_nyv2ld9xqk8.eot'); + src: url('//at.alicdn.com/t/font_1353695_nyv2ld9xqk8.eot?#iefix') format('embedded-opentype'), + url('//at.alicdn.com/t/font_1353695_nyv2ld9xqk8.woff2') format('woff2'), + url('//at.alicdn.com/t/font_1353695_nyv2ld9xqk8.woff') format('woff'), + url('//at.alicdn.com/t/font_1353695_nyv2ld9xqk8.ttf') format('truetype'), + url('//at.alicdn.com/t/font_1353695_nyv2ld9xqk8.svg#iconfont') format('svg'); +} +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-daohangdizhiweizhi:before { + content: "\e787"; +} +.locations{ + font-size: 28rpx; + display: inline-block; + width: 200rpx; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} +.pick-box{ + width: 260rpx; + padding-left: 20rpx; +} \ No newline at end of file diff --git a/components/optimization/optimization.js b/components/optimization/optimization.js new file mode 100644 index 0000000..58bfb32 --- /dev/null +++ b/components/optimization/optimization.js @@ -0,0 +1,45 @@ +// components/optimization/optimization.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + businessList:{ + type:Array, + value:[] + }, + businessData: { + type: Array, + value: [] + }, + }, + + /** + * 组件的初始数据 + */ + data: { + classIndex:0 + }, + + /** + * 组件的方法列表 + */ + methods: { + goDetail(e){ + let couponChannelId = e.currentTarget.dataset.id + let couponId = e.currentTarget.dataset.couponid + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${couponChannelId}&couponId=${couponId}`, + }) + }, + setIndex(e){ + let index = e.currentTarget.dataset.index + let id = e.currentTarget.dataset.id + this.triggerEvent('businessid',id) + this.setData({ + classIndex:index + }) + } + + } +}) diff --git a/components/optimization/optimization.json b/components/optimization/optimization.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/optimization/optimization.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/optimization/optimization.ttml b/components/optimization/optimization.ttml new file mode 100644 index 0000000..8db3b72 --- /dev/null +++ b/components/optimization/optimization.ttml @@ -0,0 +1,40 @@ + + + 优选好物 + Preferred Good + + + + + + {{item.title}} + + + + + + + + + + + {{item.title}} + + + + {{item.salePriceStrQ?item.salePriceStrQ:item.salePriceStr}} + {{item.salePriceStrH?'.'+item.salePriceStrH:''}} + + 已售 {{item.sale}} + + ¥{{item.priceStr}} + + + + + + + + + + \ No newline at end of file diff --git a/components/optimization/optimization.ttss b/components/optimization/optimization.ttss new file mode 100644 index 0000000..a1698c8 --- /dev/null +++ b/components/optimization/optimization.ttss @@ -0,0 +1,202 @@ +.optimizationBox { + /* overflow: hidden; */ + margin-top: 20rpx; + } + + .titleImg { + width: 96%; + height: 80rpx; + margin: 0rpx auto; + background-image: url("https://formall.oss-accelerate.aliyuncs.com/cimg/v20211214/home_ggw_yxhw.png"); + background-size: 100% 100%; + background-repeat: no-repeat; + } + + .textl { + font-size: 34rpx; + font-family: OPPOSans; + font-weight: bold; + color: #dfbe99; + margin: 20rpx; + } + + .textr { + font-size: 30rpx; + font-family: OPPOSans; + font-weight: 300; + color: #91897e; + margin: 20rpx; + } + + .f { + float: left; + } + + .r { + float: right; + } + + .classifyBox { + width: 100%; + border-radius: 20rpx 20rpx 0 0; + background-color: #fff; + overflow: hidden; + display: -webkit-box; + overflow-x: scroll; + -webkit-overflow-scrolling: touch; + /* margin: 10rpx 0; *//* background: linear-gradient(0deg, #F5F5F5, #fff); */ + } + + .classifyBox::-webkit-scrollbar { + display: none; + } + + .itemBox { + width: 100rpx; + height: 100rpx; + margin: 0 20rpx; + } + + .className { + font-size: 28rpx; + font-family: OPPOSans; + font-weight: 500; + color: #454340; + text-align: center; + margin: 20rpx auto 10rpx auto; + } + + .className_a { + font-size: 30rpx; + font-family: OPPOSans; + font-weight: 800; + color: #c99f67; + text-align: center; + background: linear-gradient(180deg, #cc9a60 0%, #dfbf8e 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + margin: 20rpx auto 10rpx auto; + } + .xian{ + width: 22rpx; + height: 5rpx; + background: linear-gradient(180deg, #D5A56E, #E9D0AA); + border-radius: 3px; + margin: 0 auto; + } + .contBox{ + background: linear-gradient(0deg, #F5F5F5, rgba(255, 255, 255, 0.5)); + /* height: 350rpx; */ + } + .contLsitBox{ + width: 96%; + margin: 0 auto; + display: flex; + overflow: hidden; + justify-content: space-between; + flex-wrap: wrap; + + } + .item{ + width: 49%; + background-color: #fff; + border-radius: 20rpx; + margin: 12rpx 0; + position: relative; + } + .itemImg{ + width: 100%; + height: 350rpx; + border-radius: 20rpx; + /* background-color: aquamarine; */ + } + .itemImg image{ + width: 100%; + height: 100%; + border-radius: 20rpx 20rpx 0 0; + } + .titleName{ + width:90%; + height: 80rpx; + font-size: 28rpx; + font-family: OPPOSans; + font-weight: 500; + color: #333333; + margin: 10rpx auto 0 auto; + + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + white-space:normal; + + } + .priceBox{ + width: 90%; + overflow: hidden; + margin: 10rpx auto; + } + .f{ + float: left; + } + .r{ + float:right; + } + .sellingBox{ + overflow: hidden + } + .fuhao{ + color: #DF2D2D; + font-size: 24rpx; + float: left; + font-family: OPPOSans; + /* font-weight: bold; */ + margin-top: 10rpx + } + .int{ + float: left; + font-size: 36rpx; + font-family: OPPOSans; + font-weight: bold; + color: #DF2D2D; + } + .originalBox{ + overflow: hidden + } + .origina{ + text-align: right; + font-size: 24rpx; + font-family: OPPOSans; + font-weight: 400; + text-decoration: line-through; + color: #999999; + margin-top: 10rpx; + margin-right: 10rpx; + } + .priceNum{ + text-align: right; + font-size: 24rpx; + font-family: OPPOSans; + font-weight: 400; + + color: #999999; + margin-top: 10rpx; + /* margin-right: 10rpx; */ + } + .sellout{ + position: absolute; + top: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.5); + width: 100%; + height: 100%; + border-radius: 20rpx; + } + + .selloutImg{ + width: 195rpx !important; + height: 154rpx !important; + margin: 50% auto; + display: block + } \ No newline at end of file diff --git a/components/store/index.js b/components/store/index.js new file mode 100644 index 0000000..d398f64 --- /dev/null +++ b/components/store/index.js @@ -0,0 +1,79 @@ +const imgurl = require("../../utils/imgurl"); +Component({ + /** + * 组件的属性列表 + */ + properties: { + merchantVoList: { + value: [], + type: Array + } + }, + + /** + * 组件的初始数据 + */ + data: { + teljpgUrl: imgurl.teljpg.url, + showMore:false, + more: "点击查看更多", + hidden:"hidden", + height: "" + }, + + /** + * 组件的方法列表 + */ + methods: { + /** + * 跳转到门店列表的详情页面 + */ + gotoDetail(e) { + tt.navigateTo({ + url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}` + }) + }, + // 点击查看更多 + more: function () { + console.log(this.properties.merchantVoList,"merchantVoList"); + let that = this; + if (that.data.more == '点击查看更多') { + this.setData({ + hidden: "", + height: 'auto!important', + more: "点击收起", + showMore: true + }) + } else { + that.setData({ + hidden: "hidden", + height: 4 * 140 + 'rpx', + more: "点击查看更多", + showMore: true + }) + } + }, + phone: function (e) { + let that = this; + tt.makePhoneCall({ + phoneNumber: e.target.dataset.merchantlinkphone + }); + } + }, + ready: function () { + let merchantVoList = this.properties.merchantVoList; + if (merchantVoList.length>0){ + if (merchantVoList.length <= 4) { + this.setData({ + height: merchantVoList.length * 140 + 'rpx', + showMore: false, + hidden:"hidden" + }) + } else if (merchantVoList && merchantVoList.length > 4) { + this.setData({ + height: 4 * 140 + 'rpx' + }) + } + } + } +}); diff --git a/components/store/index.json b/components/store/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/components/store/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/components/store/index.ttml b/components/store/index.ttml new file mode 100644 index 0000000..2c7c2e1 --- /dev/null +++ b/components/store/index.ttml @@ -0,0 +1,19 @@ +适用门店 + + + +{{more}} \ No newline at end of file diff --git a/components/store/index.ttss b/components/store/index.ttss new file mode 100644 index 0000000..9defcf3 --- /dev/null +++ b/components/store/index.ttss @@ -0,0 +1,76 @@ +.applyshop { + font-size: 30rpx; + height: 70rpx; + line-height: 70rpx; + text-indent: 1em; + color: #333; + background: #fff; + } + + .posi { + position: relative; + width: 100%; + background: #FFF; + } + .posi_logo { + position: relative; + width: 92%; + display: flex; + padding: 20rpx 0; + background: #fff; + margin: 0 auto; + } + + .posi_logo view:nth-child(1) { + border-radius: 16rpx; + } + + .posi_logo view:nth-child(1) image { + display: block; + width: 100rpx; + height: 100rpx; + border-radius: 16rpx; + margin-right: 16rpx; + border: 1px solid #e5e5e5; + } + .name{ + font-size: 32rpx; + color: #333; + letter-spacing: 0; + width: 500rpx; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + .posi_logo view:nth-child(2) view { + font-size: 32rpx; + color: #333; + letter-spacing: 0; + } + + .shopVoList { + display: flex !important; + padding-left: 0 !important; + flex-direction: row !important; + } + + .shopVoList text { + font-size: 20rpx !important; + color: #b8b8b8 !important; + } + .bottom{ + background: #fff; + color: #666; + text-align: center; + padding: 20rpx 0; + font-size: 32rpx; + } + .tel { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto; + width: 50rpx; + height: 50rpx; + } \ No newline at end of file diff --git a/components/tabbar/tabbar.js b/components/tabbar/tabbar.js new file mode 100644 index 0000000..e7fb22c --- /dev/null +++ b/components/tabbar/tabbar.js @@ -0,0 +1,72 @@ +const Http = require("../../utils/HttpBasics"); +var config = require("../../config/config.js"); +let app = getApp(); + +Component({ + data: { + selected: null, + "color": "#abb1be", + "selectedColor": "#fc3e5a", + list: [ + { + "pagePath": "/index/index", + "text": "首页", + "iconPath": "../../assets/images/home.png", + "selectedIconPath": "../../assets/images/home_a.png" + }, + { + "pagePath": "/index/searchbar", + "text": "门店", + "iconPath": "../../assets/images/portal.png", + "selectedIconPath": "../../assets/images/portal_a.png" + }, + { + "pagePath": "/pages/order/index/index", + "text": "订单", + "iconPath": "../../assets/images/dindan.png", + "selectedIconPath": "../../assets/images/dindan_a.png" + }, + { + "pagePath": "/index/user", + "text": "我的", + "iconPath": "../../assets/images/user.png", + "selectedIconPath": "../../assets/images/user_a.png" + } + ] + }, + properties: { + + }, + lifetimes: { + attached: function () { + // 在组件实例进入页面节点树时执行 + console.log(app.globalData.selected,'selected'); + this.setData({ + selected:app.globalData.selected + }) + }, + detached: function () { + // 在组件实例被从页面节点树移除时执行 + }, + }, + methods: { + navigateTo(e) { + + // this.setData({ + // list: this.data.home_a_img + // }) + // console.log(this.data.home_a_img) + + const data = e.currentTarget.dataset; + // this.setData({ + // selected: data.index + // }) + app.globalData.selected = data.index + console.log(app.globalData.selected); + const url = data.path; + tt.reLaunch({ + url + }); + }, + } +}) \ No newline at end of file diff --git a/components/tabbar/tabbar.json b/components/tabbar/tabbar.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/tabbar/tabbar.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/tabbar/tabbar.ttml b/components/tabbar/tabbar.ttml new file mode 100644 index 0000000..e79b132 --- /dev/null +++ b/components/tabbar/tabbar.ttml @@ -0,0 +1,8 @@ + + + + + {{item.text}} + + + \ No newline at end of file diff --git a/components/tabbar/tabbar.ttss b/components/tabbar/tabbar.ttss new file mode 100644 index 0000000..117e2f7 --- /dev/null +++ b/components/tabbar/tabbar.ttss @@ -0,0 +1,41 @@ +.tab-bar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 70rpx; + padding: 10rpx; + background: white; + display: flex; + padding-bottom: env(safe-area-inset-bottom); + overflow: hidden; + } + + .tab-bar-border { + background-color: rgba(0, 0, 0, 0.33); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 1px; + transform: scaleY(0.5); + } + + .tab-bar-item { + flex: 1; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + } + + .tab-bar-item image { + width: 46rpx; + height: 46rpx; + } + + .tab-bar-item view { + font-size: 20rpx; + } + \ No newline at end of file diff --git a/config/config.js b/config/config.js new file mode 100644 index 0000000..d78a6e1 --- /dev/null +++ b/config/config.js @@ -0,0 +1,398 @@ +var config = { + api: { + /* + *欢乐城首页专题 + */ + showList:"/topic/showList", + /* + *记录微信订阅 + */ + activityDey:"/wxActivity/listStatus",//活动日历日期 + activityCalendar:'/wxActivity/list',//活动日历列表 + signDey:"/userSign/listStatus",//签到日期列表 + continuousDye:"/userSign/signInStatus",//连续签到天数 + userSign:"/userSign/signIn",//签到 + signRule:"/credit/credit_rules",//签到规则 + wxMsg: '/user/updateMsg', + /** + * 获取首页按钮 + */ + wxCustomizeModule:"/wxCustomizeModule/list", + /** + * 微信消息推送获取模板id + */ + templateId: "/wxMsg/templateList", + //问卷列表 + questionnaire :"/wxQuestionOneself/list", + //问卷详情 + questionnaireDetail:"/wxQuestionOneself/detailsById", + //提交问卷 + submitQuestin:"/wxQuestionOneself/userAdd", + //投诉建议add + suggest:"/wxOpinion/add", + /** + * 接口用途:login + */ + login: "/user/login", + /** + * 授权后获取用户的昵称,unionId等信息 + */ + getUserInfo: "/user/getUserInfo", + //图片上传 + imgUpload: '/upload/awsFileUpload', + /** + * 接口用途:授权后获取用户的手机号 + */ + getUserPhone: "/user/getUserPhone", + /** + * 检查用户授权状态 + */ + checkUserStatus: "/user/checkUserStatus", + /** + * 检查用户手机授权状态 + */ + checkPhoneStatus: "/user/checkPhoneStatus", + /** + * 商户优惠信息 + */ + listByMerchant: "/wxCouponChannel/listByMerchant", + /** + * 优惠券详情 + */ + couponDetail: "/wxCoupon/detail", + /** + * 购物车订单详情 + */ + goodsDetail:"/order/goodsDetail", + /** + * 优惠券图文混排详情 + */ + couponHtmlDetail: "/wxCoupon/html", + couponHtmlDetailForPkg: "/couponOrder/html", + /** + * 获取样式 + */ + setType: '/wxMiniappTheme/getOne', + /** + * 业态查询 + * filter + * 2 券 + * 1 商户 + */ + businessList: "/wxBusiness/listAll", + /** + * 频道查询 + */ + couponChannelList: "/wxCouponChannel/list", + /** + * 换一换change + */ + change: "/wxCouponChannel/change", + /** + * 下订单 + */ + orderSave: "/order/save", + /** + * 多少量下单 + */ + goodsShopCartSave:"/order/goodsShopCartSave", + /** + * 支付订单 + */ + payOrderCreate: "/pay/create", + /** + * 订单状态更新 + */ + payOrderUpdate: "/pay/updatePayOrder", + /** + * 订单列表 /order/list + */ + orderList: "/order/listGoods_v1", + + getWeRunData: '/user/getWeRunData', + /** + * 订单详情 + */ + orderDetail: "/order/detail_v1", + // 券包详情 + // orderDetailAll: "/order/detail_v1", + /** + * 券包 + */ + couponOrderList: "/couponOrder/list", + /** + * 券包详情 + */ + couponOrderDetail: "/couponOrder/detail", /// TODO + /** + * 验证码发送 + */ + sendValidationCode: "/wxMsgValidationcode/sendvalidationcode", + /** + * 验证码确认 + */ + validationCode: "/wxMsgValidationcode/hasvalidationcode", + /** + * 车场信息获取 + */ + scoreLevelInfo: '/mall/scoreLevelInfo', + getParkInfo: "/wxPark/info", + /** + * 用户所绑车牌获取 + */ + userCarCount: "/user/carCount", + /** + * 用户所绑车牌获取 + */ + getUserCarList: "/user/carList", + /** + * 联合登录 + */ + carInit: "/car/init", + /** + * 绑车牌 + */ + bindCar: "/car/bindCar", + /** + * 解绑车牌 + */ + unbindCar: "/car/unbindCar", + /** + * 停车费 + */ + getCarStopFee: "/car/getCarStopFee", + /** + * 停车费抵扣 (TJD) + */ + deductionFee: "/car/deductionFee", + /** + * 优免券领取 + */ + getCarCoupon: "/car/getCoupon", + /** + * 停车券包 + */ + couponOrderCarList: "/car/couponOrderList", + /** + * banner + */ + bannerlist: "/wxCampaign/list", + /** + * banner详情页面 + */ + bannerDetail: "/wxCampaign/findById", + /** + * 授权个人信息 + * 和授权手机号 + * 和login页面 + * 页面的图标 + */ + marketicon: '/mall/getAppIcon', + /** + * 获取停车场状态 + */ + getParkStatus: '/car/getParkStatus', + /** + * 检查核销的状态 + */ + getStatus: "/couponOrder/getStatus", + /** + * 获得成长值 + */ + getScore: '/user/userinfo', + /** + * 小程序分享 + * title + * 描述 + */ + getWeapNote: '/mall/getWeapNote', + /** + * 商场信息(小程序分享) + */ + getMallInfo: '/mall/mallInfo', + /** + * 小程序获取游戏路径 + */ + getGame: '/game/getOne', + /** + * 小程序获取广告路径 + */ + getGg: '/floatingLayer/getFloatingLayer', + /** + * 小程序某一个游戏信息 + */ + getOneGame: '/game/getOneGame', + /** + * 用户更新信息 + */ + updateInfo: "/user/updateUserInfo", + /** + * 查询问卷 + */ + getQuestion: "/wxQuestion/getQuestion", + /** + * 提交问卷 + */ + answerQuestion: "/wxQuestion/answerQuestion", + /** + * + 获取打折商户列表 + */ + discountMerchantList: "/mall/discountMerchantList", + /** + * 卡包分页列表接口 + */ + cardorderList: "/couponOrder/cardList", + /** + * 卡券详情接口 + */ + cardDetail: "/couponOrder/cardDetail", + /** + * C端扫B端储值卡支付订单 + */ + cardPayOrder: "/cardPay/order_create", + /** + * 兑换历史列表 + */ + scoreHistory: "/scoreHistory/list", + /** + * 获取用户折扣率 + */ + getDiscountInfo: "/user/getDiscountInfo", + /** + * C端扫B端储值卡交易流水列表接口 + */ + cardpayList: "/cardPay/list", + /** + * 根据code查询接口 + */ + findByCode: "/merchant/findByCode", + /** + * 参与砍价 + */ + pressOrderJoin: "/press/pressOrderJoin", + /** + * 我的砍价列表 + */ + pressOrderList: "/order/pressOrderList", + /** + * 砍价订单详情 + */ + pressOrderDetail: "/order/pressOrderDetail", + /** + * + */ + getPressOrderStatus: "/press/getPressOrderStatus", + /** + * 查询转赠卡状态 + */ + queryCardStatus: "/couponOrder/queryCardStatus", + /** + * 领取转赠卡 + */ + cardAccept: '/couponOrder/cardAccept', + /** + * 获取我的拼团列表 + */ + getMySepllList: '/orderGroup/queryOrderGroup', + /** + *查询差1个的团购信息 + */ + queryRemainOne: '/orderGroup/queryRemainOne', + /** + * *分页列表接口 + */ + merchantList: "/merchant/list", + /* + * 查询拼团状态 + */ + queryOrderGroupStatus: '/orderGroup/queryOrderGroupStatus', + /** + * 去拼团 + */ + toOrderGroup: '/orderGroup/toOrderGroup', + /** + * 查询是否已参团 + */ + queryAttendStatus: '/orderGroup/queryAttendStatus', + /** + * 专题 + */ + topicShow: "/topic/show", + /** + * 专题详情 + */ + topicFindById: "/topic/findById", + /** + * 积分券详情 + */ + integralDetail: '/wxCoupon/findById', + /** + * 会员积分记录 + */ + integralList: '/credit/list', + /** + * 用户更新位置信息 + */ + updateLBS: "/user/updateLBS", + /** + * 用户更新信息 + */ + updateUserInfo: "/user/updateUserInfo", + /** + * 用户更新scene + */ + updateScene: "/user/updateScene", + /** + * 富文本详情 + */ + printHtmlById: "/wxCampaign/printHtmlById", + acfindById: "/wxActivity/findById", + acPrintHtmlById: "/wxActivity/printHtmlById", + //参与活动 + activityJoin: "/wxActivityJoin/join", + //签到 + activitySign: "/wxActivityJoin/sign", + activityList: "/wxActivityJoin/list", + //获取未支付的订单 + getUnPaidOrder: "/order/getUnPaidOrder", + getCouponOrderByPassword: '/couponPassword/getCouponOrderByPassword', + getbuildingfloorlist: '/wxMallBuilding/getbuildingfloorlist', + //商场信息接口 + getMallInfo: "/mall/mallInfo", + // 获取楼层楼座数据 + getbuildingfloorlist: "/wxMallBuilding/getbuildingfloorlist", + // 获取所有直播间和商品信息 + getReplayList: "/live/replayList", + // 获取直播房间回放数据和商品信息 + getRoomList: "/live/roomList", + //商城地图 + getStoreMap:"/wxMallBuilding/getbuildingfloorlist", + //判断有没有蜂鸟地图 + ifFengMap:'/fengniaomap/getConfig', + //分享小程序二维码 + getQrcodeFx:"/user/userinfoQrCode", + //添加收货地址 + collectSite:"/userBasicInfoAddress/saveOrUpdate", + //收货地址列表 + siteList: "/userBasicInfoAddress/list", + //查询收货地址 + siteCheck: "/userBasicInfoAddress/findById", + //删除收获地址 + siteDel: "/userBasicInfoAddress/del", + //确认收货 + verify:"/couponOrder/verify", + //全包下订单 + couponPackageSave :"/order/couponPackageSave", + + + //获取动态核销码 + dynamicId:"/couponOrder/dynamicId" + }, +}; +/* +for (var key in config.api) { + config.api[key] = apiPrefix + config.api[key]; +} +*/ +module.exports = config; \ No newline at end of file diff --git a/dist/badge/index.js b/dist/badge/index.js new file mode 100644 index 0000000..2b9fb30 --- /dev/null +++ b/dist/badge/index.js @@ -0,0 +1,29 @@ +Component({ + externalClasses: ['i-class', 'i-class-alone'], + + properties: { + count: { + type: Number, + value: 0, + observer: 'finalCount' + }, + overflowCount: { + type: Number, + value: 99 + }, + dot: { + type: Boolean, + value: false + }, + }, + data: { + finalCount: 0 + }, + methods: { + finalCount() { + this.setData({ + finalCount: parseInt(this.data.count) >= parseInt(this.data.overflowCount) ? `${this.data.overflowCount}+` : this.data.count + }); + }, + } +}); diff --git a/dist/badge/index.json b/dist/badge/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/badge/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/badge/index.ttml b/dist/badge/index.ttml new file mode 100644 index 0000000..1289043 --- /dev/null +++ b/dist/badge/index.ttml @@ -0,0 +1,5 @@ + + + + {{ finalCount }} + diff --git a/dist/badge/index.ttss b/dist/badge/index.ttss new file mode 100644 index 0000000..281658f --- /dev/null +++ b/dist/badge/index.ttss @@ -0,0 +1 @@ +.i-badge{position:relative;display:inline-block;line-height:1;vertical-align:middle}.i-badge-count{position:absolute;transform:translateX(50%);top:-6px;right:0;height:18px;border-radius:9px;min-width:18px;background:#ed3f14;border:1px solid transparent;color:#fff;line-height:18px;text-align:center;padding:0 5px;font-size:12px;white-space:nowrap;transform-origin:-10% center;z-index:10;box-shadow:0 0 0 1px #fff;box-sizing:border-box;text-rendering:optimizeLegibility}.i-badge-count-alone{top:auto;display:block;position:relative;transform:translateX(0)}.i-badge-dot{position:absolute;transform:translateX(-50%);transform-origin:0 center;top:-4px;right:-8px;height:8px;width:8px;border-radius:100%;background:#ed3f14;z-index:10;box-shadow:0 0 0 1px #fff} \ No newline at end of file diff --git a/dist/button/index.js b/dist/button/index.js new file mode 100644 index 0000000..f0e9b3e --- /dev/null +++ b/dist/button/index.js @@ -0,0 +1,80 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // default, primary, ghost, info, success, warning, error + type: { + type: String, + value: '', + }, + inline: { + type: Boolean, + value: false + }, + // default, large, small + size: { + type: String, + value: '', + }, + // circle, square + shape: { + type: String, + value: 'square' + }, + disabled: { + type: Boolean, + value: false, + }, + loading: { + type: Boolean, + value: false, + }, + long: { + type: Boolean, + value: false + }, + openType: String, + appParameter: String, + hoverStopPropagation: Boolean, + hoverStartTime: { + type: Number, + value: 20 + }, + hoverStayTime: { + type: Number, + value: 70 + }, + lang: { + type: String, + value: 'en' + }, + sessionFrom: { + type: String, + value: '' + }, + sendMessageTitle: String, + sendMessagePath: String, + sendMessageImg: String, + showMessageCard: Boolean + }, + + methods: { + handleTap () { + if (this.data.disabled) return false; + + this.triggerEvent('click'); + }, + bindgetuserinfo({ detail = {} } = {}) { + this.triggerEvent('getuserinfo', detail); + }, + bindcontact({ detail = {} } = {}) { + this.triggerEvent('contact', detail); + }, + bindgetphonenumber({ detail = {} } = {}) { + this.triggerEvent('getphonenumber', detail); + }, + binderror({ detail = {} } = {}) { + this.triggerEvent('error', detail); + } + } +}); diff --git a/dist/button/index.json b/dist/button/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/button/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/button/index.ttml b/dist/button/index.ttml new file mode 100644 index 0000000..43c7826 --- /dev/null +++ b/dist/button/index.ttml @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/dist/button/index.ttss b/dist/button/index.ttss new file mode 100644 index 0000000..5fe394b --- /dev/null +++ b/dist/button/index.ttss @@ -0,0 +1,39 @@ +.i-btn{ + text-align:center; + vertical-align:middle; + touch-action:manipulation; + cursor:pointer; + background-image:none; + white-space:nowrap; + user-select:none; + font-size:14px; + border-radius:2px; + border:0!important; + position:relative; + text-decoration:none; + height:44px; + line-height:44px; + box-shadow:inset 0 0 0 1px rgba(0,0,0,.1); + color:#fff!important; + background:#f7f7f7; + color:#495060; + margin:10px +} +.i-btn-hover{opacity:.9} +.i-btn-long{border-radius:0;margin:0;box-shadow:none} +.i-btn-large{height:48px;line-height:48px} +.i-btn-small{height:40px;line-height:40px} +.i-btn-primary{color:#fff!important;background:#2d8cf0!important} +.i-btn-ghost{color:#fff!important;background:#fff!important;color:#495060!important} +.i-btn-success{color:#fff!important;background:#19be6b!important} +.i-btn-warning{color:#fff!important;background:#f90!important} +.i-btn-error{color:#fff!important;background:#ed3f14!important} +.i-btn-info{color:#fff!important;background:#2db7f5!important} +.i-btn-circle{border-radius:44px} +.i-btn-large.i-btn-circle{border-radius:48px} +.i-btn-small.i-btn-circle{border-radius:40px} +.i-btn-loading{opacity:.6} +.i-btn-loading-inner{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite} +.i-btn-disabled{color:#bbbec4!important;background:#f7f7f7!important} +.i-btn-inline{display:inline-block}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} +button::after{ border: none; } \ No newline at end of file diff --git a/dist/sticky-item/index.js b/dist/sticky-item/index.js new file mode 100644 index 0000000..a00af0f --- /dev/null +++ b/dist/sticky-item/index.js @@ -0,0 +1,40 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + relations : { + '../sticky/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + isFixed : false, + index : -1, + }, + methods: { + updateScrollTopChange(scrollTop){ + const data = this.data; + const top = data.top; + const height = data.height; + this.setData({ + isFixed : ( scrollTop >= top && scrollTop < top + height ) ? true : false + }) + }, + updateDataChange(index) { + const className = '.i-sticky-item'; + const query = tt.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + if( res ){ + this.setData({ + top : res.top, + height : res.height, + index : index + }) + } + }).exec() + } + } +}) \ No newline at end of file diff --git a/dist/sticky-item/index.json b/dist/sticky-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/sticky-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/sticky-item/index.ttml b/dist/sticky-item/index.ttml new file mode 100644 index 0000000..613a5c0 --- /dev/null +++ b/dist/sticky-item/index.ttml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/dist/sticky-item/index.ttss b/dist/sticky-item/index.ttss new file mode 100644 index 0000000..7328f0f --- /dev/null +++ b/dist/sticky-item/index.ttss @@ -0,0 +1 @@ +.i-sticky-item-header{background:#eee;font-size:14px;width:100%;height:32px;line-height:32px}.i-sticky-item-content{font-size:14px}.i-sticky-title{width:100%;padding:0 15px;box-sizing:border-box;background:#eee}.i-sticky-fixed .i-sticky-title{position:fixed;top:0} \ No newline at end of file diff --git a/dist/sticky/index.js b/dist/sticky/index.js new file mode 100644 index 0000000..2352a68 --- /dev/null +++ b/dist/sticky/index.js @@ -0,0 +1,64 @@ +Component({ + externalClasses: ['i-class'], + properties : { + scrollTop : { + type : Number, + observer(val){ + this._updateScrollTopChange(); + } + } + }, + relations : { + '../sticky-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + timer : null, + itemLength : 0, + }, + methods : { + _updateScrollTopChange(){ + const stickies = this.getRelationNodes('../sticky-item/index'); + console.log(stickies,"stickies"); + if(stickies && stickies.length > 0 ){ + stickies.forEach((item) => { + if( item ){ + item.updateScrollTopChange( this.data.scrollTop ); + } + }) + } + }, + _updateDataChange( ){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if(stickies && stickies.length > 0 ){ + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + this.data.timer = setTimeout(()=>{ + stickies.forEach((item,index) => { + if( item ){ + item.updateDataChange(index); + } + }) + },0) + this.setData({ + timer : this.data.timer + }) + } + } + } + +}) \ No newline at end of file diff --git a/dist/sticky/index.json b/dist/sticky/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/sticky/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/sticky/index.ttml b/dist/sticky/index.ttml new file mode 100644 index 0000000..aee0c63 --- /dev/null +++ b/dist/sticky/index.ttml @@ -0,0 +1,3 @@ + + + diff --git a/dist/sticky/index.ttss b/dist/sticky/index.ttss new file mode 100644 index 0000000..e69de29 diff --git a/dist/tab/index.js b/dist/tab/index.js new file mode 100644 index 0000000..eed380f --- /dev/null +++ b/dist/tab/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ["i-class"], + + relations: { + "../tabs/index": { + type: "parent" + } + }, + + properties: { + key: { + type: String, + value: "" + }, + title: { + type: String, + value: "" + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: "", + scroll: false + }, + + methods: { + changeCurrent(current) { + this.setData({ current }); + }, + changeCurrentColor(currentColor) { + this.setData({ currentColor }); + }, + changeScroll(scroll) { + this.setData({ scroll }); + }, + handleClickItem() { + const parent = this.getRelationNodes("../tabs/index")[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/dist/tab/index.json b/dist/tab/index.json new file mode 100644 index 0000000..eb6877d --- /dev/null +++ b/dist/tab/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index" + } +} diff --git a/dist/tab/index.ttml b/dist/tab/index.ttml new file mode 100644 index 0000000..71aa650 --- /dev/null +++ b/dist/tab/index.ttml @@ -0,0 +1,10 @@ + + + + {{ + title }} + {{ title }} + + + + \ No newline at end of file diff --git a/dist/tab/index.ttss b/dist/tab/index.ttss new file mode 100644 index 0000000..ce9e7ca --- /dev/null +++ b/dist/tab/index.ttss @@ -0,0 +1,48 @@ +.i-tabs-tab { + flex: 1; + display: flex; + width: 100%; + -webkit-box-pack: center; + justify-content: center; + -webkit-box-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + text-align: center; + position: relative +} + +.i-tabs-tab-bar { + display: block; + width: 72%; + height: 8rpx; + background: 0 0; + position: absolute; + bottom: 0; + left: 15%; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius: 100px; +} + +.i-tabs-tab-title { + font-size: 26rpx; + line-height: 30rpx; + text-align: center; + box-sizing: border-box; + color: #A6A6A6; +} + +.i-tabs-tab-title-current { + color: #3C3C3C; + font-size: 30rpx; + font-weight: 500; + font-family:PingFangSC-Medium; +} + +.i-tabs-tab-scroll { + display: inline-block; + width: auto; + min-width:96rpx; + margin-right:33rpx; +} \ No newline at end of file diff --git a/dist/tabs/index.js b/dist/tabs/index.js new file mode 100644 index 0000000..95fbe52 --- /dev/null +++ b/dist/tabs/index.js @@ -0,0 +1,60 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + scroll: { + type: Boolean, + value: false + }, + fixed: { + type: Boolean, + value: false + } + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab/index'); + let len = 0; + if(items){ + len = items.length?items.length:0; + } + + + if (len > 0) { + items.forEach(item => { + item.changeScroll(this.data.scroll); + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + } + } +}); diff --git a/dist/tabs/index.json b/dist/tabs/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/tabs/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/tabs/index.ttml b/dist/tabs/index.ttml new file mode 100644 index 0000000..c2cb4eb --- /dev/null +++ b/dist/tabs/index.ttml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/dist/tabs/index.ttss b/dist/tabs/index.ttss new file mode 100644 index 0000000..69fc772 --- /dev/null +++ b/dist/tabs/index.ttss @@ -0,0 +1,42 @@ +.i-tabs { + display: flex; + width: 100%; + height: 48px; + line-height: 48px; + box-sizing: border-box; + position: relative; + justify-content: space-around; + align-items: center; + -webkit-box-align: center; + /* background: #fff */ +} + +.i-tabs::after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 200%; + height: 200%; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + /* border: 0 solid #e9eaec; */ + border-bottom-width: 1px +} + +.i-tabs-scroll { + display: block; + overflow-x: auto; + margin-bottom: 22rpx; + white-space: nowrap; + /* box-shadow:0 0 2px 0 rgba(211,211,211,0.50); */ + /* border-bottom: 1rpx solid #eeeeee; */ +} + +.i-tabs-fixed { + position: fixed; + top: 0; + z-index: 2 +} \ No newline at end of file diff --git a/iconfont.ttss b/iconfont.ttss new file mode 100644 index 0000000..69b429c --- /dev/null +++ b/iconfont.ttss @@ -0,0 +1,22 @@ +@font-face {font-family: "iconfont"; + src: url('iconfont.eot?t=1568701793152'); /* IE9 */ + src: url('iconfont.eot?t=1568701793152#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAL4AAsAAAAABrwAAAKqAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqBSIFaATYCJAMICwYABCAFhG0HMBsABsgekkQC4ByegcrDAoAQCLRWZuAQ1ROBA7RA4BAKaNmybtVXtY7IAcnq3VqzIggboUqyiugVQ3aPc4szdQ+sCRogwMz8/1xO764CCmR+oFzmmnTUCzDeGuBe2CYrkAC8ZXjVpa2DPg8B2ImSQTRM1jYTBTQwTQBiyuVniULOi0bLCSsCc81ajbhIFqs8lC+BC+H3xR/ysoLEpICSto0vE703YYraMK4c+gi8+cyAvAkUkAE0iK7aaIs0QiYr7NEMcdhXoYDvTYbh6xF7/fMQZiDfCUAE5d4Tz+Xfao0EQHPv/VVgcNQDwORyOm3e9deXcM/79Y3jUPfb1cDbt9vv3u28ebP1+vUxF29G7Kzn7dvDo1b3tY2rXSInFmNx8vuXPoyor9T//xe4DlwNf38Nrm8r19Ln5+lryPJZnvWqepGyWMnrz758+lTuI4uyvZB88lTtMxaLVtXnD9y0otW6mLp5Uy7mMy1i+PFhWCaT6UkAxjd1S8X82t+wmf+so7de8d/q0AB8uP/fH04wvmlUDGC9AZuAH8nrWactAeikNni1SUkV0w2K7RgAA3D6fR2rDN11UmAldO92C5EpKKwkoJqUASYcFIAZK9VgJ13zZgcBC9IIbQPS7BIQeD0AiZvnoPB6hWrSFzAR9g/MeFNgp6fAng6SGi/VSzzTeAnnK3AvKGLcoEtR4TpyE5zJrCCkbKNUbgDaWTnFxBQjlHMsUJZ3tGbAJIUwIZdhEBDEkjy80A1H67jbzB6pe1PjgsJEiXoSOqOhS2DAChh3gUSY31wrlT6/DnFG4IxswTWZtyFJcQcHubLk9ECn0qgX7l6uWWRxHUs0BoyQSAg0ETMKMErAXP0oD7qgNYyNCMe6slmjkb7Sxvry8Ou2AHZAJQUOU5gXyShDiQQAAA==') format('woff2'), + url('iconfont.woff?t=1568701793152') format('woff'), + url('iconfont.ttf?t=1568701793152') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1568701793152#iconfont') format('svg'); /* iOS 4.1- */ + } + + .iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .icon-sousuo:before { + content: "\e646"; + } + + \ No newline at end of file diff --git a/index/index.js b/index/index.js new file mode 100644 index 0000000..a80cdd8 --- /dev/null +++ b/index/index.js @@ -0,0 +1,1322 @@ +// const extConfig = tt.getExtConfigSync ? tt.getExtConfigSync() : {} +// let ifStoreApp = extConfig.attr.ifStoreApp; +// let businessSwitch = extConfig.attr.businessSwitch +// let mch_id = extConfig.attr.mchId +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const Http = require("../utils/HttpBasics"); +const imgurl = require("../utils/imgurl"); +const config = require("../config/config"); +const QR = require("../utils/memberqrcode.js"); +const util = require("../utils/util"); +const bgColor = require("../utils/bgColor.js") +let app = getApp(); +Page({ + data: { + userAvatarUrl: '', + userName: '', + aa: (app.statusBarHeight + 34) + "rpx", + noDataFlag: false, + busineKye: 0, + businePageNum: 1, + credit: 0, + businessList: [], //优选好物导航 + businessData: [], //优选好物数据 + topicObj2: null, //欢乐城首页限时抢购 + topicObj3: null, //欢乐城首页砍价 + topicObj4: null, //欢乐城首页拼团 + topicObj5: null, //欢乐城首页消费卡 + topicObj6: null, //欢乐城首页积分商城 + specialLsit: [], //欢乐城首页专题 + marketName: "", //商场名称 + mouldType: 0, + navLineHeight: ((app.statusBarHeight + app.statusBarHeight) + 44) + "px", + huanlechengImgurl: "https://formall.oss-accelerate.aliyuncs.com/cimg/v20211214/", + // mch_id: mch_id, + goUrl: "", //商圈跳转链接 + accreditFlag: 1, //1是未授权微信且未授权手机号 2授权了微信 没授权手机号 3微信和手机号都授权了 + // businessSwitch: businessSwitch, + typeLsit: {}, + showLocationIf: true, + // ifStoreApp: ifStoreApp, + navigationBarTitle: '首页', + navigationBarHeight, + chengzhangBox: bgColor.colorFirst.main.chengzhangBox, + activeColor: bgColor.colorFirst.main.activeColor, + qg: bgColor.colorFirst.main.qg, + newUrl: "", + cover: "", + kanjia: imgurl.kanjia.url, + pintuan: imgurl.pintuan.url, + xiaofeika: imgurl.xiaofeika.url, + xingyun: imgurl.xingyun.url, + jfshangcheng: imgurl.jfshangcheng.url, + toutiao: imgurl.toutiao.url, + more: imgurl.more.url, + giftHr: imgurl.giftHr.url, + giftHr: imgurl.giftHr.url, + next: imgurl.next.url, + usergift: imgurl.usergift.url, + guanbi1: imgurl.guanbi1.url, + icon0001: imgurl.icon0001.url, + icon0002: imgurl.icon0002.url, + icon0003: imgurl.icon0003.url, + icon0004: imgurl.icon0004.url, + icon0005: imgurl.icon0005.url, + icon0006: imgurl.icon0006.url, + icon0007: imgurl.icon0007.url, + icon0008: imgurl.icon0008.url, + barcode: imgurl.barcode.url, + leftarrows: imgurl.leftarrows.url, + newcard: imgurl.newcard.url, + newseckill: imgurl.newseckill.url, + newbargain: imgurl.newbargain.url, + newgroup: imgurl.newgroup.url, + product: imgurl.product.url, + barginicon: imgurl.barginicon.url, + pintuan: imgurl.pintuan.url, + live: imgurl.live.url, + duihuan: imgurl.duihuan.url, + market: app.globalData.market, + list: [], + xslist: [], + loading: true, + fistLogin: null, + alphaData: null, + alphaData1: null, + swiperCurrent: 0, + title: null, + weappShareTitle: '', //分享标题 + weappShareCoverImg: '', //分享图片 + desc: null, + scrollTop: 0, + showGame: false, + showTopic: false, + showQg: false, + gamedata: {}, + couponId: '', //游戏返回时传回的字段 + played: false, //从游戏页面跳回首页返回true + havePlayEd: app.globalData.havePlayEd, + havePlayEd1: app.globalData.havePlayEd1, + staticGamedata: {}, + showIf: false, + showPages: false, + display: 'none', + display1: 'none', + optionsData: null, + page: 1, // 刷新进入页面时已经加载了第一页数据,onReachBottom时 page++,从第2页开始加载 + openId: '', + showGg: false, + ggdata: {}, + liveFlag: 0, //直播按钮显隐标志位 + squareName: "", //当前广场 + isShowSqare: false, + moduleList: [], //按钮列表 + }, + getBusineData(e) { + this.setData({ + businePageNum: 1, + busineKye: e.detail, + noDataFlag: false, + }) + this.getCouponChannelList(e.detail) + }, + getBusinessList() { //获取优选导航 + Http.get({ + url: config.api.businessList, + data: { + filter: 2 + } + }).then(res => { + this.setData({ + businessList: [{ + id: 0, + title: "全部", + type: 1 + }].concat(res.data) + }); + }).catch(err => { + tt.showModal({ + title: '提示', + content: err.message ? err.message : err.data, + showCancel: false + }) + }) + }, + getCouponChannelList(key) { + if (this.data.noDataFlag) { + return + } + tt.showLoading({ + title: "加载中" + }); + let param = {} + if (key == 0) { + param = { + pageNum: this.data.businePageNum, + pageSize: 6, + targetAd: 101 + } + } else { + param = { + pageNum: this.data.businePageNum, + pageSize: 6, + business: key, + targetAd: 101 + + } + } + + Http.get({ + url: config.api.couponChannelList, + data: param + }).then(res => { + if (res.data.list&&res.data.list.length != 0) { + + let tempLsit = this.data.businessData + let data = res.data.list + data.map(item => { + if (item.salePriceStr && item.salePriceStr.indexOf('.') != -1) { + let str = item.salePriceStr.split('.') + item.salePriceStrQ = str[0] + item.salePriceStrH = str[1] + } + item.sale = item.inventory - item.remainInventory + }) + + if (this.data.businePageNum > 1) { + this.setData({ + businessData: [...tempLsit, ...data] + }) + } else { + this.setData({ + businessData: data + }) + } + }else{ + this.setData({ + noDataFlag: true + }) + } + tt.hideLoading(); + }).catch(err => { + tt.hideLoading(); + tt.showModal({ + title: '提示', + content: err.message ? err.message : err.data, + showCancel: false + }) + }) + }, + goPage(e) { + let obj = e.currentTarget.dataset.obj + console.log(obj, "obj") + if (obj.linkType == 1) { + if (obj.linkUrl == "/pages/game/index") { + this.gotogame() + } else { + + tt.navigateTo({ + url: obj.linkUrl, + + }) + + } + //小程序内部跳转 + } else if (obj.linkType == 2) { + //跳转到外部小程序 + tt.navigateToMiniProgram({ + appId: obj.outLinkAppid, + path: obj.linkUrl ? obj.linkUrl : '', + fail: err => { + tt.showModal({ + title: '提示', + content: err, + showCancel: false + }) + } + }) + } + }, + //获取按钮列表 + getModule() { + Http.get({ + url: config.api.wxCustomizeModule + }).then(res => { + this.setData({ + moduleList: res.data, + }) + }).catch(err => { + if (err.status != 404) + tt.showModal({ + title: '提示', + content: err.message ? err.message : err.data, + showCancel: false + }) + }) + }, + //判断用户是否授权 + uesrInfo() { + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }).then(res => { + Http.get({ + url: config.api.checkPhoneStatus + }).then(res => { //全部授权 + this.setData({ + accreditFlag: 3 + }) + }).catch(err => { + if (err.code == 11005) { //未授权手机号 + this.setData({ + accreditFlag: 2 + }) + } else { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + }) + }).catch(err => { + if (err.code == 11004) { //未授权微信 + this.setData({ + accreditFlag: 1 + }) + } else { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + }) + }, + + //获取当前广场名 + //跳转到每日签到 + goSign() { + tt.navigateTo({ + url: '/pages/activityCalendar/activityCalendar', + }) + }, + //活动日历 + goCalendar() { + tt.navigateTo({ + url: '/pages/dateLsit/dateLsit', + }) + }, + //跳转到其他广场列表 + goSquareList() { + if (this.data.isShowSqare) { + tt.navigateTo({ + url: '/pages/location/location', + }) + } + + }, + goLive() { + tt.navigateTo({ + url: '/pages2/live/livelist/index', + }) + }, + alphaClick1: function (even) { + var animation = tt.createAnimation({}) + animation.opacity(0).step({ + duration: 2000 + }) + this.setData({ + alphaData: animation.export() + }) + }, + alphaClick: function (even) { + var animation = tt.createAnimation({}) + animation.opacity(0).step({ + duration: 2000 + }) + this.setData({ + alphaData1: animation.export() + }) + }, + // 我的卡包 + mycard: function () { + tt.navigateTo({ + url: '/pages/cardorder/index/index', + }) + }, + //我的券包 + mycoupon: function () { + tt.navigateTo({ + url: '/pages/couponorder/index/index', + }) + }, + gotoSpellGroup: function () { + tt.navigateTo({ + url: '/pages/spellGroup/spellGroup', + }) + }, + qrcode: function () { + var that = this; + let memberId = that.data.memberId; + if (memberId) { + tt.navigateTo({ + url: '/pages/specialcourtesy/specialcourtesy' + }) + } + }, + //跳往限时秒杀 + gotoRushBuy: function () { + tt.navigateTo({ + url: '/pages/rushToBuy/index', + }) + }, + swiperChange: function (e) { + this.setData({ + swiperCurrent: e.detail.current + }); + }, + gotogame: function () { + let that = this; + if (!that.data.showIf) { + tt.showToast({ + title: '暂无游戏频道', + icon: "none", + duration: 3000 + }) + } else { + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }).then(res1 => { + app.globalData.type = 'gm' + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }).then(res => { + var data = { + couponChannelId: "" + that.data.couponChannelId, + couponId: "" + that.data.couponId + }; + if (that.data.couponChannelId == null) { + var data = { + couponId: "" + that.data.couponId + }; + } + tt.redirectTo({ + url: '/pages/game/index?url=' + that.data.staticGamedata.url + "&id=" + that.data.staticGamedata.id + "&gameId=" + that.data.staticGamedata.gameId, + }) + }).catch(err => { + if (err.code == 11005) { + // 用户手机未授权 + /** + * 将值传到用户手机号授权的页面 + * + */ + app.globalData.skipUrl = '/pages/game/index?url=' + that.data.staticGamedata.url + "&id=" + that.data.staticGamedata.id + "&gameId=" + that.data.staticGamedata.gameId, + app.globalData.skip = 'redirectTo' + tt.redirectTo({ + url: "/pages/getphoneInfo/index?path=index&url=" + that.data.staticGamedata.url + "&id=" + that.data.staticGamedata.id + "&gameId=" + that.data.staticGamedata.gameId, + }); + } else if (err.code == 11006) { + // 用户手机已加密 + tt.redirectTo({ + url: "/pages/phoneinput/phoneinput?path=index&url=" + that.data.staticGamedata.url + "&id=" + that.data.staticGamedata.id + "&gameId=" + that.data.staticGamedata.gameId, + }); + } else { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + }) + }).catch(err => { + if (err.code == 11004) { //未授权微信 + app.globalData.type = 'gm' + tt.redirectTo({ + url: "/pages/getuserinfo/index?path=index&url=" + that.data.staticGamedata.url + "&id=" + that.data.staticGamedata.id + "&gameId=" + that.data.staticGamedata.gameId, + }); + } else { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + }) + + } + + }, + mySpecial: function () { + console.log("special"); + tt.navigateTo({ + url: '/pages/specialcourtesy/specialcourtesy', + }) + }, + //是否属于集团 + ifShowSqare() { + if (tt.getStorageSync("squareList")) { + this.setData({ + isShowSqare: true + }) + } else { + this.setData({ + isShowSqare: false + }) + } + }, + /** + * 获取全局样式 + */ + getType() { + Http.get({ + url: config.api.setType, + data: { + mouldType: app.globalData.mouldType + } + }).then(res => { + const { + code, + data + } = res + if (code == 200) { + app.globalData.typeLsit = data + this.setData({ + typeLsit: data, + }) + } + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onLoad: function (options) { + console.log(123); + + + let that = this; + let optionss; + + let openId = tt.getStorageSync('openId') + if (tt.getStorageSync('options')) { + optionss = JSON.parse(tt.getStorageSync('options')); + } + if (options.played == "true") { + that.setData({ + played: true + }) + } + if (optionss && optionss.couponChannelId || optionss && optionss.orderId) { + that.setData({ + optionsData: optionss + }) + that.getWeapNote(optionss.couponChannelId, optionss.orderId); + } else { + that.getWeapNote() + } + //获取条形码 + // util.barcode("barcode", optionss.quancode, 510, 100); + // console.log(Http.headers.token, "?") + + }, + /** + * 获得经纬度 + */ + // getLocation() { + // let that = this; + // tt.getLocation({ + // type: "wgs84", + // success: function(res) { + // console.log(res, 9999) + // if (res && res.longitude && res.latitude) { + // Http.post({ + // url: config.api.updateLBS, + // data: { + // latitude: res.latitude, + // longitude: res.longitude + // } + // }).then(res => { + // console.log(res, 9999) + // }) + // } + // }, + // fail: error => { + // console.log(error); + // } + // }) + // }, + + + + onShow: function () { + console.log(app.globalData.mouldType, "mouldType") + // tt.requestSubscribeMessage({ + // tmplIds: [], // 需要填入开放平台申请的模版id,支持最多3个同类型模版 + // success(res) { + // //订阅成功 + // console.log("订阅成功", res); + // }, + // fail(error) { + // //订阅失败 + // console.log("订阅失败, 错误详情: ", error); + // tt.showToast({ + // title: "订阅失败", + // icon: "fail", + // }); + // }, + // complete(res) { + // //订阅完成 + // console.log("tt.requestSubscribeMessage API调用完成: ", res); + // }, + // }); + + this.setData({ + mouldType: app.globalData.mouldType, + marketName: app.globalData.marketName, + activeColor: app.globalData.mouldType == 1 ? "#E9D0AA" : bgColor.colorFirst.main.activeColor + }) + // this.uesrInfo() + this.ifShowSqare(); + if (tt.getStorageSync("squareList") && tt.getStorageSync("selectedMall")) { + var temp = tt.getStorageSync("squareList").filter(item => item.tenantId == tt.getStorageSync("selectedMall"))[0].name + this.setData({ + squareName: temp + }) + } + if (typeof this.getTabBar === 'function' && + this.getTabBar()) { + this.getTabBar().setData({ + selected: 0, + }) + } + let that = this; + that.setData({ + havePlayEd: app.globalData.havePlayEd ? app.globalData.havePlayEd : false, + havePlayEd1: app.globalData.havePlayEd1 ? app.globalData.havePlayEd1 : false + }) + + /** + * couponNum 是否有普通的优惠券购买 + * couponNum2 是否有新买的消费卡 + */ + let num = tt.getStorageSync('couponNum'); + let num1 = tt.getStorageSync('couponNum2'); + + // if (num == 'couponNum' || num1 == 'couponNum2') { + // tt.showTabBarRedDot({ + // index: 3 + // }) + // } else { + // tt.hideTabBarRedDot({ + // index: 3 + // }) + // } + + if (app.globalData.score) { + that.setData({ + fistLogin: app.globalData.score + }) + } + // 如果有游戏 + setTimeout(function () { + that.alphaClick(); + }, 8000) + // 如果有广告 + setTimeout(function () { + that.alphaClick1(); + }, 8000) + }, + + + getmemberId: function (token) { + let that = this; + Http.get({ + url: config.api.getScore, + data: { + token: token + } + }).then(res => { + that.setData({ + levelName: res.data.levelName, + upgradePercent: res.data.upgradePercent, + upgradeScore: res.data.upgradeScore, + memberId: res.data.id, + credit: res.data.credit, + userAvatarUrl: res.data.avatarUrl ? res.data.avatarUrl:'', + userName: res.data.nickName ? res.data.nickName:'', + }) + }) + .catch(err => { + tt.showModal({ + title: '提示', + content: err.message, + showCancel: false + }) + }) + }, + gotoChengzhangzhi: function () { + tt.navigateTo({ + url: '/pages/czdetail/czdetail', + }) + }, + goIntegralmall() { + tt.navigateTo({ + url: '/pages/integralmall/index', + }) + }, + gotoBargain: function () { + tt.navigateTo({ + url: '/pages/bargain/bargain', + }) + }, + gotoSpellGroup: function () { + tt.navigateTo({ + url: '/pages/spellGroup/spellGroup', + }) + }, + gotoCard: function () { + tt.navigateTo({ + url: '/pages/discountCardList/discountCardList', + }) + }, + // gotoGame: function () { + // tt.navigateTo({ + // url: '/pages/game/index', + // }) + // }, + gotoJfsc: function () { + tt.navigateTo({ + url: '/pages/integralmall/index', + }) + }, + + /** + * + * @param {code,page} + * 子组件向父组件传值 + */ + onGetCode: function (e) { + this.setData({ + code: e.detail.val, + page: e.detail.pageNum, + }); + console.log(e.detail.val) + console.log(e.detail.pageNum) + }, + getWeapNote: function (couponChannelId, couponId, orderId) { + var that = this; + + if (app.globalData.token) { + // 登录 + console.log(app.globalData.token) + + that.setData({ + mouldType: app.globalData.mouldType, + marketName: app.globalData.marketName, + activeColor: app.globalData.mouldType == 1 ? "#E9D0AA" : bgColor.colorFirst.main.activeColor + }) + + //获取首页按钮 + that.getModule() + that.getmemberId(app.globalData.token); + that.getBannerlist(); + if (that.data.mouldType == 0) { //富茂原版 + that.topicShow(); + that.getxsList(); + } else if (that.data.mouldType == 1) { //欢乐城模板 + that.getShowList() + that.topicShowall(2); + that.topicShowall(3); + that.topicShowall(4); + that.topicShowall(5); + that.topicShowall(6); + that.getBusinessList(); + that.getCouponChannelList(0) + } + + + that.getType() + that.uesrInfo() + // that.getLocation(); + that.getMallInfo(app.globalData.token); + + if (app.couponChannelListCallback) { + app.couponChannelListCallback(app.globalData.token); + } + if (app.couponListCallback) { + app.couponListCallback(app.globalData.token); + } + if (app.businessListCallback) { + app.businessListCallback(app.globalData.token); + } + Http.get({ + url: config.api.getWeapNote, + data: { + appId: app.globalData.appId, + } + }) + .then(res => { + console.log(33333333333) + console.log(app.globalData.token) + console.log(res) + console.log(33333333333) + // that.getGameOne(app.globalData.token) + // that.getStaticGame(app.globalData.token) + that.getGg(app.globalData.token) + let weapNote = JSON.parse(res.data.weapNote); + that.setData({ + // desc: weapNote.firstpage.desc?weapNote.firstpage.desc:"", + // title: weapNote.firstpage.title?weapNote.firstpage.title:'', + }) + }) + .catch(err => { + // that.getGameOne(app.globalData.token) + // that.getStaticGame(app.globalData.token) + that.getGg(app.globalData.token) + tt.showModal({ + title: "提示", + content: err.message, + showCancel: false + }); + }); + + } else { + app.tokenCallback = token => { + // 登录 + console.log(app.globalData.token) + that.setData({ + mouldType: app.globalData.mouldType, + marketName: app.globalData.marketName, + activeColor: app.globalData.mouldType == 1 ? "#E9D0AA" : bgColor.colorFirst.main.activeColor + }) + //获取首页按钮 + that.getModule() + that.getmemberId(app.globalData.token); + that.getBannerlist(); + if (that.data.mouldType == 0) { //富茂原版 + that.topicShow(); + that.getxsList(); + } else if (that.data.mouldType == 1) { //欢乐城模板 + that.getShowList() + that.topicShowall(2); + that.topicShowall(3); + that.topicShowall(4); + that.topicShowall(5); + that.topicShowall(6); + that.getBusinessList(); + that.getCouponChannelList(0) + } + that.getType() + that.uesrInfo() + // that.getLocation(); + that.getMallInfo(app.globalData.token); + if (app.couponChannelListCallback) { + app.couponChannelListCallback(app.globalData.token); + } + if (app.couponListCallback) { + app.couponListCallback(app.globalData.token); + } + if (app.businessListCallback) { + app.businessListCallback(app.globalData.token); + } + + Http.get({ + url: config.api.getWeapNote, + data: { + appId: app.globalData.appId, + } + }) + .then(res => { + console.log(33333333333) + console.log(app.globalData.token) + console.log(res) + console.log(33333333333) + // that.getGameOne(app.globalData.token) + // that.getStaticGame(app.globalData.token) + that.getGg(app.globalData.token) + let weapNote = JSON.parse(res.data.weapNote); + that.setData({ + // desc: weapNote.firstpage.desc?weapNote.firstpage.desc:"", + // title: weapNote.firstpage.title?weapNote.firstpage.title:'', + }) + }) + .catch(err => { + // that.getGameOne(app.globalData.token) + // that.getStaticGame(app.globalData.token) + that.getGg(app.globalData.token) + tt.showModal({ + title: "提示", + content: err.message, + showCancel: false + }); + }); + } + } + + }, + + getStaticGame(token) { + let _this = this; + Http.get({ + url: config.api.getGame, + data: { + triggleAction: 2, // 固定入口 + token: token + } + }).then(res => { + if (res.data.id) { + _this.setData({ + showIf: true, + newUrl: res.data.imgUrl + }) + } else { + _this.setData({ + showIf: false + }) + } + _this.setData({ + staticGamedata: res.data + }) + }) + .catch(err => { + _this.setData({ + showIf: false + }) + console.log(err) + }) + }, + getGameOne: function (token) { + let _this = this; + Http.get({ + url: config.api.getGame, + data: { + triggleAction: 1, // 登录触发 + token: token + } + }).then(res => { + if (res.data.id) { + _this.setData({ + showGame: true, + }) + } else { + _this.setData({ + showGame: false + }) + } + _this.setData({ + gamedata: res.data + }) + }) + .catch(err => { + _this.setData({ + showGame: false + }) + this.alphaClick(); + }) + }, + /** + * mallinfo + */ + getMallInfo: function (token) { + let that = this; + Http.get({ + url: config.api.getMallInfo, + data: { + token: token, + } + }).then(res => { + that.setData({ + liveFlag: res.data.liveSupport, + weappShareTitle: res.data.weappShareTitle ? res.data.weappShareTitle : null, + weappShareCoverImg: res.data.weappShareCoverImg ? res.data.weappShareCoverImg : null, + }); + console.log(that.data.liveFlag, "||||") + }) + .catch(err => { + // 不需要错误提示 + }); + }, + //获取限时抢购列表 + getxsList() { + let that = this; + Http.get({ + url: config.api.couponChannelList, + data: { + pageNum: 1, + pageSize: 3, + targetAd: 2 + } + }).then(res => { + if (res && res.data.total > 0) { + that.setData({ + xslist: res.data.list, + showQg: true + }); + } else { + that.setData({ + showQg: false + }) + } + }) + .catch(err => { + console.log(err) + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + /** + * banner + */ + getBannerlist: function () { + let that = this; + Http.get({ + url: config.api.bannerlist, + data: { + pageNum: 1, + pageSize: 7 + } + }).then(res => { + that.getmemberId(app.globalData.token); + // that.checkUserCarStatus(); + that.setData({ + list: res.data.list + }); + }) + .catch(err => { + that.getmemberId(app.globalData.token); + // that.checkUserCarStatus(); + }); + }, + //获取欢乐城专题 + getShowList() { + Http.get({ + url: config.api.showList + }).then(res => { + let tempData = res.data + tempData.map(item1 => { + if (item1.couponList) { + item1.couponList.map(item2 => { + if (item2.salePriceStr && item2.salePriceStr.indexOf('.') != -1) { + let str = item2.salePriceStr.split('.') + item2.salePriceStrQ = str[0] + item2.salePriceStrH = str[1] + } + }) + } + + }) + this.setData({ + specialLsit: res.data ? res.data : [] + + }) + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + /** + * topicType=2 限时抢购 + * topicType=3 砍价 + * topicType=4 拼团 + * topicType=5 消费卡 + * topicType=6 积分商城 + */ + topicShowall(topicType) { + Http.get({ + url: config.api.topicShow, + data: { + topicType + } + }).then(res => { + + let data = res.data + + if (data.couponList != null && data.couponList.length > 0) { + data.couponList.map(item => { + if (item.salePriceStr && item.salePriceStr.indexOf('.') != -1) { + let str = item.salePriceStr.split('.') + item.salePriceStrQ = str[0] + item.salePriceStrH = str[1] + } + }) + } + + if (topicType == 2) { + let tempData = data + this.setData({ + topicObj2: data + }) + } else if (topicType == 3) { + this.setData({ + topicObj3: data + }) + } else if (topicType == 4) { + this.setData({ + topicObj4: data + }) + } else if (topicType == 5) { + this.setData({ + topicObj5: data + }) + } else if (topicType == 6) { + this.setData({ + topicObj6: data + }) + } + + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + // 专题显示 + topicShow: function () { + let that = this; + Http.get({ + url: config.api.topicShow, + data: { + token: app.globalData.token + } + }).then(res => { + if (res && res.data) { + that.setData({ + name: res.data.name, + cover: res.data.cover, + id: res.data.id, + showTopic: true + }) + } else { + that.setData({ + showTopic: false + }) + } + }) + .catch(err => { + console.log(err); + }) + }, + gotoTopic() { + tt.navigateTo({ + url: `/pages/topicDetail/index?id=${this.data.id}` + }) + }, + /** + * 检查用户是否有车 + */ + // checkUserCarStatus: function() { + // var that = this; + // Http.get({ + // url: config.api.userCarCount, + // data: {} + // }).then(res => { + // if (res.data > 0) { + // // 用户名下有车 + // app.globalData.phone = res.data.phone; + // app.globalData.supportCar = true; + // // 共同登录 + // that.userCarLogin(); + // } + // }); + // }, + /** + * car共同登录 + */ + // userCarLogin: function() { + // var that = this; + // if (!app.globalData.carLogin) { + // // 共同登录 + // Http.post({ + // url: config.api.carInit, + // data: { + // phone: app.globalData.phone + // } + // }).then(res => { + // app.globalData.carLogin = true; + // app.globalData.parkVendor = res.data.vendor; + // if (res.data.token != "undefined") { + // app.globalData.etcpToken = res.data.token; + // } + // }); + // } + // }, + /** + * 获取用户信息 + */ + // getUserInfo: function() { + // // 获取用户信息 + // tt.getSetting({ + // success: res => { + // if (res.authSetting["scope.userInfo"]) { + // // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 + // tt.getUserInfo({ + // success: res => { + // // 可以将 res 发送给后台解码出 unionId + // } + // }); + // } + // } + // }); + // }, + gotoBargain: function () { + tt.navigateTo({ + url: '/pages/bargain/bargain' + }) + }, + //限时抢购的详情页面 + gotodetail: function (e) { + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${e.currentTarget.dataset.couponchannelid + }&couponId=${e.currentTarget.dataset.couponid}` + }); + }, + //浮层广告 + getGg: function (token) { + + let that = this + Http.get({ + url: config.api.getGg, + data: { + token: token, + appId: app.globalData.appId, + openId: "" // tt.getStorageSync('openId') + } + }).then(res => { + console.log(res) + if (res.data.id) { + that.setData({ + showGg: true, + }) + console.log(that.data.showGg, 1111111111111) + } else { + that.setData({ + showGg: false + }) + // that.getGameOne(app.globalData.token) + console.log(that.data.showGg, 222222222222222222) + } + that.setData({ + ggdata: res.data + }) + }) + .catch(err => { + this.setData({ + showGg: false + }) + // that.getGameOne(app.globalData.token) + that.alphaClick1(); + }) + }, + /** + * 刷新 + */ + onPullDownRefresh: function (e) { + tt.showLoading({ + title: "加载中..." + }); + let that = this; + that.setData({ + topicObj2: null, //欢乐城首页限时抢购 + topicObj3: null, //欢乐城首页砍价 + topicObj4: null, //欢乐城首页拼团 + topicObj5: null, //欢乐城首页消费卡 + topicObj6: null, //欢乐城首页积分商城 + specialLsit: null,//专题 + }) + // that.getWeapNote(); + that.setData({ + page: 1 + }) + if (that.data.optionsData != null && (that.data.optionsData.couponChannelId || that.data.optionsData.orderId)) { + that.getWeapNote(that.data.optionsData.couponChannelId, that.data.optionsData.orderId); + } else { + that.getWeapNote() + } + if (that.selectComponent("#lists")) { + if (that.data.code == 0 || that.data.code == undefined) { + that.selectComponent("#lists").getList(0, 1, "refresh"); + tt.stopPullDownRefresh(); + } else { + that.selectComponent("#lists").getList(that.data.code, 1, "refresh"); + tt.stopPullDownRefresh(); + }; + that.selectComponent("#hot").getList(); + } + + // 砍价下拉刷新 + // that.selectComponent("#bargain").getList(); + // that.selectComponent("#spellGroup").getList(); + // that.selectComponent("#rushtobyCard").getList(); + + //爆款专区下拉刷新 + + that.getxsList(); + that.topicShow(); + setTimeout(function () { + tt.hideLoading(); + tt.stopPullDownRefresh(); + }, 1600); + + }, + //加载更多 + onReachBottom: function () { + console.log("我到底了") + let that = this; + that.data.page++; + that.setData({ + page: that.data.page, + businePageNum: that.data.businePageNum + 1 + }); + console.log("加载更多页数" + that.data.page,); + console.log("加载更多key" + that.data.code); + if (that.data.mouldType == 0) { //富茂源模板 + //父组件获得子组件的方法 + //如果code == 0 + if (that.data.code == 0 || that.data.code == undefined) { + that.selectComponent("#lists").getList(0, that.data.page); + } else { + that.selectComponent("#lists").getList(that.data.code, that.data.page); + } + } else if (that.data.mouldType == 1) { + this.getCouponChannelList(that.data.busineKye) + } + + }, + // 用户点击右上角分享 + onShareAppMessage: function () { + app.globalData.previewFlag = true + return { + path: "/pages/index/index", + title: this.data.weappShareTitle, + imageUrl: this.data.weappShareCoverImg, + success: function (res) { + tt.showToast({ + title: "分享成功", + duration: 1000, + icon: "success" + }); + } + }; + } +}); \ No newline at end of file diff --git a/index/index.json b/index/index.json new file mode 100644 index 0000000..d18c932 --- /dev/null +++ b/index/index.json @@ -0,0 +1,16 @@ + +{ + "usingComponents": { + "c-banner": "../components/banner/index", + "c-coupons": "../pages/main/coupons/index", + "c-hot": "../components/hot/hot", + "c-advertisement":"../components/advertisement/advertisement", + "navbar": "../components/navbar/navbar", + "c-mould":"../components/commodityMould/commodityMould", + "optimization":"../components/optimization/optimization", + "tabbar":"../components/tabbar/tabbar" + }, + "enablePullDownRefresh": true, + "navigationBarBackgroundColor": "#F4F5F9" + } + \ No newline at end of file diff --git a/index/index.ttml b/index/index.ttml new file mode 100644 index 0000000..1b23ea4 --- /dev/null +++ b/index/index.ttml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + {{squareName}} ↓ + + + + + + + + + + + + + {{levelName}} + + + + + 还需{{upgradeScore}}成长值可升级 + + + + + + + + + + + + + + + + + {{item.name}} + + + + + + 砍价 + + + + 拼团 + + + + 限时抢购 + + + + + + 限时专区 + 限时惊爆价 轻松拎回家 + + + + + + {{xslist[index].title}} + + + + + + 更多... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{marketName}} + + + + + + + + + + + + + + + + + + +

{{userName}}

+ + {{levelName}} + 积分:{{credit}} +
+ + + + 还需 + {{upgradeScore}}成长值 + 可升级 + +
+
+ + + + + + +
+ + + + + + + {{item.name}} + + + + + + + 砍价 + + + + 拼团 + + + + 限时抢购 + + +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ \ No newline at end of file diff --git a/index/index.ttss b/index/index.ttss new file mode 100644 index 0000000..52cc8a5 --- /dev/null +++ b/index/index.ttss @@ -0,0 +1,828 @@ +@import "../app.ttss"; + +page { + background: #f4f5f9; +} +.temp{ + width: 100rpx; + height: 100rpx; + background-color: darkcyan +} +.xia { + width: 24rpx; + height: 14rpx; + margin: auto 10rpx; + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + /* margin: auto; */ +} + +.goSqunar { + display: flex; + justify-content: space-around; +} +.goSqunar1 { + display: flex; + justify-content: center; + +} + +.title { + font-size: 32rpx; + font-family: OPPOSans; + font-weight: bold; + +} + +.title1 { + max-width:320rpx; + font-size: 32rpx; + font-family: OPPOSans; + font-weight: bold; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.squareMore { + width: 24rpx; + /* height: 15rpx; */ +} +.marketName{ + +} +.f { + float: left; +} + +.r { + float: right; +} + +.vgrade { + /* width: 40rpx; */ + height: 26rpx; + float: left; + margin: 10rpx; + background: linear-gradient(180deg, #d5a56e, #e9d0aa); + border-radius: 16rpx 0 16rpx 0; + color: #fff; + line-height: 26rpx; + font-size: 24rpx; + padding: 4rpx 10rpx; +} + +.integralNum { + float: left; + font-family: OPPOSans; + font-weight: bold; + color: #be8b50; + font-size: 26rpx; +} + +.color_box1 { + background-color: #fff; + background-image: url('https://formall.oss-accelerate.aliyuncs.com/cimg/v20211214/home_top_bnt.png'); + background-size: 100% 100%; + border-radius: 0 0 40rpx 40rpx; + overflow: hidden; + background-repeat: no-repeat; +} + +.color_box { + /* padding-top: 20rpx; *//* background-image: linear-gradient(#DC143C, #F4F5F9); */ + background-color: #f4f5f9; +} + +.underlingImg { + width: 30rpx; + height: 60rpx; + font-size: 30prx; + float: left; + /* margin-top: 20rpx; */ +} + +.underlingName { + float: left; + line-height: 30rpx; + color: #a6a6a6; + /* margin-top: 20rpx; */ + margin-bottom: 20rpx; + margin-left: 5rpx; +} + +.index-position { + background: rgba(0, 0, 0, 0.5); + height: 88rpx; + position: absolute; + top: 0; + width: 100%; + font-family: PingFangSC-Semibold; + font-size: 30rpx; + color: #fff; + letter-spacing: 0.75rpx; + z-index: 9; + line-height: 88rpx; + overflow: hidden; +} + +.red { + position: absolute; + width: 13rpx; + height: 13rpx; + border-radius: 50%; + background: red; + right: -50rpx; + top: 19rpx; + left: 0; + margin: auto; + display: none; +} + +page { + width: 100%; + height: auto !important; + overflow-x: hidden; +} + +.txt { + margin-left: 20rpx; +} + +.game-entry { + position: fixed; + right: 27rpx; + bottom: 443rpx; + width: 120rpx; + margin: 37rpx auto 0; + z-index: 10; +} + +.gameimg { + display: block; + width: 100%; +} + +.underling { + padding: 10rpx 30rpx; +} + +.userinfo { + width: 690rpx; + height: 96rpx; + border-radius: 16rpx; + display: flex; + justify-content: space-between; + margin: 0 auto 30rpx; +} + +.userinfo1 { + width: 690rpx; + height: 96rpx; + border-radius: 16rpx; + display: flex; + justify-content: space-between; + margin: 0 auto; +} + +.infoLeft { + height: 100%; + border-radius: 12rpx; + background: #fff; +} + +.section { + padding: 0 20rpx; + justify-content: space-around; + text-align: center; + margin-top: 25rpx; + margin-bottom: 30rpx; +} + +.sellsection { + margin-bottom: 37rpx; + padding: 0 38rpx; +} + +.section >view, .sellsection>view { + width: 25%; + display: inline-block; + position: relative; +} + +.section >view image, .sellsection>view image { + display: block; + margin: 0 auto; +} + +.section >view image { + width: 55rpx; + height: 55rpx; + margin-top: 20rpx; + margin-bottom: 14rpx; +} + +.sellsection>view image { + width: 159rpx; + height: 134rpx; +} + +.section text { + font-size: 24rpx; + color: rgba(51, 51, 51, 1); + display: block; + margin-top: 0rpx; +} + +.showQrcode { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + background: rgba(0, 0, 0, 0.6); +} + +.qrcode image { + margin: 15rpx 20rpx 15rpx; + z-index: 100; +} + +.qrcode1 image { + margin: 15rpx 20rpx 15rpx; + z-index: 100; +} + +.showQrcode { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + background: rgba(0, 0, 0, 0.6); +} + +.canvas-box { + position: fixed; + width: 500rpx; + overflow: hidden; + left: 0; + top: 200rpx; + right: 0; + margin: auto; + background: #fff; + border-radius: 16rpx; + z-index: 100; + padding-bottom: 30rpx; +} + +.showQrcode text { + display: none; + text-align: center; + font-size: 28rpx; +} + +.button { + width: 414rpx; + text-align: center; + margin: 0 auto; + height: 80rpx; + line-height: 80rpx; + background: rgba(255, 255, 255, 1); + border-radius: 10rpx; + font-size: 32rpx; + color: rgba(2, 192, 255, 1); + overflow: hidden; +} + +.memberIds { + padding-top: 30rpx; + font-size: 30rpx; +} + +.search { + background: rgba(2, 192, 255, 1); + height: 50rpx; +} + +.searchbar { + position: relative; + width: 685rpx; + height: 76rpx; + margin: 0 auto; + text-align: center; +} + +.searchbar image { + width: 40rpx; +} + +.searchbar text { + font-size: 28rpx; + line-height: 50rpx; + color: #fff; + display: inline-block; +} + +.user-avatar { + width: 80rpx; + height: 80rpx; + border-radius: 50%; + overflow: hidden; + float: left; + margin: 10rpx 10rpx; +} + +.user-avatar open-data { + display: block; + width: 100%; + height: 100%; +} + +.user-avatar1 { + width: 80rpx; + height: 80rpx; + border-radius: 50%; + overflow: hidden; + float: left; + margin: 0 10rpx; +} + +.user-avatar1 image { + display: block; + width: 100%; + height: 100%; +} + +.user-data { + letter-spacing: 0.64rpx; + line-height: 46rpx; + font-size: 30rpx; + color: #333; + background: #fff; + margin-top: 10rpx; + margin-bottom: 26rpx; + float: right; + display: flex; + flex-direction: column; +} + +.user-data1 { + letter-spacing: 0.64rpx; + line-height: 46rpx; + font-size: 30rpx; + color: #333; + background: #fff; + /* margin-top: 10rpx; */ + margin-bottom: 26rpx; + float: right; + display: flex; + flex-direction: column; +} + +.nameBox open-data { + float: left; +} + +.chengzhangBox { + height: 32rpx; + line-height: 26rpx; + border-radius: 9px 9px 9px 0px; + font-family: PingFangSC-Regular; + font-weight: 400; + color: rgba(255, 255, 255, 1); + float: left; + margin-top: 8rpx; +} + +.chengzhang { + font-size: 22rpx; + font-weight: 400; + color: #fff; + height: 22rpx; + line-height: 22rpx; + padding: 0 8rpx; +} + +.integral { + margin-left: 70rpx; +} + +.jifen { + display: inline-block; + height: 34rpx; + color: #999; + font-size: 24rpx; + line-height: 34rpx; +} + +.jifenNumber { + color: #d18b4c; + font-size: 34rpx; + line-height: 34rpx; + margin-left: 10rpx; + font-weight: bold; +} + +.view { + display: flex; + font-size: 24rpx; + color: #999; +} + +.view>.score { + margin-left: 9rpx; + color: #333; + font-size: 30rpx; + margin-right: 23rpx; + font-family: PingFang-SC-Bold; +} + +.qrcode1 { + width: 106rpx; + height: 96rpx; + border-radius: 12rpx; +} + +.qrcode { + width: 106rpx; + height: 96rpx; + background: #fff; + border-radius: 12rpx; +} + +.qrcodeimg { + width: 68rpx !important; + height: 68rpx !important; +} + +.leftimg { + position: absolute; + right: 40rpx; + top: 60rpx; + margin-top: -7rpx; + width: 14rpx; + height: 26rpx; +} + +.duihuanimg { + display: block; + width: 48rpx; + margin-top: 6rpx; +} + +.product { + width: 710rpx; + margin: 30rpx auto 10rpx; + border-radius: 16rpx; + overflow: hidden; +} + +.product image { + display: block; + width: 100%; +} + +.textBox { + width: 400rpx; + height: 100%; + float: left; + margin-left: 10rpx; +} + +.textBox .name { + width: 400rpx; + font-size: 28rpx; + color: #3c3c3c; + margin-top: 20rpx; +} + +.textBox .title { + width: 400rpx; + font-size: 20rpx; + color: #a6a6a6; + margin-top: 10rpx; +} + +.product .gift { + width: 88rpx; + height: 88rpx; + float: left; + margin-top: 30rpx; + margin-left: 15rpx; +} + +.next image { + width: 26rpx; + height: 40rpx; +} + +.gift image { + width: 88rpx; + height: 76rpx; +} + +.product .next { + width: 32rpx; + height: 60rpx; + float: right; + margin-top: 40rpx; + margin-right: 26rpx; +} + +#rushtobyCard { + margin-top: 30rpx; +} + +.signin { + width: 542rpx; + height: 94rpx; + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 10000000; + margin: auto; +} + +.signin open-data { + position: absolute; + width: 90rpx; + left: 0; + top: 0; + bottom: 0; + height: 94rpx; + margin: auto; + border-radius: 50%; + overflow: hidden; +} + +.signin text { + display: block; + background: rgba(0, 0, 0, 0.5); + font-size: 28rpx; + height: 80rpx; + width: 100%; + line-height: 80rpx; + color: #d6d5d5; + text-indent: 4em; + border-radius: 60rpx; + margin-top: 7rpx; +} + +.remainchengzhangzhi { + display: block; + color: #a6a6a6; + font-size: 22rpx; + margin-top: 5rpx; + height: 30rpx; + line-height: 30rpx; + float: left; + margin-left: 10rpx; + width: 255rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.remainchengzhangzhi p{ + display: inline; +} +progress { + width: 200rpx; + border-radius: 60rpx; + overflow: hidden; + float: left; + margin-top: 10rpx; +} + +.channelBox { + width: 688rpx; + /* height: 220rpx; */ + margin: 20rpx auto; + display: flex; + flex-wrap: wrap; + /* justify-content: space-between; */ + background: #f4f5f9; +} + +.kjBox { + width: 25%; + height: 118rpx; + font-size: 24rpx; + color: #a6a6a6; + margin-top: 10rpx; + text-align: center; +} + +.kjBox1 { + width: 25%; + height: 118rpx; + font-size: 24rpx; + color: #a6a6a6; + margin-top: 10rpx; + text-align: center; +} + +.kjBox image { + width: 60rpx; + height: 60rpx; + margin: auto; +} + +.kjBox1 image { + width: 80rpx; + height: 80rpx; + margin: auto; +} + +.text { + margin: 0 auto; +} + +.toutiao { + width: 710rpx; + height: 128rpx; + line-height: 128rpx; + margin: 0 auto; + background: #fff; + box-shadow: 0px 6rpx 16rpx 0px rgba(236, 238, 243, 1); + border-radius: 12rpx; + margin-top: 18rpx; + margin-bottom: 18rpx; + position: relative; +} + +.toutiao1 { + width: 710rpx; + height: 128rpx; + margin: 0 auto; + background: #fff; + box-shadow: 0px 6rpx 16rpx 0px rgba(236, 238, 243, 1); + border-radius: 12rpx; + margin-top: 18rpx; + margin-bottom: 18rpx; + display: flex; + justify-content: space-between; +} + +.xianshi { + display: flex; + flex-direction: column; + justify-content: center; + align-content: center; + font-size: 30rpx; + padding: 20rpx; +} + +.xianshi>text { + height: 40rpx; +} + +.xianshi>text:nth-child(1) { + font-size: 30rpx; + font-family: PingFangSC; + font-weight: 500; +} + +.xianshi>text:nth-child(2) { + margin-top: 10rpx; + height: 28rpx; + font-size: 20rpx; + font-family: PingFangSC; + font-weight: 400; + color: rgba(166, 166, 166, 1); + line-height: 28rpx; +} + +.xsCon { + width: 300rpx; + display: flex; + justify-content: flex-end; + overflow: hidden; +} + +.igBox { + height: 100%; + width: 100rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-content: center; +} + +.igBoxm { + height: 100%; + width: 100rpx; + display: flex; + flex-direction: column; + text-align: center; +} + +.imageH { + height: 50rpx !important; + width: 50rpx !important; + border-radius: 50%; + margin: 15rpx auto; + margin-bottom: 15rpx; +} + +.more { + height: 70rpx !important; + width: 70rpx !important; + margin: 0 auto; +} + +.imTit { + height: 14px; + font-size: 10px; + font-family: PingFangSC; + font-weight: 400; + color: rgba(60, 60, 60, 1); + line-height: 14px; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + text-align: center; +} + +.toutiao view:nth-child(2) { + font-size: 26rpx; + font-family: PingFangSC-Regular; + font-weight: 400; + color: rgba(60, 60, 60, 1); + float: left; + width: 500rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.toutiao view:nth-child(2) text:nth-child(1) { + color: red; +} + +.toutiao view:nth-child(2) text:nth-child(2) { + text-decoration: line-through; + color: red; +} + +.toutiao .imgBox { + width: 64rpx; + height: 64rpx; + float: left; + margin: 5rpx 0 5rpx 20rpx; +} + +.toutiao image { + width: 48rpx; + height: 38rpx; + margin: auto; +} + +.toutiao .qg { + width: 80rpx; + height: 44rpx; + line-height: 44rpx; + border-radius: 18rpx; + border: 2rpx solid; + position: absolute; + top: 0; + bottom: 0; + right: 20rpx; + margin: auto; + font-size: 24rpx; + font-family: PingFangSC-Medium; + font-weight: 500; + color: #fd782d; + text-align: center; +} + +i-tabs i-tabs-scroll { + background: #f4f5f9 !important; +} + +.integralBox { + width: 110rpx; + height: 110rpx; + bottom: 500rpx; + right: 20rpx; + position: fixed; + z-index: 1000000; +} + +.integralBox1 { + width: 140rpx; + height: 140rpx; + bottom: 500rpx; + right: 20rpx; + position: fixed; + z-index: 1000000; +} diff --git a/index/searchbar.js b/index/searchbar.js new file mode 100644 index 0000000..3e8ef14 --- /dev/null +++ b/index/searchbar.js @@ -0,0 +1,207 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const Http = require("../utils/HttpBasics"); +const imgurl = require("../utils/imgurl"); +const config = require("../config/config"); +let app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + lists: [], + merchantVoList: [], + indexId: 0, + businessId: 0, + windowHeight: "", + page: 1, + isFirstPage: false, + isLastPage: false, + teljpgUrl: imgurl.teljpg.url, + map: imgurl.map.url, //商场地图 + mapUrl: '/pages/marketAtlas/marketAtlas', //跳转地图的路径 + }, + getFemgMap() { //判断时候对接封了地图 + Http.get({ + url: config.api.ifFengMap + }).then(res => { + if (res.data) { // + let initMpa = { + appName: res.data.appName, + key: res.data.appKey, + defaultThemeName: res.data.themeId, + tenantId: res.data.tenantId, + mapId: res.data.mapId + } + console.log(initMpa, "initMpa") + this.setData({ + mapUrl: `/pages2/fengMap/fengMap?initMap=${JSON.stringify(initMpa)}` + }) + } else { + this.setData({ + mapUrl: "/pages/marketAtlas/marketAtlas" + }) + + } + }).catch(err => { + this.setData({ + mapUrl: "/pages/marketAtlas/marketAtlas" + }) + }) + }, + //跳转到地图 + goMap() { + tt.navigateTo({ + url: this.data.mapUrl, + }) + }, + // 左侧点击事件 + jumpIndex(e) { + let that = this; + let index = e.currentTarget.dataset.menuindex; + that.setData({ + indexId: index, + businessId: index + }); + that.setData({ + page: 1 + }) + that.getList(1, that.data.businessId); + }, + goSearchBar() { + tt.navigateTo({ + url: '/pages/searchbar/searchbar', + }) + }, + /** + * 跳转到门店列表的详情页面 + */ + gotoDetail(e) { + tt.navigateTo({ + url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}` + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + let that = this; + that.getBussiness(); + that.getList(1, 0); + tt.showLoading({ + title: '加载中...', + }) + }, + onShow() { + this.getFemgMap() + let that = this; + if (typeof this.getTabBar === 'function' && + that.getTabBar()) { + that.getTabBar().setData({ + selected: 1 + }) + }; + tt.getSystemInfo({ + success: function(res) { + that.setData({ + windowHeight: res.windowHeight + }) + }, + }) + }, + getBussiness: function() { + let that = this; + Http.get({ + url: config.api.businessList, + data: { + filter: 1 + } + }).then(res => { + that.setData({ + lists: [{ + id: 0, + title: "全部", + type: 1 + }].concat(res.data) + }); + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + getList: function(page, businessId) { + let that = this; + let data; + if (businessId == 0) { + data = { + pageNum: page, + pageSize: 8 + } + } else { + data = { + pageNum: page, + pageSize: 8, + businessId: businessId + } + } + Http.get({ + url: config.api.merchantList, + data: data + }).then(res => { + tt.hideLoading(); + if (page == 1) { + that.setData({ + merchantVoList: [], + }) + } + var tmpArr = that.data.merchantVoList; + tmpArr.push.apply(tmpArr, res.data.list); + // console.log(tmpArr) + that.setData({ + merchantVoList: tmpArr, + isFirstPage: res.data.isFirstPage, + isLastPage: res.data.isLastPage + }) + // console.log(that.data.merchantVoList) + }) + .catch(err => { + tt.hideLoading(); + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + phone: function(e) { + let that = this; + if (e.currentTarget.dataset.merchantlinkphone) { + tt.makePhoneCall({ + phoneNumber: e.currentTarget.dataset.merchantlinkphone + }) + } + }, + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + let that = this; + that.data.page++; + that.setData({ + page: that.data.page + }); + console.log(that.data.page); + // 如果是最后一页 + //就不发送请求 + if (!that.data.isLastPage || that.data.isFirstPage && that.data.isLastPage) { + that.getList(that.data.page, that.data.businessId); + } + } +}) \ No newline at end of file diff --git a/index/searchbar.json b/index/searchbar.json new file mode 100644 index 0000000..4552eba --- /dev/null +++ b/index/searchbar.json @@ -0,0 +1,9 @@ +{ + "navigationBarTitleText": "门店", + "navigationBarBackgroundColor": "#F4F5F9", + "navigationBarTextStyle": "black", + "usingComponents": { + "navbar": "../components/navbar/navbar", + "tabbar":"../components/tabbar/tabbar" + } + } \ No newline at end of file diff --git a/index/searchbar.ttml b/index/searchbar.ttml new file mode 100644 index 0000000..3ddf369 --- /dev/null +++ b/index/searchbar.ttml @@ -0,0 +1,50 @@ + + + + + 搜索门店 + + + + + + + + + {{item.title}} + + + + + + + + + + + + + + 暂无数据 + + + + + + + \ No newline at end of file diff --git a/index/searchbar.ttss b/index/searchbar.ttss new file mode 100644 index 0000000..d396923 --- /dev/null +++ b/index/searchbar.ttss @@ -0,0 +1,191 @@ +@import "../iconfont.ttss"; +.searchicon{ + margin-right: 5rpx; +} +.map{ + position: fixed; + right: 0; + top: 740rpx; + height: 100rpx; + width: 100rpx; + /* background-color: chartreuse; */ +} +.search{ + z-index:5000; + left:0; + right: 0; + margin: auto; + width: 700rpx; + height: 68rpx; + line-height: 68rpx; + border:1px solid #ccc; + background: #F4F5F9; + border-radius:10rpx; + text-align: center; + color: #999; + font-size:30rpx; +} +.under_line{ + width: 100%; +} +.scrollY { + width: 134rpx; + position: fixed; + left: 0; + background:#F4F5F9; + /* top:240rpx; */ + margin-top: 40rpx; + overflow: scroll; +} + + +.text-style { + position: relative; + width: 139rpx; + height: 100rpx; + line-height: 100rpx; + text-align: center; + font-size: 30rpx; + font-family: PingFangSC-Semibold; + color: #3C3C3C; + background: #FFFFFF; + font-weight:500; +} +.text-styleHover{ + position: relative; + width: 139rpx; + height: 100rpx; + line-height: 100rpx; + text-align: center; + font-size: 26rpx; + font-family: PingFangSC-Semibold; + color: #A6A6A6; +} +.text-style text{ + font-size: 26rpx; +} +.active1 { + font-size: 26rpx!important; +} +.active { + position: absolute; + left: 4rpx; + bottom: 0rpx; + top:0; + margin: auto; + width:12rpx; + height:24rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius:7rpx; +} + +.posi { + position: relative; + width: 616rpx; + float: right; + margin-top: 20rpx; +} + +.posi>view:nth-child(2) { + width: 100%; + display: flex; + justify-content: space-between; + box-sizing: border-box; +} + +.posi>view:nth-child(2) text:nth-child(1) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi>view:nth-child(2) text:nth-child(2) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi_logo { + position: relative; + width:576rpx!important; + height:176rpx; + background:rgba(255,255,255,1); + box-shadow:0px 4rpx 8rpx 0px rgba(0,0,0,0.04); + border-radius:16rpx; + margin: 20rpx; + overflow: hidden; +} +.tel { + position: absolute; + right: 3%; + top: 0; + bottom: 0; + margin: auto; + width: 50rpx; + height: 50rpx; +} +.merchants{ + width: 90%; + display: flex; + background: #fff; + padding-right:5%; + overflow: hidden; +} +.merchants view:nth-child(1) image { + display: block; + width: 120rpx; + height: 120rpx; + border-radius: 16rpx; +} +.position{ + text-align: center; + margin-top: 100rpx; + color: #999; +} +.leftBox{ + padding: 20rpx 0; +} + +.shopVo{ + margin-left: 20rpx; +} + +.merchantName{ + color: #3C3C3C; + font-size: 32rpx; + margin-left: 20rpx; + width: 60%; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; + margin-top: 10rpx; +} +.shopVo text{ + float: left; +} +page { + padding: 0 0 30rpx; +} + +.text{ + display: block; + width: 25%; + text-align: center; +} + +.view view:nth-of-type(1) { + font-size: 28rpx; + color: #888; +} + +.shopVoList{ + padding-left: 0!important; + display: inline-block!important; + width: 345rpx; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.shopVoList text{ + font-size: 20rpx!important; + color: #b8b8b8!important; + margin-right: 10rpx; +} \ No newline at end of file diff --git a/index/user.js b/index/user.js new file mode 100644 index 0000000..252ffc0 --- /dev/null +++ b/index/user.js @@ -0,0 +1,132 @@ +const app = getApp() +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px"; +const Http = require("../utils/HttpBasics"); +const config = require("../config/config"); +const imgurl = require("../utils/imgurl"); +Page({ + data: { + navigationBarHeight, + showPhoem: false, + phoemFalg: true,//授权手机标记 + }, + showPhoemBtn() { + this.setData({ + showPhoem: true + }) + }, + go(e) { + if (this.data.phoemFalg) { + tt.showToast({ + title: '请授权手机号', // 内容 + icon: 'none', // 图标 + success: (res) => { + + }, + fail: (res) => { + + }, + }); + } else { + let url = e.currentTarget.dataset.url + console.log(url); + if(url=='/pages/order/index/index?id=all'){ + tt.navigateTo({ + url: url, + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }else{ + tt.navigateTo({ + url: url, // 指定页面的 url + success: (res) => { + + }, + fail: (res) => { + + }, + }); + } + + } + + }, + setPhone(paramData) {//子组件调用这个方法说明手机号已经授权成功 + this.setData({ + showPhoem: paramData.detail, + phoemFalg: false + }) + tt.showToast({ + title: '授权成功', // 内容 + icon: 'none', // 图标 + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }, + + setBox(paramData) { + this.setData({ + showPhoem: paramData.detail + }) + tt.showToast({ + title: '取消授权', // 内容 + icon: 'none', // 图标 + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }, + onLoad: function (options) { + let _this = this + Http.get({//判断是否授权抖音 + url: config.api.checkPhoneStatus, + + }).then(res => { + this.setData({ + phoemFalg: false + }) + }).catch(err => { + console.log(err, "我出错了") + }) + + + tt.getUserInfo({ + withCredentials: true, + success: function (res) { + _this.setData({ + userData: res.userInfo + }) + Http.post({ + url: config.api.getUserInfo, + data: { + encryptedData: res.encryptedData, + iv: res.iv + } + }).then(res => { + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + fail(res) { + tt.navigateTo({ + url: 'pages/index/index' // 指定页面的url + }); + }, + }) + } +}) \ No newline at end of file diff --git a/index/user.json b/index/user.json new file mode 100644 index 0000000..fc5894e --- /dev/null +++ b/index/user.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "我的", + "usingComponents": { + "navbar": "../components/navbar/navbar", + "phoem":"../components/getPhoen/getPhoen", + "tabbar":"../components/tabbar/tabbar" + } +} \ No newline at end of file diff --git a/index/user.ttml b/index/user.ttml new file mode 100644 index 0000000..71bedb4 --- /dev/null +++ b/index/user.ttml @@ -0,0 +1,82 @@ + + + + + + + {{userData.nickName}} + + 授权手机号 + + + + + + + + + 个人信息 + + + + 我的订单 + + + + 我的券包 + + + + 积分商城 + + + + + + 更多服务 + + + + + + + + 问卷调查 + + + + + + 关于我们 + + + + + + + + + 服务资质 + + + + + + + \ No newline at end of file diff --git a/index/user.ttss b/index/user.ttss new file mode 100644 index 0000000..2b3933f --- /dev/null +++ b/index/user.ttss @@ -0,0 +1,156 @@ +/* d:\fumaolianke\ttFmC\tt富茂C\pages\user\user.ttss */ +.userBg{ + width: 100%; + height: 200rpx; + background:linear-gradient(180deg,rgba(253,131,45,1) 0%,rgba(254,74,22,1) 100%); + position: relative; +} +button::after { + border: none; + } +button { + background-color: transparent; + padding-left: 0; + padding-right: 0; + line-height:inherit; +} +button { + border-radius:0; +} +.userLogo{ + position: absolute; + top: 40rpx; + left: 80rpx; + height: 100rpx; + width: 100rpx; + background-color: aliceblue; + border-radius: 50%; +} +.userLogo open-data{ + display: block; + width: 100%; + height: 100%; +} +.userLogo img{ + border-radius: 50% !important; +} +.open{ + width: 100% !important; + height:100% !important; + border-radius: 50% !important; + overflow: hidden; +} +.open img{ + border-radius: 50% !important; +} +.userData{ + position: absolute; + top: 40rpx; + left: 180rpx; + font-size: 26rpx; + color: #ffffff; +} + +.noInfo{ + width: 220rpx; + margin-left: 20rpx; + font-size: 32rpx; + text-overflow: -o-ellipsis-lastline; + overflow:hidden; + text-overflow:ellipsis; + display:-webkit-box; + -webkit-box-orient:vertical; + -webkit-line-clamp:1; +} +.info{ + border: 1rpx #ffffff solid; + border-radius: 50rpx; + padding: 0 10rpx; + margin-top: 10rpx; + margin-left: 20rpx; + width: 130rpx; +} +.userName{ + position: absolute; + top: 60rpx; + left: 180rpx; + font-size: 26rpx; + color: #ffffff; +} +.tempBpx{ + position: relative; + width: 680rpx; + height: 160rpx; +} +.functionBox{ + position: absolute; + width: 680rpx; + height: 160rpx; + left: 5%; + top: -23%; + background-color: #ffffff; + border-radius: 10rpx; + display: flex; + justify-content:space-around; +} +.itemBox{ + width:30% ; + /* text-align: center; */ +} +.itemLogoBox{ + width: 60rpx; + height: 60rpx; + /* background-color: #cacaca; */ + margin: 20rpx auto 0 auto; +} +.itemLogo{ + width: 100%; + height: 100%; +} +.itemNAme{ + text-align: center; + font-size: 26rpx; + margin-top: 10rpx; +} +.moreBox{ + width: 680rpx; + margin: 20rpx auto 0 auto; + background-color: #ffffff; + border-radius: 10rpx; + overflow: hidden; +} +.fuwu{ + font-size: 28rpx; + margin: 20rpx; +} +.fuwuItemBox{ + /* display: flex; */ + overflow: hidden; +} +.f{ + float: left; +} +.r{ + float: right; +} +.fuwuItem{ + /* width: 25%; */ + /* background-color: aquamarine; */ + border-bottom: 1rpx #f6f6f6 solid; + padding: 20rpx 0; + overflow: hidden; + width: 90%; + margin: 0 auto; + +} +.fuwuLogoBox{ + width: 50rpx; + height: 50rpx; + /* background-color: #fb3e5c; */ +} +.fuwuName{ + text-align: center; + font-size: 24rpx; + margin-top: 10rpx; + margin-left: 10rpx; +} \ No newline at end of file diff --git a/pages/bannerdetail/bannerdetail.js b/pages/bannerdetail/bannerdetail.js new file mode 100644 index 0000000..2091d78 --- /dev/null +++ b/pages/bannerdetail/bannerdetail.js @@ -0,0 +1,55 @@ +let config = require("../../config/config.js"); +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +let app = getApp(); +const Http = require("../../utils/HttpBasics"); +const util = require("../../utils/util"); +const imgurl = require("../../utils/imgurl"); +Page({ + data: { + mouldType: 0, + navigationBarHeight, + data: {}, + couponId: null, + orderId: "", + day: "", + hour: "", + wmhome: imgurl.wmhome.url, + minute: "", + nodes: '' + }, + onLoad(options) { + this.setData({ + mouldType: app.globalData.mouldType, + }) + let that = this; + if (options.id){ + Http.get({ + url: config.api.bannerDetail, + data: { + id: options.id + } + }).then(res => { + if(res.data.type==2){ + that.setData({ + nodes: res.data.html + }) + } + that.setData({ + data: res.data + }); + }).catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + }, + goback: function () { + tt.reLaunch({ + url: '/index/index', + }) + }, +}); diff --git a/pages/bannerdetail/bannerdetail.json b/pages/bannerdetail/bannerdetail.json new file mode 100644 index 0000000..9136d3d --- /dev/null +++ b/pages/bannerdetail/bannerdetail.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "活动详情", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/bannerdetail/bannerdetail.ttml b/pages/bannerdetail/bannerdetail.ttml new file mode 100644 index 0000000..58e47c0 --- /dev/null +++ b/pages/bannerdetail/bannerdetail.ttml @@ -0,0 +1,59 @@ + + + + + + + + + + {{data.title}} + {{data.subTitle}} + + 活动说明 + {{data.detail}} + + + + + + + + + + + + + {{item.title}} + {{item.subTitle}} + + {{item.salePriceStr}} + + 满¥{{item.usePriceStr}}可用 + + + 仅限本店使用 + + + + + + + + 免费领 + 马上购 + + + + + + \ No newline at end of file diff --git a/pages/bannerdetail/bannerdetail.ttss b/pages/bannerdetail/bannerdetail.ttss new file mode 100644 index 0000000..bed136a --- /dev/null +++ b/pages/bannerdetail/bannerdetail.ttss @@ -0,0 +1,568 @@ +@import "../../app.ttss"; + +page { + background: #eee; +} + +.coupons { + width: 100%; + position: relative; +} + +.coupons-body { + /* padding:40rpx 40rpx; */ + flex: 1; + /* overflow: auto; */ +} + +.banner { + position: relative; + width:750rpx; + overflow: hidden; + + /* box-shadow:0px 14px 26px 0px rgba(199,203,211,1); */ + +} + +.banner image { + width: 100%; + border-radius: 12rpx; +} + +.act { + position: relative; + z-index: 1000000000; + background: #fff; + border-radius: 12rpx; + width: 94%; + padding-bottom: 20rpx; + margin: 20rpx auto 0; +} + +.act text { + display: block; + padding-left: 4.8%; + padding-right: 4.8%; +} + +.txt001 { + display: block; + font-size: 34rpx; + color: #363636; + letter-spacing: 0; + text-align: left; + line-height: 48rpx; + padding-top: 3.2%; +} + +.txt002 { + font-size: 24rpx; + color: #999; + letter-spacing: 0; + text-align: left; + line-height: 33rpx; +} + +.proct { + position: relative; + /* height: 60rpx; */ + margin-top: 20rpx; +} + +.proct text:nth-of-type(1) { + display: block; + font-size: 30rpx; + color: #FD782D; + letter-spacing: 0; + line-height: 32rpx; + margin-bottom: 20rpx; + /* width: 60rpx; */ + /* height: 64rpx; */ +} + +.proct text:nth-of-type(2) { + display: block; + /* width: 498rpx; */ + /* height: 63rpx; */ + /* overflow: hidden; */ + word-wrap:break-word; + /* text-overflow: ellipsis; */ + font-size: 22rpx; + color: #6f6f6f; + letter-spacing: 0; + margin: 0 auto; +} + +.orbg { + position: absolute; + top: 256rpx; + z-index: 1000000; +} + +.banner text { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto; + width: 122rpx; + height: 48rpx; + line-height: 48rpx; + opacity: 0.8; + background: #000; + font-size: 24rpx; + color: #fff; + letter-spacing: 0; + text-indent: 0.5em; + border-top-left-radius: 50rpx; + border-bottom-left-radius: 50rpx; +} + +.coupons_info { + width: 92%; + height: 120rpx; + display: flex; + justify-content: space-between; + padding: 0 4% 4%; + background: #fff; +} + +.coupons_info view { + display: flex; + flex-direction: column; +} + +.coupons_info view:nth-child(1) text { + font-size: 30rpx; + line-height: 32rpx; + margin-top: 10%; +} + +.coupons_info view:nth-child(1) text:nth-child(1) text { + color: #ff3434; + font-size: 24rpx; + border: 1px solid #ff3434; + border-radius: 6rpx; + margin-left: 2%; + padding: 0 5rpx; +} + +.coupons_info view:nth-child(1) text:nth-child(2), +.coupons_info view:nth-child(1) text:nth-child(3) { + color: #b8b8b8; + font-size: 24rpx; + margin-top: 4%; +} + +.coupons_info view:nth-child(1) text:nth-child(2) text, +.coupons_info view:nth-child(1) text:nth-child(3) text { + color: #ff3434; + font-size: 24rpx; +} + +.coupons_info view:nth-child(2) text:nth-child(1) { + font-size: 36rpx; + color: #ff3434; + margin-top: 40rpx; + font-weight: bold; +} + +.coupons_info view:nth-child(2) text:nth-child(2) { + font-size: 24rpx; + color: #b4b4b4; + text-decoration: line-through; + padding-left: 10rpx; + padding-top: 4rpx; +} + +navigator { + display: block; + margin-bottom: 24rpx; + width: 344rpx; +} + +.navigator-hover{ + opacity: 1!important; + background: #fff!important; + border-radius:16rpx; +} +.active{ + opacity: .6; +} +navigator:nth-of-type(2n) { + float: right; +} + +navigator:nth-of-type(2n+1) { + float: left; +} + +.contain { + padding: 24rpx 25rpx 0; +} + +.posi { + width: 92%; + display: flex; + flex-direction: column; + padding: 0 4%; + background: #fff; + margin-top: 2%; +} + +.posi>view:nth-child(2) { + width: 100%; + height: 87rpx; + display: flex; + justify-content: space-between; + border-top: 1px solid #f6f6f6; + line-height: 87rpx; +} + +.posi>view:nth-child(2) text:nth-child(1) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi>view:nth-child(2) text:nth-child(2) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi_logo { + width: 100%; + height: 156rpx; + display: flex; + margin-top: 30rpx; +} + +.posi_logo view:nth-child(1) { + width: 126rpx; + height: 126rpx; + border-radius: 50%; + overflow: hidden; + flex: 2; +} + +.posi_logo view:nth-child(1) image { + width: 100%; + height: 100%; +} + +.posi_logo view:nth-child(2) { + display: flex; + flex-direction: column; + flex: 8; + padding-top: 20rpx; + padding-left: 30rpx; +} + +.posi_logo view:nth-child(2) text:nth-child(1) { + font-size: 30rpx; +} + +.posi_logo view:nth-child(2) text:nth-child(2) { + font-size: 24rpx; + color: #b8b8b8; + padding-top: 10rpx; +} + +.notes view:nth-child(1) { + width: 92%; + height: 87rpx; + padding: 0 4%; + line-height: 87rpx; + background: #fff; + /* border-top: 1rpx solid #f5f5f5; */ +} + +.notes view:nth-child(1) text { + font-size: 30rpx; + font-weight: bold; +} + +.notes view:nth-child(2) { + width: 92%; + height: auto; + padding: 0 4% 4%; + background: #fff; + /* border-bottom: 1rpx solid #f5f5f5; */ + display: flex; + flex-direction: column; +} + +.notes view:nth-child(2)>text { + font-size: 28rpx; + color: #a9a9a9; + line-height: 45rpx; +} + +.spot { + width: 12rpx; + height: 12rpx; + display: inline-block; + background: #a9a9a9; + margin-right: 16rpx; + position: relative; + bottom: 4rpx; + border-radius: 50%; +} + +.buy-view { + background: #fff; + position: fixed; + padding-top: 10rpx; + height: 98rpx; + bottom: 0rpx; + left: 0; + right: 0; +} + +.buy { + display: block; + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius: 30rpx; + height: 48rpx; + width: 112rpx; + margin: 0 auto; + color: #fff; + font-size: 26rpx; + line-height: 48rpx; + text-align: center; +} + +.coupons1-btn-gm { + background: #00c0ff !important; + border-radius: 10rpx !important; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold; + font-size: 28rpx; + color: #fff !important; + letter-spacing: 0; + height: 50rpx !important; + width: 138rpx !important; + line-height: 50rpx !important; +} + +.coupons1 { + position: relative; + background: #fff; + border-radius: 16rpx; + padding-bottom: 21rpx; + overflow: hidden; + height: 405rpx; +} + +/* .coupons1-border { + height: 1rpx; + left: 30rpx; + right: 30rpx; + background: #f5f5f5; + position: absolute; + bottom: 0; +} */ + +.coupons1-img { + width: 344rpx; + height: 233rpx; + overflow: hidden; +} + +.coupons1-img image { + display: block; + width: 100%; + height: 100%; +} + +.coupons1-info { + padding-left: 20rpx; +} + +.coupons1-info-name { + font-size: 28rpx; + color: #000; + letter-spacing: 0; +} + +.i { + font-size: 20rpx; + font-style: normal; +} + +.coupons1-info-price-p { + display: inline-block; + font-size: 36rpx; + color: #FD782D; + line-height: 50rpx; + /* margin-top: 21rpx; */ +} + +.tit { + font-size: 30rpx; + color: #000; + letter-spacing: 0; + line-height: 42rpx; + width: 270rpx; + height: 42rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-top: 12rpx; +} + +.coupons1-info-price-o { + display: block; + text-align: center; + font-size: 26rpx; + color: #b4b4b4; + letter-spacing: 0.96rpx; + text-decoration: line-through; + line-height: 24rpx; +} + +.coupons1-info-distance { + font-size: 22rpx; + color: #c0c0c0; + letter-spacing: 0; + padding-bottom: 10rpx; + line-height: 30rpx; +} + +.coupons1-info-address { + font-size: 22rpx; + color: #585858; + letter-spacing: 0; + line-height: 30rpx; +} + +.coupons1-btn { + position: absolute; + width: 120rpx; + bottom: 25rpx; + right: 13rpx; +} + +.coupons1-btn-gm { + background: #00c0ff !important; + border-radius: 10rpx !important; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold; + font-size: 28rpx; + color: #fff !important; + letter-spacing: 0; + height: 50rpx !important; + width: 138rpx !important; + line-height: 50rpx !important; +} + +.subtitle { + font-size: 24rpx; + font-weight: 100; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + width: 300rpx; + color: #999; + letter-spacing: 0; + height: 30rpx; +} + +.coupons1-info-manjian { + color: #fa7c7a; + font-size: 20rpx; + line-height: 34rpx; + display: inline-block; +} + +.jian { + width: 44rpx; + position: absolute; + bottom: 1.7%; + right: 3.5%; +} + +/**上拉加载更多**/ + +.userinfo { + display: flex; + flex-direction: column; + align-items: center; +} + +.userinfo-avatar { + width: 128rpx; + height: 128rpx; + margin: 20rpx; + border-radius: 50%; +} + +.userinfo-nickname { + color: #aaa; +} + +.sy { + display: block; + text-align: center; + width: 120rpx !important; + margin-top: 6rpx; +} + +.usermotto { + margin-top: 200px; +} + +/**/ + +scroll-view { + width: 100%; +} + +.item { + width: 90%; + height: 300rpx; + margin: 20rpx auto; + background: brown; + overflow: hidden; +} + +.item .img { + width: 430rpx; + margin-right: 20rpx; + float: left; +} + +.title { + font-size: 30rpx; + display: block; + margin: 30rpx auto; +} + +.description { + font-size: 26rpx; + line-height: 15rpx; +} +button::after{ border: none; } +.goback{ + position: fixed; + right: 50rpx; + bottom: 60rpx; + width:100rpx!important; + height:100rpx; + z-index: 100; + background:rgba(255,255,255,1); + line-height: 95rpx; + border:1rpx solid rgba(227,227,227,1); + border-radius:50%; +} +.goback image{ + position: absolute; + width: 60rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} \ No newline at end of file diff --git a/pages/complaint/complaint.js b/pages/complaint/complaint.js new file mode 100644 index 0000000..02c2c98 --- /dev/null +++ b/pages/complaint/complaint.js @@ -0,0 +1,72 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const Http = require("../../utils/HttpBasics"); +var config = require("../../config/config.js"); +var app = getApp(); +Page({ + data: { + navigationBarHeight, + }, + setDescrideVal(e) { //赋值标题 + let descrideVal = e.detail.value + this.setData({ + descrideVal: descrideVal, + titleVale: "", //标题 + descrideVal: "", //描述 + }) + }, + setTitVal(e) { //赋值描述 + let titleVale = e.detail.value + this.setData({ + titleVale: titleVale + }) + }, + save() { //提交 + if (!this.data.titleVale){ + tt.showToast({ + title: '请输入标题', + icon: "none", + duration: 2000 + }) + return + }else if(!this.data.descrideVal){ + tt.showToast({ + title: '请输入类容', + icon:"none", + duration:2000 + }) + return + } + let parameter = { + title: this.data.titleVale, + explains: this.data.descrideVal + } + Http.post({ + url: config.api.suggest, + data: parameter + }).then(item=>{ + tt.showToast({ + title: "提交成功!", + icon: 'none', + duration: 2000, + success: () => { + setTimeout(() => { + tt.reLaunch({ + url: '/index/index' + }) + }, 2000) + } + }); + }).catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + // mask: false + }); + }) + + }, + onLoad: function (options) { + + } +}) \ No newline at end of file diff --git a/pages/complaint/complaint.json b/pages/complaint/complaint.json new file mode 100644 index 0000000..f705074 --- /dev/null +++ b/pages/complaint/complaint.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "投诉建议", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/complaint/complaint.ttml b/pages/complaint/complaint.ttml new file mode 100644 index 0000000..6047727 --- /dev/null +++ b/pages/complaint/complaint.ttml @@ -0,0 +1,21 @@ + + + + + + {{"标题:"}} + + + + + + 详情描述: + + + + 提交 + + + + \ No newline at end of file diff --git a/pages/complaint/complaint.ttss b/pages/complaint/complaint.ttss new file mode 100644 index 0000000..d1545ce --- /dev/null +++ b/pages/complaint/complaint.ttss @@ -0,0 +1,63 @@ +.Box { + width: 90%; + /* height: 100vh; */ + margin: auto; + overflow: hidden; + font-size: 32rpx; + } + + .titleBox { + overflow: hidden; + margin: 20rpx 0; + } + + .title { + height: 40rpx; + float: left; + padding: 20rpx 20rpx 20rpx 0; + } + + .titValueBox { + width: 500rpx; + float: left; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 6rpx; + padding: 10rpx 10rpx 10rpx 0; + margin: 10rpx 10rpx 10rpx 0; + } + + .titValue { + margin-left: 20rpx; + } + + .describeBox { + padding: 20rpx 20rpx 20rpx 0; + } + + .describeValueBox { + width: 80%; + margin-left: 108rpx; + margin-top: 40rpx; + border-radius: 6rpx; + border: 1px solid rgba(0, 0, 0, 0.1); + height: 600rpx; + } + + .describeValue { + width: 92%; + height: 90%; + margin: 10rpx auto; + + } + + .submit{ + width: 600rpx; + height: 80rpx; + background-color: #FD832D; + color: #fff; + text-align: center; + line-height: 80rpx; + border-radius: 50rpx; + margin: 100rpx 0rpx 0 50rpx; + + } \ No newline at end of file diff --git a/pages/coupon/detail/index.js b/pages/coupon/detail/index.js new file mode 100644 index 0000000..9928209 --- /dev/null +++ b/pages/coupon/detail/index.js @@ -0,0 +1,1464 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +var config = require("../../../config/config.js"); +var app = getApp(); +const Http = require("../../../utils/HttpBasics"); +const util = require("../../../utils/util"); +const imgurl = require("../../../utils/imgurl"); +Page({ + data: { + isGetUser: true,//判断是否授权抖音 + mouldType: 0, + navigationBarHeight, + homeSelectedO: imgurl.homeSelectedO.url, + isshowposter: false, //是否显示分享弹框 + fenxiang: imgurl.fenxiang1.url, + fenxiangUrl: imgurl.fenxiang.url, + clockUrl: imgurl.clock.url, + yushouUrl: imgurl.yushou.url, + teljpgUrl: imgurl.teljpg.url, + closedUrl: imgurl.closed.url, + quesGouUrl: imgurl.ques_gou.url, + headbgUrl: imgurl.headbg.url, + quesBgUrl: imgurl.ques_bg.url, + close02: imgurl.close02.url, + share01: imgurl.share01.url, + fail: imgurl.fail.url, + wmhome: imgurl.wmhome.url, + swiperCurrent: 0, + detailPicture: [], + coverPicture: [], + couponList: [], + data: { + title: null + }, + showPage: false, + questions1: null, + questions2: null, + carList: [], + couponChannelId: null, + orderId: "", + hour: null, + day: null, + month: null, + year: null, + minute: "", + tempFilePaths: null, + userInfo: {}, + hasUserInfo: false, + canIUse: tt.canIUse('button.open-type.getUserInfo'), + id: null, + result: [], + end_time: null, + checked: false, + questionnaire: {}, + questionId: null, + widthScreen: null, + moveData: null, + rotateData: null, + alphaData: null, + scaleData: null, + skewData: null, + matrixData: null, + opacity: 0, + queueData: null, + zIndex: 11, + display: "none", + showbutton: false, + cardData: null, + showCardOffer: false, + isSamePeople: true, + statusText: '', + isReceived: false, + receivedDisabled: false, + clock: "结束", + day: "00", + hour: "00", + min: "00", + sec: "00", + clock02: "00", + day02: "00", + hour02: "00", + min02: "00", + sec02: "00", + countdown: "", + showbutton1: false, + limitCondition: "", + minLimit: 0, + maxLimit: 0, + dispressEndDate: false, + barTitle: "", + activityStatus: "", + //图文混排 + curHtml: '', + contentType: 0, + page: 1,//查询商户优惠券page + idList: [], + showBox: false,//手机号授权框 + }, + /** + * 显示分享弹框 + */ + showshare: function () { + this.setData({ + isshowposter: true, + }) + }, + getCouponList: function (id) { + let that = this; + let data; + data = { + status: 0, + merchantIds: id, + pageNum: that.data.page, + pageSize: 5, + } + Http.post({ + url: config.api.listByMerchant, + data: data + }).then(res => { + if (res.data.page.list <= 0) { + return + } + let dataLsit = [] + // dataLsit = that.data.couponList + dataLsit = res.data.page.list + dataLsit.map((item, index) => { + if (item.id == that.data.couponChannelId) { + dataLsit.splice(index, 1) + } + }) + if (that.data.page > 1) { + let tmpeLsit = that.data.couponList + tmpeLsit.push(...dataLsit) + that.setData({ + couponList: tmpeLsit, + }) + } else { + that.setData({ + couponList: dataLsit, + }) + } + + + // if (res.data && res.data.qrCode){ + // that.setData({ + // qrCode: res.data.qrCode, + // }) + // } + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + + setPhone(paramData) {//子组件调用这个方法说明手机号已经授权成功 + this.setData({ + showBox: paramData.detail, + }) + tt.showToast({ + title: '授权成功', // 内容 + icon: 'none', // 图标 + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }, + setBox(paramData) { + this.setData({ + showBox: paramData.detail + }) + tt.showToast({ + title: '取消授权', // 内容 + icon: 'none', // 图标 + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }, + /** + * 隐藏分享弹框 + */ + hidemodal: function () { + this.setData({ + isshowposter: false, + }) + }, + /** + * 显示分享海报 + */ + /* showPoster: function() { + //跳转到海报生成页 + console.log(this.data.canIUse) + + // return; + tt.navigateTo({ + url: `/pages/canvas/index?couponChannelId=${this.data.data.id}` + }) + }, */ + showPoster: function () { + //跳转到海报生成页 + let that = this; + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }).then(res => { + tt.navigateTo({ + url: `/pages/canvas/index?couponChannelId=${that.data.data.id}` + }) + }).catch(err => { + console.log(err) + if (err.code == 11004) { + // 用户昵称未授权 + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${that.data.data.id}&fromflag=poster` + }) + } + }) + + }, + swiperChange: function (e) { + this.setData({ + swiperCurrent: e.detail.current + }); + }, + gohome(e) { + console.log(e.currentTarget.dataset.id, "123") + tt.navigateTo({ + url: `/pages/fillIndent/fillIndent?couponChannelId=${e.currentTarget.dataset.couponchannelid}&couponId=${e.currentTarget.dataset.couponid}&shippingtype=${e.currentTarget.dataset.shippingtype}`, + }) + }, + + gochild(e) { + let id = e.currentTarget.dataset.id + tt.navigateTo({ + url: `/pages/coupon/childDetail/childDetail?couponIds=${id}`, + }) + }, + //获取当前登录用户信息 + getUserInfo: function () { + let that = this; + // 获取用户信息 + Http.get({ + url: config.api.getScore, + data: {} + }) + .then(res => { + console.log(res) + that.getQueryCardStatus() + if (that.data.cardData.cuserId != res.data.id) { + console.log(2222, 6666) + that.setData({ + isSamePeople: false + }) + } + }) + }, + //获取卡转赠状态 + getQueryCardStatus() { + let that = this; + let param = { + id: this.data.cardData.couponOrderId, + cUserId: this.data.cardData.cuserId, + updateDate: util.formatTime(Number(that.data.cardData.updateDate), "yyyy-MM-dd hh:mm:ss") + } + Http.get({ + url: config.api.queryCardStatus, + data: param + }) + .then(res => { + console.log(res, 333333333333) + }) + .catch(err => { + that.setData({ + isReceived: true, + statusText: err.message + }) + }) + }, + receiveCard() { + let that = this; + let param = { + id: this.data.cardData.couponOrderId, + cUserId: this.data.cardData.cuserId, + updateDate: util.formatTime(Number(this.data.cardData.updateDate), "yyyy-MM-dd hh:mm:ss") + } + + this.setData({ + receivedDisabled: true + }) + Http.post({ + url: config.api.cardAccept, + data: param + }) + .then(res => { + tt.showToast({ + title: '领取成功!', + icon: 'none', + duration: 2000, + mask: false + }); + tt.reLaunch({ + url: '/pages/complete/index?couponOrderId=' + this.data.cardData.couponOrderId, + }) + }) + .catch(err => { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + that.setData({ + receivedDisabled: false + }) + }) + }, + closeAlert() { + this.setData({ + showCardOffer: false + }) + }, + goback: function () { + tt.reLaunch({ + url: '/index/index', + }) + }, + /** + * 点击提交问题单选 + */ + formSubmit: function (e) { + console.log(e); + let that = this; + /** + * 多选 + */ + if (e.currentTarget.dataset.flags == 'multi') { + if (that.data.anwserId.length == 0) { + var answserIs = null + } else { + var answserIs = that.data.anwserId.join(","); + } + } else if (e.currentTarget.dataset.flags == 'single') { + var answserIs = e.detail.value; + } + console.log(answserIs) + console.log(e.currentTarget.dataset.questionid) + Http.post({ + url: config.api.answerQuestion, + data: { + answer: answserIs, + questionId: e.currentTarget.dataset.questionid + } + }) + .then(res => { + that.closeQuestion(); + }) + .catch(err => { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + /** + * 多选 + */ + checkboxChange: function (e) { + console.log(e) + this.setData({ + anwserId: e.detail.value + }) + }, + + closeQuestion: function () { + let that = this; + that.setData({ + display: "none", + zIndex: 11, + opacity: 0 + }) + setTimeout(function () { + that.orderFunc(); + }, 500) + }, + ifGetUser() { + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }).then(res => { + }).catch(err => { + if (err.code == 11004) { + this.setData({ + isGetUser: false + }) + } + }) + }, + + gotopay: function (e) { + let that = this; + app.globalData.previewFlag = true + /* 判断是否授权*/ + if (!that.data.isGetUser) { + tt.getUserProfile({//授权抖音 + success(res) { + Http.post({ + url: config.api.getUserInfo, + data: { + encryptedData: res.encryptedData, + iv: res.iv + } + }).then(res => { + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }).then(res => { + tt.showLoading(); + if (e.currentTarget.dataset.type == 51 || e.currentTarget.dataset.type == 50) { + tt.navigateTo({ + url: '/pages/integralmall/payIntegcoupondetail/index?couponChannelId=' + that.data.couponChannelId + '&couponId=' + that.data.couponId, + }) + } else { + let formId = e.detail.formId ? e.detail.formId : ""; + var discount = e.currentTarget.dataset.discount; + that.setData({ + queueData: null, + showbutton: true, + formId: formId + }) + Http.get({ + url: config.api.getQuestion, + data: { + couponType: JSON.stringify(that.data.data.type) + } + }).then(res => { + tt.hideLoading(); + if (res.data == undefined) { + // 立即购买 + that.orderFunc(discount); + that.setData({ + flag: false + }) + } else if (res.data) { + var animation = tt.createAnimation({}); + animation.translate((that.data.widthScreen - that.data.widthScreen), 0).scale(1).opacity(1).step({ + duration: 500 + }) + that.setData({ + queueData: animation.export(), + zIndex: 9, + opacity: 1, + display: "block", + questionnaire: JSON.parse(res.data.content), + questionId: res.data.id + }); + } + }).catch(err => { + tt.hideLoading(); + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + }).catch(err => { + that.setData({ + showBox: true + }) + + // tt.navigateTo({ + // url: '/pages/getPhone/getPhone', + // }); + }) + }) + .catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + fail(err) { + console.log(`getUserInfo 调用失败`, err); + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }).then(res => { + tt.showLoading(); + if (e.currentTarget.dataset.type == 51 || e.currentTarget.dataset.type == 50) { + tt.navigateTo({ + url: '/pages/integralmall/payIntegcoupondetail/index?couponChannelId=' + that.data.couponChannelId + '&couponId=' + that.data.couponId, + }) + } else { + let formId = e.detail.formId ? e.detail.formId : ""; + var discount = e.currentTarget.dataset.discount; + that.setData({ + queueData: null, + showbutton: true, + formId: formId + }) + Http.get({ + url: config.api.getQuestion, + data: { + couponType: JSON.stringify(that.data.data.type) + } + }).then(res => { + tt.hideLoading(); + if (res.data == undefined) { + // 立即购买 + that.orderFunc(discount); + that.setData({ + flag: false + }) + } else if (res.data) { + var animation = tt.createAnimation({}); + animation.translate((that.data.widthScreen - that.data.widthScreen), 0).scale(1).opacity(1).step({ + duration: 500 + }) + that.setData({ + queueData: animation.export(), + zIndex: 9, + opacity: 1, + display: "block", + questionnaire: JSON.parse(res.data.content), + questionId: res.data.id + }); + } + }) + .catch(err => { + tt.hideLoading(); + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + }).catch(err => { + that.setData({ + showBox: true + }) + }) + }, + }); + } else { + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }).then(res => { + if (e.currentTarget.dataset.type == 51 || e.currentTarget.dataset.type == 50) { + tt.navigateTo({ + url: '/pages/integralmall/payIntegcoupondetail/index?couponChannelId=' + that.data.couponChannelId + '&couponId=' + that.data.couponId, + }) + } else { + let formId = e.detail.formId ? e.detail.formId : ""; + var discount = e.currentTarget.dataset.discount; + that.setData({ + queueData: null, + showbutton: true, + formId: formId + }) + Http.get({ + url: config.api.getQuestion, + data: { + couponType: JSON.stringify(that.data.data.type) + } + }).then(res => { + tt.hideLoading(); + if (res.data == undefined) { + // 立即购买 + that.orderFunc(discount); + that.setData({ + flag: false + }) + } else if (res.data) { + var animation = tt.createAnimation({}); + animation.translate((that.data.widthScreen - that.data.widthScreen), 0).scale(1).opacity(1).step({ + duration: 500 + }) + that.setData({ + queueData: animation.export(), + zIndex: 9, + opacity: 1, + display: "block", + questionnaire: JSON.parse(res.data.content), + questionId: res.data.id + }); + } + }) + .catch(err => { + tt.hideLoading(); + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + }).catch(err => { + that.setData({ + showBox: true + }) + + // tt.navigateTo({ + // url: '/pages/getPhone/getPhone', + // }); + }) + } + + }, + setIntervalTime(end_time) { + let that = this; + var EndTime = end_time; + var NowTime = new Date().getTime(); + var total_micro_second = EndTime - NowTime || []; + // 渲染倒计时时钟 + let obj = that.dateformat(total_micro_second); + if (total_micro_second > 0) { + that.setData({ + clock: obj, + day: obj.a1, + hour: obj.b1, + min: obj.c1, + sec: obj.d1, + }) + } else { + that.setData({ + clock: "00", + day: "00", + hour: "00", + min: "00", + sec: "00", + }) + //如果倒计时结束,需要重新查询一下券的状态 + // 给getDetail一个标识 + that.getDetail(that.data.couponChannelId, 'endclock'); + } + total_micro_second -= 1000; + }, + countdown: function (end_time) { + let that = this; + that.setIntervalTime(end_time); + that.data.setInterval = setInterval(function () { + that.setIntervalTime(end_time); + }, 1000) + }, + // 时间格式化输出,如11:03 25:19 每1s都会调用一次 + dateformat(micro_second) { + // 总秒数 + var second = Math.floor(micro_second / 1000); + // 天数 + var day = Math.floor(second / 3600 / 24) < 10 ? "0" + Math.floor(second / 3600 / 24) : Math.floor(second / 3600 / 24); + // 小时 + var hr = Math.floor(second / 3600 % 24) < 10 ? "0" + Math.floor(second / 3600 % 24) : Math.floor(second / 3600 % 24); + // 分钟 + var min = Math.floor(second / 60 % 60) < 10 ? "0" + Math.floor(second / 60 % 60) : Math.floor(second / 60 % 60); + // 秒 + var sec = Math.floor(second % 60) < 10 ? "0" + Math.floor(second % 60) : Math.floor(second % 60); + + // return day + "天" + hr + "小时" + min + "分钟" + sec + "秒"; + return { + a1: day, + b1: hr, + c1: min, + d1: sec + } + }, + /** + * 获取用户信息 + */ + onLoad(options) { + + this.setData({ + mouldType: app.globalData.mouldType, + }) + let that = this; + if (options.g) { + app.globalData.havePlayEd1 = true; + } + tt.showLoading({ + title: "加载中..." + }); + that.setData({ + onshow: false + }) + if (options && (options.couponChannelId || options.couponIds)) { + if (options.couponIds) { + this.setData({ + couponIds: options.couponIds + }) + that.getDetail(options.couponIds, 'notendclock'); + } else { + that.getDetail(options.couponChannelId, 'notendclock'); + } + + + } + /** + * 转赠判断 + */ + if (options.cuserId) { + this.setData({ + showCardOffer: true, + cardData: options + }) + this.getUserInfo() + } + that.setData({ + couponChannelId: options.couponChannelId, + title: that.data.data.title ? that.data.data.title : '', + }); + if (options.cardType) { + that.setData({ + cardType: options.cardType + }) + } + }, + getHtml(couponChannelId) { + Http.get({ + url: config.api.couponHtmlDetail, + data: { + couponChannelId: couponChannelId + } + }).then(res => { + console.log(res) + if (res.code == 200 && res.data.html) { + this.setData({ + curHtml: decodeURI(res.data.html) + }) + app.globalData.curHtml = this.data.curHtml; + console.log(app.globalData.curHtml) + } + }) + }, + getDetail: function (couponChannelId, flag) { + let that = this; + let data = {}; + if (that.data.couponIds) { + data.couponId = couponChannelId + } else { + data.couponChannelId = couponChannelId + } + var parmer = { + url: config.api.couponDetail, + data: data + }; + Http.get(parmer) + .then(res => { + + if (res.data.merchantVoList && res.data.merchantVoList.length) { + let merchantVoList = res.data.merchantVoList + let idList = [] + merchantVoList.map(item => { + idList.push(item.id) + }) + that.setData({ + idList: idList + }) + that.getCouponList(idList) + } + //aaa + if (res.data.contentType != undefined && res.data.contentType == 1) { + //获取图文展示详情html + this.setData({ + contentType: res.data.contentType + }) + this.getHtml(couponChannelId); + } + that.setData({ + couponId: res.data.couponId + }) + that.setData({ + showPage: true + }) + if (res && res.data && res.data.detailPicture) { + that.setData({ + detailPicture: JSON.parse(res.data.detailPicture) + }) + } + if (res && res.data && res.data.coverPicture) { + that.setData({ + coverPicture: JSON.parse(res.data.coverPicture) + }) + } + if (res && res.data && res.data.conditions) { + that.setData({ + limitCondition: JSON.parse(res.data.conditions).type + }) + if (JSON.parse(res.data.conditions).type == 2 && (JSON.parse(res.data.conditions).min || JSON.parse(res.data.conditions).min == 0)) { + that.setData({ + minLimit: JSON.parse(res.data.conditions).min + }) + } + if (JSON.parse(res.data.conditions).type == 2 && (JSON.parse(res.data.conditions).max) || JSON.parse(res.data.conditions).max == 0) { + that.setData({ + maxLimit: JSON.parse(res.data.conditions).max + }) + } + } + /** + * 将优惠券优惠卡的详情的BarTitle + * 设置成券的名称 + */ + // tt.setNavigationBarTitle({ + // title: res.data.title + // }) + that.setData({ + barTitle: res.data.title + }) + var EndTime = res.data.validStartDate; + var NowTime = new Date().getTime(); + + /** + * activityStatus==0 活动未开始 + * activityStatus==1 活动已开始 + * flag == endclock 说明倒计时已经结束 + */ + if (res.data.endTime && res.data.beginTime) { + that.setData({ + begin_time: res.data.beginTime, + end_time: res.data.endTime, + activityStatus: res.data.activityStatus ? res.data.activityStatus : '' + }) + if (res.data.activityStatus == 0 && flag != 'endclock') { + that.countdown(res.data.beginTime); + } else if (res.data.activityStatus != 0 && flag != 'endclock') { + that.countdown(res.data.endTime); + } else { + clearInterval(that.data.setInterval) + } + if (res.data.activityStatus == 0) { + var beginTime = util.formatTime(res.data.beginTime, "yyyy-MM-dd hh:mm:ss"); + if (util.timechuo(beginTime).indexOf('-') == 0) { + that.setData({ + beginTime: "活动已结束", + }); + } else { + that.setData({ + beginTime: util.timechuo(beginTime) + }); + } + } else { + var endTime = util.formatTime(res.data.endTime, "yyyy-MM-dd hh:mm:ss"); + if (util.timechuo(endTime).indexOf('-') == 0) { + that.setData({ + endtime: "活动已结束", + }); + } else { + that.setData({ + endtime: util.timechuo(endTime) + }); + } + } + } + tt.hideLoading(); + that.setData({ + data: res.data, + merchantVoList: res.data.merchantVoList + }); + if (res.data.type == 10) { + that.setData({ + salePriceStr: res.data.salePriceStr, + pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"), + pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"), + priceStr: res.data.priceStr, + tailPriceStr: res.data.tailPriceStr, + origPriceStr: res.data.origPriceStr + }) + } + if (res.data.validType == 1) { + that.setData({ + validStartDate: util.formatTime(res.data.validStartDate, "yyyy-MM-dd"), + validEndDate: util.formatTime(res.data.validEndDate, "yyyy-MM-dd"), + pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"), + pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"), + }); + } else { + if (res.data.validDays) { + that.setData({ + validDays: res.data.validDays + }); + } + } + }).catch(err => { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + /** + * 邀请好友继续砍价 + */ + inviteFriend: function (e) { + let that = this; + let formId = e.detail.formId; + that.setData({ + formId: formId, + showbutton1: true + }) + that.orderFunc("discount"); + }, + /** + * 支付订单更新 + */ + payOrderUpdate: (orderId, payOrderId, status, reason, type, _this, composeOrderType) => { + let that = this; + // 支付成功 + Http.post({ + url: config.api.payOrderUpdate, + data: { + payOrderId: payOrderId, + composeOrderId: orderId, + status: status, + reason: reason + } + }) + .then(res => { + tt.hideLoading() + // 有价券 + if (!type && type != 'free') { + tt.navigateTo({ + url: `/pages/order/detail/index?orderId=${orderId + }` + }); + } else if (type == 'free') { + tt.navigateTo({ + url: `/pages/order/detail/index?orderId=${orderId + }` + }); + } + }) + .catch(err => { + console.log(err); + if (!type) { + setTimeout(function () { + _this.payOrderUpdate(orderId, payOrderId, status, reason, type, _this, composeOrderType); + }, 2000) + } + }) + }, + checkPhoneStatus: function () { + let that = this; + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }) + .then(res => { + console.log(666, '授权成功!') + that.receiveCard() + }) + .catch(err => { + if (err.code == 11005) { + /** + * 手机号没有授权,将值传到用户手机号授权的页面 + * + */ + tt.redirectTo({ + url: "/pages/getphoneInfo/index?path=index&cuserId=" + that.data.cardData.cuserId + "&couponChannelId=" + that.data.cardData.couponChannelId + "&userName=" + that.data.cardData.userName + "&coverImg=" + that.data.cardData.coverImg + "&avatarUrl=" + that.data.cardData.avatarUrl + "&couponOrderId=" + that.data.cardData.couponOrderId + "&updateDate=" + that.data.cardData.updateDate, + }); + } else if (err.code == 11006) { + // 用户手机已加密 + tt.redirectTo({ + url: "/pages/phoneinput/phoneinput?path=index&cuserId=" + that.data.cardData.cuserId + "&couponChannelId=" + that.data.cardData.couponChannelId + "&userName=" + that.data.cardData.userName + "&coverImg=" + that.data.cardData.coverImg + "&avatarUrl=" + that.data.cardData.avatarUrl + "&couponOrderId=" + that.data.cardData.couponOrderId + "&updateDate=" + that.data.cardData.updateDate, + }); + } else { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + }) + }, + // 券包支付 + + /** + * 发起支付 + */ + orderFunc(discount) { + let that = this; + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }).then(res => { + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }) + .then(res => { + // 发起砍价 + if (discount == 'discount') { + var data = { + couponChannelId: "" + that.data.couponChannelId, + couponId: "" + that.data.couponId, + formId: "" + that.data.formId, + press: true + } + } else if (discount == 'discount1') { + var data = { + couponChannelId: "" + that.data.couponChannelId, + couponId: "" + that.data.couponId, + formId: "" + that.data.formId, + press: false + } + } else if (that.data.couponChannelId == null) { + var data = { + couponId: "" + that.data.couponId, + formId: "" + that.data.formId, + }; + } else { + var data = { + couponChannelId: "" + that.data.couponChannelId, + couponId: "" + that.data.couponId, + formId: "" + that.data.formId, + } + } + console.log(data, "data") + let url = "" + let tempObj; + let tempArr = [] + if (that.data.data.type == 12) { + url = config.api.couponPackageSave + tempObj = { + signleOrder: { + couponChannelId: "" + that.data.couponChannelId, + couponId: "" + that.data.couponId, + formId: "" + that.data.formId, + }, + count: "1" + } + tempArr.push(tempObj) + } else { + url = config.api.orderSave + } + /** + * orderSave 下单 + */ + return Http.post({ + url: url, + data: that.data.data.type == 12 ? JSON.stringify(tempArr) : data + }); + }).catch(err => { + tt.hideLoading() + that.setData({ + showbutton: false, + showbutton1: false + }) + if (err.code == 2011) { + tt.showToast({ + title: "商户信息没找到", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 2013) { + tt.showToast({ + title: "商户信息禁用", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3000) { + tt.showToast({ + title: "库存不足", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3001) { + tt.showToast({ + title: "您已超过限购", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3002) { + tt.showToast({ + title: "订单失败", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3003) { + tt.showToast({ + title: "订单不存在", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3004) { + tt.showToast({ + title: "订单不存在", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 4003) { + tt.showToast({ + title: "卡券已作废", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3012) { + that.getUnPaidOrder(that.data.couponId); + } else if (err.code == 11005) { + /** + * 将值传到用户手机号授权的页面 + * + */ + tt.redirectTo({ + url: "/pages/getphoneInfo/index?couponChannelId=" + + that.data.couponChannelId + }); + } else if (err.code == 11006) { + // 用户手机已加密 + tt.redirectTo({ + url: "/pages/phoneinput/phoneinput?couponChannelId=" + + that.data.couponChannelId + }); + } else { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + }).then(res => { + if (discount != 'discount') { + if (typeof (res) != "undefined") { + let orderId = "" + res.data.mainOrderId; + that.setData({ + orderId: orderId, + composeOrderType: res.data.composeOrderType + }); + if (res.data.payment > 0) { + // 支付金额不为0 + /** + * 支付订单创建 + */ + Http.post({ + url: config.api.payOrderCreate, + data: { + orderId: orderId, + composeOrderType: res.data.composeOrderType + } + }).then(res => { + var payOrderId = "" + res.data.outOrderNo; + tt.hideLoading(); + tt.pay({ + service: 5, + orderInfo: { + order_id: res.data.orderId, + order_token: res.data.token, + }, + success: res => { + tt.showLoading({ + title: '订单正在处理中...', + }) + if (res.code === 0) { + that.payOrderUpdate(that.data.orderId, payOrderId, 1, '', '', that, that.data.composeOrderType); + if (res.errMsg == "requestPayment:ok") { + /** + * 用户支付成功以后跳转到券包列表 + */ + if (that.data.cardType == 100) { + tt.setStorage({ + key: 'couponNum2', + data: "couponNum2" + }) + } else if (that.data.data.type != 5 && that.data.cardType != 100) { + tt.setStorage({ + key: 'couponNum', + data: "couponNum" + }) + } + } + } + else if (res.code === 1) { + that.setData({ + showbutton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付超时', // 内容 + icon: "none" + }); + + } else if (res.code === 2) { + that.setData({ + showbutton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付失败', // 内容 + icon: "none" + }); + } else if (res.code === 3) { + that.setData({ + showbutton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付关闭', // 内容 + icon: "none" + }); + } else if (res.code === 4) { + that.setData({ + showbutton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付取消', // 内容 + icon: "none" + }); + } else if (res.code === 9) { + that.setData({ + showbutton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '订单状态开发者自行获取', // 内容 + icon: "none" + }); + } + + }, + fail: res => { + tt.hideLoading(); + /** + * 支付失败,需要更新订单的状态 + */ + that.payOrderUpdate(that.data.orderId, payOrderId, 2, '', 'fail', that, that.data.composeOrderType); + that.setData({ + showbutton: false + }) + return; + }, + complete: res => { } + }); + /// End payment -------- + }) + .catch(err => { + tt.hideLoading(); + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } else { + // 免费券 + that.payOrderUpdate(orderId, "0", 1, '', 'free', that, that.data.composeOrderType); + if (that.data.cardType == 100) { + tt.setStorage({ + key: 'couponNum2', + data: "couponNum2" + }) + } else if (that.data.data.type != "5" && that.data.cardType != 100) { + tt.setStorage({ + key: 'couponNum', + data: "couponNum" + }) + } + } + } + } else { + if (res) { + tt.navigateTo({ + url: `/pages/bargain/bargainDatail/bargainDatail?orderId=${res.data.mainOrderId}&composeOrderType=${res.data.composeOrderType}`, + }) + } + } + }) + }).catch(err => { + console.log(err) + if (err.code == 11004) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?fromflag=coupondetail&couponChannelIdflag=${that.data.couponChannelId}`, + }) + } else { + tt.showToast({ + title: err.message, + icon: "none", + duration: 2500 + }) + } + }) + }, + // 获得未支付的订单 + getUnPaidOrder(couponId) { + let that = this; + Http.get({ + url: config.api.getUnPaidOrder, + data: { + couponId: couponId + } + }).then(res => { + that.setData({ + disOrderNumber: res.data.orderNumber, + composeOrderType: res.data.composeOrderType + }) + + if (res.data && res.data.pressEndDate) { + that.setData({ + dispressEndDate: true + }) + } else { + that.setData({ + dispressEndDate: false + }) + } + if (that.data.dispressEndDate) { + tt.showModal({ + title: '提示', + content: "您有未支付订单,请到“我的-我的砍价”进行支付", + confirmText: "我的砍价", + success: function (res) { + if (res.confirm) { + tt.navigateTo({ + url: `/pages/bargain/bargainDatail/bargainDatail?orderId=${that.data.disOrderNumber}&composeOrderType=${that.data.composeOrderType}`, + }) + } + } + }) + } else { + tt.showModal({ + title: '提示', + content: '您有未支付订单,请先进行支付', + confirmText: "去支付", + success: function (res1) { + if (res1.confirm) { + + if (that.data.composeOrderType > 0) {//券包 + tt.navigateTo({ + url: `/pages/order/detail/index?orderId=${res.data.composeOrderId}`, + }) + } else { + tt.navigateTo({ + url: `/pages/order/detail/index?orderId=${res.data.composeOrderId}`, + }) + } + + } + } + }) + } + }).catch(error => { + tt.showToast({ + title: error.message, + icon: "none", + duration: 3000 + }) + }) + }, + onShow() { + this.ifGetUser()//判断是否授权抖音 + this.setData({ + mouldType: app.globalData.mouldType, + showbutton: false, + showbutton1: false + }) + if (this.data.end_time && this.data.activityStatus != 0) { + this.countdown(this.data.end_time) + } else if (this.data.begin_time && this.data.activityStatus == 0) { + this.countdown(this.data.begin_time) + } + }, + onUnload: function () { + let that = this; + clearInterval(that.data.setInterval) + }, + onHide: function () { + let that = this; + clearInterval(that.data.setInterval) + }, + onShareAppMessage: function (options) { + app.globalData.previewFlag = true + var that = this; + console.log(options) + var shareObj = { + title: that.data.data.title, + path: `/pages/index/index?couponChannelId=${that.data.couponChannelId}`, + success: function (res) { + if (res.errMsg == 'shareAppMessage:ok') { } + }, + fail: function (err) { + // if (err.errMsg == 'shareAppMessage:fail cancel') { } else if (err.errMsg == 'shareAppMessage:fail') { } + } + }; + // 来自页面内的按钮的转发 + if (options.from == 'button'&&options.channel != 'video') { + var eData = options.target.dataset.id; + shareObj.path = `/pages/index/index?couponChannelId=${eData}&frommd=JC`; + + }else + if(options.channel == 'video'){ + // return { + // channel: 'video', // 必写 video + //     templateId: '',   // 分享的模版 id (如果未设置就是默认,下面会说如何设置) + // title: `${that.data.barTitle}`,     // 分享的标题 + // desc: `${that.data.data.dyTitle}`,     // 分享的内容介绍目前没有用 + //     path: `/pages/index/index`,  // 分享的路径 + // extra: { + // videoTopics: [ that.data.data.dyTitle] // 只有抖音才会有的属性 + // }, + // } + shareObj.channel = 'video'; + shareObj.title = `${that.data.barTitle}`; + shareObj.extra = { + videoTopics:["123"] + } + } + console.log(shareObj) + // 返回shareObj + return shareObj; + }, + + + // 下拉刷新 + onPullDownRefresh: function () { + this.getDetail(this.data.couponChannelId); + tt.stopPullDownRefresh() + }, + onReachBottom: function () { + this.setData({ + page: this.data.page + 1 + }) + + if (this.data.idList.length > 0) { + this.getCouponList(this.data.idList) + } + } +}); \ No newline at end of file diff --git a/pages/coupon/detail/index.json b/pages/coupon/detail/index.json new file mode 100644 index 0000000..e72c1ba --- /dev/null +++ b/pages/coupon/detail/index.json @@ -0,0 +1,11 @@ +{ + "usingComponents": { + "navbar": "../../../components/navbar/navbar", + "store": "../../../components/store/index", + "c-coupons": "../../../components/coupons/index", + "phoen":"../../../components/getPhoen/getPhoen" + }, + "navigationBarTitleText": "", + "backgroundColor":"#f4f4f4", + "enablePullDownRefresh": true + } \ No newline at end of file diff --git a/pages/coupon/detail/index.ttml b/pages/coupon/detail/index.ttml new file mode 100644 index 0000000..0979d80 --- /dev/null +++ b/pages/coupon/detail/index.ttml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + 距结束 : + 距开始 : + + + 已经结束 + + + + {{day}}天: + + {{hour}}: + {{min}}: + {{sec}} + + + {{data.title}}电子卡 + {{data.subTitle}} + + + 定金: + ¥ {{salePriceStr}} + 尾款抵扣: + ¥ {{priceStr}} + + + 提货尾款: + ¥ {{tailPriceStr}} + {{origPriceStr}} + + 预购时间:{{validStartDate}}至{{validEndDate}} + + 提货时间:{{pickStartDate}}至{{pickEndDate}} + + + + + + {{data.salePriceStr}} + {{data.creditPrice}} + 积分 + + + {{data.priceStr}}元 + {{data.priceStr}}小时 + + 过期不退款 + + + + + {{data.salePriceStr}} + {{data.pressLimitNum+'人可砍至底价'}} + {{data.priceStr}}元 + + 过期不退款 + + + + + + + 自领取之日起 + {{validDays}}天内有效 + (请在有效期内使用) + + + {{validStartDate}}至{{validEndDate}} + + + 当次有效 + + + + 使用条件: + 满{{data.usePriceStr}}元可用 + + + + + 限购{{data.useLimitQuantity}}张 + (仅限新用户活动) + ({{minLimit}}-{{maxLimit}}成长值) + (大于{{minLimit}}成长值) + 剩余{{data.remainInventory}}张 + + + + + + + + + + + {{item.title}} + ¥{{item.priceStr}} + + + + + + 购买须知 + + + {{data.remark}} + + + + + + 其他活动 + + + + + + + + + +
+ + + + + + + + + + + + + + +
+
+ + + +
+ +
+
+ +
+
+ + + + + + + + + + {{questionnaire.title}} + + + + + + + + + 确定 + + + + + + + + + + + + + {{cardData.userName}} + {{cardData.userName+'送您一张消费卡'}} + 等待好友领取 + {{cardData.userName}} + + + {{statusText}} + + + + + + + + + + + + + 微信好友 + + + + 生成海报 + + + + +
+ + + + \ No newline at end of file diff --git a/pages/coupon/detail/index.ttss b/pages/coupon/detail/index.ttss new file mode 100644 index 0000000..ce6084c --- /dev/null +++ b/pages/coupon/detail/index.ttss @@ -0,0 +1,992 @@ +@import "../../../app.ttss"; + +page { + background: #f4f5f9; +} + +button::after { + border: none; +} + +.coupons { + width: 100%; + position: relative; + overflow: hidden; + padding-bottom: 170rpx; + background: #f4f5f9; +} + +.couponsL c-coupons { + width: 335rpx; + /* height: 354rpx; */ + margin-bottom: 22rpx; +} + +.couponsL c-coupons:nth-of-type(2n+1) { + float: left; +} + +.couponsL c-coupons:nth-of-type(2n) { + float: right; +} + +.banner { + position: relative; + width: 750rpx; + height: 454rpx; +} + +.banner swiper { + width: 750rpx; + height: 454rpx; +} + +.banner image { + width: 100%; + height: 454rpx; +} + +.moneyBox { + font-size: 24rpx; + overflow: hidden; +} + +.earnest { + float: left; + font-size: 28rpx; + color: #a6a6a6; +} + +.earnestNum { + float: left; + color: red; + font-size: 32rpx; +} + +.final { + float: left; + font-size: 28rpx; + color: #a6a6a6; + margin-left: 30rpx; +} + +.pickFinal_Box { + overflow: hidden; +} + +.earnestTime { + font-size: 28rpx; + color: #a6a6a6; +} + +.finalTime { + font-size: 28rpx; + color: #a6a6a6; +} + +.original { + float: left; + width: 100rpx; + margin-left: 10rpx; + text-decoration: line-through; + color: #a6a6a6; + font-size: 24rpx; + line-height: 50rpx; +} + +.dots { + position: absolute; + left: 0; + right: 0; + bottom: 50rpx; + display: flex; + justify-content: center; +} + +.dot { + margin: 0 8rpx; + width: 14rpx; + height: 14rpx; + background: #fff; + border-radius: 8rpx; + transition: all 0.6s; +} + +.home { + position: relative; + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%); + height: 94rpx; + width: 230rpx; + /* margin: 0 auto 30rpx; */ + margin-left: 40rpx; + float: left; + color: #fff; + font-size: 36rpx; + line-height: 94rpx; + border-radius: 21rpx; +} + +.arrive { + position: relative; + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%); + height: 94rpx; + width: 230rpx; + /* margin: 0 auto 30rpx; */ + margin-left: 40rpx; + float: left; + color: #fff; + font-size: 36rpx; + line-height: 94rpx; + border-radius: 21rpx; +} + +.dot.active { + width: 24rpx; + background: #f80; +} + +.refound { + border: 1rpx solid red; + padding: 3rpx 0; + display: block; + width: 130rpx; + text-align: center; + margin-left: 14rpx; +} + +.couponsL { + width: 92%; + margin: 20rpx auto; +} + +.coupons_info { + width: 92%; + padding: 0 4%; + background: #fff; + border-top-left-radius: 20rpx; + border-top-right-radius: 20rpx; + /* margin-top: -25rpx; */ +} + +.fenxiang { + position: absolute; + right: 28rpx; + top: 27rpx; + display: flex; + flex-direction: column; +} + +.fenxiang image { + width: 48rpx; + height: 48rpx; + margin: 0 auto; +} + +.gift { + color: #3c3c3c; + font-size: 20rpx; + margin: 0 auto; +} + +.user-motto { + width: 270rpx; + border: 0; + background: none; + height: 260rpx; + color: #fff; + position: fixed; +} + +.user-motto::after { + border: none; +} + +.title { + display: block; + font-weight: bold; + font-size: 32rpx; + color: #3c3c3c; + letter-spacing: 1.09rpx; + line-height: 45rpx; + width: 542rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-top: 30rpx; +} + +.subTitle { + display: block; + width: 588rpx; + /* height: 37rpx; */ + font-size: 26rpx; + color: #a6a6a6; + letter-spacing: 1.16rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: 6rpx 0; +} + +.rest { + font-size: 24rpx; + color: #919191; + letter-spacing: 0; + height: 50rpx; + line-height: 50rpx; + border-bottom: 1px solid #f9f9f9; +} + +.restNum { + font-size: 24rpx; + color: #999; + letter-spacing: 1.16rpx; + text-align: right; +} + +.time { + font-size: 24rpx; + color: #a6a6a6; + letter-spacing: 0; + line-height: 33rpx; + display: inline-block; +} + +.txt01 { + font-size: 24rpx; + color: #919191; + letter-spacing: 0; +} + +.price { + font-size: 24rpx; + color: #999; + letter-spacing: 0; +} + +.salePriceStr { + font-size: 24rpx; + color: #999; + letter-spacing: 0; +} + +.salePriceStr .rmb { + color: #fd782d; + font-size: 24rpx; + line-height: 40rpx; + float: left; +} + +.salePriceStr .pri01 { + font-size: 40rpx; + color: #fd782d; + letter-spacing: 0; + line-height: 40rpx; + float: left; +} + +.salePriceStr .pri01Hr { + font-size: 24rpx !important; +} + +.use { + color: #fd782d; + /* margin-left: 10rpx; */ +} + +.salePriceStr .yuan { + font-size: 24rpx; + color: #fd782d; + letter-spacing: 0; +} + +.price text { + font-size: 24rpx; + color: #333; + letter-spacing: 0; +} + +.throgh { + text-decoration: line-through; + margin-left: 10rpx; + color: #999 !important; + margin-top: 8rpx; + height: 32rpx; + line-height: 45rpx; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.notes view:nth-child(1) { + height: 87rpx; + line-height: 87rpx; + background: #fff; + border-top: 1px solid #f9f9f9; +} + +.notes { + width: 100%; + background: #fff; + padding-bottom: 30rpx; +} + +.active { + opacity: 0.6; +} + +.notes view:nth-child(1) text { + color: #333; + letter-spacing: 0; + font-size: 30rpx; + height: 70rpx; + line-height: 70rpx; +} + +.notes view:nth-child(1) { + width: 92%; + margin: 0 auto; +} + +.notes view:nth-child(2) { + display: flex; + flex-direction: column; + width: 92%; + margin: 0 auto; +} + +.notes view:nth-child(2)>text { + font-size: 24rpx; + color: #919191; + letter-spacing: 0; + line-height: 42rpx; +} + +.buy-view { + /* background: #fff; */ + height: 92rpx; + bottom: 0; + left: 0; + right: 0; + padding-bottom: 22rpx; + padding-top: 22rpx; +} + +.buy { + position: relative; + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%); + height: 94rpx; + width: 560rpx; + margin-left: 170rpx; + color: #fff; + font-size: 36rpx; + line-height: 94rpx; + border-radius: 61rpx; +} + +#noBuy { + position: relative; + background-color: rgba(0, 0, 0, 0.2); + height: 94rpx; + width: 560rpx; + margin: 0 auto 30rpx; + color: #fff; + font-size: 36rpx; + line-height: 94rpx; + border-radius: 61rpx; +} + +.buyHr { + background: #cecece !important; +} + +.goback { + position: relative; + float: left; + width: 132rpx !important; + height: 96rpx; + background: rgba(255, 255, 255, 1) !important; + line-height: 95rpx; + border-radius: 32rpx; + margin-left: 20rpx; +} + +.goback image { + position: absolute; + width: 52rpx; + height: 50rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: 10rpx auto; +} + +.tel { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto; + width: 50rpx; + height: 50rpx; +} + +.txt { + margin-right: 30rpx; +} + +.distance { + border: none; + border-radius: 16rpx; + width: 600rpx; + padding: 16rpx 6rpx 0 0; +} + +.distance .txt01 { + display: block; + font-size: 26rpx; + color: #ff4949; +} + +.clock { + width: 116rpx !important; + vertical-align: middle; + margin-right: 10rpx; + margin-top: -4rpx; +} + +.qiang { + position: inline-block; + width: 60rpx; + height: 40rpx; + line-height: 40rpx; + color: #ff4949; + text-align: center; + font-size: 28rpx; + margin-right: 10rpx; +} + +.times { + display: inline-block; + color: #ff4949; + font-weight: bold; + font-size: 26rpx; + text-align: center; +} + +.timess { + color: #fd782d; +} + +.times text { + display: inline-block; + margin: 6rpx; + height: 56rpx; + padding: 0 6rpx; + text-align: center; + font-size: 28rpx; + line-height: 60rpx; + border-radius: 12rpx; + color: #fff; + font-weight: bold; + background: #ff4949; +} + +.con { + position: absolute; + top: 35rpx; + right: 0; + bottom: 0; + left: 0; + margin: auto; + width: 587rpx; +} + +.con .image { + display: block; + width: 100%; +} + +.img { + margin-top: -50rpx; +} + +.question { + display: block; + width: 587rpx; + background: #fff; + border-bottom-left-radius: 22rpx; + border-bottom-right-radius: 22rpx; + overflow: hidden; +} + +.ques { + display: block; + width: 511rpx; + margin: 0 auto; + height: 95rpx; + line-height: 95rpx; + font-size: 30rpx; + color: #333; + border-bottom: 1rpx solid #eee; +} + +.titles { + width: 511rpx; + display: block; + text-align: center; + height: 50rpx; + margin: 0 auto; + padding-top: 10rpx; + padding-bottom: 20rpx; + font-size: 32rpx; + font-weight: bold; + line-height: 41rpx; + border-bottom: 1rpx solid #eee; +} + +.quessss >view:last-child { + border-bottom: 0; +} + +.wmclose { + position: relative; + z-index: 10000; + display: block; + width: 70rpx; +} + +.ques_gou { + position: absolute; + width: 20rpx; + top: 160rpx; + left: 23rpx; +} + +.btnss { + color: #f8755b; + font-weight: bold; + font-size: 30rpx !important; + text-align: center !important; +} + +.radios { + display: block; + font-size: 28rpx; + height: 95rpx; + line-height: 95rpx; + color: #333; + text-indent: 0.5em; +} + +.elecard { + display: inline-block; + margin-left: 6rpx; + color: rgba(254, 70, 20, 1); + border: 1px solid rgba(254, 70, 20, 1); + border-radius: 8rpx; + font-style: normal; + font-size: 30rpx; + line-height: 40rpx; + padding: 0 6rpx; +} + +.btns { + /* padding: 0 33rpx; */ + position: fixed; + left: 0; + right: 0; + bottom: 0; + padding-bottom: 22rpx; + padding-top: 22rpx; + z-index: 12; + /* background: #fff; */ +} + +.btnTxt { + width: 50rpx; + height: 30rpx; + line-height: 50rpx; + color: #fd782d; + font-size: 20rpx; + position: absolute; + right: 42rpx; + bottom: 15rpx; +} + +.btns .fr, .btns .fl { + width: 277rpx; + height: 95rpx; + border-radius: 48rpx; + text-align: center; +} + +.btns .fl { + margin-left: 20rpx; + color: #fff; + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%); +} + +.btns .fl text { + display: block; + font-size: 30rpx; + line-height: 34rpx; +} + +.btns .fl text:nth-of-type(1) { + margin-top: 12rpx; +} + +.btns .fr { + font-size: 30rpx; + color: #fff; + margin-right: 20rpx; + line-height: 95rpx; + background: linear-gradient(90deg, rgba(40, 179, 255, 1) 0%, rgba(48, 103, 255, 1) 100%); + /* box-shadow: 0px 8px 8px 1px rgba(246, 93, 51, 0.32); */ +} + +.support-tansfer { + width: 60%; + border-radius: 50rpx; + margin-top: 30rpx; + /* background: #02c0ff !important; */ + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%); +} + +.shaddow { + z-index: 100; + position: fixed; + width: 100%; + height: 100%; + top: 0px; + background: rgba(0, 0, 0, 0.8); + overflow: hidden; +} + +.alert-box { + position: fixed; + top: 50%; + margin-top: -270rpx; + left: 10%; + width: 80%; + height: auto; + padding-bottom: 20rpx; + background: #fff; + z-index: 200; + border-radius: 20rpx; +} + +.user-img { + position: absolute; + top: -50rpx; + left: 250rpx; + /* margin-left: -50rpx; */ + width: 100rpx; + height: 100rpx; + z-index: 300; + border-radius: 50rpx; + background: #fff; + overflow: hidden; +} + +.user-img image { + width: 100rpx; + height: 100rpx; +} + +.close { + position: absolute; + z-index: 300; + right: 0; + top: 0; + width: 100rpx; + height: 100rpx; + overflow: hidden; +} + +.close image { + display: block; + width: 26rpx; + height: 26rpx; + margin: 20rpx 0 0 52rpx; +} + +.a-title { + text-align: center; + margin-top: 76rpx; + font-size: 36rpx; + font-family: PingFang-SC-Medium; + font-weight: 500; + color: rgba(51, 51, 51, 1); + line-height: 44rpx; +} + +.a-img { + position: relative; + width: 80%; + border-radius: 20rpx; + height: 294rpx; + overflow: hidden; + text-align: center; + margin: 30rpx auto 0; +} + +.a-received { + position: absolute; + width: 100%; + height: 294rpx; + top: 0; + left: 0; + text-align: center; + line-height: 294rpx; + z-index: 320; + background: rgba(255, 255, 255, 1); + border: 0px solid rgba(151, 57, 117, 1); + opacity: 0.91; + font-size: 36rpx; + color: rgba(255, 51, 50, 1); + font-family: PingFang-SC-Medium; +} + +.a-img image { + width: 100%; + height: 100%; +} + +.bottom { + text-align: center; + height: 70rpx; + line-height: 70rpx; + color: #999; + font-size: 32rpx; + background: #fff; + padding-top: 20rpx; +} + +.presslimit { + height: 34rpx; + line-height: 34rpx; + margin-top: 8rpx; + margin-left: 12rpx; + color: #fd782d; + font-size: 20rpx; + letter-spacing: 1.16rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.presslimit text { + margin-left: 15rpx; + background: rgba(201, 201, 201, 0.1); +} + +checkbox-group, radio-group { + height: 400rpx; + overflow-y: scroll; +} + +.detailImg { + width: 100%; + background: #fff; + margin: auto; +} + +.detailImg image { + display: block; + width: 92%; + padding: 0 4% 0 4%; + margin-bottom: 20rpx; +} + +.content { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + background: #f3f3f3; + position: relative; +} + +.poster { + width: 100%; + height: 100%; + padding: 20rpx; + position: absolute; + top: 0; + left: 0; +} + +.bottomsave { + width: 100%; + height: 140rpx; + line-height: 140rpx; + margin: auto 0; + bottom: 0; + left: 0; + right: 0; + border-top: 1px solid #ccc; + box-shadow: 0 0rpx 150rpx #ccc; + background: #fff; +} + +.saveposter { + color: #fff; + width: 380rpx; + height: 80rpx; + border-radius: 50rpx; + background: #f08f04; + margin-top: 30rpx; + font-size: 32rpx; +} + +.modal { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: rgba(0, 0, 0, 0.5); + overflow: hidden; + z-index: 10000; + color: #fff; +} + +.modal-content { + width: 540rpx; + height: 233rpx; + line-height: 60rpx; + overflow: hidden; + position: fixed; + top: 50%; + left: 0; + z-index: 11; + background: #f9f9f9; + margin: -16rpx 105rpx; + border-radius: 36rpx; + display: flex; +} + +.modal-content view { + display: inline-block; + flex: 1; + text-align: center; +} + +.modal-content view>text { + color: #000; + display: block; + font-size: 30rpx; +} + +.modal-content view>image { + margin-top: 40rpx; + width: 90rpx; + height: 90rpx; +} + +.tt-swiper-dots { + margin-bottom: 30rpx; +} + +.quan { + float: left; + margin: 18rpx 15rpx 0 0; + width: 12rpx; + height: 12rpx; + background: #e1e1e1; + border-radius: 50%; +} + +.swiper-box .tt-swiper-dots.tt-swiper-dots-horizontal { + margin-bottom: 2rpx; +} + +.swiper-box .tt-swiper-dot { + width: 40rpx; + display: inline-flex; + height: 6rpx; + margin-left: 10rpx; + border-radius: 6rpx; + justify-content: space-between; +} + +.swiper-box .tt-swiper-dot::before { + content: ''; + flex-grow: 1; + background: #ccc8c8; +} + +.swiper-box .tt-swiper-dot-active::before { + background: #f6792b; +} + +.jifen { + font-size: 30rpx; +} + +.childText { + color: #333; + letter-spacing: 0; + font-size: 30rpx; + height: 70rpx; + line-height: 70rpx; + background-color: #fff; + width: 92%; + padding: 0 4%; +} + +.childBox { + width: 92%; + padding: 0 4%; + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} + +.childItem { + width: 48%; + background-color: #fff; + border-radius: 10rpx; + overflow: hidden; + margin: 20rpx 0; +} + +.childImg { + width: 300rpx; + height: 176rpx; + margin: 10px auto; + display: block; +} + +.childName { + margin-top: 10rpx; + margin: 10px; + font-size: 24rpx; + color: #919191; +} + +.childMoney { + color: #fd782d; + font-size: 24rpx; + margin: 10px; + text-decoration: line-through; +} + +.mount{ + width: 120rpx; + height: 120rpx; + background-color: aqua; + border-radius: 50%; + position: fixed; + right: 40rpx; + bottom: 200rpx; + z-index: 100000; +} \ No newline at end of file diff --git a/pages/detailOrder/detailOrder.js b/pages/detailOrder/detailOrder.js new file mode 100644 index 0000000..cda74fe --- /dev/null +++ b/pages/detailOrder/detailOrder.js @@ -0,0 +1,205 @@ +const app = getApp() +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const Http = require("../../utils/HttpBasics"); +let config = require("../../config/config.js"); +const util = require("../../utils/util") +Page({ + data: { + navigationBarHeight, + ifPay:true, + orderId:"", + detailObj:{}, + createDate:"", + mystatus: '', + }, + updetail(){ + Http.get({ + url:config.api.orderDetail, + data:{ + orderId: this.data.orderId + } + }).then(res=>{ + console.log(res); + let createDate = util.formatTime(res.data.createDate, "yyyy-MM-dd hh:mm:ss"); + this.setData({ + detailObj:res.data, + createDate: createDate + }) + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, // 内容 + icon: "none" + }); + }) + }, + /** + * 支付订单更新 + */ + payOrderUpdate(orderId, payOrderId, status, reason, type, _this, composeOrderType) { + let that = this; + Http.post({ + url: config.api.payOrderUpdate, + data: { + payOrderId: payOrderId, + composeOrderId: orderId, + status: status, + reason: reason + } + }).then(res => { + tt.hideLoading(); + if(!type&&type!="free"){ + tt.showToast({ + title: "购买成功", + duration: 2000, + mask: false, + success: function () { + tt.showLoading({ + title: "加载中..." + }); + setTimeout(function () { + tt.hideLoading(); + }, 1600); + setTimeout(() => { + let url = "" + if (_this.data.orderFlag){ + tt.redirectTo({ + url: `/pages/detailOrder/detailOrder?orderId=${orderId}&dingdan=order` + }); + }else{ + tt.redirectTo({ + url: `/pages/detailOrder/detailOrder?orderId=${orderId}` + }); + } + + }, 1600); + } + }); + } else if (type == 'free'){ + tt.redirectTo({ + url: `/pages/detailOrder/detailOrder?orderId=${orderId}` + }); + } + }).catch(err => { + console.log(err); + if (!type) { + setTimeout(function () { + _this.payOrderUpdate(orderId, payOrderId, status, reason, type, _this, composeOrderType); + }, 2000) + } + }) +}, +powerDrawer: function (e) { + let that = this; + console.log(e) + // couponOrderStatus + // 0 未使用 + // 1 已使用 + // 2 已过期 + // 3 已经退款 + if (that.data.mystatus == "" || that.data.mystatus == undefined) { + tt.navigateTo({ + url: `/pages/orderquanma/orderquanma?quancode=${ + e.currentTarget.dataset.quancode + }&title=${e.currentTarget.dataset.title}&subtitle=${ + e.currentTarget.dataset.subtitle + }&remark=${e.currentTarget.dataset.remark}&couponorderstatus=${ + e.currentTarget.dataset.couponorderstatus}&validstatus=${e.currentTarget.dataset.validstatus} + &contentType=${that.data.contentType}` + }); + } else { + tt.navigateTo({ + url: `/pages/orderquanma/orderquanma?quancode=${ + e.currentTarget.dataset.quancode + }&title=${e.currentTarget.dataset.title}&subtitle=${ + e.currentTarget.dataset.subtitle + }&remark=${e.currentTarget.dataset.remark}&couponorderstatus=${ + that.data.mystatus}&validstatus=${e.currentTarget.dataset.validstatus} + &contentType=${that.data.contentType}` + }); + } +}, + gotopay() { + let that = this; + Http.get({//判断是否授权抖音 + url: config.api.checkPhoneStatus, + + }).then(res => { + Http.post({ + url: config.api.payOrderCreate, + data: { + orderId: that.data.detailObj.id, + composeOrderType: that.data.detailObj.composeOrderType + } + }).then(payres => { + + tt.hideLoading(); + tt.pay({ + service: 5, + orderInfo: { + order_id: payres.data.orderId, + order_token: payres.data.token, + }, + success(suRes) { + if(suRes.code==0){ + tt.showLoading({ + title: '订单正在处理中...', + }) + that.payOrderUpdate(that.data.detailObj.id,payres.data.outOrderNo,1,"","",that,that.data.detailObj.composeOrderType) + } else if (res.code === 1) { + tt.showToast({ + title: '支付超时', // 内容 + icon: "none" + }); + + } else if (res.code === 2) { + tt.showToast({ + title: '支付失败', // 内容 + icon: "none" + }); + } else if (res.code === 3) { + tt.showToast({ + title: '支付关闭', // 内容 + icon: "none" + }); + } else if (res.code === 4) { + tt.showToast({ + title: '支付取消', // 内容 + icon: "none" + }); + } else if (res.code === 9) { + tt.showToast({ + title: '订单状态开发者自行获取', // 内容 + icon: "none" + }); + } + + }, + fail(res) { + console.log(123); + // handle fail + }, + }) + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, // 内容 + icon: "none" + }); + }) + + }) + // .catch(err => { + // if (err.code == 11005) { + // this.setData({ + // showPhoem: true + // }) + // } + // }) + }, + onLoad: function (options) { + console.log(options.orderId); + this.setData({ + orderId:options.orderId + }) + this.updetail() + } +}) \ No newline at end of file diff --git a/pages/detailOrder/detailOrder.json b/pages/detailOrder/detailOrder.json new file mode 100644 index 0000000..49f66dd --- /dev/null +++ b/pages/detailOrder/detailOrder.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "订单详情", + "usingComponents": { + "navbar": "../../components/navbar/navbar", + "store":"../../components/store/index" + } +} \ No newline at end of file diff --git a/pages/detailOrder/detailOrder.ttml b/pages/detailOrder/detailOrder.ttml new file mode 100644 index 0000000..637f702 --- /dev/null +++ b/pages/detailOrder/detailOrder.ttml @@ -0,0 +1,57 @@ + + + + + + + 支付成功 + + + + {{detailObj.title}} + + + + + {{createDate}} + + + + + + + 兑换码: + {{detailObj.couponOrderId}} + + + + + + + 订单编号: + {{detailObj.orderNumber}} + + + + + 实付金额: + {{detailObj.payment/100}}元 + + + + + + + 立即支付 + diff --git a/pages/detailOrder/detailOrder.ttss b/pages/detailOrder/detailOrder.ttss new file mode 100644 index 0000000..9f0adb5 --- /dev/null +++ b/pages/detailOrder/detailOrder.ttss @@ -0,0 +1,186 @@ +/* d:\fumaolianke\ttFmC\tt富茂C\pages\detailOrder\detailOrder.ttss */ +.ifPay{ + background-color:#2c8dff; + overflow: hidden; + color: #fff; +} +.yueImg{ + float: left; + width: 40rpx; + height: 40rpx; + /* background-color: #fff; */ + margin: 20rpx; +} +.statusPayText{ + float: left; + margin-top: 20rpx; + font-size: 30rpx; + /* font-family: PingFangSC-Regular; */ + +} +.commodityBox{ + background-color: #fff; + /* margin-top: 20rpx; */ + overflow: hidden; +} +.commodityTitle{ + margin: 20rpx; + font-size: 32rpx; +} +.imgNanText{ + overflow: hidden; +} +.commodityImgBox{ + margin: 20rpx; + width: 140rpx; + height: 140rpx; + background-color: aqua; + float: left; +} + +.commodityData{ + float: left; + /* width: 520rpx; */ + +} +.commodityName{ + margin-top: 20rpx; + font-size: 28rpx; +} +.commodityName::before{ + content: "下单时间:"; + font-size: 26rpx; + color: #999; +} +.orderBox{ + overflow: hidden; + margin-top: 20rpx; + background-color: #fff; + overflow: hidden; + border-bottom: 1rpx solid #f4f5f9; +} + +.text{ + margin: 20rpx; + float: left; + font-size: 30rpx; +} +.rqCode{ + float: left; + font-size: 30rpx; + margin-top: 20rpx; +} +.rqImg{ + float: right; + width: 50rpx; + height: 50rpx; + /* background-color: aqua; */ + margin-top: 20rpx; + margin-right: 20rpx; +} +.goQr{ + float: right; + width: 20rpx; + height: 20rpx; + /* background-color: aqua; */ + margin-top: 26rpx; + margin-right: 40rpx; +} +.orderNumBox{ + background-color: #fff; + overflow: hidden; + border-bottom: 1rpx solid #f4f5f9; +} +.orderNumBox1{ + background-color: #fff; + overflow: hidden; + +} +.orderNum{ + overflow: hidden; +} +.numText{ + margin: 20rpx; + float: left; + font-size: 30rpx; + color: #999; +} +.num{ + float: right; + font-size: 30rpx; + margin-top: 20rpx; + margin-right: 50rpx; +} +.moneyiIcn{ + margin-top: 20rpx; + color: #fd782d ; + font-size: 22rpx; + float: right; + line-height: 44rpx; + margin-right: 4rpx; +} +.money{ + float: right; + font-size: 30rpx; + margin-top: 20rpx; + margin-right: 50rpx; + color: #fd782d ; + +} +.shop{ + margin: 20rpx; + font-size: 32rpx; +} +.shopbox{ + margin-top: 60rpx; + overflow: hidden; +} +.shopImg{ + margin-left: 20rpx; + margin-bottom: 20rpx; + width: 110rpx; + height: 110rpx; + background-color: #fd782d; + float: left; +} +.shopDetailsBox{ + float: left; + margin-left: 20rpx; +} +.shopName{ + margin-top: 10rpx; + font-size: 32rpx; + +} +.floor{ + margin-top: 10rpx; + font-size: 24rpx !important; + color: #b8b8b8 !important; +} +.phoneImg{ + margin-top: 20rpx; + float:right; + margin-right: 50rpx; + width: 70rpx; + height: 70rpx; + border-radius: 50%; + background-color: #fd782d; +} +.payBtn{ + position: fixed; + width: 90%; + height: 80rpx; + left: 5%; + line-height: 80rpx; + text-align: center; + color: #fff; + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%); + font-size: 32rpx; + border-radius: 50rpx; + bottom: 5%; +} +.hie{ + height: 20rpx; +} + + diff --git a/pages/edit/edit.js b/pages/edit/edit.js new file mode 100644 index 0000000..914b02f --- /dev/null +++ b/pages/edit/edit.js @@ -0,0 +1,288 @@ +const navigationBarHeight = (getApp().statusBarHeight + 60) + 'px' +const util = require("../../utils/util.js"); +const Http = require("../../utils/HttpBasics"); +const config = require("../../config/config"); +const imgurl = require("../../utils/imgurl"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + childArr:[], + navigationBarHeight, + chevronUrl: imgurl.chevron.url, + date: '1988-03-12', + dateEnd:'', + flag: 1, + flagsex: 0, + height:"", + weight:"", + items: [ + { name: 1, value: '男', checked: false }, + { name: 2, value: '女', checked: false }, + ], + username: "", + array: ['上班族', '学生', '企业高管', '个体户', '自由职业', '其他'], + array1: ['附近住户', '距离2km', '距离3km', '更远'], + index: 0, + index1: 0, + showPage:false + }, + /** + * 获得生日 + */ + bindDateChange: function (e) { + this.setData({ + date: e.detail.value, + flag: 2 + }) + }, + /** + * 职业 + */ + bindPickerChange: function (e) { + this.setData({ + index: e.detail.value + }) + }, + /** + * 生活半径 + */ + bindPickerChange1: function (e) { + this.setData({ + index1: e.detail.value + }) + }, + address: function () { + let that = this; + tt.chooseLocation({ + success: function (res) { + that.setData({ + address: res.name + '(' + res.address + ')', + addressStr: JSON.stringify(res) + }) + }, + fail: function (error) { + console.log(error) + }, + complete: function (data) { + } + }) + }, + formSubmit: function (e) { + console.log(e.detail,"formSubmit") + let that = this; + // console.log(that.data.childArr) + /** + * sex + * 0 保密 + * 1 男 + * 2 女 + */ + if (that.data.flagsex == 0) { + var sex = 0; + } else { + var sex = that.data.sex; + } + if (that.data.addressStr) { + var address = that.data.addressStr; + } + else { + var address = null; + } + if (e.detail.value.username) { + var username = e.detail.value.username; + } + else if (that.data.username) { + var username = that.data.username; + } + else { + var username = null; + } + if (that.data.flag == 2 && that.data.date) { + var birthdate = new Date(that.data.date).getTime(); + } else { + var birthdate = null; + } + if (username == null || address == null || sex == 0 || birthdate == null) { + tt.showToast({ + title: '请输入完整的用户信息', + icon:"none" + }) + } else { + let tmeparr = [] + tmeparr = JSON.parse(JSON.stringify(that.data.childArr)) + console.log(that.data.childArr) + tmeparr.map(item=>{ + item.birthdate = new Date(item.birthdate).getTime() + }) + console.log(that.data.childArr) + Http.post({ + url: config.api.updateInfo, + data: { + sex: sex, + address: address, + name: username, + birthdate: birthdate, + childrenList: tmeparr, + height: e.detail.value.height ? e.detail.value.height : that.data.height, + weight: e.detail.value.weight ? e.detail.value.weight : that.data.weight, + } + }) + .then(res => { + tt.showToast({ + title: "信息提交成功,将在3分钟内生效", + icon: 'none', + duration: 2000, + mask: false + }) + }) + .catch(err => { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }) + }) + } + }, + radioChange: function (e) { + this.setData({ + sex: e.detail.value, + flagsex: 1 + }) + }, + childSex(e){ + let index = e.currentTarget.dataset.index + let tmpeObj = this.data.childArr + tmpeObj[index].sex = e.detail.value + this.setData({ + childArr: tmpeObj + }) + console.log(tmpeObj) + }, + chidBirthday(e){ + let index = e.currentTarget.dataset.index + let tmpeObj = this.data.childArr + tmpeObj[index].birthdate = e.detail.value + this.setData({ + childArr: tmpeObj + }) + }, + chidName(e){ + let index = e.currentTarget.dataset.index + let tmpeObj = this.data.childArr + tmpeObj[index].name = e.detail.value + this.setData({ + childArr: tmpeObj + }) + }, + childDel(e){ + let index = e.currentTarget.dataset.index + let tmpeObj = this.data.childArr + tmpeObj.splice(index,1) + this.setData({ + childArr: tmpeObj + }) + }, + childAdd(){ + let tmpeObj = this.data.childArr + tmpeObj.unshift({ sex:1}) + this.setData({ + childArr: tmpeObj + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + let tmpeDateEnd = util.formatTime(new Date(), "yyyy-MM-dd") + let that = this; + that.setData({ + dateEnd: tmpeDateEnd + }) + Http.get({ + url: config.api.getScore, + data: {}, + }) + .then(res => {res.data + console.log(res); + if(res.code == 200){ + if (res.data.weight){ + this.setData({ + weight: res.data.weight + }) + } + if (res.data.height) { + this.setData({ + height: res.data.height + }) + } + + if (res.data.childrenList){ + let tmpeArr = res.data.childrenList + tmpeArr.map(item => { + item.birthdate = util.fmtDate(parseInt(item.birthdate)) + that.setData({ + childArr: tmpeArr + }) + }) + } + that.setData({ + showPage:true, + }) + } + var reg = RegExp(/address/); + if (res&&res.data&&res.data.address&&res.data.address.match(reg)) { + that.setData({ + address: JSON.parse(res.data.address).address + JSON.parse(res.data.address).name, + addressStr: JSON.parse(res.data.address).address + JSON.parse(res.data.address).name + }) + }else{ + that.setData({ + address: res.data.address, + addressStr: res.data.address + }) + } + if (res.data.name) { + that.setData({ + username: res.data.name + }) + } + if (res.data.sex) { + if (res.data.sex == 1) { + var checked = 'items[' + 0 + '].checked' + that.setData({ + [checked]: true, + flagsex: 1 + }) + } else if (res.data.sex == 2) { + var checked = 'items[' + 1 + '].checked' + that.setData({ + [checked]: true, + flagsex: 1 + }) + } + that.setData({ + sex: res.data.sex + }) + } + if (res.data.birthdate) { + that.setData({ + date: util.fmtDate(parseInt(res.data.birthdate)), + flag: 2 + }) + } + }) + .catch(error=>{ + tt.showToast({ + title: error.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } +}) \ No newline at end of file diff --git a/pages/edit/edit.json b/pages/edit/edit.json new file mode 100644 index 0000000..88eeb8e --- /dev/null +++ b/pages/edit/edit.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/edit/edit.ttml b/pages/edit/edit.ttml new file mode 100644 index 0000000..d5a2c94 --- /dev/null +++ b/pages/edit/edit.ttml @@ -0,0 +1,80 @@ + + +
+ + 姓名 + + + + + 生日 + + + {{date}} + + + + + 身高 + + + + + 体重 + + + + + 性别 + + + {{item.value}} + + + + + + + 住址 + {{address}} + 请选择地址 + + + + 添加子女信息 + + + + + 姓名 + + + + + + 生日 + + + {{item.birthdate}} + + + + + + 性别 + + + + + + + + + + + + 删除 + + + + +
\ No newline at end of file diff --git a/pages/edit/edit.ttss b/pages/edit/edit.ttss new file mode 100644 index 0000000..ea25518 --- /dev/null +++ b/pages/edit/edit.ttss @@ -0,0 +1,159 @@ +.rArrow { + position: absolute; + right: 26rpx; + height: 20rpx; + width: 20rpx; + margin: auto; + bottom: 30rpx; + } + + input { + /* width:500rpx; */ + /* display: inline-block; */ + font-size: 32rpx; + vertical-align: middle; + margin: auto 10rpx; + } + + .radio-group { + display: inline-block; + } + + .section { + display: flex; + justify-content: flex-start; + height: 100rpx; + line-height: 100rpx; + width: 710rpx; + margin: 0 auto; + border-bottom: 1px solid #eee; + } + + .address { + width: 710rpx; + margin: 0 auto; + border-bottom: 1px solid #eee; + padding-bottom: 10rpx; + } + + .radio { + margin-right: 30rpx; + } + .input{ + margin-top: 20rpx; + } + .section__title, .picker, picker { + display: inline-block; + font-size: 32rpx; + color: #999; + width: 500rpx; + } + + radio { + transform: scale(0.8); + } + + .section__title { + color: #999; + } + + text{ + width: 100rpx; + /* text-align: center; */ + padding: 0 20rpx; + font-size: 32rpx; + } + + /* .section > text:nth-of-type(1) { + font-size: 32rpx; + display: inline-block; + padding: 0 20rpx; + } */ + + /* .address > text:nth-of-type(1) { + font-size: 32rpx; + display: inline-block; + margin-right: 20rpx; + padding: 0 20rpx; + } */ + + .btn { + width: 456rpx; + color: #fff; + margin-top: 200rpx; + height: 92rpx; + line-height: 92rpx; + text-align: center; + border-radius: 32rpx; + font-size: 32rpx; + } + + .active { + opacity: 0.6; + } + + .sec { + position: relative; + } + + .names { + font-size: 26rpx; + line-height: 46rpx; + color: #999; + margin-left: 20rpx; + } + + .child_add { + width: 300rpx; + line-height: 100rpx; + height: 100rpx; + border-radius: 10rpx; + text-align: center; + margin: 20rpx; + background-color: #fff; + } + + .child_box { + margin: 20rpx; + overflow: hidden; + } + + .contBox { + float: left; + width: 80%; + background-color: #fff; + } + + .contBox_section { + display: flex; + justify-content: flex-start; + height: 100rpx; + line-height: 100rpx; + /* width: 710rpx; */ + margin: 0 auto; + border-bottom: 1px solid #eee; + } + + /* .contBox_section text { + margin: 0 20rpx; + } */ + + .contBox_picker { + display: inline-block; + font-size: 32rpx; + color: #999; + /* width: 400rpx; */ + } + + .det_child_box { + float: left; + width: 16%; + height: 100rpx; + border-radius: 10rpx; + line-height: 100rpx; + background-color: #fff; + text-align: center; + margin-top: 100rpx; + margin-left: 2%; + } + \ No newline at end of file diff --git a/pages/editUser/editUser.js b/pages/editUser/editUser.js new file mode 100644 index 0000000..f8a4030 --- /dev/null +++ b/pages/editUser/editUser.js @@ -0,0 +1,35 @@ +const app = getApp() +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const util = require("../../utils/util.js"); +Page({ + data: { + navigationBarHeight, + dateVale: '1988-03-12', + dateEnd:'', + flag:1, + items: [ + { name: 1, value: '男', checked: false }, + { name: 2, value: '女', checked: false }, + ], + }, + bindDateChange(e) { + this.setData({ + dateVale: e.detail.value, + flag:2 + }) + }, + radioChange: function (e) { + this.setData({ + sex: e.detail.value, + flagsex: 1 + }) + }, + onLoad: function (options) { + let tmpeDateEnd = util.formatTime(new Date(), "yyyy-MM-dd") + let that = this; + that.setData({ + dateEnd: tmpeDateEnd, + + }) + } +}) \ No newline at end of file diff --git a/pages/editUser/editUser.json b/pages/editUser/editUser.json new file mode 100644 index 0000000..f26dd03 --- /dev/null +++ b/pages/editUser/editUser.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "编辑信息", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/editUser/editUser.ttml b/pages/editUser/editUser.ttml new file mode 100644 index 0000000..128cacc --- /dev/null +++ b/pages/editUser/editUser.ttml @@ -0,0 +1,47 @@ + + + + + 姓名 + + + + 生日 + + + {{dateVale}} + + + + 身高 + + + + 体重 + + + + 性别 + + + {{item.value}} + + + + + \ No newline at end of file diff --git a/pages/editUser/editUser.ttss b/pages/editUser/editUser.ttss new file mode 100644 index 0000000..4a46b21 --- /dev/null +++ b/pages/editUser/editUser.ttss @@ -0,0 +1,61 @@ +.section{ + height: 100rpx; + line-height: 100rpx; + width: 710rpx; + border-bottom: 1px solid #eee; + overflow: hidden; +} +.uesrName{ + font-size: 32rpx; + margin: 0 20rpx; + float: left; +} +.nameInput{ + font-size: 32rpx; + /* margin: 0 20rpx; */ + float: left; + margin-top: 24rpx; +} +.picker { + display: inline-block; + font-size: 32rpx; + color: #999; + width: 500rpx; + height: 80rpx; + margin-top: 10rpx; + line-height: 80rpx; +} +.pickerInput{ + font-size: 32rpx; + /* margin: 0 20rpx; */ + float: left; + margin-top: 16rpx; +} +.pickerView{ + font-size: 32rpx; + /* margin: 0 20rpx; */ + float: left; + height: 60rpx; +} +.radio { + margin-right: 30rpx; + } +.radio { + transform: scale(0.8); + } + .radio-group { + display: inline-block; + } + + .btn { + width: 456rpx; + color: #fff; + margin-top: 200rpx; + height: 92rpx; + line-height: 92rpx; + text-align: center; + /* border-radius: 32rpx; */ + font-size: 32rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + /* border: none; */ + } \ No newline at end of file diff --git a/pages/getPhone/getPhone.js b/pages/getPhone/getPhone.js new file mode 100644 index 0000000..dd5c05e --- /dev/null +++ b/pages/getPhone/getPhone.js @@ -0,0 +1,77 @@ +const app = getApp() +const Http = require("../../utils/HttpBasics"); +const config = require("../../config/config"); +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +Page({ + data: { + navigationBarHeight, + mallImgUrl:"", + + }, + backHome(){ + tt.reLaunch({ + url: "/index/index", + success: (res) => { + app.globalData.selected = 0; + }, + fail: (res) => { + + }, + }); + }, + back: function() { + + tt.navigateBack({ + delta: 1, + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }, + bindPhone(e){ + console.log(e); + Http.post({ + url:config.api.getUserPhone, + data: { + encryptedData: e.detail.encryptedData, + iv: e.detail.iv + } + }).then(res=>{ + this.back() + }).catch(err=>{ + tt.showToast({ + title: err.message?err.message:err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + onLoad: function (options) { + + Http.get({ + url: config.api.marketicon, + data: { + appId: 'ttef6599d8705b49b101' + } + }).then(res => { + this.setData({ + mallImgUrl: res.data.mallImgUrl + }); + tt.setNavigationBarTitle({ + title: res.data.mallName + }) + }) + .catch(err => { + tt.showToast({ + title: err.message?err.message:err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } +}) \ No newline at end of file diff --git a/pages/getPhone/getPhone.json b/pages/getPhone/getPhone.json new file mode 100644 index 0000000..f42c7a6 --- /dev/null +++ b/pages/getPhone/getPhone.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/getPhone/getPhone.ttml b/pages/getPhone/getPhone.ttml new file mode 100644 index 0000000..3db7842 --- /dev/null +++ b/pages/getPhone/getPhone.ttml @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/pages/getPhone/getPhone.ttss b/pages/getPhone/getPhone.ttss new file mode 100644 index 0000000..43724b5 --- /dev/null +++ b/pages/getPhone/getPhone.ttss @@ -0,0 +1,70 @@ +page{ + background: #fbfbfb; + } + .login-body { + padding-top: 106rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + .backHome{ + margin-top: 20rpx!important; + } + .login-logo { + width: 320rpx; + /* height: 320rpx; */ + padding-top: 70rpx; + } + + .login-logo>image { + display: block; + width: 320rpx; + border-radius: 16rpx; + } + + .login-btn { + padding-top: 120rpx; + width: 504rpx; + } + + .txt { + display: block; + width: 300rpx; + height: 108rpx; + margin-top: 5.8%; + font-size: 30rpx; + color: #999; + line-height: 54rpx; + text-align: center; + } + .active{ + opacity: .6; + } + .login-btn .login-btn-login { + background: #1faf0c; + border-radius: 15rpx !important; + height: 94rpx !important; + line-height: 94rpx; + padding: 0 !important; + font-family: PingFangSC-Semibold !important; + font-size: 36rpx !important; + color: #FFFFFF !important; + letter-spacing: 0.75rpx !important; + text-align: center; + } + .title{ + margin-top: 30rpx; + } + .title text{ + display: block; + text-align: center; + } + .title text:nth-of-type(1){ + font-size: 38rpx; + font-weight: bold; + } + .title text:nth-of-type(2){ + font-size: 30rpx; + margin-top: 25rpx; + } \ No newline at end of file diff --git a/pages/getuserinfo/getuserinfo.js b/pages/getuserinfo/getuserinfo.js new file mode 100644 index 0000000..4de2492 --- /dev/null +++ b/pages/getuserinfo/getuserinfo.js @@ -0,0 +1,75 @@ +const app = getApp() +const Http = require("../../utils/HttpBasics"); +const config = require("../../config/config"); +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +Page({ + data: { + navigationBarHeight, + mallImgUrl:"", + + }, + backHome: function() { + + tt.navigateBack({ + delta: 1, + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }, + bindGetUserInfo(e){ + let that = this; + tt.getUserInfo({ + withCredentials:true, + success:function(res){ + console.log(res,"res"); + Http.post({ + url:config.api.getUserInfo, + data: { + encryptedData: res.encryptedData, + iv: res.iv + } + }).then(res=>{ + that.backHome() + }).catch(err=>{ + tt.showToast({ + title: err.message?err.message:err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + fail(err) { + console.log(err,` 调用失败`); + }, + }) + }, + onLoad: function (options) { + + Http.get({ + url: config.api.marketicon, + data: { + appId: 'ttef6599d8705b49b101' + } + }).then(res => { + this.setData({ + mallImgUrl: res.data.mallImgUrl + }); + tt.setNavigationBarTitle({ + title: res.data.mallName + }) + }) + .catch(err => { + tt.showToast({ + title: err.message?err.message:err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } +}) \ No newline at end of file diff --git a/pages/getuserinfo/getuserinfo.json b/pages/getuserinfo/getuserinfo.json new file mode 100644 index 0000000..f42c7a6 --- /dev/null +++ b/pages/getuserinfo/getuserinfo.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/getuserinfo/getuserinfo.ttml b/pages/getuserinfo/getuserinfo.ttml new file mode 100644 index 0000000..1dffef8 --- /dev/null +++ b/pages/getuserinfo/getuserinfo.ttml @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/pages/getuserinfo/getuserinfo.ttss b/pages/getuserinfo/getuserinfo.ttss new file mode 100644 index 0000000..43724b5 --- /dev/null +++ b/pages/getuserinfo/getuserinfo.ttss @@ -0,0 +1,70 @@ +page{ + background: #fbfbfb; + } + .login-body { + padding-top: 106rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + .backHome{ + margin-top: 20rpx!important; + } + .login-logo { + width: 320rpx; + /* height: 320rpx; */ + padding-top: 70rpx; + } + + .login-logo>image { + display: block; + width: 320rpx; + border-radius: 16rpx; + } + + .login-btn { + padding-top: 120rpx; + width: 504rpx; + } + + .txt { + display: block; + width: 300rpx; + height: 108rpx; + margin-top: 5.8%; + font-size: 30rpx; + color: #999; + line-height: 54rpx; + text-align: center; + } + .active{ + opacity: .6; + } + .login-btn .login-btn-login { + background: #1faf0c; + border-radius: 15rpx !important; + height: 94rpx !important; + line-height: 94rpx; + padding: 0 !important; + font-family: PingFangSC-Semibold !important; + font-size: 36rpx !important; + color: #FFFFFF !important; + letter-spacing: 0.75rpx !important; + text-align: center; + } + .title{ + margin-top: 30rpx; + } + .title text{ + display: block; + text-align: center; + } + .title text:nth-of-type(1){ + font-size: 38rpx; + font-weight: bold; + } + .title text:nth-of-type(2){ + font-size: 30rpx; + margin-top: 25rpx; + } \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..aed44cb --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,587 @@ + +const Http = require("../../utils/HttpBasics"); +const imgurl = require("../../utils/imgurl"); +const config = require("../../config/config"); +let app = getApp(); +Page({ + /** + * 页面的初始数据 + */ + data: { + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + console.log("我是中转页面") + let that = this; + console.log(options); + tt.showToast({ + title: '加载中...', + icon: "loading", + duration: 2000 + }) + + /** + * 根据接收到的参数的值,判断跳转到哪个页面 + */ + if (options && options.type) { + app.globalData.type = options.type; + } + if (decodeURIComponent(options.scene) == "undefined") { + that.setData({ + scene: 0 + }) + app.globalData.scene = 0; + } else { + that.setData({ + scene: decodeURIComponent(options.scene) + }); + app.globalData.scene = decodeURIComponent(options.scene) + that.setData({ + newArr: this.data.scene.split(':') + }) + //// 大屏-二维码-start + if (this.data.newArr[0] == 'JC') { + // 跳转券详情 + options.couponChannelId = this.data.newArr[1]; + } else if (this.data.newArr[0] == 'JG') { + // 跳转拼团详情 + options.couponChannelId = this.data.newArr[1]; + options.path = 'daping' + } else if (this.data.newArr[0] == 't') { + // 普通二维码 + options.type = this.data.newArr[1]; + app.globalData.type = options.type; + if (options.type == 'cd') { + options.couponChannelId = this.data.newArr[2]; + } else if (options.type == 'bd') { + options.bt = this.data.newArr[2]; + options.id = this.data.newArr[3]; + } else if (options.type == 'gm') { + options.id = this.data.newArr[2]; + } else if (options.type == 'sd') { + options.couponChannelId = this.data.newArr[2]; + } else if (options.type == 'td') { + // 专题活动页 + options.id = this.data.newArr[2]; + } else if (options.type == 'md') { + // 门店详情 + options.id = this.data.newArr[2]; + } else if (options.type == 'ra') { + //活动详情 + options.id = this.data.newArr[2]; + } else if (options.type == 'si') { + //活动签到 + options.id = this.data.newArr[2]; + } else if (options.type == 'wj') { + options.id = this.data.newArr[2]; + } else if (options.type == 'ts') { + options.id = this.data.newArr[2]; + } + } + } + + tt.setStorageSync('options', JSON.stringify(options)) + tt.setStorageSync('imgurl', imgurl); + + if (app.globalData.token) { + + + this.updateUserInfo(); + if (options.couponChannelId || options.orderId || options.id) { + that.userStatus(options); + } else { + that.userStatus(); + } + } else { + // 由于 token 是网络请求,可能会在 Page.onLoad 之后才返回 + // 所以此处加入 callback 以防止这种情况 + app.tokenCallback = token => { + this.updateUserInfo(); + if (options.couponChannelId || options.orderId || options.id) { + that.userStatus(options); + } else { + that.userStatus(); + } + } + } + }, + + /** + * 检查用户的状态 + */ + userStatus: function(options) { + + var that = this; + if (options && (options.couponChannelId || options.orderId || options.id)) { + that.checkuserstatus(options); + } else { + that.checkuserstatus(); + } + }, + /** + * 获取手机信息 + */ + updateUserInfo() { + tt.getSystemInfo({ + success: function (res) { + Http.post({ + url: config.api.updateUserInfo, + data: { + systemInfo: JSON.stringify(res) + } + }).then(res => { + console.log(res) + }) + } + }) + }, + checkuserstatus(options) { + let that = this; + + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }) + .then(res => { + // res = JSON.parse('{"code":11004,"message":"用户昵称未授权,请跳转到用户昵称授权页!","data":{}}') + //参与拼团 + if (options && options.orderGroupId) { + tt.redirectTo({ + url: `/pages/joinFrDpell/index?couponId=${options.couponId}&orderGroupId=${options.orderGroupId}&couponChannelId=${options.couponChannelId}&orderId=${options.orderId}&avatarUrl=${options.avatarUrl}&nickName=${options.nickName}` + }) + } + //来自大屏的跳转拼团券详情 + else if (options && options.couponChannelId && options.path == 'daping') { + /** + * 主要是为了拿couponId + */ + Http.get({ + url: config.api.couponDetail, + data: { + couponChannelId: options.couponChannelId + } + }).then(res => { + let data = res.data; + tt.redirectTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${options.couponChannelId}&couponId=${data.couponId}` + }) + }) + } else if (options && options.couponChannelId && !options.spellGroup && app.globalData.type != 'sd') { + console.log(3333333333333333) + // 转赠判断 + if (options.cuserId) { + tt.redirectTo({ + url: `/pages/coupon/detail/index?couponChannelId=${options.couponChannelId}&cuserId=${options.cuserId}&coverImg=${options.coverImg}&userName=${options.userName}&avatarUrl=${options.avatarUrl}&couponOrderId=${options.couponOrderId}&updateDate=${options.updateDate}`, + }) + } else { + // 跳转普通券/消费卡/限时秒杀/砍价详情 + tt.redirectTo({ + url: `/pages/coupon/detail/index?couponChannelId=${options.couponChannelId}`, + }) + } + } + // 拼团详情页(只有通过扫码进入才可能进入拼团详情页面,只有这一个入口) + else if ((options && options.couponChannelId && app.globalData.type == 'sd') || (options && options.couponChannelId && options.spellGroup)) { + tt.redirectTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${options.couponChannelId}`, + }) + } + // 游戏页面 + else if (options && options.id && app.globalData.type == 'gm') { + that.getGameOne(app.globalData.token, options.id) + } + // 报名活动页面 + else if (options && options.id && app.globalData.type == 'ra') { + tt.redirectTo({ + url: `/pages/radetail/index?id=${options.id}`, + }) + } + //活动签到 + else if (options && options.id && app.globalData.type == 'si') { + tt.redirectTo({ + url: `/pages/acSignIn/index?id=${options.id}`, + }) + } + //答题问卷 + else if (options && options.id && app.globalData.type == 'wj') { + tt.redirectTo({ + url: `/pages/questionnaire/questionnaire?id=${options.id}`, + }) + } + //投诉建议 + else if (app.globalData.type == 'ts') { + tt.redirectTo({ + url: `/pages/complaint/complaint`, + }) + } + // 宣传页详情 + else if (options && options.bt && options.id && app.globalData.type == 'bd') { + if (options.bt == '2') { + // 自由图文 + tt.redirectTo({ + url: `/pages/freeBannerDetail/index?id=${options.id}`, + }) + } else { + // 标准格式 + tt.redirectTo({ + url: `/pages/bannerdetail/index?id=${options.id}`, + }) + } + } + // 专题 + else if (options && options.id && app.globalData.type == 'td') { + tt.redirectTo({ + url: `/pages/topicDetail/index?id=${options.id}` + }); + } + // 门店详情 + else if (options && options.id && app.globalData.type == 'md') { + tt.redirectTo({ + url: `/pages/index/searchbar/detail/index?id=${options.id}` + }); + } + // 参与砍价 + else if (options && options.orderId) { + tt.redirectTo({ + url: `/pages/bargain/bargainDatail/bargainDatail?orderId=${options.orderId}&from=${"discount"}&composeOrderType=${options.composeOrderType}`, + }) + } + // 我的 + else if (app.globalData.type == 'uc') { + tt.navigateTo({ + url: '/index/user' + }); + } + // 积分 + else if (app.globalData.type == 'jf') { + tt.redirectTo({ + url: '/pages/integralmall/index' + }); + } + // 首页 + else if (app.globalData.type == 'in') { + tt.reLaunch({ + url: '/index/index' + }); + } + // 停车 + else if (app.globalData.type == 'pc') { + // 停车 + tt.navigateTo({ + url: '/index/passCar' + }); + } + // 我的券包 + else if (app.globalData.type == 'mc') { + // 我的券包 + tt.redirectTo({ + url: '/pages/couponorder/index/index' + }); + } + // 我的订单 + else if (app.globalData.type == 'mo') { + // 我的订单 + tt.redirectTo({ + url: '/pages/order/index/index?id=all' + }); + } + // 我的卡包 + else if (app.globalData.type == 'ca') { + // 我的卡包 + tt.redirectTo({ + url: '/pages/cardorder/index/index' + }); + } + // 特享礼遇 + else if (app.globalData.type == 'sc') { + // 特享礼遇 + tt.redirectTo({ + url: '/pages/specialcourtesy/specialcourtesy' + }); + } + // 限时秒杀 + else if (app.globalData.type == 'rb') { + // 限时秒杀 + tt.redirectTo({ + url: '/pages/rushToBuy/index' + }) + } + // 砍价专场 + else if (app.globalData.type == 'bl') { + // 砍价专场 + tt.redirectTo({ + url: '/pages/bargain/bargain' + }) + } + // 我的砍价 + else if (app.globalData.type == 'mb') { + // 我的砍价 + tt.redirectTo({ + url: '/pages/bargain/bargain?from=myhtml' + }) + } + // 拼团专场 + else if (app.globalData.type == 'sl') { + // 拼团专场 + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup' + }) + } + // 我的拼团 + else if (app.globalData.type == 'ms') { + // 我的拼团 + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup?from=myhtml' + }) + } + // 消费卡 + else if (app.globalData.type == 'dc') { + // 消费卡 + tt.redirectTo({ + url: '/pages/discountCardList/discountCardList' + }) + } + //直播 + else if (app.globalData.type == 'zb') { + tt.redirectTo({ + url: `/pages2/live/livelist/index` + }); + } + //活动日历 + else if (app.globalData.type == 'arl') { + tt.redirectTo({ + url: `/pages/dateLsit/dateLsit` + }); + } + //每日签到 + else if (app.globalData.type == 'qd') { + tt.redirectTo({ + url: `/pages/activityCalendar/activityCalendar` + }); + } + // 门店 + else if (app.globalData.type == 'ml') { + tt.navigateTo({ + url: '/index/searchbar' + }) + } + // 兑换 + else if (app.globalData.type == 'ec') { + tt.redirectTo({ + url: '/pages/exchange/exchange' + }) + } + // 通过分享进入的门店详情 + else if (options && options.id && options.frommd == 'md' && app.globalData.type == 'md') { + tt.redirectTo({ + url: `/pages/index/searchbar/detail/index?id=${options.id}` + }); + } else { + // 主页 + tt.reLaunch({ + url: '/index/index' + }) + } + }) + .catch(err => { + tt.showToast({ + title: err, + icon: "loading", + duration: 2000 + }) + if (err.code == 11004) { + // 用户昵称未授权 + if (options && options.orderGroupId) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponId=${options.couponId}&orderGroupId=${options.orderGroupId}&couponChannelId=${options.couponChannelId}&orderId=${options.orderId}&avatarUrl=${options.avatarUrl}&nickName=${options.nickName}` + }) + } + /** + * spellGroup + * 区分是通过拼团详情分享过来的还是从普通券分享过来的 + * 注意:拼团券和普通券是两个页面 + */ + if (options && options.couponChannelId && !options.cuserId && !options.spellGroup) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${options.couponChannelId}` + }) + } else if (options && options.couponChannelId && !options.cuserId && options.spellGroup) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${options.couponChannelId}&spellGroup=${options.spellGroup}` + }) + } else if (options && options.couponChannelId && options.cuserId) { + /** + * 转赠判断 + */ + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${options.couponChannelId}&cuserId=${options.cuserId}&coverImg=${options.coverImg}&userName=${options.userName}&avatarUrl=${options.avatarUrl}&couponOrderId=${options.couponOrderId}&updateDate=${options.updateDate}` + }) + } else if (options && options.orderId) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?orderId=${options.orderId}&from='${"discount"}` + }) + } + // 报名活动页面 + else if (options && options.id && app.globalData.type == 'ra') { + tt.redirectTo({ + url: `/pages/radetail/index?id=${options.id}`, + }) + } + // 通过分享进入的门店详情 + else if (options && options.id && options.frommd == 'md' && app.globalData.type == 'md') { + tt.redirectTo({ + url: `/pages/getuserinfo/index?id=${options.id}&frommd=md` + }); + }// 门店详情 + else if (options && options.id && app.globalData.type == 'md') { + tt.redirectTo({ + url: `/pages/index/searchbar/detail/index?id=${options.id}` + }); + } else if (app.globalData.type == 'uc') { + tt.navigateTo({ + url: '/index/user' + }); + } + // 积分 + else if (app.globalData.type == 'jf') { + tt.redirectTo({ + url: '/pages/integralmall/index' + }); + } + // 首页 + else if (app.globalData.type == 'in') { + tt.reLaunch({ + url: '/index/index' + }); + } + // 停车 + else if (app.globalData.type == 'pc') { + // 停车 + tt.navigateTo({ + url: '/index/passCar' + }); + } + // 我的券包 + else if (app.globalData.type == 'mc') { + // 我的券包 + tt.redirectTo({ + url: '/pages/couponorder/index/index' + }); + } + // 我的订单 + else if (app.globalData.type == 'mo') { + // 我的订单 + tt.redirectTo({ + url: '/pages/order/index/index?id=all' + }); + } + // 我的卡包 + else if (app.globalData.type == 'ca') { + // 我的卡包 + tt.redirectTo({ + url: '/pages/cardorder/index/index' + }); + } + // 特享礼遇 + else if (app.globalData.type == 'sc') { + // 特享礼遇 + tt.redirectTo({ + url: '/pages/specialcourtesy/specialcourtesy' + }); + } + // 限时秒杀 + else if (app.globalData.type == 'rb') { + // 限时秒杀 + tt.redirectTo({ + url: '/pages/rushToBuy/index' + }) + } + // 砍价专场 + else if (app.globalData.type == 'bl') { + // 砍价专场 + tt.redirectTo({ + url: '/pages/bargain/bargain' + }) + } + // 我的砍价 + else if (app.globalData.type == 'mb') { + // 我的砍价 + tt.redirectTo({ + url: '/pages/bargain/bargain?from=myhtml' + }) + } + // 拼团专场 + else if (app.globalData.type == 'sl') { + // 拼团专场 + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup' + }) + } + // 我的拼团 + else if (app.globalData.type == 'ms') { + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup?from=myhtml' + }) + } + // 消费卡 + else if (app.globalData.type == 'dc') { + // 消费卡 + tt.redirectTo({ + url: '/pages/discountCardList/discountCardList' + }) + } + // 兑换 + else if (app.globalData.type == 'ec') { + tt.redirectTo({ + url: '/pages/exchange/exchange' + }) + } + // 门店 + else if (app.globalData.type == 'ml') { + tt.navigateTo({ + url: '/index/searchbar' + }) + } else { + tt.reLaunch({ + url: '/index/index', + }) + } + } + }) + }, + + getGameOne: function(token, id) { + let _this = this; + Http.get({ + url: config.api.getOneGame, + data: { + token: token, + id: id + } + }).then(res => { + tt.redirectTo({ + url: '/pages/game/index?url=' + res.data.url + "&id=" + res.data.id + "&gameId=" + res.data.gameId, + }) + }) + .catch(err => { + tt.showModal({ + title: '提示', + content: err.message, + showCancel: false, + success: function(res) { + // 如果游戏下架或者找不到,重启首页 + if (res.confirm) { + tt.reLaunch({ + url: '/pages/index/index', + }) + } + } + }) + this.alphaClick(); + }) + }, +}) \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..64c01a5 --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "首页", + "navigationBarBackgroundColor": "#fff" +} \ No newline at end of file diff --git a/pages/index/index.ttml b/pages/index/index.ttml new file mode 100644 index 0000000..e69de29 diff --git a/pages/index/index.ttss b/pages/index/index.ttss new file mode 100644 index 0000000..e69de29 diff --git a/pages/index/searchbar/detail/index.js b/pages/index/searchbar/detail/index.js new file mode 100644 index 0000000..dd5987f --- /dev/null +++ b/pages/index/searchbar/detail/index.js @@ -0,0 +1,247 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +const Http = require("../../../../utils/HttpBasics"); +const imgurl = require("../../../../utils/imgurl"); +const config = require("../../../../config/config"); +const util = require("../../../../utils/util"); +let app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + noMerchant: imgurl.noMerchant.url, + noCoupon: imgurl.noCoupon.url, + poterbg: imgurl.poterbg.url, + teljpgUrl: imgurl.teljpg.url, + fenxiang: imgurl.fenxiang1.url, + actUrl: imgurl.act.url, + wmhome: imgurl.wmhome.url, + page: 1, + imglist: null, + shopVoList: [], + couponList: [], //活动劵列表 + qrCodeL: '', //小程序码 + currentTab: 0, + isshare: false, + showpost: false, + imgHeight: 0, + id: null, + windowWidth: tt.getSystemInfoSync().windowWidth, + windowHeight: tt.getSystemInfoSync().screenHeight, + totalHeight: 0, + canvasScale: 1.0, // 画布放大的倍数,因为如果保存的是一倍的分享图片的话,分享图会有点虚。所以保存的时候,canvasScale设置为2.0,wxss 里面的left: 500%;打开注释。就可保存两倍的分享图 + }, + //关闭海报 + closePoste: function() { + this.setData({ + showpost: false + }) + }, + goback: function () { + tt.reLaunch({ + url: '/index/index', + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + let that = this; + if (options && options.id) { + this.setData({ + id: options.id + }); + that.getList(options.id); + that.getCouponList(options.id); + this.setData({ + currentTab: 0 + }) + } + }, + /** + * 拨打电话 + */ + phone: function(e) { + let that = this; + tt.makePhoneCall({ + phoneNumber: e.target.dataset.merchantlinkphone + }); + }, + /** + * 显示分享弹框 + */ + showshare: function() { + this.setData({ + isshare: true, + }) + }, + /** + * 隐藏分享弹框 + */ + hidemodal: function() { + this.setData({ + isshare: false, + }) + }, + //滑动切换 + swiperTabView: function(e) { + this.setData({ + currentTab: e.detail.current + }); + }, + /** + * 显示分享海报 + */ + /* showPoster: function() { + //跳转到海报生成页 + tt.navigateTo({ + url: `/pages/canvas/index?merchantId=${this.data.id}` + }) + }, */ + showPoster: function() { + //跳转到海报生成页 + let that = this; + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }).then(res => { + tt.navigateTo({ + url: `/pages/canvas/index?merchantId=${that.data.id}` + }) + }).catch(err => { + console.log(err) + if (err.code == 11004) { + // 用户昵称未授权 + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${that.data.id}&fromflag=poster` + }) + + } + }) + + }, + //点击切换 + clickTab: function(e) { + if (this.data.currentTab === e.target.dataset.current) { + return false; + } else { + this.setData({ + currentTab: e.target.dataset.current + }) + } + }, + /** + * 获取商户详情 + */ + getList: function(id) { + let that = this; + let data; + data = { + pageNum: that.data.page, + pageSize: 15, + id: id + } + Http.get({ + url: config.api.merchantList, + data: data + }).then(res => { + if (res.data.list.length==0){ + tt.showModal({ + title: '提示', + content: '此商户已经停用', + confirmText: "返回", + showCancel:false, + success: function (res) { + if (res.confirm) { + tt.navigateBack({ + url: '/index/searchbar', + }) + } + } + }) + } + let imgList = []; + imgList.push(res.data.list[0].merchantImgUrl) + that.setData({ + data: res.data.list[0], + shopVoList: res.data.list[0].shopVoList, + imglist: res.data.list[0].coverPicture == '[]' ? imgList : JSON.parse(res.data.list[0].coverPicture), + }) + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + /** + * 获取商户活动信息 券类型(1.满减券,2.代金券,3.团购券,4.礼品券,5.停车券,6.多商户券,8.砍价券,9.团购券,50.积分券,51.积分停车券 100.消费卡) + * 投放频道:(1.列表, 2.限时抢购, 3. banner图 4. 游戏 5.卡频道 6.砍价频道 7.拼团频道 8专题) + */ + getCouponList: function(id) { + let that = this; + let data; + data = { + status: 0, + merchantId: id, + pageNum: that.data.page, + pageSize: 15, + } + Http.post({ + url: config.api.listByMerchant, + data: data + }).then(res => { + that.setData({ + couponList: res.data.page.list, + }) + + // if (res.data && res.data.qrCode){ + // that.setData({ + // qrCode: res.data.qrCode, + // }) + // } + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + /** + * 获取多商铺列表 + */ + onShareAppMessage: function(res) { + app.globalData.previewFlag = true + let that = this; + let shareObj = { + title: that.data.data.merchantName, + path: `/pages/index/index?id=${that.data.id}&frommd=md&type=md`, + success: function(res) { + if (res.errMsg == 'shareAppMessage:ok') {} + }, + fail: function(error) { + if (res.errMsg == 'shareAppMessage:fail cancel') {} else if (res.errMsg == 'shareAppMessage:fail') {} + } + }; + console.log(`/pages/index/index?id=${that.data.id}&frommd=md`); + // 来自页面内的按钮的转发 + if (res.from === 'button') { + console.log(res) + var eData = res.target.dataset.id; + console.log(eData) + shareObj.path = `/pages/index/index?id=${eData}&frommd=md&type=md`; + } + // 返回shareObj + return shareObj; + } +}) \ No newline at end of file diff --git a/pages/index/searchbar/detail/index.json b/pages/index/searchbar/detail/index.json new file mode 100644 index 0000000..cc0cec1 --- /dev/null +++ b/pages/index/searchbar/detail/index.json @@ -0,0 +1,10 @@ +{ + "navigationBarTitleText": "商户详情", + "navigationBarBackgroundColor": "#F4F5F9", + "navigationBarTextStyle": "black", + "usingComponents": { + "c-banner": "../../../../components/banner/index", + "c-coupons": "../../../../components/coupons/index", + "navbar": "../../../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/index/searchbar/detail/index.ttml b/pages/index/searchbar/detail/index.ttml new file mode 100644 index 0000000..5b2e1ac --- /dev/null +++ b/pages/index/searchbar/detail/index.ttml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + {{data.merchantName}} + {{data.title}} + + + + + + + + + 商户位置: + + + + {{item.buildingName}}{{item.floorName}}--{{item.shopNumber}} + + + + + + + + + 客服电话: + + + + {{data.linkLinePhone}} + {{data.merchantLinkPhone}} + + + + + + + + + 商户活动: + + + {{data.actionDesc}} + + + + + + + + 优惠信息 + + + + 商家简介 + + + + + + + + + + + + 请您敬请期待 + 我们正在筹备一大波优惠活动 + + + + {{content}} + + {{loadingtext}} + + + + + {{data.introduction}} + 信息完善中,敬请期待~ + + + + + + + + + + + + + 微信好友 + + + + 生成海报 + + + + + + \ No newline at end of file diff --git a/pages/index/searchbar/detail/index.ttss b/pages/index/searchbar/detail/index.ttss new file mode 100644 index 0000000..3ae4aff --- /dev/null +++ b/pages/index/searchbar/detail/index.ttss @@ -0,0 +1,365 @@ +@import "../../../../app.ttss"; +page{ + background: #F4F5F9; +} +.index-slide, swiper-item + .index-slide-image { + display: block; + width: 750rpx; + margin: 0 auto; + overflow: hidden; + position: relative; + height: 450rpx; + +} + +.index-slide-view .dots { + position: absolute; + left: 0; + right: 0; + bottom: 20rpx; + display: flex; + justify-content: center; +} + +.index-slide-view .dots .dot { + margin: 0 8rpx; + width: 12rpx; + height: 12rpx; + background: #b6b6b7; + border-radius: 50%; + transition: all 0.6s; +} + +.index-slide-view .dots .dot.active { + background: #02c0ff; + width: 30rpx; + height: 12rpx; + border-radius: 10rpx; + opacity: 1; +} + +.merchant-detail { + width: 100%; + background: #fff; + border-top-left-radius: 20rpx; + border-top-right-radius: 20rpx; +} + +.merchant-brand, .merchant-shop, .merchant-phone { + width: 100%; + background: #fff; +} + +.merchant-brand view:nth-child(1) { + width: 88%; + display: flex; + flex-direction: column; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.merchant-brand view:nth-child(1) text:nth-child(1){ + font-size:32rpx; + font-family:PingFangSC-Regular; + font-weight:400; + color:rgba(60,60,60,1); + margin-top: 20rpx; +} +.merchant-shop text, .merchant-phone text { + font-size: 30rpx; +} +.merchant-shop .fl{ + color: #A6A6A6; +} +.merchant-phone view { + color: #A6A6A6; +} +.merchant-activity view{ + color: #333; + margin-top: 20rpx; +} + +.merchant-activity view:nth-child(2) { + font-size: 26rpx; + display:flex; + flex-direction:column; +} +.merchant-shop view:nth-child(2) { + font-size: 30rpx; + color: #A6A6A6; + line-height: 26rpx; +} +.merchant-activity view:nth-child(1) { + font-size:30rpx; +} +.merchant-activity view:nth-child(2) text { + font-size:28rpx; + color:#919191; + letter-spacing:0; + line-height:45rpx; +} + +.merchant-info { + display: block !important; + color: #999; + font-size: 28rpx; +} + +.merchant-phones { + padding: 20rpx 0; + display: block; + font-size: 30rpx; + background: #F4F5F9; +} + +.merchants text { + display: inline-block; + font-size: 26rpx; + color: #A6A6A6; + line-height: 22rpx; + margin-right: 10rpx; +} +.posi{ + color: #FD832D!important; +} +.wz{ + color: #A6A6A6; + font-size: 24rpx; +} +.notes view{ + color: #A6A6A6; +} +.merchant-brand { + border: none !important; + width: 92%; + margin: 0 auto 20rpx; +} +.merchant-brand view:nth-child(2) text:nth-child(1) { + margin-top: 20rpx; + font-size: 32rpx; +} + +.title{ + font-size: 26rpx; + color: #A6A6A6; + width: 530rpx; + height: 40rpx; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.merchant-shop,.merchant-phone,.merchant-activity{ + width: 92%; + margin: 0 auto; +} +.shopHr{ + margin-bottom: 20rpx; +} +.tabs-item.selected { + color: rgba(171, 149, 109, 0.8); + border-bottom: 2px solid rgba(171, 149, 109, 0.8); +} + +.tabs-item { + width: 33.3%; + color: #c7c7cb; + font-size: 28rpx; + display: flex; + align-items: center; + justify-content: center; + border-bottom: 1rpx solid #d0d0d7; +} + +.swiper-tab { + text-align: left; + width: 70%; + display: flex; + flex-flow: row; + justify-content: space-around; + height: 88rpx; + line-height: 88rpx; + margin-bottom: 30rpx; + padding: 0 15%; + background: #FFF; +} + +.swiper-tab-item { + color: #434343; + font-size: 30rpx; + margin-right: 50rpx; + position: relative; +} + +.active-tab { + color: #FD782D; + display: block; + width: 72%; + height: 8rpx; + background: 0 0; + position: absolute; + bottom: 0; + left: 15%; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius: 100px; +} +.fenxiang { + position: absolute; + right:0; + top: 27rpx; + display: flex; + flex-direction: column; +} + +.fenxiang image { + width: 48rpx; + height: 48rpx; + margin: 0 auto; +} +.gift{ + color: #3C3C3C; + font-size: 20rpx; + margin: 0 auto; +} +.user-motto { + width: 270rpx; + border: 0; + background: none; + height: 260rpx; + color: #fff; + position: fixed; +} + +.user-motto::after { + border: none; +} + +.coupons c-coupons { + width: 335rpx; + /* height: 354rpx; */ + margin-bottom: 22rpx; +} + +.coupons c-coupons:nth-of-type(2n+1) { + float: left; +} + +.coupons c-coupons:nth-of-type(2n) { + float: right; +} + +.loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; +} + +.dingdan text { + display: block; + text-align: center; + color: #999; +} +.have{ + text-align: left!important; +} + +.swiperactive { + min-height: 400rpx; + padding-bottom: 44rpx; + padding:0 4% 10rpx; + +} +.swiperactive image{ + display: block; + width: 300rpx; + margin: 30rpx auto 0; +} +.modal { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: rgba(0, 0, 0, 0.5); + overflow: hidden; + z-index: 10000; + color: #fff; +} + +.modal-content { + width: 540rpx; + height: 233rpx; + line-height: 60rpx; + overflow: hidden; + position: fixed; + top: 50%; + left: 0; + z-index: 11; + background: #f9f9f9; + margin: -130rpx 105rpx; + border-radius: 36rpx; + display: flex; +} + +.modal-content view { + display: inline-block; + flex: 1; + text-align: center; +} + +.modal-content view>text { + color: #000; + display: block; + font-size: 30rpx; + height: 80rpx; + line-height: 80rpx; +} + +.modal-content view>image { + margin-top: 30rpx; + width: 90rpx; + height: 90rpx; +} + +/*分享海报样式*/ +.canvas-content { + display: flex; + top: 0; + left: 0; + /* left: 500%; 分享图不显示在页面上面,就将画布设置在页面之外*/ +} + +.dingdan image { + display: block; + width: 300rpx; + margin: 30rpx auto 0; +} + +button::after{ border: none; } +.goback{ + position: fixed; + right: 20rpx; + bottom: 60rpx; + width:100rpx!important; + height:100rpx; + z-index: 100; + background:rgba(255,255,255,1); + line-height: 95rpx; + border:1rpx solid rgba(227,227,227,1); + border-radius:50%; +} +.goback image{ + position: absolute; + width: 60rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} +.frHr{ + float: left; + margin-left: 12rpx; + margin-top:18rpx; +} \ No newline at end of file diff --git a/pages/integralmall/index.js b/pages/integralmall/index.js new file mode 100644 index 0000000..fbe1794 --- /dev/null +++ b/pages/integralmall/index.js @@ -0,0 +1,359 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +var config = require("../../config/config.js"); +const Http = require("../../utils/HttpBasics"); +const imgurl = require("../../utils/imgurl"); +const QR = require("../../utils/memberqrcode.js"); +Page({ + /** + * 页面的初始数据 + */ + data: { + rightHr: imgurl.rightHr.url, + navigationBarHeight, + erweima: imgurl.erweima.url, + bannerUrl: imgurl.banner.url, + loadingUrl: imgurl.loading.url, + nodata: imgurl.noCoupon.url, + wmhome: imgurl.wmhome.url, + barcode: imgurl.barcode.url, + list: [], + lists: [], + arrays:[], + myLists: [], + page: 1, // 设置加载的第几次,默认是第一次 + pageSize: 10, //返回数据的个数 + searchLoadingComplete: false, //“没有数据”的变量,默认false,隐藏 + allow_load: true, // 是否允许继续加载标识 默认 true 允许,false 加载完成 + myorder: false, + actUrl: imgurl.act.url, + loading: true, + content: '数据正在加载中', + reloadIf: false, + creditAmount: '', + score: '0', + sort:'', + hidden:false, + userCredit:'', + sortColumn:'', + sortOrder:'' + }, + qrcodeH: function () { + var that = this; + let memberId = that.data.memberId; + if (memberId) { + tt.navigateTo({ + url: '/pages/specialcourtesy/specialcourtesy' + }) + } + }, + goback: function () { + tt.reLaunch({ + url: '/index/index', + }) + }, + onLoad: function (options) { + console.log("我劲来了"); + let that = this; + var todayDate = new Date().getTime(); + that.getPoints(); + that.setData({ + optionsData: options, + todayDate: todayDate + }) + if (options && options.from == 'myhtml') { + that.getmyList(); + } + else { + that.getList(1); + that.setData({ + lists: null + }) + } + }, + onShow() { + let that = this; + if (this.data.reloadIf) { + tt.setNavigationBarTitle({ + title: '积分商城' + }) + that.getList(1); + that.setData({ + lists: null + }) + }; + Http.get({ + url: config.api.getScore, + data: {} + }).then(res => { + if (res.data.address && res.data.name && res.data.sex && res.data.birthdate) { + that.setData({ + showEdit: true + }) + } + that.setData({ + score: res.data.score, + levelName: res.data.levelName, + upgradePercent: res.data.upgradePercent, + upgradeScore: res.data.upgradeScore, + ismember: true, + memberId: res.data.id + }) + var size = this.setCanvasSize(); + var initUrl = JSON.stringify({ + flagid: res.data.id + }); + that.createQrCode(initUrl, "mycanvas1", size.w, size.h); + }) + .catch(err => { + tt.showModal({ + title: '提示', + content: err.message, + showCancel: false + }) + }) + }, + //适配不同屏幕大小的canvas + setCanvasSize: function () { + var size = {}; + try { + var res = tt.getSystemInfoSync(); + var scale = 750 / 500; + //不同屏幕下canvas的适配比例;设计稿是750宽 + var width = res.windowWidth / scale; + var height = width; + //canvas画布为正方形 + size.w = width; + size.h = height; + } catch (e) { + // Do something when catch error + console.log("获取设备信息失败" + e); + } + return size; + }, + createQrCode: function (url, canvasId, cavW, cavH) { + //调用插件中的draw方法,绘制二维码图片 + QR.api.draw(url, canvasId, cavW, cavH); + }, + qrcode: function (e) { + var that = this; + that.setData({ + showQrcode: true + }) + tt.showToast({ + title: '生成中...', + icon: 'loading', + duration: 2000 + }); + var st = setTimeout(function () { + tt.hideToast() + var size = that.setCanvasSize(); + var url = JSON.stringify({ + END: "C", + TYPE: "memberCode", + ID: that.data.memberId, + }) + that.createQrCode(url, "mycanvas1", size.w, size.h); + that.setData({ + maskHidden: true + }); + clearTimeout(st); + }, 1000) + }, + // 获得积分,渲染页面 + getPoints(){ + let that = this; + Http.get({ + url: config.api.integralList, + data: { + pageNum: 1, + pageSize: 1, + } + }).then(res => { + tt.stopPullDownRefresh(); + that.setData({ + creditAmount: res.data.list[0].creditAmount, + }); + }) + .catch(err => { + tt.stopPullDownRefresh(); + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + gotojifen(){ + tt.navigateTo({ + url: '/pages/integralmall/integraHistory/index', + }) + }, + //我可换购 + canSort(){ + let that = this; + if (that.data.creditAmount !== 0){ + that.setData({ + allow_load:true, + userCredit: that.data.creditAmount, + page:1 + }) + that.getList(1) + } + if (that.data.creditAmount == 0){ + tt.showToast({ + title: '快去补充积分吧!', + icon: 'none', + duration: 2000, + mask: false + }); + } + }, + //所需积分 + need: function () { + var that = this; + var hid = this.data.hidden; + if (hid == true) { + hid = false; + that.setData({ + allow_load:true, + sort :imgurl.up.url, + sortOrder: 'desc', + sortColumn: 'creditPrice', + page: 1 + }) + that.getList(1) + } + else { + hid = true; + that.setData({ + sort: imgurl.down.url, + sortOrder: 'asc', + sortColumn: 'creditPrice', + allow_load: true, + page:1 + }) + that.getList(1) + } + this.setData({ + hidden: hid // 改变状态 + }) + }, + getList(pageNum) { + var that = this; + if (that.data.allow_load) { + that.setData({ + loading: true, + content: '小主,我在玩命加载中...' + }) + var param = { + pageNum: pageNum, + pageSize: 10, + targetAd: 50, + sortColumn: that.data.sortColumn, + sortOrder: that.data.sortOrder, + userCredit: that.data.userCredit + }; + var url = config.api.couponChannelList; + // 请求接口 + Http.get({ + url: url, + data: param, + }).then(res => { + console.log(res) + /** + * 加载完成 + */ + if (pageNum >= res.data.pages) { + if (res.data.pages == 0 || res.data.pages == 1) { + that.setData({ + allow_load: true, + loading: false, + content: "" + }); + } else { + that.setData({ + allow_load: false, + loading: true, + content: "——— 再拉裤子就掉了啦 ———", + }); + } + } + if (pageNum == 1) { + that.setData({ + lists: [], + }) + } + var tmpArr = that.data.lists; + // tmpArr = [...tmpArr, ...res.data.list]; + tmpArr.push.apply(tmpArr, res.data.list); + that.setData({ + lists: tmpArr + }) + tt.stopPullDownRefresh(); + }) + .catch(err => { + tt.stopPullDownRefresh(); + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400); + } else { + that.setData({ + loading: true, + content: "——— 再拉裤子就掉了啦 ———" + }) + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400) + } + }, + /** + * + * @param goto拼团券详情 + */ + invite: function (e) { + let couponChannelId = e.currentTarget.dataset.id; + let couponId = e.currentTarget.dataset.couponid; + if (couponChannelId && couponId) { + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${couponChannelId}&couponId=${couponId}` + }) + } + }, + //加载更多 + onReachBottom: function () { + let that = this; + that.data.page++; + that.setData({ + page: that.data.page + }); + that.getList(that.data.page, that.data.flag); + }, + /** + * 刷新 + */ + onPullDownRefresh: function (e) { + let that = this; + that.setData({ + sort: '', + sortColumn: '', + sortOrder: '', + userCredit: '', + page:1, + allow_load: true, + }) + that.getList(1); + that.getPoints(); + } +}) \ No newline at end of file diff --git a/pages/integralmall/index.json b/pages/integralmall/index.json new file mode 100644 index 0000000..08931fd --- /dev/null +++ b/pages/integralmall/index.json @@ -0,0 +1,9 @@ +{ + "navigationBarTitleText": "积分商城", + "navigationBarBackgroundColor": "#FD832D", + "navigationBarTextStyle": "white", + "enablePullDownRefresh": true, + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/integralmall/index.ttml b/pages/integralmall/index.ttml new file mode 100644 index 0000000..27c5a9e --- /dev/null +++ b/pages/integralmall/index.ttml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + {{levelName}} + + + + + 还需{{upgradeScore}}成长值升级 + + + + + + {{creditAmount}} + + 积分详情 + + + + + + + + + + + 我可换购 + + 所需积分 + + + + + + 暂无数据 + + + + + + + + {{item.title}} + + + + {{item.creditPrice}} + 积分 + + {{'原价 '+item.priceStr+'元'}} + + + + + 立即购买 + 立即换购 + 立即换购 + + + + + {{item.subTitle}} + 剩余{{item.remainInventory}}张 + + + + + {{content}} + + \ No newline at end of file diff --git a/pages/integralmall/index.ttss b/pages/integralmall/index.ttss new file mode 100644 index 0000000..b8c45d9 --- /dev/null +++ b/pages/integralmall/index.ttss @@ -0,0 +1,506 @@ +/* pages/spellGroup/spellGroup.wxss */ + +.topbg { + /* margin-bottom: 20rpx; */ + width:100%; + height:234rpx; + background:linear-gradient(180deg,rgba(253,131,45,1) 0%,rgba(254,74,22,1) 100%); +} +.topbg-top{ + width:100%; + height: 50%; + display: inline-block +} +.topbg-btom{ + width:84%; + height: 40%; + margin: 0 auto; +} +.user-avatar { + width: 20%; + height: 100%; + float: left; +} +.user-box { + width: 82rpx; + height: 82rpx; + border-radius: 50%; + overflow: hidden; + margin: 26rpx 0 0 60rpx; +} +.user-avatar open-data { + display: block; + width: 100%; + height: 100%; +} +.name{ + float: left; + color: #FFFFFF; + font-size:32rpx; + font-family:PingFangSC-Medium; + font-weight:500; + margin:0 20rpx; +} +.usre_level{ + height:32rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius:9px 9px 9px 0px; + font-family:PingFangSC-Regular; + font-weight:400; + color:rgba(255,255,255,1); + line-height:28rpx; + float: left; + margin-top: 8rpx; +} +.chengzhang { + font-size: 24rpx; + font-weight: 400; + color: #FFFFFF; + padding: 0 8rpx; +} +.myName{ + float: left; + font-size: 32rpx; + margin-top:36rpx; +} +.bot{ + display: flex; + flex-direction: column; +} +.view{ + height: 40rpx; + display: block; +} +progress{ + margin: 14rpx 8rpx 0 20rpx; + float: left; + width:230rpx; + border-radius:60rpx; + overflow:hidden; +} +.msg{ + float: left; + font-size:10px!important; + font-family:PingFangSC-Regular; + font-weight:400; + color:rgba(255,255,255,1); +} +.btoml{ + float: left; + height: 100%; + width: 50%; +} +.jifen{ + font-size: 26rpx; + font-weight: 500; + color: #FFFFFF; + height:30rpx; + line-height: 30rpx; + margin-top: 20rpx; +} +.jifen image{ + width: 10rpx; + height: 22rpx; + margin-left: 5rpx; +} +.topbg .score{ + font-size: 40rpx; + font-weight: 500; + float: left; + color: #FFFFFF; + margin-right: 10rpx; +} + +.qrcode{ + width: 84rpx; + height: 84rpx; + float: right; + /* margin-right: 48rpx; */ +} +.qrcode image { + margin: auto; + width: 84rpx; +} +page { + height: auto; + overflow: auto; + background: #f7f7f7; + background-size: cover; + background-repeat: no-repeat; +} +.content-box{ + height: auto; + padding-bottom: 200rpx; +} +.loading { + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-size: 26rpx; + color: #666; +} + +.loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; +} +.banner{ + margin-bottom: 20rpx; + background: none; + border-radius: 16rpx; +} +.banner .bg { + display: block; + width: 100%; +} +image{ + padding: 0; + margin: 0; +} +.banner .bannerbg image{ + display: none!important; + height: 0; + overflow: hidden; +} +.bannerimg { + display: block; + width: 710rpx; + height: 260rpx; + border-radius: 15rpx; + margin: -132rpx auto 0; +} +.banner .index-slide-view { + margin: -132rpx auto 0; +} +.top{ + position: absolute; + top: 30rpx; + width: 710rpx; + height: 260rpx; + background: #fff; + left: 20rpx; + border-radius: 16rpx; + overflow: hidden; +} +.content .sepll-list{ + width: 714rpx; + height: 230rpx; + background: #fff; + border-radius: 30rpx; + margin: 0 auto 30rpx; +} +.content .spell-bot{ + width: 674rpx; + float: left; + font-size: 24rpx; + height: 60rpx; + line-height: 60rpx; + border-top: 1rpx #E1E1E1 dashed; + margin: 0 20rpx; +} +.spell-bot .botMsg{ + width: 40%; + height: 100%; + float: left; + /* margin-left: 20rpx; */ + color: #A6A6A6; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} +.spell-bot .botNum{ + width: 40%; + height: 100%; + float: right; + text-align: right; + margin-right: 24rpx; + color: #FD782D; +} +.content .spell-left{ + width: 170rpx; + height: 170rpx; + float: left; +} +.content .spell-left image{ + width: 120rpx; + height: 120rpx; + margin: 25rpx; + border-radius: 8rpx; +} +.content .spell-center{ + float: left; + width: 380rpx; + height: 170rpx; +} +.content .tilte{ + margin-top: 20rpx; + font-size:32rpx; + font-family:PingFang-SC-Bold; + font-weight:bold; + color:#3C3C3C; + line-height:44rpx; + padding-top: 16rpx; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} +.content .remark{ + width:304rpx; + font-size:24rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(140,140,140,1); + line-height:44rpx; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} +.content .spell-num{ + width: 95rpx; + border:1px solid rgba(255,50,50,1); + border-radius:10rpx; + font-size:24rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(255,50,50,1); + line-height:30rpx; + margin: 10rpx 0; + text-align: center; +} +.content .price{ + overflow: hidden; + margin-top: 20rpx; +} +.content .price01{ + font-size:40rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:#FD832D; + line-height:44rpx; +} +.content .price02{ + display: inline; + font-size: 24rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + text-decoration:line-through; + color:rgba(140,140,140,1); +} +.content .price-num{ + display: inline; +} +.more{ + display: inline; + margin-left: -10rpx; +} +.content .price-unit{ + display: inline; + font-size:24rpx; + margin-right: 10rpx; +} +.content .spell-right{ + float: right; + width: 156rpx; +} +.right-button{ + width:140rpx; + height:52rpx; + font-size:26rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius:20rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + text-align: center; + color:rgba(255,255,255,1); + line-height:52rpx; + margin: 88rpx 24rpx 0 0; + margin-top: 90rpx; +} +.right-text{ + font-size:22rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(140,140,140,1); + line-height:60rpx; + text-align: center; +} +.bottom{ + width: 690rpx; + height: 85rpx; + position: fixed; + bottom: 26rpx; + left: 30rpx; + /* background:rgba(243,69,58,1); */ + border:1px solid rgba(255, 222, 67, 1); + border-radius:40px; + color: #fff; + overflow: hidden; +} +.bottom-left{ + width: 50%; + float: left; + margin-left: -1rpx; + text-align: center; + line-height: 85rpx; + font-size:30rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(255,253,245,1); + border-right:1px solid rgba(255, 222, 67, 1); + opacity: 1; +} +.bottom-right{ + width: 50%; + float: left; + text-align: center; + line-height: 85rpx; + font-size:30rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(255,253,245,1); + opacity: 1; +} +.spell-bottom{ + overflow: hidden; +} +.spell-top{ + height: auto; + margin: 0 30rpx; + overflow: hidden; + box-sizing: border-box; + border-bottom: 1rpx solid #EEEEEE; +} +.spell-top-left{ + float: left; + width: 60%; +} +.spell-top-right{ + float: left; + width: 40%; +} +.top-title{ + display: inline; + font-size:24rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(51,51,51,1); + line-height:64rpx; +} +.top-num{ + display: inline; + font-size:24rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:#FF3232; + line-height:64rpx; + padding-left: 8rpx; +} +.spell-top-right{ + text-align: right; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(255,50,50,1); + line-height:64rpx; +} +.no-data01{ + width: 690rpx; + padding-top: 174rpx; + height: calc(100vh - 460rpx); + background: #fff; + margin: 0 auto; + border-radius:15rpx; + box-sizing: border-box; + margin-top: 20rpx; +} +.no-data{ + width: 690rpx; + padding-top: 174rpx; + height: calc(100vh - 160rpx); + background: #fff; + margin: 0 auto; + border-radius:15rpx; + box-sizing: border-box; + margin-top:20rpx; +} +.no-data01 image{ + width: 261rpx; + height: 272rpx; + display: block; + margin: 0 auto; +} +.no-data image{ + width: 261rpx; + height: 272rpx; + display: block; + margin: 0 auto; +} +.no-data-text{ + text-align: center; + font-size:34rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(0,0,0,1); +} + +button::after{ border: none; } +.goback{ + position: fixed; + right: 50rpx; + bottom: 60rpx; + width:100rpx!important; + height:100rpx; + z-index: 100; + background:rgba(255,255,255,1); + line-height: 95rpx; + border:1rpx solid rgba(227,227,227,1); + border-radius:50%; +} +.goback image{ + position: absolute; + width: 60rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} +.remainInventory{ + background: #ccc; +} +.sort{ + width:94%; + height:90rpx; + background:#fff; + margin:0 auto 20rpx; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 3% +} +.sort view{ + width: 180rpx; + line-height: 60rpx; + color: #fff; + font-size: 28rpx; + text-align: center; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius: 20rpx; +} +.need{ + justify-content: center;/*水平居中*/ + align-items: center; /*垂直居中*/ + display: flex; +} +.need image{ + margin-left:5rpx; + width: 40rpx; + height: 40rpx; +} +.btn-hover{ + position: relative; + top: 3rpx; + box-shadow:0px 0px 8px #999 inset; +} \ No newline at end of file diff --git a/pages/integralmall/integraHistory/index.js b/pages/integralmall/integraHistory/index.js new file mode 100644 index 0000000..f2fb0f3 --- /dev/null +++ b/pages/integralmall/integraHistory/index.js @@ -0,0 +1,107 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +var config = require("../../../config/config.js"); +var app = getApp(); +const Http = require("../../../utils/HttpBasics"); +let util = require("../../../utils/util"); +const imgurl = require("../../../utils/imgurl"); +const {creditType} = require("../../../utils/creditType"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + score: 10, + pageNum: 1, + list: [], + showcontent: false, + loadingUrl: imgurl.loading.url, + bgg: imgurl.bgg.url, + allow_load: true, + creditAmount:0 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + gotorule: function () { + tt.navigateTo({ + url: '/pages/grade/grade', + }) + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + let that = this; + that.record(1, 15); + }, + record(pageNum) { + var that = this; + if (that.data.allow_load) { + Http.get({ + url: config.api.integralList, + data: { + pageNum: pageNum, + pageSize: 20, + } + }).then(res => { + tt.stopPullDownRefresh(); + res.data.list.map(file => { + creditType.map((item,index)=>{ + if (file.creditType==item.value){ + file.creditTypeName = item.name; + } + }) + file.createDate = util.formatTime( + file.createDate, + "yyyy-MM-dd hh:mm:ss" + ); + }); + if (pageNum >= res.data.pages) { + that.setData({ + allow_load: false, + }); + } + that.data.list = that.data.list.concat(res.data.list); + that.setData({ + list: that.data.list, + creditAmount: that.data.list[0].creditAmount + }); + }) + .catch(err => { + tt.stopPullDownRefresh(); + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + }, + /** + * 刷新 + */ + onPullDownRefresh: function (e) { + let that = this; + that.setData({ + pageNum: 1, + list:[], + allow_load:true + }); + that.record(1); + }, + onReachBottom: function () { + var that = this; + that.data.pageNum++; + that.setData({ + pageNum: that.data.pageNum + }); + that.record(that.data.pageNum); + } +}) \ No newline at end of file diff --git a/pages/integralmall/integraHistory/index.json b/pages/integralmall/integraHistory/index.json new file mode 100644 index 0000000..afc611d --- /dev/null +++ b/pages/integralmall/integraHistory/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "积分变更记录", + "enablePullDownRefresh": true, + "usingComponents": { + "navbar": "../../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/integralmall/integraHistory/index.ttml b/pages/integralmall/integraHistory/index.ttml new file mode 100644 index 0000000..8f1f520 --- /dev/null +++ b/pages/integralmall/integraHistory/index.ttml @@ -0,0 +1,26 @@ + + + + 当前 + {{creditAmount+'分'}} + + + + + 积分明细 + + + + {{item.changePurpose?item.changePurpose:item.creditTypeName}} + {{item.createDate}} + + + +{{item.creditNum}}分 + {{item.creditNum}}分 + + + + + 暂无数据 + + \ No newline at end of file diff --git a/pages/integralmall/integraHistory/index.ttss b/pages/integralmall/integraHistory/index.ttss new file mode 100644 index 0000000..f04ef63 --- /dev/null +++ b/pages/integralmall/integraHistory/index.ttss @@ -0,0 +1,128 @@ +/* pages/czdetail/czdetail.wxss */ + +.head { + height: 232rpx; + padding-top: 20rpx; + background: #fc5b24; + position: relative; + } + + .rule { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto; + width: 124rpx; + height: 48rpx; + line-height: 48rpx; + text-align: center; + background: #fff; + font-size: 28rpx; + font-weight: 400; + color: rgba(2, 192, 255, 1); + border-bottom-left-radius: 50rpx; + border-top-left-radius: 50rpx; + } + + .head text { + display: block; + text-align: center; + color: #fff; + } + + .head text:nth-of-type(1) { + font-size: 28rpx; + font-family: PingFang-SC-Regular; + font-weight: 400; + color: rgba(255, 255, 255, 1); + } + + .head text:nth-of-type(2) { + font-size: 70rpx; + font-family: PingFang-SC-Bold; + font-weight: bold; + color: rgba(255, 255, 255, 1); + } + + .bg { + position: absolute; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 55rpx; + z-index: 100; + } + + .content { + position: relative; + padding: 0 35rpx; + height: 155rpx; + border-bottom: 1px solid #eaeaea; + } + + .content>view:nth-of-type(2n+1) text { + display: block; + } + + .content>view:nth-of-type(2n+1) text:nth-of-type(1) { + margin-top: 24rpx; + font-size: 30rpx; + } + + .content>view:nth-of-type(2n+1) text:nth-of-type(2) { + margin-top: 10rpx; + font-size: 26rpx; + font-family: PingFang-SC-Bold; + color: rgba(153, 153, 153, 1); + } + + .content>view:nth-of-type(2n+1) { + float: left; + width: 60%; + height: 150rpx; + overflow: hidden; + } + + .content>view:nth-of-type(2n) { + width: 38%; + float: right; + text-align: right; + height: 145rpx; + line-height: 145rpx; + overflow: hidden; + } + + .title { + display: block; + text-align: center; + font-size: 30rpx; + font-family: PingFang-SC-Regular; + font-weight: 400; + color: rgba(51, 51, 51, 1); + } + .fr text{ + color: #FF3535; + font-size: 30rpx; + } + .loading { + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-size: 26rpx; + color: #999; + } + + .loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; + } + .nonecontent{ + text-align: center; + font-size: 30rpx; + color: #999; + margin-top: 30rpx; + } \ No newline at end of file diff --git a/pages/integralmall/payIntegcouponStatus/index.js b/pages/integralmall/payIntegcouponStatus/index.js new file mode 100644 index 0000000..18e8615 --- /dev/null +++ b/pages/integralmall/payIntegcouponStatus/index.js @@ -0,0 +1,101 @@ +// pages/integralmall/payIntegcouponStatus/index.js +// pages/spellGroup/mySpellGroup/index.js +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px'; +var config = require("../../../config/config.js"); +const Http = require("../../../utils/HttpBasics"); +const imgurl = require("../../../utils/imgurl"); +const utils = require("../../../utils/util.js") +let app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + teljpgUrl: imgurl.teljpg.url, + goHomeUrl: "", + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.setData({ + formData:options, + goHomeUrl: app.globalData.goHomeUrl, + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + /** + * 去使用 + */ + gotoUse(){ + if(this.data.formData.type=='50'){ + tt.navigateTo({ + url: '/pages/ticket/ticket', + }) + }else{ + tt.navigateTo({ + url: '/pages/passCar/couponList/couponList', + }) + } + }, + /** + * 返回首页 + */ + gotoIndex(){ + let this_ = this + tt.navigateTo({ + url: this_.data.goHomeUrl, + }) + }, + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/integralmall/payIntegcouponStatus/index.json b/pages/integralmall/payIntegcouponStatus/index.json new file mode 100644 index 0000000..f7ac2f0 --- /dev/null +++ b/pages/integralmall/payIntegcouponStatus/index.json @@ -0,0 +1,9 @@ +{ + "navigationBarTitleText": "积分兑换结果", + "navigationBarTextStyle": "white", + "navigationBarBackgroundColor": "#F13C42", + "enablePullDownRefresh": true, + "usingComponents": { + "navbar": "../../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/integralmall/payIntegcouponStatus/index.ttml b/pages/integralmall/payIntegcouponStatus/index.ttml new file mode 100644 index 0000000..9a9b54e --- /dev/null +++ b/pages/integralmall/payIntegcouponStatus/index.ttml @@ -0,0 +1,15 @@ + + + + 兑换成功 + + + + + {{'会员积分兑换'+formData.title}} + + 已存入"我的券包"请您查看使用 + {{'剩余积分:'+formData.remainingPoints}} + + + diff --git a/pages/integralmall/payIntegcouponStatus/index.ttss b/pages/integralmall/payIntegcouponStatus/index.ttss new file mode 100644 index 0000000..45f9f95 --- /dev/null +++ b/pages/integralmall/payIntegcouponStatus/index.ttss @@ -0,0 +1,74 @@ +/* pages/integralmall/payIntegcouponStatus/index.wxss */ +page{ + background: #F4F5F9; + } + .tilte{ + text-align: center; + height:50rpx; + font-size:40rpx; + font-family:PingFang-SC-Bold; + font-weight:bold; + color:#FD782D; + line-height:50rpx; + margin: 70rpx auto; + } + .coupon{ + overflow: hidden; + width:690rpx; + padding: 20rpx 0; + margin: 0 auto; + box-shadow:0px 10rpx 27rpx 0rpx rgba(15,15,15,0.09); + border-radius:20rpx; + background: #fff; + } + .c-left{ + width: 160rpx; + padding-left: 30rpx; + height: auto; + float: left; + box-sizing: border-box; + padding-top: 18rpx; + } + .c-left image{ + width: 120rpx; + } + .c-right{ + width: 510rpx; + float: left; + line-height: 50rpx; + color: #3C3C3C; + font-size: 32rpx; + margin-top: 10rpx; + } + .detail-text{ + font-size:30rpx; + padding-left: 30rpx; + line-height: 40rpx; + margin-top: 30rpx; + color:rgba(85,85,85,1); + } + .detail-num{ + font-size:30rpx; + padding-left: 30rpx; + line-height: 40rpx; + margin-top: 10rpx; + color:#A6A6A6; + } + .button01{ + width:456rpx; + height:94rpx; + line-height: 94rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + /* border-radius:32rpx; */ + color: #fff; + margin-top: 100rpx; + } + .button02{ + width:456rpx; + height:94rpx; + line-height: 94rpx; + background:#E1E1E1; + /* border-radius:32rpx; */ + color: #fff; + margin-top: 30rpx; + } \ No newline at end of file diff --git a/pages/integralmall/payIntegcoupondetail/index.js b/pages/integralmall/payIntegcoupondetail/index.js new file mode 100644 index 0000000..441f65c --- /dev/null +++ b/pages/integralmall/payIntegcoupondetail/index.js @@ -0,0 +1,283 @@ +// pages/spellDetail/index.js +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px'; +var config = require("../../../config/config.js"); +const Http = require("../../../utils/HttpBasics"); +const imgurl = require("../../../utils/imgurl"); +const { spellStatus } = require("../../../utils/spell"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + tuanzhang: imgurl.tuanzhang.url, + spellBg: imgurl.spellBg.url, + position: imgurl.position.url, + close03: imgurl.close03.url, + home: imgurl.wmhome.url, + paramData: null, + data: null, + showErr: false, + showAlert: false, + remainingPoints:0, + submitAble:true + }, + getUserInfo: function () { + let that = this; + // 获取用户信息 + Http.get({ + url: config.api.getScore, + data: {} + }) + .then(res => { + console.log(res) + that.setData({ + remainingPoints: Number(res.data.credit) - Number(that.data.data.creditPrice), + userInfo:res.data + }) + }) + }, + cannotPay(){ + tt.showToast({ + title: "您的积分不足", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + }, + gotoIndex() { + tt.reLaunch({ + url: '/pages/index/index', + }) + }, + gotoSearch() { + tt.navigateTo({ + url: `/pages/spellGroup/spellGroup`, + }) + }, + onShow:function(){ + this.setData({ + submitAble: true + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.setData({ + paramData: options + }) + this.getDetail(options.couponChannelId); + + // 关闭来自于左上角的分享 + tt.hideShareMenu() + }, + /** + * 发起支付 + */ + gotoPay() { + var that = this; + that.setData({ + submitAble: false + }) + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }) + .then(res => { + var data = { + couponChannelId: "" + that.data.paramData.couponChannelId, + couponId: "" + that.data.paramData.couponId + } + /** + * orderSave 下单 + */ + return Http.post({ + url: config.api.orderSave, + data: data + }); + }) + .catch(err => { + console.log(err); + that.setData({ + submitAble: true + }) + if (err.code == 2011) { + tt.showToast({ + title: "商户信息没找到", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 2013) { + tt.showToast({ + title: "商户信息禁用", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3000) { + tt.showToast({ + title: "库存不足", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3001) { + tt.showToast({ + title: "您已超过限购", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3002) { + tt.showToast({ + title: "订单失败", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3003) { + tt.showToast({ + title: "订单不存在", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3004) { + tt.showToast({ + title: "订单不存在", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 4003) { + tt.showToast({ + title: "卡券已作废", + image: './../../../assets/images/fail.png', + duration: 2000, + mask: false + }); + } else if (err.code == 3012) { + tt.showModal({ + title: '提示', + content: '您有未支付订单,请先进行支付', + confirmText: "去支付", + success: function (res) { + console.log(res.confirm) + if (res.confirm) { + tt.navigateTo({ + url: '/pages/order/index/index?id=all', + }) + } + } + }) + } else if (err.code == 11005) { + /** + * 将值传到用户手机号授权的页面 + * + */ + tt.redirectTo({ + url: "/pages/getphoneInfo/index?couponChannelId=" + + that.data.paramData.couponChannelId + "&couponId=" + that.data.paramData.couponId +"&path=jifen" + }); + } else if (err.code == 11006) { + // 用户手机已加密 + tt.redirectTo({ + url: "/pages/phoneinput/phoneinput?couponChannelId=" + + that.data.paramData.couponChannelId + "&couponId=" + that.data.paramData.couponId + "&path=jifen" + }); + } else { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + }) + .then(res => { + console.log(res) + if (typeof (res) != "undefined") { + let orderId = "" + res.data.mainOrderId; + that.setData({ + orderId: orderId + }); + // console.log(that.data.type) + // 免费券 + that.payOrderUpdate(orderId, "0", 1, '',that); + // that.payOrderUpdate(that.data.orderId, '', 1, '', that); + if (that.data.cardType == 100) { + tt.setStorage({ + key: 'couponNum2', + data: "couponNum2" + }) + } else if (that.data.data.type != "5") { + tt.setStorage({ + key: 'couponNum', + data: "couponNum" + }) + } + } + }) + }, + /** + * 支付订单更新 + */ + payOrderUpdate: (orderId, payOrderId, status, reason, _this) => { + let that = this; + // 支付成功 + Http.post({ + url: config.api.payOrderUpdate, + data: { + payOrderId: payOrderId, + composeOrderId: orderId, + status: status, + reason: reason + } + }) + .then(res => { + wx.hideLoading() + wx.navigateTo({ + url: '/pages/integralmall/payIntegcouponStatus/index?title=' + _this.data.data.title + '&coverImg=' + _this.data.data.coverImg + '&remainingPoints=' + _this.data.remainingPoints + '&type=' + _this.data.data.type, + }) + }) + .catch(err => { + if (err.code != 12002) { + setTimeout(function () { + _this.payOrderUpdate(orderId, payOrderId, status, reason, _this); + }, 2000) + } + }) + }, + /** + * 获取券详情信息 + */ + getDetail(couponChannelId) { + let that = this; + Http.get({ + url: config.api.couponDetail, + data: { + couponChannelId: couponChannelId + } + }).then(res => { + tt.stopPullDownRefresh(); + that.getUserInfo() + let data = res.data; + that.setData({ + data + }); + }); + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + this.getDetail(this.data.paramData.couponChannelId); + this.setData({ + submitAble: true + }) + } +}) \ No newline at end of file diff --git a/pages/integralmall/payIntegcoupondetail/index.json b/pages/integralmall/payIntegcoupondetail/index.json new file mode 100644 index 0000000..08b564a --- /dev/null +++ b/pages/integralmall/payIntegcoupondetail/index.json @@ -0,0 +1,9 @@ +{ + "navigationBarTitleText": "积分换礼", + "navigationBarBackgroundColor": "#F13C42", + "navigationBarTextStyle": "white", + "enablePullDownRefresh": true, + "usingComponents": { + "navbar": "../../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/integralmall/payIntegcoupondetail/index.ttml b/pages/integralmall/payIntegcoupondetail/index.ttml new file mode 100644 index 0000000..fa5008a --- /dev/null +++ b/pages/integralmall/payIntegcoupondetail/index.ttml @@ -0,0 +1,42 @@ + + + + + + + + + + + + {{data.title}} + {{data.subTitle}} + {{'价值:'+data.priceStr+'元'}} + + + {{data.creditPrice}}积分 + 积分售价 + + + + + + + + 当前积分总额 + {{userInfo.credit}} + + + 兑换使用积分 + {{data.creditPrice}} + + + 剩余积分 + {{remainingPoints}} + + + + + + + diff --git a/pages/integralmall/payIntegcoupondetail/index.ttss b/pages/integralmall/payIntegcoupondetail/index.ttss new file mode 100644 index 0000000..015f732 --- /dev/null +++ b/pages/integralmall/payIntegcoupondetail/index.ttss @@ -0,0 +1,458 @@ +/* pages/spellDetail/index.wxss */ +page { + height: auto; + overflow: auto; + background: #F4F5F9; + /* background-image: url('https://s3.cn-northwest-1.amazonaws.com.cn/iformall-net/cimg/spelldetail-bg.png'); */ + background-size: cover; + background-repeat: no-repeat; + } + .container{ + margin-bottom:40rpx; + } + .status{ + width: 690rpx; + padding:0 28rpx; + margin: 0 auto; + box-sizing: border-box; + background:rgba(255,255,255,1); + border-radius:15rpx; + } + .edit{ + position: fixed; + width: 750rpx; + height: 185rpx; + bottom: 60rpx; + left: 0; + } + .status-top{ + width: 100%; + height: 75rpx; + box-sizing: border-box; + border-bottom: 1rpx solid #F9F9F9; + /* overflow: hidden; */ + } + .p-status{ + float: left; + width: 260rpx; + font-size:32rpx; + font-family:PingFang-SC-Bold; + font-weight:bold; + color:rgba(243,69,58,1); + line-height: 75rpx; + } + .p-time{ + float: right; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(243,69,58,1); + width: 38rpx; + height: 30rpx; + margin-top: 22rpx; + background:rgba(252,220,221,1); + border-radius:10rpx; + line-height: 30rpx; + text-align: center; + margin: 22rpx 6rpx; + } + .p-mao{ + float: right; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(243,69,58,1); + line-height: 75rpx; + } + .p-text{ + float: right; + font-size:26rpx; + font-family:PingFang-SC-Regular; + font-weight:400; + color:rgba(51,51,51,1); + line-height:75rpx; + } + .status-center{ + width: 100%; + overflow: hidden; + padding: 20rpx 0; + text-align: center; + border-bottom: 1rpx solid #F9F9F9; + } + .tuanzhang{ + float: left; + width: 120rpx; + height: 120rpx; + position: relative; + box-sizing:border-box; + } + .touxiangitems{ + padding: 20rpx; + margin: 0; + overflow: hidden; + } + .touxiang{ + width: 80rpx; + height: 80rpx; + border-radius: 40rpx; + overflow: hidden; + } + .no-touxiang{ + width: 80rpx; + height: 80rpx; + overflow: hidden; + background:rgba(252,220,221,1); + border:1rpx solid rgba(243,69,58,1); + border-radius:50%; + box-sizing: border-box; + line-height: 78rpx; + text-align: center; + font-size:32rpx; + font-family:PingFang-SC-Regular; + font-weight:400; + color:rgba(243,69,58,1); + margin: 0; + padding: 0; + } + .touxiang image{ + width: 80rpx; + height: 80rpx; + } + .tuan-icon{ + position: absolute; + bottom:20rpx; + left:28rpx; + width: 64rpx; + height: 27rpx; + } + .tuan-icon image{ + display: block; + width: 64rpx; + height: 27rpx; + } + .status-bottom{ + width: 100%; + height: auto; + overflow: hidden; + } + .position-icon{ + width: 38rpx; + float: left; + } + .position-icon image{ + width: 27rpx; + height: 37rpx; + margin-top: 17rpx; + } + .position{ + font-size:28rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(51,51,51,1); + line-height: 72rpx; + } + .detail{ + position: relative; + width: 690rpx; + padding:0 28rpx; + margin: 30rpx auto 0; + box-sizing: border-box; + background:rgba(255,255,255,1); + border-radius:15rpx; + } + /* .return-index{ + position: absolute; + right: 30rpx; + top: 30rpx; + width: 50rpx; + height: 50rpx; + } + .return-index image{ + display: block; + width: 50rpx; + height: 50rpx; + } */ + .return-index{ + position: fixed; + right: 50rpx; + top: 60rpx; + width:100rpx!important; + height:100rpx; + z-index: 100; + background:rgba(255,255,255,1); + line-height: 95rpx; + border:1rpx solid rgba(227,227,227,1); + border-radius:50%; +} +.return-index image{ + position: absolute; + width: 60rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} + .detail-top{ + width: 100%; + height: auto; + overflow: hidden; + padding-bottom: 12rpx; + } + .detail-top01{ + float: left; + width: 180rpx; + } + .detail-top01 image{ + width: 180rpx; + height: 180rpx; + margin-top: 33rpx; + } + .detail-top02{ + width: 208rpx; + float: left; + margin-left: 16rpx; + } + .title{ + font-size:30rpx; + font-family:PingFang-SC-Bold; + font-weight:bold; + color:rgba(51,51,51,1); + line-height:44rpx; + margin-top: 30rpx; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + } + .des{ + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(134,134,134,1); + line-height:40rpx; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + } + .detail-top03{ + float: left; + padding-top: 180rpx; + width: 230rpx; + } + .detail-p-name{ + float: right; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:#FD782D; + line-height:44rpx; + } + .detail-p-price{ + float: right; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:#FD782D; + line-height:44rpx; + } + .detail-bottom{ + border-top: 1rpx solid #F9F9F9; + width: 100%; + overflow: hidden; + height: 86rpx; + } + .b-unit{ + float: right; + font-size:24rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(237,63,46,1); + margin-top: 36rpx; + } + .b-price{ + float: right; + font-size:40rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(237,63,46,1); + margin-top: 18rpx; + } + .b-name{ + float: right; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(51,51,51,1); + margin-right: 6rpx; + margin-top: 34rpx; + } + .order{ + width: 690rpx; + padding:10rpx 28rpx; + margin: 30rpx auto 0; + box-sizing: border-box; + background:rgba(255,255,255,1); + border-radius:15rpx; + } + .order-list{ + height: 55rpx; + } + .order-title{ + line-height: 55rpx; + float: left; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(51,51,51,1); + } + .order-text{ + float: right; + text-align: right; + line-height: 55rpx; + font-size:26rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:#FD782D; + } + .user-motto { + border: 0; + width:650rpx; + height:85rpx; + background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); + border-radius:43rpx; + font-size:36rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(254,254,254,1); + line-height: 85rpx; + margin-top: 100rpx; + } + .user-enough{ + border: 0; + width:650rpx; + height:85rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius:43rpx; + font-size:36rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(254,254,254,1); + line-height: 85rpx; + margin-top: 100rpx; + } + .user-motto::after { + border: none; + } + .button button:nth-of-type(1){ + width:520rpx; + height:95rpx; + margin: 30rpx auto 38rpx; + background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); + border-radius:47rpx; + color: #fff; + } + .button button:nth-of-type(2){ + width:520rpx; + height:95rpx; + background:rgba(255,255,255,1); + border:1rpx solid rgba(190,190,190,1); + border-radius:47rpx; + color:#333333; + margin-bottom: 50rpx; + } + .alert-bg{ + width: 100%; + height: 100vh; + position: fixed; + opacity: 0.7; + background: #000; + top: 0; + left: 0; + z-index: 200; + } + .alert-box{ + width: 600rpx; + height: 332rpx; + position: fixed; + z-index: 300; + background: #fff; + top: 50vh; + margin-top: -162rpx; + left: 85rpx; + border-radius:15rpx; + } + .alert-close{ + position: absolute; + width: 47rpx; + height: 98rpx; + top: -98rpx; + right: 0; + } + .alert-close image{ + width: 47rpx; + height: 98rpx; + } + .alert-title{ + text-align: center; + font-size:30rpx; + line-height: 30rpx; + margin-top: 79rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(51,51,51,1); + } + .alert-button .share{ + width:500rpx; + height:95rpx; + background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); + border-radius:47rpx; + margin-top: 79rpx; + } + .al-bg{ + position: fixed; + width: 100%; + height: 100vh; + top: 0; + left: 0; + background:rgba(0,0,0,1); + opacity:0.65; + z-index: 200; +} +.al-content{ + background: #fff; + position: fixed; + width: 545rpx; + z-index: 300; + top: 200rpx; + left: 102rpx; + border-radius: 15rpx; +} +.al-top{ + width: 100%; +} +.al-top image{ + position: relative; + height: 298rpx; + margin-top: -96rpx; + width: 545rpx; +} +.al-center{ + padding: 80rpx 30rpx; + font-size:30rpx; + font-family:PingFang-SC-Regular; + font-weight:400; + color:rgba(51,51,51,1); +} +.al-bottom{ + width:462rpx; + height:95rpx; + background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); + border-radius:47rpx; + font-size:30rpx; + font-family:PingFang-SC-Medium; + font-weight:500; + color:rgba(255,255,255,1); + text-align: center; + line-height: 95rpx; + margin: 0 auto 43rpx; +} \ No newline at end of file diff --git a/pages/main/coupons/index.js b/pages/main/coupons/index.js new file mode 100644 index 0000000..7a9498a --- /dev/null +++ b/pages/main/coupons/index.js @@ -0,0 +1,225 @@ +// pages/index/sw/index.js +let config = require("../../../config/config.js"); +let Http = require("../../../utils/HttpBasics"); +let app = getApp(); +const imgurl = require("../../../utils/imgurl"); +// 请求数据 +Component({ + /** + * 组件的属性列表 + */ + properties: { + loading: { + type: Boolean, + value: '' + }, + loadingtext: { + type: String, + value: '' + }, + }, + + /** + * 组件的初始数据 + */ + data: { + actUrl: imgurl.act.url, + loadingUrl: imgurl.loading.url, + tabs: [], + list: [], + flag: "", + loading: true, //"上拉加载"的变量,默认false,隐藏 + content: "", + return_list: [], + current: 0, + current_scroll: 0, + pageNum: 1, // 设置加载的第几次,默认是第一次 + pageSize: 10, //返回数据的个数 + searchLoadingComplete: false, //“没有数据”的变量,默认false,隐藏 + allow_load: true, // 是否允许继续加载标识 默认 true 允许,false 加载完成 + }, + /** + * 组件的方法列表 + */ + methods: { + handleChange({ + detail + }) { + this.setData({ + current: detail.key + }); + }, + + handleChangeScroll({ + detail + }) { + let that = this; + // 切换tab时重新初始化下list 和 allow_load + that.setData({ + current_scroll: detail.key, + flag: "click", + list: [], + allow_load: true + }); + this.getList(detail.key, 1); + var val = detail.key; + //通过这个传递数据 + var myEventDetail = { + val: val, + pageNum: 1 + }; + // detail对象,提供给事件监听函数 + this.triggerEvent("myevent", myEventDetail); + }, + + getList(key, pageNum, from) { + var that = this; + console.log("pageNum------>"+pageNum); + /** + * from==refresh + * 表示是从下拉刷新进来的 + */ + app.couponListCallback = token => { + Http.setToken(token); + // 券list获取 + if (from == 'refresh') { + that.setData({ + allow_load: true, + list: [], + }) + console.log(that.data.list); + } + if (that.data.allow_load) { + that.setData({ + loading: true, + content: '小主,我在玩命加载中...' + }) + // 根据 key == 0 区分全部或其它tab,决定是否传参数 business + if (key == 0) { + var param = { + pageNum: pageNum, + pageSize: 6, + targetAd: 1 + }; + } else { + var param = { + pageNum: pageNum, + pageSize: 6, + business: key, + targetAd: 1 + }; + } + // 请求接口 + Http.get({ + url: config.api.couponChannelList, + data: param + }).then(res => { + /** + * 加载完成 + */ + if (pageNum >= res.data.pages) { + if (res.data.pages == 0 || res.data.pages == 1) { + that.setData({ + allow_load: true, + loading: false, + content: "" + }); + } + else { + that.setData({ + allow_load: false, + loading: true, + content: "——— 再拉裤子就掉了啦 ———", + }); + } + } + if (pageNum == 1) { + that.setData({ + list: [], + }) + } + + var tmpArr = that.data.list; + tmpArr.push.apply(tmpArr, res.data.list); + that.setData({ + list: tmpArr + }) + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400); + } + else { + that.setData({ + loading: true, + content: "——— 再拉裤子就掉了啦 ———" + }) + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400) + } + }; + + if (app.globalData.token && app.globalData.token != null) { + app.couponListCallback(app.globalData.token); + } + } + }, + ready() { + let that = this; + app.businessListCallback = token => { + Http.setToken(token); + // business获取 + Http.get({ + url: config.api.businessList, + data:{ + filter:2 + } + }).then(res => { + that.setData({ + tabs: [{ id: 0, title: "全部", type: 1 }].concat(res.data) + }); + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }; + if (app.globalData.token && app.globalData.token != null) { + app.businessListCallback(app.globalData.token); + } + that.setData({ + list: [] + }) + that.getList(0, 1); + } +}); +function compare(pro) { + return function (obj2, obj1) { + var val1 = obj1[pro]; + var val2 = obj2[pro]; + if (val1 < val2) { + return 1; + } else if (val1 > val2) { + return -1; + } else { + return 0; + } + } +} \ No newline at end of file diff --git a/pages/main/coupons/index.json b/pages/main/coupons/index.json new file mode 100644 index 0000000..e698a78 --- /dev/null +++ b/pages/main/coupons/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "c-coupons": "../../../components/coupons/index", + "i-sticky": "../../../dist//sticky/index", + "i-sticky-item": "../../../dist/sticky-item/index", + "i-tabs": "../../../dist/tabs/index", + "i-tab": "../../../dist/tab/index" + } +} \ No newline at end of file diff --git a/pages/main/coupons/index.ttml b/pages/main/coupons/index.ttml new file mode 100644 index 0000000..bbba761 --- /dev/null +++ b/pages/main/coupons/index.ttml @@ -0,0 +1,15 @@ + + + + + + + + + + 请您敬请期待 + 我们正在筹备一大波优惠活动 + + {{content}} + {{loadingtext}} + \ No newline at end of file diff --git a/pages/main/coupons/index.ttss b/pages/main/coupons/index.ttss new file mode 100644 index 0000000..30ba0ab --- /dev/null +++ b/pages/main/coupons/index.ttss @@ -0,0 +1,65 @@ +@import "../../../app.ttss"; +.index-coupons { + padding: 0 20rpx; + /* margin-top: 40rpx; */ + /* background:linear-gradient(0deg,rgba(235,235,235,1) 0%,rgba(255,255,255,0.8) 100%); */ +} + i-tabs i-tabs-scroll { + background: #F4F5F9!important; + } +.loading { + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-size: 26rpx; + color: #999; +} +.coupons c-coupons{ + height: 354rpx; + margin-bottom: 34rpx; +} +.coupons c-coupons:nth-of-type(2n+1){ + float: left; +} +.coupons c-coupons:nth-of-type(2n){ + float: right; +} +.loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; +} + +/* .dingdan { + margin-top: 33rpx; +} */ + +.dingdan text:nth-of-type(1) { + display: block; + font-size: 34rpx; + color: #333; + letter-spacing: 0; + text-align: center; +} + +.dingdan text:nth-of-type(2) { + display: block; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: center; +} + +.dingdan image { + display: block; + width: 300rpx; + height: 300rpx; + margin: 0 auto 16rpx; +} +.loadingtext{ + text-align: center; + color: #888; + font-size: 30rpx; + margin-top:30rpx; +} diff --git a/pages/main/index.js b/pages/main/index.js new file mode 100644 index 0000000..93a9b95 --- /dev/null +++ b/pages/main/index.js @@ -0,0 +1,569 @@ + +const Http = require("../../utils/HttpBasics"); +const imgurl = require("../../utils/imgurl"); +const config = require("../../config/config"); +let app = getApp(); +Page({ + /** + * 页面的初始数据 + */ + data: {}, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + let that = this; + console.log(options, "跳转地址栏"); + tt.showToast({ + title: '加载中', + icon: "loading", + duration: 1000 + }) + /** + * 根据接收到的参数的值,判断跳转到哪个页面 + */ + if (options && options.type) { + app.globalData.type = options.type; + } + if (decodeURIComponent(options.scene) == "undefined") { + that.setData({ + scene: 0 + }) + app.globalData.scene = 0; + } else { + that.setData({ + scene: decodeURIComponent(options.scene) + }); + app.globalData.scene = decodeURIComponent(options.scene) + that.setData({ + newArr: this.data.scene.split(':') + }) + + //// 大屏-二维码-start + if (this.data.newArr[0] == 'JC') { + // 跳转券详情 + options.couponChannelId = this.data.newArr[1]; + } else if (this.data.newArr[0] == 'JG') { + // 跳转拼团详情 + options.couponChannelId = this.data.newArr[1]; + options.path = 'daping' + } else if (this.data.newArr[0] == 't') { + // 普通二维码 + options.type = this.data.newArr[1]; + app.globalData.type = options.type; + if (options.type == 'cd') { + options.couponChannelId = this.data.newArr[2]; + } else if (options.type == 'bd') { + options.bt = this.data.newArr[2]; + options.id = this.data.newArr[3]; + } else if (options.type == 'gm') { + options.id = this.data.newArr[2]; + } else if (options.type == 'sd') { + options.couponChannelId = this.data.newArr[2]; + } else if (options.type == 'td') { + // 专题活动页 + options.id = this.data.newArr[2]; + } else if (options.type == 'md') { + // 门店详情 + options.id = this.data.newArr[2]; + } else if (options.type == 'ra') { + //活动详情 + options.id = this.data.newArr[2]; + } else if (options.type == 'si') { + //活动签到 + options.id = this.data.newArr[2]; + } else if (options.type == 'wj') { + options.id = this.data.newArr[2]; + } + } + } + + tt.setStorageSync('options', JSON.stringify(options)) + tt.setStorageSync('imgurl', imgurl); + + if (app.globalData.token) { + // this.updateUserInfo(); + if (options.couponChannelId || options.orderId || options.id) { + that.userStatus(options); + } else { + that.userStatus(); + } + } else { + // 由于 token 是网络请求,可能会在 Page.onLoad 之后才返回 + // 所以此处加入 callback 以防止这种情况 + app.tokenCallback = token => { + // this.updateUserInfo(); + if (options.couponChannelId || options.orderId || options.id) { + that.userStatus(options); + } else { + that.userStatus(); + } + } + } + }, + + /** + * 检查用户的状态 + */ + userStatus: function(options) { + var that = this; + if (options && (options.couponChannelId || options.orderId || options.id)) { + that.checkuserstatus(options); + } else { + that.checkuserstatus(); + } + }, + /** + * 获取手机信息 + */ + // updateUserInfo() { + // tt.getSystemInfo({ + // success: function(res) { + // Http.post({ + // url: config.api.updateUserInfo, + // data: { + // systemInfo: JSON.stringify(res) + // } + // }).then(res => { + // console.log(res) + // }) + // } + // }) + // }, + + checkuserstatus(options) { + let that = this; + + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }) + .then(res => { + // res = JSON.parse('{"code":11004,"message":"用户昵称未授权,请跳转到用户昵称授权页!","data":{}}') + //参与拼团 + if(options && options.orderId && app.globalData.type == 'dt'){ + //订单详情 + tt.redirectTo({ + url: `/pages/order/detail/index?orderId=${options.orderId}` + }) + }else if (options && options.orderGroupId) { + tt.redirectTo({ + url: `/pages/joinFrDpell/index?couponId=${options.couponId}&orderGroupId=${options.orderGroupId}&couponChannelId=${options.couponChannelId}&orderId=${options.orderId}&avatarUrl=${options.avatarUrl}&nickName=${options.nickName}` + }) + } + //来自大屏的跳转拼团券详情 + else if (options && options.couponChannelId && options.path == 'daping') { + /** + * 主要是为了拿couponId + */ + Http.get({ + url: config.api.couponDetail, + data: { + couponChannelId: options.couponChannelId + } + }).then(res => { + let data = res.data; + tt.redirectTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${options.couponChannelId}&couponId=${data.couponId}` + }) + }) + } else if (options && options.couponChannelId && !options.spellGroup && app.globalData.type != 'sd') { + // 转赠判断 + if (options.cuserId) { + tt.redirectTo({ + url: `/pages/coupon/detail/index?couponChannelId=${options.couponChannelId}&cuserId=${options.cuserId}&coverImg=${options.coverImg}&userName=${options.userName}&avatarUrl=${options.avatarUrl}&couponOrderId=${options.couponOrderId}&updateDate=${options.updateDate}`, + }) + } else { + // 跳转普通券/消费卡/限时秒杀/砍价详情 + tt.redirectTo({ + url: `/pages/coupon/detail/index?couponChannelId=${options.couponChannelId}`, + }) + } + } + // 拼团详情页(只有通过扫码进入才可能进入拼团详情页面,只有这一个入口) + else if ((options && options.couponChannelId && app.globalData.type == 'sd') || (options && options.couponChannelId && options.spellGroup)) { + tt.redirectTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${options.couponChannelId}`, + }) + } + // 游戏页面 + else if (options && options.id && app.globalData.type == 'gm') { + that.getGameOne(app.globalData.token, options.id) + } + // 报名活动页面 + else if (options && options.id && app.globalData.type == 'ra') { + tt.redirectTo({ + url: `/pages/radetail/index?id=${options.id}`, + }) + } + //活动签到 + else if (options && options.id && app.globalData.type == 'si') { + tt.redirectTo({ + url: `/pages/acSignIn/index?id=${options.id}`, + }) + } + //问卷答题 + else if (options && options.id && app.globalData.type == 'wj') { + tt.redirectTo({ + url: `/pages/questionnaire/questionnaire?id=${options.id}`, + }) + } + // 宣传页详情 + else if (options && options.bt && options.id && app.globalData.type == 'bd') { + if (options.bt == '2') { + // 自由图文 + tt.redirectTo({ + url: `/pages/freeBannerDetail/index?id=${options.id}`, + }) + } else { + // 标准格式 + tt.redirectTo({ + url: `/pages/bannerdetail/index?id=${options.id}`, + }) + } + } + // 专题 + else if (options && options.id && app.globalData.type == 'td') { + tt.redirectTo({ + url: `/pages/topicDetail/index?id=${options.id}` + }); + } + // 门店详情 + else if (options && options.id && app.globalData.type == 'md') { + tt.redirectTo({ + url: `/pages/index/searchbar/detail/index?id=${options.id}` + }); + } + // 参与砍价 + else if (options && options.orderId) { + tt.redirectTo({ + url: `/pages/bargain/bargainDatail/bargainDatail?orderId=${options.orderId}&from=${"discount"}`, + }) + } + // 我的 + else if (app.globalData.type == 'uc') { + tt.navigateTo({ + url: '/index/user' + }); + } + // 积分 + else if (app.globalData.type == 'jf') { + tt.redirectTo({ + url: '/pages/integralmall/index' + }); + } + // 首页 + else if (app.globalData.type == 'in') { + tt.reLaunch({ + url: '/index/index' + }); + } + // 停车 + else if (app.globalData.type == 'pc') { + // 停车 + tt.navigateTo({ + url: '/index/passCar' + }); + } + // 我的券包 + else if (app.globalData.type == 'mc') { + // 我的券包 + tt.redirectTo({ + url: '/pages/couponorder/index/index' + }); + } + // 我的订单 + else if (app.globalData.type == 'mo') { + // 我的订单 + tt.redirectTo({ + url: '/pages/order/index/index?id=all' + }); + } + // 我的卡包 + else if (app.globalData.type == 'ca') { + // 我的卡包 + tt.redirectTo({ + url: '/pages/cardorder/index/index' + }); + } + // 特享礼遇 + else if (app.globalData.type == 'sc') { + // 特享礼遇 + tt.redirectTo({ + url: '/pages/specialcourtesy/specialcourtesy' + }); + } + // 限时秒杀 + else if (app.globalData.type == 'rb') { + // 限时秒杀 + tt.redirectTo({ + url: '/pages/rushToBuy/index' + }) + } + // 砍价专场 + else if (app.globalData.type == 'bl') { + // 砍价专场 + tt.redirectTo({ + url: '/pages/bargain/bargain' + }) + } + // 我的砍价 + else if (app.globalData.type == 'mb') { + // 我的砍价 + tt.redirectTo({ + url: '/pages/bargain/bargain?from=myhtml' + }) + } + // 拼团专场 + else if (app.globalData.type == 'sl') { + // 拼团专场 + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup' + }) + } + // 我的拼团 + else if (app.globalData.type == 'ms') { + // 我的拼团 + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup?from=myhtml' + }) + } + // 消费卡 + else if (app.globalData.type == 'dc') { + // 消费卡 + tt.redirectTo({ + url: '/pages/discountCardList/discountCardList' + }) + } + // 门店 + else if (app.globalData.type == 'ml') { + tt.navigateTo({ + url: '/index/searchbar' + }) + } + // 兑换 + else if (app.globalData.type == 'ec') { + tt.redirectTo({ + url: '/pages/exchange/exchange' + }) + } + // 通过分享进入的门店详情 + else if (options && options.id && options.frommd == 'md') { + tt.redirectTo({ + url: `/pages/index/searchbar/detail/index?id=${options.id}` + }); + } else { + // 主页 + tt.reLaunch({ + url: '/index/index' + }) + } + }) + .catch(err => { + console.log(err) + if (err.code == 11004) { + // 用户昵称未授权 + if (options && options.orderGroupId) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponId=${options.couponId}&orderGroupId=${options.orderGroupId}&couponChannelId=${options.couponChannelId}&orderId=${options.orderId}&avatarUrl=${options.avatarUrl}&nickName=${options.nickName}` + }) + } + /** + * spellGroup + * 区分是通过拼团详情分享过来的还是从普通券分享过来的 + * 注意:拼团券和普通券是两个页面 + */ + if (options && options.couponChannelId && !options.cuserId && !options.spellGroup) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${options.couponChannelId}` + }) + } else if (options && options.couponChannelId && !options.cuserId && options.spellGroup) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${options.couponChannelId}&spellGroup=${options.spellGroup}` + }) + } else if (options && options.couponChannelId && options.cuserId) { + /** + * 转赠判断 + */ + tt.redirectTo({ + url: `/pages/getuserinfo/index?couponChannelId=${options.couponChannelId}&cuserId=${options.cuserId}&coverImg=${options.coverImg}&userName=${options.userName}&avatarUrl=${options.avatarUrl}&couponOrderId=${options.couponOrderId}&updateDate=${options.updateDate}` + }) + } else if (options && options.orderId) { + tt.redirectTo({ + url: `/pages/getuserinfo/index?orderId=${options.orderId}&from='${"discount"}` + }) + } + // 通过分享进入的门店详情 + else if (options && options.id && options.frommd == 'md') { + tt.redirectTo({ + url: `/pages/getuserinfo/index?id=${options.id}&frommd=md` + }); + } // 门店详情 + else if (options && options.id && app.globalData.type == 'md') { + tt.redirectTo({ + url: `/pages/index/searchbar/detail/index?id=${options.id}` + }); + } + // 答题问卷 + else if (options && options.id && app.globalData.type == 'wj') { + tt.redirectTo({ + url: `/pages/questionnaire/questionnaire?id=${options.id}`, + }) + } + // 报名活动页面 + else if (options && options.id && app.globalData.type == 'ra') { + tt.redirectTo({ + url: `/pages/radetail/index?id=${options.id}`, + }) + } else if (app.globalData.type == 'uc') { + tt.navigateTo({ + url: '/index/user' + }); + } + // 积分 + else if (app.globalData.type == 'jf') { + tt.redirectTo({ + url: '/pages/integralmall/index' + }); + } + // 专题 + else if (options && options.id && app.globalData.type == 'td') { + tt.redirectTo({ + url: `/pages/topicDetail/index?id=${options.id}` + }); + } + // 首页 + else if (app.globalData.type == 'in') { + tt.reLaunch({ + url: '/index/index' + }); + } + // 停车 + else if (app.globalData.type == 'pc') { + // 停车 + tt.navigateTo({ + url: '/index/passCar' + }); + } + // 我的券包 + else if (app.globalData.type == 'mc') { + // 我的券包 + tt.redirectTo({ + url: '/pages/couponorder/index/index' + }); + } + // 我的订单 + else if (app.globalData.type == 'mo') { + // 我的订单 + tt.redirectTo({ + url: '/pages/order/index/index?id=all' + }); + } + // 我的卡包 + else if (app.globalData.type == 'ca') { + // 我的卡包 + tt.redirectTo({ + url: '/pages/cardorder/index/index' + }); + } + // 特享礼遇 + else if (app.globalData.type == 'sc') { + // 特享礼遇 + tt.redirectTo({ + url: '/pages/specialcourtesy/specialcourtesy' + }); + } + // 限时秒杀 + else if (app.globalData.type == 'rb') { + // 限时秒杀 + tt.redirectTo({ + url: '/pages/rushToBuy/index' + }) + } + // 砍价专场 + else if (app.globalData.type == 'bl') { + // 砍价专场 + tt.redirectTo({ + url: '/pages/bargain/bargain' + }) + } + // 我的砍价 + else if (app.globalData.type == 'mb') { + // 我的砍价 + tt.redirectTo({ + url: '/pages/bargain/bargain?from=myhtml' + }) + } + // 拼团专场 + else if (app.globalData.type == 'sl') { + // 拼团专场 + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup' + }) + } + // 我的拼团 + else if (app.globalData.type == 'ms') { + tt.redirectTo({ + url: '/pages/spellGroup/spellGroup?from=myhtml' + }) + } + // 消费卡 + else if (app.globalData.type == 'dc') { + // 消费卡 + tt.redirectTo({ + url: '/pages/discountCardList/discountCardList' + }) + } + // 兑换 + else if (app.globalData.type == 'ec') { + tt.redirectTo({ + url: '/pages/exchange/exchange' + }) + } + // 门店 + else if (app.globalData.type == 'ml') { + tt.navigateTo({ + url: '/index/searchbar' + }) + } else { + tt.reLaunch({ + url: '/index/index', + }) + } + } + }) + }, + + getGameOne: function(token, id) { + let _this = this; + Http.get({ + url: config.api.getOneGame, + data: { + token: token, + id: id + } + }).then(res => { + tt.redirectTo({ + url: '/pages/game/index?url=' + res.data.url + "&id=" + res.data.id + "&gameId=" + res.data.gameId, + }) + }) + .catch(err => { + tt.showModal({ + title: '提示', + content: err.message, + showCancel: false, + success: function(res) { + // 如果游戏下架或者找不到,重启首页 + if (res.confirm) { + tt.reLaunch({ + url: '/pages/index/index', + }) + } + } + }) + this.alphaClick(); + }) + }, +}) \ No newline at end of file diff --git a/pages/main/index.json b/pages/main/index.json new file mode 100644 index 0000000..9440201 --- /dev/null +++ b/pages/main/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "首页", + "navigationBarBackgroundColor": "#fff" + } \ No newline at end of file diff --git a/pages/main/index.ttml b/pages/main/index.ttml new file mode 100644 index 0000000..e69de29 diff --git a/pages/main/index.ttss b/pages/main/index.ttss new file mode 100644 index 0000000..da48ae3 --- /dev/null +++ b/pages/main/index.ttss @@ -0,0 +1,7 @@ +Page{ + height: 100%; + width: 100%; + background:#fff; + opacity: 0; + } + \ No newline at end of file diff --git a/pages/mainOrder/mainOrder.js b/pages/mainOrder/mainOrder.js new file mode 100644 index 0000000..7fc6076 --- /dev/null +++ b/pages/mainOrder/mainOrder.js @@ -0,0 +1,125 @@ +const app = getApp() +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const Http = require("../../utils/HttpBasics"); +let config = require("../../config/config.js"); +const util = require("../../utils/util") +Page({ + data: { + navigationBarHeight, + boatLsit:[ + { + name:"全部", + value:"all" + }, + { + name:"待付款", + value:"0" + }, + { + name:"已完成", + value:"1" + }, + ], + boatFlag:"all", + content:"", + loading: false, //"上拉加载"的变量,默认false,隐藏 + pageNum:1, + allow_load: true, + list:[] + }, + setBoatFlag(e){ + let index = e.currentTarget.dataset.index + console.log(index); + this.setData({ + boatFlag:index, + pageNum:1, + allow_load: true, + }) + this.getList() + }, + getList(){ + let that = this + if (that.data.allow_load) { + that.setData({ + loading: true, + content: '小主,我在玩命加载中...' + }) + + Http.get({ + url:config.api.orderList, + data:{ + pageNum:that.data.pageNum, + pageSize: 10, + orderStatus:that.data.boatFlag=="all"?"":that.data.boatFlag, + paymentType: 0, + + } + }).then(res=>{ + if(that.data.pageNum==1){ + that.setData({ + list: [] + }) + } + + let tempArr= that.data.list + tempArr.map(item=>{ + item.createDate = util.formatTime(item.createDate, "yyyy-MM-dd hh:mm:ss"); + }) + if(that.data.pageNum>=res.data.pages){ + that.setData({ + allow_load: false + }) + } + + if(that.data.pageNum>1){//分页 + that.setData({ + list:[...tempArr ,...res.data.list], + loading:false + }) + }else{ + let tempLsit = res.data.list + tempLsit.map(item=>{ + item.createDate = util.formatTime(item.createDate, "yyyy-MM-dd hh:mm:ss"); + }) + + that.setData({ + list: tempLsit, + loading:false + }) + } + }).catch(err => { + that.setData({ + loading:false + }) + tt.showToast({ + title: err.message ? err.message : err.data, // 内容 + icon: "none" + }); + }) + }else { + that.setData({ + loading: true, + content: "——— 再拉裤子就掉了啦 ———" + }) + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400) + } + + }, + onLoad: function (options) { + // this.getList() + }, + onReachBottom(){//触底 + console.log(111); + this.setData({ + pageNum:this.data.pageNum+1 + }) + this.getList() + }, + onShow:function(){ + this.getList() + } +}) \ No newline at end of file diff --git a/pages/mainOrder/mainOrder.json b/pages/mainOrder/mainOrder.json new file mode 100644 index 0000000..106ce81 --- /dev/null +++ b/pages/mainOrder/mainOrder.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "我的订单", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/mainOrder/mainOrder.ttml b/pages/mainOrder/mainOrder.ttml new file mode 100644 index 0000000..699f657 --- /dev/null +++ b/pages/mainOrder/mainOrder.ttml @@ -0,0 +1,64 @@ + + + + + + + {{item.name}} + + + + + + + + + {{item.title}} + + 等待付款 + + 待退款 + 交易关闭 + + + + + + + + 已退款 + 退款失败 + + 免费领取 + + 付款成功 + + + + + + + + {{item.subTitle}} + {{item.price/100}}元 + {{item.createDate}} + + + + + 实付金额: + {{item.payment/100}}元 + 去查看 + 去支付 + + + + + + 您还没有相关订单 + 再忙,也要记得买点什么犒赏自己~ + + + {{content}} + + \ No newline at end of file diff --git a/pages/mainOrder/mainOrder.ttss b/pages/mainOrder/mainOrder.ttss new file mode 100644 index 0000000..07c6442 --- /dev/null +++ b/pages/mainOrder/mainOrder.ttss @@ -0,0 +1,221 @@ +.boatBox{ + width: 100% !important; + height: 96rpx; + display: flex; + justify-content: space-around; + background-color: #fff; +} +.boatBoxf{ + width: 100% !important; + position: fixed; + top: 0; + left: 0; +} +.boatTitle{ + font-size: 30rpx; + text-align: center; + height: 80rpx; + line-height: 80rpx; + color: #999; +} +.boatTitleA{ + font-size: 32rpx; + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-weight: 500; + +} +.boatA{ + width: 80rpx; + height: 6rpx; + background-color: #fb3e5c; + margin: 0 auto; + border-radius: 10rpx; +} +.orderListBox{ + width: 100%; + margin-top: 20rpx; + background-color: #fff; +} +.titleBox{ + overflow: hidden; + font-size: 30rpx; +} +.orderName{ + float: left; + margin: 20rpx; +} +.payStatus{ + float: right; + margin: 20rpx; +} +.stayPay{ + float: right; + color: #FD832D; + margin: 20rpx; +} +.orderDetail{ + overflow: hidden; +} +.orderImgBox{ + float: left; + width: 140rpx; + height: 140rpx; + background-color: #fb3e5c; + border-radius: 12rpx; + margin-left: 20rpx; +} +.orderDataBox{ + float: left; + width: 520rpx; + margin-left: 20rpx; + font-size: 28rpx; +} +.fTitle{ + height: 46rpx; + height: 46rpx; +} +.face{ + height: 46rpx; + height: 46rpx; +} +.face::before{ + content: "面额:"; + font-size: 26rpx; + color: #999; +; +} +.creationDate{ + height: 46rpx; + height: 46rpx; +} +.creationDate::before{ + content: "下单时间:"; + font-size: 26rpx; + color: #999; +} +.practicalPayBox{ + /* height: 60rpx; */ + overflow: hidden; + line-height: 70rpx; + + font-size: 28rpx; + border-top: #e6e6e6 1rpx solid; + margin-top: 10rpx; +} + +.practicalText{ + font-size: 26rpx; + float: left; + margin-left: 20rpx; +} +.practicalPay{ + color: #fb3e5c; + float: left; + font-size: 28rpx; +} +.orderLook{ + float: right; + margin-right: 20rpx; + height: 50rpx; + color: #fff; + line-height: 50rpx; + border-radius: 40rpx; + background: linear-gradient(130deg,rgba(50,177,252,1) 0%,rgba(47,108,255,1) 100%); + margin-top: 10rpx; + margin-bottom: 10rpx; + padding: 0 20rpx; +} +.goPay{ + float: right; + margin-right: 20rpx; + height: 50rpx; + color: #fff; + line-height: 50rpx; + border-radius: 40rpx; + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + margin-bottom: 10rpx; + margin-top: 10rpx; + padding: 0 20rpx; +} +.loading { + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-size: 26rpx; + color: #999; + } + + .loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; + } + + .dingdan { + margin-top: 33rpx; + } + + .dingdan text:nth-of-type(1) { + display: block; + font-size: 34rpx; + color: #333; + letter-spacing: 0; + text-align: center; + } + + .dingdan text:nth-of-type(2) { + display: block; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: center; + } + + .dingdan image { + display: block; + width: 300rpx; + height: 300rpx; + margin: 0 auto 16rpx; + } + .wait{ + display: inline-block; + width: 123rpx !important; + overflow: visible!important; + font-size: 28rpx; + color: #FD832D; + letter-spacing: 0; + text-align: right; + line-height: 28rpx!important; + float: right; + margin: 20rpx; + } + + .sucess { + display: inline-block; + width: 123rpx !important; + /* overflow: hidden; */ + font-family:PingFangSC-Regular; + font-size: 28rpx; + font-weight:400; + color: #2C8DFF; + letter-spacing: 0; + text-align: right; + line-height: 26px; + float: right; + margin: 20rpx; + } + .close { + display: inline-block; + width: 123rpx !important; + overflow: hidden; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: right; + line-height: 28rpx; + float: right; + margin: 20rpx; + } \ No newline at end of file diff --git a/pages/mallInfo/mallInfo.js b/pages/mallInfo/mallInfo.js new file mode 100644 index 0000000..002c924 --- /dev/null +++ b/pages/mallInfo/mallInfo.js @@ -0,0 +1,69 @@ +// pages/mallInfo.js +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px'; +var config = require("../../config/config.js"); +var app = getApp(); +const Http = require("../../utils/HttpBasics"); + +const util = require("../../utils/util"); +Page({ + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + weekName:[], + times:[], + dateArr:[ + { name: "星期一", value: "0" }, + { name: "星期二", value: "1" }, + { name: "星期三", value: "2" }, + { name: "星期四", value: "3" }, + { name: "星期五", value: "4" }, + { name: "星期六", value: "5" }, + { name: "星期天", value: "6" } + ], + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + let that = this; + console.log("渲染开始") + Http.get({ + url: config.api.getMallInfo, + }) + .then(res => { + if (res.data.businessHours){ + let businessHours = JSON.parse(res.data.businessHours) + businessHours.map((item, index) => { + item.weekName = [that.data.dateArr.filter(e => e.value == item.week[0])[0].name, that.data.dateArr.filter(e => e.value == item.week[1])[0].name].toString().replace(/\,/g, ' -- '), + item.time = [util.convertUTCTimeToLocalTime(item.time[0]), util.convertUTCTimeToLocalTime(item.time[1])].toString().replace(/\,/g, ' -') + }) + console.log(businessHours, 222) + that.setData({ + name: res.data.name, + servicePhone: res.data.servicePhone, + img: res.data.img, + introduction: res.data.introduction, + parkPlaceNumber: res.data.parkPlaceNumber, + businessHoursH: businessHours, + }) + } + }) + .catch(err => { + tt.showModal({ + title: '提示', + content: err.message, + showCancel: false + }) + }) + }, + phone: function (e) { + let that = this; + if (e.currentTarget.dataset.merchantlinkphone) { + tt.makePhoneCall({ + phoneNumber: e.currentTarget.dataset.merchantlinkphone + }) + } + }, +}) \ No newline at end of file diff --git a/pages/mallInfo/mallInfo.json b/pages/mallInfo/mallInfo.json new file mode 100644 index 0000000..d19bed2 --- /dev/null +++ b/pages/mallInfo/mallInfo.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "关于我们", + "navigationBarBackgroundColor": "#FD832D", + "navigationBarTextStyle": "white", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/mallInfo/mallInfo.ttml b/pages/mallInfo/mallInfo.ttml new file mode 100644 index 0000000..d93d5f3 --- /dev/null +++ b/pages/mallInfo/mallInfo.ttml @@ -0,0 +1,29 @@ + + + + + + + + {{name}} + {{introduction}} + + 营业时间 : + + + {{item.time}}({{item.weekName}}) + + + + + 停车位 : + {{parkPlaceNumber}} + + + 热线电话 : + + {{servicePhone}} + + + + diff --git a/pages/mallInfo/mallInfo.ttss b/pages/mallInfo/mallInfo.ttss new file mode 100644 index 0000000..f86d3cb --- /dev/null +++ b/pages/mallInfo/mallInfo.ttss @@ -0,0 +1,106 @@ + +page{ + background:linear-gradient(180deg,#FD832D 0%,#FE4A16 100%); +} +.codeBox{ + background:linear-gradient(180deg,#FD832D 0%,#FE4A16 100%); + height: 100%; + overflow: auto; +} +.none { + font-size: 24rpx; + text-align: center; + margin-top: 38rpx; + color: #FFFFFF; + float: none !important; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.goback { + position: fixed; + right: 50rpx; + bottom: 60rpx; + width: 100rpx !important; + height: 100rpx; + z-index: 100; + background: rgba(255, 255, 255, 1); + line-height: 95rpx; + border: 1rpx solid rgba(227, 227, 227, 1); + border-radius: 50%; +} + +.goback image { + position: absolute; + width: 60rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} + +.code { + width: 690rpx; + background: #fff; + margin: 20rpx auto; + border-radius: 10rpx; + padding-top: 20rpx; + padding-bottom: 20rpx; +} +.code image{ + display:block; + margin: auto ; +} +.info{ + width: 650rpx; + background: #fff; + margin: 20rpx auto; + border-radius: 10rpx; + padding: 20rpx; +} +.title{ + margin: 20rpx 0; + text-align: center; + font-size: 50rpx; +} +.phone{ + overflow: hidden; +} +.phone,.park,.introduction{ + font-size: 30rpx; + line-height:40rpx; + margin: 20rpx 0; +} +.time{ + margin: 20rpx 0; + font-size: 30rpx; + display: flex; +} +.timesBox{ + display: flex; + flex-direction: column; +} +.times{ + margin-left: 10rpx; +} +.times text{ + line-height: 40rpx; +} +.park > text:nth-child(2) ,.phone > text:nth-child(2){ + margin-left: 10rpx; +} +.tel { + margin: 10rpx 10rpx 0 10rpx; + width: 30rpx; + height: 30rpx; +} +.phoneNum{ + color:#FD832D; +} \ No newline at end of file diff --git a/pages/order/detail/index.js b/pages/order/detail/index.js new file mode 100644 index 0000000..39ff45e --- /dev/null +++ b/pages/order/detail/index.js @@ -0,0 +1,501 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +let config = require("../../../config/config.js"); +let util = require("../../../utils/util"); +let Http = require("../../../utils/HttpBasics"); +let app = getApp(); +const imgurl = require("../../../utils/imgurl"); +Page({ + /** + * 页面的初始数据 + */ + data: { + showFlag: false, + navigationBarHeight, + succUrl: imgurl.succ.url, + spcodeUrl: imgurl.spcode.url, + chevronUrl: imgurl.chevron.url, + teljpgUrl: imgurl.teljpg.url, + newUrl: imgurl.new1.url, + weixinTitle: imgurl.weixinTitle.url, + showModalStatus: false, + flag: 0, + order: null, + orderId: null, + //存储计时器 + setInter: "", + mystatus: '', + staticGamedata: {}, + showIf: false, + showPage: false, + showButton: false, + cardDetail: null, + supportTransfer: '', + cardIf: false, + contentType: 0, + orderFlag: false, //判断是不是线上配送 + }, + copeCode(e) { + let code = e.currentTarget.dataset.text + tt.setClipboardData({ + data: code, + success: function() { + tt.showToast({ + title: '复制成功', + icon: "none" + }) + } + }) + }, + gokuaidi(e) { + let nu = e.currentTarget.dataset.nu + tt.navigateToMiniProgram({ + appId: 'wx6885acbedba59c14', + path: `pages/result/result?nu=${nu}&com=&querysource=third_xcx` + }) + }, + + setShow() { + this.setData({ + showFlag: true + }) + }, + hieShow() { + this.setData({ + showFlag: false + }) + }, + //刷新订单 + updetail() { + let that = this + let url = config.api.orderDetail + + Http.get({ + url: url, + data: { + orderId: this.data.orderId + } + }).then(res => { + tt.hideLoading(); + var createDate = util.formatTime(res.data.orders[0].createDate, "yyyy-MM-dd hh:mm:ss"); + let tempData = res.data.orders[0] + tempData.deliveryInfo = tempData.deliveryInfo ? JSON.parse(tempData.deliveryInfo) : "" + that.setData({ + order: tempData, + showPage: true, + createDate: createDate, + composeOrderType: tempData.composeOrderType, + contentType: tempData.contentType?tempData.contentType:0, + orderFlag: tempData.type==11? true:false //判断是不是线上配送 + }) + }) + .catch(error => { + tt.hideLoading(); + tt.showModal({ + title: '提示', + content: error.errMsg, + showCancel: false + }) + }) + }, + //确认收货 + verify() { + Http.post({ + url: config.api.verify, + data: { + couponOrderId: this.data.order.couponOrderId + } + }).then(res => { + tt.showToast({ + title: '签收成功', + icon: "none" + }) + this.updetail() + }).catch(err => { + tt.showModal({ + title: '提示', + content: err.message ? err.message : err.data, + showCancel: false + }) + }) + }, + phone: function(e) { + let that = this; + console.log(e); + tt.makePhoneCall({ + phoneNumber: e.currentTarget.dataset.merchantlinkphone + }); + }, + /** + * 跳转到门店列表的详情页面 + */ + gotoDetail(e) { + tt.navigateTo({ + url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}` + }) + }, + getUserInfo: function() { + let that = this; + // 获取用户信息 + Http.get({ + url: config.api.getScore, + data: {} + }) + .then(res => { + console.log(res) + that.setData({ + userName: res.data.nickName, + avatarUrl: res.data.avatarUrl + }) + }) + }, + onShareAppMessage: function(res) { + app.globalData.previewFlag = true + if (res.from === 'button') { + console.log(res, 3333333333333333333333) + // 来自页面内转发按钮 + let _this = this; + return { + title: _this.data.userName + '赠送您一张' + _this.data.order.title, + path: '/pages/index/index?couponChannelId=' + this.data.order.couponChannelId + '&cuserId=' + this.data.order.cuserId + '&couponId=' + this.data.order.productId + '&coverImg=' + this.data.order.coverImg + '&userName=' + this.data.userName + '&avatarUrl=' + this.data.avatarUrl + '&couponOrderId=' + this.data.order.couponOrderId + '&updateDate=' + this.data.order.updateDate, + imageUrl: this.data.order.coverImg, + success: function(res) { + // 转发成功 + }, + fail: function(res) { + // 转发失败 + } + } + } else { + console.log(res, 444444444444444444) + } + }, + + + powerDrawer: function(e) { + let that = this; + console.log(e) + // couponOrderStatus + // 0 未使用 + // 1 已使用 + // 2 已过期 + // 3 已经退款 + if (that.data.mystatus == "" || that.data.mystatus == undefined) { + tt.navigateTo({ + url: `/pages/orderquanma/index?quancode=${ + e.currentTarget.dataset.quancode + }&title=${e.currentTarget.dataset.title}&subtitle=${ + e.currentTarget.dataset.subtitle + }&remark=${e.currentTarget.dataset.remark}&couponorderstatus=${ + e.currentTarget.dataset.couponorderstatus}&validstatus=${e.currentTarget.dataset.validstatus} + &contentType=${that.data.contentType}` + }); + } else { + tt.navigateTo({ + url: `/pages/orderquanma/index?quancode=${ + e.currentTarget.dataset.quancode + }&title=${e.currentTarget.dataset.title}&subtitle=${ + e.currentTarget.dataset.subtitle + }&remark=${e.currentTarget.dataset.remark}&couponorderstatus=${ + that.data.mystatus}&validstatus=${e.currentTarget.dataset.validstatus} + &contentType=${that.data.contentType}` + }); + } + }, + gotogame: function() { + let that = this; + tt.redirectTo({ + url: '/pages/game/index?url=' + that.data.staticGamedata.url + "&id=" + that.data.staticGamedata.id + "&gameId=" + that.data.staticGamedata.gameId, + }) + }, + // 买完卡跳转到立即使用页面 + gotoUse: function() { + tt.navigateTo({ + url: '/pages/cardorder/index/index' + }) + }, + // 获取游戏 + getStaticGame(token) { + let _this = this; + Http.get({ + url: config.api.getGame, + data: { + triggleAction: 3 // 购买触发 + } + }).then(res => { + if (res.data.id) { + _this.setData({ + showIf: true + }) + } + _this.setData({ + staticGamedata: res.data + }) + }) + .catch(err => { + console.log(err); + }) + }, + + + + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + + let that = this; + // if (options.dingdan && options.dingdan == "order") { + + // } + that.setData({ + orderId: options.orderId, + + }); + tt.hideShareMenu() + if (options.cardIf) {//转赠 展示不需 + that.setData({ + cardIf: true + }) + } + tt.showLoading({ + title: "加载中" + }); + + that.updetail() + + }, + onShow: function() { + let that = this; + that.setData({ + showButton: false + }) + }, + /** + * 去拼团 + */ + goToOrderGroup(orderId, orderGroupId, _this) { + let that = this; + // 支付成功 + Http.post({ + url: config.api.toOrderGroup, + data: { + id: orderGroupId, + orderId, + couponId: _this.data.order.productId + } + }) + .then(res => { + tt.redirectTo({ + url: `/pages/spellDetail/index?orderId=${orderId}&couponId=${_this.data.order.productId}&orderGroupId=${res.data.orderGroupId}` + }); + }) + .catch(err => { + console.log(err); + }) + // return; + }, + /** + * 发起支付 + */ + orderFunc(e) { + var that = this; + that.setData({ + showButton: true + }) + tt.showLoading({ + title: "加载中..." + }); + + const orderId = "" + that.data.orderId; + if (that.data.order.payment > 0) { + // 支付金额不为0 + Http.post({ + url: config.api.payOrderCreate, + data: { + orderId: orderId, + composeOrderType: that.data.composeOrderType + } + }).then(res => { + var payOrderId = "" + res.data.outOrderNo; + tt.hideLoading(); + tt.pay({ + service: 5, + orderInfo: { + order_id: res.data.orderId, + order_token: res.data.token, + }, + success: res => { + tt.showLoading({ + title: '订单正在处理中...', + }) + if (res.code == 0) { + setTimeout(function () { + tt.hideLoading() + }, 5000) + that.payOrderUpdate(that.data.orderId, payOrderId, 1, '', '', that); // 支付成功 + if (res.errMsg == "requestPayment:ok") { + if (that.data.order.type == 100) { + tt.setStorage({ + key: 'couponNum2', + data: "couponNum2" + }) + } else if (that.data.order.type != 5) { + tt.setStorage({ + key: 'couponNum', + data: "couponNum" + }) + } + } + }else if (res.code === 1) { + that.setData({ + showButton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付超时', // 内容 + icon: "none" + }); + + } else if (res.code === 2) { + that.setData({ + showButton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付失败', // 内容 + icon: "none" + }); + + } else if (res.code === 3) { + that.setData({ + showButton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付关闭', // 内容 + icon: "none" + }); + } else if (res.code === 4) { + that.setData({ + showButton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '支付取消', // 内容 + icon: "none" + }); + } else if (res.code === 9) { + that.setData({ + showButton: false + }) + tt.hideLoading(); + tt.showToast({ + title: '订单状态开发者自行获取', // 内容 + icon: "none" + }); + } + }, + fail: res => { + that.setData({ + showButton: false + }) + that.payOrderUpdate(that.data.orderId, payOrderId, 2, '', 'fail', that); + return; + }, + }); + }).catch(err => { + tt.hideLoading(); + that.setData({ + showButton: false + }) + tt.showModal({ + title: "抱歉", + content: err.message, + showCancel: false + }) + }); + } else { + // 免费券 + that.payOrderUpdate(orderId, "0", 1, '', 'free') // 支付成功 + if (that.data.order.type == 100) { + tt.setStorage({ + key: 'couponNum2', + data: "couponNum2" + }) + } else if (that.data.order.type != "5") { + tt.setStorage({ + key: 'couponNum', + data: "couponNum" + }) + } + tt.showToast({ + title: "支付成功", + duration: 2000, + image: imgurl.success.url, + }); + } + }, + /** + * 支付订单更新 + */ + payOrderUpdate: (orderId, payOrderId, status, reason, type, _this) => { + // 支付成功 + Http.post({ + url: config.api.payOrderUpdate, + data: { + payOrderId: payOrderId, + composeOrderId: orderId, + status: status, + reason: reason + } + }) + .then(res => { + tt.hideLoading(); + _this.setData({ + showButton: false + }) + if (!type && type != 'free') { + tt.showToast({ + title: "购买成功", + duration: 2000, + image: imgurl.success.url, + mask: false, + success: function() { + tt.showLoading({ + title: "加载中..." + }); + setTimeout(function() { + tt.hideLoading(); + }, 1600); + setTimeout(() => { + let url = "" + if (_this.data.orderFlag) { + tt.redirectTo({ + url: `/pages/order/detail/index?orderId=${orderId}&dingdan=order` + }); + } else { + tt.redirectTo({ + url: `/pages/order/detail/index?orderId=${orderId}` + }); + } + + }, 1600); + } + }); + } else if (type == 'free') { + tt.redirectTo({ + url: `/pages/order/detail/index?orderId=${orderId}` + }); + } + }) + .catch(err => { + console.log(err) + if (!type) { + setTimeout(function() { + _this.payOrderUpdate(orderId, payOrderId, status, reason, type, _this); + }, 1500) + } + }); + }, +}); \ No newline at end of file diff --git a/pages/order/detail/index.json b/pages/order/detail/index.json new file mode 100644 index 0000000..616741a --- /dev/null +++ b/pages/order/detail/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "navbar": "../../../components/navbar/navbar", + "store": "../../../components/store/index" + } + } \ No newline at end of file diff --git a/pages/order/detail/index.ttml b/pages/order/detail/index.ttml new file mode 100644 index 0000000..be7e184 --- /dev/null +++ b/pages/order/detail/index.ttml @@ -0,0 +1,134 @@ + + + + + + + 交易成功 + + + + 付款成功 + + + + + + {{order.title}} + + + + + + {{order.subTitle}} + + + 下单时间:{{createDate}} + + + + + + + + + 兑换码: + {{order.couponOrderId}} + + + + + + + + + 订单编号: + {{order.orderNumber}} + + + 物流状态: + {{(order.shippingStatus==10||order.shippingStatus==14)?"待自提":order.shippingStatus==15?"已自提":order.shippingStatus==20?"待发货":order.shippingStatus==24?"待收货":order.shippingStatus==25?"已收货":""}} + + + 物流公司: + {{order.deliveryInfo.courierInput}} + + + 快递单号: + + {{order.deliveryInfo.expressageIdInput}} + + 复制 + 查询物流 + + + + + 实付金额: + + ¥ + {{order.payment/100}} + + + + + + + + 礼券: + + + + + + {{item.title}} + 面额:{{item.priceStr}}元 + + + + + + + + + + + + + + + 签收 + + + + 是否确认收到商品? + 签收后将完成订单 + + 确认签收 + 取消 + + + \ No newline at end of file diff --git a/pages/order/detail/index.ttss b/pages/order/detail/index.ttss new file mode 100644 index 0000000..209efbd --- /dev/null +++ b/pages/order/detail/index.ttss @@ -0,0 +1,708 @@ +@import "../../../app.ttss"; + +button::after { + border: none; +} + +page { + height: auto !important; + background: #f4f5f9; +} + +.order { + width: 100%; + padding-bottom: 160rpx; +} + +.success { + vertical-align: middle; + width: 40rpx; + margin-right: 10rpx; + float: left; +} + +.tips { + width: 92%; + height: 70rpx; + background: #2c8dff; + color: #fff; + padding: 20rpx 4% 0; +} + +.merchantName { + color: #3c3c3c !important; + /* margin-left: 160rpx; */ + font-size: 28rpx; + float: left; + margin-left: 30rpx; + height: 100%; + line-height: 90rpx; +} + +.tips view:nth-child(2) { + font-size: 32rpx; + padding-left: 16rpx; + width: 100%; +} + +.tips view:nth-child(1) { + width: 100%; + height: 32rpx; + background: #fff; + border-radius: 50%; + color: #00c0ff; + text-align: center; + font-size: 28rpx; +} + +.msg text:nth-child(1) { + width: 90%; + font-size: 28rpx; + float: left; +} + +.msg text:nth-child(2) { + font-size: 24rpx; + float: left; + margin-left: 35rpx; +} + +.section { + /* margin-top: 2%; */ + background: #fff; +} + +.detail_msg { + width: 92%; + display: flex; + margin: 0 4%; + margin-top: 10rpx; + padding-bottom: 42rpx; + border-bottom: 1rpx solid #eee; +} + +.logo { + display: block; + width: 120rpx; + height: 120rpx; + border-radius: 16rpx; +} + +.logo image { + width: 120rpx; + height: 120rpx; + border-radius: 16rpx; +} + +.sectionTit { + padding-top: 30rpx; + width: 92%; + margin: 0 4%; + font-size: 30rpx; + color: #3c3c3c; +} + +.info view:nth-child(1) { + padding: 0 4%; + width: 80%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.info { + width: 100%; +} + +.info view:nth-child(1) text { + font-size: 30rpx; + color: #000; + letter-spacing: 0; +} + +.info view:nth-child(1) text:nth-child(2) { + color: #ffae00; + font-size: 24rpx; +} + +.info view:nth-child(2), .info view:nth-child(3) { + font-size: 24rpx; + padding-left: 4%; + color: #919191; + letter-spacing: 0; +} + +.info view:nth-child(2) text, .info view:nth-child(3) text { + font-size: 22rpx; + color: #b8b8b8; +} + +.payment { + width: 92%; + height: 120rpx; + line-height: 120rpx; + padding: 0 4%; + display: flex; + justify-content: space-between; + border-bottom: 20rpx solid #ededed; +} + +.payment view:nth-child(2) text:nth-child(1) { + font-size: 36rpx; + color: #ff3434; + font-weight: bold; +} + +.payment view:nth-child(2) text:nth-child(2) { + font-size: 24rpx; + color: #b4b4b4; + padding-left: 18rpx; + text-decoration: line-through; +} + +.dhCode { + position: relative; + height: 96rpx; + line-height: 96rpx; + border-bottom: 1rpx solid #f4f5f9; + padding-left: 5%; + padding-right: 5%; +} + +.classif { + background: #fff; + width: 100%; + margin-top: 20rpx; +} + +.wuliu { + height: 96rpx; + line-height: 96rpx; + border-bottom: 1rpx solid #f4f5f9; + padding-left: 5%; + padding-right: 5%; + overflow: hidden; +} + +.left { + float: left; +} + +.sign { + width: 160rpx; + height: 60rpx; + line-height: 60rpx; + text-align: center; + background-color: #00c0ff; + color: #fff; + border-radius: 12rpx; + margin: 40rpx auto; + padding: 12rpx 20rpx; + font-size: 28rpx; +} + +.left { + float: left; + font-size: 26rpx; + color: #a6a6a6; +} + +.copeCode { + float: left; + margin: 20rpx 10rpx; + padding: 10rpx; + height: 30rpx; + line-height: 30rpx; + border-radius: 8rpx; + color: #df3502; + border:1rpx #a6a6a6 solid; + font-size: 28rpx; + +} + +.goInquire { + float: left; + margin: 20rpx 10rpx; + padding: 10rpx; + height: 30rpx; + line-height: 30rpx; + border:1rpx #a6a6a6 solid; + border-radius: 8rpx; + color: #3cc51f; + font-size: 28rpx; + +} + +/* +.classifShop{ + background: #FFFFFF; + width: 100%; + margin-top: 20rpx; + padding-bottom: 20rpx; +} +.classifShop >view{ + font-size: 28rpx; + color: #A6A6A6; + position: relative; + display: flex; + justify-content: space-between; + padding-left: 5%; + padding-right: 5%; + margin-bottom: 20rpx; +} +.classifShop >view:nth-child(1){ + height: 88rpx!important; + line-height:94rpx; +} */ + +.classif > view:nth-child(2), .classif > view:nth-child(3) { + position: relative; + height: 94rpx; + line-height: 94rpx; + display: flex; + justify-content: space-between; + padding-left: 5%; + padding-right: 5%; + /* border-bottom: 1rpx solid #eee; */ +} + +.classif > view text:nth-child(2) { + font-size: 28rpx; + /* color: #3c3c3c; */ +} + +.classif > view text:nth-child(1) { + font-size: 28rpx; + color: #a6a6a6; + float: left; +} + +.classif > view:nth-child(1) { + display: block; +} + +.classif > view:nth-child(6) text:nth-child(2) { + color: #666; +} + +.spcode { + position: absolute; + right: 70rpx; + bottom: 0; + top: 0; + margin: auto; + width: 50rpx; + z-index: 1; +} + +.rArrow { + position: absolute; + right: 26rpx; + height: 20rpx; + width: 20rpx; + margin: auto; + bottom: 30rpx; +} + +/*mask*/ + +.drawer_screen { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 1000; + background: #000; + opacity: 0.5; + overflow: hidden; +} + +.drawer_box { + width: 650rpx; + position: fixed; + overflow: hidden; + top: 50%; + left: 0; + z-index: 1001; + margin: -150px 50rpx 0 50rpx; + border-radius: 3px; +} + +.drawer_title { + padding: 15px; + font: 20px "microsoft yahei"; + text-align: center; +} + +.drawer_content { + height: 210px; + overflow-y: scroll; /*超出父盒子高度可滚动*/ +} + +.btn_ok { + padding: 10px; + font: 20px "microsoft yahei"; + text-align: center; + border-top: 1px solid #e8e8ea; + color: #3cc51f; +} + +.top { + padding-top: 8px; +} + +.bottom { + padding-bottom: 8px; +} + +.title { + height: 30px; + line-height: 30px; + width: 160rpx; + text-align: center; + display: inline-block; + font: 300 28rpx/30px "microsoft yahei"; +} + +.input_base { + border: 2rpx solid #ccc; + padding-left: 10rpx; + margin-right: 50rpx; +} + +.input_h30 { + height: 30px; + line-height: 30px; +} + +.input_h60 { + height: 60px; +} + +.input_view { + font: 12px "microsoft yahei"; + background: #fff; + color: #000; + line-height: 30px; +} + +input { + font: 12px "microsoft yahei"; + background: #fff; + color: #000; +} + +radio { + margin-right: 20px; +} + +.grid { + display: -webkit-box; + display: box; +} + +.col-0 { + -webkit-box-flex: 0; + box-flex: 0; +} + +.col-1 { + -webkit-box-flex: 1; + box-flex: 1; +} + +.fl { + float: left; + color: #3c3c3c !important; +} + +.fr { + float: left; +} + +.clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.panel { + width: 600rpx; + border-radius: 10rpx; + background-color: #fff; + margin: 30rpx auto 0; + padding: 30rpx 0; + position: relative; + z-index: 10000000000; +} + +.pane2 { + background: #fff; + opacity: 0.6; +} + +.pane2 image { + width: 500rpx; + display: block; + margin: 40rpx auto 0; +} + +.barcode { + height: 100rpx; + width: 500rpx; + margin: 0 auto; +} + +.barnum { + width: 88%; + height: 46rpx; + line-height: 46rpx; + font-size: 32rpx; + text-align: center; + letter-spacing: 2rpx; + white-space: nowrap; + color: #999; +} + +.barnum text { + color: #333; +} + +.barcode > canvas { + width: 500rpx; + height: 100rpx; +} + +.qrcode { + height: 340rpx; + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: center; +} + +.qrcode > canvas { + width: 350rpx; + height: 350rpx; +} + +.left { + float: left; +} + +.right { + float: right; +} + +.RMB { + color: #fd782d !important; + font-size: 24rpx !important; + float: right; +} + +.jine { + color: #fd782d !important; + font-size: 36rpx !important; + font-weight: 400 !important; + float: right; + margin-left: 10rpx; +} + +.jine1 { + color: #b8b8b8 !important; + font-size: 30rpx !important; + font-weight: 400 !important; +} + +.buy-view { + /* background: #fff; */ + position: fixed; + padding-top: 30rpx; + height: 94rpx; + bottom: 0; + left: 0; + right: 0; + z-index: 100; + padding-bottom: 30rpx; +} + +.buy { + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%); + height: 94rpx; + width: 670rpx; + margin: 0 auto; + color: #fff; + font-size: 32rpx; + line-height: 94rpx; + border-radius: 61rpx; +} + +.active { + opacity: 0.6; +} + +.game-entry { + width: 690rpx; + height: 140rpx; + margin: 20rpx auto 0; +} + +.gameimg { + display: block; + width: 100%; + height: 140rpx; +} + +/* +.merchantVoList { + width: 100%; +} + +.merchantVoList .tel { + width: 50rpx; + height: 50rpx; + float: right; + z-index: 10; + margin-top: 30rpx; +} */ + +.btns { + background: #00c0ff; + height: 94rpx; + width: 670rpx; + margin: 0 auto 30rpx; + color: #fff; + font-size: 36rpx; + line-height: 94rpx; + border-radius: 61rpx; +} + +/* .merchantImgUrl{ + width: 90rpx; + float: left; + border-radius: 10rpx; + z-index: 10; + margin: 0 auto; +} */ + +.support-tansfer { + width: 690rpx; + border-radius: 50rpx; + margin-top: 60rpx; + background: linear-gradient(127deg, rgba(252, 177, 74, 1) 0%, rgba(254, 70, 20, 1) 100%) !important; +} + +.share { + width: 40rpx; + height: 40rpx; + margin-right: 20rpx; +} + +.showT { + width: 100%; + height: 100vh; + background-color: rgba(0, 0, 0, 0.1); + position: fixed; + top: 0; + left: 0; + overflow: hidden; +} + +.titleBxo { + width: 70%; + margin: 300rpx auto; + background-color: #fff; + border-radius: 12rpx; + overflow: hidden; +} + +.titleBxo .text { + margin: 40rpx auto 20rpx auto; + text-align: center; + font-size: 36rpx; +} + +.titleBxo .p { + margin-top: 10rpx auto 30rpx auto; + font-size: 22rpx; + text-align: center; +} + +.btnBox { + overflow: hidden; + margin-top: 40rpx; + margin-bottom: 20rpx; + display: flex; + justify-content: space-around; +} + +.le { + width: 40%; + height: 60rpx; + line-height: 60rpx; + border-radius: 10rpx; + background-color: #00c0ff; + text-align: center; + color: #fff; +} + +.ri { + width: 40%; + height: 60rpx; + line-height: 60rpx; + border-radius: 10rpx; + text-align: center; + border: 1rpx solid #919191; +} + +.childList { + padding-left: 5%; + padding-right: 5%; + overflow: hidden; +} + +.childTitle { + font-size: 28rpx; + color: #a6a6a6; + margin-top: 20rpx; +} + +.childItme { + border-radius: 12rpx; + overflow: hidden; + background-color: #fff; + margin: 20rpx; +} + +.orderName { + margin: 20rpx; + font-size: 26rpx; +} + +.chaildDetBox { + margin: 20rpx; + overflow: hidden; +} + +.chaildImg { + float: left; + width: 100rpx; + height: 100rpx; + border-radius: 10rpx; +} + +.childDataBox { + float: left; + width: 50%; + margin-left: 20rpx; +} + +.childPriceStr { + font-size: 24rpx; + color: #919191; + letter-spacing: 0; + margin-left: 20rpx; +} diff --git a/pages/order/index/index.js b/pages/order/index/index.js new file mode 100644 index 0000000..7ef7309 --- /dev/null +++ b/pages/order/index/index.js @@ -0,0 +1,299 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +let config = require("../../../config/config.js"); +let Http = require("../../../utils/HttpBasics"); +const util = require("../../../utils/util"); +let app = getApp(); +const imgurl = require("../../../utils/imgurl"); +Page({ + data: { + showBox: false,//显示授权手机框 + phFlag:false,//是否授权手机号 + navigationBarHeight, + noOrdersUrl: imgurl.noOrders.url, + loadingUrl: imgurl.loading.url, + wmhome: imgurl.wmhome.url, + wmdiscount: imgurl.wmdiscount.url, + wmgive: imgurl.wmgive.url, + boatFlag: "all", + tabs: [{ + key: "all", + name: "全部" + }, + { + key: 0, + name: "待付款" + }, + { + key: 1, + name: "已完成" + } + ], + list: [], + current: "", + loading: true, //"上拉加载"的变量,默认false,隐藏 + current_scroll: "1", + allow_load: true, + page: 1, + content: "", + }, + + setPhone(paramData) {//子组件调用这个方法说明手机号已经授权成功 + this.setData({ + showBox: paramData.detail, + phFlag:true + }) + this.getList('all', 1) + tt.showToast({ + title: '授权成功', // 内容 + icon: 'none', // 图标 + success: (res) => { + }, + fail: (res) => { + + }, + }); + }, + + setBox(paramData) { + this.setData({ + showBox: paramData.detail, + phFlag:false + }) + tt.showToast({ + title: '取消授权', // 内容 + icon: 'none', // 图标 + success: (res) => { + + }, + fail: (res) => { + + }, + }); + }, + + goback: function () { + tt.reLaunch({ + url: '/index/index', + }) + }, + onLoad(e) { + + + // this.getList(e.id, 1); + this.setData({ + current_scroll: e.id + }); + }, + onShow() { + + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }).then(res => { + this.setData({ + showBox: false, + phFlag:true, + }) + this.getList('all', 1) + }).catch(err => { + this.setData({ + showBox: true, + phFlag: false, + }) + // tt.navigateTo({ + // url: '/pages/getPhone/getPhone', + // }); + }) + + + + + }, + /** + * 砍价中的状态 + * 跳转到砍价详情页面 + */ + gotoDiscount: function (e) { + tt.navigateTo({ + url: `/pages/bargain/bargainDatail/bargainDatail?orderId=${e.currentTarget.dataset.id}` + }) + }, + gotopay: function (e) { + let level = e.currentTarget.dataset.level + if (level == 0) { + tt.navigateTo({ + url: `/pages/order/detail/index?orderId=${e.currentTarget.dataset.id}&flag='pay'` + }) + } else { + tt.navigateTo({ + url: `/pages/order/detail/index?orderId=${e.currentTarget.dataset.id}&dingdan=order&flag='pay'` + }) + } + + + }, + //再次购买 + gotopayAgain: function (e) { + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${e.currentTarget.dataset.couponchannelid + }&couponId=${e.currentTarget.dataset.couponid}` + }); + }, + // gotoSpellPay(e) { + // console.log(e, 333) + // let data = e.currentTarget.dataset.data + // tt.navigateTo({ + // url: `/pages/spellGroup/paySpellGroup/index?orderId=${data.orderId}&couponId=${data.couponId}&orderGroupId=${data.orderGroupId}&couponChannelId=${data.couponChannelId}`, + // }) + // }, + getList(key, pageNum) { + let that = this; + if (key == undefined) { + key = 'all' + } + /** + * key==0 + * 不发送该字段 + */ + if (key == 'all') { + var variable = { + pageNum: pageNum, + pageSize: 15, + paymentType: 0 + }; + } else { + var variable = { + pageNum: pageNum, + pageSize: 15, + orderStatus: key, + paymentType: 0 + }; + } + + if (that.data.allow_load) { + that.setData({ + loading: true, + content: '小主,我在玩命加载中...' + }) + + Http.get({ + url: config.api.orderList, + data: variable + }).then(res => { + if (pageNum >= res.data.pages) { + that.setData({ + allow_load: false + }); + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400); + } + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400); + if (pageNum == 1) { + that.setData({ + list: [] + }) + } + var tmpArr = that.data.list; + tmpArr.push.apply(tmpArr, res.data.list); + // 将砍价的状态过滤出来 + console.log(tmpArr) + tmpArr.map(item => { + + item.orders.map(itemChild => { + itemChild.createDate = util.formatTime(itemChild.createDate, "yyyy-MM-dd hh:mm:ss"); + }) + }) + + that.setData({ + list: tmpArr + }) + for (let i = 0; i < that.data.list.length; i++) { + var createDate1 = util.formatTime(that.data.list[i].createDate, "yyyy-MM-dd hh:mm:ss"); + /** + * 修改list的endtime + * 渲染到页面 + */ + var createDate = 'list[' + i + '].createDate' + that.setData({ + [createDate]: createDate1 + }); + } + }) + .catch(err => { + tt.showModal({ + title: '提示', + content: err.message ? err.message : err.data, + showCancel: false + }) + }) + } + else { + that.setData({ + loading: true, + content: "——— 再拉裤子就掉了啦 ———" + }) + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400) + } + }, + handleChange({ + detail + }) { + this.setData({ + current: detail.key + }); + }, + + setBoatFlag(e) { + if (this.data.phFlag) { + let index = e.currentTarget.dataset.index + console.log(index); + this.setData({ + boatFlag: index, + pageNum: 1, + allow_load: true, + }) + this.getList(index, 1) + } else { + this.setData({ + showBox: true + }) + } + + }, + + + + handleChangeScroll({ + detail + }) { + this.setData({ + list: [], + allow_load: true, + current_scroll: detail.key, + page: 1 + }) + this.getList(detail.key, 1); + }, + onReachBottom: function () { + var that = this; + if (that.data.phFlag) { + that.data.page++; + that.setData({ + page: that.data.page + }); + that.getList(that.data.current_scroll, that.data.page); + } + + }, +}); \ No newline at end of file diff --git a/pages/order/index/index.json b/pages/order/index/index.json new file mode 100644 index 0000000..5468f95 --- /dev/null +++ b/pages/order/index/index.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "i-tab": "../../../dist/tab/index", + "i-tabs": "../../../dist/tabs/index", + "navbar": "../../../components/navbar/navbar", + "phoen":"../../../components/getPhoen/getPhoen" + }, + "navigationBarTitleText": "我的订单", + "navigationBarBackgroundColor": "#F4F5F9" + } \ No newline at end of file diff --git a/pages/order/index/index.ttml b/pages/order/index/index.ttml new file mode 100644 index 0000000..b0d302c --- /dev/null +++ b/pages/order/index/index.ttml @@ -0,0 +1,110 @@ + + + + + + + + + {{item.name}} + + + + + + + + + + 订单id:{{item.id}} + + + + + + 等待付款 + 拼团中 + 待退款 + 交易关闭 + 砍价中 + 砍价成功 + 砍价失败 + 砍价取消 + 拼团已过期 + 拼团失败 + 砍价失败 + 已退款 + 退款失败 + 拼团成功 + 免费领取 + 积分兑换 + 付款成功 + + + + + + + + {{child.title}} + 价格: + {{(child.salePrice)/100}}元 x {{child.couponNumber}} + + 运费:{{child.freightPriceStr}} + 下单时间: + {{child.createDate}} + + + + 去查看 + + + 砍价详情 + + + 去支付 + + + 退款失败 + + + + + + + + + + 订单总金额: + {{item.payment/100}}元 + + + + + + + + + + + + + + + 您还没有相关订单 + 再忙,也要记得买点什么犒赏自己~ + + + + + {{content}} + + + + + \ No newline at end of file diff --git a/pages/order/index/index.ttss b/pages/order/index/index.ttss new file mode 100644 index 0000000..dbc31fe --- /dev/null +++ b/pages/order/index/index.ttss @@ -0,0 +1,434 @@ + +.boatBox{ + width: 100% !important; + height: 96rpx; + display: flex; + justify-content: space-around; + background-color: #fff; +} +.boatBoxf{ + width: 100% !important; + position: fixed; + top: 0; + left: 0; + z-index: 10000; +} +.boatTitle{ + font-size: 30rpx; + text-align: center; + height: 80rpx; + line-height: 80rpx; + color: #999; +} +.boatTitleA{ + font-size: 32rpx; + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-weight: 500; + +} +.boatA{ + width: 80rpx; + height: 6rpx; + background-color: #fb3e5c; + margin: 0 auto; + border-radius: 10rpx; +} + + +.market { + width: 100%; + height: 100%; + background: #F4F5F9; + margin-top: 20rpx; +} +.tabs { + position: fixed; + width: 100% !important; + height: 96rpx; + /* top: 0; */ + left: 0; + right: 0; + text-align: center; + z-index: 10000000; + font-size: 26rpx; + background: #FFF; +} + +.i-tab { + width: 30% !important; + display: inline-block; +} +.section{ + background: #FFFFFF; + overflow: hidden; +} +.detail_msg { + position: relative; + width: 92%; + background: #fff; + display: flex; + margin: 0 30rpx; + padding-bottom: 20rpx; + padding-top: 20rpx; + /* border-bottom: 1rpx solid #eee; */ +} +.sendImg{ + position: absolute; + width: 100rpx; + top: 100rpx; + right: 6rpx; +} + +.logo { + display: block; + width: 120rpx; + height: 120rpx; + border: 1px solid #f8f8f8; + border-radius: 20rpx; +} + +.logo image { + display: block; + width: 120rpx; + height: 120rpx; + border-radius: 20rpx; +} +.detail_top{ + width: 100%; + height: 40rpx; + line-height: 40rpx; + font-size: 30rpx; + padding-top: 30rpx; +} +.detail_top view:nth-child(1) { + display: flex; + justify-content: space-between; + padding: 0 4% 0 4%; +} + +.info { + width: 100%; +} + +.sub { + font-size: 24rpx !important; + color: #919191 !important; + letter-spacing: 0; + line-height: 33rpx; + padding-left: 4%; + height: 33rpx; + overflow: hidden; + white-space: wrap; + text-overflow: ellipsis; +} + +.info view:nth-child(1) text { + display: inline-block; + width: 300rpx; + font-size: 30rpx; + letter-spacing: 0; + height: 42rpx; + overflow: hidden; + line-height: 42rpx; + white-space: nowrap; + text-overflow: ellipsis; +} +.discount{ + position: absolute; + width: 100rpx; + top:86rpx; + right:2rpx; +} + +.detail_top .sucess { + display: inline-block; + width: 123rpx !important; + /* overflow: hidden; */ + font-family:PingFangSC-Regular; + font-size: 28rpx; + font-weight:400; + color: #2C8DFF; + letter-spacing: 0; + text-align: right; + line-height: 26px; +} + +.wait { + display: inline-block; + width: 123rpx !important; + overflow: visible!important; + font-size: 28rpx; + color: #FD832D; + letter-spacing: 0; + text-align: right; + line-height: 28rpx!important; +} + +.close { + display: inline-block; + width: 123rpx !important; + overflow: hidden; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: right; + line-height: 28rpx; +} + +/* +.info view:nth-child(2), +.info view:nth-child(3), +.info view:nth-child(4) { + color: #333; + font-size: 24rpx; + +} */ + +.value { + font-size: 24rpx; + color: #999; + letter-spacing: 0; + padding-left: 4%; + line-height: 33rpx; +} + +.value text { + font-size: 24rpx; + color: #333; + letter-spacing: 0; + line-height: 33rpx; +} + +.info view:nth-child(3) { + margin-top: 16rpx; +} +.info view:nth-child(2) { + margin-top: 16rpx; +} +.payment { + position: relative; + width: 92%; + height: 80rpx; + line-height: 88rpx; + padding: 0 4%; + display: flex; + justify-content: space-between; + border-bottom: 8rpx solid #eee; + border-top: 1rpx solid #eee; + +} + +.payment view:nth-child(1) text:nth-child(1) { + font-size: 24rpx; + color: #1f2d3d; + letter-spacing: 0; +} + +.payment view:nth-child(1) text:nth-child(2) { + font-size: 28rpx; + color: #ff4949; + letter-spacing: 0; + margin-left: 10rpx; +} + +.payment view:nth-child(1) text:nth-child(3) { + font-size: 24rpx; + color: #b4b4b4; + padding-left: 18rpx; + text-decoration: line-through; +} + +.btn { + position: absolute; + bottom: 0; + right: 0; + width: 118rpx; + height: 52rpx; + line-height: 52rpx; + text-align: center; + color: #fff; + float: right; + font-size: 26rpx; + border-radius: 20rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); +} +.btnZf{ + position: absolute; + bottom: 0; + right: 0; + width: 118rpx; + height: 52rpx; + line-height: 52rpx; + text-align: center; + color: #fff; + float: right; + font-size: 26rpx; + border-radius: 20rpx; + background:linear-gradient(130deg,rgba(50,177,252,1) 0%,rgba(47,108,255,1) 100%); +} +.btnGm{ + position: absolute; + bottom: 0; + right: 0; + width: 118rpx; + height: 52rpx; + line-height: 52rpx; + text-align: center; + color: #fff; + float: right; + font-size: 28rpx; + border: 2rpx solid #2C8DFF; + border-radius: 30rpx; +} + +.payment view:nth-child(2) text { + font-size: 26rpx; + color: #FFFFFF; +} +.txGm{ + font-size: 26rpx!important; + color: #2C8DFF!important; +} +.dingdan { + margin-top: 33rpx; +} + +.dingdan text:nth-of-type(1) { + display: block; + font-size: 34rpx; + color: #333; + letter-spacing: 0; + text-align: center; +} + +.dingdan text:nth-of-type(2) { + display: block; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: center; +} + +.dingdan image { + display: block; + width: 300rpx; + height: 300rpx; + margin: 0 auto 16rpx; +} + +.loading { + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-size: 26rpx; + color: #999; +} + +.loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; +} +button::after{ border: none; } +.goback{ + position: fixed; + right: 50rpx; + bottom: 60rpx; + width:100rpx!important; + height:100rpx; + z-index: 100; + background:rgba(255,255,255,1); + line-height: 95rpx; + border:1rpx solid rgba(227,227,227,1); + border-radius:50%; +} +.goback image{ + position: absolute; + width: 60rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} +.itemBox{ + overflow: hidden; + margin: 0 60rpx 20rpx 60rpx; + padding-bottom: 20rpx; + position: relative; +} +.payStatus{ + text-align: right; +} +.payStatus .sucess { + display: inline-block; + width: 123rpx !important; + /* overflow: hidden; */ + font-family:PingFangSC-Regular; + font-size: 28rpx; + font-weight:400; + color: #2C8DFF; + letter-spacing: 0; + text-align: right; + line-height: 26px; +} +.itemImg{ + float: left; + display: block; + width: 120rpx; + height: 120rpx; + border: 1px solid #f8f8f8; + border-radius: 20rpx; +} +.itemImg image { + display: block; + width: 120rpx; + height: 120rpx; + border-radius: 20rpx; +} +.itemContent{ + float: left; + width: 70%; +} +.face{ + font-size: 24rpx; + color: #999; + letter-spacing: 0; + padding-left: 4%; + line-height: 33rpx; +} +.face text{ + font-size: 24rpx; + color: #333; + letter-spacing: 0; + line-height: 33rpx; + +} +.date{ + /* margin-top: 16rpx; */ + font-size: 24rpx; + color: #999; + letter-spacing: 0; + padding-left: 4%; + line-height: 26rpx; + +} +.yunfe{ + font-size: 24rpx; + color: #999; + letter-spacing: 0; + padding-left: 4%; + height: 33rpx; + line-height: 33rpx; +} +.yunfeK{ + font-size: 24rpx; + color: #999; + letter-spacing: 0; + padding-left: 4%; + height: 25rpx; + line-height: 33rpx; +} \ No newline at end of file diff --git a/pages/orderquanma/index.js b/pages/orderquanma/index.js new file mode 100644 index 0000000..278f818 --- /dev/null +++ b/pages/orderquanma/index.js @@ -0,0 +1,236 @@ +// let util = require("../../utils/util"); +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +let Http = require("../../utils/HttpBasics"); +let config = require("../../config/config.js"); +let app = getApp(); +const imgurl = require("../../utils/imgurl"); +const QR = require("../../utils/memberqrcode.js"); +Page({ + data: { + navigationBarHeight, + btomLineUrl: imgurl.btomLine.url, + topLineUrl: imgurl.topLine.url, + lineUrl: imgurl.line.url, + wm01Url: imgurl.wm01.url, + wm02Url: imgurl.wm02.url, + wm03Url: imgurl.wm03.url, + wm04Url: imgurl.wm04.url, + upDataRqUrl: imgurl.upDataRq.url, + upDataRqUrlF: imgurl.upDataRqF.url, + code: "", + //存储计时器 + setInter: "", + staticGamedata: {}, + showIf: false, + curHtml: '', + contentType: 0, + showhieRq: false, + dynamicRq: "", + expiredSeconds: 0, + templTiem: "" + }, + gotogame: function () { + let that = this; + tt.navigateTo({ + url: '/pages/game/index?url=' + that.data.staticGamedata.url + "&id=" + that.data.staticGamedata.id + "&gameId=" + that.data.staticGamedata.gameId, + }) + }, + // 获取游戏 + getStaticGame(token) { + let _this = this; + Http.get({ + url: config.api.getGame, + data: { + triggleAction: 4 // 核销触发 + } + }).then(res => { + if (res.data.id) { + _this.setData({ + showIf: true + }) + } + _this.setData({ + staticGamedata: res.data + }) + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + + setRq() { + let _this = this + _this.setData({ + showhieRq: false, + }) + Http.get({//获取动态二维码 + url: config.api.dynamicId, + data: { + couponOrderId: _this.data.code + } + }).then(res => { + console.log(res, "res") + _this.setData({ + dynamicRq: res.data.dynamicId, + expiredSeconds: res.data.expiredSeconds + }) + + let url = JSON.stringify({ + END: "C", + TYPE: "couponorder", + ID: _this.data.dynamicRq + }) + + let inre = setInterval(() => { + if (_this.data.expiredSeconds > 1) { + _this.setData({ + expiredSeconds: _this.data.expiredSeconds - 1 + }) + console.log("有效", _this.data.expiredSeconds) + } else { + console.log("无效", _this.data.expiredSeconds) + clearInterval(_this.data.templTiem) + _this.setData({ + showhieRq: true + }) + } + }, 1000) + _this.setData({ + templTiem: inre + }) + // util.qrcode("qrcode", url, 350, 350); + _this.createQrCode(url, "qrcode", 350, 350); + }).catch(err => { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + + onLoad: function (options) { //quancode + console.log(options) + console.log(app.globalData.curHtml) + let that = this; + // let value = JSON.stringify({ END: "C", TYPE: "couponorder", ID: options.quancode}) + // that.createQrCode(value, "qrcode", 350, 350); + that.setData({ + code: options.quancode, + title: options.title, + subtitle: options.subtitle, + remark: options.remark, + couponorderstatus: options.couponorderstatus, + validStatus: options.validstatus, + contentType: options.contentType + }); + if (options.couponorderstatus==0){ + that.setRq()//动态获取二维码 这个方法必须在拿到 options.quancode 后调用 + } + + if (options.contentType != undefined && options.contentType==1) { + this.setData({ + curHtml: app.globalData.curHtml + }) + } + /** + * 如果没有核销 + */ + that.data.setInter = setInterval(function () { + if (that.data.couponorderstatus == 0) { + Http.get({ + url: config.api.getStatus, + data: { + couponOrderId: options.quancode + } + }).then(res => { + console.log(res); + that.setData({ + couponorderstatus: res.data.CouponOrderStatus + }); + if (res.data.CouponOrderStatus == 1) { + /** + * 动态改变上一级页面的核销状态 + */ + that.getStaticGame() + var pages = getCurrentPages(); + var prevPage = pages[pages.length - 2]; //上一个页面 + //直接调用上一个页面的setData()方法,把数据存到上一个页面中去 + prevPage.setData({ + mystatus: res.data.CouponOrderStatus + }); + } + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + }, 2000); + + if (that.data.couponorderstatus == 1) { + /** + * 如果已经核销 + * 不需要循环 + */ + Http.get({ + url: config.api.getStatus, + data: { + couponOrderId: options.quancode + } + }).then(res => { + that.setData({ + couponorderstatus: res.data.CouponOrderStatus + }); + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + /** + * couponorderstatus + * 0 没有核销 + * 1 已经核销成功 + */ + }, + createQrCode: function (url, canvasId, cavW, cavH) { + //调用插件中的draw方法,绘制二维码图片 + let that = this; + QR.api.draw(url, canvasId, cavW, cavH, function (res) { + that.setData({ + tempFilePath: res + }) + }); + }, + onUnload: function () { + let that = this; + clearInterval(that.data.setInter); + clearInterval(that.data.templTiem); + }, + onHide: function () { + let that = this; + clearInterval(that.data.setInter); + clearInterval(that.data.templTiem); + }, + // onHide:function(){ + // console.log(app.globalData.sight) + // tt.setScreenBrightness({ + // value: app.globalData.sight, + // }) + // } +}); diff --git a/pages/orderquanma/index.json b/pages/orderquanma/index.json new file mode 100644 index 0000000..f42c7a6 --- /dev/null +++ b/pages/orderquanma/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/orderquanma/index.ttml b/pages/orderquanma/index.ttml new file mode 100644 index 0000000..7b96f1f --- /dev/null +++ b/pages/orderquanma/index.ttml @@ -0,0 +1,62 @@ + + + + + {{title}} + + + + + + + + + + + + + + + + + + 点一点刷新二维码 + + 二维码在 + {{expiredSeconds}}s + 后失效 + + 兑换码:{{code}} + + + + + + + + + + {{data.remark}} + + + + + + + + + + 用户专享神秘礼物 + 独家福利,抢完即止 + + + diff --git a/pages/orderquanma/index.ttss b/pages/orderquanma/index.ttss new file mode 100644 index 0000000..fab3a01 --- /dev/null +++ b/pages/orderquanma/index.ttss @@ -0,0 +1,265 @@ +@import "../../app.ttss"; + +.couponBox{ + height: 100%; + margin-top: 20rpx; + background:linear-gradient(180deg,rgba(253,131,45,1) 0%,rgba(254,74,22,1) 100%); +} +page { + background: linear-gradient(180deg,rgba(253,131,45,1) 0%,rgba(254,74,22,1) 100%); + height: auto !important; +} +.couponbg { + position: relative; + background: #fff; + overflow: hidden; + width: 92%; + margin: 0 auto 6%; + border-radius: 16rpx; + padding-bottom: 20rpx; +} +.coedTiem{ + text-align: center; + color: rgba(253,131,45,1); + margin-bottom: 20rpx; +} + +.title { + line-height: 36rpx; + text-align: center; + padding-top: 54rpx; + font-size: 32rpx; + color: #1f2d3d; + letter-spacing: 0; +} + +.subtitle { + color: #7f8b9e; + font-size: 26rpx; + line-height: 30rpx; + margin-top: 16rpx; + text-align: center; +} + +.line { + height: 10rpx; + display: block; + width: 100%; + margin-top: 20rpx; +} + +.panel, .zhuangtai image { + width:500rpx; + display:block; + border-radius:10rpx; + margin:0 auto; + padding:0; + z-index:10000; +} +.panel{ + position: relative; +} + +.pane2 { + background: #fff; + opacity: 0.6; +} + +.pane2 image { + width: 500rpx; + display: block; + margin: 40rpx auto 0; +} + +.barcode { + height: 100rpx; + width: 500rpx; + margin: 0 auto; +} + +.barnum { + height: 46rpx; + line-height: 46rpx; + font-size: 24rpx; + text-align: center; + letter-spacing: 2rpx; + white-space: nowrap; + color: #7f7f7f; +} + +.barnum text { + display: inline-block; + vertical-align: top; + font-size: 24rpx; + color: #999; + letter-spacing: 0; + margin-right: 6rpx; +} + +.barcode > canvas { + width: 500rpx; + height: 100rpx; +} + +.qrcode { + position: relative; + height: 360rpx; + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: center; +} + +.qrcode > canvas { + width: 350rpx; + height: 350rpx; +} + +.jine { + color: #f96563 !important; + font-size: 36rpx !important; +} + +.buy-view { + background: #fff; + position: fixed; + padding-top: 10rpx; + height: 98rpx; + bottom: 0rpx; + left: 0; + right: 0; +} + +.buy { + background: #fff; + height: 88rpx; + width: 100%; + margin: 0 auto 40rpx; + line-height: 88rpx; + border: 2rpx solid #ccc; + border-radius: 10px; + font-size: 36rpx; + color: #333; + letter-spacing: 0; +} + +.mai { + font-size: 24rpx; + color: #919191; + letter-spacing: 0; +} + +.remark { + padding-top: 17rpx; + font-size: 24rpx; + color: #333; + letter-spacing: 0; + line-height: 42rpx; +} +/* 小游戏入口 + */ + .game-entry{ + width: 690rpx; + height: 140rpx; + margin: 0 auto; + border-radius: 14rpx; + box-shadow: 1px 4px 20px #C4C4C4; + background: #fff; +} +.game { + position: relative; + width: 750rpx; + height: 200rpx; + margin: 0 auto; + padding-top: 30rpx; + box-sizing: border-box; +} +.gameimg{ + position: absolute; + right: 25rpx; + top: -14rpx; + width: 250rpx; +} +.game text { + display: block; + position: relative; +} + +.game text:nth-of-type(1) { + display: inline-block; + padding-top: 39rpx; + padding-left: 70rpx; + font-size: 32rpx; + color: #333; + line-height: 36rpx; +} + +.game text:nth-of-type(2) { + font-size: 24rpx; + color: #999; + line-height: 24rpx; + padding-left: 70rpx; +} + +.notes view:nth-child(1) { + height: 87rpx; + line-height: 87rpx; + background: #fff; +} + +.notes { + width: 92%; + margin: 0 auto; +} +.notes view:nth-child(1) text { + color: #333; + letter-spacing: 0; + font-size: 30rpx; + height: 70rpx; + line-height: 70rpx; +} + +.notes view:nth-child(2) { + background: #fff; + display: flex; + flex-direction: column; +} + +.notes view:nth-child(2)>text { + font-size: 24rpx; + color: #919191; + letter-spacing: 0; + line-height: 42rpx; +} +.closeRq{ + position: absolute; + width: 420rpx; + height: 420rpx; + line-height: 420rpx; + text-align: center; + background-color: rgba(0, 0, 0, 0.8); + left: 50%; top: 42%; + transform: translate(-50%, -50%); /* 50%为自身尺寸的一半 */ + z-index: 10000000; + color: #fff; + font-size: 38rpx; +} +.updataRqCode{ + width: 80rpx !important; + height: 80rpx; + margin-top: calc(50%-80rpx) !important; + margin-left: calc(50%-80rpx) !important; + display: inline-block !important; +} +.upDataRq{ + position: absolute; + width: 100%; + text-align: center; + height: 80rpx; + color: #fff ; + top: 20%; + left: 0; +} +/* rich-text img{ + max-width: 100%; +} */ diff --git a/pages/questionnaire/questionnaire.js b/pages/questionnaire/questionnaire.js new file mode 100644 index 0000000..cdb5d9f --- /dev/null +++ b/pages/questionnaire/questionnaire.js @@ -0,0 +1,265 @@ +// pages/questionnaire/questionnaire.js +const Http = require("../../utils/HttpBasics"); +var config = require("../../config/config.js"); +const util = require("../../utils/util.js"); +var app = getApp(); +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + id: "", + question: {}, + userDetails: "", + thenDate: "", + }, + //设置选中项 + setLsit(e) { + if (this.data.userDetails != "") { + return + } + let index1 = e.currentTarget.dataset.index1 + let index2 = e.currentTarget.dataset.index2 + let tempList = this.data.question + if (tempList.topicList[index1].type == 1) { + tempList.topicList[index1].answers.map(item => { + item.falg = false + + }) + tempList.topicList[index1].answers[index2].falg = !tempList.topicList[index1].answers[index2].falg + } else { + tempList.topicList[index1].answers[index2].falg = !tempList.topicList[index1].answers[index2].falg + } + + this.setData({ + question: tempList + }) + }, + //提交 + save() { + let falg = false + let logList = [] + let tmepData = this.data.question.topicList + + tmepData.map(item => { + let tmepObj = {} + let tempArr = [] + tmepObj.topicId = item.id + item.answers.map(res => { + if (res.falg) { + tempArr.push(res.id) + item.complete = true + } + }) + tmepObj.answer = JSON.stringify(tempArr) + logList.push(tmepObj) + }) + tmepData.map(item => { + if (item.complete == null) { + falg = true + + } + }) + if (falg) { + tt.showToast({ + title: "您还有未答的题目!", + icon: 'none', + duration: 2000, + // mask: false + }); + return true + } + let param = { + questionId: this.data.id, + logList: logList + } + console.log(tmepData) + console.log(param, "param") + Http.post({ + url: config.api.submitQuestin, + data: param + }).then(res => { + let str = "" + if (this.data.question.rewardCredit) { + str = `感谢您的参与, + ${this.data.question.rewardCredit}积分已经到账啦` + } else { + str = `感谢您的参与!` + } + tt.showToast({ + title: str, + icon: 'none', + duration: 2000, + success: () => { + setTimeout(() => { + tt.reLaunch({ + url: '/index/index' + }) + }, 2000) + + } + // mask: false + }); + }).catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + // mask: false + }); + }) + }, + //是否授权手机号 + ifPhoneInfo() { + let that = this; + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }).then(res => { + return + }).catch(err => { + tt.navigateTo({ + url: `/pages/getuserinfo/index?path=wj&wjId=${this.data.id}`, + }) + }) + }, + + /* 判断是否授权*/ + userAuthorization() { + Http.get({ + url: config.api.checkUserStatus, + data: { + token: app.globalData.token + } + }).then(res => { + this.ifPhoneInfo() + }).catch(err => { + tt.navigateTo({ + url: `/pages/getuserinfo/index?fromflag=wj&wjId=${this.data.id}`, + }) + }) + }, + + //获取问卷详情 + getDetail() { + let param = { + id: this.data.id + } + Http.get({ + url: config.api.questionnaireDetail, + data: param + }).then(res => { + + + res.data.question.startDate_Sing = util.formatTime(res.data.question.startDate, "yyyy-MM-dd hh:mm") + res.data.question.endDate_Sing = util.formatTime(res.data.question.endDate, "yyyy-MM-dd hh:mm") + console.log(res.data.question) + if (res.data.userDetails) { + let temp = res.data.question.topicList + temp.map((item, index) => { + + // res.data.userDetails + item.answers.map(item2 => { + let tempArr = JSON.parse(res.data.userDetails.logList[index].answer) + if (tempArr.indexOf(item2.id) != -1) { + item2.falg = true + } + }) + }) + this.setData({ + userDetails: res.data.userDetails + }) + } + this.setData({ + question: res.data.question + }) + }).catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + // mask: false + }); + }) + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + + this.setData({ + id: options.id, + + }) + this.getDetail() + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.userAuthorization() + this.setData({ + thenDate: new Date().getTime() + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + var that = this; + var shareObj = { + title: "问卷详情", + path: `/pages/main/index?id=${that.data.id}&type=wj`, + success: function (res) { + if (res.errMsg == 'shareAppMessage:ok') { } + }, + fail: function (error) { + if (res.errMsg == 'shareAppMessage:fail cancel') { } else if (res.errMsg == 'shareAppMessage:fail') { } + } + }; + console.log(shareObj) + // 返回shareObj + return shareObj; + } +}) \ No newline at end of file diff --git a/pages/questionnaire/questionnaire.json b/pages/questionnaire/questionnaire.json new file mode 100644 index 0000000..5e6fbdf --- /dev/null +++ b/pages/questionnaire/questionnaire.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "navbar": "../../components/navbar/navbar" + }, + "navigationBarBackgroundColor": "#FD832D", + "navigationBarTextStyle": "white" + + } \ No newline at end of file diff --git a/pages/questionnaire/questionnaire.ttml b/pages/questionnaire/questionnaire.ttml new file mode 100644 index 0000000..9c6e500 --- /dev/null +++ b/pages/questionnaire/questionnaire.ttml @@ -0,0 +1,25 @@ + + + + + + + {{question.title}} + {{'答题时间:'+question.startDate_Sing+'至'+question.endDate_Sing}} + {{question.topDesc}} + + + + + {{ item.type==2? index+1 +'、'+item.title+'(可多选)':index+1 +'、'+item.title}} + {{item_2.name}} + + 未开始 + 已过期 + 提交 + 已参与 + 已下线 + 已上线 + \ No newline at end of file diff --git a/pages/questionnaire/questionnaire.ttss b/pages/questionnaire/questionnaire.ttss new file mode 100644 index 0000000..0905195 --- /dev/null +++ b/pages/questionnaire/questionnaire.ttss @@ -0,0 +1,117 @@ +/* pages/questionnaire/questionnaire.wxss */ + +page { + overflow-y: scroll !important; + } + + .Box { + background-color: rgba(242, 242, 242, 1); + overflow: hidden; + } + + .imgBox { + width: 96%; + height: 300rpx; + margin: 20rpx 15rpx; + border-radius: 6rpx; + /* background-color: aqua; */ + } + + .titleBox { + width: 96%; + margin: auto; + } + + .title { + font-size: 36rpx; + font-weight: 700; + color: #999; + margin-top: 10rpx; + } + + .content { + padding: 20rpx 0; + color: #999; + font-size: 32rpx; + /* overflow: hidden; + text-overflow: ellipsis; + height: 70rpx; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; */ + } + .hidBox{ + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.2) + } + .contcBox{ + width: 80%; + height: 300rpx; + background-color: #fff; + + } + .time{ + font-size: 32rpx; + padding: 10rpx 0; + color: #999; + } + .oneBox { + width: 96%; + margin: 20rpx auto; + background-color: #fff; + border-radius: 6rpx; + padding-bottom: 20rpx; + } + + .moreBox { + width: 96%; + margin: 20rpx auto; + background-color: #fff; + border-radius: 6rpx; + padding-bottom: 20rpx; + } + + .oneTitle { + font-weight: 700; + padding: 10rpx; + font-size: 36rpx; + margin: 10rpx auto; + } + + .item_hie { + text-align: center; + line-height: 68rpx; + margin-top: 10rpx; + } + + .item_show { + text-align: center; + line-height: 68rpx; + color: #fff; + background-color: rgba(243, 151, 56, 1); + margin-top: 10rpx; + } + .submit{ + width: 600rpx; + height: 80rpx; + background-color: rgba(0, 153, 255, 1); + color: #fff; + text-align: center; + line-height: 80rpx; + border-radius: 6rpx; + margin: 20rpx auto; + } + .invalid{ + width: 600rpx; + height: 80rpx; + background-color: rgba(0, 0, 0, 0.2); + color: #fff; + text-align: center; + line-height: 80rpx; + border-radius: 6rpx; + margin: 20rpx auto; + } \ No newline at end of file diff --git a/pages/questionnaire/questionnaireLsit/questionnaireLsit.js b/pages/questionnaire/questionnaireLsit/questionnaireLsit.js new file mode 100644 index 0000000..b3321a5 --- /dev/null +++ b/pages/questionnaire/questionnaireLsit/questionnaireLsit.js @@ -0,0 +1,121 @@ +// pages/questionnaire/questionnaireLsit/questionnaireLsit.js +const Http = require("../../../utils/HttpBasics"); +var config = require("../../../config/config.js"); +var app = getApp(); +var app = getApp(); +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + list: [], + pageNum: 1, + pageSize: 4, + thenDate:"", + }, + goDetails(e){ + let id = e.currentTarget.dataset.id + console.log(id) + tt.navigateTo({ + url: `/pages/questionnaire/questionnaire?id=${id}`, + }) + }, + getQuest() { //查询问卷 + let param = { + pageNum: this.data.pageNum, + pageSize: this.data.pageSize + } + Http.get({ + url: config.api.questionnaire, + data: param + }).then(res => { + if(this.data.pageNum<=1){ + let temp = res.data.list + this.setData({ + list: temp + }) + }else{ + let temp = res.data.list + let formerLsit = this.data.list + formerLsit.push(...temp) + this.setData({ + list:formerLsit + }) + } + }).catch(err=>{ + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + // mask: false + }); + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + this.getQuest() + this.setData({ + thenDate: new Date().getTime() + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + console.log("我到底了!") + let pageNumFlge = this.data.pageNum+1 + this.setData({ + pageNum: pageNumFlge + }) + this.getQuest() + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/questionnaire/questionnaireLsit/questionnaireLsit.json b/pages/questionnaire/questionnaireLsit/questionnaireLsit.json new file mode 100644 index 0000000..da8862c --- /dev/null +++ b/pages/questionnaire/questionnaireLsit/questionnaireLsit.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "navbar": "../../../components/navbar/navbar" + }, + "navigationBarBackgroundColor": "#FD832D", + "navigationBarTextStyle": "white" + } \ No newline at end of file diff --git a/pages/questionnaire/questionnaireLsit/questionnaireLsit.ttml b/pages/questionnaire/questionnaireLsit/questionnaireLsit.ttml new file mode 100644 index 0000000..9ffaa36 --- /dev/null +++ b/pages/questionnaire/questionnaireLsit/questionnaireLsit.ttml @@ -0,0 +1,18 @@ + + + 敬请期待! + + + + + {{item.title}} + {{item.topDesc}} + + 已完成 + 未开始 + 已结束 + {{thenDate}} + {{item.startDate}} + {{item.endDate}} + + diff --git a/pages/questionnaire/questionnaireLsit/questionnaireLsit.ttss b/pages/questionnaire/questionnaireLsit/questionnaireLsit.ttss new file mode 100644 index 0000000..553a374 --- /dev/null +++ b/pages/questionnaire/questionnaireLsit/questionnaireLsit.ttss @@ -0,0 +1,71 @@ +/* pages/questionnaire/questionnaireLsit/questionnaireLsit.wxss */ + +page { + overflow-y: scroll !important; +} + +.questionLsi { + background-color: #fff; + border-radius: 6rpx; + margin: 20rpx auto; + overflow: hidden; + width: 96%; + position: relative; + height: 520rpx; +} + +.img { + width: 96%; + margin: 20rpx 16rpx; + /* background-color: aqua; */ + height: 300rpx; +} + +.title { + width: 96%; + font-size: 36rpx; + font-weight: 700; + color: #999; + margin: auto; +} + +.conten { + width: 96%; + padding: 20rpx 0; + color: #999; + font-size: 32rpx; + margin: 0 auto 20rpx auto; + overflow: hidden; + text-overflow: ellipsis; + height: 70rpx; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.accomplish { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgb(0, 0, 0, 0.2); + text-align: center; + line-height: 480rpx; + color: #fff; + font-size: 36rpx; + font-weight: 700; +} + +.noData { + width: 100%; + z-index: 1000; + position: fixed; + top: 0; + left: 0; + text-align: center; + line-height: 100vh; + height: 100vh; + background-color: rgb(0, 0, 0, 0.2); + color: #fff; +} diff --git a/pages/searchbar/searchbar.js b/pages/searchbar/searchbar.js new file mode 100644 index 0000000..5043208 --- /dev/null +++ b/pages/searchbar/searchbar.js @@ -0,0 +1,195 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) +'px'; +const config = require("../../config/config"); +const Http = require("../../utils/HttpBasics"); +const imgurl = require("../../utils/imgurl"); +Page({ + data: { + result: [], + page: 1, + navigationBarHeight, + multiArray: [ + [], [] + ], + searchText: "请输入", + multiIndex: 0, + buildingFloor: [], + building: null, + floor: null, + teljpgUrl: imgurl.teljpg.url + }, + // lastSearch: Date.now(), + onShow(){ + this.getbuildingfloorlist(); + if (this.data.focus) { + this.setData({ + searchState: true + }); + } + }, + phone: function (e) { + let that = this; + if (e.currentTarget.dataset.merchantlinkphone) { + tt.makePhoneCall({ + phoneNumber: e.currentTarget.dataset.merchantlinkphone + }) + } + }, + gotoDetail(e) { + tt.navigateTo({ + url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}` + }) + }, + bindMultiPickerColumnChange: function (e) { + var data = { + multiArray: this.data.multiArray, + multiIndex: this.data.multiIndex + }; + console.log(e) + data.multiIndex[e.detail.column] = e.detail.value; + switch (e.detail.column) { + case 0: + data.multiArray[1] = this.data.buildingFloor[e.detail.value].floors; + break; + } + this.setData({ + multiArray: this.data.multiArray, + multiIndex: this.data.multiIndex + }) + }, + bindMultiPickerChange: function (e) { + // 楼座 building + // 楼层 floor + this.setData({ + multiIndex: e.detail.value, + building: this.data.multiArray[0][e.detail.value[0]], + floor: this.data.multiArray[1][e.detail.value[1]], + }) + this.getList(this.data.building.id, this.data.floor.id, 1); + this.setData({ + page:1 + }) + this.setData({ + searchText: this.data.building.name + this.data.floor.floorName + }) + }, + //获取楼层楼座 + getbuildingfloorlist() { + Http.get({ + url: config.api.getbuildingfloorlist, + data: { + } + }).then(res => { + if (res.data.length > 0) { + res.data.map(file => { + if (file.floors.length > 0) { + file.floors.map(ever => { + ever.name = ever.floorName + }) + } + }) + } + this.setData({ + buildingFloor: res.data + }) + this.setData({ + multiArray: [[...this.data.buildingFloor], [...this.data.buildingFloor[0].floors]] + }) + + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + getList: function (building, floor, page) { + let that = this; + let data = { + pageNum: page, + pageSize: 10, + building: building ? building : null, + floor: floor ? floor : null, + }; + Http.get({ + url: config.api.merchantList, + data: data + }).then(res => { + if (page == 1) { + that.setData({ + merchantVoList: [], + }) + } + var tmpArr = that.data.merchantVoList; + tmpArr.push.apply(tmpArr, res.data.list); + that.setData({ + merchantVoList: tmpArr, + isFirstPage: res.data.isFirstPage, + isLastPage: res.data.isLastPage + }) + }) + .catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + clearInput: function clearInput() { + this.setData({ + value: '' + }); + this.triggerEvent('clear'); + }, + inputFocus: function inputFocus(e) { + this.triggerEvent('focus', e.detail); + }, + inputBlur: function inputBlur(e) { + this.setData({ + focus: false + }); + this.triggerEvent('blur', e.detail); + }, + showInput: function showInput() { + this.setData({ + focus: true, + searchState: true + }); + }, + hideInput: function hideInput() { + this.setData({ + searchState: false + }); + this.setData({ + searchText: "请输入", + merchantVoList: [] + }) + }, + selectResult: function selectResult(e) { + var index = e.currentTarget.dataset.index; + var item = this.data.result[index]; + this.triggerEvent('selectresult', { + index: index, + item: item + }); + }, + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + let that = this; + that.data.page++; + that.setData({ + page: that.data.page + }); + // 如果是最后一页 + //就不发送请求 + if (!that.data.isLastPage || that.data.isFirstPage && that.data.isLastPage) { + this.getList(this.data.building.id, this.data.floor.id, that.data.page) + } + } +}) \ No newline at end of file diff --git a/pages/searchbar/searchbar.json b/pages/searchbar/searchbar.json new file mode 100644 index 0000000..002d3a9 --- /dev/null +++ b/pages/searchbar/searchbar.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "门店搜索", + "navigationBarBackgroundColor": "#F4F5F9", + "navigationBarTextStyle": "black", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/searchbar/searchbar.ttml b/pages/searchbar/searchbar.ttml new file mode 100644 index 0000000..b15cf1a --- /dev/null +++ b/pages/searchbar/searchbar.ttml @@ -0,0 +1,42 @@ + + + + + + + + + + 搜索搜索搜索搜索搜索搜索搜索搜索搜索搜索 + + + + + + + + + {{cancelText}} + + + + + + + 暂无数据 + + \ No newline at end of file diff --git a/pages/searchbar/searchbar.ttss b/pages/searchbar/searchbar.ttss new file mode 100644 index 0000000..e7eb15b --- /dev/null +++ b/pages/searchbar/searchbar.ttss @@ -0,0 +1,88 @@ +@import "../../weui.ttss"; +.weui-search-bar{position:relative;padding:8px;display:flex;box-sizing:border-box;background-color:#EDEDED;-webkit-text-size-adjust:100%;align-items:center}.weui-icon-search{margin-right:8px;font-size:14px;vertical-align:top;margin-top:.64em;height:1em;line-height:1em}.weui-icon-search_in-box{position:absolute;left:12px;top:50%;margin-top:-8px}.weui-search-bar__text{display:inline-block;font-size:14px;vertical-align:top}.weui-search-bar__form{position:relative;flex:auto;border-radius:4px;background:#FFFFFF}.weui-search-bar__box{position:relative;padding-left:32px;padding-right:32px;width:100%;box-sizing:border-box;z-index:1}.weui-search-bar__input{height:32px;line-height:32px;font-size:14px;caret-color:#07C160}.weui-icon-clear{position:absolute;top:0;right:0;bottom:0;padding:0 12px;font-size:0}.weui-icon-clear:after{content:"";height:100%;vertical-align:middle;display:inline-block;width:0;overflow:hidden}.weui-search-bar__label{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;border-radius:4px;text-align:center;color:rgba(0,0,0,0.5);background:#FFFFFF;line-height:32px}.weui-search-bar__cancel-btn{margin-left:8px;line-height:32px;color:#576B95;white-space:nowrap} +.pickers{ + width:560rpx; + height: 64rpx; + position: absolute; + left: 0; + top: 0; + bottom: 0; + margin: auto; + color: transparent; +} +.picker{ + position: relative; + z-index: 10000; + width:496rpx; + height: 64rpx; + overflow: hidden; +} + +.posi { + position: relative; + width: 716rpx; + margin: 0 auto; +} + +.posi>view:nth-child(2) { + width: 100%; + display: flex; + justify-content: space-between; + box-sizing: border-box; +} + +.posi>view:nth-child(2) text:nth-child(1) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi>view:nth-child(2) text:nth-child(2) { + font-size: 30rpx; + color: #a9a9a9; +} +.tel { + position: absolute; + right: 3%; + top: 0; + bottom: 0; + margin: auto; + width: 50rpx; + height: 50rpx; +} +.posi_logo { + position: relative; + height:176rpx; + background:rgba(255,255,255,1); + box-shadow:0px 4rpx 8rpx 0px rgba(0,0,0,0.04); + border-radius:16rpx; + margin: 20rpx; + overflow: hidden; +} +.merchants{ + width: 90%; + display: flex; + background: #fff; + padding-right:5%; + overflow: hidden; +} +.merchantName{ + display: block; + color: #3C3C3C; + font-size: 32rpx; + margin-left: 20rpx; + width: 90%; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} +.merchants view:nth-child(1) image { + display: block; + width: 120rpx; + height: 120rpx; + border-radius: 16rpx; +} +.position{ + text-align: center; + margin-top: 100rpx; + color: #999; +} \ No newline at end of file diff --git a/pages/specialcourtesy/specialcourtesy.js b/pages/specialcourtesy/specialcourtesy.js new file mode 100644 index 0000000..ddf36fc --- /dev/null +++ b/pages/specialcourtesy/specialcourtesy.js @@ -0,0 +1,72 @@ +const app = getApp() +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const Http = require("../../utils/HttpBasics"); +const config = require("../../config/config"); +const QR = require("../../utils/memberqrcode.js"); +Page({ + data: { + navigationBarHeight, + memberId:"", + level:"" + }, + getUserData(){ + Http.get({ + url:config.api.getDiscountInfo + }).then(res=>{ + console.log(res.data); + this.setData({ + memberId:res.data.id, + level:res.data.level + }) + this.qrcode(res.data.id); + }).catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + onLoad: function (options) { + this.getUserData() + }, + + qrcode: function (memberId){ + let that = this; + var size = that.setCanvasSize(); + let url = JSON.stringify({ + END: "C", + TYPE: "memberCode", + ID: memberId, + }); + that.createQrCode(url, "mycanvas2", 250, 250); + }, + createQrCode: function (url, canvasId, cavW, cavH) { + //调用插件中的draw方法,绘制二维码图片 + let that = this; + QR.api.draw(url, canvasId, cavW, cavH,function(res){ + that.setData({ + tempFilePath: res + }) + }); + }, + //适配不同屏幕大小的canvas + setCanvasSize: function () { + var size = {}; + try { + var res = tt.getSystemInfoSync(); + var scale = 750 / 400; + //不同屏幕下canvas的适配比例;设计稿是750宽 + var width = res.windowWidth / scale; + var height = width; + //canvas画布为正方形 + size.w = width; + size.h = height; + } catch (e) { + // Do something when catch error + console.log("获取设备信息失败" + e); + } + return size; + }, +}) \ No newline at end of file diff --git a/pages/specialcourtesy/specialcourtesy.json b/pages/specialcourtesy/specialcourtesy.json new file mode 100644 index 0000000..ff93d80 --- /dev/null +++ b/pages/specialcourtesy/specialcourtesy.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/specialcourtesy/specialcourtesy.ttml b/pages/specialcourtesy/specialcourtesy.ttml new file mode 100644 index 0000000..f0d7484 --- /dev/null +++ b/pages/specialcourtesy/specialcourtesy.ttml @@ -0,0 +1,36 @@ + + + + + + + + + 会员码: + {{memberId}} + + + 会员等级为 + [{{level}}] + 对应门店的优惠折扣 + + + + + + + 9 + 折 + + 百里 + + + A座一层 + + + + + + + + \ No newline at end of file diff --git a/pages/specialcourtesy/specialcourtesy.ttss b/pages/specialcourtesy/specialcourtesy.ttss new file mode 100644 index 0000000..5a796c0 --- /dev/null +++ b/pages/specialcourtesy/specialcourtesy.ttss @@ -0,0 +1,122 @@ +.BoxBg{ + background:linear-gradient(180deg,#FD832D 0%,#FE4A16 100%); + } + .rqBox{ + width: 90%; + background: #ffffff; + border-radius: 12rpx; + margin: 20rpx 5%; + height: 860rpx; + overflow: hidden; + } + + .arImgBox{ + width: 500rpx; + height: 500rpx; + margin: 80rpx auto 60rpx auto; +} +.memCode{ + width: 562rpx; + height: 88rpx; + line-height: 88rpx; + border-radius:16rpx; + border:1px solid rgba(225,225,225,1); + margin: 36rpx auto 0; + color: #666; + display: block; + font-size: 24rpx; + text-align: center; +} +.memText{ + float: left; + margin-left: 40rpx; + font-size: 24rpx; + color: #999; +} +.memNum{ + float: left; + font-weight:600; + font-size: 32rpx; + color: #3C3C3C; + font-family:PingFangSC-Medium; + /* text-align: center; */ +} +.con{ + color: #3C3C3C; + text-align: center; + font-size: 26rpx; + +} +.level{ + color: #FD832D; + display: inline-block; +} +.cardsBox{ + width: 90%; + margin: 20rpx 5%; + display: flex; + justify-content:space-between; + flex-wrap: wrap; + } +.cardsItemBox{ + width: 46%; + height: 200rpx; + border-radius: 12rpx; + background-color: #ffffff; + margin: 20rpx 0; + position: relative; +} +.triangle{ + width: 0px; + height: 0px; + border-color: transparent #dab055; + border-width: 0 0 110rpx 110rpx; + border-style: solid; + +} +.discount{ + position: absolute; +color: #fff; +width: 110rpx; +height: 100rpx; +font-size: 20rpx; +left: 13rpx; +top: -11rpx; +z-index: 10; +transform: rotate(315deg); + +} +.tit{ + font-size: 36rpx; + color: rgba(51, 51, 51, 1); + margin: -40rpx auto 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 280rpx; + text-align: center; +} +.footer{ + margin-top: 26rpx; + font-size: 26rpx; + font-weight: 500; + color: rgba(153, 153, 153, 1); + +} +.fl { + float: left; +} +.building{ + display: inline-block; +} +.fr { + float: right; +} +.pgoneImg{ + width: 24rpx; + margin-right: 33rpx; + position: absolute; + right: 0rpx; + bottom: 20rpx; + +} \ No newline at end of file diff --git a/pages/ticket/ticket.js b/pages/ticket/ticket.js new file mode 100644 index 0000000..770ce0e --- /dev/null +++ b/pages/ticket/ticket.js @@ -0,0 +1,132 @@ +const app = getApp() +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px" +const Http = require("../../utils/HttpBasics"); +const config = require("../../config/config"); +const util = require("../../utils/util"); +Page({ + data: { + navigationBarHeight, + boatLsit:[ + { + name:"未使用", + value:"0" + }, + { + name:"已使用", + value:"1" + }, + { + name:"已过期", + value:"2" + }, + { + name:"已退款", + value:"3" + }, + ], + boatFlag:"0", + content:"", + loading: false, //"上拉加载"的变量,默认false,隐藏 + pageNum:1, + allow_load: true, + list:[] + }, + setBoatFlag(e){ + let index = e.currentTarget.dataset.index + console.log(index); + this.setData({ + boatFlag:index, + pageNum:1, + list:[], + allow_load: true, + loading: false, //"上拉加载"的变量,默认false,隐藏 + }) + this.getList() + }, + getList(){ + let that = this + if (that.data.allow_load) { + that.setData({ + loading: true, + content: '小主,我在玩命加载中...' + }) + + Http.get({ + url:config.api.couponOrderList, + data:{ + pageNum:that.data.pageNum, + pageSize: 10, + couponOrderStatus:that.data.boatFlag=="all"?"":that.data.boatFlag, + + } + }).then(res=>{ + if(that.data.pageNum==1){ + that.setData({ + list: [] + }) + } + + let tempArr= that.data.list + if(tempArr.length>0){ + tempArr.map(item=>{ + item.createDate = util.formatTime(item.createDate, "yyyy-MM-dd hh:mm:ss"); + }) + } + + if(that.data.pageNum>=res.data.pages){ + that.setData({ + allow_load: false + }) + } + + if(that.data.pageNum>1){//分页 + that.setData({ + list: res.data.list?[...tempArr ,...res.data.list]:tempArr, + loading:false + }) + }else{ + let tempLsit = res.data.list?res.data.list:[] + if(tempLsit.length>0){ + tempLsit.map(item=>{ + item.createDate = util.formatTime(item.createDate, "yyyy-MM-dd hh:mm:ss"); + }) + } + that.setData({ + list: tempLsit, + loading:false + }) + } + }).catch(err => { + tt.showToast({ + title: err.message ? err.message : err.data, // 内容 + icon: "none" + }); + }) + }else { + that.setData({ + loading: true, + content: "——— 再拉裤子就掉了啦 ———" + }) + setTimeout(function () { + that.setData({ + loading: false, + }) + }, 1400) + } + + }, + onLoad: function (options) { + + }, + onReachBottom(){//触底 + console.log(111); + this.setData({ + pageNum:this.data.pageNum+1 + }) + this.getList() + }, + onShow:function(){ + this.getList() + } + +}) \ No newline at end of file diff --git a/pages/ticket/ticket.json b/pages/ticket/ticket.json new file mode 100644 index 0000000..6a6e95e --- /dev/null +++ b/pages/ticket/ticket.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "我的券包", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/pages/ticket/ticket.ttml b/pages/ticket/ticket.ttml new file mode 100644 index 0000000..4232d0a --- /dev/null +++ b/pages/ticket/ticket.ttml @@ -0,0 +1,38 @@ + + + + + + + + {{item.name}} + + + + + + + + + + + + + {{item.title}} + {{item.createDate}} + + + 去使用 + 查看 + + + + + + 您还没有相关订单 + 再忙,也要记得买点什么犒赏自己~ + + + {{content}} + + \ No newline at end of file diff --git a/pages/ticket/ticket.ttss b/pages/ticket/ticket.ttss new file mode 100644 index 0000000..510142a --- /dev/null +++ b/pages/ticket/ticket.ttss @@ -0,0 +1,193 @@ +.boatBoxf{ + width: 100%; + height: 90rpx; + position: fixed; + top: 0; + left: 0; +} +.boatBox{ + + width: 100%; + height: 90rpx; + display: flex; + justify-content: space-around; + background-color: #fff; +} +.boatTitle{ + font-size: 30rpx; + text-align: center; + height: 80rpx; + line-height: 80rpx; + color: #999; +} +.boatTitleA{ + font-size: 32rpx; + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-weight: 500; + +} +.boatA{ + width: 80rpx; + height: 6rpx; + background-color: #fb3e5c; + margin: 0 auto; + border-radius: 20rpx; +} +.ticketList{ + width: 90%; + margin: 20rpx auto ; + + overflow: hidden; +} +.ticketItem{ + float: left; + background-color: #fff; + border-radius: 20rpx; + width: 80%; + height: 140rpx; + overflow: hidden; +} +.useBtn{ + float: left; + border-radius: 20rpx; + width: 20%; + height: 140rpx; + line-height: 140rpx; + text-align: center; + color: #FFFFFF; + font-size: 30rpx; + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%) +} +.nouseBtn{ + float: left; + border-radius: 20rpx; + width: 20%; + height: 140rpx; + line-height: 140rpx; + text-align: center; + color: #FFFFFF; + font-size: 30rpx; + background: #CECECE; + +} +.shopImg{ + width: 88rpx; + height: 88rpx; + border: 1px solid #f8f8f8; + border-radius: 50rpx; + margin-left: 20rpx; + margin-top: 30rpx; + float: left; +} +.shopImg image{ + width: 100%; + height: 100%; + border: 1px solid #f8f8f8; + border-radius: 50rpx; +} +.ticketData{ + margin-left: 20rpx; + overflow: hidden; + float: left; +} +.ticketTitle{ + font-size: 32rpx; + margin-top: 30rpx; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 270rpx; + +} + +.date{ + font-size: 22rpx; + margin-top: 10rpx; +} +.date::before{ + content: "有效期至:"; + font-size: 26rpx; +} + +.loading { + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-size: 26rpx; + color: #999; + } + + .loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; + } + + .dingdan { + margin-top: 33rpx; + } + + .dingdan text:nth-of-type(1) { + display: block; + font-size: 34rpx; + color: #333; + letter-spacing: 0; + text-align: center; + } + + .dingdan text:nth-of-type(2) { + display: block; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: center; + } + + .dingdan image { + display: block; + width: 300rpx; + height: 300rpx; + margin: 0 auto 16rpx; + } + .wait{ + display: inline-block; + width: 123rpx !important; + overflow: visible!important; + font-size: 28rpx; + color: #FD832D; + letter-spacing: 0; + text-align: right; + line-height: 28rpx!important; + float: right; + margin: 20rpx; + } + + .sucess { + display: inline-block; + width: 123rpx !important; + /* overflow: hidden; */ + font-family:PingFangSC-Regular; + font-size: 28rpx; + font-weight:400; + color: #2C8DFF; + letter-spacing: 0; + text-align: right; + line-height: 26px; + float: right; + margin: 20rpx; + } + .close { + display: inline-block; + width: 123rpx !important; + overflow: hidden; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: right; + line-height: 28rpx; + float: right; + margin: 20rpx; + } \ No newline at end of file diff --git a/pages/ticketDetail/ticketDetail.js b/pages/ticketDetail/ticketDetail.js new file mode 100644 index 0000000..48e9359 --- /dev/null +++ b/pages/ticketDetail/ticketDetail.js @@ -0,0 +1,217 @@ +const app = getApp(); +const navigationBarHeight = (getApp().statusBarHeight + 44) + "px"; +const Http = require("../../utils/HttpBasics"); +const config = require("../../config/config"); +const util = require("../../utils/util"); +const QR = require("../../utils/memberqrcode.js"); +Page({ + data: { + navigationBarHeight, + couponorderstatus:"", + quancode:"", + setInter:"", + validStartDate:"", + validEndDate:"", + pickStartDate:"", + pickEndDate:"", + expiredTime:"", + updateDate:"", + createDate:"", + code:"", + data:{ + + }, + showhieRq:false, + dynamicRq:"", + expiredSeconds:0, + templTiem:"", + curHtml:"", + }, + getHtml(couponOrderId) { + Http.get({ + url: config.api.couponHtmlDetailForPkg, + data: { + couponOrderId: couponOrderId + } + }).then(res => { + console.log(res) + if (res.code == 200 && res.data.html) { + this.setData({ + curHtml: decodeURI(res.data.html) + }) + // app.globalData.curHtml = this.data.curHtml; + // console.log(app.globalData.curHtml) + } + }) + }, + onLoad: function (options) { + let that = this; + console.log(options); + that.setData({ + code: options.quancode, + couponorderstatus: options.couponorderstatus + }); + that.setRq()//动态二维码 //这个方法必须在拿到 options.quancode 后调用 + //初始数据不能延时收到写一边 + Http.get({ + url: config.api.couponOrderDetail, + data: { + couponOrderId: options.quancode + } + }).then(res => { + that.setData({ + couponorderstatus: res.data.couponOrderStatus, + data: res.data, + }); + that.setData({ + expiredTime: util.formatTime(that.data.data.expiredTime, "yyyy-MM-dd hh:mm:ss"), + updateDate: util.formatTime(that.data.data.updateDate, "yyyy-MM-dd hh:mm:ss"), + createDate: util.formatTime(that.data.data.createDate, "yyyy-MM-dd hh:mm:ss") + }); + if (res.data.contentType != undefined && res.data.contentType == 1) { + //获取图文展示详情html + that.setData({ + contentType: res.data.contentType + }) + that.getHtml(options.quancode); + } + if (that.data.data.validStartDate && that.data.data.validEndDate) { + that.setData({ + validStartDate: util.formatTime(that.data.data.validStartDate, "yyyy-MM-dd hh:mm:ss"), + validEndDate: util.formatTime(that.data.data.validEndDate, "yyyy-MM-dd hh:mm:ss"), + // pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd hh:mm:ss"), + // pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd hh:mm:ss"), + }) + } + + }).catch(err => { + tt.showToast({ + title: err.message?err.message:err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + // + + + + + //获得优惠券的详情 + let setInter = setInterval(function () { + if ( + options.quancode && + that.data.couponorderstatus == 0 + ) { + + Http.get({ + url: config.api.couponOrderDetail, + data: { + couponOrderId: options.quancode + } + }).then(res => { + that.setData({ + couponorderstatus: res.data.couponOrderStatus, + data: res.data, + }); + + that.setData({ + expiredTime: util.formatTime(that.data.data.expiredTime, "yyyy-MM-dd hh:mm:ss"), + updateDate: util.formatTime(that.data.data.updateDate, "yyyy-MM-dd hh:mm:ss"), + createDate: util.formatTime(that.data.data.createDate, "yyyy-MM-dd hh:mm:ss") + }); + if (that.data.data.validStartDate && that.data.data.validEndDate) { + that.setData({ + validStartDate: util.formatTime(that.data.data.validStartDate, "yyyy-MM-dd hh:mm:ss"), + validEndDate: util.formatTime(that.data.data.validEndDate, "yyyy-MM-dd hh:mm:ss"), + // pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd hh:mm:ss"), + // pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd hh:mm:ss"), + }) + } + + }).catch(err => { + tt.showToast({ + title: err.message?err.message:err.data, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } + }, 2000); + that.setData({ + setInter:setInter + }) + }, + setRq(){ + let _this = this + _this.setData({ + showhieRq: false, + }) + Http.get({//获取动态二维码 + url: config.api.dynamicId, + data: { + couponOrderId: _this.data.code + } + }).then(res => { + console.log(res, "res") + _this.setData({ + dynamicRq: res.data.dynamicId, + expiredSeconds: res.data.expiredSeconds + }) + + let url = JSON.stringify({ + END: "C", + TYPE: "couponorder", + ID: _this.data.dynamicRq + }) + + let inre = setInterval(()=>{ + if(_this.data.expiredSeconds>1){ + _this.setData({ + expiredSeconds: _this.data.expiredSeconds-1 + }) + console.log("有效",_this.data.expiredSeconds) + }else{ + console.log("无效", _this.data.expiredSeconds) + clearInterval(_this.data.templTiem) + _this.setData({ + showhieRq:true + }) + } + },1000) + _this.setData({ + templTiem:inre + }) + // util.qrcode("qrcode", url, 350, 350); + _this.createQrCode(url, "qrcode", 210, 210); + }).catch(err => { + tt.showToast({ + title: err.message, + icon: 'none', + duration: 4000, + mask: false + }); + }) + }, + + createQrCode: function (url, canvasId, cavW, cavH) { + //调用插件中的draw方法,绘制二维码图片 + let that = this; + QR.api.draw(url, canvasId, cavW, cavH, function (res) { + that.setData({ + tempFilePath: res + }) + }); + }, + onUnload: function () { + let that = this; + clearInterval(that.data.setInter); + clearInterval(that.data.templTiem); + }, + onHide: function () { + let that = this; + clearInterval(that.data.setInter); + clearInterval(that.data.templTiem); + }, +}) \ No newline at end of file diff --git a/pages/ticketDetail/ticketDetail.json b/pages/ticketDetail/ticketDetail.json new file mode 100644 index 0000000..2490acb --- /dev/null +++ b/pages/ticketDetail/ticketDetail.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "使用优惠券", + "usingComponents": { + "navbar": "../../components/navbar/navbar", + "store":"../../components/store/index" + } +} \ No newline at end of file diff --git a/pages/ticketDetail/ticketDetail.ttml b/pages/ticketDetail/ticketDetail.ttml new file mode 100644 index 0000000..bf680f1 --- /dev/null +++ b/pages/ticketDetail/ticketDetail.ttml @@ -0,0 +1,69 @@ + + + + + + + + + + + {{data.title}} + {{data.subTitle}} + + ¥{{data.couponPrice/100}} + ¥{{data.price/100}} + 过期不退款 + + 有效期至:{{expiredTime}} + 满{{data.usePrice/100}}元可用 + 仅限本店使用 + + + + + + + + + + + + + + 点一点刷新二维码 + + 二维码在 + {{expiredSeconds}}s + 后失效 + + {{code}} + + + + + + + + + + 实付金额: + + {{data.couponPrice/100}} + + {{createDate}} + {{updateDate}} + {{updateDate}} + {{updateDate}} + + {{data.orderId}} + + + 购买须知 + {{data.remark}} + + + + + + \ No newline at end of file diff --git a/pages/ticketDetail/ticketDetail.ttss b/pages/ticketDetail/ticketDetail.ttss new file mode 100644 index 0000000..530745e --- /dev/null +++ b/pages/ticketDetail/ticketDetail.ttss @@ -0,0 +1,284 @@ +.BoxBg{ + height: 100%; + background: linear-gradient(180deg,rgba(253,131,45,1) 0%,rgba(254,74,22,1) 100%); + overflow: hidden; +} + +.container { + + background: #fff; + width: 92%; + margin: 8% auto 6% auto; + border-radius: 16rpx; + text-align: center; +} +.quanDataBox{ + /* margin-top: 60rpx; */ + overflow: hidden; +} +.qianTitle{ + font-size: 32rpx; +} +.payBox{ + display: flex; + justify-content: center; +} +.selling{ + font-size: 30rpx; + color: rgba(253,131,45,1); + margin-top: 10rpx; +} +.original{ + color: #999; + font-size: 26rpx; + text-decoration: line-through; + margin-left: 20rpx; + margin-top: 14rpx; +} +.past{ + font-size: 24rpx!important; + color: red!important; + border: 1px solid red; + padding: 3rpx; + float: left; + margin-left: 10rpx; + font-size: 26rpx; + height: 40rpx; + line-height: 40rpx; + margin-top: 10rpx; + +} +.timevalidity{ + font-size: 22rpx; + color: #999; + letter-spacing: 0; + margin: 6rpx 0 10rpx 0; +} +.subhead{ + font-size: 26rpx; + color: #999; + letter-spacing: 0; + text-align: center; + line-height: 37rpx; + padding: 0 10rpx; + +} +.manjian{ + margin-left: 26rpx; + color: #999!important; + font-size: 26rpx !important; + text-align: center; + +} +.line{ + height: 10rpx; + display: block; + width: 100%; + margin-top: 20rpx; + +} +.zhuangtai{ + margin-bottom: 20rpx; +} +.panel{ + overflow: hidden; + position: relative; +} +.rqImg{ + /* background-color: aqua; */ + width: 600rpx; + height: 440rpx; + display: block; + border-radius: 10rpx; + margin: 20rpx auto; + padding: 0; + overflow: hidden; +} +.barnum{ + background: #fff; + height: 88rpx; + width: 600rpx; + margin: 0 auto; + line-height: 88rpx; + border: 2rpx solid #ccc; + border-radius: 10px; + font-size: 36rpx; + color: #333; + letter-spacing: 0; + text-align: center; + +} +.barnum::before{ + content: "优惠券码:"; + font-size: 24rpx; + color: #999; +} +.shopData{ + margin-top: 20rpx; + text-align: left; +} +.shopTexx{ + font-size: 30rpx; + height: 70rpx; + line-height: 70rpx; + text-indent: 1em; + color: #333; + background: #fff; + margin: 20rpx 0; +} +.posi{ + overflow: hidden; + height: 70px; + +} +.note{ + text-align: left; + +} +.shiji{ + width: 22%; + text-indent: 30rpx; + text-align: left; + font-size: 24rpx; + color: #333; + letter-spacing: 1.16rpx; + margin-left: 20rpx; +} +.moneys{ + + font-size: 40rpx !important; + color: #ff4949 !important; + letter-spacing: 0; + float: right; + +} +.orderDate::before{ + content: "下单时间:"; + margin-left: 20rpx; +} +.orderDate{ + font-size: 24rpx; + color: #333; + letter-spacing: 1.16rpx; + margin: 10rpx 0; +} + +.orderDate1::before{ + content: "核销时间:"; + margin-left: 20rpx; +} +.orderDate1{ + font-size: 24rpx; + color: #333; + letter-spacing: 1.16rpx; + margin: 10rpx 0; +} + +.orderDate2::before{ + content: "过期时间:"; + margin-left: 20rpx; +} +.orderDate2{ + font-size: 24rpx; + color: #333; + letter-spacing: 1.16rpx; + margin: 10rpx 0; +} + +.orderDate3::before{ + content: "退款时间:"; + margin-left: 20rpx; +} +.orderDate3{ + font-size: 24rpx; + color: #333; + letter-spacing: 1.16rpx; + margin: 10rpx 0; +} + +.orderNum::before{ + content: "订单编号:"; + margin-left: 20rpx; +} +.orderNum{ + font-size: 24rpx; + color: #333; + letter-spacing: 1.16rpx; + margin: 10rpx 0; +} +.notes{ + margin: 20rpx; + text-align: left; +} + +.notesText{ + font-size: 30rpx; + color: #333; + letter-spacing: 0; + +} +.introduce{ + font-size: 28rpx; + color: #333; +} +.closeRq{ + position: absolute; + width: 420rpx; + height: 400rpx; + line-height: 400rpx; + text-align: center; + background-color: rgba(0, 0, 0, 0.8); + left: 50%; top: 42%; + transform: translate(-50%, -50%); /* 50%为自身尺寸的一半 */ + z-index: 10000000; + color: #fff; + font-size: 38rpx; +} +.updataRqCode{ + width: 80rpx !important; + height: 80rpx; + margin-top: calc(50%-80rpx) !important; + margin-left: calc(50%-80rpx) !important; + display: inline-block !important; +} +.upDataRq{ + position: absolute; + width: 100%; + text-align: center; + height: 80rpx; + color: #fff ; + top: 20%; + left: 0; +} +.rich_text{ + width: 100%; + height: 100%; +} +.rich_text p { + width: 100% !important; +} +.rich_text img{ + max-width: 100% !important; +} +.logoBox{ + position: relative; + width: 100%; + height: 80rpx; +} + +.logo{ + position: absolute; + width: 100rpx; + height: 100rpx; + border-radius: 50%; + top: -50%; + display: block; + left: 44%; + z-index: 1000000; +} +.coedTiem{ + text-align: center; + color: rgba(253,131,45,1); + margin-bottom: 10rpx; + font-size: 30rpx; + } \ No newline at end of file diff --git a/pages/topicDetail/index.js b/pages/topicDetail/index.js new file mode 100644 index 0000000..6908149 --- /dev/null +++ b/pages/topicDetail/index.js @@ -0,0 +1,109 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +let config = require("../../config/config.js"); +let app = getApp(); +const Http = require("../../utils/HttpBasics"); +const util = require("../../utils/util"); +const imgurl = require("../../utils/imgurl"); +Page({ + data: { + mouldType: 0, + navigationBarHeight, + data: { + bgColor:"#fff" + }, + wmhome: imgurl.wmhome.url, + couponId: null, + orderId: "", + day: "", + hour: "", + minute: "", + nodes: '', + id:'', + }, + onLoad(options){ + this.setData({ + mouldType: app.globalData.mouldType + }) + console.log(options) + if(options&&options.id){ + this.setData({ + id:options.id + }) + this.topicShow(options.id) + } + }, + goback: function () { + tt.reLaunch({ + url: '/index/index', + }) + }, + topicShow(id){ + let that = this; + Http.get({ + url: config.api.topicFindById, + data: { + id: id + } + }).then(res => { + console.log(res) + if (res&&res.data) { + that.setData({ + data: res.data + }); + /** + * 获取屏幕的高度 + * + */ + let query = tt.createSelectorQuery(); + query.select('.coupons').boundingClientRect(); + query.selectViewport().scrollOffset(); + query.exec((res) => { + let listHeight = res[0].height; // 获取list高度 + let windowHeight = tt.getSystemInfoSync().windowHeight; + if (windowHeight >= listHeight){ + that.setData({ + winHeight:'100%' + }) + } + }) + } + }).catch(err => { + tt.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + gotoDetail:function(e){ + if (e.currentTarget.dataset.type == 9){ + console.log("平团") + tt.navigateTo({ + url: `/pages/spellGroup/mySpellGroup/index?couponChannelId=${e.currentTarget.dataset.couponchannelid}`, + }) + }else{ + console.log("优惠卷") + tt.navigateTo({ + url: `/pages/coupon/detail/index?couponChannelId=${e.currentTarget.dataset.couponchannelid}&couponId=${e.currentTarget.dataset.couponid}`, + }) + } + }, + onShareAppMessage: function (options) { + var that = this; + var shareObj = { + title: "专题活动", + path: `/pages/main/index?id=${that.data.id}&type=td`, + success: function (res) { + if (res.errMsg == 'shareAppMessage:ok') { } + }, + fail: function (error) { + if (res.errMsg == 'shareAppMessage:fail cancel') { } else if (res.errMsg == 'shareAppMessage:fail') { } + } + }; + console.log(shareObj) + // 返回shareObj + return shareObj; + } + +}); diff --git a/pages/topicDetail/index.json b/pages/topicDetail/index.json new file mode 100644 index 0000000..9136d3d --- /dev/null +++ b/pages/topicDetail/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "活动详情", + "usingComponents": { + "navbar": "../../components/navbar/navbar" + } + } \ No newline at end of file diff --git a/pages/topicDetail/index.ttml b/pages/topicDetail/index.ttml new file mode 100644 index 0000000..3edad48 --- /dev/null +++ b/pages/topicDetail/index.ttml @@ -0,0 +1,51 @@ + + + + + + + + + {{data.name}} + {{data.title}} + + {{data.content}} + + + + + + + + + + + + + + {{item.title}} + {{item.subTitle}} + + {{item.salePriceStr}} + + 满¥{{item.usePriceStr}}可用 + + + 仅限本店使用 + + + + + + + + 免费领 + 马上购 + + + + + + \ No newline at end of file diff --git a/pages/topicDetail/index.ttss b/pages/topicDetail/index.ttss new file mode 100644 index 0000000..43c3e43 --- /dev/null +++ b/pages/topicDetail/index.ttss @@ -0,0 +1,558 @@ +@import "../../app.ttss"; +.coupons { + width: 100%; + position: relative; + padding-bottom:57rpx; +} + +.coupons-body { + flex: 1; + /* overflow: auto; */ +} + +.banner { + position: relative; + width: 100%; +} + +.banner image { + display: block; + width: 100%; + border-radius: 12rpx; +} + +.act { + position: relative; + z-index: 1000; + background: #fff; + border-radius: 12rpx; + width: 94%; + margin: 24rpx auto 0; + padding-bottom: 20rpx; +} + +.act view { + padding-left: 4.8%; + padding-right: 4.8%; +} + +.txt001 { + /* display: block; */ + font-size: 34rpx; + color: #363636; + letter-spacing: 0; + text-align: left; + line-height: 48rpx; + padding-top: 3.2%; +} + +.txt002 { + font-size: 24rpx; + color: #999; + letter-spacing: 0; + text-align: left; + line-height: 33rpx; +} + +.proct { + position: relative; + /* height: 60rpx; */ + margin-top: 20rpx; +} + +.proct text:nth-of-type(1) { + display: block; + font-size: 30rpx; + letter-spacing: 0; + line-height: 42rpx; + margin-bottom: 20rpx; + text-align: left!important; + /* width: 60rpx; */ + /* height: 64rpx; */ +} + +.proct text:nth-of-type(2) { + display: block; + /* width: 498rpx; */ + /* height: 63rpx; */ + /* overflow: hidden; */ + word-wrap:break-word; + /* text-overflow: ellipsis; */ + font-size: 22rpx; + color: #6f6f6f; + letter-spacing: 0; + margin: 0 auto; +} + +.orbg { + position: absolute; + top: 256rpx; + z-index: 1000000; +} + +.banner text { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto; + width: 122rpx; + height: 48rpx; + line-height: 48rpx; + opacity: 0.8; + background: #000; + font-size: 24rpx; + color: #fff; + letter-spacing: 0; + text-indent: 0.5em; + border-top-left-radius: 50rpx; + border-bottom-left-radius: 50rpx; +} + +.coupons_info { + width: 92%; + height: 120rpx; + display: flex; + justify-content: space-between; + padding: 0 4% 4%; + background: #fff; +} + +.coupons_info view { + display: flex; + flex-direction: column; +} + +.coupons_info view:nth-child(1) text { + font-size: 30rpx; + line-height: 32rpx; + margin-top: 10%; +} + +.coupons_info view:nth-child(1) text:nth-child(1) text { + color: #ff3434; + font-size: 24rpx; + border: 1px solid #ff3434; + border-radius: 6rpx; + margin-left: 2%; + padding: 0 5rpx; +} + +.coupons_info view:nth-child(1) text:nth-child(2), +.coupons_info view:nth-child(1) text:nth-child(3) { + color: #b8b8b8; + font-size: 24rpx; + margin-top: 4%; +} + +.coupons_info view:nth-child(1) text:nth-child(2) text, +.coupons_info view:nth-child(1) text:nth-child(3) text { + color: #ff3434; + font-size: 24rpx; +} + +.coupons_info view:nth-child(2) text:nth-child(1) { + font-size: 36rpx; + color: #ff3434; + margin-top: 40rpx; + font-weight: bold; +} + +.coupons_info view:nth-child(2) text:nth-child(2) { + font-size: 24rpx; + color: #b4b4b4; + text-decoration: line-through; + padding-left: 10rpx; + padding-top: 4rpx; +} + +.navigator { + display: block; + margin-bottom: 24rpx; + width: 344rpx; +} + +.navigator-hover{ + opacity: 1!important; + background: #fff!important; + border-radius:16rpx; +} +.active{ + opacity: .6; +} +.navigator:nth-of-type(2n) { + float: right; +} + +.navigator:nth-of-type(2n+1) { + float: left; +} + +.contain { + padding: 24rpx 25rpx 0; +} + +.posi { + width: 92%; + display: flex; + flex-direction: column; + padding: 0 4%; + background: #fff; + margin-top: 2%; +} + +.posi>view:nth-child(2) { + width: 100%; + height: 87rpx; + display: flex; + justify-content: space-between; + border-top: 1px solid #f6f6f6; + line-height: 87rpx; +} + +.posi>view:nth-child(2) text:nth-child(1) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi>view:nth-child(2) text:nth-child(2) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi_logo { + width: 100%; + height: 156rpx; + display: flex; + margin-top: 30rpx; +} + +.posi_logo view:nth-child(1) { + width: 126rpx; + height: 126rpx; + border-radius: 50%; + overflow: hidden; + flex: 2; +} + +.posi_logo view:nth-child(1) image { + width: 100%; + height: 100%; +} + +.posi_logo view:nth-child(2) { + display: flex; + flex-direction: column; + flex: 8; + padding-top: 20rpx; + padding-left: 30rpx; +} + +.posi_logo view:nth-child(2) text:nth-child(1) { + font-size: 30rpx; +} + +.posi_logo view:nth-child(2) text:nth-child(2) { + font-size: 24rpx; + color: #b8b8b8; + padding-top: 10rpx; +} + +.notes view:nth-child(1) { + width: 92%; + height: 87rpx; + padding: 0 4%; + line-height: 87rpx; + background: #fff; + /* border-top: 1rpx solid #f5f5f5; */ +} + +.notes view:nth-child(1) text { + font-size: 30rpx; + font-weight: bold; +} + +.notes view:nth-child(2) { + width: 92%; + height: auto; + padding: 0 4% 4%; + background: #fff; + /* border-bottom: 1rpx solid #f5f5f5; */ + display: flex; + flex-direction: column; +} + +.notes view:nth-child(2)>text { + font-size: 28rpx; + color: #a9a9a9; + line-height: 45rpx; +} + +.spot { + width: 12rpx; + height: 12rpx; + display: inline-block; + background: #a9a9a9; + margin-right: 16rpx; + position: relative; + bottom: 4rpx; + border-radius: 50%; +} + +.buy-view { + background: #fff; + position: fixed; + padding-top: 10rpx; + height: 98rpx; + bottom: 0rpx; + left: 0; + right: 0; +} + +.buy { + display: block; + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius: 30rpx; + height: 48rpx; + width: 112rpx; + margin: 0 auto; + color: #fff; + font-size: 26rpx; + line-height: 48rpx; + text-align: center; +} + +.coupons1-btn-gm { + background: #00c0ff !important; + border-radius: 10rpx !important; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold; + font-size: 28rpx; + color: #fff !important; + letter-spacing: 0; + height: 50rpx !important; + width: 138rpx !important; + line-height: 50rpx !important; +} + +.coupons1 { + position: relative; + background: #fff; + border-radius: 16rpx; + padding-bottom: 21rpx; + overflow: hidden; + height: 400rpx; +} + +/* .coupons1-border { + height: 1rpx; + left: 30rpx; + right: 30rpx; + background: #f5f5f5; + position: absolute; + bottom: 0; +} */ + +.coupons1-img { + width: 344rpx; + height: 233rpx; + overflow: hidden; +} + +.coupons1-img image { + display: block; + width: 100%; + height: 233rpx; +} + +.coupons1-info { + padding-left: 20rpx; +} + +.coupons1-info-name { + font-size: 28rpx; + color: #000; + letter-spacing: 0; +} + +.i { + font-size: 20rpx; + font-style: normal; +} + +.coupons1-info-price-p { + display: inline-block; + font-size: 36rpx; + color: #f96563; + line-height: 50rpx; + margin-top: 21rpx; +} + +.tit { + font-size: 30rpx; + color: #000; + letter-spacing: 0; + line-height: 42rpx; + width: 270rpx; + height: 42rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-top: 16rpx; +} + +.coupons1-info-price-o { + display: block; + text-align: center; + font-size: 26rpx; + color: #b4b4b4; + letter-spacing: 0.96rpx; + text-decoration: line-through; + line-height: 24rpx; +} + +.coupons1-info-distance { + font-size: 22rpx; + color: #c0c0c0; + letter-spacing: 0; + padding-bottom: 10rpx; + line-height: 30rpx; +} + +.coupons1-info-address { + font-size: 22rpx; + color: #585858; + letter-spacing: 0; + line-height: 30rpx; +} + +.coupons1-btn { + position: absolute; + width: 120rpx; + bottom: 25rpx; + right: 13rpx; +} + +.coupons1-btn-gm { + background: #00c0ff !important; + border-radius: 10rpx !important; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold; + font-size: 28rpx; + color: #fff !important; + letter-spacing: 0; + height: 50rpx !important; + width: 138rpx !important; + line-height: 50rpx !important; +} + +.subtitle { + font-size: 24rpx; + font-weight: 100; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + width: 300rpx; + color: #999; + height: 38rpx; + letter-spacing: 0; +} + +.coupons1-info-manjian { + color: #fa7c7a; + font-size: 20rpx; + line-height: 34rpx; + display: inline-block; +} + +.jian { + width: 44rpx; + position: absolute; + bottom: 1.7%; + right: 3.5%; +} + +/**上拉加载更多**/ + +.userinfo { + display: flex; + flex-direction: column; + align-items: center; +} + +.userinfo-avatar { + width: 128rpx; + height: 128rpx; + margin: 20rpx; + border-radius: 50%; +} + +.userinfo-nickname { + color: #aaa; +} + +.sy { + display: block; + text-align: center; + width: 120rpx !important; + margin-top: 6rpx; +} + +.usermotto { + margin-top: 200px; +} + +/**/ + +scroll-view { + width: 100%; +} + +.item { + width: 90%; + height: 300rpx; + margin: 20rpx auto; + background: brown; + overflow: hidden; +} + +.item .img { + width: 430rpx; + margin-right: 20rpx; + float: left; +} + +.title { + font-size: 30rpx; + display: block; + margin: 30rpx auto; +} +.description { + font-size: 26rpx; + line-height: 15rpx; +} +button::after{ border: none; } +.goback{ + position: fixed; + right: 50rpx; + bottom: 60rpx; + width:100rpx!important; + height:100rpx; + z-index: 100; + background:rgba(255,255,255,1); + line-height: 95rpx; + border:1rpx solid rgba(227,227,227,1); + border-radius:50%; +} +.goback image{ + position: absolute; + width: 60rpx; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..29e45b0 --- /dev/null +++ b/project.config.json @@ -0,0 +1,39 @@ +{ + "setting": { + "urlCheck": true, + "es6": true, + "newFeature": false, + "postcss": false, + "mockUpdate": false, + "minified": false, + "scripts": false, + "mockLogin": false + }, + "appid": "ttef6599d8705b49b101", + "projectname": "tt富茂C", + "condition": { + "miniprogram": { + "current": -1, + "list": [ + { + "id": 1647410836514, + "name": "10积分兑换代金券一张", + "pathName": "pages/index/index", + "query": "couponChannelId=660689095507763200", + "scene": "", + "launchFrom": "", + "location": "" + }, + { + "id": 1648016638517, + "name": "鸭鸭服饰", + "pathName": "pages/index/index", + "query": "id=666438721331978240&frommd=md&type=md", + "scene": "", + "launchFrom": "", + "location": "" + } + ] + } + } +} diff --git a/utils/HttpBasics.js b/utils/HttpBasics.js new file mode 100644 index 0000000..74858ba --- /dev/null +++ b/utils/HttpBasics.js @@ -0,0 +1,119 @@ +const config = require("../config/config.js"); +class HttpBasics { + constructor(address) { + if (address) { + this.address = address; + } + } + /** + * 配置 + */ + config = config; + /** + * 请求路径前缀 + */ + address ='https://ctest.malls.iformall.com/C/api';//测试 + // address ='https://c.jcwise.cn/tt/api';//生产 + /** + * 请求头 + */ + headers = { + "Content-Type": "application/json;charset=UTF-8", + token: "", + // token:"3ab2afa2-f704-4086-b6e5-ad0715c7e2a1:1027:tt-cuser" + }; + /** + * 设置token + * @param {*} token + */ + setToken(token) { + this.headers.token = token; + } + /** + * 获取数据 + * @param {url,data,headers} param0 + */ + get({ url, data, headers }) { + headers = { ...this.headers, ...headers }; + url = `${this.address}${url}`; + return new Promise((resolve, reject) => { + tt.request({ + url: url, + header: headers, + data: data, + method: "get", + success: res => { + this.responseMap(res, resolve, reject); + }, + fail: err => { + console.log(err) + if (err.errMsg == 'request:fail timeout') { + err.errMsg = '请求超时,请检查您的网络设置!' + } else if (err.errMsg == 'request:fail'){ + err.errMsg = '未检查到您的网络,请检查您的网络设置!' + } else if (err.errMsg == 'request:fail request connect error') { + err.errMsg = '连接失败' + } + reject(err); + } + }); + }); + } + /** + * 提交数据 + * @param {url,data,headers} param0 + */ + post({ url, data, headers }) { + headers = { ...this.headers, ...headers }; + url = `${this.address}${url}`; + return new Promise((resolve, reject) => { + tt.request({ + url: url, + header: headers, + data: data, + method: "post", + success: res => { + this.responseMap(res, resolve, reject); + }, + fail: err => { + if (err.errMsg == 'request:fail timeout') { + err.errMsg = '请求超时,请检查您的网络设置!' + } else if (err.errMsg == 'request:fail') { + err.errMsg = '未检查到您的网络,请检查您的网络设置!' + } else if (err.errMsg == 'request:fail request connect error') { + err.errMsg = '连接失败' + } + reject(err); + }, + complete: res => {} + }); + }); + } + /** + * 过滤 请求信息 + * @param {*} res + * @param {*} resolve + * @param {*} reject + */ + responseMap = (res, resolve, reject) => { + // 网络状态码200 + if (res.statusCode == 200) { + // 服务器code 200 成功 + if (res.data.code == 200) { + resolve(res.data); + } else if (res.data.code == 1052) { + tt.reLaunch({ + url: '/pages/index/index' + }) + } else { + reject(res.data); + } + } else { + console.log("请求出错:", res); + reject(res.data); + } + }; + /** 日志 */ + log(url, body, headers) {} +} +module.exports = new HttpBasics(); diff --git a/utils/barcode.js b/utils/barcode.js new file mode 100644 index 0000000..0a94287 --- /dev/null +++ b/utils/barcode.js @@ -0,0 +1,392 @@ +var CHAR_TILDE = 126; +var CODE_FNC1 = 102; + +var SET_STARTA = 103; +var SET_STARTB = 104; +var SET_STARTC = 105; +var SET_SHIFT = 98; +var SET_CODEA = 101; +var SET_CODEB = 100; +var SET_STOP = 106; + + +var REPLACE_CODES = { + CHAR_TILDE: CODE_FNC1 //~ corresponds to FNC1 in GS1-128 standard +} + +var CODESET = { + ANY: 1, + AB: 2, + A: 3, + B: 4, + C: 5 +}; + +function getBytes(str) { + var bytes = []; + for (var i = 0; i < str.length; i++) { + bytes.push(str.charCodeAt(i)); + } + return bytes; +} + +exports.code128 = function(ctx, text, width, height) { + + width = parseInt(width); + + height = parseInt(height); + + var codes = stringToCode128(text); + + var g = new Graphics(ctx, width, height); + + var barWeight = g.area.width / ((codes.length - 3) * 11 + 35); + + var x = g.area.left; + var y = g.area.top; + for (var i = 0; i < codes.length; i++) { + var c = codes[i]; + //two bars at a time: 1 black and 1 white + for (var bar = 0; bar < 8; bar += 2) { + var barW = PATTERNS[c][bar] * barWeight; + // var barH = height - y - this.border; + var barH = height - y; + var spcW = PATTERNS[c][bar + 1] * barWeight; + + //no need to draw if 0 width + if (barW > 0) { + g.fillFgRect(x, y, barW, barH); + } + + x += barW + spcW; + } + } + + ctx.draw(); +} + + +function stringToCode128(text) { + + var barc = { + currcs: CODESET.C + }; + + var bytes = getBytes(text); + //decide starting codeset + var index = bytes[0] == CHAR_TILDE ? 1 : 0; + + var csa1 = bytes.length > 0 ? codeSetAllowedFor(bytes[index++]) : CODESET.AB; + var csa2 = bytes.length > 0 ? codeSetAllowedFor(bytes[index++]) : CODESET.AB; + barc.currcs = getBestStartSet(csa1, csa2); + barc.currcs = perhapsCodeC(bytes, barc.currcs); + + //if no codeset changes this will end up with bytes.length+3 + //start, checksum and stop + var codes = new Array(); + + switch (barc.currcs) { + case CODESET.A: + codes.push(SET_STARTA); + break; + case CODESET.B: + codes.push(SET_STARTB); + break; + default: + codes.push(SET_STARTC); + break; + } + + + for (var i = 0; i < bytes.length; i++) { + var b1 = bytes[i]; //get the first of a pair + //should we translate/replace + if (b1 in REPLACE_CODES) { + codes.push(REPLACE_CODES[b1]); + i++ //jump to next + b1 = bytes[i]; + } + + //get the next in the pair if possible + var b2 = bytes.length > (i + 1) ? bytes[i + 1] : -1; + + codes = codes.concat(codesForChar(b1, b2, barc.currcs)); + //code C takes 2 chars each time + if (barc.currcs == CODESET.C) i++; + } + + //calculate checksum according to Code 128 standards + var checksum = codes[0]; + for (var weight = 1; weight < codes.length; weight++) { + checksum += (weight * codes[weight]); + } + codes.push(checksum % 103); + + codes.push(SET_STOP); + + //encoding should now be complete + return codes; + + function getBestStartSet(csa1, csa2) { + //tries to figure out the best codeset + //to start with to get the most compact code + var vote = 0; + vote += csa1 == CODESET.A ? 1 : 0; + vote += csa1 == CODESET.B ? -1 : 0; + vote += csa2 == CODESET.A ? 1 : 0; + vote += csa2 == CODESET.B ? -1 : 0; + //tie goes to B due to my own predudices + return vote > 0 ? CODESET.A : CODESET.B; + } + + function perhapsCodeC(bytes, codeset) { + for (var i = 0; i < bytes.length; i++) { + var b = bytes[i] + if ((b < 48 || b > 57) && b != CHAR_TILDE) + return codeset; + } + return CODESET.C; + } + + //chr1 is current byte + //chr2 is the next byte to process. looks ahead. + function codesForChar(chr1, chr2, currcs) { + var result = []; + var shifter = -1; + + if (charCompatible(chr1, currcs)) { + if (currcs == CODESET.C) { + if (chr2 == -1) { + shifter = SET_CODEB; + currcs = CODESET.B; + } else if ((chr2 != -1) && !charCompatible(chr2, currcs)) { + //need to check ahead as well + if (charCompatible(chr2, CODESET.A)) { + shifter = SET_CODEA; + currcs = CODESET.A; + } else { + shifter = SET_CODEB; + currcs = CODESET.B; + } + } + } + } else { + //if there is a next char AND that next char is also not compatible + if ((chr2 != -1) && !charCompatible(chr2, currcs)) { + //need to switch code sets + switch (currcs) { + case CODESET.A: + shifter = SET_CODEB; + currcs = CODESET.B; + break; + case CODESET.B: + shifter = SET_CODEA; + currcs = CODESET.A; + break; + } + } else { + //no need to shift code sets, a temporary SHIFT will suffice + shifter = SET_SHIFT; + } + } + + //ok some type of shift is nessecary + if (shifter != -1) { + result.push(shifter); + result.push(codeValue(chr2)); + } else { + if (currcs == CODESET.C) { + //include next as well + result.push(codeValue(chr1, chr2)); + } else { + result.push(codeValue(chr1)); + } + } + barc.currcs = currcs; + + return result; + } +} + +//reduce the ascii code to fit into the Code128 char table +function codeValue(chr1, chr2) { + if (typeof chr2 == "undefined") { + return chr1 >= 32 ? chr1 - 32 : chr1 + 64; + } else { + return parseInt(String.fromCharCode(chr1) + String.fromCharCode(chr2)); + } +} + +function charCompatible(chr, codeset) { + var csa = codeSetAllowedFor(chr); + if (csa == CODESET.ANY) return true; + //if we need to change from current + if (csa == CODESET.AB) return true; + if (csa == CODESET.A && codeset == CODESET.A) return true; + if (csa == CODESET.B && codeset == CODESET.B) return true; + return false; +} + +function codeSetAllowedFor(chr) { + if (chr >= 48 && chr <= 57) { + //0-9 + return CODESET.ANY; + } else if (chr >= 32 && chr <= 95) { + //0-9 A-Z + return CODESET.AB; + } else { + //if non printable + return chr < 32 ? CODESET.A : CODESET.B; + } +} + +var Graphics = function(ctx, width, height) { + + this.width = width; + this.height = height; + this.quiet = Math.round(this.width / 40); + + this.border_size = 0; + this.padding_width = 0; + + this.area = { + width: width - this.padding_width * 2 - this.quiet * 2, + height: height - this.border_size * 2, + top: this.border_size - 4, + left: this.padding_width + this.quiet + }; + + this.ctx = ctx; + this.fg = "#000000"; + this.bg = "#ffffff"; + + // fill background + this.fillBgRect(0, 0, width, height); + + // fill center to create border + this.fillBgRect(0, this.border_size, width, height - this.border_size * 2); +} + +//use native color +Graphics.prototype._fillRect = function(x, y, width, height, color) { + this.ctx.setFillStyle(color) + this.ctx.fillRect(x, y, width, height) +} + +Graphics.prototype.fillFgRect = function(x, y, width, height) { + this._fillRect(x, y, width, height, this.fg); +} + +Graphics.prototype.fillBgRect = function(x, y, width, height) { + this._fillRect(x, y, width, height, this.bg); +} + +var PATTERNS = [ + [2, 1, 2, 2, 2, 2, 0, 0], // 0 + [2, 2, 2, 1, 2, 2, 0, 0], // 1 + [2, 2, 2, 2, 2, 1, 0, 0], // 2 + [1, 2, 1, 2, 2, 3, 0, 0], // 3 + [1, 2, 1, 3, 2, 2, 0, 0], // 4 + [1, 3, 1, 2, 2, 2, 0, 0], // 5 + [1, 2, 2, 2, 1, 3, 0, 0], // 6 + [1, 2, 2, 3, 1, 2, 0, 0], // 7 + [1, 3, 2, 2, 1, 2, 0, 0], // 8 + [2, 2, 1, 2, 1, 3, 0, 0], // 9 + [2, 2, 1, 3, 1, 2, 0, 0], // 10 + [2, 3, 1, 2, 1, 2, 0, 0], // 11 + [1, 1, 2, 2, 3, 2, 0, 0], // 12 + [1, 2, 2, 1, 3, 2, 0, 0], // 13 + [1, 2, 2, 2, 3, 1, 0, 0], // 14 + [1, 1, 3, 2, 2, 2, 0, 0], // 15 + [1, 2, 3, 1, 2, 2, 0, 0], // 16 + [1, 2, 3, 2, 2, 1, 0, 0], // 17 + [2, 2, 3, 2, 1, 1, 0, 0], // 18 + [2, 2, 1, 1, 3, 2, 0, 0], // 19 + [2, 2, 1, 2, 3, 1, 0, 0], // 20 + [2, 1, 3, 2, 1, 2, 0, 0], // 21 + [2, 2, 3, 1, 1, 2, 0, 0], // 22 + [3, 1, 2, 1, 3, 1, 0, 0], // 23 + [3, 1, 1, 2, 2, 2, 0, 0], // 24 + [3, 2, 1, 1, 2, 2, 0, 0], // 25 + [3, 2, 1, 2, 2, 1, 0, 0], // 26 + [3, 1, 2, 2, 1, 2, 0, 0], // 27 + [3, 2, 2, 1, 1, 2, 0, 0], // 28 + [3, 2, 2, 2, 1, 1, 0, 0], // 29 + [2, 1, 2, 1, 2, 3, 0, 0], // 30 + [2, 1, 2, 3, 2, 1, 0, 0], // 31 + [2, 3, 2, 1, 2, 1, 0, 0], // 32 + [1, 1, 1, 3, 2, 3, 0, 0], // 33 + [1, 3, 1, 1, 2, 3, 0, 0], // 34 + [1, 3, 1, 3, 2, 1, 0, 0], // 35 + [1, 1, 2, 3, 1, 3, 0, 0], // 36 + [1, 3, 2, 1, 1, 3, 0, 0], // 37 + [1, 3, 2, 3, 1, 1, 0, 0], // 38 + [2, 1, 1, 3, 1, 3, 0, 0], // 39 + [2, 3, 1, 1, 1, 3, 0, 0], // 40 + [2, 3, 1, 3, 1, 1, 0, 0], // 41 + [1, 1, 2, 1, 3, 3, 0, 0], // 42 + [1, 1, 2, 3, 3, 1, 0, 0], // 43 + [1, 3, 2, 1, 3, 1, 0, 0], // 44 + [1, 1, 3, 1, 2, 3, 0, 0], // 45 + [1, 1, 3, 3, 2, 1, 0, 0], // 46 + [1, 3, 3, 1, 2, 1, 0, 0], // 47 + [3, 1, 3, 1, 2, 1, 0, 0], // 48 + [2, 1, 1, 3, 3, 1, 0, 0], // 49 + [2, 3, 1, 1, 3, 1, 0, 0], // 50 + [2, 1, 3, 1, 1, 3, 0, 0], // 51 + [2, 1, 3, 3, 1, 1, 0, 0], // 52 + [2, 1, 3, 1, 3, 1, 0, 0], // 53 + [3, 1, 1, 1, 2, 3, 0, 0], // 54 + [3, 1, 1, 3, 2, 1, 0, 0], // 55 + [3, 3, 1, 1, 2, 1, 0, 0], // 56 + [3, 1, 2, 1, 1, 3, 0, 0], // 57 + [3, 1, 2, 3, 1, 1, 0, 0], // 58 + [3, 3, 2, 1, 1, 1, 0, 0], // 59 + [3, 1, 4, 1, 1, 1, 0, 0], // 60 + [2, 2, 1, 4, 1, 1, 0, 0], // 61 + [4, 3, 1, 1, 1, 1, 0, 0], // 62 + [1, 1, 1, 2, 2, 4, 0, 0], // 63 + [1, 1, 1, 4, 2, 2, 0, 0], // 64 + [1, 2, 1, 1, 2, 4, 0, 0], // 65 + [1, 2, 1, 4, 2, 1, 0, 0], // 66 + [1, 4, 1, 1, 2, 2, 0, 0], // 67 + [1, 4, 1, 2, 2, 1, 0, 0], // 68 + [1, 1, 2, 2, 1, 4, 0, 0], // 69 + [1, 1, 2, 4, 1, 2, 0, 0], // 70 + [1, 2, 2, 1, 1, 4, 0, 0], // 71 + [1, 2, 2, 4, 1, 1, 0, 0], // 72 + [1, 4, 2, 1, 1, 2, 0, 0], // 73 + [1, 4, 2, 2, 1, 1, 0, 0], // 74 + [2, 4, 1, 2, 1, 1, 0, 0], // 75 + [2, 2, 1, 1, 1, 4, 0, 0], // 76 + [4, 1, 3, 1, 1, 1, 0, 0], // 77 + [2, 4, 1, 1, 1, 2, 0, 0], // 78 + [1, 3, 4, 1, 1, 1, 0, 0], // 79 + [1, 1, 1, 2, 4, 2, 0, 0], // 80 + [1, 2, 1, 1, 4, 2, 0, 0], // 81 + [1, 2, 1, 2, 4, 1, 0, 0], // 82 + [1, 1, 4, 2, 1, 2, 0, 0], // 83 + [1, 2, 4, 1, 1, 2, 0, 0], // 84 + [1, 2, 4, 2, 1, 1, 0, 0], // 85 + [4, 1, 1, 2, 1, 2, 0, 0], // 86 + [4, 2, 1, 1, 1, 2, 0, 0], // 87 + [4, 2, 1, 2, 1, 1, 0, 0], // 88 + [2, 1, 2, 1, 4, 1, 0, 0], // 89 + [2, 1, 4, 1, 2, 1, 0, 0], // 90 + [4, 1, 2, 1, 2, 1, 0, 0], // 91 + [1, 1, 1, 1, 4, 3, 0, 0], // 92 + [1, 1, 1, 3, 4, 1, 0, 0], // 93 + [1, 3, 1, 1, 4, 1, 0, 0], // 94 + [1, 1, 4, 1, 1, 3, 0, 0], // 95 + [1, 1, 4, 3, 1, 1, 0, 0], // 96 + [4, 1, 1, 1, 1, 3, 0, 0], // 97 + [4, 1, 1, 3, 1, 1, 0, 0], // 98 + [1, 1, 3, 1, 4, 1, 0, 0], // 99 + [1, 1, 4, 1, 3, 1, 0, 0], // 100 + [3, 1, 1, 1, 4, 1, 0, 0], // 101 + [4, 1, 1, 1, 3, 1, 0, 0], // 102 + [2, 1, 1, 4, 1, 2, 0, 0], // 103 + [2, 1, 1, 2, 1, 4, 0, 0], // 104 + [2, 1, 1, 2, 3, 2, 0, 0], // 105 + [2, 3, 3, 1, 1, 1, 2, 0] // 106 +] \ No newline at end of file diff --git a/utils/bgColor.js b/utils/bgColor.js new file mode 100644 index 0000000..99c3b1a --- /dev/null +++ b/utils/bgColor.js @@ -0,0 +1,38 @@ +module.exports = { + colorFirst:{ + // 我的 + "user": { + "banneColor": "linear-gradient(180deg,rgba(253,131,45,1) 0%,rgba(254,74,22,1) 100%)", + "levelBg":"linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%)", + "view":"#FD832D", + "backColor":"#cc6633" + }, + //首页 + "main": { + "chengzhangBox":"linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%)", + "activeColor":"#FC8B37", + "qg":"#FD782D", + "sql":"linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%)", + "txt": "#2C8DFF", + }, + + }, + colorSecond:{ + // 我的 + "user": { + "banneColor": "linear-gradient(180deg,rgba(50,177,252,1) 0%,rgba(47,108,255,1) 100%)", + "levelBg": "linear-gradient(180deg,rgba(50,177,252,1) 0%,rgba(47,108,255,1) 100%)", + "view": "#FF1D30" + }, + //首页 + "main": { + "chengzhangBox": "linear-gradient(130deg,rgba(50,177,252,1) 0%,rgba(47,108,255,1) 100%)", + "activeColor": "#2C8DFF", + "qg": "#31A5FC", + "sql": "linear-gradient(127deg,rgba(119,192,254,1) 0%,rgba(48,120,255,1) 100%)", + "txt":"#FF1D30", + }, + } + + +} \ No newline at end of file diff --git a/utils/creditType.js b/utils/creditType.js new file mode 100644 index 0000000..3ec9fc7 --- /dev/null +++ b/utils/creditType.js @@ -0,0 +1,19 @@ +let creditType=[ + { name: "每日登录", value: "1" }, + { name: "消费", value: "2" }, + { name: "绑车牌", value: "3" }, + { name: "连接WIFI", value: "4" }, + { name: "微信昵称授权", value: "5" }, + { name: "微信用户手机授权", value: "6" }, + { name: "完善个人信息", value: "7" }, + { name: "积分导入", value: "8" }, + { name: "消费积分", value: "9" }, + { name: "新增积分", value: "10" }, + { name: "积分兑换", value: "11" }, + { name: "消费积分", value: "12" }, + { name: "活动报名", value: "13" }, + { name: "积分清零计划", value: "14" } +] +module.exports = { + creditType +} \ No newline at end of file diff --git a/utils/imgurl.js b/utils/imgurl.js new file mode 100644 index 0000000..324c831 --- /dev/null +++ b/utils/imgurl.js @@ -0,0 +1,776 @@ +const baseUrl = 'https://formall.oss-accelerate.aliyuncs.com/cimg/' +module.exports = { + 'upDataRq':{ + 'url': baseUrl + "upDataRq.png", + "name":"" + }, + 'upDataRqF': { + 'url': baseUrl + "upDataRqF.png", + "name": "" + }, + 'xiangshang':{ + 'url': baseUrl +"xiangshang.png", + "name":"" + }, + 'map':{ + 'url': baseUrl + "ditufubiao.png", + "name": "" + }, + 'concealBnt':{ + "url": baseUrl +'xiala.png', + "naem":'' + }, + 'act': { + 'url': baseUrl + 'act.png', + 'name': '' + }, + 'shoppingAtlas':{ + 'url': baseUrl + 'shoppingAtlas.png', + 'name': '' + }, + 'shareDefaultTp':{ + 'url': baseUrl +'mall_default.jpg', + 'name':'' + }, + 'active': { + 'url': baseUrl + 'active.gif', + 'name': '' + }, + 'add': { + 'url': baseUrl + 'add.png', + 'name': '' + }, + 'jiaofeiwm':{ + 'url': baseUrl + 'jiaofeiwm.png', + 'name': '缴费规则' + }, + 'addr-white': { + 'url': baseUrl + 'addr-white.png', + 'name': '' + }, + 'guanbi1': { + 'url': baseUrl + 'guanbi1.png', + 'name': '首页游戏的关闭按钮' + }, + 'usergift': { + 'url': baseUrl + 'usergift.gif', + 'name': '首页悬浮游戏入口' + }, + 'addr': { + 'url': baseUrl + 'addr.png', + 'name': '' + }, + 'addresslogo': { + 'url': baseUrl + 'addresslogo.png', + 'name': '' + }, + 'alipay': { + 'url': baseUrl + 'alipay.png', + 'name': '' + }, + 'banner': { + 'url': baseUrl + 'banner.png', + 'name': '' + }, + 'wmclose': { + 'url': baseUrl + 'wmclose.png', + 'name': '余额不足' + }, + 'bg': { + 'url': baseUrl + 'bg.png', + 'name': '' + }, + 'cardicon': { + 'url': baseUrl + 'cardicon2.png', + 'name': '' + }, + 'che': { + 'url': baseUrl + 'che1.png', + 'name': '' + }, + 'choice': { + 'url': baseUrl + 'choice.png', + 'name': '' + }, + 'choiced': { + 'url': baseUrl + 'choiced.png', + 'name': '' + }, + 'clock': { + 'url': baseUrl + 'clock.png', + 'name': '' + }, + 'yushou': { + 'url': baseUrl + 'yushou.png', + 'name': '' + }, + 'closed': { + 'url': baseUrl + 'closed.png', + 'name': '' + }, + 'coupon': { + 'url': baseUrl + 'coupon.png', + 'name': '' + }, + 'noCoupon': { + 'url': baseUrl + 'noCoupon.png', + 'name': '' + }, + 'ding': { + 'url': baseUrl + 'ding2.png', + 'name': '' + }, + 'dingdan': { + 'url': baseUrl + 'dingdan.png', + 'name': '' + }, + 'noOrders': { + 'url': baseUrl + 'noOrders.png', + 'name': '' + }, + 'down-white': { + 'url': baseUrl + 'down-white.png', + 'name': '' + }, + 'down': { + 'url': baseUrl + 'down.png', + 'name': '' + }, + 'edit': { + 'url': baseUrl + 'edit.png', + 'name': '' + }, + 'fail': { + 'url': baseUrl + 'fail.png', + 'name': '' + }, + 'fenxiang1': { + 'url': baseUrl + 'fenxiang1.png', + 'name': '' + }, + 'game': { + 'url': baseUrl + 'game.png', + 'name': '' + }, + 'gift': { + 'url': baseUrl + 'gift1.png', + 'name': '' + }, + 'wmgift': { + 'url': baseUrl + 'wmgift.png', + 'name': '' + }, + 'gou': { + 'url': baseUrl + 'gou.png', + 'name': '' + }, + 'gouHr': { + 'url': baseUrl + 'gouHr.png', + 'name': '' + }, + 'grade': { + 'url': baseUrl + 'grade.png', + 'name': '' + }, + 'grade1': { + 'url': baseUrl + 'grade1.png', + 'name': '' + }, + 'grade2': { + 'url': baseUrl + 'grade2.png', + 'name': '' + }, + 'grade3': { + 'url': baseUrl + 'grade3.png', + 'name': '' + }, + 'growthbg': { + 'url': baseUrl + 'growthbg.png', + 'name': '' + }, + 'headbg': { + 'url': baseUrl + 'headbg.png', + 'name': '' + }, + 'home-n': { + 'url': baseUrl + 'home-n.png', + 'name': '' + }, + 'home-y': { + 'url': baseUrl + 'home-y.png', + 'name': '' + }, + 'jian': { + 'url': baseUrl + 'jian.png', + 'name': '' + }, + 'jilu': { + 'url': baseUrl + 'jilu.png', + 'name': '' + }, + 'topLine': { + 'url': baseUrl + 'topLine.png', + 'name': '' + }, + 'btomLine': { + 'url': baseUrl + 'btomLine.png', + 'name': '' + }, + 'line': { + 'url': baseUrl + 'line.png', + 'name': '' + }, + 'lines': { + 'url': baseUrl + 'lines.png', + 'name': '' + }, + 'liness': { + 'url': baseUrl + 'liness.png', + 'name': '' + }, + 'loading': { + 'url': baseUrl + 'loading.gif', + 'name': '' + }, + 'loading1': { + 'url': baseUrl + 'loading1.gif', + 'name': '' + }, + 'location': { + 'url': baseUrl + 'location.png', + 'name': '' + }, + 'logo': { + 'url': baseUrl + 'logo.png', + 'name': '' + }, + 'mine': { + 'url': baseUrl + 'mine.png', + 'name': '' + }, + 'myspeacial': { + 'url': baseUrl + 'myspeacial.jpg', + 'name': '' + }, + 'new1': { + 'url': baseUrl + 'new1.png', + 'name': '游戏' + }, + 'orbg': { + 'url': baseUrl + 'orbg.png', + 'name': '' + }, + 'park': { + 'url': baseUrl + 'park2.png', + 'name': '' + }, + 'parkCoupon': { + 'url': baseUrl + 'parkCoupon.png', + 'name': '' + }, + 'pass0': { + 'url': baseUrl + 'pass0.png', + 'name': '' + }, + 'pass1': { + 'url': baseUrl + 'pass1.png', + 'name': '' + }, + 'phone': { + 'url': baseUrl + 'phone.png', + 'name': '' + }, + 'platebg': { + 'url': baseUrl + 'platebg.png', + 'name': '' + }, + 'qidai': { + 'url': baseUrl + 'qidai.png', + 'name': '' + }, + 'qrcode': { + 'url': baseUrl + 'qrcode.png', + 'name': '' + }, + 'quan': { + 'url': baseUrl + 'quan1.png', + 'name': '' + }, + 'quans': { + 'url': baseUrl + 'quans2.png', + 'name': '' + }, + 'ques_bg': { + 'url': baseUrl + 'ques_bg.png', + 'name': '' + }, + 'ques_gou': { + 'url': baseUrl + 'ques_gou.png', + 'name': '' + }, + 'quesimg01': { + 'url': baseUrl + 'quesimg01.png', + 'name': '' + }, + 'redirect': { + 'url': baseUrl + 'redirect.png', + 'name': '' + }, + 'right': { + 'url': baseUrl + 'right.png', + 'name': '' + }, + 'rule': { + 'url': baseUrl + 'rule1.png', + 'name': '' + }, + 'shanchuGray': { + 'url': baseUrl + 'shanchu-gray.png', + 'name': '' + }, + 'shanchu': { + 'url': baseUrl + 'shanchu.png', + 'name': '' + }, + 'shang': { + 'url': baseUrl + 'shang.png', + 'name': '' + }, + 'share': { + 'url': baseUrl + 'share.png', + 'name': '' + }, + 'share01': { + 'url': baseUrl + 'share02.png', + 'name': '分享' + }, + 'spcode': { + 'url': baseUrl + 'spcode.png', + 'name': '' + }, + 'chevron': { + 'url': baseUrl + 'chevron.png', + 'name': '' + }, + 'spphone': { + 'url': baseUrl + 'spphone.png', + 'name': '' + }, + 'succ': { + 'url': baseUrl + 'succ.png', + 'name': '' + }, + 'success': { + 'url': baseUrl + 'success.png', + 'name': '' + }, + 'teljpg': { + 'url': baseUrl + 'tel1.jpg', + 'name': '' + }, + 'telpng': { + 'url': baseUrl + 'tel.png', + 'name': '' + }, + 'telicon': { + 'url': baseUrl + 'telicon.png', + 'name': '' + }, + 'user-n': { + 'url': baseUrl + 'user-n.png', + 'name': '' + }, + 'user-y': { + 'url': baseUrl + 'user-y.png', + 'name': '' + }, + 'wechat': { + 'url': baseUrl + 'wechat.png', + 'name': '' + }, + 'wenti': { + 'url': baseUrl + 'wenti1.png', + 'name': '' + }, + 'wm01': { + 'url': baseUrl + 'wm01.jpg', + 'name': '' + }, + 'wm02': { + 'url': baseUrl + 'wm02.jpg', + 'name': '' + }, + 'wm03': { + 'url': baseUrl + 'wm03.jpg', + 'name': '' + }, + 'wm04': { + 'url': baseUrl + 'wm04.jpg', + 'name': '' + }, + 'icon0001': { + 'url': baseUrl + 'icon0001.png', + 'name': '' + }, + 'icon0002': { + 'url': baseUrl + 'icon0002.png', + 'name': '' + }, + 'icon0003': { + 'url': baseUrl + 'icon0003.png', + 'name': '' + }, + 'icon0004': { + 'url': baseUrl + 'icon0004.png', + 'name': '' + }, + 'icon0005': { + 'url': baseUrl + 'icon0005.png', + 'name': '' + }, + 'icon0006': { + 'url': baseUrl + 'icon0006.png', + 'name': '' + }, + 'icon0007': { + 'url': baseUrl + 'icon0007.png', + 'name': '' + }, + 'icon0008': { + 'url': baseUrl + 'icon0008.png', + 'name': '' + }, + 'canTransferred': { + 'url': baseUrl + 'can-transferred.png', + 'name': '转赠图标' + }, + 'weixinTitle': { + 'url': baseUrl + 'weixin-title.png', + 'name': '微信图标' + }, + 'close02': { + 'url': baseUrl + 'close02.png', + 'name': '关闭图标' + }, + 'success01': { + 'url': baseUrl + 'success01.png', + 'name': '卡领取成功图标' + }, + 'sapellgroup': { + 'url': baseUrl + 'sapellgroup.png', + 'name': '拼团图标' + }, + 'spellBg': { + 'url': baseUrl + 'spell-bg.png', + 'name': '拼团背景图片' + }, + 'spellDetailBg': { + 'url': baseUrl + 'spelldetail-bg.png', + 'name': '拼团背景图片' + }, + 'tuanzhang': { + 'url': baseUrl + 'tuanzhang.png', + 'name': '团长' + }, + 'position': { + 'url': baseUrl + 'position.png', + 'name': '地理位置图标' + }, + 'close03': { + 'url': baseUrl + 'close03.png', + 'name': '拼团页面关闭图标' + }, + 'home': { + 'url': baseUrl + 'home.png', + 'name': '返回首页图标' + }, + 'nodata': { + 'url': baseUrl + 'nodata.png', + 'name': '拼团暂无数据' + }, + 'orderGroupFail': { + 'url': baseUrl + 'orderGroupFail.png', + 'name': '拼团失败' + }, + 'wmcard': { + 'url': baseUrl + 'wmcard.png', + 'name': '首页优惠卡' + }, + 'rushtobuy': { + 'url': baseUrl + 'rushtobuy.png', + 'name': '首页立即抢购' + }, + 'barginlistbg': { + 'url': baseUrl + 'barginlistbg.jpg', + 'name': '砍价列表背景图' + }, + 'bargindetailbg': { + 'url': baseUrl + 'bargindetailbg.jpg', + 'name': '砍价详情背景图' + }, + 'bargaincancel': { + 'url': baseUrl + 'bargaincancel.png', + 'name': '砍价取消' + }, + 'bargainfail': { + 'url': baseUrl + 'bargainfail.png', + 'name': '砍价失败' + }, + 'bargainsuccess': { + 'url': baseUrl + 'bargainsuccess.png', + 'name': '砍价成功' + }, + 'wmdiscount': { + 'url': baseUrl + 'discount.png', + 'name': '砍价图标' + }, + 'bgg': { + 'url': baseUrl + 'bgg.png', + 'name': 'banner背景' + }, + 'wmgive': { + 'url': baseUrl + 'wmgive.png', + 'name': '赠送' + }, + 'wmyes': { + 'url': baseUrl + 'wmyes.png', + 'name': '成功' + }, + 'wmhome': { + 'url': baseUrl + 'gobackhome.png', + 'name': '首页' + }, + 'wmhelp': { + 'url': baseUrl + 'wmhelp.gif', + 'name': '帮助好友砍价' + }, + 'wmsuccess01': { + 'url': baseUrl + 'wmsuccess01.png', + 'name': '帮好友砍价成功对勾' + }, + 'successHr': { + 'url': baseUrl + 'successHr.png', + 'name': '帮好友砍价成功对勾' + }, + 'pay_success': { + 'url': baseUrl + 'pay-success.png', + 'name': '消费卡付款成功' + }, + 'shixiao': { + 'url': baseUrl + 'shixiao.png', + 'name': '失效' + }, + + 'wmbarginicon': { + 'url': baseUrl + 'wmbarginicon2.png', + 'name': '我的砍价' + }, + 'wmspellgroup': { + 'url': baseUrl + 'wmspellgroup2.png', + 'name': '我的拼团' + }, + 'myactivity': { + 'url': baseUrl + 'myactivity.png', + 'name': '我的活动' + }, + 'myactivitygift': { + 'url': baseUrl + 'myactivitygift.png', + 'name': '我的奖品' + }, + 'leftarrows': { + 'url': baseUrl + 'leftarrows.png', + 'name': '左箭头' + }, + 'barcode': {//换肤 + 'url': baseUrl + 'lqcbarcode.png', + 'name': '二维码' + }, + 'poterbg': { + 'url': baseUrl + 'canvas.png', + 'name': '海报背景' + }, + 'newgroup': { + 'url': baseUrl + 'newgroup.png', + 'name': '新UI拼团' + }, + 'newbargain': { + 'url': baseUrl + 'newbargain.png', + 'name': '新UI砍价' + }, + 'newseckill': { + 'url': baseUrl + 'newseckill.png', + 'name': '新UI秒杀' + }, + 'newcard': { + 'url': baseUrl + 'newcard.png', + 'name': '新UI消费卡' + }, + 'product': { + 'url': baseUrl + 'product.png', + 'name': '新UI产品栏' + }, + 'barginicon': { + 'url': baseUrl + 'lqcbarginicon.png', + 'name': '砍价小图标' + }, + 'pintuan': { + 'url': baseUrl + 'lqcpintuan.png', + 'name': '拼团小图标' + }, + 'duihuan': { + 'url': baseUrl + 'exchange01.png', + 'name': '兑换小图标' + }, + 'wangmeimeibargin':{ + 'url': baseUrl + 'wangmeimeibargin.jpg', + 'name': '砍价专场的图标' + }, + 'wangmeimeipintuan': { + 'url': baseUrl + 'wangmeimeipintuan.png', + 'name': '拼团专场的图标' + }, + 'wangmeimeijiantou': { + 'url': baseUrl + 'wangmeimeijiantou.png', + 'name': '专场的更多图标' + }, + 'wangmeimeiarrow01': { + 'url': baseUrl + 'wangmeimeiarrow01.png', + 'name': '专场的更多图标' + }, + 'wangmeimeicredit':{ + 'url': baseUrl + "wangmeimeicredit.png", + 'name': '积分背景' + }, + 'wmintegral': { + 'url': baseUrl + "wmintegral1.png", + 'name': '积分商城' + }, + 'orange': { + 'url': baseUrl + "orange.png", + 'name': '积分商城' + }, + 'blue': { + 'url': baseUrl + "blue.png", + 'name': '积分商城' + }, + 'gray': { + 'url': baseUrl + "gray.png", + 'name': '积分商城' + }, + 'kanjia': { + 'url': baseUrl + "kanjia.png", + 'name': '砍价' + }, + 'pintuan': { + 'url': baseUrl + "pintuan.png", + 'name': '拼团' + }, + 'xiaofeika': { + 'url': baseUrl + "xiaofeika.png", + 'name': '消费卡' + }, + 'xingyun': { + 'url': baseUrl + "xingyunkapai.png", + 'name': '幸运卡牌' + }, + 'jfshangcheng': { + 'url': baseUrl + "jifenshangcheng.png", + 'name': '积分商城' + }, + 'toutiao': { + 'url': baseUrl + "toutiao.png", + 'name': '' + }, + 'more': { + 'url': baseUrl + "more.png", + 'name': '' + }, + 'change': { + 'url': baseUrl + "change.png", + 'name': '' + }, + 'None': { + 'url': baseUrl + "None.png", + 'name': '' + }, + 'fenxiang': { + 'url': baseUrl + "fenxiang.png", + 'name': '' + }, + 'homeSelectedO': { + 'url': baseUrl + "homeSelectedO.png", + 'name': '' + }, + 'noMerchant': { + 'url': baseUrl + "noMerchant.png", + 'name': '' + }, + 'rightHr': { + 'url': baseUrl + "rightHr.png", + 'name': '' + }, + 'cancelH': { + 'url': baseUrl + "cancelH.png", + 'name': '' + }, + 'giftHr': { + 'url': baseUrl + "giftHr.png", + 'name': '' + }, + 'next': { + 'url': baseUrl + "next.png", + 'name': '' + }, + 'erweima': { + 'url': baseUrl + "erweima.png", + 'name': '' + }, + 'guanliHr': { + 'url': baseUrl + "guanliHr.png", + 'name': '' + }, + 'tingcheHr': { + 'url': baseUrl + "tingcheHr.png", + 'name': '' + }, + 'wentiHr': { + 'url': baseUrl + "wentiHr.png", + 'name': '' + }, + 'stopThat':{ + 'url': baseUrl +"tingcheshiyong.png", + 'name': '' + }, + 'jiaofei': { + 'url': baseUrl + "jiaofei.png", + 'name': '' + }, + 'chenggong': { + 'url': baseUrl + "chenggong.png", + 'name': '' + }, + 'chenghr': { + 'url': baseUrl + "chenghr.png", + 'name': '' + }, + "aboutUs":{ + 'url': baseUrl + "we.png", + 'name': '' + }, + "sort":{ + "url":baseUrl + "noSort.png", + 'name':'' + }, + 'up':{ + 'url' : baseUrl + 'up.png', + 'name':'' + }, + 'down':{ + 'url' : baseUrl + 'down.png', + 'name':'' + }, + 'live': { + 'url': baseUrl + 'live.png', + 'name': '' + } +} \ No newline at end of file diff --git a/utils/iti.js b/utils/iti.js new file mode 100644 index 0000000..7b25455 --- /dev/null +++ b/utils/iti.js @@ -0,0 +1,87 @@ +const config = require("../config/config.js") +const Http = require("./HttpBasics.js") +function order(id) {//支付 + Http.post({//下订单 + url:config.api.order, + data:{ + couponId:this.data.id + } + }).then(res=>{ + console.log(res.data,"订单成功"); + let id = res.data.id + console.log(id); + Http.post({//拿orderInfo + url:config.api.pay, + data:{ + orderId:res.data.id + } + }).then(item=>{ + console.log(item,"orderId"); + tt.pay({ + service: 5, + orderInfo:{ + order_id:item.data.orderId, + order_token:item.data.token, + }, + success(res) { + if (res.code === 0) { + tt.showToast({ + title: '支付成功!', // 内容 + }); + + // 支付成功处理逻辑,只有res.code=0时,才表示支付成功 + // 但是最终状态要以商户后端结果为准 + }else if(res.code === 1){ + tt.showToast({ + title: '支付超时', // 内容 + icon:"none" + }); + Http.post({ + url:config.api.ifPayOk, + data:{ + code:1, + orderId:res.data.id + } + }) + }else if(res.code === 2){ + tt.showToast({ + title: '支付失败', // 内容 + icon:"none" + }); + }else if(res.code === 3){ + tt.showToast({ + title: '支付关闭', // 内容 + icon:"none" + }); + }else if(res.code === 4){ + tt.showToast({ + title: '支付取消', // 内容 + icon:"none" + }); + }else if(res.code === 9){ + tt.showToast({ + title: '订单状态开发者自行获取', // 内容 + icon:"none" + }); + } + }, + fail(res) { + // handle fail + }, + }) + }).catch(err=>{ + tt.showToast({ + title: '唤起支付失败', // 内容 + icon:"none" + }); + }) + }).catch(err=>{ + tt.showToast({ + title: err.message, // 内容 + icon:"none" + }); + }) +} +module.exports={ + order +} \ No newline at end of file diff --git a/utils/memberqrcode.js b/utils/memberqrcode.js new file mode 100644 index 0000000..972b354 --- /dev/null +++ b/utils/memberqrcode.js @@ -0,0 +1,843 @@ +!(function () { + + // alignment pattern + var adelta = [ + 0, 11, 15, 19, 23, 27, 31, + 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24, + 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28 + ]; + + // version block + var vpat = [ + 0xc94, 0x5bc, 0xa99, 0x4d3, 0xbf6, 0x762, 0x847, 0x60d, + 0x928, 0xb78, 0x45d, 0xa17, 0x532, 0x9a6, 0x683, 0x8c9, + 0x7ec, 0xec4, 0x1e1, 0xfab, 0x08e, 0xc1a, 0x33f, 0xd75, + 0x250, 0x9d5, 0x6f0, 0x8ba, 0x79f, 0xb0b, 0x42e, 0xa64, + 0x541, 0xc69 + ]; + + // final format bits with mask: level << 3 | mask + var fmtword = [ + 0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976, //L + 0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0, //M + 0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed, //Q + 0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b //H + ]; + + // 4 per version: number of blocks 1,2; data width; ecc width + var eccblocks = [ + 1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17, + 1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22, 22, 1, 0, 16, 28, + 1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22, + 1, 0, 80, 20, 2, 0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16, + 1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11, 22, + 2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28, + 2, 0, 78, 20, 4, 0, 31, 18, 2, 4, 14, 18, 4, 1, 13, 26, + 2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26, + 2, 0, 116, 30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24, + 2, 2, 68, 18, 4, 1, 43, 26, 6, 2, 19, 24, 6, 2, 15, 28, + 4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24, + 2, 2, 92, 24, 6, 2, 36, 22, 4, 6, 20, 26, 7, 4, 14, 28, + 4, 0, 107, 26, 8, 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22, + 3, 1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24, + 5, 1, 87, 22, 5, 5, 41, 24, 5, 7, 24, 30, 11, 7, 12, 24, + 5, 1, 98, 24, 7, 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30, + 1, 5, 107, 28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28, + 5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28, 2, 19, 14, 28, + 3, 4, 113, 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26, + 3, 5, 107, 28, 3, 13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28, + 4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19, 6, 16, 30, + 2, 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24, + 4, 5, 121, 30, 4, 14, 47, 28, 11, 14, 24, 30, 16, 14, 15, 30, + 6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2, 16, 30, + 8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30, + 10, 2, 114, 28, 19, 4, 46, 28, 28, 6, 22, 28, 33, 4, 16, 30, + 8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23, 30, 12, 28, 15, 30, + 3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30, + 7, 7, 116, 30, 21, 7, 45, 28, 1, 37, 23, 30, 19, 26, 15, 30, + 5, 10, 115, 30, 19, 10, 47, 28, 15, 25, 24, 30, 23, 25, 15, 30, + 13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30, + 17, 0, 115, 30, 10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30, + 17, 1, 115, 30, 14, 21, 46, 28, 29, 19, 24, 30, 11, 46, 15, 30, + 13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30, + 12, 7, 121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22, 41, 15, 30, + 6, 14, 121, 30, 6, 34, 47, 28, 46, 10, 24, 30, 2, 64, 15, 30, + 17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30, + 4, 18, 122, 30, 13, 32, 46, 28, 48, 14, 24, 30, 42, 32, 15, 30, + 20, 4, 117, 30, 40, 7, 47, 28, 43, 22, 24, 30, 10, 67, 15, 30, + 19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61, 15, 30 + ]; + + // Galois field log table + var glog = [ + 0xff, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b, + 0x04, 0x64, 0xe0, 0x0e, 0x34, 0x8d, 0xef, 0x81, 0x1c, 0xc1, 0x69, 0xf8, 0xc8, 0x08, 0x4c, 0x71, + 0x05, 0x8a, 0x65, 0x2f, 0xe1, 0x24, 0x0f, 0x21, 0x35, 0x93, 0x8e, 0xda, 0xf0, 0x12, 0x82, 0x45, + 0x1d, 0xb5, 0xc2, 0x7d, 0x6a, 0x27, 0xf9, 0xb9, 0xc9, 0x9a, 0x09, 0x78, 0x4d, 0xe4, 0x72, 0xa6, + 0x06, 0xbf, 0x8b, 0x62, 0x66, 0xdd, 0x30, 0xfd, 0xe2, 0x98, 0x25, 0xb3, 0x10, 0x91, 0x22, 0x88, + 0x36, 0xd0, 0x94, 0xce, 0x8f, 0x96, 0xdb, 0xbd, 0xf1, 0xd2, 0x13, 0x5c, 0x83, 0x38, 0x46, 0x40, + 0x1e, 0x42, 0xb6, 0xa3, 0xc3, 0x48, 0x7e, 0x6e, 0x6b, 0x3a, 0x28, 0x54, 0xfa, 0x85, 0xba, 0x3d, + 0xca, 0x5e, 0x9b, 0x9f, 0x0a, 0x15, 0x79, 0x2b, 0x4e, 0xd4, 0xe5, 0xac, 0x73, 0xf3, 0xa7, 0x57, + 0x07, 0x70, 0xc0, 0xf7, 0x8c, 0x80, 0x63, 0x0d, 0x67, 0x4a, 0xde, 0xed, 0x31, 0xc5, 0xfe, 0x18, + 0xe3, 0xa5, 0x99, 0x77, 0x26, 0xb8, 0xb4, 0x7c, 0x11, 0x44, 0x92, 0xd9, 0x23, 0x20, 0x89, 0x2e, + 0x37, 0x3f, 0xd1, 0x5b, 0x95, 0xbc, 0xcf, 0xcd, 0x90, 0x87, 0x97, 0xb2, 0xdc, 0xfc, 0xbe, 0x61, + 0xf2, 0x56, 0xd3, 0xab, 0x14, 0x2a, 0x5d, 0x9e, 0x84, 0x3c, 0x39, 0x53, 0x47, 0x6d, 0x41, 0xa2, + 0x1f, 0x2d, 0x43, 0xd8, 0xb7, 0x7b, 0xa4, 0x76, 0xc4, 0x17, 0x49, 0xec, 0x7f, 0x0c, 0x6f, 0xf6, + 0x6c, 0xa1, 0x3b, 0x52, 0x29, 0x9d, 0x55, 0xaa, 0xfb, 0x60, 0x86, 0xb1, 0xbb, 0xcc, 0x3e, 0x5a, + 0xcb, 0x59, 0x5f, 0xb0, 0x9c, 0xa9, 0xa0, 0x51, 0x0b, 0xf5, 0x16, 0xeb, 0x7a, 0x75, 0x2c, 0xd7, + 0x4f, 0xae, 0xd5, 0xe9, 0xe6, 0xe7, 0xad, 0xe8, 0x74, 0xd6, 0xf4, 0xea, 0xa8, 0x50, 0x58, 0xaf + ]; + + // Galios field exponent table + var gexp = [ + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, + 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, + 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, + 0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, + 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, + 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, + 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, + 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, + 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, + 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, + 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, + 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, + 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, + 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09, + 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16, + 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x00 + ]; + + // Working buffers: + // data input and ecc append, image working buffer, fixed part of image, run lengths for badness + var strinbuf = [], eccbuf = [], qrframe = [], framask = [], rlens = []; + // Control values - width is based on version, last 4 are from table. + var version, width, neccblk1, neccblk2, datablkw, eccblkwid; + var ecclevel = 2; + // set bit to indicate cell in qrframe is immutable. symmetric around diagonal + function setmask(x, y) { + var bt; + if (x > y) { + bt = x; + x = y; + y = bt; + } + // y*y = 1+3+5... + bt = y; + bt *= y; + bt += y; + bt >>= 1; + bt += x; + framask[bt] = 1; + } + + // enter alignment pattern - black to qrframe, white to mask (later black frame merged to mask) + function putalign(x, y) { + var j; + + qrframe[x + width * y] = 1; + for (j = -2; j < 2; j++) { + qrframe[(x + j) + width * (y - 2)] = 1; + qrframe[(x - 2) + width * (y + j + 1)] = 1; + qrframe[(x + 2) + width * (y + j)] = 1; + qrframe[(x + j + 1) + width * (y + 2)] = 1; + } + for (j = 0; j < 2; j++) { + setmask(x - 1, y + j); + setmask(x + 1, y - j); + setmask(x - j, y - 1); + setmask(x + j, y + 1); + } + } + + //======================================================================== + // Reed Solomon error correction + // exponentiation mod N + function modnn(x) { + while (x >= 255) { + x -= 255; + x = (x >> 8) + (x & 255); + } + return x; + } + + var genpoly = []; + + // Calculate and append ECC data to data block. Block is in strinbuf, indexes to buffers given. + function appendrs(data, dlen, ecbuf, eclen) { + var i, j, fb; + + for (i = 0; i < eclen; i++) + strinbuf[ecbuf + i] = 0; + for (i = 0; i < dlen; i++) { + fb = glog[strinbuf[data + i] ^ strinbuf[ecbuf]]; + if (fb != 255) /* fb term is non-zero */ + for (j = 1; j < eclen; j++) + strinbuf[ecbuf + j - 1] = strinbuf[ecbuf + j] ^ gexp[modnn(fb + genpoly[eclen - j])]; + else + for (j = ecbuf; j < ecbuf + eclen; j++) + strinbuf[j] = strinbuf[j + 1]; + strinbuf[ecbuf + eclen - 1] = fb == 255 ? 0 : gexp[modnn(fb + genpoly[0])]; + } + } + + //======================================================================== + // Frame data insert following the path rules + + // check mask - since symmetrical use half. + function ismasked(x, y) { + var bt; + if (x > y) { + bt = x; + x = y; + y = bt; + } + bt = y; + bt += y * y; + bt >>= 1; + bt += x; + return framask[bt]; + } + + //======================================================================== + // Apply the selected mask out of the 8. + function applymask(m) { + var x, y, r3x, r3y; + + switch (m) { + case 0: + for (y = 0; y < width; y++) + for (x = 0; x < width; x++) + if (!((x + y) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + break; + case 1: + for (y = 0; y < width; y++) + for (x = 0; x < width; x++) + if (!(y & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + break; + case 2: + for (y = 0; y < width; y++) + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!r3x && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + break; + case 3: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = r3y, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!r3x && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 4: + for (y = 0; y < width; y++) + for (r3x = 0, r3y = ((y >> 1) & 1), x = 0; x < width; x++ , r3x++) { + if (r3x == 3) { + r3x = 0; + r3y = !r3y; + } + if (!r3y && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + break; + case 5: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!((x & y & 1) + !(!r3x | !r3y)) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 6: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!(((x & y & 1) + (r3x && (r3x == r3y))) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 7: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!(((r3x && (r3x == r3y)) + ((x + y) & 1)) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + } + return; + } + + // Badness coefficients. + var N1 = 3, N2 = 3, N3 = 40, N4 = 10; + + // Using the table of the length of each run, calculate the amount of bad image + // - long runs or those that look like finders; called twice, once each for X and Y + function badruns(length) { + var i; + var runsbad = 0; + for (i = 0; i <= length; i++) + if (rlens[i] >= 5) + runsbad += N1 + rlens[i] - 5; + // BwBBBwB as in finder + for (i = 3; i < length - 1; i += 2) + if (rlens[i - 2] == rlens[i + 2] + && rlens[i + 2] == rlens[i - 1] + && rlens[i - 1] == rlens[i + 1] + && rlens[i - 1] * 3 == rlens[i] + // white around the black pattern? Not part of spec + && (rlens[i - 3] == 0 // beginning + || i + 3 > length // end + || rlens[i - 3] * 3 >= rlens[i] * 4 || rlens[i + 3] * 3 >= rlens[i] * 4) + ) + runsbad += N3; + return runsbad; + } + + // Calculate how bad the masked image is - blocks, imbalance, runs, or finders. + function badcheck() { + var x, y, h, b, b1; + var thisbad = 0; + var bw = 0; + + // blocks of same color. + for (y = 0; y < width - 1; y++) + for (x = 0; x < width - 1; x++) + if ((qrframe[x + width * y] && qrframe[(x + 1) + width * y] + && qrframe[x + width * (y + 1)] && qrframe[(x + 1) + width * (y + 1)]) // all black + || !(qrframe[x + width * y] || qrframe[(x + 1) + width * y] + || qrframe[x + width * (y + 1)] || qrframe[(x + 1) + width * (y + 1)])) // all white + thisbad += N2; + + // X runs + for (y = 0; y < width; y++) { + rlens[0] = 0; + for (h = b = x = 0; x < width; x++) { + if ((b1 = qrframe[x + width * y]) == b) + rlens[h]++; + else + rlens[++h] = 1; + b = b1; + bw += b ? 1 : -1; + } + thisbad += badruns(h); + } + + // black/white imbalance + if (bw < 0) + bw = -bw; + + var big = bw; + var count = 0; + big += big << 2; + big <<= 1; + while (big > width * width) + big -= width * width, count++; + thisbad += count * N4; + + // Y runs + for (x = 0; x < width; x++) { + rlens[0] = 0; + for (h = b = y = 0; y < width; y++) { + if ((b1 = qrframe[x + width * y]) == b) + rlens[h]++; + else + rlens[++h] = 1; + b = b1; + } + thisbad += badruns(h); + } + return thisbad; + } + + function genframe(instring) { + var x, y, k, t, v, i, j, m; + + // find the smallest version that fits the string + t = instring.length; + version = 0; + do { + version++; + k = (ecclevel - 1) * 4 + (version - 1) * 16; + neccblk1 = eccblocks[k++]; + neccblk2 = eccblocks[k++]; + datablkw = eccblocks[k++]; + eccblkwid = eccblocks[k]; + k = datablkw * (neccblk1 + neccblk2) + neccblk2 - 3 + (version <= 9); + if (t <= k) + break; + } while (version < 40); + + // FIXME - insure that it fits insted of being truncated + width = 17 + 4 * version; + + // allocate, clear and setup data structures + v = datablkw + (datablkw + eccblkwid) * (neccblk1 + neccblk2) + neccblk2; + for (t = 0; t < v; t++) + eccbuf[t] = 0; + strinbuf = instring.slice(0); + + for (t = 0; t < width * width; t++) + qrframe[t] = 0; + + for (t = 0; t < (width * (width + 1) + 1) / 2; t++) + framask[t] = 0; + + // insert finders - black to frame, white to mask + for (t = 0; t < 3; t++) { + k = 0; + y = 0; + if (t == 1) + k = (width - 7); + if (t == 2) + y = (width - 7); + qrframe[(y + 3) + width * (k + 3)] = 1; + for (x = 0; x < 6; x++) { + qrframe[(y + x) + width * k] = 1; + qrframe[y + width * (k + x + 1)] = 1; + qrframe[(y + 6) + width * (k + x)] = 1; + qrframe[(y + x + 1) + width * (k + 6)] = 1; + } + for (x = 1; x < 5; x++) { + setmask(y + x, k + 1); + setmask(y + 1, k + x + 1); + setmask(y + 5, k + x); + setmask(y + x + 1, k + 5); + } + for (x = 2; x < 4; x++) { + qrframe[(y + x) + width * (k + 2)] = 1; + qrframe[(y + 2) + width * (k + x + 1)] = 1; + qrframe[(y + 4) + width * (k + x)] = 1; + qrframe[(y + x + 1) + width * (k + 4)] = 1; + } + } + + // alignment blocks + if (version > 1) { + t = adelta[version]; + y = width - 7; + for (; ;) { + x = width - 7; + while (x > t - 3) { + putalign(x, y); + if (x < t) + break; + x -= t; + } + if (y <= t + 9) + break; + y -= t; + putalign(6, y); + putalign(y, 6); + } + } + + // single black + qrframe[8 + width * (width - 8)] = 1; + + // timing gap - mask only + for (y = 0; y < 7; y++) { + setmask(7, y); + setmask(width - 8, y); + setmask(7, y + width - 7); + } + for (x = 0; x < 8; x++) { + setmask(x, 7); + setmask(x + width - 8, 7); + setmask(x, width - 8); + } + + // reserve mask-format area + for (x = 0; x < 9; x++) + setmask(x, 8); + for (x = 0; x < 8; x++) { + setmask(x + width - 8, 8); + setmask(8, x); + } + for (y = 0; y < 7; y++) + setmask(8, y + width - 7); + + // timing row/col + for (x = 0; x < width - 14; x++) + if (x & 1) { + setmask(8 + x, 6); + setmask(6, 8 + x); + } + else { + qrframe[(8 + x) + width * 6] = 1; + qrframe[6 + width * (8 + x)] = 1; + } + + // version block + if (version > 6) { + t = vpat[version - 7]; + k = 17; + for (x = 0; x < 6; x++) + for (y = 0; y < 3; y++ , k--) + if (1 & (k > 11 ? version >> (k - 12) : t >> k)) { + qrframe[(5 - x) + width * (2 - y + width - 11)] = 1; + qrframe[(2 - y + width - 11) + width * (5 - x)] = 1; + } + else { + setmask(5 - x, 2 - y + width - 11); + setmask(2 - y + width - 11, 5 - x); + } + } + + // sync mask bits - only set above for white spaces, so add in black bits + for (y = 0; y < width; y++) + for (x = 0; x <= y; x++) + if (qrframe[x + width * y]) + setmask(x, y); + + // convert string to bitstream + // 8 bit data to QR-coded 8 bit data (numeric or alphanum, or kanji not supported) + v = strinbuf.length; + + // string to array + for (i = 0; i < v; i++) + eccbuf[i] = strinbuf.charCodeAt(i); + strinbuf = eccbuf.slice(0); + + // calculate max string length + x = datablkw * (neccblk1 + neccblk2) + neccblk2; + if (v >= x - 2) { + v = x - 2; + if (version > 9) + v--; + } + + // shift and repack to insert length prefix + i = v; + if (version > 9) { + strinbuf[i + 2] = 0; + strinbuf[i + 3] = 0; + while (i--) { + t = strinbuf[i]; + strinbuf[i + 3] |= 255 & (t << 4); + strinbuf[i + 2] = t >> 4; + } + strinbuf[2] |= 255 & (v << 4); + strinbuf[1] = v >> 4; + strinbuf[0] = 0x40 | (v >> 12); + } + else { + strinbuf[i + 1] = 0; + strinbuf[i + 2] = 0; + while (i--) { + t = strinbuf[i]; + strinbuf[i + 2] |= 255 & (t << 4); + strinbuf[i + 1] = t >> 4; + } + strinbuf[1] |= 255 & (v << 4); + strinbuf[0] = 0x40 | (v >> 4); + } + // fill to end with pad pattern + i = v + 3 - (version < 10); + while (i < x) { + strinbuf[i++] = 0xec; + // buffer has room if (i == x) break; + strinbuf[i++] = 0x11; + } + + // calculate and append ECC + + // calculate generator polynomial + genpoly[0] = 1; + for (i = 0; i < eccblkwid; i++) { + genpoly[i + 1] = 1; + for (j = i; j > 0; j--) + genpoly[j] = genpoly[j] + ? genpoly[j - 1] ^ gexp[modnn(glog[genpoly[j]] + i)] : genpoly[j - 1]; + genpoly[0] = gexp[modnn(glog[genpoly[0]] + i)]; + } + for (i = 0; i <= eccblkwid; i++) + genpoly[i] = glog[genpoly[i]]; // use logs for genpoly[] to save calc step + + // append ecc to data buffer + k = x; + y = 0; + for (i = 0; i < neccblk1; i++) { + appendrs(y, datablkw, k, eccblkwid); + y += datablkw; + k += eccblkwid; + } + for (i = 0; i < neccblk2; i++) { + appendrs(y, datablkw + 1, k, eccblkwid); + y += datablkw + 1; + k += eccblkwid; + } + // interleave blocks + y = 0; + for (i = 0; i < datablkw; i++) { + for (j = 0; j < neccblk1; j++) + eccbuf[y++] = strinbuf[i + j * datablkw]; + for (j = 0; j < neccblk2; j++) + eccbuf[y++] = strinbuf[(neccblk1 * datablkw) + i + (j * (datablkw + 1))]; + } + for (j = 0; j < neccblk2; j++) + eccbuf[y++] = strinbuf[(neccblk1 * datablkw) + i + (j * (datablkw + 1))]; + for (i = 0; i < eccblkwid; i++) + for (j = 0; j < neccblk1 + neccblk2; j++) + eccbuf[y++] = strinbuf[x + i + j * eccblkwid]; + strinbuf = eccbuf; + + // pack bits into frame avoiding masked area. + x = y = width - 1; + k = v = 1; // up, minus + /* inteleaved data and ecc codes */ + m = (datablkw + eccblkwid) * (neccblk1 + neccblk2) + neccblk2; + for (i = 0; i < m; i++) { + t = strinbuf[i]; + for (j = 0; j < 8; j++ , t <<= 1) { + if (0x80 & t) + qrframe[x + width * y] = 1; + do { // find next fill position + if (v) + x--; + else { + x++; + if (k) { + if (y != 0) + y--; + else { + x -= 2; + k = !k; + if (x == 6) { + x--; + y = 9; + } + } + } + else { + if (y != width - 1) + y++; + else { + x -= 2; + k = !k; + if (x == 6) { + x--; + y -= 8; + } + } + } + } + v = !v; + } while (ismasked(x, y)); + } + } + + // save pre-mask copy of frame + strinbuf = qrframe.slice(0); + t = 0; // best + y = 30000; // demerit + // for instead of while since in original arduino code + // if an early mask was "good enough" it wouldn't try for a better one + // since they get more complex and take longer. + for (k = 0; k < 8; k++) { + applymask(k); // returns black-white imbalance + x = badcheck(); + if (x < y) { // current mask better than previous best? + y = x; + t = k; + } + if (t == 7) + break; // don't increment i to a void redoing mask + qrframe = strinbuf.slice(0); // reset for next pass + } + if (t != k) // redo best mask - none good enough, last wasn't t + applymask(t); + + // add in final mask/ecclevel bytes + y = fmtword[t + ((ecclevel - 1) << 3)]; + // low byte + for (k = 0; k < 8; k++ , y >>= 1) + if (y & 1) { + qrframe[(width - 1 - k) + width * 8] = 1; + if (k < 6) + qrframe[8 + width * k] = 1; + else + qrframe[8 + width * (k + 1)] = 1; + } + // high byte + for (k = 0; k < 7; k++ , y >>= 1) + if (y & 1) { + qrframe[8 + width * (width - 7 + k)] = 1; + if (k) + qrframe[(6 - k) + width * 8] = 1; + else + qrframe[7 + width * 8] = 1; + } + return qrframe; + } + + + + + var _canvas = null; + + var api = { + + get ecclevel() { + return ecclevel; + }, + + set ecclevel(val) { + ecclevel = val; + }, + + get size() { + return _size; + }, + + set size(val) { + _size = val + }, + + get canvas() { + return _canvas; + }, + + set canvas(el) { + _canvas = el; + }, + + getFrame: function (string) { + return genframe(string); + }, + //这里的utf16to8(str)是对Text中的字符串进行转码,让其支持中文 + utf16to8: function (str) { + var out, i, len, c; + + out = ""; + len = str.length; + for (i = 0; i < len; i++) { + c = str.charCodeAt(i); + if ((c >= 0x0001) && (c <= 0x007F)) { + out += str.charAt(i); + } else if (c > 0x07FF) { + out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); + out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } else { + out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } + } + return out; + }, + /** + * 新增$this参数,传入组件的this,兼容在组件中生成 + */ + draw: function (str, canvas, cavW, cavH,cb,$this, ecc) { + var that = this; + ecclevel = ecc || ecclevel; + canvas = canvas || _canvas; + if (!canvas) { + console.warn('No canvas provided to draw QR code in!') + return; + } + + var size = Math.min(cavW, cavH); + str = that.utf16to8(str);//增加中文显示 + + var frame = that.getFrame(str), + // 组件中生成qrcode需要绑定this + ctx = tt.createCanvasContext(canvas,$this), + px = Math.round(size / (width + 8)); + var roundedSize = px * (width + 8), + offset = Math.floor((size - roundedSize) / 2); + size = roundedSize; + ctx.clearRect(0, 0, cavW, cavW); + ctx.setFillStyle('#ffffff') + ctx.fillRect(0, 0, cavW, cavW); + ctx.setFillStyle('#000000'); + for (var i = 0; i < width; i++) { + for (var j = 0; j < width; j++) { + if (frame[j * width + i]) { + ctx.fillRect(px * (4 + i) + offset, px * (4 + j) + offset, px, px); + } + } + } + ctx.draw(true, function () { + // 判断绘制方法,判断手机类型 + let brand = ""; + tt.getSystemInfo({ + success:function(res){ + console.log(res.brand) + brand = res.brand; + } + }) + if (brand == 'iPhone') { + tt.canvasToTempFilePath({ + x: 0, + y: 0, + width: cavW, + height: cavH, + destWidth: cavW, + destHeight: cavH, + canvasId: canvas, + fail: function (res) { + console.log(res) + }, + success: function (res) { + if (cb) { + cb(res.tempFilePath); + }; + } + }) + + } else { + + // 延迟加载 + setTimeout(function () { + tt.canvasToTempFilePath({ + x: 0, + y: 0, + width: cavW, + height: cavH, + destWidth: cavW, + destHeight: cavH, + canvasId: canvas, + fail: function (res) { + console.log(res) + }, + success: function (res) { + + if (cb) { + cb(res.tempFilePath); + }; + } + }) + + }, 1000) + } + }); + + + } + } + module.exports = { api } + // exports.draw = api; +})(); \ No newline at end of file diff --git a/utils/qrcode.js b/utils/qrcode.js new file mode 100644 index 0000000..e4c994e --- /dev/null +++ b/utils/qrcode.js @@ -0,0 +1,778 @@ +var QR = (function () { + + // alignment pattern + var adelta = [ + 0, 11, 15, 19, 23, 27, 31, // force 1 pat + 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24, + 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28 + ]; + + // version block + var vpat = [ + 0xc94, 0x5bc, 0xa99, 0x4d3, 0xbf6, 0x762, 0x847, 0x60d, + 0x928, 0xb78, 0x45d, 0xa17, 0x532, 0x9a6, 0x683, 0x8c9, + 0x7ec, 0xec4, 0x1e1, 0xfab, 0x08e, 0xc1a, 0x33f, 0xd75, + 0x250, 0x9d5, 0x6f0, 0x8ba, 0x79f, 0xb0b, 0x42e, 0xa64, + 0x541, 0xc69 + ]; + + // final format bits with mask: level << 3 | mask + var fmtword = [ + 0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976, //L + 0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0, //M + 0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed, //Q + 0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b //H + ]; + + // 4 per version: number of blocks 1,2; data width; ecc width + var eccblocks = [ + 1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17, + 1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22, 22, 1, 0, 16, 28, + 1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22, + 1, 0, 80, 20, 2, 0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16, + 1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11, 22, + 2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28, + 2, 0, 78, 20, 4, 0, 31, 18, 2, 4, 14, 18, 4, 1, 13, 26, + 2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26, + 2, 0, 116, 30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24, + 2, 2, 68, 18, 4, 1, 43, 26, 6, 2, 19, 24, 6, 2, 15, 28, + 4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24, + 2, 2, 92, 24, 6, 2, 36, 22, 4, 6, 20, 26, 7, 4, 14, 28, + 4, 0, 107, 26, 8, 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22, + 3, 1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24, + 5, 1, 87, 22, 5, 5, 41, 24, 5, 7, 24, 30, 11, 7, 12, 24, + 5, 1, 98, 24, 7, 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30, + 1, 5, 107, 28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28, + 5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28, 2, 19, 14, 28, + 3, 4, 113, 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26, + 3, 5, 107, 28, 3, 13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28, + 4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19, 6, 16, 30, + 2, 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24, + 4, 5, 121, 30, 4, 14, 47, 28, 11, 14, 24, 30, 16, 14, 15, 30, + 6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2, 16, 30, + 8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30, + 10, 2, 114, 28, 19, 4, 46, 28, 28, 6, 22, 28, 33, 4, 16, 30, + 8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23, 30, 12, 28, 15, 30, + 3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30, + 7, 7, 116, 30, 21, 7, 45, 28, 1, 37, 23, 30, 19, 26, 15, 30, + 5, 10, 115, 30, 19, 10, 47, 28, 15, 25, 24, 30, 23, 25, 15, 30, + 13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30, + 17, 0, 115, 30, 10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30, + 17, 1, 115, 30, 14, 21, 46, 28, 29, 19, 24, 30, 11, 46, 15, 30, + 13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30, + 12, 7, 121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22, 41, 15, 30, + 6, 14, 121, 30, 6, 34, 47, 28, 46, 10, 24, 30, 2, 64, 15, 30, + 17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30, + 4, 18, 122, 30, 13, 32, 46, 28, 48, 14, 24, 30, 42, 32, 15, 30, + 20, 4, 117, 30, 40, 7, 47, 28, 43, 22, 24, 30, 10, 67, 15, 30, + 19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61, 15, 30 + ]; + + // Galois field log table + var glog = [ + 0xff, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b, + 0x04, 0x64, 0xe0, 0x0e, 0x34, 0x8d, 0xef, 0x81, 0x1c, 0xc1, 0x69, 0xf8, 0xc8, 0x08, 0x4c, 0x71, + 0x05, 0x8a, 0x65, 0x2f, 0xe1, 0x24, 0x0f, 0x21, 0x35, 0x93, 0x8e, 0xda, 0xf0, 0x12, 0x82, 0x45, + 0x1d, 0xb5, 0xc2, 0x7d, 0x6a, 0x27, 0xf9, 0xb9, 0xc9, 0x9a, 0x09, 0x78, 0x4d, 0xe4, 0x72, 0xa6, + 0x06, 0xbf, 0x8b, 0x62, 0x66, 0xdd, 0x30, 0xfd, 0xe2, 0x98, 0x25, 0xb3, 0x10, 0x91, 0x22, 0x88, + 0x36, 0xd0, 0x94, 0xce, 0x8f, 0x96, 0xdb, 0xbd, 0xf1, 0xd2, 0x13, 0x5c, 0x83, 0x38, 0x46, 0x40, + 0x1e, 0x42, 0xb6, 0xa3, 0xc3, 0x48, 0x7e, 0x6e, 0x6b, 0x3a, 0x28, 0x54, 0xfa, 0x85, 0xba, 0x3d, + 0xca, 0x5e, 0x9b, 0x9f, 0x0a, 0x15, 0x79, 0x2b, 0x4e, 0xd4, 0xe5, 0xac, 0x73, 0xf3, 0xa7, 0x57, + 0x07, 0x70, 0xc0, 0xf7, 0x8c, 0x80, 0x63, 0x0d, 0x67, 0x4a, 0xde, 0xed, 0x31, 0xc5, 0xfe, 0x18, + 0xe3, 0xa5, 0x99, 0x77, 0x26, 0xb8, 0xb4, 0x7c, 0x11, 0x44, 0x92, 0xd9, 0x23, 0x20, 0x89, 0x2e, + 0x37, 0x3f, 0xd1, 0x5b, 0x95, 0xbc, 0xcf, 0xcd, 0x90, 0x87, 0x97, 0xb2, 0xdc, 0xfc, 0xbe, 0x61, + 0xf2, 0x56, 0xd3, 0xab, 0x14, 0x2a, 0x5d, 0x9e, 0x84, 0x3c, 0x39, 0x53, 0x47, 0x6d, 0x41, 0xa2, + 0x1f, 0x2d, 0x43, 0xd8, 0xb7, 0x7b, 0xa4, 0x76, 0xc4, 0x17, 0x49, 0xec, 0x7f, 0x0c, 0x6f, 0xf6, + 0x6c, 0xa1, 0x3b, 0x52, 0x29, 0x9d, 0x55, 0xaa, 0xfb, 0x60, 0x86, 0xb1, 0xbb, 0xcc, 0x3e, 0x5a, + 0xcb, 0x59, 0x5f, 0xb0, 0x9c, 0xa9, 0xa0, 0x51, 0x0b, 0xf5, 0x16, 0xeb, 0x7a, 0x75, 0x2c, 0xd7, + 0x4f, 0xae, 0xd5, 0xe9, 0xe6, 0xe7, 0xad, 0xe8, 0x74, 0xd6, 0xf4, 0xea, 0xa8, 0x50, 0x58, 0xaf + ]; + + // Galios field exponent table + var gexp = [ + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, + 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, + 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, + 0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, + 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, + 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, + 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, + 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, + 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, + 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, + 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, + 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, + 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, + 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09, + 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16, + 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x00 + ]; + + // Working buffers: + // data input and ecc append, image working buffer, fixed part of image, run lengths for badness + var strinbuf=[], eccbuf=[], qrframe=[], framask=[], rlens=[]; + // Control values - width is based on version, last 4 are from table. + var version, width, neccblk1, neccblk2, datablkw, eccblkwid; + var ecclevel = 2; + // set bit to indicate cell in qrframe is immutable. symmetric around diagonal + function setmask(x, y) + { + var bt; + if (x > y) { + bt = x; + x = y; + y = bt; + } + // y*y = 1+3+5... + bt = y; + bt *= y; + bt += y; + bt >>= 1; + bt += x; + framask[bt] = 1; + } + + // enter alignment pattern - black to qrframe, white to mask (later black frame merged to mask) + function putalign(x, y) + { + var j; + + qrframe[x + width * y] = 1; + for (j = -2; j < 2; j++) { + qrframe[(x + j) + width * (y - 2)] = 1; + qrframe[(x - 2) + width * (y + j + 1)] = 1; + qrframe[(x + 2) + width * (y + j)] = 1; + qrframe[(x + j + 1) + width * (y + 2)] = 1; + } + for (j = 0; j < 2; j++) { + setmask(x - 1, y + j); + setmask(x + 1, y - j); + setmask(x - j, y - 1); + setmask(x + j, y + 1); + } + } + + //======================================================================== + // Reed Solomon error correction + // exponentiation mod N + function modnn(x) + { + while (x >= 255) { + x -= 255; + x = (x >> 8) + (x & 255); + } + return x; + } + + var genpoly = []; + + // Calculate and append ECC data to data block. Block is in strinbuf, indexes to buffers given. + function appendrs(data, dlen, ecbuf, eclen) + { + var i, j, fb; + + for (i = 0; i < eclen; i++) + strinbuf[ecbuf + i] = 0; + for (i = 0; i < dlen; i++) { + fb = glog[strinbuf[data + i] ^ strinbuf[ecbuf]]; + if (fb != 255) /* fb term is non-zero */ + for (j = 1; j < eclen; j++) + strinbuf[ecbuf + j - 1] = strinbuf[ecbuf + j] ^ gexp[modnn(fb + genpoly[eclen - j])]; + else + for( j = ecbuf ; j < ecbuf + eclen; j++ ) + strinbuf[j] = strinbuf[j + 1]; + strinbuf[ ecbuf + eclen - 1] = fb == 255 ? 0 : gexp[modnn(fb + genpoly[0])]; + } + } + + //======================================================================== + // Frame data insert following the path rules + + // check mask - since symmetrical use half. + function ismasked(x, y) + { + var bt; + if (x > y) { + bt = x; + x = y; + y = bt; + } + bt = y; + bt += y * y; + bt >>= 1; + bt += x; + return framask[bt]; + } + + //======================================================================== + // Apply the selected mask out of the 8. + function applymask(m) + { + var x, y, r3x, r3y; + + switch (m) { + case 0: + for (y = 0; y < width; y++) + for (x = 0; x < width; x++) + if (!((x + y) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + break; + case 1: + for (y = 0; y < width; y++) + for (x = 0; x < width; x++) + if (!(y & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + break; + case 2: + for (y = 0; y < width; y++) + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x == 3) + r3x = 0; + if (!r3x && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + break; + case 3: + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = r3y, x = 0; x < width; x++, r3x++) { + if (r3x == 3) + r3x = 0; + if (!r3x && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 4: + for (y = 0; y < width; y++) + for (r3x = 0, r3y = ((y >> 1) & 1), x = 0; x < width; x++, r3x++) { + if (r3x == 3) { + r3x = 0; + r3y = !r3y; + } + if (!r3y && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + break; + case 5: + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x == 3) + r3x = 0; + if (!((x & y & 1) + !(!r3x | !r3y)) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 6: + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x == 3) + r3x = 0; + if (!(((x & y & 1) + (r3x && (r3x == r3y))) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 7: + for (r3y = 0, y = 0; y < width; y++, r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++, r3x++) { + if (r3x == 3) + r3x = 0; + if (!(((r3x && (r3x == r3y)) + ((x + y) & 1)) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + } + return; + } + + // Badness coefficients. + var N1 = 3, N2 = 3, N3 = 40, N4 = 10; + + // Using the table of the length of each run, calculate the amount of bad image + // - long runs or those that look like finders; called twice, once each for X and Y + function badruns(length) + { + var i; + var runsbad = 0; + for (i = 0; i <= length; i++) + if (rlens[i] >= 5) + runsbad += N1 + rlens[i] - 5; + // BwBBBwB as in finder + for (i = 3; i < length - 1; i += 2) + if (rlens[i - 2] == rlens[i + 2] + && rlens[i + 2] == rlens[i - 1] + && rlens[i - 1] == rlens[i + 1] + && rlens[i - 1] * 3 == rlens[i] + // white around the black pattern? Not part of spec + && (rlens[i - 3] == 0 // beginning + || i + 3 > length // end + || rlens[i - 3] * 3 >= rlens[i] * 4 || rlens[i + 3] * 3 >= rlens[i] * 4) + ) + runsbad += N3; + return runsbad; + } + + // Calculate how bad the masked image is - blocks, imbalance, runs, or finders. + function badcheck() + { + var x, y, h, b, b1; + var thisbad = 0; + var bw = 0; + + // blocks of same color. + for (y = 0; y < width - 1; y++) + for (x = 0; x < width - 1; x++) + if ((qrframe[x + width * y] && qrframe[(x + 1) + width * y] + && qrframe[x + width * (y + 1)] && qrframe[(x + 1) + width * (y + 1)]) // all black + || !(qrframe[x + width * y] || qrframe[(x + 1) + width * y] + || qrframe[x + width * (y + 1)] || qrframe[(x + 1) + width * (y + 1)])) // all white + thisbad += N2; + + // X runs + for (y = 0; y < width; y++) { + rlens[0] = 0; + for (h = b = x = 0; x < width; x++) { + if ((b1 = qrframe[x + width * y]) == b) + rlens[h]++; + else + rlens[++h] = 1; + b = b1; + bw += b ? 1 : -1; + } + thisbad += badruns(h); + } + + // black/white imbalance + if (bw < 0) + bw = -bw; + + var big = bw; + var count = 0; + big += big << 2; + big <<= 1; + while (big > width * width) + big -= width * width, count++; + thisbad += count * N4; + + // Y runs + for (x = 0; x < width; x++) { + rlens[0] = 0; + for (h = b = y = 0; y < width; y++) { + if ((b1 = qrframe[x + width * y]) == b) + rlens[h]++; + else + rlens[++h] = 1; + b = b1; + } + thisbad += badruns(h); + } + return thisbad; + } + + function genframe(instring) + { + var x, y, k, t, v, i, j, m; + + // find the smallest version that fits the string + t = instring.length; + version = 0; + do { + version++; + k = (ecclevel - 1) * 4 + (version - 1) * 16; + neccblk1 = eccblocks[k++]; + neccblk2 = eccblocks[k++]; + datablkw = eccblocks[k++]; + eccblkwid = eccblocks[k]; + k = datablkw * (neccblk1 + neccblk2) + neccblk2 - 3 + (version <= 9); + if (t <= k) + break; + } while (version < 40); + + // FIXME - insure that it fits insted of being truncated + width = 17 + 4 * version; + + // allocate, clear and setup data structures + v = datablkw + (datablkw + eccblkwid) * (neccblk1 + neccblk2) + neccblk2; + for( t = 0; t < v; t++ ) + eccbuf[t] = 0; + strinbuf = instring.slice(0); + + for( t = 0; t < width * width; t++ ) + qrframe[t] = 0; + + for( t = 0 ; t < (width * (width + 1) + 1) / 2; t++) + framask[t] = 0; + + // insert finders - black to frame, white to mask + for (t = 0; t < 3; t++) { + k = 0; + y = 0; + if (t == 1) + k = (width - 7); + if (t == 2) + y = (width - 7); + qrframe[(y + 3) + width * (k + 3)] = 1; + for (x = 0; x < 6; x++) { + qrframe[(y + x) + width * k] = 1; + qrframe[y + width * (k + x + 1)] = 1; + qrframe[(y + 6) + width * (k + x)] = 1; + qrframe[(y + x + 1) + width * (k + 6)] = 1; + } + for (x = 1; x < 5; x++) { + setmask(y + x, k + 1); + setmask(y + 1, k + x + 1); + setmask(y + 5, k + x); + setmask(y + x + 1, k + 5); + } + for (x = 2; x < 4; x++) { + qrframe[(y + x) + width * (k + 2)] = 1; + qrframe[(y + 2) + width * (k + x + 1)] = 1; + qrframe[(y + 4) + width * (k + x)] = 1; + qrframe[(y + x + 1) + width * (k + 4)] = 1; + } + } + + // alignment blocks + if (version > 1) { + t = adelta[version]; + y = width - 7; + for (;;) { + x = width - 7; + while (x > t - 3) { + putalign(x, y); + if (x < t) + break; + x -= t; + } + if (y <= t + 9) + break; + y -= t; + putalign(6, y); + putalign(y, 6); + } + } + + // single black + qrframe[8 + width * (width - 8)] = 1; + + // timing gap - mask only + for (y = 0; y < 7; y++) { + setmask(7, y); + setmask(width - 8, y); + setmask(7, y + width - 7); + } + for (x = 0; x < 8; x++) { + setmask(x, 7); + setmask(x + width - 8, 7); + setmask(x, width - 8); + } + + // reserve mask-format area + for (x = 0; x < 9; x++) + setmask(x, 8); + for (x = 0; x < 8; x++) { + setmask(x + width - 8, 8); + setmask(8, x); + } + for (y = 0; y < 7; y++) + setmask(8, y + width - 7); + + // timing row/col + for (x = 0; x < width - 14; x++) + if (x & 1) { + setmask(8 + x, 6); + setmask(6, 8 + x); + } + else { + qrframe[(8 + x) + width * 6] = 1; + qrframe[6 + width * (8 + x)] = 1; + } + + // version block + if (version > 6) { + t = vpat[version - 7]; + k = 17; + for (x = 0; x < 6; x++) + for (y = 0; y < 3; y++, k--) + if (1 & (k > 11 ? version >> (k - 12) : t >> k)) { + qrframe[(5 - x) + width * (2 - y + width - 11)] = 1; + qrframe[(2 - y + width - 11) + width * (5 - x)] = 1; + } + else { + setmask(5 - x, 2 - y + width - 11); + setmask(2 - y + width - 11, 5 - x); + } + } + + // sync mask bits - only set above for white spaces, so add in black bits + for (y = 0; y < width; y++) + for (x = 0; x <= y; x++) + if (qrframe[x + width * y]) + setmask(x, y); + + // convert string to bitstream + // 8 bit data to QR-coded 8 bit data (numeric or alphanum, or kanji not supported) + v = strinbuf.length; + + // string to array + for( i = 0 ; i < v; i++ ) + eccbuf[i] = strinbuf.charCodeAt(i); + strinbuf = eccbuf.slice(0); + + // calculate max string length + x = datablkw * (neccblk1 + neccblk2) + neccblk2; + if (v >= x - 2) { + v = x - 2; + if (version > 9) + v--; + } + + // shift and repack to insert length prefix + i = v; + if (version > 9) { + strinbuf[i + 2] = 0; + strinbuf[i + 3] = 0; + while (i--) { + t = strinbuf[i]; + strinbuf[i + 3] |= 255 & (t << 4); + strinbuf[i + 2] = t >> 4; + } + strinbuf[2] |= 255 & (v << 4); + strinbuf[1] = v >> 4; + strinbuf[0] = 0x40 | (v >> 12); + } + else { + strinbuf[i + 1] = 0; + strinbuf[i + 2] = 0; + while (i--) { + t = strinbuf[i]; + strinbuf[i + 2] |= 255 & (t << 4); + strinbuf[i + 1] = t >> 4; + } + strinbuf[1] |= 255 & (v << 4); + strinbuf[0] = 0x40 | (v >> 4); + } + // fill to end with pad pattern + i = v + 3 - (version < 10); + while (i < x) { + strinbuf[i++] = 0xec; + // buffer has room if (i == x) break; + strinbuf[i++] = 0x11; + } + + // calculate and append ECC + + // calculate generator polynomial + genpoly[0] = 1; + for (i = 0; i < eccblkwid; i++) { + genpoly[i + 1] = 1; + for (j = i; j > 0; j--) + genpoly[j] = genpoly[j] + ? genpoly[j - 1] ^ gexp[modnn(glog[genpoly[j]] + i)] : genpoly[j - 1]; + genpoly[0] = gexp[modnn(glog[genpoly[0]] + i)]; + } + for (i = 0; i <= eccblkwid; i++) + genpoly[i] = glog[genpoly[i]]; // use logs for genpoly[] to save calc step + + // append ecc to data buffer + k = x; + y = 0; + for (i = 0; i < neccblk1; i++) { + appendrs(y, datablkw, k, eccblkwid); + y += datablkw; + k += eccblkwid; + } + for (i = 0; i < neccblk2; i++) { + appendrs(y, datablkw + 1, k, eccblkwid); + y += datablkw + 1; + k += eccblkwid; + } + // interleave blocks + y = 0; + for (i = 0; i < datablkw; i++) { + for (j = 0; j < neccblk1; j++) + eccbuf[y++] = strinbuf[i + j * datablkw]; + for (j = 0; j < neccblk2; j++) + eccbuf[y++] = strinbuf[(neccblk1 * datablkw) + i + (j * (datablkw + 1))]; + } + for (j = 0; j < neccblk2; j++) + eccbuf[y++] = strinbuf[(neccblk1 * datablkw) + i + (j * (datablkw + 1))]; + for (i = 0; i < eccblkwid; i++) + for (j = 0; j < neccblk1 + neccblk2; j++) + eccbuf[y++] = strinbuf[x + i + j * eccblkwid]; + strinbuf = eccbuf; + + // pack bits into frame avoiding masked area. + x = y = width - 1; + k = v = 1; // up, minus + /* inteleaved data and ecc codes */ + m = (datablkw + eccblkwid) * (neccblk1 + neccblk2) + neccblk2; + for (i = 0; i < m; i++) { + t = strinbuf[i]; + for (j = 0; j < 8; j++, t <<= 1) { + if (0x80 & t) + qrframe[x + width * y] = 1; + do { // find next fill position + if (v) + x--; + else { + x++; + if (k) { + if (y != 0) + y--; + else { + x -= 2; + k = !k; + if (x == 6) { + x--; + y = 9; + } + } + } + else { + if (y != width - 1) + y++; + else { + x -= 2; + k = !k; + if (x == 6) { + x--; + y -= 8; + } + } + } + } + v = !v; + } while (ismasked(x, y)); + } + } + + // save pre-mask copy of frame + strinbuf = qrframe.slice(0); + t = 0; // best + y = 30000; // demerit + // for instead of while since in original arduino code + // if an early mask was "good enough" it wouldn't try for a better one + // since they get more complex and take longer. + for (k = 0; k < 8; k++) { + applymask(k); // returns black-white imbalance + x = badcheck(); + if (x < y) { // current mask better than previous best? + y = x; + t = k; + } + if (t == 7) + break; // don't increment i to a void redoing mask + qrframe = strinbuf.slice(0); // reset for next pass + } + if (t != k) // redo best mask - none good enough, last wasn't t + applymask(t); + + // add in final mask/ecclevel bytes + y = fmtword[t + ((ecclevel - 1) << 3)]; + // low byte + for (k = 0; k < 8; k++, y >>= 1) + if (y & 1) { + qrframe[(width - 1 - k) + width * 8] = 1; + if (k < 6) + qrframe[8 + width * k] = 1; + else + qrframe[8 + width * (k + 1)] = 1; + } + // high byte + for (k = 0; k < 7; k++, y >>= 1) + if (y & 1) { + qrframe[8 + width * (width - 7 + k)] = 1; + if (k) + qrframe[(6 - k) + width * 8] = 1; + else + qrframe[7 + width * 8] = 1; + } + + // return image + return qrframe; + } + + var _canvas = null, + _size = null; + + var api = { + + get ecclevel () { + return ecclevel; + }, + + set ecclevel (val) { + ecclevel = val; + }, + + get size () { + return _size; + }, + + set size (val) { + _size = val + }, + + get canvas () { + return _canvas; + }, + + set canvas (el) { + _canvas = el; + }, + + getFrame: function (string) { + return genframe(string); + }, + + draw: function (string, canvas, size, ecc) { + + ecclevel = ecc || ecclevel; + canvas = canvas || _canvas; + + if (!canvas) { + console.warn('No canvas provided to draw QR code in!') + return; + } + + size = size || _size || Math.min(canvas.width, canvas.height); + + var frame = genframe(string), + ctx = canvas.ctx, + px = Math.round(size / (width + 8)); + + var roundedSize = px * (width + 8), + offset = Math.floor((size - roundedSize) / 2); + + size = roundedSize; + + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.setFillStyle('#000000'); + + for (var i = 0; i < width; i++) { + for (var j = 0; j < width; j++) { + if (frame[j * width + i]) { + ctx.fillRect(px * (4 + i) + offset, px * (4 + j) + offset, px, px); + } + } + } + ctx.draw(); + } + } + + module.exports = { + api: api + } + +})() \ No newline at end of file diff --git a/utils/spell.js b/utils/spell.js new file mode 100644 index 0000000..7297820 --- /dev/null +++ b/utils/spell.js @@ -0,0 +1,80 @@ +const spellStatus=[ + { + name:'拼团中', + value:10 + }, + { + name: '拼团成功', + value: 11 + }, + { + name: '已过期', + value: 12 + }, + { + name: '拼团失败', + value: 13 + }, + { + name: '参团失败', + value: 14 + }, + { + name: '待支付', + value: 15 + }, + { + name: '拼团取消', + value: 16 + }, + { + name: '失败请稍候', + value: 98 + }, + { + name: '失败请稍候', + value: 99 + } +] +const spellStatus02 = [ + { + name: '继续邀请好友', + value: 10 + }, + { + name: '拼团完成', + value: 11 + }, + { + name: '已过期', + value: 12 + }, + { + name: '重新拼团', + value: 13 + }, + { + name: '参团失败', + value: 14 + }, + { + name: '去支付', + value: 15 + }, + { + name: '拼团取消', + value: 16 + }, + { + name: '失败请稍候', + value: 98 + }, + { + name: '失败请稍候', + value: 99 + } +] +module.exports={ + spellStatus, + spellStatus02 +} \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..c1c0049 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,207 @@ +var barcode = require("./barcode"); +var qrcode = require("./qrcode"); + +const extConfig = tt.getExtConfigSync ? tt.getExtConfigSync() : {} + + +function convertUTCTimeToLocalTime(UTCDateString) { + if (!UTCDateString) { + return '-'; + } + function formatFunc(str) { //格式化显示 + return str > 9 ? str : '0' + str + } + var date2 = new Date(UTCDateString); //这步是关键 + var year = date2.getFullYear(); + var mon = formatFunc(date2.getMonth() + 1); + var day = formatFunc(date2.getDate()); + var hour = date2.getHours(); + var noon = hour >= 12 ? 'PM' : 'AM'; + hour = hour >= 24 ? hour - 24 : hour; + hour = formatFunc(hour); + var min = formatFunc(date2.getMinutes()); + var dateStr = ' ' + hour + ':' + min ; + return dateStr; +} + +// function fmtDate(date) { +// var dateee = new Date(date).toJSON(); +// return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, ''); +// } + +function moodsText(Num){//人气值处理 Num人气值 返回字符串 处理到万位 + let sing = "" + if(Num>10000){ + sing = (Num/10000).toFixed(2)+"w" + + }else{ + sing =Num + } + return sing +} + +const formatTime = (date, fmt) => { + try { + if (!date) { + return date; + } + if (typeof date === 'string' && date.length === 13) { + date = Number(date); + } + if (typeof date == "number") { + date = new Date(date); + } + var o = { + "M+": date.getMonth() + 1, //月份 + "d+": date.getDate(), //日 + "h+": date.getHours(), //小时 + "m+": date.getMinutes(), //分 + "s+": date.getSeconds(), //秒 + "q+": Math.floor((date.getMonth() + 3) / 3), //季度 + S: date.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) + fmt = fmt.replace( + RegExp.$1, + (date.getFullYear() + "").substr(4 - RegExp.$1.length) + ); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) + fmt = fmt.replace( + RegExp.$1, + RegExp.$1.length == 1 + ? o[k] + : ("00" + o[k]).substr(("" + o[k]).length) + ); + return fmt; + } catch (error) { + return date; + } +}; + +const formatNumber = n => { + n = n.toString(); + return n[1] ? n : "0" + n; +}; + +function convert_length(length) { + return Math.round((tt.getSystemInfoSync().windowWidth * length) / 750); +} + +function barc(id, code, width, height) { + barcode.code128( + tt.createCanvasContext(id), + code, + convert_length(width), + convert_length(height) + ); +} + +function qrc(id, code, width, height) { + qrcode.api.draw(code, { + ctx: tt.createCanvasContext(id), + width: convert_length(width), + height: convert_length(height) + }); +} +function fmtDate(obj) { + if (typeof obj === 'string' && obj.length === 13) { + obj = Number(obj); + } + var date = new Date(obj); + var y = 1900 + date.getYear(); + var m = "0" + (date.getMonth() + 1); + var d = "0" + date.getDate(); + return ( + y + + "-" + + m.substring(m.length - 2, m.length) + + "-" + + d.substring(d.length - 2, d.length) + ); +} + +//计算下单的时间与现在的时间的 +function timechuo(startTime) { + var s1 = new Date(startTime.replace(/-/g, "/")); + var s2 = new Date(); + var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000); + var year = Math.floor(runTime / 86400 / 365); + var runTime = runTime % (86400 * 365); + var month = Math.floor(runTime / 86400 / 30); + var runTime = runTime % (86400 * 30); + var day = Math.floor(runTime / 86400); + var runTime = runTime % 86400; + var hour = Math.floor(runTime / 3600); + var runTime = runTime % 3600; + var minute = Math.floor(runTime / 60); + var runTime = runTime % 60; + var second = runTime; + if (day && !year && !month){ + return (day + '天' + hour + "小时" + minute + "分钟") + } else if (month && !year){ + return ((month*30+day) +'天' + hour + "小时" + minute + "分钟") + } else if (year) { + return ((year*365 + month*30+ day) + '天' + hour + "小时" + minute + "分钟") + }else{ + return (hour + "小时" + minute + "分钟") + } +} + + +//计算时间差 +function timecha(endTime,startTime) { + var s1 = new Date(endTime.replace(/-/g, "/")); + var s2 = new Date(startTime.replace(/-/g, "/")); + var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000); + var year = Math.floor(runTime / 86400 / 365); + var runTime = runTime % (86400 * 365); + var month = Math.floor(runTime / 86400 / 30); + var runTime = runTime % (86400 * 30); + var day = Math.floor(runTime / 86400); + var runTime = runTime % 86400; + var hour = Math.floor(runTime / 3600); + var runTime = runTime % 3600; + var minute = Math.floor(runTime / 60); + var runTime = runTime % 60; + var second = runTime; + return (month+"月"+day+"天"+hour+"小时"+minute+"分钟") +} +function isJSON(str) { + if (typeof str == 'string') { + console.log("string") + try { + var obj = JSON.parse(str); + if (typeof obj == 'object' && obj) { + return true; + } else { + return false; + } + } catch (e) { + console.log(e); + tt.showToast({ + title: '请扫描正确的二维码', + icon: 'none', + duration: 1300 + }) + } + } else { + tt.showToast({ + title: '请扫描正确的二维码', + icon: 'none', + duration: 1300 + }) + } +} + +module.exports = { + formatTime: formatTime, + barcode: barc, + qrcode: qrc, + isJSON: isJSON, + fmtDate: fmtDate, + timechuo: timechuo, + timecha: timecha, + moodsText:moodsText, + convertUTCTimeToLocalTime: convertUTCTimeToLocalTime +}; diff --git a/weui.ttss b/weui.ttss new file mode 100644 index 0000000..d825c94 --- /dev/null +++ b/weui.ttss @@ -0,0 +1,6 @@ +/*! + * WeUI v1.1.1 (https://github.com/weui/weui-wxss) + * Copyright 2017 Tencent, Inc. + * Licensed under the MIT license + */ + page{line-height:1.6;font-family:-apple-system-font,Helvetica Neue,sans-serif}icon{vertical-align:middle}.weui-cells{position:relative;margin-top:1.17647059em;background-color:#fff;line-height:1.41176471;font-size:17px}.weui-cells:before{top:0;border-top:1rpx solid #d9d9d9}.weui-cells:after,.weui-cells:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d9d9d9}.weui-cells:after{bottom:0;border-bottom:1rpx solid #d9d9d9}.weui-cells__title{margin-top:.77em;margin-bottom:.3em;padding-left:15px;padding-right:15px;color:#999;font-size:14px}.weui-cells_after-title{margin-top:0}.weui-cells__tips{margin-top:.3em;color:#999;padding-left:15px;padding-right:15px;font-size:14px}.weui-cell{padding:10px 15px;position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-cell:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1rpx solid #d9d9d9;color:#d9d9d9;left:15px}.weui-cell:first-child:before{display:none}.weui-cell_active{background-color:#ececec}.weui-cell_primary{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}.weui-cell__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-cell__ft{text-align:right;color:#999}.weui-cell_access{color:inherit}.weui-cell__ft_in-access{padding-right:13px;position:relative}.weui-cell__ft_in-access:after{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;margin-top:-4px;right:2px}.weui-cell_link{color:#586c94;font-size:14px}.weui-cell_link:active{background-color:#ececec}.weui-cell_link:first-child:before{display:block}.weui-icon-radio{margin-left:3.2px;margin-right:3.2px}.weui-icon-checkbox_circle,.weui-icon-checkbox_success{margin-left:4.6px;margin-right:4.6px}.weui-check__label:active{background-color:#ececec}.weui-check{position:absolute;left:-9999px}.weui-check__hd_in-checkbox{padding-right:.35em}.weui-cell__ft_in-radio{padding-left:.35em}.weui-cell_input{padding-top:0;padding-bottom:0}.weui-label{width:105px;word-wrap:break-word;word-break:break-all}.weui-input{height:2.58823529em;min-height:2.58823529em;line-height:2.58823529em}.weui-toptips{position:fixed;-webkit-transform:translateZ(0);transform:translateZ(0);top:0;left:0;right:0;padding:5px;font-size:14px;text-align:center;color:#fff;z-index:5000;word-wrap:break-word;word-break:break-all}.weui-toptips_warn{background-color:#e64340}.weui-textarea{display:block;width:100%}.weui-textarea-counter{color:#b2b2b2;text-align:right}.weui-cell_warn,.weui-textarea-counter_warn{color:#e64340}.weui-form-preview{position:relative;background-color:#fff}.weui-form-preview:before{top:0;border-top:1rpx solid #d9d9d9}.weui-form-preview:after,.weui-form-preview:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#d9d9d9}.weui-form-preview:after{bottom:0;border-bottom:1rpx solid #d9d9d9}.weui-form-preview__value{font-size:14px}.weui-form-preview__value_in-hd{font-size:26px}.weui-form-preview__hd{position:relative;padding:10px 15px;text-align:right;line-height:2.5em}.weui-form-preview__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1rpx solid #d9d9d9;color:#d9d9d9;left:15px}.weui-form-preview__bd{padding:10px 15px;font-size:.9em;text-align:right;color:#999;line-height:2}.weui-form-preview__ft{position:relative;line-height:50px;display:-webkit-box;display:-webkit-flex;display:flex}.weui-form-preview__ft:after{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1rpx solid #d5d5d6;color:#d5d5d6}.weui-form-preview__item{overflow:hidden}.weui-form-preview__label{float:left;margin-right:1em;min-width:4em;color:#999;text-align:justify;text-align-last:justify}.weui-form-preview__value{display:block;overflow:hidden;word-break:normal;word-wrap:break-word}.weui-form-preview__btn{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#3cc51f;text-align:center}.weui-form-preview__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1rpx solid #d5d5d6;color:#d5d5d6}.weui-form-preview__btn:first-child:after{display:none}.weui-form-preview__btn_active{background-color:#eee}.weui-form-preview__btn_default{color:#999}.weui-form-preview__btn_primary{color:#0bb20c}.weui-cell_select{padding:0}.weui-select{position:relative;padding-left:15px;padding-right:30px;height:2.58823529em;min-height:2.58823529em;line-height:2.58823529em;border-right:1rpx solid #d9d9d9}.weui-select:before{content:" ";display:inline-block;height:6px;width:6px;border-width:2px 2px 0 0;border-color:#c8c8cd;border-style:solid;-webkit-transform:matrix(.71,.71,-.71,.71,0,0);transform:matrix(.71,.71,-.71,.71,0,0);position:relative;top:-2px;position:absolute;top:50%;right:15px;margin-top:-4px}.weui-select_in-select-after{padding-left:0}.weui-cell__bd_in-select-before,.weui-cell__hd_in-select-after{padding-left:15px}.weui-cell_vcode{padding-right:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:2.58823529em;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;border-left:1px solid #e5e5e5;line-height:2.58823529em;font-size:17px;color:#3cc51f;white-space:nowrap}.weui-vcode-btn:active{color:#52a341}.weui-cell_switch{padding-top:6px;padding-bottom:6px}.weui-uploader__hd{display:-webkit-box;display:-webkit-flex;display:flex;padding-bottom:10px;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-uploader__title{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-uploader__info{color:#b2b2b2}.weui-uploader__bd{margin-bottom:-4px;margin-right:-9px;overflow:hidden}.weui-uploader__file{float:left;margin-right:9px;margin-bottom:9px}.weui-uploader__img{display:block;width:79px;height:79px}.weui-uploader__file_status{position:relative}.weui-uploader__file_status:before{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.5)}.weui-uploader__file-content{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff}.weui-uploader__input-box{float:left;position:relative;margin-right:9px;margin-bottom:9px;width:77px;height:77px;border:1px solid #d9d9d9}.weui-uploader__input-box:after,.weui-uploader__input-box:before{content:" ";position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#d9d9d9}.weui-uploader__input-box:before{width:2px;height:39.5px}.weui-uploader__input-box:after{width:39.5px;height:2px}.weui-uploader__input-box:active{border-color:#999}.weui-uploader__input-box:active:after,.weui-uploader__input-box:active:before{background-color:#999}.weui-uploader__input{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;opacity:0}.weui-article{padding:20px 15px;font-size:15px}.weui-article__section{margin-bottom:1.5em}.weui-article__h1{font-size:18px;font-weight:400;margin-bottom:.9em}.weui-article__h2{font-size:16px;font-weight:400;margin-bottom:.34em}.weui-article__h3{font-weight:400;font-size:15px;margin-bottom:.34em}.weui-article__p{margin:0 0 .8em}.weui-msg{padding-top:36px;text-align:center}.weui-msg__link{display:inline;color:#586c94}.weui-msg__icon-area{margin-bottom:30px}.weui-msg__text-area{margin-bottom:25px;padding:0 20px}.weui-msg__title{margin-bottom:5px;font-weight:400;font-size:20px}.weui-msg__desc{font-size:14px;color:#999}.weui-msg__opr-area{margin-bottom:25px}.weui-msg__extra-area{margin-bottom:15px;font-size:14px;color:#999}@media screen and (min-height:438px){.weui-msg__extra-area{position:fixed;left:0;bottom:0;width:100%;text-align:center}}.weui-flex{display:-webkit-box;display:-webkit-flex;display:flex}.weui-flex__item{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-btn{margin-top:15px}.weui-btn:first-child{margin-top:0}.weui-btn-area{margin:1.17647059em 15px .3em}.weui-agree{display:block;padding:.5em 15px;font-size:13px}.weui-agree__text{color:#999}.weui-agree__link{display:inline;color:#586c94}.weui-agree__checkbox{position:absolute;left:-9999px}.weui-agree__checkbox-icon{position:relative;top:2px;display:inline-block;border:1px solid #d1d1d1;background-color:#fff;border-radius:3px;width:11px;height:11px}.weui-agree__checkbox-icon-check{position:absolute;top:1px;left:1px}.weui-footer{color:#999;font-size:14px;text-align:center}.weui-footer_fixed-bottom{position:fixed;bottom:.52em;left:0;right:0}.weui-footer__links{font-size:0}.weui-footer__link{display:inline-block;vertical-align:top;margin:0 .62em;position:relative;font-size:14px;color:#586c94}.weui-footer__link:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1rpx solid #c7c7c7;color:#c7c7c7;left:-.65em;top:.36em;bottom:.36em}.weui-footer__link:first-child:before{display:none}.weui-footer__text{padding:0 .34em;font-size:12px}.weui-grids{border-top:1rpx solid #d9d9d9;border-left:1rpx solid #d9d9d9;overflow:hidden}.weui-grid{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box;border-right:1rpx solid #d9d9d9;border-bottom:1rpx solid #d9d9d9}.weui-grid_active{background-color:#ececec}.weui-grid__icon{display:block;width:28px;height:28px;margin:0 auto}.weui-grid__label{margin-top:5px;display:block;text-align:center;color:#000;font-size:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.weui-loading{margin:0 5px;width:20px;height:20px;display:inline-block;vertical-align:middle;-webkit-animation:a 1s steps(12) infinite;animation:a 1s steps(12) infinite;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;background-size:100%}.weui-loading.weui-loading_transparent{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E")}@-webkit-keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.weui-badge{display:inline-block;padding:.15em .4em;min-width:8px;border-radius:18px;background-color:#e64340;color:#fff;line-height:1.2;text-align:center;font-size:12px;vertical-align:middle}.weui-badge_dot{padding:.4em;min-width:0}.weui-loadmore{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.weui-loadmore__tips{display:inline-block;vertical-align:middle}.weui-loadmore_line{border-top:1px solid #e5e5e5;margin-top:2.4em}.weui-loadmore__tips_in-line{position:relative;top:-.9em;padding:0 .55em;background-color:#fff;color:#999}.weui-loadmore__tips_in-dot{position:relative;padding:0 .16em;width:4px;height:1.6em}.weui-loadmore__tips_in-dot:before{content:" ";position:absolute;top:50%;left:50%;margin-top:-1px;margin-left:-2px;width:4px;height:4px;border-radius:50%;background-color:#e5e5e5}.weui-panel{background-color:#fff;margin-top:10px;position:relative;overflow:hidden}.weui-panel:first-child{margin-top:0}.weui-panel:before{top:0;border-top:1rpx solid #e5e5e5}.weui-panel:after,.weui-panel:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}.weui-panel:after{bottom:0;border-bottom:1rpx solid #e5e5e5}.weui-panel__hd{padding:14px 15px 10px;color:#999;font-size:13px;position:relative}.weui-panel__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1rpx solid #e5e5e5;color:#e5e5e5;left:15px}.weui-media-box{padding:15px;position:relative}.weui-media-box:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1rpx solid #e5e5e5;color:#e5e5e5;left:15px}.weui-media-box:first-child:before{display:none}.weui-media-box__title{font-weight:400;font-size:17px;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;word-wrap:break-word;word-break:break-all}.weui-media-box__desc{color:#999;font-size:13px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.weui-media-box__info{margin-top:15px;padding-bottom:5px;font-size:13px;color:#cecece;line-height:1em;list-style:none;overflow:hidden}.weui-media-box__info__meta{float:left;padding-right:1em}.weui-media-box__info__meta_extra{padding-left:1em;border-left:1px solid #cecece}.weui-media-box__title_in-text{margin-bottom:8px}.weui-media-box_appmsg{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-media-box__thumb{width:100%;height:100%;vertical-align:top}.weui-media-box__hd_in-appmsg{margin-right:.8em;width:60px;height:60px;line-height:60px;text-align:center}.weui-media-box__bd_in-appmsg{-webkit-box-flex:1;-webkit-flex:1;flex:1;min-width:0}.weui-media-box_small-appmsg{padding:0}.weui-cells_in-small-appmsg{margin-top:0}.weui-cells_in-small-appmsg:before{display:none}.weui-progress{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-progress__bar{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-progress__opr{margin-left:15px;font-size:0}.weui-navbar{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;z-index:500;top:0;width:100%;border-bottom:1rpx solid #ccc}.weui-navbar__item{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:13px 0;text-align:center;font-size:0}.weui-navbar__item.weui-bar__item_on{color:#1aad19}.weui-navbar__slider{position:absolute;content:" ";left:0;bottom:0;width:6em;height:3px;background-color:#1aad19;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-navbar__title{display:inline-block;font-size:15px;max-width:8em;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.weui-tab{position:relative;height:100%}.weui-tab__panel{box-sizing:border-box;height:100%;padding-top:50px;overflow:auto;-webkit-overflow-scrolling:touch}.weui-search-bar{position:relative;padding:8px 10px;display:-webkit-box;display:-webkit-flex;display:flex;box-sizing:border-box;background-color:#efeff4;border-top:1rpx solid #d7d6dc;border-bottom:1rpx solid #d7d6dc}.weui-icon-search{margin-right:8px;font-size:inherit}.weui-icon-search_in-box{position:absolute;left:10px;top:7px}.weui-search-bar__text{display:inline-block;font-size:14px;vertical-align:middle}.weui-search-bar__form{position:relative;-webkit-box-flex:1;-webkit-flex:auto;flex:auto;border-radius:5px;background:#fff;border:1rpx solid #e6e6ea}.weui-search-bar__box{position:relative;padding-left:30px;padding-right:30px;width:100%;box-sizing:border-box;z-index:1}.weui-search-bar__input{height:28px;line-height:28px;font-size:14px}.weui-icon-clear{position:absolute;top:0;right:0;padding:7px 8px;font-size:0}.weui-search-bar__label{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;border-radius:3px;text-align:center;color:#9b9b9b;background:#fff;line-height:28px}.weui-search-bar__cancel-btn{margin-left:10px;line-height:28px;color:#09bb07;white-space:nowrap}

Hd> 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