From 593017f562926e9b58df812ecfc6e1b84a4cbc4b Mon Sep 17 00:00:00 2001 From: mindskip Date: Wed, 2 Sep 2020 08:44:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/wx/xzs-student/app.js | 110 ++++++++++++ source/wx/xzs-student/app.json | 56 ++++++ source/wx/xzs-student/app.wxss | 47 +++++ source/wx/xzs-student/assets/carousel/1.png | Bin 0 -> 22193 bytes source/wx/xzs-student/assets/carousel/2.png | Bin 0 -> 71790 bytes source/wx/xzs-student/assets/carousel/3.png | Bin 0 -> 39486 bytes source/wx/xzs-student/assets/carousel/4.png | Bin 0 -> 157173 bytes source/wx/xzs-student/assets/logo.png | Bin 0 -> 19217 bytes source/wx/xzs-student/assets/logo2.png | Bin 0 -> 6414 bytes .../xzs-student/assets/tabBar/exam-select.png | Bin 0 -> 612 bytes source/wx/xzs-student/assets/tabBar/exam.png | Bin 0 -> 621 bytes .../assets/tabBar/index-select.png | Bin 0 -> 641 bytes source/wx/xzs-student/assets/tabBar/index.png | Bin 0 -> 664 bytes .../xzs-student/assets/tabBar/my-select.png | Bin 0 -> 733 bytes source/wx/xzs-student/assets/tabBar/my.png | Bin 0 -> 756 bytes .../assets/tabBar/record-select.png | Bin 0 -> 268 bytes .../wx/xzs-student/assets/tabBar/record.png | Bin 0 -> 285 bytes .../component/iView/action-sheet/index.js | 47 +++++ .../component/iView/action-sheet/index.json | 8 + .../component/iView/action-sheet/index.wxml | 23 +++ .../component/iView/action-sheet/index.wxss | 1 + .../component/iView/alert/index.js | 37 ++++ .../component/iView/alert/index.json | 7 + .../component/iView/alert/index.wxml | 15 ++ .../component/iView/alert/index.wxss | 1 + .../component/iView/avatar/index.js | 20 +++ .../component/iView/avatar/index.json | 3 + .../component/iView/avatar/index.wxml | 4 + .../component/iView/avatar/index.wxss | 1 + .../component/iView/badge/index.js | 29 ++++ .../component/iView/badge/index.json | 3 + .../component/iView/badge/index.wxml | 5 + .../component/iView/badge/index.wxss | 1 + .../xzs-student/component/iView/base/index.js | 37 ++++ .../component/iView/button/index.js | 80 +++++++++ .../component/iView/button/index.json | 3 + .../component/iView/button/index.wxml | 20 +++ .../component/iView/button/index.wxss | 1 + .../xzs-student/component/iView/card/index.js | 26 +++ .../component/iView/card/index.json | 3 + .../component/iView/card/index.wxml | 11 ++ .../component/iView/card/index.wxss | 1 + .../component/iView/cell-group/index.js | 33 ++++ .../component/iView/cell-group/index.json | 3 + .../component/iView/cell-group/index.wxml | 3 + .../xzs-student/component/iView/cell/index.js | 86 ++++++++++ .../component/iView/cell/index.json | 3 + .../component/iView/cell/index.wxml | 16 ++ .../component/iView/cell/index.wxss | 1 + .../component/iView/checkbox-group/index.js | 38 +++++ .../component/iView/checkbox-group/index.json | 7 + .../component/iView/checkbox-group/index.wxml | 3 + .../component/iView/checkbox-group/index.wxss | 0 .../component/iView/checkbox/index.js | 56 ++++++ .../component/iView/checkbox/index.json | 7 + .../component/iView/checkbox/index.wxml | 8 + .../component/iView/checkbox/index.wxss | 1 + .../xzs-student/component/iView/col/index.js | 20 +++ .../component/iView/col/index.json | 3 + .../component/iView/col/index.wxml | 1 + .../component/iView/col/index.wxss | 1 + .../component/iView/collapse-item/index.js | 46 +++++ .../component/iView/collapse-item/index.json | 7 + .../component/iView/collapse-item/index.wxml | 9 + .../component/iView/collapse-item/index.wxss | 1 + .../component/iView/collapse/index.js | 31 ++++ .../component/iView/collapse/index.json | 3 + .../component/iView/collapse/index.wxml | 4 + .../component/iView/collapse/index.wxss | 0 .../component/iView/count-down/index.js | 90 ++++++++++ .../component/iView/count-down/index.json | 4 + .../component/iView/count-down/index.wxml | 4 + .../component/iView/count-down/index.wxss | 0 .../component/iView/divider/index.js | 25 +++ .../component/iView/divider/index.json | 3 + .../component/iView/divider/index.wxml | 19 +++ .../component/iView/divider/index.wxss | 1 + .../component/iView/drawer/index.js | 33 ++++ .../component/iView/drawer/index.json | 3 + .../component/iView/drawer/index.wxml | 6 + .../component/iView/drawer/index.wxss | 1 + .../component/iView/grid-icon/index.js | 10 ++ .../component/iView/grid-icon/index.json | 3 + .../component/iView/grid-icon/index.wxml | 1 + .../component/iView/grid-icon/index.wxss | 1 + .../component/iView/grid-item/index.js | 16 ++ .../component/iView/grid-item/index.json | 3 + .../component/iView/grid-item/index.wxml | 1 + .../component/iView/grid-item/index.wxss | 1 + .../component/iView/grid-label/index.js | 10 ++ .../component/iView/grid-label/index.json | 3 + .../component/iView/grid-label/index.wxml | 1 + .../component/iView/grid-label/index.wxss | 1 + .../xzs-student/component/iView/grid/index.js | 50 ++++++ .../component/iView/grid/index.json | 3 + .../component/iView/grid/index.wxml | 1 + .../component/iView/grid/index.wxss | 1 + .../xzs-student/component/iView/icon/index.js | 22 +++ .../component/iView/icon/index.json | 3 + .../component/iView/icon/index.wxml | 1 + .../component/iView/icon/index.wxss | 1 + .../component/iView/index-item/index.js | 32 ++++ .../component/iView/index-item/index.json | 3 + .../component/iView/index-item/index.wxml | 11 ++ .../component/iView/index-item/index.wxss | 1 + .../component/iView/index/index.js | 158 +++++++++++++++++ .../component/iView/index/index.json | 3 + .../component/iView/index/index.wxml | 38 +++++ .../component/iView/index/index.wxss | 1 + .../component/iView/input-number/index.js | 101 +++++++++++ .../component/iView/input-number/index.json | 3 + .../component/iView/input-number/index.wxml | 5 + .../component/iView/input-number/index.wxss | 1 + .../component/iView/input/index.js | 61 +++++++ .../component/iView/input/index.json | 3 + .../component/iView/input/index.wxml | 31 ++++ .../component/iView/input/index.wxss | 1 + .../component/iView/load-more/index.js | 14 ++ .../component/iView/load-more/index.json | 3 + .../component/iView/load-more/index.wxml | 8 + .../component/iView/load-more/index.wxss | 1 + .../component/iView/message/index.js | 45 +++++ .../component/iView/message/index.json | 3 + .../component/iView/message/index.wxml | 3 + .../component/iView/message/index.wxss | 1 + .../component/iView/modal/index.js | 54 ++++++ .../component/iView/modal/index.json | 9 + .../component/iView/modal/index.wxml | 40 +++++ .../component/iView/modal/index.wxss | 1 + .../component/iView/notice-bar/index.js | 112 ++++++++++++ .../component/iView/notice-bar/index.json | 7 + .../component/iView/notice-bar/index.wxml | 9 + .../component/iView/notice-bar/index.wxss | 1 + .../xzs-student/component/iView/page/index.js | 42 +++++ .../component/iView/page/index.json | 7 + .../component/iView/page/index.wxml | 14 ++ .../component/iView/page/index.wxss | 1 + .../component/iView/panel/index.js | 19 +++ .../component/iView/panel/index.json | 3 + .../component/iView/panel/index.wxml | 4 + .../component/iView/panel/index.wxss | 1 + .../component/iView/progress/index.js | 23 +++ .../component/iView/progress/index.json | 3 + .../component/iView/progress/index.wxml | 10 ++ .../component/iView/progress/index.wxss | 1 + .../component/iView/radio-group/index.js | 38 +++++ .../component/iView/radio-group/index.json | 7 + .../component/iView/radio-group/index.wxml | 3 + .../component/iView/radio-group/index.wxss | 0 .../component/iView/radio/index.js | 56 ++++++ .../component/iView/radio/index.json | 7 + .../component/iView/radio/index.wxml | 8 + .../component/iView/radio/index.wxss | 1 + .../xzs-student/component/iView/rate/index.js | 69 ++++++++ .../component/iView/rate/index.json | 6 + .../component/iView/rate/index.wxml | 23 +++ .../component/iView/rate/index.wxss | 1 + .../xzs-student/component/iView/row/index.js | 9 + .../component/iView/row/index.json | 3 + .../component/iView/row/index.wxml | 1 + .../component/iView/row/index.wxss | 1 + .../component/iView/slide/index.js | 15 ++ .../component/iView/slide/index.json | 8 + .../component/iView/slide/index.wxml | 4 + .../component/iView/slide/index.wxss | 0 .../xzs-student/component/iView/spin/index.js | 23 +++ .../component/iView/spin/index.json | 3 + .../component/iView/spin/index.wxml | 6 + .../component/iView/spin/index.wxss | 1 + .../xzs-student/component/iView/step/index.js | 52 ++++++ .../component/iView/step/index.json | 7 + .../component/iView/step/index.wxml | 70 ++++++++ .../component/iView/step/index.wxss | 1 + .../component/iView/steps/index.js | 50 ++++++ .../component/iView/steps/index.json | 3 + .../component/iView/steps/index.wxml | 3 + .../component/iView/steps/index.wxss | 1 + .../component/iView/sticky-item/index.js | 40 +++++ .../component/iView/sticky-item/index.json | 3 + .../component/iView/sticky-item/index.wxml | 10 ++ .../component/iView/sticky-item/index.wxss | 1 + .../component/iView/sticky/index.js | 63 +++++++ .../component/iView/sticky/index.json | 3 + .../component/iView/sticky/index.wxml | 3 + .../component/iView/sticky/index.wxss | 0 .../component/iView/swipeout/index.js | 161 ++++++++++++++++++ .../component/iView/swipeout/index.json | 7 + .../component/iView/swipeout/index.wxml | 39 +++++ .../component/iView/swipeout/index.wxss | 1 + .../component/iView/switch/index.js | 38 +++++ .../component/iView/switch/index.json | 3 + .../component/iView/switch/index.wxml | 26 +++ .../component/iView/switch/index.wxss | 1 + .../component/iView/tab-bar-item/index.js | 62 +++++++ .../component/iView/tab-bar-item/index.json | 8 + .../component/iView/tab-bar-item/index.wxml | 10 ++ .../component/iView/tab-bar-item/index.wxss | 1 + .../component/iView/tab-bar/index.js | 66 +++++++ .../component/iView/tab-bar/index.json | 3 + .../component/iView/tab-bar/index.wxml | 6 + .../component/iView/tab-bar/index.wxss | 1 + .../xzs-student/component/iView/tab/index.js | 50 ++++++ .../component/iView/tab/index.json | 7 + .../component/iView/tab/index.wxml | 9 + .../component/iView/tab/index.wxss | 1 + .../xzs-student/component/iView/tabs/index.js | 56 ++++++ .../component/iView/tabs/index.json | 3 + .../component/iView/tabs/index.wxml | 2 + .../component/iView/tabs/index.wxss | 1 + .../xzs-student/component/iView/tag/index.js | 42 +++++ .../component/iView/tag/index.json | 3 + .../component/iView/tag/index.wxml | 27 +++ .../component/iView/tag/index.wxss | 1 + .../component/iView/toast/index.js | 48 ++++++ .../component/iView/toast/index.json | 7 + .../component/iView/toast/index.wxml | 16 ++ .../component/iView/toast/index.wxss | 1 + source/wx/xzs-student/pages/exam/do/index.js | 104 +++++++++++ .../wx/xzs-student/pages/exam/do/index.json | 16 ++ .../wx/xzs-student/pages/exam/do/index.wxml | 80 +++++++++ .../wx/xzs-student/pages/exam/do/index.wxss | 76 +++++++++ .../wx/xzs-student/pages/exam/edit/index.js | 66 +++++++ .../wx/xzs-student/pages/exam/edit/index.json | 3 + .../wx/xzs-student/pages/exam/edit/index.wxml | 2 + .../wx/xzs-student/pages/exam/edit/index.wxss | 1 + .../wx/xzs-student/pages/exam/index/index.js | 91 ++++++++++ .../xzs-student/pages/exam/index/index.json | 13 ++ .../xzs-student/pages/exam/index/index.wxml | 15 ++ .../xzs-student/pages/exam/index/index.wxss | 7 + .../xzs-student/pages/exam/read/exam-fun.wxs | 0 .../wx/xzs-student/pages/exam/read/index.js | 59 +++++++ .../wx/xzs-student/pages/exam/read/index.json | 17 ++ .../wx/xzs-student/pages/exam/read/index.wxml | 86 ++++++++++ .../wx/xzs-student/pages/exam/read/index.wxss | 134 +++++++++++++++ source/wx/xzs-student/pages/index/index.js | 65 +++++++ source/wx/xzs-student/pages/index/index.json | 12 ++ source/wx/xzs-student/pages/index/index.wxml | 43 +++++ source/wx/xzs-student/pages/index/index.wxss | 35 ++++ source/wx/xzs-student/pages/my/index/index.js | 54 ++++++ .../wx/xzs-student/pages/my/index/index.json | 9 + .../wx/xzs-student/pages/my/index/index.wxml | 46 +++++ .../wx/xzs-student/pages/my/index/index.wxss | 32 ++++ source/wx/xzs-student/pages/my/info/index.js | 68 ++++++++ .../wx/xzs-student/pages/my/info/index.json | 11 ++ .../wx/xzs-student/pages/my/info/index.wxml | 40 +++++ .../wx/xzs-student/pages/my/info/index.wxss | 18 ++ source/wx/xzs-student/pages/my/log/index.js | 32 ++++ source/wx/xzs-student/pages/my/log/index.json | 9 + source/wx/xzs-student/pages/my/log/index.wxml | 18 ++ source/wx/xzs-student/pages/my/log/index.wxss | 24 +++ .../pages/my/message/info/index.js | 79 +++++++++ .../pages/my/message/info/index.json | 7 + .../pages/my/message/info/index.wxml | 19 +++ .../pages/my/message/info/index.wxss | 16 ++ .../pages/my/message/list/index.js | 72 ++++++++ .../pages/my/message/list/index.json | 10 ++ .../pages/my/message/list/index.wxml | 10 ++ .../pages/my/message/list/index.wxss | 1 + source/wx/xzs-student/pages/record/index.js | 73 ++++++++ source/wx/xzs-student/pages/record/index.json | 13 ++ source/wx/xzs-student/pages/record/index.wxml | 12 ++ source/wx/xzs-student/pages/record/index.wxss | 1 + .../wx/xzs-student/pages/user/bind/index.js | 47 +++++ .../wx/xzs-student/pages/user/bind/index.json | 9 + .../wx/xzs-student/pages/user/bind/index.wxml | 25 +++ .../wx/xzs-student/pages/user/bind/index.wxss | 7 + .../xzs-student/pages/user/register/index.js | 48 ++++++ .../pages/user/register/index.json | 9 + .../pages/user/register/index.wxml | 26 +++ .../pages/user/register/index.wxss | 17 ++ source/wx/xzs-student/project.config.json | 65 +++++++ source/wx/xzs-student/sitemap.json | 7 + .../wx/xzs-student/utils/mtj-wx-sdk.config.js | 5 + source/wx/xzs-student/utils/mtj-wx-sdk.js | 1 + source/wx/xzs-student/utils/util.js | 41 +++++ source/wx/xzs-student/wxs/enumItem.wxs | 45 +++++ source/wx/xzs-student/wxs/exam-fun.wxs | 31 ++++ 277 files changed, 5497 insertions(+) create mode 100644 source/wx/xzs-student/app.js create mode 100644 source/wx/xzs-student/app.json create mode 100644 source/wx/xzs-student/app.wxss create mode 100644 source/wx/xzs-student/assets/carousel/1.png create mode 100644 source/wx/xzs-student/assets/carousel/2.png create mode 100644 source/wx/xzs-student/assets/carousel/3.png create mode 100644 source/wx/xzs-student/assets/carousel/4.png create mode 100644 source/wx/xzs-student/assets/logo.png create mode 100644 source/wx/xzs-student/assets/logo2.png create mode 100644 source/wx/xzs-student/assets/tabBar/exam-select.png create mode 100644 source/wx/xzs-student/assets/tabBar/exam.png create mode 100644 source/wx/xzs-student/assets/tabBar/index-select.png create mode 100644 source/wx/xzs-student/assets/tabBar/index.png create mode 100644 source/wx/xzs-student/assets/tabBar/my-select.png create mode 100644 source/wx/xzs-student/assets/tabBar/my.png create mode 100644 source/wx/xzs-student/assets/tabBar/record-select.png create mode 100644 source/wx/xzs-student/assets/tabBar/record.png create mode 100644 source/wx/xzs-student/component/iView/action-sheet/index.js create mode 100644 source/wx/xzs-student/component/iView/action-sheet/index.json create mode 100644 source/wx/xzs-student/component/iView/action-sheet/index.wxml create mode 100644 source/wx/xzs-student/component/iView/action-sheet/index.wxss create mode 100644 source/wx/xzs-student/component/iView/alert/index.js create mode 100644 source/wx/xzs-student/component/iView/alert/index.json create mode 100644 source/wx/xzs-student/component/iView/alert/index.wxml create mode 100644 source/wx/xzs-student/component/iView/alert/index.wxss create mode 100644 source/wx/xzs-student/component/iView/avatar/index.js create mode 100644 source/wx/xzs-student/component/iView/avatar/index.json create mode 100644 source/wx/xzs-student/component/iView/avatar/index.wxml create mode 100644 source/wx/xzs-student/component/iView/avatar/index.wxss create mode 100644 source/wx/xzs-student/component/iView/badge/index.js create mode 100644 source/wx/xzs-student/component/iView/badge/index.json create mode 100644 source/wx/xzs-student/component/iView/badge/index.wxml create mode 100644 source/wx/xzs-student/component/iView/badge/index.wxss create mode 100644 source/wx/xzs-student/component/iView/base/index.js create mode 100644 source/wx/xzs-student/component/iView/button/index.js create mode 100644 source/wx/xzs-student/component/iView/button/index.json create mode 100644 source/wx/xzs-student/component/iView/button/index.wxml create mode 100644 source/wx/xzs-student/component/iView/button/index.wxss create mode 100644 source/wx/xzs-student/component/iView/card/index.js create mode 100644 source/wx/xzs-student/component/iView/card/index.json create mode 100644 source/wx/xzs-student/component/iView/card/index.wxml create mode 100644 source/wx/xzs-student/component/iView/card/index.wxss create mode 100644 source/wx/xzs-student/component/iView/cell-group/index.js create mode 100644 source/wx/xzs-student/component/iView/cell-group/index.json create mode 100644 source/wx/xzs-student/component/iView/cell-group/index.wxml create mode 100644 source/wx/xzs-student/component/iView/cell/index.js create mode 100644 source/wx/xzs-student/component/iView/cell/index.json create mode 100644 source/wx/xzs-student/component/iView/cell/index.wxml create mode 100644 source/wx/xzs-student/component/iView/cell/index.wxss create mode 100644 source/wx/xzs-student/component/iView/checkbox-group/index.js create mode 100644 source/wx/xzs-student/component/iView/checkbox-group/index.json create mode 100644 source/wx/xzs-student/component/iView/checkbox-group/index.wxml create mode 100644 source/wx/xzs-student/component/iView/checkbox-group/index.wxss create mode 100644 source/wx/xzs-student/component/iView/checkbox/index.js create mode 100644 source/wx/xzs-student/component/iView/checkbox/index.json create mode 100644 source/wx/xzs-student/component/iView/checkbox/index.wxml create mode 100644 source/wx/xzs-student/component/iView/checkbox/index.wxss create mode 100644 source/wx/xzs-student/component/iView/col/index.js create mode 100644 source/wx/xzs-student/component/iView/col/index.json create mode 100644 source/wx/xzs-student/component/iView/col/index.wxml create mode 100644 source/wx/xzs-student/component/iView/col/index.wxss create mode 100644 source/wx/xzs-student/component/iView/collapse-item/index.js create mode 100644 source/wx/xzs-student/component/iView/collapse-item/index.json create mode 100644 source/wx/xzs-student/component/iView/collapse-item/index.wxml create mode 100644 source/wx/xzs-student/component/iView/collapse-item/index.wxss create mode 100644 source/wx/xzs-student/component/iView/collapse/index.js create mode 100644 source/wx/xzs-student/component/iView/collapse/index.json create mode 100644 source/wx/xzs-student/component/iView/collapse/index.wxml create mode 100644 source/wx/xzs-student/component/iView/collapse/index.wxss create mode 100644 source/wx/xzs-student/component/iView/count-down/index.js create mode 100644 source/wx/xzs-student/component/iView/count-down/index.json create mode 100644 source/wx/xzs-student/component/iView/count-down/index.wxml create mode 100644 source/wx/xzs-student/component/iView/count-down/index.wxss create mode 100644 source/wx/xzs-student/component/iView/divider/index.js create mode 100644 source/wx/xzs-student/component/iView/divider/index.json create mode 100644 source/wx/xzs-student/component/iView/divider/index.wxml create mode 100644 source/wx/xzs-student/component/iView/divider/index.wxss create mode 100644 source/wx/xzs-student/component/iView/drawer/index.js create mode 100644 source/wx/xzs-student/component/iView/drawer/index.json create mode 100644 source/wx/xzs-student/component/iView/drawer/index.wxml create mode 100644 source/wx/xzs-student/component/iView/drawer/index.wxss create mode 100644 source/wx/xzs-student/component/iView/grid-icon/index.js create mode 100644 source/wx/xzs-student/component/iView/grid-icon/index.json create mode 100644 source/wx/xzs-student/component/iView/grid-icon/index.wxml create mode 100644 source/wx/xzs-student/component/iView/grid-icon/index.wxss create mode 100644 source/wx/xzs-student/component/iView/grid-item/index.js create mode 100644 source/wx/xzs-student/component/iView/grid-item/index.json create mode 100644 source/wx/xzs-student/component/iView/grid-item/index.wxml create mode 100644 source/wx/xzs-student/component/iView/grid-item/index.wxss create mode 100644 source/wx/xzs-student/component/iView/grid-label/index.js create mode 100644 source/wx/xzs-student/component/iView/grid-label/index.json create mode 100644 source/wx/xzs-student/component/iView/grid-label/index.wxml create mode 100644 source/wx/xzs-student/component/iView/grid-label/index.wxss create mode 100644 source/wx/xzs-student/component/iView/grid/index.js create mode 100644 source/wx/xzs-student/component/iView/grid/index.json create mode 100644 source/wx/xzs-student/component/iView/grid/index.wxml create mode 100644 source/wx/xzs-student/component/iView/grid/index.wxss create mode 100644 source/wx/xzs-student/component/iView/icon/index.js create mode 100644 source/wx/xzs-student/component/iView/icon/index.json create mode 100644 source/wx/xzs-student/component/iView/icon/index.wxml create mode 100644 source/wx/xzs-student/component/iView/icon/index.wxss create mode 100644 source/wx/xzs-student/component/iView/index-item/index.js create mode 100644 source/wx/xzs-student/component/iView/index-item/index.json create mode 100644 source/wx/xzs-student/component/iView/index-item/index.wxml create mode 100644 source/wx/xzs-student/component/iView/index-item/index.wxss create mode 100644 source/wx/xzs-student/component/iView/index/index.js create mode 100644 source/wx/xzs-student/component/iView/index/index.json create mode 100644 source/wx/xzs-student/component/iView/index/index.wxml create mode 100644 source/wx/xzs-student/component/iView/index/index.wxss create mode 100644 source/wx/xzs-student/component/iView/input-number/index.js create mode 100644 source/wx/xzs-student/component/iView/input-number/index.json create mode 100644 source/wx/xzs-student/component/iView/input-number/index.wxml create mode 100644 source/wx/xzs-student/component/iView/input-number/index.wxss create mode 100644 source/wx/xzs-student/component/iView/input/index.js create mode 100644 source/wx/xzs-student/component/iView/input/index.json create mode 100644 source/wx/xzs-student/component/iView/input/index.wxml create mode 100644 source/wx/xzs-student/component/iView/input/index.wxss create mode 100644 source/wx/xzs-student/component/iView/load-more/index.js create mode 100644 source/wx/xzs-student/component/iView/load-more/index.json create mode 100644 source/wx/xzs-student/component/iView/load-more/index.wxml create mode 100644 source/wx/xzs-student/component/iView/load-more/index.wxss create mode 100644 source/wx/xzs-student/component/iView/message/index.js create mode 100644 source/wx/xzs-student/component/iView/message/index.json create mode 100644 source/wx/xzs-student/component/iView/message/index.wxml create mode 100644 source/wx/xzs-student/component/iView/message/index.wxss create mode 100644 source/wx/xzs-student/component/iView/modal/index.js create mode 100644 source/wx/xzs-student/component/iView/modal/index.json create mode 100644 source/wx/xzs-student/component/iView/modal/index.wxml create mode 100644 source/wx/xzs-student/component/iView/modal/index.wxss create mode 100644 source/wx/xzs-student/component/iView/notice-bar/index.js create mode 100644 source/wx/xzs-student/component/iView/notice-bar/index.json create mode 100644 source/wx/xzs-student/component/iView/notice-bar/index.wxml create mode 100644 source/wx/xzs-student/component/iView/notice-bar/index.wxss create mode 100644 source/wx/xzs-student/component/iView/page/index.js create mode 100644 source/wx/xzs-student/component/iView/page/index.json create mode 100644 source/wx/xzs-student/component/iView/page/index.wxml create mode 100644 source/wx/xzs-student/component/iView/page/index.wxss create mode 100644 source/wx/xzs-student/component/iView/panel/index.js create mode 100644 source/wx/xzs-student/component/iView/panel/index.json create mode 100644 source/wx/xzs-student/component/iView/panel/index.wxml create mode 100644 source/wx/xzs-student/component/iView/panel/index.wxss create mode 100644 source/wx/xzs-student/component/iView/progress/index.js create mode 100644 source/wx/xzs-student/component/iView/progress/index.json create mode 100644 source/wx/xzs-student/component/iView/progress/index.wxml create mode 100644 source/wx/xzs-student/component/iView/progress/index.wxss create mode 100644 source/wx/xzs-student/component/iView/radio-group/index.js create mode 100644 source/wx/xzs-student/component/iView/radio-group/index.json create mode 100644 source/wx/xzs-student/component/iView/radio-group/index.wxml create mode 100644 source/wx/xzs-student/component/iView/radio-group/index.wxss create mode 100644 source/wx/xzs-student/component/iView/radio/index.js create mode 100644 source/wx/xzs-student/component/iView/radio/index.json create mode 100644 source/wx/xzs-student/component/iView/radio/index.wxml create mode 100644 source/wx/xzs-student/component/iView/radio/index.wxss create mode 100644 source/wx/xzs-student/component/iView/rate/index.js create mode 100644 source/wx/xzs-student/component/iView/rate/index.json create mode 100644 source/wx/xzs-student/component/iView/rate/index.wxml create mode 100644 source/wx/xzs-student/component/iView/rate/index.wxss create mode 100644 source/wx/xzs-student/component/iView/row/index.js create mode 100644 source/wx/xzs-student/component/iView/row/index.json create mode 100644 source/wx/xzs-student/component/iView/row/index.wxml create mode 100644 source/wx/xzs-student/component/iView/row/index.wxss create mode 100644 source/wx/xzs-student/component/iView/slide/index.js create mode 100644 source/wx/xzs-student/component/iView/slide/index.json create mode 100644 source/wx/xzs-student/component/iView/slide/index.wxml create mode 100644 source/wx/xzs-student/component/iView/slide/index.wxss create mode 100644 source/wx/xzs-student/component/iView/spin/index.js create mode 100644 source/wx/xzs-student/component/iView/spin/index.json create mode 100644 source/wx/xzs-student/component/iView/spin/index.wxml create mode 100644 source/wx/xzs-student/component/iView/spin/index.wxss create mode 100644 source/wx/xzs-student/component/iView/step/index.js create mode 100644 source/wx/xzs-student/component/iView/step/index.json create mode 100644 source/wx/xzs-student/component/iView/step/index.wxml create mode 100644 source/wx/xzs-student/component/iView/step/index.wxss create mode 100644 source/wx/xzs-student/component/iView/steps/index.js create mode 100644 source/wx/xzs-student/component/iView/steps/index.json create mode 100644 source/wx/xzs-student/component/iView/steps/index.wxml create mode 100644 source/wx/xzs-student/component/iView/steps/index.wxss create mode 100644 source/wx/xzs-student/component/iView/sticky-item/index.js create mode 100644 source/wx/xzs-student/component/iView/sticky-item/index.json create mode 100644 source/wx/xzs-student/component/iView/sticky-item/index.wxml create mode 100644 source/wx/xzs-student/component/iView/sticky-item/index.wxss create mode 100644 source/wx/xzs-student/component/iView/sticky/index.js create mode 100644 source/wx/xzs-student/component/iView/sticky/index.json create mode 100644 source/wx/xzs-student/component/iView/sticky/index.wxml create mode 100644 source/wx/xzs-student/component/iView/sticky/index.wxss create mode 100644 source/wx/xzs-student/component/iView/swipeout/index.js create mode 100644 source/wx/xzs-student/component/iView/swipeout/index.json create mode 100644 source/wx/xzs-student/component/iView/swipeout/index.wxml create mode 100644 source/wx/xzs-student/component/iView/swipeout/index.wxss create mode 100644 source/wx/xzs-student/component/iView/switch/index.js create mode 100644 source/wx/xzs-student/component/iView/switch/index.json create mode 100644 source/wx/xzs-student/component/iView/switch/index.wxml create mode 100644 source/wx/xzs-student/component/iView/switch/index.wxss create mode 100644 source/wx/xzs-student/component/iView/tab-bar-item/index.js create mode 100644 source/wx/xzs-student/component/iView/tab-bar-item/index.json create mode 100644 source/wx/xzs-student/component/iView/tab-bar-item/index.wxml create mode 100644 source/wx/xzs-student/component/iView/tab-bar-item/index.wxss create mode 100644 source/wx/xzs-student/component/iView/tab-bar/index.js create mode 100644 source/wx/xzs-student/component/iView/tab-bar/index.json create mode 100644 source/wx/xzs-student/component/iView/tab-bar/index.wxml create mode 100644 source/wx/xzs-student/component/iView/tab-bar/index.wxss create mode 100644 source/wx/xzs-student/component/iView/tab/index.js create mode 100644 source/wx/xzs-student/component/iView/tab/index.json create mode 100644 source/wx/xzs-student/component/iView/tab/index.wxml create mode 100644 source/wx/xzs-student/component/iView/tab/index.wxss create mode 100644 source/wx/xzs-student/component/iView/tabs/index.js create mode 100644 source/wx/xzs-student/component/iView/tabs/index.json create mode 100644 source/wx/xzs-student/component/iView/tabs/index.wxml create mode 100644 source/wx/xzs-student/component/iView/tabs/index.wxss create mode 100644 source/wx/xzs-student/component/iView/tag/index.js create mode 100644 source/wx/xzs-student/component/iView/tag/index.json create mode 100644 source/wx/xzs-student/component/iView/tag/index.wxml create mode 100644 source/wx/xzs-student/component/iView/tag/index.wxss create mode 100644 source/wx/xzs-student/component/iView/toast/index.js create mode 100644 source/wx/xzs-student/component/iView/toast/index.json create mode 100644 source/wx/xzs-student/component/iView/toast/index.wxml create mode 100644 source/wx/xzs-student/component/iView/toast/index.wxss create mode 100644 source/wx/xzs-student/pages/exam/do/index.js create mode 100644 source/wx/xzs-student/pages/exam/do/index.json create mode 100644 source/wx/xzs-student/pages/exam/do/index.wxml create mode 100644 source/wx/xzs-student/pages/exam/do/index.wxss create mode 100644 source/wx/xzs-student/pages/exam/edit/index.js create mode 100644 source/wx/xzs-student/pages/exam/edit/index.json create mode 100644 source/wx/xzs-student/pages/exam/edit/index.wxml create mode 100644 source/wx/xzs-student/pages/exam/edit/index.wxss create mode 100644 source/wx/xzs-student/pages/exam/index/index.js create mode 100644 source/wx/xzs-student/pages/exam/index/index.json create mode 100644 source/wx/xzs-student/pages/exam/index/index.wxml create mode 100644 source/wx/xzs-student/pages/exam/index/index.wxss create mode 100644 source/wx/xzs-student/pages/exam/read/exam-fun.wxs create mode 100644 source/wx/xzs-student/pages/exam/read/index.js create mode 100644 source/wx/xzs-student/pages/exam/read/index.json create mode 100644 source/wx/xzs-student/pages/exam/read/index.wxml create mode 100644 source/wx/xzs-student/pages/exam/read/index.wxss create mode 100644 source/wx/xzs-student/pages/index/index.js create mode 100644 source/wx/xzs-student/pages/index/index.json create mode 100644 source/wx/xzs-student/pages/index/index.wxml create mode 100644 source/wx/xzs-student/pages/index/index.wxss create mode 100644 source/wx/xzs-student/pages/my/index/index.js create mode 100644 source/wx/xzs-student/pages/my/index/index.json create mode 100644 source/wx/xzs-student/pages/my/index/index.wxml create mode 100644 source/wx/xzs-student/pages/my/index/index.wxss create mode 100644 source/wx/xzs-student/pages/my/info/index.js create mode 100644 source/wx/xzs-student/pages/my/info/index.json create mode 100644 source/wx/xzs-student/pages/my/info/index.wxml create mode 100644 source/wx/xzs-student/pages/my/info/index.wxss create mode 100644 source/wx/xzs-student/pages/my/log/index.js create mode 100644 source/wx/xzs-student/pages/my/log/index.json create mode 100644 source/wx/xzs-student/pages/my/log/index.wxml create mode 100644 source/wx/xzs-student/pages/my/log/index.wxss create mode 100644 source/wx/xzs-student/pages/my/message/info/index.js create mode 100644 source/wx/xzs-student/pages/my/message/info/index.json create mode 100644 source/wx/xzs-student/pages/my/message/info/index.wxml create mode 100644 source/wx/xzs-student/pages/my/message/info/index.wxss create mode 100644 source/wx/xzs-student/pages/my/message/list/index.js create mode 100644 source/wx/xzs-student/pages/my/message/list/index.json create mode 100644 source/wx/xzs-student/pages/my/message/list/index.wxml create mode 100644 source/wx/xzs-student/pages/my/message/list/index.wxss create mode 100644 source/wx/xzs-student/pages/record/index.js create mode 100644 source/wx/xzs-student/pages/record/index.json create mode 100644 source/wx/xzs-student/pages/record/index.wxml create mode 100644 source/wx/xzs-student/pages/record/index.wxss create mode 100644 source/wx/xzs-student/pages/user/bind/index.js create mode 100644 source/wx/xzs-student/pages/user/bind/index.json create mode 100644 source/wx/xzs-student/pages/user/bind/index.wxml create mode 100644 source/wx/xzs-student/pages/user/bind/index.wxss create mode 100644 source/wx/xzs-student/pages/user/register/index.js create mode 100644 source/wx/xzs-student/pages/user/register/index.json create mode 100644 source/wx/xzs-student/pages/user/register/index.wxml create mode 100644 source/wx/xzs-student/pages/user/register/index.wxss create mode 100644 source/wx/xzs-student/project.config.json create mode 100644 source/wx/xzs-student/sitemap.json create mode 100644 source/wx/xzs-student/utils/mtj-wx-sdk.config.js create mode 100644 source/wx/xzs-student/utils/mtj-wx-sdk.js create mode 100644 source/wx/xzs-student/utils/util.js create mode 100644 source/wx/xzs-student/wxs/enumItem.wxs create mode 100644 source/wx/xzs-student/wxs/exam-fun.wxs diff --git a/source/wx/xzs-student/app.js b/source/wx/xzs-student/app.js new file mode 100644 index 0000000..6d7519b --- /dev/null +++ b/source/wx/xzs-student/app.js @@ -0,0 +1,110 @@ +const { + $Message +} = require('/component/iView/base/index'); +const mtjwxsdk = require('./utils/mtj-wx-sdk.js'); + +App({ + globalData: { + baseAPI: "http://localhost:8000", + pageSize: 10 + }, + onLaunch: function() { + let _this = this + let token = wx.getStorageSync('token') + if (null == token || token == '') { + wx.login({ + success(wxres) { + if (wxres.code) { + _this.formPost('/api/wx/student/auth/checkBind', { + "code": wxres.code + }).then(res => { + if (res.code == 1) { + wx.setStorageSync('token', res.response) + wx.reLaunch({ + url: '/pages/index/index', + }); + } else if (res.code == 2) { + wx.reLaunch({ + url: '/pages/user/bind/index', + }); + } else { + _this.message(res.message, 'error') + } + }).catch(e => { + _this.message(e, 'error') + }) + } else { + _this.message(res.errMsg, 'error') + } + } + }) + } + }, + message: function(content, type) { + $Message({ + content: content, + type: type + }); + }, + formPost: function(url, data) { + let _this = this + return new Promise(function(resolve, reject) { + wx.showNavigationBarLoading(); + wx.request({ + url: _this.globalData.baseAPI + url, + header: { + 'content-type': 'application/x-www-form-urlencoded', + 'token': wx.getStorageSync('token') + }, + method: 'POST', + data, + success(res) { + + if (res.statusCode !== 200 || typeof res.data !== 'object') { + reject('网络出错') + return false; + } + + if (res.data.code === 400) { + let token = res.data.response + wx.setStorageSync('token', token) + wx.request({ + url: _this.globalData.baseAPI + url, + header: { + 'content-type': 'application/x-www-form-urlencoded', + 'token': wx.getStorageSync('token') + }, + method: 'POST', + data, + success(result) { + resolve(result.data); + return true; + } + }) + } else if (res.data.code === 401) { + wx.reLaunch({ + url: '/pages/user/bind/index', + }); + return false; + } else if (res.data.code === 500) { + reject(res.data.message) + return false; + } else if (res.data.code === 501) { + reject(res.data.message) + return false; + } else { + resolve(res.data); + return true; + } + }, + fail(res) { + reject(res.errMsg) + return false; + }, + complete(res) { + wx.hideNavigationBarLoading(); + } + }) + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/app.json b/source/wx/xzs-student/app.json new file mode 100644 index 0000000..ba2f906 --- /dev/null +++ b/source/wx/xzs-student/app.json @@ -0,0 +1,56 @@ +{ + "pages": [ + "pages/index/index", + "pages/user/bind/index", + "pages/exam/index/index", + "pages/exam/do/index", + "pages/exam/edit/index", + "pages/exam/read/index", + "pages/record/index", + "pages/my/index/index", + "pages/my/info/index", + "pages/my/message/info/index", + "pages/my/message/list/index", + "pages/my/log/index", + "pages/user/register/index" + ], + "window": { + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTitleText": "学之思", + "navigationBarTextStyle": "black", + "backgroundTextStyle": "dark" + }, + "tabBar": { + "color": "#6e6d6b", + "selectedColor": "#ff9966", + "borderStyle": "black", + "backgroundColor": "#ffffff", + "list": [ + { + "pagePath": "pages/index/index", + "text": "首页", + "iconPath": "/assets/tabBar/index.png", + "selectedIconPath": "/assets/tabBar/index-select.png" + }, + { + "pagePath": "pages/exam/index/index", + "text": "试卷", + "iconPath": "/assets/tabBar/exam.png", + "selectedIconPath": "/assets/tabBar/exam-select.png" + }, + { + "pagePath": "pages/record/index", + "text": "记录", + "iconPath": "/assets/tabBar/record.png", + "selectedIconPath": "/assets/tabBar/record-select.png" + }, + { + "pagePath": "pages/my/index/index", + "text": "我的", + "iconPath": "/assets/tabBar/my.png", + "selectedIconPath": "/assets/tabBar/my-select.png" + } + ] + }, + "sitemapLocation": "sitemap.json" +} \ No newline at end of file diff --git a/source/wx/xzs-student/app.wxss b/source/wx/xzs-student/app.wxss new file mode 100644 index 0000000..e0002cb --- /dev/null +++ b/source/wx/xzs-student/app.wxss @@ -0,0 +1,47 @@ +/**app.wxss**/ +@import '/component/iView/button/index.wxss'; +@import '/component/iView/radio/index.wxss'; +@import '/component/iView/input/index.wxss'; + +page { + background: #f7f7f7; +} + +.container { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + padding: 200rpx 0; + box-sizing: border-box; +} + +.student-page { + background: white; +} + +.student-page button { + height: 30px; + line-height: 30px; + margin-top: 7px; +} + +.gapfilling-span { + color: red; + padding: 0px 30px; + margin: 0px 5px; + border-bottom: 3px double red; +} + +.ueditor-p { + display: inline !important; +} + +.exam-hidden { + display: none; +} + +.exam-pick-input{ + height: 30px; +} \ No newline at end of file diff --git a/source/wx/xzs-student/assets/carousel/1.png b/source/wx/xzs-student/assets/carousel/1.png new file mode 100644 index 0000000000000000000000000000000000000000..0dca22c5db3bcc5134417b6aae1142c582732779 GIT binary patch literal 22193 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%0A_+TZLgKZRLkI3IKwGhDTss7VQT5Nt}m8Y;%$} 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

+ diff --git a/source/wx/xzs-student/component/iView/spin/index.wxss b/source/wx/xzs-student/component/iView/spin/index.wxss new file mode 100644 index 0000000..8ed714a --- /dev/null +++ b/source/wx/xzs-student/component/iView/spin/index.wxss @@ -0,0 +1 @@ +.i-spin{color:#2d8cf0;vertical-align:middle;text-align:center}.i-spin-dot{position:relative;display:block;border-radius:50%;background-color:#2d8cf0;width:20px;height:20px;animation:ani-spin-bounce 1s 0s ease-in-out infinite}.i-spin-large .i-spin-dot{width:32px;height:32px}.i-spin-small .i-spin-dot{width:12px;height:12px}.i-spin-fix{position:absolute;top:0;left:0;z-index:8;width:100%;height:100%;background-color:rgba(255,255,255,.9)}.i-spin-fullscreen{z-index:2010}.i-spin-fullscreen-wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.i-spin-fix .i-spin-main{position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.i-spin-fix .i-spin-dot{display:inline-block}.i-spin-show-text .i-spin-dot,.i-spin-text{display:none}.i-spin-show-text .i-spin-text{display:block;font-size:14px}@keyframes ani-spin-bounce{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/step/index.js b/source/wx/xzs-student/component/iView/step/index.js new file mode 100644 index 0000000..06a81a2 --- /dev/null +++ b/source/wx/xzs-student/component/iView/step/index.js @@ -0,0 +1,52 @@ +Component({ + externalClasses: ['i-class'], + properties : { + status : { + type : String, + //wait、process、finish、error + value : '' + }, + title : { + type : String, + value : '' + }, + content : { + type : String, + value : '' + }, + icon : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + relations : { + '../steps/index' : { + type : 'parent' + } + }, + data : { + //step length + len : 1, + //current in step index + index : 0, + //parent component select current index + current : 0, + //css direction + direction : 'horizontal' + }, + methods : { + updateDataChange( options ){ + this.setData({ + len : options.len, + index : options.index, + current : options.current, + direction : options.direction + }) + } + } + +}) \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/step/index.json b/source/wx/xzs-student/component/iView/step/index.json new file mode 100644 index 0000000..ffb5dee --- /dev/null +++ b/source/wx/xzs-student/component/iView/step/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/step/index.wxml b/source/wx/xzs-student/component/iView/step/index.wxml new file mode 100644 index 0000000..63549dc --- /dev/null +++ b/source/wx/xzs-student/component/iView/step/index.wxml @@ -0,0 +1,70 @@ + + + {{ index+1 }} + + + + + + + + {{title}} + + + + + + {{content}} + + + + + + + +var allStatus = ['wait','process','finish','error']; +module.exports = { + noIco : function( status,current,index,icon ){ + var aindex = allStatus.indexOf(status); + var noIcon = true; + if( index < current || icon !== '' ){ + noIcon = false; + } + return noIcon; + }, + getIcoClass : function( status,ico ){ + var class = ''; + if( status === 'error' ){ + class = 'close'; + }else{ + class = 'right'; + } + if( ico !== '' ){ + class = ico; + } + return class; + }, + getItemStyle : function(len,direction){ + if( direction === 'horizontal' ){ + return 'width :'+100/len + '%'; + }else{ + return 'width : 100%;'; + } + }, + getClass : function( status,current,index ) { + //wait、process、finish、error + var startClass = 'i-step-' + var classes = ''; + var cindex = allStatus.indexOf( status ); + if( cindex !== -1 ){ + classes = startClass + allStatus[cindex]; + } + if( index < current ){ + classes = startClass + 'finish'; + }else if( index === current ){ + classes = startClass + 'process'; + } + return classes; + } +} + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/step/index.wxss b/source/wx/xzs-student/component/iView/step/index.wxss new file mode 100644 index 0000000..284b42a --- /dev/null +++ b/source/wx/xzs-student/component/iView/step/index.wxss @@ -0,0 +1 @@ +.i-step-ico{width:24px;height:100%;border-radius:100%;background:#fff;position:relative;z-index:2;margin:0 auto;border:#dddee1 solid 1px}.i-step-ico-in{vertical-align:baseline}.i-step-line{position:absolute;left:50%;top:12px;width:100%;height:1px;background:#dddee1}.i-step-horizontal .i-step-ico::after{position:absolute;top:11px;left:23px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-horizontal .i-step-item-main{text-align:center}.i-step-horizontal .i-step-ico::before{position:absolute;top:11px;left:-11px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-ico{box-sizing:border-box;font-size:12px}.i-step-process .i-step-ico{border:#2d8cf0 solid 1px;color:#fff;background:#2d8cf0}.i-step-wait .i-step-ico{border:#e9eaec solid 1px;color:#e9eaec}.i-step-wait .i-step-line{background:#2d8cf0}.i-step-finish .i-step-ico{border:#2d8cf0 solid 1px;color:#2d8cf0}.i-step-finish .i-step-line{background:#2d8cf0}.i-step-error .i-step-ico{border:#ed3f14 solid 1px;color:#ed3f14}.i-step-error .i-step-line{background:#ed3f14}.i-step-item{font-size:12px;position:relative;display:inline-block;box-sizing:border-box;padding-left:10px;vertical-align:top}.i-step-item-ico{width:100%;height:24px;line-height:24px;text-align:center}.i-step-item-main{margin-top:10px;clear:both}.i-step-item-title{font-size:14px;font-weight:700;color:#1c2438}.i-step-item-content{font-size:12px;font-weight:700;margin-top:2px;color:#80848f}.i-step-vertical{padding-bottom:30px}.i-step-vertical .i-step-item-ico{width:24px;float:left}.i-step-vertical .i-step-item-main{margin-left:40px;margin-top:0;clear:inherit}.i-step-vertical .i-step-line{position:absolute;height:100%;top:0;left:10px;margin:0 0 0 12px;width:1px} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/steps/index.js b/source/wx/xzs-student/component/iView/steps/index.js new file mode 100644 index 0000000..06bed88 --- /dev/null +++ b/source/wx/xzs-student/component/iView/steps/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + properties : { + current : { + type : Number, + value : -1, + observer : '_updateDataChange' + }, + status : { + type : String, + //wait、process、finish、error + value : '' + }, + direction : { + type : String, + //value has horizontal or vertical + value : 'horizontal' + } + }, + relations : { + '../step/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + methods: { + _updateDataChange() { + let steps = this.getRelationNodes('../step/index'); + const len = steps.length; + if (len > 0) { + steps.forEach((step, index) => { + step.updateDataChange({ + len : len, + index : index, + current : this.data.current, + direction : this.data.direction + }); + }); + } + } + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/steps/index.json b/source/wx/xzs-student/component/iView/steps/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/steps/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/steps/index.wxml b/source/wx/xzs-student/component/iView/steps/index.wxml new file mode 100644 index 0000000..d9c7942 --- /dev/null +++ b/source/wx/xzs-student/component/iView/steps/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/source/wx/xzs-student/component/iView/steps/index.wxss b/source/wx/xzs-student/component/iView/steps/index.wxss new file mode 100644 index 0000000..616ed04 --- /dev/null +++ b/source/wx/xzs-student/component/iView/steps/index.wxss @@ -0,0 +1 @@ +.i-steps{width:100%} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/sticky-item/index.js b/source/wx/xzs-student/component/iView/sticky-item/index.js new file mode 100644 index 0000000..4fc3dbe --- /dev/null +++ b/source/wx/xzs-student/component/iView/sticky-item/index.js @@ -0,0 +1,40 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + relations : { + '../sticky/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + isFixed : false, + index : -1, + }, + methods: { + updateScrollTopChange(scrollTop){ + const data = this.data; + const top = data.top; + const height = data.height; + this.setData({ + isFixed : ( scrollTop >= top && scrollTop < top + height ) ? true : false + }) + }, + updateDataChange(index) { + const className = '.i-sticky-item'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + if( res ){ + this.setData({ + top : res.top, + height : res.height, + index : index + }) + } + }).exec() + } + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/sticky-item/index.json b/source/wx/xzs-student/component/iView/sticky-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/sticky-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/sticky-item/index.wxml b/source/wx/xzs-student/component/iView/sticky-item/index.wxml new file mode 100644 index 0000000..613a5c0 --- /dev/null +++ b/source/wx/xzs-student/component/iView/sticky-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/source/wx/xzs-student/component/iView/sticky-item/index.wxss b/source/wx/xzs-student/component/iView/sticky-item/index.wxss new file mode 100644 index 0000000..7328f0f --- /dev/null +++ b/source/wx/xzs-student/component/iView/sticky-item/index.wxss @@ -0,0 +1 @@ +.i-sticky-item-header{background:#eee;font-size:14px;width:100%;height:32px;line-height:32px}.i-sticky-item-content{font-size:14px}.i-sticky-title{width:100%;padding:0 15px;box-sizing:border-box;background:#eee}.i-sticky-fixed .i-sticky-title{position:fixed;top:0} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/sticky/index.js b/source/wx/xzs-student/component/iView/sticky/index.js new file mode 100644 index 0000000..546aa4c --- /dev/null +++ b/source/wx/xzs-student/component/iView/sticky/index.js @@ -0,0 +1,63 @@ +Component({ + externalClasses: ['i-class'], + properties : { + scrollTop : { + type : Number, + observer(val){ + this._updateScrollTopChange(); + } + } + }, + relations : { + '../sticky-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + timer : null, + itemLength : 0, + }, + methods : { + _updateScrollTopChange(){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if( stickies.length > 0 ){ + stickies.forEach((item) => { + if( item ){ + item.updateScrollTopChange( this.data.scrollTop ); + } + }) + } + }, + _updateDataChange( ){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if( stickies.length > 0 ){ + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + this.data.timer = setTimeout(()=>{ + stickies.forEach((item,index) => { + if( item ){ + item.updateDataChange(index); + } + }) + },0) + this.setData({ + timer : this.data.timer + }) + } + } + } + +}) \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/sticky/index.json b/source/wx/xzs-student/component/iView/sticky/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/sticky/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/sticky/index.wxml b/source/wx/xzs-student/component/iView/sticky/index.wxml new file mode 100644 index 0000000..aee0c63 --- /dev/null +++ b/source/wx/xzs-student/component/iView/sticky/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/source/wx/xzs-student/component/iView/sticky/index.wxss b/source/wx/xzs-student/component/iView/sticky/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/source/wx/xzs-student/component/iView/swipeout/index.js b/source/wx/xzs-student/component/iView/swipeout/index.js new file mode 100644 index 0000000..b23748c --- /dev/null +++ b/source/wx/xzs-student/component/iView/swipeout/index.js @@ -0,0 +1,161 @@ + /* +* touch事件判断方式 +* https://github.com/madrobby/zepto/blob/master/src/touch.js#files +*/ +function swipeDirection(x1, x2, y1, y2) { + return Math.abs(x1 - x2) >= + Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down') +} + +Component({ + externalClasses: ['i-class'], + properties: { + actions: { + value: [], + type: Array, + observer : '_updateButtonSize' + }, + unclosable : { + value : false, + type : Boolean + }, + toggle : { + value : false, + type : Boolean, + observer : 'closeButtonGroup' + }, + operateWidth : { + type : Number, + value : 160 + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + data : { + //touch start position + tStart : { + pageX : 0, + pageY : 0 + }, + //限制滑动距离 + limitMove : 0, + //element move position + position : { + pageX : 0, + pageY : 0 + } + }, + methods : { + //阻止事件冒泡 + loop(){}, + _updateButtonSize(){ + const actions = this.data.actions; + if( actions.length > 0 ){ + const query = wx.createSelectorQuery().in(this); + let limitMovePosition = 0; + actions.forEach(item => { + limitMovePosition += item.width || 0; + }); + this.data.limitMove = limitMovePosition; + /* + * 动态获取每个传进值的按钮尺寸不能正确获取,在安卓上少了6px + * 暂时实现需要在actions里面传递宽度 + * 需要后期调研 + */ + //query.selectAll('.i-swipeout-button-right-item').boundingClientRect((rects)=>{ + // if( rects ){ + // console.log(rects,1111111) + // rects.forEach(item => { + // limitMovePosition += item.width; + // }); + // this.data.limitMove = limitMovePosition; + // console.log(limitMovePosition,111111111) + // } + // }).exec() + }else{ + this.data.limitMove = this.data.operateWidth; + + } + }, + handlerTouchstart(event){ + const touches = event.touches ? event.touches[0] : {}; + const tStart = this.data.tStart; + if( touches ){ + for( let i in tStart ){ + if( touches[i] ){ + tStart[i] = touches[i]; + } + } + } + }, + swipper(touches){ + const data = this.data; + const start = data.tStart; + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( data.limitMove < Math.abs( spacing.pageX ) ){ + spacing.pageX = -data.limitMove; + + } + this.setData({ + 'position' : spacing + }) + }, + handlerTouchmove(event){ + const start = this.data.tStart; + const touches = event.touches ? event.touches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + if( direction === 'Left' ){ + this.swipper( touches ); + } + } + }, + handlerTouchend(event){ + const start = this.data.tStart; + const touches = event.changedTouches ? event.changedTouches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( Math.abs( spacing.pageX ) >= 40 && direction === "Left" ){ + spacing.pageX = spacing.pageX < 0 ? - this.data.limitMove : this.data.limitMove; + }else{ + spacing.pageX = 0; + } + this.setData({ + 'position' : spacing + }) + } + }, + handlerButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + const dataset = event.currentTarget.dataset; + this.triggerEvent('change',{ + index : dataset.index + }) + }, + closeButtonGroup(){ + this.setData({ + 'position' : {pageX : 0,pageY : 0} + }) + }, + //控制自定义组件 + handlerParentButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + } + }, + ready(){ + this._updateButtonSize(); + } +}); diff --git a/source/wx/xzs-student/component/iView/swipeout/index.json b/source/wx/xzs-student/component/iView/swipeout/index.json new file mode 100644 index 0000000..c63f9a6 --- /dev/null +++ b/source/wx/xzs-student/component/iView/swipeout/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "i-cell": "../cell/index", + "i-icon": "../icon/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/swipeout/index.wxml b/source/wx/xzs-student/component/iView/swipeout/index.wxml new file mode 100644 index 0000000..f588015 --- /dev/null +++ b/source/wx/xzs-student/component/iView/swipeout/index.wxml @@ -0,0 +1,39 @@ + + + + + + + + + + {{item.name}} + + + + + + + + + module.exports = { + setStyle : function( item ){ + var defaults = '#f7f7f7'; + return 'background:' + ( item.background ? item.background : defaults ) +';' + 'color:'+ item.color; + }, + setPosition : function( position ){ + return 'transform:translate(' + position.pageX + 'px,0);'; + } + } + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/swipeout/index.wxss b/source/wx/xzs-student/component/iView/swipeout/index.wxss new file mode 100644 index 0000000..597cffc --- /dev/null +++ b/source/wx/xzs-student/component/iView/swipeout/index.wxss @@ -0,0 +1 @@ +.i-swipeout-wrap{border-bottom:#dddee1 solid 1px;background:#fff;position:relative;overflow:hidden}.i-swipeout-item{width:100%;padding:15px 20px;box-sizing:border-box;transition:transform .2s ease;font-size:14px}.i-swipeout-content{white-space:nowrap;overflow:hidden}.i-swipeout-button-right-group{position:absolute;right:-100%;top:0;height:100%;z-index:1;width:100%}.i-swipeout-button-right-item{height:100%;float:left;white-space:nowrap;box-sizing:border-box;display:flex;align-items:center;justify-content:center} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/switch/index.js b/source/wx/xzs-student/component/iView/switch/index.js new file mode 100644 index 0000000..5ebccfa --- /dev/null +++ b/source/wx/xzs-student/component/iView/switch/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + properties : { + value : { + type : Boolean, + value : false + }, + //large small default + size : { + type : String, + value : 'default' + }, + // is or not disable + disabled : { + type : Boolean, + value : false + }, + // hidden inut name + name : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + toggle(){ + if( this.data.disabled ) return; + const data = this.data; + const value = data.value ? false : true; + this.triggerEvent('change',{ + value : value + }) + } + } +}); diff --git a/source/wx/xzs-student/component/iView/switch/index.json b/source/wx/xzs-student/component/iView/switch/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/switch/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/switch/index.wxml b/source/wx/xzs-student/component/iView/switch/index.wxml new file mode 100644 index 0000000..a180254 --- /dev/null +++ b/source/wx/xzs-student/component/iView/switch/index.wxml @@ -0,0 +1,26 @@ + + + + + + + + + + +var sizes = ['large', 'default']; +var prefixCls = 'i-switch'; +module.exports = { + setSize : function( size ){ + var index = sizes.indexOf( size ); + return prefixCls + ( index > -1 ? ( '-'+size ) : 'default' ) + }, + setCurrent : function( value,disabled ){ + var className = value && !disabled ? prefixCls + '-checked' : ''; + if( disabled ){ + className += ' ' + prefixCls + '-disabled'; + } + return className; + } +} + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/switch/index.wxss b/source/wx/xzs-student/component/iView/switch/index.wxss new file mode 100644 index 0000000..128fea6 --- /dev/null +++ b/source/wx/xzs-student/component/iView/switch/index.wxss @@ -0,0 +1 @@ +.i-switch{display:inline-block;width:48px;height:24px;line-height:24px;border-radius:24px;vertical-align:middle;border:1px solid #ccc;background-color:#ccc;position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s ease-in-out}.i-switch-hide-input{display:none;opacity:0}.i-switch-inner{color:#fff;font-size:12px;position:absolute;left:25px;vertical-align:middle}.i-switch-inner .i-icon{width:12px;height:12px;text-align:center;vertical-align:middle}.i-switch:after{content:'';width:22px;height:22px;border-radius:22px;background-color:#fff;position:absolute;left:1px;top:1px;cursor:pointer;transition:left .2s ease-in-out,width .2s ease-in-out}.i-switch-checked:after{left:8px}.i-switch-large{width:60px}.i-switch-large.i-switch-checked:after{left:37px}.i-switch-checked:after{left:25px}.i-switch-checked{border-color:#2d8cf0;background-color:#2d8cf0}.i-switch-checked .i-switch-inner{left:8px}.i-switch-checked:after{left:25px}.i-switch-disabled{background:#f3f3f3;border-color:#f3f3f3}.i-switch-disabled:after{background:#ccc;cursor:not-allowed}.i-switch-disabled .i-switch-inner{color:#ccc} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tab-bar-item/index.js b/source/wx/xzs-student/component/iView/tab-bar-item/index.js new file mode 100644 index 0000000..0c24c1a --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar-item/index.js @@ -0,0 +1,62 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar/index': { + type: 'parent' + } + }, + + properties: { + icon: { + type: String, + value: '' + }, + currentIcon: { + type: String, + value: '' + }, + img: { + type: String, + value: '' + }, + currentImg: { + type: String, + value: '' + }, + key: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: '' + }, + + methods: { + changeCurrent (current) { + this.setData({ current }); + }, + changeCurrentColor (currentColor) { + this.setData({ currentColor }); + }, + handleClickItem () { + const parent = this.getRelationNodes('../tab-bar/index')[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/tab-bar-item/index.json b/source/wx/xzs-student/component/iView/tab-bar-item/index.json new file mode 100644 index 0000000..918aaf8 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index", + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/tab-bar-item/index.wxml b/source/wx/xzs-student/component/iView/tab-bar-item/index.wxml new file mode 100644 index 0000000..7153909 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + {{ title }} + {{ title }} + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tab-bar-item/index.wxss b/source/wx/xzs-student/component/iView/tab-bar-item/index.wxss new file mode 100644 index 0000000..0f8a9c8 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar-item/index.wxss @@ -0,0 +1 @@ +.i-tab-bar-item{flex:1;display:flex;width:100%;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;text-align:center}.i-tab-bar-item-icon{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-icon-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;width:22px;height:22px}.i-tab-bar-item-title{font-size:10px;margin:3px 0 0;line-height:1;text-align:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-title-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tab-bar/index.js b/source/wx/xzs-student/component/iView/tab-bar/index.js new file mode 100644 index 0000000..ca02fe4 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar/index.js @@ -0,0 +1,66 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar-item/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + fixed: { + type: Boolean, + value: false + } + }, + + data: { + list: [] + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab-bar-item/index'); + const len = items.length; + + if (len > 0) { + const list = []; + items.forEach(item => { + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + list.push({ + key: item.data.key + }); + }); + this.setData({ + list: list + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + }, + handleClickItem (e) { + const key = e.currentTarget.dataset.key; + this.emitEvent(key); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/tab-bar/index.json b/source/wx/xzs-student/component/iView/tab-bar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/tab-bar/index.wxml b/source/wx/xzs-student/component/iView/tab-bar/index.wxml new file mode 100644 index 0000000..9dbfbea --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar/index.wxml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tab-bar/index.wxss b/source/wx/xzs-student/component/iView/tab-bar/index.wxss new file mode 100644 index 0000000..5c6fd9c --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab-bar/index.wxss @@ -0,0 +1 @@ +.i-tab-bar{display:flex;width:100%;height:50px;box-sizing:border-box;position:relative;justify-content:space-around;align-items:center;-webkit-box-align:center;background:#fff}.i-tab-bar::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-tab-bar-fixed{position:fixed;bottom:0;z-index:2}.i-tab-bar-list{position:absolute;top:0;bottom:0;left:0;right:0}.i-tab-bar-layer{display:block;float:left;height:100%} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tab/index.js b/source/wx/xzs-student/component/iView/tab/index.js new file mode 100644 index 0000000..c8d3079 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tabs/index': { + type: 'parent' + } + }, + + properties: { + key: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: '', + scroll: false + }, + + methods: { + changeCurrent (current) { + this.setData({ current }); + }, + changeCurrentColor (currentColor) { + this.setData({ currentColor }); + }, + changeScroll (scroll) { + this.setData({ scroll }); + }, + handleClickItem () { + const parent = this.getRelationNodes('../tabs/index')[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/tab/index.json b/source/wx/xzs-student/component/iView/tab/index.json new file mode 100644 index 0000000..eb6877d --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index" + } +} diff --git a/source/wx/xzs-student/component/iView/tab/index.wxml b/source/wx/xzs-student/component/iView/tab/index.wxml new file mode 100644 index 0000000..29d3955 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab/index.wxml @@ -0,0 +1,9 @@ + + + + {{ title }} + {{ title }} + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tab/index.wxss b/source/wx/xzs-student/component/iView/tab/index.wxss new file mode 100644 index 0000000..135637b --- /dev/null +++ b/source/wx/xzs-student/component/iView/tab/index.wxss @@ -0,0 +1 @@ +.i-tabs-tab{flex:1;display:flex;width:100%;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;text-align:center;position:relative}.i-tabs-tab-bar{display:block;width:100%;height:2px;background:0 0;position:absolute;bottom:0;left:0;background:#2d8cf0}.i-tabs-tab-title{font-size:14px;text-align:center;box-sizing:border-box;color:#80848f}.i-tabs-tab-title-current{color:#2d8cf0}.i-tabs-tab-scroll{display:inline-block;width:60px} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tabs/index.js b/source/wx/xzs-student/component/iView/tabs/index.js new file mode 100644 index 0000000..b9d0326 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tabs/index.js @@ -0,0 +1,56 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + scroll: { + type: Boolean, + value: false + }, + fixed: { + type: Boolean, + value: false + } + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab/index'); + const len = items.length; + + if (len > 0) { + items.forEach(item => { + item.changeScroll(this.data.scroll); + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/tabs/index.json b/source/wx/xzs-student/component/iView/tabs/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tabs/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/tabs/index.wxml b/source/wx/xzs-student/component/iView/tabs/index.wxml new file mode 100644 index 0000000..b61d51b --- /dev/null +++ b/source/wx/xzs-student/component/iView/tabs/index.wxml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tabs/index.wxss b/source/wx/xzs-student/component/iView/tabs/index.wxss new file mode 100644 index 0000000..985fb18 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tabs/index.wxss @@ -0,0 +1 @@ +.i-tabs{display:flex;width:100%;height:42px;line-height:42px;box-sizing:border-box;position:relative;justify-content:space-around;align-items:center;-webkit-box-align:center;background:#fff}.i-tabs::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-tabs-scroll{display:block;overflow-x:auto;white-space:nowrap}.i-tabs-fixed{position:fixed;top:0;z-index:2} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tag/index.js b/source/wx/xzs-student/component/iView/tag/index.js new file mode 100644 index 0000000..338440a --- /dev/null +++ b/source/wx/xzs-student/component/iView/tag/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + properties : { + //slot name + name : { + type : String, + value : '' + }, + //can click or not click + checkable : { + type : Boolean, + value : false + }, + //is current choose + checked : { + type : Boolean, + value : true + }, + //background and color setting + color : { + type : String, + value : 'default' + }, + //control fill or not + type : { + type : String, + value : 'dot' + } + }, + methods : { + tapTag(){ + const data = this.data; + if( data.checkable ){ + const checked = data.checked ? false : true; + this.triggerEvent('change',{ + name : data.name || '', + checked : checked + }); + } + } + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tag/index.json b/source/wx/xzs-student/component/iView/tag/index.json new file mode 100644 index 0000000..1dd6c7f --- /dev/null +++ b/source/wx/xzs-student/component/iView/tag/index.json @@ -0,0 +1,3 @@ +{ + "component" : true +} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tag/index.wxml b/source/wx/xzs-student/component/iView/tag/index.wxml new file mode 100644 index 0000000..ed2c675 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tag/index.wxml @@ -0,0 +1,27 @@ + + + + +module.exports = { + getClass : function(color,type,checked,checkable) { + var initColorList = ['blue', 'green', 'red', 'yellow', 'default']; + var theme = ''; + var className = 'i-tag-'; + if( initColorList.indexOf( color ) > -1 ){ + theme = className + color; + } + if( type === 'border' ){ + theme = className+color+'-border'; + } + if( checkable && checked ){ + theme = className+color+'-checked'; + }else if( checkable && !checked ){ + theme = ( type === 'border' ? className + color +'-border' : className+'none' ); + } + + return theme; + } +} + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/tag/index.wxss b/source/wx/xzs-student/component/iView/tag/index.wxss new file mode 100644 index 0000000..e19f976 --- /dev/null +++ b/source/wx/xzs-student/component/iView/tag/index.wxss @@ -0,0 +1 @@ +.i-tag{display:inline-block;height:18px;line-height:18px;padding:0 4px;border-radius:2px;background:#fff;font-size:11px;vertical-align:middle;border:1rpx solid #dddee1}.i-tag-none{border-color:#fff}.i-tag-default{border-color:#dddee1;background:#e9eaec}.i-tag-red{background:#ed3f14;color:#fff}.i-tag-red-border{color:#ed3f14;background:#fff;border-color:#ed3f14}.i-tag-red-checked{background:#ed3f14;color:#fff;border-color:#ed3f14}.i-tag-green{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-green-border{color:#19be6b;background:#fff;border-color:#19be6b}.i-tag-green-checked{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-blue{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-blue-border{color:#2d8cf0;background:#fff;border-color:#2d8cf0}.i-tag-blue-checked{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-yellow{background:#f90;color:#fff;border-color:#f90}.i-tag-yellow-border{color:#f90;background:#fff;border-color:#f90}.i-tag-yellow-checked{background:#f90;color:#fff;border-color:#f90}.i-tag-default-checked{background:#e9eaec;color:#495060;border-color:#e9eaec} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/toast/index.js b/source/wx/xzs-student/component/iView/toast/index.js new file mode 100644 index 0000000..6493111 --- /dev/null +++ b/source/wx/xzs-student/component/iView/toast/index.js @@ -0,0 +1,48 @@ +const default_data = { + visible: false, + content: '', + icon: '', + image: '', + duration: 2, + mask: true, + type: 'default', // default || success || warning || error || loading +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/toast/index.json b/source/wx/xzs-student/component/iView/toast/index.json new file mode 100644 index 0000000..31309b1 --- /dev/null +++ b/source/wx/xzs-student/component/iView/toast/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/toast/index.wxml b/source/wx/xzs-student/component/iView/toast/index.wxml new file mode 100644 index 0000000..ca5f732 --- /dev/null +++ b/source/wx/xzs-student/component/iView/toast/index.wxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + {{ content }} + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/toast/index.wxss b/source/wx/xzs-student/component/iView/toast/index.wxss new file mode 100644 index 0000000..5b3bd7f --- /dev/null +++ b/source/wx/xzs-student/component/iView/toast/index.wxss @@ -0,0 +1 @@ +.i-toast{position:fixed;top:35%;left:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:14px;line-height:1.5em;margin:0 auto;box-sizing:border-box;padding:10px 18px;text-align:center;border-radius:4px;z-index:1010}.i-toast-mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1010}.i-toast-icon{font-size:38px!important;margin-bottom:6px}.i-toast-image{max-width:100px;max-height:100px}.i-toast-loading{display:inline-block;vertical-align:middle;width:28px;height:28px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff #2d8cf0;animation:btn-spin .8s linear;animation-iteration-count:infinite}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/do/index.js b/source/wx/xzs-student/pages/exam/do/index.js new file mode 100644 index 0000000..e0be7be --- /dev/null +++ b/source/wx/xzs-student/pages/exam/do/index.js @@ -0,0 +1,104 @@ +import { + formatSeconds +} from '../../../utils/util.js' + +let app = getApp() +Page({ + data: { + spinShow: false, + paperId: null, + form: {}, + timer: null, + doTime: 0, + remainTime: 0, + remainTimeStr: '', + modalShow: false, + result: 0, + timeOutShow: false + }, + onLoad: function(options) { + let paperId = options.id + let _this = this + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/exampaper/select/' + paperId, null) + .then(res => { + _this.setData({ + spinShow: false + }); + if (res.code === 1) { + _this.setData({ + form: res.response, + paperId: paperId, + remainTime: res.response.suggestTime * 60 + }); + _this.timeReduce() + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + }, + timeReduce() { + let _this = this + let timer = setInterval(function() { + let remainTime = _this.data.remainTime + if (remainTime <= 0) { + _this.timeOut() + } else { + _this.setData({ + remainTime: remainTime - 1, + remainTimeStr: formatSeconds(remainTime), + doTime: _this.data.doTime + 1 + }); + } + }, 1000) + _this.setData({ + timer: timer + }); + }, + onUnload() { + clearInterval(this.data.timer) + }, + returnRecord() { + wx.reLaunch({ + url: '/pages/record/index', + }); + }, + timeOut() { + clearInterval(this.data.timer) + this.setData({ + timeOutShow: true + }); + }, + formSubmit: function(e) { + let _this = this + if (this.data.timer) { + clearInterval(this.data.timer) + } + wx.showLoading({ + title: '提交中', + mask: true + }) + e.detail.value.id = this.data.paperId + e.detail.value.doTime = this.data.doTime + app.formPost('/api/wx/student/exampaper/answer/answerSubmit', e.detail.value) + .then(res => { + if (res.code === 1) { + _this.setData({ + modalShow: true, + result: res.response + }); + } else { + app.message(res.response, 'error') + } + wx.hideLoading() + }).catch(e => { + wx.hideLoading() + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/do/index.json b/source/wx/xzs-student/pages/exam/do/index.json new file mode 100644 index 0000000..31a9d27 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/do/index.json @@ -0,0 +1,16 @@ +{ + "usingComponents": { + "i-panel": "/component/iView/panel/index", + "i-cell-group": "/component/iView/cell-group/index", + "i-cell": "/component/iView/cell/index", + "i-radio-group": "/component/iView/radio-group/index", + "i-radio": "/component/iView/radio/index", + "i-row": "/component/iView/row/index", + "i-col": "/component/iView/col/index", + "i-input": "/component/iView/input/index", + "i-action-sheet": "/component/iView/action-sheet/index", + "i-modal": "/component/iView/modal/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/do/index.wxml b/source/wx/xzs-student/pages/exam/do/index.wxml new file mode 100644 index 0000000..37e8e33 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/do/index.wxml @@ -0,0 +1,80 @@ + + + {{remainTimeStr}} + + + + + + +

{{form.name}}

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + {{inputItem.prefix}} + + + + + + + + + + + + + + + + + + + + 考试试卷结束,请提交试卷! + + + +
+ + + 得分:{{result}} + + + + +
+
\ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/do/index.wxss b/source/wx/xzs-student/pages/exam/do/index.wxss new file mode 100644 index 0000000..628b1d7 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/do/index.wxss @@ -0,0 +1,76 @@ +.exam-page { + background: white; +} + +.exam-count-down { + font-size: 15px; + line-height: 35px; +} + +.view-wrap { + position: fixed; + width: 100%; + background: #fff6f6; + text-align: center; + height: 35px; + z-index: 999; +} + +.view-wrap-hidden { + height: 35px; +} + +.exam-name-title { + text-align: center; + margin-top: 10px; + font-size: 17px; +} + +.exam-panel-title { + margin-top: 30px; +} + +.exam-radio-item-label { + float: left; + margin-left: 10px; + line-height: 35px; +} + +.exam-item-left { + float: left; +} + +.exam-input-contain { + margin: 10px 2px !important; + border-width: 1px; + border-color: #dddee1; + border-style: solid; + width: 95%; + height: 40px; +} + +.exam-input-contain-label { + float: left; + padding: 0px 15px; + line-height: 40px; +} + +.exam-input-contain-content { + float: left; + height: 40px; +} + +.exam-textarea-contain { + margin: 10px 2px !important; + border-width: 1px; + border-color: #dddee1; + border-style: solid; + width: 100%; +} + +.exam-timeout-title{ + font-size: 16px; + color: red; + margin-top: 10px; + margin-bottom: 20px; +} diff --git a/source/wx/xzs-student/pages/exam/edit/index.js b/source/wx/xzs-student/pages/exam/edit/index.js new file mode 100644 index 0000000..9fedb66 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/edit/index.js @@ -0,0 +1,66 @@ +// pages/exam/edit/index.js +Page({ + + /** + * Page initial data + */ + data: { + + }, + + /** + * Lifecycle function--Called when page load + */ + onLoad: function (options) { + + }, + + /** + * Lifecycle function--Called when page is initially rendered + */ + onReady: function () { + + }, + + /** + * Lifecycle function--Called when page show + */ + onShow: function () { + + }, + + /** + * Lifecycle function--Called when page hide + */ + onHide: function () { + + }, + + /** + * Lifecycle function--Called when page unload + */ + onUnload: function () { + + }, + + /** + * Page event handler function--Called when user drop down + */ + onPullDownRefresh: function () { + + }, + + /** + * Called when page reach bottom + */ + onReachBottom: function () { + + }, + + /** + * Called when user click on the top right corner to share + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/edit/index.json b/source/wx/xzs-student/pages/exam/edit/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/edit/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/edit/index.wxml b/source/wx/xzs-student/pages/exam/edit/index.wxml new file mode 100644 index 0000000..0fc8bc5 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/edit/index.wxml @@ -0,0 +1,2 @@ + +pages/exam/edit/index.wxml diff --git a/source/wx/xzs-student/pages/exam/edit/index.wxss b/source/wx/xzs-student/pages/exam/edit/index.wxss new file mode 100644 index 0000000..476ea5e --- /dev/null +++ b/source/wx/xzs-student/pages/exam/edit/index.wxss @@ -0,0 +1 @@ +/* pages/exam/edit/index.wxss */ \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/index/index.js b/source/wx/xzs-student/pages/exam/index/index.js new file mode 100644 index 0000000..6b9f5e1 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/index/index.js @@ -0,0 +1,91 @@ +// pages/exam/index/index.js +let app = getApp() +Page({ + data: { + paperType: 1, + spinShow: false, + loadMoreLoad: false, + loadMoreTip: '暂无数据', + queryParam: { + paperType: 1, + pageIndex: 1, + pageSize: app.globalData.pageSize + }, + tableData: [], + total: 1 + }, + onLoad: function(options) { + this.setData({ + spinShow: true + }); + this.search(true) + }, + tabChange({ + detail + }) { + this.setData({ + spinShow: true + }); + let size = app.globalData.pageSize + this.setData({ + paperType: detail.key, + queryParam: { + paperType: detail.key, + pageIndex: 1, + pageSize: app.globalData.pageSize + } + }); + this.search(true) + }, + onPullDownRefresh() { + this.setData({ + spinShow: true + }); + if (!this.loading) { + this.setData({ + ['queryParam.pageIndex']: 1 + }); + this.search(true) + } + }, + onReachBottom() { + if (!this.loading && this.data.queryParam.pageIndex < this.data.total) { + this.setData({ + loadMoreLoad: true, + loadMoreTip: '正在加载' + }); + this.setData({ + ['queryParam.pageIndex']: this.data.queryParam.pageIndex + 1 + }); + this.search(false) + } + }, + search: function(override) { + let _this = this + app.formPost('/api/wx/student/exampaper/pageList', this.data.queryParam).then(res => { + _this.setData({ + spinShow: false + }); + wx.stopPullDownRefresh() + if (res.code === 1) { + const re = res.response + _this.setData({ + ['queryParam.pageIndex']: re.pageNum, + tableData: override ? re.list : this.data.tableData.concat(re.list), + total: re.pages + }); + if (re.pageNum >= re.pages) { + this.setData({ + loadMoreLoad: false, + loadMoreTip: '暂无数据' + }); + } + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/index/index.json b/source/wx/xzs-student/pages/exam/index/index.json new file mode 100644 index 0000000..c987d02 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/index/index.json @@ -0,0 +1,13 @@ +{ + "usingComponents": { + "i-tabs": "/component/iView/tabs/index", + "i-tab": "/component/iView/tab/index", + "i-cell-group": "/component/iView/cell-group/index", + "i-cell": "/component/iView/cell/index", + "i-load-more": "/component/iView/load-more/index", + "i-button": "/component/iView/button/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + }, + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/index/index.wxml b/source/wx/xzs-student/pages/exam/index/index.wxml new file mode 100644 index 0000000..885d86b --- /dev/null +++ b/source/wx/xzs-student/pages/exam/index/index.wxml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/index/index.wxss b/source/wx/xzs-student/pages/exam/index/index.wxss new file mode 100644 index 0000000..080cdf1 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/index/index.wxss @@ -0,0 +1,7 @@ +.exam-tab-view { + margin-top: 42px; +} + +.xzs-load-more { + margin-top: 60px !important; +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/read/exam-fun.wxs b/source/wx/xzs-student/pages/exam/read/exam-fun.wxs new file mode 100644 index 0000000..e69de29 diff --git a/source/wx/xzs-student/pages/exam/read/index.js b/source/wx/xzs-student/pages/exam/read/index.js new file mode 100644 index 0000000..7e7dc6a --- /dev/null +++ b/source/wx/xzs-student/pages/exam/read/index.js @@ -0,0 +1,59 @@ +import { + formatSeconds, +} from '../../../utils/util.js' + +let app = getApp() +Page({ + data: { + spinShow: false, + paperId: null, + paper: {}, + answer: {}, + timer: null, + doTime: 0, + remainTime: 0, + remainTimeStr: '', + modalShow: false, + result: 0, + timeOutShow: false + }, + onLoad: function(options) { + let paperId = options.id + let _this = this + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/exampaper/answer/read/' + paperId, null) + .then(res => { + _this.setData({ + spinShow: false + }); + if (res.code === 1) { + _this.setData({ + paper: res.response.paper, + answer: res.response.answer, + paperId: paperId, + }); + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + }, + onUnload() { + clearInterval(this.data.timer) + }, + returnRecord() { + wx.reLaunch({ + url: '/pages/record/index', + }); + }, + timeOut() { + clearInterval(this.data.timer) + this.setData({ + timeOutShow: true + }); + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/read/index.json b/source/wx/xzs-student/pages/exam/read/index.json new file mode 100644 index 0000000..dd27c4e --- /dev/null +++ b/source/wx/xzs-student/pages/exam/read/index.json @@ -0,0 +1,17 @@ +{ + "usingComponents": { + "i-panel": "/component/iView/panel/index", + "i-cell-group": "/component/iView/cell-group/index", + "i-cell": "/component/iView/cell/index", + "i-radio-group": "/component/iView/radio-group/index", + "i-radio": "/component/iView/radio/index", + "i-row": "/component/iView/row/index", + "i-col": "/component/iView/col/index", + "i-input": "/component/iView/input/index", + "i-action-sheet": "/component/iView/action-sheet/index", + "i-modal": "/component/iView/modal/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index", + "i-rate": "/component/iView/rate/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/read/index.wxml b/source/wx/xzs-student/pages/exam/read/index.wxml new file mode 100644 index 0000000..426dbd0 --- /dev/null +++ b/source/wx/xzs-student/pages/exam/read/index.wxml @@ -0,0 +1,86 @@ + + + + + + +

{{paper.name}}

+
+ +

试卷得分: {{answer.score}}

+

试卷耗时: {{answer.doTime}}秒

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + {{inputItem.prefix}} + + + + + + + + + + + + 结果: + 正确 + 错误 + 待批改 + + 得分: {{answer.answerItems[questionItem.itemOrder-1].score}} + 分数: {{questionItem.score}} + + 难度: + + + + + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/source/wx/xzs-student/pages/exam/read/index.wxss b/source/wx/xzs-student/pages/exam/read/index.wxss new file mode 100644 index 0000000..2317efb --- /dev/null +++ b/source/wx/xzs-student/pages/exam/read/index.wxss @@ -0,0 +1,134 @@ +.exam-page { + background: white; +} + +.view-wrap { + position: fixed; + width: 100%; + background: #fff6f6; + text-align: center; + height: 35px; + z-index: 999; +} + +.view-wrap-hidden { + height: 15px; +} + +.exam-name-title { + text-align: center; + margin-top: 5px; + font-size: 20px; +} + +.exam-result { + text-align: center; + margin-top: 5px; + font-size: 15px; +} + +.exam-result-detail { + margin-left: 25px; +} + +.exam-panel-title { + margin-top: 20px; +} + +.exam-radio-item-label { + float: left; + margin-left: 10px; + line-height: 35px; +} + +.exam-item-left { + float: left; +} + +.item-content-selected { + color: #409eff; +} + +.exam-input-contain { + margin: 10px 2px !important; + border-width: 1px; + border-color: #dddee1; + border-style: solid; + width: 95%; + height: 40px; +} + +.exam-input-contain-label { + float: left; + padding: 0px 15px; + line-height: 40px; +} + +.exam-input-contain-content { + float: left; + height: 40px; +} + +.exam-textarea-contain { + margin: 10px 2px !important; + border-width: 1px; + border-color: #dddee1; + border-style: solid; + width: 100%; +} + +.exam-timeout-title { + font-size: 16px; + color: red; + margin-top: 10px; + margin-bottom: 20px; +} + +.gapfilling-span { + color: red; + padding: 0px 30px; + margin: 0px 5px; + border-bottom: 3px double red; +} + +.ueditor-p { + display: inline !important; +} + +.question-answer-result { + text-align: center; + height: 28px; + width: 60px; + line-height: 26px; + display: inline-block; +} + +.question-answer-error { + background-color: #fef0f0; + border-color: #fde2e2; + color: #f56c6c; +} + +.question-answer-right { + background-color: #f0f9eb; + border-color: #e1f3d8; + color: #67c23a; +} + +.question-answer-judge { + background-color: #fdf6ec; + border-color: #faecd8; + color: #e6a23c; +} + +.exam-clear { + clear: both; +} + +.exam-extend-item { + padding: 4px; +} + +.exam-item-rate { + line-height: 0px; +} diff --git a/source/wx/xzs-student/pages/index/index.js b/source/wx/xzs-student/pages/index/index.js new file mode 100644 index 0000000..6dd1d9d --- /dev/null +++ b/source/wx/xzs-student/pages/index/index.js @@ -0,0 +1,65 @@ +//index.js +//获取应用实例 +const app = getApp() + +Page({ + data: { + spinShow: false, + fixedPaper: [], + pushPaper: [], + timeLimitPaper: [], + taskList: [] + }, + onLoad: function() { + this.setData({ + spinShow: true + }); + this.indexLoad() + }, + onPullDownRefresh() { + this.setData({ + spinShow: true + }); + if (!this.loading) { + this.indexLoad() + } + }, + indexLoad: function() { + let _this = this + app.formPost('/api/wx/student/dashboard/index', null).then(res => { + _this.setData({ + spinShow: false + }); + wx.stopPullDownRefresh() + if (res.code === 1) { + _this.setData({ + fixedPaper: res.response.fixedPaper, + timeLimitPaper: res.response.timeLimitPaper, + pushPaper: res.response.pushPaper + }); + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + + app.formPost('/api/wx/student/dashboard/task', null).then(res => { + _this.setData({ + spinShow: false + }); + wx.stopPullDownRefresh() + if (res.code === 1) { + _this.setData({ + taskList: res.response, + }); + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/index/index.json b/source/wx/xzs-student/pages/index/index.json new file mode 100644 index 0000000..78ca4d1 --- /dev/null +++ b/source/wx/xzs-student/pages/index/index.json @@ -0,0 +1,12 @@ +{ + "usingComponents": { + "i-panel": "/component/iView/panel/index", + "i-cell-group": "/component/iView/cell-group/index", + "i-cell": "/component/iView/cell/index", + "i-collapse": "/component/iView/collapse/index", + "i-collapse-item": "/component/iView/collapse-item/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + }, + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/index/index.wxml b/source/wx/xzs-student/pages/index/index.wxml new file mode 100644 index 0000000..059f914 --- /dev/null +++ b/source/wx/xzs-student/pages/index/index.wxml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/index/index.wxss b/source/wx/xzs-student/pages/index/index.wxss new file mode 100644 index 0000000..e1f85c7 --- /dev/null +++ b/source/wx/xzs-student/pages/index/index.wxss @@ -0,0 +1,35 @@ +/**index.wxss**/ + +.caption-wrap { + background-color: white; + margin-top: 15px; +} + +.caption-title { + background-color: #f7f7f7; + display: block; + margin-left: 5px; +} + +.index-collapse { + font-size: 14px; + line-height: 24px; +} + +.index-collapse-item { + padding: 8px 15px !important; + border: 0px !important; +} + +.slide-image { + width: 100%; + height: 150px; +} + +.index-cell { + padding: 5px 15px !important; +} + +p{ + display: none; +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/index/index.js b/source/wx/xzs-student/pages/my/index/index.js new file mode 100644 index 0000000..ef47816 --- /dev/null +++ b/source/wx/xzs-student/pages/my/index/index.js @@ -0,0 +1,54 @@ +const app = getApp() +Page({ + data: { + spinShow: false, + info: {} + }, + + onLoad: function(options) { + this.loadUserInfo() + }, + loadUserInfo() { + let _this = this + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/user/current', null).then(res => { + if (res.code == 1) { + _this.setData({ + info: res.response + }); + } + _this.setData({ + spinShow: false + }); + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + }, + logOut() { + let _this = this + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/auth/unBind', null).then(res => { + if (res.code == 1) { + wx.setStorageSync('token', '') + wx.reLaunch({ + url: '/pages/user/bind/index', + }); + } + _this.setData({ + spinShow: false + }); + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/index/index.json b/source/wx/xzs-student/pages/my/index/index.json new file mode 100644 index 0000000..32db9d1 --- /dev/null +++ b/source/wx/xzs-student/pages/my/index/index.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "i-cell-group": "/component/iView/cell-group/index", + "i-cell": "/component/iView/cell/index", + "i-icon": "/component/iView/icon/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/index/index.wxml b/source/wx/xzs-student/pages/my/index/index.wxml new file mode 100644 index 0000000..a00b3ed --- /dev/null +++ b/source/wx/xzs-student/pages/my/index/index.wxml @@ -0,0 +1,46 @@ + + + + {{info.userName}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +武汉思维跳跃科技有限公司 提供技术支持 + + + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/index/index.wxss b/source/wx/xzs-student/pages/my/index/index.wxss new file mode 100644 index 0000000..66464c6 --- /dev/null +++ b/source/wx/xzs-student/pages/my/index/index.wxss @@ -0,0 +1,32 @@ +/**index.wxss**/ + +.userinfo { + display: flex; + flex-direction: row; + align-items: center; + background: #598ce4; + height: 100px; +} + +.userinfo-avatar { + width: 48px; + height: 48px; + margin-left: 30px; +} + +.userinfo-nickname { + color: white; + margin-left: 20px; +} + + +.my-group-margin{ + margin-top: 10px; +} + +.copyright{ + color: #8c8c8c; + text-align: center; + margin-top: 20px; + font-size: 14px; +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/info/index.js b/source/wx/xzs-student/pages/my/info/index.js new file mode 100644 index 0000000..e9bb18f --- /dev/null +++ b/source/wx/xzs-student/pages/my/info/index.js @@ -0,0 +1,68 @@ +// pages/user/info/index.js +const app = getApp() +Page({ + data: { + userInfo: null, + spinShow: false, + levelIndex: 0 + }, + onLoad: function(options) { + this.loadUserInfo() + }, + loadUserInfo() { + let _this = this + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/user/current', null).then(res => { + if (res.code == 1) { + _this.setData({ + userInfo: res.response, + levelIndex: res.response.userLevel-1 + }); + } + _this.setData({ + spinShow: false + }); + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + }, + bindLevelChange: function(e) { + this.setData({ + levelIndex: e.detail.value + }) + }, + bindDateChange(e) { + let { + value + } = e.detail; + this.setData({ + "userInfo.birthDay": value + }) + }, + formSubmit: function(e) { + let _this = this + wx.showLoading({ + title: '提交中', + mask: true + }) + app.formPost('/api/wx/student/user/update', e.detail.value) + .then(res => { + if (res.code == 1) { + wx.reLaunch({ + url: '/pages/my/index/index', + }); + } else { + app.message(res.message, 'error') + } + wx.hideLoading() + }).catch(e => { + app.message(e, 'error') + wx.hideLoading() + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/info/index.json b/source/wx/xzs-student/pages/my/info/index.json new file mode 100644 index 0000000..e79f0a5 --- /dev/null +++ b/source/wx/xzs-student/pages/my/info/index.json @@ -0,0 +1,11 @@ +{ + "usingComponents": { + "i-button": "/component/iView/button/index", + "i-panel": "/component/iView/panel/index", + "i-input": "/component/iView/input/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index", + "i-radio-group": "/component/iView/radio-group/index", + "i-radio": "/component/iView/radio/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/info/index.wxml b/source/wx/xzs-student/pages/my/info/index.wxml new file mode 100644 index 0000000..243f965 --- /dev/null +++ b/source/wx/xzs-student/pages/my/info/index.wxml @@ -0,0 +1,40 @@ + + +
+ + + + + + + + + + + + + + {{ userInfo.birthDay }} + + + + + + + + + {{ enumItem.state.user.levelEnum[levelIndex].value }} + + + + + + + +
+ + + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/info/index.wxss b/source/wx/xzs-student/pages/my/info/index.wxss new file mode 100644 index 0000000..7629cc0 --- /dev/null +++ b/source/wx/xzs-student/pages/my/info/index.wxss @@ -0,0 +1,18 @@ +.my-info-sex { + height: 45px; + font-size: 13px; +} + +.my-info-sex-item { + line-height: 45px; + margin-left: 20px; +} + +.my-info-level { + font-size: 13px; +} + +.my-info-level-item { + line-height: 45px; + margin-left: 25px; +} diff --git a/source/wx/xzs-student/pages/my/log/index.js b/source/wx/xzs-student/pages/my/log/index.js new file mode 100644 index 0000000..0138dd8 --- /dev/null +++ b/source/wx/xzs-student/pages/my/log/index.js @@ -0,0 +1,32 @@ +const app = getApp() +Page({ + data: { + logList: null, + len: 0 + }, + onLoad: function(options) { + this.search(); + }, + search: function() { + let _this = this + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/user/log', null).then(res => { + _this.setData({ + spinShow: false + }); + if (res.code === 1) { + _this.setData({ + logList: res.response, + len: res.response.length + }); + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/log/index.json b/source/wx/xzs-student/pages/my/log/index.json new file mode 100644 index 0000000..da6a15a --- /dev/null +++ b/source/wx/xzs-student/pages/my/log/index.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "i-steps": "/component/iView/steps/index", + "i-step": "/component/iView/step/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index", + "i-panel": "/component/iView/panel/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/log/index.wxml b/source/wx/xzs-student/pages/my/log/index.wxml new file mode 100644 index 0000000..a9e73c0 --- /dev/null +++ b/source/wx/xzs-student/pages/my/log/index.wxml @@ -0,0 +1,18 @@ + + + + + + + + + {{item.createTime}} + + + {{item.content}} + + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/log/index.wxss b/source/wx/xzs-student/pages/my/log/index.wxss new file mode 100644 index 0000000..859159c --- /dev/null +++ b/source/wx/xzs-student/pages/my/log/index.wxss @@ -0,0 +1,24 @@ +/* pages/user/log/index.wxss */ +@import '/component/iView/steps/index.wxss'; +@import '/component/iView/step/index.wxss'; + +.i-step-ico { + background: #fff !important; + box-sizing: border-box !important; +} + +.i-step-item-title { + font-size: 12px; + font-weight: 400 !important; +} + +.i-step-item-content { + font-size: 12px; + font-weight: 400 !important; +} + +.user-log-page { + background: #fff; + padding: 5px; + padding-top: 10px; +} diff --git a/source/wx/xzs-student/pages/my/message/info/index.js b/source/wx/xzs-student/pages/my/message/info/index.js new file mode 100644 index 0000000..8feb7de --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/info/index.js @@ -0,0 +1,79 @@ +const app = getApp() +Page({ + data: { + message: null + }, + + onLoad: function(options) { + let msgId = options.id; + let _this = this + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/user/message/detail/' + msgId, null).then(res => { + _this.setData({ + spinShow: false + }); + if (res.code === 1) { + _this.setData({ + message: res.response, + }); + app.formPost('/api/wx/student/user/message/read/' + msgId, null); + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/message/info/index.json b/source/wx/xzs-student/pages/my/message/info/index.json new file mode 100644 index 0000000..90cee21 --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/info/index.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "i-panel": "/component/iView/panel/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/message/info/index.wxml b/source/wx/xzs-student/pages/my/message/info/index.wxml new file mode 100644 index 0000000..8f9985d --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/info/index.wxml @@ -0,0 +1,19 @@ + + +

{{message.title}}

+
+ + +

发送人:{{message.sendUserName}}

+
+ +

发送时间:{{message.createTime}}

+
+ +

发送内容:{{message.content}}

+
+ + + +
+
\ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/message/info/index.wxss b/source/wx/xzs-student/pages/my/message/info/index.wxss new file mode 100644 index 0000000..30aa817 --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/info/index.wxss @@ -0,0 +1,16 @@ +.msg-page { + background: white; + width: 100%; + height: 100%; + padding: 10px 0px; +} + +.msg-title { + text-align: center; + font-size: 14px; +} + +.msg-content { + padding: 8px 15px; + font-size: 14px; +} diff --git a/source/wx/xzs-student/pages/my/message/list/index.js b/source/wx/xzs-student/pages/my/message/list/index.js new file mode 100644 index 0000000..61b6666 --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/list/index.js @@ -0,0 +1,72 @@ +const app = getApp() +Page({ + data: { + spinShow: false, + loadMoreLoad: false, + loadMoreTip: '暂无数据', + queryParam: { + pageIndex: 1, + pageSize: app.globalData.pageSize + }, + tableData: [], + total: 1 + }, + onLoad: function(options) { + this.setData({ + spinShow: true + }); + this.search(true); + }, + onPullDownRefresh() { + this.setData({ + spinShow: true + }); + if (!this.loading) { + this.setData({ + ['queryParam.pageIndex']: 1 + }); + this.search(true) + } + }, + onReachBottom() { + if (!this.loading && this.data.queryParam.pageIndex < this.data.total) { + this.setData({ + loadMoreLoad: true, + loadMoreTip: '正在加载' + }); + this.setData({ + ['queryParam.pageIndex']: this.data.queryParam.pageIndex + 1 + }); + this.search(false) + } + }, + search: function(override) { + let _this = this + app.formPost('/api/wx/student/user/message/page', this.data.queryParam).then(res => { + _this.setData({ + spinShow: false + }); + wx.stopPullDownRefresh() + if (res.code === 1) { + const re = res.response + _this.setData({ + ['queryParam.pageIndex']: re.pageNum, + tableData: override ? re.list : this.data.tableData.concat(re.list), + total: re.pages + }); + + if (re.pageNum >= re.pages) { + this.setData({ + loadMoreLoad: false, + loadMoreTip: '暂无数据' + }); + } + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/message/list/index.json b/source/wx/xzs-student/pages/my/message/list/index.json new file mode 100644 index 0000000..b50e013 --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/list/index.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "i-cell-group": "/component/iView/cell-group/index", + "i-cell": "/component/iView/cell/index", + "i-load-more": "/component/iView/load-more/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + }, + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/message/list/index.wxml b/source/wx/xzs-student/pages/my/message/list/index.wxml new file mode 100644 index 0000000..f1050e1 --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/list/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/my/message/list/index.wxss b/source/wx/xzs-student/pages/my/message/list/index.wxss new file mode 100644 index 0000000..d46aba1 --- /dev/null +++ b/source/wx/xzs-student/pages/my/message/list/index.wxss @@ -0,0 +1 @@ +/* pages/user/message/index.wxss */ \ No newline at end of file diff --git a/source/wx/xzs-student/pages/record/index.js b/source/wx/xzs-student/pages/record/index.js new file mode 100644 index 0000000..ce08d93 --- /dev/null +++ b/source/wx/xzs-student/pages/record/index.js @@ -0,0 +1,73 @@ +// pages/exam/index/index.js +let app = getApp() +Page({ + data: { + spinShow: false, + loadMoreLoad: false, + loadMoreTip: '暂无数据', + queryParam: { + pageIndex: 1, + pageSize: app.globalData.pageSize + }, + tableData: [], + total: 1 + }, + onLoad: function(options) { + this.setData({ + spinShow: true + }); + this.search(true) + }, + onPullDownRefresh() { + this.setData({ + spinShow: true + }); + if (!this.loading) { + this.setData({ + ['queryParam.pageIndex']: 1 + }); + this.search(true) + } + }, + onReachBottom() { + if (!this.loading && this.data.queryParam.pageIndex < this.data.total) { + this.setData({ + loadMoreLoad: true, + loadMoreTip: '正在加载' + }); + this.setData({ + ['queryParam.pageIndex']: this.data.queryParam.pageIndex + 1 + }); + this.search(false) + } + }, + search: function(override) { + let _this = this + app.formPost('/api/wx/student/exampaper/answer/pageList', this.data.queryParam) + .then(res => { + _this.setData({ + spinShow: false + }); + wx.stopPullDownRefresh() + if (res.code === 1) { + const re = res.response + _this.setData({ + ['queryParam.pageIndex']: re.pageNum, + tableData: override ? re.list : this.data.tableData.concat(re.list), + total: re.pages + }); + if (re.pageNum >= re.pages) { + this.setData({ + loadMoreLoad: false, + loadMoreTip: '暂无数据' + }); + } + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/record/index.json b/source/wx/xzs-student/pages/record/index.json new file mode 100644 index 0000000..c987d02 --- /dev/null +++ b/source/wx/xzs-student/pages/record/index.json @@ -0,0 +1,13 @@ +{ + "usingComponents": { + "i-tabs": "/component/iView/tabs/index", + "i-tab": "/component/iView/tab/index", + "i-cell-group": "/component/iView/cell-group/index", + "i-cell": "/component/iView/cell/index", + "i-load-more": "/component/iView/load-more/index", + "i-button": "/component/iView/button/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + }, + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/record/index.wxml b/source/wx/xzs-student/pages/record/index.wxml new file mode 100644 index 0000000..bbb18ba --- /dev/null +++ b/source/wx/xzs-student/pages/record/index.wxml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/record/index.wxss b/source/wx/xzs-student/pages/record/index.wxss new file mode 100644 index 0000000..2b5f480 --- /dev/null +++ b/source/wx/xzs-student/pages/record/index.wxss @@ -0,0 +1 @@ +/* pages/exam/index/index.wxss */ \ No newline at end of file diff --git a/source/wx/xzs-student/pages/user/bind/index.js b/source/wx/xzs-student/pages/user/bind/index.js new file mode 100644 index 0000000..9dcb6d5 --- /dev/null +++ b/source/wx/xzs-student/pages/user/bind/index.js @@ -0,0 +1,47 @@ +const app = getApp() +Page({ + data: { + spinShow: false, + userName: '', + password: '', + }, + formSubmit: function(e) { + let _this = this + _this.setData({ + spinShow: true + }); + wx.login({ + success(wxres) { + if (wxres.code) { + e.detail.value.code = wxres.code + app.formPost('/api/wx/student/auth/bind', e.detail.value) + .then(res => { + _this.setData({ + spinShow: false + }); + if (res.code == 1) { + wx.setStorageSync('token', res.response) + wx.reLaunch({ + url: '/pages/index/index', + }); + } else { + app.message(res.message, 'error') + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } else { + app.message(res.errMsg, 'error') + } + } + }) + }, + register: function(e) { + wx.navigateTo({ + url: "../register/index" + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/user/bind/index.json b/source/wx/xzs-student/pages/user/bind/index.json new file mode 100644 index 0000000..f3c0078 --- /dev/null +++ b/source/wx/xzs-student/pages/user/bind/index.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "i-button": "/component/iView/button/index", + "i-panel": "/component/iView/panel/index", + "i-input": "/component/iView/input/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/pages/user/bind/index.wxml b/source/wx/xzs-student/pages/user/bind/index.wxml new file mode 100644 index 0000000..0402b55 --- /dev/null +++ b/source/wx/xzs-student/pages/user/bind/index.wxml @@ -0,0 +1,25 @@ + + + + + +
+ + + + + + + + + + + + + 学之思是一款学校考试系统,仅供学校内部学生使用,需要提供账号密码。没有账号? + 马上注册 + + +
+ + diff --git a/source/wx/xzs-student/pages/user/bind/index.wxss b/source/wx/xzs-student/pages/user/bind/index.wxss new file mode 100644 index 0000000..667bba2 --- /dev/null +++ b/source/wx/xzs-student/pages/user/bind/index.wxss @@ -0,0 +1,7 @@ +/* pages/user/bind/index.wxss */ + +.card-image-container { + align-items: center; + display: flex; + justify-content: center; +} diff --git a/source/wx/xzs-student/pages/user/register/index.js b/source/wx/xzs-student/pages/user/register/index.js new file mode 100644 index 0000000..c4e5312 --- /dev/null +++ b/source/wx/xzs-student/pages/user/register/index.js @@ -0,0 +1,48 @@ +const app = getApp() +Page({ + data: { + levelIndex: 0 + }, + bindLevelChange: function (e) { + this.setData({ + levelIndex: e.detail.value + }) + }, + formSubmit: function(e) { + let _this = this; + let form = e.detail.value + if (form.userName == null || form.userName == '') { + app.message('用户名不能为空', 'error'); + return; + } + if (form.password == null || form.password == '') { + app.message('密码不能为空', 'error'); + return; + } + if (form.userLevel == null || form.userLevel == '') { + app.message('年级不能为空', 'error'); + return; + } + _this.setData({ + spinShow: true + }); + app.formPost('/api/wx/student/user/register', form) + .then(res => { + _this.setData({ + spinShow: false + }); + if (res.code == 1) { + wx.reLaunch({ + url: '/pages/user/bind/index', + }); + } else { + app.message(res.message, 'error') + } + }).catch(e => { + _this.setData({ + spinShow: false + }); + app.message(e, 'error') + }) + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/pages/user/register/index.json b/source/wx/xzs-student/pages/user/register/index.json new file mode 100644 index 0000000..36b1f3a --- /dev/null +++ b/source/wx/xzs-student/pages/user/register/index.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "i-button": "/component/iView/button/index", + "i-panel": "/component/iView/panel/index", + "i-input": "/component/iView/input/index", + "i-message": "/component/iView/message/index", + "i-spin": "/component/iView/spin/index" + } +} diff --git a/source/wx/xzs-student/pages/user/register/index.wxml b/source/wx/xzs-student/pages/user/register/index.wxml new file mode 100644 index 0000000..25588f2 --- /dev/null +++ b/source/wx/xzs-student/pages/user/register/index.wxml @@ -0,0 +1,26 @@ + + + + + +
+ + + + + + + + + + {{ enumItem.state.user.levelEnum[levelIndex].value }} + + + + + + + +
+ + \ No newline at end of file diff --git a/source/wx/xzs-student/pages/user/register/index.wxss b/source/wx/xzs-student/pages/user/register/index.wxss new file mode 100644 index 0000000..52e26f5 --- /dev/null +++ b/source/wx/xzs-student/pages/user/register/index.wxss @@ -0,0 +1,17 @@ +/* pages/user/register/index.wxss */ + +.card-image-container { + align-items: center; + display: flex; + justify-content: center; +} + + +.register-level { + font-size: 13px; +} + +.register-level-item { + line-height: 45px; + margin-left: 25px; +} diff --git a/source/wx/xzs-student/project.config.json b/source/wx/xzs-student/project.config.json new file mode 100644 index 0000000..1c03f62 --- /dev/null +++ b/source/wx/xzs-student/project.config.json @@ -0,0 +1,65 @@ +{ + "description": "Project configuration file", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": false, + "scopeDataCheck": false, + "coverView": true, + "es6": true, + "postcss": true, + "compileHotReLoad": false, + "preloadBackgroundData": false, + "minified": true, + "autoAudits": false, + "newFeature": true, + "uglifyFileName": false, + "uploadWithSourceMap": true, + "useIsolateContext": true, + "nodeModules": false, + "enhance": false, + "useCompilerModule": false, + "userConfirmedUseCompilerModuleSwitch": false, + "showShadowRootInWxmlPanel": true, + "checkInvalidKey": true, + "checkSiteMap": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + } + }, + "compileType": "miniprogram", + "libVersion": "2.8.0", + "appid": "wx331caa8de055fe0d", + "projectname": "xzs-student", + "debugOptions": { + "hidedInDevtools": [] + }, + "isGameTourist": false, + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": { + "search": { + "current": -1, + "list": [] + }, + "conversation": { + "current": -1, + "list": [] + }, + "plugin": { + "current": -1, + "list": [] + }, + "game": { + "currentL": -1, + "list": [] + }, + "miniprogram": { + "current": -1, + "list": [] + } + } +} \ No newline at end of file diff --git a/source/wx/xzs-student/sitemap.json b/source/wx/xzs-student/sitemap.json new file mode 100644 index 0000000..666b2d9 --- /dev/null +++ b/source/wx/xzs-student/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "学之思系统小程序", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/source/wx/xzs-student/utils/mtj-wx-sdk.config.js b/source/wx/xzs-student/utils/mtj-wx-sdk.config.js new file mode 100644 index 0000000..9c45ae0 --- /dev/null +++ b/source/wx/xzs-student/utils/mtj-wx-sdk.config.js @@ -0,0 +1,5 @@ +module.exports = { + appKey: '9abd2dfe51', + hasPlugin: false, + getLocation: false +}; \ No newline at end of file diff --git a/source/wx/xzs-student/utils/mtj-wx-sdk.js b/source/wx/xzs-student/utils/mtj-wx-sdk.js new file mode 100644 index 0000000..9dc13ee --- /dev/null +++ b/source/wx/xzs-student/utils/mtj-wx-sdk.js @@ -0,0 +1 @@ +var mtjwxsdk=function(e){"use strict";var o,t,g={logServerUrl:"https://hmma.baidu.com/mini.gif",maxRequestRetryCount:5,requestRetryFirstDelay:1e3,requestRetryMultiple:4,maxRequestDataLength:204800,maxUserPropertyCount:100,maxUserPropertyKeyValueLength:256,maxUint8:255,maxUint32:4294967295,enabledEvents:{app:["onShow","onHide","onError"],page:["onShow","onHide"]},storageKeys:{uuid:"mtj_uuid",userInfo:"mtj_user",userProperty:"mtj_user_property",shareCount:"mtj_scnt"}},p={type:1},h={aso:{}},r=function(){return"undefined"!=typeof crypto&&crypto.getRandomValues?crypto.getRandomValues(new Uint32Array(1))[0]:Math.floor(Math.random()*g.maxUint32)},a=function(e,t){return"[object "+t+"]"==={}.toString.call(e)},n=function n(r){return(a(r,"Object")||a(r,"Array"))&&Object.keys(r).forEach(function(e){var t=r[e];a(t,"Object")||a(t,"Array")?r[e]=n(t):r[e]=""+t}),r},u=function(e){return a(e,"String")&&/^\d{11}$/.test(e)},i=function(e){return a(e,"String")&&28===e.length},s=0,c=function(r){return new Promise(function(t,n){if(r.data=r.data||{},r.data.v="1.8.14",r.data.rqc=++s,e=r.data,!(JSON.stringify(e).length<=g.maxRequestDataLength))return s--,n(new Error("invalid data"));var e;r.success=function(e){return t(e)},r.fail=function(e){return n(e)},function t(n){var r=1>e/4).toString(16)}),m(g.storageKeys.uuid,e)),e})},v=function(){return t||(p.sid=r(),p.rqc=0,t=Promise.all([l(),new Promise(function(t){o.getSystemInfo({success:function(e){delete e.errMsg,t(e)},fail:function(){t({})}})}),new Promise(function(t){o.getNetworkType({success:function(e){delete e.errMsg,t(e)},fail:function(){t({})}})}),Promise.resolve().then(function(){var e=y(g.storageKeys.userInfo),n=a(e,"Object")?e:{};return new Promise(function(t){o.getSetting({success:function(e){e.authSetting&&e.authSetting["scope.userInfo"]?o.getUserInfo({success:function(e){delete e.userInfo.errMsg,t(Object.assign(n,e.userInfo))},fail:function(){t(n)}}):t(n)},fail:function(){t(n)}})})}),new Promise(function(t){if(!g.getLocation)return t({});o.getLocation({type:"wgs84",success:function(e){delete e.errMsg,t(e)},fail:function(){t({})}})}),Promise.resolve().then(function(){var e=y(g.storageKeys.userProperty);return a(e,"Object")?e:{}})]).then(function(e){p.uuid=e[0],h.system=n(e[1]),h.network=n(e[2]),0g.maxUserPropertyKeyValueLength||(""+t).length>g.maxUserPropertyKeyValueLength||!n[e]&&r>=g.maxUserPropertyCount||(n[e]||r++,n[e]=[t,"1"]))}),m(g.storageKeys.userProperty,n),h.userProperty=JSON.stringify(n)})}},O=App,I=Page,k=function(e,t,n){var r=t[e];t[e]=function(e){n.call(this,e),r&&r.call(this,e)}},w=function(t){g.enabledEvents.app.forEach(function(e){k(e,t,j[e])}),t.mtj=P,O(t)},U=function(a){g.enabledEvents.page.forEach(function(e){k(e,a,b[e])}),["onShareAppMessage"].forEach(function(e){var t,n,r,o;r=b[t=e],o=(n=a)[t],n[t]=function(e){var t=o&&o.call(this,e);return r.call(this,e,t)}}),I(a)},x=function(){var e,t;e=wx,o=e;try{t=require("./mtj-wx-sdk.config")}catch(e){return void console.error("请把mtj-wx-sdk.config.js文件拷贝到utils目录中")}t&&t.appKey?(p.key=t.appKey,g.getLocation=t.getLocation||!1,t.hasPlugin?module.exports={App:w,Page:U}:(App=w,Page=U)):console.error("请设置mtj-wx-sdk.config.js文件中的appKey字段")};return x(),e.init=x,e}({}); diff --git a/source/wx/xzs-student/utils/util.js b/source/wx/xzs-student/utils/util.js new file mode 100644 index 0000000..52b58c8 --- /dev/null +++ b/source/wx/xzs-student/utils/util.js @@ -0,0 +1,41 @@ +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 +} + + +const formatSeconds = theTime => { + let theTime1 = 0 + let theTime2 = 0 + if (theTime > 60) { + theTime1 = parseInt(theTime / 60) + theTime = parseInt(theTime % 60) + if (theTime1 > 60) { + theTime2 = parseInt(theTime1 / 60) + theTime1 = parseInt(theTime1 % 60) + } + } + let result = '' + parseInt(theTime) + '秒' + if (theTime1 > 0) { + result = '' + parseInt(theTime1) + '分' + result + } + if (theTime2 > 0) { + result = '' + parseInt(theTime2) + '小时' + result + } + return result +} +module.exports = { + formatSeconds: formatSeconds, + formatTime: formatTime +} \ No newline at end of file diff --git a/source/wx/xzs-student/wxs/enumItem.wxs b/source/wx/xzs-student/wxs/enumItem.wxs new file mode 100644 index 0000000..9189076 --- /dev/null +++ b/source/wx/xzs-student/wxs/enumItem.wxs @@ -0,0 +1,45 @@ +var state = { + user: { + sexEnum: [{ key: 1, value: '男' }, { key: 2, value: '女' }], + levelEnum: [{ key: 1, value: '一年级' }, { key: 2, value: '二年级' }, { key: 3, value: '三年级' }, { key: 4, value: '四年级' }, { key: 5, value: '五年级' }, { key: 6, value: '六年级' }, + { key: 7, value: '初一' }, { key: 8, value: '初二' }, { key: 9, value: '初三' }, + { key: 10, value: '高一' }, { key: 11, value: '高二' }, { key: 12, value: '高三' }], + roleEnum: [{ key: 1, value: '学生' }, { key: 2, value: '教师' }, { key: 3, value: '管理员' }], + message: { + readTag: [{ key: true, value: 'success' }, { key: false, value: 'warning' }], + readText: [{ key: true, value: '已读' }, { key: false, value: '未读' }] + } + }, + exam: { + examPaper: { + paperTypeEnum: [{ key: 1, value: '固定试卷' }, { key: 4, value: '时段试卷' }] + }, + examPaperAnswer: { + statusEnum: [{ key: 1, value: '待批改' }, { key: 2, value: '完成' }], + statusTag: [{ key: 1, value: 'warning' }, { key: 2, value: 'success' }] + }, + question: { + typeEnum: [{ key: 1, value: '单选题' }, { key: 2, value: '多选题' }, { key: 3, value: '判断题' }, { key: 4, value: '填空题' }, { key: 5, value: '简答题' }], + answer: { + doRightTag: [{ key: true, value: 'success' }, { key: false, value: 'danger' }, { key: null, value: 'warning' }], + doRightEnum: [{ key: true, value: '正确' }, { key: false, value: '错误' }, { key: null, value: '待批改' }], + doCompletedTag: [{ key: false, value: 'info' }, { key: true, value: 'success' }] + } + } + } +} + +function format(array, key) { + for (var i = 0; i < array.length; i++) { + var item=array[i] + if (item.key === key) { + return item.value + } + } + return null +} + +module.exports = { + state: state, + format: format +} \ No newline at end of file diff --git a/source/wx/xzs-student/wxs/exam-fun.wxs b/source/wx/xzs-student/wxs/exam-fun.wxs new file mode 100644 index 0000000..8d33292 --- /dev/null +++ b/source/wx/xzs-student/wxs/exam-fun.wxs @@ -0,0 +1,31 @@ +// 支持es4语法 +var filter = { + numberToFixed: function(value) { + return value.toFixed(2); + }, + trueFalseFormatter: function(question) { + for (var i = 0; i < question.items.length; i++) { + if (question.items[i].prefix === question.correct) { + return question.items[i].content; + } + } + return ''; + }, + indexOf: function(arg1, arg2) { + return arg1.toString().indexOf(arg2.toString()) > -1 ? true : false; + }, + numberToArray: function(number) { + var array = []; + for (var i = 0; i < number; i++) { + array.push(i); + } + return array; + }, +} +// 导出对外暴露的属性 +module.exports = { + numberToFixed: filter.numberToFixed, + trueFalseFormatter: filter.trueFalseFormatter, + indexOf: filter.indexOf, + numberToArray: filter.numberToArray, +} \ No newline at end of file

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 z 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 GG5r7Cbo_$= literal 0 HcmV?d00001 diff --git a/source/wx/xzs-student/assets/logo.png b/source/wx/xzs-student/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..778b744a1fddcfae543b59ed79c1f7eda7b57962 GIT binary patch literal 19217 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 literal 0 HcmV?d00001 diff --git a/source/wx/xzs-student/assets/tabBar/exam-select.png b/source/wx/xzs-student/assets/tabBar/exam-select.png new file mode 100644 index 0000000000000000000000000000000000000000..1906e400ad4279e0d838998bad7d5d69aaee679d GIT binary patch literal 612 zcmV-q0-ODbP)M+5uN#W}mZ560^x} z5+GoXOxW*xfA;N$u%U+s!5x5}TAsN_-SEMLqD}C*?~g#_0sIZnK7c(ikEt8Bv%J~` z5;)@%JF`;-{Bb8B9GN6)70AM=J)WuxjJ$oDL~Q~#c${*ZL@feZ&E0u3jyzj$lf>Er zfA9z=xJ_5#*w);d1aQ5UfR=U^Jvh#b>i8-WGxtlryRv|(<~;P9V49RkL|J$T;cz8^ zqJ}GzQ1Dsf4WK5NAC?v<>vpy6ESb>Yz%zA*-ckZp;K{bjNMLvVl0+WC<-3&y%HT3; z3c`KbJ^)ylfvz6}TdyIeRHP?63XN9qqua{s4~*xVdg6`bA$teS4|5n1%q4qud@ yAABr69PtT~BI@UO7)>FBx@MUM)Vk5j|NjERc^ESfzE~On0000PJ8(MCHL_vyEf@*V zB9Md>&am(8%t-lC;3qzw?PnHR(YKZ z6yVSHN$*?(D@B4Et;CWuZPNFk`I(Q!PI*CpMiaEDWdV_rD)qI;I z_7=$DIZPmzK@i>66?a(zKlTzRhFw69NbcS%zJ!&<4Idb`=TR{&2V2c?Q?- zwialD>s|X%^i-_=Vk7{0(K&~#;H?EV=Dd(oE0)hy3DvEe0w{{deLG+i=EjXVNl(>ZQi z?RD*$#fu^lUW8#dGY%5*>o5qW{-Unyr;C($)L6;R5V5&UA=y-)cxYmztwyd*FQ zrlr}SD3J)iTS&&)7-jBiP1Rm|46j`0Q7@beq+@gZ_blt*^hmB+Y{&4d2GmG&(E;dh z+{FRlSqj|IQ~Kj5cm^f?m!lxPjD(zvFdef@7u2p{FMjtA7Y%_@u*9}200000NkvXX Hu0mjfEaw=A literal 0 HcmV?d00001 diff --git a/source/wx/xzs-student/assets/tabBar/index-select.png b/source/wx/xzs-student/assets/tabBar/index-select.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3331073e410d0933d379577d9f13d20737524e GIT binary patch literal 641 zcmV-{0)G98P)a-Zy>xWXxf@d zSb+pGVX5MUexx!pU-#er&p@0xc;@qQ6o8EF8h%&$Ani1P0M%uWt;xJ>LZtyDa_WeA z3t$1l*9QuGPy|Ga?&!V@L@59nI5sTw0e(ky*fV=_F zqZcKa?}UV|`u!^apI+26fhYt>v%3ZP5rAEkorG=^zy!b@s>@bUUmOJ3(%TZ-RNr*n z#H26w0wkHp7=j;owX%yc$;gpRN?~8*0&HlxS8o%2^?(%g#TJ0pds!U=Xqf12456oo zL0(@x0chO>>hL!pnx=XiLnQmF@%*{z7aAZv{0_has;g#My^SGsg)0i;1Bix7G64vk zM}RYW(b`%~_dM!53Ec?6HwH%-7?UvF4KigsvRCj)%?^L~Xas z>8PKe0tz6G8|-}3n`N>be7=T7{{nESz@-9vDr^sg)`+!P3)2`+%h$HoLI^5aiu2h5rkVy?jj9 bogLsGL}8;a>^^lx00000NkvXXu0mjf$>1K_ literal 0 HcmV?d00001 diff --git a/source/wx/xzs-student/assets/tabBar/index.png b/source/wx/xzs-student/assets/tabBar/index.png new file mode 100644 index 0000000000000000000000000000000000000000..8d14c6c8d89c815899f945fc41dc65205cb16b3f GIT binary patch literal 664 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 literal 0 HcmV?d00001 diff --git a/source/wx/xzs-student/component/iView/action-sheet/index.js b/source/wx/xzs-student/component/iView/action-sheet/index.js new file mode 100644 index 0000000..2db31aa --- /dev/null +++ b/source/wx/xzs-student/component/iView/action-sheet/index.js @@ -0,0 +1,47 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask', 'i-class-header'], + + options: { + multipleSlots: true + }, + + properties: { + visible: { + type: Boolean, + value: false + }, + maskClosable: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: false + }, + cancelText: { + type: String, + value: '取消' + }, + actions: { + type: Array, + value: [] + } + }, + + methods: { + handleClickMask () { + if (!this.data.maskClosable) return; + this.handleClickCancel(); + }, + + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/action-sheet/index.json b/source/wx/xzs-student/component/iView/action-sheet/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/source/wx/xzs-student/component/iView/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/action-sheet/index.wxml b/source/wx/xzs-student/component/iView/action-sheet/index.wxml new file mode 100644 index 0000000..332f393 --- /dev/null +++ b/source/wx/xzs-student/component/iView/action-sheet/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + + {{ item.name }} + + + + + {{ cancelText }} + + diff --git a/source/wx/xzs-student/component/iView/action-sheet/index.wxss b/source/wx/xzs-student/component/iView/action-sheet/index.wxss new file mode 100644 index 0000000..05c6f04 --- /dev/null +++ b/source/wx/xzs-student/component/iView/action-sheet/index.wxss @@ -0,0 +1 @@ +.i-as{position:fixed;width:100%;box-sizing:border-box;left:0;right:0;bottom:0;background:#f7f7f7;transform:translate3d(0,100%,0);transform-origin:center;transition:all .2s ease-in-out;z-index:900;visibility:hidden}.i-as-show{transform:translate3d(0,0,0);visibility:visible}.i-as-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:900;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-as-mask-show{opacity:1;visibility:visible}.i-as-action-item{position:relative}.i-as-action-item::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-as-header{background:#fff;text-align:center;position:relative;font-size:12px;color:#80848f}.i-as-header::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-as-cancel{margin-top:6px}.i-as-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-as-btn-text{display:inline-block;vertical-align:middle}.i-as-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/alert/index.js b/source/wx/xzs-student/component/iView/alert/index.js new file mode 100644 index 0000000..461b67d --- /dev/null +++ b/source/wx/xzs-student/component/iView/alert/index.js @@ -0,0 +1,37 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + properties: { + //info, success, warning, error + type: { + type: String, + value: 'info' + }, + closable: { + type: Boolean, + value: false + }, + showIcon: { + type: Boolean, + default: false + }, + desc: { + type: Boolean, + default: false + }, + }, + data: { + closed: false + }, + methods: { + handleTap() { + this.setData({ + closed: !this.data.closed, + }); + this.triggerEvent('close'); + }, + + } +}); diff --git a/source/wx/xzs-student/component/iView/alert/index.json b/source/wx/xzs-student/component/iView/alert/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/source/wx/xzs-student/component/iView/alert/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/alert/index.wxml b/source/wx/xzs-student/component/iView/alert/index.wxml new file mode 100644 index 0000000..eebabde --- /dev/null +++ b/source/wx/xzs-student/component/iView/alert/index.wxml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/source/wx/xzs-student/component/iView/alert/index.wxss b/source/wx/xzs-student/component/iView/alert/index.wxss new file mode 100644 index 0000000..0e61fce --- /dev/null +++ b/source/wx/xzs-student/component/iView/alert/index.wxss @@ -0,0 +1 @@ +.i-alert{position:relative;margin:10px;padding:8px 48px 8px 16px;font-size:14px;border-radius:2px;color:#fff;background:#f7f7f7;color:#495060}.i-alert.i-alert-with-icon{padding:8px 48px 8px 38px}.i-alert-info{color:#fff;background:#2db7f5}.i-alert-success{color:#fff;background:#19be6b}.i-alert-warning{color:#fff;background:#f90}.i-alert-error{color:#fff;background:#ed3f14}.i-alert-icon{position:absolute;top:9px;left:16px;font-size:14px}.i-alert-desc{font-size:12px}.i-alert-with-desc{padding:16px;position:relative}.i-alert-with-desc.i-alert-with-icon{padding:16px 16px 16px 69px}.i-alert-with-desc .i-alert-icon{top:50%;left:24px;margin-top:-21px;font-size:28px}.i-alert-close{font-size:12px;position:absolute;right:16px;top:8px;overflow:hidden;cursor:pointer} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/avatar/index.js b/source/wx/xzs-student/component/iView/avatar/index.js new file mode 100644 index 0000000..fae9476 --- /dev/null +++ b/source/wx/xzs-student/component/iView/avatar/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // circle || square + shape: { + type: String, + value: 'circle' + }, + // small || large || default + size: { + type: String, + value: 'default' + }, + src: { + type: String, + value: '' + } + } +}); diff --git a/source/wx/xzs-student/component/iView/avatar/index.json b/source/wx/xzs-student/component/iView/avatar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/avatar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/avatar/index.wxml b/source/wx/xzs-student/component/iView/avatar/index.wxml new file mode 100644 index 0000000..11730c6 --- /dev/null +++ b/source/wx/xzs-student/component/iView/avatar/index.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/avatar/index.wxss b/source/wx/xzs-student/component/iView/avatar/index.wxss new file mode 100644 index 0000000..8f6e636 --- /dev/null +++ b/source/wx/xzs-student/component/iView/avatar/index.wxss @@ -0,0 +1 @@ +.i-avatar{display:inline-block;text-align:center;background:#ccc;color:#fff;white-space:nowrap;position:relative;overflow:hidden;vertical-align:middle;width:32px;height:32px;line-height:32px;border-radius:16px;font-size:18px}.i-avatar .ivu-avatar-string{line-height:32px}.i-avatar-large{width:40px;height:40px;line-height:40px;border-radius:20px;font-size:24px}.i-avatar-large .ivu-avatar-string{line-height:40px}.i-avatar-small{width:24px;height:24px;line-height:24px;border-radius:12px;font-size:14px}.i-avatar-small .ivu-avatar-string{line-height:24px}.i-avatar-image{background:0 0}.i-avatar-square{border-radius:4px}.i-avatar>image{width:100%;height:100%} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/badge/index.js b/source/wx/xzs-student/component/iView/badge/index.js new file mode 100644 index 0000000..2b9fb30 --- /dev/null +++ b/source/wx/xzs-student/component/iView/badge/index.js @@ -0,0 +1,29 @@ +Component({ + externalClasses: ['i-class', 'i-class-alone'], + + properties: { + count: { + type: Number, + value: 0, + observer: 'finalCount' + }, + overflowCount: { + type: Number, + value: 99 + }, + dot: { + type: Boolean, + value: false + }, + }, + data: { + finalCount: 0 + }, + methods: { + finalCount() { + this.setData({ + finalCount: parseInt(this.data.count) >= parseInt(this.data.overflowCount) ? `${this.data.overflowCount}+` : this.data.count + }); + }, + } +}); diff --git a/source/wx/xzs-student/component/iView/badge/index.json b/source/wx/xzs-student/component/iView/badge/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/badge/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/badge/index.wxml b/source/wx/xzs-student/component/iView/badge/index.wxml new file mode 100644 index 0000000..372fd7f --- /dev/null +++ b/source/wx/xzs-student/component/iView/badge/index.wxml @@ -0,0 +1,5 @@ + + + + {{ finalCount }} + diff --git a/source/wx/xzs-student/component/iView/badge/index.wxss b/source/wx/xzs-student/component/iView/badge/index.wxss new file mode 100644 index 0000000..281658f --- /dev/null +++ b/source/wx/xzs-student/component/iView/badge/index.wxss @@ -0,0 +1 @@ +.i-badge{position:relative;display:inline-block;line-height:1;vertical-align:middle}.i-badge-count{position:absolute;transform:translateX(50%);top:-6px;right:0;height:18px;border-radius:9px;min-width:18px;background:#ed3f14;border:1px solid transparent;color:#fff;line-height:18px;text-align:center;padding:0 5px;font-size:12px;white-space:nowrap;transform-origin:-10% center;z-index:10;box-shadow:0 0 0 1px #fff;box-sizing:border-box;text-rendering:optimizeLegibility}.i-badge-count-alone{top:auto;display:block;position:relative;transform:translateX(0)}.i-badge-dot{position:absolute;transform:translateX(-50%);transform-origin:0 center;top:-4px;right:-8px;height:8px;width:8px;border-radius:100%;background:#ed3f14;z-index:10;box-shadow:0 0 0 1px #fff} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/base/index.js b/source/wx/xzs-student/component/iView/base/index.js new file mode 100644 index 0000000..6cb977f --- /dev/null +++ b/source/wx/xzs-student/component/iView/base/index.js @@ -0,0 +1,37 @@ +function getCtx (selector) { + const pages = getCurrentPages(); + const ctx = pages[pages.length - 1]; + + const componentCtx = ctx.selectComponent(selector); + + if (!componentCtx) { + console.error('无法找到对应的组件,请按文档说明使用组件'); + return null; + } + return componentCtx; +} + +function Toast(options) { + const { selector = '#toast' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +Toast.hide = function (selector = '#toast') { + const ctx = getCtx(selector); + + ctx.handleHide(); +}; + +function Message(options) { + const { selector = '#message' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +module.exports = { + $Toast: Toast, + $Message: Message +}; \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/button/index.js b/source/wx/xzs-student/component/iView/button/index.js new file mode 100644 index 0000000..f0e9b3e --- /dev/null +++ b/source/wx/xzs-student/component/iView/button/index.js @@ -0,0 +1,80 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // default, primary, ghost, info, success, warning, error + type: { + type: String, + value: '', + }, + inline: { + type: Boolean, + value: false + }, + // default, large, small + size: { + type: String, + value: '', + }, + // circle, square + shape: { + type: String, + value: 'square' + }, + disabled: { + type: Boolean, + value: false, + }, + loading: { + type: Boolean, + value: false, + }, + long: { + type: Boolean, + value: false + }, + openType: String, + appParameter: String, + hoverStopPropagation: Boolean, + hoverStartTime: { + type: Number, + value: 20 + }, + hoverStayTime: { + type: Number, + value: 70 + }, + lang: { + type: String, + value: 'en' + }, + sessionFrom: { + type: String, + value: '' + }, + sendMessageTitle: String, + sendMessagePath: String, + sendMessageImg: String, + showMessageCard: Boolean + }, + + methods: { + handleTap () { + if (this.data.disabled) return false; + + this.triggerEvent('click'); + }, + bindgetuserinfo({ detail = {} } = {}) { + this.triggerEvent('getuserinfo', detail); + }, + bindcontact({ detail = {} } = {}) { + this.triggerEvent('contact', detail); + }, + bindgetphonenumber({ detail = {} } = {}) { + this.triggerEvent('getphonenumber', detail); + }, + binderror({ detail = {} } = {}) { + this.triggerEvent('error', detail); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/button/index.json b/source/wx/xzs-student/component/iView/button/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/button/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/button/index.wxml b/source/wx/xzs-student/component/iView/button/index.wxml new file mode 100644 index 0000000..e154eee --- /dev/null +++ b/source/wx/xzs-student/component/iView/button/index.wxml @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/button/index.wxss b/source/wx/xzs-student/component/iView/button/index.wxss new file mode 100644 index 0000000..550bc81 --- /dev/null +++ b/source/wx/xzs-student/component/iView/button/index.wxss @@ -0,0 +1 @@ +.i-btn{text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;user-select:none;font-size:14px;border-radius:2px;border:0!important;position:relative;text-decoration:none;height:44px;line-height:44px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);color:#fff!important;background:#f7f7f7!important;color:#495060!important;margin:10px}.i-btn-hover{opacity:.9}.i-btn-long{border-radius:0;margin:0;box-shadow:none}.i-btn-large{height:48px;line-height:48px}.i-btn-small{height:40px;line-height:40px}.i-btn-primary{color:#fff!important;background:#2d8cf0!important}.i-btn-ghost{color:#fff!important;background:#fff!important;color:#495060!important}.i-btn-success{color:#fff!important;background:#19be6b!important}.i-btn-warning{color:#fff!important;background:#f90!important}.i-btn-error{color:#fff!important;background:#ed3f14!important}.i-btn-info{color:#fff!important;background:#2db7f5!important}.i-btn-circle{border-radius:44px}.i-btn-large.i-btn-circle{border-radius:48px}.i-btn-small.i-btn-circle{border-radius:40px}.i-btn-loading{opacity:.6}.i-btn-loading-inner{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-btn-disabled{color:#bbbec4!important;background:#f7f7f7!important}.i-btn-inline{display:inline-block}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/card/index.js b/source/wx/xzs-student/component/iView/card/index.js new file mode 100644 index 0000000..20ad106 --- /dev/null +++ b/source/wx/xzs-student/component/iView/card/index.js @@ -0,0 +1,26 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + full: { + type: Boolean, + value: false + }, + thumb: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + extra: { + type: String, + value: '' + } + } +}); diff --git a/source/wx/xzs-student/component/iView/card/index.json b/source/wx/xzs-student/component/iView/card/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/card/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/card/index.wxml b/source/wx/xzs-student/component/iView/card/index.wxml new file mode 100644 index 0000000..4792293 --- /dev/null +++ b/source/wx/xzs-student/component/iView/card/index.wxml @@ -0,0 +1,11 @@ + + + + + {{ title }} + + {{ extra }} + + + + diff --git a/source/wx/xzs-student/component/iView/card/index.wxss b/source/wx/xzs-student/component/iView/card/index.wxss new file mode 100644 index 0000000..fd8fad4 --- /dev/null +++ b/source/wx/xzs-student/component/iView/card/index.wxss @@ -0,0 +1 @@ +.i-card{margin:0 16px;font-size:14px;overflow:hidden;position:relative;background:#fff;border:1rpx solid #dddee1;border-radius:5px}.i-card-full{margin:0;border-left:none;border-right:none;border-radius:0}.i-card-header{display:flex;padding:6px 16px;align-items:center}.i-card-header-content{flex:1;text-align:left}.i-card-header-thumb{display:inline-block;width:64px;height:64px;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;background-size:cover;vertical-align:middle}.i-card-header-title{display:inline-block;vertical-align:middle;font-size:14px;color:#1c2438}.i-card-header-extra{flex:1;text-align:right;font-size:14px;color:#80848f}.i-card-body{position:relative;padding:6px 16px;color:#495060;font-size:14px}.i-card-body::before{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-card-footer{position:relative;padding:6px 16px;color:#80848f;font-size:12px} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/cell-group/index.js b/source/wx/xzs-student/component/iView/cell-group/index.js new file mode 100644 index 0000000..ad36baa --- /dev/null +++ b/source/wx/xzs-student/component/iView/cell-group/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../cell/index': { + type: 'child', + linked () { + this._updateIsLastCell(); + }, + linkChanged () { + this._updateIsLastCell(); + }, + unlinked () { + this._updateIsLastCell(); + } + } + }, + + methods: { + _updateIsLastCell() { + let cells = this.getRelationNodes('../cell/index'); + const len = cells.length; + + if (len > 0) { + let lastIndex = len - 1; + + cells.forEach((cell, index) => { + cell.updateIsLastCell(index === lastIndex); + }); + } + } + } +}); diff --git a/source/wx/xzs-student/component/iView/cell-group/index.json b/source/wx/xzs-student/component/iView/cell-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/cell-group/index.wxml b/source/wx/xzs-student/component/iView/cell-group/index.wxml new file mode 100644 index 0000000..1897919 --- /dev/null +++ b/source/wx/xzs-student/component/iView/cell-group/index.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/cell/index.js b/source/wx/xzs-student/component/iView/cell/index.js new file mode 100644 index 0000000..50e635c --- /dev/null +++ b/source/wx/xzs-student/component/iView/cell/index.js @@ -0,0 +1,86 @@ +const warn = (msg, getValue) => { + console.warn(msg); + console.log('接受到的值为:', getValue); +}; + +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + relations: { + '../cell-group/index': { + type: 'parent' + } + }, + + properties: { + // 左侧标题 + title: { + type: String + }, + // 标题下方的描述信息 + label: { + type: String + }, + // 右侧内容 + value: { + type: String + }, + // 只有点击 footer 区域才触发 tab 事件 + onlyTapFooter: { + type: Boolean + }, + // 是否展示右侧箭头并开启尝试以 url 跳转 + isLink: { + type: null, + value: '' + }, + // 链接类型,可选值为 navigateTo,redirectTo,switchTab,reLaunch + linkType: { + type: String, + value: 'navigateTo' + }, + url: { + type: String, + value: '' + } + }, + + data: { + isLastCell: true + }, + + methods: { + navigateTo () { + const { url } = this.data; + const type = typeof this.data.isLink; + + this.triggerEvent('click', {}); + + if (!this.data.isLink || !url || url === 'true' || url === 'false') return; + + if (type !== 'boolean' && type !== 'string') { + warn('isLink 属性值必须是一个字符串或布尔值', this.data.isLink); + return; + } + + if (['navigateTo', 'redirectTo', 'switchTab', 'reLaunch'].indexOf(this.data.linkType) === -1) { + warn('linkType 属性可选值为 navigateTo,redirectTo,switchTab,reLaunch', this.data.linkType); + return; + } + wx[this.data.linkType].call(wx, {url}); + }, + handleTap () { + if (!this.data.onlyTapFooter) { + this.navigateTo(); + } + }, + + updateIsLastCell (isLastCell) { + this.setData({ isLastCell }); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/cell/index.json b/source/wx/xzs-student/component/iView/cell/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/cell/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/cell/index.wxml b/source/wx/xzs-student/component/iView/cell/index.wxml new file mode 100644 index 0000000..c3683e3 --- /dev/null +++ b/source/wx/xzs-student/component/iView/cell/index.wxml @@ -0,0 +1,16 @@ + + + + + + {{ title }} + {{ label }} + + + + {{ value }} + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/cell/index.wxss b/source/wx/xzs-student/component/iView/cell/index.wxss new file mode 100644 index 0000000..e45ad75 --- /dev/null +++ b/source/wx/xzs-student/component/iView/cell/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/checkbox-group/index.js b/source/wx/xzs-student/component/iView/checkbox-group/index.js new file mode 100644 index 0000000..6465450 --- /dev/null +++ b/source/wx/xzs-student/component/iView/checkbox-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: Array, + value: [], + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../checkbox/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val.indexOf(item.data.value) !== -1); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/checkbox-group/index.json b/source/wx/xzs-student/component/iView/checkbox-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/source/wx/xzs-student/component/iView/checkbox-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/source/wx/xzs-student/component/iView/checkbox-group/index.wxml b/source/wx/xzs-student/component/iView/checkbox-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/source/wx/xzs-student/component/iView/checkbox-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/source/wx/xzs-student/component/iView/checkbox-group/index.wxss b/source/wx/xzs-student/component/iView/checkbox-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/source/wx/xzs-student/component/iView/checkbox/index.js b/source/wx/xzs-student/component/iView/checkbox/index.js new file mode 100644 index 0000000..b383952 --- /dev/null +++ b/source/wx/xzs-student/component/iView/checkbox/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-checkbox'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-checkbox-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + checkboxChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../checkbox-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-checkbox-left` : `${prefixCls}-checkbox-right`, + }); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/checkbox/index.json b/source/wx/xzs-student/component/iView/checkbox/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/source/wx/xzs-student/component/iView/checkbox/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/source/wx/xzs-student/component/iView/checkbox/index.wxml b/source/wx/xzs-student/component/iView/checkbox/index.wxml new file mode 100644 index 0000000..214493f --- /dev/null +++ b/source/wx/xzs-student/component/iView/checkbox/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/source/wx/xzs-student/component/iView/checkbox/index.wxss b/source/wx/xzs-student/component/iView/checkbox/index.wxss new file mode 100644 index 0000000..a07699f --- /dev/null +++ b/source/wx/xzs-student/component/iView/checkbox/index.wxss @@ -0,0 +1 @@ +.i-checkbox-cell::after{display:block}.i-checkbox-checkbox-left{float:left}.i-checkbox-checkbox-right{float:right}.i-checkbox-radio{vertical-align:middle}.i-checkbox-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/col/index.js b/source/wx/xzs-student/component/iView/col/index.js new file mode 100644 index 0000000..9b2d65d --- /dev/null +++ b/source/wx/xzs-student/component/iView/col/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../row/index': { + type: 'parent' + } + }, + + properties: { + span: { + value: 0, + type: Number + }, + offset: { + value: 0, + type: Number + } + } +}); diff --git a/source/wx/xzs-student/component/iView/col/index.json b/source/wx/xzs-student/component/iView/col/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/source/wx/xzs-student/component/iView/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/col/index.wxml b/source/wx/xzs-student/component/iView/col/index.wxml new file mode 100644 index 0000000..838a22b --- /dev/null +++ b/source/wx/xzs-student/component/iView/col/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/col/index.wxss b/source/wx/xzs-student/component/iView/col/index.wxss new file mode 100644 index 0000000..bdce125 --- /dev/null +++ b/source/wx/xzs-student/component/iView/col/index.wxss @@ -0,0 +1 @@ +.i-col{float:left;box-sizing:border-box;width:0}.i-col-span-1{display:block;width:4.16666667%}.i-col-offset-1{margin-left:4.16666667%}.i-col-span-2{display:block;width:8.33333333%}.i-col-offset-2{margin-left:8.33333333%}.i-col-span-3{display:block;width:12.5%}.i-col-offset-3{margin-left:12.5%}.i-col-span-4{display:block;width:16.66666667%}.i-col-offset-4{margin-left:16.66666667%}.i-col-span-5{display:block;width:20.83333333%}.i-col-offset-5{margin-left:20.83333333%}.i-col-span-6{display:block;width:25%}.i-col-offset-6{margin-left:25%}.i-col-span-7{display:block;width:29.16666667%}.i-col-offset-7{margin-left:29.16666667%}.i-col-span-8{display:block;width:33.33333333%}.i-col-offset-8{margin-left:33.33333333%}.i-col-span-9{display:block;width:37.5%}.i-col-offset-9{margin-left:37.5%}.i-col-span-10{display:block;width:41.66666667%}.i-col-offset-10{margin-left:41.66666667%}.i-col-span-11{display:block;width:45.83333333%}.i-col-offset-11{margin-left:45.83333333%}.i-col-span-12{display:block;width:50%}.i-col-offset-12{margin-left:50%}.i-col-span-13{display:block;width:54.16666667%}.i-col-offset-13{margin-left:54.16666667%}.i-col-span-14{display:block;width:58.33333333%}.i-col-offset-14{margin-left:58.33333333%}.i-col-span-15{display:block;width:62.5%}.i-col-offset-15{margin-left:62.5%}.i-col-span-16{display:block;width:66.66666667%}.i-col-offset-16{margin-left:66.66666667%}.i-col-span-17{display:block;width:70.83333333%}.i-col-offset-17{margin-left:70.83333333%}.i-col-span-18{display:block;width:75%}.i-col-offset-18{margin-left:75%}.i-col-span-19{display:block;width:79.16666667%}.i-col-offset-19{margin-left:79.16666667%}.i-col-span-20{display:block;width:83.33333333%}.i-col-offset-20{margin-left:83.33333333%}.i-col-span-21{display:block;width:87.5%}.i-col-offset-21{margin-left:87.5%}.i-col-span-22{display:block;width:91.66666667%}.i-col-offset-22{margin-left:91.66666667%}.i-col-span-23{display:block;width:95.83333333%}.i-col-offset-23{margin-left:95.83333333%}.i-col-span-24{display:block;width:100%}.i-col-offset-24{margin-left:100%} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/collapse-item/index.js b/source/wx/xzs-student/component/iView/collapse-item/index.js new file mode 100644 index 0000000..bc415c1 --- /dev/null +++ b/source/wx/xzs-student/component/iView/collapse-item/index.js @@ -0,0 +1,46 @@ +Component({ + externalClasses: ['i-class-content', 'i-class-title', 'i-class'], + + relations: { + '../collapse/index': { + type: 'parent', + linked: function (target) { + const options = { + accordion: target.data.accordion + } + if (target.data.name === this.data.name) { + options.showContent = 'i-collapse-item-show-content'; + } + this.setData(options); + } + } + }, + + properties: { + title: String, + name: String + }, + + data: { + showContent: '', + accordion: false + }, + + options: { + multipleSlots: true + }, + + methods: { + trigger(e) { + const data = this.data; + if (data.accordion) { + this.triggerEvent('collapse', {name: data.name}, {composed: true, bubbles: true}); + } else { + this.setData({ + showContent: data.showContent ? '' : 'i-collapse-item-show-content' + }); + } + }, + } +}); + diff --git a/source/wx/xzs-student/component/iView/collapse-item/index.json b/source/wx/xzs-student/component/iView/collapse-item/index.json new file mode 100644 index 0000000..54575da --- /dev/null +++ b/source/wx/xzs-student/component/iView/collapse-item/index.json @@ -0,0 +1,7 @@ + +{ + "component": true, + "usingComponents": { + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/collapse-item/index.wxml b/source/wx/xzs-student/component/iView/collapse-item/index.wxml new file mode 100644 index 0000000..ba22b0a --- /dev/null +++ b/source/wx/xzs-student/component/iView/collapse-item/index.wxml @@ -0,0 +1,9 @@ + + + + {{title}} + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/collapse-item/index.wxss b/source/wx/xzs-student/component/iView/collapse-item/index.wxss new file mode 100644 index 0000000..d44c032 --- /dev/null +++ b/source/wx/xzs-student/component/iView/collapse-item/index.wxss @@ -0,0 +1 @@ +.i-collapse-item{padding:2px 8px;border-top:1px solid #dddee1}.i-collapse-item-title{vertical-align:middle}.i-collapse-item-title-wrap{padding:2px 0 0}.i-collapse-item-content{padding:6px;display:none}.i-collapse-item-show-content{display:block}.i-collapse-item-arrow{transition:transform .2s ease-in-out}.i-collapse-item-arrow-show{transition:transform .2s ease-in-out;transform:rotate(90deg)} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/collapse/index.js b/source/wx/xzs-student/component/iView/collapse/index.js new file mode 100644 index 0000000..acc1455 --- /dev/null +++ b/source/wx/xzs-student/component/iView/collapse/index.js @@ -0,0 +1,31 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../collapse-item/index': { + type: 'child' + } + }, + properties: { + name: String, + accordion: Boolean + }, + methods: { + clickfn(e) { + const params = e.detail; + const allList = this.getRelationNodes('../collapse-item/index'); + allList.forEach((item) => { + if (params.name === item.data.name) { + item.setData({ + showContent: 'i-collapse-item-show-content' + }); + } else { + item.setData({ + showContent: '' + }); + } + }); + }, + } +}); + diff --git a/source/wx/xzs-student/component/iView/collapse/index.json b/source/wx/xzs-student/component/iView/collapse/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/collapse/index.wxml b/source/wx/xzs-student/component/iView/collapse/index.wxml new file mode 100644 index 0000000..0f379f7 --- /dev/null +++ b/source/wx/xzs-student/component/iView/collapse/index.wxml @@ -0,0 +1,4 @@ + + + + diff --git a/source/wx/xzs-student/component/iView/collapse/index.wxss b/source/wx/xzs-student/component/iView/collapse/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/source/wx/xzs-student/component/iView/count-down/index.js b/source/wx/xzs-student/component/iView/count-down/index.js new file mode 100644 index 0000000..f1da533 --- /dev/null +++ b/source/wx/xzs-student/component/iView/count-down/index.js @@ -0,0 +1,90 @@ +Component({ + properties: { + target: Number, + showDay: Boolean, + callback: String, + format: Array, + clearTimer: Boolean + }, + externalClasses: ['countdown-class'], + data: { + time: '', + resultFormat: [], + changeFormat: false + }, + ready() { + this.getFormat(); + + }, + methods: { + getFormat() { + const data = this.data; + const len = data.format.length; + + if (!data.showDay) data.resultFormat.push(''); + + if (len >= 3) { + for (let i = 0; i < len; i++) { + if (data.resultFormat.length >= 4) break; + if (data.format[i]) { + data.resultFormat.push(data.format[i].toString()); + } + } + + if (data.resultFormat.length >= 4) data.changeFormat = true; + } + + this.getLastTime(); + }, + init() { + const self = this; + setTimeout(function () { + self.getLastTime.call(self); + }, 1000); + }, + getLastTime() { + const data = this.data; + const gapTime = Math.ceil((data.target - new Date().getTime()) / 1000); + let result = ''; + let time = '00:00:00'; + let day = '00'; + const format = data.resultFormat; + + if (gapTime > 0) { + day = this.formatNum(parseInt(gapTime / 86400)); + let lastTime = gapTime % 86400; + const hour = this.formatNum(parseInt(lastTime / 3600)); + lastTime = lastTime % 3600; + const minute = this.formatNum(parseInt(lastTime / 60)); + const second = this.formatNum(lastTime % 60); + + if (data.changeFormat) time = `${hour}${format[1]}${minute}${format[2]}${second}${format[3]}`; + else time = `${hour}:${minute}:${second}`; + + if (!data.clearTimer) this.init.call(this); + } else { + this.endfn(); + } + + if (data.showDay) { + if (data.changeFormat) { + result = `${day}${format[0]} ${time}`; + } else { + result = `${day}d ${time}`; + } + } else { + result = time; + } + this.setData({ + time: result + }); + + }, + formatNum(num) { + return num > 9 ? num : `0${num}`; + }, + endfn() { + this.triggerEvent('callback', {}); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/count-down/index.json b/source/wx/xzs-student/component/iView/count-down/index.json new file mode 100644 index 0000000..74f1315 --- /dev/null +++ b/source/wx/xzs-student/component/iView/count-down/index.json @@ -0,0 +1,4 @@ + +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/count-down/index.wxml b/source/wx/xzs-student/component/iView/count-down/index.wxml new file mode 100644 index 0000000..bd73789 --- /dev/null +++ b/source/wx/xzs-student/component/iView/count-down/index.wxml @@ -0,0 +1,4 @@ + + {{time}} + + diff --git a/source/wx/xzs-student/component/iView/count-down/index.wxss b/source/wx/xzs-student/component/iView/count-down/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/source/wx/xzs-student/component/iView/divider/index.js b/source/wx/xzs-student/component/iView/divider/index.js new file mode 100644 index 0000000..6b0e448 --- /dev/null +++ b/source/wx/xzs-student/component/iView/divider/index.js @@ -0,0 +1,25 @@ +Component({ + externalClasses: ['i-class'], + properties: { + content: { + type: String, + value: '' + }, + height : { + type: Number, + value: 48 + }, + color : { + type : String, + value : '#80848f' + }, + lineColor : { + type : String, + value : '#e9eaec' + }, + size : { + type: String, + value: 12 + } + } +}); diff --git a/source/wx/xzs-student/component/iView/divider/index.json b/source/wx/xzs-student/component/iView/divider/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/divider/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/divider/index.wxml b/source/wx/xzs-student/component/iView/divider/index.wxml new file mode 100644 index 0000000..b7111d3 --- /dev/null +++ b/source/wx/xzs-student/component/iView/divider/index.wxml @@ -0,0 +1,19 @@ + + + {{content}} + + + + + + + + module.exports = { + getStyle : function(color,size,height){ + var color = 'color:' + color +';'; + var size = 'font-size:' + size + 'px;'; + var height = 'height:' + height+'px;' + return color + size + height; + } + } + diff --git a/source/wx/xzs-student/component/iView/divider/index.wxss b/source/wx/xzs-student/component/iView/divider/index.wxss new file mode 100644 index 0000000..98827ab --- /dev/null +++ b/source/wx/xzs-student/component/iView/divider/index.wxss @@ -0,0 +1 @@ +.i-divider{width:100%;text-align:center;font-size:12px;position:relative;display:flex;align-items:center;justify-content:center}.i-divider-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-divider-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/drawer/index.js b/source/wx/xzs-student/component/iView/drawer/index.js new file mode 100644 index 0000000..adb248a --- /dev/null +++ b/source/wx/xzs-student/component/iView/drawer/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + properties: { + visible: { + type: Boolean, + value: false + }, + + mask: { + type: Boolean, + value: true + }, + + maskClosable: { + type: Boolean, + value: true + }, + + mode: { + type: String, + value: 'left' // left right + } + }, + data: {}, + methods: { + handleMaskClick() { + if (!this.data.maskClosable) { + return; + } + this.triggerEvent('close', {}); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/drawer/index.json b/source/wx/xzs-student/component/iView/drawer/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/drawer/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/drawer/index.wxml b/source/wx/xzs-student/component/iView/drawer/index.wxml new file mode 100644 index 0000000..67380d9 --- /dev/null +++ b/source/wx/xzs-student/component/iView/drawer/index.wxml @@ -0,0 +1,6 @@ + + + + + + diff --git a/source/wx/xzs-student/component/iView/drawer/index.wxss b/source/wx/xzs-student/component/iView/drawer/index.wxss new file mode 100644 index 0000000..2824713 --- /dev/null +++ b/source/wx/xzs-student/component/iView/drawer/index.wxss @@ -0,0 +1 @@ +.i-drawer{visibility:hidden}.i-drawer-show{visibility:visible}.i-drawer-show .i-drawer-mask{display:block;opacity:1}.i-drawer-show .i-drawer-container{opacity:1}.i-drawer-show.i-drawer-left .i-drawer-container,.i-drawer-show.i-drawer-right .i-drawer-container{transform:translate3d(0,-50%,0)}.i-drawer-mask{opacity:0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:6;background:rgba(0,0,0,.6);transition:all .3s ease-in-out}.i-drawer-container{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);transform-origin:center;transition:all .3s ease-in-out;z-index:7;opacity:0}.i-drawer-left .i-drawer-container{left:0;top:50%;transform:translate3d(-100%,-50%,0)}.i-drawer-right .i-drawer-container{right:0;top:50%;left:auto;transform:translate3d(100%,-50%,0)} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid-icon/index.js b/source/wx/xzs-student/component/iView/grid-icon/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-icon/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/source/wx/xzs-student/component/iView/grid-icon/index.json b/source/wx/xzs-student/component/iView/grid-icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/grid-icon/index.wxml b/source/wx/xzs-student/component/iView/grid-icon/index.wxml new file mode 100644 index 0000000..b9f9025 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid-icon/index.wxss b/source/wx/xzs-student/component/iView/grid-icon/index.wxss new file mode 100644 index 0000000..88c58a7 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-icon/index.wxss @@ -0,0 +1 @@ +.i-grid-icon{display:block;width:28px;height:28px;margin:0 auto}.i-grid-icon image{width:100%;height:100%} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid-item/index.js b/source/wx/xzs-student/component/iView/grid-item/index.js new file mode 100644 index 0000000..e492542 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-item/index.js @@ -0,0 +1,16 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid/index': { + type: 'parent' + }, + '../grid-icon/index': { + type: 'child' + } + }, + + data: { + width: '33.33%' + } +}); diff --git a/source/wx/xzs-student/component/iView/grid-item/index.json b/source/wx/xzs-student/component/iView/grid-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/grid-item/index.wxml b/source/wx/xzs-student/component/iView/grid-item/index.wxml new file mode 100644 index 0000000..8e133cd --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-item/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid-item/index.wxss b/source/wx/xzs-student/component/iView/grid-item/index.wxss new file mode 100644 index 0000000..ed0f395 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-item/index.wxss @@ -0,0 +1 @@ +.i-grid-item{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box;border-right:1rpx solid #e9eaec;border-bottom:1rpx solid #e9eaec} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid-label/index.js b/source/wx/xzs-student/component/iView/grid-label/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-label/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/source/wx/xzs-student/component/iView/grid-label/index.json b/source/wx/xzs-student/component/iView/grid-label/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-label/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/grid-label/index.wxml b/source/wx/xzs-student/component/iView/grid-label/index.wxml new file mode 100644 index 0000000..7ab5a8a --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-label/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid-label/index.wxss b/source/wx/xzs-student/component/iView/grid-label/index.wxss new file mode 100644 index 0000000..d45a990 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid-label/index.wxss @@ -0,0 +1 @@ +.i-grid-label{margin-top:5px;display:block;text-align:center;color:#1c2438;font-size:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid/index.js b/source/wx/xzs-student/component/iView/grid/index.js new file mode 100644 index 0000000..f9c9c40 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'child', + linked () { + this.setGridItemWidth(); + }, + linkChanged () { + this.setGridItemWidth(); + }, + unlinked () { + this.setGridItemWidth(); + } + } + }, + + methods: { + setGridItemWidth () { + const nodes = this.getRelationNodes('../grid-item/index'); + + // const len = nodes.length; + // if (len < 3) { + // nodes.forEach(item => { + // item.setData({ + // 'width': '33.33%' + // }); + // }); + // } else { + // const width = 100 / nodes.length; + // nodes.forEach(item => { + // item.setData({ + // 'width': width + '%' + // }); + // }); + // } + const width = 100 / nodes.length; + nodes.forEach(item => { + item.setData({ + 'width': width + '%' + }); + }); + } + }, + + ready () { + this.setGridItemWidth(); + } +}); diff --git a/source/wx/xzs-student/component/iView/grid/index.json b/source/wx/xzs-student/component/iView/grid/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/grid/index.wxml b/source/wx/xzs-student/component/iView/grid/index.wxml new file mode 100644 index 0000000..4c9143c --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/grid/index.wxss b/source/wx/xzs-student/component/iView/grid/index.wxss new file mode 100644 index 0000000..842fc98 --- /dev/null +++ b/source/wx/xzs-student/component/iView/grid/index.wxss @@ -0,0 +1 @@ +.i-grid{border-top:1rpx solid #e9eaec;border-left:1rpx solid #e9eaec;overflow:hidden} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/icon/index.js b/source/wx/xzs-student/component/iView/icon/index.js new file mode 100644 index 0000000..eb43ab9 --- /dev/null +++ b/source/wx/xzs-student/component/iView/icon/index.js @@ -0,0 +1,22 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + type: { + type: String, + value: '' + }, + custom: { + type: String, + value: '' + }, + size: { + type: Number, + value: 14 + }, + color: { + type: String, + value: '' + } + } +}); diff --git a/source/wx/xzs-student/component/iView/icon/index.json b/source/wx/xzs-student/component/iView/icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/icon/index.wxml b/source/wx/xzs-student/component/iView/icon/index.wxml new file mode 100644 index 0000000..d689bc5 --- /dev/null +++ b/source/wx/xzs-student/component/iView/icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/icon/index.wxss b/source/wx/xzs-student/component/iView/icon/index.wxss new file mode 100644 index 0000000..b18dcbb --- /dev/null +++ b/source/wx/xzs-student/component/iView/icon/index.wxss @@ -0,0 +1 @@ +@font-face{font-family:iconfont;src:url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff')}.i-icon{display:inline-block;font-family:iconfont;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}.i-icon-accessory:before{content:"\e6dd"}.i-icon-activity:before{content:"\e6de"}.i-icon-activity_fill:before{content:"\e6df"}.i-icon-add:before{content:"\e6e0"}.i-icon-addressbook_fill:before{content:"\e6e2"}.i-icon-addressbook:before{content:"\e6e3"}.i-icon-barrage_fill:before{content:"\e6e4"}.i-icon-barrage:before{content:"\e6e5"}.i-icon-browse_fill:before{content:"\e6e6"}.i-icon-browse:before{content:"\e6e7"}.i-icon-brush:before{content:"\e6e8"}.i-icon-brush_fill:before{content:"\e6e9"}.i-icon-businesscard_fill:before{content:"\e6ea"}.i-icon-businesscard:before{content:"\e6eb"}.i-icon-camera_fill:before{content:"\e6ec"}.i-icon-camera:before{content:"\e6ed"}.i-icon-clock_fill:before{content:"\e6ee"}.i-icon-clock:before{content:"\e6ef"}.i-icon-close:before{content:"\e6f0"}.i-icon-collection_fill:before{content:"\e6f1"}.i-icon-collection:before{content:"\e6f2"}.i-icon-computer_fill:before{content:"\e6f3"}.i-icon-computer:before{content:"\e6f4"}.i-icon-coordinates_fill:before{content:"\e6f5"}.i-icon-coordinates:before{content:"\e6f6"}.i-icon-coupons_fill:before{content:"\e6f7"}.i-icon-coupons:before{content:"\e6f8"}.i-icon-createtask_fill:before{content:"\e6f9"}.i-icon-createtask:before{content:"\e6fa"}.i-icon-customerservice_fill:before{content:"\e6fb"}.i-icon-customerservice:before{content:"\e6fc"}.i-icon-delete_fill:before{content:"\e6fd"}.i-icon-delete:before{content:"\e6fe"}.i-icon-document:before{content:"\e6ff"}.i-icon-document_fill:before{content:"\e700"}.i-icon-dynamic_fill:before{content:"\e701"}.i-icon-dynamic:before{content:"\e702"}.i-icon-editor:before{content:"\e703"}.i-icon-eit:before{content:"\e704"}.i-icon-emoji_fill:before{content:"\e705"}.i-icon-emoji:before{content:"\e706"}.i-icon-enter:before{content:"\e707"}.i-icon-enterinto:before{content:"\e708"}.i-icon-enterinto_fill:before{content:"\e709"}.i-icon-feedback_fill:before{content:"\e70a"}.i-icon-feedback:before{content:"\e70b"}.i-icon-flag_fill:before{content:"\e70c"}.i-icon-flag:before{content:"\e70d"}.i-icon-flashlight:before{content:"\e70e"}.i-icon-flashlight_fill:before{content:"\e70f"}.i-icon-fullscreen:before{content:"\e710"}.i-icon-group:before{content:"\e711"}.i-icon-group_fill:before{content:"\e712"}.i-icon-homepage_fill:before{content:"\e713"}.i-icon-homepage:before{content:"\e714"}.i-icon-integral_fill:before{content:"\e715"}.i-icon-integral:before{content:"\e716"}.i-icon-interactive_fill:before{content:"\e717"}.i-icon-interactive:before{content:"\e718"}.i-icon-keyboard:before{content:"\e719"}.i-icon-label:before{content:"\e71a"}.i-icon-label_fill:before{content:"\e71b"}.i-icon-like_fill:before{content:"\e71c"}.i-icon-like:before{content:"\e71d"}.i-icon-live_fill:before{content:"\e71e"}.i-icon-live:before{content:"\e71f"}.i-icon-lock_fill:before{content:"\e720"}.i-icon-lock:before{content:"\e721"}.i-icon-mail:before{content:"\e722"}.i-icon-mail_fill:before{content:"\e723"}.i-icon-message:before{content:"\e724"}.i-icon-message_fill:before{content:"\e725"}.i-icon-mine:before{content:"\e726"}.i-icon-mine_fill:before{content:"\e727"}.i-icon-mobilephone_fill:before{content:"\e728"}.i-icon-mobilephone:before{content:"\e729"}.i-icon-more:before{content:"\e72a"}.i-icon-narrow:before{content:"\e72b"}.i-icon-offline_fill:before{content:"\e72c"}.i-icon-offline:before{content:"\e72d"}.i-icon-other:before{content:"\e72e"}.i-icon-picture_fill:before{content:"\e72f"}.i-icon-picture:before{content:"\e730"}.i-icon-play:before{content:"\e731"}.i-icon-play_fill:before{content:"\e732"}.i-icon-playon_fill:before{content:"\e733"}.i-icon-playon:before{content:"\e734"}.i-icon-praise_fill:before{content:"\e735"}.i-icon-praise:before{content:"\e736"}.i-icon-prompt_fill:before{content:"\e737"}.i-icon-prompt:before{content:"\e738"}.i-icon-redpacket_fill:before{content:"\e739"}.i-icon-redpacket:before{content:"\e73a"}.i-icon-refresh:before{content:"\e73b"}.i-icon-remind_fill:before{content:"\e73c"}.i-icon-remind:before{content:"\e73d"}.i-icon-return:before{content:"\e73e"}.i-icon-right:before{content:"\e73f"}.i-icon-scan:before{content:"\e740"}.i-icon-send:before{content:"\e741"}.i-icon-service_fill:before{content:"\e742"}.i-icon-service:before{content:"\e743"}.i-icon-setup_fill:before{content:"\e744"}.i-icon-setup:before{content:"\e745"}.i-icon-share_fill:before{content:"\e746"}.i-icon-share:before{content:"\e747"}.i-icon-success_fill:before{content:"\e748"}.i-icon-success:before{content:"\e749"}.i-icon-suspend:before{content:"\e74a"}.i-icon-switch:before{content:"\e74b"}.i-icon-systemprompt_fill:before{content:"\e74c"}.i-icon-systemprompt:before{content:"\e74d"}.i-icon-tailor:before{content:"\e74e"}.i-icon-task:before{content:"\e74f"}.i-icon-task_fill:before{content:"\e750"}.i-icon-tasklist_fill:before{content:"\e751"}.i-icon-tasklist:before{content:"\e752"}.i-icon-time_fill:before{content:"\e753"}.i-icon-time:before{content:"\e754"}.i-icon-translation_fill:before{content:"\e755"}.i-icon-translation:before{content:"\e756"}.i-icon-trash:before{content:"\e757"}.i-icon-trash_fill:before{content:"\e758"}.i-icon-undo:before{content:"\e759"}.i-icon-video:before{content:"\e75a"}.i-icon-video_fill:before{content:"\e75b"}.i-icon-warning_fill:before{content:"\e75c"}.i-icon-warning:before{content:"\e75d"}.i-icon-search:before{content:"\e75e"}.i-icon-searchfill:before{content:"\e75f"}.i-icon-publishgoods_fill:before{content:"\e760"}.i-icon-shop_fill:before{content:"\e761"}.i-icon-transaction_fill:before{content:"\e762"}.i-icon-packup:before{content:"\e763"}.i-icon-unfold:before{content:"\e764"}.i-icon-financial_fill:before{content:"\e765"}.i-icon-commodity:before{content:"\e766"} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/index-item/index.js b/source/wx/xzs-student/component/iView/index-item/index.js new file mode 100644 index 0000000..ed818df --- /dev/null +++ b/source/wx/xzs-student/component/iView/index-item/index.js @@ -0,0 +1,32 @@ +Component({ + externalClasses: ['i-class'], + properties : { + name : { + type : String, + value : '' + } + }, + relations : { + '../index/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + currentName : '' + }, + methods: { + updateDataChange() { + const className = '.i-index-item'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + top : res.top, + height : res.height, + currentName : this.data.name + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/index-item/index.json b/source/wx/xzs-student/component/iView/index-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/index-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/index-item/index.wxml b/source/wx/xzs-student/component/iView/index-item/index.wxml new file mode 100644 index 0000000..8986c8d --- /dev/null +++ b/source/wx/xzs-student/component/iView/index-item/index.wxml @@ -0,0 +1,11 @@ + + {{name}} + + + + + + module.exports = { + + } + diff --git a/source/wx/xzs-student/component/iView/index-item/index.wxss b/source/wx/xzs-student/component/iView/index-item/index.wxss new file mode 100644 index 0000000..aeecf8d --- /dev/null +++ b/source/wx/xzs-student/component/iView/index-item/index.wxss @@ -0,0 +1 @@ +.i-index-item-header{height:30px;line-height:30px;background:#eee;font-size:14px;padding-left:10px;width:100%;box-sizing:border-box}.i-index-item-content{font-size:14px} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/index/index.js b/source/wx/xzs-student/component/iView/index/index.js new file mode 100644 index 0000000..c556f19 --- /dev/null +++ b/source/wx/xzs-student/component/iView/index/index.js @@ -0,0 +1,158 @@ +Component({ + externalClasses: ['i-class'], + properties : { + height : { + type : String, + value : '300' + }, + itemHeight : { + type : Number, + value : 18 + } + }, + relations : { + '../index-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + scrollTop : 0, + fixedData : [], + current : 0, + timer : null, + startTop : 0, + itemLength : 0, + currentName : '', + isTouches : false + }, + methods : { + loop(){}, + _updateDataChange( ){ + const indexItems = this.getRelationNodes('../index-item/index'); + const len = indexItems.length; + const fixedData = this.data.fixedData; + /* + * 使用函数节流限制重复去设置数组内容进而限制多次重复渲染 + * 暂时没有研究微信在渲染的时候是否会进行函数节流 + */ + if (len > 0) { + + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + + this.data.timer = setTimeout(()=>{ + const data = []; + indexItems.forEach((item) => { + if( item.data.name && fixedData.indexOf( item.data.name ) === -1 ){ + data.push(item.data.name); + item.updateDataChange(); + } + }) + this.setData({ + fixedData : data, + itemLength : indexItems.length + }) + //组件加载完成之后重新设置顶部高度 + this.setTouchStartVal(); + },0); + this.setData({ + timer : this.data.timer + }) + + } + }, + handlerScroll(event){ + const detail = event.detail; + const scrollTop = detail.scrollTop; + const indexItems = this.getRelationNodes('../index-item/index'); + indexItems.forEach((item,index)=>{ + let data = item.data; + let offset = data.top + data.height; + if( scrollTop < offset && scrollTop >= data.top ){ + this.setData({ + current : index, + currentName : data.currentName + }) + } + }) + }, + getCurrentItem(index){ + const indexItems = this.getRelationNodes('../index-item/index'); + let result = {}; + result = indexItems[index].data; + result.total = indexItems.length; + return result; + }, + triggerCallback(options){ + this.triggerEvent('change',options) + }, + handlerFixedTap(event){ + const eindex = event.currentTarget.dataset.index; + const item = this.getCurrentItem(eindex); + this.setData({ + scrollTop : item.top, + currentName : item.currentName, + isTouches : true + }) + this.triggerCallback({ + index : eindex, + current : item.currentName + }) + }, + handlerTouchMove(event){ + const data = this.data; + const touches = event.touches[0] || {}; + const pageY = touches.pageY; + const rest = pageY - data.startTop; + let index = Math.ceil( rest/data.itemHeight ); + index = index >= data.itemLength ? data.itemLength -1 : index; + const movePosition = this.getCurrentItem(index); + + /* + * 当touch选中的元素和当前currentName不相等的时候才震动一下 + * 微信震动事件 + */ + if( movePosition.name !== this.data.currentName ){ + wx.vibrateShort(); + } + + this.setData({ + scrollTop : movePosition.top, + currentName : movePosition.name, + isTouches : true + }) + + this.triggerCallback({ + index : index, + current : movePosition.name + }) + }, + handlerTouchEnd(){ + this.setData({ + isTouches : false + }) + }, + setTouchStartVal(){ + const className = '.i-index-fixed'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + startTop : res.top + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/index/index.json b/source/wx/xzs-student/component/iView/index/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/index/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/index/index.wxml b/source/wx/xzs-student/component/iView/index/index.wxml new file mode 100644 index 0000000..f83d847 --- /dev/null +++ b/source/wx/xzs-student/component/iView/index/index.wxml @@ -0,0 +1,38 @@ + + + + + + {{item}} + + + {{currentName}} + + + + module.exports = { + setScrollStyle : function(height){ + var units = ['%','px','rem','rpx','em','rem']; + var hasUnits = false; + for( var i = 0; i < units.length;i++ ){ + var u = units[i]; + if( height.indexOf( u ) > -1 ){ + hasUnits = true; + break; + } + } + return 'height:'+ ( hasUnits ? height : height+'px' ); + } + } + diff --git a/source/wx/xzs-student/component/iView/index/index.wxss b/source/wx/xzs-student/component/iView/index/index.wxss new file mode 100644 index 0000000..c0887c1 --- /dev/null +++ b/source/wx/xzs-student/component/iView/index/index.wxss @@ -0,0 +1 @@ +.i-index{width:100%;height:100%}.i-index-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-index-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px}.i-index-fixed{position:fixed;right:0;top:50%;z-index:10;padding-left:10px;transform:translateY(-50%)}.i-index-fixed-item{display:block;height:18px;line-height:18px;padding:0 5px;text-align:center;color:#2d8cf0;font-size:12px;border-radius:50%}.i-index-fixed-item-current{background:#2d8cf0;color:#fff}.i-index-tooltip{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:24px;border-radius:50%;width:80px;height:80px;line-height:80px;text-align:center} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/input-number/index.js b/source/wx/xzs-student/component/iView/input-number/index.js new file mode 100644 index 0000000..7a7d3f5 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input-number/index.js @@ -0,0 +1,101 @@ +function addNum (num1, num2) { + let sq1, sq2, m; + try { + sq1 = num1.toString().split('.')[1].length; + } + catch (e) { + sq1 = 0; + } + try { + sq2 = num2.toString().split('.')[1].length; + } + catch (e) { + sq2 = 0; + } + m = Math.pow(10, Math.max(sq1, sq2)); + return (Math.round(num1 * m) + Math.round(num2 * m)) / m; +} + +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: String, + value: { + type: Number, + value: 1 + }, + min: { + type: Number, + value: -Infinity + }, + max: { + type: Number, + value: Infinity + }, + step: { + type: Number, + value: 1 + } + }, + + + methods: { + handleChangeStep(e, type) { + const { dataset = {} } = e.currentTarget; + const { disabled } = dataset; + const { step } = this.data; + let { value } = this.data; + + if (disabled) return null; + + if (type === 'minus') { + value = addNum(value, -step); + } else if (type === 'plus') { + value = addNum(value, step); + } + + if (value < this.data.min || value > this.data.max) return null; + + this.handleEmit(value, type); + }, + + handleMinus(e) { + this.handleChangeStep(e, 'minus'); + }, + + handlePlus(e) { + this.handleChangeStep(e, 'plus'); + }, + + handleBlur(e) { + let { value } = e.detail; + const { min, max } = this.data; + + if (!value) { + setTimeout(() => { + this.handleEmit(value); + }, 16); + return; + } + + value = +value; + if (value > max) { + value = max; + } else if (value < min) { + value = min; + } + + this.handleEmit(value); + }, + handleEmit (value, type) { + const data = { + value: value + }; + if (type) data.type = type; + + this.triggerEvent('change', data); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/input-number/index.json b/source/wx/xzs-student/component/iView/input-number/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input-number/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/input-number/index.wxml b/source/wx/xzs-student/component/iView/input-number/index.wxml new file mode 100644 index 0000000..b3503f4 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input-number/index.wxml @@ -0,0 +1,5 @@ + + - + + + + diff --git a/source/wx/xzs-student/component/iView/input-number/index.wxss b/source/wx/xzs-student/component/iView/input-number/index.wxss new file mode 100644 index 0000000..f696bb4 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input-number/index.wxss @@ -0,0 +1 @@ +.i-input-number{color:#495060}.i-input-number view{display:inline-block;line-height:20px;padding:5px 0;text-align:center;min-width:40px;box-sizing:border-box;vertical-align:middle;font-size:12px;border:1rpx solid #dddee1}.i-input-number-minus{border-right:none;border-radius:2px 0 0 2px}.i-input-number-plus{border-left:none;border-radius:0 2px 2px 0}.i-input-number-text{border:1rpx solid #dddee1;display:inline-block;text-align:center;vertical-align:middle;height:30px;width:40px;min-height:auto;font-size:12px;line-height:30px}.i-input-number-disabled{border-color:#dddee1;color:#bbbec4;background:#f7f7f7} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/input/index.js b/source/wx/xzs-student/component/iView/input/index.js new file mode 100644 index 0000000..c9d4c41 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input/index.js @@ -0,0 +1,61 @@ +Component({ + behaviors: ['wx://form-field'], + + externalClasses: ['i-class'], + + properties: { + title: { + type: String + }, + // text || textarea || password || number + type: { + type: String, + value: 'text' + }, + disabled: { + type: Boolean, + value: false + }, + placeholder: { + type: String, + value: '' + }, + autofocus: { + type: Boolean, + value: false + }, + mode: { + type: String, + value: 'normal' + }, + right: { + type: Boolean, + value: false + }, + error: { + type: Boolean, + value: false + }, + maxlength: { + type: Number + } + }, + + methods: { + handleInputChange(event) { + const { detail = {} } = event; + const { value = '' } = detail; + this.setData({ value }); + + this.triggerEvent('change', event); + }, + + handleInputFocus(event) { + this.triggerEvent('focus', event); + }, + + handleInputBlur(event) { + this.triggerEvent('blur', event); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/input/index.json b/source/wx/xzs-student/component/iView/input/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/input/index.wxml b/source/wx/xzs-student/component/iView/input/index.wxml new file mode 100644 index 0000000..52b0ee3 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input/index.wxml @@ -0,0 +1,31 @@ + + {{ title }} + + + diff --git a/source/wx/xzs-student/component/iView/input/index.wxss b/source/wx/xzs-student/component/iView/input/index.wxss new file mode 100644 index 0000000..9e7e9c1 --- /dev/null +++ b/source/wx/xzs-student/component/iView/input/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)}.i-input{padding:7px 15px;color:#495060}.i-input-wrapped{margin:10px 15px;background-color:#fff}.i-input-wrapped::after{left:0;border-width:1px;border-radius:4px}.i-input-error{color:#ed3f14}.i-input-title{color:#495060;min-width:65px;padding-right:10px}.i-input-input{flex:1;line-height:1.6;padding:4px 0;min-height:22px;height:auto;font-size:14px}.i-input-placeholder{font-size:14px}.i-input-input-right{text-align:right}.i-input.i-input-wrapped::after{display:block}.i-input-wrapped.i-input-error::after{border-color:#ed3f14} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/load-more/index.js b/source/wx/xzs-student/component/iView/load-more/index.js new file mode 100644 index 0000000..d0cd46c --- /dev/null +++ b/source/wx/xzs-student/component/iView/load-more/index.js @@ -0,0 +1,14 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + loading: { + type: Boolean, + value: true + }, + tip: { + type: String, + value: '' + } + }, +}); diff --git a/source/wx/xzs-student/component/iView/load-more/index.json b/source/wx/xzs-student/component/iView/load-more/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/load-more/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/load-more/index.wxml b/source/wx/xzs-student/component/iView/load-more/index.wxml new file mode 100644 index 0000000..66571af --- /dev/null +++ b/source/wx/xzs-student/component/iView/load-more/index.wxml @@ -0,0 +1,8 @@ + + + + {{ tip }} + 正在加载 + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/load-more/index.wxss b/source/wx/xzs-student/component/iView/load-more/index.wxss new file mode 100644 index 0000000..ffe4026 --- /dev/null +++ b/source/wx/xzs-student/component/iView/load-more/index.wxss @@ -0,0 +1 @@ +.i-load-more{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.i-load-more-loading{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #e9eaec;border-color:#e9eaec #e9eaec #e9eaec #2d8cf0;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-load-more-tip{display:inline-block;vertical-align:middle;color:#495060}.i-load-more-line{border-top:1px solid #dddee1;display:flex;border-top:0}.i-load-more-line::before{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line::after{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line .i-load-more-tip{position:relative;top:-.9em;padding:0 .55em}.i-load-more-empty{width:4px;height:4px;border-radius:50%;background-color:#e5e5e5;display:inline-block;position:relative;vertical-align:0;top:-.16em}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/message/index.js b/source/wx/xzs-student/component/iView/message/index.js new file mode 100644 index 0000000..21a6d68 --- /dev/null +++ b/source/wx/xzs-student/component/iView/message/index.js @@ -0,0 +1,45 @@ +const default_data = { + visible: false, + content: '', + duration: 2, + type: 'default', // default || success || warning || error +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/message/index.json b/source/wx/xzs-student/component/iView/message/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/message/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/message/index.wxml b/source/wx/xzs-student/component/iView/message/index.wxml new file mode 100644 index 0000000..aecaad9 --- /dev/null +++ b/source/wx/xzs-student/component/iView/message/index.wxml @@ -0,0 +1,3 @@ + + {{ content }} + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/message/index.wxss b/source/wx/xzs-student/component/iView/message/index.wxss new file mode 100644 index 0000000..e6a79a6 --- /dev/null +++ b/source/wx/xzs-student/component/iView/message/index.wxss @@ -0,0 +1 @@ +.i-message{display:block;width:100%;min-height:32px;line-height:2.3;position:fixed;top:0;left:0;right:0;background:#2d8cf0;color:#fff;text-align:center;font-size:14px;z-index:1010;opacity:0;-webkit-transform:translateZ(0) translateY(-100%);transition:all .4s ease-in-out}.i-message-show{-webkit-transform:translateZ(0) translateY(0);opacity:1}.i-message-default{background:#2d8cf0}.i-message-success{background:#19be6b}.i-message-warning{background:#f90}.i-message-error{background:#ed3f14} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/modal/index.js b/source/wx/xzs-student/component/iView/modal/index.js new file mode 100644 index 0000000..ae178e5 --- /dev/null +++ b/source/wx/xzs-student/component/iView/modal/index.js @@ -0,0 +1,54 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask'], + + properties: { + visible: { + type: Boolean, + value: false + }, + title: { + type: String, + value: '' + }, + showOk: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: true + }, + okText: { + type: String, + value: '确定' + }, + cancelText: { + type: String, + value: '取消' + }, + // 按钮组,有此值时,不显示 ok 和 cancel 按钮 + actions: { + type: Array, + value: [] + }, + // horizontal || vertical + actionMode: { + type: String, + value: 'horizontal' + } + }, + + methods: { + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + handleClickOk () { + this.triggerEvent('ok'); + }, + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/modal/index.json b/source/wx/xzs-student/component/iView/modal/index.json new file mode 100644 index 0000000..50d034a --- /dev/null +++ b/source/wx/xzs-student/component/iView/modal/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "i-grid": "../grid/index", + "i-grid-item": "../grid-item/index", + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/modal/index.wxml b/source/wx/xzs-student/component/iView/modal/index.wxml new file mode 100644 index 0000000..11bcbd4 --- /dev/null +++ b/source/wx/xzs-student/component/iView/modal/index.wxml @@ -0,0 +1,40 @@ + + + + + {{ title }} + + + + + + + + + + + + + + + + + + + {{ cancelText }} + + + {{ okText }} + + + + + + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/modal/index.wxss b/source/wx/xzs-student/component/iView/modal/index.wxss new file mode 100644 index 0000000..d1c42fc --- /dev/null +++ b/source/wx/xzs-student/component/iView/modal/index.wxss @@ -0,0 +1 @@ +.i-modal{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;height:100%;z-index:1000;display:flex;outline:0;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;transform:translateZ(1px);opacity:0;visibility:hidden}.i-modal-show{visibility:visible;opacity:1}.i-modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:1000;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-modal-mask-show{opacity:1;visibility:visible}.i-modal-main{width:270px;position:relative}.i-modal-content{border-radius:7px;padding-top:15px;position:relative;background-color:#fff;border:0;background-clip:padding-box;text-align:center;height:100%;overflow:hidden}.i-modal-body{max-height:100px;margin-bottom:15px;font-size:14px;color:#80848f;height:100%;line-height:1.5;overflow:auto}.i-modal-title{padding:6px 15px 15px;margin:0;font-size:18px;line-height:1;color:#1c2438;text-align:center}.i-modal-actions{margin:0 1px}.i-modal-action-vertical{position:relative}.i-modal-action-vertical:after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-modal-grid{border-radius:0 0 7px 7px;border-left:none}.i-modal-grid-item,.i-modal-grid-item-last{padding:0;border-bottom:none}.i-modal-grid-item-last{border-right:none}.i-modal-btn-ok{color:#2d8cf0!important}.i-modal-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-modal-btn-text{display:inline-block;vertical-align:middle}.i-modal-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/notice-bar/index.js b/source/wx/xzs-student/component/iView/notice-bar/index.js new file mode 100644 index 0000000..7043dbd --- /dev/null +++ b/source/wx/xzs-student/component/iView/notice-bar/index.js @@ -0,0 +1,112 @@ +const VALID_MODE = ['closeable']; +const FONT_COLOR = '#f60'; +const BG_COLOR = '#fff7cc'; + +Component({ + externalClasses: ['i-class'], + + properties: { + closable: { + type: Boolean, + value: false + }, + icon: { + type: String, + value: '' + }, + loop: { + type: Boolean, + value: false + }, + // 背景颜色 + backgroundcolor: { + type: String, + value: '#fefcec' + }, + // 字体及图标颜色 + color: { + type: String, + value: '#f76a24' + }, + // 滚动速度 + speed: { + type: Number, + value: 1000 + } + }, + + data: { + show: true, + wrapWidth: 0, + width: 0, + duration: 0, + animation: null, + timer: null, + }, + detached() { + this.destroyTimer(); + }, + ready() { + if (this.data.loop) { + this.initAnimation(); + } + }, + + methods: { + initAnimation() { + wx.createSelectorQuery().in(this).select('.i-noticebar-content-wrap').boundingClientRect((wrapRect) => { + wx.createSelectorQuery().in(this).select('.i-noticebar-content').boundingClientRect((rect) => { + const duration = rect.width / 40 * this.data.speed; + const animation = wx.createAnimation({ + duration: duration, + timingFunction: "linear", + }); + this.setData({ + wrapWidth: wrapRect.width, + width: rect.width, + duration: duration, + animation: animation + }, () => { + this.startAnimation(); + }); + }).exec(); + + }).exec(); + }, + startAnimation() { + //reset + if (this.data.animation.option.transition.duration !== 0) { + this.data.animation.option.transition.duration = 0; + const resetAnimation = this.data.animation.translateX(this.data.wrapWidth).step(); + this.setData({ + animationData: resetAnimation.export() + }); + } + this.data.animation.option.transition.duration = this.data.duration; + const animationData = this.data.animation.translateX(-this.data.width).step(); + setTimeout(() => { + this.setData({ + animationData: animationData.export() + }); + }, 100); + const timer = setTimeout(() => { + this.startAnimation(); + }, this.data.duration); + this.setData({ + timer, + }); + }, + destroyTimer() { + if (this.data.timer) { + clearTimeout(this.data.timer); + } + }, + handleClose() { + this.destroyTimer(); + this.setData({ + show: false, + timer: null + }); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/notice-bar/index.json b/source/wx/xzs-student/component/iView/notice-bar/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/source/wx/xzs-student/component/iView/notice-bar/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/notice-bar/index.wxml b/source/wx/xzs-student/component/iView/notice-bar/index.wxml new file mode 100644 index 0000000..5de1e11 --- /dev/null +++ b/source/wx/xzs-student/component/iView/notice-bar/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/source/wx/xzs-student/component/iView/notice-bar/index.wxss b/source/wx/xzs-student/component/iView/notice-bar/index.wxss new file mode 100644 index 0000000..9ea2aa7 --- /dev/null +++ b/source/wx/xzs-student/component/iView/notice-bar/index.wxss @@ -0,0 +1 @@ +.i-noticebar{display:flex;height:72rpx;line-height:72rpx;font-size:14px;color:#f76a24;background-color:#fefcec;overflow:hidden}.i-noticebar-icon{display:flex;margin-left:30rpx;align-items:center}.i-noticebar-icon+view{margin-left:10rpx}.i-noticebar-operation{display:flex;margin-right:16rpx;align-items:center}.i-noticebar-content-wrap{position:relative;flex:1;margin:0 30rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.i-noticebar-content-wrap .i-noticebar-content{position:absolute;transition-duration:20s} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/page/index.js b/source/wx/xzs-student/component/iView/page/index.js new file mode 100644 index 0000000..e0f44c5 --- /dev/null +++ b/source/wx/xzs-student/component/iView/page/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + // button || number || pointer + mode: { + type: String, + value: 'button' + }, + current: { + type: Number, + value: 1 + }, + total: { + type: Number, + value: 0 + }, + // 是否隐藏数值 + simple: { + type: Boolean, + value: false + } + }, + + methods: { + handleChange (type) { + this.triggerEvent('change', { + type: type + }); + }, + handlePrev () { + this.handleChange('prev'); + }, + handleNext () { + this.handleChange('next'); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/page/index.json b/source/wx/xzs-student/component/iView/page/index.json new file mode 100644 index 0000000..7b1a128 --- /dev/null +++ b/source/wx/xzs-student/component/iView/page/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index" + } +} diff --git a/source/wx/xzs-student/component/iView/page/index.wxml b/source/wx/xzs-student/component/iView/page/index.wxml new file mode 100644 index 0000000..a84d47b --- /dev/null +++ b/source/wx/xzs-student/component/iView/page/index.wxml @@ -0,0 +1,14 @@ + + + + + + {{ current }}/{{total}} + + + + + + + + diff --git a/source/wx/xzs-student/component/iView/page/index.wxss b/source/wx/xzs-student/component/iView/page/index.wxss new file mode 100644 index 0000000..06c5c3b --- /dev/null +++ b/source/wx/xzs-student/component/iView/page/index.wxss @@ -0,0 +1 @@ +.i-page{display:block;width:100%;height:44px;overflow:hidden;box-sizing:border-box;position:relative}.i-page-prev{position:absolute;left:10px;top:0}.i-page-next{position:absolute;right:10px;top:0}.i-page-number{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-number-current{display:inline;color:#2d8cf0}.i-page-pointer{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-pointer-dot{display:inline-block;width:8px;height:8px;margin:0 2px;border-radius:50%;background:#bbbec4}.i-page-pointer-dot.current{background:#80848f}.i-page-button{display:inline-block;margin:0} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/panel/index.js b/source/wx/xzs-student/component/iView/panel/index.js new file mode 100644 index 0000000..b572da5 --- /dev/null +++ b/source/wx/xzs-student/component/iView/panel/index.js @@ -0,0 +1,19 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + title: { + type: String, + value: '' + }, + // 标题顶部距离 + hideTop: { + type: Boolean, + value: false + }, + hideBorder: { + type: Boolean, + value: false + } + } +}); diff --git a/source/wx/xzs-student/component/iView/panel/index.json b/source/wx/xzs-student/component/iView/panel/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/panel/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/panel/index.wxml b/source/wx/xzs-student/component/iView/panel/index.wxml new file mode 100644 index 0000000..aa91c20 --- /dev/null +++ b/source/wx/xzs-student/component/iView/panel/index.wxml @@ -0,0 +1,4 @@ + + {{ title }} + + diff --git a/source/wx/xzs-student/component/iView/panel/index.wxss b/source/wx/xzs-student/component/iView/panel/index.wxss new file mode 100644 index 0000000..edee3b8 --- /dev/null +++ b/source/wx/xzs-student/component/iView/panel/index.wxss @@ -0,0 +1 @@ +.i-panel{position:relative;overflow:hidden}.i-panel-title{font-size:14px;line-height:1;color:#1c2438;padding:20px 16px 10px}.i-panel-title-hide-top{padding-top:0}.i-panel-content{position:relative;background:#fff;overflow:hidden}.i-panel-content::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px;border-bottom-width:1px}.i-panel-without-border::after{border:0 none} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/progress/index.js b/source/wx/xzs-student/component/iView/progress/index.js new file mode 100644 index 0000000..b87b962 --- /dev/null +++ b/source/wx/xzs-student/component/iView/progress/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + percent: { + type: Number, + value: 0 + }, + // normal || active || wrong || success + status: { + type: String, + value: 'normal' + }, + strokeWidth: { + type: Number, + value: 10 + }, + hideInfo: { + type: Boolean, + value: false + } + } +}); diff --git a/source/wx/xzs-student/component/iView/progress/index.json b/source/wx/xzs-student/component/iView/progress/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/progress/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/progress/index.wxml b/source/wx/xzs-student/component/iView/progress/index.wxml new file mode 100644 index 0000000..09b5abc --- /dev/null +++ b/source/wx/xzs-student/component/iView/progress/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + {{ percent }}% + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/progress/index.wxss b/source/wx/xzs-student/component/iView/progress/index.wxss new file mode 100644 index 0000000..21b9d9c --- /dev/null +++ b/source/wx/xzs-student/component/iView/progress/index.wxss @@ -0,0 +1 @@ +.i-progress{display:inline-block;width:100%;font-size:12px;position:relative}.i-progress-outer{display:inline-block;width:100%;margin-right:0;padding-right:0;box-sizing:border-box}.i-progress-show-info .i-progress-outer{padding-right:55px;margin-right:-55px}.i-progress-inner{display:inline-block;width:100%;background-color:#f3f3f3;border-radius:100px;vertical-align:middle}.i-progress-bg{border-radius:100px;background-color:#2db7f5;transition:all .2s linear;position:relative}.i-progress-text{display:inline-block;margin-left:5px;text-align:left;font-size:1em;vertical-align:middle}.i-progress-active .i-progress-bg:before{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:10px;animation:i-progress-active 2s ease-in-out infinite}.i-progress-wrong .i-progress-bg{background-color:#ed3f14}.i-progress-wrong .i-progress-text{color:#ed3f14}.i-progress-success .i-progress-bg{background-color:#19be6b}.i-progress-success .i-progress-text{color:#19be6b}@keyframes i-progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/radio-group/index.js b/source/wx/xzs-student/component/iView/radio-group/index.js new file mode 100644 index 0000000..db76e41 --- /dev/null +++ b/source/wx/xzs-student/component/iView/radio-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../radio/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../radio/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val === item.data.value); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/radio-group/index.json b/source/wx/xzs-student/component/iView/radio-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/source/wx/xzs-student/component/iView/radio-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/source/wx/xzs-student/component/iView/radio-group/index.wxml b/source/wx/xzs-student/component/iView/radio-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/source/wx/xzs-student/component/iView/radio-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/source/wx/xzs-student/component/iView/radio-group/index.wxss b/source/wx/xzs-student/component/iView/radio-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/source/wx/xzs-student/component/iView/radio/index.js b/source/wx/xzs-student/component/iView/radio/index.js new file mode 100644 index 0000000..cb73db5 --- /dev/null +++ b/source/wx/xzs-student/component/iView/radio/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-radio'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../radio-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-radio-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + radioChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../radio-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-radio-left` : `${prefixCls}-radio-right`, + }); + } + } +}); diff --git a/source/wx/xzs-student/component/iView/radio/index.json b/source/wx/xzs-student/component/iView/radio/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/source/wx/xzs-student/component/iView/radio/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/source/wx/xzs-student/component/iView/radio/index.wxml b/source/wx/xzs-student/component/iView/radio/index.wxml new file mode 100644 index 0000000..1e20b79 --- /dev/null +++ b/source/wx/xzs-student/component/iView/radio/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/source/wx/xzs-student/component/iView/radio/index.wxss b/source/wx/xzs-student/component/iView/radio/index.wxss new file mode 100644 index 0000000..c52b211 --- /dev/null +++ b/source/wx/xzs-student/component/iView/radio/index.wxss @@ -0,0 +1 @@ +.i-radio-cell::after{display:block}.i-radio-radio-left{float:left}.i-radio-radio-right{float:right}.i-radio-radio{vertical-align:middle}.i-radio-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/rate/index.js b/source/wx/xzs-student/component/iView/rate/index.js new file mode 100644 index 0000000..a7e374a --- /dev/null +++ b/source/wx/xzs-student/component/iView/rate/index.js @@ -0,0 +1,69 @@ +Component({ + externalClasses: ['i-class'], + properties : { + count : { + type : Number, + value : 5 + }, + value : { + type : Number, + value : 0 + }, + disabled : { + type : Boolean, + value : false + }, + size : { + type : Number, + value : 20 + }, + name : { + type : String, + value : '' + } + }, + data : { + touchesStart : { + pageX : 0 + } + }, + methods : { + handleClick(e){ + const data = this.data; + if( data.disabled ){ + return; + } + const index = e.currentTarget.dataset.index; + this.triggerEvent('change',{ + index : index + 1 + }) + }, + handleTouchMove(e){ + const data = this.data; + if( data.disabled ){ + return; + } + if( !e.changedTouches[0] ){ + return; + } + const movePageX = e.changedTouches[0].pageX; + const space = movePageX - data.touchesStart.pageX; + + if( space <= 0 ){ + return; + } + let setIndex = Math.ceil( space/data.size ); + setIndex = setIndex > data.count ? data.count : setIndex ; + this.triggerEvent('change',{ + index : setIndex + }) + } + }, + ready(){ + const className = '.i-rate'; + var query = wx.createSelectorQuery().in(this) + query.select( className ).boundingClientRect((res)=>{ + this.data.touchesStart.pageX = res.left || 0; + }).exec() + } +}); diff --git a/source/wx/xzs-student/component/iView/rate/index.json b/source/wx/xzs-student/component/iView/rate/index.json new file mode 100644 index 0000000..687543c --- /dev/null +++ b/source/wx/xzs-student/component/iView/rate/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents":{ + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/rate/index.wxml b/source/wx/xzs-student/component/iView/rate/index.wxml new file mode 100644 index 0000000..d600660 --- /dev/null +++ b/source/wx/xzs-student/component/iView/rate/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + +var prefixCls = 'i-rate'; +module.exports = { + getCurrent : function( value,index ){ + if( index < value ){ + return prefixCls + '-current' + } + } +} + diff --git a/source/wx/xzs-student/component/iView/rate/index.wxss b/source/wx/xzs-student/component/iView/rate/index.wxss new file mode 100644 index 0000000..e889107 --- /dev/null +++ b/source/wx/xzs-student/component/iView/rate/index.wxss @@ -0,0 +1 @@ +.i-rate{margin:0;padding:0;font-size:20px;display:inline-block;vertical-align:middle;font-weight:400;font-style:normal}.i-rate-hide-input{display:none}.i-rate-star{display:inline-block;color:#e9e9e9}.i-rate-current{color:#f5a623}.i-rate-text{display:inline-block;vertical-align:middle;margin-left:6px;font-size:14px} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/row/index.js b/source/wx/xzs-student/component/iView/row/index.js new file mode 100644 index 0000000..3428387 --- /dev/null +++ b/source/wx/xzs-student/component/iView/row/index.js @@ -0,0 +1,9 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../col/index': { + type: 'child' + } + } +}); diff --git a/source/wx/xzs-student/component/iView/row/index.json b/source/wx/xzs-student/component/iView/row/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/row/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/row/index.wxml b/source/wx/xzs-student/component/iView/row/index.wxml new file mode 100644 index 0000000..fe8159e --- /dev/null +++ b/source/wx/xzs-student/component/iView/row/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/row/index.wxss b/source/wx/xzs-student/component/iView/row/index.wxss new file mode 100644 index 0000000..3b8b432 --- /dev/null +++ b/source/wx/xzs-student/component/iView/row/index.wxss @@ -0,0 +1 @@ +.i-row:after{content:"";display:table;clear:both} \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/slide/index.js b/source/wx/xzs-student/component/iView/slide/index.js new file mode 100644 index 0000000..a397f4f --- /dev/null +++ b/source/wx/xzs-student/component/iView/slide/index.js @@ -0,0 +1,15 @@ +Component({ + externalClasses: ['i-class'], + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + handleTap2(){ + console.log(event,1111111) + }, + handleTap3(){ + + } + } +}); diff --git a/source/wx/xzs-student/component/iView/slide/index.json b/source/wx/xzs-student/component/iView/slide/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/source/wx/xzs-student/component/iView/slide/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/source/wx/xzs-student/component/iView/slide/index.wxml b/source/wx/xzs-student/component/iView/slide/index.wxml new file mode 100644 index 0000000..a13c673 --- /dev/null +++ b/source/wx/xzs-student/component/iView/slide/index.wxml @@ -0,0 +1,4 @@ + + 1111 + + \ No newline at end of file diff --git a/source/wx/xzs-student/component/iView/slide/index.wxss b/source/wx/xzs-student/component/iView/slide/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/source/wx/xzs-student/component/iView/spin/index.js b/source/wx/xzs-student/component/iView/spin/index.js new file mode 100644 index 0000000..3297f81 --- /dev/null +++ b/source/wx/xzs-student/component/iView/spin/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: { + type: String, + value: 'default' + }, + fix: { + type: Boolean, + value: false + }, + fullscreen: { + type: Boolean, + value: false + }, + custom: { + type: Boolean, + value: false + } + } +}); diff --git a/source/wx/xzs-student/component/iView/spin/index.json b/source/wx/xzs-student/component/iView/spin/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/source/wx/xzs-student/component/iView/spin/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/source/wx/xzs-student/component/iView/spin/index.wxml b/source/wx/xzs-student/component/iView/spin/index.wxml new file mode 100644 index 0000000..8c25439 --- /dev/null +++ b/source/wx/xzs-student/component/iView/spin/index.wxml @@ -0,0 +1,6 @@ + +