From 496f1f90e106cb63d9b90943006ada8199c6a4fd Mon Sep 17 00:00:00 2001 From: LengYingxin Date: Mon, 6 Aug 2018 10:06:32 +0800 Subject: [PATCH] init --- app.js | 60 ++++++++++++ app.json | 42 ++++++++ app.wxss | 25 +++++ assets/img/home-n.png | Bin 0 -> 3465 bytes assets/img/home-n.svg | 1 + assets/img/home-y.png | Bin 0 -> 3292 bytes assets/img/home-y.svg | 1 + assets/img/logo.png | Bin 0 -> 30875 bytes assets/img/user-n.png | Bin 0 -> 4720 bytes assets/img/user-n.svg | 1 + assets/img/user-y.png | Bin 0 -> 4391 bytes assets/img/user-y.svg | 1 + components/coupons/index.js | 26 +++++ components/coupons/index.json | 6 ++ components/coupons/index.wxml | 21 ++++ components/coupons/index.wxss | 95 ++++++++++++++++++ dist/action-sheet/index.js | 47 +++++++++ dist/action-sheet/index.json | 8 ++ dist/action-sheet/index.wxml | 23 +++++ dist/action-sheet/index.wxss | 1 + dist/alert/index.js | 37 +++++++ dist/alert/index.json | 7 ++ dist/alert/index.wxml | 15 +++ dist/alert/index.wxss | 1 + dist/avatar/index.js | 20 ++++ dist/avatar/index.json | 3 + dist/avatar/index.wxml | 4 + dist/avatar/index.wxss | 1 + dist/badge/index.js | 29 ++++++ dist/badge/index.json | 3 + dist/badge/index.wxml | 5 + dist/badge/index.wxss | 1 + dist/base/index.js | 37 +++++++ dist/button/index.js | 80 +++++++++++++++ dist/button/index.json | 3 + dist/button/index.wxml | 20 ++++ dist/button/index.wxss | 1 + dist/card/index.js | 26 +++++ dist/card/index.json | 3 + dist/card/index.wxml | 11 +++ dist/card/index.wxss | 1 + dist/cell-group/index.js | 33 +++++++ dist/cell-group/index.json | 3 + dist/cell-group/index.wxml | 3 + dist/cell/index.js | 86 +++++++++++++++++ dist/cell/index.json | 3 + dist/cell/index.wxml | 16 +++ dist/cell/index.wxss | 1 + dist/checkbox-group/index.js | 38 ++++++++ dist/checkbox-group/index.json | 7 ++ dist/checkbox-group/index.wxml | 3 + dist/checkbox-group/index.wxss | 0 dist/checkbox/index.js | 56 +++++++++++ dist/checkbox/index.json | 7 ++ dist/checkbox/index.wxml | 8 ++ dist/checkbox/index.wxss | 1 + dist/col/index.js | 20 ++++ dist/col/index.json | 3 + dist/col/index.wxml | 1 + dist/col/index.wxss | 1 + dist/collapse-item/index.js | 46 +++++++++ dist/collapse-item/index.json | 7 ++ dist/collapse-item/index.wxml | 9 ++ dist/collapse-item/index.wxss | 1 + dist/collapse/index.js | 31 ++++++ dist/collapse/index.json | 3 + dist/collapse/index.wxml | 4 + dist/collapse/index.wxss | 0 dist/count-down/index.js | 90 +++++++++++++++++ dist/count-down/index.json | 4 + dist/count-down/index.wxml | 4 + dist/count-down/index.wxss | 0 dist/divider/index.js | 25 +++++ dist/divider/index.json | 3 + dist/divider/index.wxml | 19 ++++ dist/divider/index.wxss | 1 + dist/drawer/index.js | 33 +++++++ dist/drawer/index.json | 3 + dist/drawer/index.wxml | 6 ++ dist/drawer/index.wxss | 1 + dist/grid-icon/index.js | 10 ++ dist/grid-icon/index.json | 3 + dist/grid-icon/index.wxml | 1 + dist/grid-icon/index.wxss | 1 + dist/grid-item/index.js | 16 +++ dist/grid-item/index.json | 3 + dist/grid-item/index.wxml | 1 + dist/grid-item/index.wxss | 1 + dist/grid-label/index.js | 10 ++ dist/grid-label/index.json | 3 + dist/grid-label/index.wxml | 1 + dist/grid-label/index.wxss | 1 + dist/grid/index.js | 50 ++++++++++ dist/grid/index.json | 3 + dist/grid/index.wxml | 1 + dist/grid/index.wxss | 1 + dist/icon/index.js | 22 +++++ dist/icon/index.json | 3 + dist/icon/index.wxml | 1 + dist/icon/index.wxss | 1 + dist/index-item/index.js | 32 ++++++ dist/index-item/index.json | 3 + dist/index-item/index.wxml | 11 +++ dist/index-item/index.wxss | 1 + dist/index/index.js | 158 ++++++++++++++++++++++++++++++ dist/index/index.json | 3 + dist/index/index.wxml | 38 ++++++++ dist/index/index.wxss | 1 + dist/input-number/index.js | 101 +++++++++++++++++++ dist/input-number/index.json | 3 + dist/input-number/index.wxml | 5 + dist/input-number/index.wxss | 1 + dist/input/index.js | 61 ++++++++++++ dist/input/index.json | 3 + dist/input/index.wxml | 31 ++++++ dist/input/index.wxss | 1 + dist/load-more/index.js | 14 +++ dist/load-more/index.json | 3 + dist/load-more/index.wxml | 8 ++ dist/load-more/index.wxss | 1 + dist/message/index.js | 45 +++++++++ dist/message/index.json | 3 + dist/message/index.wxml | 3 + dist/message/index.wxss | 1 + dist/modal/index.js | 54 +++++++++++ dist/modal/index.json | 9 ++ dist/modal/index.wxml | 40 ++++++++ dist/modal/index.wxss | 1 + dist/notice-bar/index.js | 112 +++++++++++++++++++++ dist/notice-bar/index.json | 7 ++ dist/notice-bar/index.wxml | 9 ++ dist/notice-bar/index.wxss | 1 + dist/page/index.js | 42 ++++++++ dist/page/index.json | 7 ++ dist/page/index.wxml | 14 +++ dist/page/index.wxss | 1 + dist/panel/index.js | 19 ++++ dist/panel/index.json | 3 + dist/panel/index.wxml | 4 + dist/panel/index.wxss | 1 + dist/progress/index.js | 23 +++++ dist/progress/index.json | 3 + dist/progress/index.wxml | 10 ++ dist/progress/index.wxss | 1 + dist/radio-group/index.js | 38 ++++++++ dist/radio-group/index.json | 7 ++ dist/radio-group/index.wxml | 3 + dist/radio-group/index.wxss | 0 dist/radio/index.js | 56 +++++++++++ dist/radio/index.json | 7 ++ dist/radio/index.wxml | 8 ++ dist/radio/index.wxss | 1 + dist/rate/index.js | 69 +++++++++++++ dist/rate/index.json | 6 ++ dist/rate/index.wxml | 23 +++++ dist/rate/index.wxss | 1 + dist/row/index.js | 9 ++ dist/row/index.json | 3 + dist/row/index.wxml | 1 + dist/row/index.wxss | 1 + dist/slide/index.js | 15 +++ dist/slide/index.json | 8 ++ dist/slide/index.wxml | 4 + dist/slide/index.wxss | 0 dist/spin/index.js | 23 +++++ dist/spin/index.json | 3 + dist/spin/index.wxml | 6 ++ dist/spin/index.wxss | 1 + dist/step/index.js | 52 ++++++++++ dist/step/index.json | 7 ++ dist/step/index.wxml | 70 ++++++++++++++ dist/step/index.wxss | 1 + dist/steps/index.js | 50 ++++++++++ dist/steps/index.json | 3 + dist/steps/index.wxml | 3 + dist/steps/index.wxss | 1 + dist/sticky-item/index.js | 40 ++++++++ dist/sticky-item/index.json | 3 + dist/sticky-item/index.wxml | 10 ++ dist/sticky-item/index.wxss | 1 + dist/sticky/index.js | 63 ++++++++++++ dist/sticky/index.json | 3 + dist/sticky/index.wxml | 3 + dist/sticky/index.wxss | 0 dist/swipeout/index.js | 161 +++++++++++++++++++++++++++++++ dist/swipeout/index.json | 7 ++ dist/swipeout/index.wxml | 39 ++++++++ dist/swipeout/index.wxss | 1 + dist/switch/index.js | 38 ++++++++ dist/switch/index.json | 3 + dist/switch/index.wxml | 26 +++++ dist/switch/index.wxss | 1 + dist/tab-bar-item/index.js | 62 ++++++++++++ dist/tab-bar-item/index.json | 8 ++ dist/tab-bar-item/index.wxml | 10 ++ dist/tab-bar-item/index.wxss | 1 + dist/tab-bar/index.js | 66 +++++++++++++ dist/tab-bar/index.json | 3 + dist/tab-bar/index.wxml | 6 ++ dist/tab-bar/index.wxss | 1 + dist/tab/index.js | 50 ++++++++++ dist/tab/index.json | 7 ++ dist/tab/index.wxml | 9 ++ dist/tab/index.wxss | 43 +++++++++ dist/tabs/index.js | 56 +++++++++++ dist/tabs/index.json | 3 + dist/tabs/index.wxml | 2 + dist/tabs/index.wxss | 40 ++++++++ dist/tag/index.js | 42 ++++++++ dist/tag/index.json | 3 + dist/tag/index.wxml | 27 ++++++ dist/tag/index.wxss | 1 + dist/toast/index.js | 48 +++++++++ dist/toast/index.json | 7 ++ dist/toast/index.wxml | 16 +++ dist/toast/index.wxss | 1 + pages/coupons/details/index.js | 65 +++++++++++++ pages/coupons/details/index.json | 6 ++ pages/coupons/details/index.wxml | 1 + pages/coupons/details/index.wxss | 0 pages/coupons/index/index.js | 65 +++++++++++++ pages/coupons/index/index.json | 6 ++ pages/coupons/index/index.wxml | 1 + pages/coupons/index/index.wxss | 0 pages/index/banner/index.js | 30 ++++++ pages/index/banner/index.json | 6 ++ pages/index/banner/index.wxml | 14 +++ pages/index/banner/index.wxss | 29 ++++++ pages/index/coupons/index.js | 103 ++++++++++++++++++++ pages/index/coupons/index.json | 10 ++ pages/index/coupons/index.wxml | 8 ++ pages/index/coupons/index.wxss | 0 pages/index/index.js | 89 +++++++++++++++++ pages/index/index.json | 13 +++ pages/index/index.wxml | 8 ++ pages/index/index.wxss | 14 +++ pages/index/rushToBuy/index.js | 52 ++++++++++ pages/index/rushToBuy/index.json | 6 ++ pages/index/rushToBuy/index.wxml | 18 ++++ pages/index/rushToBuy/index.wxss | 80 +++++++++++++++ pages/login/index.js | 68 +++++++++++++ pages/login/index.json | 6 ++ pages/login/index.wxml | 8 ++ pages/login/index.wxss | 35 +++++++ pages/logs/logs.js | 15 +++ pages/logs/logs.json | 3 + pages/logs/logs.wxml | 6 ++ pages/logs/logs.wxss | 8 ++ pages/market/index.js | 65 +++++++++++++ pages/market/index.json | 6 ++ pages/market/index.wxml | 1 + pages/market/index.wxss | 0 pages/order/details/index.js | 65 +++++++++++++ pages/order/details/index.json | 6 ++ pages/order/details/index.wxml | 1 + pages/order/details/index.wxss | 0 pages/order/index/index.js | 65 +++++++++++++ pages/order/index/index.json | 6 ++ pages/order/index/index.wxml | 1 + pages/order/index/index.wxss | 0 pages/rushToBuy/index.js | 65 +++++++++++++ pages/rushToBuy/index.json | 6 ++ pages/rushToBuy/index.wxml | 1 + pages/rushToBuy/index.wxss | 0 pages/shop/details/index.js | 65 +++++++++++++ pages/shop/details/index.json | 6 ++ pages/shop/details/index.wxml | 1 + pages/shop/details/index.wxss | 0 pages/shop/index/index.js | 65 +++++++++++++ pages/shop/index/index.json | 6 ++ pages/shop/index/index.wxml | 1 + pages/shop/index/index.wxss | 0 pages/success/index.js | 65 +++++++++++++ pages/success/index.json | 6 ++ pages/success/index.wxml | 1 + pages/success/index.wxss | 0 pages/user/index.js | 65 +++++++++++++ pages/user/index.json | 6 ++ pages/user/index.wxml | 3 + pages/user/index.wxss | 0 project.config.json | 36 +++++++ utils/util.js | 19 ++++ 282 files changed, 5068 insertions(+) create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 assets/img/home-n.png create mode 100644 assets/img/home-n.svg create mode 100644 assets/img/home-y.png create mode 100644 assets/img/home-y.svg create mode 100644 assets/img/logo.png create mode 100644 assets/img/user-n.png create mode 100644 assets/img/user-n.svg create mode 100644 assets/img/user-y.png create mode 100644 assets/img/user-y.svg create mode 100644 components/coupons/index.js create mode 100644 components/coupons/index.json create mode 100644 components/coupons/index.wxml create mode 100644 components/coupons/index.wxss create mode 100644 dist/action-sheet/index.js create mode 100644 dist/action-sheet/index.json create mode 100644 dist/action-sheet/index.wxml create mode 100644 dist/action-sheet/index.wxss create mode 100644 dist/alert/index.js create mode 100644 dist/alert/index.json create mode 100644 dist/alert/index.wxml create mode 100644 dist/alert/index.wxss create mode 100644 dist/avatar/index.js create mode 100644 dist/avatar/index.json create mode 100644 dist/avatar/index.wxml create mode 100644 dist/avatar/index.wxss create mode 100644 dist/badge/index.js create mode 100644 dist/badge/index.json create mode 100644 dist/badge/index.wxml create mode 100644 dist/badge/index.wxss create mode 100644 dist/base/index.js create mode 100644 dist/button/index.js create mode 100644 dist/button/index.json create mode 100644 dist/button/index.wxml create mode 100644 dist/button/index.wxss create mode 100644 dist/card/index.js create mode 100644 dist/card/index.json create mode 100644 dist/card/index.wxml create mode 100644 dist/card/index.wxss create mode 100644 dist/cell-group/index.js create mode 100644 dist/cell-group/index.json create mode 100644 dist/cell-group/index.wxml create mode 100644 dist/cell/index.js create mode 100644 dist/cell/index.json create mode 100644 dist/cell/index.wxml create mode 100644 dist/cell/index.wxss create mode 100644 dist/checkbox-group/index.js create mode 100644 dist/checkbox-group/index.json create mode 100644 dist/checkbox-group/index.wxml create mode 100644 dist/checkbox-group/index.wxss create mode 100644 dist/checkbox/index.js create mode 100644 dist/checkbox/index.json create mode 100644 dist/checkbox/index.wxml create mode 100644 dist/checkbox/index.wxss create mode 100644 dist/col/index.js create mode 100644 dist/col/index.json create mode 100644 dist/col/index.wxml create mode 100644 dist/col/index.wxss create mode 100644 dist/collapse-item/index.js create mode 100644 dist/collapse-item/index.json create mode 100644 dist/collapse-item/index.wxml create mode 100644 dist/collapse-item/index.wxss create mode 100644 dist/collapse/index.js create mode 100644 dist/collapse/index.json create mode 100644 dist/collapse/index.wxml create mode 100644 dist/collapse/index.wxss create mode 100644 dist/count-down/index.js create mode 100644 dist/count-down/index.json create mode 100644 dist/count-down/index.wxml create mode 100644 dist/count-down/index.wxss create mode 100644 dist/divider/index.js create mode 100644 dist/divider/index.json create mode 100644 dist/divider/index.wxml create mode 100644 dist/divider/index.wxss create mode 100644 dist/drawer/index.js create mode 100644 dist/drawer/index.json create mode 100644 dist/drawer/index.wxml create mode 100644 dist/drawer/index.wxss create mode 100644 dist/grid-icon/index.js create mode 100644 dist/grid-icon/index.json create mode 100644 dist/grid-icon/index.wxml create mode 100644 dist/grid-icon/index.wxss create mode 100644 dist/grid-item/index.js create mode 100644 dist/grid-item/index.json create mode 100644 dist/grid-item/index.wxml create mode 100644 dist/grid-item/index.wxss create mode 100644 dist/grid-label/index.js create mode 100644 dist/grid-label/index.json create mode 100644 dist/grid-label/index.wxml create mode 100644 dist/grid-label/index.wxss create mode 100644 dist/grid/index.js create mode 100644 dist/grid/index.json create mode 100644 dist/grid/index.wxml create mode 100644 dist/grid/index.wxss create mode 100644 dist/icon/index.js create mode 100644 dist/icon/index.json create mode 100644 dist/icon/index.wxml create mode 100644 dist/icon/index.wxss create mode 100644 dist/index-item/index.js create mode 100644 dist/index-item/index.json create mode 100644 dist/index-item/index.wxml create mode 100644 dist/index-item/index.wxss create mode 100644 dist/index/index.js create mode 100644 dist/index/index.json create mode 100644 dist/index/index.wxml create mode 100644 dist/index/index.wxss create mode 100644 dist/input-number/index.js create mode 100644 dist/input-number/index.json create mode 100644 dist/input-number/index.wxml create mode 100644 dist/input-number/index.wxss create mode 100644 dist/input/index.js create mode 100644 dist/input/index.json create mode 100644 dist/input/index.wxml create mode 100644 dist/input/index.wxss create mode 100644 dist/load-more/index.js create mode 100644 dist/load-more/index.json create mode 100644 dist/load-more/index.wxml create mode 100644 dist/load-more/index.wxss create mode 100644 dist/message/index.js create mode 100644 dist/message/index.json create mode 100644 dist/message/index.wxml create mode 100644 dist/message/index.wxss create mode 100644 dist/modal/index.js create mode 100644 dist/modal/index.json create mode 100644 dist/modal/index.wxml create mode 100644 dist/modal/index.wxss create mode 100644 dist/notice-bar/index.js create mode 100644 dist/notice-bar/index.json create mode 100644 dist/notice-bar/index.wxml create mode 100644 dist/notice-bar/index.wxss create mode 100644 dist/page/index.js create mode 100644 dist/page/index.json create mode 100644 dist/page/index.wxml create mode 100644 dist/page/index.wxss create mode 100644 dist/panel/index.js create mode 100644 dist/panel/index.json create mode 100644 dist/panel/index.wxml create mode 100644 dist/panel/index.wxss create mode 100644 dist/progress/index.js create mode 100644 dist/progress/index.json create mode 100644 dist/progress/index.wxml create mode 100644 dist/progress/index.wxss create mode 100644 dist/radio-group/index.js create mode 100644 dist/radio-group/index.json create mode 100644 dist/radio-group/index.wxml create mode 100644 dist/radio-group/index.wxss create mode 100644 dist/radio/index.js create mode 100644 dist/radio/index.json create mode 100644 dist/radio/index.wxml create mode 100644 dist/radio/index.wxss create mode 100644 dist/rate/index.js create mode 100644 dist/rate/index.json create mode 100644 dist/rate/index.wxml create mode 100644 dist/rate/index.wxss create mode 100644 dist/row/index.js create mode 100644 dist/row/index.json create mode 100644 dist/row/index.wxml create mode 100644 dist/row/index.wxss create mode 100644 dist/slide/index.js create mode 100644 dist/slide/index.json create mode 100644 dist/slide/index.wxml create mode 100644 dist/slide/index.wxss create mode 100644 dist/spin/index.js create mode 100644 dist/spin/index.json create mode 100644 dist/spin/index.wxml create mode 100644 dist/spin/index.wxss create mode 100644 dist/step/index.js create mode 100644 dist/step/index.json create mode 100644 dist/step/index.wxml create mode 100644 dist/step/index.wxss create mode 100644 dist/steps/index.js create mode 100644 dist/steps/index.json create mode 100644 dist/steps/index.wxml create mode 100644 dist/steps/index.wxss create mode 100644 dist/sticky-item/index.js create mode 100644 dist/sticky-item/index.json create mode 100644 dist/sticky-item/index.wxml create mode 100644 dist/sticky-item/index.wxss create mode 100644 dist/sticky/index.js create mode 100644 dist/sticky/index.json create mode 100644 dist/sticky/index.wxml create mode 100644 dist/sticky/index.wxss create mode 100644 dist/swipeout/index.js create mode 100644 dist/swipeout/index.json create mode 100644 dist/swipeout/index.wxml create mode 100644 dist/swipeout/index.wxss create mode 100644 dist/switch/index.js create mode 100644 dist/switch/index.json create mode 100644 dist/switch/index.wxml create mode 100644 dist/switch/index.wxss create mode 100644 dist/tab-bar-item/index.js create mode 100644 dist/tab-bar-item/index.json create mode 100644 dist/tab-bar-item/index.wxml create mode 100644 dist/tab-bar-item/index.wxss create mode 100644 dist/tab-bar/index.js create mode 100644 dist/tab-bar/index.json create mode 100644 dist/tab-bar/index.wxml create mode 100644 dist/tab-bar/index.wxss create mode 100644 dist/tab/index.js create mode 100644 dist/tab/index.json create mode 100644 dist/tab/index.wxml create mode 100644 dist/tab/index.wxss create mode 100644 dist/tabs/index.js create mode 100644 dist/tabs/index.json create mode 100644 dist/tabs/index.wxml create mode 100644 dist/tabs/index.wxss create mode 100644 dist/tag/index.js create mode 100644 dist/tag/index.json create mode 100644 dist/tag/index.wxml create mode 100644 dist/tag/index.wxss create mode 100644 dist/toast/index.js create mode 100644 dist/toast/index.json create mode 100644 dist/toast/index.wxml create mode 100644 dist/toast/index.wxss create mode 100644 pages/coupons/details/index.js create mode 100644 pages/coupons/details/index.json create mode 100644 pages/coupons/details/index.wxml create mode 100644 pages/coupons/details/index.wxss create mode 100644 pages/coupons/index/index.js create mode 100644 pages/coupons/index/index.json create mode 100644 pages/coupons/index/index.wxml create mode 100644 pages/coupons/index/index.wxss create mode 100644 pages/index/banner/index.js create mode 100644 pages/index/banner/index.json create mode 100644 pages/index/banner/index.wxml create mode 100644 pages/index/banner/index.wxss create mode 100644 pages/index/coupons/index.js create mode 100644 pages/index/coupons/index.json create mode 100644 pages/index/coupons/index.wxml create mode 100644 pages/index/coupons/index.wxss create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.wxml create mode 100644 pages/index/index.wxss create mode 100644 pages/index/rushToBuy/index.js create mode 100644 pages/index/rushToBuy/index.json create mode 100644 pages/index/rushToBuy/index.wxml create mode 100644 pages/index/rushToBuy/index.wxss create mode 100644 pages/login/index.js create mode 100644 pages/login/index.json create mode 100644 pages/login/index.wxml create mode 100644 pages/login/index.wxss create mode 100644 pages/logs/logs.js create mode 100644 pages/logs/logs.json create mode 100644 pages/logs/logs.wxml create mode 100644 pages/logs/logs.wxss create mode 100644 pages/market/index.js create mode 100644 pages/market/index.json create mode 100644 pages/market/index.wxml create mode 100644 pages/market/index.wxss create mode 100644 pages/order/details/index.js create mode 100644 pages/order/details/index.json create mode 100644 pages/order/details/index.wxml create mode 100644 pages/order/details/index.wxss create mode 100644 pages/order/index/index.js create mode 100644 pages/order/index/index.json create mode 100644 pages/order/index/index.wxml create mode 100644 pages/order/index/index.wxss create mode 100644 pages/rushToBuy/index.js create mode 100644 pages/rushToBuy/index.json create mode 100644 pages/rushToBuy/index.wxml create mode 100644 pages/rushToBuy/index.wxss create mode 100644 pages/shop/details/index.js create mode 100644 pages/shop/details/index.json create mode 100644 pages/shop/details/index.wxml create mode 100644 pages/shop/details/index.wxss create mode 100644 pages/shop/index/index.js create mode 100644 pages/shop/index/index.json create mode 100644 pages/shop/index/index.wxml create mode 100644 pages/shop/index/index.wxss create mode 100644 pages/success/index.js create mode 100644 pages/success/index.json create mode 100644 pages/success/index.wxml create mode 100644 pages/success/index.wxss create mode 100644 pages/user/index.js create mode 100644 pages/user/index.json create mode 100644 pages/user/index.wxml create mode 100644 pages/user/index.wxss create mode 100644 project.config.json create mode 100644 utils/util.js diff --git a/app.js b/app.js new file mode 100644 index 0000000..df4ab7e --- /dev/null +++ b/app.js @@ -0,0 +1,60 @@ +//app.js +App({ + onLaunch: function () { + // 登录 + wx.login({ + success: res => { + // 发送 res.code 到后台换取 openId, sessionKey, unionId + console.log("login", res); + } + }) + // 获取用户信息 + wx.getSetting({ + success: res => { + if (res.authSetting['scope.userInfo']) { + // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 + wx.getUserInfo({ + success: res => { + // 可以将 res 发送给后台解码出 unionId + this.globalData.userInfo = res.userInfo + + // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 + // 所以此处加入 callback 以防止这种情况 + if (this.userInfoReadyCallback) { + this.userInfoReadyCallback(res) + } + } + }) + } + } + }) + this.getLocation() + // setTimeout(() => { + // this.globalData.market={ + // name:"陕西大悦城" + // } + // }, 1000); + }, + /** + * 获取地址位置信息 + */ + getLocation:function (){ + wx.getLocation({ + type: 'wgs84', + success: function (res) { + console.log("getLocation", res); + }, + fail:error=>{ + console.log(error); + } + }) + }, + globalData: { + // 当前用户信息 + userInfo: null, + // 当前商场信息 + market:{ + name:"陕西大悦城" + } + } +}) \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..7f5be16 --- /dev/null +++ b/app.json @@ -0,0 +1,42 @@ +{ + "pages": [ + "pages/index/index", + "pages/login/index", + "pages/coupons/index/index", + "pages/coupons/details/index", + "pages/order/index/index", + "pages/order/details/index", + "pages/rushToBuy/index", + "pages/shop/index/index", + "pages/shop/details/index", + "pages/success/index", + "pages/user/index", + "pages/market/index" + ], + "tabBar": { + "color":"#9F9F9F", + "selectedColor":"#00C0FF", + "list": [{ + "pagePath": "pages/index/index", + "iconPath":"assets/img/home-n.png", + "selectedIconPath":"assets/img/home-y.png", + "text": "首页" + }, { + "pagePath": "pages/user/index", + "iconPath":"assets/img/user-n.png", + "selectedIconPath":"assets/img/user-y.png", + "text": "我的" + }] + }, + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "WeChat", + "navigationBarTextStyle": "black" + }, + "networkTimeout": { + "request": 10000, + "downloadFile": 10000 + }, + "debug": false +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..2e4e135 --- /dev/null +++ b/app.wxss @@ -0,0 +1,25 @@ +@font-face { + font-family: 'iconfont'; /* project id 777313 */ + src: url('//at.alicdn.com/t/font_777313_ulb9e7ee6cl.eot'); + src: url('//at.alicdn.com/t/font_777313_ulb9e7ee6cl.eot?#iefix') format('embedded-opentype'), + url('//at.alicdn.com/t/font_777313_ulb9e7ee6cl.woff') format('woff'), + url('//at.alicdn.com/t/font_777313_ulb9e7ee6cl.ttf') format('truetype'), + url('//at.alicdn.com/t/font_777313_ulb9e7ee6cl.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; +} +/* 定位 */ +.icon-dingweib:before { content: "\e652"; } +/* 三角 */ +.icon-choose:before { content: "\e601"; } + + +view{ + font-family: PingFangSC-Semibold; +} diff --git a/assets/img/home-n.png b/assets/img/home-n.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b8e323ac576daaf689eb6a6c7a20c695dcc8e1 GIT binary patch literal 3465 zcmdT{`8U+x|9>H2Xb>~9WkTMzQAzftu{0xV*1=?7vMLBUW1bf{&Z zXK1)fhzAfJ9kcZ$wR?$lTmo zaOmZhynv#PwRJ!4;@^6HY%u5di_TPy22XA265H)a1DmHuTaB@?u@blpUQSm#g>2I2 zrN>&}qPPVr#D4v|xY1~V&S_y*2``%G&mod>eo37Qu(-!D|JphxF!;@tT~`V0`01`A z_1Q4N4q5cy+nXEEGVsvho(V`02#R1y`i8TjazQMbl$~oRJ@_;CV!De#TP!@@ zi(?9~PHBjR&Wdiob1?Wk5uTWMcg`zZhij2DtF%UFUxFH3>~C@o*wTyNu`T=#_JK?pn&aclcV{5E30+uQ__qYMi*^%?Q$nNeWoX$8I&iOjr zw`NEWQ1_>Czzf!A?qi8VA7_r4Fuoc_8IdUQ>m3sToT78puog@JE?I*j^oT%dP`cck zG@!IS)Pm)k^GAATQe;q&(d8mK*VC#d_xZMWzLZ2IT?hU$^e5HPgdh3?;ioq;{OP~4 zfBsYudM#QuZ-4)pBV(`B=vK$_;OdcU%Nk!Tw5Pwzf$dvi&uhtYV_Xhyq){c_$eL-L zC7(funx&5b00>BXQ0)vz>AcV)aiec zn;Y2(^OJnvPFo-TqBIyASVGIfz`?%4zLJV7x%ZS>Cvn6F(xfEUgJWJ|Wc_`rCuK+#u<{r>2oigiSnBUp zTy>yGj2bm~V zdp39kw^4lYSVXy}9m(G`Goo8u%p7z2X$Jq7fxiD)vORIh{dIJ|(!n*}9T{ZkRk?Yw z-HuF@q;@@|%N_wDeBn^Yd-=-{BFGW4rGUYi#+`Og7)G_^*sb-@a%HOvmifazVOr|1jjtCA+wfRF57GYNZ+#cM^}BSCR37y4M$|c5 zy#TW8AJq$Ni>i9P0bVO5WYek;f0(6hSLQ1q!R@DMIdz(`wb2Zx! zPIym07MbR9m%&Co8~P)8PYnUu*$_oNK{$oDYfx=)B1 zvbD_vOOvA5{#dI9DQ23DCMWhE)&%>oGW!W8Dx~!b1gK3#bE_F%fhelz?r^qSlILH7{*gU|y6;8bIzRI+1U zIS+YqaJuM>d_vj zmwOe)E~V{e{~Td3=k5kX@6 zl5_a(4LBxn8wtH6jOaoZOAP->Vvd%A|^@8!vzJb4#HY~J%t&jQ^sf> zaTe%mRD@!=)_?_$}h+vMTP;rJ~~eGnIUV^ZhmJAt1wromUsb!D#* zn>R&GjZy=cj0*i>tX*rm<1{+#r4&)aqJfMas*Qb?@$-~-7s>jg4VO1 zZlBa6dvNh7?0fJzLHzP@#AIKy4M6J$9tB)I~=JH#UQKT2!d7YLPm~Q%ey-@5;D){vl;m|X8 zl0)6CW7-M-Q?TOpUb5D%L2;+aM#>d??%t<UxM)`%iGM#FD!lYTvr==>EnNQMc3d~^0$J4Asn>N)$#!2> zEF|Hk8FP?QylHAWg>xr~dGt?uuHE(q8cXjL*nXY!($nEA+h3H?tqzec3#Ji^MO6Ta teyjv?Ch0n2i@s^4Ll_5gEGG1~4qv4_2`SMg$oMt^h6bkkb-K>@{{X3SH5&i` literal 0 HcmV?d00001 diff --git a/assets/img/home-n.svg b/assets/img/home-n.svg new file mode 100644 index 0000000..f42bc5e --- /dev/null +++ b/assets/img/home-n.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/home-y.png b/assets/img/home-y.png new file mode 100644 index 0000000000000000000000000000000000000000..38dfacd72831f233d249299b0d5c47af947f9b0e GIT binary patch literal 3292 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 VrCp)}k3SJMi>p?qWmlZz{tHb(E~x+j literal 0 HcmV?d00001 diff --git a/assets/img/home-y.svg b/assets/img/home-y.svg new file mode 100644 index 0000000..5747b94 --- /dev/null +++ b/assets/img/home-y.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/logo.png b/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a24e56e2dc5ab5500af3746190345956af7d287a GIT binary patch literal 30875 zcmagF1yo$k@-Ld;!QI{6-QC^Y-CYKE2=492wB4-K=g zlPj3}(6yy<6`6FWn&~|XJzAHVdY?9<6vTA=V#^PXX7IM_lq1nn!BYn zzq+LKzsCaK36a}+db;wnu=x1+F#B*YySUr1u<`Nnv9PkUu(LCPDVRL`oITBanVdZ+ z{v$!s%EQ9l&ehY-#hLUUiDu?5UYEdDQ;z}wZK}xG*=WOZX<3aZ?awR2xIcE<~GiM7cIY}XMumEN|J4=2J zE>=EXHg<779tjRMHYr|SK5h<4PH8qa4hd;CE)Mbk@JhN^csW@)d;W*l@_+M6{Exi< zc!HBFcw|W{cROz@OKEo(C(?h-nBVSy)`jnXl=p95%l}yyvHy{m1*{CqKkNGcTIc^X zft}}{%l~>U_~yTUZ{-Yjc6YE>6Pet-efs2uDkmwX>AQAb0Bef5^m}a9ak|ncRa90S z0oDGb_bVor)HysneJMHISEHiCW*p3Ny05ybYHDau8Tj(zA*iI0_gns}eH_~bNClQY z);`>;?mXG3yfh#>j#5l8za4S$nL zV#?AbtCHe0i5w(hVk5{WS=riF{}M|;KJ`>BiDXB5leyKXkK`B9sDi~(!oxKUR`oF? zCg&tK#gZ}qMe4$~&rtG*5|uLg6J5m5Y-RVaf1>^<6=Mce=$g_B;gHQJFsWfPm2*h| zI4tQ(WPzGzHSR>|r=M**HsaJityGX5wVr$>jy3BgMPc)#Hm9@-E7wdHxc810E=1iO zJx$4SczR2(OL#!-q|=r#hs?JNYoY$BI;f|l!0DCoUOYo8K6;uJ#I>enLwE0O0idf6 z+Cn{peit0nh+o(*$8^~7q{z1q0eZP=f2n{e(^xczuV$BxK0yPn6=uPaTd|JfNc#ds zRbpQT5Sl;Oh8tXnA5FU<|A#TqCmd?oiM zct5oUMV1=dVG_B;JCS<{hUdjO;H5h_ECOrnKC@1Y@ySHy%LC|JT&uA^zJ&-qsFw7r zMppC2Kz56hL@( z)J$Ahoc{$fQ^9g%h~9jda}*_kb^FkDY=m%z59{V{f?S{#A`(r(Z_^t1%`U51nit-Y zk8!{fYVf`r%9_1%T-{s0FQ-!Y)yt!gE)tWgi!TO2B0LM%`7vCkYk=1TRX|_Dl@dhv zd*BHD_oCRmSh4~HB^J=oM0X|fA%rqHh2K}U~C1Z5``GECmFOhSAG zPZ6jJh!_|cU^#58L`CK)IU$X~`+S=KajrZxN6UoiC zx%&#>DA%zLiKCY6v%qIY4S1w@w|oIImse>5ztIdN59~^NdZP{>T_zbqxp+lV8Le)2G~DCju4p2<97>cR7k~}$eFtHu?~`wt4D9!J z5G%-zeISqTI>>EOqgaYmwj0JI9P8SRQ}Nz|4K%JfwQAR#>HLY(8 zlw)~^+!Hp0kJz~?Cv=6A5|IS-u0R`uV4N?uaMuk0K@8DWIjYrTqzGc?Qi0ge!0z6G z_COz_mZJMP#Ba!ki+9@y1_i6o*6Go%?wsGYU<^_#O#5(#mX#p^k-y88S_&MDh~U zCDm(+*@YZ}ss-TolKWH&k%{HQfvw!Vu}G?mjqDiQ=J}DN$Y*bs4m+Wm+;UAo*`&}= zANSom^Oj@JzYRU z-e7!OPAW;?<()N?0z`c0hwviUko0B_;6ua{jF7)M|2ktqZ1+eRF~P-`h=I3!F@&_SIvLu8-8 zZf!_LY7A)AN7~7`${+4PTTX4@@56Aso7sOF_7%6`YlABXsxF=bdY<{8>)??&e+(U5 z8wo&~+($$UAkYXE;S8neB^okI&*z-{6KbcwM495{3YnWA&(HI(=ucFNHY^he_)e%1 ztkJ5h@WK5l7nfDZ!M5gWn3M?Dg=&8rlqfLEXCY80i`h)Ah;TY=?8Ic}L}n1>bUgWz zDb;k$7^8JLc(pZnoF-NTma9f(^{FQZ4cL>CLkizRDJJ%X9pk zol>Yzq$mJQLpXC-LZ%Kg**!GG>MElG>n5uFtC?=LeYurW16HHR1;BPUG$q)Ar?zQy z5z+-5P&9dN6=D1W-jReECBoOhPtT-Zjb3(L9j5!}O44B(4Z+@jfS!nB*^BpC1Sv$< zrNwx-$qi$W1MONS8289IpWY3Vc4Zk#pzd38;d^Ui)u5XpF^r&OV<%1zA#~x%IqA%h zt;utzh~kqQ?St7)w7Rr{0i_UNH2WpTEnA1G>&}8Cnsm3I`9hahI(BIW*%F|-yy zCYiXb|4spM12yC^mY3twd}Rga(jD`m#8ih1(*ZYVL8B^Mgn>xH=YV`=4Yu;N%!+&_ zNha@-Njt<;S+Y;ZrpljU})f@ow0A?7j*+X0#ygsm9&km7Q2*f)D#1(X-thTnZAv7vB$e@sxkr?J91s6F@xEe4TM3;q~wzS{9E zw;7>lzw1~$B@#k144Eb4NgxEE-%`3+o6;<@y~v z34E=mBd?V_V1|43NnRYr+84+x!pRNQ8E**n6tVIKv9qZ~T|rYb*mr!2>)XgdJ9j9S zT-Vu)fvCN5qxuEfPX5s}kGtYnwt#5XiEU0L)V~$A97}NcTD00oL8TIVhG9LqkR2&) z!*Q8;HvZFfR%s5IEQ8`hxM}Qrtx7X-YTjCM;bMYjiIB~B@yaeIl$d@+5)Gnf`~JAy zS0&Hc7J4C@+?5d#@3UJ(cMBC-Y1DEp%5oRv;&Z+u{#7`gqp$s>LY$CvO5Q|HBfg?= zg&OgsP8@4v4P}{vM3$T;G(t)+vO4UKe>Q*tu4(*X+2rb<-_Ly&bb3RL`aJ6If1Qvj zDXn_!6UXF9p$$_O95_nDz9n?p?rj^=2!W>OY{w)tL(RRb2*XIJlhx*?HxrAJ%uzCy zIdl|I1P-0s7l5KXeEZ>VU}nNiEN`KWwC~pV_d4LI2P&wKMG<=h(+br z_NxP85H!o%&LAGLeh_G(La`wUAUKXuw0Uu+SAS0~C%i17zYE)zkc^0-cEe&IMhguPAR~1ELR$J` zeA2{Xs4|s?{$}EF8HMaj*l=N_7ij&z@UpFeQlOf-wZD)QaC?ZH_|?+y;QL>zZ~NSM zjT5NDc%)99pwwjzr(@$JxE~qu@G@nn!#6c$yY2&8Rqap7)J-`PTITg+G2s$oSV&CH zl5zK}j~^X?=RV9cBr!tbwNJI!-=pD@A&1$?eY>IdP8;`7hX>7=<&%DY0_3{K&;$vm zjq6w}k;PbeknJq675gO9-q>P1xYFlI;Df=06wol8IM*#%2753ViS>>%AUW8N2CRG{ z6g0oZ02LdnscZEy^Kak;;qwpN(N|Fu6}XI0O{jQ^-p_eTGYSxc>~Lw#(d}l!;6rl` zFRyMGO)G7huRJmyK15!|2*g-1kN_cqcJC1_R>(S)_0EN!HbBlS8dpYYMtFZiH@0Og z7E$zvb3s)VrQ81V*OG3;Q2>yLjCBU5hsw4nCQSk5_0_w$#QbsDktsmq3r|7hYL%J8 zYUCGLC^v0Yz`0zw~n7#0uq1`?VpyhT)WEM z5kcP_!nDY@Wz=-y@&buQ5r-Q8nW1qQM&y4n(esx?z-sJb)}n+hgtvGw6=)0&Y03^N zQNqciEX-he=|jgY=9qJZM}`*PlV0fSxF!5r_e=jg0xJd*TkGulojI6frHlFx@nugI zN@Rx{$v+)f@H4fh5@^^^{|N1V{iBMkN6!fN&wwVN@ueYd!W%JFK=R}F_N&SBk561s zVjwqRbs;asmOnZXB49OrCK}~CJJWuPU@WD zv7jRb({wAKSffc0VhX+vG|_qY5@F%vPqZf2So)-;I~4!^WS=`-E6s6UV*P;*mm(2C zaPJDvAb&QxNP)y0#WH5Jwm1!-s|ZN@h?O}-bMa4YwZm6Dv>H~&T&5f^$RJ$M?tP-s zgwIvJ;Y3W#>w*Eyt}5T#IUolHd1+|&(6tNi2Upg}VePh|3wZyDhh+!`BIg`ZK&7%>9aV(MVXVs|c50LOTlv zaF9qUV8t3r#1TxefTQT%b!(CPEtIE8$>6ZXZdf>3Jtcx`Ykv}VB>MtDR@HQ-I8e176 zFA4Sl!+}#Gux1^!XK_1~md_Qr>}$NkpV||-{ciB!0eBt!KQWRK@#z$BdyxJ=aP! z2Gj~LQu@Wos1hBBgj^wjvs5+oNyUa0%l8DlE_<$yv|;sH$PNyeXiBG@h;zHuDBxDn z^SaRGTcV9QFxY|U8y3O_t5TNyJxU6s>f$<}de#+nYtNiVg%938=LOb~-JH}4`_Ek# zh~2e_-{Oy|8_m@KsBcI0ge%$?lGM^-UEnOs(kBPJM`8+oG{Xzid%*`EpB~+6a0Mhs zpCN*YyD3}oGOZfB2MUw`@k~e45YL^640si=O&s#4D`s5WUzPS&E(v1OVYf6K1qh@&qo*dxa=9 z1RXShp+WN7n5fCgbUwGVEsiqJ&}1jGMwIz;3nriwxWB7=$4o9X8e|;-;fxr8s{)rC zw!&|)yr5bWnU>Jl4YQzm0;exqf?p_WQ;V3cF#d$Whe~hbj4;YP395*W+H%)L``iv2 zUZnXGVH*d2lIuEwtt385`YF2o_*tEr(5ci=p@XiCB7h=VNQiF;sXoMI>QuFhV+_R` zISh=xzX>pTrT`Vx8tX`g>Eq`KhjNgluAN#H_~S+0`ilhcFGs_8KQUqA^j~vmstB>zIy?)<1nD@ zed!nFbWm>Xq+M_Zi+m#zG2~H@z!0q3=WX-)(X?Y4hlqrOlVAtrxvvLeW?sY;5Pp94 zlN}CUFOUa-D?X6|0B2@=11E6QSGo^Flqv!Xx~;DdU=Fjg0xSfGB@fqxC=- zvk;nlwc^*7@frH(a!jw|+EL79$=;ms7sLWtKI|9Cr%R%nY-jUp?6Sxf@$f>Uk+eFoO}k#X-V_vA)}j&*Srr*SVodJ( zGw{x_=k^yQW`1*yQx_6ULDrLJ{4$nBJRG#5J2i@F%UcO-(Bu*fKc+6bClz-q{rr&? z?S@?y^$>ltVF`}&P1xQKru-Tu5}@7FH}G!i&$JK&M{w<8o1H^O-XnVg$@-&KL*DK9 zkq~ffoLCcoZu_dF9)9f}pssnI%yGma2@+!j*P$3^M|dZPu-n>+wXIF*q0)&XXu#%X z%PY{3VU$EP(HW!`?%ZsNkg<4RTf$*nGdU;WR};JPMK@aA>yNr4p6D#?KpEh8?R z4KwG;gaUhX;sw^V+!tgfgx|kn?mF1hyeQGYN2AgV_uvo3xjodR;`)nddS4nG1PJhX z6`qMy3Y`r(1%q^1Z@yv_2_3o+ZV2mSC=^2==>!ctBH+8Y1slPQZ23p+C+)0KyA{O! z&hg0^4lh6!GfWH10X_QJZa74Iv*Xq|GPnBQth0r>3h?nYnQpr?ey5m2Tu~*YzZETY z{$d5*gmq@7%S^(LB2Tz!8EogB3QTwP5 zwemxL-k2I8dEIj%R0>4TGad2M5gZl|t4AK!7>vsq{e31XlyYMStU#r+7_v-Pgi3(< zsUZ24rbvE&Ws&D+&@bjHQMY%=p)PCIBw28Z!Mc9zS;|*WZAT-Wdrv+5g-O0gg0TV5Of&Lfu2=U2Q%IZem5fHPQ?l zV|A;NR+%Q_yfqhdJosSc;qwiWJ#J{65;sa z<5}52k$yF<6Ik9Mi|Q;e9V696-y?+-#Y{h2m0+|tJle2KCx#vS>YcFxmt@oUUN6yO zU5wjzfiy`jI=E^bZh39S;>$!xNFhZE-3>m6c}8m;{y`4r-=<*@(pb~&b~_dKW4=k~ zGC*E=hOdhC^wVGrDyUssR)>SrNN&x6r;1FI5Y4(W#mtg>UhW!uS-ZXWdU+;Bd8vZMdZLlR|LH)k3EVWFWW2CEQ8yLE4?1O6&Y`rza_~xFEI7cgl zoCw!f6H$SuI&J3rLl)`mtEo2od4o@O?o-x4w9w%CY0iq6@il;FR1GE&A5S;`%Tu8l z$D6C5(2FJ{qW}uBrznMTgFyJ}H->PHgsFVe+V8LeU4yvONyC4b`hTC57y`XxzaY69 zTm0b}(;K?;_Q5@-nHstLQi8lRkcEYO`%3=YiXBuRJ?P9jgz)MoR*We~McS#aXKV3J z{R{Y8o_3ipl_hjxpE5;9oFik-^1~vr)!470|4>4(euW>}`JQrqcwVPa~rv$R;ChoqiTJk6ybNsj!wx%sT!jdMrLZ zx?_5}VSEf(1ndSIeMW%f#t7$nd7ua7O4T<{>09g{oT=T_|^Z2r~}RXA@wcyh~6xU@OANwE`cY! z2OsW+az5sm*VZWB%MP%6G?7n$P?kcmC@>C#LX45R_U3`}IeWIrIfr$TF4+$UH%Hy~ zY-JdkSkNRFUu}tMf>j<~m8iE9o=SBU0FZaWZGpaoZ>WK*!EAD~$g%XA~}%p5J$L=Y{V)xOxVFn`{tU3ojs0qE|;=v2ND-F&Rc20>WSqD;4vvE!ZSz5j^DBg{BdQTeduw717)WD<@b0ib{H^PRq zWkGv$Phk`$L8V|MEWXLgUdu-A8+KPvv&|&kqL zNQbb7Exo^H{oxNu=+C{$i4Jdk2GewDiylzC6FOJ7fK`0&O2?^-3iH9cGBv#&n+ePl z8l0|SVvvP#05o@Bs|E7vk3gw#13J*tiIwkfBK!tVEb`h}JK=;u(3_Yue;djIb`Ie< zzcfTOQ4$I^Z1o-E-k}f`YJc7MJI{Q6$~){?-O3AP4b?SqCX5U71YPo)-Tu|!&(3Iw z!(V+$jL=>gbWDMo)tkg5SVmC1xAnx3_4Cl*uFg4v?zq+7=M;9tZpB@yC@i!cKO+om zzpt?rmfKV^Mk}XlyMhbQ)-R>6EthJr@;l+i-t%%TG-~j=IMY!%)xu6*vJ6189utPY z!Wis4adMs)P2xb7GWXOLJ6M^q|Ka@X~xTiSCJpU zDaf94z_?-KN+S2?gvUsqZVU9HI=04GNfJ1(O$c9ph|0IU)F%g`U01q*g*bbLB^m~y zvVe2n%DAW!VpMAtyGO zA+wI5Ag;Gj(KmL7TUHjCLBlB`uM{7D-d*rEynir-%P&)*cU;DXqEX^J+MMou-nU;!hb7jg5?T)K*|M7HV$<`e?L%UWl&oPTd z2*v*L>tf!he7C_gre#v?+7!?6m@1h;aW!&VpgSWH5N@rlVqPE zcmc`yt9g584oOGHIkUGl^|~HDQm|;QM`by=nOyYeLNiYAIj*u%LH8vpE{%F z`>r)@meYvwyC!#zw;JQ`B7jz)n+)}$`%=KV+@(XV5OC)b6_(Z`GFyl?5fk9j>Chp9 z7!hM;!HIm+GQNm*ZA+7N6PXY$!1Kzw4m&_p;2V%+o?UnEXM(g*1YhxrY}6$V{6ng{ z7;Q9kEP7D8Q$YA!`lG_Ipv~iqKKx;xxkYV~9sG<#5m!X`} zOa+wPD|+43&#SqKv|Lf|exz{PQXC)ZV-9^VFl{;mV=q%|RELfbmfv#c3#Z2*xQ z5??}SyfYQq*ct)gGW2x~pw8rr4Q<}kIiyD{1ap?VH8k?Aph~1+J7uLJqgK}32X@d=#jFdBioeXO`=lXm!%=pZ|?iZ6W( zkwx@mI{t2R#>vk4oqrhArs=j^P2i@Gy&DIK5+9@te}=b$pHT1R7SEH~vaN|b?A&4? z``9G?h<)I8ZWa4RQIF@X1N?sID(N@x(`b|QY_9;9H3a37jsIyspd_!G)rXZrh$-FH z)P#$$E}W4o-L^y@1q+5%mp|l+DoT_MN}(hU5$0vUQUv!L3EswpxU{rH6^RC4SBF;T zONIXL0?JL(W+A4a3&wC(i{4@1AzTw&(B!4EI8^!gr-ek{hylas}$-x zEY`DyXO!WpboaLrWX7yN^WMuE%f9EAAETESB=d%~kaJCsHevVT)Ui98YllFTGj|;) zryJHMCJd#+v{B0Wot`8b!im!lDh(sI_$jPJ2$UNScW`Y#qC%2dtJYi8Z4HD>%nkap z4v(Tn=!S(&?~dq)DK)d)q!B}jp^6PyUBiJ-HBvZm0p{Ny;DQb*xC#*lu4sWPk^g-B ztN*`5|9}1elJtM!|8M_)2l+qc|DXNd@lbICzd3p8P6_a9xIZ$?M5(i0UjT6<=3>rO zi=et%`>9`DlIWNRNm>>tbDU1BxbzGTbhSzdZazMD4-ai13tU7`D=98W#B9!A1D`}> zGKlN7eNI%vLMv<9<}f#E|NWix2L+wzagi<0MPlj8&Pl-kyE8e1R*m z7&3Z(-MP81OAdW>w2UPo@81*Hq1B%koe6n-W;_#HclLfQ^I&Fa;@$&n>pNt{-d_CP zUfwzwFay4S({||FxVKPK^Rv=YGVl^(l%&tt3f?|%vWQwcfhHix6EW!JqiK&}?^7{Y zpg>n^-vj{TK^V|%d5@XIUuM7gT3#39%CxKjWt8*z(kfj& zINlRqUZh}zgv>3!4JkQKUp$iV=4NLzX2`8$7a|B<6b1kB2d2;W^$B|$cn<%Lm6$W< zkgw3MQD?}g%_PZCH_|q)nYWcAh#?|e><@NX7aCplI2O@+&82maWsZgGXLyXRnlpQDQXswvggU4pF zF#7Ega4I|N$n8xrTQ+Y$PPE=HdJlk1L3H=2k1D3<|6b={YGUMKOZ{Wv8~Kf0b84}( ztt~w>oeSs@iLvD-*mLr48q0#?x1r&Y0^bX8K@2Ei&}*~+O5Z6Sm?;p@`!fKGJglRs z*`0Ha9z#@BWs{YqBPH#<>*aQfZ5|tgE~mr;{e@{B1>=+YV zPP0|i_!*}u_UOnus;LR2hDx-_L{Bfs(;l*a5~WBj$Cq{U*nM`{d3;nXYLK9s9P)F0 zUE_KA@H`hD{j~+_x89v8_KKUga*&e}q#9}|#jspWeLc-|>PCuZ9zWBIiV8kD+F_oQe_Jc=jKy7u6=2U+QyOi~`s+knl>E-2h zY%b9)Jx27%=;-Mj4~r*fqsTzL%O#gy0VeD_S}gD{Lc(RG5QxUW!iYr|;z4t9x0-J62hs1T8u!}Vo=$*!W>p%EqvXt5P z$su=XS|%9%I^<~WvvukRFC%~G<>@o3mvYg|V4W%4-4Q(Q;7x*^>{L}n>qtm@eZ0Jg zmWjhk@A=wfV=-;~9C37h66fckjDEM#d6l zVg;`+=P)lrT`kt7Gh#4KQh=EBw~NxBjn?gFSMLuG3EJMm7Z!5j)1vLW>@f%k3MfR% zJ@0Lx<-ZQ{@}tKN{S-=ZWj^wF(TAGyt&$UBfMIg-_oAT3Rz>P&O~8t5G%pc*PI_MR zr)|d%ukEd}4VgJl{y@p)83ddy(E1}SMU$*RJ{QFZ1D4$1t-#{i+SftYtCI!3Vd)?h z88OGBqToI6D?Ukc-M*6Un9^E@Q{Keh)Z*LTC!Vfu2F4ck;x3;g-A2=f_AD9)Z>kY2 za<&Gho;k>tL){UY{FzA>_q4m*(9#YZ#urMvb^U}H_r+sD_wCaC^lW-sMziO5E*qQU zBoYzFmATK48dlb@GAzB{HR**4eYqLBuWP98EMUiY(>BqUci-xRe=qUGFnx`RS@meo zU&{q}a|3@&l#&Uwn+}AWjHgNOriwS%w(6@(a4(%;^V!a3?Ga$J4Wwsjd8ZGbJVa&A zWIEB3dlTluRJs%u_WD2V_@eEh|6bw_xWCClVd?QeZ`abK)?RJJ-}ZtV-lh6L{$jnh zi}%eQ!W*bxi0GFDjVT%cPU$1|1o-UDnhapX42MNE>4yl|TH11gsk0WOXXHlzTG`NVdnd_^2_r_JznXn9<`M#XY90>sso zl)|&`YHKqO#R)Aeyr&zsYL}*ZoMqqh{01@UhWH|EG%#t)A6ycl4lM$a(wOdz%%?6Z5Z(TTkP;l zV=)0~5FT4$b@g?oRyQ--6r-jK9zMQekZ&LrlaK%t)8w~%+$j}QHbz{y$GV_+x$vvpvi@d|#=(Ig zJ`Qrq$PkLYqN}07*xT-=fbBgbD{HJ`_W9*y%Fam$A14grJvPH#uTu2jYDU1?>-tfx z)GT@r9ULkzoNNoyi@zu7%o3|X!rWgzNAE7${2;FIDy!}hq%Hv~@Oe0DbK}4!!2mjo z#Q+y;>9AH-1rDDeuYawFiR~u7DY04slEko2p{pTmD77lH*KMRrDyn**qe+4!Uu5}p zWPr$=J5ynHJk3VL=sm%>svW2&q+Ui@{^ukdhu;f+$op{UIt>ZE?cf-v-staU9Sck6 zfhudfShCjyjdK2K_tOd2x^_o9(Lzb;^LuXp#>3N~nFQ?UDF4B&>|{l>lC3C5n4NYTvH6o;RTx79V+85#)7 zJ++T!y9;DzgZ~nx$XgPoQK@2@ZmoEy7J`GLme$f7^%Efm$+)8#pw0vsvtAdDu1$E@mZjc{ks|k48k+6MD(Lbz=0$fhgH{4bq`o?Y0++sCgPPg z@&k~Nkb({?XcQ*tS9UMjJUAvdEscNz?FNbI$itgPH^X~=o84aTpkt#1BqeOhE>3;4 z<>bk!3eg>E3&Z^h-p2b4PKVo_!N3f8ue=3dBVTpQ8-1D_%fr-1P#=>W!$o5>smdV; zbb0J!2BNTAU?>V~sjg1v^`VAvH@Ex<68=1NxIuFd+I*j0E^1)UxnEb>#l}2QA=XWv z$-GD6wF=6JRT$=(&PB&V>pQw*qN>0mO#5nR_LgrGtoYklQ?ny4&%nZBaY?x;+oF%s zJ6o@=SKlT(IeEuf&4@@B09OF?y-L6p4%oTys60NvTwRYrsi9Osc`}oDYiG=L6r;}Y z)}(@lg-s?gHmRwp7jQqIl<7}R?@RjbbG{SAbhg-;oS&a*qUuOK2w_1uNs%dJD@tNO zqiI*vP-oI_{MX+JRQbJ~NTg74I3{|6BVQ&*$wxd8&~yFA;^sy!ia~oRD_yg^(#nm^ zj)i4*T;k0H|B@9sFos4M7Z3aQcvHm~#Ky(}WwJFa-TBnMgC5@b9MQuok^u^FJWVL> zam**@KEH`FlmTP|W!gTTk6qUPk_}C`sj3WwMt*+xN9o{~@*KKZtU1>g z=6H3OTQn;fR1y3LX-;_1eF$W`gu^K;k$5Fi;hhdN4dYDe^-ogHXD#*d^tsy?BNGdJ zy;qc%XJeQv5B|7l7m_f4dwIzb;fSuxxe9)^c)R+Gd#8Nk3Wz~5_x_~Ih?bR}-v4({ z8nkpOL4NY_?yuBsCOEc=LT+5%kBEZue)%R+TX)vssg~dT5CZK7@1;+arA974d>OQ0 z-^!kY2ri(LSxBR-_8zM$dy|bBk_?B^c)u*0ymiVZ88Ub8KZ0yh7pH?#pP@&n4h4KJ zy8rgAPX%QQ4%`e|qOYuxi&C&utJfus&=?(uvySblyu7_7;tI#SEm5oBZ+3c|bUkc? z;Y-@6qcp7(U%|pHKW3E*e_l#Ev(Uo>(i;l(!7-L`)6qJJ^~eL4-%`}kF}}Cn_2$~O z-|qLptngcujFdcOEKTaH&4J|8sr4f;&;p>0E8_V#6skE9%T3PvPpiwHj$NZ}Z|>uV zxpT$HX_$|g*A{%&8qL!m>RYiGW&TpVuM?>c1VOwhzENyBezTQMh1R}|pS{>0>_%?E ziRhM}i;=eWmew&bU&S-)ePJ;2Y@gLB7>1rZ(T$aVq4@jpCTeXh>@y})vGC{5U4xYZ z$^GpuCk~;i&vxKs&0>UHi z`p4U4y~sz!GM+w@O_WaD@n6i1_UBbkNTKf#n6;S(DTV#sm(xFgwyqPQL-+{5yk2d> zjwO+d`g|}5(1`G~|1>p1CdFtqFfiEuReo?NiCVRzxzM@1Z75_uOlso7f>9?+yWbV$ zO@$MEhB13GJl^cm(+Rk*7SpIqWMX8D{fg*=e1{ray?#6ehj7ty*uAYFKe3McTH;hG zXlfWRN>|?-%H2PI|Egq6NH#ivi_7dc7>kU-v$#iK1nM$2_zmb47U`EfXNT2nl=)Q0 z<>xoDQ4zf|!P5WH`~DQng`aRitoWTL=7rL=i<3VsBS$7^_$U(reRDSm`LkWx@vM!F zb`f7* zkdmTJ53d!+;qL3fXxR_@7JVawykFpyyglG;eO%+1mvPkvx?XwgMi9dN9mnKD)^Zh_ zYX5X~7x=pEKkJBs;xqnWCFWt=2Vzw1K^72kzaRcxAKY{%BuUpGik0`E!Ey`rO(N-z$N5t8dbOH_qKMjYV=|73?w^q?kr5*0U-q6lv=GN`rj3@7=sxqD zMv`xjBvdoqiuBNXqqno1GO@l9YD!Ae@m8I>Qs45xx!~W26Er?Ma^fgpQN+HD=PSc2 zNw=mQK|)s}%$j#Rx38<>m9S6@&UmXLu4=8OOW%W^o?eCC-^BYr!_@d|sQmo= z_RrU$^+8l3{l3fF(QSV}w)593Qwo2#;f znq%|R;7%}8!29atq>pKJ!!+#JFj6T^h72r0ir*@3?~jsMb=D%Y(`WAMog0Qr8B&^Y zpvnFIy`628Z4u&uUm~f{$QZDDa~9ntWxeoA!IS^}@!~JIMR?RLrJeum6*eB zHC1tH_!V7ZyMhS&Y9Ocn^Id@6?_2k4ky};{zm`1QD#iC3j)hN(_gQ-zxr2d7C zX}y5a)&jHJRnPtYWPE67p{g){xk?2^7@5Liv4w_-CSA?^?EAhiH(k@7(<X!wmbb8mZ5;k0=#hBp_SA0niasgJK`#E1SJv$ONag17 zjAf(}uGp>*f)YJtPM`doATk1KCR3X^X;djvUuH zv2$nlJe!;^iJctKo&oVyvGN@*DeXLx=V8$E4gDyboSY)J*GAS)m3TCld;lu!7a|C) z>BbVsOs2r=gIG++O*1*inL+^*o%Mmh8mJl9RmC@3i6r6_3TSyj?x2lEp})fw71p=% z-dcw0yN8Fn_pz!kwF#mJ^p%1+YYMpOY%^0%MO}!;X0F=Z%YO4RImz%{MZji? zcYpWn>|&QJeoV6KX>_!*b^?EItIcp@Y%H%^KpL~Bqx{e26A$XP&0a(b^+>3{v$aC` zm>swEO(0h6lG2d!So`_zU_^lrE^niXqT+WCx??_M;*`U{UksPh6 z+>(l_qHPvqlt_8%=hXZelH{%a+dLL_MuDK$%qsz1My1b& zQIoD@;o}?0$MX)5#oqpO9shjyn=rTGwBz6F0>~6y4;pnRhvi@qN^WWLlob`Sue54L zff5_L7>}&Y%#2Mka+}8XA@=yX^glm##-ZMs_p+;3Dslra!XQ z`w=fc_mB1$cX~^aa}#qqzCF00uS7+`+$EOLg58n*V*c#jMq{R`(t0|VZ~SR*^nGY3 z^&NJf&p2g+kCD=Mp4?vTuI&=>v+Px7SttHH?bfZ+_C>?X(!p0ib4u&$fwFpl>SQIKk-egx{3YoI`=NG@( ze78Xv0bg3Tv)>|z><#Nac2VOK;|BNFz2=JFyJ-Ww4+;as8XOrms3q9 z8T&)0{0T%pj6Q$JJcC9`&1>-r#S=;J#GJOGZ7uC=ZthO-F@xe3jdAGS`NfD7TO?>B zW(<4tY`38?+M}W@@y6##GFNvquAyDRKm3F)IRW3TjxT$srAQgs|#F< z4-NgOhc#Su$#=cAl=t#-dSiqE=|cXt_rjn?yjtRzXe#Vcxw-^K-HTxQu}oW@iwEFRaB9~9?hvX26CK@l^YM;T`=;+aatqj_e6CdmZ+sL% ziQ1Ee`7aw5m0r;f0!~jW-cu)JWCajBE-y@ceADa?O?o{eESwAsb({{>MqLrfxq#!| zhX*et!^e%}HPU6uK=k<^-IqPFlWFN$I`yyjXX(Eb@q#x&s~qm&Oels2-U*3A<|+QG zabNQDO4#{HyTJ`w(|8h*7dvB@PP-Zf?BDh$I3EPktGDgGG7T5p<3o@#l-2%d{Tm7) zN1ecCS(k9Xdy49D$GUe|T|)oWme5|O4NhPasOtSKNlunxKL=?|8UK@v!Nq3x8wUe% z&{Hpxd`0S{&dLEi`uO+tCr{)vPVa9yMy3@NSarhd`I(s`I>WL18|^N$U^ounn_aJD zzJLdOVe$742zhq68B1HTPl##W*U;5Di7`WO9CW#h~j+ z{tG5c`)bLX&lk`o@^B!yQ04q?Cu1SOG3FcbX2zRNWQTcwh0|;PGL$6zp8AU?L4*J=KqQS^W|9%Z*xxI~JoGS>0d}B0e+mV+T5}HOv1Wm~#5DvqPt3s4eLBrZ*|2oI|Hgsks;C;h^--h*Z(?PoKS-*KBGBQ6fnS=DCd zE2JavcHuM`c)pWOQzf^OKXmIcj?tb}7BKS4tmtrXwyg zGsQNS`g{A|M2_@15k8u_En-+#S3Q9Alxu(Y2Vd!!=>2%fGf5&*!B!Y1l%DAL0>9J% z)RlC*2MDpP#>6l?1x5|;AA}dxZI z`Ua5@!2TiEbD9rbq0Lm&>4Awi4g?06dcdZX(AZA$-r2-x{pjCaTEQfIYBBP%zK$ z*ZatOFl}7-7TsP#(9l%=PegK-J`j@~I4o}Df`S_suupkxf#Tq#s>87ojFscHtNsG+ zxO)?i_V6)ss%vYhoOU}ilDy*JMSN+^F1oJ91O2{uDs;UG9L;pRHRP?!le&ok94*Nm~DkeJ&O71Cx`-v)Ug^icA+4Iiv#$Z~{o%$UkHGb=Qfq=B+X$$y~b?lhYpYe)@iIdx7U0`?g zL;%fQJa<+RQQzi@K=r9mq7b;~Nk)LFNosezMpJ_IuVJm|>C zo-W)M2ZyO}KCp166oLdoEAEQelo@toTk8S;yKKgS+b?@PA)Kt5)HJR?H4=-lWv=3~ zr%3wSJb|S7Pz?IVhp%N6$nnIb?Q(-u-^b6vII9)-e+GD~7 zP5QcBG*6!mZiPuHa^o>4h9qyTmj>j$=igzmL|o@n1Yb9LWwP`@9yblBR(yO6Ls$G? zehaaNS(!*`cI(SV0&S9og=P|x?&$9lHY(!QsjBd3Mx*<6riu)x%DXN7!yyFA6dHv} zEev|E)8R(C=y=zug!xc=L&#aIp6u4UJ_y0aL@bvMyMYjJx^nUBQ69ea_J71|f?Omq zlcgLTSDFmma%4vwpdS9PnDhk(!^spy+TUgKnkIv_ne6S2R9lB~-qeVQ1{2W5fExgg z-v695nIb{Q+X^Lw6{!L@XJ?(qdC~r`8>xSNie45FdnX4sJrK=MIL)0pn(ZXLB??80 z3moYw5W$<%jn+q=PgAuX6->lEiUkWfQ~!|^?cEETYFbe3KA%5Z6II{Hl3of2f{RE8 zt&n0;3)3!~R@x}{yCwD~FK7pGb$3!S-tO1iBp+88`n7&jQ;`+7 zNy#(0qnLDe*$9KtJKqRKA_2Fuva(`5!uYxq394Quh7_q*Yl^hNu0p5q<73y?>#95i z%yl%rmK=?eGgR5fr#sKn(wBq;J$ga1-^U75*$GpXy1!PEg)ZgYX_1L|0NlW{2%p%< z-qZ6y=!@_$g}yANsnMCPPtjWaCnqN$Iqa7RY}h%pfv>8ZwPq2RQiObsx;|0o4=OlOHC>WZHgx}(xu`T z#%=fOELvTJg-2kB?8YaUKnSQ7s)hU$mn5hW;&hLK{l2+ zI8gU~B5c$~TP(c{`r1KK##BaD`j0~PRiCH}_{Y3(l22mKo_fSgiYXU)Ps$@J^f-D9pe2g$4RKNT!R+JyKh zxeRXBePa+$RH(KE@+g_wjB+K?gObAy>U?Zv0ww|rv}%w*M1ZJ(r>8hk^=fjO0ezAT zgBKs?!5Y(=8w}K|Vis>x);C7ub?wSYTt%^gLyDr7?q7Pg5Xy8>wm-=8A=M%Q-JRJX z0@wWeMXkNCa;^So8Zh%6$0H5%wad$_zgAnXc0$~F!k7A&uUFk7l;&);R$g){Ud#Ud zn`hl?&_5LRFO>b;xuaNq9|hp_$+7%3?5dcS449vq|;i~q)GY>r#HHANtcu~j6`4?i;fS^Rd@9kx{Ym0c^(sktkf zP<%5|R-NtbhW4ZYP=X{-l_d;Y-ArgVe6SIEPIf0PZDq1RrkL7MWV4W%n-J=BKMPlzAcOI$@cXWOGYf>8AA|HXqH`a zjD%=xib?-rWeH%nT2vi!;fvDnaFqws<~mHztsex!D0) zvli+DPfkL=|@N!BF1L2a)w?5yp?YrNyzD1hP zG6gp`|Fp1B($EkbuF3j0^>W8UMYc( z8oYcyb8@0pF1R5#K6TC_^G^CL6x!Wg94JAH$x=&IM%mf$jFUW~Y@3^ei^s@$l229m zX*=mrP4H3;gQk2a6WDzse1MUMU@iTIjIYydM3-PwJHj1xJXudiXgQOGS*$=H+M$-= z94&{R^ZFV}!1r|fpwf~hWhC1zX>pK8T{Rg5L`+L(NCvi>kNt}Tq-X{kGXM(6U%#8M zyzECF>ErNuF;^V3aMo()kT&wme6ra8edH&=8Hva!MtN#=EIhzdX-HXf9`VA}3or=? z=oIa<+t6UjLZe*LRZsx+YIlsupY!6XW{*$!b1YSGzI;hN>2=_y^=8NsF;2z2qzwd0 zyt|FOFbDXSTpMb-j`6?k{Zjl}3|pUVdsDsu;g6`Lw;_rN}T8-nUQ=h_SNWA+6)XaB=;qfe-*pn5C+>Y_&qm4LI0)ozMHe z^e%zwuO$Fw6qg8b7Fthm^})q;zu08*5d~T3De{?K8{;t!zT|nJV;nP~Ic7TTYTId7 z+RgnG`gl3g?`kVxbJLp=YNnQd=QOforW4wDZrD4xPqDhKS z-Y-MdL=XlIiKA;_rE++H<+y^Ou)BYJdj6hC)@P^OdDi%38n&?njrczuX)% zP6Jp&02u}*_*Pg18UZ@QQcEo#jJyJ>rI0TE!6`qF^0@Y}pk02X(F5sutBKR8=J(Dw z)Zv*wbS{!uxVZ1Dbh2KO?)H^jDMEm+`*ex6UXL(xa0_&$5m$2>{sTH*Qiv<_^EUFX zR`X&459=}^dUK|xq>W}pv#$l2V{~PsqqMDZpcACmWBr81qbwT|K|#xpAtJT&=h)@n z%P+5X31Y=S9^Dfrpys_~JDnwS~Jfdsi1{-0)&~rS0EU+7yI@2cB%1| zvh`dpCC9--Y|P>)o}-oXo=TUTac@t~KGQkMJaTu<0-*}(dWIgO2o2l8n6Lx5pA`SexVV(sa_TOcD zJ#{?1TBgzk{WjW&T7D#@Nk%GgAq$@8NB4)SGh&zh^a`b#o1A6~7Y*`R4%6 z4{JFeLo^^`y1!!0%nqHl`b0A}^Mc{Vzmt4d&V@qRaO|XL^hpYhB(`;u)x4SZKWRuVJC!s6VJPt_^>?HAat>la_vgA@WN| z$(rKAL3K15iY2%OxD7%=c*dN#=;Pb-$gr&sLs2bD3al8m49L3=6o1f{-QxJjV(deF zUmfKOXsc))WCBfjdyM&xTCt@q-By~h>J=%fg=5j?eq{%EkQ$peKvrwL^k<2{o@k0f zaeVI|A7qFKi}Mgvzf0$KuqRLg9D^nm~R-rbVMDcU)rzi|C^-QF6Sek z#O1PkMvo%e{>R54CLY41b4z^F$OC;v&QD4(n`+;DwdFrfTRjXlGC@a6O?|j)l;}|B zFW2zUcDG{w7cV1&;&8}4TbniKN*b&{V(@a+mzj-hDnsD6ZRIc#k1?upYG^2BmV*C; zWH^38Dkk=^q(hnvTn8&K0}OqB5eK7k#hF!4)t zji;KEGlJ0j@mT(@ihh68K1(>9d=~5LjO3N;UJggCVh*7qldr`>S+zCL%y>)}zAafk z{Lj{rdKriyW0FNN&7l$E3)1k_o>g@m$&)S2x_=R7)B>3!yRB|p_WZ3pp6#0H=Hy`%IK^Ey&DzkUhDG(d3IH?xvpei#u#C8(0@7^jCnk1 zx<$?#$-RatR8nKofnU9-+>X&QRC2zIPE|b|gvD}Ou9YfM^RGAcc6Hr22(W&Q*-J`PIX%UT>0&?d z%I`nEf8Ctfpo%7PoDgE?;6S%e)sy?jX3APPOa^{8!6o11f!)~AVbwoW$>EB`T3Q%G zouLSI?G@k23F2!Z+uNtzn-%gPV=WJU~qKfG-qn50m<4W*A_t1?2ccbgeayDQ0 z|FR9jm;@qBECH{nRo5*vc@{h=)}d%*+LR0jEib9-rrQ;9|BLmX>gvv>xV~6{*kV8f zQ7HWSW`IZk-@)xpKlCqitnk%GF)2k51~&7@kRxVcM8|qWDTlD|Cwz#G4jGNu{I_qu zb{QN+{zBGaNukIW-GJTO?M_fpReG=qjlH)VmX>xDjgtgP{|@ln5f+SRtV)$z>ZEAi z-rfve`*w73osH2nNfL(#nAGYSO^0bx)M8c_ldWvQ-1rpp#0ZG@N7&jjDUtFuoy%=-u#*rS`= ziMas)qLxtK`9@6Cqzyahr>d%CrUg1h4>lVqB;>O`JPJ)3FBY~iDj#@r9O?g?M*064 zG?5zaxs0;3)3{u3G$>UwsE6qPF&7B#*V_v&8g|dsPQpi3lH1Ub-<3ClS=x%T*R(wy zpS#)Fj*w_{2cm5(?&zqit1B)n>;U|YrmEUjts*wcWMcRGYlpkX8+c?y*t2yS>i@b` z9pY>LHdT{%=eD%`tElRlsryE5KuS^I;C|=u)5D|X&BGgDlVH^~c(Xp&Tkl*SkZ8ZN zfMz(<_bAgmJ=&fw=KAa2SBgm%5)u<<<}1|7s|6q{4;I0}{e0gZF?_ zOjhfyFJ-;Gyy8JkX3aHPb4D={C$`3vdH-Kxp;beB1#&qD(8=!;G+R4D>8Xo%nm41RykcO^$o@7tYqSm z>a;5FPf!@&$a5)bU2p52UFFYMBuy1&@q04T(RG)#6*o2YrVGYejlBE66c3^2SY!yW zuPiOmG52)qJY54rAGf?rK_WfC?U<&DXS?P2ZBX<-0}w{#u<`Qi0+ zvPKr(kF#uR#Ei}9`!EN<1RzyQbxfQ+f1tEvYkh_{$HkwDCfhBP7z|U9H@e!n%2vwf z2=2^;U18QJ&RV(VRBig~{}+LoWKo`Z)n>h@=e|K-Cv4zN&FFaXdKG@DYkoR_OTx>0 z`jQeA6l|MFQ(0H{`hmh#Ty&)SrNJ)h?d>V>daaj483X#^6`tcHNH#1_V(*L9om?4O zQNfQsTcB3<`R;6QlBAO70HGst>OCbCRxC$I@O@=)HwptI8K2jOpMrvof#Yuj_Go%U ztn6fAv4p9pFZxN;=i8GMU}t~4KH~G)rE@4cg(&8|?M;0FN_ZWL_D76_YL!Y#s(NvW z`PbW(vVqVQ@J8e_xf3VM$Gfu%OUy4e{G%J#mDh>}nB!e|U56(-pEme(dT`_TGNoL? z1XzkMhABJu02`-3au6ApdO4z+N+DZXN{ZEXsv+?6p;=(R*!Q;rto(ZgkZY^csM`tv zIN9c<|L!4Nvhxvc>>yQ9u~}J!{RJu3K z-F5i%=pc+_O`lc~+*3RhLf&i#e$VS|LHBjR@&&nQN@{vqRnBs`=KfTNxch}db|2pm z9vl5qwW}3$Di-%-f`~7v9I*a&>-jChl=jZ*OU(J#H3~*Tr`Owt8WwI*in*hVT=|3 ztHb_6F+a7vp6%}QW$Ul!RZ6nD>cYUi5_8Y}Na>$33U&PY^gQzz7njG6(*-W;YRg=pte``7;6Qe!Q!2ask*6NhKD-GtgrnpIbYWBn$QS*;YYwoqokAOHFrA2Uo z)KttL6rV>-{w0%38*WN^#M^wl%LnV!NgXW8sA9ioNs0a?{hr7*q;$MsUmA;2>JneZ%i^*Gl{DyQkV2=`0_3TqV5? zB~497?*mRU*yxqi0gHgQ?v9VAD6BEGV~FVHs;-N?0=n^RF&M#x)z!J#*~U%U(w?QN z#b#!_;*yfgZcXSjc!GUPM9tS=x8?D1A9>rkNdhf1IW3s`fPhx;rHxOPs3_nBQTSw; zA_YZ~Z3P>-Ws|ter-e5|_H;uXP(e`e`=;*|QHXfTv1(I>Kd)~wF$+s%QNA_rpa{9w zE?!vgbw#Odu_zJaP*zqJ9xg5d{H@9L!u88^{}EHNgk)Hy^+uaRDaN_(o@#dXX5itW z0{-629j@G7SpLT^WGu76rcAXxu204kZ(2(U<(U-gC1_U_&~#*G=KfXZee%^S1gnj0 zWsdJ*f+)v%y>-GvQietx~bH+GNCa6soU#gN~^ zsVIxnb2PaRqD5W2K> zX5=+g1Kkawp?7IGsq9*wOeRI8u4Z7Uy!ZZJS=EyBlBcn8+i$1YKRsir8v1NJEb=g( z@IkN$2u?0Fdv_i*G%U1UzXGo=PTM%S+08;zs!{KIM&UDY@(fSC)kG4mYlk1#*wD0X zjYzzncdA#GH4A>aeiuJHlWzy{^6};NrKhP$%UH$SKl&5a%gp?!XI8?Sy|+$k z6+}RUHIm7&my(qN87JPxU-S97a}!~S?iTxlI3Qd2v|IQsPDVxi$w4sZr}_prH+Q68 z-}tz$r53|R7dgMKbX~{>1A`v(50_8jM5R#3H%T!_>(A4j9S{~E#vJj7X=#Baa5Vm3 zzG~O;O<-WcWw!M^*jAf$fr?fH18BEkc@o^L1u@tyPLT|Grsuw~u5P)WFKh*ZzTMpx zDl4yUWM!T59ekrFC7-Vz z)a8AV%tvez>3EU^lCz1#BGvWvOq2Y6#xyn3%!1s zmeBI-YRDY9C4`}qySubpbk{>zZ|`R|p`BI!?>Ps#&lEaWz9#c@_Z8Q1{16ex-F`Ob zJCHo4AmY)claVfBd6gwC>$nfp`kz19=48U-@~wj0kqXOlv?(_?Xf}nhu~7)3?X0<~ z^2c7}(jaPvZ?D2P_ykD2!E_)vR<>qMZEY)#c0|AE>73?cdY8bk$U}-Al~%gqx1dio)117Tg#1pbo4pciy#~uOUs?3 zqY()dFVEJsRc+a{UoHbM+up`L@Tp4pT!H3DKU&M*aI>Vvzw>P0@be=^a*)CHZA{Qn zP(02SIaS`!iGX)kbhsVG%9)!Fb9_M_E)U9@x=4~rQJ`Vs?l+G3I(Q`CWdF&`Ed5up zclQj7DlH$;{c&_+31>($ImKWl00T)&mPQ9WA37*MI-cYClC#C7M2y{|H;}5K$#6kOCQua7`Pi!vOf!YLsp2 zl#ytAt1NEEvW5oe9dSyyqVAmLK4Q-)1+N#Uhm5%tr`GrN7nL?#zUzPg zg~!Jm`g8KaENhsmLwrjJy!~ZLWhu`JQ@N3v1U(0;O$Nb#%bkd3a)-RfmdY@!lCntr zq=kig-A2SdFuzcrj+g^bp`c#D9p;dEhARKrr01lilR%p~Y%m;)nm?T={D}NYI0@pW!1ATtJZJOF+0s1cw&VP)+$#81V<3;u zAs0OR&iwQv{=3LOF)0yCa!2~dS?oQ(N zzcEUgj?srW%8(<>7MU{MZiB|1YKJh(Y_T*89Kf5(*e0*14|wgpg7~>w zS^RDpNJ+WrUD%}2H4)x18qlO*5D!k+(t4`$Zhjjbrvi|v%0g~TZmX5BdZ5z@bIjVQKDDKBHTrxCsl~C$;nSl z$YLt#yvcn3?qlIFq!=?2VcEX8Z@E|^)QW%J3-i?4#>=*bCqg2`l*aj&bh5u%53fUe z2{E~(wdil`d=G6M1C?oiDbzG8FQ=ByT6FG6k5^qC=;35!exCc@VQs z9GpOg*x4BtMILd_KSyWR$H&`T@0PIkau83?@5Eo0A15aSN>m<&S*5vBmxPnLj8Dio zPScRN-@}j(%?qh&Zr-1tr4*UmD@$$v$pAI)6DH^LWa}H z+d2QCsPD}B56bV76^SgvcfZ_=npLoX--Fr0!NGYv{s|K&o$(r>TDP~iM;ON^fY{l) z0EeYWsv_>=mXxHdQk%E*$&`~eG0`!&a&1F*%)~P)_xl7k4{8i}JiIee7$Cn)>9V^9#lQUdQ(VW@%><=AW(Y zS*jE!s`<^tbbo5ROi^=OJ631wuNIqI7l^;*?d?Pyl{{sN3i?1})USqV6+}Fl$)KMy zh87rPxC$`BfQOjwmM&Z*T)Mm054^g)DM94O!PK?8*)6{(6OyhjUx8NLS_ZC#1cFhr zw6Q3rpS?C>R3ZZoRbb{eRBBmN?iFptIJ^UhT$I-jH7>=6#jsF8$Hz)3Rnp9?tbUI+ zB&tjdv{g2?Cn7M^qDiEE5S55)o5o-ta89x!^G^m|t6Q4ybOHjs3xl3|rW?K3kfDFG zQpQ!1+S*?E_~ev^v&MSiqi8W8ds(7x@`hm(Q!%Rr*Q$aEa|Ct%lNwUd9Q}N3o=V0i zD1$;55QxFCXUt=am2s!}7g=!c?Ss8IJIle(YS*yi;OHnL8>LFSq`aC;JOb=)`q`KC zH(gVcdXy=Y)Bc1gSC?Ij)6-_5cqVwdLugEjaV^W&k)vK>J&?>73+gX7djMttqxkk> z$8YB3Wp>#p)Wyff7FOj4?tzMjhlYJT)-yVC&{uGNZbRKYYl{l;)m8_rx9PSz`XyWi zBqCta@OtqE#s6{i&c`InVQfskTUVvCfqZT_2Wi^S*0#~an^HCg82UduK4+0`MR@iy z^iN4a($QRNViS#{ff}xTf3IkJ)o61V_-nQ_FmT`f@#Zh|Hcn=g_m}IM^!Z^)-@m&2 zEMrnviJy?k-@JGyOe=6EfafLn>Z|?-aqb&yii+#|6xF1!K50*5GrUq=XXV>$(XCzu zkK@vR#qxGLMuDaWKOcC+khidL(8jX`H1!=_?G*Ak@aM6uhK}?qt-%*hT1O@jd7ma-gndd`Cm@NU8Ez{ii(>~(z?Ami;7gKE(6e#GcmGIr+&~{ zq_iQ@Q!@t%IIvuP7_1pt(-rfPR$0SqZVg|ftt&k=t<=DzcM_r6g8PgQa zbo|OIER--elEPew9!rtJgohuU2zRy@K^cF5c)QEW#Ft8(7f-leI9Pbv{MyI*dX*%W zdHtPY&@Fhoc+>s)=x-3jrkx*82(ycXz8*B~^QzgR3>^AW}r6B7hF^{R-E3`%&9 z4-b{$qx`VrPOi>%D;Afuh!C$$n%WwBM@JMO_@xK8mW83!(GLmV-`>o{obEba-rfen zGvD(FLp!0n@o-nS>uS+}p{{TkSMbZl6yVq18MoC4u){5rnUx3lATAM{gG?N36s1@V7DTD*dS z52yBV_5r?1VVnf#**?2UaxTk5%c&xH9#2_{&musgB@k)^2nKw?hOnt_tp1lg_iT^% z>D~N>;wI^-d&3NpWJU%ih7k!#$^{CjQj^&B~3u@9xI?Lc3*L$vzkz+faK1aa( zb7E5d1XimWCC79Gp1b!T34K2MhPIS+Rc;-O2VRVRgloQ=ecJoihJ zHhR86@E*IEYHN z@6>T|PsRI%nyLC5TSAaNm?Z|#)R7sjgE0}XepFOp731Us$pxo%bSWiM%+CK(+Ld>9 zI)E{`R-Op(>doyn;T+gRFzW>8xYj@R-*t4(j=CQ-b#(_$%lcsT)jbAJ%lK(&F^J;i8K8D*G$-5Mit}6=7>0Adz4p zjGES&whcl^Ow7&(^@1#EXdI1ezZ)l^4cAOgcGcd{pzA>6CwZ3A%ob{$@H|xo$iHo1 z<&2NXtCu!sE_N8bbBKXnaj6UYdFl%> zY;1S12K4keo~@RMX4zqq2X?a7)@Q<7&NnJ6j~$5U+6V4IhOacsdYNXxX|kD>G+(#3 z&8)NN+f&DyC9YbUrx~i5^YhC&pZl8n`a@a4e7GwqITy#r0lD7uc4;CvGs8!zX+M<> zMz=+V`x)rPFiG=5c#p`-TOc0ol^rQaxnMPY?5ZYfS$4*|xHu`t`!}F=z=|JBD2r!e zo2o^OMG-@ZKK{t0$ONqS?-^sSI;oZHu{*{J8W>Drb${%S3Gt*hP~fHtr>CjSRy?3E zyPAcmRgE5Sqr}Cu73DX|W2D}+2tAM0lk>m;*SyEw@#D?5FAg=Rr)EFnZA{I4Yt5rdnS7LuT@ zTBQsO^8|l3nF_lhapD&WE%F5m-6&Q+LHz+v4^FY<~DRT zBBw$?Hy1k|OPZnY<>jShruog?-Rl01SNojyp4QXDgOj79vG+L`aW2kv8;5q@VK%&^ zW2>A#22_;@gI12C&Gi7BO#(~7~2jH+k4>JAVgrW6i>ZdE}6LG;bU*vQD{ z@bF!Ni04ToFQ5Ys5MFaq5fOP8 z;MWx=B^jSle*lT`M61jEAU$=UmFyI)6kIm3rb9;B$ox}#(B<2TBIIIVY|QQeU%W1H z`tRQ1kBz6Bn|>8>jSl1{7!z-e|L~^38s|0dbHg_3*GXyXN~x+>I*Zp0n)J)P#;uCh@o-;wU1 z2ODb93ht(?io?{}e5}`gh*k`042^d{)g!bWFTQ`}%JncEBm4ACBr7}P74~h>q@l|P zq8CG|VKIL1tPF5-4HS{aOr<6r&#e{_Sg%PvzL#Z`HZ7-f8rmSoB;A?VKh||FLat9A gq#sKALN^4XGMU#eS^E|Jzw3gf#TCS=L=1!e4@B`Sj{pDw literal 0 HcmV?d00001 diff --git a/assets/img/user-n.png b/assets/img/user-n.png new file mode 100644 index 0000000000000000000000000000000000000000..9501475f4dbf6dcfe093e8841a104d90a004df25 GIT binary patch literal 4720 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 literal 0 HcmV?d00001 diff --git a/assets/img/user-n.svg b/assets/img/user-n.svg new file mode 100644 index 0000000..5975a3d --- /dev/null +++ b/assets/img/user-n.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/user-y.png b/assets/img/user-y.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc04d7f02e7608e9fd323aa037bb2d8cb59dba9 GIT binary patch literal 4391 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 literal 0 HcmV?d00001 diff --git a/assets/img/user-y.svg b/assets/img/user-y.svg new file mode 100644 index 0000000..c11cdaf --- /dev/null +++ b/assets/img/user-y.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/components/coupons/index.js b/components/coupons/index.js new file mode 100644 index 0000000..024a9d4 --- /dev/null +++ b/components/coupons/index.js @@ -0,0 +1,26 @@ +// pages/index/sw/index.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + data: { + value: {}, + type: Object, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) 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.wxml b/components/coupons/index.wxml new file mode 100644 index 0000000..47a393a --- /dev/null +++ b/components/coupons/index.wxml @@ -0,0 +1,21 @@ + + + + + + {{data.name}} + + ¥{{data.pPrice}} + ¥{{data.oPrice}} + + + + {{data.distance}} + + {{data.address}} + + + 购买 + + + \ No newline at end of file diff --git a/components/coupons/index.wxss b/components/coupons/index.wxss new file mode 100644 index 0000000..fbc3e2b --- /dev/null +++ b/components/coupons/index.wxss @@ -0,0 +1,95 @@ +@import "../../app.wxss"; +.coupons { + flex-direction: row; + display: flex; + padding: 30rpx; + position: relative; + height: 184rpx; +} +.coupons-border{ + height: 1rpx; + /* width: 100%; */ + left: 30rpx; + right: 30rpx; + background: #F5F5F5; + position: absolute; + bottom: 0; +} +.coupons-img { + width: 248rpx; + height: 184rpx; + overflow: hidden; + border-radius: 10rpx; +} + +.coupons-img image { + width: 100%; + height: 100%; +} + +.coupons-info { + padding-left: 20rpx; + /* padding-top: 10rpx; */ +} + +.coupons-info-name { + font-size: 30rpx; + color: #000000; + letter-spacing: 0; + line-height: 42rpx; +} +.coupons-info-price{ + padding:10rpx 0 15rpx; + height: 50rpx; +} +.coupons-info-price-p { + font-size: 36rpx; + color: #FF3434; + letter-spacing: 0.96rpx; + line-height: 50rpx; +} + +.coupons-info-price-o { + display: inline-block; + padding-left: 20rpx; + font-size: 24rpx; + 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: 30rpx; + right: 30rpx; +} + +.coupons-btn-gm { + background: #00C0FF !important; + border-radius: 10rpx !important; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold; + font-size: 28rpx; + color: #FFFFFF !important; + letter-spacing: 0; + height: 50rpx !important; + width: 114rpx !important; + line-height: 50rpx !important; +} \ No newline at end of file diff --git a/dist/action-sheet/index.js b/dist/action-sheet/index.js new file mode 100644 index 0000000..2db31aa --- /dev/null +++ b/dist/action-sheet/index.js @@ -0,0 +1,47 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask', 'i-class-header'], + + options: { + multipleSlots: true + }, + + properties: { + visible: { + type: Boolean, + value: false + }, + maskClosable: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: false + }, + cancelText: { + type: String, + value: '取消' + }, + actions: { + type: Array, + value: [] + } + }, + + methods: { + handleClickMask () { + if (!this.data.maskClosable) return; + this.handleClickCancel(); + }, + + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/dist/action-sheet/index.json b/dist/action-sheet/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/dist/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/action-sheet/index.wxml b/dist/action-sheet/index.wxml new file mode 100644 index 0000000..332f393 --- /dev/null +++ b/dist/action-sheet/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + + {{ item.name }} + + + + + {{ cancelText }} + + diff --git a/dist/action-sheet/index.wxss b/dist/action-sheet/index.wxss new file mode 100644 index 0000000..05c6f04 --- /dev/null +++ b/dist/action-sheet/index.wxss @@ -0,0 +1 @@ +.i-as{position:fixed;width:100%;box-sizing:border-box;left:0;right:0;bottom:0;background:#f7f7f7;transform:translate3d(0,100%,0);transform-origin:center;transition:all .2s ease-in-out;z-index:900;visibility:hidden}.i-as-show{transform:translate3d(0,0,0);visibility:visible}.i-as-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:900;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-as-mask-show{opacity:1;visibility:visible}.i-as-action-item{position:relative}.i-as-action-item::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-as-header{background:#fff;text-align:center;position:relative;font-size:12px;color:#80848f}.i-as-header::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-as-cancel{margin-top:6px}.i-as-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-as-btn-text{display:inline-block;vertical-align:middle}.i-as-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/dist/alert/index.js b/dist/alert/index.js new file mode 100644 index 0000000..461b67d --- /dev/null +++ b/dist/alert/index.js @@ -0,0 +1,37 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + properties: { + //info, success, warning, error + type: { + type: String, + value: 'info' + }, + closable: { + type: Boolean, + value: false + }, + showIcon: { + type: Boolean, + default: false + }, + desc: { + type: Boolean, + default: false + }, + }, + data: { + closed: false + }, + methods: { + handleTap() { + this.setData({ + closed: !this.data.closed, + }); + this.triggerEvent('close'); + }, + + } +}); diff --git a/dist/alert/index.json b/dist/alert/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/dist/alert/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/alert/index.wxml b/dist/alert/index.wxml new file mode 100644 index 0000000..eebabde --- /dev/null +++ b/dist/alert/index.wxml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/dist/alert/index.wxss b/dist/alert/index.wxss new file mode 100644 index 0000000..0e61fce --- /dev/null +++ b/dist/alert/index.wxss @@ -0,0 +1 @@ +.i-alert{position:relative;margin:10px;padding:8px 48px 8px 16px;font-size:14px;border-radius:2px;color:#fff;background:#f7f7f7;color:#495060}.i-alert.i-alert-with-icon{padding:8px 48px 8px 38px}.i-alert-info{color:#fff;background:#2db7f5}.i-alert-success{color:#fff;background:#19be6b}.i-alert-warning{color:#fff;background:#f90}.i-alert-error{color:#fff;background:#ed3f14}.i-alert-icon{position:absolute;top:9px;left:16px;font-size:14px}.i-alert-desc{font-size:12px}.i-alert-with-desc{padding:16px;position:relative}.i-alert-with-desc.i-alert-with-icon{padding:16px 16px 16px 69px}.i-alert-with-desc .i-alert-icon{top:50%;left:24px;margin-top:-21px;font-size:28px}.i-alert-close{font-size:12px;position:absolute;right:16px;top:8px;overflow:hidden;cursor:pointer} \ No newline at end of file diff --git a/dist/avatar/index.js b/dist/avatar/index.js new file mode 100644 index 0000000..fae9476 --- /dev/null +++ b/dist/avatar/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // circle || square + shape: { + type: String, + value: 'circle' + }, + // small || large || default + size: { + type: String, + value: 'default' + }, + src: { + type: String, + value: '' + } + } +}); diff --git a/dist/avatar/index.json b/dist/avatar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/avatar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/avatar/index.wxml b/dist/avatar/index.wxml new file mode 100644 index 0000000..11730c6 --- /dev/null +++ b/dist/avatar/index.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/dist/avatar/index.wxss b/dist/avatar/index.wxss new file mode 100644 index 0000000..8f6e636 --- /dev/null +++ b/dist/avatar/index.wxss @@ -0,0 +1 @@ +.i-avatar{display:inline-block;text-align:center;background:#ccc;color:#fff;white-space:nowrap;position:relative;overflow:hidden;vertical-align:middle;width:32px;height:32px;line-height:32px;border-radius:16px;font-size:18px}.i-avatar .ivu-avatar-string{line-height:32px}.i-avatar-large{width:40px;height:40px;line-height:40px;border-radius:20px;font-size:24px}.i-avatar-large .ivu-avatar-string{line-height:40px}.i-avatar-small{width:24px;height:24px;line-height:24px;border-radius:12px;font-size:14px}.i-avatar-small .ivu-avatar-string{line-height:24px}.i-avatar-image{background:0 0}.i-avatar-square{border-radius:4px}.i-avatar>image{width:100%;height:100%} \ 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.wxml b/dist/badge/index.wxml new file mode 100644 index 0000000..372fd7f --- /dev/null +++ b/dist/badge/index.wxml @@ -0,0 +1,5 @@ + + + + {{ finalCount }} + diff --git a/dist/badge/index.wxss b/dist/badge/index.wxss new file mode 100644 index 0000000..281658f --- /dev/null +++ b/dist/badge/index.wxss @@ -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/base/index.js b/dist/base/index.js new file mode 100644 index 0000000..6cb977f --- /dev/null +++ b/dist/base/index.js @@ -0,0 +1,37 @@ +function getCtx (selector) { + const pages = getCurrentPages(); + const ctx = pages[pages.length - 1]; + + const componentCtx = ctx.selectComponent(selector); + + if (!componentCtx) { + console.error('无法找到对应的组件,请按文档说明使用组件'); + return null; + } + return componentCtx; +} + +function Toast(options) { + const { selector = '#toast' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +Toast.hide = function (selector = '#toast') { + const ctx = getCtx(selector); + + ctx.handleHide(); +}; + +function Message(options) { + const { selector = '#message' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +module.exports = { + $Toast: Toast, + $Message: Message +}; \ 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.wxml b/dist/button/index.wxml new file mode 100644 index 0000000..e154eee --- /dev/null +++ b/dist/button/index.wxml @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/dist/button/index.wxss b/dist/button/index.wxss new file mode 100644 index 0000000..550bc81 --- /dev/null +++ b/dist/button/index.wxss @@ -0,0 +1 @@ +.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!important;color:#495060!important;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)}} \ No newline at end of file diff --git a/dist/card/index.js b/dist/card/index.js new file mode 100644 index 0000000..20ad106 --- /dev/null +++ b/dist/card/index.js @@ -0,0 +1,26 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + full: { + type: Boolean, + value: false + }, + thumb: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + extra: { + type: String, + value: '' + } + } +}); diff --git a/dist/card/index.json b/dist/card/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/card/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/card/index.wxml b/dist/card/index.wxml new file mode 100644 index 0000000..4792293 --- /dev/null +++ b/dist/card/index.wxml @@ -0,0 +1,11 @@ + + + + + {{ title }} + + {{ extra }} + + + + diff --git a/dist/card/index.wxss b/dist/card/index.wxss new file mode 100644 index 0000000..fd8fad4 --- /dev/null +++ b/dist/card/index.wxss @@ -0,0 +1 @@ +.i-card{margin:0 16px;font-size:14px;overflow:hidden;position:relative;background:#fff;border:1rpx solid #dddee1;border-radius:5px}.i-card-full{margin:0;border-left:none;border-right:none;border-radius:0}.i-card-header{display:flex;padding:6px 16px;align-items:center}.i-card-header-content{flex:1;text-align:left}.i-card-header-thumb{display:inline-block;width:64px;height:64px;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;background-size:cover;vertical-align:middle}.i-card-header-title{display:inline-block;vertical-align:middle;font-size:14px;color:#1c2438}.i-card-header-extra{flex:1;text-align:right;font-size:14px;color:#80848f}.i-card-body{position:relative;padding:6px 16px;color:#495060;font-size:14px}.i-card-body::before{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-top-width:1px}.i-card-footer{position:relative;padding:6px 16px;color:#80848f;font-size:12px} \ No newline at end of file diff --git a/dist/cell-group/index.js b/dist/cell-group/index.js new file mode 100644 index 0000000..ad36baa --- /dev/null +++ b/dist/cell-group/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../cell/index': { + type: 'child', + linked () { + this._updateIsLastCell(); + }, + linkChanged () { + this._updateIsLastCell(); + }, + unlinked () { + this._updateIsLastCell(); + } + } + }, + + methods: { + _updateIsLastCell() { + let cells = this.getRelationNodes('../cell/index'); + const len = cells.length; + + if (len > 0) { + let lastIndex = len - 1; + + cells.forEach((cell, index) => { + cell.updateIsLastCell(index === lastIndex); + }); + } + } + } +}); diff --git a/dist/cell-group/index.json b/dist/cell-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/cell-group/index.wxml b/dist/cell-group/index.wxml new file mode 100644 index 0000000..1897919 --- /dev/null +++ b/dist/cell-group/index.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dist/cell/index.js b/dist/cell/index.js new file mode 100644 index 0000000..50e635c --- /dev/null +++ b/dist/cell/index.js @@ -0,0 +1,86 @@ +const warn = (msg, getValue) => { + console.warn(msg); + console.log('接受到的值为:', getValue); +}; + +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + relations: { + '../cell-group/index': { + type: 'parent' + } + }, + + properties: { + // 左侧标题 + title: { + type: String + }, + // 标题下方的描述信息 + label: { + type: String + }, + // 右侧内容 + value: { + type: String + }, + // 只有点击 footer 区域才触发 tab 事件 + onlyTapFooter: { + type: Boolean + }, + // 是否展示右侧箭头并开启尝试以 url 跳转 + isLink: { + type: null, + value: '' + }, + // 链接类型,可选值为 navigateTo,redirectTo,switchTab,reLaunch + linkType: { + type: String, + value: 'navigateTo' + }, + url: { + type: String, + value: '' + } + }, + + data: { + isLastCell: true + }, + + methods: { + navigateTo () { + const { url } = this.data; + const type = typeof this.data.isLink; + + this.triggerEvent('click', {}); + + if (!this.data.isLink || !url || url === 'true' || url === 'false') return; + + if (type !== 'boolean' && type !== 'string') { + warn('isLink 属性值必须是一个字符串或布尔值', this.data.isLink); + return; + } + + if (['navigateTo', 'redirectTo', 'switchTab', 'reLaunch'].indexOf(this.data.linkType) === -1) { + warn('linkType 属性可选值为 navigateTo,redirectTo,switchTab,reLaunch', this.data.linkType); + return; + } + wx[this.data.linkType].call(wx, {url}); + }, + handleTap () { + if (!this.data.onlyTapFooter) { + this.navigateTo(); + } + }, + + updateIsLastCell (isLastCell) { + this.setData({ isLastCell }); + } + } +}); diff --git a/dist/cell/index.json b/dist/cell/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/cell/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/cell/index.wxml b/dist/cell/index.wxml new file mode 100644 index 0000000..c3683e3 --- /dev/null +++ b/dist/cell/index.wxml @@ -0,0 +1,16 @@ + + + + + + {{ title }} + {{ label }} + + + + {{ value }} + + + + + \ No newline at end of file diff --git a/dist/cell/index.wxss b/dist/cell/index.wxss new file mode 100644 index 0000000..e45ad75 --- /dev/null +++ b/dist/cell/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::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;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)} \ No newline at end of file diff --git a/dist/checkbox-group/index.js b/dist/checkbox-group/index.js new file mode 100644 index 0000000..6465450 --- /dev/null +++ b/dist/checkbox-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: Array, + value: [], + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../checkbox/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val.indexOf(item.data.value) !== -1); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/dist/checkbox-group/index.json b/dist/checkbox-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/dist/checkbox-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/dist/checkbox-group/index.wxml b/dist/checkbox-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/dist/checkbox-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/checkbox-group/index.wxss b/dist/checkbox-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/checkbox/index.js b/dist/checkbox/index.js new file mode 100644 index 0000000..b383952 --- /dev/null +++ b/dist/checkbox/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-checkbox'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-checkbox-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + checkboxChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../checkbox-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-checkbox-left` : `${prefixCls}-checkbox-right`, + }); + } + } +}); diff --git a/dist/checkbox/index.json b/dist/checkbox/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/dist/checkbox/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/dist/checkbox/index.wxml b/dist/checkbox/index.wxml new file mode 100644 index 0000000..214493f --- /dev/null +++ b/dist/checkbox/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/dist/checkbox/index.wxss b/dist/checkbox/index.wxss new file mode 100644 index 0000000..a07699f --- /dev/null +++ b/dist/checkbox/index.wxss @@ -0,0 +1 @@ +.i-checkbox-cell::after{display:block}.i-checkbox-checkbox-left{float:left}.i-checkbox-checkbox-right{float:right}.i-checkbox-radio{vertical-align:middle}.i-checkbox-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/dist/col/index.js b/dist/col/index.js new file mode 100644 index 0000000..9b2d65d --- /dev/null +++ b/dist/col/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../row/index': { + type: 'parent' + } + }, + + properties: { + span: { + value: 0, + type: Number + }, + offset: { + value: 0, + type: Number + } + } +}); diff --git a/dist/col/index.json b/dist/col/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/dist/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/dist/col/index.wxml b/dist/col/index.wxml new file mode 100644 index 0000000..838a22b --- /dev/null +++ b/dist/col/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/col/index.wxss b/dist/col/index.wxss new file mode 100644 index 0000000..bdce125 --- /dev/null +++ b/dist/col/index.wxss @@ -0,0 +1 @@ +.i-col{float:left;box-sizing:border-box;width:0}.i-col-span-1{display:block;width:4.16666667%}.i-col-offset-1{margin-left:4.16666667%}.i-col-span-2{display:block;width:8.33333333%}.i-col-offset-2{margin-left:8.33333333%}.i-col-span-3{display:block;width:12.5%}.i-col-offset-3{margin-left:12.5%}.i-col-span-4{display:block;width:16.66666667%}.i-col-offset-4{margin-left:16.66666667%}.i-col-span-5{display:block;width:20.83333333%}.i-col-offset-5{margin-left:20.83333333%}.i-col-span-6{display:block;width:25%}.i-col-offset-6{margin-left:25%}.i-col-span-7{display:block;width:29.16666667%}.i-col-offset-7{margin-left:29.16666667%}.i-col-span-8{display:block;width:33.33333333%}.i-col-offset-8{margin-left:33.33333333%}.i-col-span-9{display:block;width:37.5%}.i-col-offset-9{margin-left:37.5%}.i-col-span-10{display:block;width:41.66666667%}.i-col-offset-10{margin-left:41.66666667%}.i-col-span-11{display:block;width:45.83333333%}.i-col-offset-11{margin-left:45.83333333%}.i-col-span-12{display:block;width:50%}.i-col-offset-12{margin-left:50%}.i-col-span-13{display:block;width:54.16666667%}.i-col-offset-13{margin-left:54.16666667%}.i-col-span-14{display:block;width:58.33333333%}.i-col-offset-14{margin-left:58.33333333%}.i-col-span-15{display:block;width:62.5%}.i-col-offset-15{margin-left:62.5%}.i-col-span-16{display:block;width:66.66666667%}.i-col-offset-16{margin-left:66.66666667%}.i-col-span-17{display:block;width:70.83333333%}.i-col-offset-17{margin-left:70.83333333%}.i-col-span-18{display:block;width:75%}.i-col-offset-18{margin-left:75%}.i-col-span-19{display:block;width:79.16666667%}.i-col-offset-19{margin-left:79.16666667%}.i-col-span-20{display:block;width:83.33333333%}.i-col-offset-20{margin-left:83.33333333%}.i-col-span-21{display:block;width:87.5%}.i-col-offset-21{margin-left:87.5%}.i-col-span-22{display:block;width:91.66666667%}.i-col-offset-22{margin-left:91.66666667%}.i-col-span-23{display:block;width:95.83333333%}.i-col-offset-23{margin-left:95.83333333%}.i-col-span-24{display:block;width:100%}.i-col-offset-24{margin-left:100%} \ No newline at end of file diff --git a/dist/collapse-item/index.js b/dist/collapse-item/index.js new file mode 100644 index 0000000..bc415c1 --- /dev/null +++ b/dist/collapse-item/index.js @@ -0,0 +1,46 @@ +Component({ + externalClasses: ['i-class-content', 'i-class-title', 'i-class'], + + relations: { + '../collapse/index': { + type: 'parent', + linked: function (target) { + const options = { + accordion: target.data.accordion + } + if (target.data.name === this.data.name) { + options.showContent = 'i-collapse-item-show-content'; + } + this.setData(options); + } + } + }, + + properties: { + title: String, + name: String + }, + + data: { + showContent: '', + accordion: false + }, + + options: { + multipleSlots: true + }, + + methods: { + trigger(e) { + const data = this.data; + if (data.accordion) { + this.triggerEvent('collapse', {name: data.name}, {composed: true, bubbles: true}); + } else { + this.setData({ + showContent: data.showContent ? '' : 'i-collapse-item-show-content' + }); + } + }, + } +}); + diff --git a/dist/collapse-item/index.json b/dist/collapse-item/index.json new file mode 100644 index 0000000..54575da --- /dev/null +++ b/dist/collapse-item/index.json @@ -0,0 +1,7 @@ + +{ + "component": true, + "usingComponents": { + "i-icon": "../icon/index" + } +} diff --git a/dist/collapse-item/index.wxml b/dist/collapse-item/index.wxml new file mode 100644 index 0000000..ba22b0a --- /dev/null +++ b/dist/collapse-item/index.wxml @@ -0,0 +1,9 @@ + + + + {{title}} + + + + + \ No newline at end of file diff --git a/dist/collapse-item/index.wxss b/dist/collapse-item/index.wxss new file mode 100644 index 0000000..d44c032 --- /dev/null +++ b/dist/collapse-item/index.wxss @@ -0,0 +1 @@ +.i-collapse-item{padding:2px 8px;border-top:1px solid #dddee1}.i-collapse-item-title{vertical-align:middle}.i-collapse-item-title-wrap{padding:2px 0 0}.i-collapse-item-content{padding:6px;display:none}.i-collapse-item-show-content{display:block}.i-collapse-item-arrow{transition:transform .2s ease-in-out}.i-collapse-item-arrow-show{transition:transform .2s ease-in-out;transform:rotate(90deg)} \ No newline at end of file diff --git a/dist/collapse/index.js b/dist/collapse/index.js new file mode 100644 index 0000000..acc1455 --- /dev/null +++ b/dist/collapse/index.js @@ -0,0 +1,31 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../collapse-item/index': { + type: 'child' + } + }, + properties: { + name: String, + accordion: Boolean + }, + methods: { + clickfn(e) { + const params = e.detail; + const allList = this.getRelationNodes('../collapse-item/index'); + allList.forEach((item) => { + if (params.name === item.data.name) { + item.setData({ + showContent: 'i-collapse-item-show-content' + }); + } else { + item.setData({ + showContent: '' + }); + } + }); + }, + } +}); + diff --git a/dist/collapse/index.json b/dist/collapse/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/collapse/index.wxml b/dist/collapse/index.wxml new file mode 100644 index 0000000..0f379f7 --- /dev/null +++ b/dist/collapse/index.wxml @@ -0,0 +1,4 @@ + + + + diff --git a/dist/collapse/index.wxss b/dist/collapse/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/count-down/index.js b/dist/count-down/index.js new file mode 100644 index 0000000..f1da533 --- /dev/null +++ b/dist/count-down/index.js @@ -0,0 +1,90 @@ +Component({ + properties: { + target: Number, + showDay: Boolean, + callback: String, + format: Array, + clearTimer: Boolean + }, + externalClasses: ['countdown-class'], + data: { + time: '', + resultFormat: [], + changeFormat: false + }, + ready() { + this.getFormat(); + + }, + methods: { + getFormat() { + const data = this.data; + const len = data.format.length; + + if (!data.showDay) data.resultFormat.push(''); + + if (len >= 3) { + for (let i = 0; i < len; i++) { + if (data.resultFormat.length >= 4) break; + if (data.format[i]) { + data.resultFormat.push(data.format[i].toString()); + } + } + + if (data.resultFormat.length >= 4) data.changeFormat = true; + } + + this.getLastTime(); + }, + init() { + const self = this; + setTimeout(function () { + self.getLastTime.call(self); + }, 1000); + }, + getLastTime() { + const data = this.data; + const gapTime = Math.ceil((data.target - new Date().getTime()) / 1000); + let result = ''; + let time = '00:00:00'; + let day = '00'; + const format = data.resultFormat; + + if (gapTime > 0) { + day = this.formatNum(parseInt(gapTime / 86400)); + let lastTime = gapTime % 86400; + const hour = this.formatNum(parseInt(lastTime / 3600)); + lastTime = lastTime % 3600; + const minute = this.formatNum(parseInt(lastTime / 60)); + const second = this.formatNum(lastTime % 60); + + if (data.changeFormat) time = `${hour}${format[1]}${minute}${format[2]}${second}${format[3]}`; + else time = `${hour}:${minute}:${second}`; + + if (!data.clearTimer) this.init.call(this); + } else { + this.endfn(); + } + + if (data.showDay) { + if (data.changeFormat) { + result = `${day}${format[0]} ${time}`; + } else { + result = `${day}d ${time}`; + } + } else { + result = time; + } + this.setData({ + time: result + }); + + }, + formatNum(num) { + return num > 9 ? num : `0${num}`; + }, + endfn() { + this.triggerEvent('callback', {}); + } + } +}); diff --git a/dist/count-down/index.json b/dist/count-down/index.json new file mode 100644 index 0000000..74f1315 --- /dev/null +++ b/dist/count-down/index.json @@ -0,0 +1,4 @@ + +{ + "component": true +} diff --git a/dist/count-down/index.wxml b/dist/count-down/index.wxml new file mode 100644 index 0000000..e4bec57 --- /dev/null +++ b/dist/count-down/index.wxml @@ -0,0 +1,4 @@ + + {{time}} + + diff --git a/dist/count-down/index.wxss b/dist/count-down/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/divider/index.js b/dist/divider/index.js new file mode 100644 index 0000000..6b0e448 --- /dev/null +++ b/dist/divider/index.js @@ -0,0 +1,25 @@ +Component({ + externalClasses: ['i-class'], + properties: { + content: { + type: String, + value: '' + }, + height : { + type: Number, + value: 48 + }, + color : { + type : String, + value : '#80848f' + }, + lineColor : { + type : String, + value : '#e9eaec' + }, + size : { + type: String, + value: 12 + } + } +}); diff --git a/dist/divider/index.json b/dist/divider/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/divider/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/divider/index.wxml b/dist/divider/index.wxml new file mode 100644 index 0000000..b7111d3 --- /dev/null +++ b/dist/divider/index.wxml @@ -0,0 +1,19 @@ + + + {{content}} + + + + + + + + module.exports = { + getStyle : function(color,size,height){ + var color = 'color:' + color +';'; + var size = 'font-size:' + size + 'px;'; + var height = 'height:' + height+'px;' + return color + size + height; + } + } + diff --git a/dist/divider/index.wxss b/dist/divider/index.wxss new file mode 100644 index 0000000..98827ab --- /dev/null +++ b/dist/divider/index.wxss @@ -0,0 +1 @@ +.i-divider{width:100%;text-align:center;font-size:12px;position:relative;display:flex;align-items:center;justify-content:center}.i-divider-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-divider-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px} \ No newline at end of file diff --git a/dist/drawer/index.js b/dist/drawer/index.js new file mode 100644 index 0000000..adb248a --- /dev/null +++ b/dist/drawer/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + properties: { + visible: { + type: Boolean, + value: false + }, + + mask: { + type: Boolean, + value: true + }, + + maskClosable: { + type: Boolean, + value: true + }, + + mode: { + type: String, + value: 'left' // left right + } + }, + data: {}, + methods: { + handleMaskClick() { + if (!this.data.maskClosable) { + return; + } + this.triggerEvent('close', {}); + } + } +}); diff --git a/dist/drawer/index.json b/dist/drawer/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/drawer/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/drawer/index.wxml b/dist/drawer/index.wxml new file mode 100644 index 0000000..67380d9 --- /dev/null +++ b/dist/drawer/index.wxml @@ -0,0 +1,6 @@ + + + + + + diff --git a/dist/drawer/index.wxss b/dist/drawer/index.wxss new file mode 100644 index 0000000..2824713 --- /dev/null +++ b/dist/drawer/index.wxss @@ -0,0 +1 @@ +.i-drawer{visibility:hidden}.i-drawer-show{visibility:visible}.i-drawer-show .i-drawer-mask{display:block;opacity:1}.i-drawer-show .i-drawer-container{opacity:1}.i-drawer-show.i-drawer-left .i-drawer-container,.i-drawer-show.i-drawer-right .i-drawer-container{transform:translate3d(0,-50%,0)}.i-drawer-mask{opacity:0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:6;background:rgba(0,0,0,.6);transition:all .3s ease-in-out}.i-drawer-container{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);transform-origin:center;transition:all .3s ease-in-out;z-index:7;opacity:0}.i-drawer-left .i-drawer-container{left:0;top:50%;transform:translate3d(-100%,-50%,0)}.i-drawer-right .i-drawer-container{right:0;top:50%;left:auto;transform:translate3d(100%,-50%,0)} \ No newline at end of file diff --git a/dist/grid-icon/index.js b/dist/grid-icon/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/dist/grid-icon/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/dist/grid-icon/index.json b/dist/grid-icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid-icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid-icon/index.wxml b/dist/grid-icon/index.wxml new file mode 100644 index 0000000..b9f9025 --- /dev/null +++ b/dist/grid-icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid-icon/index.wxss b/dist/grid-icon/index.wxss new file mode 100644 index 0000000..88c58a7 --- /dev/null +++ b/dist/grid-icon/index.wxss @@ -0,0 +1 @@ +.i-grid-icon{display:block;width:28px;height:28px;margin:0 auto}.i-grid-icon image{width:100%;height:100%} \ No newline at end of file diff --git a/dist/grid-item/index.js b/dist/grid-item/index.js new file mode 100644 index 0000000..e492542 --- /dev/null +++ b/dist/grid-item/index.js @@ -0,0 +1,16 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid/index': { + type: 'parent' + }, + '../grid-icon/index': { + type: 'child' + } + }, + + data: { + width: '33.33%' + } +}); diff --git a/dist/grid-item/index.json b/dist/grid-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid-item/index.wxml b/dist/grid-item/index.wxml new file mode 100644 index 0000000..8e133cd --- /dev/null +++ b/dist/grid-item/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid-item/index.wxss b/dist/grid-item/index.wxss new file mode 100644 index 0000000..ed0f395 --- /dev/null +++ b/dist/grid-item/index.wxss @@ -0,0 +1 @@ +.i-grid-item{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box;border-right:1rpx solid #e9eaec;border-bottom:1rpx solid #e9eaec} \ No newline at end of file diff --git a/dist/grid-label/index.js b/dist/grid-label/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/dist/grid-label/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/dist/grid-label/index.json b/dist/grid-label/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid-label/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid-label/index.wxml b/dist/grid-label/index.wxml new file mode 100644 index 0000000..7ab5a8a --- /dev/null +++ b/dist/grid-label/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid-label/index.wxss b/dist/grid-label/index.wxss new file mode 100644 index 0000000..d45a990 --- /dev/null +++ b/dist/grid-label/index.wxss @@ -0,0 +1 @@ +.i-grid-label{margin-top:5px;display:block;text-align:center;color:#1c2438;font-size:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} \ No newline at end of file diff --git a/dist/grid/index.js b/dist/grid/index.js new file mode 100644 index 0000000..f9c9c40 --- /dev/null +++ b/dist/grid/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'child', + linked () { + this.setGridItemWidth(); + }, + linkChanged () { + this.setGridItemWidth(); + }, + unlinked () { + this.setGridItemWidth(); + } + } + }, + + methods: { + setGridItemWidth () { + const nodes = this.getRelationNodes('../grid-item/index'); + + // const len = nodes.length; + // if (len < 3) { + // nodes.forEach(item => { + // item.setData({ + // 'width': '33.33%' + // }); + // }); + // } else { + // const width = 100 / nodes.length; + // nodes.forEach(item => { + // item.setData({ + // 'width': width + '%' + // }); + // }); + // } + const width = 100 / nodes.length; + nodes.forEach(item => { + item.setData({ + 'width': width + '%' + }); + }); + } + }, + + ready () { + this.setGridItemWidth(); + } +}); diff --git a/dist/grid/index.json b/dist/grid/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid/index.wxml b/dist/grid/index.wxml new file mode 100644 index 0000000..4c9143c --- /dev/null +++ b/dist/grid/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid/index.wxss b/dist/grid/index.wxss new file mode 100644 index 0000000..842fc98 --- /dev/null +++ b/dist/grid/index.wxss @@ -0,0 +1 @@ +.i-grid{border-top:1rpx solid #e9eaec;border-left:1rpx solid #e9eaec;overflow:hidden} \ No newline at end of file diff --git a/dist/icon/index.js b/dist/icon/index.js new file mode 100644 index 0000000..eb43ab9 --- /dev/null +++ b/dist/icon/index.js @@ -0,0 +1,22 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + type: { + type: String, + value: '' + }, + custom: { + type: String, + value: '' + }, + size: { + type: Number, + value: 14 + }, + color: { + type: String, + value: '' + } + } +}); diff --git a/dist/icon/index.json b/dist/icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/icon/index.wxml b/dist/icon/index.wxml new file mode 100644 index 0000000..d689bc5 --- /dev/null +++ b/dist/icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/icon/index.wxss b/dist/icon/index.wxss new file mode 100644 index 0000000..b18dcbb --- /dev/null +++ b/dist/icon/index.wxss @@ -0,0 +1 @@ +@font-face{font-family:iconfont;src:url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff')}.i-icon{display:inline-block;font-family:iconfont;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}.i-icon-accessory:before{content:"\e6dd"}.i-icon-activity:before{content:"\e6de"}.i-icon-activity_fill:before{content:"\e6df"}.i-icon-add:before{content:"\e6e0"}.i-icon-addressbook_fill:before{content:"\e6e2"}.i-icon-addressbook:before{content:"\e6e3"}.i-icon-barrage_fill:before{content:"\e6e4"}.i-icon-barrage:before{content:"\e6e5"}.i-icon-browse_fill:before{content:"\e6e6"}.i-icon-browse:before{content:"\e6e7"}.i-icon-brush:before{content:"\e6e8"}.i-icon-brush_fill:before{content:"\e6e9"}.i-icon-businesscard_fill:before{content:"\e6ea"}.i-icon-businesscard:before{content:"\e6eb"}.i-icon-camera_fill:before{content:"\e6ec"}.i-icon-camera:before{content:"\e6ed"}.i-icon-clock_fill:before{content:"\e6ee"}.i-icon-clock:before{content:"\e6ef"}.i-icon-close:before{content:"\e6f0"}.i-icon-collection_fill:before{content:"\e6f1"}.i-icon-collection:before{content:"\e6f2"}.i-icon-computer_fill:before{content:"\e6f3"}.i-icon-computer:before{content:"\e6f4"}.i-icon-coordinates_fill:before{content:"\e6f5"}.i-icon-coordinates:before{content:"\e6f6"}.i-icon-coupons_fill:before{content:"\e6f7"}.i-icon-coupons:before{content:"\e6f8"}.i-icon-createtask_fill:before{content:"\e6f9"}.i-icon-createtask:before{content:"\e6fa"}.i-icon-customerservice_fill:before{content:"\e6fb"}.i-icon-customerservice:before{content:"\e6fc"}.i-icon-delete_fill:before{content:"\e6fd"}.i-icon-delete:before{content:"\e6fe"}.i-icon-document:before{content:"\e6ff"}.i-icon-document_fill:before{content:"\e700"}.i-icon-dynamic_fill:before{content:"\e701"}.i-icon-dynamic:before{content:"\e702"}.i-icon-editor:before{content:"\e703"}.i-icon-eit:before{content:"\e704"}.i-icon-emoji_fill:before{content:"\e705"}.i-icon-emoji:before{content:"\e706"}.i-icon-enter:before{content:"\e707"}.i-icon-enterinto:before{content:"\e708"}.i-icon-enterinto_fill:before{content:"\e709"}.i-icon-feedback_fill:before{content:"\e70a"}.i-icon-feedback:before{content:"\e70b"}.i-icon-flag_fill:before{content:"\e70c"}.i-icon-flag:before{content:"\e70d"}.i-icon-flashlight:before{content:"\e70e"}.i-icon-flashlight_fill:before{content:"\e70f"}.i-icon-fullscreen:before{content:"\e710"}.i-icon-group:before{content:"\e711"}.i-icon-group_fill:before{content:"\e712"}.i-icon-homepage_fill:before{content:"\e713"}.i-icon-homepage:before{content:"\e714"}.i-icon-integral_fill:before{content:"\e715"}.i-icon-integral:before{content:"\e716"}.i-icon-interactive_fill:before{content:"\e717"}.i-icon-interactive:before{content:"\e718"}.i-icon-keyboard:before{content:"\e719"}.i-icon-label:before{content:"\e71a"}.i-icon-label_fill:before{content:"\e71b"}.i-icon-like_fill:before{content:"\e71c"}.i-icon-like:before{content:"\e71d"}.i-icon-live_fill:before{content:"\e71e"}.i-icon-live:before{content:"\e71f"}.i-icon-lock_fill:before{content:"\e720"}.i-icon-lock:before{content:"\e721"}.i-icon-mail:before{content:"\e722"}.i-icon-mail_fill:before{content:"\e723"}.i-icon-message:before{content:"\e724"}.i-icon-message_fill:before{content:"\e725"}.i-icon-mine:before{content:"\e726"}.i-icon-mine_fill:before{content:"\e727"}.i-icon-mobilephone_fill:before{content:"\e728"}.i-icon-mobilephone:before{content:"\e729"}.i-icon-more:before{content:"\e72a"}.i-icon-narrow:before{content:"\e72b"}.i-icon-offline_fill:before{content:"\e72c"}.i-icon-offline:before{content:"\e72d"}.i-icon-other:before{content:"\e72e"}.i-icon-picture_fill:before{content:"\e72f"}.i-icon-picture:before{content:"\e730"}.i-icon-play:before{content:"\e731"}.i-icon-play_fill:before{content:"\e732"}.i-icon-playon_fill:before{content:"\e733"}.i-icon-playon:before{content:"\e734"}.i-icon-praise_fill:before{content:"\e735"}.i-icon-praise:before{content:"\e736"}.i-icon-prompt_fill:before{content:"\e737"}.i-icon-prompt:before{content:"\e738"}.i-icon-redpacket_fill:before{content:"\e739"}.i-icon-redpacket:before{content:"\e73a"}.i-icon-refresh:before{content:"\e73b"}.i-icon-remind_fill:before{content:"\e73c"}.i-icon-remind:before{content:"\e73d"}.i-icon-return:before{content:"\e73e"}.i-icon-right:before{content:"\e73f"}.i-icon-scan:before{content:"\e740"}.i-icon-send:before{content:"\e741"}.i-icon-service_fill:before{content:"\e742"}.i-icon-service:before{content:"\e743"}.i-icon-setup_fill:before{content:"\e744"}.i-icon-setup:before{content:"\e745"}.i-icon-share_fill:before{content:"\e746"}.i-icon-share:before{content:"\e747"}.i-icon-success_fill:before{content:"\e748"}.i-icon-success:before{content:"\e749"}.i-icon-suspend:before{content:"\e74a"}.i-icon-switch:before{content:"\e74b"}.i-icon-systemprompt_fill:before{content:"\e74c"}.i-icon-systemprompt:before{content:"\e74d"}.i-icon-tailor:before{content:"\e74e"}.i-icon-task:before{content:"\e74f"}.i-icon-task_fill:before{content:"\e750"}.i-icon-tasklist_fill:before{content:"\e751"}.i-icon-tasklist:before{content:"\e752"}.i-icon-time_fill:before{content:"\e753"}.i-icon-time:before{content:"\e754"}.i-icon-translation_fill:before{content:"\e755"}.i-icon-translation:before{content:"\e756"}.i-icon-trash:before{content:"\e757"}.i-icon-trash_fill:before{content:"\e758"}.i-icon-undo:before{content:"\e759"}.i-icon-video:before{content:"\e75a"}.i-icon-video_fill:before{content:"\e75b"}.i-icon-warning_fill:before{content:"\e75c"}.i-icon-warning:before{content:"\e75d"}.i-icon-search:before{content:"\e75e"}.i-icon-searchfill:before{content:"\e75f"}.i-icon-publishgoods_fill:before{content:"\e760"}.i-icon-shop_fill:before{content:"\e761"}.i-icon-transaction_fill:before{content:"\e762"}.i-icon-packup:before{content:"\e763"}.i-icon-unfold:before{content:"\e764"}.i-icon-financial_fill:before{content:"\e765"}.i-icon-commodity:before{content:"\e766"} \ No newline at end of file diff --git a/dist/index-item/index.js b/dist/index-item/index.js new file mode 100644 index 0000000..ed818df --- /dev/null +++ b/dist/index-item/index.js @@ -0,0 +1,32 @@ +Component({ + externalClasses: ['i-class'], + properties : { + name : { + type : String, + value : '' + } + }, + relations : { + '../index/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + currentName : '' + }, + methods: { + updateDataChange() { + const className = '.i-index-item'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + top : res.top, + height : res.height, + currentName : this.data.name + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/dist/index-item/index.json b/dist/index-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/index-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/index-item/index.wxml b/dist/index-item/index.wxml new file mode 100644 index 0000000..8986c8d --- /dev/null +++ b/dist/index-item/index.wxml @@ -0,0 +1,11 @@ + + {{name}} + + + + + + module.exports = { + + } + diff --git a/dist/index-item/index.wxss b/dist/index-item/index.wxss new file mode 100644 index 0000000..aeecf8d --- /dev/null +++ b/dist/index-item/index.wxss @@ -0,0 +1 @@ +.i-index-item-header{height:30px;line-height:30px;background:#eee;font-size:14px;padding-left:10px;width:100%;box-sizing:border-box}.i-index-item-content{font-size:14px} \ No newline at end of file diff --git a/dist/index/index.js b/dist/index/index.js new file mode 100644 index 0000000..c556f19 --- /dev/null +++ b/dist/index/index.js @@ -0,0 +1,158 @@ +Component({ + externalClasses: ['i-class'], + properties : { + height : { + type : String, + value : '300' + }, + itemHeight : { + type : Number, + value : 18 + } + }, + relations : { + '../index-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + scrollTop : 0, + fixedData : [], + current : 0, + timer : null, + startTop : 0, + itemLength : 0, + currentName : '', + isTouches : false + }, + methods : { + loop(){}, + _updateDataChange( ){ + const indexItems = this.getRelationNodes('../index-item/index'); + const len = indexItems.length; + const fixedData = this.data.fixedData; + /* + * 使用函数节流限制重复去设置数组内容进而限制多次重复渲染 + * 暂时没有研究微信在渲染的时候是否会进行函数节流 + */ + if (len > 0) { + + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + + this.data.timer = setTimeout(()=>{ + const data = []; + indexItems.forEach((item) => { + if( item.data.name && fixedData.indexOf( item.data.name ) === -1 ){ + data.push(item.data.name); + item.updateDataChange(); + } + }) + this.setData({ + fixedData : data, + itemLength : indexItems.length + }) + //组件加载完成之后重新设置顶部高度 + this.setTouchStartVal(); + },0); + this.setData({ + timer : this.data.timer + }) + + } + }, + handlerScroll(event){ + const detail = event.detail; + const scrollTop = detail.scrollTop; + const indexItems = this.getRelationNodes('../index-item/index'); + indexItems.forEach((item,index)=>{ + let data = item.data; + let offset = data.top + data.height; + if( scrollTop < offset && scrollTop >= data.top ){ + this.setData({ + current : index, + currentName : data.currentName + }) + } + }) + }, + getCurrentItem(index){ + const indexItems = this.getRelationNodes('../index-item/index'); + let result = {}; + result = indexItems[index].data; + result.total = indexItems.length; + return result; + }, + triggerCallback(options){ + this.triggerEvent('change',options) + }, + handlerFixedTap(event){ + const eindex = event.currentTarget.dataset.index; + const item = this.getCurrentItem(eindex); + this.setData({ + scrollTop : item.top, + currentName : item.currentName, + isTouches : true + }) + this.triggerCallback({ + index : eindex, + current : item.currentName + }) + }, + handlerTouchMove(event){ + const data = this.data; + const touches = event.touches[0] || {}; + const pageY = touches.pageY; + const rest = pageY - data.startTop; + let index = Math.ceil( rest/data.itemHeight ); + index = index >= data.itemLength ? data.itemLength -1 : index; + const movePosition = this.getCurrentItem(index); + + /* + * 当touch选中的元素和当前currentName不相等的时候才震动一下 + * 微信震动事件 + */ + if( movePosition.name !== this.data.currentName ){ + wx.vibrateShort(); + } + + this.setData({ + scrollTop : movePosition.top, + currentName : movePosition.name, + isTouches : true + }) + + this.triggerCallback({ + index : index, + current : movePosition.name + }) + }, + handlerTouchEnd(){ + this.setData({ + isTouches : false + }) + }, + setTouchStartVal(){ + const className = '.i-index-fixed'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + startTop : res.top + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/dist/index/index.json b/dist/index/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/index/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/index/index.wxml b/dist/index/index.wxml new file mode 100644 index 0000000..f83d847 --- /dev/null +++ b/dist/index/index.wxml @@ -0,0 +1,38 @@ + + + + + + {{item}} + + + {{currentName}} + + + + module.exports = { + setScrollStyle : function(height){ + var units = ['%','px','rem','rpx','em','rem']; + var hasUnits = false; + for( var i = 0; i < units.length;i++ ){ + var u = units[i]; + if( height.indexOf( u ) > -1 ){ + hasUnits = true; + break; + } + } + return 'height:'+ ( hasUnits ? height : height+'px' ); + } + } + diff --git a/dist/index/index.wxss b/dist/index/index.wxss new file mode 100644 index 0000000..c0887c1 --- /dev/null +++ b/dist/index/index.wxss @@ -0,0 +1 @@ +.i-index{width:100%;height:100%}.i-index-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-index-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px}.i-index-fixed{position:fixed;right:0;top:50%;z-index:10;padding-left:10px;transform:translateY(-50%)}.i-index-fixed-item{display:block;height:18px;line-height:18px;padding:0 5px;text-align:center;color:#2d8cf0;font-size:12px;border-radius:50%}.i-index-fixed-item-current{background:#2d8cf0;color:#fff}.i-index-tooltip{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:24px;border-radius:50%;width:80px;height:80px;line-height:80px;text-align:center} \ No newline at end of file diff --git a/dist/input-number/index.js b/dist/input-number/index.js new file mode 100644 index 0000000..7a7d3f5 --- /dev/null +++ b/dist/input-number/index.js @@ -0,0 +1,101 @@ +function addNum (num1, num2) { + let sq1, sq2, m; + try { + sq1 = num1.toString().split('.')[1].length; + } + catch (e) { + sq1 = 0; + } + try { + sq2 = num2.toString().split('.')[1].length; + } + catch (e) { + sq2 = 0; + } + m = Math.pow(10, Math.max(sq1, sq2)); + return (Math.round(num1 * m) + Math.round(num2 * m)) / m; +} + +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: String, + value: { + type: Number, + value: 1 + }, + min: { + type: Number, + value: -Infinity + }, + max: { + type: Number, + value: Infinity + }, + step: { + type: Number, + value: 1 + } + }, + + + methods: { + handleChangeStep(e, type) { + const { dataset = {} } = e.currentTarget; + const { disabled } = dataset; + const { step } = this.data; + let { value } = this.data; + + if (disabled) return null; + + if (type === 'minus') { + value = addNum(value, -step); + } else if (type === 'plus') { + value = addNum(value, step); + } + + if (value < this.data.min || value > this.data.max) return null; + + this.handleEmit(value, type); + }, + + handleMinus(e) { + this.handleChangeStep(e, 'minus'); + }, + + handlePlus(e) { + this.handleChangeStep(e, 'plus'); + }, + + handleBlur(e) { + let { value } = e.detail; + const { min, max } = this.data; + + if (!value) { + setTimeout(() => { + this.handleEmit(value); + }, 16); + return; + } + + value = +value; + if (value > max) { + value = max; + } else if (value < min) { + value = min; + } + + this.handleEmit(value); + }, + handleEmit (value, type) { + const data = { + value: value + }; + if (type) data.type = type; + + this.triggerEvent('change', data); + } + } +}); diff --git a/dist/input-number/index.json b/dist/input-number/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/input-number/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/input-number/index.wxml b/dist/input-number/index.wxml new file mode 100644 index 0000000..b3503f4 --- /dev/null +++ b/dist/input-number/index.wxml @@ -0,0 +1,5 @@ + + - + + + + diff --git a/dist/input-number/index.wxss b/dist/input-number/index.wxss new file mode 100644 index 0000000..f696bb4 --- /dev/null +++ b/dist/input-number/index.wxss @@ -0,0 +1 @@ +.i-input-number{color:#495060}.i-input-number view{display:inline-block;line-height:20px;padding:5px 0;text-align:center;min-width:40px;box-sizing:border-box;vertical-align:middle;font-size:12px;border:1rpx solid #dddee1}.i-input-number-minus{border-right:none;border-radius:2px 0 0 2px}.i-input-number-plus{border-left:none;border-radius:0 2px 2px 0}.i-input-number-text{border:1rpx solid #dddee1;display:inline-block;text-align:center;vertical-align:middle;height:30px;width:40px;min-height:auto;font-size:12px;line-height:30px}.i-input-number-disabled{border-color:#dddee1;color:#bbbec4;background:#f7f7f7} \ No newline at end of file diff --git a/dist/input/index.js b/dist/input/index.js new file mode 100644 index 0000000..c9d4c41 --- /dev/null +++ b/dist/input/index.js @@ -0,0 +1,61 @@ +Component({ + behaviors: ['wx://form-field'], + + externalClasses: ['i-class'], + + properties: { + title: { + type: String + }, + // text || textarea || password || number + type: { + type: String, + value: 'text' + }, + disabled: { + type: Boolean, + value: false + }, + placeholder: { + type: String, + value: '' + }, + autofocus: { + type: Boolean, + value: false + }, + mode: { + type: String, + value: 'normal' + }, + right: { + type: Boolean, + value: false + }, + error: { + type: Boolean, + value: false + }, + maxlength: { + type: Number + } + }, + + methods: { + handleInputChange(event) { + const { detail = {} } = event; + const { value = '' } = detail; + this.setData({ value }); + + this.triggerEvent('change', event); + }, + + handleInputFocus(event) { + this.triggerEvent('focus', event); + }, + + handleInputBlur(event) { + this.triggerEvent('blur', event); + } + } +}); diff --git a/dist/input/index.json b/dist/input/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/input/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/input/index.wxml b/dist/input/index.wxml new file mode 100644 index 0000000..52b0ee3 --- /dev/null +++ b/dist/input/index.wxml @@ -0,0 +1,31 @@ + + {{ title }} + + + diff --git a/dist/input/index.wxss b/dist/input/index.wxss new file mode 100644 index 0000000..9e7e9c1 --- /dev/null +++ b/dist/input/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::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;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)}.i-input{padding:7px 15px;color:#495060}.i-input-wrapped{margin:10px 15px;background-color:#fff}.i-input-wrapped::after{left:0;border-width:1px;border-radius:4px}.i-input-error{color:#ed3f14}.i-input-title{color:#495060;min-width:65px;padding-right:10px}.i-input-input{flex:1;line-height:1.6;padding:4px 0;min-height:22px;height:auto;font-size:14px}.i-input-placeholder{font-size:14px}.i-input-input-right{text-align:right}.i-input.i-input-wrapped::after{display:block}.i-input-wrapped.i-input-error::after{border-color:#ed3f14} \ No newline at end of file diff --git a/dist/load-more/index.js b/dist/load-more/index.js new file mode 100644 index 0000000..d0cd46c --- /dev/null +++ b/dist/load-more/index.js @@ -0,0 +1,14 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + loading: { + type: Boolean, + value: true + }, + tip: { + type: String, + value: '' + } + }, +}); diff --git a/dist/load-more/index.json b/dist/load-more/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/load-more/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/load-more/index.wxml b/dist/load-more/index.wxml new file mode 100644 index 0000000..66571af --- /dev/null +++ b/dist/load-more/index.wxml @@ -0,0 +1,8 @@ + + + + {{ tip }} + 正在加载 + + + \ No newline at end of file diff --git a/dist/load-more/index.wxss b/dist/load-more/index.wxss new file mode 100644 index 0000000..ffe4026 --- /dev/null +++ b/dist/load-more/index.wxss @@ -0,0 +1 @@ +.i-load-more{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.i-load-more-loading{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #e9eaec;border-color:#e9eaec #e9eaec #e9eaec #2d8cf0;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-load-more-tip{display:inline-block;vertical-align:middle;color:#495060}.i-load-more-line{border-top:1px solid #dddee1;display:flex;border-top:0}.i-load-more-line::before{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line::after{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line .i-load-more-tip{position:relative;top:-.9em;padding:0 .55em}.i-load-more-empty{width:4px;height:4px;border-radius:50%;background-color:#e5e5e5;display:inline-block;position:relative;vertical-align:0;top:-.16em}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/dist/message/index.js b/dist/message/index.js new file mode 100644 index 0000000..21a6d68 --- /dev/null +++ b/dist/message/index.js @@ -0,0 +1,45 @@ +const default_data = { + visible: false, + content: '', + duration: 2, + type: 'default', // default || success || warning || error +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); \ No newline at end of file diff --git a/dist/message/index.json b/dist/message/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/message/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/message/index.wxml b/dist/message/index.wxml new file mode 100644 index 0000000..aecaad9 --- /dev/null +++ b/dist/message/index.wxml @@ -0,0 +1,3 @@ + + {{ content }} + \ No newline at end of file diff --git a/dist/message/index.wxss b/dist/message/index.wxss new file mode 100644 index 0000000..e6a79a6 --- /dev/null +++ b/dist/message/index.wxss @@ -0,0 +1 @@ +.i-message{display:block;width:100%;min-height:32px;line-height:2.3;position:fixed;top:0;left:0;right:0;background:#2d8cf0;color:#fff;text-align:center;font-size:14px;z-index:1010;opacity:0;-webkit-transform:translateZ(0) translateY(-100%);transition:all .4s ease-in-out}.i-message-show{-webkit-transform:translateZ(0) translateY(0);opacity:1}.i-message-default{background:#2d8cf0}.i-message-success{background:#19be6b}.i-message-warning{background:#f90}.i-message-error{background:#ed3f14} \ No newline at end of file diff --git a/dist/modal/index.js b/dist/modal/index.js new file mode 100644 index 0000000..ae178e5 --- /dev/null +++ b/dist/modal/index.js @@ -0,0 +1,54 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask'], + + properties: { + visible: { + type: Boolean, + value: false + }, + title: { + type: String, + value: '' + }, + showOk: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: true + }, + okText: { + type: String, + value: '确定' + }, + cancelText: { + type: String, + value: '取消' + }, + // 按钮组,有此值时,不显示 ok 和 cancel 按钮 + actions: { + type: Array, + value: [] + }, + // horizontal || vertical + actionMode: { + type: String, + value: 'horizontal' + } + }, + + methods: { + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + handleClickOk () { + this.triggerEvent('ok'); + }, + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/dist/modal/index.json b/dist/modal/index.json new file mode 100644 index 0000000..50d034a --- /dev/null +++ b/dist/modal/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "i-grid": "../grid/index", + "i-grid-item": "../grid-item/index", + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/modal/index.wxml b/dist/modal/index.wxml new file mode 100644 index 0000000..11bcbd4 --- /dev/null +++ b/dist/modal/index.wxml @@ -0,0 +1,40 @@ + + + + + {{ title }} + + + + + + + + + + + + + + + + + + + {{ cancelText }} + + + {{ okText }} + + + + + + + \ No newline at end of file diff --git a/dist/modal/index.wxss b/dist/modal/index.wxss new file mode 100644 index 0000000..d1c42fc --- /dev/null +++ b/dist/modal/index.wxss @@ -0,0 +1 @@ +.i-modal{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;height:100%;z-index:1000;display:flex;outline:0;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;transform:translateZ(1px);opacity:0;visibility:hidden}.i-modal-show{visibility:visible;opacity:1}.i-modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:1000;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-modal-mask-show{opacity:1;visibility:visible}.i-modal-main{width:270px;position:relative}.i-modal-content{border-radius:7px;padding-top:15px;position:relative;background-color:#fff;border:0;background-clip:padding-box;text-align:center;height:100%;overflow:hidden}.i-modal-body{max-height:100px;margin-bottom:15px;font-size:14px;color:#80848f;height:100%;line-height:1.5;overflow:auto}.i-modal-title{padding:6px 15px 15px;margin:0;font-size:18px;line-height:1;color:#1c2438;text-align:center}.i-modal-actions{margin:0 1px}.i-modal-action-vertical{position:relative}.i-modal-action-vertical: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-top-width:1px}.i-modal-grid{border-radius:0 0 7px 7px;border-left:none}.i-modal-grid-item,.i-modal-grid-item-last{padding:0;border-bottom:none}.i-modal-grid-item-last{border-right:none}.i-modal-btn-ok{color:#2d8cf0!important}.i-modal-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-modal-btn-text{display:inline-block;vertical-align:middle}.i-modal-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/dist/notice-bar/index.js b/dist/notice-bar/index.js new file mode 100644 index 0000000..7043dbd --- /dev/null +++ b/dist/notice-bar/index.js @@ -0,0 +1,112 @@ +const VALID_MODE = ['closeable']; +const FONT_COLOR = '#f60'; +const BG_COLOR = '#fff7cc'; + +Component({ + externalClasses: ['i-class'], + + properties: { + closable: { + type: Boolean, + value: false + }, + icon: { + type: String, + value: '' + }, + loop: { + type: Boolean, + value: false + }, + // 背景颜色 + backgroundcolor: { + type: String, + value: '#fefcec' + }, + // 字体及图标颜色 + color: { + type: String, + value: '#f76a24' + }, + // 滚动速度 + speed: { + type: Number, + value: 1000 + } + }, + + data: { + show: true, + wrapWidth: 0, + width: 0, + duration: 0, + animation: null, + timer: null, + }, + detached() { + this.destroyTimer(); + }, + ready() { + if (this.data.loop) { + this.initAnimation(); + } + }, + + methods: { + initAnimation() { + wx.createSelectorQuery().in(this).select('.i-noticebar-content-wrap').boundingClientRect((wrapRect) => { + wx.createSelectorQuery().in(this).select('.i-noticebar-content').boundingClientRect((rect) => { + const duration = rect.width / 40 * this.data.speed; + const animation = wx.createAnimation({ + duration: duration, + timingFunction: "linear", + }); + this.setData({ + wrapWidth: wrapRect.width, + width: rect.width, + duration: duration, + animation: animation + }, () => { + this.startAnimation(); + }); + }).exec(); + + }).exec(); + }, + startAnimation() { + //reset + if (this.data.animation.option.transition.duration !== 0) { + this.data.animation.option.transition.duration = 0; + const resetAnimation = this.data.animation.translateX(this.data.wrapWidth).step(); + this.setData({ + animationData: resetAnimation.export() + }); + } + this.data.animation.option.transition.duration = this.data.duration; + const animationData = this.data.animation.translateX(-this.data.width).step(); + setTimeout(() => { + this.setData({ + animationData: animationData.export() + }); + }, 100); + const timer = setTimeout(() => { + this.startAnimation(); + }, this.data.duration); + this.setData({ + timer, + }); + }, + destroyTimer() { + if (this.data.timer) { + clearTimeout(this.data.timer); + } + }, + handleClose() { + this.destroyTimer(); + this.setData({ + show: false, + timer: null + }); + } + } +}); diff --git a/dist/notice-bar/index.json b/dist/notice-bar/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/dist/notice-bar/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/notice-bar/index.wxml b/dist/notice-bar/index.wxml new file mode 100644 index 0000000..5de1e11 --- /dev/null +++ b/dist/notice-bar/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dist/notice-bar/index.wxss b/dist/notice-bar/index.wxss new file mode 100644 index 0000000..9ea2aa7 --- /dev/null +++ b/dist/notice-bar/index.wxss @@ -0,0 +1 @@ +.i-noticebar{display:flex;height:72rpx;line-height:72rpx;font-size:14px;color:#f76a24;background-color:#fefcec;overflow:hidden}.i-noticebar-icon{display:flex;margin-left:30rpx;align-items:center}.i-noticebar-icon+view{margin-left:10rpx}.i-noticebar-operation{display:flex;margin-right:16rpx;align-items:center}.i-noticebar-content-wrap{position:relative;flex:1;margin:0 30rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.i-noticebar-content-wrap .i-noticebar-content{position:absolute;transition-duration:20s} \ No newline at end of file diff --git a/dist/page/index.js b/dist/page/index.js new file mode 100644 index 0000000..e0f44c5 --- /dev/null +++ b/dist/page/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + // button || number || pointer + mode: { + type: String, + value: 'button' + }, + current: { + type: Number, + value: 1 + }, + total: { + type: Number, + value: 0 + }, + // 是否隐藏数值 + simple: { + type: Boolean, + value: false + } + }, + + methods: { + handleChange (type) { + this.triggerEvent('change', { + type: type + }); + }, + handlePrev () { + this.handleChange('prev'); + }, + handleNext () { + this.handleChange('next'); + } + } +}); diff --git a/dist/page/index.json b/dist/page/index.json new file mode 100644 index 0000000..7b1a128 --- /dev/null +++ b/dist/page/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index" + } +} diff --git a/dist/page/index.wxml b/dist/page/index.wxml new file mode 100644 index 0000000..a84d47b --- /dev/null +++ b/dist/page/index.wxml @@ -0,0 +1,14 @@ + + + + + + {{ current }}/{{total}} + + + + + + + + diff --git a/dist/page/index.wxss b/dist/page/index.wxss new file mode 100644 index 0000000..06c5c3b --- /dev/null +++ b/dist/page/index.wxss @@ -0,0 +1 @@ +.i-page{display:block;width:100%;height:44px;overflow:hidden;box-sizing:border-box;position:relative}.i-page-prev{position:absolute;left:10px;top:0}.i-page-next{position:absolute;right:10px;top:0}.i-page-number{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-number-current{display:inline;color:#2d8cf0}.i-page-pointer{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-pointer-dot{display:inline-block;width:8px;height:8px;margin:0 2px;border-radius:50%;background:#bbbec4}.i-page-pointer-dot.current{background:#80848f}.i-page-button{display:inline-block;margin:0} \ No newline at end of file diff --git a/dist/panel/index.js b/dist/panel/index.js new file mode 100644 index 0000000..b572da5 --- /dev/null +++ b/dist/panel/index.js @@ -0,0 +1,19 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + title: { + type: String, + value: '' + }, + // 标题顶部距离 + hideTop: { + type: Boolean, + value: false + }, + hideBorder: { + type: Boolean, + value: false + } + } +}); diff --git a/dist/panel/index.json b/dist/panel/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/panel/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/panel/index.wxml b/dist/panel/index.wxml new file mode 100644 index 0000000..aa91c20 --- /dev/null +++ b/dist/panel/index.wxml @@ -0,0 +1,4 @@ + + {{ title }} + + diff --git a/dist/panel/index.wxss b/dist/panel/index.wxss new file mode 100644 index 0000000..edee3b8 --- /dev/null +++ b/dist/panel/index.wxss @@ -0,0 +1 @@ +.i-panel{position:relative;overflow:hidden}.i-panel-title{font-size:14px;line-height:1;color:#1c2438;padding:20px 16px 10px}.i-panel-title-hide-top{padding-top:0}.i-panel-content{position:relative;background:#fff;overflow:hidden}.i-panel-content::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-top-width:1px;border-bottom-width:1px}.i-panel-without-border::after{border:0 none} \ No newline at end of file diff --git a/dist/progress/index.js b/dist/progress/index.js new file mode 100644 index 0000000..b87b962 --- /dev/null +++ b/dist/progress/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + percent: { + type: Number, + value: 0 + }, + // normal || active || wrong || success + status: { + type: String, + value: 'normal' + }, + strokeWidth: { + type: Number, + value: 10 + }, + hideInfo: { + type: Boolean, + value: false + } + } +}); diff --git a/dist/progress/index.json b/dist/progress/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/progress/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/progress/index.wxml b/dist/progress/index.wxml new file mode 100644 index 0000000..09b5abc --- /dev/null +++ b/dist/progress/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + {{ percent }}% + + \ No newline at end of file diff --git a/dist/progress/index.wxss b/dist/progress/index.wxss new file mode 100644 index 0000000..21b9d9c --- /dev/null +++ b/dist/progress/index.wxss @@ -0,0 +1 @@ +.i-progress{display:inline-block;width:100%;font-size:12px;position:relative}.i-progress-outer{display:inline-block;width:100%;margin-right:0;padding-right:0;box-sizing:border-box}.i-progress-show-info .i-progress-outer{padding-right:55px;margin-right:-55px}.i-progress-inner{display:inline-block;width:100%;background-color:#f3f3f3;border-radius:100px;vertical-align:middle}.i-progress-bg{border-radius:100px;background-color:#2db7f5;transition:all .2s linear;position:relative}.i-progress-text{display:inline-block;margin-left:5px;text-align:left;font-size:1em;vertical-align:middle}.i-progress-active .i-progress-bg:before{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:10px;animation:i-progress-active 2s ease-in-out infinite}.i-progress-wrong .i-progress-bg{background-color:#ed3f14}.i-progress-wrong .i-progress-text{color:#ed3f14}.i-progress-success .i-progress-bg{background-color:#19be6b}.i-progress-success .i-progress-text{color:#19be6b}@keyframes i-progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}} \ No newline at end of file diff --git a/dist/radio-group/index.js b/dist/radio-group/index.js new file mode 100644 index 0000000..db76e41 --- /dev/null +++ b/dist/radio-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../radio/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../radio/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val === item.data.value); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/dist/radio-group/index.json b/dist/radio-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/dist/radio-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/dist/radio-group/index.wxml b/dist/radio-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/dist/radio-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/radio-group/index.wxss b/dist/radio-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/radio/index.js b/dist/radio/index.js new file mode 100644 index 0000000..cb73db5 --- /dev/null +++ b/dist/radio/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-radio'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../radio-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-radio-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + radioChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../radio-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-radio-left` : `${prefixCls}-radio-right`, + }); + } + } +}); diff --git a/dist/radio/index.json b/dist/radio/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/dist/radio/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/dist/radio/index.wxml b/dist/radio/index.wxml new file mode 100644 index 0000000..1e20b79 --- /dev/null +++ b/dist/radio/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/dist/radio/index.wxss b/dist/radio/index.wxss new file mode 100644 index 0000000..c52b211 --- /dev/null +++ b/dist/radio/index.wxss @@ -0,0 +1 @@ +.i-radio-cell::after{display:block}.i-radio-radio-left{float:left}.i-radio-radio-right{float:right}.i-radio-radio{vertical-align:middle}.i-radio-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/dist/rate/index.js b/dist/rate/index.js new file mode 100644 index 0000000..a7e374a --- /dev/null +++ b/dist/rate/index.js @@ -0,0 +1,69 @@ +Component({ + externalClasses: ['i-class'], + properties : { + count : { + type : Number, + value : 5 + }, + value : { + type : Number, + value : 0 + }, + disabled : { + type : Boolean, + value : false + }, + size : { + type : Number, + value : 20 + }, + name : { + type : String, + value : '' + } + }, + data : { + touchesStart : { + pageX : 0 + } + }, + methods : { + handleClick(e){ + const data = this.data; + if( data.disabled ){ + return; + } + const index = e.currentTarget.dataset.index; + this.triggerEvent('change',{ + index : index + 1 + }) + }, + handleTouchMove(e){ + const data = this.data; + if( data.disabled ){ + return; + } + if( !e.changedTouches[0] ){ + return; + } + const movePageX = e.changedTouches[0].pageX; + const space = movePageX - data.touchesStart.pageX; + + if( space <= 0 ){ + return; + } + let setIndex = Math.ceil( space/data.size ); + setIndex = setIndex > data.count ? data.count : setIndex ; + this.triggerEvent('change',{ + index : setIndex + }) + } + }, + ready(){ + const className = '.i-rate'; + var query = wx.createSelectorQuery().in(this) + query.select( className ).boundingClientRect((res)=>{ + this.data.touchesStart.pageX = res.left || 0; + }).exec() + } +}); diff --git a/dist/rate/index.json b/dist/rate/index.json new file mode 100644 index 0000000..687543c --- /dev/null +++ b/dist/rate/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents":{ + "i-icon": "../icon/index" + } +} diff --git a/dist/rate/index.wxml b/dist/rate/index.wxml new file mode 100644 index 0000000..d600660 --- /dev/null +++ b/dist/rate/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + +var prefixCls = 'i-rate'; +module.exports = { + getCurrent : function( value,index ){ + if( index < value ){ + return prefixCls + '-current' + } + } +} + diff --git a/dist/rate/index.wxss b/dist/rate/index.wxss new file mode 100644 index 0000000..e889107 --- /dev/null +++ b/dist/rate/index.wxss @@ -0,0 +1 @@ +.i-rate{margin:0;padding:0;font-size:20px;display:inline-block;vertical-align:middle;font-weight:400;font-style:normal}.i-rate-hide-input{display:none}.i-rate-star{display:inline-block;color:#e9e9e9}.i-rate-current{color:#f5a623}.i-rate-text{display:inline-block;vertical-align:middle;margin-left:6px;font-size:14px} \ No newline at end of file diff --git a/dist/row/index.js b/dist/row/index.js new file mode 100644 index 0000000..3428387 --- /dev/null +++ b/dist/row/index.js @@ -0,0 +1,9 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../col/index': { + type: 'child' + } + } +}); diff --git a/dist/row/index.json b/dist/row/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/row/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/row/index.wxml b/dist/row/index.wxml new file mode 100644 index 0000000..fe8159e --- /dev/null +++ b/dist/row/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/row/index.wxss b/dist/row/index.wxss new file mode 100644 index 0000000..3b8b432 --- /dev/null +++ b/dist/row/index.wxss @@ -0,0 +1 @@ +.i-row:after{content:"";display:table;clear:both} \ No newline at end of file diff --git a/dist/slide/index.js b/dist/slide/index.js new file mode 100644 index 0000000..a397f4f --- /dev/null +++ b/dist/slide/index.js @@ -0,0 +1,15 @@ +Component({ + externalClasses: ['i-class'], + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + handleTap2(){ + console.log(event,1111111) + }, + handleTap3(){ + + } + } +}); diff --git a/dist/slide/index.json b/dist/slide/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/dist/slide/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/slide/index.wxml b/dist/slide/index.wxml new file mode 100644 index 0000000..a13c673 --- /dev/null +++ b/dist/slide/index.wxml @@ -0,0 +1,4 @@ + + 1111 + + \ No newline at end of file diff --git a/dist/slide/index.wxss b/dist/slide/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/spin/index.js b/dist/spin/index.js new file mode 100644 index 0000000..3297f81 --- /dev/null +++ b/dist/spin/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: { + type: String, + value: 'default' + }, + fix: { + type: Boolean, + value: false + }, + fullscreen: { + type: Boolean, + value: false + }, + custom: { + type: Boolean, + value: false + } + } +}); diff --git a/dist/spin/index.json b/dist/spin/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/spin/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/spin/index.wxml b/dist/spin/index.wxml new file mode 100644 index 0000000..8c25439 --- /dev/null +++ b/dist/spin/index.wxml @@ -0,0 +1,6 @@ + +
+ +
+
+
diff --git a/dist/spin/index.wxss b/dist/spin/index.wxss new file mode 100644 index 0000000..8ed714a --- /dev/null +++ b/dist/spin/index.wxss @@ -0,0 +1 @@ +.i-spin{color:#2d8cf0;vertical-align:middle;text-align:center}.i-spin-dot{position:relative;display:block;border-radius:50%;background-color:#2d8cf0;width:20px;height:20px;animation:ani-spin-bounce 1s 0s ease-in-out infinite}.i-spin-large .i-spin-dot{width:32px;height:32px}.i-spin-small .i-spin-dot{width:12px;height:12px}.i-spin-fix{position:absolute;top:0;left:0;z-index:8;width:100%;height:100%;background-color:rgba(255,255,255,.9)}.i-spin-fullscreen{z-index:2010}.i-spin-fullscreen-wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.i-spin-fix .i-spin-main{position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.i-spin-fix .i-spin-dot{display:inline-block}.i-spin-show-text .i-spin-dot,.i-spin-text{display:none}.i-spin-show-text .i-spin-text{display:block;font-size:14px}@keyframes ani-spin-bounce{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}} \ No newline at end of file diff --git a/dist/step/index.js b/dist/step/index.js new file mode 100644 index 0000000..06a81a2 --- /dev/null +++ b/dist/step/index.js @@ -0,0 +1,52 @@ +Component({ + externalClasses: ['i-class'], + properties : { + status : { + type : String, + //wait、process、finish、error + value : '' + }, + title : { + type : String, + value : '' + }, + content : { + type : String, + value : '' + }, + icon : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + relations : { + '../steps/index' : { + type : 'parent' + } + }, + data : { + //step length + len : 1, + //current in step index + index : 0, + //parent component select current index + current : 0, + //css direction + direction : 'horizontal' + }, + methods : { + updateDataChange( options ){ + this.setData({ + len : options.len, + index : options.index, + current : options.current, + direction : options.direction + }) + } + } + +}) \ No newline at end of file diff --git a/dist/step/index.json b/dist/step/index.json new file mode 100644 index 0000000..ffb5dee --- /dev/null +++ b/dist/step/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/step/index.wxml b/dist/step/index.wxml new file mode 100644 index 0000000..63549dc --- /dev/null +++ b/dist/step/index.wxml @@ -0,0 +1,70 @@ + + + {{ index+1 }} + + + + + + + + {{title}} + + + + + + {{content}} + + + + + + + +var allStatus = ['wait','process','finish','error']; +module.exports = { + noIco : function( status,current,index,icon ){ + var aindex = allStatus.indexOf(status); + var noIcon = true; + if( index < current || icon !== '' ){ + noIcon = false; + } + return noIcon; + }, + getIcoClass : function( status,ico ){ + var class = ''; + if( status === 'error' ){ + class = 'close'; + }else{ + class = 'right'; + } + if( ico !== '' ){ + class = ico; + } + return class; + }, + getItemStyle : function(len,direction){ + if( direction === 'horizontal' ){ + return 'width :'+100/len + '%'; + }else{ + return 'width : 100%;'; + } + }, + getClass : function( status,current,index ) { + //wait、process、finish、error + var startClass = 'i-step-' + var classes = ''; + var cindex = allStatus.indexOf( status ); + if( cindex !== -1 ){ + classes = startClass + allStatus[cindex]; + } + if( index < current ){ + classes = startClass + 'finish'; + }else if( index === current ){ + classes = startClass + 'process'; + } + return classes; + } +} + \ No newline at end of file diff --git a/dist/step/index.wxss b/dist/step/index.wxss new file mode 100644 index 0000000..284b42a --- /dev/null +++ b/dist/step/index.wxss @@ -0,0 +1 @@ +.i-step-ico{width:24px;height:100%;border-radius:100%;background:#fff;position:relative;z-index:2;margin:0 auto;border:#dddee1 solid 1px}.i-step-ico-in{vertical-align:baseline}.i-step-line{position:absolute;left:50%;top:12px;width:100%;height:1px;background:#dddee1}.i-step-horizontal .i-step-ico::after{position:absolute;top:11px;left:23px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-horizontal .i-step-item-main{text-align:center}.i-step-horizontal .i-step-ico::before{position:absolute;top:11px;left:-11px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-ico{box-sizing:border-box;font-size:12px}.i-step-process .i-step-ico{border:#2d8cf0 solid 1px;color:#fff;background:#2d8cf0}.i-step-wait .i-step-ico{border:#e9eaec solid 1px;color:#e9eaec}.i-step-wait .i-step-line{background:#2d8cf0}.i-step-finish .i-step-ico{border:#2d8cf0 solid 1px;color:#2d8cf0}.i-step-finish .i-step-line{background:#2d8cf0}.i-step-error .i-step-ico{border:#ed3f14 solid 1px;color:#ed3f14}.i-step-error .i-step-line{background:#ed3f14}.i-step-item{font-size:12px;position:relative;display:inline-block;box-sizing:border-box;padding-left:10px;vertical-align:top}.i-step-item-ico{width:100%;height:24px;line-height:24px;text-align:center}.i-step-item-main{margin-top:10px;clear:both}.i-step-item-title{font-size:14px;font-weight:700;color:#1c2438}.i-step-item-content{font-size:12px;font-weight:700;margin-top:2px;color:#80848f}.i-step-vertical{padding-bottom:30px}.i-step-vertical .i-step-item-ico{width:24px;float:left}.i-step-vertical .i-step-item-main{margin-left:40px;margin-top:0;clear:inherit}.i-step-vertical .i-step-line{position:absolute;height:100%;top:0;left:10px;margin:0 0 0 12px;width:1px} \ No newline at end of file diff --git a/dist/steps/index.js b/dist/steps/index.js new file mode 100644 index 0000000..06bed88 --- /dev/null +++ b/dist/steps/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + properties : { + current : { + type : Number, + value : -1, + observer : '_updateDataChange' + }, + status : { + type : String, + //wait、process、finish、error + value : '' + }, + direction : { + type : String, + //value has horizontal or vertical + value : 'horizontal' + } + }, + relations : { + '../step/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + methods: { + _updateDataChange() { + let steps = this.getRelationNodes('../step/index'); + const len = steps.length; + if (len > 0) { + steps.forEach((step, index) => { + step.updateDataChange({ + len : len, + index : index, + current : this.data.current, + direction : this.data.direction + }); + }); + } + } + } +}) \ No newline at end of file diff --git a/dist/steps/index.json b/dist/steps/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/steps/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/steps/index.wxml b/dist/steps/index.wxml new file mode 100644 index 0000000..d9c7942 --- /dev/null +++ b/dist/steps/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/steps/index.wxss b/dist/steps/index.wxss new file mode 100644 index 0000000..616ed04 --- /dev/null +++ b/dist/steps/index.wxss @@ -0,0 +1 @@ +.i-steps{width:100%} \ 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..4fc3dbe --- /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 = wx.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.wxml b/dist/sticky-item/index.wxml new file mode 100644 index 0000000..613a5c0 --- /dev/null +++ b/dist/sticky-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/dist/sticky-item/index.wxss b/dist/sticky-item/index.wxss new file mode 100644 index 0000000..7328f0f --- /dev/null +++ b/dist/sticky-item/index.wxss @@ -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..546aa4c --- /dev/null +++ b/dist/sticky/index.js @@ -0,0 +1,63 @@ +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'); + if( stickies.length > 0 ){ + stickies.forEach((item) => { + if( item ){ + item.updateScrollTopChange( this.data.scrollTop ); + } + }) + } + }, + _updateDataChange( ){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if( 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.wxml b/dist/sticky/index.wxml new file mode 100644 index 0000000..aee0c63 --- /dev/null +++ b/dist/sticky/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/sticky/index.wxss b/dist/sticky/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/swipeout/index.js b/dist/swipeout/index.js new file mode 100644 index 0000000..b23748c --- /dev/null +++ b/dist/swipeout/index.js @@ -0,0 +1,161 @@ + /* +* touch事件判断方式 +* https://github.com/madrobby/zepto/blob/master/src/touch.js#files +*/ +function swipeDirection(x1, x2, y1, y2) { + return Math.abs(x1 - x2) >= + Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down') +} + +Component({ + externalClasses: ['i-class'], + properties: { + actions: { + value: [], + type: Array, + observer : '_updateButtonSize' + }, + unclosable : { + value : false, + type : Boolean + }, + toggle : { + value : false, + type : Boolean, + observer : 'closeButtonGroup' + }, + operateWidth : { + type : Number, + value : 160 + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + data : { + //touch start position + tStart : { + pageX : 0, + pageY : 0 + }, + //限制滑动距离 + limitMove : 0, + //element move position + position : { + pageX : 0, + pageY : 0 + } + }, + methods : { + //阻止事件冒泡 + loop(){}, + _updateButtonSize(){ + const actions = this.data.actions; + if( actions.length > 0 ){ + const query = wx.createSelectorQuery().in(this); + let limitMovePosition = 0; + actions.forEach(item => { + limitMovePosition += item.width || 0; + }); + this.data.limitMove = limitMovePosition; + /* + * 动态获取每个传进值的按钮尺寸不能正确获取,在安卓上少了6px + * 暂时实现需要在actions里面传递宽度 + * 需要后期调研 + */ + //query.selectAll('.i-swipeout-button-right-item').boundingClientRect((rects)=>{ + // if( rects ){ + // console.log(rects,1111111) + // rects.forEach(item => { + // limitMovePosition += item.width; + // }); + // this.data.limitMove = limitMovePosition; + // console.log(limitMovePosition,111111111) + // } + // }).exec() + }else{ + this.data.limitMove = this.data.operateWidth; + + } + }, + handlerTouchstart(event){ + const touches = event.touches ? event.touches[0] : {}; + const tStart = this.data.tStart; + if( touches ){ + for( let i in tStart ){ + if( touches[i] ){ + tStart[i] = touches[i]; + } + } + } + }, + swipper(touches){ + const data = this.data; + const start = data.tStart; + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( data.limitMove < Math.abs( spacing.pageX ) ){ + spacing.pageX = -data.limitMove; + + } + this.setData({ + 'position' : spacing + }) + }, + handlerTouchmove(event){ + const start = this.data.tStart; + const touches = event.touches ? event.touches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + if( direction === 'Left' ){ + this.swipper( touches ); + } + } + }, + handlerTouchend(event){ + const start = this.data.tStart; + const touches = event.changedTouches ? event.changedTouches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( Math.abs( spacing.pageX ) >= 40 && direction === "Left" ){ + spacing.pageX = spacing.pageX < 0 ? - this.data.limitMove : this.data.limitMove; + }else{ + spacing.pageX = 0; + } + this.setData({ + 'position' : spacing + }) + } + }, + handlerButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + const dataset = event.currentTarget.dataset; + this.triggerEvent('change',{ + index : dataset.index + }) + }, + closeButtonGroup(){ + this.setData({ + 'position' : {pageX : 0,pageY : 0} + }) + }, + //控制自定义组件 + handlerParentButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + } + }, + ready(){ + this._updateButtonSize(); + } +}); diff --git a/dist/swipeout/index.json b/dist/swipeout/index.json new file mode 100644 index 0000000..c63f9a6 --- /dev/null +++ b/dist/swipeout/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "i-cell": "../cell/index", + "i-icon": "../icon/index" + } +} \ No newline at end of file diff --git a/dist/swipeout/index.wxml b/dist/swipeout/index.wxml new file mode 100644 index 0000000..f588015 --- /dev/null +++ b/dist/swipeout/index.wxml @@ -0,0 +1,39 @@ + + + + + + + + + + {{item.name}} + + + + + + + + + module.exports = { + setStyle : function( item ){ + var defaults = '#f7f7f7'; + return 'background:' + ( item.background ? item.background : defaults ) +';' + 'color:'+ item.color; + }, + setPosition : function( position ){ + return 'transform:translate(' + position.pageX + 'px,0);'; + } + } + \ No newline at end of file diff --git a/dist/swipeout/index.wxss b/dist/swipeout/index.wxss new file mode 100644 index 0000000..597cffc --- /dev/null +++ b/dist/swipeout/index.wxss @@ -0,0 +1 @@ +.i-swipeout-wrap{border-bottom:#dddee1 solid 1px;background:#fff;position:relative;overflow:hidden}.i-swipeout-item{width:100%;padding:15px 20px;box-sizing:border-box;transition:transform .2s ease;font-size:14px}.i-swipeout-content{white-space:nowrap;overflow:hidden}.i-swipeout-button-right-group{position:absolute;right:-100%;top:0;height:100%;z-index:1;width:100%}.i-swipeout-button-right-item{height:100%;float:left;white-space:nowrap;box-sizing:border-box;display:flex;align-items:center;justify-content:center} \ No newline at end of file diff --git a/dist/switch/index.js b/dist/switch/index.js new file mode 100644 index 0000000..5ebccfa --- /dev/null +++ b/dist/switch/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + properties : { + value : { + type : Boolean, + value : false + }, + //large small default + size : { + type : String, + value : 'default' + }, + // is or not disable + disabled : { + type : Boolean, + value : false + }, + // hidden inut name + name : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + toggle(){ + if( this.data.disabled ) return; + const data = this.data; + const value = data.value ? false : true; + this.triggerEvent('change',{ + value : value + }) + } + } +}); diff --git a/dist/switch/index.json b/dist/switch/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/switch/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/switch/index.wxml b/dist/switch/index.wxml new file mode 100644 index 0000000..a180254 --- /dev/null +++ b/dist/switch/index.wxml @@ -0,0 +1,26 @@ + + + + + + + + + + +var sizes = ['large', 'default']; +var prefixCls = 'i-switch'; +module.exports = { + setSize : function( size ){ + var index = sizes.indexOf( size ); + return prefixCls + ( index > -1 ? ( '-'+size ) : 'default' ) + }, + setCurrent : function( value,disabled ){ + var className = value && !disabled ? prefixCls + '-checked' : ''; + if( disabled ){ + className += ' ' + prefixCls + '-disabled'; + } + return className; + } +} + \ No newline at end of file diff --git a/dist/switch/index.wxss b/dist/switch/index.wxss new file mode 100644 index 0000000..128fea6 --- /dev/null +++ b/dist/switch/index.wxss @@ -0,0 +1 @@ +.i-switch{display:inline-block;width:48px;height:24px;line-height:24px;border-radius:24px;vertical-align:middle;border:1px solid #ccc;background-color:#ccc;position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s ease-in-out}.i-switch-hide-input{display:none;opacity:0}.i-switch-inner{color:#fff;font-size:12px;position:absolute;left:25px;vertical-align:middle}.i-switch-inner .i-icon{width:12px;height:12px;text-align:center;vertical-align:middle}.i-switch:after{content:'';width:22px;height:22px;border-radius:22px;background-color:#fff;position:absolute;left:1px;top:1px;cursor:pointer;transition:left .2s ease-in-out,width .2s ease-in-out}.i-switch-checked:after{left:8px}.i-switch-large{width:60px}.i-switch-large.i-switch-checked:after{left:37px}.i-switch-checked:after{left:25px}.i-switch-checked{border-color:#2d8cf0;background-color:#2d8cf0}.i-switch-checked .i-switch-inner{left:8px}.i-switch-checked:after{left:25px}.i-switch-disabled{background:#f3f3f3;border-color:#f3f3f3}.i-switch-disabled:after{background:#ccc;cursor:not-allowed}.i-switch-disabled .i-switch-inner{color:#ccc} \ No newline at end of file diff --git a/dist/tab-bar-item/index.js b/dist/tab-bar-item/index.js new file mode 100644 index 0000000..0c24c1a --- /dev/null +++ b/dist/tab-bar-item/index.js @@ -0,0 +1,62 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar/index': { + type: 'parent' + } + }, + + properties: { + icon: { + type: String, + value: '' + }, + currentIcon: { + type: String, + value: '' + }, + img: { + type: String, + value: '' + }, + currentImg: { + type: String, + value: '' + }, + key: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: '' + }, + + methods: { + changeCurrent (current) { + this.setData({ current }); + }, + changeCurrentColor (currentColor) { + this.setData({ currentColor }); + }, + handleClickItem () { + const parent = this.getRelationNodes('../tab-bar/index')[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/dist/tab-bar-item/index.json b/dist/tab-bar-item/index.json new file mode 100644 index 0000000..918aaf8 --- /dev/null +++ b/dist/tab-bar-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/tab-bar-item/index.wxml b/dist/tab-bar-item/index.wxml new file mode 100644 index 0000000..7153909 --- /dev/null +++ b/dist/tab-bar-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + {{ title }} + {{ title }} + + + \ No newline at end of file diff --git a/dist/tab-bar-item/index.wxss b/dist/tab-bar-item/index.wxss new file mode 100644 index 0000000..0f8a9c8 --- /dev/null +++ b/dist/tab-bar-item/index.wxss @@ -0,0 +1 @@ +.i-tab-bar-item{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}.i-tab-bar-item-icon{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-icon-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;width:22px;height:22px}.i-tab-bar-item-title{font-size:10px;margin:3px 0 0;line-height:1;text-align:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-title-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f} \ No newline at end of file diff --git a/dist/tab-bar/index.js b/dist/tab-bar/index.js new file mode 100644 index 0000000..ca02fe4 --- /dev/null +++ b/dist/tab-bar/index.js @@ -0,0 +1,66 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar-item/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + fixed: { + type: Boolean, + value: false + } + }, + + data: { + list: [] + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab-bar-item/index'); + const len = items.length; + + if (len > 0) { + const list = []; + items.forEach(item => { + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + list.push({ + key: item.data.key + }); + }); + this.setData({ + list: list + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + }, + handleClickItem (e) { + const key = e.currentTarget.dataset.key; + this.emitEvent(key); + } + } +}); diff --git a/dist/tab-bar/index.json b/dist/tab-bar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/tab-bar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/tab-bar/index.wxml b/dist/tab-bar/index.wxml new file mode 100644 index 0000000..9dbfbea --- /dev/null +++ b/dist/tab-bar/index.wxml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dist/tab-bar/index.wxss b/dist/tab-bar/index.wxss new file mode 100644 index 0000000..5c6fd9c --- /dev/null +++ b/dist/tab-bar/index.wxss @@ -0,0 +1 @@ +.i-tab-bar{display:flex;width:100%;height:50px;box-sizing:border-box;position:relative;justify-content:space-around;align-items:center;-webkit-box-align:center;background:#fff}.i-tab-bar::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-top-width:1px}.i-tab-bar-fixed{position:fixed;bottom:0;z-index:2}.i-tab-bar-list{position:absolute;top:0;bottom:0;left:0;right:0}.i-tab-bar-layer{display:block;float:left;height:100%} \ No newline at end of file diff --git a/dist/tab/index.js b/dist/tab/index.js new file mode 100644 index 0000000..c8d3079 --- /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.wxml b/dist/tab/index.wxml new file mode 100644 index 0000000..29d3955 --- /dev/null +++ b/dist/tab/index.wxml @@ -0,0 +1,9 @@ + + + + {{ title }} + {{ title }} + + + + \ No newline at end of file diff --git a/dist/tab/index.wxss b/dist/tab/index.wxss new file mode 100644 index 0000000..a4e8e83 --- /dev/null +++ b/dist/tab/index.wxss @@ -0,0 +1,43 @@ +.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: 50%; + height: 2px; + background: 0 0; + position: absolute; + bottom: 0; + left: 25%; + background: #00C0FF; + border-radius: 100px; +} + +.i-tabs-tab-title { + font-size: 28rpx; + text-align: center; + box-sizing: border-box; + color: #B8B8B8; +} + +.i-tabs-tab-title-current { + color: #00C0FF +} + +.i-tabs-tab-scroll { + display: inline-block; + width: auto; + min-width: 60px; +} \ No newline at end of file diff --git a/dist/tabs/index.js b/dist/tabs/index.js new file mode 100644 index 0000000..b9d0326 --- /dev/null +++ b/dist/tabs/index.js @@ -0,0 +1,56 @@ +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'); + const len = items.length; + + 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.wxml b/dist/tabs/index.wxml new file mode 100644 index 0000000..b61d51b --- /dev/null +++ b/dist/tabs/index.wxml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dist/tabs/index.wxss b/dist/tabs/index.wxss new file mode 100644 index 0000000..e6b1a3b --- /dev/null +++ b/dist/tabs/index.wxss @@ -0,0 +1,40 @@ +.i-tabs { + display: flex; + width: 100%; + height: 42px; + line-height: 42px; + 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; + white-space: nowrap; + box-shadow:0 0 2px 0 rgba(211,211,211,0.50); +} + +.i-tabs-fixed { + position: fixed; + top: 0; + z-index: 2 +} \ No newline at end of file diff --git a/dist/tag/index.js b/dist/tag/index.js new file mode 100644 index 0000000..338440a --- /dev/null +++ b/dist/tag/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + properties : { + //slot name + name : { + type : String, + value : '' + }, + //can click or not click + checkable : { + type : Boolean, + value : false + }, + //is current choose + checked : { + type : Boolean, + value : true + }, + //background and color setting + color : { + type : String, + value : 'default' + }, + //control fill or not + type : { + type : String, + value : 'dot' + } + }, + methods : { + tapTag(){ + const data = this.data; + if( data.checkable ){ + const checked = data.checked ? false : true; + this.triggerEvent('change',{ + name : data.name || '', + checked : checked + }); + } + } + } +}) \ No newline at end of file diff --git a/dist/tag/index.json b/dist/tag/index.json new file mode 100644 index 0000000..1dd6c7f --- /dev/null +++ b/dist/tag/index.json @@ -0,0 +1,3 @@ +{ + "component" : true +} \ No newline at end of file diff --git a/dist/tag/index.wxml b/dist/tag/index.wxml new file mode 100644 index 0000000..ed2c675 --- /dev/null +++ b/dist/tag/index.wxml @@ -0,0 +1,27 @@ + + + + +module.exports = { + getClass : function(color,type,checked,checkable) { + var initColorList = ['blue', 'green', 'red', 'yellow', 'default']; + var theme = ''; + var className = 'i-tag-'; + if( initColorList.indexOf( color ) > -1 ){ + theme = className + color; + } + if( type === 'border' ){ + theme = className+color+'-border'; + } + if( checkable && checked ){ + theme = className+color+'-checked'; + }else if( checkable && !checked ){ + theme = ( type === 'border' ? className + color +'-border' : className+'none' ); + } + + return theme; + } +} + \ No newline at end of file diff --git a/dist/tag/index.wxss b/dist/tag/index.wxss new file mode 100644 index 0000000..e19f976 --- /dev/null +++ b/dist/tag/index.wxss @@ -0,0 +1 @@ +.i-tag{display:inline-block;height:18px;line-height:18px;padding:0 4px;border-radius:2px;background:#fff;font-size:11px;vertical-align:middle;border:1rpx solid #dddee1}.i-tag-none{border-color:#fff}.i-tag-default{border-color:#dddee1;background:#e9eaec}.i-tag-red{background:#ed3f14;color:#fff}.i-tag-red-border{color:#ed3f14;background:#fff;border-color:#ed3f14}.i-tag-red-checked{background:#ed3f14;color:#fff;border-color:#ed3f14}.i-tag-green{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-green-border{color:#19be6b;background:#fff;border-color:#19be6b}.i-tag-green-checked{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-blue{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-blue-border{color:#2d8cf0;background:#fff;border-color:#2d8cf0}.i-tag-blue-checked{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-yellow{background:#f90;color:#fff;border-color:#f90}.i-tag-yellow-border{color:#f90;background:#fff;border-color:#f90}.i-tag-yellow-checked{background:#f90;color:#fff;border-color:#f90}.i-tag-default-checked{background:#e9eaec;color:#495060;border-color:#e9eaec} \ No newline at end of file diff --git a/dist/toast/index.js b/dist/toast/index.js new file mode 100644 index 0000000..6493111 --- /dev/null +++ b/dist/toast/index.js @@ -0,0 +1,48 @@ +const default_data = { + visible: false, + content: '', + icon: '', + image: '', + duration: 2, + mask: true, + type: 'default', // default || success || warning || error || loading +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); diff --git a/dist/toast/index.json b/dist/toast/index.json new file mode 100644 index 0000000..31309b1 --- /dev/null +++ b/dist/toast/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/toast/index.wxml b/dist/toast/index.wxml new file mode 100644 index 0000000..ca5f732 --- /dev/null +++ b/dist/toast/index.wxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + {{ content }} + \ No newline at end of file diff --git a/dist/toast/index.wxss b/dist/toast/index.wxss new file mode 100644 index 0000000..5b3bd7f --- /dev/null +++ b/dist/toast/index.wxss @@ -0,0 +1 @@ +.i-toast{position:fixed;top:35%;left:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:14px;line-height:1.5em;margin:0 auto;box-sizing:border-box;padding:10px 18px;text-align:center;border-radius:4px;z-index:1010}.i-toast-mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1010}.i-toast-icon{font-size:38px!important;margin-bottom:6px}.i-toast-image{max-width:100px;max-height:100px}.i-toast-loading{display:inline-block;vertical-align:middle;width:28px;height:28px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff #2d8cf0;animation:btn-spin .8s linear;animation-iteration-count:infinite}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/pages/coupons/details/index.js b/pages/coupons/details/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/coupons/details/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/coupons/details/index.json b/pages/coupons/details/index.json new file mode 100644 index 0000000..6f38e42 --- /dev/null +++ b/pages/coupons/details/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "卷详情" + } \ No newline at end of file diff --git a/pages/coupons/details/index.wxml b/pages/coupons/details/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/coupons/details/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/coupons/details/index.wxss b/pages/coupons/details/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/coupons/index/index.js b/pages/coupons/index/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/coupons/index/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/coupons/index/index.json b/pages/coupons/index/index.json new file mode 100644 index 0000000..9d95912 --- /dev/null +++ b/pages/coupons/index/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "我的优惠劵" + } \ No newline at end of file diff --git a/pages/coupons/index/index.wxml b/pages/coupons/index/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/coupons/index/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/coupons/index/index.wxss b/pages/coupons/index/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/index/banner/index.js b/pages/index/banner/index.js new file mode 100644 index 0000000..538647b --- /dev/null +++ b/pages/index/banner/index.js @@ -0,0 +1,30 @@ +// pages/index/sw/index.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + imgUrls: { + value: [], + type: Array, + }, + }, + + /** + * 组件的初始数据 + */ + data: { + swiperCurrent: 0, + }, + + /** + * 组件的方法列表 + */ + methods: { + swiperChange: function (e) { + this.setData({ + swiperCurrent: e.detail.current + }) + }, + } +}) diff --git a/pages/index/banner/index.json b/pages/index/banner/index.json new file mode 100644 index 0000000..3bd5dd3 --- /dev/null +++ b/pages/index/banner/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + + } +} \ No newline at end of file diff --git a/pages/index/banner/index.wxml b/pages/index/banner/index.wxml new file mode 100644 index 0000000..5c91cb9 --- /dev/null +++ b/pages/index/banner/index.wxml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/index/banner/index.wxss b/pages/index/banner/index.wxss new file mode 100644 index 0000000..31ac99a --- /dev/null +++ b/pages/index/banner/index.wxss @@ -0,0 +1,29 @@ +.index-slide-view{ + position: relative; + } + .index-slide, + .index-slide-image { + width: 100%; + height: 465rpx; + } + .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: 30rpx; + height: 8rpx; + background: #fff; + border-radius: 100rpx; + transition: all .6s; + opacity: 0.5; + } + .index-slide-view .dots .dot.active{ + background: #FFFFFF; + opacity: 1; + } \ No newline at end of file diff --git a/pages/index/coupons/index.js b/pages/index/coupons/index.js new file mode 100644 index 0000000..fcf3f61 --- /dev/null +++ b/pages/index/coupons/index.js @@ -0,0 +1,103 @@ +// pages/index/sw/index.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + tabs: [ + { + key: 1, + name: "全部" + }, + { + key: 2, + name: "餐饮" + }, + { + key: 3, + name: "娱乐" + }, { + key: 4, + name: "服饰" + }, { + key: 5, + name: "超市" + }, + { + key: 6, + name: "亲子" + }, { + key: 7, + name: "其他" + }, + ], + list: [ + { + img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + name: "海鲜焗饭", + distance: "12.5km", + address: "西单大悦城2F-012A", + oPrice: "59.00", + pPrice: "1.00", + }, + { + img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + name: "海鲜焗饭", + distance: "12.5km", + address: "西单大悦城2F-012A", + oPrice: "59.00", + pPrice: "1.00", + }, + { + img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + name: "海鲜焗饭", + distance: "12.5km", + address: "西单大悦城2F-012A", + oPrice: "59.00", + pPrice: "1.00", + }, + { + img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + name: "海鲜焗饭", + distance: "12.5km", + address: "西单大悦城2F-012A", + oPrice: "59.00", + pPrice: "1.00", + }, + { + img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + name: "海鲜焗饭", + distance: "12.5km", + address: "西单大悦城2F-012A", + oPrice: "59.00", + pPrice: "1.00", + }, + ], + current: '1', + current_scroll: '1', + }, + + /** + * 组件的方法列表 + */ + methods: { + handleChange({ detail }) { + this.setData({ + current: detail.key + }); + }, + + handleChangeScroll({ detail }) { + this.setData({ + current_scroll: detail.key + }); + }, + } +}) diff --git a/pages/index/coupons/index.json b/pages/index/coupons/index.json new file mode 100644 index 0000000..dce0c1b --- /dev/null +++ b/pages/index/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/index/coupons/index.wxml b/pages/index/coupons/index.wxml new file mode 100644 index 0000000..8c791f8 --- /dev/null +++ b/pages/index/coupons/index.wxml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/pages/index/coupons/index.wxss b/pages/index/coupons/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..4512bcf --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,89 @@ +//index.js +//获取应用实例 +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + market:app.globalData.market, + imgUrls: [ + 'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg', + 'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg', + 'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg' + ], + swiperCurrent: 0, + + scrollTop: 0 + }, + + swiperChange: function (e) { + this.setData({ + swiperCurrent: e.detail.current + }) + }, + + //页面滚动执行方式 + onPageScroll(event) { + // console.log(event.scrollTop); + // this.setData({ + // scrollTop: event.scrollTop + // }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..f7fde72 --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1,13 @@ +{ + "usingComponents": { + "c-banner":"./banner/index", + "c-rushToBuy":"./rushToBuy/index", + "c-coupons":"./coupons/index" + }, + "enablePullDownRefresh":false, + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationBarTitleText": "首页", + "backgroundColor": "#eeeeee", + "backgroundTextStyle": "light" +} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..1f4efb9 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,8 @@ + + + {{market.name}} + + + + + \ No newline at end of file diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..1e70c86 --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1,14 @@ +.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: #FFFFFF; + letter-spacing: 0.75rpx; + z-index: 9; + line-height: 88rpx; + padding: 0 30rpx; +} diff --git a/pages/index/rushToBuy/index.js b/pages/index/rushToBuy/index.js new file mode 100644 index 0000000..8175a49 --- /dev/null +++ b/pages/index/rushToBuy/index.js @@ -0,0 +1,52 @@ +// pages/index/sw/index.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + list: [ + { + img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + name: "海鲜焗饭", + time: "2天12小时25分钟", + oPrice: "59.00", + pPrice: "1.00", + }, + { + img: "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg", + name: "海鲜焗饭", + time: "2天12小时25分钟", + oPrice: "59.00", + pPrice: "1.00", + }, + { + img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + name: "海鲜焗饭", + time: "2天12小时25分钟", + oPrice: "59.00", + pPrice: "1.00", + }, + { + img: "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg", + name: "海鲜焗饭", + time: "2天12小时25分钟", + oPrice: "59.00", + pPrice: "1.00", + }, + ] + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) diff --git a/pages/index/rushToBuy/index.json b/pages/index/rushToBuy/index.json new file mode 100644 index 0000000..e66b519 --- /dev/null +++ b/pages/index/rushToBuy/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "i-card": "../../../dist/card/index" + } +} \ No newline at end of file diff --git a/pages/index/rushToBuy/index.wxml b/pages/index/rushToBuy/index.wxml new file mode 100644 index 0000000..38e8843 --- /dev/null +++ b/pages/index/rushToBuy/index.wxml @@ -0,0 +1,18 @@ + + 限时抢购 + + + + + + {{item.name}} + {{item.time}} + + ¥{{item.pPrice}} + ¥{{item.oPrice}} + + + + + + \ No newline at end of file diff --git a/pages/index/rushToBuy/index.wxss b/pages/index/rushToBuy/index.wxss new file mode 100644 index 0000000..b050ef4 --- /dev/null +++ b/pages/index/rushToBuy/index.wxss @@ -0,0 +1,80 @@ +.index-rushToBuy { + width: 100%; + font-family: PingFangSC-Semibold; +} + +.index-rushToBuy-title { + font-size: 36rpx; + color: #000000; + letter-spacing: 0.75rpx; + padding-top: 20rpx; + padding-left: 30rpx; +} + +.index-scroll-view { + width: 100%; + white-space: nowrap; + padding-right: 30rpx; +} + +.index-scroll-view .commodity { + display: inline-block; + margin: 30rpx; + margin-right: 0; + overflow: hidden; + position: relative; + background: #fff; + /* border: 1rpx solid #dddee1; */ + width: 392rpx; + box-shadow: 0 0 10px 0 rgba(211,211,211,0.50); + border-radius: 10rpx; +} +.index-scroll-view .commodity:last-child{ + margin-right: 30rpx; +} +.index-scroll-view .commodity-img { + height: 187rpx; +} +.index-scroll-view .commodity-img image{ + width: 100%; + height: 100%; +} + +.index-scroll-view .commodity-info { + padding: 20rpx; + overflow: hidden; +} + +.index-scroll-view .commodity-info-name { + font-size: 30rpx; + color: #000000; + letter-spacing: 0.7rpx; +} + +.index-scroll-view .commodity-info-time { + font-size: 22rpx; + color: #B4B4B4; + letter-spacing: 0.7rpx; + line-height: 42rpx; +} + +.index-scroll-view .commodity-info-price { + padding-top: 11rpx; +} + +.index-scroll-view .commodity-info-price-p { + font-size: 36rpx; + color: #FF3434; + letter-spacing: 0.96rpx; +} +.index-scroll-view .commodity-info-price-o { + display: inline-block; + padding-left: 20rpx; + font-size: 24rpx; + color: #B4B4B4; + letter-spacing: 0.96rpx; + text-decoration:line-through; + +} + + diff --git a/pages/login/index.js b/pages/login/index.js new file mode 100644 index 0000000..d1b7cc5 --- /dev/null +++ b/pages/login/index.js @@ -0,0 +1,68 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + }, + onLogin: function () { + console.log("登陆"); + } +}) \ No newline at end of file diff --git a/pages/login/index.json b/pages/login/index.json new file mode 100644 index 0000000..49e3163 --- /dev/null +++ b/pages/login/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "i-button": "../../dist/button/index" + }, + "navigationBarTitleText": "登陆" + } \ No newline at end of file diff --git a/pages/login/index.wxml b/pages/login/index.wxml new file mode 100644 index 0000000..b26bf11 --- /dev/null +++ b/pages/login/index.wxml @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/pages/login/index.wxss b/pages/login/index.wxss new file mode 100644 index 0000000..9eb0f8f --- /dev/null +++ b/pages/login/index.wxss @@ -0,0 +1,35 @@ +.login-body { + padding-top: 200rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.login-logo { + width: 283rpx; + height: 326rpx; +} + +.login-logo>image { + width: 100%; + height: 100%; +} + +.login-btn { + padding-top: 120rpx; + width: 504rpx; +} + +.login-btn .login-btn-login { + background: #00C0FF !important; + border-radius: 10rpx !important; + height: 88rpx !important; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold !important; + font-size: 36rpx !important; + color: #FFFFFF !important; + letter-spacing: 0.75rpx !important; + text-align: center; +} \ No newline at end of file diff --git a/pages/logs/logs.js b/pages/logs/logs.js new file mode 100644 index 0000000..b2b967d --- /dev/null +++ b/pages/logs/logs.js @@ -0,0 +1,15 @@ +//logs.js +const util = require('../../utils/util.js') + +Page({ + data: { + logs: [] + }, + onLoad: function () { + this.setData({ + logs: (wx.getStorageSync('logs') || []).map(log => { + return util.formatTime(new Date(log)) + }) + }) + } +}) diff --git a/pages/logs/logs.json b/pages/logs/logs.json new file mode 100644 index 0000000..28379bc --- /dev/null +++ b/pages/logs/logs.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "查看启动日志" +} \ No newline at end of file diff --git a/pages/logs/logs.wxml b/pages/logs/logs.wxml new file mode 100644 index 0000000..b5a85ac --- /dev/null +++ b/pages/logs/logs.wxml @@ -0,0 +1,6 @@ + + + + {{index + 1}}. {{log}} + + diff --git a/pages/logs/logs.wxss b/pages/logs/logs.wxss new file mode 100644 index 0000000..94d4b88 --- /dev/null +++ b/pages/logs/logs.wxss @@ -0,0 +1,8 @@ +.log-list { + display: flex; + flex-direction: column; + padding: 40rpx; +} +.log-item { + margin: 10rpx; +} diff --git a/pages/market/index.js b/pages/market/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/market/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/market/index.json b/pages/market/index.json new file mode 100644 index 0000000..423b270 --- /dev/null +++ b/pages/market/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "商场列表" + } \ No newline at end of file diff --git a/pages/market/index.wxml b/pages/market/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/market/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/market/index.wxss b/pages/market/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/order/details/index.js b/pages/order/details/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/order/details/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/order/details/index.json b/pages/order/details/index.json new file mode 100644 index 0000000..897b35b --- /dev/null +++ b/pages/order/details/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "订单详情" + } \ No newline at end of file diff --git a/pages/order/details/index.wxml b/pages/order/details/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/order/details/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/order/details/index.wxss b/pages/order/details/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/order/index/index.js b/pages/order/index/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/order/index/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/order/index/index.json b/pages/order/index/index.json new file mode 100644 index 0000000..f3d0c17 --- /dev/null +++ b/pages/order/index/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "订单" + } \ No newline at end of file diff --git a/pages/order/index/index.wxml b/pages/order/index/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/order/index/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/order/index/index.wxss b/pages/order/index/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/rushToBuy/index.js b/pages/rushToBuy/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/rushToBuy/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/rushToBuy/index.json b/pages/rushToBuy/index.json new file mode 100644 index 0000000..2a36d10 --- /dev/null +++ b/pages/rushToBuy/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "限时抢购" + } \ No newline at end of file diff --git a/pages/rushToBuy/index.wxml b/pages/rushToBuy/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/rushToBuy/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/rushToBuy/index.wxss b/pages/rushToBuy/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/shop/details/index.js b/pages/shop/details/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/shop/details/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/shop/details/index.json b/pages/shop/details/index.json new file mode 100644 index 0000000..8077922 --- /dev/null +++ b/pages/shop/details/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "店铺详情" + } \ No newline at end of file diff --git a/pages/shop/details/index.wxml b/pages/shop/details/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/shop/details/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/shop/details/index.wxss b/pages/shop/details/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/shop/index/index.js b/pages/shop/index/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/shop/index/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/shop/index/index.json b/pages/shop/index/index.json new file mode 100644 index 0000000..9d95912 --- /dev/null +++ b/pages/shop/index/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "我的优惠劵" + } \ No newline at end of file diff --git a/pages/shop/index/index.wxml b/pages/shop/index/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/shop/index/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/shop/index/index.wxss b/pages/shop/index/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/success/index.js b/pages/success/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/success/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/success/index.json b/pages/success/index.json new file mode 100644 index 0000000..3f6f557 --- /dev/null +++ b/pages/success/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "购买成功" + } \ No newline at end of file diff --git a/pages/success/index.wxml b/pages/success/index.wxml new file mode 100644 index 0000000..55f9155 --- /dev/null +++ b/pages/success/index.wxml @@ -0,0 +1 @@ +pages/t/index.wxml diff --git a/pages/success/index.wxss b/pages/success/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/user/index.js b/pages/user/index.js new file mode 100644 index 0000000..daae2ca --- /dev/null +++ b/pages/user/index.js @@ -0,0 +1,65 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/user/index.json b/pages/user/index.json new file mode 100644 index 0000000..4101a43 --- /dev/null +++ b/pages/user/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + + }, + "navigationBarTitleText": "我的" + } \ No newline at end of file diff --git a/pages/user/index.wxml b/pages/user/index.wxml new file mode 100644 index 0000000..7cb3df8 --- /dev/null +++ b/pages/user/index.wxml @@ -0,0 +1,3 @@ + + 我的 + \ No newline at end of file diff --git a/pages/user/index.wxss b/pages/user/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..046a28e --- /dev/null +++ b/project.config.json @@ -0,0 +1,36 @@ +{ + "description": "项目配置文件。", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": true, + "es6": true, + "postcss": true, + "minified": true, + "newFeature": true + }, + "compileType": "miniprogram", + "libVersion": "2.2.2", + "appid": "wxff8123ffb9235426", + "projectname": "wx_luxuriant", + "isGameTourist": false, + "condition": { + "search": { + "current": -1, + "list": [] + }, + "conversation": { + "current": -1, + "list": [] + }, + "game": { + "currentL": -1, + "list": [] + }, + "miniprogram": { + "current": -1, + "list": [] + } + } +} \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..dbadbb8 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,19 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} + +const formatNumber = n => { + n = n.toString() + return n[1] ? n : '0' + n +} + +module.exports = { + formatTime: formatTime +}