From cce80cae33d6a7014957ad501e586d8a76cdbdbc Mon Sep 17 00:00:00 2001 From: itgaojian Date: Thu, 29 Apr 2021 10:08:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE(?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=AE=8C=E6=88=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 27 + app.json | 35 + app.wxss | 253 + class/icon.wxss | 1226 +++++ class/main.wxss | 4173 +++++++++++++++++ components/cartfoot/customcart.js | 228 + components/cartfoot/customcart.json | 4 + components/cartfoot/customcart.wxml | 17 + components/cartfoot/customcart.wxss | 1 + components/cuicustom/cu-custom.js | 63 + components/cuicustom/cu-custom.json | 4 + components/cuicustom/cu-custom.wxml | 22 + components/cuicustom/cu-custom.wxss | 1 + components/loadmore/index.js | 35 + components/loadmore/index.json | 3 + components/loadmore/index.wxml | 21 + components/loadmore/index.wxss | 57 + images/icons/ic_organ_icon.png | Bin 0 -> 2357 bytes images/icons/ic_score_icon.png | Bin 0 -> 1929 bytes images/icons/ic_success.png | Bin 0 -> 6015 bytes images/icons/ic_testsite_icon.png | Bin 0 -> 3787 bytes images/icons/ic_ticket_icon.png | Bin 0 -> 1278 bytes images/icons/ic_user_center_bg.png | Bin 0 -> 13571 bytes images/icons/ic_user_default.png | Bin 0 -> 3902 bytes pages/answer/answerlist.js | 65 + pages/answer/answerlist.json | 3 + pages/answer/answerlist.wxml | 18 + pages/answer/answerlist.wxss | 1 + pages/branches/branchesdetail.js | 66 + pages/branches/branchesdetail.json | 3 + pages/branches/branchesdetail.wxml | 4 + pages/branches/branchesdetail.wxss | 1 + pages/branches/brancheslist.js | 64 + pages/branches/brancheslist.json | 3 + pages/branches/brancheslist.wxml | 24 + pages/branches/brancheslist.wxss | 1 + pages/card/carddetail.js | 66 + pages/card/carddetail.json | 3 + pages/card/carddetail.wxml | 87 + pages/card/carddetail.wxss | 1 + pages/card/cardlist.js | 71 + pages/card/cardlist.json | 3 + pages/card/cardlist.wxml | 24 + pages/card/cardlist.wxss | 1 + pages/index/index.js | 121 + pages/index/index.json | 3 + pages/index/index.wxml | 96 + pages/index/index.wxss | 115 + pages/index/mineinfo.js | 66 + pages/index/mineinfo.json | 3 + pages/index/mineinfo.wxml | 4 + pages/index/mineinfo.wxss | 1 + pages/institutions/institutionsdetail.js | 32 + pages/institutions/institutionsdetail.json | 3 + pages/institutions/institutionsdetail.wxml | 17 + pages/institutions/institutionsdetail.wxss | 1 + pages/institutions/institutionslist.js | 81 + pages/institutions/institutionslist.json | 3 + pages/institutions/institutionslist.wxml | 41 + pages/institutions/institutionslist.wxss | 1 + pages/notices/noticedetail.js | 33 + pages/notices/noticedetail.json | 3 + pages/notices/noticedetail.wxml | 17 + pages/notices/noticedetail.wxss | 2 + pages/notices/noticeslist.js | 71 + pages/notices/noticeslist.json | 3 + pages/notices/noticeslist.wxml | 24 + pages/notices/noticeslist.wxss | 1 + pages/results/resultsdetail.js | 67 + pages/results/resultsdetail.json | 3 + pages/results/resultsdetail.wxml | 25 + pages/results/resultsdetail.wxss | 1 + pages/results/resultslist.js | 71 + pages/results/resultslist.json | 3 + pages/results/resultslist.wxml | 27 + pages/results/resultslist.wxss | 1 + project.config.json | 75 + sitemap.json | 7 + utils/util.js | 58 + vant/dist/action-sheet/index.d.ts | 1 + vant/dist/action-sheet/index.js | 62 + vant/dist/action-sheet/index.json | 8 + vant/dist/action-sheet/index.wxml | 69 + vant/dist/action-sheet/index.wxss | 111 + vant/dist/area/index.d.ts | 1 + vant/dist/area/index.js | 232 + vant/dist/area/index.json | 6 + vant/dist/area/index.wxml | 20 + vant/dist/area/index.wxs | 8 + vant/dist/area/index.wxss | 1 + vant/dist/button/index.d.ts | 1 + vant/dist/button/index.js | 58 + vant/dist/button/index.json | 7 + vant/dist/button/index.wxml | 53 + vant/dist/button/index.wxs | 39 + vant/dist/button/index.wxss | 1 + vant/dist/calendar/calendar.wxml | 65 + .../calendar/components/header/index.d.ts | 1 + vant/dist/calendar/components/header/index.js | 16 + .../calendar/components/header/index.json | 3 + .../calendar/components/header/index.wxml | 16 + .../calendar/components/header/index.wxss | 1 + .../dist/calendar/components/month/index.d.ts | 1 + vant/dist/calendar/components/month/index.js | 157 + .../dist/calendar/components/month/index.json | 3 + .../dist/calendar/components/month/index.wxml | 39 + vant/dist/calendar/components/month/index.wxs | 67 + .../dist/calendar/components/month/index.wxss | 1 + vant/dist/calendar/index.d.ts | 1 + vant/dist/calendar/index.js | 297 ++ vant/dist/calendar/index.json | 10 + vant/dist/calendar/index.wxml | 25 + vant/dist/calendar/index.wxs | 37 + vant/dist/calendar/index.wxss | 1 + vant/dist/calendar/utils.d.ts | 17 + vant/dist/calendar/utils.js | 78 + vant/dist/calendar/utils.wxs | 25 + vant/dist/card/index.d.ts | 1 + vant/dist/card/index.js | 49 + vant/dist/card/index.json | 6 + vant/dist/card/index.wxml | 56 + vant/dist/card/index.wxss | 1 + vant/dist/cell-group/index.d.ts | 1 + vant/dist/cell-group/index.js | 10 + vant/dist/cell-group/index.json | 3 + vant/dist/cell-group/index.wxml | 9 + vant/dist/cell-group/index.wxss | 1 + vant/dist/cell/index.d.ts | 1 + vant/dist/cell/index.js | 38 + vant/dist/cell/index.json | 6 + vant/dist/cell/index.wxml | 46 + vant/dist/cell/index.wxs | 17 + vant/dist/cell/index.wxss | 1 + vant/dist/checkbox-group/index.d.ts | 1 + vant/dist/checkbox-group/index.js | 31 + vant/dist/checkbox-group/index.json | 3 + vant/dist/checkbox-group/index.wxml | 1 + vant/dist/checkbox-group/index.wxss | 1 + vant/dist/checkbox/index.d.ts | 1 + vant/dist/checkbox/index.js | 74 + vant/dist/checkbox/index.json | 6 + vant/dist/checkbox/index.wxml | 31 + vant/dist/checkbox/index.wxs | 20 + vant/dist/checkbox/index.wxss | 1 + vant/dist/circle/canvas.d.ts | 6 + vant/dist/circle/canvas.js | 43 + vant/dist/circle/index.d.ts | 1 + vant/dist/circle/index.js | 186 + vant/dist/circle/index.json | 3 + vant/dist/circle/index.wxml | 9 + vant/dist/circle/index.wxss | 1 + vant/dist/col/index.d.ts | 1 + vant/dist/col/index.js | 9 + vant/dist/col/index.json | 3 + vant/dist/col/index.wxml | 9 + vant/dist/col/index.wxs | 18 + vant/dist/col/index.wxss | 1 + vant/dist/collapse-item/animate.d.ts | 6 + vant/dist/collapse-item/animate.js | 70 + vant/dist/collapse-item/index.d.ts | 1 + vant/dist/collapse-item/index.js | 59 + vant/dist/collapse-item/index.json | 6 + vant/dist/collapse-item/index.wxml | 44 + vant/dist/collapse-item/index.wxss | 1 + vant/dist/collapse/index.d.ts | 1 + vant/dist/collapse/index.js | 44 + vant/dist/collapse/index.json | 3 + vant/dist/collapse/index.wxml | 3 + vant/dist/collapse/index.wxss | 1 + vant/dist/common/color.d.ts | 7 + vant/dist/common/color.js | 7 + vant/dist/common/component.d.ts | 8 + vant/dist/common/component.js | 45 + vant/dist/common/index.wxss | 1 + vant/dist/common/relation.d.ts | 21 + vant/dist/common/relation.js | 64 + vant/dist/common/style/clearfix.wxss | 1 + vant/dist/common/style/ellipsis.wxss | 1 + vant/dist/common/style/hairline.wxss | 55 + vant/dist/common/style/mixins/clearfix.wxss | 0 vant/dist/common/style/mixins/ellipsis.wxss | 0 vant/dist/common/style/mixins/hairline.wxss | 0 vant/dist/common/style/theme.wxss | 0 vant/dist/common/style/var.wxss | 0 vant/dist/common/utils.d.ts | 30 + vant/dist/common/utils.js | 89 + vant/dist/common/validator.d.ts | 11 + vant/dist/common/validator.js | 30 + vant/dist/common/version.d.ts | 6 + vant/dist/common/version.js | 45 + vant/dist/count-down/index.d.ts | 1 + vant/dist/count-down/index.js | 99 + vant/dist/count-down/index.json | 3 + vant/dist/count-down/index.wxml | 4 + vant/dist/count-down/index.wxss | 1 + vant/dist/count-down/utils.d.ts | 10 + vant/dist/count-down/utils.js | 53 + vant/dist/datetime-picker/index.d.ts | 1 + vant/dist/datetime-picker/index.js | 324 ++ vant/dist/datetime-picker/index.json | 6 + vant/dist/datetime-picker/index.wxml | 16 + vant/dist/datetime-picker/index.wxss | 1 + vant/dist/definitions/index.d.ts | 43 + vant/dist/definitions/index.js | 1 + vant/dist/dialog/dialog.d.ts | 80 + vant/dist/dialog/dialog.js | 84 + vant/dist/dialog/index.d.ts | 1 + vant/dist/dialog/index.js | 122 + vant/dist/dialog/index.json | 9 + vant/dist/dialog/index.wxml | 113 + vant/dist/dialog/index.wxss | 1 + vant/dist/divider/index.d.ts | 1 + vant/dist/divider/index.js | 12 + vant/dist/divider/index.json | 4 + vant/dist/divider/index.wxml | 9 + vant/dist/divider/index.wxs | 18 + vant/dist/divider/index.wxss | 1 + vant/dist/dropdown-item/index.d.ts | 1 + vant/dist/dropdown-item/index.js | 111 + vant/dist/dropdown-item/index.json | 8 + vant/dist/dropdown-item/index.wxml | 48 + vant/dist/dropdown-item/index.wxss | 1 + vant/dist/dropdown-item/shared.d.ts | 5 + vant/dist/dropdown-item/shared.js | 1 + vant/dist/dropdown-menu/index.d.ts | 1 + vant/dist/dropdown-menu/index.js | 112 + vant/dist/dropdown-menu/index.json | 3 + vant/dist/dropdown-menu/index.wxml | 23 + vant/dist/dropdown-menu/index.wxs | 16 + vant/dist/dropdown-menu/index.wxss | 1 + vant/dist/empty/index.d.ts | 1 + vant/dist/empty/index.js | 10 + vant/dist/empty/index.json | 4 + vant/dist/empty/index.wxml | 22 + vant/dist/empty/index.wxs | 14 + vant/dist/empty/index.wxss | 49 + vant/dist/field/index.d.ts | 1 + vant/dist/field/index.js | 126 + vant/dist/field/index.json | 7 + vant/dist/field/index.wxml | 56 + vant/dist/field/index.wxs | 18 + vant/dist/field/index.wxss | 1 + vant/dist/field/input.wxml | 27 + vant/dist/field/props.d.ts | 4 + vant/dist/field/props.js | 63 + vant/dist/field/textarea.wxml | 29 + vant/dist/goods-action-button/index.d.ts | 1 + vant/dist/goods-action-button/index.js | 37 + vant/dist/goods-action-button/index.json | 6 + vant/dist/goods-action-button/index.wxml | 30 + vant/dist/goods-action-button/index.wxss | 1 + vant/dist/goods-action-icon/index.d.ts | 1 + vant/dist/goods-action-icon/index.js | 22 + vant/dist/goods-action-icon/index.json | 7 + vant/dist/goods-action-icon/index.wxml | 35 + vant/dist/goods-action-icon/index.wxss | 1 + vant/dist/goods-action/index.d.ts | 1 + vant/dist/goods-action/index.js | 15 + vant/dist/goods-action/index.json | 3 + vant/dist/goods-action/index.wxml | 5 + vant/dist/goods-action/index.wxss | 1 + vant/dist/grid-item/index.d.ts | 1 + vant/dist/grid-item/index.js | 56 + vant/dist/grid-item/index.json | 6 + vant/dist/grid-item/index.wxml | 27 + vant/dist/grid-item/index.wxs | 32 + vant/dist/grid-item/index.wxss | 1 + vant/dist/grid/index.d.ts | 1 + vant/dist/grid/index.js | 50 + vant/dist/grid/index.json | 3 + vant/dist/grid/index.wxml | 8 + vant/dist/grid/index.wxs | 13 + vant/dist/grid/index.wxss | 1 + vant/dist/icon/index.d.ts | 1 + vant/dist/icon/index.js | 20 + vant/dist/icon/index.json | 6 + vant/dist/icon/index.wxml | 20 + vant/dist/icon/index.wxs | 39 + vant/dist/icon/index.wxss | 1 + vant/dist/image/index.d.ts | 1 + vant/dist/image/index.js | 61 + vant/dist/image/index.json | 7 + vant/dist/image/index.wxml | 34 + vant/dist/image/index.wxs | 32 + vant/dist/image/index.wxss | 1 + vant/dist/index-anchor/index.d.ts | 1 + vant/dist/index-anchor/index.js | 25 + vant/dist/index-anchor/index.json | 3 + vant/dist/index-anchor/index.wxml | 14 + vant/dist/index-anchor/index.wxss | 1 + vant/dist/index-bar/index.d.ts | 1 + vant/dist/index-bar/index.js | 245 + vant/dist/index-bar/index.json | 3 + vant/dist/index-bar/index.wxml | 22 + vant/dist/index-bar/index.wxss | 1 + vant/dist/info/index.d.ts | 1 + vant/dist/info/index.js | 8 + vant/dist/info/index.json | 3 + vant/dist/info/index.wxml | 7 + vant/dist/info/index.wxss | 1 + vant/dist/loading/index.d.ts | 1 + vant/dist/loading/index.js | 16 + vant/dist/loading/index.json | 3 + vant/dist/loading/index.wxml | 19 + vant/dist/loading/index.wxs | 22 + vant/dist/loading/index.wxss | 1 + vant/dist/mixins/basic.d.ts | 1 + vant/dist/mixins/basic.js | 11 + vant/dist/mixins/button.d.ts | 1 + vant/dist/mixins/button.js | 15 + vant/dist/mixins/link.d.ts | 1 + vant/dist/mixins/link.js | 24 + vant/dist/mixins/open-type.d.ts | 1 + vant/dist/mixins/open-type.js | 26 + vant/dist/mixins/page-scroll.d.ts | 8 + vant/dist/mixins/page-scroll.js | 33 + vant/dist/mixins/touch.d.ts | 1 + vant/dist/mixins/touch.js | 37 + vant/dist/mixins/transition.d.ts | 1 + vant/dist/mixins/transition.js | 115 + vant/dist/nav-bar/index.d.ts | 1 + vant/dist/nav-bar/index.js | 65 + vant/dist/nav-bar/index.json | 6 + vant/dist/nav-bar/index.wxml | 42 + vant/dist/nav-bar/index.wxs | 13 + vant/dist/nav-bar/index.wxss | 1 + vant/dist/notice-bar/index.d.ts | 1 + vant/dist/notice-bar/index.js | 124 + vant/dist/notice-bar/index.json | 6 + vant/dist/notice-bar/index.wxml | 39 + vant/dist/notice-bar/index.wxs | 15 + vant/dist/notice-bar/index.wxss | 1 + vant/dist/notify/index.d.ts | 1 + vant/dist/notify/index.js | 65 + vant/dist/notify/index.json | 6 + vant/dist/notify/index.wxml | 21 + vant/dist/notify/index.wxs | 22 + vant/dist/notify/index.wxss | 1 + vant/dist/notify/notify.d.ts | 20 + vant/dist/notify/notify.js | 52 + vant/dist/overlay/index.d.ts | 1 + vant/dist/overlay/index.js | 22 + vant/dist/overlay/index.json | 6 + vant/dist/overlay/index.wxml | 10 + vant/dist/overlay/index.wxss | 1 + vant/dist/panel/index.d.ts | 1 + vant/dist/panel/index.js | 10 + vant/dist/panel/index.json | 6 + vant/dist/panel/index.wxml | 19 + vant/dist/panel/index.wxss | 1 + vant/dist/picker-column/index.d.ts | 1 + vant/dist/picker-column/index.js | 124 + vant/dist/picker-column/index.json | 3 + vant/dist/picker-column/index.wxml | 23 + vant/dist/picker-column/index.wxs | 36 + vant/dist/picker-column/index.wxss | 1 + vant/dist/picker/index.d.ts | 1 + vant/dist/picker/index.js | 146 + vant/dist/picker/index.json | 7 + vant/dist/picker/index.wxml | 37 + vant/dist/picker/index.wxs | 42 + vant/dist/picker/index.wxss | 1 + vant/dist/picker/shared.d.ts | 21 + vant/dist/picker/shared.js | 21 + vant/dist/picker/toolbar.wxml | 23 + vant/dist/popup/index.d.ts | 1 + vant/dist/popup/index.js | 84 + vant/dist/popup/index.json | 7 + vant/dist/popup/index.wxml | 25 + vant/dist/popup/index.wxs | 18 + vant/dist/popup/index.wxss | 1 + vant/dist/progress/index.d.ts | 1 + vant/dist/progress/index.js | 51 + vant/dist/progress/index.json | 3 + vant/dist/progress/index.wxml | 20 + vant/dist/progress/index.wxs | 36 + vant/dist/progress/index.wxss | 1 + vant/dist/radio-group/index.d.ts | 1 + vant/dist/radio-group/index.js | 32 + vant/dist/radio-group/index.json | 3 + vant/dist/radio-group/index.wxml | 5 + vant/dist/radio-group/index.wxss | 1 + vant/dist/radio/index.d.ts | 1 + vant/dist/radio/index.js | 45 + vant/dist/radio/index.json | 6 + vant/dist/radio/index.wxml | 29 + vant/dist/radio/index.wxss | 1 + vant/dist/rate/index.d.ts | 1 + vant/dist/rate/index.js | 88 + vant/dist/rate/index.json | 6 + vant/dist/rate/index.wxml | 34 + vant/dist/rate/index.wxss | 1 + vant/dist/row/index.d.ts | 1 + vant/dist/row/index.js | 23 + vant/dist/row/index.json | 3 + vant/dist/row/index.wxml | 5 + vant/dist/row/index.wxs | 18 + vant/dist/row/index.wxss | 1 + vant/dist/search/index.d.ts | 1 + vant/dist/search/index.js | 78 + vant/dist/search/index.json | 6 + vant/dist/search/index.wxml | 50 + vant/dist/search/index.wxss | 1 + vant/dist/share-sheet/index.d.ts | 1 + vant/dist/share-sheet/index.js | 55 + vant/dist/share-sheet/index.json | 7 + vant/dist/share-sheet/index.wxml | 46 + vant/dist/share-sheet/index.wxs | 12 + vant/dist/share-sheet/index.wxss | 1 + vant/dist/share-sheet/options.d.ts | 1 + vant/dist/share-sheet/options.js | 14 + vant/dist/share-sheet/options.json | 3 + vant/dist/share-sheet/options.wxml | 20 + vant/dist/share-sheet/options.wxs | 14 + vant/dist/share-sheet/options.wxss | 1 + vant/dist/sidebar-item/index.d.ts | 1 + vant/dist/sidebar-item/index.js | 29 + vant/dist/sidebar-item/index.json | 6 + vant/dist/sidebar-item/index.wxml | 18 + vant/dist/sidebar-item/index.wxss | 1 + vant/dist/sidebar/index.d.ts | 1 + vant/dist/sidebar/index.js | 34 + vant/dist/sidebar/index.json | 3 + vant/dist/sidebar/index.wxml | 3 + vant/dist/sidebar/index.wxss | 1 + vant/dist/skeleton/index.d.ts | 1 + vant/dist/skeleton/index.js | 46 + vant/dist/skeleton/index.json | 4 + vant/dist/skeleton/index.wxml | 29 + vant/dist/skeleton/index.wxss | 1 + vant/dist/slider/index.d.ts | 1 + vant/dist/slider/index.js | 107 + vant/dist/slider/index.json | 3 + vant/dist/slider/index.wxml | 30 + vant/dist/slider/index.wxs | 14 + vant/dist/slider/index.wxss | 1 + vant/dist/stepper/index.d.ts | 1 + vant/dist/stepper/index.js | 194 + vant/dist/stepper/index.json | 3 + vant/dist/stepper/index.wxml | 42 + vant/dist/stepper/index.wxs | 22 + vant/dist/stepper/index.wxss | 1 + vant/dist/steps/index.d.ts | 1 + vant/dist/steps/index.js | 33 + vant/dist/steps/index.json | 6 + vant/dist/steps/index.wxml | 54 + vant/dist/steps/index.wxss | 1 + vant/dist/sticky/index.d.ts | 1 + vant/dist/sticky/index.js | 113 + vant/dist/sticky/index.json | 3 + vant/dist/sticky/index.wxml | 8 + vant/dist/sticky/index.wxs | 25 + vant/dist/sticky/index.wxss | 1 + vant/dist/submit-bar/index.d.ts | 1 + vant/dist/submit-bar/index.js | 57 + vant/dist/submit-bar/index.json | 7 + vant/dist/submit-bar/index.wxml | 44 + vant/dist/submit-bar/index.wxss | 1 + vant/dist/swipe-cell/index.d.ts | 1 + vant/dist/swipe-cell/index.js | 132 + vant/dist/swipe-cell/index.json | 3 + vant/dist/swipe-cell/index.wxml | 20 + vant/dist/swipe-cell/index.wxss | 1 + vant/dist/switch/index.d.ts | 1 + vant/dist/switch/index.js | 36 + vant/dist/switch/index.json | 6 + vant/dist/switch/index.wxml | 16 + vant/dist/switch/index.wxs | 26 + vant/dist/switch/index.wxss | 1 + vant/dist/tab/index.d.ts | 1 + vant/dist/tab/index.js | 56 + vant/dist/tab/index.json | 3 + vant/dist/tab/index.wxml | 8 + vant/dist/tab/index.wxss | 1 + vant/dist/tabbar-item/index.d.ts | 1 + vant/dist/tabbar-item/index.js | 56 + vant/dist/tabbar-item/index.json | 7 + vant/dist/tabbar-item/index.wxml | 28 + vant/dist/tabbar-item/index.wxss | 46 + vant/dist/tabbar/index.d.ts | 1 + vant/dist/tabbar/index.js | 65 + vant/dist/tabbar/index.json | 3 + vant/dist/tabbar/index.wxml | 10 + vant/dist/tabbar/index.wxss | 1 + vant/dist/tabs/index.d.ts | 1 + vant/dist/tabs/index.js | 271 ++ vant/dist/tabs/index.json | 7 + vant/dist/tabs/index.wxml | 63 + vant/dist/tabs/index.wxs | 82 + vant/dist/tabs/index.wxss | 1 + vant/dist/tag/index.d.ts | 1 + vant/dist/tag/index.js | 21 + vant/dist/tag/index.json | 6 + vant/dist/tag/index.wxml | 15 + vant/dist/tag/index.wxs | 13 + vant/dist/tag/index.wxss | 1 + vant/dist/toast/index.d.ts | 1 + vant/dist/toast/index.js | 29 + vant/dist/toast/index.json | 9 + vant/dist/toast/index.wxml | 33 + vant/dist/toast/index.wxss | 1 + vant/dist/toast/toast.d.ts | 68 + vant/dist/toast/toast.js | 70 + vant/dist/transition/index.d.ts | 1 + vant/dist/transition/index.js | 13 + vant/dist/transition/index.json | 3 + vant/dist/transition/index.wxml | 10 + vant/dist/transition/index.wxs | 17 + vant/dist/transition/index.wxss | 1 + vant/dist/tree-select/index.d.ts | 1 + vant/dist/tree-select/index.js | 68 + vant/dist/tree-select/index.json | 8 + vant/dist/tree-select/index.wxml | 41 + vant/dist/tree-select/index.wxs | 12 + vant/dist/tree-select/index.wxss | 1 + vant/dist/uploader/index.d.ts | 1 + vant/dist/uploader/index.js | 201 + vant/dist/uploader/index.json | 7 + vant/dist/uploader/index.wxml | 83 + vant/dist/uploader/index.wxs | 14 + vant/dist/uploader/index.wxss | 1 + vant/dist/uploader/shared.d.ts | 28 + vant/dist/uploader/shared.js | 30 + vant/dist/uploader/utils.d.ts | 31 + vant/dist/uploader/utils.js | 122 + vant/dist/wxs/add-unit.wxs | 12 + vant/dist/wxs/array.wxs | 5 + vant/dist/wxs/bem.wxs | 39 + vant/dist/wxs/memoize.wxs | 55 + vant/dist/wxs/object.wxs | 13 + vant/dist/wxs/style.wxs | 32 + vant/dist/wxs/utils.wxs | 10 + 532 files changed, 18672 insertions(+) create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 class/icon.wxss create mode 100644 class/main.wxss create mode 100644 components/cartfoot/customcart.js create mode 100644 components/cartfoot/customcart.json create mode 100644 components/cartfoot/customcart.wxml create mode 100644 components/cartfoot/customcart.wxss create mode 100644 components/cuicustom/cu-custom.js create mode 100644 components/cuicustom/cu-custom.json create mode 100644 components/cuicustom/cu-custom.wxml create mode 100644 components/cuicustom/cu-custom.wxss create mode 100644 components/loadmore/index.js create mode 100644 components/loadmore/index.json create mode 100644 components/loadmore/index.wxml create mode 100644 components/loadmore/index.wxss create mode 100644 images/icons/ic_organ_icon.png create mode 100644 images/icons/ic_score_icon.png create mode 100644 images/icons/ic_success.png create mode 100644 images/icons/ic_testsite_icon.png create mode 100644 images/icons/ic_ticket_icon.png create mode 100644 images/icons/ic_user_center_bg.png create mode 100644 images/icons/ic_user_default.png create mode 100644 pages/answer/answerlist.js create mode 100644 pages/answer/answerlist.json create mode 100644 pages/answer/answerlist.wxml create mode 100644 pages/answer/answerlist.wxss create mode 100644 pages/branches/branchesdetail.js create mode 100644 pages/branches/branchesdetail.json create mode 100644 pages/branches/branchesdetail.wxml create mode 100644 pages/branches/branchesdetail.wxss create mode 100644 pages/branches/brancheslist.js create mode 100644 pages/branches/brancheslist.json create mode 100644 pages/branches/brancheslist.wxml create mode 100644 pages/branches/brancheslist.wxss create mode 100644 pages/card/carddetail.js create mode 100644 pages/card/carddetail.json create mode 100644 pages/card/carddetail.wxml create mode 100644 pages/card/carddetail.wxss create mode 100644 pages/card/cardlist.js create mode 100644 pages/card/cardlist.json create mode 100644 pages/card/cardlist.wxml create mode 100644 pages/card/cardlist.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/mineinfo.js create mode 100644 pages/index/mineinfo.json create mode 100644 pages/index/mineinfo.wxml create mode 100644 pages/index/mineinfo.wxss create mode 100644 pages/institutions/institutionsdetail.js create mode 100644 pages/institutions/institutionsdetail.json create mode 100644 pages/institutions/institutionsdetail.wxml create mode 100644 pages/institutions/institutionsdetail.wxss create mode 100644 pages/institutions/institutionslist.js create mode 100644 pages/institutions/institutionslist.json create mode 100644 pages/institutions/institutionslist.wxml create mode 100644 pages/institutions/institutionslist.wxss create mode 100644 pages/notices/noticedetail.js create mode 100644 pages/notices/noticedetail.json create mode 100644 pages/notices/noticedetail.wxml create mode 100644 pages/notices/noticedetail.wxss create mode 100644 pages/notices/noticeslist.js create mode 100644 pages/notices/noticeslist.json create mode 100644 pages/notices/noticeslist.wxml create mode 100644 pages/notices/noticeslist.wxss create mode 100644 pages/results/resultsdetail.js create mode 100644 pages/results/resultsdetail.json create mode 100644 pages/results/resultsdetail.wxml create mode 100644 pages/results/resultsdetail.wxss create mode 100644 pages/results/resultslist.js create mode 100644 pages/results/resultslist.json create mode 100644 pages/results/resultslist.wxml create mode 100644 pages/results/resultslist.wxss create mode 100644 project.config.json create mode 100644 sitemap.json create mode 100644 utils/util.js create mode 100644 vant/dist/action-sheet/index.d.ts create mode 100644 vant/dist/action-sheet/index.js create mode 100644 vant/dist/action-sheet/index.json create mode 100644 vant/dist/action-sheet/index.wxml create mode 100644 vant/dist/action-sheet/index.wxss create mode 100644 vant/dist/area/index.d.ts create mode 100644 vant/dist/area/index.js create mode 100644 vant/dist/area/index.json create mode 100644 vant/dist/area/index.wxml create mode 100644 vant/dist/area/index.wxs create mode 100644 vant/dist/area/index.wxss create mode 100644 vant/dist/button/index.d.ts create mode 100644 vant/dist/button/index.js create mode 100644 vant/dist/button/index.json create mode 100644 vant/dist/button/index.wxml create mode 100644 vant/dist/button/index.wxs create mode 100644 vant/dist/button/index.wxss create mode 100644 vant/dist/calendar/calendar.wxml create mode 100644 vant/dist/calendar/components/header/index.d.ts create mode 100644 vant/dist/calendar/components/header/index.js create mode 100644 vant/dist/calendar/components/header/index.json create mode 100644 vant/dist/calendar/components/header/index.wxml create mode 100644 vant/dist/calendar/components/header/index.wxss create mode 100644 vant/dist/calendar/components/month/index.d.ts create mode 100644 vant/dist/calendar/components/month/index.js create mode 100644 vant/dist/calendar/components/month/index.json create mode 100644 vant/dist/calendar/components/month/index.wxml create mode 100644 vant/dist/calendar/components/month/index.wxs create mode 100644 vant/dist/calendar/components/month/index.wxss create mode 100644 vant/dist/calendar/index.d.ts create mode 100644 vant/dist/calendar/index.js create mode 100644 vant/dist/calendar/index.json create mode 100644 vant/dist/calendar/index.wxml create mode 100644 vant/dist/calendar/index.wxs create mode 100644 vant/dist/calendar/index.wxss create mode 100644 vant/dist/calendar/utils.d.ts create mode 100644 vant/dist/calendar/utils.js create mode 100644 vant/dist/calendar/utils.wxs create mode 100644 vant/dist/card/index.d.ts create mode 100644 vant/dist/card/index.js create mode 100644 vant/dist/card/index.json create mode 100644 vant/dist/card/index.wxml create mode 100644 vant/dist/card/index.wxss create mode 100644 vant/dist/cell-group/index.d.ts create mode 100644 vant/dist/cell-group/index.js create mode 100644 vant/dist/cell-group/index.json create mode 100644 vant/dist/cell-group/index.wxml create mode 100644 vant/dist/cell-group/index.wxss create mode 100644 vant/dist/cell/index.d.ts create mode 100644 vant/dist/cell/index.js create mode 100644 vant/dist/cell/index.json create mode 100644 vant/dist/cell/index.wxml create mode 100644 vant/dist/cell/index.wxs create mode 100644 vant/dist/cell/index.wxss create mode 100644 vant/dist/checkbox-group/index.d.ts create mode 100644 vant/dist/checkbox-group/index.js create mode 100644 vant/dist/checkbox-group/index.json create mode 100644 vant/dist/checkbox-group/index.wxml create mode 100644 vant/dist/checkbox-group/index.wxss create mode 100644 vant/dist/checkbox/index.d.ts create mode 100644 vant/dist/checkbox/index.js create mode 100644 vant/dist/checkbox/index.json create mode 100644 vant/dist/checkbox/index.wxml create mode 100644 vant/dist/checkbox/index.wxs create mode 100644 vant/dist/checkbox/index.wxss create mode 100644 vant/dist/circle/canvas.d.ts create mode 100644 vant/dist/circle/canvas.js create mode 100644 vant/dist/circle/index.d.ts create mode 100644 vant/dist/circle/index.js create mode 100644 vant/dist/circle/index.json create mode 100644 vant/dist/circle/index.wxml create mode 100644 vant/dist/circle/index.wxss create mode 100644 vant/dist/col/index.d.ts create mode 100644 vant/dist/col/index.js create mode 100644 vant/dist/col/index.json create mode 100644 vant/dist/col/index.wxml create mode 100644 vant/dist/col/index.wxs create mode 100644 vant/dist/col/index.wxss create mode 100644 vant/dist/collapse-item/animate.d.ts create mode 100644 vant/dist/collapse-item/animate.js create mode 100644 vant/dist/collapse-item/index.d.ts create mode 100644 vant/dist/collapse-item/index.js create mode 100644 vant/dist/collapse-item/index.json create mode 100644 vant/dist/collapse-item/index.wxml create mode 100644 vant/dist/collapse-item/index.wxss create mode 100644 vant/dist/collapse/index.d.ts create mode 100644 vant/dist/collapse/index.js create mode 100644 vant/dist/collapse/index.json create mode 100644 vant/dist/collapse/index.wxml create mode 100644 vant/dist/collapse/index.wxss create mode 100644 vant/dist/common/color.d.ts create mode 100644 vant/dist/common/color.js create mode 100644 vant/dist/common/component.d.ts create mode 100644 vant/dist/common/component.js create mode 100644 vant/dist/common/index.wxss create mode 100644 vant/dist/common/relation.d.ts create mode 100644 vant/dist/common/relation.js create mode 100644 vant/dist/common/style/clearfix.wxss create mode 100644 vant/dist/common/style/ellipsis.wxss create mode 100644 vant/dist/common/style/hairline.wxss create mode 100644 vant/dist/common/style/mixins/clearfix.wxss create mode 100644 vant/dist/common/style/mixins/ellipsis.wxss create mode 100644 vant/dist/common/style/mixins/hairline.wxss create mode 100644 vant/dist/common/style/theme.wxss create mode 100644 vant/dist/common/style/var.wxss create mode 100644 vant/dist/common/utils.d.ts create mode 100644 vant/dist/common/utils.js create mode 100644 vant/dist/common/validator.d.ts create mode 100644 vant/dist/common/validator.js create mode 100644 vant/dist/common/version.d.ts create mode 100644 vant/dist/common/version.js create mode 100644 vant/dist/count-down/index.d.ts create mode 100644 vant/dist/count-down/index.js create mode 100644 vant/dist/count-down/index.json create mode 100644 vant/dist/count-down/index.wxml create mode 100644 vant/dist/count-down/index.wxss create mode 100644 vant/dist/count-down/utils.d.ts create mode 100644 vant/dist/count-down/utils.js create mode 100644 vant/dist/datetime-picker/index.d.ts create mode 100644 vant/dist/datetime-picker/index.js create mode 100644 vant/dist/datetime-picker/index.json create mode 100644 vant/dist/datetime-picker/index.wxml create mode 100644 vant/dist/datetime-picker/index.wxss create mode 100644 vant/dist/definitions/index.d.ts create mode 100644 vant/dist/definitions/index.js create mode 100644 vant/dist/dialog/dialog.d.ts create mode 100644 vant/dist/dialog/dialog.js create mode 100644 vant/dist/dialog/index.d.ts create mode 100644 vant/dist/dialog/index.js create mode 100644 vant/dist/dialog/index.json create mode 100644 vant/dist/dialog/index.wxml create mode 100644 vant/dist/dialog/index.wxss create mode 100644 vant/dist/divider/index.d.ts create mode 100644 vant/dist/divider/index.js create mode 100644 vant/dist/divider/index.json create mode 100644 vant/dist/divider/index.wxml create mode 100644 vant/dist/divider/index.wxs create mode 100644 vant/dist/divider/index.wxss create mode 100644 vant/dist/dropdown-item/index.d.ts create mode 100644 vant/dist/dropdown-item/index.js create mode 100644 vant/dist/dropdown-item/index.json create mode 100644 vant/dist/dropdown-item/index.wxml create mode 100644 vant/dist/dropdown-item/index.wxss create mode 100644 vant/dist/dropdown-item/shared.d.ts create mode 100644 vant/dist/dropdown-item/shared.js create mode 100644 vant/dist/dropdown-menu/index.d.ts create mode 100644 vant/dist/dropdown-menu/index.js create mode 100644 vant/dist/dropdown-menu/index.json create mode 100644 vant/dist/dropdown-menu/index.wxml create mode 100644 vant/dist/dropdown-menu/index.wxs create mode 100644 vant/dist/dropdown-menu/index.wxss create mode 100644 vant/dist/empty/index.d.ts create mode 100644 vant/dist/empty/index.js create mode 100644 vant/dist/empty/index.json create mode 100644 vant/dist/empty/index.wxml create mode 100644 vant/dist/empty/index.wxs create mode 100644 vant/dist/empty/index.wxss create mode 100644 vant/dist/field/index.d.ts create mode 100644 vant/dist/field/index.js create mode 100644 vant/dist/field/index.json create mode 100644 vant/dist/field/index.wxml create mode 100644 vant/dist/field/index.wxs create mode 100644 vant/dist/field/index.wxss create mode 100644 vant/dist/field/input.wxml create mode 100644 vant/dist/field/props.d.ts create mode 100644 vant/dist/field/props.js create mode 100644 vant/dist/field/textarea.wxml create mode 100644 vant/dist/goods-action-button/index.d.ts create mode 100644 vant/dist/goods-action-button/index.js create mode 100644 vant/dist/goods-action-button/index.json create mode 100644 vant/dist/goods-action-button/index.wxml create mode 100644 vant/dist/goods-action-button/index.wxss create mode 100644 vant/dist/goods-action-icon/index.d.ts create mode 100644 vant/dist/goods-action-icon/index.js create mode 100644 vant/dist/goods-action-icon/index.json create mode 100644 vant/dist/goods-action-icon/index.wxml create mode 100644 vant/dist/goods-action-icon/index.wxss create mode 100644 vant/dist/goods-action/index.d.ts create mode 100644 vant/dist/goods-action/index.js create mode 100644 vant/dist/goods-action/index.json create mode 100644 vant/dist/goods-action/index.wxml create mode 100644 vant/dist/goods-action/index.wxss create mode 100644 vant/dist/grid-item/index.d.ts create mode 100644 vant/dist/grid-item/index.js create mode 100644 vant/dist/grid-item/index.json create mode 100644 vant/dist/grid-item/index.wxml create mode 100644 vant/dist/grid-item/index.wxs create mode 100644 vant/dist/grid-item/index.wxss create mode 100644 vant/dist/grid/index.d.ts create mode 100644 vant/dist/grid/index.js create mode 100644 vant/dist/grid/index.json create mode 100644 vant/dist/grid/index.wxml create mode 100644 vant/dist/grid/index.wxs create mode 100644 vant/dist/grid/index.wxss create mode 100644 vant/dist/icon/index.d.ts create mode 100644 vant/dist/icon/index.js create mode 100644 vant/dist/icon/index.json create mode 100644 vant/dist/icon/index.wxml create mode 100644 vant/dist/icon/index.wxs create mode 100644 vant/dist/icon/index.wxss create mode 100644 vant/dist/image/index.d.ts create mode 100644 vant/dist/image/index.js create mode 100644 vant/dist/image/index.json create mode 100644 vant/dist/image/index.wxml create mode 100644 vant/dist/image/index.wxs create mode 100644 vant/dist/image/index.wxss create mode 100644 vant/dist/index-anchor/index.d.ts create mode 100644 vant/dist/index-anchor/index.js create mode 100644 vant/dist/index-anchor/index.json create mode 100644 vant/dist/index-anchor/index.wxml create mode 100644 vant/dist/index-anchor/index.wxss create mode 100644 vant/dist/index-bar/index.d.ts create mode 100644 vant/dist/index-bar/index.js create mode 100644 vant/dist/index-bar/index.json create mode 100644 vant/dist/index-bar/index.wxml create mode 100644 vant/dist/index-bar/index.wxss create mode 100644 vant/dist/info/index.d.ts create mode 100644 vant/dist/info/index.js create mode 100644 vant/dist/info/index.json create mode 100644 vant/dist/info/index.wxml create mode 100644 vant/dist/info/index.wxss create mode 100644 vant/dist/loading/index.d.ts create mode 100644 vant/dist/loading/index.js create mode 100644 vant/dist/loading/index.json create mode 100644 vant/dist/loading/index.wxml create mode 100644 vant/dist/loading/index.wxs create mode 100644 vant/dist/loading/index.wxss create mode 100644 vant/dist/mixins/basic.d.ts create mode 100644 vant/dist/mixins/basic.js create mode 100644 vant/dist/mixins/button.d.ts create mode 100644 vant/dist/mixins/button.js create mode 100644 vant/dist/mixins/link.d.ts create mode 100644 vant/dist/mixins/link.js create mode 100644 vant/dist/mixins/open-type.d.ts create mode 100644 vant/dist/mixins/open-type.js create mode 100644 vant/dist/mixins/page-scroll.d.ts create mode 100644 vant/dist/mixins/page-scroll.js create mode 100644 vant/dist/mixins/touch.d.ts create mode 100644 vant/dist/mixins/touch.js create mode 100644 vant/dist/mixins/transition.d.ts create mode 100644 vant/dist/mixins/transition.js create mode 100644 vant/dist/nav-bar/index.d.ts create mode 100644 vant/dist/nav-bar/index.js create mode 100644 vant/dist/nav-bar/index.json create mode 100644 vant/dist/nav-bar/index.wxml create mode 100644 vant/dist/nav-bar/index.wxs create mode 100644 vant/dist/nav-bar/index.wxss create mode 100644 vant/dist/notice-bar/index.d.ts create mode 100644 vant/dist/notice-bar/index.js create mode 100644 vant/dist/notice-bar/index.json create mode 100644 vant/dist/notice-bar/index.wxml create mode 100644 vant/dist/notice-bar/index.wxs create mode 100644 vant/dist/notice-bar/index.wxss create mode 100644 vant/dist/notify/index.d.ts create mode 100644 vant/dist/notify/index.js create mode 100644 vant/dist/notify/index.json create mode 100644 vant/dist/notify/index.wxml create mode 100644 vant/dist/notify/index.wxs create mode 100644 vant/dist/notify/index.wxss create mode 100644 vant/dist/notify/notify.d.ts create mode 100644 vant/dist/notify/notify.js create mode 100644 vant/dist/overlay/index.d.ts create mode 100644 vant/dist/overlay/index.js create mode 100644 vant/dist/overlay/index.json create mode 100644 vant/dist/overlay/index.wxml create mode 100644 vant/dist/overlay/index.wxss create mode 100644 vant/dist/panel/index.d.ts create mode 100644 vant/dist/panel/index.js create mode 100644 vant/dist/panel/index.json create mode 100644 vant/dist/panel/index.wxml create mode 100644 vant/dist/panel/index.wxss create mode 100644 vant/dist/picker-column/index.d.ts create mode 100644 vant/dist/picker-column/index.js create mode 100644 vant/dist/picker-column/index.json create mode 100644 vant/dist/picker-column/index.wxml create mode 100644 vant/dist/picker-column/index.wxs create mode 100644 vant/dist/picker-column/index.wxss create mode 100644 vant/dist/picker/index.d.ts create mode 100644 vant/dist/picker/index.js create mode 100644 vant/dist/picker/index.json create mode 100644 vant/dist/picker/index.wxml create mode 100644 vant/dist/picker/index.wxs create mode 100644 vant/dist/picker/index.wxss create mode 100644 vant/dist/picker/shared.d.ts create mode 100644 vant/dist/picker/shared.js create mode 100644 vant/dist/picker/toolbar.wxml create mode 100644 vant/dist/popup/index.d.ts create mode 100644 vant/dist/popup/index.js create mode 100644 vant/dist/popup/index.json create mode 100644 vant/dist/popup/index.wxml create mode 100644 vant/dist/popup/index.wxs create mode 100644 vant/dist/popup/index.wxss create mode 100644 vant/dist/progress/index.d.ts create mode 100644 vant/dist/progress/index.js create mode 100644 vant/dist/progress/index.json create mode 100644 vant/dist/progress/index.wxml create mode 100644 vant/dist/progress/index.wxs create mode 100644 vant/dist/progress/index.wxss create mode 100644 vant/dist/radio-group/index.d.ts create mode 100644 vant/dist/radio-group/index.js create mode 100644 vant/dist/radio-group/index.json create mode 100644 vant/dist/radio-group/index.wxml create mode 100644 vant/dist/radio-group/index.wxss create mode 100644 vant/dist/radio/index.d.ts create mode 100644 vant/dist/radio/index.js create mode 100644 vant/dist/radio/index.json create mode 100644 vant/dist/radio/index.wxml create mode 100644 vant/dist/radio/index.wxss create mode 100644 vant/dist/rate/index.d.ts create mode 100644 vant/dist/rate/index.js create mode 100644 vant/dist/rate/index.json create mode 100644 vant/dist/rate/index.wxml create mode 100644 vant/dist/rate/index.wxss create mode 100644 vant/dist/row/index.d.ts create mode 100644 vant/dist/row/index.js create mode 100644 vant/dist/row/index.json create mode 100644 vant/dist/row/index.wxml create mode 100644 vant/dist/row/index.wxs create mode 100644 vant/dist/row/index.wxss create mode 100644 vant/dist/search/index.d.ts create mode 100644 vant/dist/search/index.js create mode 100644 vant/dist/search/index.json create mode 100644 vant/dist/search/index.wxml create mode 100644 vant/dist/search/index.wxss create mode 100644 vant/dist/share-sheet/index.d.ts create mode 100644 vant/dist/share-sheet/index.js create mode 100644 vant/dist/share-sheet/index.json create mode 100644 vant/dist/share-sheet/index.wxml create mode 100644 vant/dist/share-sheet/index.wxs create mode 100644 vant/dist/share-sheet/index.wxss create mode 100644 vant/dist/share-sheet/options.d.ts create mode 100644 vant/dist/share-sheet/options.js create mode 100644 vant/dist/share-sheet/options.json create mode 100644 vant/dist/share-sheet/options.wxml create mode 100644 vant/dist/share-sheet/options.wxs create mode 100644 vant/dist/share-sheet/options.wxss create mode 100644 vant/dist/sidebar-item/index.d.ts create mode 100644 vant/dist/sidebar-item/index.js create mode 100644 vant/dist/sidebar-item/index.json create mode 100644 vant/dist/sidebar-item/index.wxml create mode 100644 vant/dist/sidebar-item/index.wxss create mode 100644 vant/dist/sidebar/index.d.ts create mode 100644 vant/dist/sidebar/index.js create mode 100644 vant/dist/sidebar/index.json create mode 100644 vant/dist/sidebar/index.wxml create mode 100644 vant/dist/sidebar/index.wxss create mode 100644 vant/dist/skeleton/index.d.ts create mode 100644 vant/dist/skeleton/index.js create mode 100644 vant/dist/skeleton/index.json create mode 100644 vant/dist/skeleton/index.wxml create mode 100644 vant/dist/skeleton/index.wxss create mode 100644 vant/dist/slider/index.d.ts create mode 100644 vant/dist/slider/index.js create mode 100644 vant/dist/slider/index.json create mode 100644 vant/dist/slider/index.wxml create mode 100644 vant/dist/slider/index.wxs create mode 100644 vant/dist/slider/index.wxss create mode 100644 vant/dist/stepper/index.d.ts create mode 100644 vant/dist/stepper/index.js create mode 100644 vant/dist/stepper/index.json create mode 100644 vant/dist/stepper/index.wxml create mode 100644 vant/dist/stepper/index.wxs create mode 100644 vant/dist/stepper/index.wxss create mode 100644 vant/dist/steps/index.d.ts create mode 100644 vant/dist/steps/index.js create mode 100644 vant/dist/steps/index.json create mode 100644 vant/dist/steps/index.wxml create mode 100644 vant/dist/steps/index.wxss create mode 100644 vant/dist/sticky/index.d.ts create mode 100644 vant/dist/sticky/index.js create mode 100644 vant/dist/sticky/index.json create mode 100644 vant/dist/sticky/index.wxml create mode 100644 vant/dist/sticky/index.wxs create mode 100644 vant/dist/sticky/index.wxss create mode 100644 vant/dist/submit-bar/index.d.ts create mode 100644 vant/dist/submit-bar/index.js create mode 100644 vant/dist/submit-bar/index.json create mode 100644 vant/dist/submit-bar/index.wxml create mode 100644 vant/dist/submit-bar/index.wxss create mode 100644 vant/dist/swipe-cell/index.d.ts create mode 100644 vant/dist/swipe-cell/index.js create mode 100644 vant/dist/swipe-cell/index.json create mode 100644 vant/dist/swipe-cell/index.wxml create mode 100644 vant/dist/swipe-cell/index.wxss create mode 100644 vant/dist/switch/index.d.ts create mode 100644 vant/dist/switch/index.js create mode 100644 vant/dist/switch/index.json create mode 100644 vant/dist/switch/index.wxml create mode 100644 vant/dist/switch/index.wxs create mode 100644 vant/dist/switch/index.wxss create mode 100644 vant/dist/tab/index.d.ts create mode 100644 vant/dist/tab/index.js create mode 100644 vant/dist/tab/index.json create mode 100644 vant/dist/tab/index.wxml create mode 100644 vant/dist/tab/index.wxss create mode 100644 vant/dist/tabbar-item/index.d.ts create mode 100644 vant/dist/tabbar-item/index.js create mode 100644 vant/dist/tabbar-item/index.json create mode 100644 vant/dist/tabbar-item/index.wxml create mode 100644 vant/dist/tabbar-item/index.wxss create mode 100644 vant/dist/tabbar/index.d.ts create mode 100644 vant/dist/tabbar/index.js create mode 100644 vant/dist/tabbar/index.json create mode 100644 vant/dist/tabbar/index.wxml create mode 100644 vant/dist/tabbar/index.wxss create mode 100644 vant/dist/tabs/index.d.ts create mode 100644 vant/dist/tabs/index.js create mode 100644 vant/dist/tabs/index.json create mode 100644 vant/dist/tabs/index.wxml create mode 100644 vant/dist/tabs/index.wxs create mode 100644 vant/dist/tabs/index.wxss create mode 100644 vant/dist/tag/index.d.ts create mode 100644 vant/dist/tag/index.js create mode 100644 vant/dist/tag/index.json create mode 100644 vant/dist/tag/index.wxml create mode 100644 vant/dist/tag/index.wxs create mode 100644 vant/dist/tag/index.wxss create mode 100644 vant/dist/toast/index.d.ts create mode 100644 vant/dist/toast/index.js create mode 100644 vant/dist/toast/index.json create mode 100644 vant/dist/toast/index.wxml create mode 100644 vant/dist/toast/index.wxss create mode 100644 vant/dist/toast/toast.d.ts create mode 100644 vant/dist/toast/toast.js create mode 100644 vant/dist/transition/index.d.ts create mode 100644 vant/dist/transition/index.js create mode 100644 vant/dist/transition/index.json create mode 100644 vant/dist/transition/index.wxml create mode 100644 vant/dist/transition/index.wxs create mode 100644 vant/dist/transition/index.wxss create mode 100644 vant/dist/tree-select/index.d.ts create mode 100644 vant/dist/tree-select/index.js create mode 100644 vant/dist/tree-select/index.json create mode 100644 vant/dist/tree-select/index.wxml create mode 100644 vant/dist/tree-select/index.wxs create mode 100644 vant/dist/tree-select/index.wxss create mode 100644 vant/dist/uploader/index.d.ts create mode 100644 vant/dist/uploader/index.js create mode 100644 vant/dist/uploader/index.json create mode 100644 vant/dist/uploader/index.wxml create mode 100644 vant/dist/uploader/index.wxs create mode 100644 vant/dist/uploader/index.wxss create mode 100644 vant/dist/uploader/shared.d.ts create mode 100644 vant/dist/uploader/shared.js create mode 100644 vant/dist/uploader/utils.d.ts create mode 100644 vant/dist/uploader/utils.js create mode 100644 vant/dist/wxs/add-unit.wxs create mode 100644 vant/dist/wxs/array.wxs create mode 100644 vant/dist/wxs/bem.wxs create mode 100644 vant/dist/wxs/memoize.wxs create mode 100644 vant/dist/wxs/object.wxs create mode 100644 vant/dist/wxs/style.wxs create mode 100644 vant/dist/wxs/utils.wxs diff --git a/app.js b/app.js new file mode 100644 index 0000000..49088b3 --- /dev/null +++ b/app.js @@ -0,0 +1,27 @@ +// app.js +App({ + onLaunch() { + //设置状态栏 + wx.getSystemInfo({ + success: e => { + this.globalData.StatusBar = e.statusBarHeight; + let capsule = wx.getMenuButtonBoundingClientRect(); + if (capsule) { + this.globalData.Custom = capsule; + this.globalData.CustomBar = capsule.bottom + capsule.top - e.statusBarHeight; + } else { + this.globalData.CustomBar = e.statusBarHeight + 50; + } + } +}) + // 登录 + wx.login({ + success: res => { + // 发送 res.code 到后台换取 openId, sessionKey, unionId + } + }) + }, + globalData: { + userInfo: null + } +}) diff --git a/app.json b/app.json new file mode 100644 index 0000000..5d86d13 --- /dev/null +++ b/app.json @@ -0,0 +1,35 @@ +{ + "pages": [ + "pages/index/index", + "pages/institutions/institutionslist", + "pages/results/resultslist", + "pages/card/cardlist", + "pages/branches/brancheslist", + "pages/notices/noticeslist", + "pages/answer/answerlist", + "pages/notices/noticedetail", + "pages/institutions/institutionsdetail", + "pages/results/resultsdetail", + "pages/card/carddetail", + "pages/index/mineinfo", + "pages/branches/branchesdetail" + ], + "window": { + "backgroundTextStyle": "dark", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "名片", + "navigationBarTextStyle": "black", + "navigationStyle": "custom" + }, + "style": "v2", + "sitemapLocation": "sitemap.json", + "usingComponents": { + "cu-custom": "/components/cuicustom/cu-custom", + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index" + } +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..fdfd149 --- /dev/null +++ b/app.wxss @@ -0,0 +1,253 @@ +/**app.wxss**/ +@import "/class/main.wxss"; +@import "/class/icon.wxss"; + +page { + background-color: #fafafa; + width: 100%; +} + +.list { + width: 100%; + display: flex; + flex-direction: column; + margin-top: 30rpx; +} + +.item { + display: flex; + flex-direction: row; + padding: 10rpx; + align-items: center; + flex-wrap: nowrap; + margin-top: 20rpx; + border-radius: 10rpx; + box-shadow: 1px 1px 1px #f7f5f5; + +} + +.content { + width: 80%; + display: flex; + flex-direction: column; + justify-content: space-around; + min-height: 64rpx; + margin-left: 10rpx; +} + +.content.text-cut { + max-width: 300rpx; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.bottom-action { + width: 100%; + display: flex; + flex-direction: row; + justify-content: space-between; + padding-right: 10rpx; +} + +.content-view { + width: 100%; + padding: 10rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + align-self: center; +} + +.content-detail { + width: 98%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + align-self: center; + background-color: white; + border-radius: 10rpx; + padding: 10rpx; +} + +.notice-title { + width: 100%; + text-align: center; +} + +.table-list { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + flex-direction: column; +} + +.table-title { + display: flex; + width: 96%; + flex-direction: row; + padding-top: 20rpx; + padding-bottom: 20rpx; + border-radius: 20rpx; +} + +.table-title-border { + display: flex; + width: 96%; + flex-direction: row; + border-radius: 5rpx; + border: 1rpx solid blue; +} + +.table-item { + display: flex; + width: 96%; + flex-direction: row; + border-radius: 5rpx; + min-height: 75rpx; +} + +.table-notice { + display: flex; + width: 96%; + flex-direction: column; + align-items: center; + justify-content: center; + border-radius: 5rpx; + min-height: 75rpx; + padding: 5rpx; +} + +.table-title-nor { + display: flex; + width: 96%; + flex-direction: row; + padding-top: 20rpx; + padding-bottom: 20rpx; + border-radius: 3rpx; +} + +.table-title-item { + flex: 1.1; + text-align: center; + align-items: center; + font-size: 24rpx; + justify-content: center; + align-self: center; +} + +.table-item-title-1 { + flex: 1.3; + text-align: center; + align-items: center; + font-size: 24rpx; + justify-content: center; + align-self: center; +} + +.table-item-title-4 { + flex: 0.4; + text-align: center; + font-size: 24rpx; + align-items: center; + justify-content: center; + align-self: center; +} + +.table-item-title-3 { + flex: 0.3; + text-align: center; + align-items: center; + font-size: 24rpx; + justify-content: center; + align-self: center; +} + +.table-item-title-2 { + flex: 0.2; + text-align: center; + align-items: center; + font-size: 24rpx; + justify-content: center; + align-self: center; +} + +.table-item-content-item { + width: 100%; + flex: 1; + display: flex; + flex-direction: row; + text-align: center; + align-items: center; + justify-content: center; + align-self: center; + min-height: 75rpx; +} + +.border-top { + border-top-style: solid; + border-top-width: 1rpx; + border-top-color: blue; +} + +.border-bottom { + border-bottom-style: solid; + border-bottom-width: 1rpx; + border-bottom-color: blue; +} + +.border-left { + border-left-style: solid; + border-left-width: 1rpx; + border-left-color: blue; +} + +.border-right { + border-right-style: solid; + border-right-width: 1rpx; + border-right-color: blue; +} + +.table-item-content-item-title { + flex: 0.7; + text-align: center; + font-size: 24rpx; + align-items: center; + justify-content: center; + align-self: center; +} + +.table-item-content-item-title-4 { + flex: 0.4; + text-align: center; + font-size: 24rpx; + align-items: center; + justify-content: center; + align-self: center; +} + +.table-item-content-item-content { + flex: 1.7; + text-align: center; + align-items: center; + justify-content: center; + align-self: center; + border-left-width: 1rpx; + border-left-color: blue; + font-size: 24rpx; + border-left-style: solid; +} + + +.table-item-content { + display: flex; + flex: 1.8; + text-align: center; + flex-direction: column; + align-items: center; + justify-content: center; + align-self: center; +} \ No newline at end of file diff --git a/class/icon.wxss b/class/icon.wxss new file mode 100644 index 0000000..e19a7bb --- /dev/null +++ b/class/icon.wxss @@ -0,0 +1,1226 @@ +@keyframes cuIcon-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +.iconfont-spin { + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: inline-block; +} + +.iconfont-pulse { + -webkit-animation: cuIcon-spin 1s infinite steps(8); + animation: cuIcon-spin 1s infinite steps(8); + display: inline-block; +} + +[class*="cuIcon-"] { + font-family: "cuIcon"; + font-size: inherit; + font-style: normal; +} + +@font-face { + font-family: "cuIcon"; + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831'); + /* IE9*/ + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831#iefix') format('embedded-opentype'), + /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.ttf?t=1545239985831') format('truetype'), + /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.svg?t=1545239985831#iconfont') format('svg'); + /* iOS 4.1- */ +} + +.cuIcon-appreciate:before { + content: "\e644"; +} + +.cuIcon-check:before { + content: "\e645"; +} + +.cuIcon-close:before { + content: "\e646"; +} + +.cuIcon-edit:before { + content: "\e649"; +} + +.cuIcon-emoji:before { + content: "\e64a"; +} + +.cuIcon-favorfill:before { + content: "\e64b"; +} + +.cuIcon-favor:before { + content: "\e64c"; +} + +.cuIcon-loading:before { + content: "\e64f"; +} + +.cuIcon-locationfill:before { + content: "\e650"; +} + +.cuIcon-location:before { + content: "\e651"; +} + +.cuIcon-phone:before { + content: "\e652"; +} + +.cuIcon-roundcheckfill:before { + content: "\e656"; +} + +.cuIcon-roundcheck:before { + content: "\e657"; +} + +.cuIcon-roundclosefill:before { + content: "\e658"; +} + +.cuIcon-roundclose:before { + content: "\e659"; +} + +.cuIcon-roundrightfill:before { + content: "\e65a"; +} + +.cuIcon-roundright:before { + content: "\e65b"; +} + +.cuIcon-search:before { + content: "\e65c"; +} + +.cuIcon-taxi:before { + content: "\e65d"; +} + +.cuIcon-timefill:before { + content: "\e65e"; +} + +.cuIcon-time:before { + content: "\e65f"; +} + +.cuIcon-unfold:before { + content: "\e661"; +} + +.cuIcon-warnfill:before { + content: "\e662"; +} + +.cuIcon-warn:before { + content: "\e663"; +} + +.cuIcon-camerafill:before { + content: "\e664"; +} + +.cuIcon-camera:before { + content: "\e665"; +} + +.cuIcon-commentfill:before { + content: "\e666"; +} + +.cuIcon-comment:before { + content: "\e667"; +} + +.cuIcon-likefill:before { + content: "\e668"; +} + +.cuIcon-like:before { + content: "\e669"; +} + +.cuIcon-notificationfill:before { + content: "\e66a"; +} + +.cuIcon-notification:before { + content: "\e66b"; +} + +.cuIcon-order:before { + content: "\e66c"; +} + +.cuIcon-samefill:before { + content: "\e66d"; +} + +.cuIcon-same:before { + content: "\e66e"; +} + +.cuIcon-deliver:before { + content: "\e671"; +} + +.cuIcon-evaluate:before { + content: "\e672"; +} + +.cuIcon-pay:before { + content: "\e673"; +} + +.cuIcon-send:before { + content: "\e675"; +} + +.cuIcon-shop:before { + content: "\e676"; +} + +.cuIcon-ticket:before { + content: "\e677"; +} + +.cuIcon-back:before { + content: "\e679"; +} + +.cuIcon-cascades:before { + content: "\e67c"; +} + +.cuIcon-discover:before { + content: "\e67e"; +} + +.cuIcon-list:before { + content: "\e682"; +} + +.cuIcon-more:before { + content: "\e684"; +} + +.cuIcon-scan:before { + content: "\e689"; +} + +.cuIcon-settings:before { + content: "\e68a"; +} + +.cuIcon-questionfill:before { + content: "\e690"; +} + +.cuIcon-question:before { + content: "\e691"; +} + +.cuIcon-shopfill:before { + content: "\e697"; +} + +.cuIcon-form:before { + content: "\e699"; +} + +.cuIcon-pic:before { + content: "\e69b"; +} + +.cuIcon-filter:before { + content: "\e69c"; +} + +.cuIcon-footprint:before { + content: "\e69d"; +} + +.cuIcon-top:before { + content: "\e69e"; +} + +.cuIcon-pulldown:before { + content: "\e69f"; +} + +.cuIcon-pullup:before { + content: "\e6a0"; +} + +.cuIcon-right:before { + content: "\e6a3"; +} + +.cuIcon-refresh:before { + content: "\e6a4"; +} + +.cuIcon-moreandroid:before { + content: "\e6a5"; +} + +.cuIcon-deletefill:before { + content: "\e6a6"; +} + +.cuIcon-refund:before { + content: "\e6ac"; +} + +.cuIcon-cart:before { + content: "\e6af"; +} + +.cuIcon-qrcode:before { + content: "\e6b0"; +} + +.cuIcon-remind:before { + content: "\e6b2"; +} + +.cuIcon-delete:before { + content: "\e6b4"; +} + +.cuIcon-profile:before { + content: "\e6b7"; +} + +.cuIcon-home:before { + content: "\e6b8"; +} + +.cuIcon-cartfill:before { + content: "\e6b9"; +} + +.cuIcon-discoverfill:before { + content: "\e6ba"; +} + +.cuIcon-homefill:before { + content: "\e6bb"; +} + +.cuIcon-message:before { + content: "\e6bc"; +} + +.cuIcon-addressbook:before { + content: "\e6bd"; +} + +.cuIcon-link:before { + content: "\e6bf"; +} + +.cuIcon-lock:before { + content: "\e6c0"; +} + +.cuIcon-unlock:before { + content: "\e6c2"; +} + +.cuIcon-vip:before { + content: "\e6c3"; +} + +.cuIcon-weibo:before { + content: "\e6c4"; +} + +.cuIcon-activity:before { + content: "\e6c5"; +} + +.cuIcon-friendaddfill:before { + content: "\e6c9"; +} + +.cuIcon-friendadd:before { + content: "\e6ca"; +} + +.cuIcon-friendfamous:before { + content: "\e6cb"; +} + +.cuIcon-friend:before { + content: "\e6cc"; +} + +.cuIcon-goods:before { + content: "\e6cd"; +} + +.cuIcon-selection:before { + content: "\e6ce"; +} + +.cuIcon-explore:before { + content: "\e6d2"; +} + +.cuIcon-present:before { + content: "\e6d3"; +} + +.cuIcon-squarecheckfill:before { + content: "\e6d4"; +} + +.cuIcon-square:before { + content: "\e6d5"; +} + +.cuIcon-squarecheck:before { + content: "\e6d6"; +} + +.cuIcon-round:before { + content: "\e6d7"; +} + +.cuIcon-roundaddfill:before { + content: "\e6d8"; +} + +.cuIcon-roundadd:before { + content: "\e6d9"; +} + +.cuIcon-add:before { + content: "\e6da"; +} + +.cuIcon-notificationforbidfill:before { + content: "\e6db"; +} + +.cuIcon-explorefill:before { + content: "\e6dd"; +} + +.cuIcon-fold:before { + content: "\e6de"; +} + +.cuIcon-game:before { + content: "\e6df"; +} + +.cuIcon-redpacket:before { + content: "\e6e0"; +} + +.cuIcon-selectionfill:before { + content: "\e6e1"; +} + +.cuIcon-similar:before { + content: "\e6e2"; +} + +.cuIcon-appreciatefill:before { + content: "\e6e3"; +} + +.cuIcon-infofill:before { + content: "\e6e4"; +} + +.cuIcon-info:before { + content: "\e6e5"; +} + +.cuIcon-forwardfill:before { + content: "\e6ea"; +} + +.cuIcon-forward:before { + content: "\e6eb"; +} + +.cuIcon-rechargefill:before { + content: "\e6ec"; +} + +.cuIcon-recharge:before { + content: "\e6ed"; +} + +.cuIcon-vipcard:before { + content: "\e6ee"; +} + +.cuIcon-voice:before { + content: "\e6ef"; +} + +.cuIcon-voicefill:before { + content: "\e6f0"; +} + +.cuIcon-friendfavor:before { + content: "\e6f1"; +} + +.cuIcon-wifi:before { + content: "\e6f2"; +} + +.cuIcon-share:before { + content: "\e6f3"; +} + +.cuIcon-wefill:before { + content: "\e6f4"; +} + +.cuIcon-we:before { + content: "\e6f5"; +} + +.cuIcon-lightauto:before { + content: "\e6f6"; +} + +.cuIcon-lightforbid:before { + content: "\e6f7"; +} + +.cuIcon-lightfill:before { + content: "\e6f8"; +} + +.cuIcon-camerarotate:before { + content: "\e6f9"; +} + +.cuIcon-light:before { + content: "\e6fa"; +} + +.cuIcon-barcode:before { + content: "\e6fb"; +} + +.cuIcon-flashlightclose:before { + content: "\e6fc"; +} + +.cuIcon-flashlightopen:before { + content: "\e6fd"; +} + +.cuIcon-searchlist:before { + content: "\e6fe"; +} + +.cuIcon-service:before { + content: "\e6ff"; +} + +.cuIcon-sort:before { + content: "\e700"; +} + +.cuIcon-down:before { + content: "\e703"; +} + +.cuIcon-mobile:before { + content: "\e704"; +} + +.cuIcon-mobilefill:before { + content: "\e705"; +} + +.cuIcon-copy:before { + content: "\e706"; +} + +.cuIcon-countdownfill:before { + content: "\e707"; +} + +.cuIcon-countdown:before { + content: "\e708"; +} + +.cuIcon-noticefill:before { + content: "\e709"; +} + +.cuIcon-notice:before { + content: "\e70a"; +} + +.cuIcon-upstagefill:before { + content: "\e70e"; +} + +.cuIcon-upstage:before { + content: "\e70f"; +} + +.cuIcon-babyfill:before { + content: "\e710"; +} + +.cuIcon-baby:before { + content: "\e711"; +} + +.cuIcon-brandfill:before { + content: "\e712"; +} + +.cuIcon-brand:before { + content: "\e713"; +} + +.cuIcon-choicenessfill:before { + content: "\e714"; +} + +.cuIcon-choiceness:before { + content: "\e715"; +} + +.cuIcon-clothesfill:before { + content: "\e716"; +} + +.cuIcon-clothes:before { + content: "\e717"; +} + +.cuIcon-creativefill:before { + content: "\e718"; +} + +.cuIcon-creative:before { + content: "\e719"; +} + +.cuIcon-female:before { + content: "\e71a"; +} + +.cuIcon-keyboard:before { + content: "\e71b"; +} + +.cuIcon-male:before { + content: "\e71c"; +} + +.cuIcon-newfill:before { + content: "\e71d"; +} + +.cuIcon-new:before { + content: "\e71e"; +} + +.cuIcon-pullleft:before { + content: "\e71f"; +} + +.cuIcon-pullright:before { + content: "\e720"; +} + +.cuIcon-rankfill:before { + content: "\e721"; +} + +.cuIcon-rank:before { + content: "\e722"; +} + +.cuIcon-bad:before { + content: "\e723"; +} + +.cuIcon-cameraadd:before { + content: "\e724"; +} + +.cuIcon-focus:before { + content: "\e725"; +} + +.cuIcon-friendfill:before { + content: "\e726"; +} + +.cuIcon-cameraaddfill:before { + content: "\e727"; +} + +.cuIcon-apps:before { + content: "\e729"; +} + +.cuIcon-paintfill:before { + content: "\e72a"; +} + +.cuIcon-paint:before { + content: "\e72b"; +} + +.cuIcon-picfill:before { + content: "\e72c"; +} + +.cuIcon-refresharrow:before { + content: "\e72d"; +} + +.cuIcon-colorlens:before { + content: "\e6e6"; +} + +.cuIcon-markfill:before { + content: "\e730"; +} + +.cuIcon-mark:before { + content: "\e731"; +} + +.cuIcon-presentfill:before { + content: "\e732"; +} + +.cuIcon-repeal:before { + content: "\e733"; +} + +.cuIcon-album:before { + content: "\e734"; +} + +.cuIcon-peoplefill:before { + content: "\e735"; +} + +.cuIcon-people:before { + content: "\e736"; +} + +.cuIcon-servicefill:before { + content: "\e737"; +} + +.cuIcon-repair:before { + content: "\e738"; +} + +.cuIcon-file:before { + content: "\e739"; +} + +.cuIcon-repairfill:before { + content: "\e73a"; +} + +.cuIcon-taoxiaopu:before { + content: "\e73b"; +} + +.cuIcon-weixin:before { + content: "\e612"; +} + +.cuIcon-attentionfill:before { + content: "\e73c"; +} + +.cuIcon-attention:before { + content: "\e73d"; +} + +.cuIcon-commandfill:before { + content: "\e73e"; +} + +.cuIcon-command:before { + content: "\e73f"; +} + +.cuIcon-communityfill:before { + content: "\e740"; +} + +.cuIcon-community:before { + content: "\e741"; +} + +.cuIcon-read:before { + content: "\e742"; +} + +.cuIcon-calendar:before { + content: "\e74a"; +} + +.cuIcon-cut:before { + content: "\e74b"; +} + +.cuIcon-magic:before { + content: "\e74c"; +} + +.cuIcon-backwardfill:before { + content: "\e74d"; +} + +.cuIcon-playfill:before { + content: "\e74f"; +} + +.cuIcon-stop:before { + content: "\e750"; +} + +.cuIcon-tagfill:before { + content: "\e751"; +} + +.cuIcon-tag:before { + content: "\e752"; +} + +.cuIcon-group:before { + content: "\e753"; +} + +.cuIcon-all:before { + content: "\e755"; +} + +.cuIcon-backdelete:before { + content: "\e756"; +} + +.cuIcon-hotfill:before { + content: "\e757"; +} + +.cuIcon-hot:before { + content: "\e758"; +} + +.cuIcon-post:before { + content: "\e759"; +} + +.cuIcon-radiobox:before { + content: "\e75b"; +} + +.cuIcon-rounddown:before { + content: "\e75c"; +} + +.cuIcon-upload:before { + content: "\e75d"; +} + +.cuIcon-writefill:before { + content: "\e760"; +} + +.cuIcon-write:before { + content: "\e761"; +} + +.cuIcon-radioboxfill:before { + content: "\e763"; +} + +.cuIcon-punch:before { + content: "\e764"; +} + +.cuIcon-shake:before { + content: "\e765"; +} + +.cuIcon-move:before { + content: "\e768"; +} + +.cuIcon-safe:before { + content: "\e769"; +} + +.cuIcon-activityfill:before { + content: "\e775"; +} + +.cuIcon-crownfill:before { + content: "\e776"; +} + +.cuIcon-crown:before { + content: "\e777"; +} + +.cuIcon-goodsfill:before { + content: "\e778"; +} + +.cuIcon-messagefill:before { + content: "\e779"; +} + +.cuIcon-profilefill:before { + content: "\e77a"; +} + +.cuIcon-sound:before { + content: "\e77b"; +} + +.cuIcon-sponsorfill:before { + content: "\e77c"; +} + +.cuIcon-sponsor:before { + content: "\e77d"; +} + +.cuIcon-upblock:before { + content: "\e77e"; +} + +.cuIcon-weblock:before { + content: "\e77f"; +} + +.cuIcon-weunblock:before { + content: "\e780"; +} + +.cuIcon-my:before { + content: "\e78b"; +} + +.cuIcon-myfill:before { + content: "\e78c"; +} + +.cuIcon-emojifill:before { + content: "\e78d"; +} + +.cuIcon-emojiflashfill:before { + content: "\e78e"; +} + +.cuIcon-flashbuyfill:before { + content: "\e78f"; +} + +.cuIcon-text:before { + content: "\e791"; +} + +.cuIcon-goodsfavor:before { + content: "\e794"; +} + +.cuIcon-musicfill:before { + content: "\e795"; +} + +.cuIcon-musicforbidfill:before { + content: "\e796"; +} + +.cuIcon-card:before { + content: "\e624"; +} + +.cuIcon-triangledownfill:before { + content: "\e79b"; +} + +.cuIcon-triangleupfill:before { + content: "\e79c"; +} + +.cuIcon-roundleftfill-copy:before { + content: "\e79e"; +} + +.cuIcon-font:before { + content: "\e76a"; +} + +.cuIcon-title:before { + content: "\e82f"; +} + +.cuIcon-recordfill:before { + content: "\e7a4"; +} + +.cuIcon-record:before { + content: "\e7a6"; +} + +.cuIcon-cardboardfill:before { + content: "\e7a9"; +} + +.cuIcon-cardboard:before { + content: "\e7aa"; +} + +.cuIcon-formfill:before { + content: "\e7ab"; +} + +.cuIcon-coin:before { + content: "\e7ac"; +} + +.cuIcon-cardboardforbid:before { + content: "\e7af"; +} + +.cuIcon-circlefill:before { + content: "\e7b0"; +} + +.cuIcon-circle:before { + content: "\e7b1"; +} + +.cuIcon-attentionforbid:before { + content: "\e7b2"; +} + +.cuIcon-attentionforbidfill:before { + content: "\e7b3"; +} + +.cuIcon-attentionfavorfill:before { + content: "\e7b4"; +} + +.cuIcon-attentionfavor:before { + content: "\e7b5"; +} + +.cuIcon-titles:before { + content: "\e701"; +} + +.cuIcon-icloading:before { + content: "\e67a"; +} + +.cuIcon-full:before { + content: "\e7bc"; +} + +.cuIcon-mail:before { + content: "\e7bd"; +} + +.cuIcon-peoplelist:before { + content: "\e7be"; +} + +.cuIcon-goodsnewfill:before { + content: "\e7bf"; +} + +.cuIcon-goodsnew:before { + content: "\e7c0"; +} + +.cuIcon-medalfill:before { + content: "\e7c1"; +} + +.cuIcon-medal:before { + content: "\e7c2"; +} + +.cuIcon-newsfill:before { + content: "\e7c3"; +} + +.cuIcon-newshotfill:before { + content: "\e7c4"; +} + +.cuIcon-newshot:before { + content: "\e7c5"; +} + +.cuIcon-news:before { + content: "\e7c6"; +} + +.cuIcon-videofill:before { + content: "\e7c7"; +} + +.cuIcon-video:before { + content: "\e7c8"; +} + +.cuIcon-exit:before { + content: "\e7cb"; +} + +.cuIcon-skinfill:before { + content: "\e7cc"; +} + +.cuIcon-skin:before { + content: "\e7cd"; +} + +.cuIcon-moneybagfill:before { + content: "\e7ce"; +} + +.cuIcon-usefullfill:before { + content: "\e7cf"; +} + +.cuIcon-usefull:before { + content: "\e7d0"; +} + +.cuIcon-moneybag:before { + content: "\e7d1"; +} + +.cuIcon-redpacket_fill:before { + content: "\e7d3"; +} + +.cuIcon-subscription:before { + content: "\e7d4"; +} + +.cuIcon-loading1:before { + content: "\e633"; +} + +.cuIcon-github:before { + content: "\e692"; +} + +.cuIcon-global:before { + content: "\e7eb"; +} + +.cuIcon-settingsfill:before { + content: "\e6ab"; +} + +.cuIcon-back_android:before { + content: "\e7ed"; +} + +.cuIcon-expressman:before { + content: "\e7ef"; +} + +.cuIcon-evaluate_fill:before { + content: "\e7f0"; +} + +.cuIcon-group_fill:before { + content: "\e7f5"; +} + +.cuIcon-play_forward_fill:before { + content: "\e7f6"; +} + +.cuIcon-deliver_fill:before { + content: "\e7f7"; +} + +.cuIcon-notice_forbid_fill:before { + content: "\e7f8"; +} + +.cuIcon-fork:before { + content: "\e60c"; +} + +.cuIcon-pick:before { + content: "\e7fa"; +} + +.cuIcon-wenzi:before { + content: "\e6a7"; +} + +.cuIcon-ellipse:before { + content: "\e600"; +} + +.cuIcon-qr_code:before { + content: "\e61b"; +} + +.cuIcon-dianhua:before { + content: "\e64d"; +} + +.cuIcon-icon:before { + content: "\e602"; +} + +.cuIcon-loading2:before { + content: "\e7f1"; +} + +.cuIcon-btn:before { + content: "\e601"; +} diff --git a/class/main.wxss b/class/main.wxss new file mode 100644 index 0000000..5cef64d --- /dev/null +++ b/class/main.wxss @@ -0,0 +1,4173 @@ +/* + ColorUi for MP-weixin v2.1.4 | by 文晓港 2019年4月25日19:15:42 + 仅供学习交流,如作它用所承受的法律责任一概与作者无关 + 使用ColorUi开发扩展与插件时,请注明基于ColorUi开发 + + (QQ交流群:240787041) +*/ + +/* ================== + 初始化 + ==================== */ +page { + /* Color 可以自定义相关配色 */ + /* var属性兼容性 --> https://www.caniuse.com/#feat=css-variables */ + /* 标准色 */ + --red: #e54d42; + --orange: #f37b1d; + --yellow: #fbbd08; + --olive: #8dc63f; + --green: #39b54a; + --cyan: #1cbbb4; + --blue: #0081ff; + --darkBlue: #1979D7; + --purple: #6739b6; + --mauve: #9c26b0; + --pink: #e03997; + --brown: #a5673f; + --grey: #8799a3; + --black: #333333; + --darkGray: #666666; + --gray: #aaaaaa; + --ghostWhite: #f1f1f1; + --white: #ffffff; + /* 浅色 */ + --redLight: #fadbd9; + --orangeLight: #fde6d2; + --yellowLight: #fef2ce; + --oliveLight: #e8f4d9; + --greenLight: #d7f0db; + --cyanLight: #d2f1f0; + --blueLight: #cce6ff; + --purpleLight: #e1d7f0; + --mauveLight: #ebd4ef; + --pinkLight: #f9d7ea; + --brownLight: #ede1d9; + --greyLight: #e7ebed; + /* 渐变色 */ + --gradualRed: linear-gradient(45deg, #f43f3b, #ec008c); + --gradualOrange: linear-gradient(45deg, #ff9700, #ed1c24); + --gradualGreen: linear-gradient(45deg, #39b54a, #8dc63f); + --gradualPurple: linear-gradient(45deg, #9000ff, #5e00ff); + --gradualPink: linear-gradient(45deg, #ec008c, #6739b6); + --gradualBlue: linear-gradient(45deg, #0081ff, #1cbbb4); + --gradualWhite: linear-gradient(45deg, #ffffff, #f8f8f8); + --gradualGray: linear-gradient(85deg, #FAF9F9, #F5F2F2); + /* 阴影透明色 */ + --ShadowSize: 6rpx 6rpx 8rpx; + --redShadow: rgba(204, 69, 59, 0.2); + --orangeShadow: rgba(217, 109, 26, 0.2); + --yellowShadow: rgba(224, 170, 7, 0.2); + --oliveShadow: rgba(124, 173, 55, 0.2); + --greenShadow: rgba(48, 156, 63, 0.2); + --cyanShadow: rgba(28, 187, 180, 0.2); + --blueShadow: rgba(0, 102, 204, 0.2); + --purpleShadow: rgba(88, 48, 156, 0.2); + --mauveShadow: rgba(133, 33, 150, 0.2); + --pinkShadow: rgba(199, 50, 134, 0.2); + --brownShadow: rgba(140, 88, 53, 0.2); + --greyShadow: rgba(114, 130, 138, 0.2); + --grayShadow: rgba(114, 130, 138, 0.2); + --blackShadow: rgba(26, 26, 26, 0.2); + + background-color: var(--ghostWhite); + font-size: 28rpx; + color: var(--black); + font-family: Helvetica Neue, Helvetica, sans-serif; +} + +view, +scroll-view, +swiper, +button, +input, +textarea, +label, +navigator, +image { + box-sizing: border-box; +} + +.round { + border-radius: 5000rpx; +} + +.radius { + border-radius: 6rpx; +} + +/* ================== + 图片 + ==================== */ + +image { + max-width: 100%; + display: inline-block; + position: relative; + z-index: 0; +} + +image.loading::before { + content: ""; + background-color: #f5f5f5; + display: block; + position: absolute; + width: 100%; + height: 100%; + z-index: -2; +} + +image.loading::after { + content: "\e7f1"; + font-family: "cuIcon"; + position: absolute; + top: 0; + left: 0; + width: 32rpx; + height: 32rpx; + line-height: 32rpx; + right: 0; + bottom: 0; + z-index: -1; + font-size: 32rpx; + margin: auto; + color: #ccc; + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: block; +} + +.response { + width: 100%; +} + +/* ================== + 开关 + ==================== */ + +switch, +checkbox, +radio { + position: relative; +} + +switch::after, +switch::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: var(--white) !important; + top: 0%; + left: 0rpx; + font-size: 26rpx; + line-height: 26px; + width: 50%; + text-align: center; + pointer-events: none; + transform: scale(0, 0); + transition: all 0.3s ease-in-out 0s; + z-index: 9; + bottom: 0; + height: 26px; + margin: auto; +} + +switch::before { + content: "\e646"; + right: 0; + transform: scale(1, 1); + left: auto; +} + +switch[checked]::after, +switch.checked::after { + transform: scale(1, 1); +} + +switch[checked]::before, +switch.checked::before { + transform: scale(0, 0); +} + +switch[checked]::before { + transform: scale(0, 0); +} + +radio::before, +checkbox::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: var(--white) !important; + top: 50%; + margin-top: -8px; + right: 5px; + font-size: 32rpx; + line-height: 16px; + pointer-events: none; + transform: scale(1, 1); + transition: all 0.3s ease-in-out 0s; + z-index: 9; +} + +radio .wx-radio-input, +checkbox .wx-checkbox-input { + margin: 0; + width: 20px; + height: 20px; +} + +checkbox.round .wx-checkbox-input { + border-radius: 100rpx; +} + +switch .wx-switch-input { + border: none; + padding: 0 24px; + width: 48px; + height: 26px; + margin: 0; + border-radius: 100rpx; +} + +switch .wx-switch-input:not([class*="bg-"]) { + background: var(--grey) !important; +} + +switch .wx-switch-input::after { + margin: auto; + width: 26px; + height: 26px; + border-radius: 100rpx; + left: 0rpx; + top: 0rpx; + bottom: 0rpx; + position: absolute; + transform: scale(0.9, 0.9); + transition: all 0.1s ease-in-out 0s; +} + +switch .wx-switch-input.wx-switch-input-checked::after { + margin: auto; + left: 22px; + box-shadow: none; + transform: scale(0.9, 0.9); +} + +radio-group { + display: inline-block; +} + + + +switch.radius .wx-switch-input::after, +switch.radius .wx-switch-input, +switch.radius .wx-switch-input::before { + border-radius: 10rpx; +} + +switch .wx-switch-input::before, +radio.radio::before, +checkbox .wx-checkbox-input::before, +radio .wx-radio-input::before, +radio.radio::before { + display: none; +} + +radio.radio[checked]::after { + content: ""; + background-color: transparent; + display: block; + position: absolute; + width: 8px; + height: 8px; + z-index: 999; + top: 0rpx; + left: 0rpx; + right: 0; + bottom: 0; + margin: auto; + border-radius: 200rpx; + border: 8px solid var(--white) !important; +} + +.switch-sex::after { + content: "\e71c"; +} + +.switch-sex::before { + content: "\e71a"; +} + +.switch-sex .wx-switch-input { + background: var(--red) !important; + border-color: var(--red) !important; +} + +.switch-sex[checked] .wx-switch-input { + background: var(--blue) !important; + border-color: var(--blue) !important; +} + +switch.red[checked] .wx-switch-input, +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input { + border-color: var(--red) !important; +} + +switch.orange[checked] .wx-switch-input, +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input { + border-color: var(--orange) !important; +} + +switch.yellow[checked] .wx-switch-input, +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input { + border-color: var(--yellow) !important; +} + +switch.olive[checked] .wx-switch-input, +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input { + border-color: var(--olive) !important; +} + +switch.green[checked] .wx-switch-input, +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input { + border-color: var(--green) !important; +} + +switch.cyan[checked] .wx-switch-input, +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input { + border-color: var(--cyan) !important; +} + +switch.blue[checked] .wx-switch-input, +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input { + border-color: var(--blue) !important; +} + +switch.purple[checked] .wx-switch-input, +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input { + border-color: var(--purple) !important; +} + +switch.mauve[checked] .wx-switch-input, +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input { + border-color: var(--mauve) !important; +} + +switch.pink[checked] .wx-switch-input, +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input { + border-color: var(--pink) !important; +} + +switch.brown[checked] .wx-switch-input, +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input { + border-color: var(--brown) !important; +} + +switch.grey[checked] .wx-switch-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input { + border-color: var(--grey) !important; +} + +switch.gray[checked] .wx-switch-input, +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input { + border-color: var(--grey) !important; +} + +switch.black[checked] .wx-switch-input, +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input { + border-color: var(--black) !important; +} + +switch.white[checked] .wx-switch-input, +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input { + border-color: var(--white) !important; +} + +switch.red[checked] .wx-switch-input.wx-switch-input-checked, +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input { + background-color: var(--red) !important; + color: var(--white) !important; +} + +switch.orange[checked] .wx-switch-input, +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input { + background-color: var(--orange) !important; + color: var(--white) !important; +} + +switch.yellow[checked] .wx-switch-input, +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input { + background-color: var(--yellow) !important; + color: var(--black) !important; +} + +switch.olive[checked] .wx-switch-input, +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input { + background-color: var(--olive) !important; + color: var(--white) !important; +} + +switch.green[checked] .wx-switch-input, +switch[checked] .wx-switch-input, +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +radio[checked] .wx-radio-input { + background-color: var(--green) !important; + color: var(--white) !important; +} + +switch.cyan[checked] .wx-switch-input, +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input { + background-color: var(--cyan) !important; + color: var(--white) !important; +} + +switch.blue[checked] .wx-switch-input, +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input { + background-color: var(--blue) !important; + color: var(--white) !important; +} + +switch.purple[checked] .wx-switch-input, +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input { + background-color: var(--purple) !important; + color: var(--white) !important; +} + +switch.mauve[checked] .wx-switch-input, +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input { + background-color: var(--mauve) !important; + color: var(--white) !important; +} + +switch.pink[checked] .wx-switch-input, +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input { + background-color: var(--pink) !important; + color: var(--white) !important; +} + +switch.brown[checked] .wx-switch-input, +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input { + background-color: var(--brown) !important; + color: var(--white) !important; +} + +switch.grey[checked] .wx-switch-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input { + background-color: var(--grey) !important; + color: var(--white) !important; +} + +switch.gray[checked] .wx-switch-input, +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input { + background-color: #f0f0f0 !important; + color: var(--black) !important; +} + +switch.black[checked] .wx-switch-input, +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input { + background-color: var(--black) !important; + color: var(--white) !important; +} + +switch.white[checked] .wx-switch-input, +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input { + background-color: var(--white) !important; + color: var(--black) !important; +} + +/* ================== + 边框 + ==================== */ + +/* -- 实线 -- */ + +.solid, +.solid-top, +.solid-right, +.solid-bottom, +.solid-left, +.solids, +.solids-top, +.solids-right, +.solids-bottom, +.solids-left, +.dashed, +.dashed-top, +.dashed-right, +.dashed-bottom, +.dashed-left { + position: relative; +} + +.solid::after, +.solid-top::after, +.solid-right::after, +.solid-bottom::after, +.solid-left::after, +.solids::after, +.solids-top::after, +.solids-right::after, +.solids-bottom::after, +.solids-left::after, +.dashed::after, +.dashed-top::after, +.dashed-right::after, +.dashed-bottom::after, +.dashed-left::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; +} + +.solid::after { + border: 1rpx solid rgba(0, 0, 0, 0.1); +} + +.solid-top::after { + border-top: 1rpx solid rgba(0, 0, 0, 0.1); +} + +.solid-right::after { + border-right: 1rpx solid rgba(0, 0, 0, 0.1); +} + +.solid-bottom::after { + border-bottom: 1rpx solid rgba(0, 0, 0, 0.1); +} + +.solid-left::after { + border-left: 1rpx solid rgba(0, 0, 0, 0.1); +} + +.solids::after { + border: 8rpx solid #eee; +} + +.solids-top::after { + border-top: 8rpx solid #eee; +} + +.solids-right::after { + border-right: 8rpx solid #eee; +} + +.solids-bottom::after { + border-bottom: 8rpx solid #eee; +} + +.solids-left::after { + border-left: 8rpx solid #eee; +} + +/* -- 虚线 -- */ + +.dashed::after { + border: 1rpx dashed #ddd; +} + +.dashed-top::after { + border-top: 1rpx dashed #ddd; +} + +.dashed-right::after { + border-right: 1rpx dashed #ddd; +} + +.dashed-bottom::after { + border-bottom: 1rpx dashed #ddd; +} + +.dashed-left::after { + border-left: 1rpx dashed #ddd; +} + +/* -- 阴影 -- */ + +.shadow[class*='white'] { + --ShadowSize: 0 1rpx 6rpx; +} + +.shadow-lg { + --ShadowSize: 0rpx 40rpx 100rpx 0rpx; +} + +.shadow-warp { + position: relative; + box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1); +} + +.shadow-warp:before, +.shadow-warp:after { + position: absolute; + content: ""; + top: 20rpx; + bottom: 30rpx; + left: 20rpx; + width: 50%; + box-shadow: 0 30rpx 20rpx rgba(0, 0, 0, 0.2); + transform: rotate(-3deg); + z-index: -1; +} + +.shadow-warp:after { + right: 20rpx; + left: auto; + transform: rotate(3deg); +} + +.shadow-blur { + position: relative; +} + +.shadow-blur::before { + content: ""; + display: block; + background: inherit; + filter: blur(10rpx); + position: absolute; + width: 100%; + height: 100%; + top: 10rpx; + left: 10rpx; + z-index: -1; + opacity: 0.4; + transform-origin: 0 0; + border-radius: inherit; + transform: scale(1, 1); +} + +/* ================== + 按钮 + ==================== */ + +.cu-btn { + position: relative; + border: 0rpx; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0 30rpx; + font-size: 28rpx; + height: 70rpx; + line-height: 1; + text-align: center; + text-decoration: none; + overflow: visible; + margin-left: initial; + transform: translate(0rpx, 0rpx); + margin-right: initial; +} + +.cu-btn::after { + display: none; +} + +.cu-btn:not([class*="bg-"]) { + background-color: #f0f0f0; +} + +.cu-btn[class*="line"] { + background-color: transparent; +} + +.cu-btn[class*="line"]::after { + content: " "; + display: block; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1rpx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: 12rpx; + z-index: 1; + pointer-events: none; +} + +.cu-btn.foot { + position: fixed; + width: 100%; + bottom: 0; + z-index: 1024; + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, 0.1); +} + +.foot { + position: fixed; + width: 100%; + bottom: 0; + z-index: 1024; +} + +.cu-btn.round[class*="line"]::after { + border-radius: 1000rpx; +} + +.cu-btn.radius[class*="line"]::after { + border-radius: 10rpx +} + +.cu-btn[class*="lines"]::after { + border: 6rpx solid currentColor; +} + +.cu-btn[class*="bg-"]::after { + display: none; +} + +.cu-btn.sm { + padding: 0 20rpx; + font-size: 20rpx; + height: 48rpx; +} + +.cu-btn.lg { + padding: 0 40rpx; + font-size: 32rpx; + height: 80rpx; +} + +.cu-btn.icon.sm { + width: 48rpx; + height: 48rpx; +} + +.cu-btn.icon { + width: 64rpx; + height: 64rpx; + border-radius: 500rpx; + padding: 0; +} + +button.icon.lg { + width: 80rpx; + height: 80rpx; +} + +.cu-btn.shadow-blur::before { + top: 4rpx; + left: 4rpx; + filter: blur(6rpx); + opacity: 0.6; +} + +.cu-btn.button-hover { + transform: translate(1rpx, 1rpx); +} + +.block { + display: block; +} + +.cu-btn.block { + display: flex; +} + +.cu-btn[disabled] { + opacity: 0.6; + color: var(--white); +} + +/* ================== + 徽章 + ==================== */ + +.cu-tag { + font-size: 24rpx; + vertical-align: middle; + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0rpx 16rpx; + height: 48rpx; + font-family: Helvetica Neue, Helvetica, sans-serif; + white-space: nowrap; +} + +.cu-tag:not([class*="bg"]):not([class*="line"]) { + background-color: var(--ghostWhite); +} + +.cu-tag[class*="line-"]::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1rpx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: inherit; + z-index: 1; + pointer-events: none; +} + +.cu-tag.radius[class*="line"]::after { + border-radius: 12rpx; +} + +.cu-tag.round[class*="line"]::after { + border-radius: 1000rpx; +} + +.cu-tag[class*="line-"]::after { + border-radius: 0; +} + +.cu-tag+.cu-tag { + margin-left: 10rpx; +} + +.cu-tag.sm { + font-size: 20rpx; + padding: 0rpx 12rpx; + height: 32rpx; +} + +.cu-capsule { + display: inline-flex; + vertical-align: middle; +} + +.cu-capsule+.cu-capsule { + margin-left: 10rpx; +} + +.cu-capsule .cu-tag { + margin: 0; +} + +.cu-capsule .cu-tag[class*="line-"]:last-child::after { + border-left: 0rpx solid transparent; +} + +.cu-capsule .cu-tag[class*="line-"]:first-child::after { + border-right: 0rpx solid transparent; +} + +.cu-capsule.radius .cu-tag:first-child { + border-top-left-radius: 6rpx; + border-bottom-left-radius: 6rpx; +} + +.cu-capsule.radius .cu-tag:last-child::after, +.cu-capsule.radius .cu-tag[class*="line-"] { + border-top-right-radius: 12rpx; + border-bottom-right-radius: 12rpx; +} + +.cu-capsule.round .cu-tag:first-child { + border-top-left-radius: 200rpx; + border-bottom-left-radius: 200rpx; + text-indent: 4rpx; +} + +.cu-capsule.round .cu-tag:last-child::after, +.cu-capsule.round .cu-tag:last-child { + border-top-right-radius: 200rpx; + border-bottom-right-radius: 200rpx; + text-indent: -4rpx; +} + +.cu-tag.badge { + border-radius: 200rpx; + position: absolute; + top: -10rpx; + right: -10rpx; + font-size: 20rpx; + padding: 0rpx 10rpx; + height: 28rpx; + color: var(--white); +} + +.cu-tag.badge:not([class*="bg-"]) { + background-color: #dd514c; +} + +.cu-tag.badgegray { + border-radius: 200rpx; + position: absolute; + top: -10rpx; + right: -10rpx; + font-size: 20rpx; + padding: 0rpx 10rpx; + height: 28rpx; + color: var(--white); +} + +.cu-tag.badgegray:not([class*="bg-"]) { + background-color: #555; +} + +.cu-tag:empty:not([class*="cuIcon-"]) { + padding: 0rpx; + width: 16rpx; + height: 16rpx; + top: -4rpx; + right: -4rpx; +} + +.cu-tag[class*="cuIcon-"] { + width: 32rpx; + height: 32rpx; + top: -4rpx; + right: -4rpx; +} + +/* ================== + 头像 + ==================== */ + +.cu-avatar { + font-variant: small-caps; + margin: 0; + padding: 0; + display: inline-flex; + text-align: center; + justify-content: center; + align-items: center; + background-color: #ccc; + color: var(--white); + white-space: nowrap; + position: relative; + width: 64rpx; + height: 64rpx; + background-size: cover; + background-position: center; + vertical-align: middle; + font-size: 1.5em; +} + +.cu-avatar.sm { + width: 48rpx; + height: 48rpx; + font-size: 1em; +} + +.cu-avatar.lg { + width: 96rpx; + height: 96rpx; + font-size: 2em; +} + +.cu-avatar.xl { + width: 128rpx; + height: 128rpx; + font-size: 2.5em; +} + +.cu-avatar .avatar-text { + font-size: 0.4em; +} + +.cu-avatar-group { + direction: rtl; + unicode-bidi: bidi-override; + padding: 0 10rpx 0 40rpx; + display: inline-block; +} + +.cu-avatar-group .cu-avatar { + margin-left: -30rpx; + border: 4rpx solid var(--ghostWhite); + vertical-align: middle; +} + +.cu-avatar-group .cu-avatar.sm { + margin-left: -20rpx; + border: 1rpx solid var(--ghostWhite); +} + +/* ================== + 进度条 + ==================== */ + +.cu-progress { + overflow: hidden; + height: 28rpx; + background-color: #ebeef5; + display: inline-flex; + align-items: center; + width: 100%; +} + +.cu-progress+view, +.cu-progress+text { + line-height: 1; +} + +.cu-progress.xs { + height: 10rpx; +} + +.cu-progress.sm { + height: 20rpx; +} + +.cu-progress view { + width: 0; + height: 100%; + align-items: center; + display: flex; + justify-items: flex-end; + justify-content: space-around; + font-size: 20rpx; + color: var(--white); + transition: width 0.6s ease; +} + +.cu-progress text { + align-items: center; + display: flex; + font-size: 20rpx; + color: var(--black); + text-indent: 10rpx; +} + +.cu-progress.text-progress { + padding-right: 60rpx; +} + +.cu-progress.striped view { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 72rpx 72rpx; +} + +.cu-progress.active view { + animation: progress-stripes 2s linear infinite; +} + +@keyframes progress-stripes { + from { + background-position: 72rpx 0; + } + + to { + background-position: 0 0; + } +} + +/* ================== + 加载 + ==================== */ + +.cu-load { + display: block; + line-height: 3em; + text-align: center; +} + +.cu-load::before { + font-family: "cuIcon"; + display: inline-block; + margin-right: 6rpx; +} + +.cu-load.loading::before { + content: "\e67a"; + animation: cuIcon-spin 2s infinite linear; +} + +.cu-load.loading::after { + content: "加载中..."; +} + +.cu-load.over::before { + content: "\e64a"; +} + +.cu-load.over::after { + content: "没有更多了"; +} + +.cu-load.erro::before { + content: "\e658"; +} + +.cu-load.erro::after { + content: "加载失败"; +} + +.cu-load.load-icon::before { + font-size: 32rpx; +} + +.cu-load.load-icon::after { + display: none; +} + +.cu-load.load-icon.over { + display: none; +} + +.cu-load.load-modal { + position: fixed; + top: 0; + right: 0; + bottom: 140rpx; + left: 0; + margin: auto; + width: 260rpx; + height: 260rpx; + background-color: var(--white); + border-radius: 10rpx; + box-shadow: 0 0 0rpx 2000rpx rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + font-size: 28rpx; + z-index: 9999; + line-height: 2.4em; +} + +.cu-load.load-modal [class*="cuIcon-"] { + font-size: 60rpx; +} + +.cu-load.load-modal image { + width: 70rpx; + height: 70rpx; +} + +.cu-load.load-modal::after { + content: ""; + position: absolute; + background-color: var(--white); + border-radius: 50%; + width: 200rpx; + height: 200rpx; + font-size: 10px; + border-top: 6rpx solid rgba(0, 0, 0, 0.05); + border-right: 6rpx solid rgba(0, 0, 0, 0.05); + border-bottom: 6rpx solid rgba(0, 0, 0, 0.05); + border-left: 6rpx solid var(--orange); + animation: cuIcon-spin 1s infinite linear; + z-index: -1; +} + +.load-progress { + pointer-events: none; + top: 0; + position: fixed; + width: 100%; + left: 0; + z-index: 2000; +} + +.load-progress.hide { + display: none; +} + +.load-progress .load-progress-bar { + position: relative; + width: 100%; + height: 4rpx; + overflow: hidden; + transition: all 200ms ease 0s; +} + +.load-progress .load-progress-spinner { + position: absolute; + top: 10rpx; + right: 10rpx; + z-index: 2000; + display: block; +} + +.load-progress .load-progress-spinner::after { + content: ""; + display: block; + width: 24rpx; + height: 24rpx; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid 4rpx transparent; + border-top-color: inherit; + border-left-color: inherit; + border-radius: 50%; + -webkit-animation: load-progress-spinner 0.4s linear infinite; + animation: load-progress-spinner 0.4s linear infinite; +} + +@-webkit-keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* ================== + 列表 + ==================== */ +.grayscale { + filter: grayscale(1); +} + +.cu-list+.cu-list { + margin-top: 30rpx +} + +.cu-list>.cu-item { + transition: all .6s ease-in-out 0s; + transform: translateX(0rpx) +} + +.cu-list>.cu-item.move-cur { + transform: translateX(-260rpx) +} + +.cu-list>.cu-item .move { + position: absolute; + right: 0; + display: flex; + width: 260rpx; + height: 100%; + transform: translateX(100%) +} + +.cu-list>.cu-item .move view { + display: flex; + flex: 1; + justify-content: center; + align-items: center +} + +.cu-list.menu-avatar { + overflow: hidden; +} + +.cu-list.menu-avatar>.cu-item { + position: relative; + display: flex; + padding-right: 10rpx; + height: 140rpx; + background-color: var(--white); + justify-content: flex-end; + align-items: center +} + +.cu-list.menu-avatar>.cu-item>.cu-avatar { + position: absolute; + left: 30rpx +} + +.cu-list.menu-avatar>.cu-item .flex .text-cut { + max-width: 510rpx +} + +.cu-list.menu-avatar>.cu-item .content { + position: absolute; + left: 146rpx; + width: calc(100% - 96rpx - 60rpx - 120rpx - 20rpx); + line-height: 1.6em; +} + +.cu-list.menu-avatar>.cu-item .content-no { + position: absolute; + left: 146rpx; + width: 80%; + line-height: 1.6em; +} + +.cu-list.menu-avatar>.cu-item .content.flex-sub { + width: calc(100% - 96rpx - 60rpx - 20rpx); +} + + +.cu-list.menu-avatar>.cu-item .content>view:first-child { + font-size: 30rpx; + display: flex; + align-items: center +} + +.cu-list.menu-avatar>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10rpx; + height: 28rpx; + font-size: 16rpx; + line-height: 32rpx +} + +.cu-list.menu-avatar>.cu-item .action { + width: 120rpx; + text-align: center +} + +.cu-list.menu-avatar>.cu-item .action view+view { + margin-top: 10rpx +} + +.cu-list.menu-avatar.comment>.cu-item .content { + position: relative; + left: 0; + width: auto; + flex: 1; +} + +.cu-list.menu-avatar.comment>.cu-item { + padding: 30rpx 30rpx 30rpx 120rpx; + height: auto +} + +.cu-list.menu-avatar.comment .cu-avatar { + align-self: flex-start +} + +.cu-list.menu>.cu-item { + position: relative; + display: flex; + padding: 0 30rpx; + min-height: 100rpx; + background-color: var(--white); + justify-content: space-between; + align-items: center +} + +.cu-list.menu>.cu-item:last-child:after { + border: none +} + +.border-line { + border: 1rpx solid #ddd; + border-radius: 10rpx; +} + +.cu-list.menu>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-bottom: 1rpx solid #ddd; + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.menu>.cu-item.grayscale { + background-color: #f5f5f5 +} + +.cu-list.menu>.cu-item.cur { + background-color: #fcf7e9 +} + +.cu-list.menu>.cu-item.arrow { + padding-right: 90rpx +} + +.cu-list.menu>.cu-item.arrow:before { + position: absolute; + top: 0; + right: 30rpx; + bottom: 0; + display: block; + margin: auto; + width: 30rpx; + height: 30rpx; + color: var(--grey); + content: "\e6a3"; + text-align: center; + font-size: 34rpx; + font-family: "cuIcon"; + line-height: 30rpx +} + +.cu-list.menu>.cu-item button.content { + padding: 0; + background-color: transparent; + justify-content: flex-start +} + +.cu-list.menu>.cu-item button.content:after { + display: none +} + +.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar { + border-color: var(--white) +} + +.cu-list.menu>.cu-item .content>view:first-child { + display: flex; + align-items: center +} + +.cu-list.menu>.cu-item .content>text[class*=cuIcon] { + display: inline-block; + margin-right: 10rpx; + width: 1.6em; + text-align: center +} + +.cu-list.menu>.cu-item .content>image { + display: inline-block; + margin-right: 10rpx; + width: 1.6em; + height: 1.6em; + vertical-align: middle +} + +.cu-list.menu>.cu-item .content { + font-size: 30rpx; + line-height: 1.6em; + flex: 1 +} + +.cu-list.menu>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10rpx; + height: 28rpx; + font-size: 16rpx; + line-height: 32rpx +} + +.cu-list.menu>.cu-item .action .cu-tag:empty { + right: 10rpx +} + +.cu-list.menu { + display: block; + overflow: hidden +} + +.cu-list.menu.sm-border>.cu-item:after { + left: 30rpx; + width: calc(200% - 120rpx) +} + +.cu-list.grid>.cu-item { + position: relative; + display: flex; + padding: 20rpx 0 30rpx; + transition-duration: 0s; + flex-direction: column +} + +.cu-list.grid>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-right: 1px solid rgba(0, 0, 0, .1); + border-bottom: 1px solid rgba(0, 0, 0, .1); + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.grid>.cu-item text { + display: block; + margin-top: 10rpx; + color: #888; + font-size: 26rpx; + line-height: 40rpx +} + +.cu-list.grid>.cu-item [class*=cuIcon] { + position: relative; + display: block; + margin-top: 20rpx; + width: 100%; + font-size: 48rpx +} + +.cu-list.grid>.cu-item .cu-tag { + right: auto; + left: 50%; + margin-left: 20rpx +} + +.cu-list.grid { + background-color: var(--white); + text-align: center +} + +.cu-list.grid.no-border>.cu-item { + padding-top: 10rpx; + padding-bottom: 20rpx +} + +.cu-list.grid.no-border>.cu-item:after { + border: none +} + +.cu-list.grid.no-border { + padding: 20rpx 10rpx +} + +.cu-list.grid.col-3>.cu-item:nth-child(3n):after, +.cu-list.grid.col-4>.cu-item:nth-child(4n):after, +.cu-list.grid.col-5>.cu-item:nth-child(5n):after { + border-right-width: 0 +} + +.cu-list.card-menu { + overflow: hidden; + margin-right: 30rpx; + margin-left: 30rpx; + border-radius: 20rpx +} + + +/* ================== + 操作条 + ==================== */ + +.cu-bar { + display: flex; + position: relative; + align-items: center; + min-height: 100rpx; + justify-content: space-between; +} + +.cu-bar .action { + display: flex; + align-items: center; + height: 100%; + justify-content: center; + max-width: 100%; +} + +.cu-bar .action.border-title { + position: relative; + top: -10rpx; +} + +.cu-bar .action.border-title text[class*="bg-"]:last-child { + position: absolute; + bottom: -0.5rem; + min-width: 2rem; + height: 6rpx; + left: 0; +} + +.cu-bar .action.sub-title { + position: relative; + top: -0.2rem; +} + +.cu-bar .action.sub-title text { + position: relative; + z-index: 1; +} + +.cu-bar .action.sub-title text[class*="bg-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.2rem; + border-radius: 6rpx; + width: 100%; + height: 0.6rem; + left: 0.6rem; + opacity: 0.3; + z-index: 0; +} + +.cu-bar .action.sub-title text[class*="text-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.7rem; + left: 0.5rem; + opacity: 0.2; + z-index: 0; + text-align: right; + font-weight: 900; + font-size: 36rpx; +} + +.cu-bar.justify-center .action.border-title text:last-child, +.cu-bar.justify-center .action.sub-title text:last-child { + left: 0; + right: 0; + margin: auto; + text-align: center; +} + +.cu-bar .action:first-child { + margin-left: 30rpx; + font-size: 30rpx; +} + +.cu-bar .action text.text-cut { + text-align: left; + width: 100%; +} + +.cu-bar .cu-avatar:first-child { + margin-left: 20rpx; +} + +.cu-bar .action:first-child>text[class*="cuIcon-"] { + margin-left: -0.3em; + margin-right: 0.3em; +} + +.cu-bar .action:last-child { + margin-right: 30rpx; +} + +.cu-bar .action>text[class*="cuIcon-"], +.cu-bar .action>view[class*="cuIcon-"] { + font-size: 36rpx; +} + +.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] { + margin-left: 0.5em; +} + +.cu-bar .content { + position: absolute; + text-align: center; + width: calc(100% - 340rpx); + left: 0; + right: 0; + bottom: 0; + top: 0; + margin: auto; + height: 60rpx; + font-size: 32rpx; + line-height: 60rpx; + cursor: none; + pointer-events: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.cu-bar.ios .content { + bottom: 7px; + height: 30px; + font-size: 32rpx; + line-height: 30px; +} + +.cu-bar.btn-group { + justify-content: space-around; +} + +.cu-bar.btn-group button { + padding: 20rpx 32rpx; +} + +.cu-bar.btn-group button { + flex: 1; + margin: 0 20rpx; + max-width: 50%; +} + +.cu-bar .search-form { + background-color: #f5f5f5; + line-height: 64rpx; + height: 64rpx; + font-size: 24rpx; + color: var(--black); + flex: 1; + display: flex; + align-items: center; + margin: 0 30rpx; +} + +.cu-bar .search-form+.action { + margin-right: 30rpx; +} + +.cu-bar .search-form input { + flex: 1; + padding-right: 30rpx; + height: 64rpx; + line-height: 64rpx; + font-size: 26rpx; + background-color: transparent; +} + +.cu-bar .search-form [class*="cuIcon-"] { + margin: 0 0.5em 0 0.8em; +} + +.cu-bar .search-form [class*="cuIcon-"]::before { + top: 0rpx; +} + +.cu-bar.fixed, +.nav.fixed { + position: fixed; + width: 100%; + top: 0; + z-index: 1024; + box-shadow: 0 1rpx 6rpx rgba(0, 0, 0, 0.1); +} + +.cu-bar.foot { + position: fixed; + width: 100%; + bottom: 0; + z-index: 1024; + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar { + padding: 0; + height: calc(100rpx + env(safe-area-inset-bottom) / 2); + padding-bottom: calc(env(safe-area-inset-bottom) / 2); +} + +.cu-tabbar-height { + min-height: 100rpx; + height: calc(100rpx + env(safe-area-inset-bottom) / 2); +} + +.cu-bar.tabbar.shadow { + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar .action { + font-size: 22rpx; + position: relative; + flex: 1; + text-align: center; + padding: 0; + display: block; + height: auto; + line-height: 1; + margin: 0; + overflow: initial; +} + +.cu-bar.tabbar.shop .action { + width: 140rpx; + flex: initial; +} + +.cu-bar.tabbar .action.add-action { + position: relative; + z-index: 2; + padding-top: 50rpx; + background-color: inherit; +} + +.cu-bar.tabbar .action.add-action [class*="cuIcon-"] { + position: absolute; + width: 70rpx; + z-index: 2; + height: 70rpx; + border-radius: 50%; + line-height: 70rpx; + font-size: 50rpx; + top: -35rpx; + left: 0; + right: 0; + margin: auto; + padding: 0; +} + +.cu-bar.tabbar .action.add-action::after { + content: ""; + position: absolute; + width: 100rpx; + height: 100rpx; + top: -50rpx; + left: 0; + right: 0; + margin: auto; + box-shadow: 0 -3rpx 8rpx rgba(0, 0, 0, 0.08); + border-radius: 50rpx; + background-color: inherit; + z-index: 0; +} + +.cu-bar.tabbar .action.add-action::before { + content: ""; + position: absolute; + width: 100rpx; + height: 30rpx; + bottom: 30rpx; + left: 0; + right: 0; + margin: auto; + background-color: inherit; + z-index: 1; +} + +.cu-bar.tabbar .btn-group { + flex: 1; + display: flex; + justify-content: space-around; + align-items: center; + padding: 0 10rpx; +} + +.cu-bar.tabbar button.action::after { + border: 0; +} + +.cu-bar.tabbar .action [class*="cuIcon-"] { + width: 100rpx; + position: relative; + display: block; + height: auto; + margin: 0 auto 10rpx; + text-align: center; + font-size: 40rpx; +} + +.cu-bar.tabbar .action .cuIcon-cu-image { + margin: 0 auto; +} + +.cu-bar.tabbar .action .cuIcon-cu-image image { + width: 50rpx; + height: 50rpx; + display: inline-block; +} + +.cu-bar.tabbar .submit { + align-items: center; + display: flex; + justify-content: center; + text-align: center; + position: relative; + flex: 2; + align-self: stretch; +} + +.cu-bar.tabbar .submit:last-child { + flex: 2.6; +} + +.cu-bar.tabbar .submit+.submit { + flex: 2; +} + +.cu-bar.tabbar.border .action::before { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + transform: scale(0.5); + transform-origin: 0 0; + border-right: 1rpx solid rgba(0, 0, 0, 0.1); + z-index: 3; +} + +.cu-bar.tabbar.border .action:last-child:before { + display: none; +} + +.cu-bar.input { + padding-right: 20rpx; + background-color: var(--white); +} + +.cu-bar.input input { + overflow: initial; + line-height: 64rpx; + height: 64rpx; + min-height: 64rpx; + flex: 1; + font-size: 30rpx; + margin: 0 20rpx; +} + +.cu-bar.input .action { + margin-left: 20rpx; +} + +.cu-bar.input .action [class*="cuIcon-"] { + font-size: 48rpx; +} + +.cu-bar.input input+.action { + margin-right: 20rpx; + margin-left: 0rpx; +} + +.cu-bar.input .action:first-child [class*="cuIcon-"] { + margin-left: 0rpx; +} + +.cu-custom { + display: block; + position: relative; +} + +.cu-custom .cu-bar .content { + width: calc(100% - 440rpx); +} + + +.cu-custom .cu-bar .content image { + height: 60rpx; + width: 240rpx; +} + +.cu-custom .cu-bar { + min-height: 0px; + padding-right: 220rpx; + box-shadow: 0rpx 0rpx 0rpx; + z-index: 9999; +} + +.cu-custom .cu-bar .border-custom { + position: relative; + background: rgba(0, 0, 0, 0.15); + border-radius: 1000rpx; + height: 30px; +} + +.cu-custom .cu-bar .border-custom::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + border: 1rpx solid var(--white); + opacity: 0.5; +} + +.cu-custom .cu-bar .border-custom::before { + content: " "; + width: 1rpx; + height: 110%; + position: absolute; + top: 22.5%; + left: 0; + right: 0; + margin: auto; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + opacity: 0.6; + background-color: var(--white); +} + +.cu-custom .cu-bar .border-custom text { + display: block; + flex: 1; + margin: auto !important; + text-align: center; + font-size: 34rpx; +} + +/* ================== + 导航栏 + ==================== */ + +.nav { + white-space: nowrap; +} + +::-webkit-scrollbar { + display: none; +} + +.nav .cu-item { + height: 90rpx; + display: inline-block; + line-height: 90rpx; + margin: 0 10rpx; + padding: 0 20rpx; +} + +.nav .cu-item.cur { + border-bottom: 4rpx solid; +} + +/* ================== + 时间轴 + ==================== */ + +.cu-timeline { + display: block; + background-color: var(--white); +} + +.cu-timeline .cu-time { + width: 120rpx; + text-align: center; + padding: 20rpx 0; + font-size: 26rpx; + color: #888; + display: block; +} + +.cu-timeline>.cu-item { + padding: 30rpx 30rpx 30rpx 120rpx; + position: relative; + display: block; + z-index: 0; +} + +.cu-timeline>.cu-item:not([class*="text-"]) { + color: #ccc; +} + +.cu-timeline>.cu-item::after { + content: ""; + display: block; + position: absolute; + width: 1rpx; + background-color: #ddd; + left: 60rpx; + height: 100%; + top: 0; + z-index: 8; +} + +.cu-timeline>.cu-item::before { + font-family: "cuIcon"; + display: block; + position: absolute; + top: 36rpx; + z-index: 9; + background-color: var(--white); + width: 50rpx; + height: 50rpx; + text-align: center; + border: none; + line-height: 50rpx; + left: 36rpx; +} + +.cu-timeline>.cu-item:not([class*="cuIcon-"])::before { + content: "\e763"; +} + +.cu-timeline>.cu-item[class*="cuIcon-"]::before { + background-color: var(--white); + width: 50rpx; + height: 50rpx; + text-align: center; + border: none; + line-height: 50rpx; + left: 36rpx; +} + +.cu-timeline>.cu-item>.content { + padding: 30rpx; + border-radius: 6rpx; + display: block; + line-height: 1.6; +} + +.cu-timeline>.cu-item>.content:not([class*="bg-"]) { + background-color: var(--ghostWhite); + color: var(--black); +} + +.cu-timeline>.cu-item>.content+.content { + margin-top: 20rpx; +} + +/* ================== + 聊天 + ==================== */ + +.cu-chat { + display: flex; + flex-direction: column; +} + +.cu-chat .cu-item { + display: flex; + padding: 30rpx 30rpx 70rpx; + position: relative; +} + +.cu-chat .cu-item>.cu-avatar { + width: 80rpx; + height: 80rpx; +} + +.cu-chat .cu-item>.main { + max-width: calc(100% - 260rpx); + margin: 0 40rpx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>image { + height: 320rpx; +} + +.cu-chat .cu-item>.main .content { + padding: 20rpx; + border-radius: 6rpx; + display: inline-flex; + max-width: 100%; + align-items: center; + font-size: 30rpx; + position: relative; + min-height: 80rpx; + line-height: 40rpx; + text-align: left; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"]) { + background-color: var(--white); + color: var(--black); +} + +.cu-chat .cu-item .date { + position: absolute; + font-size: 24rpx; + color: var(--grey); + width: calc(100% - 320rpx); + bottom: 20rpx; + left: 160rpx; +} + +.cu-chat .cu-item .action { + padding: 0 30rpx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>.main .content::after { + content: ""; + top: 27rpx; + transform: rotate(45deg); + position: absolute; + z-index: 100; + display: inline-block; + overflow: hidden; + width: 24rpx; + height: 24rpx; + left: -12rpx; + right: initial; + background-color: inherit; +} + +.cu-chat .cu-item.self>.main .content::after { + left: auto; + right: -12rpx; +} + +.cu-chat .cu-item>.main .content::before { + content: ""; + top: 30rpx; + transform: rotate(45deg); + position: absolute; + z-index: -1; + display: inline-block; + overflow: hidden; + width: 24rpx; + height: 24rpx; + left: -12rpx; + right: initial; + background-color: inherit; + filter: blur(5rpx); + opacity: 0.3; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"])::before { + background-color: var(--black); + opacity: 0.1; +} + +.cu-chat .cu-item.self>.main .content::before { + left: auto; + right: -12rpx; +} + +.cu-chat .cu-item.self { + justify-content: flex-end; + text-align: right; +} + +.cu-chat .cu-info { + display: inline-block; + margin: 20rpx auto; + font-size: 24rpx; + padding: 8rpx 12rpx; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 6rpx; + color: var(--white); + max-width: 400rpx; + line-height: 1.4; +} + +/* ================== + 卡片 + ==================== */ + +.cu-card { + display: block; + overflow: hidden; +} + +.cu-card>.cu-item { + display: block; + background-color: var(--white); + overflow: hidden; + border-radius: 10rpx; + margin: 10rpx; +} + +.cu-card>.cu-item.shadow-blur { + overflow: initial; +} + +.cu-card.no-card>.cu-item { + margin: 0rpx; + border-radius: 0rpx; +} + +.cu-card .grid.grid-square { + margin-bottom: -20rpx; +} + +.cu-card.case .image { + position: relative; +} + +.cu-card.case .image image { + width: 100%; +} + +.cu-card.case .image .cu-tag { + position: absolute; + right: 0; + top: 0; +} + +.cu-card.case .image .cu-bar { + position: absolute; + bottom: 0; + width: 100%; + background-color: transparent; + padding: 0rpx 30rpx; +} + +.cu-card.case.no-card .image { + margin: 30rpx 30rpx 0; + overflow: hidden; + border-radius: 10rpx; +} + +.cu-card.dynamic { + display: block; +} + +.cu-card.dynamic>.cu-item { + display: block; + background-color: var(--white); + overflow: hidden; +} + +.cu-card.dynamic>.cu-item>.text-content { + padding: 0 30rpx 0; + max-height: 6.4em; + overflow: hidden; + font-size: 30rpx; + margin-bottom: 20rpx; +} + +.cu-card.dynamic>.cu-item .square-img { + width: 100%; + height: 200rpx; + border-radius: 6rpx; +} + +.cu-card.dynamic>.cu-item .only-img { + width: 100%; + height: 320rpx; + border-radius: 6rpx; +} + +.cu-card.article { + display: block; +} + +.cu-card.article>.cu-item { + padding-bottom: 30rpx; +} + +.cu-card.article>.cu-item .title { + font-size: 30rpx; + font-weight: 900; + color: var(--black); + line-height: 100rpx; + padding: 0 30rpx; +} + +.cu-card.article>.cu-item .content { + display: flex; + padding: 0 30rpx; +} + +.cu-card.article>.cu-item .content>image { + width: 240rpx; + height: 8.4em; + margin-right: 20rpx; + border-radius: 6rpx; +} + +.cu-card.article>.cu-item .content .desc { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.cu-card.article>.cu-item .content .text-content { + font-size: 28rpx; + color: #888; + height: 4.8em; + overflow: hidden; +} + +/* ================== + 表单 + ==================== */ + +.cu-form-group { + background-color: var(--white); + padding: 1rpx 20rpx; + display: flex; + align-items: center; + min-height: 100rpx; + justify-content: space-between; +} + +.cu-form-group+.cu-form-group { + border-top: 1rpx solid #eee; +} + +.cu-form-group .title { + text-align: justify; + padding-right: 20rpx; + font-size: 30rpx; + position: relative; + height: 70rpx; + line-height: 60rpx; +} + +.cu-form-group .title-right { + text-align: right; + padding-right: 20rpx; + font-size: 30rpx; + position: relative; + height: 60rpx; + line-height: 60rpx; +} + +.cu-form-group .title-left { + text-align: left; + padding-right: 20rpx; + font-size: 30rpx; + position: relative; + height: 60rpx; + line-height: 60rpx; +} + +.cu-form-group input { + flex: 1; + font-size: 30rpx; + color: #555; + padding-right: 20rpx; +} + +.cu-form-group .content { + flex: 1; + text-align: right; + font-size: 30rpx; + color: #000000; + padding-right: 20rpx; +} + +.cu-form-group .content-red { + flex: 1; + text-align: right; + font-size: 30rpx; + color: #FF0000; + padding-right: 20rpx; +} + +.cu-form-group .content-left { + flex: 1; + text-align: left; + font-size: 30rpx; + color: #000000; + padding-right: 20rpx; +} + +.cu-form-group>text[class*="cuIcon-"] { + font-size: 36rpx; + padding: 0; + box-sizing: border-box; +} + +.cu-form-group textarea { + margin: 0 0 30rpx; + height: 6em; + width: 100%; + line-height: 1.2em; + flex: 1; + font-size: 28rpx; + padding: 10rpx; +} + +.cu-form-group.align-start .title { + height: 1em; + margin-top: 32rpx; + line-height: 1em; +} + +.cu-form-group picker { + flex: 1; + padding-right: 40rpx; + overflow: hidden; + position: relative; +} + +.cu-form-group picker .picker { + line-height: 100rpx; + font-size: 28rpx; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + text-align: right; +} + +.cu-form-group picker::after { + font-family: "cuIcon"; + display: block; + content: "\e6a3"; + position: absolute; + font-size: 34rpx; + color: var(--grey); + line-height: 100rpx; + width: 60rpx; + text-align: center; + top: 0; + bottom: 0; + right: -20rpx; + margin: auto; +} + +.cu-form-group textarea[disabled], +.cu-form-group textarea[disabled] .placeholder { + color: transparent; +} + +/* ================== + 模态窗口 + ==================== */ + +.cu-modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1110; + opacity: 0; + outline: 0; + text-align: center; + -ms-transform: scale(1.185); + transform: scale(1.185); + backface-visibility: hidden; + perspective: 2000rpx; + background: rgba(0, 0, 0, 0.6); + transition: all 0.3s ease-in-out 0s; + pointer-events: none; +} + +.cu-modal::before { + content: "\200B"; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.cu-modal.show { + opacity: 1; + transition-duration: 0.3s; + -ms-transform: scale(1); + transform: scale(1); + overflow-x: hidden; + overflow-y: auto; + pointer-events: auto; +} + +.cu-dialog { + position: relative; + display: inline-block; + vertical-align: middle; + margin-left: auto; + margin-right: auto; + width: 680rpx; + max-width: 100%; + background-color: #f8f8f8; + border-radius: 10rpx; + overflow: hidden; +} + +.cu-modal.bottom-modal::before { + vertical-align: bottom; +} + +.cu-modal.bottom-modal .cu-dialog { + width: 100%; + border-radius: 0; +} + +.cu-modal.bottom-modal { + margin-bottom: -1000rpx; +} + +.cu-modal.bottom-modal.show { + margin-bottom: 0; +} + +.cu-modal.drawer-modal { + transform: scale(1); + display: flex; +} + +.cu-modal.drawer-modal .cu-dialog { + height: 100%; + min-width: 200rpx; + border-radius: 0; + margin: initial; + transition-duration: 0.3s; +} + +.cu-modal.drawer-modal.justify-start .cu-dialog { + transform: translateX(-100%); +} + +.cu-modal.drawer-modal.justify-end .cu-dialog { + transform: translateX(100%); +} + +.cu-modal.drawer-modal.show .cu-dialog { + transform: translateX(0%); +} + +.cu-modal .cu-dialog>.cu-bar:first-child .action { + min-width: 100rpx; + margin-right: 0; + min-height: 100rpx; +} + +/* ================== + 轮播 + ==================== */ +swiper .a-swiper-dot { + display: inline-block; + width: 16rpx; + height: 16rpx; + background: rgba(0, 0, 0, .3); + border-radius: 50%; + vertical-align: middle; +} + +swiper[class*="-dot"] .wx-swiper-dots { + display: flex; + align-items: center; + width: 100%; + justify-content: center; +} + +swiper.square-dot .wx-swiper-dot { + background-color: var(--white); + opacity: 0.4; + width: 10rpx; + height: 10rpx; + border-radius: 20rpx; + margin: 0 8rpx !important; +} + +swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active { + opacity: 1; + width: 30rpx; +} + +swiper.round-dot .wx-swiper-dot { + width: 10rpx; + height: 10rpx; + position: relative; + margin: 4rpx 8rpx !important; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after { + content: ""; + position: absolute; + width: 10rpx; + height: 10rpx; + top: 0rpx; + left: 0rpx; + right: 0; + bottom: 0; + margin: auto; + background-color: var(--white); + border-radius: 20rpx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active { + width: 18rpx; + height: 18rpx; +} + +.screen-swiper { + min-height: 375rpx; +} + +.screen-swiper-lg { + min-height: 245rpx; +} + +.screen-swiper.xl { + height: 600rpx; +} + +.screen-swiper image, +.screen-swiper video, +.swiper-item image, +.swiper-item video { + width: 100%; + display: block; + height: 100%; + margin: 0; + pointer-events: none; +} + +.card-swiper { + height: 420rpx !important; +} + +.card-swiper swiper-item { + width: 610rpx !important; + left: 70rpx; + box-sizing: border-box; + padding: 40rpx 0rpx 70rpx; + overflow: initial; +} + +.card-swiper swiper-item .swiper-item { + width: 100%; + display: block; + height: 100%; + border-radius: 10rpx; + transform: scale(0.9); + transition: all 0.2s ease-in 0s; + overflow: hidden; +} + +.card-swiper swiper-item.cur .swiper-item { + transform: none; + transition: all 0.2s ease-in 0s; +} + + +.tower-swiper { + height: 420rpx; + position: relative; + max-width: 750rpx; + overflow: hidden; +} + +.tower-swiper .tower-item { + position: absolute; + width: 300rpx; + height: 380rpx; + top: 0; + bottom: 0; + left: 50%; + margin: auto; + transition: all 0.2s ease-in 0s; + opacity: 1; +} + +.tower-swiper .tower-item.none { + opacity: 0; +} + +.tower-swiper .tower-item .swiper-item { + width: 100%; + height: 100%; + border-radius: 6rpx; + overflow: hidden; +} + +/* ================== + 步骤条 + ==================== */ + +.cu-steps { + display: flex; +} + +scroll-view.cu-steps { + display: block; + white-space: nowrap; +} + +scroll-view.cu-steps .cu-item { + display: inline-block; +} + +.cu-steps .cu-item { + flex: 1; + text-align: center; + position: relative; + min-width: 100rpx; +} + +.cu-steps .cu-item:not([class*="text-"]) { + color: var(--grey); +} + +.cu-steps .cu-item [class*="cuIcon-"], +.cu-steps .cu-item .num { + display: block; + font-size: 40rpx; + line-height: 80rpx; +} + +.cu-steps .cu-item::before, +.cu-steps .cu-item::after, +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: ""; + display: block; + position: absolute; + height: 0px; + width: calc(100% - 80rpx); + border-bottom: 1px solid #ccc; + left: calc(0px - (100% - 80rpx) / 2); + top: 40rpx; + z-index: 0; +} + +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: "\e6a3"; + font-family: "cuIcon"; + height: 30rpx; + border-bottom-width: 0px; + line-height: 30rpx; + top: 0; + bottom: 0; + margin: auto; + color: #ccc; +} + +.cu-steps.steps-bottom .cu-item::before, +.cu-steps.steps-bottom .cu-item::after { + bottom: 40rpx; + top: initial; +} + +.cu-steps .cu-item::after { + border-bottom: 1px solid currentColor; + width: 0px; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"]::after { + width: calc(100% - 80rpx); + color: currentColor; +} + +.cu-steps .cu-item:first-child::before, +.cu-steps .cu-item:first-child::after { + display: none; +} + +.cu-steps .cu-item .num { + width: 40rpx; + height: 40rpx; + border-radius: 50%; + line-height: 40rpx; + margin: 20rpx auto; + font-size: 24rpx; + border: 1px solid currentColor; + position: relative; + overflow: hidden; +} + +.cu-steps .cu-item[class*="text-"] .num { + background-color: currentColor; +} + +.cu-steps .cu-item .num::before, +.cu-steps .cu-item .num::after { + content: attr(data-index); + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + transition: all 0.3s ease-in-out 0s; + transform: translateY(0rpx); +} + +.cu-steps .cu-item[class*="text-"] .num::before { + transform: translateY(-40rpx); + color: var(--white); +} + +.cu-steps .cu-item .num::after { + transform: translateY(40rpx); + color: var(--white); + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::after { + content: "\e645"; + font-family: "cuIcon"; + color: var(--white); + transform: translateY(0rpx); +} + +.cu-steps .cu-item[class*="text-"] .num.err::after { + content: "\e646"; +} + +/* ================== + 布局 + ==================== */ + +/* -- flex弹性布局 -- */ + +.flex { + display: flex; +} + +.basis-xs { + flex-basis: 20%; +} + +.basis-sm { + flex-basis: 40%; +} + +.basis-df { + flex-basis: 50%; +} + +.basis-lg { + flex-basis: 60%; +} + +.basis-xl { + flex-basis: 80%; +} + +.flex-sub { + flex: 1; +} + +.flex-twice { + flex: 2; +} + +.flex-treble { + flex: 3; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +/* grid布局 */ + +.grid { + display: flex; + flex-wrap: wrap; +} + +.grid.grid-square { + overflow: hidden; +} + +.grid.grid-square .cu-tag { + position: absolute; + right: 0; + top: 0; + border-bottom-left-radius: 6rpx; + padding: 6rpx 12rpx; + height: auto; + background-color: rgba(0, 0, 0, 0.5); +} + +.grid.grid-square>view>text[class*="cuIcon-"] { + font-size: 52rpx; + position: absolute; + color: var(--grey); + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.grid.grid-square>view { + margin-right: 20rpx; + margin-bottom: 20rpx; + border-radius: 6rpx; + position: relative; + overflow: hidden; +} + +.grid.grid-square>view.bg-img image { + width: 100%; + height: 100%; + position: absolute; +} + +.grid.col-1.grid-square>view { + padding-bottom: 100%; + height: 0; + margin-right: 0; +} + +.grid.col-2.grid-square>view { + padding-bottom: calc((100% - 20rpx)/2); + height: 0; + width: calc((100% - 20rpx)/2); +} + +.grid.col-3.grid-square>view { + padding-bottom: calc((100% - 40rpx)/3); + height: 0; + width: calc((100% - 40rpx)/3); +} + +.grid.col-4.grid-square>view { + padding-bottom: calc((100% - 60rpx)/4); + height: 0; + width: calc((100% - 60rpx)/4); +} + +.grid.col-5.grid-square>view { + padding-bottom: calc((100% - 80rpx)/5); + height: 0; + width: calc((100% - 80rpx)/5); +} + +.grid.col-2.grid-square>view:nth-child(2n), +.grid.col-3.grid-square>view:nth-child(3n), +.grid.col-4.grid-square>view:nth-child(4n), +.grid.col-5.grid-square>view:nth-child(5n) { + margin-right: 0; +} + +.grid.col-1>view { + width: 100%; +} + +.grid.col-2>view { + width: 50%; +} + +.grid.col-3>view { + width: 33.33%; +} + +.grid.col-4>view { + width: 25%; +} + +.grid.col-5>view { + width: 20%; +} + +/* -- 内外边距 -- */ + +.margin-0 { + margin: 0; +} + +.margin-xs { + margin: 10rpx; +} + +.margin-sm { + margin: 20rpx; +} + +.margin { + margin: 30rpx; +} + +.margin-lg { + margin: 40rpx; +} + +.margin-xl { + margin: 50rpx; +} + +.margin-top-ls { + margin-top: 2rpx; +} + +.margin-top-xs { + margin-top: 10rpx; +} + +.margin-top-sm { + margin-top: 20rpx; +} + +.margin-top { + margin-top: 30rpx; +} + +.margin-top-lg { + margin-top: 40rpx; +} + +.margin-top-xl { + margin-top: 50rpx; +} + +.margin-right-xs { + margin-right: 10rpx; +} + +.margin-right-sm { + margin-right: 20rpx; +} + +.margin-right { + margin-right: 30rpx; +} + +.margin-right-lg { + margin-right: 40rpx; +} + +.margin-right-xl { + margin-right: 50rpx; +} + +.margin-bottom-xs { + margin-bottom: 10rpx; +} + +.margin-bottom-sm { + margin-bottom: 20rpx; +} + +.margin-bottom { + margin-bottom: 30rpx; +} + +.margin-bottom-lg { + margin-bottom: 40rpx; +} + +.margin-bottom-xl { + margin-bottom: 50rpx; +} + +.margin-bottom-xxl { + margin-bottom: 80rpx +} + +.margin-left-xs { + margin-left: 10rpx; +} + +.margin-left-smm { + margin-left: 5rpx; +} + +.margin-left-sm { + margin-left: 20rpx; +} + +.margin-left { + margin-left: 30rpx; +} + +.margin-left-lg { + margin-left: 40rpx; +} + +.margin-left-xl { + margin-left: 50rpx; +} + +.margin-lr-xs { + margin-left: 10rpx; + margin-right: 10rpx; +} + +.margin-lr-sm { + margin-left: 20rpx; + margin-right: 20rpx; +} + +.margin-lr { + margin-left: 30rpx; + margin-right: 30rpx; +} + +.margin-lr-lg { + margin-left: 40rpx; + margin-right: 40rpx; +} + +.margin-lr-xl { + margin-left: 50rpx; + margin-right: 50rpx; +} + +.margin-tb-xs { + margin-top: 10rpx; + margin-bottom: 10rpx; +} + +.margin-tb-sm { + margin-top: 20rpx; + margin-bottom: 20rpx; +} + +.margin-tb { + margin-top: 30rpx; + margin-bottom: 30rpx; +} + +.margin-tb-lg { + margin-top: 40rpx; + margin-bottom: 40rpx; +} + +.margin-tb-xl { + margin-top: 50rpx; + margin-bottom: 50rpx; +} + +.padding-0 { + padding: 0; +} + +.padding-xs { + padding: 10rpx; +} + +.padding-sm { + padding: 20rpx; +} + +.padding { + padding: 30rpx; +} + +.padding-lg { + padding: 40rpx; +} + +.padding-xl { + padding: 50rpx; +} + +.padding-top-xs { + padding-top: 10rpx; +} + +.padding-top-sm { + padding-top: 20rpx; +} + +.padding-top { + padding-top: 30rpx; +} + +.padding-top-lg { + padding-top: 40rpx; +} + +.padding-top-xl { + padding-top: 50rpx; +} + +.padding-right-xs { + padding-right: 10rpx; +} + +.padding-right-sm { + padding-right: 20rpx; +} + +.padding-right { + padding-right: 30rpx; +} + +.padding-right-lg { + padding-right: 40rpx; +} + +.padding-right-xl { + padding-right: 50rpx; +} + +.padding-bottom-xs { + padding-bottom: 10rpx; +} + +.padding-bottom-sm { + padding-bottom: 20rpx; +} + +.padding-bottom { + padding-bottom: 30rpx; +} + +.padding-bottom-lg { + padding-bottom: 40rpx; +} + +.padding-bottom-xl { + padding-bottom: 50rpx; +} + +.padding-bottom-xxl { + padding-bottom: 80rpx; +} + +.padding-left-xs { + padding-left: 10rpx; +} + +.padding-left-sm { + padding-left: 20rpx; +} + +.padding-left { + padding-left: 30rpx; +} + +.padding-left-lg { + padding-left: 40rpx; +} + +.padding-left-xl { + padding-left: 50rpx; +} + +.padding-lr-xs { + padding-left: 10rpx; + padding-right: 10rpx; +} + +.padding-lr-sm { + padding-left: 20rpx; + padding-right: 20rpx; +} + +.padding-lr { + padding-left: 30rpx; + padding-right: 30rpx; +} + +.padding-lr-lg { + padding-left: 40rpx; + padding-right: 40rpx; +} + +.padding-lr-xl { + padding-left: 50rpx; + padding-right: 50rpx; +} + +.padding-tb-xs { + padding-top: 10rpx; + padding-bottom: 10rpx; +} + +.padding-tb-sm { + padding-top: 20rpx; + padding-bottom: 20rpx; +} + +.padding-tb { + padding-top: 30rpx; + padding-bottom: 30rpx; +} + +.padding-tb-lg { + padding-top: 40rpx; + padding-bottom: 40rpx; +} + +.padding-tb-xl { + padding-top: 50rpx; + padding-bottom: 50rpx; +} + +/* -- 浮动 -- */ + +.cf::after, +.cf::before { + content: " "; + display: table; +} + +.cf::after { + clear: both; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +/* ================== + 背景 + ==================== */ + +.line-red::after, +.lines-red::after { + border-color: var(--red); +} + +.line-orange::after, +.lines-orange::after { + border-color: var(--orange); +} + +.line-yellow::after, +.lines-yellow::after { + border-color: var(--yellow); +} + +.line-olive::after, +.lines-olive::after { + border-color: var(--olive); +} + +.line-green::after, +.lines-green::after { + border-color: var(--green); +} + +.line-cyan::after, +.lines-cyan::after { + border-color: var(--cyan); +} + +.line-blue::after, +.lines-blue::after { + border-color: var(--blue); +} + +.line-purple::after, +.lines-purple::after { + border-color: var(--purple); +} + +.line-mauve::after, +.lines-mauve::after { + border-color: var(--mauve); +} + +.line-pink::after, +.lines-pink::after { + border-color: var(--pink); +} + +.line-brown::after, +.lines-brown::after { + border-color: var(--brown); +} + +.line-grey::after, +.lines-grey::after { + border-color: var(--grey); +} + +.line-gray::after, +.lines-gray::after { + border-color: var(--gray); +} + +.line-black::after, +.lines-black::after { + border-color: var(--black); +} + +.line-white::after, +.lines-white::after { + border-color: var(--white); +} + +.bg-red { + background-color: var(--red); + color: var(--white); +} + +.bg-orange { + background-color: var(--orange); + color: var(--white); +} + +.bg-yellow { + background-color: var(--yellow); + color: var(--black); +} + +.bg-olive { + background-color: var(--olive); + color: var(--white); +} + +.bg-green { + background-color: var(--green); + color: var(--white); +} + +.bg-cyan { + background-color: var(--cyan); + color: var(--white); +} + +.bg-blue { + background-color: var(--blue); + color: var(--white); +} + +.bg-darkblue { + background-color: var(--darkBlue); + color: var(--darkBlue); +} + +.bg-purple { + background-color: var(--purple); + color: var(--white); +} + +.bg-mauve { + background-color: var(--mauve); + color: var(--white); +} + +.bg-pink { + background-color: var(--pink); + color: var(--white); +} + +.bg-brown { + background-color: var(--brown); + color: var(--white); +} + +.bg-grey { + background-color: var(--grey); + color: var(--white); +} + +.text-color { + color: var(--white); +} + +.bg-gray { + background-color: #f0f0f0; + color: var(--black); +} + +.bg-black { + background-color: var(--black); + color: var(--white); +} + +.bg-white { + background-color: var(--white); + color: var(--darkGray); +} + +.bg-shadeTop { + background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01)); + color: var(--white); +} + +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1)); + color: var(--white); +} + +.bg-red.light { + color: var(--red); + background-color: var(--redLight); +} + +.bg-orange.light { + color: var(--orange); + background-color: var(--orangeLight); +} + +.bg-yellow.light { + color: var(--yellow); + background-color: var(--yellowLight); +} + +.bg-olive.light { + color: var(--olive); + background-color: var(--oliveLight); +} + +.bg-green.light { + color: var(--green); + background-color: var(--greenLight); +} + +.bg-cyan.light { + color: var(--cyan); + background-color: var(--cyanLight); +} + +.bg-blue.light { + color: var(--blue); + background-color: var(--blueLight); +} + +.bg-purple.light { + color: var(--purple); + background-color: var(--purpleLight); +} + +.bg-mauve.light { + color: var(--mauve); + background-color: var(--mauveLight); +} + +.bg-pink.light { + color: var(--pink); + background-color: var(--pinkLight); +} + +.bg-brown.light { + color: var(--brown); + background-color: var(--brownLight); +} + +.bg-grey.light { + color: var(--grey); + background-color: var(--greyLight); +} + +.bg-gradual-red { + background-image: var(--gradualRed); + color: var(--white); +} + +.bg-gradual-orange { + background-image: var(--gradualOrange); + color: var(--white); +} + +.bg-gradual-green { + background-image: var(--gradualGreen); + color: var(--white); +} + +.bg-gradual-purple { + background-image: var(--gradualPurple); + color: var(--white); +} + +.bg-gradual-pink { + background-image: var(--gradualPink); + color: var(--white); +} + +.bg-gradual-blue { + background-image: var(--gradualBlue); + color: var(--white); +} + +.bg-tr { + background: rgba(236, 248, 129, 0.3) +} + +.bg-gradual-gray { + background-image: var(--gradualGray); + color: var(--white); +} + +.shadow[class*="-red"] { + box-shadow: var(--ShadowSize) var(--redShadow); +} + +.shadow[class*="-orange"] { + box-shadow: var(--ShadowSize) var(--orangeShadow); +} + +.shadow[class*="-yellow"] { + box-shadow: var(--ShadowSize) var(--yellowShadow); +} + +.shadow[class*="-olive"] { + box-shadow: var(--ShadowSize) var(--oliveShadow); +} + +.shadow[class*="-green"] { + box-shadow: var(--ShadowSize) var(--greenShadow); +} + +.shadow[class*="-cyan"] { + box-shadow: var(--ShadowSize) var(--cyanShadow); +} + +.shadow[class*="-blue"] { + box-shadow: var(--ShadowSize) var(--blueShadow); +} + +.shadow[class*="-purple"] { + box-shadow: var(--ShadowSize) var(--purpleShadow); +} + +.shadow[class*="-mauve"] { + box-shadow: var(--ShadowSize) var(--mauveShadow); +} + +.shadow[class*="-pink"] { + box-shadow: var(--ShadowSize) var(--pinkShadow); +} + +.shadow[class*="-brown"] { + box-shadow: var(--ShadowSize) var(--brownShadow); +} + +.shadow[class*="-grey"] { + box-shadow: var(--ShadowSize) var(--greyShadow); +} + +.shadow[class*="-gray"] { + box-shadow: var(--ShadowSize) var(--grayShadow); +} + +.shadow[class*="-black"] { + box-shadow: var(--ShadowSize) var(--blackShadow); +} + +.shadow[class*="-white"] { + box-shadow: var(--ShadowSize) var(--blackShadow); +} + +.text-shadow[class*="-red"] { + text-shadow: var(--ShadowSize) var(--redShadow); +} + +.text-shadow[class*="-orange"] { + text-shadow: var(--ShadowSize) var(--orangeShadow); +} + +.text-shadow[class*="-yellow"] { + text-shadow: var(--ShadowSize) var(--yellowShadow); +} + +.text-shadow[class*="-olive"] { + text-shadow: var(--ShadowSize) var(--oliveShadow); +} + +.text-shadow[class*="-green"] { + text-shadow: var(--ShadowSize) var(--greenShadow); +} + +.text-shadow[class*="-cyan"] { + text-shadow: var(--ShadowSize) var(--cyanShadow); +} + +.text-shadow[class*="-blue"] { + text-shadow: var(--ShadowSize) var(--blueShadow); +} + +.text-shadow[class*="-purple"] { + text-shadow: var(--ShadowSize) var(--purpleShadow); +} + +.text-shadow[class*="-mauve"] { + text-shadow: var(--ShadowSize) var(--mauveShadow); +} + +.text-shadow[class*="-pink"] { + text-shadow: var(--ShadowSize) var(--pinkShadow); +} + +.text-shadow[class*="-brown"] { + text-shadow: var(--ShadowSize) var(--brownShadow); +} + +.text-shadow[class*="-grey"] { + text-shadow: var(--ShadowSize) var(--greyShadow); +} + +.text-shadow[class*="-gray"] { + text-shadow: var(--ShadowSize) var(--grayShadow); +} + +.text-shadow[class*="-black"] { + text-shadow: var(--ShadowSize) var(--blackShadow); +} + +.bg-img { + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +.bg-mask { + background-color: var(--black); + position: relative; +} + +.bg-mask::after { + content: ""; + border-radius: inherit; + width: 100%; + height: 100%; + display: block; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; +} + +.bg-mask view, +.bg-mask cover-view { + z-index: 5; + position: relative; +} + +.bg-video { + position: relative; +} + +.bg-video video { + display: block; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + position: absolute; + top: 0; + z-index: 0; + pointer-events: none; +} + +/* ================== + 文本 + ==================== */ + +.text-xs { + font-size: 20rpx; +} + +.text-sm { + font-size: 24rpx; +} + +.text-df { + font-size: 28rpx; +} + +.text-lg { + font-size: 32rpx; +} + +.text-xl { + font-size: 36rpx; +} + +.text-xxl { + font-size: 44rpx; +} + +.text-sl { + font-size: 80rpx; +} + +.text-xsl { + font-size: 120rpx; +} + +.text-Abc { + text-transform: Capitalize; +} + +.text-ABC { + text-transform: Uppercase; +} + +.text-abc { + text-transform: Lowercase; +} + +.text-price::before { + content: "¥"; + font-size: 80%; + margin-right: 4rpx; +} + +.text-cut { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.text-cut-two { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.text-cut-width { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 370rpx; +} + +.text-bold { + font-weight: bold; +} + +.text-center { + text-align: center; +} + +.text-content { + line-height: 1.6; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-red, +.line-red, +.lines-red { + color: var(--red); +} + +.text-orange, +.line-orange, +.lines-orange { + color: var(--orange); +} + +.text-yellow, +.line-yellow, +.lines-yellow { + color: var(--yellow); +} + +.text-olive, +.line-olive, +.lines-olive { + color: var(--olive); +} + +.text-green, +.line-green, +.lines-green { + color: var(--green); +} + +.text-darkblue, +.line-darkblue, +.lines-darkblue { + color: var(--darkBlue); +} + +.text-cyan, +.line-cyan, +.lines-cyan { + color: var(--cyan); +} + +.text-blue, +.line-blue, +.lines-blue { + color: var(--blue); +} + +.text-purple, +.line-purple, +.lines-purple { + color: var(--purple); +} + +.text-mauve, +.line-mauve, +.lines-mauve { + color: var(--mauve); +} + +.text-pink, +.line-pink, +.lines-pink { + color: var(--pink); +} + +.text-brown, +.line-brown, +.lines-brown { + color: var(--brown); +} + +.text-grey, +.line-grey, +.lines-grey { + color: var(--grey); +} + +.text-gray, +.line-gray, +.lines-gray { + color: var(--gray); +} + +.text-black, +.line-black, +.lines-black { + color: var(--black); +} + +.text-white, +.line-white, +.lines-white { + color: var(--white); +} + +/* 自定义 */ + + +/* pages/mine/shop/mineshop.wxss */ + +.cardTitle { + color: #fff; + padding: 10rpx 40rpx; + font-size: 110rpx; + font-weight: 300; + transform: skew(-10deg, 0deg); + position: relative; + text-align: center; + text-shadow: 0px 0px 6rpx rgba(0, 0, 0, 0.3) +} + +.card-title-sm { + color: #fff; + padding: 10rpx 40rpx; + font-size: 60rpx; + font-weight: 300; + transform: skew(-10deg, 0deg); + position: relative; + text-align: center; + text-shadow: 0px 0px 6rpx rgba(0, 0, 0, 0.3) +} + +.cardTitle::before { + position: absolute; + width: 60rpx; + height: 6rpx; + border-radius: 20rpx; + display: block; + transform: skew(10deg, 0deg); +} + +.cardTitle::after { + position: absolute; + width: 140rpx; + border-radius: 6rpx; + height: 24rpx; + display: block; + bottom: 76rpx; + left: 90rpx; + transform: skew(10deg, 0deg); + opacity: 0.1; +} + +@font-face { + font-family: 'iconfont'; + src: url('data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAAL0AA0AAAAABuAAAAKeAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GVgCCQhEICoFIgUsLCgABNgIkAxAEIAWFCAc7G/EFyI7CtuUTYyoihNONcXgQEVRrZM/uPqJC9R9w0UQSwQIK9+ACqNiRAwSbikMy4vzv/ctzs6kgViBK4/2V3m7glqriKpOmpCuok+pM3Exrgwaysdw21XlCXbQtisOAogDTae0fEzfw24P9u77x786VNuXwyeFSiMvjICscjo1CwPvVkXr4sLDtwZ6b0IxekIQsCwUJUcQRNaS96QAchtfHf5FRT1KTWceSTTktSP/lghbRRDVhgwNchgBkZPQhMJ1IoI+pIVAUwS+X/wqWuL6AgKglAJFAuJ+HoJ43qgoJFFCPwHywCkABQMzvbGi83DBxfd/dKasq55m43zjwNvpPRXXJ6ut9d6P/0ermpr0rb93/ZnJpVf9JXfisafAKE91rytdv4eEfTJyfNueJmqipKfDaOeU29Orq7Twm1WjvFnrp7ayKsR51Tkn9eqdWhr2Fet0UeZpk8UsLg0KCNkPLBMKpx9qLE/bq7Gff8/Xv787eyuRLAAJBx5fpxfXWyX/1TcWgdquqJvJaVgHqJRAM199QAPmcAACUAigorEMo5iOQ0KgRFYBOtyBAj2AEQr0VCCR1diKQ1dstQFHvtAA1mjwDgVr1voJAo6kxFwSadMVRWZQGTIFAhnaZZNJqI5m1M4AFHSNr9Fona7U7Jhut8lzeZDh2wcw8Okwj7tgtfDRpF0o1U1MRcjgzGt/m4voS5dXjkWUg3g4sw4gZKDTSgTha1PToRrgKo6MnDfuIECoczqr0EaHhpeCibBVG1+cmekZikThO4EOgo6bkI7fGJxgFBTUfGjpqMkwzLhSu8na9URzJuXCIif+nIiNShXrfB2zBcRqJwoQRGodDNVNTAlPWhWJx02hTLYlGqikIKVJ7o54zXmOGRIRsMAAA') format('woff2'), + url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAS0AA0AAAAABuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEmAAAABoAAAAcjuL8y0dERUYAAAR4AAAAHgAAAB4AKQAKT1MvMgAAAaAAAABCAAAAVjyGSApjbWFwAAAB9AAAAD4AAAFCAA/pw2dhc3AAAARwAAAACAAAAAj//wADZ2x5ZgAAAkAAAAC3AAAAyKXtiRxoZWFkAAABMAAAADAAAAA2HF0Zv2hoZWEAAAFgAAAAHQAAACQHgwOFaG10eAAAAeQAAAAPAAAAEAwAAFpsb2NhAAACNAAAAAoAAAAKAGQAAG1heHAAAAGAAAAAHwAAACABDwBQbmFtZQAAAvgAAAFJAAACiCnmEVVwb3N0AAAERAAAACkAAAA7epyHrHjaY2BkYGAAYsUHE+Lj+W2+MnCzMIDAnflZD+F01P9JzEuZ84BcDgYmkCgATbQMO3jaY2BkYGBu+N/AEMPCAALMSxkYGVABCwBTNQMRAAAAeNpjYGRgYGBhcGEA0QwMTEDMBYQMDP/BfAYAD3EBYAB42mNgZGFgnMDAysDA1Ml0hoGBoR9CM75mMGLkAIoysDIzYAUBaa4pDA7PJJ5JMDf8b2CIYW5gaAAKM4LkAN59DAsAAHjaY2GAABYIjgIAANoAZwB42mNgYGBmgGAZBkYGELAB8hjBfBYGBSDNAoRA/jOJ//8hpORrqEoGRjYGGJOBkQlIMDGgAkaGYQ8AVqkHuAAAAAAAAAAAAAAAZAAAeNodirENwjAURP2xFGjASA75EhK2FJBT+VsC4jRACkpKOlr3DMMODJIdsgE9BQMYHHTFPd07Buz2ffAnv7MzYzAFBYs8K40DWawgz9alqfe+luMZ/KmxQJB6W2jg+2HZbYfjmDcnSJhnfBMjjIIiIvX2E9LYTE4fbJyjK/AY/cWSx79xOhntUFcKXiEYi0eB2McO5ZKMroVCaPu5UpQSQlFZY5KHttBC+SOWUsSu14IO5gdbfykbAHjafZA9TgMxEIWf8wckEkIgqF1RANr8lCkTKfQIpaNINt6QaNdeeZ1IOQEtFQeg5RgcgBsg0XIKXpZJkyJr7ejzm5nnsQGc4xsK/98l7oQVjvEoXMERMuEq9RfhGvlduI4WPoUb1H+Em7hVA+EWLtQbHVTthLub0m3LCmcYCFdwiifhKvWVcI38KlzHFT6EG9S/hJsY41e4hWtlqQzhYTBBYJxBY4oN4wIxHCySMgbWoTn0ZhLMTE83ehE7mzgbKO9XYpcDHmg554Ap7T23Zr5KJ/5gy4HUmG4eBUu2KY0uInQoG18snNXdqHOw/Z7ttrTYv2uBNcfsUQ1s1Pw92zPSSGwMr5CSNfIyt6QSU49oa6zxu2cp1vNeCIlOvMv0iMeaNHU6925p4sDi5/KMHH20uZI996gcPmNZCHm/3U7EIIpdhj+T2HEZAAAAeNpjYGKAAC4wyciADljAokyMTAKJxSWpRZnF2cW6hrrJ+QWVADoqBkcAAAAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwADAAEABAAAAAIAAAAAeNpjYGBgZACCq0vUOUD0nflZD2E0AER/BzYAAA==') format('woff'), + url('iconfont.ttf') format('truetype'); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 12rpx; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-star-red:before { + content: "\e618"; + color: red; +} \ No newline at end of file diff --git a/components/cartfoot/customcart.js b/components/cartfoot/customcart.js new file mode 100644 index 0000000..1d6ccc7 --- /dev/null +++ b/components/cartfoot/customcart.js @@ -0,0 +1,228 @@ +const app = getApp(); +Component({ + options: { + addGlobalClass: true, + multipleSlots: true + }, + lifetimes: { + attached() { + let shopCartData = app.globalData.shopCart + var amount = 0 + if (shopCartData.length > 0) { + shopCartData.forEach(it => { + if (it.shopId == this.properties.shopId) { + this.data.shopCart = this.data.shopCart.concat(it) + amount += it.buyNum + } + }) + } + this.setData({ + shopId: this.properties.shopId, + shopCart: this.data.shopCart, + buyAmount: amount + }) + } + }, + /** + * 组件的对外属性 + */ + properties: { + shopCart: { + type: Array, + default: [] + }, + goods: { + type: Object, + default: null + }, + shopId: { + type: String, + default: '', + }, + showBtn: { + type: Boolean, + default: true + } + }, + /** + * 组件的初始数据 + */ + data: { + shopCart: [], + show: false, + buyAmount: 0 + }, + /** + * 组件的方法列表 + */ + methods: { + //添加商品 + addCart(event) { + var _self = this + let goods = event.currentTarget.dataset.goods + goods.buyNum = 0 + if (goods != null) { + //判断是否存在 + var isExist = false + for (var i = 0; i < _self.data.shopCart.length; ++i) { + var it = _self.data.shopCart[i] + if (it.goodsId == goods.goodsId) { + //判断是否超出库存 + if (it.buyNum < goods.goodsTotal) { + it.buyNum += 1 + } else { + wx.showToast({ + title: '超出库存范围', + icon: 'error' + }) + } + isExist = true + break; + } + } + if (!isExist) { + //不存在 + goods.buyNum = 1 + _self.data.shopCart = _self.data.shopCart.concat(goods) + } + let amount = 0 + _self.data.shopCart.forEach(it => { + amount += it.buyNum + }) + _self.setData({ + shopCart: _self.data.shopCart, + buyAmount: amount + }) + app.globalData.shopCart = _self.data.shopCart + this.triggerEvent('refreshShopCart') + } + }, + //显示购物车列表 + showCart() { + let cart = { + shopId: this.data.shopId, + shopCart: this.data.shopCart + } + this.triggerEvent('showcart', cart) + }, + //立即订购 + nowOrder(event) { + if (this.data.shopCart.length > 0) { + wx.navigateTo({ + url: '/pages/shop/product/affirmorder?shopId=' + this.data.shopId, + }) + } else { + wx.showToast({ + title: '购物车空空如也', + icon: 'error' + }) + } + }, + onClose() { + this.setData({ + show: false + }) + }, + //外部添加商品 + listAddToCart(goods) { + let _self = this + goods.buyNum = 0 + if (goods != null) { + //判断是否存在 + var isExist = false + for (var i = 0; i < _self.data.shopCart.length; ++i) { + var it = _self.data.shopCart[i] + if (it.goodsId == goods.goodsId) { + //判断是否超出库存 + if (it.buyNum < goods.goodsTotal) { + it.buyNum += 1 + } else { + wx.showToast({ + title: '超出库存范围', + icon: 'error' + }) + } + isExist = true + break; + } + } + if (!isExist) { + //不存在 + goods.buyNum = 1 + _self.data.shopCart = _self.data.shopCart.concat(goods) + } + let amount = 0 + _self.data.shopCart.forEach(it => { + amount += it.buyNum + }) + _self.setData({ + shopCart: _self.data.shopCart, + buyAmount: amount + }) + app.globalData.shopCart = _self.data.shopCart + } + }, + //移除商品 + listRemoveCart(goods) { + let _self = this + goods.buyNum = 0 + if (goods != null) { + //判断是否存在 + var isExist = false + for (var i = 0; i < _self.data.shopCart.length; ++i) { + var it = _self.data.shopCart[i] + if (it.goodsId == goods.goodsId) { + //判断是否超出库存 + if (it.buyNum < goods.goodsTotal) { + it.buyNum -= 1 + } else { + wx.showToast({ + title: '超出库存范围', + icon: 'error' + }) + } + isExist = true + break; + } + } + let amount = 0 + _self.data.shopCart.forEach(it => { + amount += it.buyNum + }) + _self.setData({ + shopCart: _self.data.shopCart, + buyAmount: amount + }) + if (amount == 0) { + app.globalData.shopCart = [] + _self.setData({ + shopCart: [] + }) + } else { + app.globalData.shopCart = _self.data.shopCart + } + } + }, + //刷新 + refreshCart() { + let shopCartData = app.globalData.shopCart + this.setData({ + shopCart: [] + }) + var amount = 0 + if (shopCartData.length > 0) { + shopCartData.forEach(it => { + if (it.shopId == this.properties.shopId) { + this.data.shopCart = this.data.shopCart.concat(it) + amount += it.buyNum + } + }) + } + this.setData({ + shopId: this.properties.shopId, + shopCart: this.data.shopCart, + buyAmount: amount + }) + } + } +}) \ No newline at end of file diff --git a/components/cartfoot/customcart.json b/components/cartfoot/customcart.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/cartfoot/customcart.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/cartfoot/customcart.wxml b/components/cartfoot/customcart.wxml new file mode 100644 index 0000000..36ffc1f --- /dev/null +++ b/components/cartfoot/customcart.wxml @@ -0,0 +1,17 @@ + + + + + 收藏 + + + + {{buyAmount}} + + 购物车 + + 加入购物车 + + + 立即订购 + \ No newline at end of file diff --git a/components/cartfoot/customcart.wxss b/components/cartfoot/customcart.wxss new file mode 100644 index 0000000..8242ee1 --- /dev/null +++ b/components/cartfoot/customcart.wxss @@ -0,0 +1 @@ +/* components/cartfoot/cuscart.wxss */ \ No newline at end of file diff --git a/components/cuicustom/cu-custom.js b/components/cuicustom/cu-custom.js new file mode 100644 index 0000000..6ce2211 --- /dev/null +++ b/components/cuicustom/cu-custom.js @@ -0,0 +1,63 @@ +const app = getApp(); +Component({ + /** + * 组件的一些选项 + */ + options: { + addGlobalClass: true, + multipleSlots: true + }, + /** + * 组件的对外属性 + */ + properties: { + bgColor: { + type: String, + default: '' + }, + isCustom: { + type: [Boolean, String], + default: false + }, + isBack: { + type: [Boolean, String], + default: false + }, + isRelaunch: { + type: [Boolean, String], + default: false + }, + bgImage: { + type: String, + default: '' + }, + }, + /** + * 组件的初始数据 + */ + data: { + StatusBar: app.globalData.StatusBar, + CustomBar: app.globalData.CustomBar, + Custom: app.globalData.Custom + }, + /** + * 组件的方法列表 + */ + methods: { + BackPage() { + wx.navigateBack({ + delta: 1 + }); + }, + GoHome() { + wx.navigateBack({ + delta: 1, + }) + }, + toHome() { + wx.reLaunch({ + url: '/pages/index/index', + }) + } + } +}) \ No newline at end of file diff --git a/components/cuicustom/cu-custom.json b/components/cuicustom/cu-custom.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/cuicustom/cu-custom.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/cuicustom/cu-custom.wxml b/components/cuicustom/cu-custom.wxml new file mode 100644 index 0000000..e6284fc --- /dev/null +++ b/components/cuicustom/cu-custom.wxml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/cuicustom/cu-custom.wxss b/components/cuicustom/cu-custom.wxss new file mode 100644 index 0000000..07675e2 --- /dev/null +++ b/components/cuicustom/cu-custom.wxss @@ -0,0 +1 @@ +/* colorui/components/cu-custom.wxss */ \ No newline at end of file diff --git a/components/loadmore/index.js b/components/loadmore/index.js new file mode 100644 index 0000000..f7dc2e7 --- /dev/null +++ b/components/loadmore/index.js @@ -0,0 +1,35 @@ +Component({ + properties: { + mtype:{ + type:Number, + value:1, + observer: function (newVal, oldVal) { + this.setData({ + mtype: newVal + }) + } + }, + nodata_str:{ + type:String, + value:'暂无数据', + observer: function (newVal, oldVal) { + this.setData({ + nodata_str: newVal + }) + } + }, + hidden:{ + type:Boolean, + value:true, + observer: function (newVal, oldVal) { + this.setData({ + hidden: newVal + }) + } + }, + tipcolor:{ + type:String, + value:"#f9f9f9" + } + } +}) \ No newline at end of file diff --git a/components/loadmore/index.json b/components/loadmore/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/components/loadmore/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/components/loadmore/index.wxml b/components/loadmore/index.wxml new file mode 100644 index 0000000..54e506c --- /dev/null +++ b/components/loadmore/index.wxml @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/components/loadmore/index.wxss b/components/loadmore/index.wxss new file mode 100644 index 0000000..3925aa7 --- /dev/null +++ b/components/loadmore/index.wxss @@ -0,0 +1,57 @@ +.zan-loadmore{ + position:relative; + width:65%; + margin:0 auto; + line-height:20px; + font-size:14px; + text-align:center; + display: block; + vertical-align: middle +} +.zan-loading{ + width:20px; + height:20px; + display:inline-block; + vertical-align:middle; + animation:weuiLoading 1s steps(12,end) infinite; +} +.zan-loadmore .zan-loading{ + margin-right:4px +} +.zan-loadmore__tips{ + display:inline-block; + vertical-align:middle; + height:20px; + line-height:20px; + color:#999 +} +.zan-loadmore--nodata,.zan-loadmore--nomore{ + border-top:1rpx solid #e5e5e5; +} +.zan-loadmore--nodata{ + margin-top:20rpx +} +.zan-loadmore--nodata .zan-loadmore__tips{ + position:relative; + top:-11px; + padding:0 6px +} +.zan-loadmore--nomore .zan-loadmore__tips{ + position:relative; + top:-11px; + padding:0 6px +} +.zan-loadmore__dot{ + position:absolute; + left:50%; + top:10px; + margin-left:-2px; + margin-top:-2px; + content:" "; + width:4px; + height:4px; + border-radius:50%; + background-color:#e5e5e5; + display:inline-block; + vertical-align:middle; +} \ No newline at end of file diff --git a/images/icons/ic_organ_icon.png b/images/icons/ic_organ_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c13947aa3c957d0136bd97265ad7a4a4e9a0033d GIT binary patch literal 2357 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 r7@A-J+sv*<_S>N;eA!Bft-EJzVct7GBIncn&5K zF$gOw$|dbA2mXcGDr_7+k(i&e`LhvSF>lY5j{Qgl#8MWbrVoQ}+rm&LMmGj#;2_ci z-6DPH#z5Y$nSPe&@nZzwykF_@gsh3yq0pET$iPzf&G7&O&qQOVB3F&JCFdFPZnP-( z-lO)Ef4i=mT5Kiv0I0T?1`~8|lg=d??)Z4_qzaMy8e6l_mT;`S@TOp04y7Xl2fk$- z6u{RBMEef}elc|AsV7c-Zg>9!V!JqD4IX|UV8*%d9N*x;Zr22d4Z7D*-er literal 0 HcmV?d00001 diff --git a/images/icons/ic_success.png b/images/icons/ic_success.png new file mode 100644 index 0000000000000000000000000000000000000000..a39eb98d24a0aab8364d371cc1b09b79e1ec2adc GIT binary patch literal 6015 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 rDh=hePArT!*9&T}qYueQT-v0a literal 0 HcmV?d00001 diff --git a/images/icons/ic_testsite_icon.png b/images/icons/ic_testsite_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..53a181178c449bd6208abc89a03ad82fe4aca637 GIT binary patch literal 3787 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 w*g^8*_{ zrTSHs;7gzk0ay z!;ISaN4Z0o_;2Wx2F&(7n`%6bH2pH%etlHTpKiz* z)Ts=A+#G8-IVgImjCLX5sV<<&57-GRI9~@@_)tuu@ia}MS0Ki^lqr_=lc&(l!z9iFZo#czTco*F|DhZ23p`ZD-^2D?30p+80xq%F9(1W_?8wO_9A z*AMEOO=a)?P=RRSMcXv5AvAavbeh*y=9C~r5-$e#XDsq=7ontlRFKHw?3(S7 z^#GzRH0^PSHEXuzrfhc22u-ZsOzw5@g%!?2aD0JRdFl&=yHy@%#5{AXcU{8QaVrik4retf0H@jk?0< zCV4}*0Do$fe~t>j^ec!4~@M16-+N_SLeGP5Fl{Ue|WPZ<^zrwGfFk+TRo8mzu~S z-YCL%tg$aRbq0Qeg9r~S=9unAYCGbERTH_k-xHQRoV)3OTc&_w;J9%-)v7}~3oBUJ z+{o;=@kjQ0aOtjhC9hmBH)~9!5@ANyFj2l54*dM}5wtcvMtXtybW?LtnDF9m@6uMN tv^I^)c)ryS-8T7JrhhM6rHeUWz!#Z?#8ZR`hp}%8g11ltD*gAI{0n3GwJZPt literal 0 HcmV?d00001 diff --git a/images/icons/ic_user_center_bg.png b/images/icons/ic_user_center_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e68972cf9a7ba2c7e05b4c6c8a4ef0724c87061d GIT binary patch literal 13571 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 bACsArvikUcPlB>W_P(AsFw-y7bqxPsW{(Yj literal 0 HcmV?d00001 diff --git a/images/icons/ic_user_default.png b/images/icons/ic_user_default.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8642e11ff7ab70a8dec7e11412716ed1a50c28 GIT binary patch literal 3902 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 literal 0 HcmV?d00001 diff --git a/pages/answer/answerlist.js b/pages/answer/answerlist.js new file mode 100644 index 0000000..c3bf899 --- /dev/null +++ b/pages/answer/answerlist.js @@ -0,0 +1,65 @@ +// pages/answer/answerlist.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + answerList: [], + CustomBar: app.globalData.CustomBar, + countTime: 2000, //延迟搜索 时间 + searchWaiting: false, //是否等待搜索倒计时中, + searchKey: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + doSearch(e) { + this.setData({ + countTime: 2000, + searchKey: e.detail.value, + }) + //是否处于搜索倒计时中 + if (!this.data.searchWaiting) { + this.timer(); + } + }, + getResultsList(key) { + console.log('搜索中' + key) + }, + /** + * 延迟搜索 + */ + timer() { + var _self = this; + this.setData({ + searchWaiting: true + }) + let promise = new Promise((resolve, reject) => { + let setTimer = setInterval( + () => { + console.log('搜索倒计时: ' + _self.data.countTime); + _self.setData({ + countTime: _self.data.countTime - 1000 + }) + if (_self.data.countTime <= 0) { + console.log('开始搜索: ' + _self.data.searchKey); + _self.setData({ + countTime: 2000, + searchWaiting: false, + }) + resolve(setTimer) + } + }, 1000) + }) + promise.then((setTimer) => { + _self.getResultsList(_self.data.searchKey) + clearInterval(setTimer) //清除计时器 + }) + }, +}) \ No newline at end of file diff --git a/pages/answer/answerlist.json b/pages/answer/answerlist.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/answer/answerlist.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/answer/answerlist.wxml b/pages/answer/answerlist.wxml new file mode 100644 index 0000000..9b98dae --- /dev/null +++ b/pages/answer/answerlist.wxml @@ -0,0 +1,18 @@ + + + 报考问答 + + + + + + + + 2021年4-6月特种设备作业人员培训开班通知 + 新东方在线 + + + + + \ No newline at end of file diff --git a/pages/answer/answerlist.wxss b/pages/answer/answerlist.wxss new file mode 100644 index 0000000..79413d6 --- /dev/null +++ b/pages/answer/answerlist.wxss @@ -0,0 +1 @@ +/* pages/answer/answerlist.wxss */ \ No newline at end of file diff --git a/pages/branches/branchesdetail.js b/pages/branches/branchesdetail.js new file mode 100644 index 0000000..b9c6b67 --- /dev/null +++ b/pages/branches/branchesdetail.js @@ -0,0 +1,66 @@ +// pages/branches/branchesdetail.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/branches/branchesdetail.json b/pages/branches/branchesdetail.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/branches/branchesdetail.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/branches/branchesdetail.wxml b/pages/branches/branchesdetail.wxml new file mode 100644 index 0000000..e3d28e0 --- /dev/null +++ b/pages/branches/branchesdetail.wxml @@ -0,0 +1,4 @@ + + + 考试网点 + diff --git a/pages/branches/branchesdetail.wxss b/pages/branches/branchesdetail.wxss new file mode 100644 index 0000000..3819191 --- /dev/null +++ b/pages/branches/branchesdetail.wxss @@ -0,0 +1 @@ +/* pages/branches/branchesdetail.wxss */ \ No newline at end of file diff --git a/pages/branches/brancheslist.js b/pages/branches/brancheslist.js new file mode 100644 index 0000000..dde0458 --- /dev/null +++ b/pages/branches/brancheslist.js @@ -0,0 +1,64 @@ +// pages/branches/brancheslist.js +const app = getApp() +Page({ + /** + * 页面的初始数据 + */ + data: { + branchesList: [], + CustomBar: app.globalData.CustomBar, + countTime: 2000, //延迟搜索 时间 + searchWaiting: false, //是否等待搜索倒计时中, + searchKey: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + doSearch(e) { + this.setData({ + countTime: 2000, + searchKey: e.detail.value, + }) + //是否处于搜索倒计时中 + if (!this.data.searchWaiting) { + this.timer(); + } + }, + getResultsList(key) { + console.log('搜索中' + key) + }, + /** + * 延迟搜索 + */ + timer() { + var _self = this; + this.setData({ + searchWaiting: true + }) + let promise = new Promise((resolve, reject) => { + let setTimer = setInterval( + () => { + console.log('搜索倒计时: ' + _self.data.countTime); + _self.setData({ + countTime: _self.data.countTime - 1000 + }) + if (_self.data.countTime <= 0) { + console.log('开始搜索: ' + _self.data.searchKey); + _self.setData({ + countTime: 2000, + searchWaiting: false, + }) + resolve(setTimer) + } + }, 1000) + }) + promise.then((setTimer) => { + _self.getResultsList(_self.data.searchKey) + clearInterval(setTimer) //清除计时器 + }) + }, +}) \ No newline at end of file diff --git a/pages/branches/brancheslist.json b/pages/branches/brancheslist.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/branches/brancheslist.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/branches/brancheslist.wxml b/pages/branches/brancheslist.wxml new file mode 100644 index 0000000..cf3fa27 --- /dev/null +++ b/pages/branches/brancheslist.wxml @@ -0,0 +1,24 @@ + + + 考试网点 + + + + + + + + + + + + + + 2021年4-6月特种设备作业人员培训开班通知 + 新东方在线 + + + + + \ No newline at end of file diff --git a/pages/branches/brancheslist.wxss b/pages/branches/brancheslist.wxss new file mode 100644 index 0000000..72711f4 --- /dev/null +++ b/pages/branches/brancheslist.wxss @@ -0,0 +1 @@ +/* pages/branches/brancheslist.wxss */ \ No newline at end of file diff --git a/pages/card/carddetail.js b/pages/card/carddetail.js new file mode 100644 index 0000000..68ebdb6 --- /dev/null +++ b/pages/card/carddetail.js @@ -0,0 +1,66 @@ +// pages/card/carddetail.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/card/carddetail.json b/pages/card/carddetail.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/card/carddetail.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/card/carddetail.wxml b/pages/card/carddetail.wxml new file mode 100644 index 0000000..0825ce0 --- /dev/null +++ b/pages/card/carddetail.wxml @@ -0,0 +1,87 @@ + + 准考证 + + + + + + 2019年注册安全工程师准考证 + + + + + + + 考生姓名 + 张三 + + + 性别 + + + + 证件号码 + 111111111111111116 + + + 报名序号 + 1123412341234 + + + + + + + + + 档案号 + 1234123412341234123412341234 + + + 报考专业 + 建筑施工安全 + + + 工作单位 + 内蒙古呼和浩特市 + + + 考点地址 + 内蒙古呼和浩特市 + + + + 考试科目 + 考试时间 + 考场 + 座位 + + + 安全生产法律法规 + 2021-11-11 09:00-11:20 + 10 + 99 + + + 安全生产法律法规 + 2021-11-11 09:00-11:20 + 10 + 99 + + + 安全生产法律法规 + 2021-11-11 09:00-11:20 + 10 + 99 + + + 考试须知 + + 考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知考试须知 + + + + + \ No newline at end of file diff --git a/pages/card/carddetail.wxss b/pages/card/carddetail.wxss new file mode 100644 index 0000000..7c8c0a1 --- /dev/null +++ b/pages/card/carddetail.wxss @@ -0,0 +1 @@ +/* pages/card/carddetail.wxss */ \ No newline at end of file diff --git a/pages/card/cardlist.js b/pages/card/cardlist.js new file mode 100644 index 0000000..475a05b --- /dev/null +++ b/pages/card/cardlist.js @@ -0,0 +1,71 @@ +// pages/card/cardlist.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + cardList: [{}, {}, {}, {}], + CustomBar: app.globalData.CustomBar, + countTime: 2000, //延迟搜索 时间 + searchWaiting: false, //是否等待搜索倒计时中, + searchKey: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + showDetail(e) { + var item = e.currentTarget.dataset.item + wx.navigateTo({ + url: './carddetail', + }) + }, + doSearch(e) { + this.setData({ + countTime: 2000, + searchKey: e.detail.value, + }) + //是否处于搜索倒计时中 + if (!this.data.searchWaiting) { + this.timer(); + } + }, + getResultsList(key) { + console.log('搜索中' + key) + }, + /** + * 延迟搜索 + */ + timer() { + var _self = this; + this.setData({ + searchWaiting: true + }) + let promise = new Promise((resolve, reject) => { + let setTimer = setInterval( + () => { + console.log('搜索倒计时: ' + _self.data.countTime); + _self.setData({ + countTime: _self.data.countTime - 1000 + }) + if (_self.data.countTime <= 0) { + console.log('开始搜索: ' + _self.data.searchKey); + _self.setData({ + countTime: 2000, + searchWaiting: false, + }) + resolve(setTimer) + } + }, 1000) + }) + promise.then((setTimer) => { + _self.getResultsList(_self.data.searchKey) + clearInterval(setTimer) //清除计时器 + }) + }, +}) \ No newline at end of file diff --git a/pages/card/cardlist.json b/pages/card/cardlist.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/card/cardlist.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/card/cardlist.wxml b/pages/card/cardlist.wxml new file mode 100644 index 0000000..cda4f7e --- /dev/null +++ b/pages/card/cardlist.wxml @@ -0,0 +1,24 @@ + + + 准考证查询 + + + + + + + + + + + + + + 2021年4-6月特种设备作业人员培训开班通知 + 新东方在线 + + + + + \ No newline at end of file diff --git a/pages/card/cardlist.wxss b/pages/card/cardlist.wxss new file mode 100644 index 0000000..51bd1b4 --- /dev/null +++ b/pages/card/cardlist.wxss @@ -0,0 +1 @@ +/* pages/card/cardlist.wxss */ \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..3249732 --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,121 @@ +// index.js +// 获取应用实例 +const app = getApp() + +Page({ + data: { + index: 1, + noticeList: [{}, {}, {}, {}, {}], //开班通告 + answerList: [{}, {}, {}, {}, {}], //报考问答 + userIcon: '../../images/icons/ic_user_default.png', + nickName: '点击授权', + }, + onLoad() { + this.getUserInfo() + }, + //获取个人信息 + getUserInfo() { + let _self = this + try { + var name = wx.getStorageSync('nickName') + var icon = wx.getStorageSync('userIcon') + if (name) { + _self.setData({ + nickName: name + }) + } + if (icon) { + _self.setData({ + userIcon: icon + }) + } else { + wx.showModal({ + title: '提示', + content: '小程序需要您微信头像以及昵称用于展示,请授权.', + showCancel: false, + success(res) { + if (res.confirm) { + _self.getUserProfile(3) + } + } + }) + } + } catch (e) { + + } + }, + //显示更多数据 + showMoreList() { + if (this.data.index == 1) { + wx.navigateTo({ + url: '../notices/noticeslist', + }) + } else { + wx.navigateTo({ + url: '../answer/answerlist', + }) + } + }, + tabSelect(e) { + this.setData({ + index: e.currentTarget.dataset.id + }) + }, + choosePage(e) { + var pagePath = '' + switch (e.currentTarget.dataset.page) { + case '1': //培训机构查询 + pagePath = '../institutions/institutionslist' + break + case '2': //成绩查询 + pagePath = '../results/resultslist' + break + case '3': //准考证查询 + pagePath = '../card/cardlist' + break + case '4': //考试网点查询 + pagePath = '../branches/brancheslist' + break + } + wx.navigateTo({ + url: pagePath, + }) + }, // 获取个人信息 + getUserProfile(e) { + let _self = this + wx.getUserProfile({ + desc: '获取微信头像以及昵称用于展示', + success: (res) => { + wx.setStorage({ + data: res.userInfo.nickName, + key: 'nickName', + }) + wx.setStorage({ + data: res.userInfo.avatarUrl, + key: 'userIcon', + }) + _self.setData({ + nickName: res.userInfo.nickName, + userIcon: res.userInfo.avatarUrl + }) + }, + fail(err) { + console.log(err) + wx.showToast({ + title: '获取个人信息失败', + icon: 'error' + }) + } + }) + }, + showNoticeDetail(e) { + var item = e.currentTarget.dataset.item + wx.navigateTo({ + url: '../notices/noticedetail', + }) + }, + + showAnswerDetail(e) { + var item = e.currentTarget.dataset.item + } +}) \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..1b6e834 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,96 @@ + + + 包头应急管理局 + + + + + + + + + + + {{nickName}} + + + 查看个人详细信息 + + + + + + + + + + + + 培训机构查询 + + + + 成绩查询 + + + + 准考证查询 + + + + 考试网点查询 + + + + + + + + 开班通告 + + + 报考问答 + + + + 更多 + + + + + + + + + + + 2021年4-6月特种设备作业人员培训开班通知 + 新东方在线 + + + + + + + + + + + + + + 怎么注册? + 新东方在线 + + + + + + + + + \ No newline at end of file diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..1e6af71 --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1,115 @@ +/**index.wxss**/ +.userinfo-container { + position: absolute; + top: 130rpx; + z-index: 10; + display: flex; + min-height: 100rpx; + justify-content: space-between; + align-items: center; + padding: 30rpx 0rpx 30rpx 30rpx; +} + +.page-content { + position: absolute; + top: 320rpx; + display: flex; + min-height: 100rpx; + align-items: center; + width: 100%; + flex-direction: column; + align-content: center; + align-self: center; +} + +.page-function { + width: 95%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + padding: 20rpx; + background-color: white; + border: 10; + border-radius: 10rpx; + flex-wrap: nowrap; +} + +.userinfo-icon { + font-variant: small-caps; + margin: 0; + padding: 0; + display: inline-flex; + text-align: center; + justify-content: center; + align-items: center; + background-color: #ccc; + color: var(--white); + white-space: nowrap; + position: relative; + width: 128rpx; + height: 128rpx; + background-size: cover; + background-position: center; + vertical-align: middle; + font-size: 1.5em; + border: 3rpx solid #177ee6; +} + +.funcation-item { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.funcation-item image { + width: 110rpx; + height: 110rpx; +} + +.userinfo-content { + position: absolute; + left: 146rpx; + width: calc(100% - 96rpx - 60rpx - 120rpx - 20rpx); + line-height: 1.6em; + margin-left: 10px; +} + +.page-list { + display: flex; + width: 100%; + background-color: white; + margin-top: 20rpx; + justify-content: space-between; +} + +.showmore { + display: flex; + align-items: center; + margin-right: 24rpx; +} + +.page-list-content { + display: flex; + width: 95%; + flex-direction: column; + background-color: white; + margin-top: 20rpx; + padding: 10rpx; + min-height: 800rpx; +} + +.page-list-tab { + color: black; + font-size: medium; + border-bottom-width: 5rpx; + border-bottom-style: solid; + border-bottom-color: blue; +} + +.page-list-tab-sel { + color: blue; + font-size: medium; +} \ No newline at end of file diff --git a/pages/index/mineinfo.js b/pages/index/mineinfo.js new file mode 100644 index 0000000..2c9e679 --- /dev/null +++ b/pages/index/mineinfo.js @@ -0,0 +1,66 @@ +// pages/index/mineinfo.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/index/mineinfo.json b/pages/index/mineinfo.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/index/mineinfo.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/index/mineinfo.wxml b/pages/index/mineinfo.wxml new file mode 100644 index 0000000..ab22662 --- /dev/null +++ b/pages/index/mineinfo.wxml @@ -0,0 +1,4 @@ + + + 个人信息 + \ No newline at end of file diff --git a/pages/index/mineinfo.wxss b/pages/index/mineinfo.wxss new file mode 100644 index 0000000..7e2095c --- /dev/null +++ b/pages/index/mineinfo.wxss @@ -0,0 +1 @@ +/* pages/index/mineinfo.wxss */ \ No newline at end of file diff --git a/pages/institutions/institutionsdetail.js b/pages/institutions/institutionsdetail.js new file mode 100644 index 0000000..4832b55 --- /dev/null +++ b/pages/institutions/institutionsdetail.js @@ -0,0 +1,32 @@ +// pages/institutions/institutionsdetail.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + noticeContent: `

+

各有关单位:
+ 为满足企业对特种设备作业人员专业素质的需求,支持企业对特种设备作业人员进行专业知识、操作技能和安全教育工作,推进行业专业技术水平的提升,广州市特种设备行业协会对国家市场监管总局已取消的特种设备作业项目,组织行业相关特种设备作业人员进行继续教育培训考核,欢迎各相关单位学员自愿参加对考核合格的特种设备作业人员,由广州市特种设备行业协会发放《广州市特种设备行业协会培训证书》。本协会定于2020年1-3月举办下列培训班,现将有关事项通知如下:
+ +一、报名日期:即日起至开班前两个工作日办理报名交费手续。
+二、报名交费地点:广州市东风东路754号之八(城迹酒店)8楼。咨询电话: 020-34277197转分机号801~808或13342813020\\13500003204。
+三、报名须知:
+(一)年满18周岁,且不超过60周岁;
+(二)申请人员身体健康,能够适应所申请考核作业项目的需要;
+(三)具有初中及以上文化程度;
+(四)具备必要的安全技术知识与技能;
+(五)安全教育须提前1个月提交资料报名,且年龄不超65周岁。
+四、《广州市特种设备行业协会培训证书》考证、安全教育需提交资料
+

+
` + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, +}) \ No newline at end of file diff --git a/pages/institutions/institutionsdetail.json b/pages/institutions/institutionsdetail.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/institutions/institutionsdetail.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/institutions/institutionsdetail.wxml b/pages/institutions/institutionsdetail.wxml new file mode 100644 index 0000000..b85ff6e --- /dev/null +++ b/pages/institutions/institutionsdetail.wxml @@ -0,0 +1,17 @@ + + + 培训机构详情 + + + + + + 东方红培训机构 + + + + + + + + \ No newline at end of file diff --git a/pages/institutions/institutionsdetail.wxss b/pages/institutions/institutionsdetail.wxss new file mode 100644 index 0000000..0411503 --- /dev/null +++ b/pages/institutions/institutionsdetail.wxss @@ -0,0 +1 @@ +/* pages/institutions/institutionsdetail.wxss */ \ No newline at end of file diff --git a/pages/institutions/institutionslist.js b/pages/institutions/institutionslist.js new file mode 100644 index 0000000..df7db5a --- /dev/null +++ b/pages/institutions/institutionslist.js @@ -0,0 +1,81 @@ +// pages/institutions/institutionslist.js +const app = getApp() +var utils = require('../../utils/util.js') +Page({ + + /** + * 页面的初始数据 + */ + data: { + CustomBar: app.globalData.CustomBar, + institutionsList: [{}, {}], + countTime: 2000, //延迟搜索 时间 + searchWaiting: false, //是否等待搜索倒计时中, + searchKey: '', + mapLocs: [] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) {}, + doNavigation(e) { + var item = e.currentTarget.dataset.item + var locs = utils.bdMapToQQMap(116.34304, 39.948131) + var lng = locs[0] + var lat = locs[1] + wx.openLocation({ + latitude: Number(lat), + longitude: Number(lng), + }) + }, + showDetail(e) { + var item = e.currentTarget.dataset.item + wx.navigateTo({ + url: './institutionsdetail', + }) + }, + doSearch(e) { + this.setData({ + countTime: 2000, + searchKey: e.detail.value, + }) + //是否处于搜索倒计时中 + if (!this.data.searchWaiting) { + this.timer(); + } + }, + getInstitutionsList(key) { + console.log('搜索中' + key) + }, + /** + * 延迟搜索 + */ + timer() { + var _self = this; + this.setData({ + searchWaiting: true + }) + let promise = new Promise((resolve, reject) => { + let setTimer = setInterval( + () => { + console.log('搜索倒计时: ' + _self.data.countTime); + _self.setData({ + countTime: _self.data.countTime - 1000 + }) + if (_self.data.countTime <= 0) { + console.log('开始搜索: ' + _self.data.searchKey); + _self.setData({ + countTime: 2000, + searchWaiting: false, + }) + resolve(setTimer) + } + }, 1000) + }) + promise.then((setTimer) => { + _self.getInstitutionsList(_self.data.searchKey) + clearInterval(setTimer) //清除计时器 + }) + }, +}) \ No newline at end of file diff --git a/pages/institutions/institutionslist.json b/pages/institutions/institutionslist.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/institutions/institutionslist.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/institutions/institutionslist.wxml b/pages/institutions/institutionslist.wxml new file mode 100644 index 0000000..48536a4 --- /dev/null +++ b/pages/institutions/institutionslist.wxml @@ -0,0 +1,41 @@ + + + 培训机构 + + + + + + + + + + + + + + 包头市东方红培训机构 + + 0472-8888888 + + + 包头市昆区团结路88号包头市昆区团结路88号包头市昆区团结路88号包头市昆区团结路88号 + + + + + 2021-12-12 + + + + 去这里 + + + + + + + \ No newline at end of file diff --git a/pages/institutions/institutionslist.wxss b/pages/institutions/institutionslist.wxss new file mode 100644 index 0000000..492b950 --- /dev/null +++ b/pages/institutions/institutionslist.wxss @@ -0,0 +1 @@ +/* pages/institutions/institutionslist.wxss */ \ No newline at end of file diff --git a/pages/notices/noticedetail.js b/pages/notices/noticedetail.js new file mode 100644 index 0000000..2df46ae --- /dev/null +++ b/pages/notices/noticedetail.js @@ -0,0 +1,33 @@ +// pages/notices/noticedetail.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + noticeContent: `
+

各有关单位:
+ 为满足企业对特种设备作业人员专业素质的需求,支持企业对特种设备作业人员进行专业知识、操作技能和安全教育工作,推进行业专业技术水平的提升,广州市特种设备行业协会对国家市场监管总局已取消的特种设备作业项目,组织行业相关特种设备作业人员进行继续教育培训考核,欢迎各相关单位学员自愿参加对考核合格的特种设备作业人员,由广州市特种设备行业协会发放《广州市特种设备行业协会培训证书》。本协会定于2020年1-3月举办下列培训班,现将有关事项通知如下:
+ +一、报名日期:即日起至开班前两个工作日办理报名交费手续。
+二、报名交费地点:广州市东风东路754号之八(城迹酒店)8楼。咨询电话: 020-34277197转分机号801~808或13342813020\\13500003204。
+三、报名须知:
+(一)年满18周岁,且不超过60周岁;
+(二)申请人员身体健康,能够适应所申请考核作业项目的需要;
+(三)具有初中及以上文化程度;
+(四)具备必要的安全技术知识与技能;
+(五)安全教育须提前1个月提交资料报名,且年龄不超65周岁。
+四、《广州市特种设备行业协会培训证书》考证、安全教育需提交资料
+

+
` + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + +}) \ No newline at end of file diff --git a/pages/notices/noticedetail.json b/pages/notices/noticedetail.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/notices/noticedetail.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/notices/noticedetail.wxml b/pages/notices/noticedetail.wxml new file mode 100644 index 0000000..021c80e --- /dev/null +++ b/pages/notices/noticedetail.wxml @@ -0,0 +1,17 @@ + + + 通告详情 + + + + + + 2020年1-3月广州市特种设备行业协会培训证书开班通知 + + + + + + + + \ No newline at end of file diff --git a/pages/notices/noticedetail.wxss b/pages/notices/noticedetail.wxss new file mode 100644 index 0000000..8be5b11 --- /dev/null +++ b/pages/notices/noticedetail.wxss @@ -0,0 +1,2 @@ +/* pages/notices/noticedetail.wxss */ + diff --git a/pages/notices/noticeslist.js b/pages/notices/noticeslist.js new file mode 100644 index 0000000..47f7419 --- /dev/null +++ b/pages/notices/noticeslist.js @@ -0,0 +1,71 @@ +// pages/notices/noticeslist.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + noticeList: [], + CustomBar: app.globalData.CustomBar, + countTime: 2000, //延迟搜索 时间 + searchWaiting: false, //是否等待搜索倒计时中, + searchKey: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + showDetail(e) { + var item = e.currentTarget.dataset.item + wx.navigateTo({ + url: './noticedetail', + }) + }, + doSearch(e) { + this.setData({ + countTime: 2000, + searchKey: e.detail.value, + }) + //是否处于搜索倒计时中 + if (!this.data.searchWaiting) { + this.timer(); + } + }, + getResultsList(key) { + console.log('搜索中' + key) + }, + /** + * 延迟搜索 + */ + timer() { + var _self = this; + this.setData({ + searchWaiting: true + }) + let promise = new Promise((resolve, reject) => { + let setTimer = setInterval( + () => { + console.log('搜索倒计时: ' + _self.data.countTime); + _self.setData({ + countTime: _self.data.countTime - 1000 + }) + if (_self.data.countTime <= 0) { + console.log('开始搜索: ' + _self.data.searchKey); + _self.setData({ + countTime: 2000, + searchWaiting: false, + }) + resolve(setTimer) + } + }, 1000) + }) + promise.then((setTimer) => { + _self.getResultsList(_self.data.searchKey) + clearInterval(setTimer) //清除计时器 + }) + }, +}) \ No newline at end of file diff --git a/pages/notices/noticeslist.json b/pages/notices/noticeslist.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/notices/noticeslist.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/notices/noticeslist.wxml b/pages/notices/noticeslist.wxml new file mode 100644 index 0000000..25c470f --- /dev/null +++ b/pages/notices/noticeslist.wxml @@ -0,0 +1,24 @@ + + + 开班通告 + + + + + + + + + + + + + + 2021年4-6月特种设备作业人员培训开班通知 + 新东方在线 + + + + + \ No newline at end of file diff --git a/pages/notices/noticeslist.wxss b/pages/notices/noticeslist.wxss new file mode 100644 index 0000000..5ed68d8 --- /dev/null +++ b/pages/notices/noticeslist.wxss @@ -0,0 +1 @@ +/* pages/notices/noticeslist.wxss */ \ No newline at end of file diff --git a/pages/results/resultsdetail.js b/pages/results/resultsdetail.js new file mode 100644 index 0000000..1a1dacd --- /dev/null +++ b/pages/results/resultsdetail.js @@ -0,0 +1,67 @@ +// pages/results/resultsdetail.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + scoreList: [{}, {}, {}, {}, {}, {}, {}, {}, {}] + }, + + /** + * 生命周期函数--监听页面加载 + */ + 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/results/resultsdetail.json b/pages/results/resultsdetail.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/results/resultsdetail.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/results/resultsdetail.wxml b/pages/results/resultsdetail.wxml new file mode 100644 index 0000000..6f2a203 --- /dev/null +++ b/pages/results/resultsdetail.wxml @@ -0,0 +1,25 @@ + + + 成绩单 + + + + + + + + 亲爱的同学,您的2021年12月安全考试成绩如下: + + + + 考试科目 + 成绩 + + + 安全生产法律法规 + 100 + + + + + \ No newline at end of file diff --git a/pages/results/resultsdetail.wxss b/pages/results/resultsdetail.wxss new file mode 100644 index 0000000..f2caadf --- /dev/null +++ b/pages/results/resultsdetail.wxss @@ -0,0 +1 @@ +/* pages/results/resultsdetail.wxss */ \ No newline at end of file diff --git a/pages/results/resultslist.js b/pages/results/resultslist.js new file mode 100644 index 0000000..75291ca --- /dev/null +++ b/pages/results/resultslist.js @@ -0,0 +1,71 @@ +// pages/results/resultslist.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + resultsList: [{}, {}], + CustomBar: app.globalData.CustomBar, + countTime: 2000, //延迟搜索 时间 + searchWaiting: false, //是否等待搜索倒计时中, + searchKey: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + showDetail(e) { + var item = e.currentTarget.dataset.item + wx.navigateTo({ + url: './resultsdetail', + }) + }, + doSearch(e) { + this.setData({ + countTime: 2000, + searchKey: e.detail.value, + }) + //是否处于搜索倒计时中 + if (!this.data.searchWaiting) { + this.timer(); + } + }, + getResultsList(key) { + console.log('搜索中' + key) + }, + /** + * 延迟搜索 + */ + timer() { + var _self = this; + this.setData({ + searchWaiting: true + }) + let promise = new Promise((resolve, reject) => { + let setTimer = setInterval( + () => { + console.log('搜索倒计时: ' + _self.data.countTime); + _self.setData({ + countTime: _self.data.countTime - 1000 + }) + if (_self.data.countTime <= 0) { + console.log('开始搜索: ' + _self.data.searchKey); + _self.setData({ + countTime: 2000, + searchWaiting: false, + }) + resolve(setTimer) + } + }, 1000) + }) + promise.then((setTimer) => { + _self.getResultsList(_self.data.searchKey) + clearInterval(setTimer) //清除计时器 + }) + }, +}) \ No newline at end of file diff --git a/pages/results/resultslist.json b/pages/results/resultslist.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/results/resultslist.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/results/resultslist.wxml b/pages/results/resultslist.wxml new file mode 100644 index 0000000..ccef27f --- /dev/null +++ b/pages/results/resultslist.wxml @@ -0,0 +1,27 @@ + + + 成绩查询 + + + + + + + + + + + + + + 2021年4月考试成绩 + + + 考试日期:2021-12-12 + + + + + + \ No newline at end of file diff --git a/pages/results/resultslist.wxss b/pages/results/resultslist.wxss new file mode 100644 index 0000000..449f12c --- /dev/null +++ b/pages/results/resultslist.wxss @@ -0,0 +1 @@ +/* pages/results/resultslist.wxss */ \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..c09c6a3 --- /dev/null +++ b/project.config.json @@ -0,0 +1,75 @@ +{ + "description": "项目配置文件", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": true, + "es6": true, + "enhance": false, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": false, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "useMultiFrameRuntime": true, + "useApiHook": true, + "useApiHostProcess": false, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "enableEngineNative": false, + "bundle": false, + "useIsolateContext": true, + "useCompilerModule": true, + "userConfirmedUseCompilerModuleSwitch": false, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true + }, + "compileType": "miniprogram", + "libVersion": "2.16.1", + "appid": "wx501e9ce64f25c418", + "projectname": "teachingsystem", + "debugOptions": { + "hidedInDevtools": [] + }, + "scripts": {}, + "staticServerOptions": { + "baseURL": "", + "servePath": "" + }, + "isGameTourist": false, + "condition": { + "search": { + "list": [] + }, + "conversation": { + "list": [] + }, + "game": { + "list": [] + }, + "plugin": { + "list": [] + }, + "gamePlugin": { + "list": [] + }, + "miniprogram": { + "list": [] + } + } +} \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..6d78a94 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,58 @@ +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}` +} +/** + * 坐标转换,百度地图坐标转换成腾讯地图坐标 + * lng 腾讯经度(pointy) + * lat 腾讯纬度(pointx) + * 经度>纬度 + */ +function bdMapToQQMap(lng, lat) { + if (lng == null || lng == '' || lat == null || lat == '') { + return [lng, lat] + } + var x_pi = 3.14159265358979324; + var x = parseFloat(lng) - 0.0065; + var y = parseFloat(lat) - 0.006; + var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); + var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); + var lng = (z * Math.cos(theta)).toFixed(7); + var lat = (z * Math.sin(theta)).toFixed(7); + return [lng, lat]; +} +/** + * 坐标转换,腾讯地图转换成百度地图坐标 + * lng 腾讯经度(pointy) + * lat 腾讯纬度(pointx) + * 经度>纬度 + */ +function qqMapToBMap(lng, lat) { + if (lng == null || lng == '' || lat == null || lat == '') + return [lng, lat]; + var x_pi = 3.14159265358979324; + var x = parseFloat(lng); + var y = parseFloat(lat); + var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); + var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); + var lng = (z * Math.cos(theta) + 0.0065).toFixed(5); + var lat = (z * Math.sin(theta) + 0.006).toFixed(5); + return [lng, lat]; + +} +module.exports = { + formatTime, + bdMapToQQMap, + qqMapToBMap +} \ No newline at end of file diff --git a/vant/dist/action-sheet/index.d.ts b/vant/dist/action-sheet/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/action-sheet/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/action-sheet/index.js b/vant/dist/action-sheet/index.js new file mode 100644 index 0000000..f3f6d0f --- /dev/null +++ b/vant/dist/action-sheet/index.js @@ -0,0 +1,62 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +import { openType } from '../mixins/open-type'; +VantComponent({ + mixins: [button, openType], + props: { + show: Boolean, + title: String, + cancelText: String, + description: String, + round: { + type: Boolean, + value: true, + }, + zIndex: { + type: Number, + value: 100, + }, + actions: { + type: Array, + value: [], + }, + overlay: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + closeOnClickAction: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + }, + methods: { + onSelect(event) { + const { index } = event.currentTarget.dataset; + const item = this.data.actions[index]; + if (item && !item.disabled && !item.loading) { + this.$emit('select', item); + if (this.data.closeOnClickAction) { + this.onClose(); + } + } + }, + onCancel() { + this.$emit('cancel'); + }, + onClose() { + this.$emit('close'); + }, + onClickOverlay() { + this.$emit('click-overlay'); + this.onClose(); + }, + }, +}); diff --git a/vant/dist/action-sheet/index.json b/vant/dist/action-sheet/index.json new file mode 100644 index 0000000..19bf989 --- /dev/null +++ b/vant/dist/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-popup": "../popup/index", + "van-loading": "../loading/index" + } +} diff --git a/vant/dist/action-sheet/index.wxml b/vant/dist/action-sheet/index.wxml new file mode 100644 index 0000000..c2bebca --- /dev/null +++ b/vant/dist/action-sheet/index.wxml @@ -0,0 +1,69 @@ + + + + + {{ title }} + + + + {{ description }} + + + + + + + + + + {{ cancelText }} + + + diff --git a/vant/dist/action-sheet/index.wxss b/vant/dist/action-sheet/index.wxss new file mode 100644 index 0000000..08f5182 --- /dev/null +++ b/vant/dist/action-sheet/index.wxss @@ -0,0 +1,111 @@ +@import '../common/index.wxss'; + +.van-action-sheet { + max-height: 60% !important; + max-height: var(--action-sheet-max-height, 60%) !important; + color: #323233; + color: var(--action-sheet-item-text-color, #323233) +} + +.van-action-sheet__cancel, +.van-action-sheet__item { + padding: 14px 16px; + text-align: center; + font-size: 16px; + font-size: var(--action-sheet-item-font-size, 16px); + line-height: 22px; + line-height: var(--action-sheet-item-line-height, 22px); + background-color: #fff; + background-color: var(--action-sheet-item-background, #fff) +} + +.van-action-sheet__cancel--hover, +.van-action-sheet__item--hover { + background-color: #f2f3f5; + background-color: var(--active-color, #f2f3f5) +} + +.van-action-sheet__cancel:after, +.van-action-sheet__item:after { + border-width: 0 +} + +.van-action-sheet__cancel { + color: #646566; + color: var(--action-sheet-cancel-text-color, #646566) +} + +.van-action-sheet__gap { + display: block; + height: 8px; + height: var(--action-sheet-cancel-padding-top, 8px); + background-color: #f7f8fa; + background-color: var(--action-sheet-cancel-padding-color, #f7f8fa) +} + +.van-action-sheet__item--disabled { + color: #c8c9cc; + color: var(--action-sheet-item-disabled-text-color, #c8c9cc) +} + +.van-action-sheet__item--disabled.van-action-sheet__item--hover { + background-color: #fff; + background-color: var(--action-sheet-item-background, #fff) +} + +.van-action-sheet__subname { + margin-top: 8px; + margin-top: var(--padding-xs, 8px); + font-size: 12px; + font-size: var(--action-sheet-subname-font-size, 12px); + color: #969799; + color: var(--action-sheet-subname-color, #969799); + line-height: 20px; + line-height: var(--action-sheet-subname-line-height, 20px) +} + +.van-action-sheet__header { + text-align: center; + font-weight: 500; + font-weight: var(--font-weight-bold, 500); + font-size: 16px; + font-size: var(--action-sheet-header-font-size, 16px); + line-height: 48px; + line-height: var(--action-sheet-header-height, 48px); + position: fixed; + width: 100%; + background: #fff; + z-index: 100; + border-top-right-radius: 100rpx; + border-top-left-radius: 100rpx; +} + +.van-action-sheet__description { + text-align: center; + padding: 20px 16px; + padding: 20px var(--padding-md, 16px); + color: #969799; + color: var(--action-sheet-description-color, #969799); + font-size: 14px; + font-size: var(--action-sheet-description-font-size, 14px); + line-height: 20px; + line-height: var(--action-sheet-description-line-height, 20px) +} + +.van-action-sheet__close { + position: absolute !important; + top: 0; + right: 0; + line-height: inherit !important; + padding: 0 16px; + padding: var(--action-sheet-close-icon-padding, 0 16px); + font-size: 22px !important; + font-size: var(--action-sheet-close-icon-size, 22px) !important; + color: #c8c9cc; + color: var(--action-sheet-close-icon-color, #c8c9cc) +} + +.van-action-sheet__loading { + display: -webkit-flex !important; + display: flex !important +} \ No newline at end of file diff --git a/vant/dist/area/index.d.ts b/vant/dist/area/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/area/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/area/index.js b/vant/dist/area/index.js new file mode 100644 index 0000000..3b3494d --- /dev/null +++ b/vant/dist/area/index.js @@ -0,0 +1,232 @@ +import { VantComponent } from '../common/component'; +import { pickerProps } from '../picker/shared'; +import { requestAnimationFrame } from '../common/utils'; +const EMPTY_CODE = '000000'; +VantComponent({ + classes: ['active-class', 'toolbar-class', 'column-class'], + props: Object.assign(Object.assign({}, pickerProps), { + value: { + type: String, + observer(value) { + this.code = value; + this.setValues(); + }, + }, + areaList: { + type: Object, + value: {}, + observer: 'setValues', + }, + columnsNum: { + type: null, + value: 3, + }, + columnsPlaceholder: { + type: Array, + observer(val) { + this.setData({ + typeToColumnsPlaceholder: { + province: val[0] || '', + city: val[1] || '', + county: val[2] || '', + }, + }); + }, + }, + }), + data: { + columns: [{ values: [] }, { values: [] }, { values: [] }], + typeToColumnsPlaceholder: {}, + }, + mounted() { + requestAnimationFrame(() => { + this.setValues(); + }); + }, + methods: { + getPicker() { + if (this.picker == null) { + this.picker = this.selectComponent('.van-area__picker'); + } + return this.picker; + }, + onCancel(event) { + this.emit('cancel', event.detail); + }, + onConfirm(event) { + const { index } = event.detail; + let { value } = event.detail; + value = this.parseValues(value); + this.emit('confirm', { value, index }); + }, + emit(type, detail) { + detail.values = detail.value; + delete detail.value; + this.$emit(type, detail); + }, + parseValues(values) { + const { columnsPlaceholder } = this.data; + return values.map((value, index) => { + if ( + value && + (!value.code || value.name === columnsPlaceholder[index]) + ) { + return Object.assign(Object.assign({}, value), { + code: '', + name: '', + }); + } + return value; + }); + }, + onChange(event) { + const { index, picker, value } = event.detail; + this.code = value[index].code; + this.setValues().then(() => { + this.$emit('change', { + picker, + values: this.parseValues(picker.getValues()), + index, + }); + }); + }, + getConfig(type) { + const { areaList } = this.data; + return (areaList && areaList[`${type}_list`]) || {}; + }, + getList(type, code) { + if (type !== 'province' && !code) { + return []; + } + const { typeToColumnsPlaceholder } = this.data; + const list = this.getConfig(type); + let result = Object.keys(list).map((code) => ({ + code, + name: list[code], + })); + if (code != null) { + // oversea code + if (code[0] === '9' && type === 'city') { + code = '9'; + } + result = result.filter((item) => item.code.indexOf(code) === 0); + } + if (typeToColumnsPlaceholder[type] && result.length) { + // set columns placeholder + const codeFill = + type === 'province' + ? '' + : type === 'city' + ? EMPTY_CODE.slice(2, 4) + : EMPTY_CODE.slice(4, 6); + result.unshift({ + code: `${code}${codeFill}`, + name: typeToColumnsPlaceholder[type], + }); + } + return result; + }, + getIndex(type, code) { + let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6; + const list = this.getList(type, code.slice(0, compareNum - 2)); + // oversea code + if (code[0] === '9' && type === 'province') { + compareNum = 1; + } + code = code.slice(0, compareNum); + for (let i = 0; i < list.length; i++) { + if (list[i].code.slice(0, compareNum) === code) { + return i; + } + } + return 0; + }, + setValues() { + const picker = this.getPicker(); + if (!picker) { + return; + } + let code = this.code || this.getDefaultCode(); + const provinceList = this.getList('province'); + const cityList = this.getList('city', code.slice(0, 2)); + const stack = []; + const indexes = []; + const { columnsNum } = this.data; + if (columnsNum >= 1) { + stack.push(picker.setColumnValues(0, provinceList, false)); + indexes.push(this.getIndex('province', code)); + } + if (columnsNum >= 2) { + stack.push(picker.setColumnValues(1, cityList, false)); + indexes.push(this.getIndex('city', code)); + if (cityList.length && code.slice(2, 4) === '00') { + [{ code }] = cityList; + } + } + if (columnsNum === 3) { + stack.push( + picker.setColumnValues( + 2, + this.getList('county', code.slice(0, 4)), + false + ) + ); + indexes.push(this.getIndex('county', code)); + } + return Promise.all(stack) + .catch(() => {}) + .then(() => picker.setIndexes(indexes)) + .catch(() => {}); + }, + getDefaultCode() { + const { columnsPlaceholder } = this.data; + if (columnsPlaceholder.length) { + return EMPTY_CODE; + } + const countyCodes = Object.keys(this.getConfig('county')); + if (countyCodes[0]) { + return countyCodes[0]; + } + const cityCodes = Object.keys(this.getConfig('city')); + if (cityCodes[0]) { + return cityCodes[0]; + } + return ''; + }, + getValues() { + const picker = this.getPicker(); + if (!picker) { + return []; + } + return this.parseValues(picker.getValues().filter((value) => !!value)); + }, + getDetail() { + const values = this.getValues(); + const area = { + code: '', + country: '', + province: '', + city: '', + county: '', + }; + if (!values.length) { + return area; + } + const names = values.map((item) => item.name); + area.code = values[values.length - 1].code; + if (area.code[0] === '9') { + area.country = names[1] || ''; + area.province = names[2] || ''; + } else { + area.province = names[0] || ''; + area.city = names[1] || ''; + area.county = names[2] || ''; + } + return area; + }, + reset(code) { + this.code = code || ''; + return this.setValues(); + }, + }, +}); diff --git a/vant/dist/area/index.json b/vant/dist/area/index.json new file mode 100644 index 0000000..a778e91 --- /dev/null +++ b/vant/dist/area/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/vant/dist/area/index.wxml b/vant/dist/area/index.wxml new file mode 100644 index 0000000..f7dc51f --- /dev/null +++ b/vant/dist/area/index.wxml @@ -0,0 +1,20 @@ + + + diff --git a/vant/dist/area/index.wxs b/vant/dist/area/index.wxs new file mode 100644 index 0000000..07723c1 --- /dev/null +++ b/vant/dist/area/index.wxs @@ -0,0 +1,8 @@ +/* eslint-disable */ +function displayColumns(columns, columnsNum) { + return columns.slice(0, +columnsNum); +} + +module.exports = { + displayColumns: displayColumns, +}; diff --git a/vant/dist/area/index.wxss b/vant/dist/area/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/area/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/button/index.d.ts b/vant/dist/button/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/button/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/button/index.js b/vant/dist/button/index.js new file mode 100644 index 0000000..f2fe270 --- /dev/null +++ b/vant/dist/button/index.js @@ -0,0 +1,58 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +import { openType } from '../mixins/open-type'; +import { canIUseFormFieldButton } from '../common/version'; +const mixins = [button, openType]; +if (canIUseFormFieldButton()) { + mixins.push('wx://form-field-button'); +} +VantComponent({ + mixins, + classes: ['hover-class', 'loading-class'], + data: { + baseStyle: '', + }, + props: { + formType: String, + icon: String, + classPrefix: { + type: String, + value: 'van-icon', + }, + plain: Boolean, + block: Boolean, + round: Boolean, + square: Boolean, + loading: Boolean, + hairline: Boolean, + disabled: Boolean, + loadingText: String, + customStyle: String, + loadingType: { + type: String, + value: 'circular', + }, + type: { + type: String, + value: 'default', + }, + dataset: null, + size: { + type: String, + value: 'normal', + }, + loadingSize: { + type: String, + value: '20px', + }, + color: String, + }, + methods: { + onClick() { + if (!this.data.loading) { + this.$emit('click'); + } + }, + noop() {}, + }, +}); diff --git a/vant/dist/button/index.json b/vant/dist/button/index.json new file mode 100644 index 0000000..e00a588 --- /dev/null +++ b/vant/dist/button/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-loading": "../loading/index" + } +} diff --git a/vant/dist/button/index.wxml b/vant/dist/button/index.wxml new file mode 100644 index 0000000..e4cec8a --- /dev/null +++ b/vant/dist/button/index.wxml @@ -0,0 +1,53 @@ + + + + diff --git a/vant/dist/button/index.wxs b/vant/dist/button/index.wxs new file mode 100644 index 0000000..8b649fe --- /dev/null +++ b/vant/dist/button/index.wxs @@ -0,0 +1,39 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); + +function rootStyle(data) { + if (!data.color) { + return data.customStyle; + } + + var properties = { + color: data.plain ? data.color : '#fff', + background: data.plain ? null : data.color, + }; + + // hide border when color is linear-gradient + if (data.color.indexOf('gradient') !== -1) { + properties.border = 0; + } else { + properties['border-color'] = data.color; + } + + return style([properties, data.customStyle]); +} + +function loadingColor(data) { + if (data.plain) { + return data.color ? data.color : '#c9c9c9'; + } + + if (data.type === 'default') { + return '#c9c9c9'; + } + + return '#fff'; +} + +module.exports = { + rootStyle: rootStyle, + loadingColor: loadingColor, +}; diff --git a/vant/dist/button/index.wxss b/vant/dist/button/index.wxss new file mode 100644 index 0000000..5a591fb --- /dev/null +++ b/vant/dist/button/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-button{position:relative;display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:0;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%;height:44px;height:var(--button-default-height,44px);line-height:20px;line-height:var(--button-line-height,20px);font-size:16px;font-size:var(--button-default-font-size,16px);transition:opacity .2s;transition:opacity var(--animation-duration-fast,.2s);border-radius:2px;border-radius:var(--button-border-radius,2px)}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:" ";background-color:#000;background-color:var(--black,#000);border-color:#000;border-color:var(--black,#000)}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{color:#323233;color:var(--button-default-color,#323233);background:#fff;background:var(--button-default-background-color,#fff);border:1px solid #ebedf0;border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0)}.van-button--primary{color:#fff;color:var(--button-primary-color,#fff);background:#07c160;background:var(--button-primary-background-color,#07c160);border:1px solid #07c160;border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160)}.van-button--info{color:#fff;color:var(--button-info-color,#fff);background:#1989fa;background:var(--button-info-background-color,#1989fa);border:1px solid #1989fa;border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa)}.van-button--danger{color:#fff;color:var(--button-danger-color,#fff);background:#ee0a24;background:var(--button-danger-background-color,#ee0a24);border:1px solid #ee0a24;border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24)}.van-button--warning{color:#fff;color:var(--button-warning-color,#fff);background:#ff976a;background:var(--button-warning-background-color,#ff976a);border:1px solid #ff976a;border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a)}.van-button--plain{background:#fff;background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:#07c160;color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:#1989fa;color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:#ee0a24;color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:#ff976a;color:var(--button-warning-background-color,#ff976a)}.van-button--large{width:100%;height:50px;height:var(--button-large-height,50px)}.van-button--normal{padding:0 15px;font-size:14px;font-size:var(--button-normal-font-size,14px)}.van-button--small{min-width:60px;min-width:var(--button-small-min-width,60px);height:30px;height:var(--button-small-height,30px);padding:0 8px;padding:0 var(--padding-xs,8px);font-size:12px;font-size:var(--button-small-font-size,12px)}.van-button--mini{display:inline-block;min-width:50px;min-width:var(--button-mini-min-width,50px);height:22px;height:var(--button-mini-height,22px);font-size:10px;font-size:var(--button-mini-font-size,10px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:-webkit-flex;display:flex;width:100%}.van-button--round{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5;opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{min-width:1em;line-height:inherit!important;vertical-align:top}.van-button--hairline{padding-top:1px;border-width:0}.van-button--hairline:after{border-color:inherit;border-width:1px;border-radius:4px;border-radius:calc(var(--button-border-radius, 2px)*2)}.van-button--hairline.van-button--round:after{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0} \ No newline at end of file diff --git a/vant/dist/calendar/calendar.wxml b/vant/dist/calendar/calendar.wxml new file mode 100644 index 0000000..26938c1 --- /dev/null +++ b/vant/dist/calendar/calendar.wxml @@ -0,0 +1,65 @@ + +
+ +
+ + + + + + + + + + + + {{ + computed.getButtonDisabled(type, currentDate) + ? confirmDisabledText + : confirmText + }} + + +
diff --git a/vant/dist/calendar/components/header/index.d.ts b/vant/dist/calendar/components/header/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/calendar/components/header/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/calendar/components/header/index.js b/vant/dist/calendar/components/header/index.js new file mode 100644 index 0000000..bf9243f --- /dev/null +++ b/vant/dist/calendar/components/header/index.js @@ -0,0 +1,16 @@ +import { VantComponent } from '../../../common/component'; +VantComponent({ + props: { + title: { + type: String, + value: '日期选择', + }, + subtitle: String, + showTitle: Boolean, + showSubtitle: Boolean, + }, + data: { + weekdays: ['日', '一', '二', '三', '四', '五', '六'], + }, + methods: {}, +}); diff --git a/vant/dist/calendar/components/header/index.json b/vant/dist/calendar/components/header/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/calendar/components/header/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/calendar/components/header/index.wxml b/vant/dist/calendar/components/header/index.wxml new file mode 100644 index 0000000..eb8e4b4 --- /dev/null +++ b/vant/dist/calendar/components/header/index.wxml @@ -0,0 +1,16 @@ + + + + {{ title }} + + + + {{ subtitle }} + + + + + {{ item }} + + + diff --git a/vant/dist/calendar/components/header/index.wxss b/vant/dist/calendar/components/header/index.wxss new file mode 100644 index 0000000..4075e48 --- /dev/null +++ b/vant/dist/calendar/components/header/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar__header{-webkit-flex-shrink:0;flex-shrink:0;box-shadow:0 2px 10px rgba(125,126,128,.16);box-shadow:var(--calendar-header-box-shadow,0 2px 10px rgba(125,126,128,.16))}.van-calendar__header-subtitle,.van-calendar__header-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:-webkit-flex;display:flex}.van-calendar__weekday{-webkit-flex:1;flex:1;text-align:center;font-size:12px;font-size:var(--calendar-weekdays-font-size,12px);line-height:30px;line-height:var(--calendar-weekdays-height,30px)} \ No newline at end of file diff --git a/vant/dist/calendar/components/month/index.d.ts b/vant/dist/calendar/components/month/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/calendar/components/month/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/calendar/components/month/index.js b/vant/dist/calendar/components/month/index.js new file mode 100644 index 0000000..4c872a9 --- /dev/null +++ b/vant/dist/calendar/components/month/index.js @@ -0,0 +1,157 @@ +import { VantComponent } from '../../../common/component'; +import { + getMonthEndDay, + compareDay, + getPrevDay, + getNextDay, +} from '../../utils'; +VantComponent({ + props: { + date: { + type: null, + observer: 'setDays', + }, + type: { + type: String, + observer: 'setDays', + }, + color: String, + minDate: { + type: null, + observer: 'setDays', + }, + maxDate: { + type: null, + observer: 'setDays', + }, + showMark: Boolean, + rowHeight: null, + formatter: { + type: null, + observer: 'setDays', + }, + currentDate: { + type: null, + observer: 'setDays', + }, + allowSameDay: Boolean, + showSubtitle: Boolean, + showMonthTitle: Boolean, + }, + data: { + visible: true, + days: [], + }, + methods: { + onClick(event) { + const { index } = event.currentTarget.dataset; + const item = this.data.days[index]; + if (item.type !== 'disabled') { + this.$emit('click', item); + } + }, + setDays() { + const days = []; + const startDate = new Date(this.data.date); + const year = startDate.getFullYear(); + const month = startDate.getMonth(); + const totalDay = getMonthEndDay( + startDate.getFullYear(), + startDate.getMonth() + 1 + ); + for (let day = 1; day <= totalDay; day++) { + const date = new Date(year, month, day); + const type = this.getDayType(date); + let config = { + date, + type, + text: day, + bottomInfo: this.getBottomInfo(type), + }; + if (this.data.formatter) { + config = this.data.formatter(config); + } + days.push(config); + } + this.setData({ days }); + }, + getMultipleDayType(day) { + const { currentDate } = this.data; + if (!Array.isArray(currentDate)) { + return ''; + } + const isSelected = (date) => + currentDate.some((item) => compareDay(item, date) === 0); + if (isSelected(day)) { + const prevDay = getPrevDay(day); + const nextDay = getNextDay(day); + const prevSelected = isSelected(prevDay); + const nextSelected = isSelected(nextDay); + if (prevSelected && nextSelected) { + return 'multiple-middle'; + } + if (prevSelected) { + return 'end'; + } + return nextSelected ? 'start' : 'multiple-selected'; + } + return ''; + }, + getRangeDayType(day) { + const { currentDate, allowSameDay } = this.data; + if (!Array.isArray(currentDate)) { + return; + } + const [startDay, endDay] = currentDate; + if (!startDay) { + return; + } + const compareToStart = compareDay(day, startDay); + if (!endDay) { + return compareToStart === 0 ? 'start' : ''; + } + const compareToEnd = compareDay(day, endDay); + if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) { + return 'start-end'; + } + if (compareToStart === 0) { + return 'start'; + } + if (compareToEnd === 0) { + return 'end'; + } + if (compareToStart > 0 && compareToEnd < 0) { + return 'middle'; + } + }, + getDayType(day) { + const { type, minDate, maxDate, currentDate } = this.data; + if (compareDay(day, minDate) < 0 || compareDay(day, maxDate) > 0) { + return 'disabled'; + } + if (type === 'single') { + return compareDay(day, currentDate) === 0 ? 'selected' : ''; + } + if (type === 'multiple') { + return this.getMultipleDayType(day); + } + /* istanbul ignore else */ + if (type === 'range') { + return this.getRangeDayType(day); + } + }, + getBottomInfo(type) { + if (this.data.type === 'range') { + if (type === 'start') { + return '开始'; + } + if (type === 'end') { + return '结束'; + } + if (type === 'start-end') { + return '开始/结束'; + } + } + }, + }, +}); diff --git a/vant/dist/calendar/components/month/index.json b/vant/dist/calendar/components/month/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/calendar/components/month/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/calendar/components/month/index.wxml b/vant/dist/calendar/components/month/index.wxml new file mode 100644 index 0000000..55bab83 --- /dev/null +++ b/vant/dist/calendar/components/month/index.wxml @@ -0,0 +1,39 @@ + + + + + + {{ computed.formatMonthTitle(date) }} + + + + + {{ computed.getMark(date) }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + diff --git a/vant/dist/calendar/components/month/index.wxs b/vant/dist/calendar/components/month/index.wxs new file mode 100644 index 0000000..a057079 --- /dev/null +++ b/vant/dist/calendar/components/month/index.wxs @@ -0,0 +1,67 @@ +/* eslint-disable */ +var utils = require('../../utils.wxs'); + +function getMark(date) { + return getDate(date).getMonth() + 1; +} + +var ROW_HEIGHT = 64; + +function getDayStyle(type, index, date, rowHeight, color) { + var style = []; + var offset = getDate(date).getDay(); + + if (index === 0) { + style.push(['margin-left', (100 * offset) / 7 + '%']); + } + + if (rowHeight !== ROW_HEIGHT) { + style.push(['height', rowHeight + 'px']); + } + + if (color) { + if ( + type === 'start' || + type === 'end' || + type === 'multiple-selected' || + type === 'multiple-middle' + ) { + style.push(['background', color]); + } else if (type === 'middle') { + style.push(['color', color]); + } + } + + return style + .map(function(item) { + return item.join(':'); + }) + .join(';'); +} + +function formatMonthTitle(date) { + date = getDate(date); + return date.getFullYear() + '年' + (date.getMonth() + 1) + '月'; +} + +function getMonthStyle(visible, date, rowHeight) { + if (!visible) { + date = getDate(date); + + var totalDay = utils.getMonthEndDay( + date.getFullYear(), + date.getMonth() + 1 + ); + var offset = getDate(date).getDay(); + var padding = Math.ceil((totalDay + offset) / 7) * rowHeight; + + return 'padding-bottom:' + padding + 'px'; + } +} + +module.exports = { + getMark: getMark, + getDayStyle: getDayStyle, + formatMonthTitle: formatMonthTitle, + getMonthStyle: getMonthStyle +}; diff --git a/vant/dist/calendar/components/month/index.wxss b/vant/dist/calendar/components/month/index.wxss new file mode 100644 index 0000000..17c12f4 --- /dev/null +++ b/vant/dist/calendar/components/month/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;height:100%;background-color:#fff;background-color:var(--calendar-background-color,#fff)}.van-calendar__month-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);font-size:14px;font-size:var(--calendar-month-title-font-size,14px);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__days{position:relative;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{position:absolute;top:50%;left:50%;z-index:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);pointer-events:none;color:rgba(242,243,245,.8);color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:160px;font-size:var(--calendar-month-mark-font-size,160px)}.van-calendar__day,.van-calendar__selected-day{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;text-align:center}.van-calendar__day{position:relative;width:14.285%;height:64px;height:var(--calendar-day-height,64px);font-size:16px;font-size:var(--calendar-day-font-size,16px)}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{color:#fff;color:var(--calendar-range-edge-color,#fff);background-color:#ee0a24;background-color:var(--calendar-range-edge-background-color,#ee0a24)}.van-calendar__day--start{border-radius:4px 0 0 4px;border-radius:var(--border-radius-md,4px) 0 0 var(--border-radius-md,4px)}.van-calendar__day--end{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius-md,4px) var(--border-radius-md,4px) 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px;border-radius:var(--border-radius-md,4px)}.van-calendar__day--middle{color:#ee0a24;color:var(--calendar-range-middle-color,#ee0a24)}.van-calendar__day--middle:after{position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;content:"";opacity:.1;opacity:var(--calendar-range-middle-background-opacity,.1)}.van-calendar__day--disabled{cursor:default;color:#c8c9cc;color:var(--calendar-day-disabled-color,#c8c9cc)}.van-calendar__bottom-info,.van-calendar__top-info{position:absolute;right:0;left:0;font-size:10px;font-size:var(--calendar-info-font-size,10px);line-height:14px;line-height:var(--calendar-info-line-height,14px)}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{width:54px;width:var(--calendar-selected-day-size,54px);height:54px;height:var(--calendar-selected-day-size,54px);color:#fff;color:var(--calendar-selected-day-color,#fff);background-color:#ee0a24;background-color:var(--calendar-selected-day-background-color,#ee0a24);border-radius:4px;border-radius:var(--border-radius-md,4px)} \ No newline at end of file diff --git a/vant/dist/calendar/index.d.ts b/vant/dist/calendar/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/calendar/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/calendar/index.js b/vant/dist/calendar/index.js new file mode 100644 index 0000000..d7b7f27 --- /dev/null +++ b/vant/dist/calendar/index.js @@ -0,0 +1,297 @@ +import { VantComponent } from '../common/component'; +import { + ROW_HEIGHT, + getNextDay, + compareDay, + copyDates, + calcDateNum, + formatMonthTitle, + compareMonth, + getMonths, + getDayByOffset, +} from './utils'; +import Toast from '../toast/toast'; +import { requestAnimationFrame } from '../common/utils'; +VantComponent({ + props: { + title: { + type: String, + value: '日期选择', + }, + color: String, + show: { + type: Boolean, + observer(val) { + if (val) { + this.initRect(); + this.scrollIntoView(); + } + }, + }, + formatter: null, + confirmText: { + type: String, + value: '确定', + }, + rangePrompt: String, + defaultDate: { + type: null, + observer(val) { + this.setData({ currentDate: val }); + this.scrollIntoView(); + }, + }, + allowSameDay: Boolean, + confirmDisabledText: String, + type: { + type: String, + value: 'single', + observer: 'reset', + }, + minDate: { + type: null, + value: Date.now(), + }, + maxDate: { + type: null, + value: new Date( + new Date().getFullYear(), + new Date().getMonth() + 6, + new Date().getDate() + ).getTime(), + }, + position: { + type: String, + value: 'bottom', + }, + rowHeight: { + type: null, + value: ROW_HEIGHT, + }, + round: { + type: Boolean, + value: true, + }, + poppable: { + type: Boolean, + value: true, + }, + showMark: { + type: Boolean, + value: true, + }, + showTitle: { + type: Boolean, + value: true, + }, + showConfirm: { + type: Boolean, + value: true, + }, + showSubtitle: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + maxRange: { + type: null, + value: null, + }, + }, + data: { + subtitle: '', + currentDate: null, + scrollIntoView: '', + }, + created() { + this.setData({ + currentDate: this.getInitialDate(), + }); + }, + mounted() { + if (this.data.show || !this.data.poppable) { + this.initRect(); + this.scrollIntoView(); + } + }, + methods: { + reset() { + this.setData({ currentDate: this.getInitialDate() }); + this.scrollIntoView(); + }, + initRect() { + if (this.contentObserver != null) { + this.contentObserver.disconnect(); + } + const contentObserver = this.createIntersectionObserver({ + thresholds: [0, 0.1, 0.9, 1], + observeAll: true, + }); + this.contentObserver = contentObserver; + contentObserver.relativeTo('.van-calendar__body'); + contentObserver.observe('.month', (res) => { + if (res.boundingClientRect.top <= res.relativeRect.top) { + // @ts-ignore + this.setData({ subtitle: formatMonthTitle(res.dataset.date) }); + } + }); + }, + getInitialDate() { + const { type, defaultDate, minDate } = this.data; + if (type === 'range') { + const [startDay, endDay] = defaultDate || []; + return [ + startDay || minDate, + endDay || getNextDay(new Date(minDate)).getTime(), + ]; + } + if (type === 'multiple') { + return defaultDate || [minDate]; + } + return defaultDate || minDate; + }, + scrollIntoView() { + requestAnimationFrame(() => { + const { + currentDate, + type, + show, + poppable, + minDate, + maxDate, + } = this.data; + // @ts-ignore + const targetDate = type === 'single' ? currentDate : currentDate[0]; + const displayed = show || !poppable; + if (!targetDate || !displayed) { + return; + } + const months = getMonths(minDate, maxDate); + months.some((month, index) => { + if (compareMonth(month, targetDate) === 0) { + this.setData({ scrollIntoView: `month${index}` }); + return true; + } + return false; + }); + }); + }, + onOpen() { + this.$emit('open'); + }, + onOpened() { + this.$emit('opened'); + }, + onClose() { + this.$emit('close'); + }, + onClosed() { + this.$emit('closed'); + }, + onClickDay(event) { + const { date } = event.detail; + const { type, currentDate, allowSameDay } = this.data; + if (type === 'range') { + // @ts-ignore + const [startDay, endDay] = currentDate; + if (startDay && !endDay) { + const compareToStart = compareDay(date, startDay); + if (compareToStart === 1) { + this.select([startDay, date], true); + } else if (compareToStart === -1) { + this.select([date, null]); + } else if (allowSameDay) { + this.select([date, date]); + } + } else { + this.select([date, null]); + } + } else if (type === 'multiple') { + let selectedIndex; + // @ts-ignore + const selected = currentDate.some((dateItem, index) => { + const equal = compareDay(dateItem, date) === 0; + if (equal) { + selectedIndex = index; + } + return equal; + }); + if (selected) { + // @ts-ignore + const cancelDate = currentDate.splice(selectedIndex, 1); + this.setData({ currentDate }); + this.unselect(cancelDate); + } else { + // @ts-ignore + this.select([...currentDate, date]); + } + } else { + this.select(date, true); + } + }, + unselect(dateArray) { + const date = dateArray[0]; + if (date) { + this.$emit('unselect', copyDates(date)); + } + }, + select(date, complete) { + if (complete && this.data.type === 'range') { + const valid = this.checkRange(date); + if (!valid) { + // auto selected to max range if showConfirm + if (this.data.showConfirm) { + this.emit([ + date[0], + getDayByOffset(date[0], this.data.maxRange - 1), + ]); + } else { + this.emit(date); + } + return; + } + } + this.emit(date); + if (complete && !this.data.showConfirm) { + this.onConfirm(); + } + }, + emit(date) { + const getTime = (date) => (date instanceof Date ? date.getTime() : date); + this.setData({ + currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date), + }); + this.$emit('select', copyDates(date)); + }, + checkRange(date) { + const { maxRange, rangePrompt } = this.data; + if (maxRange && calcDateNum(date) > maxRange) { + Toast({ + context: this, + message: rangePrompt || `选择天数不能超过 ${maxRange} 天`, + }); + return false; + } + return true; + }, + onConfirm() { + if ( + this.data.type === 'range' && + !this.checkRange(this.data.currentDate) + ) { + return; + } + wx.nextTick(() => { + // @ts-ignore + this.$emit('confirm', copyDates(this.data.currentDate)); + }); + }, + }, +}); diff --git a/vant/dist/calendar/index.json b/vant/dist/calendar/index.json new file mode 100644 index 0000000..397d5ae --- /dev/null +++ b/vant/dist/calendar/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "header": "./components/header/index", + "month": "./components/month/index", + "van-button": "../button/index", + "van-popup": "../popup/index", + "van-toast": "../toast/index" + } +} diff --git a/vant/dist/calendar/index.wxml b/vant/dist/calendar/index.wxml new file mode 100644 index 0000000..7df0b98 --- /dev/null +++ b/vant/dist/calendar/index.wxml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/vant/dist/calendar/index.wxs b/vant/dist/calendar/index.wxs new file mode 100644 index 0000000..2c04be1 --- /dev/null +++ b/vant/dist/calendar/index.wxs @@ -0,0 +1,37 @@ +/* eslint-disable */ +var utils = require('./utils.wxs'); + +function getMonths(minDate, maxDate) { + var months = []; + var cursor = getDate(minDate); + + cursor.setDate(1); + + do { + months.push(cursor.getTime()); + cursor.setMonth(cursor.getMonth() + 1); + } while (utils.compareMonth(cursor, getDate(maxDate)) !== 1); + + return months; +} + +function getButtonDisabled(type, currentDate) { + if (currentDate == null) { + return true; + } + + if (type === 'range') { + return !currentDate[0] || !currentDate[1]; + } + + if (type === 'multiple') { + return !currentDate.length; + } + + return !currentDate; +} + +module.exports = { + getMonths: getMonths, + getButtonDisabled: getButtonDisabled +}; diff --git a/vant/dist/calendar/index.wxss b/vant/dist/calendar/index.wxss new file mode 100644 index 0000000..9d78e0f --- /dev/null +++ b/vant/dist/calendar/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-calendar{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;height:100%;height:var(--calendar-height,100%);background-color:#fff;background-color:var(--calendar-background-color,#fff)}.van-calendar__close-icon{top:11px}.van-calendar__popup--bottom,.van-calendar__popup--top{height:80%;height:var(--calendar-popup-height,80%)}.van-calendar__popup--left,.van-calendar__popup--right{height:100%}.van-calendar__body{-webkit-flex:1;flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.van-calendar__footer{-webkit-flex-shrink:0;flex-shrink:0;padding:0 16px;padding:0 var(--padding-md,16px)}.van-calendar__footer--safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer+.van-calendar__footer,.van-calendar__footer:empty{display:none}.van-calendar__footer:empty+.van-calendar__footer{display:block!important}.van-calendar__confirm{height:36px!important;height:var(--calendar-confirm-button-height,36px)!important;margin:7px 0!important;margin:var(--calendar-confirm-button-margin,7px 0)!important;line-height:34px!important;line-height:var(--calendar-confirm-button-line-height,34px)!important} \ No newline at end of file diff --git a/vant/dist/calendar/utils.d.ts b/vant/dist/calendar/utils.d.ts new file mode 100644 index 0000000..02af08d --- /dev/null +++ b/vant/dist/calendar/utils.d.ts @@ -0,0 +1,17 @@ +export declare const ROW_HEIGHT = 64; +export declare function formatMonthTitle(date: Date): string; +export declare function compareMonth( + date1: Date | number, + date2: Date | number +): 0 | 1 | -1; +export declare function compareDay( + day1: Date | number, + day2: Date | number +): 0 | 1 | -1; +export declare function getDayByOffset(date: Date, offset: number): Date; +export declare function getPrevDay(date: Date): Date; +export declare function getNextDay(date: Date): Date; +export declare function calcDateNum(date: [Date, Date]): number; +export declare function copyDates(dates: Date | Date[]): Date | Date[]; +export declare function getMonthEndDay(year: number, month: number): number; +export declare function getMonths(minDate: number, maxDate: number): number[]; diff --git a/vant/dist/calendar/utils.js b/vant/dist/calendar/utils.js new file mode 100644 index 0000000..281a35c --- /dev/null +++ b/vant/dist/calendar/utils.js @@ -0,0 +1,78 @@ +export const ROW_HEIGHT = 64; +export function formatMonthTitle(date) { + if (!(date instanceof Date)) { + date = new Date(date); + } + return `${date.getFullYear()}年${date.getMonth() + 1}月`; +} +export function compareMonth(date1, date2) { + if (!(date1 instanceof Date)) { + date1 = new Date(date1); + } + if (!(date2 instanceof Date)) { + date2 = new Date(date2); + } + const year1 = date1.getFullYear(); + const year2 = date2.getFullYear(); + const month1 = date1.getMonth(); + const month2 = date2.getMonth(); + if (year1 === year2) { + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1; + } + return year1 > year2 ? 1 : -1; +} +export function compareDay(day1, day2) { + if (!(day1 instanceof Date)) { + day1 = new Date(day1); + } + if (!(day2 instanceof Date)) { + day2 = new Date(day2); + } + const compareMonthResult = compareMonth(day1, day2); + if (compareMonthResult === 0) { + const date1 = day1.getDate(); + const date2 = day2.getDate(); + return date1 === date2 ? 0 : date1 > date2 ? 1 : -1; + } + return compareMonthResult; +} +export function getDayByOffset(date, offset) { + date = new Date(date); + date.setDate(date.getDate() + offset); + return date; +} +export function getPrevDay(date) { + return getDayByOffset(date, -1); +} +export function getNextDay(date) { + return getDayByOffset(date, 1); +} +export function calcDateNum(date) { + const day1 = new Date(date[0]).getTime(); + const day2 = new Date(date[1]).getTime(); + return (day2 - day1) / (1000 * 60 * 60 * 24) + 1; +} +export function copyDates(dates) { + if (Array.isArray(dates)) { + return dates.map((date) => { + if (date === null) { + return date; + } + return new Date(date); + }); + } + return new Date(dates); +} +export function getMonthEndDay(year, month) { + return 32 - new Date(year, month - 1, 32).getDate(); +} +export function getMonths(minDate, maxDate) { + const months = []; + const cursor = new Date(minDate); + cursor.setDate(1); + do { + months.push(cursor.getTime()); + cursor.setMonth(cursor.getMonth() + 1); + } while (compareMonth(cursor, maxDate) !== 1); + return months; +} diff --git a/vant/dist/calendar/utils.wxs b/vant/dist/calendar/utils.wxs new file mode 100644 index 0000000..e57f6b3 --- /dev/null +++ b/vant/dist/calendar/utils.wxs @@ -0,0 +1,25 @@ +/* eslint-disable */ +function getMonthEndDay(year, month) { + return 32 - getDate(year, month - 1, 32).getDate(); +} + +function compareMonth(date1, date2) { + date1 = getDate(date1); + date2 = getDate(date2); + + var year1 = date1.getFullYear(); + var year2 = date2.getFullYear(); + var month1 = date1.getMonth(); + var month2 = date2.getMonth(); + + if (year1 === year2) { + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1; + } + + return year1 > year2 ? 1 : -1; +} + +module.exports = { + getMonthEndDay: getMonthEndDay, + compareMonth: compareMonth +}; diff --git a/vant/dist/card/index.d.ts b/vant/dist/card/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/card/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/card/index.js b/vant/dist/card/index.js new file mode 100644 index 0000000..6aaf99f --- /dev/null +++ b/vant/dist/card/index.js @@ -0,0 +1,49 @@ +import { link } from '../mixins/link'; +import { VantComponent } from '../common/component'; +VantComponent({ + classes: [ + 'num-class', + 'desc-class', + 'thumb-class', + 'title-class', + 'price-class', + 'origin-price-class', + ], + mixins: [link], + props: { + tag: String, + num: String, + desc: String, + thumb: String, + title: String, + price: { + type: String, + observer: 'updatePrice', + }, + centered: Boolean, + lazyLoad: Boolean, + thumbLink: String, + originPrice: String, + thumbMode: { + type: String, + value: 'aspectFit', + }, + currency: { + type: String, + value: '¥', + }, + }, + methods: { + updatePrice() { + const { price } = this.data; + const priceArr = price.toString().split('.'); + this.setData({ + integerStr: priceArr[0], + decimalStr: priceArr[1] ? `.${priceArr[1]}` : '', + }); + }, + onClickThumb() { + this.jumpLink('thumbLink'); + }, + }, +}); diff --git a/vant/dist/card/index.json b/vant/dist/card/index.json new file mode 100644 index 0000000..e917407 --- /dev/null +++ b/vant/dist/card/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-tag": "../tag/index" + } +} diff --git a/vant/dist/card/index.wxml b/vant/dist/card/index.wxml new file mode 100644 index 0000000..62173e4 --- /dev/null +++ b/vant/dist/card/index.wxml @@ -0,0 +1,56 @@ + + + + + + + + + {{ tag }} + + + + + + + {{ title }} + + + {{ desc }} + + + + + + + + + {{ currency }} + {{ integerStr }} + {{ decimalStr }} + + + {{ currency }} {{ originPrice }} + + x {{ num }} + + + + + + + + + + diff --git a/vant/dist/card/index.wxss b/vant/dist/card/index.wxss new file mode 100644 index 0000000..a21a599 --- /dev/null +++ b/vant/dist/card/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-card{position:relative;box-sizing:border-box;padding:8px 16px;padding:var(--card-padding,8px 16px);font-size:12px;font-size:var(--card-font-size,12px);color:#323233;color:var(--card-text-color,#323233);background-color:#fafafa;background-color:var(--card-background-color,#fafafa)}.van-card__header{display:-webkit-flex;display:flex}.van-card__header--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-card__thumb{position:relative;-webkit-flex:none;flex:none;width:88px;width:var(--card-thumb-size,88px);height:88px;height:var(--card-thumb-size,88px);margin-right:8px;margin-right:var(--padding-xs,8px)}.van-card__thumb:empty{display:none}.van-card__img{width:100%;height:100%;border-radius:8px;border-radius:var(--border-radius-lg,8px)}.van-card__content{position:relative;display:-webkit-flex;display:flex;-webkit-flex:1;flex:1;-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:space-between;justify-content:space-between;min-width:0;min-height:88px;min-height:var(--card-thumb-size,88px)}.van-card__content--center{-webkit-justify-content:center;justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:16px;line-height:var(--card-title-line-height,16px)}.van-card__desc{line-height:20px;line-height:var(--card-desc-line-height,20px);color:#646566;color:var(--card-desc-color,#646566)}.van-card__bottom{line-height:20px}.van-card__price{display:inline-block;font-weight:700;color:#ee0a24;color:var(--card-price-color,#ee0a24);font-size:12px;font-size:var(--card-price-font-size,12px)}.van-card__price-integer{font-size:16px;font-size:var(--card-price-integer-font-size,16px)}.van-card__price-decimal,.van-card__price-integer{font-family:Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif;font-family:var(--card-price-font-family,Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif)}.van-card__origin-price{display:inline-block;margin-left:5px;text-decoration:line-through;font-size:10px;font-size:var(--card-origin-price-font-size,10px);color:#646566;color:var(--card-origin-price-color,#646566)}.van-card__num{float:right}.van-card__tag{position:absolute!important;top:2px;left:0}.van-card__footer{-webkit-flex:none;flex:none;width:100%;text-align:right} \ No newline at end of file diff --git a/vant/dist/cell-group/index.d.ts b/vant/dist/cell-group/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/cell-group/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/cell-group/index.js b/vant/dist/cell-group/index.js new file mode 100644 index 0000000..99bcdb9 --- /dev/null +++ b/vant/dist/cell-group/index.js @@ -0,0 +1,10 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + title: String, + border: { + type: Boolean, + value: true, + }, + }, +}); diff --git a/vant/dist/cell-group/index.json b/vant/dist/cell-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/cell-group/index.wxml b/vant/dist/cell-group/index.wxml new file mode 100644 index 0000000..6e0b471 --- /dev/null +++ b/vant/dist/cell-group/index.wxml @@ -0,0 +1,9 @@ + + {{ title }} + + + + diff --git a/vant/dist/cell-group/index.wxss b/vant/dist/cell-group/index.wxss new file mode 100644 index 0000000..edbccd5 --- /dev/null +++ b/vant/dist/cell-group/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cell-group__title{padding:16px 16px 8px;padding:var(--cell-group-title-padding,16px 16px 8px);font-size:14px;font-size:var(--cell-group-title-font-size,14px);line-height:16px;line-height:var(--cell-group-title-line-height,16px);color:#969799;color:var(--cell-group-title-color,#969799)} \ No newline at end of file diff --git a/vant/dist/cell/index.d.ts b/vant/dist/cell/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/cell/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/cell/index.js b/vant/dist/cell/index.js new file mode 100644 index 0000000..a0123d1 --- /dev/null +++ b/vant/dist/cell/index.js @@ -0,0 +1,38 @@ +import { link } from '../mixins/link'; +import { VantComponent } from '../common/component'; +VantComponent({ + classes: [ + 'title-class', + 'label-class', + 'value-class', + 'right-icon-class', + 'hover-class', + ], + mixins: [link], + props: { + title: null, + value: null, + icon: String, + size: String, + label: String, + center: Boolean, + isLink: Boolean, + required: Boolean, + clickable: Boolean, + titleWidth: String, + customStyle: String, + arrowDirection: String, + useLabelSlot: Boolean, + border: { + type: Boolean, + value: true, + }, + titleStyle: String, + }, + methods: { + onClick(event) { + this.$emit('click', event.detail); + this.jumpLink(); + }, + }, +}); diff --git a/vant/dist/cell/index.json b/vant/dist/cell/index.json new file mode 100644 index 0000000..0a336c0 --- /dev/null +++ b/vant/dist/cell/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/cell/index.wxml b/vant/dist/cell/index.wxml new file mode 100644 index 0000000..7d7d746 --- /dev/null +++ b/vant/dist/cell/index.wxml @@ -0,0 +1,46 @@ + + + + + + + + + {{ title }} + + + + + {{ label }} + + + + + {{ value }} + + + + + + + + diff --git a/vant/dist/cell/index.wxs b/vant/dist/cell/index.wxs new file mode 100644 index 0000000..e3500c4 --- /dev/null +++ b/vant/dist/cell/index.wxs @@ -0,0 +1,17 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function titleStyle(data) { + return style([ + { + 'max-width': addUnit(data.titleWidth), + 'min-width': addUnit(data.titleWidth), + }, + data.titleStyle, + ]); +} + +module.exports = { + titleStyle: titleStyle, +}; diff --git a/vant/dist/cell/index.wxss b/vant/dist/cell/index.wxss new file mode 100644 index 0000000..605570d --- /dev/null +++ b/vant/dist/cell/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cell{position:relative;display:-webkit-flex;display:flex;box-sizing:border-box;width:100%;padding:10px 16px;padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);font-size:14px;font-size:var(--cell-font-size,14px);line-height:24px;line-height:var(--cell-line-height,24px);color:#323233;color:var(--cell-text-color,#323233);background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;right:16px;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-cell--borderless:after{display:none}.van-cell-group{background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell__label{margin-top:3px;margin-top:var(--cell-label-margin-top,3px);font-size:12px;font-size:var(--cell-label-font-size,12px);line-height:18px;line-height:var(--cell-label-line-height,18px);color:#969799;color:var(--cell-label-color,#969799)}.van-cell__value{overflow:hidden;text-align:right;vertical-align:middle;color:#969799;color:var(--cell-value-color,#969799)}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:24px;height:var(--cell-line-height,24px);font-size:16px;font-size:var(--cell-icon-size,16px)}.van-cell__left-icon-wrap{margin-right:4px;margin-right:var(--padding-base,4px)}.van-cell__right-icon-wrap{margin-left:4px;margin-left:var(--padding-base,4px);color:#969799;color:var(--cell-right-icon-color,#969799)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:24px;line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:#f2f3f5;background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;content:"*";left:8px;left:var(--padding-xs,8px);font-size:14px;font-size:var(--cell-font-size,14px);color:#ee0a24;color:var(--cell-required-color,#ee0a24)}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-top:var(--cell-large-vertical-padding,12px);padding-bottom:12px;padding-bottom:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:16px;font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__value{font-size:16px;font-size:var(--cell-large-value-font-size,16px)}.van-cell--large .van-cell__label{font-size:14px;font-size:var(--cell-large-label-font-size,14px)} \ No newline at end of file diff --git a/vant/dist/checkbox-group/index.d.ts b/vant/dist/checkbox-group/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/checkbox-group/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/checkbox-group/index.js b/vant/dist/checkbox-group/index.js new file mode 100644 index 0000000..1c87155 --- /dev/null +++ b/vant/dist/checkbox-group/index.js @@ -0,0 +1,31 @@ +import { useChildren } from '../common/relation'; +import { VantComponent } from '../common/component'; +VantComponent({ + field: true, + relation: useChildren('checkbox', function (target) { + this.updateChild(target); + }), + props: { + max: Number, + value: { + type: Array, + observer: 'updateChildren', + }, + disabled: { + type: Boolean, + observer: 'updateChildren', + }, + }, + methods: { + updateChildren() { + this.children.forEach((child) => this.updateChild(child)); + }, + updateChild(child) { + const { value, disabled } = this.data; + child.setData({ + value: value.indexOf(child.data.name) !== -1, + parentDisabled: disabled, + }); + }, + }, +}); diff --git a/vant/dist/checkbox-group/index.json b/vant/dist/checkbox-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/checkbox-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/checkbox-group/index.wxml b/vant/dist/checkbox-group/index.wxml new file mode 100644 index 0000000..4fa864c --- /dev/null +++ b/vant/dist/checkbox-group/index.wxml @@ -0,0 +1 @@ + diff --git a/vant/dist/checkbox-group/index.wxss b/vant/dist/checkbox-group/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/checkbox-group/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/checkbox/index.d.ts b/vant/dist/checkbox/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/checkbox/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/checkbox/index.js b/vant/dist/checkbox/index.js new file mode 100644 index 0000000..281f69a --- /dev/null +++ b/vant/dist/checkbox/index.js @@ -0,0 +1,74 @@ +import { useParent } from '../common/relation'; +import { VantComponent } from '../common/component'; +function emit(target, value) { + target.$emit('input', value); + target.$emit('change', value); +} +VantComponent({ + field: true, + relation: useParent('checkbox-group'), + classes: ['icon-class', 'label-class'], + props: { + value: Boolean, + disabled: Boolean, + useIconSlot: Boolean, + checkedColor: String, + labelPosition: { + type: String, + value: 'right', + }, + labelDisabled: Boolean, + shape: { + type: String, + value: 'round', + }, + iconSize: { + type: null, + value: 20, + }, + }, + data: { + parentDisabled: false, + }, + methods: { + emitChange(value) { + if (this.parent) { + this.setParentValue(this.parent, value); + } else { + emit(this, value); + } + }, + toggle() { + const { parentDisabled, disabled, value } = this.data; + if (!disabled && !parentDisabled) { + this.emitChange(!value); + } + }, + onClickLabel() { + const { labelDisabled, parentDisabled, disabled, value } = this.data; + if (!disabled && !labelDisabled && !parentDisabled) { + this.emitChange(!value); + } + }, + setParentValue(parent, value) { + const parentValue = parent.data.value.slice(); + const { name } = this.data; + const { max } = parent.data; + if (value) { + if (max && parentValue.length >= max) { + return; + } + if (parentValue.indexOf(name) === -1) { + parentValue.push(name); + emit(parent, parentValue); + } + } else { + const index = parentValue.indexOf(name); + if (index !== -1) { + parentValue.splice(index, 1); + emit(parent, parentValue); + } + } + }, + }, +}); diff --git a/vant/dist/checkbox/index.json b/vant/dist/checkbox/index.json new file mode 100644 index 0000000..0a336c0 --- /dev/null +++ b/vant/dist/checkbox/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/checkbox/index.wxml b/vant/dist/checkbox/index.wxml new file mode 100644 index 0000000..0c008d8 --- /dev/null +++ b/vant/dist/checkbox/index.wxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + diff --git a/vant/dist/checkbox/index.wxs b/vant/dist/checkbox/index.wxs new file mode 100644 index 0000000..eb9c772 --- /dev/null +++ b/vant/dist/checkbox/index.wxs @@ -0,0 +1,20 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) { + var styles = { + 'font-size': addUnit(iconSize), + }; + + if (checkedColor && value && !disabled && !parentDisabled) { + styles['border-color'] = checkedColor; + styles['background-color'] = checkedColor; + } + + return style(styles); +} + +module.exports = { + iconStyle: iconStyle, +}; diff --git a/vant/dist/checkbox/index.wxss b/vant/dist/checkbox/index.wxss new file mode 100644 index 0000000..afaf37b --- /dev/null +++ b/vant/dist/checkbox/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px;line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;font-size:20px;font-size:var(--checkbox-size,20px);border:1px solid #c8c9cc;border:1px solid var(--checkbox-border-color,#c8c9cc);transition-duration:.2s;transition-duration:var(--checkbox-transition-duration,.2s)}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--checkbox-checked-icon-color,#1989fa)}.van-checkbox__icon--disabled{background-color:#ebedf0;background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c8c9cc;color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;margin-left:10px;margin-left:var(--checkbox-label-margin,10px);color:#323233;color:var(--checkbox-label-color,#323233)}.van-checkbox__label--left{float:left;margin:0 10px 0 0;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:#c8c9cc;color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0} \ No newline at end of file diff --git a/vant/dist/circle/canvas.d.ts b/vant/dist/circle/canvas.d.ts new file mode 100644 index 0000000..6aa52de --- /dev/null +++ b/vant/dist/circle/canvas.d.ts @@ -0,0 +1,6 @@ +/// +declare type CanvasContext = WechatMiniprogram.CanvasContext; +export declare function adaptor( + ctx: CanvasContext & Record +): CanvasContext; +export {}; diff --git a/vant/dist/circle/canvas.js b/vant/dist/circle/canvas.js new file mode 100644 index 0000000..c311335 --- /dev/null +++ b/vant/dist/circle/canvas.js @@ -0,0 +1,43 @@ +export function adaptor(ctx) { + // @ts-ignore + return Object.assign(ctx, { + setStrokeStyle(val) { + ctx.strokeStyle = val; + }, + setLineWidth(val) { + ctx.lineWidth = val; + }, + setLineCap(val) { + ctx.lineCap = val; + }, + setFillStyle(val) { + ctx.fillStyle = val; + }, + setFontSize(val) { + ctx.font = String(val); + }, + setGlobalAlpha(val) { + ctx.globalAlpha = val; + }, + setLineJoin(val) { + ctx.lineJoin = val; + }, + setTextAlign(val) { + ctx.textAlign = val; + }, + setMiterLimit(val) { + ctx.miterLimit = val; + }, + setShadow(offsetX, offsetY, blur, color) { + ctx.shadowOffsetX = offsetX; + ctx.shadowOffsetY = offsetY; + ctx.shadowBlur = blur; + ctx.shadowColor = color; + }, + setTextBaseline(val) { + ctx.textBaseline = val; + }, + createCircularGradient() {}, + draw() {}, + }); +} diff --git a/vant/dist/circle/index.d.ts b/vant/dist/circle/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/circle/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/circle/index.js b/vant/dist/circle/index.js new file mode 100644 index 0000000..c3a2894 --- /dev/null +++ b/vant/dist/circle/index.js @@ -0,0 +1,186 @@ +import { BLUE, WHITE } from '../common/color'; +import { VantComponent } from '../common/component'; +import { getSystemInfoSync } from '../common/utils'; +import { isObj } from '../common/validator'; +import { canIUseCanvas2d } from '../common/version'; +import { adaptor } from './canvas'; +function format(rate) { + return Math.min(Math.max(rate, 0), 100); +} +const PERIMETER = 2 * Math.PI; +const BEGIN_ANGLE = -Math.PI / 2; +const STEP = 1; +VantComponent({ + props: { + text: String, + lineCap: { + type: String, + value: 'round', + }, + value: { + type: Number, + value: 0, + observer: 'reRender', + }, + speed: { + type: Number, + value: 50, + }, + size: { + type: Number, + value: 100, + observer() { + this.drawCircle(this.currentValue); + }, + }, + fill: String, + layerColor: { + type: String, + value: WHITE, + }, + color: { + type: null, + value: BLUE, + observer() { + this.setHoverColor().then(() => { + this.drawCircle(this.currentValue); + }); + }, + }, + type: { + type: String, + value: '', + }, + strokeWidth: { + type: Number, + value: 4, + }, + clockwise: { + type: Boolean, + value: true, + }, + }, + data: { + hoverColor: BLUE, + }, + methods: { + getContext() { + const { type, size } = this.data; + if (type === '' || !canIUseCanvas2d()) { + const ctx = wx.createCanvasContext('van-circle', this); + return Promise.resolve(ctx); + } + const dpr = getSystemInfoSync().pixelRatio; + return new Promise((resolve) => { + wx.createSelectorQuery() + .in(this) + .select('#van-circle') + .node() + .exec((res) => { + const canvas = res[0].node; + const ctx = canvas.getContext(type); + if (!this.inited) { + this.inited = true; + canvas.width = size * dpr; + canvas.height = size * dpr; + ctx.scale(dpr, dpr); + } + resolve(adaptor(ctx)); + }); + }); + }, + setHoverColor() { + const { color, size } = this.data; + if (isObj(color)) { + return this.getContext().then((context) => { + const LinearColor = context.createLinearGradient(size, 0, 0, 0); + Object.keys(color) + .sort((a, b) => parseFloat(a) - parseFloat(b)) + .map((key) => + LinearColor.addColorStop(parseFloat(key) / 100, color[key]) + ); + this.hoverColor = LinearColor; + }); + } + this.hoverColor = color; + return Promise.resolve(); + }, + presetCanvas(context, strokeStyle, beginAngle, endAngle, fill) { + const { strokeWidth, lineCap, clockwise, size } = this.data; + const position = size / 2; + const radius = position - strokeWidth / 2; + context.setStrokeStyle(strokeStyle); + context.setLineWidth(strokeWidth); + context.setLineCap(lineCap); + context.beginPath(); + context.arc(position, position, radius, beginAngle, endAngle, !clockwise); + context.stroke(); + if (fill) { + context.setFillStyle(fill); + context.fill(); + } + }, + renderLayerCircle(context) { + const { layerColor, fill } = this.data; + this.presetCanvas(context, layerColor, 0, PERIMETER, fill); + }, + renderHoverCircle(context, formatValue) { + const { clockwise } = this.data; + // 结束角度 + const progress = PERIMETER * (formatValue / 100); + const endAngle = clockwise + ? BEGIN_ANGLE + progress + : 3 * Math.PI - (BEGIN_ANGLE + progress); + this.presetCanvas(context, this.hoverColor, BEGIN_ANGLE, endAngle); + }, + drawCircle(currentValue) { + const { size } = this.data; + this.getContext().then((context) => { + context.clearRect(0, 0, size, size); + this.renderLayerCircle(context); + const formatValue = format(currentValue); + if (formatValue !== 0) { + this.renderHoverCircle(context, formatValue); + } + context.draw(); + }); + }, + reRender() { + // tofector 动画暂时没有想到好的解决方案 + const { value, speed } = this.data; + if (speed <= 0 || speed > 1000) { + this.drawCircle(value); + return; + } + this.clearInterval(); + this.currentValue = this.currentValue || 0; + this.interval = setInterval(() => { + if (this.currentValue !== value) { + if (this.currentValue < value) { + this.currentValue += STEP; + } else { + this.currentValue -= STEP; + } + this.drawCircle(this.currentValue); + } else { + this.clearInterval(); + } + }, 1000 / speed); + }, + clearInterval() { + if (this.interval) { + clearInterval(this.interval); + this.interval = null; + } + }, + }, + mounted() { + this.currentValue = this.data.value; + this.setHoverColor().then(() => { + this.drawCircle(this.currentValue); + }); + }, + destroyed() { + this.clearInterval(); + }, +}); diff --git a/vant/dist/circle/index.json b/vant/dist/circle/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/circle/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/circle/index.wxml b/vant/dist/circle/index.wxml new file mode 100644 index 0000000..52bc59f --- /dev/null +++ b/vant/dist/circle/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + {{ text }} + diff --git a/vant/dist/circle/index.wxss b/vant/dist/circle/index.wxss new file mode 100644 index 0000000..3ab63df --- /dev/null +++ b/vant/dist/circle/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-circle{position:relative;display:inline-block;text-align:center}.van-circle__text{position:absolute;top:50%;left:0;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#323233;color:var(--circle-text-color,#323233)} \ No newline at end of file diff --git a/vant/dist/col/index.d.ts b/vant/dist/col/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/col/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/col/index.js b/vant/dist/col/index.js new file mode 100644 index 0000000..20f326f --- /dev/null +++ b/vant/dist/col/index.js @@ -0,0 +1,9 @@ +import { useParent } from '../common/relation'; +import { VantComponent } from '../common/component'; +VantComponent({ + relation: useParent('row'), + props: { + span: Number, + offset: Number, + }, +}); diff --git a/vant/dist/col/index.json b/vant/dist/col/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/col/index.wxml b/vant/dist/col/index.wxml new file mode 100644 index 0000000..975348b --- /dev/null +++ b/vant/dist/col/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/vant/dist/col/index.wxs b/vant/dist/col/index.wxs new file mode 100644 index 0000000..507c1cb --- /dev/null +++ b/vant/dist/col/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + if (!data.gutter) { + return ''; + } + + return style({ + 'padding-right': addUnit(data.gutter / 2), + 'padding-left': addUnit(data.gutter / 2), + }); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/vant/dist/col/index.wxss b/vant/dist/col/index.wxss new file mode 100644 index 0000000..44c896a --- /dev/null +++ b/vant/dist/col/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-col{float:left;box-sizing:border-box}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%} \ No newline at end of file diff --git a/vant/dist/collapse-item/animate.d.ts b/vant/dist/collapse-item/animate.d.ts new file mode 100644 index 0000000..0c33c00 --- /dev/null +++ b/vant/dist/collapse-item/animate.d.ts @@ -0,0 +1,6 @@ +/// +export declare function setContentAnimate( + context: WechatMiniprogram.Component.TrivialInstance, + expanded: boolean, + mounted: boolean +): void; diff --git a/vant/dist/collapse-item/animate.js b/vant/dist/collapse-item/animate.js new file mode 100644 index 0000000..7ce1dae --- /dev/null +++ b/vant/dist/collapse-item/animate.js @@ -0,0 +1,70 @@ +import { canIUseAnimate } from '../common/version'; +import { getRect } from '../common/utils'; +function useAnimate(context, expanded, mounted, height) { + const selector = '.van-collapse-item__wrapper'; + if (expanded) { + context.animate( + selector, + [ + { height: 0, ease: 'ease-in-out', offset: 0 }, + { height: `${height}px`, ease: 'ease-in-out', offset: 1 }, + { height: `auto`, ease: 'ease-in-out', offset: 1 }, + ], + mounted ? 300 : 0, + () => { + context.clearAnimation(selector); + } + ); + return; + } + context.animate( + selector, + [ + { height: `${height}px`, ease: 'ease-in-out', offset: 0 }, + { height: 0, ease: 'ease-in-out', offset: 1 }, + ], + 300, + () => { + context.clearAnimation(selector); + } + ); +} +function useAnimation(context, expanded, mounted, height) { + const animation = wx.createAnimation({ + duration: 0, + timingFunction: 'ease-in-out', + }); + if (expanded) { + if (height === 0) { + animation.height('auto').top(1).step(); + } else { + animation + .height(height) + .top(1) + .step({ + duration: mounted ? 300 : 1, + }) + .height('auto') + .step(); + } + context.setData({ + animation: animation.export(), + }); + return; + } + animation.height(height).top(0).step({ duration: 1 }).height(0).step({ + duration: 300, + }); + context.setData({ + animation: animation.export(), + }); +} +export function setContentAnimate(context, expanded, mounted) { + getRect(context, '.van-collapse-item__content') + .then((rect) => rect.height) + .then((height) => { + canIUseAnimate() + ? useAnimate(context, expanded, mounted, height) + : useAnimation(context, expanded, mounted, height); + }); +} diff --git a/vant/dist/collapse-item/index.d.ts b/vant/dist/collapse-item/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/collapse-item/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/collapse-item/index.js b/vant/dist/collapse-item/index.js new file mode 100644 index 0000000..c44c27e --- /dev/null +++ b/vant/dist/collapse-item/index.js @@ -0,0 +1,59 @@ +import { VantComponent } from '../common/component'; +import { useParent } from '../common/relation'; +import { setContentAnimate } from './animate'; +VantComponent({ + classes: ['title-class', 'content-class'], + relation: useParent('collapse'), + props: { + name: null, + title: null, + value: null, + icon: String, + label: String, + disabled: Boolean, + clickable: Boolean, + border: { + type: Boolean, + value: true, + }, + isLink: { + type: Boolean, + value: true, + }, + }, + data: { + expanded: false, + }, + mounted() { + this.updateExpanded(); + this.mounted = true; + }, + methods: { + updateExpanded() { + if (!this.parent) { + return; + } + const { value, accordion } = this.parent.data; + const { children = [] } = this.parent; + const { name } = this.data; + const index = children.indexOf(this); + const currentName = name == null ? index : name; + const expanded = accordion + ? value === currentName + : (value || []).some((name) => name === currentName); + if (expanded !== this.data.expanded) { + setContentAnimate(this, expanded, this.mounted); + } + this.setData({ index, expanded }); + }, + onClick() { + if (this.data.disabled) { + return; + } + const { name, expanded } = this.data; + const index = this.parent.children.indexOf(this); + const currentName = name == null ? index : name; + this.parent.switch(currentName, !expanded); + }, + }, +}); diff --git a/vant/dist/collapse-item/index.json b/vant/dist/collapse-item/index.json new file mode 100644 index 0000000..0e5425c --- /dev/null +++ b/vant/dist/collapse-item/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index" + } +} diff --git a/vant/dist/collapse-item/index.wxml b/vant/dist/collapse-item/index.wxml new file mode 100644 index 0000000..ae4cc83 --- /dev/null +++ b/vant/dist/collapse-item/index.wxml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + diff --git a/vant/dist/collapse-item/index.wxss b/vant/dist/collapse-item/index.wxss new file mode 100644 index 0000000..0bb936c --- /dev/null +++ b/vant/dist/collapse-item/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;transition:-webkit-transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s),-webkit-transform var(--collapse-item-transition-duration,.3s)}.van-collapse-item__title--expanded .van-cell__right-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:#c8c9cc!important;color:var(--collapse-item-title-disabled-color,#c8c9cc)!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important;background-color:var(--white,#fff)!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__content{padding:15px;padding:var(--collapse-item-content-padding,15px);color:#969799;color:var(--collapse-item-content-text-color,#969799);font-size:13px;font-size:var(--collapse-item-content-font-size,13px);line-height:1.5;line-height:var(--collapse-item-content-line-height,1.5);background-color:#fff;background-color:var(--collapse-item-content-background-color,#fff)} \ No newline at end of file diff --git a/vant/dist/collapse/index.d.ts b/vant/dist/collapse/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/collapse/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/collapse/index.js b/vant/dist/collapse/index.js new file mode 100644 index 0000000..60e4611 --- /dev/null +++ b/vant/dist/collapse/index.js @@ -0,0 +1,44 @@ +import { VantComponent } from '../common/component'; +import { useChildren } from '../common/relation'; +VantComponent({ + relation: useChildren('collapse-item'), + props: { + value: { + type: null, + observer: 'updateExpanded', + }, + accordion: { + type: Boolean, + observer: 'updateExpanded', + }, + border: { + type: Boolean, + value: true, + }, + }, + methods: { + updateExpanded() { + this.children.forEach((child) => { + child.updateExpanded(); + }); + }, + switch(name, expanded) { + const { accordion, value } = this.data; + const changeItem = name; + if (!accordion) { + name = expanded + ? (value || []).concat(name) + : (value || []).filter((activeName) => activeName !== name); + } else { + name = expanded ? name : ''; + } + if (expanded) { + this.$emit('open', changeItem); + } else { + this.$emit('close', changeItem); + } + this.$emit('change', name); + this.$emit('input', name); + }, + }, +}); diff --git a/vant/dist/collapse/index.json b/vant/dist/collapse/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/collapse/index.wxml b/vant/dist/collapse/index.wxml new file mode 100644 index 0000000..fd4e171 --- /dev/null +++ b/vant/dist/collapse/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/vant/dist/collapse/index.wxss b/vant/dist/collapse/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/collapse/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/common/color.d.ts b/vant/dist/common/color.d.ts new file mode 100644 index 0000000..386f307 --- /dev/null +++ b/vant/dist/common/color.d.ts @@ -0,0 +1,7 @@ +export declare const RED = "#ee0a24"; +export declare const BLUE = "#1989fa"; +export declare const WHITE = "#fff"; +export declare const GREEN = "#07c160"; +export declare const ORANGE = "#ff976a"; +export declare const GRAY = "#323233"; +export declare const GRAY_DARK = "#969799"; diff --git a/vant/dist/common/color.js b/vant/dist/common/color.js new file mode 100644 index 0000000..6b285bd --- /dev/null +++ b/vant/dist/common/color.js @@ -0,0 +1,7 @@ +export const RED = '#ee0a24'; +export const BLUE = '#1989fa'; +export const WHITE = '#fff'; +export const GREEN = '#07c160'; +export const ORANGE = '#ff976a'; +export const GRAY = '#323233'; +export const GRAY_DARK = '#969799'; diff --git a/vant/dist/common/component.d.ts b/vant/dist/common/component.d.ts new file mode 100644 index 0000000..6b0a958 --- /dev/null +++ b/vant/dist/common/component.d.ts @@ -0,0 +1,8 @@ +/// +import { VantComponentOptions } from '../definitions/index'; +declare function VantComponent< + Data extends WechatMiniprogram.Component.DataOption, + Props extends WechatMiniprogram.Component.PropertyOption, + Methods extends WechatMiniprogram.Component.MethodOption +>(vantOptions: VantComponentOptions): void; +export { VantComponent }; diff --git a/vant/dist/common/component.js b/vant/dist/common/component.js new file mode 100644 index 0000000..5530c6f --- /dev/null +++ b/vant/dist/common/component.js @@ -0,0 +1,45 @@ +import { basic } from '../mixins/basic'; +function mapKeys(source, target, map) { + Object.keys(map).forEach((key) => { + if (source[key]) { + target[map[key]] = source[key]; + } + }); +} +function VantComponent(vantOptions) { + const options = {}; + mapKeys(vantOptions, options, { + data: 'data', + props: 'properties', + mixins: 'behaviors', + methods: 'methods', + beforeCreate: 'created', + created: 'attached', + mounted: 'ready', + destroyed: 'detached', + classes: 'externalClasses', + }); + // add default externalClasses + options.externalClasses = options.externalClasses || []; + options.externalClasses.push('custom-class'); + // add default behaviors + options.behaviors = options.behaviors || []; + options.behaviors.push(basic); + // add relations + const { relation } = vantOptions; + if (relation) { + options.relations = relation.relations; + options.behaviors.push(relation.mixin); + } + // map field to form-field behavior + if (vantOptions.field) { + options.behaviors.push('wx://form-field'); + } + // add default options + options.options = { + multipleSlots: true, + addGlobalClass: true, + }; + Component(options); +} +export { VantComponent }; diff --git a/vant/dist/common/index.wxss b/vant/dist/common/index.wxss new file mode 100644 index 0000000..976825d --- /dev/null +++ b/vant/dist/common/index.wxss @@ -0,0 +1 @@ +.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{display:table;clear:both;content:""}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #ebedf0;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px} \ No newline at end of file diff --git a/vant/dist/common/relation.d.ts b/vant/dist/common/relation.d.ts new file mode 100644 index 0000000..be5f2ee --- /dev/null +++ b/vant/dist/common/relation.d.ts @@ -0,0 +1,21 @@ +/// +declare type TrivialInstance = WechatMiniprogram.Component.TrivialInstance; +export declare function useParent( + name: string, + onEffect?: (this: TrivialInstance) => void +): { + relations: { + [x: string]: WechatMiniprogram.Component.RelationOption; + }; + mixin: string; +}; +export declare function useChildren( + name: string, + onEffect?: (this: TrivialInstance, target: TrivialInstance) => void +): { + relations: { + [x: string]: WechatMiniprogram.Component.RelationOption; + }; + mixin: string; +}; +export {}; diff --git a/vant/dist/common/relation.js b/vant/dist/common/relation.js new file mode 100644 index 0000000..99c1a49 --- /dev/null +++ b/vant/dist/common/relation.js @@ -0,0 +1,64 @@ +export function useParent(name, onEffect) { + const path = `../${name}/index`; + return { + relations: { + [path]: { + type: 'ancestor', + linked() { + onEffect && onEffect.call(this); + }, + linkChanged() { + onEffect && onEffect.call(this); + }, + unlinked() { + onEffect && onEffect.call(this); + }, + }, + }, + mixin: Behavior({ + created() { + Object.defineProperty(this, 'parent', { + get: () => this.getRelationNodes(path)[0], + }); + Object.defineProperty(this, 'index', { + // @ts-ignore + get: () => { + var _a, _b; + return (_b = + (_a = this.parent) === null || _a === void 0 + ? void 0 + : _a.children) === null || _b === void 0 + ? void 0 + : _b.indexOf(this); + }, + }); + }, + }), + }; +} +export function useChildren(name, onEffect) { + const path = `../${name}/index`; + return { + relations: { + [path]: { + type: 'descendant', + linked(target) { + onEffect && onEffect.call(this, target); + }, + linkChanged(target) { + onEffect && onEffect.call(this, target); + }, + unlinked(target) { + onEffect && onEffect.call(this, target); + }, + }, + }, + mixin: Behavior({ + created() { + Object.defineProperty(this, 'children', { + get: () => this.getRelationNodes(path) || [], + }); + }, + }), + }; +} diff --git a/vant/dist/common/style/clearfix.wxss b/vant/dist/common/style/clearfix.wxss new file mode 100644 index 0000000..a0ca838 --- /dev/null +++ b/vant/dist/common/style/clearfix.wxss @@ -0,0 +1 @@ +.van-clearfix:after{display:table;clear:both;content:""} \ No newline at end of file diff --git a/vant/dist/common/style/ellipsis.wxss b/vant/dist/common/style/ellipsis.wxss new file mode 100644 index 0000000..1e9dbc9 --- /dev/null +++ b/vant/dist/common/style/ellipsis.wxss @@ -0,0 +1 @@ +.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3} \ No newline at end of file diff --git a/vant/dist/common/style/hairline.wxss b/vant/dist/common/style/hairline.wxss new file mode 100644 index 0000000..41246f9 --- /dev/null +++ b/vant/dist/common/style/hairline.wxss @@ -0,0 +1,55 @@ +.van-hairline, +.van-hairline--bottom, +.van-hairline--left, +.van-hairline--right, +.van-hairline--surround, +.van-hairline--top, +.van-hairline--top-bottom { + position: relative +} + +.van-hairline--bottom:after, +.van-hairline--left:after, +.van-hairline--right:after, +.van-hairline--surround:after, +.van-hairline--top-bottom:after, +.van-hairline--top:after, +.van-hairline:after { + position: absolute; + box-sizing: border-box; + -webkit-transform-origin: center; + transform-origin: center; + content: " "; + pointer-events: none; + top: -50%; + right: -50%; + bottom: -50%; + left: -50%; + border: 0 solid #ebedf0; + -webkit-transform: scale(.5); + transform: scale(.5) +} + +.van-hairline--top:after { + border-top-width: 1px +} + +.van-hairline--left:after { + border-left-width: 1px +} + +.van-hairline--right:after { + border-right-width: 1px +} + +.van-hairline--bottom:after { + border-bottom-width: 1px +} + +.van-hairline--top-bottom:after { + border-width: 1px 0 +} + +.van-hairline--surround:after { + border-width: 1px +} \ No newline at end of file diff --git a/vant/dist/common/style/mixins/clearfix.wxss b/vant/dist/common/style/mixins/clearfix.wxss new file mode 100644 index 0000000..e69de29 diff --git a/vant/dist/common/style/mixins/ellipsis.wxss b/vant/dist/common/style/mixins/ellipsis.wxss new file mode 100644 index 0000000..e69de29 diff --git a/vant/dist/common/style/mixins/hairline.wxss b/vant/dist/common/style/mixins/hairline.wxss new file mode 100644 index 0000000..e69de29 diff --git a/vant/dist/common/style/theme.wxss b/vant/dist/common/style/theme.wxss new file mode 100644 index 0000000..e69de29 diff --git a/vant/dist/common/style/var.wxss b/vant/dist/common/style/var.wxss new file mode 100644 index 0000000..e69de29 diff --git a/vant/dist/common/utils.d.ts b/vant/dist/common/utils.d.ts new file mode 100644 index 0000000..1ceccd1 --- /dev/null +++ b/vant/dist/common/utils.d.ts @@ -0,0 +1,30 @@ +/// +export declare function range(num: number, min: number, max: number): number; +export declare function nextTick(cb: (...args: any[]) => void): void; +export declare function getSystemInfoSync(): WechatMiniprogram.GetSystemInfoSyncResult; +export declare function addUnit(value?: string | number): string | undefined; +export declare function requestAnimationFrame( + cb: () => void +): number | WechatMiniprogram.NodesRef; +export declare function pickExclude(obj: unknown, keys: string[]): {}; +export declare function getRect( + context: WechatMiniprogram.Component.TrivialInstance, + selector: string +): Promise; +export declare function getAllRect( + context: WechatMiniprogram.Component.TrivialInstance, + selector: string +): Promise; +export declare function groupSetData( + context: WechatMiniprogram.Component.TrivialInstance, + cb: () => void +): void; +export declare function toPromise( + promiseLike: Promise | unknown +): Promise; +export declare function getCurrentPage(): T & + WechatMiniprogram.OptionalInterface & + WechatMiniprogram.Page.InstanceProperties & + WechatMiniprogram.Page.InstanceMethods> & + WechatMiniprogram.Page.Data> & + Record; diff --git a/vant/dist/common/utils.js b/vant/dist/common/utils.js new file mode 100644 index 0000000..8135171 --- /dev/null +++ b/vant/dist/common/utils.js @@ -0,0 +1,89 @@ +import { isDef, isNumber, isPlainObject, isPromise } from './validator'; +import { canIUseGroupSetData, canIUseNextTick } from './version'; +export function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} +export function nextTick(cb) { + if (canIUseNextTick()) { + wx.nextTick(cb); + } else { + setTimeout(() => { + cb(); + }, 1000 / 30); + } +} +let systemInfo; +export function getSystemInfoSync() { + if (systemInfo == null) { + systemInfo = wx.getSystemInfoSync(); + } + return systemInfo; +} +export function addUnit(value) { + if (!isDef(value)) { + return undefined; + } + value = String(value); + return isNumber(value) ? `${value}px` : value; +} +export function requestAnimationFrame(cb) { + const systemInfo = getSystemInfoSync(); + if (systemInfo.platform === 'devtools') { + return setTimeout(() => { + cb(); + }, 1000 / 30); + } + return wx + .createSelectorQuery() + .selectViewport() + .boundingClientRect() + .exec(() => { + cb(); + }); +} +export function pickExclude(obj, keys) { + if (!isPlainObject(obj)) { + return {}; + } + return Object.keys(obj).reduce((prev, key) => { + if (!keys.includes(key)) { + prev[key] = obj[key]; + } + return prev; + }, {}); +} +export function getRect(context, selector) { + return new Promise((resolve) => { + wx.createSelectorQuery() + .in(context) + .select(selector) + .boundingClientRect() + .exec((rect = []) => resolve(rect[0])); + }); +} +export function getAllRect(context, selector) { + return new Promise((resolve) => { + wx.createSelectorQuery() + .in(context) + .selectAll(selector) + .boundingClientRect() + .exec((rect = []) => resolve(rect[0])); + }); +} +export function groupSetData(context, cb) { + if (canIUseGroupSetData()) { + context.groupSetData(cb); + } else { + cb(); + } +} +export function toPromise(promiseLike) { + if (isPromise(promiseLike)) { + return promiseLike; + } + return Promise.resolve(promiseLike); +} +export function getCurrentPage() { + const pages = getCurrentPages(); + return pages[pages.length - 1]; +} diff --git a/vant/dist/common/validator.d.ts b/vant/dist/common/validator.d.ts new file mode 100644 index 0000000..ae7c48f --- /dev/null +++ b/vant/dist/common/validator.d.ts @@ -0,0 +1,11 @@ +export declare function isFunction(val: unknown): val is Function; +export declare function isPlainObject( + val: unknown +): val is Record; +export declare function isPromise(val: unknown): val is Promise; +export declare function isDef(value: unknown): boolean; +export declare function isObj(x: unknown): x is Record; +export declare function isNumber(value: string): boolean; +export declare function isBoolean(value: unknown): value is boolean; +export declare function isImageUrl(url: string): boolean; +export declare function isVideoUrl(url: string): boolean; diff --git a/vant/dist/common/validator.js b/vant/dist/common/validator.js new file mode 100644 index 0000000..1c7d1e9 --- /dev/null +++ b/vant/dist/common/validator.js @@ -0,0 +1,30 @@ +export function isFunction(val) { + return typeof val === 'function'; +} +export function isPlainObject(val) { + return val !== null && typeof val === 'object' && !Array.isArray(val); +} +export function isPromise(val) { + return isPlainObject(val) && isFunction(val.then) && isFunction(val.catch); +} +export function isDef(value) { + return value !== undefined && value !== null; +} +export function isObj(x) { + const type = typeof x; + return x !== null && (type === 'object' || type === 'function'); +} +export function isNumber(value) { + return /^\d+(\.\d+)?$/.test(value); +} +export function isBoolean(value) { + return typeof value === 'boolean'; +} +const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; +const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i; +export function isImageUrl(url) { + return IMAGE_REGEXP.test(url); +} +export function isVideoUrl(url) { + return VIDEO_REGEXP.test(url); +} diff --git a/vant/dist/common/version.d.ts b/vant/dist/common/version.d.ts new file mode 100644 index 0000000..89c4ddd --- /dev/null +++ b/vant/dist/common/version.d.ts @@ -0,0 +1,6 @@ +export declare function canIUseModel(): boolean; +export declare function canIUseFormFieldButton(): boolean; +export declare function canIUseAnimate(): boolean; +export declare function canIUseGroupSetData(): boolean; +export declare function canIUseNextTick(): boolean; +export declare function canIUseCanvas2d(): boolean; diff --git a/vant/dist/common/version.js b/vant/dist/common/version.js new file mode 100644 index 0000000..34d698e --- /dev/null +++ b/vant/dist/common/version.js @@ -0,0 +1,45 @@ +import { getSystemInfoSync } from './utils'; +function compareVersion(v1, v2) { + v1 = v1.split('.'); + v2 = v2.split('.'); + const len = Math.max(v1.length, v2.length); + while (v1.length < len) { + v1.push('0'); + } + while (v2.length < len) { + v2.push('0'); + } + for (let i = 0; i < len; i++) { + const num1 = parseInt(v1[i], 10); + const num2 = parseInt(v2[i], 10); + if (num1 > num2) { + return 1; + } + if (num1 < num2) { + return -1; + } + } + return 0; +} +function gte(version) { + const system = getSystemInfoSync(); + return compareVersion(system.SDKVersion, version) >= 0; +} +export function canIUseModel() { + return gte('2.9.3'); +} +export function canIUseFormFieldButton() { + return gte('2.10.3'); +} +export function canIUseAnimate() { + return gte('2.9.0'); +} +export function canIUseGroupSetData() { + return gte('2.4.0'); +} +export function canIUseNextTick() { + return wx.canIUse('nextTick'); +} +export function canIUseCanvas2d() { + return gte('2.9.0'); +} diff --git a/vant/dist/count-down/index.d.ts b/vant/dist/count-down/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/count-down/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/count-down/index.js b/vant/dist/count-down/index.js new file mode 100644 index 0000000..78dbb88 --- /dev/null +++ b/vant/dist/count-down/index.js @@ -0,0 +1,99 @@ +import { VantComponent } from '../common/component'; +import { isSameSecond, parseFormat, parseTimeData } from './utils'; +function simpleTick(fn) { + return setTimeout(fn, 30); +} +VantComponent({ + props: { + useSlot: Boolean, + millisecond: Boolean, + time: { + type: Number, + observer: 'reset', + }, + format: { + type: String, + value: 'HH:mm:ss', + }, + autoStart: { + type: Boolean, + value: true, + }, + }, + data: { + timeData: parseTimeData(0), + formattedTime: '0', + }, + destroyed() { + clearTimeout(this.tid); + this.tid = null; + }, + methods: { + // 开始 + start() { + if (this.counting) { + return; + } + this.counting = true; + this.endTime = Date.now() + this.remain; + this.tick(); + }, + // 暂停 + pause() { + this.counting = false; + clearTimeout(this.tid); + }, + // 重置 + reset() { + this.pause(); + this.remain = this.data.time; + this.setRemain(this.remain); + if (this.data.autoStart) { + this.start(); + } + }, + tick() { + if (this.data.millisecond) { + this.microTick(); + } else { + this.macroTick(); + } + }, + microTick() { + this.tid = simpleTick(() => { + this.setRemain(this.getRemain()); + if (this.remain !== 0) { + this.microTick(); + } + }); + }, + macroTick() { + this.tid = simpleTick(() => { + const remain = this.getRemain(); + if (!isSameSecond(remain, this.remain) || remain === 0) { + this.setRemain(remain); + } + if (this.remain !== 0) { + this.macroTick(); + } + }); + }, + getRemain() { + return Math.max(this.endTime - Date.now(), 0); + }, + setRemain(remain) { + this.remain = remain; + const timeData = parseTimeData(remain); + if (this.data.useSlot) { + this.$emit('change', timeData); + } + this.setData({ + formattedTime: parseFormat(this.data.format, timeData), + }); + if (remain === 0) { + this.pause(); + this.$emit('finish'); + } + }, + }, +}); diff --git a/vant/dist/count-down/index.json b/vant/dist/count-down/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/count-down/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/count-down/index.wxml b/vant/dist/count-down/index.wxml new file mode 100644 index 0000000..e206e16 --- /dev/null +++ b/vant/dist/count-down/index.wxml @@ -0,0 +1,4 @@ + + + {{ formattedTime }} + diff --git a/vant/dist/count-down/index.wxss b/vant/dist/count-down/index.wxss new file mode 100644 index 0000000..bc33f5d --- /dev/null +++ b/vant/dist/count-down/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-count-down{color:#323233;color:var(--count-down-text-color,#323233);font-size:14px;font-size:var(--count-down-font-size,14px);line-height:20px;line-height:var(--count-down-line-height,20px)} \ No newline at end of file diff --git a/vant/dist/count-down/utils.d.ts b/vant/dist/count-down/utils.d.ts new file mode 100644 index 0000000..e4a58dd --- /dev/null +++ b/vant/dist/count-down/utils.d.ts @@ -0,0 +1,10 @@ +export declare type TimeData = { + days: number; + hours: number; + minutes: number; + seconds: number; + milliseconds: number; +}; +export declare function parseTimeData(time: number): TimeData; +export declare function parseFormat(format: string, timeData: TimeData): string; +export declare function isSameSecond(time1: number, time2: number): boolean; diff --git a/vant/dist/count-down/utils.js b/vant/dist/count-down/utils.js new file mode 100644 index 0000000..a9f05b8 --- /dev/null +++ b/vant/dist/count-down/utils.js @@ -0,0 +1,53 @@ +function padZero(num, targetLength = 2) { + let str = num + ''; + while (str.length < targetLength) { + str = '0' + str; + } + return str; +} +const SECOND = 1000; +const MINUTE = 60 * SECOND; +const HOUR = 60 * MINUTE; +const DAY = 24 * HOUR; +export function parseTimeData(time) { + const days = Math.floor(time / DAY); + const hours = Math.floor((time % DAY) / HOUR); + const minutes = Math.floor((time % HOUR) / MINUTE); + const seconds = Math.floor((time % MINUTE) / SECOND); + const milliseconds = Math.floor(time % SECOND); + return { + days, + hours, + minutes, + seconds, + milliseconds, + }; +} +export function parseFormat(format, timeData) { + const { days } = timeData; + let { hours, minutes, seconds, milliseconds } = timeData; + if (format.indexOf('DD') === -1) { + hours += days * 24; + } else { + format = format.replace('DD', padZero(days)); + } + if (format.indexOf('HH') === -1) { + minutes += hours * 60; + } else { + format = format.replace('HH', padZero(hours)); + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60; + } else { + format = format.replace('mm', padZero(minutes)); + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000; + } else { + format = format.replace('ss', padZero(seconds)); + } + return format.replace('SSS', padZero(milliseconds, 3)); +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000); +} diff --git a/vant/dist/datetime-picker/index.d.ts b/vant/dist/datetime-picker/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/datetime-picker/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/datetime-picker/index.js b/vant/dist/datetime-picker/index.js new file mode 100644 index 0000000..75bd063 --- /dev/null +++ b/vant/dist/datetime-picker/index.js @@ -0,0 +1,324 @@ +import { VantComponent } from '../common/component'; +import { isDef } from '../common/validator'; +import { pickerProps } from '../picker/shared'; +const currentYear = new Date().getFullYear(); +function isValidDate(date) { + return isDef(date) && !isNaN(new Date(date).getTime()); +} +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} +function padZero(val) { + return `00${val}`.slice(-2); +} +function times(n, iteratee) { + let index = -1; + const result = Array(n < 0 ? 0 : n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} +function getTrueValue(formattedValue) { + if (formattedValue === undefined) { + formattedValue = '1'; + } + while (isNaN(parseInt(formattedValue, 10))) { + formattedValue = formattedValue.slice(1); + } + return parseInt(formattedValue, 10); +} +function getMonthEndDay(year, month) { + return 32 - new Date(year, month - 1, 32).getDate(); +} +const defaultFormatter = (type, value) => value; +VantComponent({ + classes: ['active-class', 'toolbar-class', 'column-class'], + props: Object.assign(Object.assign({}, pickerProps), { + value: { + type: null, + observer: 'updateValue', + }, + filter: null, + type: { + type: String, + value: 'datetime', + observer: 'updateValue', + }, + showToolbar: { + type: Boolean, + value: true, + }, + formatter: { + type: null, + value: defaultFormatter, + }, + minDate: { + type: Number, + value: new Date(currentYear - 10, 0, 1).getTime(), + observer: 'updateValue', + }, + maxDate: { + type: Number, + value: new Date(currentYear + 10, 11, 31).getTime(), + observer: 'updateValue', + }, + minHour: { + type: Number, + value: 0, + observer: 'updateValue', + }, + maxHour: { + type: Number, + value: 23, + observer: 'updateValue', + }, + minMinute: { + type: Number, + value: 0, + observer: 'updateValue', + }, + maxMinute: { + type: Number, + value: 59, + observer: 'updateValue', + }, + }), + data: { + innerValue: Date.now(), + columns: [], + }, + methods: { + updateValue() { + const { data } = this; + const val = this.correctValue(data.value); + const isEqual = val === data.innerValue; + if (!isEqual) { + this.updateColumnValue(val).then(() => { + this.$emit('input', val); + }); + } else { + this.updateColumns(); + } + }, + getPicker() { + if (this.picker == null) { + this.picker = this.selectComponent('.van-datetime-picker'); + const { picker } = this; + const { setColumnValues } = picker; + picker.setColumnValues = (...args) => + setColumnValues.apply(picker, [...args, false]); + } + return this.picker; + }, + updateColumns() { + const { formatter = defaultFormatter } = this.data; + const results = this.getOriginColumns().map((column) => ({ + values: column.values.map((value) => formatter(column.type, value)), + })); + return this.set({ columns: results }); + }, + getOriginColumns() { + const { filter } = this.data; + const results = this.getRanges().map(({ type, range }) => { + let values = times(range[1] - range[0] + 1, (index) => { + let value = range[0] + index; + value = type === 'year' ? `${value}` : padZero(value); + return value; + }); + if (filter) { + values = filter(type, values); + } + return { type, values }; + }); + return results; + }, + getRanges() { + const { data } = this; + if (data.type === 'time') { + return [ + { + type: 'hour', + range: [data.minHour, data.maxHour], + }, + { + type: 'minute', + range: [data.minMinute, data.maxMinute], + }, + ]; + } + const { + maxYear, + maxDate, + maxMonth, + maxHour, + maxMinute, + } = this.getBoundary('max', data.innerValue); + const { + minYear, + minDate, + minMonth, + minHour, + minMinute, + } = this.getBoundary('min', data.innerValue); + const result = [ + { + type: 'year', + range: [minYear, maxYear], + }, + { + type: 'month', + range: [minMonth, maxMonth], + }, + { + type: 'day', + range: [minDate, maxDate], + }, + { + type: 'hour', + range: [minHour, maxHour], + }, + { + type: 'minute', + range: [minMinute, maxMinute], + }, + ]; + if (data.type === 'date') result.splice(3, 2); + if (data.type === 'year-month') result.splice(2, 3); + return result; + }, + correctValue(value) { + const { data } = this; + // validate value + const isDateType = data.type !== 'time'; + if (isDateType && !isValidDate(value)) { + value = data.minDate; + } else if (!isDateType && !value) { + const { minHour } = data; + value = `${padZero(minHour)}:00`; + } + // time type + if (!isDateType) { + let [hour, minute] = value.split(':'); + hour = padZero(range(hour, data.minHour, data.maxHour)); + minute = padZero(range(minute, data.minMinute, data.maxMinute)); + return `${hour}:${minute}`; + } + // date type + value = Math.max(value, data.minDate); + value = Math.min(value, data.maxDate); + return value; + }, + getBoundary(type, innerValue) { + const value = new Date(innerValue); + const boundary = new Date(this.data[`${type}Date`]); + const year = boundary.getFullYear(); + let month = 1; + let date = 1; + let hour = 0; + let minute = 0; + if (type === 'max') { + month = 12; + date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1); + hour = 23; + minute = 59; + } + if (value.getFullYear() === year) { + month = boundary.getMonth() + 1; + if (value.getMonth() + 1 === month) { + date = boundary.getDate(); + if (value.getDate() === date) { + hour = boundary.getHours(); + if (value.getHours() === hour) { + minute = boundary.getMinutes(); + } + } + } + } + return { + [`${type}Year`]: year, + [`${type}Month`]: month, + [`${type}Date`]: date, + [`${type}Hour`]: hour, + [`${type}Minute`]: minute, + }; + }, + onCancel() { + this.$emit('cancel'); + }, + onConfirm() { + this.$emit('confirm', this.data.innerValue); + }, + onChange() { + const { data } = this; + let value; + const picker = this.getPicker(); + const originColumns = this.getOriginColumns(); + if (data.type === 'time') { + const indexes = picker.getIndexes(); + value = `${+originColumns[0].values[indexes[0]]}:${+originColumns[1] + .values[indexes[1]]}`; + } else { + const indexes = picker.getIndexes(); + const values = indexes.map( + (value, index) => originColumns[index].values[value] + ); + const year = getTrueValue(values[0]); + const month = getTrueValue(values[1]); + const maxDate = getMonthEndDay(year, month); + let date = getTrueValue(values[2]); + if (data.type === 'year-month') { + date = 1; + } + date = date > maxDate ? maxDate : date; + let hour = 0; + let minute = 0; + if (data.type === 'datetime') { + hour = getTrueValue(values[3]); + minute = getTrueValue(values[4]); + } + value = new Date(year, month - 1, date, hour, minute); + } + value = this.correctValue(value); + this.updateColumnValue(value).then(() => { + this.$emit('input', value); + this.$emit('change', picker); + }); + }, + updateColumnValue(value) { + let values = []; + const { type } = this.data; + const formatter = this.data.formatter || defaultFormatter; + const picker = this.getPicker(); + if (type === 'time') { + const pair = value.split(':'); + values = [formatter('hour', pair[0]), formatter('minute', pair[1])]; + } else { + const date = new Date(value); + values = [ + formatter('year', `${date.getFullYear()}`), + formatter('month', padZero(date.getMonth() + 1)), + ]; + if (type === 'date') { + values.push(formatter('day', padZero(date.getDate()))); + } + if (type === 'datetime') { + values.push( + formatter('day', padZero(date.getDate())), + formatter('hour', padZero(date.getHours())), + formatter('minute', padZero(date.getMinutes())) + ); + } + } + return this.set({ innerValue: value }) + .then(() => this.updateColumns()) + .then(() => picker.setValues(values)); + }, + }, + created() { + const innerValue = this.correctValue(this.data.value); + this.updateColumnValue(innerValue).then(() => { + this.$emit('input', innerValue); + }); + }, +}); diff --git a/vant/dist/datetime-picker/index.json b/vant/dist/datetime-picker/index.json new file mode 100644 index 0000000..a778e91 --- /dev/null +++ b/vant/dist/datetime-picker/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/vant/dist/datetime-picker/index.wxml b/vant/dist/datetime-picker/index.wxml new file mode 100644 index 0000000..ade2202 --- /dev/null +++ b/vant/dist/datetime-picker/index.wxml @@ -0,0 +1,16 @@ + diff --git a/vant/dist/datetime-picker/index.wxss b/vant/dist/datetime-picker/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/datetime-picker/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/definitions/index.d.ts b/vant/dist/definitions/index.d.ts new file mode 100644 index 0000000..586e7bb --- /dev/null +++ b/vant/dist/definitions/index.d.ts @@ -0,0 +1,43 @@ +/// +interface VantComponentInstance { + parent: WechatMiniprogram.Component.TrivialInstance; + children: WechatMiniprogram.Component.TrivialInstance[]; + index: number; + $emit: ( + name: string, + detail?: unknown, + options?: WechatMiniprogram.Component.TriggerEventOption + ) => void; +} +export declare type VantComponentOptions< + Data extends WechatMiniprogram.Component.DataOption, + Props extends WechatMiniprogram.Component.PropertyOption, + Methods extends WechatMiniprogram.Component.MethodOption +> = { + data?: Data; + field?: boolean; + classes?: string[]; + mixins?: string[]; + props?: Props; + relation?: { + relations: Record; + mixin: string; + }; + methods?: Methods; + beforeCreate?: () => void; + created?: () => void; + mounted?: () => void; + destroyed?: () => void; +} & ThisType< + VantComponentInstance & + WechatMiniprogram.Component.Instance< + Data & { + name: string; + value: any; + }, + Props, + Methods + > & + Record +>; +export {}; diff --git a/vant/dist/definitions/index.js b/vant/dist/definitions/index.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/definitions/index.js @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dialog/dialog.d.ts b/vant/dist/dialog/dialog.d.ts new file mode 100644 index 0000000..7144032 --- /dev/null +++ b/vant/dist/dialog/dialog.d.ts @@ -0,0 +1,80 @@ +/// +export declare type Action = 'confirm' | 'cancel' | 'overlay'; +interface DialogOptions { + lang?: string; + show?: boolean; + title?: string; + width?: string | number | null; + zIndex?: number; + theme?: string; + context?: + | WechatMiniprogram.Page.TrivialInstance + | WechatMiniprogram.Component.TrivialInstance; + message?: string; + overlay?: boolean; + selector?: string; + ariaLabel?: string; + className?: string; + customStyle?: string; + transition?: string; + /** + * @deprecated use beforeClose instead + */ + asyncClose?: boolean; + beforeClose?: null | ((action: Action) => Promise | void); + businessId?: number; + sessionFrom?: string; + overlayStyle?: string; + appParameter?: string; + messageAlign?: string; + sendMessageImg?: string; + showMessageCard?: boolean; + sendMessagePath?: string; + sendMessageTitle?: string; + confirmButtonText?: string; + cancelButtonText?: string; + showConfirmButton?: boolean; + showCancelButton?: boolean; + closeOnClickOverlay?: boolean; + confirmButtonOpenType?: string; +} +declare const Dialog: { + (options: DialogOptions): Promise< + WechatMiniprogram.Component.Instance< + Record, + Record, + Record, + Record, + false + > + >; + alert( + options: DialogOptions + ): Promise< + WechatMiniprogram.Component.Instance< + Record, + Record, + Record, + Record, + false + > + >; + confirm( + options: DialogOptions + ): Promise< + WechatMiniprogram.Component.Instance< + Record, + Record, + Record, + Record, + false + > + >; + close(): void; + stopLoading(): void; + currentOptions: DialogOptions; + defaultOptions: DialogOptions; + setDefaultOptions(options: DialogOptions): void; + resetDefaultOptions(): void; +}; +export default Dialog; diff --git a/vant/dist/dialog/dialog.js b/vant/dist/dialog/dialog.js new file mode 100644 index 0000000..542c07b --- /dev/null +++ b/vant/dist/dialog/dialog.js @@ -0,0 +1,84 @@ +let queue = []; +const defaultOptions = { + show: false, + title: '', + width: null, + theme: 'default', + message: '', + zIndex: 100, + overlay: true, + selector: '#van-dialog', + className: '', + asyncClose: false, + beforeClose: null, + transition: 'scale', + customStyle: '', + messageAlign: '', + overlayStyle: '', + confirmButtonText: '确认', + cancelButtonText: '取消', + showConfirmButton: true, + showCancelButton: false, + closeOnClickOverlay: false, + confirmButtonOpenType: '', +}; +let currentOptions = Object.assign({}, defaultOptions); +function getContext() { + const pages = getCurrentPages(); + return pages[pages.length - 1]; +} +const Dialog = (options) => { + options = Object.assign(Object.assign({}, currentOptions), options); + return new Promise((resolve, reject) => { + const context = options.context || getContext(); + const dialog = context.selectComponent(options.selector); + delete options.context; + delete options.selector; + if (dialog) { + dialog.setData( + Object.assign( + { + callback: (action, instance) => { + action === 'confirm' ? resolve(instance) : reject(instance); + }, + }, + options + ) + ); + wx.nextTick(() => { + dialog.setData({ show: true }); + }); + queue.push(dialog); + } else { + console.warn( + '未找到 van-dialog 节点,请确认 selector 及 context 是否正确' + ); + } + }); +}; +Dialog.alert = (options) => Dialog(options); +Dialog.confirm = (options) => + Dialog(Object.assign({ showCancelButton: true }, options)); +Dialog.close = () => { + queue.forEach((dialog) => { + dialog.close(); + }); + queue = []; +}; +Dialog.stopLoading = () => { + queue.forEach((dialog) => { + dialog.stopLoading(); + }); +}; +Dialog.currentOptions = currentOptions; +Dialog.defaultOptions = defaultOptions; +Dialog.setDefaultOptions = (options) => { + currentOptions = Object.assign(Object.assign({}, currentOptions), options); + Dialog.currentOptions = currentOptions; +}; +Dialog.resetDefaultOptions = () => { + currentOptions = Object.assign({}, defaultOptions); + Dialog.currentOptions = currentOptions; +}; +Dialog.resetDefaultOptions(); +export default Dialog; diff --git a/vant/dist/dialog/index.d.ts b/vant/dist/dialog/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dialog/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dialog/index.js b/vant/dist/dialog/index.js new file mode 100644 index 0000000..5388cda --- /dev/null +++ b/vant/dist/dialog/index.js @@ -0,0 +1,122 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +import { openType } from '../mixins/open-type'; +import { GRAY, RED } from '../common/color'; +import { toPromise } from '../common/utils'; +VantComponent({ + mixins: [button, openType], + props: { + show: { + type: Boolean, + observer(show) { + !show && this.stopLoading(); + }, + }, + title: String, + message: String, + theme: { + type: String, + value: 'default', + }, + useSlot: Boolean, + className: String, + customStyle: String, + asyncClose: Boolean, + messageAlign: String, + beforeClose: null, + overlayStyle: String, + useTitleSlot: Boolean, + showCancelButton: Boolean, + closeOnClickOverlay: Boolean, + confirmButtonOpenType: String, + width: null, + zIndex: { + type: Number, + value: 2000, + }, + confirmButtonText: { + type: String, + value: '确认', + }, + cancelButtonText: { + type: String, + value: '取消', + }, + confirmButtonColor: { + type: String, + value: RED, + }, + cancelButtonColor: { + type: String, + value: GRAY, + }, + showConfirmButton: { + type: Boolean, + value: true, + }, + overlay: { + type: Boolean, + value: true, + }, + transition: { + type: String, + value: 'scale', + }, + }, + data: { + loading: { + confirm: false, + cancel: false, + }, + callback: () => {}, + }, + methods: { + onConfirm() { + this.handleAction('confirm'); + }, + onCancel() { + this.handleAction('cancel'); + }, + onClickOverlay() { + this.close('overlay'); + }, + close(action) { + this.setData({ show: false }); + wx.nextTick(() => { + this.$emit('close', action); + const { callback } = this.data; + if (callback) { + callback(action, this); + } + }); + }, + stopLoading() { + this.setData({ + loading: { + confirm: false, + cancel: false, + }, + }); + }, + handleAction(action) { + this.$emit(action, { dialog: this }); + const { asyncClose, beforeClose } = this.data; + if (!asyncClose && !beforeClose) { + this.close(action); + return; + } + this.setData({ + [`loading.${action}`]: true, + }); + if (beforeClose) { + toPromise(beforeClose(action)).then((value) => { + if (value) { + this.close(action); + } else { + this.stopLoading(); + } + }); + } + }, + }, +}); diff --git a/vant/dist/dialog/index.json b/vant/dist/dialog/index.json new file mode 100644 index 0000000..43417fc --- /dev/null +++ b/vant/dist/dialog/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-button": "../button/index", + "van-goods-action": "../goods-action/index", + "van-goods-action-button": "../goods-action-button/index" + } +} diff --git a/vant/dist/dialog/index.wxml b/vant/dist/dialog/index.wxml new file mode 100644 index 0000000..fd13bc9 --- /dev/null +++ b/vant/dist/dialog/index.wxml @@ -0,0 +1,113 @@ + + + + + + {{ title }} + + + + + {{ message }} + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + diff --git a/vant/dist/dialog/index.wxss b/vant/dist/dialog/index.wxss new file mode 100644 index 0000000..c6bac95 --- /dev/null +++ b/vant/dist/dialog/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dialog{top:45%!important;overflow:hidden;width:320px;width:var(--dialog-width,320px);font-size:16px;font-size:var(--dialog-font-size,16px);border-radius:16px;border-radius:var(--dialog-border-radius,16px);background-color:#fff;background-color:var(--dialog-background-color,#fff)}@media (max-width:321px){.van-dialog{width:90%;width:var(--dialog-small-screen-width,90%)}}.van-dialog__header{text-align:center;padding-top:24px;padding-top:var(--dialog-header-padding-top,24px);font-weight:500;font-weight:var(--dialog-header-font-weight,500);line-height:24px;line-height:var(--dialog-header-line-height,24px)}.van-dialog__header--isolated{padding:24px 0;padding:var(--dialog-header-isolated-padding,24px 0)}.van-dialog__message{overflow-y:auto;text-align:center;-webkit-overflow-scrolling:touch;font-size:14px;font-size:var(--dialog-message-font-size,14px);line-height:20px;line-height:var(--dialog-message-line-height,20px);max-height:60vh;max-height:var(--dialog-message-max-height,60vh);padding:24px;padding:var(--dialog-message-padding,24px)}.van-dialog__message-text{word-wrap:break-word}.van-dialog__message--hasTitle{padding-top:8px;padding-top:var(--dialog-has-title-message-padding-top,8px);color:#646566;color:var(--dialog-has-title-message-text-color,#646566)}.van-dialog__message--round-button{padding-bottom:16px;color:#323233}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__footer{display:-webkit-flex;display:flex}.van-dialog__footer--round-button{position:relative!important;padding:8px 24px 16px!important}.van-dialog__button{-webkit-flex:1;flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog-bounce-enter{-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7);opacity:0}.van-dialog-bounce-leave-active{-webkit-transform:translate3d(-50%,-50%,0) scale(.9);transform:translate3d(-50%,-50%,0) scale(.9);opacity:0} \ No newline at end of file diff --git a/vant/dist/divider/index.d.ts b/vant/dist/divider/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/divider/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/divider/index.js b/vant/dist/divider/index.js new file mode 100644 index 0000000..e725740 --- /dev/null +++ b/vant/dist/divider/index.js @@ -0,0 +1,12 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + dashed: Boolean, + hairline: Boolean, + contentPosition: String, + fontSize: String, + borderColor: String, + textColor: String, + customStyle: String, + }, +}); diff --git a/vant/dist/divider/index.json b/vant/dist/divider/index.json new file mode 100644 index 0000000..a89ef4d --- /dev/null +++ b/vant/dist/divider/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} diff --git a/vant/dist/divider/index.wxml b/vant/dist/divider/index.wxml new file mode 100644 index 0000000..f6a5a45 --- /dev/null +++ b/vant/dist/divider/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/vant/dist/divider/index.wxs b/vant/dist/divider/index.wxs new file mode 100644 index 0000000..215b14f --- /dev/null +++ b/vant/dist/divider/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + return style([ + { + 'border-color': data.borderColor, + color: data.textColor, + 'font-size': addUnit(data.fontSize), + }, + data.customStyle, + ]); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/vant/dist/divider/index.wxss b/vant/dist/divider/index.wxss new file mode 100644 index 0000000..c055e3a --- /dev/null +++ b/vant/dist/divider/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-divider{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;margin:16px 0;margin:var(--divider-margin,16px 0);color:#969799;color:var(--divider-text-color,#969799);font-size:14px;font-size:var(--divider-font-size,14px);line-height:24px;line-height:var(--divider-line-height,24px);border:0 solid #ebedf0;border-color:var(--divider-border-color,#ebedf0)}.van-divider:after,.van-divider:before{display:block;-webkit-flex:1;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:1px 0 0}.van-divider:before{content:""}.van-divider--hairline:after,.van-divider--hairline:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--center:before,.van-divider--left:before,.van-divider--right:before{margin-right:16px;margin-right:var(--divider-content-padding,16px)}.van-divider--center:after,.van-divider--left:after,.van-divider--right:after{content:"";margin-left:16px;margin-left:var(--divider-content-padding,16px)}.van-divider--left:before{max-width:10%;max-width:var(--divider-content-left-width,10%)}.van-divider--right:after{max-width:10%;max-width:var(--divider-content-right-width,10%)} \ No newline at end of file diff --git a/vant/dist/dropdown-item/index.d.ts b/vant/dist/dropdown-item/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dropdown-item/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dropdown-item/index.js b/vant/dist/dropdown-item/index.js new file mode 100644 index 0000000..95da1ee --- /dev/null +++ b/vant/dist/dropdown-item/index.js @@ -0,0 +1,111 @@ +import { useParent } from '../common/relation'; +import { VantComponent } from '../common/component'; +VantComponent({ + field: true, + relation: useParent('dropdown-menu', function () { + this.updateDataFromParent(); + }), + props: { + value: { + type: null, + observer: 'rerender', + }, + title: { + type: String, + observer: 'rerender', + }, + disabled: Boolean, + titleClass: { + type: String, + observer: 'rerender', + }, + options: { + type: Array, + value: [], + observer: 'rerender', + }, + popupStyle: String, + }, + data: { + transition: true, + showPopup: false, + showWrapper: false, + displayTitle: '', + }, + methods: { + rerender() { + wx.nextTick(() => { + var _a; + (_a = this.parent) === null || _a === void 0 + ? void 0 + : _a.updateItemListData(); + }); + }, + updateDataFromParent() { + if (this.parent) { + const { + overlay, + duration, + activeColor, + closeOnClickOverlay, + direction, + } = this.parent.data; + this.setData({ + overlay, + duration, + activeColor, + closeOnClickOverlay, + direction, + }); + } + }, + onOpen() { + this.$emit('open'); + }, + onOpened() { + this.$emit('opened'); + }, + onClose() { + this.$emit('close'); + }, + onClosed() { + this.$emit('closed'); + this.setData({ showWrapper: false }); + }, + onOptionTap(event) { + const { option } = event.currentTarget.dataset; + const { value } = option; + const shouldEmitChange = this.data.value !== value; + this.setData({ showPopup: false, value }); + this.$emit('close'); + this.rerender(); + if (shouldEmitChange) { + this.$emit('change', value); + } + }, + toggle(show, options = {}) { + var _a; + const { showPopup } = this.data; + if (typeof show !== 'boolean') { + show = !showPopup; + } + if (show === showPopup) { + return; + } + this.setData({ + transition: !options.immediate, + showPopup: show, + }); + if (show) { + (_a = this.parent) === null || _a === void 0 + ? void 0 + : _a.getChildWrapperStyle().then((wrapperStyle) => { + this.setData({ wrapperStyle, showWrapper: true }); + this.rerender(); + }); + } else { + this.rerender(); + } + }, + }, +}); diff --git a/vant/dist/dropdown-item/index.json b/vant/dist/dropdown-item/index.json new file mode 100644 index 0000000..88d5409 --- /dev/null +++ b/vant/dist/dropdown-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/dropdown-item/index.wxml b/vant/dist/dropdown-item/index.wxml new file mode 100644 index 0000000..dd75292 --- /dev/null +++ b/vant/dist/dropdown-item/index.wxml @@ -0,0 +1,48 @@ + + + + + + + {{ item.text }} + + + + + + + diff --git a/vant/dist/dropdown-item/index.wxss b/vant/dist/dropdown-item/index.wxss new file mode 100644 index 0000000..7cab3f2 --- /dev/null +++ b/vant/dist/dropdown-item/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dropdown-item{position:fixed;right:0;left:0;overflow:hidden}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:#ee0a24;color:var(--dropdown-menu-option-active-color,#ee0a24)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit} \ No newline at end of file diff --git a/vant/dist/dropdown-item/shared.d.ts b/vant/dist/dropdown-item/shared.d.ts new file mode 100644 index 0000000..c90bd9e --- /dev/null +++ b/vant/dist/dropdown-item/shared.d.ts @@ -0,0 +1,5 @@ +export interface Option { + text: string; + value: string | number; + icon: string; +} diff --git a/vant/dist/dropdown-item/shared.js b/vant/dist/dropdown-item/shared.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dropdown-item/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dropdown-menu/index.d.ts b/vant/dist/dropdown-menu/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dropdown-menu/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dropdown-menu/index.js b/vant/dist/dropdown-menu/index.js new file mode 100644 index 0000000..aba11b9 --- /dev/null +++ b/vant/dist/dropdown-menu/index.js @@ -0,0 +1,112 @@ +import { VantComponent } from '../common/component'; +import { useChildren } from '../common/relation'; +import { addUnit, getRect, getSystemInfoSync } from '../common/utils'; +let ARRAY = []; +VantComponent({ + field: true, + relation: useChildren('dropdown-item', function () { + this.updateItemListData(); + }), + props: { + activeColor: { + type: String, + observer: 'updateChildrenData', + }, + overlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + zIndex: { + type: Number, + value: 10, + }, + duration: { + type: Number, + value: 200, + observer: 'updateChildrenData', + }, + direction: { + type: String, + value: 'down', + observer: 'updateChildrenData', + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + closeOnClickOutside: { + type: Boolean, + value: true, + }, + }, + data: { + itemListData: [], + }, + beforeCreate() { + const { windowHeight } = getSystemInfoSync(); + this.windowHeight = windowHeight; + ARRAY.push(this); + }, + destroyed() { + ARRAY = ARRAY.filter((item) => item !== this); + }, + methods: { + updateItemListData() { + this.setData({ + itemListData: this.children.map((child) => child.data), + }); + }, + updateChildrenData() { + this.children.forEach((child) => { + child.updateDataFromParent(); + }); + }, + toggleItem(active) { + this.children.forEach((item, index) => { + const { showPopup } = item.data; + if (index === active) { + item.toggle(); + } else if (showPopup) { + item.toggle(false, { immediate: true }); + } + }); + }, + close() { + this.children.forEach((child) => { + child.toggle(false, { immediate: true }); + }); + }, + getChildWrapperStyle() { + const { zIndex, direction } = this.data; + return getRect(this, '.van-dropdown-menu').then((rect) => { + const { top = 0, bottom = 0 } = rect; + const offset = direction === 'down' ? bottom : this.windowHeight - top; + let wrapperStyle = `z-index: ${zIndex};`; + if (direction === 'down') { + wrapperStyle += `top: ${addUnit(offset)};`; + } else { + wrapperStyle += `bottom: ${addUnit(offset)};`; + } + return wrapperStyle; + }); + }, + onTitleTap(event) { + const { index } = event.currentTarget.dataset; + const child = this.children[index]; + if (!child.data.disabled) { + ARRAY.forEach((menuItem) => { + if ( + menuItem && + menuItem.data.closeOnClickOutside && + menuItem !== this + ) { + menuItem.close(); + } + }); + this.toggleItem(index); + } + }, + }, +}); diff --git a/vant/dist/dropdown-menu/index.json b/vant/dist/dropdown-menu/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/dropdown-menu/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/dropdown-menu/index.wxml b/vant/dist/dropdown-menu/index.wxml new file mode 100644 index 0000000..037ac3b --- /dev/null +++ b/vant/dist/dropdown-menu/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + {{ computed.displayTitle(item) }} + + + + + + diff --git a/vant/dist/dropdown-menu/index.wxs b/vant/dist/dropdown-menu/index.wxs new file mode 100644 index 0000000..6538854 --- /dev/null +++ b/vant/dist/dropdown-menu/index.wxs @@ -0,0 +1,16 @@ +/* eslint-disable */ +function displayTitle(item) { + if (item.title) { + return item.title; + } + + var match = item.options.filter(function(option) { + return option.value === item.value; + }); + var displayTitle = match.length ? match[0].text : ''; + return displayTitle; +} + +module.exports = { + displayTitle: displayTitle +}; diff --git a/vant/dist/dropdown-menu/index.wxss b/vant/dist/dropdown-menu/index.wxss new file mode 100644 index 0000000..ec6caff --- /dev/null +++ b/vant/dist/dropdown-menu/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dropdown-menu{display:-webkit-flex;display:flex;box-shadow:0 2px 12px rgba(100,101,102,.12);-webkit-user-select:none;user-select:none;height:50px;height:var(--dropdown-menu-height,50px);background-color:#fff;background-color:var(--dropdown-menu-background-color,#fff)}.van-dropdown-menu__item{display:-webkit-flex;display:flex;-webkit-flex:1;flex:1;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;min-width:0}.van-dropdown-menu__item:active{opacity:.7}.van-dropdown-menu__item--disabled:active{opacity:1}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:#969799;color:var(--dropdown-menu-title-disabled-text-color,#969799)}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:0 8px;padding:var(--dropdown-menu-title-padding,0 8px);color:#323233;color:var(--dropdown-menu-title-text-color,#323233);font-size:15px;font-size:var(--dropdown-menu-title-font-size,15px);line-height:18px;line-height:var(--dropdown-menu-title-line-height,18px)}.van-dropdown-menu__title:after{position:absolute;top:50%;right:-4px;margin-top:-5px;border-color:transparent transparent currentcolor currentcolor;border-style:solid;border-width:3px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:.8;content:""}.van-dropdown-menu__title--active{color:#ee0a24;color:var(--dropdown-menu-title-active-text-color,#ee0a24)}.van-dropdown-menu__title--down:after{margin-top:-1px;-webkit-transform:rotate(135deg);transform:rotate(135deg)} \ No newline at end of file diff --git a/vant/dist/empty/index.d.ts b/vant/dist/empty/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/empty/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/empty/index.js b/vant/dist/empty/index.js new file mode 100644 index 0000000..32ec116 --- /dev/null +++ b/vant/dist/empty/index.js @@ -0,0 +1,10 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + description: String, + image: { + type: String, + value: 'default', + }, + }, +}); diff --git a/vant/dist/empty/index.json b/vant/dist/empty/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/vant/dist/empty/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/vant/dist/empty/index.wxml b/vant/dist/empty/index.wxml new file mode 100644 index 0000000..9c7b719 --- /dev/null +++ b/vant/dist/empty/index.wxml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + {{ description }} + + + + + + diff --git a/vant/dist/empty/index.wxs b/vant/dist/empty/index.wxs new file mode 100644 index 0000000..9696dd4 --- /dev/null +++ b/vant/dist/empty/index.wxs @@ -0,0 +1,14 @@ +/* eslint-disable */ +var PRESETS = ['error', 'search', 'default', 'network']; + +function imageUrl(image) { + if (PRESETS.indexOf(image) !== -1) { + return 'https://img.yzcdn.cn/vant/empty-image-' + image + '.png'; + } + + return image; +} + +module.exports = { + imageUrl: imageUrl, +}; diff --git a/vant/dist/empty/index.wxss b/vant/dist/empty/index.wxss new file mode 100644 index 0000000..ea23d5f --- /dev/null +++ b/vant/dist/empty/index.wxss @@ -0,0 +1,49 @@ +@import '../common/index.wxss'; + +.van-empty { + display: -webkit-flex; + display: flex; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: border-box; + padding: 10px 0 +} + +.van-empty__image { + width: 100px; + height: 100px +} + +.van-empty__image:empty { + display: none +} + +.van-empty__image__img { + width: 100%; + height: 100% +} + +.van-empty__image:not(:empty)+.van-empty__image { + display: none +} + +.van-empty__description { + margin-top: 16px; + padding: 0 60px; + color: #969799; + font-size: 14px; + line-height: 20px +} + +.van-empty__description:empty, +.van-empty__description:not(:empty)+.van-empty__description { + display: none +} + +.van-empty__bottom { + margin-top: 24px +} \ No newline at end of file diff --git a/vant/dist/field/index.d.ts b/vant/dist/field/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/field/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/field/index.js b/vant/dist/field/index.js new file mode 100644 index 0000000..fd3472d --- /dev/null +++ b/vant/dist/field/index.js @@ -0,0 +1,126 @@ +import { nextTick } from '../common/utils'; +import { VantComponent } from '../common/component'; +import { commonProps, inputProps, textareaProps } from './props'; +VantComponent({ + field: true, + classes: ['input-class', 'right-icon-class', 'label-class'], + props: Object.assign( + Object.assign( + Object.assign(Object.assign({}, commonProps), inputProps), + textareaProps + ), + { + size: String, + icon: String, + label: String, + error: Boolean, + center: Boolean, + isLink: Boolean, + leftIcon: String, + rightIcon: String, + autosize: null, + required: Boolean, + iconClass: String, + clickable: Boolean, + inputAlign: String, + customStyle: String, + errorMessage: String, + arrowDirection: String, + showWordLimit: Boolean, + errorMessageAlign: String, + readonly: { + type: Boolean, + observer: 'setShowClear', + }, + clearable: { + type: Boolean, + observer: 'setShowClear', + }, + border: { + type: Boolean, + value: true, + }, + titleWidth: { + type: String, + value: '6.2em', + }, + } + ), + data: { + focused: false, + innerValue: '', + showClear: false, + }, + created() { + this.value = this.data.value; + this.setData({ innerValue: this.value }); + }, + methods: { + onInput(event) { + const { value = '' } = event.detail || {}; + this.value = value; + this.setShowClear(); + this.emitChange(); + }, + onFocus(event) { + this.focused = true; + this.setShowClear(); + this.$emit('focus', event.detail); + }, + onBlur(event) { + this.focused = false; + this.setShowClear(); + this.$emit('blur', event.detail); + }, + onClickIcon() { + this.$emit('click-icon'); + }, + onClickInput(event) { + this.$emit('click-input', event.detail); + }, + onClear() { + this.setData({ innerValue: '' }); + this.value = ''; + this.setShowClear(); + nextTick(() => { + this.emitChange(); + this.$emit('clear', ''); + }); + }, + onConfirm(event) { + const { value = '' } = event.detail || {}; + this.value = value; + this.setShowClear(); + this.$emit('confirm', value); + }, + setValue(value) { + this.value = value; + this.setShowClear(); + if (value === '') { + this.setData({ innerValue: '' }); + } + this.emitChange(); + }, + onLineChange(event) { + this.$emit('linechange', event.detail); + }, + onKeyboardHeightChange(event) { + this.$emit('keyboardheightchange', event.detail); + }, + emitChange() { + this.setData({ value: this.value }); + nextTick(() => { + this.$emit('input', this.value); + this.$emit('change', this.value); + }); + }, + setShowClear() { + const { clearable, readonly } = this.data; + const { focused, value } = this; + this.setData({ + showClear: !!clearable && !!focused && !!value && !readonly, + }); + }, + noop() {}, + }, +}); diff --git a/vant/dist/field/index.json b/vant/dist/field/index.json new file mode 100644 index 0000000..5906c50 --- /dev/null +++ b/vant/dist/field/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/field/index.wxml b/vant/dist/field/index.wxml new file mode 100644 index 0000000..9dc8b66 --- /dev/null +++ b/vant/dist/field/index.wxml @@ -0,0 +1,56 @@ + + + + + + + {{ label }} + + + + + + + + + + + + + + + + + + + + + {{ value.length >= maxlength ? maxlength : value.length }}/{{ maxlength }} + + + {{ errorMessage }} + + diff --git a/vant/dist/field/index.wxs b/vant/dist/field/index.wxs new file mode 100644 index 0000000..78575b9 --- /dev/null +++ b/vant/dist/field/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function inputStyle(autosize) { + if (autosize && autosize.constructor === 'Object') { + return style({ + 'min-height': addUnit(autosize.minHeight), + 'max-height': addUnit(autosize.maxHeight), + }); + } + + return ''; +} + +module.exports = { + inputStyle: inputStyle, +}; diff --git a/vant/dist/field/index.wxss b/vant/dist/field/index.wxss new file mode 100644 index 0000000..171f613 --- /dev/null +++ b/vant/dist/field/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-field{--cell-icon-size:16px;--cell-icon-size:var(--field-icon-size,16px)}.van-field__label{color:#646566;color:var(--field-label-color,#646566)}.van-field__label--disabled{color:#c8c9cc;color:var(--field-disabled-text-color,#c8c9cc)}.van-field__body{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.van-field__body--textarea{box-sizing:border-box;padding:3.6px 0;line-height:1.2em;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__control:empty+.van-field__control{display:block}.van-field__control{position:relative;display:none;box-sizing:border-box;width:100%;margin:0;padding:0;line-height:inherit;text-align:left;background-color:initial;border:0;resize:none;color:#323233;color:var(--field-input-text-color,#323233);height:24px;height:var(--cell-line-height,24px);min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__control:empty{display:none}.van-field__control--textarea{height:18px;height:var(--field-text-area-min-height,18px);min-height:18px;min-height:var(--field-text-area-min-height,18px)}.van-field__control--error{color:#ee0a24;color:var(--field-input-error-text-color,#ee0a24)}.van-field__control--disabled{background-color:initial;opacity:1;color:#c8c9cc;color:var(--field-input-disabled-text-color,#c8c9cc)}.van-field__control--center{text-align:center}.van-field__control--right{text-align:right}.van-field__control--custom{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__placeholder{position:absolute;top:0;right:0;left:0;pointer-events:none;color:#c8c9cc;color:var(--field-placeholder-text-color,#c8c9cc)}.van-field__placeholder--error{color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__icon-root{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__clear-root,.van-field__icon-container{line-height:inherit;vertical-align:middle;padding:0 8px;padding:0 var(--padding-xs,8px);margin-right:-8px;margin-right:-var(--padding-xs,8px)}.van-field__button,.van-field__clear-root,.van-field__icon-container{-webkit-flex-shrink:0;flex-shrink:0}.van-field__clear-root{font-size:16px;font-size:var(--field-clear-icon-size,16px);color:#c8c9cc;color:var(--field-clear-icon-color,#c8c9cc)}.van-field__icon-container{font-size:16px;font-size:var(--field-icon-size,16px);color:#969799;color:var(--field-icon-container-color,#969799)}.van-field__icon-container:empty{display:none}.van-field__button{padding-left:8px;padding-left:var(--padding-xs,8px)}.van-field__button:empty{display:none}.van-field__error-message{text-align:left;font-size:12px;font-size:var(--field-error-message-text-font-size,12px);color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{text-align:right;margin-top:4px;margin-top:var(--padding-base,4px);color:#646566;color:var(--field-word-limit-color,#646566);font-size:12px;font-size:var(--field-word-limit-font-size,12px);line-height:16px;line-height:var(--field-word-limit-line-height,16px)}.van-field__word-num{display:inline}.van-field__word-num--full{color:#ee0a24;color:var(--field-word-num-full-color,#ee0a24)} \ No newline at end of file diff --git a/vant/dist/field/input.wxml b/vant/dist/field/input.wxml new file mode 100644 index 0000000..3ecab24 --- /dev/null +++ b/vant/dist/field/input.wxml @@ -0,0 +1,27 @@ + diff --git a/vant/dist/field/props.d.ts b/vant/dist/field/props.d.ts new file mode 100644 index 0000000..5cd130a --- /dev/null +++ b/vant/dist/field/props.d.ts @@ -0,0 +1,4 @@ +/// +export declare const commonProps: WechatMiniprogram.Component.PropertyOption; +export declare const inputProps: WechatMiniprogram.Component.PropertyOption; +export declare const textareaProps: WechatMiniprogram.Component.PropertyOption; diff --git a/vant/dist/field/props.js b/vant/dist/field/props.js new file mode 100644 index 0000000..218749f --- /dev/null +++ b/vant/dist/field/props.js @@ -0,0 +1,63 @@ +export const commonProps = { + value: { + type: String, + observer(value) { + if (value !== this.value) { + this.setData({ innerValue: value }); + this.value = value; + } + }, + }, + placeholder: String, + placeholderStyle: String, + placeholderClass: String, + disabled: Boolean, + maxlength: { + type: Number, + value: -1, + }, + cursorSpacing: { + type: Number, + value: 50, + }, + autoFocus: Boolean, + focus: Boolean, + cursor: { + type: Number, + value: -1, + }, + selectionStart: { + type: Number, + value: -1, + }, + selectionEnd: { + type: Number, + value: -1, + }, + adjustPosition: { + type: Boolean, + value: true, + }, + holdKeyboard: Boolean, +}; +export const inputProps = { + type: { + type: String, + value: 'text', + }, + password: Boolean, + confirmType: String, + confirmHold: Boolean, +}; +export const textareaProps = { + autoHeight: Boolean, + fixed: Boolean, + showConfirmBar: { + type: Boolean, + value: true, + }, + disableDefaultPadding: { + type: Boolean, + value: true, + }, +}; diff --git a/vant/dist/field/textarea.wxml b/vant/dist/field/textarea.wxml new file mode 100644 index 0000000..5015a51 --- /dev/null +++ b/vant/dist/field/textarea.wxml @@ -0,0 +1,29 @@ +