From e8fe10b5fb8d4932bdc393ee5aae4d863156af47 Mon Sep 17 00:00:00 2001 From: limqhz Date: Sun, 21 Jun 2020 16:27:58 +0800 Subject: [PATCH] init project --- .gitignore | 14 + README.md | 39 ++ app.js | 13 + app.json | 41 ++ app.wxss | 17 + component/actionSheet/actionSheet.js | 40 ++ component/actionSheet/actionSheet.json | 4 + component/actionSheet/actionSheet.wxml | 7 + component/actionSheet/actionSheet.wxss | 32 ++ component/authorizedMask/authorizedMask.js | 104 ++++ component/authorizedMask/authorizedMask.json | 4 + component/authorizedMask/authorizedMask.wxml | 17 + component/authorizedMask/authorizedMask.wxss | 67 +++ component/confirmDialog/confirmDialog.js | 72 +++ component/confirmDialog/confirmDialog.json | 4 + component/confirmDialog/confirmDialog.wxml | 14 + component/confirmDialog/confirmDialog.wxss | 67 +++ component/header/header.js | 106 ++++ component/header/header.json | 4 + component/header/header.wxml | 11 + component/header/header.wxss | 48 ++ images/10@3x.png | Bin 0 -> 18009 bytes images/11@3x.png | Bin 0 -> 2258 bytes images/12@3x.png | Bin 0 -> 14635 bytes images/13@3x.png | Bin 0 -> 12649 bytes images/14@3x.png | Bin 0 -> 15801 bytes images/15@3x.png | Bin 0 -> 1176 bytes images/16@3x.png | Bin 0 -> 1322 bytes images/17@3x.png | Bin 0 -> 2003 bytes images/18@3x.png | Bin 0 -> 2228 bytes images/19@3x.png | Bin 0 -> 10964 bytes images/1@3x.png | Bin 0 -> 1203 bytes images/20@3x.png | Bin 0 -> 4577 bytes images/21@3x.png | Bin 0 -> 1340 bytes images/22@3x.png | Bin 0 -> 1149 bytes images/23@3x.png | Bin 0 -> 1125 bytes images/24.png | Bin 0 -> 1868 bytes images/24@3x.png | Bin 0 -> 1623 bytes images/25@3x.png | Bin 0 -> 2071 bytes images/26@3x.png | Bin 0 -> 4843 bytes images/27@3x.png | Bin 0 -> 2313 bytes images/28@3x.png | Bin 0 -> 3468 bytes images/29@3x.png | Bin 0 -> 1867 bytes images/2@3x.png | Bin 0 -> 2305 bytes images/30@3x.png | Bin 0 -> 6326 bytes images/31@3x.png | Bin 0 -> 4487 bytes images/32@3x.png | Bin 0 -> 1962 bytes images/33@3x.png | Bin 0 -> 2121 bytes images/34@3x.png | Bin 0 -> 2550 bytes images/35@3x.png | Bin 0 -> 1474 bytes images/36@3x.png | Bin 0 -> 2109 bytes images/37@3x.png | Bin 0 -> 1562 bytes images/38@3x.png | Bin 0 -> 1457 bytes images/39@3x.png | Bin 0 -> 2219 bytes images/3@3x.png | Bin 0 -> 1556 bytes images/40@3x.png | Bin 0 -> 1537 bytes images/41@3x.png | Bin 0 -> 2325 bytes images/42.png | Bin 0 -> 936 bytes images/42@3x.png | Bin 0 -> 1818 bytes images/43.png | Bin 0 -> 1035 bytes images/43@3x.png | Bin 0 -> 1335 bytes images/44@3x.png | Bin 0 -> 1328 bytes images/45@3x.png | Bin 0 -> 17872 bytes images/46@3x.png | Bin 0 -> 1213 bytes images/47@3x.png | Bin 0 -> 6050 bytes images/48@3x.png | Bin 0 -> 1282 bytes images/49@3x.png | Bin 0 -> 1291 bytes images/4@3x.png | Bin 0 -> 1651 bytes images/5@3x.png | Bin 0 -> 1679 bytes images/61.png | Bin 0 -> 20859 bytes images/6@3x.png | Bin 0 -> 104532 bytes images/7@3x.png | Bin 0 -> 19069 bytes images/8@3x.png | Bin 0 -> 19989 bytes images/9@3x.png | Bin 0 -> 17890 bytes images/avatar.png | Bin 0 -> 3499 bytes images/back.png | Bin 0 -> 1656 bytes images/noContent.png | Bin 0 -> 9176 bytes pages/about/index.js | 79 +++ pages/about/index.json | 5 + pages/about/index.wxml | 6 + pages/about/index.wxss | 23 + pages/agreement/index.js | 78 +++ pages/agreement/index.json | 6 + pages/agreement/index.wxml | 5 + pages/agreement/index.wxss | 17 + pages/basketballGym/index.js | 292 +++++++++++ pages/basketballGym/index.json | 7 + pages/basketballGym/index.wxml | 148 ++++++ pages/basketballGym/index.wxss | 392 +++++++++++++++ pages/bookClasses/index.js | 196 ++++++++ pages/bookClasses/index.json | 6 + pages/bookClasses/index.wxml | 54 ++ pages/bookClasses/index.wxss | 226 +++++++++ pages/bookClassesDetail/index.js | 166 ++++++ pages/bookClassesDetail/index.json | 5 + pages/bookClassesDetail/index.wxml | 97 ++++ pages/bookClassesDetail/index.wxss | 212 ++++++++ pages/confirmOrder/index.js | 333 ++++++++++++ pages/confirmOrder/index.json | 7 + pages/confirmOrder/index.wxml | 87 ++++ pages/confirmOrder/index.wxss | 185 +++++++ pages/facialCapturing/index.js | 172 +++++++ pages/facialCapturing/index.json | 6 + pages/facialCapturing/index.wxml | 34 ++ pages/facialCapturing/index.wxss | 105 ++++ pages/gymnasium/index.js | 227 +++++++++ pages/gymnasium/index.json | 7 + pages/gymnasium/index.wxml | 96 ++++ pages/gymnasium/index.wxss | 290 +++++++++++ pages/home/index.js | 502 +++++++++++++++++++ pages/home/index.json | 6 + pages/home/index.wxml | 111 ++++ pages/home/index.wxss | 244 +++++++++ pages/index/index.js | 77 +++ pages/index/index.json | 1 + pages/index/index.wxml | 4 + pages/index/index.wxss | 1 + pages/login/index.js | 162 ++++++ pages/login/index.json | 5 + pages/login/index.wxml | 15 + pages/login/index.wxss | 78 +++ pages/loginIndex/index.js | 174 +++++++ pages/loginIndex/index.json | 5 + pages/loginIndex/index.wxml | 16 + pages/loginIndex/index.wxss | 72 +++ pages/mine/index.js | 162 ++++++ pages/mine/index.json | 6 + pages/mine/index.wxml | 57 +++ pages/mine/index.wxss | 125 +++++ pages/myAccount/index.js | 171 +++++++ pages/myAccount/index.json | 7 + pages/myAccount/index.wxml | 32 ++ pages/myAccount/index.wxss | 105 ++++ pages/myBills/index.js | 105 ++++ pages/myBills/index.json | 7 + pages/myBills/index.wxml | 28 ++ pages/myBills/index.wxss | 61 +++ pages/myBookings/index.js | 226 +++++++++ pages/myBookings/index.json | 7 + pages/myBookings/index.wxml | 64 +++ pages/myBookings/index.wxss | 117 +++++ pages/myBookingsList/index.js | 131 +++++ pages/myBookingsList/index.json | 7 + pages/myBookingsList/index.wxml | 44 ++ pages/myBookingsList/index.wxss | 134 +++++ pages/myMembershipCard/index.js | 142 ++++++ pages/myMembershipCard/index.json | 6 + pages/myMembershipCard/index.wxml | 40 ++ pages/myMembershipCard/index.wxss | 182 +++++++ pages/notice/index.js | 84 ++++ pages/notice/index.json | 6 + pages/notice/index.wxml | 12 + pages/notice/index.wxss | 38 ++ pages/questions/index.js | 93 ++++ pages/questions/index.json | 6 + pages/questions/index.wxml | 14 + pages/questions/index.wxss | 40 ++ pages/register/index.js | 315 ++++++++++++ pages/register/index.json | 6 + pages/register/index.wxml | 46 ++ pages/register/index.wxss | 67 +++ pages/sportsGroundList/index.js | 178 +++++++ pages/sportsGroundList/index.json | 7 + pages/sportsGroundList/index.wxml | 42 ++ pages/sportsGroundList/index.wxss | 96 ++++ pages/userInfo/index.js | 180 +++++++ pages/userInfo/index.json | 6 + pages/userInfo/index.wxml | 50 ++ pages/userInfo/index.wxss | 61 +++ pages/withdrawal/index.js | 178 +++++++ pages/withdrawal/index.json | 5 + pages/withdrawal/index.wxml | 27 + pages/withdrawal/index.wxss | 79 +++ project.config.json | 58 +++ sitemap.json | 7 + utils/api.js | 435 ++++++++++++++++ utils/pay.js | 63 +++ utils/util.js | 32 ++ 178 files changed, 9964 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 component/actionSheet/actionSheet.js create mode 100644 component/actionSheet/actionSheet.json create mode 100644 component/actionSheet/actionSheet.wxml create mode 100644 component/actionSheet/actionSheet.wxss create mode 100644 component/authorizedMask/authorizedMask.js create mode 100644 component/authorizedMask/authorizedMask.json create mode 100644 component/authorizedMask/authorizedMask.wxml create mode 100644 component/authorizedMask/authorizedMask.wxss create mode 100644 component/confirmDialog/confirmDialog.js create mode 100644 component/confirmDialog/confirmDialog.json create mode 100644 component/confirmDialog/confirmDialog.wxml create mode 100644 component/confirmDialog/confirmDialog.wxss create mode 100644 component/header/header.js create mode 100644 component/header/header.json create mode 100644 component/header/header.wxml create mode 100644 component/header/header.wxss create mode 100644 images/10@3x.png create mode 100644 images/11@3x.png create mode 100644 images/12@3x.png create mode 100644 images/13@3x.png create mode 100644 images/14@3x.png create mode 100644 images/15@3x.png create mode 100644 images/16@3x.png create mode 100644 images/17@3x.png create mode 100644 images/18@3x.png create mode 100644 images/19@3x.png create mode 100644 images/1@3x.png create mode 100644 images/20@3x.png create mode 100644 images/21@3x.png create mode 100644 images/22@3x.png create mode 100644 images/23@3x.png create mode 100644 images/24.png create mode 100644 images/24@3x.png create mode 100644 images/25@3x.png create mode 100644 images/26@3x.png create mode 100644 images/27@3x.png create mode 100644 images/28@3x.png create mode 100644 images/29@3x.png create mode 100644 images/2@3x.png create mode 100644 images/30@3x.png create mode 100644 images/31@3x.png create mode 100644 images/32@3x.png create mode 100644 images/33@3x.png create mode 100644 images/34@3x.png create mode 100644 images/35@3x.png create mode 100644 images/36@3x.png create mode 100644 images/37@3x.png create mode 100644 images/38@3x.png create mode 100644 images/39@3x.png create mode 100644 images/3@3x.png create mode 100644 images/40@3x.png create mode 100644 images/41@3x.png create mode 100644 images/42.png create mode 100644 images/42@3x.png create mode 100644 images/43.png create mode 100644 images/43@3x.png create mode 100644 images/44@3x.png create mode 100644 images/45@3x.png create mode 100644 images/46@3x.png create mode 100644 images/47@3x.png create mode 100644 images/48@3x.png create mode 100644 images/49@3x.png create mode 100644 images/4@3x.png create mode 100644 images/5@3x.png create mode 100644 images/61.png create mode 100644 images/6@3x.png create mode 100644 images/7@3x.png create mode 100644 images/8@3x.png create mode 100644 images/9@3x.png create mode 100644 images/avatar.png create mode 100644 images/back.png create mode 100644 images/noContent.png create mode 100644 pages/about/index.js create mode 100644 pages/about/index.json create mode 100644 pages/about/index.wxml create mode 100644 pages/about/index.wxss create mode 100644 pages/agreement/index.js create mode 100644 pages/agreement/index.json create mode 100644 pages/agreement/index.wxml create mode 100644 pages/agreement/index.wxss create mode 100644 pages/basketballGym/index.js create mode 100644 pages/basketballGym/index.json create mode 100644 pages/basketballGym/index.wxml create mode 100644 pages/basketballGym/index.wxss create mode 100644 pages/bookClasses/index.js create mode 100644 pages/bookClasses/index.json create mode 100644 pages/bookClasses/index.wxml create mode 100644 pages/bookClasses/index.wxss create mode 100644 pages/bookClassesDetail/index.js create mode 100644 pages/bookClassesDetail/index.json create mode 100644 pages/bookClassesDetail/index.wxml create mode 100644 pages/bookClassesDetail/index.wxss create mode 100644 pages/confirmOrder/index.js create mode 100644 pages/confirmOrder/index.json create mode 100644 pages/confirmOrder/index.wxml create mode 100644 pages/confirmOrder/index.wxss create mode 100644 pages/facialCapturing/index.js create mode 100644 pages/facialCapturing/index.json create mode 100644 pages/facialCapturing/index.wxml create mode 100644 pages/facialCapturing/index.wxss create mode 100644 pages/gymnasium/index.js create mode 100644 pages/gymnasium/index.json create mode 100644 pages/gymnasium/index.wxml create mode 100644 pages/gymnasium/index.wxss create mode 100644 pages/home/index.js create mode 100644 pages/home/index.json create mode 100644 pages/home/index.wxml create mode 100644 pages/home/index.wxss create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.wxml create mode 100644 pages/index/index.wxss create mode 100644 pages/login/index.js create mode 100644 pages/login/index.json create mode 100644 pages/login/index.wxml create mode 100644 pages/login/index.wxss create mode 100644 pages/loginIndex/index.js create mode 100644 pages/loginIndex/index.json create mode 100644 pages/loginIndex/index.wxml create mode 100644 pages/loginIndex/index.wxss create mode 100644 pages/mine/index.js create mode 100644 pages/mine/index.json create mode 100644 pages/mine/index.wxml create mode 100644 pages/mine/index.wxss create mode 100644 pages/myAccount/index.js create mode 100644 pages/myAccount/index.json create mode 100644 pages/myAccount/index.wxml create mode 100644 pages/myAccount/index.wxss create mode 100644 pages/myBills/index.js create mode 100644 pages/myBills/index.json create mode 100644 pages/myBills/index.wxml create mode 100644 pages/myBills/index.wxss create mode 100644 pages/myBookings/index.js create mode 100644 pages/myBookings/index.json create mode 100644 pages/myBookings/index.wxml create mode 100644 pages/myBookings/index.wxss create mode 100644 pages/myBookingsList/index.js create mode 100644 pages/myBookingsList/index.json create mode 100644 pages/myBookingsList/index.wxml create mode 100644 pages/myBookingsList/index.wxss create mode 100644 pages/myMembershipCard/index.js create mode 100644 pages/myMembershipCard/index.json create mode 100644 pages/myMembershipCard/index.wxml create mode 100644 pages/myMembershipCard/index.wxss create mode 100644 pages/notice/index.js create mode 100644 pages/notice/index.json create mode 100644 pages/notice/index.wxml create mode 100644 pages/notice/index.wxss create mode 100644 pages/questions/index.js create mode 100644 pages/questions/index.json create mode 100644 pages/questions/index.wxml create mode 100644 pages/questions/index.wxss create mode 100644 pages/register/index.js create mode 100644 pages/register/index.json create mode 100644 pages/register/index.wxml create mode 100644 pages/register/index.wxss create mode 100644 pages/sportsGroundList/index.js create mode 100644 pages/sportsGroundList/index.json create mode 100644 pages/sportsGroundList/index.wxml create mode 100644 pages/sportsGroundList/index.wxss create mode 100644 pages/userInfo/index.js create mode 100644 pages/userInfo/index.json create mode 100644 pages/userInfo/index.wxml create mode 100644 pages/userInfo/index.wxss create mode 100644 pages/withdrawal/index.js create mode 100644 pages/withdrawal/index.json create mode 100644 pages/withdrawal/index.wxml create mode 100644 pages/withdrawal/index.wxss create mode 100644 project.config.json create mode 100644 sitemap.json create mode 100644 utils/api.js create mode 100644 utils/pay.js create mode 100644 utils/util.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c16e483 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# Windows +[Dd]esktop.ini +Thumbs.db +$RECYCLE.BIN/ + +# macOS +.DS_Store +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes + +# Node.js +node_modules/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0e1aca5 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# venue_wx + +#### 介绍 +{**以下是码云平台说明,您可以替换此简介** +码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 +无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} + +#### 软件架构 +软件架构说明 + + +#### 安装教程 + +1. xxxx +2. xxxx +3. xxxx + +#### 使用说明 + +1. xxxx +2. xxxx +3. xxxx + +#### 参与贡献 + +1. Fork 本仓库 +2. 新建 Feat_xxx 分支 +3. 提交代码 +4. 新建 Pull Request + + +#### 码云特技 + +1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md +2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) +3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 +4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 +5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) +6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/app.js b/app.js new file mode 100644 index 0000000..fe7a95b --- /dev/null +++ b/app.js @@ -0,0 +1,13 @@ +//app.js +import api from './utils/api.js'; +import pay from './utils/pay.js'; +App({ + onLaunch: function () { + + }, + globalData: { + userInfo: null + }, + $api: api, + $pay: pay +}) \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..7bed22d --- /dev/null +++ b/app.json @@ -0,0 +1,41 @@ +{ + "pages": [ + "pages/home/index", + "pages/about/index", + "pages/agreement/index", + "pages/basketballGym/index", + "pages/bookClasses/index", + "pages/bookClassesDetail/index", + "pages/confirmOrder/index", + "pages/facialCapturing/index", + "pages/gymnasium/index", + "pages/login/index", + "pages/mine/index", + "pages/myAccount/index", + "pages/myBills/index", + "pages/myBookings/index", + "pages/myBookingsList/index", + "pages/myMembershipCard/index", + "pages/notice/index", + "pages/questions/index", + "pages/register/index", + "pages/sportsGroundList/index", + "pages/userInfo/index", + "pages/loginIndex/index", + "pages/withdrawal/index" + ], + "window": { + "backgroundTextStyle": "dark", + "navigationBarBackgroundColor": "#1a191e", + "navigationBarTitleText": "智慧云馆", + "navigationBarTextStyle": "white", + "navigationStyle": "custom", + "backgroundColor": "#252330" + }, + "sitemapLocation": "sitemap.json", + "permission": { + "scope.userLocation": { + "desc": "需要获取您的地理位置,请确认授权,否则地图功能将无法使用" + } + } +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..ac71e7c --- /dev/null +++ b/app.wxss @@ -0,0 +1,17 @@ +/**app.wxss**/ + +html,body { + background: #252330; +} + +page { + position: relative; + background: #252330; +} + +.container { + position: relative; + min-height: calc(100vh - 130rpx); + padding-top: 130rpx; + background: #252330; +} diff --git a/component/actionSheet/actionSheet.js b/component/actionSheet/actionSheet.js new file mode 100644 index 0000000..05cd4f6 --- /dev/null +++ b/component/actionSheet/actionSheet.js @@ -0,0 +1,40 @@ +// component/actionSheet/actionSheet.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + value:{ + type: Array, + value: [] + } + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + // 点击取消 + cancel() { + this.triggerEvent('cancel', {}, {}); + }, + + // 点击选择 + click(e) { + let index = e.currentTarget.dataset.index; + this.triggerEvent('selected', this.data.value[index], {}); + }, + + // 禁止背景滚动 + unMove() { + return; + } + } +}) diff --git a/component/actionSheet/actionSheet.json b/component/actionSheet/actionSheet.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/component/actionSheet/actionSheet.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/component/actionSheet/actionSheet.wxml b/component/actionSheet/actionSheet.wxml new file mode 100644 index 0000000..61e3edc --- /dev/null +++ b/component/actionSheet/actionSheet.wxml @@ -0,0 +1,7 @@ + + + + {{item.label}} + 取消 + + diff --git a/component/actionSheet/actionSheet.wxss b/component/actionSheet/actionSheet.wxss new file mode 100644 index 0000000..69654e2 --- /dev/null +++ b/component/actionSheet/actionSheet.wxss @@ -0,0 +1,32 @@ +/* component/actionSheet/actionSheet.wxss */ + +.popup-box { + position: fixed; + top: 0; + left: 0; + display: flex; + align-items: flex-end; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.6); + z-index: 1; +} + +.popup-box .body { + flex: 1; + background: #f5f5f5; +} + +.popup-box .body .cell { + width: 100%; + height: 80rpx; + margin-bottom: 2rpx; + line-height: 80rpx; + text-align: center; + font-size: 26rpx; + background: #FFF; +} + +.popup-box .body .cell.cancel { + margin-top: 8rpx; +} \ No newline at end of file diff --git a/component/authorizedMask/authorizedMask.js b/component/authorizedMask/authorizedMask.js new file mode 100644 index 0000000..292ad9b --- /dev/null +++ b/component/authorizedMask/authorizedMask.js @@ -0,0 +1,104 @@ +// pages/authorizedMask/authorizedMask.js +const app = getApp(); +Component({ + /** + * 组件的属性列表 + */ + properties: { + isSetting: { + type: Boolean, + value: false + }, + content: { + type: String, + value: '使用小程序需要您授权登录' + }, + isCancel: { + type: Boolean, + value: false + }, + /** + * Only: 只有一個 + * TwainCance: 兩個帶取消 + * */ + type: { + type: String, + value: 'Only' + } + }, + + /** + * 组件的初始数据 + */ + data: { + showBox: true, + }, + + /** + * 组件的方法列表 + */ + methods: { + stopSlide() { + return; + }, + + wxTap() { + this.setData({ + showBox: false + }) + }, + // 微信登录 + wxLogin(e) { + if (e.detail.errMsg === 'getUserInfo:fail auth deny') { + this.setData({ + showBox: true + }) + return + } + this.setData({ + showBox: false + }) + let that = this; + wx.login({ + success: function(res) { + if (res.code) { + app.$api.login({ + avatar: e.detail.userInfo.avatarUrl, + code: res.code, + nickname: e.detail.userInfo.nickName, + }).then(res => { + wx.setStorageSync('access_token', res.data.accessToken); + wx.setStorageSync('userInfo', e.detail.userInfo); + that.triggerEvent('loginSuccess', {}, {}); + }) + } else { + wx.showToast({ + title: '登录失败', + icon: 'none', + }) + } + }, + fail: function(res) { + wx.showToast({ + title: '登录失败', + icon: 'none', + }) + }, + }) + }, + // 取消 + cance() { + this.triggerEvent('cance', {}, {}); + }, + + // 打开设置 + setSuccess: function (e) { + this.triggerEvent('setsuccess', e.detail, {}); + // if (e.detail.authSetting["scope.userLocation"]) {//如果打开了地理位置,就会为true + // this.setData({ + // showFlag: true + // }) + // } + } + } +}) \ No newline at end of file diff --git a/component/authorizedMask/authorizedMask.json b/component/authorizedMask/authorizedMask.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/component/authorizedMask/authorizedMask.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/component/authorizedMask/authorizedMask.wxml b/component/authorizedMask/authorizedMask.wxml new file mode 100644 index 0000000..8d45b2f --- /dev/null +++ b/component/authorizedMask/authorizedMask.wxml @@ -0,0 +1,17 @@ + + + + + + + + {{content}} + + + + + + + \ No newline at end of file diff --git a/component/authorizedMask/authorizedMask.wxss b/component/authorizedMask/authorizedMask.wxss new file mode 100644 index 0000000..fb60505 --- /dev/null +++ b/component/authorizedMask/authorizedMask.wxss @@ -0,0 +1,67 @@ +/* pages/authorizedMask/authorizedMask.wxss */ + +.auth-bg { + position: fixed; + top: 0; + left: 0; + display: flex; + justify-content: center; + align-items: center; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.6); + z-index: 1001; +} + +.auth-box { + position: relative; + width: 70%; + height: 350rpx; + background: #252330; + border-radius: 10rpx; + color: #989898; +} + +.message { + display: flex; + justify-content: center; + align-items: center; + height: 250rpx; + /* border-bottom: 2rpx solid #EBEEF5; */ + font-size: 28rpx; +} + +.btn-bg>button { + width: 60%; + height: 70rpx; + line-height: 70rpx; + font-size: 26rpx; + color: #252330; + border-radius: 35rpx; + background: #ffc129; +} + +.btn-bg.btn-tow { + display: flex; +} + +button::after { + border: none; + border-radius: 0; +} + +.close { + position: absolute; + top: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + width: 60rpx; + height: 60rpx; +} + +.close>image { + width: 26rpx; + height: 26rpx; +} diff --git a/component/confirmDialog/confirmDialog.js b/component/confirmDialog/confirmDialog.js new file mode 100644 index 0000000..bb2e9a3 --- /dev/null +++ b/component/confirmDialog/confirmDialog.js @@ -0,0 +1,72 @@ +// component/confirmDialog/confirmDialog.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + title: { + type: String, + value: '' + }, + message: { + type: String, + value: '' + }, + confirmBtnTitle: { + type: String, + value: '确认' + }, + cancelBtnTitle: { + type: String, + value: '取消' + }, + showCancel: { + type: Boolean, + value: true + }, + isAuth: { + type: Boolean, + value: false + }, + isUserInfo: { + type: Boolean, + value: false + } + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + unMove() { + return; + }, + + // 点击取消 + cancel() { + this.triggerEvent('cancelselect', {}, {}) + }, + + // 点击确认 + confirm() { + this.triggerEvent('confirmselect', {}, {}) + }, + + // 点击编辑授权 + openSetting(e) { + this.triggerEvent('opensetting', e.detail, {}); + }, + + // 点击获取个人信息 + openUserInfo(e) { + this.triggerEvent('getuserinfo', e.detail, {}); + } + } +}) diff --git a/component/confirmDialog/confirmDialog.json b/component/confirmDialog/confirmDialog.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/component/confirmDialog/confirmDialog.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/component/confirmDialog/confirmDialog.wxml b/component/confirmDialog/confirmDialog.wxml new file mode 100644 index 0000000..f56874c --- /dev/null +++ b/component/confirmDialog/confirmDialog.wxml @@ -0,0 +1,14 @@ + + + + {{title}} + {{message}} + + + + + + + + + \ No newline at end of file diff --git a/component/confirmDialog/confirmDialog.wxss b/component/confirmDialog/confirmDialog.wxss new file mode 100644 index 0000000..889d2d6 --- /dev/null +++ b/component/confirmDialog/confirmDialog.wxss @@ -0,0 +1,67 @@ +/* component/confirmDialog/confirmDialog.wxss */ + +.box { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.6); + z-index: 1001; +} + +.box .body { + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + width: 72%; + min-height: 300rpx; + border-radius: 20rpx; + text-align: center; + background: #252330; +} + +.box .body .title { + margin: 40rpx 0; + font-size: 32rpx; + line-height: 32rpx; + font-weight: bold; + color: #fff; +} + +.box .body .message { + flex: 1; + margin: 0 20rpx 60rpx 20rpx; + font-size: 26rpx; + color: rgba(255, 255, 255, 0.6); +} + +.box .body .btn-box { + display: flex; + width: 100%; + border-top: 2rpx solid #3d3b45; +} + +.box .body .btn-box .line { + width: 2rpx; + height: 90rpx; + background: #3d3b45; +} + +.box .body .btn-box>button { + flex: 1; + height: 90rpx; + background: none; + font-size: 32rpx; + color: #ffda2e; + line-height: 90rpx; + text-align: center; +} + +.box .body .btn-box>button::after { + border: none; +} diff --git a/component/header/header.js b/component/header/header.js new file mode 100644 index 0000000..712148a --- /dev/null +++ b/component/header/header.js @@ -0,0 +1,106 @@ +// components/header/header.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + title: { + type: String, + value: '智慧云馆' + }, + icon: { + type: String, + value: '../../images/back.png' + }, + showIcon: { + type: Boolean, + value: true + }, + isGoHome: { + type: Boolean, + value: false + }, + isHistory: { + type: Boolean, + value: false + }, + isLogin: { + type: Boolean, + value: false + }, + }, + + /** + * 组件的初始数据 + */ + data: { + unIcon: false + }, + + ready() { + let pages = getCurrentPages(); + this.setData({ + showIcon: pages.length > 1, + + }) + // console.log(pages); + // if (this.isLogin()) { + // this.setData({ + // unIcon: pages[pages.length - 2].data.gohome + // }) + // } + // pages/register/index + // pages/facialCapturing/index options isPass 1 + }, + + /** + * 组件的方法列表 + */ + methods: { + isLogin() { + let pages = getCurrentPages(); + let currentPage = pages[pages.length - 1]; + let perPage = pages[pages.length - 2] + if (currentPage.route == 'pages/login/index') { + return true; + } + if (currentPage.route == 'pages/register/index') { + return true; + } + if (currentPage.route == 'pages/facialCapturing/index' && currentPage.options.isPass == 1) { + return true; + } + return false; + }, + iconClick() { + let pages = getCurrentPages(); + let route = wx.getStorageSync('history'); + if (this.data.isGoHome) { + wx.redirectTo({ + url: '/pages/home/index', + }) + } else if (this.data.isLogin) { + wx.redirectTo({ + url: '/pages/login/index', + }) + } else if (this.data.isHistory && route) { + + if (pages[pages.length - 2].data.gohome) { + wx.reLaunch({ + url: '/pages/home/index', + }) + return; + } + wx.removeStorageSync('history'); + wx.redirectTo({ + url: route, + }) + } else { + + wx.navigateBack({ + delta: 1, + }) + } + } + } +}) \ No newline at end of file diff --git a/component/header/header.json b/component/header/header.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/component/header/header.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/component/header/header.wxml b/component/header/header.wxml new file mode 100644 index 0000000..224d26f --- /dev/null +++ b/component/header/header.wxml @@ -0,0 +1,11 @@ + + + + + + + + {{title}} + + + \ No newline at end of file diff --git a/component/header/header.wxss b/component/header/header.wxss new file mode 100644 index 0000000..538115d --- /dev/null +++ b/component/header/header.wxss @@ -0,0 +1,48 @@ +/* components/header/header.wxss */ + +.header-bg { + position: fixed; + top: 0; + left: 0; + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + height: 100rpx; + padding-top: 40rpx; + background: #1a191e; + color: #fff; + font-size: 26rpx; + z-index: 1001; +} + +.header-bg .icon { + display: flex; + align-items: center; + width: 90rpx; + height: 80%; +} + +.header-bg .icon>image { + width: 80%; + height: 50%; +} + +.header-bg .title { + flex: 1; + display: flex; + justify-content: center; + /* width: 50%; */ + text-align: center; +} + +.header-bg .title .title-box { + width: 50%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.header-bg .right { + width: 90rpx; +} diff --git a/images/10@3x.png b/images/10@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6413299ec0896928a834df67286bf4b50bda1b7d GIT binary patch literal 18009 zcmaI7byOU|w>3JrySuv#4ub`k;O_43t^tC(yM+)WcyM=jcbDK!u<$0o@80{pKi++_ z)>yBqQ`Obgea_i?pD1NTX%s|4L;wJQA}b@I3jQwo_lAcBf7YmMH-Wzh+$FW$)toHd zy-Zv!0HWqjrWWL~4klI>sum{ZJ}#pcf&c&%t&O_2yS9QnznPN*tI5AMtlkdJ;NAd$ z;3scq6EiytcXCq;D;q~4%B%KnN^%=>AxbT71vUj|aSLl38DCcmHD5(_GhaJ1kU8Zi zVRAuley{-t3wIN8ZwGrvH-2v+%KzBq2mk(e7)VL}pC;~hLX`h!QrZg2QY3=Ur%nt;5d3mvVak4tOS^?QXAP|s^1IWR_0&cWP+g2MlQ zQwN9tY3=5&YVm*P`~PX!P2I=Y0;p=?=H%gO2EK5XRR4x@<`;LhFmZQsRd;f-|L;{) zwsvxNa} z;NT1%S;E5A#?!)F%GJq%{6DA7Z}Y#;h5LWC_g{U@|M$7@{I7k1;K>00UEKfI#s2R@ z;2reu=l^V7@Sp$L{1%Sj9q$U>+T$^!0|0>7sH}vjy7$_79zv>tM%vSKz?B9KIR%z% zk~(a1B0(sEnFuXJmO4Btc{G+OZ_~+X`jC?E?^8`Y)JeECcV3iV{!K`d+K7~ODAwl4 zVd%+;09hHa5oB}n?AD5{_U*qHYp+KOavHRZ77# z*j@Gps58bJPc>UBSQ5qtZ7koGgWk33T@S}J-zTR1k2p;RA~9?ZPc@~UQC7^`Pl{ub zxfIY=cmiJTOIok;*i6J+%akO3kZNdXC(b3;Ua!@em=~I7)_zGD!AKv>f)Wq=B}KVn-;VB>+*36{761usSAx#S7tZ# zyJ)Npe1ExK?*5D8d~(wj@ERUR#7hfkP-kQ~@qIiW?FzY$q>6{vYj$+FU0rW-7zcQ) zm_%6Yc+{d0^RYqg217vgtvhv-G&yaP4hSPlllqu@Py219uo`yo6+VKtzDXy{{7@=z zJ}v)o`Z^R#@GSxK6it0DVs?KrJNou~*Dy@>ej?pp6ZCFp-*LU9=VUR=>#&BM4m8To z_1f}5&I)S-xKQM;^Jf%YA_=CywBayR}>ZzrDP?)Pn8PZhI`KNW*-{F8~Wt z%JH7395>q-v=h@IFH^4$S^zu-b*5h-k*{5Ir}313P_nD}6a)^PE>@~J;^v!?<8 zc2v=e4U?nj_ZKKs)oQO zTgL5_TM|IM-Ewu*`CTgm)n0|U7Lv9nMYxLmcX}tGOgFkc!5i0(=X6^ zEzTw(6=M8_wpk)cxCjyeHh2h`l}vSY#vPI5Q9qU07kmT+1QP&TNp`s`Ov#nm_RTYD zmp30e1dfa;S-GVp6uG)Fgp`lN=z@@{aseko*6k)hwZt@7X0`)>7Z&R@~d6 zcFR=0B{xj*%Pq1>wU?z{4}bcL!5aaoq-{3W>|~@7XYcyNv?K2d4W&J`LSHl9TC&^n zg)zqTdd0p&-<=t%Xw^DOc48-Z<4}z7+flpe^{QJr$$r1``U^yvX%Gs4c{OI`>8UV% z6;2*i9ge<<($*+=6s00~V3DdcGMOxsYfcqF2;MAwh8da*H-@o5|6Qc0jaB}v!~|}; zrIV8JLCr>3<3#6RY5Z>?2>}ar9duWZq}_1=S{n;oFTkK@xj5sutB=3Hq8expcGm-$4ZN}` zXextCcbF3VLqxW7CLRcL)ERbyxIRfMt^zw^A44c*5_QDh5NZaIqPw6qyiZOWOx3^B7u-|$k#6YbwEAThJHZCNL==g8??1P zP@O&bnz#E|fihb>Y61NGxwvj9cxRr-;-s^2BCMTMk_t}UF~>dn(X$WP_owy&mqoV( zkCc1(Y~mw*--j0G6{V*R=$RT#Q1UeeUhRiZO1P{%kN;kt1b(pCo4!0VG5TY+WsP2& zTNnq{ocI z9bMS=dj@UndQ{WK?_jY-k`m5&wAy8}2W zE)PQ4C)#ZO2?BlR&g{0u`s!w%Ms1Xaiczv%cJ4%=g_Nd2O-(LXS=o%NeG(pHA5=|e z4o5_!h3?72L&?iYJ57Pq2X>V-;~79SuT2lFmW!tK5p4vgu4h_C%`XwDP+|IZ#rU|R zGiIp7)VZy4*!E?h`Sz@}I8kd%jw?q3xT4T`YQrfFEAxH}^C3V+QYw6KZ_h#OFLR0V zgSqkVx$Gy&5LMPasK`0j-CPBM%T;07LsAC;q}-

Zm} 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 Q!T*(Mg>ArK!Bt&NdbXoWEC5x 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 literal 0 HcmV?d00001 diff --git a/images/14@3x.png b/images/14@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..85826621536bcf3d8e0132de74c46c0c44734e14 GIT binary patch literal 15801 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 Lijvjhh5`QvbGwps literal 0 HcmV?d00001 diff --git a/images/15@3x.png b/images/15@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7cbbfd6cf3b938e105109a925906cf6b66682c GIT binary patch literal 1176 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+h!3HE%S(j%5DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49seoArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XQrEMXl$WiZmDNz zYH49)qN8ABU}&aqV5x6tqHADiWngJ#V5k5ENh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*s+85C;f3L4>= zc`5nj#hPF}zP?tTdBr7(dC94sF1AWQQ}i-3Q>>g!oXt!eoy;xGj4TWdT`inUEX^F9 zTpgX=oQzyt+)QD5UGkGlb5rw5V0u#!dM$A31to{v0-((v;crLjDE_Maobw~yPX@rVAEhLsLy zd{!|sI{e|yI$)*nOzA3vwn81V=>rV`?#WpU8ffsG=d#Wzp$P!RsDV5H literal 0 HcmV?d00001 diff --git a/images/16@3x.png b/images/16@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3169ddb3fce509d5d1bab6134e366bd21ba6a3cb GIT binary patch literal 1322 zcmcgsO=#3W6pkoGDg}{(wp2Q#APR2&x_=3cbvN0y3#OFqLbnIeG?{I}Hkp`AyJ=OB zdZ~Eu-jm?PQx77w>Y?=LrSz=VqEeNLB7&DX+3s!yU2ipqH*bdbecyX;-sJw+=#{R{ z-cE|5x(Xv|k*pd;9XWfvgLs86JKxCCgL7p(jw-mO`;f|*XbOUYqff&k)Xn*uui+3y z9X)54%DAjul?>!CdKANijz`cGH8dQ0x>1D~Ou=c}mFeAA>ol-UnVv{!oaQOevPTwt zIKD7iG8U?aXwt)%z)&a=0taFpgwBi`NTE#Ec_rdU$1Dx%A-F2j`$?6xF`ytHf&`O{ z8T?=xq(p{Kh-o2y5eOWgWI2)L<1vnxI8oww(D-Pg=9?9%sOB45WGB-W#-7BowOWm- z4Km1|W_eK*Sx#UDAx0u%!Muz0Fy;mWO$HSPhHrb=MlOgL^(i!qWtwEVUxMScXx*UE zCekoA)IFAGxTvINpr-vh)NxwT0WQLWeE&)ul;%Ci7GZ#9eS=(FWgwFBB*lk1Mt%vQ znPwNqEQC>DArB}@)U^~iKViEjss$J77)_H3Zh&>yfCW{i2@7M}rj$+O#ki76iAf>N z^SN|3uEZ5JpUdZkjF8B3O{|KHSqHkfi8T+f>9*Kt92}1*tI)USpqclP1L|c7Hzpnk*eEInE?a5td z`_4{()sn2ON11ya+JCWK%aPWh+unGja`@I-j8y)x&-&+1aMbn9oOJo!-nHoORmhF1 JE7=>1zW^|Ir(6I4 literal 0 HcmV?d00001 diff --git a/images/17@3x.png b/images/17@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c119676e1b9df0d7b7c23b31e9ae5191b10ea316 GIT binary patch literal 2003 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 literal 0 HcmV?d00001 diff --git a/images/1@3x.png b/images/1@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc12d2e8c63f6bab9c0978597baf1b8b0c598d0 GIT binary patch literal 1203 zcmeAS@N?(olHy`uVBq!ia0vp^xpq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfglShD4M^`1)8S=jZArg4F0$oEV+#dyOFctV zOA8|t9R(u;LoM0@_xTl4cd;;s&(~$g@?-C@Cqh($_C9 zFV`zK*2^zS*Eh7ZwA42+(l;{F1**_3uFNY*tkBIXR)(42l3JWxlvz-cnV+WsGBGhJ zzqG_w3FuOY7jg^W#^x16g9#X5`W1-<`i6Q2ATPlb`ugHmnwtw(U0f2Bif}JhgNs8d z3sUuiQj7CTi;{s6m!=G|s=&&*C^fMpzbGU>KL-|y0U7xv`NbLe1q#m2pinbc&ryA&s6|>+bR>c zTTF492i2Q`+bw1|_38s1qYsK)q{xN|0aFl&2~WB}4m|Ov<^fZD5in^lV%r$Uz`&^N z>EaktaqG=2N3JFZkv7?tzS`NcPj5DF2My=m z`6u#u{j_U!-h1YC=9k|(|K-G6eZlW+McV`?zqy_LXW8|oHLjnGY&m>0oP=jxXeql_ z{bEf?-@&D4mpgGR?r*5czIC*5B~w*%;sb%I?&9OC?lB+!Xn%=0N}-A`k}vg^-L_>q zl`U#pqTSz2*O{nwH$mz5s#jlbO;TPbki4wjE&a&JLzene9hLdr*T}V~nJmmMb(t!+ zB4GD2t3{ur1qF?5b*vWU)mkZe%Pr)DIsvFkw!6MtFlzB~24;rWT3VtQ&&YGO)d;mK4RpboXnkcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`Gt*5rG`3JMx70H< zwX`rY(NQomFf`LQu+%p+(KRr%GO)BVFjRm7C7^9ZDQQ+gE^bh}fIM5JjFOT9D}DX) z@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal z@=Hr>m4GgVcp z{MmY^oIjYWF*+KU#lH#y^R@yDFiR=|F$W`1D+iF_1jGVB8HbH}f7_Gv4ehw<<}KC* znx(Q@Vsq2`e92_nFpiofW#8Y)GB7MKE9AR3t)_nGd%aojFDo!Gte7AG)Q{D`29Qh( z5aYHJQwhv9m@*g+CZGgna|37gx$Dk7e;aK?b**nADMCg$-dKuaciX+ z7<}%(d{dvrFrST)!J!qTk5s!r;fLKhxMffRAG>B0C8UHRe)ppoON7n1mEe|vCo58v z;CD7DscbaZNyvPo!H!%G;!d!*Wky@4_a^gZ_E`C^~9 zdD+p73_r39`RaO3uXzw1(e(v7hz}+%t^ZA`!ume3RrQ93ITf&xLf%S z8$ta%rSErFgF1RWo1aaQQ#*Rl@^&z=6Lxw!12aR7rJEbP0l+XkK D4Yq@L literal 0 HcmV?d00001 diff --git a/images/21@3x.png b/images/21@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..faaba3c37cdcd98571ba19210a737a50c755b7af GIT binary patch literal 1340 zcmeAS@N?(olHy`uVBq!ia0vp^`ao>R!3HF~et&QWQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{;ELn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09sGbq%|6*R&# z^HTE5i#5S|e0{Av^NLFn^O93NU2K(rrs!p6rdT;SIa-<8Ce(_x>`6oIvcyW zxEQ%OIs@4jE-<|=`N^fZsd*(Zy(tL27C7~Sl0$9*&}Ns^qRg_?6t|-MTm`VVtuk@D z#T2J`P`xR*-C~AQuRhQ*`k=@~ifot=Fa?2_@T3dmz!QIJ9x%lh0h9LTd+MnS42)|$ zT^vIyZYBMx_kM5BTzb&SZL2ruizbI^F@}{DSy4w0IVdxf6XHyfZZV~U;d zVF9+qee$J$Ry=l>wSV;^@OZyf-Ib3lQBwmC96N7rbjDC2)b_$W7Na*04?X{}vV_Z| zUPErnTtR(>wB}9k848(nC!KZFnqA54!f^Zb^$WKinP((izrfma;a=xKfs)_SVk-`R z=XX4wFZ1c?A9;m;7A$xFm6}}VPsuE9IFODoY@Di+~?X3N6i_I>ho9~H%{ogZ{M&TWHfz7!FQkZWgC=ctZ@Cm#J%W*?LJ_r!}csuyb}*E50mC&epglCnjg6D~K@W z!$4#Yf`Z~4Ll_D=P*4~m%nORs7ZtkVlPE($MSM~QdNSAPgEf$xbAG<>`>!Vhtu1>z z6>BO8g7C!lN(sDf!0(FkMfm$ZH{{35Y7|YOHrR2eoH09oxl{uDG3 zMA;@SnL?@fK0$%HPj)fBtZrg9K{V~inzGUj5ZM8`G$TxX8NW}Fni{4K`{PX96hT_s zo3lV$t|h7Dx)olfb~KYsSpf^^0Lf%l<9l4O6qa0^Yl3nj&W*s5?yk4k{IIB}Hff z((em+6}BNn26-Rr=R;g$J;^a_fM$4_ZS*p%!0-aYl5-D*y;*9fkdSuI`NF3#l}5-E zXxeccpVQ!jRu|3kJWn$m&2e6g@Y=lwlCxgJt}QA^z*a2HL>e?mS5fYOJt$1!NPnlG zoAa`UJy#}NFgh!nH0xvBl#0N3{Qpp0pGVs$0sh4MPhmURYXUj}Y}jKdxN)7et}9az zEg&OkB_YfdtJs=`2-<0AlA`EVElAcK)(jOo_Lf;rJTAlx8_9+OVp5pGDn3n9gKoOX|&W)zYy9N^)r&4DB}euVxobc!J#R{OIDt{O|(nc}nw4RiY+Vnj}UVuHRf= zwe;A##@aJ4uAREPwLU%gZ3!ccd=);X^3?f$rZDdL@pEigys^0bc2_V~kxy3>Q*~{_ zk^TK2MqUqW>dP!<3SwRJ=KPE%AByH@UQS4(trwRby-@zX``hu#>fy(k&rqgb4L*P1 y-PfPH^BrMZ{qu>@Xr^r0kuvrB-Ls#Z>UN^}Qs0Wt{g(vyhY*XlNH=!1_x%FJG=U@l literal 0 HcmV?d00001 diff --git a/images/23@3x.png b/images/23@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..28aaf86a391b6321f51ee781ef7e5d2f007306dc GIT binary patch literal 1125 zcmaJ=TWkzb7#?>vco0clLMEfGwL6z~FEhGWGrO#qrq-&BmzvI;cE_4I)0xxm>?W=e zLcAb?2O{-G+7J;5!HRoA5D|5W2!ceZcp%=Kscw0&COLC1`M&SJobT*uY*;?QH_b;7 z#DwGuDTU{`-WWR?|M#6-9mLaA6wjbFuodMM8xS!Kwg56|C~Y7G6s^#H7t|BPh&g&X zgEI0eL4`&@@h}0`urQk->X*2dqUHc1TR@v`MydWwS1D50qSU&e%*d7qvigdm4b~JJ z(rPiM@*1^dFExasYyIQR;V68M%=Zp$*7jAmmrs z+6Wou18k6waCHkwj$uPI!_#b?pJ4@t7Z{ct{3smF)>?&>lo*VKcTp;fkR{M`KA#Wd zYXi`3qgkHkX@;XY&W{m(r(hz*^_$MDvVsI0)z&SfLzDCrl@{26q7=^bcL|0yBx^c@ zZNd$sUB#l=0OOTZ2FmjPp@uPpc2ElZ$@ibaPP$+LIt3iqVXOG!T4#BoEJ3t^f}ov- za8tR9jai7GlZ6&3ieA^k;rLAQv`QGfkV{PI*U! zKFyr(dssTqesB7T{WGu6_&TO<`r~IK!lkY)lQ*323BNX?bm_Kmd06v@{!zUPVXpL^ zez`!o(ETmc{zLqpE`2Uuta-QP>{H*aLpKgssQb$BDdIKXwrLZa#vSQelsnt}lfIQ@ z-XFgHh40gEzH)kf+q=7adq%!^pe$1Q#&17%<&0C)`Q~U>-^ aY&3CyuiS9s_?z|K!%xN=q@HCPcKiZ_eSJ>= literal 0 HcmV?d00001 diff --git a/images/24.png b/images/24.png new file mode 100644 index 0000000000000000000000000000000000000000..308349b41489b5b64abaddef92f0b81eb3dd34ad GIT binary patch literal 1868 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 literal 0 HcmV?d00001 diff --git a/images/26@3x.png b/images/26@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..02451c9749da510e80a5eaacc36e745490d57b98 GIT binary patch literal 4843 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 S_-CenPFNva#;Krn`ab}& literal 0 HcmV?d00001 diff --git a/images/28@3x.png b/images/28@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7078e20267b7722fd9a6f4eeeacf45ff64ac97 GIT binary patch literal 3468 zcmaJ^dpwi-A7^gqM8}XzsaayVY;&2m*<81BX>JL*)of1)+srVxLX((KVNtoPn^TGt zB6YG;av7m1iQKP+u7q^-n{!U*{Qmg$dtR^S`CeY{_xp2u|MR4~I`2_fuen}ALPEj8 zp5QKC-PYc9vf}UcY)5nPqQN41v-Z&svtr0hK*EMf4+J0%;p8B|9UxO6cR$kL%mQWB#B`M z1c%tiF@b$?&K{JwPzr_$wX%fZ*jTYZIKU!9*x_NcNGux<{Zkh!-mhIFppZWytWZ4k zucW+5t`Ivq6M&%L=0+4_Q#52325yYPpiRsSAtp#;a|9BDFg7zn8e@?dEYcYA_X8D2 zV^R-e-3hz@jwL?fp}{N`1B*b!#Kgd3OyP895W*OP!61+(2on<{F~TS^mc}BpjcAeE zzbg=cND4EA!3v?%AZv=`KzbAl4;5$nR|(;ae`INqf4528Fa(>-Kp4Z3YbAXLl1Tp_ z8Xo=+I+EoM{G0Fp6pr+WWdI0wAd()%q=*N1c>7u?2G))VkXdx52b~`Fy^F5FbQV1_ zn9hLM*{yYL7X;=NLZi}SB6t4DA(5~Sv`7}2MgbfMc&Jzf9uh*u+L;nD#~c>+*4?mu25TXYgFj?QsuJ(N-$WoJb}m=F&V6p`Kd|4lYS<;9@Zzmo zUl!`K4mKP`MeUaaUf%}d$3$S5oG|IC_0BGDSFrs9&-~LNL>;>wa8b#I%M4_2vmqX-lulW}ZD@TKo};3=qD!LYVj8 z`9&>@0Anb?+mgpN)Ydw^umrQEr_Tj}EhIOBNQCUU6K2oi?>^h!FrbmzlUJLtKi|_e z{nqUO(Z;5UUqP(?-@8U4o|gVH{c4BKoV3HYYm51?v7xU&gBs+%*q(l?0V4LO2G6b_ zKW%&?#d>VDB59>5x^4OC%F$JOg5-+ux?tXXNZL7x?=rLNegEbQO34R55(X;-3a~}g zad>wGCSd+~>Vgk!f#t%#UwUMi^(fqV%UtO&kK8#n=)e<^myriEZ(^SH*4E!ZdN8^oeiT< zpXH-1IReQ$(vD8vGK?Kh<(3S!V-HHGRmr>r!|LAyiaB4V{p0VS&4+b=Q$9iKKG?*& z96cEjST(S|cf*_hB)N5JvZnLX+%^xpN1B|k#hD~N%c3tiKDbs_3L$mgRd7Db6Q4F> z;&`~z&qS(D1E90+hiU0Q+UpuEp*oB2(Gd!Sa@kMZKF`611JYD~$;qfTc@?m8Y!KW$ z{_A}k!8Yr}l3Txf98u~StvZz+vj>u6(g>uMz=i{WV#X>4=+bi(N zva%pkgY);wefVt3;2nl;E}vO^!v|J2Lo&IuJHqF}k&mmKnnvUN!E>J1KMQ|R>dsq- zxO=Y(4eyV0zpOrC#;pz~Wew!+hJ4$qVRzcIrrKZ|r%fq8`;HCfILQ2{#9|!X4@MS`Kepu)ogCyG;0Jp)>Vr1r^d>=td3ue|j!j7u! zr9at^6_E|wxlf2)7mp|Ge_l<{fFbm|d{IihQoKbfen7cShOO4H$ntJ-tD7x`a4ieu zb-OR#wYAqQaD{hpbX0H1b-hEoT%kmyJZzX6T}781P4?BEK#trz(MVIw9i2^Jfr}zUNmlfclU~t*^GU`n6 zDgT*3za4a=nI^wdPHX+T@w}EW3(-j1m?&K7ygJLewtIQ500uK}*HR5iz`UYMch8|tU0E9{hS(-bYxam|j1yVZia^OKppm$L zjhD$3O~|h9(AOGQX|>c%_pRPms{wYN+{|Rnhh_zVi(LvOoA)ItzSs=a8483(@XPg0 zm{v&SLwEh_UFAzX%E|4E3SI>cncKDWEkIW9kf+PC>2euvdxs7wQ_Wr-zRE38KiK5w zqSFzvbldccGfzH^9KB1EHDoWxdEjB7Eb3tw;Va(fRPbJIOE8?^J9!4wYg88*xmj6z z>#mv?KZIP_wqo#W8o~&LquLBcrs0Fh z%A^F($x_wN$jmf^jKg?gzFcg|<|V0wvoOM$q=cLt582>jbnu`^aovGX%S(&LFdlXN zKe2~*dwb1IX%wL1y0%`>*%Z55z4J*hhkQoqVr{Kd+KqY13ogeiUoIL!nVQ$<-9{ny z?aF-PV;h5xZFM2eHnJ@^;$bY?>K(d6fs3{p13~UFB`!z;7?|K+A@l6XgU$~(RJTL zkCT$^m%J!Amm<3@(LhITb9_$>t5+`l_T1-zQc?e<2bZn%hg#eM@`~gy0}(;JPdxG` zdObDN5|*dYN`8|is`*0f5U+AIu_|12g;^fz6??Sp_`>!8<8hyf#crRxmx`HFI&LSa zl_F`E_2zDUN{BX3`%h!cY-#6{;BwU()vn=yVTY$W${RWdw+uT}$hgxdIE3YL2gIRt zIl!Xz12?eH)w?sm%_>$k7I!AO=AIr@u6bIRIf`vnP96y7OeK&`0~C|P;svl#9TZ6R`lnx7$O*?d{!OV;#nx1hobhR<>4fk@l^!m7(?U!C zyV2Pt>nja`%{k<^tzR#bEayEVj}_j_VHJKf^G@XUSUw!zXy^z|Z5f#4zWerVNUA24 qa5HN4Tf-r=ZWM3noA;{HA&E2t+l0;m#k{ruBL|{0;g;>8l>Y#A@b|?4 literal 0 HcmV?d00001 diff --git a/images/29@3x.png b/images/29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1efe3bc28acf0f872d74d6c1d069d801f8150d75 GIT binary patch literal 1867 zcmeAS@N?(olHy`uVBq!ia0vp^$v|w$!3HFi^ro@^DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49seoArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XQrEMXl$WiZmDNz zYH49)qN8ABU}&aqV5x6tqHADiWngJ#V5k5ENh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*s+85C;f3L4>= zc`5nj#hPF}zP?tTdBr7(dC94sF1AWQQ}i-3Q>>g#jf`AOOwBFLj4TWdT`io<3=G^1 z&0Nh~4V|4$-ArJ5UGkGlb5rw5V0u#!dM$A31to{v0-((Nv(4$ipcmz^joJqwmBb+T?BW!+y6Cm(}IV>z6O*y5HO{b!q+X z)%WgS{kqCI^hDCFx!=AeiDVz}3gByNuKOSm!*jI75*V-Gza&x$2ctR%4o20TK zc3u%<$f8a0yh2GFU7r^mdaB9nHDPkxyL96!7o*dkA3vCoDEqiT%!%jNXNyOh6(-DE zxa)1O!Np|e=Z{bBOm$d4qy12}?feTnn#$@_G^XUVnGOK@Uvem6|*s1M%e&Ng7 zl`WH1kNBMaxh3cW|8$m`M^}uurR@-_U3o`GG4~+f-lNZ zbP0l+XkKG8D__ literal 0 HcmV?d00001 diff --git a/images/2@3x.png b/images/2@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..496ef57e68e057cefe066396a2c918a543ed91c1 GIT binary patch literal 2305 zcmaJ@dpy&7AK%Qar9-(Sq!~wUyRxxmq%G`ZVa+97nC-`g-GA675tY(Kosx2dB2*`J zqLLI&FCn6M(&b5s^NgbA(B+ZIGo5svKc1f7>-GD6FR%Ce{kgsW`0Wi@AFv2+1&2T& zi|Bzgrgrt!zCMQf+HVo;wof1QTp-r6ArNn0xtPsK1VBVA5YHDAgp2blna!6dHuMfgoPSy$t0FaH43zCE~vYdkaqD$89=dLkG#1{ydNJ0LU zR3sw=K@~{>1OZJ%ad7Tl2u~6kM<99OJ=_p@ERKl5k}xm z$V{65*I3#U1<3PG*+LFLr%{kv6*QmECHoQGu~dSmCy9vn!r|6>kqGWY8kR=$ zBH-{;PcPa$mnPyQ3jiTF&*lEj_4+P%&JF^xHZl#6@>2k=zf>eZd?}mE|9&on@9KT! za=)Jo@w;4%HW|#^aQ|!A^H*92&27I~S9|zoen6;oyi{v#!)>my5Qv_HPV-~QpFZ0p z;)RDoMV*WA9DrcUoBeGE3%q@=z`>yi}@Yto7* zi)6dGZcO4Ys8){cxJ^ilrSVbxp0_$Tn-~LW1FHs>h@VP|Tu*o`HmlYpLIh3OzuInr zMP=%jV$Z^jp<7|MI-izBXWm=A%lZ0p#+kE(aHtv@{K;WdzYDVT`l?yOcj5>&?5?GU zO~u6hD%iR7Kg!sbVUM%e50*zHKGGRZk9uVtvm6_iJ!=`WOsrcs9C`;;x>vd7=ugHl zADz!(JEsgDFJx_UI^q&b89yKJW9=wQYH3#i8TQtFY!Gy?R1-TO7^q-w$6V@(YhGA) zp8i_*HOEqF-c)IO;L^Riuz?c|!OkNbD;?aX69p7yvtMZ&3)*3xHnVg*A**xDVIYeM z4Y-m9vGj03eGahc_ujK|K@rm>bN8+?_v`%@oyyF3)3J>f(AIo7uPf()_>604L`lBR zBc-l59M|}sePS#mK}^r>v&e&Px%(+5=ziz>+`$!bO#egIf2hNNkIlgyJlE2 zG@NM=?Y_OZ~UGxmFErID3PSh^wzj|(k zugQvk8ts3mV^KH)$KuN?`??etVR_bvD(MSy%-iyo4-Q39Ydjd?jRse1W~QzhZnUua z8F1^iMn7!3@>}^&*>MTK4NNmL-_^9hrRUiy{t#F+Eu*eZC(!J_)!y;nvthox69~a zq>(bvrTxaUu$rxLTHtiz5iEKucrn0!7ss~#bTLpwyvP0B*-F#^ByR0;b=j!OF|_bnes4Lc5l(EA2j)Ho771ij$1B znN!?%<>X+xP?fQI8@h@z{KJuZKMHJ6-MP`GuJjjhrzSTgl|QrAStKVf8}!e(qf@E> z23m1DQj(__-+U_R{PagiFSOGkNIvHOQSSo8{?w?$y$@#O$*Ro4fP+T@>#U4Z3sgQK zd#6e}j!npGCr5cldrcjkn!{b39`rp~Io4~^uWuC+Hwt;gO19`nf!=Q`uTA*A47J5uhmDK>+-@#!-luqN zywd4YL)i#*Rba5uF}o|R%v!VIpccOOq4EoLZAItGcz4W}1~Daup@$XuR|m5;p3W;# zwrxVM`Nxzi+R|}iKynby!&w|y-*b4fF2SR(L!Vxi=~aEg%<;mKgmmSOv}WE-m0p?j zdA$!U$1$lBBiVwwp{H5!jN_Z`kW*ZI*Sle>|H5-tz^i(l#Qohrdzr!Q>sWG+MY62+ z(Q+^)#&}cV@3iD;#1L^P{qXU6#j=%U)foo=Moo?*aXU`8M?bz5s40QKAW;;;BVSp& R{oGFpeeHT$^_rNh{{Sx?v^D?$ literal 0 HcmV?d00001 diff --git a/images/30@3x.png b/images/30@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7b676a558bd9a95ea08bf249634013d67754f46a GIT binary patch literal 6326 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 G;(q`(r;c?1 literal 0 HcmV?d00001 diff --git a/images/31@3x.png b/images/31@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d6742e5c5243299103236d0b8cb598adb2f83360 GIT binary patch literal 4487 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 literal 0 HcmV?d00001 diff --git a/images/32@3x.png b/images/32@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2346ceac7b22d0d6c469ee8ad9053ec6288e3d GIT binary patch literal 1962 zcmaJ?c~BGg9$z^k@L*7g^1y>NR83k)HX(#05+vl1RDu!H$`Pv}Ss=n@!|u`qWE6bG zNR(ErC>F3BT3Z{6gG@ykkfKzcrg*i8)(WM7Pi1u^)IT~ot zi)b68l#tRSfwK(>g&4e{FiEW|%+U$-wAHa-j73NaATXf?El92r7g|KL=ek02@49Bu zz~>MmM@0K0sT8FOl%N<4MlpF2I(8% zJTx*Irq2{6OXV+OktY!?n;=X=7RzilGtH4q6w6|<1p)yJ;;=ZJ2oe#27Z?exCBle@ z%_vA=T!$Gwk&qht4MB?gN zG)UiQFzQh=&UnsIDuoIoPH2rfSRobBNEN2RpchK`60w*kju!AZd^TIgj~8>|1ssW3 z&gMcKu3R?5m7=gT>YP1{;XV=9S{>4Sqfu@w_&{;LlN+K*+RqYxkSyX_kydR zJr~}rTo#!O%Qf7;414B^bdYQN(z@i~rTJka>3EE^w)V*?Go7k%?6QP|vB1 zW2hYO+1+33@`d~ofh!&3tihh2zTG2!%C&K?`W~h6-gl>zETfN4tEj-QKGfhkPySXy zKlh)&(zuFSQt~d4E-Zd~sA}7yDi3)HV<_sRm;KSRfI8ogDO-zkx<-qqPnX2j1=(^> zFn~uvsuF|7$MsvjdZ1H@eCFsVS z6l!@~v?=M%ZMU>*)9?5C)cxA7KQw%uc~ug3K3%^4YLK65d^+mTj;M$Q*$e%jT=er#>8C1tq2t^0?yt(aY^^x3`&DbD=1geW!-nxUj`6IA z!xXl*^jO6tC-}E5^P!CD2h*`Rh|z&0YfhXl@_h`e3nZHYBkPy%*EQv5Ofg3L4o-&K z8T)mWqwa0Kx4Ceo|Kks6f;ZFpmj2#SRqTztdYU0PxUlSNtD@_zn@h|m?thnHL%P?q zD+Uu<+a+BVYY#BYpVy!9_b_Red1hWH{f|d~@e|s?#aZDWVnv@Q zw)kaN?;GJOeG>V{>B@TWVIx+(|A%)jesL##zN0dyM{=Mw*_K<*Kke9aYAW?I<6#Yd zB$`3lyzNrs;48iNcDJAN_qADX^S_%|=Z$X-JVY5S*|k4qm8N+pu~>dw=COQ9$XDV3 zi&gORYhAq6;L?X<8hG&|zs2RuJW*2mg=6WOkY8?o!d-CbUq-yP$iEXnL8Fc8L%>~@lt$(Xz*GyPC2!1drw|aPV>M3y+_o2zk`m=wK&?A zR1^ua!lno(7mxXcn8RA2#%@x6Hx|}?QzrT{!y)~;A`~A!(qFeOiKlmOh$;GVJ#7)L z9MO%ZT8maZ*l^>&&N2m8(-t~eQ@W|@!&I5I)LH-S`lHZ}C@*$NxARt*G+0P|Ryl}t adP4wXYjdEyS=#FQdn#l}($C_z?ED{gT?Xs` literal 0 HcmV?d00001 diff --git a/images/33@3x.png b/images/33@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2720dad8948e7d727c78c9fb6232f9b779d1ea12 GIT binary patch literal 2121 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 yuYq>SqVa)$#bsZz7qri1n#hL?V4p7v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`Gt*5rG`3JMx70H< zwX`rY(NQomFf`LQu+%p+(KRr%GO)BVFjRm7C7^9ZDQQ+gE^bh}fIM5JjFOT9D}DX) z@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal z@=Hr>m4GgVcp=t# zyC4gR1-Bl^&6w!rWPQQ%OGL^ZzggF2PiWsZvE&VFOqcqMX^V5uGMM%(D3`hXUd&vd zr{4AP7N^x0^!zuhlF5yGRxw-oO8l%B6Qy@J%$srOK*=);m4dpB&)l#ea*30oPkIw&S<9qZ*eWsWnRa~C+PsY*sJJv>8=b6o<*8|B*#NAnnC zP6RgYpW8C+-_Nt^>mCc#F+Z<;YMPW1{C3mD_T{0@+7~z&ju(kup2fVJ{pS6o%6+dJ zmMxI`Rmot*c&DY1bvttzS8Vi~;{1hLoHIq)8ZNvDxv|Li@dX*(TW^~c3uN@-);)Cj z!_UNa!0t!otvxv`tDiir>$j9Ey=*6z*k>zouqwPkQT0BrZ|SB_CpK%XmHxC_;PYd? z_ot%*n?C9`HJ>`4Y^nY2S%txwsXS{prD}N@aH^%rEB{{`rBmjel()~KHuTHQn+p_o zI!@0%aw2H{wu{F<{*IWCcd00JN`jD2ljnvm!>Rk;{5Jh`$og2#J28pbQ_|i{UX~{P qyuvIddlu{IQz26lo^H=)WMg>R+qM3(_q2teQq|Md&t;ucLK6TxrX8vP literal 0 HcmV?d00001 diff --git a/images/36@3x.png b/images/36@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..315bbbcef72d7aacbfdb839a50a14c204d3c4076 GIT binary patch literal 2109 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 literal 0 HcmV?d00001 diff --git a/images/38@3x.png b/images/38@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9d4a34f117a31ab7923a49bac3be9e8ae82d6c75 GIT binary patch literal 1457 zcmeAS@N?(olHy`uVBq!ia0vp^x**KK1|+Sd9?b$$k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk*h0bFQqR!T z(!$6@N5ROz&`jUJQs2--*TB%qz|zXVPyq^*fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAddqG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SUJ0yTDX}Tnp>I~Sr{6+T3DD_7&;la zI=UD+TR55-y213i#J7+W0 zf8gbPpmT@QL}Srr{|x2_qUSF#+-tIKTGDZE--6r*`Tx?hlxnW2Cs_Yj6@6rDe9;fJ zM^k=ihlFyq>k2StcuXZi>P(Qx(#{HMk&$Bk2$@G-goU>-(g6uO3vL}UU%{h~B zvwFjuPbzQYrpCKIwZ<%fd67$Pk=A8FzP(J>1&Q6OoQM={Qd=+-jJM=!(_~pbt_+4c7Pxk;r XH^-wqmt*JBK!vEMtDnm{r-UW|oGTxi literal 0 HcmV?d00001 diff --git a/images/39@3x.png b/images/39@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba84a98023a247e088af0afe8445d12d2bdcc94 GIT binary patch literal 2219 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 literal 0 HcmV?d00001 diff --git a/images/42.png b/images/42.png new file mode 100644 index 0000000000000000000000000000000000000000..abe6dc6208ee760db2f383177385c37a6d7595c2 GIT binary patch literal 936 zcmV;Z16TZsP)c6vn>`hS$1-!h@lwr%+vixC32*vV!6Y)D<+YKv+TDLE{Rlq^GCG2j~v)6(qN3 z5=a8%&m<%v&KqPh`Q0yf?%doNLI#aTpX!*_j!{7!%pGq?>Hw^}zln5M7^60QpvK?v zwvVQ?1K7ZCwR2dw0HL0E9L5+G^szS`q%|ZlJimPDfax5di^Ra8H*g=A-;(<0G0B+H z@H{%)$87#RTj+IE?n9|wQsZ$VV}ukuKetXnbO&HxX3#DBOu*cwrg0xPPAoi|EunTV zZlLV1vqq|M88vPsJe#e%eBC6@WbTt{bi;au!tWk@i5zY~AUvCG4ZycJT?)K@OX_gL zbvNJ_lk-P`U~-Ql>x2$|dkY?b6?i8cTBCxZiX61pYXYUx@Q2Y=c(c_9!~#^-#sg9f zcX4##ot3llv#i)2*W1x@CHCM;ueuw3T=i{uJIR{Wgs<v9HUt@whL@h^$nJd!#*a+Q-ZASdv2 zKF?iJjlP@#{6MPVD?o__D9f;%YQjnw!2E<-wd2pdvjtyH*i?B1Dg?NNZIv8qMeMwC~)|n_x@Jss&jO!F{QT`VHmz3=~@AVtjf&Y96?1`_K za<_%*j`#Rl`PC1p+qenW%o2M=A4(|yE0jt-v|{FjO?xBZ{naYHT)Sjd;zg-r-5a9n z^ChWUZl={sBjR>Oc5Fa6_(rq|nxs41Xb5o?KV$5Mnmvh~3bNRpD{5uc2g%cE#y?b` zVQ+e0*x7@?Np08n6>%n^4q7?&aV#oZ?mbL8h{sT7dRk!r^Zx@|1Lf`AfarGs0000< KMNUMnLSTaOT*00I literal 0 HcmV?d00001 diff --git a/images/42@3x.png b/images/42@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ca52052ac21b148ba014a3357c224f782ef6e2 GIT binary patch literal 1818 zcmaJ?c~BE)91RE+4~k~Q15nl#7*UhWA%VmM3Q5pd10jZ^f?!M*2qf8%T_BvMDljP1 zQbmgv#H)B~@Bq0FOO;W;5!8TVi&Y0~RV>FqFb>_QX#XhPnceT0_ulXL-Zz^s3R-VJ z+i5m|K(H5V;EC~(VtMVpz`xt)p1_UZ;94v;V^0cHj zm`xze@K8u1un6HMmJCsmr4|fXr_$hT0)g$P(@15BFa~Ug;}mKRI9S^V0tz_?4EGXJ zgc>d!uh@{Tg*T@MNo47XGNv5#^99&C7A~NIF)5%^Db*-T#{u8#vhcZO8v=p%5G;`c zen=`pC<3^M76!b?43dmW_W`__WU3d_hqiVNK%-C@5QPa**ODky7KO>8P=SvRh)2`P zV_9Ne;Kx|_iUY=Dn1%&Gsi~>tR5}^a#z9mjlL=915RFE{5hOHCjY)MRHM(L-fd`{9 ztwMt-5H(;?lx|0oF%F1l`k@4s=98=%{n#eFVUSL$fv9APrKBmKQ275)mFg23#l-OE zeE(Azm85B4NDQM$vQ~y4TSv)$A$>hl(jxyG;coL zCy+YDk(EusS6m(5a4pNrSDdLOy+>2qOB z%Z2b{Aj{$Y>#(P`a0gkYpR9{7KA9g@=9#VWc_QI{4y`HiiAcI6K6~{*I8;LeV zQ;!uA85QosrWef7M~X|o?dX5ZY@8Tja|Y2P{bQWY$^N?KtNG6P2aPtcVfMirV6j75 zA$&P251N;==&o()G0ijd>}Z}?6IF6?w~#__+n(M>jN;#^DzIz%+uml>(6X`Yot~~C zE_db3*FWXkv>QBfXOzCN1MfQA{zdbt3 zjPB9b+v~``6n2JU&D#Cv;`LT6N~o%(EAgXl753fw0Gd@&Q_=Q_7HW6?)`Q z|I)u0U2&izSwH{A!=kELPd2zV2OV&eX&XCa=X9hy;yGO@7qGgyuIl2@-U@DANlS?J zhQjR1a5$l_Is3L>%DfU%?s;dg*9(m&!g{JM7rnierm+2{+esp}h2F&=75SSATLXd* zu_r(C5&{^+^aTDma8fiC&Iae&)TqAwfW6ZP88c%HcKmQTFtVed$R+peAz)%WW% zU)Ei1NkosM%2F4TQ+uw;lWi~~W73NJOLqc7e>$fytAj)9jFmg%LL41thBVD|?6g0w zw{k2a@~pznw?~PTha2qMh78A*3lC4Ym1Qv=ytr+2$$B#;ZgNAr3Jb0Utg(`ER@hd| zIdE1NQxo}BW&NppqK>DN=E|_v46c9rXu+8rn~6$w^xYa!^`7;M2L@jf>a&>Cucimg(_6zy4_3}4g1n8@` zDDTr9N){*I8L1df+WNZJH#z#^!;GR~ZGFRyS9OqWvGWkw3*Hmj+FP2N`Aj$AONEU| zi0=^Glr-pfrM#~sb4?p{?{}wMYwB4)EH!j5&2~9B5@TOS6wQlkD4Klvx)35*l literal 0 HcmV?d00001 diff --git a/images/43.png b/images/43.png new file mode 100644 index 0000000000000000000000000000000000000000..888f4be9b9d2e90c83f843227249e4e034f48005 GIT binary patch literal 1035 zcmV+m1oZofP)0P%0L+iMIaObC;}mHxePu45!k*0qFwW0 zS$2V0U=g6LLI-x3dHtR4ej*(4Lt$g*-sc3ycHFmbbTpvkuYQ>4Z4I8gr#Vox0OmYE zc{4a}fT#f;KT_&v)4YE9ijBc@C;JVAGJu@go}a+f0C8V_#1kF&F^(qGYf8uuNg=;# zNKG(qDc!o?M2NM)OVB_CgoFePRAEPIlx+SD3V?gLj~Klc0bEK!7=3`hQ@ULXx`$X7 z7`#64LAeG$fw)4Sel*rOY|&c&{Ur~kin0bbU`I+p6%h!$I>35R!g85X?drCmy}##f zMp)riI2dSB3ZfVzc)jTzm|qYZ6~oRLZXsl*8rn4wodJAhQqoHBF5r)dMJ|Jya~rEj z_Z+@fK~yjauoS#@l{&!plxkmY189@qawj7!PykIXmbuVE@G3YbJunXti{#%zmp*Q?h>U?ztO@WlrP>$X^*->9p9csS)8S#fcg0=F zdk^@*cd|VY4=B|RaMgza&%6hBGYv4sDcwrCSI>cWq+Ags=A*)2;YuEJ>C*!~`wZ~E zL(=+G6;k`450q-1Prq}(%jytO0p55ygs)rkj13K9{8`j5?mPFh=&Kngly2+UsAt@F)SZ;lepXC*dxxZb zrFBYDx}_%0`gvc|gIU_7GuXrP1DM;0*7RjjleB7LCJ2HaZ0lklZJ}=a>Hw0ktwi97 z*<6j!T%&Zm^w!yiJDCR%71y3sx_U-2GZ*9S8e);Fx3GYo65mPShDk>7`8?2sJuK}q z26Q_rNQ|5b_}uhhm0RfcOYlXaNiT0ofUP`35p;qXA<(243NzxkkRriq4tGR+6XXC> ztY}W^+TptFNHM5;8r{a%5Ogv{$sG~mk^p0>B4#}XJy1<6#O!@i0I`UvJQxGXb?u4` z^a&vdFh*JNM-q}EhbQR6n)0xtfy0JRC;o5!`iG2qM4ssBCDthaknbleX+Q*EtzQ$X(W{eJ-EUrsBW7@`0G002ovPDHLk FV1idu*^2-G literal 0 HcmV?d00001 diff --git a/images/43@3x.png b/images/43@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ebd1f7c421409055a7b95d224dfc4abe29befeb GIT binary patch literal 1335 zcmeAS@N?(olHy`uVBq!ia0vp^(m-s(!3HF!*B-nLq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfglShD4M^`1)8S=jZArg4F0$oEV+#dyOFctV zOA8|t9R(u;LoM0@_xTl4cd;;s&(~$g@?-C@Cqh($_C9 zFV`zK*2^zS*Eh7ZwA42+(l;{F1**_3uFNY*tkBIXR)(42l3JWxlvz-cnV+WsGBGhJ zzqG_w3FuOY7jg^W#^x16g9#X5`W1-<`i6Q2ATPlb`ugHmnwtw(U0f2Bif}JhgNs8d z3sUuiQj7CTi;{s6m!=G|s=&&*C^fMpzbGU>KL-|y0U7xv`NbLe1q#m2pinbc&Ms|WMOFNYT;;M;%sSR zZ071@Vqs|JYzWiqlAm0fo0?Yw)0=|OYk^ZQC^_U70Bv?jEy^rQO>ryA&s6|>+bR>c zTTF492i2Q`+bw1|_38s1qYsK)q{xN|0aFl&2~WB}4m|Ov<^fZD5in_IIaGgUU|?MC z>EaktaqG>^{a(z55)2=_+1_4R=rn&p#D#;78#%7sJ*d^8VWGK0qoaHC54NWB3K~c2 z-#%czvh)%6mM@%qHhr`G+K=d~hReJ$t>4Ej@~*l6@eXDCeP+`qv{V>bJQvYRJt36B zIH}^Sv7DVm{QE8H8l4bbeo9Y_rI4@_r(wryDPjmg^p0@H&e~e3~ z)rzbT*{yF%tsGZ8Hz?9MzKkV%>#btH4UZR3?%jO(^S6Wl9;Q8u*#3Ltaf#V4OYW`T zcwpm=%f+8JMd;LZm2Wt(F=DHg{Qf<5aS2T;Wm%->-1utfxb!^_cgVjLh7M~5kBD87 zTbJXoc;iJ86S)pwht+}c;#=k=l{ifK=_5L4-^^XtUyGM*E6-n~5!DzSwtjv5UHdzG z7bdToV7iPsGI7@g!!#zz#AOrA(wH+7w@ol=W7JHHxZuJg>~(a*!iS4y74Q3VzxinE z(%S|+*EcMO>luN=3(KR10TD>^pOIqm1+69m?4|BxS7+B{j14 zZE#4~*Zj)mx82m`oXtE3p9nPenk|l%>HouJz;JYVY+c6V$*({~nWw9t%Q~loCIGtr B;^Y7T literal 0 HcmV?d00001 diff --git a/images/44@3x.png b/images/44@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7bff73e97a87e184ccbb490c0927ee827acbbe7f GIT binary patch literal 1328 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�x^J-E=@94P;`>~k;r@CKE zrk0y=Hmr5u&0UHb-(DH_!b%8(UG}yHxZS8<@dpsSG^hse$#y=32ye2P9B2%=NXqYp z+UuG8TmcWlHJN+z$i^;w!LG0Ydn?3R!hGjo5sR5y%YRrYPXB(W&~qk2f=7=xCn4HN zp;s*JDE_P9_A-6q(1~cLNbj?HA?MeJ>dOqTI$G_L^3jGo+?wG`e42FW2P9SNB|6x- znM9Zh!Cv4TkCKD9`1_ZhIJnfY5L2?z|z$Eh-0wuJQeOz_E2Xz$Yx+ zBj%oi9*>RDvJ^*QsXc%`>vXJ_sm1}&HsD_q-#;SQHW*fgpeK{z{7 zRXR@hA62KcEQ^zGi@Z*j(2Ot*l=qjO2*QrWb-hrJ#_jqdjvq}mUBiZ1g`Hrv{B@O% zVq!c3B##I#x^+(;A`UNodm>)a2#wLTuH;F^ewc+FlvqMfO{@5KVDrPl8Cd2tk}Yhb zlEQ3g|AI7~zQmY+PLDX!*N`)?GBLT;?EWD&;}PtdLlTJ=Y@t$mDDMVqAkNiWKSsrU zEsJKs+}RE^X~249Z0|ANACVtKW4pZTabe4sGvc`@;3|Fi?$;O7IKkSGBuaq0o9%z5kc?}GUrG!qLoFv-i@^qK-F2{?MW zgN`$OV;%B@!f9NdgETsr)JfqY&fLn6B;oqnjGxi)^JQ3I{6Sisx_!p-W;)Idx z4hYU|0V5p+dFX+_?@1-1;?{Q^YNPfT4=yCA&*{w4vl0VW;k}Z@Sdthl`oi0-6*ch6 zjYP6ezz2>w^2C^fUx*im6s5$>4Cm33XchI zkxL~mP1*DVTp&*SPHjwGd9E8B^>r8yQqZPm&!BUYYzgYNiwOBN@RwsDvCAo^0g>DS zkJc5&M0*@l2OWGj0YieF-iX#nB6>+J(4T*24+U_sSEnNKVs__S7V6-^Vw`RvQ5gz9 zfiA;(Z6%C^f42HADb(y?R)Cgz$J@Q42X12WtXydS&Yrw$QTt&7}aR%bXlAww=Vd-}U7CWwh=2Tw^2 zmU>8Im#q~+=B2W-$0dv+6#8(W{?4?8)H)RJn*@{U)D{_?Gvabt!$BhjqqGT3f^_1A&dc7Mj5TJPtW=sX z=r?(otGq3r$9rM_EMZM9Y#(X-z^-)73MN4nY%vlKbX%W(cDPzQ+QTZ;Fj*^nF2Rdu zvOD#y?<-nBfRhq;j5`0b=ORyL;VP7GmD3mW)RPZWVt?n?LCU|>hPuk=yS!kOwZIto z^rMwDg{hj8z@aCQ>19jc&0NJ&Jq+0UY9Ryr@108#1zN)o|Mc+UmgVN%8}IXa7|n3R z?004KeI#%??ZNw1StlFQ9dIPQ7N@b-7v^GX>sQXvE%IV_*AWc#SN)u$DIFU7ss>%v zMW6$Z0Y^ly#0m6v1op??pfOQz*4|KZALv z6An)Y+%6BSexH3cIEqf*A&ReG`xrilthN`7n%I9~;(rol-*xVuL-58;XpIjX@D0hE8>hpF;uu3|>x49zM>aaO+jL{j}VEz?)7_b?(P zMToR=98FzZVpqtY9@Th2RFuTxa8MLZFg8p51dCGa&Rdj%D*fkfeDlCZ1YAY8gcCD3 zF6b=G{CJAAo}|S#WUn|c$S{GLy3}XCl2LJ1L|lC#uEX#t_uw?cJ#MBTmnXwvhbTov z<;u7cAB^{Ui(@8aruJe5?s^J!bYEqdpg zi+n4{H7`4Q-{aam(0GVChinI<>@1Fq@ZbddBbEr$V|yTkgek|0A@`#$x7127O=|`y z5`*kAb6(Yx)Gkoe)PE%#$S!k9=*WWiKp zfkGt!#pb3FtZQ68@)aTx7!-dcL2ky; zE39D>B7odgMhMuiB9uJC!_T32yL0W2Bh2NzpSr4*S1esSs~d@JT5h_=PSaze-z zEe^FOuY&>@_vlttx}L(q3=cN4xx<9WU$AJ{re8i308PvWhEu=WY5WYtaV44bqtVXc z>EwIr)QDQ!RGT@?aY{&MfOLpD5?;L|jEMo}x3veH&lLw5V~_nrFQn_@HVHlkpTqC% zo(snJzjL9SkLQ4SfJv9O12GKkMK!abbuAwvCcdl~RuUEBl|!p(VL$Hlp-WJdQDP4b z$fi|im}v?UMjo?SC}Gu755z*XF>dW4M(o-}JuUOZRR>wF3U^g9Lv}Kk<;ciVh=+yI zTfl31Kb;(ExYgj}iksFu19o0`hJtAyr~Gdj(k)xA@OndsH?iv_F<^#8Xn9LY|HN-b}?@6SFTKd(xjAl7TkLSGQzx!d^3sQ-DfewZkr2A+Y4MLDh- z;1Za&_hJdxE@_f$m1h|PDak3h+Z?LPQQ6J}PH-1F;?A6MH*c*qJMwZ#dQb4SE+;-c zw9xKHO}+!t>y=Po-A!9a-Lts%F4KkpP0P@!JaiBU6=>lXko2r(4>JaS0;;BYDzJ|j`lRWha&#&`Yn$SVdp-@3&hr)O6OpeBivtd7hJ!j#7 zXUapLnp}AS{HsqfWG}Q$ocmC(Mbm7FLF1>f?2*EA;IX9-NkRNq6`Qv%7n}>sn_eJT zovu`BA3V|t65fZir(Nk%J2Q3D*_CDNZTQ_CMge`ebYV$Wtsv1@TI?^cLcbu>wePZJ zaf(%u$43!G&NwIkY zGSyb28eFv|!fJ*!1q?lT!=oc`WzrTZq%QJfKB`*(di!GQQLuV>Km4t;keGQaRQP!a z*>R39{no^SbOG*+oM6O&gGsqi6GFPbMTAFw8};5#_7yGy7Vqn~g<(R4jQ8Y&AYojZ zMR_7omI$b@#XL<>cVF6`Z|M!-QqUh`^_KjTH+lJQJNl@J3`I-pM1hmP@fxU-&OBr& z{IuSZV{s>c-ps0q&4ji-v9u0h9`yCL)X-sm@Yxaews{(zXFasS4At)dc1A48D3EHK z9?Z&;ytP@|L<8d%N}GQ>A>OBi0UnAXQC}8qVr24ZZK0t?>^Zt(d-nz(H&RKfyTHvA zNKzN9@9DhI83oxFa@TswORcFe<-#jM=H&wO3G@lwSIq~Hs;e%M1f9f+Jt4$=`0R@& z^AVtwlZ%g6?tq4}=g_BP=Cg$)@K^{Te^MZ*4G^!iO75+j5 zO^&$w8Hr4bbF0e$Kk8Xve1drF;1@H*@qXk6 z)2N~5(~t?a-f;K=(LKiT;3^p)?y6^W&^|tsBEfIdD4G+hFl7fuB;%>UcDu+m4nxt zZ|Wi>%E6y(|EOwV^S#tT3PxD1g4tKk1qJ$@xBkj&3wJoRP|~)nQi*NVy*bM~&G7df z1hZj7Ha;Su4VMeZu6qbV8sK_LY~bPhk6d{v)ffGMThg-8$8q$cryJe|Z#`KGUNqYN z8d<)1eoWLgSR0i+n-I-AO4&B}O>GDMOgWDfU3*ZByig;3t6X}s544bk0LD?$7TG(Z zD=UAkWkuM$I%L8dBRD&esBQ~P?DRH8WX*8w>4yfIgDEuQ6ZW37rUF)0K7mk{w`u~7 zCVL6uHB0VM?d=D;AquqAZtQ0`O&bZtqnPgn0oQ*-d#vvUR7xI%gd|sr$7s*v+E$!~ z=&nX7P|vg1c_35JFM{~wXM)lPmF=IaUyB}Ls^Rvuoob{{@`c2h$1~#Oq0!uwJ4b3@ zI%Up$WYypE8)E(zmi2tR&XV7`wkBWu0#tZT7nHWFPvYG>=zRMudt0K+{Si%Dxcv|W6znpfVK;7bL` z!i|wF{Ei1|uN#9YR&(2T5z8(Go1k~(>HdS)jmh%9W`}6Y*6Gq5F-2Blz;4~=W^Va~ zGyAE<@83?U!yYkqZ~Rb)FvPcW(TB2WYZ|)C3Jll;seU*cR2 zo*n5IGYTv7GTXqC3@R3|L!IPtovGQ+XQCZ66=7|;c_q#jjevan!N(rG(v9zgZk80v z!2_-kNSSU>!*8eLFL-^W`(>YQ9BMRMvxK>9dbziqQH!|0CJmfv(<7*e#9<$xvtEP5 zia9w~gER#2F!?tdziv7UiMasb&Q`-Ou&aRmE}?Yl`1x^Dj#<5{+cZ~-IAL+gG#K!Wgq zMCFXU+7*B}b4j)n+_YwB$$w!uLK9uno1LciS{E_W9JWR={mQ}O0_A|#7FJV{dxQ

C?ACA_(UQ)(^16&`$rGQ3VOJ-$}iUQ*&#x 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 literal 0 HcmV?d00001 diff --git a/images/46@3x.png b/images/46@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce9cd1dbef964fd7aa314e2cdb2341a0c3f73bb GIT binary patch literal 1213 zcmeAS@N?(olHy`uVBq!ia0vp^LO`s*!3HGdYcxIrDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49seoArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XQrEMXl$WiZmDNz zYH49)qN8ABU}&aqV5x6tqHADiWngJ#V5k5ENh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*s+85C;f3L4>= zc`5nj#hPF}zP?tTdBr7(dC94sF1AWQQ}i-3Q>`=`j$$?nO$JJpkPS~fW9ou~^-Ts_fwllQLB4IE!jny=Kp zrpfGir?7bPvz|2*LOHiO`*DOsR zoz3Doq4(3G{e2G{OIyKE%_i+RlXX?Z^fzZWMzsowc=2w_zAkh^{XV>dxT_m;A2-3ieXXLhlLpK#>c$@24**R^RsqA#!h d75!QL07IYgx~D~btIvW86i-(_mvv4FO#q8Ks8#>~ literal 0 HcmV?d00001 diff --git a/images/47@3x.png b/images/47@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..320455c09e15bdbaf084fa2954e04e8bbd1cb98b GIT binary patch literal 6050 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 vT=0{%;KWM3by^pAx8!oEV+#dyOFctV zOA8|t9R(u;LoM0@_xTl4cd;;s&(~$g@?-C@Cqh($_C9 zFV`zK*2^zS*Eh7ZwA42+(l;{F1**_3uFNY*tkBIXR)(42l3JWxlvz-cnV+WsGBGhJ zzqG_w3FuOY7jg^W#^x16g9#X5`W1-<`i6Q2ATPlb`ugHmnwtw(U0f2Bif}JhgNs8d z3sUuiQj7CTi;{s6m!=G|s=&&*C^fMpzbGU>KL-|y0U7xv`NbLe1q#m2pinbc&U>IT#6lAm0fo0?Yw)0=|OYk^ZQC^_U70Bv?jEy^rQO>ryA&s6|>+bR>c zTTF492i2Q`+bw1|_38s1qYsK)q{xN|0aFl&2~WB}4m|Ov<^fZD5in^_Xe|56z`$7T z>Eaktacj@ijb4WXMB4J-sYUo)C<|~Dzwau*QakZjiAelHi!IL6%d$mTFFL+?5mE4R zNprKpzQ)-efBOHlzFxTPr0=Z*CwE%T`CMPGXTH|+vWe3irLr@V^b#jZvhJ9>a9i&W z7n5d%9}xyM+?tMSlz&E&Hm^IlXsOQ?F^2V;72Y>CF}JDR>c}@U zIc4IwmThb6MYYQ}JcYT=d&ru#q|PjOpt#jKWu`q_M$#IeBSk^n2U54Kdyu^S_$x)T zl2o~k=jL|UJpA-b`pT=UA0f;pA6u?GPME58Nalm-q19Jj1YS-tau8NdUBvg$i*3i3 zBV2aB*55xT^!PzT|Li|5+QknztDj1pX*zG}Al&a!o0^o$6_cgTx95Ch@QH@xM~4gr zcdPA~mOKAXS6o`-|E%XWH-CG$*VH)ADc1cEyDp!h{=_QDiki4}o#Ap@Y~^=MXPjl> zVioYT`au5YtVnrghP#Tqb1z+Bk2^O1%tjZ%UU^0~2B|OG_8ykn8V)L+JYD@<);T3K F0RUDS${zp# literal 0 HcmV?d00001 diff --git a/images/4@3x.png b/images/4@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1793278c8d01eac32b89b3bae5f59e1e5b10ea69 GIT binary patch literal 1651 zcmeAS@N?(olHy`uVBq!ia0vp^`XJ1~1|*BsC$9lgk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk*h0bFQqR!T z(!$6@N5ROz&`jUJQs2--*TB%qz|zXVPyq^*fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAddqG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SUFml8ylLKnp>I~Sr{6+S~$A7SUR~l z8JL=yxfmK4I>Pk2+e2cU|@Re z>EaktaqG$~|7>ALiDTtDY(5jd-MP>$(A&hiqJPGRl| zo%0(DHkv0Sx%@KwD)uC;Pf|Kk{G1K%viXx|tKJLQtQQl_-=TZ*Y~PkgHXPSKd9UBB zEWfXL?;eij{k9i%#z3|<_nuL zL?2?WmVR7U7s6oH%Kz>2Mzzxf2dnMvLpH}hCo_x3Ys&_em(cb*SE>rKk zn_*aJn_N9Ldg3>&tv-=ARqGsObtn5o-k8tdQg2|VSXg7UX(^}vvC=1>d{&A6_R(4* zc-xLQ#`mjcMntzc)I$ztaD0e0suAud@%q3 literal 0 HcmV?d00001 diff --git a/images/5@3x.png b/images/5@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a7be7705cb73e664e5e47280b0d5d50035941e6a GIT binary patch literal 1679 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%0DUK?- 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

Olo_9m1%;T^hka#>l+bD22c(Jc>vMBA*M`K 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 literal 0 HcmV?d00001 diff --git a/images/8@3x.png b/images/8@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9dabe358987a4d49f7d066b4a2beb71b4ba75b71 GIT binary patch literal 19989 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 XS%_V%r^|=n00000NkvXXu0mjfo>-mg literal 0 HcmV?d00001 diff --git a/images/9@3x.png b/images/9@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..adc5e2b80f7ce7d1e9d7e2c87a57e92becba3478 GIT binary patch literal 17890 zcmaI7WmH^2w=Ighli&^kf;aB2!QI`1Lqp^44#8a#+zIXkcemi~?)p0Cp6}fE6lB(B0u-7Y@+|U>V&+!X(w@%ds-6mJrk*yYJZ2O^ zf@J*eykG-%=0IaIcRO2q7hZP(ivP093%>vNH!}sX}k%>7to0D-c zaWa|$*tp5Kc$fejJlw483}mb<08VBW9%cYLBMX3+g@=~~K=$7s3UF!8W){3E;*$Se z7Whek!U_m<ExABRB=4i-$eX*qzbdh4McZ#LZny zovj^#)(-Y$|127tIJg1@D8M!SKTWW6{2#OSF8|$4;0|MUH+EzOFtPk=(ti@l%m4o; zwX^%5)Gk03^Z#4l|4+j%Y95Z}%qr$C4zA9o;1_2>`L8HPUNL8LW1xexnuCMwe|k~L z$^q!$V&&jSCMNc;*SN@NHLdN<96&B#|0|EYJg~32 za|D+xZtiUDW^N|w>|jUsU(M#V{@?4u@xR*p@4ROJdtEsH*SyT&$}sNJXubgHhCaLcwUv#-#R6>a;L#D$s z3S%lkCgeMXBg!aEb5lE5WBpBA8vXgBqJ62=z;n5F*5=o2`B`HOzWj>$bLrZ5B9;Lv zG(}}{Br7$Tq-7Je9_^wsugSk%`d+!u#~PnMX$h-)bTufV2fs#kqKDRg$y!RvbLXHIlIS!g)1^nDsNM3W-*0qV50CM)|wb1qMC??h9{ z&-ye9+>Eiw$ZqgCZTIc&2x97cs;R4UJjL7`Orq0dIf|B4S1%5ZrZS_0);%o$^h+nk zPae2_{6QB&sqVPX=xp-)c;8A=Rj|GR*{`?r@L%;|w{8?l#X0UKNYOzfVTjdg&Fw(L zqoJf4`g+`Vgou)7`Mp1F^}v&k2_7`>#3D}$eR!u@PKs*2JAFLHeWaZ()doeVDFIR# zb#WSPm$BBpE(E&s2Vd?^aMwK!vSEx;zI}mR+X^F{=nTBv3_?fKZL+t!UjEx?Hwxi8 zB?520=~{zI%*zhF6;CeKOX$#!+32uAA})l|;dzH7;B_yjS)qlA@j@hYTJxtDQ;G<) zNFlrIf{@K3T5x}rUT!I3pmvZXlR>|g-OIZN7B_g~{l4kYed}(~a5A>*X`2Q|ozm3}XbKmP^aa)9Lc{DPM#qyI5^eeR#P&!Y(T>*Yzfb_$*u$g~N#C&~cYS zLda>Wg;ayDDD=k8C0tTkYTfH@_}Ghkdt-c7m!KiM6d>7Tzm^f9lXePj^ZZ~9nu-16 zRxKQeql3ly`4Du$$Glbv6-hcahCvmAXHqLF~;F)Ug^KTk^w^rR`D;`JTlV4_t+N|7Xo$ zS>_J*Rlkq7Wl%&dHq2%=L0Yy3(Z?pdkTk}xaC%FYKEmi=?$1VFApGU2^&}Wg6uWhL{z1>piGt9#k=4-bjFA z;pEA2yI2=UxY%(~6>lzw%R=r>GCk@IK^D7M@AxA_ll^nUYYZ@W=n!H~FXs+1@w6Sq zj0SGC*W<9FZ$ZH{{BsJ+w>sy&k-lXaEm=s!9b(VJ{8sdOVreakL2Vj*Xz8c z%#T-=#C1;DcsTJ(HdOr61ex1l9BK778a;N3zcB=g9BjOJ1%)W4ITDkWv~V)CEvxh6 zAq>QjDnzm(fuzFv>}6mm?(x9OYu7~(;D!H#R92qXz`- zK7rr3%OjY%5x~8lwA3_-SVcGFpa~s$Fpcjav>1F6v{nCozRdBsv^W%7kzY9`2MOD^ zk92b%(T^+dP_xM}-FJL|uy|K&FNTvmu-@4SQeo3BH80Wh4uZ!ko(^ zn*<&YA{24&j>z=dBRg!>2mpP@G`V~yI!mwK9!TjWv@z`aJ-Xs_(6n;`4=ajTa@R#I z8k*%^0$w8lmDbqrX}mr4Bw?gMx`hY-ARCl(+(s!GeR+bnP@(+;Jdy^;pXHrbtcy#R zBv2xx5##u;5$w@mbF^Y)x_sZ%*z1PZs{Nsb7A!63y-v}+NjX3pM&S|xHem4{zG5go~Y4x#WbMVd7UhNZkx^B zqGh}@5W{=KDnhpafr0|>E^hnvQ4cumbzOCF^>+!EtgM;6G?VKpJZpBmN~Dpz$|E~s zE0B0nqM9*H`eAYJtv15f&!_#%y=U=E)*8mUo(Yb-NeU2WhD}!20S@(o#IvSZlUovUg(Hss3Ya)2-svcLVoH zI3ezq6SwWV2StW_-=5qU@1_YxtNZ-}&ArZ>+y}pxV1)h3Pgsah)&*6*emt5xA81WD z$yvlqyLVn+P-zeUeuo6Ku}L-Zz!=daq1GMT-dDU?J;meG0rf9s-y(Aa>{q!vmX$pO z8_AN|SVh=Zy>G_1LJ94a0PWVZMKA-u)#zwo86AoOrLF=MbxfrV2qjI z@&RV+YpiIZ@WlXw32MO2db6*^kBfp9B7dep{kdcmvR`byJZFqvw|+R; z@CRq&Z@ywHJjWpCReSdCgKFhI3K=*Qy!fFa;n&&R_oN(`37(8*r?PV}Qt+ihk{1K4*|a!ttz54i{t+2Ils?Ppbb_Nl$!M^6MMR6n()8`jsV6PFGBQsBSP}Vg zt+VkksQ$ik=zjmobpKY5G`-^uWT?+rD~PRh+Gx6&l!#tCr4Fyy)q7n+wKF}(Af7}R zFkNY%D&Rm8ZOWT2tj%+Z#SZC7%;B)nxPIJ;18GysiLZWt&!VwUlnl`txZZ<;6km33 zCJ7H53K>bK-Pc;DM4vY6^@q(wSgJ7kk<6trH|)mA04+K3PLmKt?Q)Q2<&vE^WeDQg z5EIuw{K6#zLLPJtaz18=Z34%84|`b~xB?G8#`&#Fy{^hOaMIJ!n3h7~-+lU=?=}b0 zDoGZCKJWP~cfQ)2*-tOeNi^#f7ewq}EpWyV?EaRDAxNeOUH&)+brDvz zUynF$_&iuk*NpmOV7@L-`f}=l)?70jA&{~De(CW?fcvU$u}pV^$al;b+ezb+6(#P} zgMzJ9zv(MvTC3ORi8e(Ct=H3|Igpj^5H|>+j+d`1FF(#Qog6yifr^8+^Xp`@CezW`^zl6dJsB{ zZT{SM7W)YUt^Po;HRs3V0|rJtYRHvSj8VeK#X5PO9%G&!`H#-WJ#fgY zZeNx?5bp7kdnPre51h7}gf~4az?bAPmFTM`WYrFa14Q>&j%k@NIfiW|kkvtPUsYof z>@}Eu9d?ze>bPI|UC)+JKw+~`p-f6v5l%vTTm6ho(WICw*leBkhB4?-p&RGPg6OQw zjU&ZTruS*oMSZ{qGFJ# zf*Ni$AmKKzt{LLsy+gQF)pkx{&2W=-{ZN+BS|Y<_`L6RB$P6-^ zkhpBL`#U$ou_!Irx`RwY0&PnzicC!~kC!kw-$@!!Nw>m01iH`S_qbLwEFx{wE5PDnC7&6~E=HuFwMUp{GLSDGfUy7r^ENF~Y ziNF@4BZO6!y;%|nB=&5 zysTtp;}@D=E=prpS?4ji?;f27i9ykahPglZUYn-#2jO?kUaU!ol^wLw0~Noh_c^|1W*Q>!2tPI**!cAdv4i* z{P4QT0WmxC7C>%3jkZaLu{6M7G^x=0szHZm45Gd*1QFy;yJfD=JtV+t9U_=I1G9q< zCF|65_Y`N7MQZs_sO zJD!3IMiFN-!7tofb(yr&oL)5`lOyqcG!}5GFv3#G2b%Q!2}M=am-uv^^-KCIvdOYe zGowTP@4%zLd49>$k(X8;=CChA!bjagA2&i_ z;P_w4#;YBp{EvTpo%pNY?jw0%Ei(iq1s)uXzrW)9LCE=9sb0+x9GOdY6`#M@#UEGL zrCk7KB+0!Vh-Y04*a?8@zKC4nJ`!%zM(c||`P*UG<@-Z2hJZuGzfK3wrWoHb!V7O3 z$Z>*^Pvu`vFr__HJ+OZ@->Te;90Kc#;DL{nuex#+mBq)aC}C_ zP)x9Si(P#s6g92;Zt`M~yBT|8bVol?QA%Tkp&lW@=7Qi3VDErRnB()8N&o6P1y2 zZ0wF>I2G1JbWI1r)sPPN%@t$F1N4=D$ke1I*p6{|^ z4v$Q!korN`pSJWV;vg|i2Y#&-z7Nv;xVsthg0Gi|3_crp9(~Ecaw?`;7$>vTp7c=6m3k0+9kFrj zQTt;tV6{eUdkx)|i3x@0)$K3(*1^=g8Cbq6s!-DX{i0^64Ro;sk4~~`iZ73k8dg+T zZ2wite@xUDO<{CzOeagrr*T4{^4`GbPMvZ17x}DdoIvA8+NG@FGghb2FNY*`pfHgiCxvrIRVmZ*^ONN62U_ zAT_C%h+m;Cq%)A=Ig0nq8p0HtdNeNlIu9>fY3KF{m>}^sz|0RH$aQjD1NW_ugbyi= zyxDg#@k8u~HPA+7UE93L=_!Oj!U!Sg@X?sSvG#?D@A7xm`y_8P_Zlz~-rjk~dcXWp^r!n4B0 z&LAFmXZ}sb?Qzub9m~G;h314YMFt#c5~gx=Pa^ zG(BRcRJB-vK+yYf`LosOVnQaj({^&fAbRu{wci{^Di$vIAha9j=!%1;2FqzjQg`w~ z1KV)7`q(4*5(8(@w;KtKq@>TbqY;NPVmsGa?<{>aS!OB0n>e+Df&CSvtUk}T7b`c( zwL;2iqw0tVQe9xo>*ny<=vFgYk6i*ZsZ~h*fStOk4lQQ#GqHCNkhP>W1`OA)F$#Fb z*nzw88Vfc#qS|;_f53XpO50?ptTE|Fs?4Dr595REfLP%OQD0+q7JZVws*I&1&w)pP z*xU8W@jNcwAggVKihyRLmHMoH7?lrDni`+`^*w#kUSqx_Sag-Npw?qSW03WOC#uRS z$fGt5J0Xj1vbyv6J8Xg0=&(UhJOL(cau#6ftQ^PVaPT~oA$_KCj4XnWL>#GV@eRjf zBFiIS{z+pXpdn2$m(_eEf;xqbe%bWRi8L3330rCtVK{5Ma1-Fd6>nigC2ET)(w1&6YS1nlNVe=y`e$eaHpsI_nbxB_kUmr%H z%NTgU*|&?UQ>(=J($E*GqJ|~>R5Fm}WTnfks1JHXPKYgWa95K4PS#wzNTye3CKI@m zfJctsK<0C^KOTWw^l-YYdVwKfC}vf)qT~9B0kwRkY`gVlW2V6~yqWsTho2^v3SW}% zl3lkyWEitSJGX%}^DOk&l(^P-^FfhccZpQL6g3NbrF+ssU?J&7eKzGqvTtH-?QjOo zWGO>s=0&d9X@DARw#&`qDM~e+{_+ea#qRf(V`)yY-s}D&b0F@f@!v8(sI#XMLx>6z zS80U+Hs8L}tCiY^kB0hC(T1pmTZLBu!V1pF=FoS<7Akd%&v=D-KF*>tfbuo+$r>x} zX~@*1UfWm1Xe9jZd0J*{^s4KCuo9V6gk>Olj7JWvYH61EwernV7PFu@)7Lbz!bn#Q zE9Vf>bO{FS%|zSG4$Q%oGU(3%o+gu@#S!~O>;&>UzDRZE$H^)CsX#J?DX|}erwDYhp1j(PCfJ7{Am#7w zXmwsQkungjR&5(XFFm4J8JTG5TI0^``qhgn_9)L^1u+tHkehs*C%eJvhC{TS2AEW$ zM2kJBBg^Xh`iM-Yx_T9cAv<|ATb#S4Tv->}bY3^?1+PDgs4gHzRalkZnBa7AA~96Uu(1=-!J+LzSxUmVUkiG~1(!T`-a+k!s)iEhtu?SlbUz#ctIhYPa^VG98WRIA;O#QZ=6(lZj?~2-? z0KWWxR832wI%NXb5qgL8H z=#)}QSe$oR z0{L?=3f0!5@Tfw&B}iHPwHUpxFX3aT?DERUuE`nWIupD{{pb)2x{Rc+TDl363|1CH1aYD<*Wr+d9t5J<4<+lSR3Xl&gUaZ~llQM6=tOj@^X_S%zbjtMa8@Z&oG4F7hZl zU}HS9%0yfI8Hl{5E=fZKm6L%&5kX-kr^Gb&HyrRiOr!$-?*Ax}y~K!}Tpd;Y%Y_qMo5TvEn^R6lLK)5ANm znsC*f(CU7*jfM)B)p_g7k6{Yl@5GJe2)t;VqAt4)Wpy#*k%i@omR2q>rcjg;AI2=8 zHcl)8-@zPQB>Sovxf9Y)t&Zfoa=Tx%`@H0l{P-BQKb@3SqeD(lkafEfZ7Z9m*h5Bf zsnkYrc1fMcMmZ&Nt!GcBJeKJS_e824(q}&ib^E6a#FssHmHkfL0pC*CRlNd_`C0bl zxpZBp`=F7-Frt~Ahb~1yaY;!W0+Y@N#xe;XvvjIUPhn#ZTPB}k=uW;QMd`7(SS8O> z86ZcqLUSyWrze3AUwOkNo0j3$g!EYsccs-D4?!!i?*HB^2YNOjh5v>a&f>85*`Vg(H zf+@o(R_vMH9-R@3XlZ?b)qS8_y=UE?(c46L&uLz`H&CiTqXv6P{Z%3z9tviLSnEq8ZOQY#xy zJE|hcu@T6hB{B7*c*%pJ@l_m^sGMfq4Na32NbzVpv1m%rl~Wi&!AcH_`4=L|)+ah* z`>w&&0y`>`3ps8yt_aiL3gJZUFvZ>>*Ku%m$bp&$HZ#X6^;1^uKpnjRQh>2VN}B8`7NqHfO4#T*xf;(c~VR25zZTHzh) z7}ugIFR1bO83Oba$50p6?>w@OQ$Mg)NL146s(8dD2(elYG7f_~xzS%9lYQ_pTivH? zp~V)3;2GYo;{0ssVztpWQ*`ag9axGCasQ-GPGyp`xHtB}#pTelXs`Za)z{ZxCcU-fWJ1)WCX6oWiqH{%mzDKX*+zTIOcqrcC7H1~)dsOQ{b6qZ@^a zRFPr~fop&>;b^Ydra95HbxB47>Yom^#^YKaEn}>l)VJsl%n#Tj%aJ)9^t1EkF+V!Z zO}Ojfy{9EPQLt$Mr^uXr&QAwxo+p)&h16tb#^Rn4NtUELCs%Y{{zoI0YL*2bFZX9& z;n`~Dz#eiKmvFY+wp~3aPl})@%O6=~qy;OO90608GMQ0DfaH@Oxvy07>dz3Q75BZeC6YYST0 zi+$?{) zBjso3V7-Bb^)=B6%DkH`aUXYSFXY*=*36Q%fcUeq1wJ1)Xz$muDJ8|R>LQH)=fuY} zC1cf^FOA_%%=?wkhEHUhB6!Vf!dm#r)90=GIi1FuzgzhxAK!`QIFoSafBz)giRD#F zwzVU!pkGy%;@>;3v6u1WtZ3>)7g^e5oyn@LB;MQB^Ezv=^CYemS)wbn6YD!hgHGX; za5n9W`LqZ>YVTWiKC^(brqS;dMos)n`o6obM0P?bc{&nArp zG;ZI)z>^a9F<<42zT(J{YC*cSl=C?4N}xlK{Twz@G;jDt&Fj* zM0RS%eS@S)o`#6iHmz!Rt(Q37^LuQ4jHg6889r*%dLEE6 z5kZDU3K4F&IcIl-Atw2-*A#jfI_bKn1;Xw2Ab9u@NjTJ zNNeo7(eISlO^PsMPPqw9PdUH%iCZL}xv4~Q%i~v_gS@zZ8wTj zbK&bzhS-p`ODVZeBo5JX7G*(Y3U>n)Y(sDlsy*OjAl`GJGmgHhnPNOG9xmGObsIM` zZ6ODK;2J`~#k-l1wpKdUs^vGBF_BL`I?fOSzRM>dY0#wxhe8Vz*sk%hBsDey#j%~D z|G4#qW2QgujpOjS^|RHxnIx=25f_G6Rmy2D5)pENSrl3OtiD8m#Zt;n6|0>*$UmFOTXjL z)FYFS_%NOB{|$~htj<@Fg$!7UwJRgIaCqtQ-IC{Qnszoj3gc84xeccWab<2!}%I!ee6uyh2oxe_yE6LLsEI zkVKl93ICer$HMmAY1kbLj-FP}_i0aFBs{I3HP&0?Q&%}d(-$$-i#`alz0oB59c&19 z-@w}vYzXE`Io(u(qnTf_hQ>KQolh73W*dFAkya;Cl@$0;e`o`Wl^!rg8FdE1S|f#F z(b()rr6OH+rLWyCg;WLW&ayJ49@7O9QFd3!BZp8sLFj^766|A;nt~q*QA{z|gzevc zK*!@H&f})$ayyy0IC*bJ&~R!aCB>eA7x6UKf?=RU3r~$Kb%v>I>0#z!@ZWW?IL18r z=!C#@G=-6Qn8-Bg@b%hozY~wAYF;!HvU0d{AVzts5iH<=5`2pOT~q`oSBkDI&1^R> z5p>52Je>NpvKvFT$Y>=?tW=zpi}e` zBjV$?T7{t*%ypGer@wYhAvcpkU9NwAf`O3{|J$Ee6MFVv+ZuKzz6%AUrNkuO!5DfT z{R%PWvdK`F93&MLCDf?WYZ1)Y(Lx>d?jP%DvvH5!6^Hrbx%-P3Lz^#QVXm^(s`I{~ z+8TEpOj2oA;_GhlnTJTmqmAqV3@ZY}@L1U^KyU(!QYXZV4(sh6qh1#sO}oMjRYRL$ z_N&dc!?nmv&3W2o{IYs)Pm_MV3m}i(Q}7G`W!t6!%p4+tz>x+hUo${ z;bAZyO*|oltu?!>5!s%_*-Aqh{0hO~&{g6uXOFNi9oUYukJ-w$O0=1_4Gj&7v4mXb z{sA@ZyEoXmkK$2e?N9reeC!BcANYmI|lmPQ1-ZdsAIKX(cpGbAu#o)`T@Y>lvsR<+Ap7UhvaYnz#`)?{1zV?ISk$b zqgy^6;8540HOE0XdcL}Vri%Lp|HWe_s`Xwv8ZH>@UudR-v389n)^MWJTQgr(i-I%l zTfchEY!7Mimxh>p3pP;_u8mzRhIJHXJtbZVy;%pGIA zIUNh9V&C}$krMngR3I8cZ;T&hmk_B_q`{g3$bG7G@S%@MO}A4fdck8g3-|02dc73W z;q7}0{ACmape*bw&G<2ziI#7p$Dr4IiHYO5zOmNY`F>YjZb(PsOfqgD5`4nTkA0q{fUyIVtdYe_=_TRpE-0a0{krWO)oODZKeXk%XAAV z=IN0xIeTfvs588nYMAS($RwWg+w+}6=iP!XvN&#Loe=Z(CC##yaaomAo517H$Ukyb@QRe7lQ*ClnRHF(*u+t zVwe!Zn8ix1+HDTwKOxCSXGErV$MfhB_7C~clj@A!xXX}VT&BMw2ckNoh8K|s0?a~w zt3Z*$2s6NBHAWzIeY{;1gB_!Zt5XvGmac8ibW|Bi%;K|@hHC8>7vJ~Sr-!AR24* zhq2!v;00WISqh1ysKoyA`RLYLjO)}U9jFzxn8s-u`rI+Cv{}^AoPfw;as6|t=7mA3v7&B?Fzl`2+c7|7jfXQ#-7lg30a<|MQQkq zEHu`%nqFL=zeM;uo}~dy6@E-sR>^?|2}M~)NxUz6_~hWJ*7|#zW?e-nKc_n0NlOsT z2gVgJs-qyx#~SgSRMfL0J!eMxl64XH3v&ezT zr}<+Lu1@|gaOS7XFj)Ba$zm)GGf#cYUSnT`p>1^F7P@+1_A+vf2bLZ&1QL1wIDiAh z{|;79pn{R4vZ=f2V|u87hyiR(p|`h}y!cSuI^G}Ug3TS)pI zG?C5sfK%2)r@8?MJ@n5c@z_mRo+diV`b-#lfJsLgNs>0sLl`HaZ%R6eSZSmJ$zIiQ z*)r)i4)EjcVFT%M3~PPMGmluc76s2~T+6XwU9EbKXc3GvieHbVvvKH0eQN1? z-DCEe3>Ji0)?r4P%F|}BaJbvtA}HKt@Fmh*@89>PMgC|9&qEjCw2u)Xp>(D~XaM#N zZ?Fc#Hzt;ZK=t8-@&E| z6DxEYzP-$o4F8VdjEbX^hNfwyK{T;LOXI=$ox?%v)!?X|O$;Ua&Je@u5dLr1u zsnpeWtZCNwa)QTYpI=>9*UJx<^2f8$5(#a zAf96(ui~pA8!N`STDHvX7(AGx#y}$#gDq-OCm^k=dtG14Epq z;y)MAMnhG6NG9P6H1|oE!xPcuq!-vzuKwvK6C3Zqa$uA8bLABSUqz9}Lee*BuP7sY zQm``id#LWgd)6HZWc+t|YzGTi>2i4)2}~(+ugy!V z$@%B_*Y)nkHHNKL1b^3*5+zc*+JMq`ky}wU=3Ae{Ptpf89$Rd=PbdkTj7PTC$q#PR zi1@d7MLMW7oD>A~LyNpU{0F0$lk52b*mr%4LnF>3as9&71TZCkFIrEkGQrw))-I^* zdwgfpk0!0&`Zt}_h|Mum5!Si`xjn~d^(qd%HxA*gT2$e8H?2kY7mQ7#^#U!@rec+d zgTRvbf`+KZCk*^THuR7;Y! zWR?67QA?pGI6)Vanyw0cu^aXBQCN_Mrv z&=2{iDG_~XH3{qt_qCFD!kT?*-)LYC%x^8Ykm3@} zqSsGk`XwlF5}=|z&9j!Wi2S2*mS?Xas+ay~UG2jAt^dV%(LZ=uKL~!iV_gTYauQ(b z5TE|k(-GF9Eh|+5o&U1?&Uu(~=x#NVawR(cY$A9+Z-A$gP{EoLv)|xn(XTALj7KMfp=Nfh^^N&OH%*Nz9d9OFQ9~G{!tDg;yEl1@_CCnL3 zI1vAc`i;0ZE`6K8H3rBow}DU1xU_=R@AK7N@6Qk5*==m}9`s~oIsMTGmBWa0X^Vwf zVX))^bwWA#TT|3xFN*|y0Ch)$rPFW{*9?MH4S=E~+QLHi8Hh*G7b7&%;zxyH^2HRh zRvUr2LB0D&$*d4a9gPf!knZQ}Q=)#jQNBP|T8m^v1?&wzx5QW%2u#twpMn(;KH5oJ zQCIXDo5fH54hV>=?ZBg%_-gG5}oIHSPt`V5I~e$I*x^PwUW->XQ7 zUU*XP_;ps&mLx9g;*)p`wm!w%L7{hLR1%ZjeRv^4d&4Ye2(H)R)Sydk^3(xchH*h+q$US8eF>;3X~1MTC^@Z;B3 z>-{6Ftz`brY6XV0awaZT)d$gDuk9Ak;0&48JlGF!_3a&$CS7B>|DidCHP=R zM%?raSZ;tx+5}{IdZW(;lb58EnOqmvEfd;vf54>XAbzb$wz|lI7gZk}Wql6o{sv>e zzQ)y?3E~UCe6FDWD7W8zeQtv;TaX*{R@+5qCdR~{Z=Bua&e+9{Kv6bH6D4YU4nl-_ zA86yJZ#UL`n@G~efiWgz0v?ZBVYqwSb3j*Q9pS5m?fxi-Vmf;^vnu%2^%e?-|TM%#asFCP{Qc!T9%DTqF+v=N}Y_ALsl9xCF{_uRGr5;7K3|&;9cN* zVi8U7JCx5E7?B&43>0poi3TAQs*K61F#o)2CfLSsaSRYeS$m^cg>1<~?!drjAdd&QEwS|q^oggLPCkQD%#6A}jo-lVY>(&V7>A0^L5k-!L zn7S!G^Pl%T@Wunen%Y*<+KgOB2|OYUen6@VFM+OihuQWhRCZPi>t9~26xhL_7)?mJ zpyPq_rz_gffky}L_VvH5A)%c1+R_t$oEx!JHMl6q7>prJ5r5E!)9!Or2=wXzfy&KC zMVTud#Y%0=vGPrD+ati;-9g8L%RlYD_*aou`|uQSWAf0#^GMhjIFwP%6Z&vPq^&0d z53V6r_&I{NbPUROPKEk_FoH}(FXg7SH$No2RMJIjT zEbD_9omnjh3QR#(2BkDT&okidCyemy!(e*9oHeygFTYnbFbgI< zUiIS|R>Y2h2^>FlQwgoF34Dk)>D-h@26QQDFD%A$T$wvO8$w_#RFc@|cDi_29-u6^9glYWeff5P(18IX$R@UCqX>3-(4+Cvn$o zVvelwgF*%-n$Y;G;fKGA@sl{XZrn|Hl2kW^O98~onU++@ewrpbR%7~pE==4x{$*5~ z`E+w&gB%Aw5ayKIcqe*JuAkfAOYaJx?yr|hvGZj+}vC=W+>5D6c!cxc;6S+vYzkh z&Z<>lQ9f5{lzNvq#G`_hZLPAyi&IB+)K+4@k52;(NR(2cewzw!vSN+9Q2&P#BSoTT zq##)z7WH<3C%Z`>f`;W{!7o{+7OH;&Yr4R{Dvis=B38U6+px@i1Xqo0;_OhJ;wWjs z6+|eXXL@%jb}N8Moc$iUBK*wNqlA3>V*!=^Ku1ZkvGl7%VlGOW3zNUXhuv~xSei7g zS%&D4dn`N`v%zW+wV`Cu>PWk)dQ=YTmvsk=6Gr>PR)wIxSqvNKZNy>7<^G$w1R&kj~P$u5t zZNm6t&hBNQo@p_e^tX2n^f$iQ!&^-BoLz7j7Fj;HTf`aALz*}EtNe6#O=j^*=80{B zhEhHRAq*UgS*?`Qh|6AumJH@rhnfwtHbwON2xQZpgn#GgUQa3!G>{(^E$H(;>0k zj(RwC3DJx-Vn6(l@T)tFm-5-RH)pi{H6>boF*S8J*KhgVhr|>kWyDL0(53aDTO^a< zCRq<=_K<|KFXc@Id1*=M!TKXw@c|qp&r1)1#Zjeztv8-~dhCG>Sts^9vuVN#i@sYh zUp^!&C!I)jA5EEALrN|JX*rQdSz=njfpqO5{=KpM<_+zIz zS<8wlSc@6Ua;`+Vl!n6ZfNx{kHtqhKBzK;1n}B3KN?AP)lU_*!eadN`uLKiX%I|P4 zc~~+2zdxyiUrJm#60i%jTsV)`^3u$zTpcD%3ga??L#iOY)qrg>KtgLd-#(2Q^&n!DMj-ToOjx@j0W2S7qlKR7E*1P@Qp z$~?&fJ}5NYn(x`eW2mUNXb`quVV^SeR^UkjhkylhY5X*k13eGNh5QE90b=J6Z8kjo z;+}WVCFVbs{g=A|F)0Z9T%$#}2eJ_?MQBps06;-RiWCY%mZ(8)Z#x|{JG4F(@2D1YqelT1YFaDyeva%na*lM=d)44=YZ^x#(qfxB#tLh;w%{BVRCHiVD zBH|CTRYw5$=&Z&(Vr7<6KbsL7m)HX22(^??6a)e_TlRD&9gT+2Ns8OHe{^?>cvbos z!qv{gy-5>SCG_MRwB?|!@kmK1b%U1YSCi31AInC5XtL;qnBj%bZe-VMbGV#ldHHi5*INsDP^p@gaY*y*}PhI}#ywHhY48e5ThZ;l_zdX9rw_6fEVlADG!IDP|Sm+L^}gV&JN&U+_Jn4ld}=gpg^8_XFx z_((!088tOE+NhI3awU^jf$+dPTZ5n_FfN;|Q9tR7bgONe~2H!=b2qS{m^PSXma9q?5O|9a_ z@Vq{blVCs_Uffso59hm(4uAW%f2#=xcieGDhZeh?QXIzvF!`Y8&0~)}ref#3^Ul+i z#3{aq4T!Gb3!^~~6AxRW_#BTh0vW@^S>w=W) zpr80d^XsH?ylcYp#OTMi>* zL1E8icMTxTVrNZ{27O1^&bn49%X!^~5A<1QLwfqah2VlBG>R`2X0QJ5(y7ppFI#Zt$B+2!{R8#YYCWNx6u1J+%= zdbL~0%~rjH@knz6{4l!vM;T+sj-?fE1%zGk_s*I%OVi0(8@JqY3u1h)zU)h1`ch_@ zmk*4p$&;J6<|elL!V52?AL~i^xDHYB6CB~?LjV!nm1C}=aM@*-HG3U8AYrk1V6_vu zXbGIccxmOTS4NW|`j}_m>~fniV@8}Lk!@n3w(0$Ci9dhb#{U;!0AlrH1^1b%$p8QV M07*qoM6N<$g5KOw-v9sr literal 0 HcmV?d00001 diff --git a/images/avatar.png b/images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa21d931ef6217b8bd7eddcac47d25ce86e0f3d GIT binary patch literal 3499 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 literal 0 HcmV?d00001 diff --git a/images/noContent.png b/images/noContent.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8c633a0aab1a8f387b517c6c69da4f5b994a64 GIT binary patch literal 9176 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 literal 0 HcmV?d00001 diff --git a/pages/about/index.js b/pages/about/index.js new file mode 100644 index 0000000..df4affd --- /dev/null +++ b/pages/about/index.js @@ -0,0 +1,79 @@ +// pages/about/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + us: { + + }, + isGoHome: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + app.$api.aboutUs({}).then(res => { + this.setData({ + us: res.uss + }) + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + return { + title: '智慧云馆' + } + } +}) \ No newline at end of file diff --git a/pages/about/index.json b/pages/about/index.json new file mode 100644 index 0000000..396dd61 --- /dev/null +++ b/pages/about/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/about/index.wxml b/pages/about/index.wxml new file mode 100644 index 0000000..e20cb25 --- /dev/null +++ b/pages/about/index.wxml @@ -0,0 +1,6 @@ + +

+ + + + \ No newline at end of file diff --git a/pages/about/index.wxss b/pages/about/index.wxss new file mode 100644 index 0000000..cf670ce --- /dev/null +++ b/pages/about/index.wxss @@ -0,0 +1,23 @@ +/* pages/about/index.wxss */ +.container { + display: flex; + align-items: center; + flex-direction: column; + padding: 180rpx 50rpx 50rpx; + min-height: calc(100vh - 240rpx); +} +.logo { + width: 400rpx; + height: 100rpx; +} + +.info { + margin-top: 60rpx; + font-size: 24rpx; + color: #FFF; + line-height: 36rpx; +} + +.wscnph { + width: 100%; +} \ No newline at end of file diff --git a/pages/agreement/index.js b/pages/agreement/index.js new file mode 100644 index 0000000..7a2871a --- /dev/null +++ b/pages/agreement/index.js @@ -0,0 +1,78 @@ +// pages/agreement/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + protocols: {}, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + app.$api.protocols({}).then(res => { + this.setData({ + protocols: res.protocols + }) + }, res => { + + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + } +}) \ No newline at end of file diff --git a/pages/agreement/index.json b/pages/agreement/index.json new file mode 100644 index 0000000..b43ff7a --- /dev/null +++ b/pages/agreement/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "智慧云馆服务条款", + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/agreement/index.wxml b/pages/agreement/index.wxml new file mode 100644 index 0000000..93d940a --- /dev/null +++ b/pages/agreement/index.wxml @@ -0,0 +1,5 @@ + +
+ + + \ No newline at end of file diff --git a/pages/agreement/index.wxss b/pages/agreement/index.wxss new file mode 100644 index 0000000..273c9c8 --- /dev/null +++ b/pages/agreement/index.wxss @@ -0,0 +1,17 @@ +/* pages/agreement/index.wxss */ + +.container { + padding: 180rpx 50rpx 20rpx 50rpx; + min-height: calc(100vh - 210rpx); +} + +.info { + margin-top: 60rpx; + font-size: 24rpx; + color: #fff; + line-height: 36rpx; +} + +.wscnph { + width: 100%; +} diff --git a/pages/basketballGym/index.js b/pages/basketballGym/index.js new file mode 100644 index 0000000..5adad51 --- /dev/null +++ b/pages/basketballGym/index.js @@ -0,0 +1,292 @@ +// pages/basketballGym/index.js +const app = getApp(); +import { + getCurrentPageUrl +} from './../../utils/util.js' +let id = '' +Page({ + + /** + * 页面的初始数据 + */ + data: { + venues: {}, + isShowBuyVip: false, + buyVipObj: {}, + showUnclickMask: false, + showCardMask: false, + flg: 100, + isWxLogin: false, + isGoHome: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + if (options.id) { + id = options.id; + } + + if (options.scene) { + id = options.scene; + } + + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.venueDetail({ + venueId: id + }).then(res => { + this.setData({ + venues: res.venues + }) + }, err => { + + }); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.setData({ + showUnclickMask: false, + flg: 100 + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: this.data.venues.name, + imageUrl: this.data.venues.images[0].url + } + }, + + // 打开导航, + opnGPS() { + wx.openLocation({ + latitude: Number(this.data.venues.latitude), + longitude: Number(this.data.venues.longitude), + name: this.data.venues.name, + address: this.data.venues.address, + }) + }, + + // 充值 + recharge() { + if (!wx.getStorageSync('accessToken')) { + wx.setStorageSync('history', getCurrentPageUrl()); + wx.redirectTo({ + url: '/pages/login/index', + }) + return + } + wx.navigateTo({ + url: '/pages/myAccount/index', + }) + }, + + // 打电话 + callPhone() { + wx.makePhoneCall({ + phoneNumber: this.data.venues.phone, + }) + }, + + // 购买套餐 + nowBuy(e) { + let index = e.currentTarget.dataset.index; + if (!wx.getStorageSync('accessToken')) { + wx.setStorageSync('history', getCurrentPageUrl()); + wx.redirectTo({ + url: '/pages/login/index', + }) + return + } + this.setData({ + isShowBuyVip: true, + buyVipObj: this.data.venues.cards[index] + }) + }, + + // 我要进场 + enter() { + app.$api.venueJoin({ + venueId: id + }).then(res => { + this.setData({ + flg: res.flg + }) + }, err => { + console.log(err); + }) + + }, + + // 弹框背景禁止滑动 + unMove() { + return; + }, + + // 关闭进场步骤弹框 + closeInStep() { + this.setData({ + flg: 100 + }) + }, + + // 弹框背景禁止滑动 + unMove() { + return; + }, + + // 关闭购买vip弹框 + closeBuyVipPopup() { + this.setData({ + isShowBuyVip: false + }) + }, + + // 购买Vip + buyVip() { + let that = this; + this.setData({ + showUnclickMask: true + }) + app.$api.memberCardOrderCreate({ + cardType: this.data.buyVipObj.cardType, + num: 1, + type: this.data.venues.type, + venueId: this.data.venues.id + }).then(res => { + app.$pay.wxPay(res.pay).then(res => { + that.setData({ + isShowBuyVip: false, + showUnclickMask: false + }) + }, err => { + that.setData({ + isShowBuyVip: false, + showUnclickMask: false + }) + + }) + }, err => { + // console.log(err); + this.setData({ + isShowBuyVip: false, + showUnclickMask: false + }) + if (err.data.err_code == 30022) { + this.setData({ + isWxLogin: true, + isShowBuyVip: false + }) + } + }) + }, + + // 关闭 + cancelCardMask() { + this.setData({ + showCardMask: false + }) + }, + + // 开启会员卡提示 + showCardContent() { + this.setData({ + showCardMask: true + }) + }, + + // 关闭提示框 + cancelDeleteDialog() { + this.setData({ + flg: 100 + }) + }, + + // 点击提示框确认 + confirmDeleteDialog() { + if (this.data.flg == 2) { + wx.navigateTo({ + url: '/pages/myAccount/index?isPass=1', + }) + } + if (this.data.flg == 1) { + wx.navigateTo({ + url: '/pages/facialCapturing/index?isPass=1', + }) + } + }, + + // 取消授权登录 + cancelWXDialog() { + this.setData({ + isWxLogin: false + }) + }, + + // 授权微信 + getUserInfo(e) { + app.$pay.payWxLoing(e.detail).then(res => { + wx.showToast({ + title: '绑定成功', + duration: 2000, + + }) + this.setData({ + isWxLogin: false + }) + }, err => { + this.setData({ + isWxLogin: false + }) + }) + } + +}) \ No newline at end of file diff --git a/pages/basketballGym/index.json b/pages/basketballGym/index.json new file mode 100644 index 0000000..e7e2a94 --- /dev/null +++ b/pages/basketballGym/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "篮球场", + "usingComponents": { + "confirm-dialog": "/component/confirmDialog/confirmDialog", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/basketballGym/index.wxml b/pages/basketballGym/index.wxml new file mode 100644 index 0000000..8d75912 --- /dev/null +++ b/pages/basketballGym/index.wxml @@ -0,0 +1,148 @@ + +
+ + + + + + + + + + + + {{venues.businessTime}} + + + + {{venues.address}} + + + 导航 + + + + + {{venues.contact}} + {{venues.phone}} + + + + 按时间段收费 + 充值 + + + 收费说明: + 篮球馆暂未开放 + + 每日{{item.starTime}}-{{item.endTime}} {{item.price >= 0 ? "¥"+item.price + "/次" : '免费公益'}}; + + + + + + + + VIP会员享受专属特权 + + + + + {{item.cardName}} + ¥{{item.price}} + 立即购买 + + + 单次 + 选购 + 立即购买 + + + + + + + 篮球馆介绍 + + + + + + + + 我要进场 + + + + + + + + 进场步骤 + + + + + + 第一步 + 进入您所在的智能门禁人脸识别区域 + + + + 第二步 + 贴近门禁摄像头进行人脸识别 + + + + 第三步 + 识别成功,门锁打开,请在5秒钟内进门 + + + + 说明: 余额充足情况下,可直接进行人脸识别进场,无需再次使用手机。 + + + + + + + + 会员卡购买 + + + + + 会员卡类型 + {{buyVipObj.cardName}} + + + 价格 + ¥{{buyVipObj.price}} + + + 确认支付 + + + + + + + + + + + VIP会员享受专属特权 + + + + + + + + + + + \ No newline at end of file diff --git a/pages/basketballGym/index.wxss b/pages/basketballGym/index.wxss new file mode 100644 index 0000000..d0dfd94 --- /dev/null +++ b/pages/basketballGym/index.wxss @@ -0,0 +1,392 @@ +/* pages/basketballGym/index.wxss */ + +.container { + padding-bottom: 130rpx; + min-height: calc(100vh - 330rpx); +} + +.header { + width: 100%; + height: 350rpx; +} + +.header image { + width: 100%; + height: 100%; +} + +.cell-box { + margin: 30rpx 30rpx 0 30rpx; + background: #1a191e; + border-radius: 10rpx; +} + +.cell-box .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + border-bottom: 2rpx solid #212025; +} + +.cell-box .cell.unline { + border: none; +} + +.cell-box .dynamic-height { + padding: 0 20rpx 20rpx 20rpx; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); + line-height: 36rpx; +} + +.cell-box .cell>image { + width: 34rpx; + height: 34rpx; + margin-right: 26rpx; +} + +.cell-box .cell>text { + flex: 1; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.cell-box .cell .cell-right { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.6); + font-size: 20rpx; +} + +.cell-box .cell .cell-right .gps-img { + width: 50rpx; + height: 50rpx; + border-radius: 50%; +} + +.cell-box .cell .cell-right>text { + height: 20rpx; + margin-top: 6rpx; + line-height: 20rpx; +} + +.cell-box .cell .cell-right-btn { + width: 120rpx; + height: 60rpx; + border-radius: 30rpx; + background: #ffda2e; + color: #1a191e; + font-size: 22rpx; + text-align: center; + line-height: 60rpx; +} + +.cell-box .cell .phone-number { + color: #ffda2e; + font-size: 22rpx; +} + +.cell-box .cell .title { + flex: 1; + display: flex; + align-items: center; + color: #fff; + font-size: 24rpx; +} + +.cell-box .cell .title>image { + width: 26rpx; + height: 26rpx; + margin-left: 14rpx; +} + +.cell-box .cell .tip { + min-width: 70rpx; + height: 30rpx; + padding: 0 4rpx; + margin-right: 22rpx; + font-size: 20rpx; + line-height: 30rpx; + border: 2rpx solid #ffda2e; + color: #ffda2e; + border-radius: 6rpx; + text-align: center; +} + +.cell-box .cell .buy-btn { + font-size: 26rpx; + color: #ffda2e; +} + +.cell-box .rich-box { + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; + padding: 30rpx 20rpx; +} + +.cell-box .rich-box .wscnph { + width: calc(100% - 10rpx); + margin-left: 5rpx; +} + +.footer-btn { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + height: 100rpx; + background: #ffda2e; + color: #1a191e; + font-size: 32rpx; + text-align: center; + line-height: 100rpx; +} + +.in-step-popup { + position: fixed; + left: 0; + top: 0; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.4); + z-index: 2; +} + +.in-step-popup .body { + width: 600rpx; + height: 840rpx; + background: #252330; + border-radius: 10rpx; +} + +.in-step-popup .body .top { + display: flex; + justify-content: space-between; + align-items: center; + padding: 20rpx; +} + +.in-step-popup .body .top .title>image { + width: 26rpx; + height: 26rpx; +} + +.in-step-popup .body .top .title>text { + margin-left: 10rpx; + color: #fff; + font-weight: bold; + font-size: 28rpx; + line-height: 28rpx; +} + +.in-step-popup .body .top>image { + width: 26rpx; + height: 26rpx; +} + +.in-step-popup .body .center { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 40rpx; +} + +.in-step-popup .body .center>image { + width: 24rpx; + height: 14rpx; + margin: 30rpx 0; +} + +.in-step-popup .body .center .item .step { + margin-bottom: 12rpx; + font-size: 28rpx; + color: #ffda2e; + text-align: center; + line-height: 28rpx; +} + +.in-step-popup .body .center .item .message { + max-width: 400rpx; + padding: 10rpx 20rpx; + border-radius: 25rpx; + background: #302e3b; + color: #fff; + font-size: 30rpx; + line-height: 50rpx; + text-align: center; +} + +.in-step-popup .body .bottom { + margin: 40rpx 20rpx 0 20rpx; + font-size: 26rpx; + color: rgba(255, 255, 255, 0.6); + line-height: 30rpx; +} + +.buyVIPPopup { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.6); +} + +.buyVIPPopup .popup-body { + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + width: 540rpx; + height: 350rpx; + border-radius: 20rpx; + background: #252330; +} + +.buyVIPPopup .popup-body .popup-header { + display: flex; + justify-content: space-between; + align-items: center; + height: 80rpx; + padding: 0 36rpx 0 26rpx; +} + +.buyVIPPopup .popup-body .popup-header>text { + font-size: 26rpx; + color: #fff; + font-weight: bold; +} + +.buyVIPPopup .popup-body .popup-header>image { + width: 26rpx; + height: 26rpx; +} + +.buyVIPPopup .popup-body .popup-center { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + padding: 0 36rpx 0 26rpx; + font-size: 26rpx; + color: #96959c; + line-height: 26rpx; +} + +.buyVIPPopup .popup-body .popup-center .popup-cell { + display: flex; + justify-content: space-between; + margin-bottom: 30rpx; +} + +.buyVIPPopup .popup-body .popup-btn { + width: 100%; + height: 80rpx; + line-height: 80rpx; + text-align: center; + color: #252330; + background: #ffda2e; + font-size: 26rpx; + border-radius: 0 0 20rpx 20rpx; +} + +.unclick-mask { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0); +} + +.card-mask { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.6); +} + +.card-mask .card-box { + position: relative; + width: 70%; + /* min-height: 300rpx; */ + border-radius: 20rpx; + background: #1a191e; + font-size: 24rpx; + line-height: 30rpx; + color: #5a595d; + padding: 30rpx; +} + +.card-mask .card-box .close { + position: absolute; + top: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + width: 60rpx; + height: 60rpx; +} + +.card-mask .card-box .close>image { + width: 26rpx; + height: 26rpx; +} + +.card-mask .card-box .info-rich { + padding: 30rpx; + font-size: 26rpx; + line-height: 36rpx; + color: rgba(255, 255, 255, 0.8); +} + +.card-mask .card-box .title { + text-align: center; + color: #ffda2e; + font-size: 28rpx; +} + +.share-btn-box { + position: fixed; + right: 30rpx; + bottom: 130rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 110rpx; + height: 110rpx; + color: #1a191e; + font-size: 24rpx; + border-radius: 50%; +} + +.share-btn-box>button { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0); + font-size: 24rpx; + color: #1a191e; +} +.share-btn-box>button::after { + border: none; +} \ No newline at end of file diff --git a/pages/bookClasses/index.js b/pages/bookClasses/index.js new file mode 100644 index 0000000..4281197 --- /dev/null +++ b/pages/bookClasses/index.js @@ -0,0 +1,196 @@ +// pages/bookClasses/index.js +const app = getApp(); +let weekday = [ + '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' +]; +let veneuType = ''; +let venueId = ''; +let isFrist = true; +let clickDate = ''; +Page({ + + /** + * 页面的初始数据 + */ + data: { + currentIndex: 1, + calendar: [], + venueLessons: [], + isShowNewplot: false, + isGoHome: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + isFrist = false; + veneuType = options.type; + venueId = options.venueId; + app.$api.venueLessonShow({ + type: options.type, + venueId: options.venueId + }).then(res => { + let list = []; + let subList = []; + let currentDate = new Date(new Date().setHours(8, 0, 0, 0)); + let currentDateValue = '' + for (let i = 0; i < res.lessons.length; i++) { + if (i % 7 == 0 && i != 0) { + list.push(subList); + subList = []; + } + let obj = {} + let date = new Date(res.lessons[i].dateList); + obj.date = (date.getMonth() + 1) + '.' + date.getDate() + obj.week = weekday[date.getDay()]; + obj.value = res.lessons[i].dateList; + obj.flg = res.lessons[i].flg; + if (currentDate.getTime() == date.getTime()) { + obj.isSelected = true; + currentDateValue = obj.value; + clickDate = obj.value; + } + subList.push(obj); + } + list.push(subList); + subList = []; + this.setData({ + calendar: list, + isShowNewplot: true, + }) + this.getData(currentDateValue); + }, err => { + this.setData({ + isShowNewplot: true, + }) + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + // if (isFrist) { + // // clickDate = new + // this.getData(clickDate); + // } + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + isFrist = true; + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '预约课程' + } + }, + + // 向左划 + leftClick() { + if (this.data.currentIndex == 0) { + return; + } + this.data.currentIndex--; + this.setData({ + currentIndex: this.data.currentIndex + }) + }, + // 向右滑 + rightClick() { + if (this.data.currentIndex == this.data.calendar.length - 1) { + return; + } + this.data.currentIndex++; + this.setData({ + currentIndex: this.data.currentIndex + }) + }, + + // 点击日历 + clickItem(e) { + let idx = e.currentTarget.dataset.idx; + let index = e.currentTarget.dataset.index; + for (let i = 0; i < this.data.calendar.length; i++) { + for (let j = 0; j < this.data.calendar[i].length; j++) { + if (index == i && idx == j) { + this.data.calendar[i][j].isSelected = true; + } else { + this.data.calendar[i][j].isSelected = false; + } + } + } + this.setData({ + calendar: this.data.calendar + }) + clickDate = this.data.calendar[index][idx].value; + this.getData(this.data.calendar[index][idx].value); + }, + + // 跳转详情 + clickCell(e) { + let id = e.currentTarget.dataset.id; + wx.navigateTo({ + url: `/pages/bookClassesDetail/index?id=${id}`, + success: function(res) {}, + fail: function(res) {}, + complete: function(res) {}, + }) + }, + + getData(date) { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.venueLessonDate({ + date: date, + type: veneuType, + venueId: venueId + }).then(res => { + this.setData({ + venueLessons: res.venueLessons + }) + }, err => { + + }) + } +}) \ No newline at end of file diff --git a/pages/bookClasses/index.json b/pages/bookClasses/index.json new file mode 100644 index 0000000..cb3ee23 --- /dev/null +++ b/pages/bookClasses/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "预约课程", + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/bookClasses/index.wxml b/pages/bookClasses/index.wxml new file mode 100644 index 0000000..bd09500 --- /dev/null +++ b/pages/bookClasses/index.wxml @@ -0,0 +1,54 @@ +
+ + + + + + + + + + + {{data.date}} + + {{data.week}} + + + + + + + + + + + + + + + + + + + + + {{item.name}} + {{i.name}} + + 时间: {{item.startTime}} ~ {{item.endTime}} + 价格: ¥{{item.price}} + + {{item.flg == 0 ? "预约":(item.flg == 1? "结束" : "满额")}} + + + + + + + 暂无课程 ~ + + + \ No newline at end of file diff --git a/pages/bookClasses/index.wxss b/pages/bookClasses/index.wxss new file mode 100644 index 0000000..9e89daf --- /dev/null +++ b/pages/bookClasses/index.wxss @@ -0,0 +1,226 @@ +/* pages/bookClasses/index.wxss */ + +.header { + display: flex; + justify-content: space-between; + align-items: center; + height: 140rpx; + padding: 0 16rpx; + background: #1a191e; +} + +.header .swiper { + flex: 1; + height: 100%; + margin: 0 10rpx; +} + +.header .img { + display: flex; + justify-content: center; + align-items: center; + width: 20rpx; + height: 100%; + border-radius: 4rpx; +} + +.header .img>image { + width: 20rpx; + height: 40rpx; +} + +.header .swiper .cell { + display: flex; + justify-content: space-around; + align-items: center; +} + +.header .swiper .cell .item { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: calc((100% - 120rpx)/7); + /* height: 60rpx; */ + height: 70rpx; + border: 2rpx solid #57565a; + border-radius: 10rpx; + color: #fff; +} + +.header .swiper .cell .item .date { + font-size: 20rpx; +} + +.header .swiper .cell .item.isActive { + /* flex-direction: column; */ + /* width: calc((100% - 140rpx)/7 + 20rpx); */ + /* height: 70rpx; */ + border: 2rpx solid #b39a29; + color: #9b8627; +} + +.header .swiper .cell .item .flg { + position: absolute; + top: 0; + right: 0; + transform: translate(35%, -50%); + height: 36rpx; + width: 36rpx; + font-size: 20rpx; + background: #ffda2e; + color: #1a191e; + line-height: 36rpx; + text-align: center; + border-radius: 50%; + z-index: 100; +} + +.header .swiper .cell .item .flg.past { + background: #989898; +} + +.list .cell { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + height: 160rpx; + margin-top: 30rpx; + padding: 0 16rpx; + background: #1a191e; +} + +.list .cell .image-box { + position: relative; + width: 130rpx; + height: 110rpx; + background: orange; +} + +.list .cell .image-box>image { + width: 100%; + height: 100%; +} + +.list .cell .image-box .sold-out { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 30rpx; + background: rgba(0, 0, 0, 0.6); + color: #fff; + font-size: 20rpx; + text-align: center; + line-height: 30rpx; +} + +.list .cell .cell-center { + display: flex; + flex-direction: column; + justify-content: space-around; + flex: 1; + margin-left: 24rpx; +} + +.list .cell .cell-center .title-box { + display: flex; + align-items: center; + margin-bottom: 20rpx; +} + +.list .cell .cell-center .title-box>text { + color: #fff; + font-size: 26rpx; + line-height: 26rpx; +} + +.list .cell .cell-center .title-box .tip { + margin-left: 10rpx; + font-size: 20rpx; + line-height: 20rpx; + color: #a08a27; + border: 2rpx solid #675a23; + border-radius: 4rpx; + padding: 4rpx 6rpx; +} + +.list .cell .cell-center>text { + font-size: 24rpx; + line-height: 24rpx; + color: #b89e29; +} + +.list .cell .cell-center>text:last-child { + margin-top: 12rpx; +} + +.list .cell .type-btn { + position: absolute; + top: calc(50% + 6rpx); + right: 20rpx; + transform: translateY(-50%); + height: 50rpx; + width: 100rpx; + background: #767578; + color: #1a191e; + text-align: center; + line-height: 50rpx; + border-radius: 25rpx; + font-size: 24rpx; +} + +.list .cell .type-btn.isActive { + background: #ffda2e; +} + +.newplot { + position: fixed; + top: 270rpx; + bottom: 0; + left: 0; + right: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #fff; + font-size: 28rpx; +} + +.newplot>image { + width: 200rpx; + height: 200rpx; + margin-top: -200rpx; +} + +.share-btn-box { + position: fixed; + right: 30rpx; + bottom: 130rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 110rpx; + height: 110rpx; + color: #1a191e; + font-size: 24rpx; + border-radius: 50%; +} + +.share-btn-box>button { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0); + font-size: 24rpx; + color: #1a191e; +} +.share-btn-box>button::after { + border: none; +} \ No newline at end of file diff --git a/pages/bookClassesDetail/index.js b/pages/bookClassesDetail/index.js new file mode 100644 index 0000000..11569ed --- /dev/null +++ b/pages/bookClassesDetail/index.js @@ -0,0 +1,166 @@ +// pages/bookClassesDetail/index.js +const app = getApp(); +let id = ''; +import { + getCurrentPageUrl +} from './../../utils/util.js' +Page({ + + /** + * 页面的初始数据 + */ + data: { + isOpenCoach: false, + isOpenAnnouncements: false, + lesson: {}, + isGoHome: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + wx.showLoading({ + title: '加载中...', + }) + id = options.id; + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + app.$api.venueLessonDetail({ + lessonId: id + }).then(res => { + let now = new Date().getTime() + let isStartTime = now > new Date(res.lesson.date.replace(/-/g, "/") + " " + res.lesson.startTime).getTime() + let isEndTime = now > new Date(res.lesson.date.replace(/-/g, "/") + " " + res.lesson.endTime).getTime(); + + if (res.lesson.flg == 0) { + res.lesson.btnStatus = 1; + } + if (isStartTime) { + res.lesson.btnStatus = 2; + } + if (isEndTime) { + res.lesson.btnStatus = 3 + } + if (!res.lesson.btnStatus) { + res.lesson.btnStatus = 0 + } + + this.setData({ + lesson: res.lesson, + isOpenCoach: res.lesson.coach.description.length < 40, + isOpenAnnouncements: res.lesson.coach + }) + }, err => { + + }); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: this.data.lesson.name, + imageUrl: this.data.lesson.venueLessonImages[0].url + } + }, + + // 打开导航 + opnGPS() { + wx.openLocation({ + latitude: Number(this.data.lesson.latitude), + longitude: Number(this.data.lesson.longitude), + name: this.data.lesson.venueName, + address: this.data.lesson.address, + }) + }, + + // 展开教练 + openCoach() { + this.setData({ + isOpenCoach: true + }) + }, + // 收起 + closeCoach() { + this.setData({ + isOpenCoach: false + }) + }, + + // 展开注意事项 + openAnnouncements() { + this.setData({ + isOpenAnnouncements: true + }) + }, + // 收起 + closeAnnouncements() { + this.setData({ + isOpenAnnouncements: false + }) + }, + + // 预约课程 + pushBookClasses() { + if (!wx.getStorageSync('accessToken')) { + wx.setStorageSync('history', getCurrentPageUrl()); + wx.redirectTo({ + url: '/pages/login/index', + }) + return + } + wx.navigateTo({ + url: `/pages/confirmOrder/index?id=${id}&venueId=${this.data.lesson.venueId}&venueType=${this.data.lesson.venueType}`, + }) + }, + // 点击教练头像 + clickImage() { + wx.previewImage({ + urls: [this.data.lesson.coach.avatar], + }) + } +}) \ No newline at end of file diff --git a/pages/bookClassesDetail/index.json b/pages/bookClassesDetail/index.json new file mode 100644 index 0000000..a67b89b --- /dev/null +++ b/pages/bookClassesDetail/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/bookClassesDetail/index.wxml b/pages/bookClassesDetail/index.wxml new file mode 100644 index 0000000..8b012c7 --- /dev/null +++ b/pages/bookClassesDetail/index.wxml @@ -0,0 +1,97 @@ + +
+ + + + + + + + + + + + 开课时间: {{lesson.date}} {{lesson.startTime}} ~ {{lesson.endTime}} + + + + {{lesson.address}} + + + 导航 + + + + + 价格: ¥{{lesson.price}} + + + + + 已报: {{lesson.saleNum}} + 剩余: {{lesson.flg}} + + + + + + + + + {{lesson.coach.nickname}} + {{lesson.coach.description}} + + + + 展开 + + + + 收起 + + + + + + + + + 注意事项 + + + + + + + + + + + + + 课程介绍 + + + + + + + + 满额 + 已开始 + 已结束 + 课程预约 + + + + \ No newline at end of file diff --git a/pages/bookClassesDetail/index.wxss b/pages/bookClassesDetail/index.wxss new file mode 100644 index 0000000..d42a2ce --- /dev/null +++ b/pages/bookClassesDetail/index.wxss @@ -0,0 +1,212 @@ +/* pages/bookClassesDetail/index.wxss */ + +.container { + padding-bottom: 130rpx; + min-height: calc(100vh - 330rpx); +} + +.header { + width: 100%; + height: 350rpx; +} + +.header image { + width: 100%; + height: 100%; +} + +.cell-box { + margin: 30rpx 30rpx 0 30rpx; + background: #1a191e; + border-radius: 10rpx; +} + +.cell-box .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + border-bottom: 2rpx solid #212025; +} + +.cell-box .cell.unline { + border: none; +} + +.cell-box .cell>image { + width: 34rpx; + height: 34rpx; + margin-right: 26rpx; +} + +.cell-box .cell>text { + flex: 1; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.cell-box .cell .more-text { + flex: 1; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.cell-box .cell .more-text>text:first-child { + margin-right: 58rpx; +} + +.cell-box .cell .cell-right { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.6); + font-size: 20rpx; +} + +.cell-box .cell .cell-right .gps-img { + width: 50rpx; + height: 50rpx; + border-radius: 50%; +} + +.cell-box .cell .cell-right>text { + height: 20rpx; + margin-top: 6rpx; + line-height: 20rpx; +} + +.cell-box .coach-info { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: 30rpx; +} + +.cell-box .coach-info>image { + width: 100rpx; + height: 100rpx; + border-radius: 50%; + margin-right: 26rpx; +} + +.cell-box .coach-info .coach-text { + flex: 1; +} + +.cell-box .coach-info .coach-text .name { + height: 26rpx; + margin-bottom: 20rpx; + color: #d1b32b; + font-size: 26rpx; + line-height: 26rpx; +} + +.cell-box .coach-info .coach-text .info { + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); + line-height: 30rpx; +} + +.cell-box .coach-info .coach-text .info.pack-up { + height: 60rpx; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.cell-box .unfold { + display: flex; + justify-content: flex-end; + align-items: center; + padding: 0 30rpx 18rpx 0; + color: rgba(255, 255, 255, 0.6); + font-size: 22rpx; +} + +.cell-box .unfold>image { + width: 12rpx; + height: 22rpx; + margin-left: 16rpx; +} + +.cell-box .rich-box { + display: flex; + padding: 20rpx; + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; + line-height: 36rpx; +} + +.cell-box .rich-box.pack-up { + height: 48rpx; + overflow: hidden; + /* text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; */ +} + +.cell-box .cell .title { + flex: 1; + display: flex; + align-items: center; + color: #fff; + font-size: 24rpx; +} + +.cell-box .rich-box { + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; + padding: 30rpx 20rpx; +} + +.cell-box .rich-box .wscnph { + width: calc(100% - 10rpx); + margin-left: 5rpx; +} + +.footer-btn { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + height: 100rpx; + background: #ffda2e; + color: #1a191e; + font-size: 32rpx; + text-align: center; + line-height: 100rpx; +} + +.share-btn-box { + position: fixed; + right: 30rpx; + bottom: 130rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 110rpx; + height: 110rpx; + color: #1a191e; + font-size: 24rpx; + border-radius: 50%; +} + +.share-btn-box>button { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0); + font-size: 24rpx; + color: #1a191e; +} +.share-btn-box>button::after { + border: none; +} \ No newline at end of file diff --git a/pages/confirmOrder/index.js b/pages/confirmOrder/index.js new file mode 100644 index 0000000..32c41fe --- /dev/null +++ b/pages/confirmOrder/index.js @@ -0,0 +1,333 @@ +// pages/confirmOrder/index.js +const app = getApp(); +import { + getCurrentPageUrl +} from './../../utils/util.js' +let id = ''; +let venueId = ''; +let venueType = ''; +Page({ + + /** + * 页面的初始数据 + */ + data: { + count: 1, + lessonOrder: {}, + memberCard: {}, + memberCardNum: 0, + showUnclickMask: false, + memberCardList: [], + showCardPopup: false, + isWxLogin: false, + payType: 2 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + id = options.id; + venueId = options.venueId; + venueType = options.venueType; + this.getData(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.setData({ + showUnclickMask: false + }) + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 选择会员卡 + selectMembershipCard() { + if (this.data.memberCardNum == 0) { + return; + } + this.setData({ + showCardPopup: true + }) + }, + + // 增加数量 + add() { + if (this.data.count >= (this.data.lessonOrder.num - this.data.lessonOrder.saleNum)) { + wx.showToast({ + title: '库存不足', + icon: 'none', + duration: 2000, + }) + return; + } + if (this.data.memberCard.cardType) { + wx.showToast({ + title: '使用会员卡仅能预约一人', + icon: 'none', + duration: 2000, + }) + return; + } + if (this.data.count >= 4) { + wx.showToast({ + title: '每单最多预约四人', + icon: 'none', + duration: 2000, + }) + return; + } + if (this.data.count >= 1 && this.data.lessonOrder.price == 0) { + wx.showToast({ + title: '免费课程仅能预约一人', + icon: 'none', + duration: 2000, + }) + return; + } + this.setData({ + count: ++this.data.count + }) + }, + + // 减少人数 + sub() { + if (this.data.count == 1) { + return; + } + this.setData({ + count: --this.data.count + }) + }, + + // 确认订单 + confirmOrder() { + let that = this; + this.setData({ + showUnclickMask: true + }) + wx.showLoading({ + title: '加载中...', + }) + if (this.data.memberCard.cardType) { + app.$api.memberLessonTicketOrderMemberCard({ + lessonId: id, + memberCardId: this.data.memberCard.id, + num: this.data.count + }).then(res => { + wx.showToast({ + title: '预约成功', + icon: 'success', + duration: 2000 + }) + setTimeout(function() { + that.setData({ + showUnclickMask: false + }) + wx.redirectTo({ + url: '/pages/myBookings/index?orderSn=' + res.orderSn, + }) + }, 2000) + }, err => { + that.setData({ + showUnclickMask: false + }) + }) + } else { + app.$api.memberLessonTicketOrderWX({ + lessonId: id, + num: this.data.count, + type:this.data.payType + }).then(res => { + if (!res.pay.time_stamp) { + wx.showToast({ + title: '预约成功', + icon: 'success', + duration: 2000 + }) + setTimeout(function() { + that.setData({ + showUnclickMask: false + }) + wx.redirectTo({ + url: '/pages/myBookings/index?orderSn=' + res.pay.orderSn, + }) + }, 2000) + return; + } + app.$pay.wxPay(res.pay).then(data => { + setTimeout(function() { + that.setData({ + showUnclickMask: false + }) + wx.redirectTo({ + url: '/pages/myBookings/index?orderSn=' + res.pay.orderSn, + }) + }, 2000) + }, err => { + console.log("SSSSS") + wx.showToast({ + title: '取消支付,预约失败', + icon: 'none' + }) + this.setData({ + showUnclickMask: false + }) + }); + }, err => { + this.setData({ + showUnclickMask: false, + }) + if (err.data.err_code == 30022) { + this.setData({ + isWxLogin: true, + isShowBuyVip: false + }) + } + }) + } + }, + + getData() { + wx.showLoading({ + title: '加载中...', + }) + app.$api.venueLessonOrder({ + lessonId: id, + venueId: venueId, + venueType: venueType + }).then(res => { + for (let i = 0; i < res.memberCard.length; i++) { + if (res.memberCard[i].status == 1 && res.memberCard[i].cardFlg == 0) { + this.data.memberCard = res.memberCard[i]; + } + if (res.memberCard[i].cardFlg == 0) { + this.data.memberCardNum++; + } + res.memberCard[i].startTime = res.memberCard[i].startTime.split(' ')[0]; + res.memberCard[i].endTime = res.memberCard[i].endTime.split(' ')[0]; + } + this.setData({ + lessonOrder: res.lessonOrder, + memberCardList: res.memberCard, + memberCard: this.data.memberCard, + memberCardNum: this.data.memberCardNum + }) + }, err => { + + }) + }, + + // 隐藏会员卡弹框 + cencalCardBox() { + this.setData({ + showCardPopup: false + }) + }, + + unTap() { + return; + }, + + unUserCard() { + this.setData({ + memberCard: {}, + showCardPopup: false + }) + }, + + // 选择会员卡 + changeCard(e) { + let id = e.currentTarget.dataset.id; + let obj = {}; + for (let i = 0; i < this.data.memberCardList.length; i++) { + if (id == this.data.memberCardList[i].id) { + obj = this.data.memberCardList[i] + } + } + this.setData({ + memberCard: obj, + showCardPopup: false, + count: 1 + }) + }, + + // 取消授权登录 + cancelDeleteDialog() { + this.setData({ + isWxLogin: false + }) + }, + + // 授权微信 + getUserInfo(e) { + console.log(e.detail); + app.$pay.payWxLoing(e.detail).then(res => { + wx.showToast({ + title: '绑定成功', + duration: 2000, + + }) + this.setData({ + isWxLogin: false + }) + }, err => { + this.setData({ + isWxLogin: false + }) + }) + }, + + // 选中支付方式 + changePayType(e) { + this.setData({ + payType: e.currentTarget.dataset.type + }) + } +}) \ No newline at end of file diff --git a/pages/confirmOrder/index.json b/pages/confirmOrder/index.json new file mode 100644 index 0000000..27b29e4 --- /dev/null +++ b/pages/confirmOrder/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "确认订单", + "usingComponents": { + "header": "/component/header/header", + "confirm-dialog": "/component/confirmDialog/confirmDialog" + } +} \ No newline at end of file diff --git a/pages/confirmOrder/index.wxml b/pages/confirmOrder/index.wxml new file mode 100644 index 0000000..d450c4c --- /dev/null +++ b/pages/confirmOrder/index.wxml @@ -0,0 +1,87 @@ + +
+ + {{lessonOrder.name}} + + + + 开课时间: {{lessonOrder.date}} {{lessonOrder.startTime}} ~ {{lessonOrder.endTime}} + + + + {{lessonOrder.address}} + + + + {{memberCardNum == 0? "暂无会员卡" : (memberCard.cardType ? "已使用" + memberCard.cardType : "未使用会员卡")}} + + + + + 人数 + + + + + {{count}} + + + + + + + {{memberCard.cardType ? "已使用" + memberCard.cardType : "合计: ¥" + (lessonOrder.price * count)}} + + + + + + + + + 微信支付 + + + + + 余额支付 + + + + + + + + + 注意事项 + + + + + + + + 确认订单 + + + + + + + + 不使用会员卡 + 取消 + + + + {{item.cardType}} + 有效期: {{item.startTime}} ~ {{item.endTime}} + + + + + 取消 + + + \ No newline at end of file diff --git a/pages/confirmOrder/index.wxss b/pages/confirmOrder/index.wxss new file mode 100644 index 0000000..3d6837b --- /dev/null +++ b/pages/confirmOrder/index.wxss @@ -0,0 +1,185 @@ +/* pages/confirmOrder/index.wxss */ + +.container { + padding-right: 30rpx; + padding-left: 30rpx; + padding-bottom: 130rpx; + min-height: calc(100vh - 260rpx); +} + +.title { + height: 100rpx; + padding: 0 20rpx; + line-height: 100rpx; + color: #fff; + font-size: 26rpx; +} + +.box { + background: #1a191e; + border-radius: 12rpx; +} + +.box .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + border-bottom: 2rpx solid #212025; +} + +.box .cell.unline { + border: none; +} + +.box .cell .title { + flex: 1; + height: 90rpx; + padding: 0; + line-height: 90rpx; +} + +.box .cell>image { + width: 34rpx; + height: 34rpx; + margin-right: 26rpx; +} + +.box .cell .right-img { + width: 12rpx; + height: 22rpx; + margin-right: 0; +} + +.box .cell .change-quantities { + display: flex; + align-items: center; + height: 100%; +} + +.box .cell .change-quantities .operator { + display: flex; + align-items: center; + width: 40rpx; + height: 40rpx; +} + +.box .cell .change-quantities .operator>image { + width: 100%; + height: 100%; +} + +.box .cell .change-quantities .number { + font-size: 22rpx; + color: #fff; + margin: 0 16rpx; +} + +.box .cell>text { + flex: 1; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.box .rich-box { + display: flex; + padding: 20rpx; + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; + line-height: 36rpx; +} + +.box .box-footer { + height: 90rpx; + padding: 0 20rpx; + text-align: right; + line-height: 90rpx; + color: #fff; + font-size: 24rpx; +} + +.footer-btn { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + height: 100rpx; + background: #ffda2e; + color: #1a191e; + font-size: 32rpx; + text-align: center; + line-height: 100rpx; +} + +.unclick-mask { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0); +} + +.card-box { + position: fixed; + top: 0; + left: 0; + display: flex; + flex-direction: column; + justify-content: flex-end; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.6); +} + +.card-box .body-box { + background: #252330; + width: 100%; + min-height: 400rpx; +} + +.card-box .cencal-btn { + background: #ffda2e; + height: 80rpx; + width: 100%; + color: #252330; + line-height: 80rpx; + text-align: center; + font-size: 32rpx; +} + +.card-box .body-box .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; +} + +.card-box .body-box .cell .tip { + height: 30rpx; + padding: 0 4rpx; + margin-right: 22rpx; + font-size: 20rpx; + line-height: 30rpx; + border: 2rpx solid #ffda2e; + color: #ffda2e; + border-radius: 6rpx; +} + +.card-box .body-box .cell .indate { + flex: 1; + font-size: 20rpx; + color: rgba(255, 255, 255, 0.6); +} + +.card-box .body-box .cell .buy-btn { + font-size: 26rpx; + color: #ffda2e; +} + +.card-box .body-box .cell>image { + width: 30rpx; + height: 30rpx; +} diff --git a/pages/facialCapturing/index.js b/pages/facialCapturing/index.js new file mode 100644 index 0000000..622547a --- /dev/null +++ b/pages/facialCapturing/index.js @@ -0,0 +1,172 @@ +// pages/facialCapturing/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + image: '../../images/19@3x.png', + isPass: false, + isDetail: false, + info: {} + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + this.setData({ + isPass: options.isPass ? true : false, + isDetail: options.isDetail ? true : false, + }) + this.getData() + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() {}, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 拍照 + photograph() { + this.getImage("camera") + }, + + // 相册 + photoAlbum() { + this.getImage("album") + }, + + // 拍照或相册 + getImage(val) { + let that = this; + wx.chooseImage({ + count: 1, + sizeType: ['compressed'], + sourceType: [val], + success: function(res) { + wx.showLoading({ + title: '正在上传...', + mask: true, + }) + app.$api.memberFaceInfo({ + filePath: res.tempFilePaths[0] + }).then(res => { + wx.showToast({ + title: '上传成功', + duration: 2000 + }) + that.getData() + // if (that.data.isPass) { + // setTimeout(function() { + // that.pass(); + // }, 2000) + // } + }, err => {}) + }, + fail: function(res) { + wx.hideLoading() + }, + }) + }, + + // 获取数据 + getData() { + app.$api.memberFaceInfoInfos({}).then(res => { + this.setData({ + info: res.info, + image: res.info.faceUrl ? res.info.faceUrl : '../../images/19@3x.png' + }) + }, err => { + + }) + }, + + // 跳过 + pass() { + let route = wx.getStorageSync('history'); + wx.removeStorageSync('history'); + if (!route || route == '/pages/login/index') { + + const pages = getCurrentPages(); + if (pages.length > 1) { + wx.navigateBack() + } else { + return wx.redirectTo({ + url: '/pages/mine/index', + }) + } + + } + wx.redirectTo({ + url: route, + }) + }, + + saveClick() { + if (this.data.isPass) { + const _this = this; + wx.showModal({ + title: '上传完成', + content: '您已完成所有手机注册流程,请直接站在门禁人脸识别区域进行人脸识别入场', + showCancel: false, + success: function() { + _this.pass(); + } + }) + } else { + wx.navigateBack() + } + + + // const pages = getCurrentPages(); + // const page = pages[pages.length - 2]; + // page.enter(); + // + } +}) \ No newline at end of file diff --git a/pages/facialCapturing/index.json b/pages/facialCapturing/index.json new file mode 100644 index 0000000..4c715bc --- /dev/null +++ b/pages/facialCapturing/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "运动场馆入门人脸采集信息", + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/facialCapturing/index.wxml b/pages/facialCapturing/index.wxml new file mode 100644 index 0000000..f0d03c4 --- /dev/null +++ b/pages/facialCapturing/index.wxml @@ -0,0 +1,34 @@ + +
+ + 跳过 + + 上次采集时间: {{info.modifiedTime}} + + + + + + 说明: + + 1.照片仅用于场馆人脸识别入场 + 2.请在光线明亮的环境下进行拍照 + 3.每隔30天才能更新一次 + 4.必须使用本人头像,否则将导致无法入场 + + + + + + + + + + 拍照 + + + + 相册 + + + \ No newline at end of file diff --git a/pages/facialCapturing/index.wxss b/pages/facialCapturing/index.wxss new file mode 100644 index 0000000..1ca652a --- /dev/null +++ b/pages/facialCapturing/index.wxss @@ -0,0 +1,105 @@ +/* pages/facialCapturing/index.wxss */ + +.container { + position: relative; + display: flex; + align-items: center; + justify-content: center; + min-height: calc(100vh - 280rpx); + padding-bottom: 150rpx; +} + +.pass { + position: absolute; + top: 160rpx; + right: 30rpx; + width: 120rpx; + height: 60rpx; + line-height: 60rpx; + border-radius: 30rpx; + text-align: center; + background: #3b3945; + color: #FFF; + font-size: 28rpx; +} + +.body { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + font-size: 24rpx; + line-height: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.body .img-box { + position: relative; + width: 500rpx; + height: 500rpx; + margin: 40rpx 0 30rpx 0; +} + +.body .img-box>image { + width: 100%; + height: 100%; +} + +.body .img-box .border-img { + position: absolute; + left: 0; + top: 0; +} + +.body .state-box { + display: flex; +} + +.body .state-box .state { + display: flex; + flex-direction: column; +} + +.body .state-box .state>text { + margin-bottom: 16rpx; +} + +.footer { + position: fixed; + left: 0; + bottom: 0; + display: flex; + width: 100%; + height: 150rpx; + background: #1a191e; +} + +.footer .item-btn { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.6); + font-size: 26rpx; + line-height: 26rpx; +} + +.footer .item-btn>image { + width: 64rpx; + height: 52rpx; + margin-bottom: 18rpx; +} + +.register-btn { + margin-top: 40rpx; + width: 80%; + height: 80rpx; + border-radius: 40rpx; + background: #ffda2e; + color: #252330; + font-size: 26rpx; + line-height: 80rpx; +} \ No newline at end of file diff --git a/pages/gymnasium/index.js b/pages/gymnasium/index.js new file mode 100644 index 0000000..8323e69 --- /dev/null +++ b/pages/gymnasium/index.js @@ -0,0 +1,227 @@ +// pages/gymnasium/index.js +const app = getApp(); +import { + getCurrentPageUrl +} from './../../utils/util.js' +Page({ + + /** + * 页面的初始数据 + */ + data: { + isShowBuyVip: false, + venues: {}, + buyVipObj: {}, + showUnclickMask: false, + showCardMask: false, + isWxLogin: false, + isGoHome: false, + }, + + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + wx.showLoading({ + title: '加载中...', + }) + app.$api.venueDetail({ + venueId: options.id + }).then(res => { + this.setData({ + venues: res.venues + }) + }, err => { + + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.setData({ + showUnclickMask: false + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: this.data.venues.name, + imageUrl: this.data.venues.images[0].url + } + }, + + // 打开导航, + opnGPS() { + wx.openLocation({ + latitude: Number(this.data.venues.latitude), + longitude: Number(this.data.venues.longitude), + name: this.data.venues.name, + address: this.data.venues.address, + }) + }, + + // 打电话 + callPhone() { + wx.makePhoneCall({ + phoneNumber: this.data.venues.phone, + success: function(res) {}, + fail: function(res) {}, + complete: function(res) {}, + }) + }, + + // 购买套餐 + nowBuy(e) { + let index = e.currentTarget.dataset.index; + if (!wx.getStorageSync('accessToken')) { + wx.setStorageSync('history', getCurrentPageUrl()); + wx.redirectTo({ + url: '/pages/login/index', + }) + return + } + this.setData({ + isShowBuyVip: true, + buyVipObj: this.data.venues.cards[index] + }) + + }, + + // 跳转预约课程 + pushBookClasses() { + wx.navigateTo({ + url: `/pages/bookClasses/index?type=${this.data.venues.type}&venueId=${this.data.venues.id}`, + }) + }, + + // 弹框背景禁止滑动 + unMove() { + return; + }, + + // 关闭购买vip弹框 + closeBuyVipPopup() { + this.setData({ + isShowBuyVip: false + }) + }, + + // 购买Vip + buyVip() { + this.setData({ + showUnclickMask: true + }) + app.$api.memberCardOrderCreate({ + cardType: this.data.buyVipObj.cardType, + num: 1, + type: this.data.venues.type, + venueId: this.data.venues.id + }).then(res => { + app.$pay.wxPay(res.pay).then(res => { + this.setData({ + isShowBuyVip: false, + showUnclickMask: false + }) + }, err => { + this.setData({ + showUnclickMask: false, + isShowBuyVip: false + }) + }) + }, err => { + this.setData({ + showUnclickMask: false, + isShowBuyVip: false + }) + if (err.data.err_code == 30022) { + this.setData({ + isWxLogin: true, + isShowBuyVip: false + }) + } + }) + }, + + // 关闭 + cancelCardMask() { + this.setData({ + showCardMask: false + }) + }, + + // 开启会员卡提示 + showCardContent() { + this.setData({ + showCardMask: true + }) + }, + + // 取消授权登录 + cancelDeleteDialog() { + this.setData({ + isWxLogin: false + }) + }, + + // 授权微信 + getUserInfo(e) { + app.$pay.payWxLoing(e.detail).then(res => { + wx.showToast({ + title: '绑定成功', + duration: 2000, + + }) + this.setData({ + isWxLogin: false + }) + }, err => { + this.setData({ + isWxLogin: false + }) + }) + } +}) \ No newline at end of file diff --git a/pages/gymnasium/index.json b/pages/gymnasium/index.json new file mode 100644 index 0000000..18de6c8 --- /dev/null +++ b/pages/gymnasium/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "健身", + "usingComponents": { + "confirm-dialog": "/component/confirmDialog/confirmDialog", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/gymnasium/index.wxml b/pages/gymnasium/index.wxml new file mode 100644 index 0000000..a06ef31 --- /dev/null +++ b/pages/gymnasium/index.wxml @@ -0,0 +1,96 @@ + +
+ + + + + + + + + + + + {{venues.businessTime}} + + + + {{venues.address}} + + + 导航 + + + + + {{venues.contact}} + {{venues.phone}} + + + + + + + VIP会员享受专属特权 + + + + + {{item.cardName}} + ¥{{item.price}} + 立即购买 + + + + + + + 项目介绍 + + + + + + + + 预约 + + + + + + 会员卡购买 + + + + + 会员卡类型 + {{buyVipObj.cardName}} + + + 价格 + ¥{{buyVipObj.price}} + + + 确认支付 + + + + + + + + + + + VIP会员享受专属特权 + + + + + + + \ No newline at end of file diff --git a/pages/gymnasium/index.wxss b/pages/gymnasium/index.wxss new file mode 100644 index 0000000..840afbc --- /dev/null +++ b/pages/gymnasium/index.wxss @@ -0,0 +1,290 @@ +/* pages/gymnasium/index.wxss */ + +.container { + padding-bottom: 130rpx; + min-height: calc(100vh - 330rpx); +} + +.header { + width: 100%; + height: 350rpx; +} + +.header image { + width: 100%; + height: 100%; +} + +.cell-box { + margin: 30rpx 30rpx 0 30rpx; + background: #1a191e; + border-radius: 10rpx; +} + +.cell-box .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + border-bottom: 2rpx solid #212025; +} + +.cell-box .cell.unline { + border: none; +} + +.cell-box .cell>image { + width: 34rpx; + height: 34rpx; + margin-right: 26rpx; +} + +.cell-box .cell>text { + flex: 1; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.cell-box .cell .cell-right { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.6); + font-size: 20rpx; +} + +.cell-box .cell .cell-right .gps-img { + width: 50rpx; + height: 50rpx; + border-radius: 50%; +} + +.cell-box .cell .cell-right>text { + height: 20rpx; + margin-top: 6rpx; + line-height: 20rpx; +} + +.cell-box .cell .phone-number { + color: #ffda2e; + font-size: 22rpx; +} + +.cell-box .cell .title { + flex: 1; + display: flex; + align-items: center; + color: #fff; + font-size: 24rpx; +} + +.cell-box .cell .title>image { + width: 26rpx; + height: 26rpx; + margin-left: 14rpx; +} + +.cell-box .cell .tip { + min-width: 70rpx; + height: 30rpx; + padding: 0 4rpx; + margin-right: 22rpx; + font-size: 20rpx; + line-height: 30rpx; + border: 2rpx solid #ffda2e; + color: #ffda2e; + border-radius: 6rpx; + text-align: center; +} + +.cell-box .cell .buy-btn { + font-size: 26rpx; + color: #ffda2e; +} + +.cell-box .rich-box { + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; + padding: 30rpx 20rpx; +} + +.cell-box .rich-box .wscnph { + width: calc(100% - 10rpx); + margin-left: 5rpx; +} + +.footer-btn { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + height: 100rpx; + background: #ffda2e; + color: #1a191e; + font-size: 32rpx; + text-align: center; + line-height: 100rpx; +} + +.buyVIPPopup { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.6); +} + +.buyVIPPopup .popup-body { + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + width: 540rpx; + height: 350rpx; + border-radius: 20rpx; + background: #252330; +} + +.buyVIPPopup .popup-body .popup-header { + display: flex; + justify-content: space-between; + align-items: center; + height: 80rpx; + padding: 0 36rpx 0 26rpx; +} + +.buyVIPPopup .popup-body .popup-header>text { + font-size: 26rpx; + color: #fff; + font-weight: bold; +} + +.buyVIPPopup .popup-body .popup-header>image { + width: 26rpx; + height: 26rpx; +} + +.buyVIPPopup .popup-body .popup-center { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + padding: 0 36rpx 0 26rpx; + font-size: 26rpx; + color: rgba(255, 255, 255, 0.6); + line-height: 26rpx; +} + +.buyVIPPopup .popup-body .popup-center .popup-cell { + display: flex; + justify-content: space-between; + margin-bottom: 30rpx; +} + +.buyVIPPopup .popup-body .popup-btn { + width: 100%; + height: 80rpx; + line-height: 80rpx; + text-align: center; + color: #252330; + background: #ffda2e; + font-size: 26rpx; + border-radius: 0 0 20rpx 20rpx; +} + +.unclick-mask{ + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0); +} + +.card-mask { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.6); +} + +.card-mask .card-box { + position: relative; + width: 70%; + /* min-height: 300rpx; */ + border-radius: 20rpx; + background: #1a191e; + font-size: 24rpx; + line-height: 30rpx; + color: rgba(255, 255, 255, 0.6); + padding: 30rpx; +} + +.card-mask .card-box .close { + position: absolute; + top: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + width: 60rpx; + height: 60rpx; +} + +.card-mask .card-box .close>image { + width: 26rpx; + height: 26rpx; +} + +.card-mask .card-box .info-rich { + padding: 30rpx; + font-size: 26rpx; + line-height: 36rpx; + color: rgba(255, 255, 255, 0.6) +} + +.card-mask .card-box .title { + text-align: center; + color: #ffda2e; + font-size: 28rpx; +} + +.share-btn-box { + position: fixed; + right: 30rpx; + bottom: 130rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 110rpx; + height: 110rpx; + color: #1a191e; + font-size: 24rpx; + border-radius: 50%; +} + +.share-btn-box>button { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0); + font-size: 24rpx; + color: #1a191e; +} +.share-btn-box>button::after { + border: none; +} \ No newline at end of file diff --git a/pages/home/index.js b/pages/home/index.js new file mode 100644 index 0000000..3d2fb09 --- /dev/null +++ b/pages/home/index.js @@ -0,0 +1,502 @@ +// pages/home/index.js +const app = getApp(); +let s = ''; +let m = 0; +let endM = 0; +let address = []; +let zoom = 6; +let mapCtx; +Page({ + /** + * 页面的初始数据 + */ + data: { + state: 2, + top: -200, + noticeList: [], + latitude: 0, + longitude: 0, + markers: [], + isShowAuth: false, + animationData: {}, + includePoints: [], + unClickDetail: false, + unClickBtn: false, + isShowMap: false, + gohome: true, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + this.setData({ + isShowMap: true + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + this.getLocation(); + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + // this.setData({ + // isShowAuth: false + // }) + this.data.unClickDetail = false + this.data.unClickBtn = false + clearTimeout(s); + m = endM; + this.getAnnouncementsList(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + endM = m; + clearTimeout(s); + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 公告滚动 + lun() { + // m -= 10 / (wx.getSystemInfoSync().screenWidth / 750); + let that = this; + // that.setData({ + // top: m + // }) + + // this.animation = animation; + let subHeight = 200 * (wx.getSystemInfoSync().screenWidth / 750); + let max = (that.data.noticeList.length - 1) * subHeight; + if (s) clearTimeout(s); + s = setTimeout(function() { + if (m * subHeight == max) { + + m = 0; + let animation1 = wx.createAnimation({ + delay: 0 + }) + this.animation1 = animation1; + this.animation1.translateY(-subHeight * m - (2 * (wx.getSystemInfoSync().screenWidth / 750))).step({ + duration: 0, + timingFunction: 'step-start' + }); + that.setData({ + animationData: animation1.export() + }) + that.lun() + } else { + m++; + let animation2 = wx.createAnimation({ + delay: 0 + }) + + this.animation2 = animation2; + this.animation2.translateY(-subHeight * m).step({ + duration: 1000, + timingFunction: "linear", + }); + that.setData({ + animationData: animation2.export() + }) + that.lun() + } + }, 2000); + }, + + // 切换列表 + changeTip(e) { + let state = e.currentTarget.dataset.state; + this.setData({ + state: state + }) + if (state == 3) { + wx.showToast({ + title: '暂未开放,敬请期待', + icon: 'none', + duration: 2000 + }) + let list = [{ + longitude: this.data.longitude, + latitude: this.data.latitude + }]; + this.setData({ + includePoints: list + }) + return; + } + // this.getLngLat(); + this.getLocation(); + }, + + // 点击地图标记点气泡 + clickCalloutTap(e) { + if (this.data.unClickDetail) { + return; + } + this.data.unClickDetail = true; + if (this.data.state == 1) { + wx.navigateTo({ + url: `/pages/basketballGym/index?id=${e.markerId}`, + }) + } + if (this.data.state == 2) { + wx.navigateTo({ + url: `/pages/gymnasium/index?id=${e.markerId}`, + }) + } + }, + + // 跳转详情列表 + pushList() { + if (this.data.unClickBtn) { + return; + } + this.data.unClickBtn = false; + wx.navigateTo({ + url: '/pages/sportsGroundList/index?state=' + this.data.state, + }) + }, + + // 打电话 + callPhoen() { + this.data.unClickBtn = false; + wx.makePhoneCall({ + phoneNumber: '13636573054', + }) + }, + + // 跳转个人中心 + pushMine() { + if (this.data.unClickBtn) { + return; + } + this.data.unClickBtn = false; + if (!wx.getStorageSync("accessToken")) { + wx.removeStorageSync('history'); + wx.navigateTo({ + url: '/pages/login/index', + }) + return + } + wx.navigateTo({ + url: '/pages/mine/index', + }) + }, + + // 获取公告列表 + getAnnouncementsList() { + let that = this; + app.$api.announcements({}).then(res => { + this.setData({ + noticeList: res.announcements + }) + // 公告列表添加前后 + // let len = this.data.noticeList.length + // if (len == 1 || len == 0) { + // return; + // } + // let list = []; + // for (let i = 0; i < len; i++) { + // list.push(this.data.noticeList[i]); + // } + // list.push(this.data.noticeList[0]); + // this.setData({ + // noticeList: list + // }) + // that.lun() + }, err => { + + }); + }, + + // 跳转公告详情 + pusnNotice(e) { + let id = e.currentTarget.dataset.id; + wx.navigateTo({ + url: `/pages/notice/index?id=${id}`, + success: function(res) {}, + fail: function(res) {}, + complete: function(res) {}, + }) + }, + + // 获取授权 + setAuthSuccess(e) { + if (e.detail.authSetting['scope.userLocation']) { + this.getLocation(); + this.setData({ + isShowAuth: false + }) + } + }, + + // 获取定位 + getLocation() { + let list = [ + // { + // // 中心 + // longitude: 121.4715700000, + // latitude: 31.2336800000 + // }, + { + // 北 + longitude: 121.3542938232, + latitude: 31.4409663733 + }, + { + // 东 + longitude: 121.7051696777, + latitude: 31.2750297303 + }, + { + // 南 + longitude: 121.4167785645, + latitude: 31.0317548780 + }, + { + // 西 + longitude: 121.2135314941, + latitude: 31.2433336586 + } + ]; + this.setData({ + includePoints: list, + }) + let that = this; + wx.getLocation({ + type: 'gcj02', + success: function(res) { + that.setData({ + latitude: res.latitude, + longitude: res.longitude, + }) + that.getData({ + latitude: res.latitude, + longitude: res.longitude, + zoom: 1 + }); + }, + fail: function(res) { + console.log(res); + if (res.errMsg == 'getLocation:fail auth deny' || res.errMsg == 'getLocation:fail:auth denied') { + that.setData({ + isShowAuth: true + }) + } + }, + }) + }, + + // 获取数据 + getData(e) { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.venuesMap({ + latitude: e.latitude, + longitude: e.longitude, + type: this.data.state, + zoom: e.zoom + }).then(res => { + address = []; + let list = [ + // { + // // 中心 + // longitude: 121.4715700000, + // latitude: 31.2336800000 + // }, + { + // 北 + longitude: 121.3542938232, + latitude: 31.4409663733 + }, + { + // 东 + longitude: 121.7051696777, + latitude: 31.2750297303 + }, + { + // 南 + longitude: 121.4167785645, + latitude: 31.0317548780 + }, + { + // 西 + longitude: 121.2135314941, + latitude: 31.2433336586 + } + ]; + + + for (let i = 0; i < res.venues.length; i++) { + let obj = {}; + obj.id = res.venues[i].id; + obj.latitude = res.venues[i].latitude + obj.longitude = res.venues[i].longitude + if (this.data.state == 1) { + obj.iconPath = '../../images/14@3x.png' + } + if (this.data.state == 2) { + obj.iconPath = '../../images/13@3x.png' + } + if (this.data.state == 3) { + obj.iconPath = '../../images/12@3x.png' + } + + list.push({ + longitude: res.venues[i].longitude, + latitude: res.venues[i].latitude + }) + + obj.title = res.venues[i].name + obj.width = 40; + obj.height = 40 + obj.callout = { + content: res.venues[i].name + '(点此进入)', + // color: '#fff', + // bgColor: '#000', + borderRadius: 15, + padding: 10, + display: 'BYCLICK' + }; + address.push(obj); + } + this.setData({ + includePoints: list, + markers: [{ + id: 0, + latitude: this.data.latitude, + longitude: this.data.longitude, + iconPath: '../../images/11@3x.png', + width: 20, + height: 33 + }, ...address] + }) + }, err => {}); + }, + + // 地图视野发生变化时触发 + regionchange(e) { + return; + console.log(e); + if (e.type == 'end') { + this.getLngLat() + } + }, + + getLngLat: function() { + var that = this; + let centerLatitude = 0; + let centerLongitude = 0; + let zoom = 7; + mapCtx = wx.createMapContext("map4select"); + mapCtx.getCenterLocation({ + success: function(res) { + centerLatitude = res.latitude; + centerLongitude = res.longitude; + // 获取视野范围 + that.getRegion(centerLatitude, centerLongitude) + } + }) + mapCtx.getScale({ + success: function(res) { + console.log("缩放级别", res); + } + }) + }, + + // 获取视野范围 + getRegion(centerLatitude, centerLongitude) { + let that = this; + mapCtx.getRegion({ + success: function(res) { + let m = GetDistance(res.northeast.latitude, res.northeast.longitude, res.northeast.latitude, res.southwest.longitude); + if (m <= 152.9) { + zoom = 7; + } else if (m <= 1200) { + zoom = 6; + } else if (m <= 4900) { + zoom = 5; + } else if (m <= 39100) { + zoom = 4; + } else { + zoom = 3; + }; + // that.getData({ + // latitude: centerLatitude, + // longitude: centerLongitude, + // zoom: zoom + // }); + } + }) + }, + + // 回到开始 + goFrist() { + let list = [{ + longitude: this.data.longitude, + latitude: this.data.latitude + }]; + // this.data.includePoints + this.setData({ + includePoints: list + }) + } +}) + +function Rad(d) { + return d * Math.PI / 180.0; //经纬度转换成三角函数中度分表形式。 +} + +//计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度 +function GetDistance(lat1, lng1, lat2, lng2) { + var radLat1 = Rad(lat1); + var radLat2 = Rad(lat2); + var a = radLat1 - radLat2; + var b = Rad(lng1) - Rad(lng2); + var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); + s = s * 6378.137; // 地球半径,千米; + s = Math.round(s * 10000) / 10000; //输出为公里 + s = Math.round(s * 1000) / 1; //单位修改为米,取整 + //s=s.toFixed(4); + return s; +} \ No newline at end of file diff --git a/pages/home/index.json b/pages/home/index.json new file mode 100644 index 0000000..5aed08e --- /dev/null +++ b/pages/home/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "confirm-dialog": "/component/confirmDialog/confirmDialog", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/home/index.wxml b/pages/home/index.wxml new file mode 100644 index 0000000..6745bb6 --- /dev/null +++ b/pages/home/index.wxml @@ -0,0 +1,111 @@ + +
+ + + + + + + 篮球场 + + + + + + 健身 + + + + + 足球场 + + + + + + + + {{item.tag}} + {{item.content}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/home/index.wxss b/pages/home/index.wxss new file mode 100644 index 0000000..0f2ba7e --- /dev/null +++ b/pages/home/index.wxss @@ -0,0 +1,244 @@ +/* pages/home/index.wxss */ +.container { + display: flex; + flex-direction: column; +} + +.header { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + min-height: 160rpx; + background: #fff; + border-bottom: 2rpx solid rgba(0, 0, 0, 0.1); +} + +.header .item-box { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #747377; + font-size: 24rpx; + line-height: 24rpx; +} + +.header .item-box.isActive { + color: #ffca00; +} + +.header .item-box>image { + width: 66rpx; + height: 58rpx; + margin-bottom: 16rpx; +} + +.body { + flex: 1; + position: relative; +} + +/* .body .swiper-box { + position: absolute; + top: 4rpx; + left: 50%; + transform: translateX(-50%); + display: flex; + justify-content: center; + width: 700rpx; + height: 200rpx; + background: #fff; + z-index: 10001; + border-radius: 10rpx; + box-shadow: 0px 2rpx 8rpx rgba(136, 136, 136, 0.6); +} */ + +.body .map-box { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 100%; + height: 100%; +} + +.notice-item-box { + position: relative; + display: flex; + justify-content: space-between; + align-content: center; + height: 160rpx; + padding: 10rpx 30rpx; + background: #fff; +} + +.notice-item-box .image-box { + position: relative; + width: 220rpx; + height: 100%; +} + +.notice-item-box .image-box .shadow-image { + position: absolute; + top: 0; + left: 0; + width: 50rpx; + height: 100%; +} + +.notice-item-box .image-box .show-image { + width: 100%; + height: 100%; +} + +.notice-item-box .text-box { + position: relative; + flex: 1; +} + +.notice-item-box .text-box .tip { + position: absolute; + top: 0; + left: 0; + height: 36rpx; + padding: 4rpx 12rpx; + line-height: 36rpx; + font-size: 24rpx; + background: #424242; + color: #fff; +} + +.notice-item-box .text-box .message { + margin-top: 56rpx; + margin-right: 20rpx; + height: 90rpx; + font-size: 22rpx; + line-height: 30rpx; + white-space: normal; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + color: #8f8f8f; +} + +/* .notice-box { + position: absolute; + left: 0; + width: 100%; +} + +.notice-box .notice { + position: relative; + padding: 20rpx; + display: flex; + justify-content: space-between; + align-items: center; + height: calc(100% - 40rpx); +} + +.notice-box .notice .text-box { + position: relative; + flex: 1; +} + +.notice-box .notice .text-box .tip { + position: absolute; + top: 0; + left: 0; + height: 36rpx; + line-height: 36rpx; + font-size: 24rpx; + background: #424242; + color: #fff; +} + +.notice-box .notice .text-box .message { + margin-top: 56rpx; + margin-right: 20rpx; + height: 90rpx; + font-size: 22rpx; + line-height: 30rpx; + white-space: normal; + color: #8f8f8f; +} + +.notice-box .notice .image-box { + position: relative; + width: 220rpx; + height: 100%; +} + +.notice-box .notice .image-box .shadow-image { + position: absolute; + top: 0; + left: 0; + width: 50rpx; + height: 100%; +} + +.notice-box .notice .image-box .show-image { + width: 100%; + height: 100%; +} */ + +.share-box { + position: absolute; + top: 30rpx; + /* left: 30rpx; */ + width: 130rpx; + height: 190rpx; +} + +.share-box .title { + font-size: 22rpx; + line-height: 30rpx; + text-align: center; +} + +.phone-box { + position: absolute; + bottom: 30rpx; + left: 30rpx; + width: 130rpx; + height: 130rpx; +} + +.mine-box { + position: absolute; + bottom: 30rpx; + right: 30rpx; + width: 130rpx; + height: 130rpx; +} + +.hide-btn { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: none; + z-index: 10001; +} + +.hide-btn::after { + border: none; +} + +.wx-button-cover-view-wrapper { + height: 100%; +} + +.wx-button-cover-view-inner { + height: 100%; +} + +.img { + width: 130rpx; + height: 130rpx; +} diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..77aa4b1 --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,77 @@ +// pages/index/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + animationData: {} + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + var animation = wx.createAnimation({ + duration: 5000, + timingFunction: "ease", + delay: 1000 + }) + // this.animation = animation; + animation.translateY(200).step() + this.setData({ + animationData: animation.export() + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + return { + title: '智慧云馆' + } + } +}) \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..09c43dc --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,4 @@ + +pages/index/index.wxml + + \ No newline at end of file diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..8e9c81f --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1 @@ +/* pages/index/index.wxss */ \ No newline at end of file diff --git a/pages/login/index.js b/pages/login/index.js new file mode 100644 index 0000000..3476b5f --- /dev/null +++ b/pages/login/index.js @@ -0,0 +1,162 @@ +// pages/login/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + showUnclickMask: false, + isGoHome: false, + isLogin: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + if (this.data.isLogin) { + this.pushRoute() + return; + } + let that = this; + this.setData({ + showUnclickMask: false + }) + }, + + pushRoute() { + let route = wx.getStorageSync('history'); + wx.removeStorageSync('history'); + if (!route || route == '/pages/login/index') { + return wx.redirectTo({ + url: '/pages/mine/index', + }) + } + wx.redirectTo({ + url: route, + }) + }, + + changeLoginStatus() { + this.setData({ + isLogin: true + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 登录 + loginClick() { + wx.navigateTo({ + url: '/pages/loginIndex/index', + }) + }, + + // 注册 + registerClick(e) { + wx.redirectTo({ + url: '/pages/register/index?codeType=' + 2, + }) + }, + + // 微信登录 + wxLogin(e) { + if (e.detail.errMsg == 'getUserInfo:fail auth deny') { + return; + } + this.setData({ + showUnclickMask: true + }) + let that = this; + wx.login({ + success: function(res) { + app.$api.memberLoginWX({ + avatar: e.detail.userInfo.avatarUrl, + code: res.code, + nickname: e.detail.userInfo.nickName + }).then(res => { + wx.setStorageSync('information', res.information); + if (!res.authorization) { + wx.redirectTo({ + url: '/pages/register/index?codeType=' + 1, + }) + return; + } + wx.setStorageSync('accessToken', res.authorization.accessToken); + let route = wx.getStorageSync('history'); + wx.removeStorageSync('history'); + if (!route || route == '/pages/login/index') { + return wx.redirectTo({ + url: '/pages/mine/index', + }) + } + wx.redirectTo({ + url: route, + }) + }, err => { + that.setData({ + showUnclickMask: false + }) + }); + }, + fail: function(res) { + that.setData({ + showUnclickMask: false + }) + }, + }) + }, +}) \ No newline at end of file diff --git a/pages/login/index.json b/pages/login/index.json new file mode 100644 index 0000000..396dd61 --- /dev/null +++ b/pages/login/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/login/index.wxml b/pages/login/index.wxml new file mode 100644 index 0000000..6dce9e3 --- /dev/null +++ b/pages/login/index.wxml @@ -0,0 +1,15 @@ + +
+ + + + + 快速微信登录 + + + + + + + + \ No newline at end of file diff --git a/pages/login/index.wxss b/pages/login/index.wxss new file mode 100644 index 0000000..c248a86 --- /dev/null +++ b/pages/login/index.wxss @@ -0,0 +1,78 @@ +/* pages/login/index.wxss */ + +.container { + min-height: calc(100vh - 230rpx); + padding: 230rpx 124rpx 0 124rpx; +} + +.login-btn { + margin-top: 100rpx; + height: 80rpx; + border-radius: 40rpx; + background: #ffda2e; + color: #252330; + font-size: 26rpx; + line-height: 80rpx; +} + +.register-btn { + margin-top: 38rpx; + height: 80rpx; + border-radius: 40rpx; + background: none; + border: 2rpx solid #6e602f; + font-size: 26rpx; + line-height: 80rpx; + color: #cdb02e; +} + +.line-between { + position: relative; + height: 4rpx; + margin-top: 190rpx; + margin-bottom: 70rpx; + background: #3f3e49; +} + +.line-between .line-between-text { + position: absolute; + top: 0; + left: 50%; + transform: translate(-50%, -50%); + padding: 0 40rpx; + background: #252330; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.wechat-btn { + position: relative; + width: 100rpx; + height: 100rpx; + margin: 0 auto; +} + +.wechat-btn>button { + position: absolute; + background: none; + width: 100%; + height: 100%; +} + +.wechat-btn>button::after { + border: none; +} + +.wechat-btn>image { + width: 100%; + height: 100%; +} + +.unclick-mask{ + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0); +} \ No newline at end of file diff --git a/pages/loginIndex/index.js b/pages/loginIndex/index.js new file mode 100644 index 0000000..917c762 --- /dev/null +++ b/pages/loginIndex/index.js @@ -0,0 +1,174 @@ +// pages/loginIndex/index.js +const app = getApp(); +let timer; +Page({ + + /** + * 页面的初始数据 + */ + data: { + isFocus: '', + body: { + phone: '', + code: '' + }, + isGetCode: false, + code: '获取验证码', + showUnclickMask: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + // 输入框获取聚焦时 + inputFocus(event) { + let key = event.currentTarget.dataset.type; + this.setData({ + isFocus: key + }) + }, + + // 输入框失去焦点时 + inputBlur(event) { + let key = event.currentTarget.dataset.type; + this.setData({ + isPhoneFocus: '' + }) + }, + + // 输入框输入时 + inputChange(event) { + let key = event.currentTarget.dataset.type; + this.data.body[key] = event.detail.value; + }, + + // 获取验证码 + getCode() { + if (this.data.isGetCode) { + return; + } + if (!this.data.body.phone) { + wx.showToast({ + title: '请输入手机号', + icon: 'none', + }) + return; + } + this.data.isGetCode = true; + + app.$api.smsLogin({ + mobile: this.data.body.phone + }).then(res => { + clearTimeout(timer); + this.countdown(60); + }, err => { + this.data.isGetCode = false; + }) + }, + + // 倒计时 + countdown(val) { + if (val == 0) { + this.data.isGetCode = false; + clearTimeout(timer); + return; + } + let that = this; + timer = setTimeout(function () { + val-- + that.countdown(val); + that.setData({ + code: val == 0 ? '获取验证码' : val + ' s' + }) + }, 1000) + }, + + // 跳转到协议 + pushAgreement() { + wx.navigateTo({ + url: '/pages/agreement/index', + }) + }, + + // 登录 + loginClick() { + if (!this.data.body.code) { + wx.showToast({ + title: '请输入验证码', + icon: 'none', + }) + return; + } + this.setData({ + showUnclickMask: true + }) + let that = this; + app.$api.memberLogin({ + captcha: this.data.body.code, + mobile: this.data.body.phone + }).then(res => { + wx.setStorageSync('accessToken', res.authorization.accessToken); + that.setData({ + showUnclickMask: false + }) + const pages = getCurrentPages(); + let page = pages[pages.length - 2]; + page.changeLoginStatus(); + wx.navigateBack(); + // return wx.redirectTo({ + // url: '/pages/login/index', + // }) + }, err => { + that.setData({ + showUnclickMask: false + }) + }) + }, + +}) \ No newline at end of file diff --git a/pages/loginIndex/index.json b/pages/loginIndex/index.json new file mode 100644 index 0000000..396dd61 --- /dev/null +++ b/pages/loginIndex/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/loginIndex/index.wxml b/pages/loginIndex/index.wxml new file mode 100644 index 0000000..406ad26 --- /dev/null +++ b/pages/loginIndex/index.wxml @@ -0,0 +1,16 @@ + +
+ + + + + + + + + + 登录即代表同意 + + + + \ No newline at end of file diff --git a/pages/loginIndex/index.wxss b/pages/loginIndex/index.wxss new file mode 100644 index 0000000..b37100a --- /dev/null +++ b/pages/loginIndex/index.wxss @@ -0,0 +1,72 @@ +/* pages/loginIndex/index.wxss */ +.container { + min-height: calc(100vh - 230rpx); + padding: 230rpx 124rpx 0 124rpx; +} + +.input-box { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 30rpx; + border-bottom: 2rpx solid #3f3e49; +} + +.input-box>input { + flex: 1; + margin: 20rpx 0; + font-size: 24rpx; + color: #fff; +} + +.input-box.isActive { + border-bottom: 2rpx solid #6e602f; +} + +.input-box .placeholder { + color: rgba(255, 255, 255, 0.6); +} + +.input-box>button { + padding: 0; + width: 120rpx; + background: none; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); + text-align: center; +} + +.input-box>button::after { + border: none; +} + +.agreement { + display: flex; + align-items: center; + margin-top: 30rpx; + font-size: 22rpx; + color: rgba(255, 255, 255, 0.6); +} + +.agreement>button { + padding: 0; + margin: 0; + color: #b1992f; + font-size: 22rpx; + line-height: 22rpx; + background: none; +} + +.agreement>button::after { + border: none; +} + +.login-btn { + margin-top: 100rpx; + height: 80rpx; + border-radius: 40rpx; + background: #ffda2e; + color: #252330; + font-size: 26rpx; + line-height: 80rpx; +} \ No newline at end of file diff --git a/pages/mine/index.js b/pages/mine/index.js new file mode 100644 index 0000000..b71ba8d --- /dev/null +++ b/pages/mine/index.js @@ -0,0 +1,162 @@ +// pages/mine/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + members: {}, + memberCard: 0, + showLogoutDialog: false, + gohome: true + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.memberCenter({}).then(res => { + this.setData({ + members: res.members, + memberCard: res.memberCard + }) + }, err => { + + }) + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 跳转个人信息 + pushUserInfo() { + wx.navigateTo({ + url: '/pages/userInfo/index', + }) + }, + + // 跳转充值页面 + pushRecharge() { + wx.navigateTo({ + url: '/pages/myAccount/index', + }) + }, + + // 跳转会员卡页面 + pushClubCard() { + wx.navigateTo({ + url: '/pages/myMembershipCard/index', + }) + }, + + // 跳转我的预约 + pushMyOrder() { + wx.navigateTo({ + url: '/pages/myBookingsList/index', + }) + }, + // 跳转我的账单 + pushMyBill() { + wx.navigateTo({ + url: '/pages/myBills/index', + }) + }, + // 跳转人脸采集 + pushFacialCapturing() { + wx.navigateTo({ + url: '/pages/facialCapturing/index', + }) + }, + // 跳转常见问题 + pushFAQ() { + wx.navigateTo({ + url: '/pages/questions/index', + }) + }, + // 跳转关于我们 + pushAboutUs() { + wx.navigateTo({ + url: '/pages/about/index', + }) + }, + + // 退出登录 + logout() { + this.setData({ + showLogoutDialog: true + }) + }, + + // 确认退出 + confirmDeleteDialog() { + wx.removeStorageSync('accessToken'); + wx.removeStorageSync('history'); + wx.removeStorageSync('information'); + this.setData({ + showLogoutDialog: false + }) + wx.redirectTo({ + url: '/pages/login/index', + }) + }, + + // 取消退出 + cancelDeleteDialog() { + this.setData({ + showLogoutDialog: false + }) + } +}) \ No newline at end of file diff --git a/pages/mine/index.json b/pages/mine/index.json new file mode 100644 index 0000000..106588a --- /dev/null +++ b/pages/mine/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "confirm-dialog": "/component/confirmDialog/confirmDialog", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/mine/index.wxml b/pages/mine/index.wxml new file mode 100644 index 0000000..fd39341 --- /dev/null +++ b/pages/mine/index.wxml @@ -0,0 +1,57 @@ + +
+ + + + + + {{members.nickname}} + 个人信息 + + + + {{members.money}} + + 余额 + + 充值 + + + + + {{memberCard}} + + 会员卡 + + + + + + + + 我的预约 + + + + 我的账单 + + + + 人脸采集 + + + + 常见问题 + + + + 关于我们 + + + + + 退出登录 + + + + \ No newline at end of file diff --git a/pages/mine/index.wxss b/pages/mine/index.wxss new file mode 100644 index 0000000..5557370 --- /dev/null +++ b/pages/mine/index.wxss @@ -0,0 +1,125 @@ +/* pages/mine/index.wxss */ + +.body { + min-height: calc(100vh - 60rpx); + padding: 30rpx; +} + +.body .header { + display: flex; + flex-direction: column; + justify-content: space-between; + height: 250rpx; + padding: 40rpx; + background: #1a191e; + border-radius: 10rpx; +} + +.body .header .info-box { + display: flex; + justify-content: space-between; + align-items: center; +} + +.body .header .info-box>image { + width: 100rpx; + height: 100rpx; + margin-right: 30rpx; + border-radius: 50%; +} + +.body .header .info-box>text { + flex: 1; + color: #fff; + font-size: 38rpx; +} + +.body .header .info-box .info-btn { + width: 122rpx; + height: 46rpx; + border: 2rpx solid rgba(255, 255, 255, 0.4); + border-radius: 23rpx; + font-size: 24rpx; + color: #fff; + line-height: 46rpx; + text-align: center; + +} + +.body .header .price-box { + display: flex; + justify-content: space-between; + align-items: center; + text-align: center; +} + +.body .header .price-box .price-item { + flex: 1; +} + +.body .header .price-box .price-item .number { + margin-bottom: 18rpx; + font-size: 38rpx; + color: #fff; + line-height: 38rpx; +} + +.body .header .price-box .price-item .number.money { + color: #f3515c; +} + +.body .header .price-item .price-title { + display: flex; + justify-content: center; + align-items: center; + font-size: 24rpx; + line-height: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.body .header .price-item .price-title>text:last-child { + color: #b89e29; +} + +.body .header .price-box .line { + width: 2rpx; + height: 50rpx; + background: #39383c; +} + +.body .list { + margin-top: 30rpx; + border-radius: 10rpx; + background: #1a191e; +} + +.body .list .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 98rpx; + padding: 0 30rpx; + border-bottom: 2rpx solid #212025; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.body .list .cell>image { + width: 10rpx; + height: 16rpx; +} + +.body .list .cell.unLine { + border-bottom: none; +} + +.body .logout-btn { + margin: 150rpx 100rpx 0 100rpx; + text-align: center; + background: #1a191e; + height: 80rpx; + border-radius: 40rpx; + line-height: 80rpx; + font-size: 28rpx; + color: #c9ac2a; +} diff --git a/pages/myAccount/index.js b/pages/myAccount/index.js new file mode 100644 index 0000000..c436643 --- /dev/null +++ b/pages/myAccount/index.js @@ -0,0 +1,171 @@ +// pages/myAccount/index.js +const app = getApp(); +import { + getCurrentPageUrl +} from './../../utils/util.js' +Page({ + + /** + * 页面的初始数据 + */ + data: { + selectIndex: 0, + member: {}, + recharges: [], + isWxLogin: false, + gohome: true, + isUnClick: false, + options: {} + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + this.setData({ + options: options + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.getData(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 余额提现 + pushWithdraw() { + wx.navigateTo({ + url: '/pages/withdrawal/index?money=' + this.data.member.money, + }) + }, + + // 我的账单 + pushBills() { + wx.navigateTo({ + url: '/pages/myBills/index', + }) + }, + + // 选择充值金额 + selectPrice(e) { + let index = e.currentTarget.dataset.index; + this.setData({ + selectIndex: index + }) + }, + + // 点击微信支付 + clickBuy() { + if (this.data.isUnClick) { + return; + } + this.data.isUnClick = true; + app.$api.orderRecharge({ + rechargeId: this.data.recharges[this.data.selectIndex].id + }).then(res => { + app.$pay.wxPay(res.pay).then(res => { + if (this.data.options.isPass == 1) { + wx.redirectTo({ + url: '/pages/facialCapturing/index?isPass=' + 1, + }) + } else { + this.getData(); + this.data.isUnClick = false; + } + }, err => { + this.data.isUnClick = false; + }) + }, err => { + if (err.data.err_code == 30022) { + this.setData({ + isWxLogin: true, + }) + } + this.data.isUnClick = false; + }) + }, + + // 获取数据 + getData() { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.recharges({}).then(res => { + this.setData({ + member: res.member, + recharges: res.recharges + }) + }, err => {}); + }, + // 取消授权登录 + cancelDeleteDialog() { + this.setData({ + isWxLogin: false + }) + }, + + // 授权微信 + getUserInfo(e) { + app.$pay.payWxLoing(e.detail).then(res => { + wx.showToast({ + title: '绑定成功', + duration: 2000, + + }) + this.setData({ + isWxLogin: false + }) + }, err => { + this.setData({ + isWxLogin: false + }) + }) + } +}) \ No newline at end of file diff --git a/pages/myAccount/index.json b/pages/myAccount/index.json new file mode 100644 index 0000000..aba945b --- /dev/null +++ b/pages/myAccount/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "我的账户", + "usingComponents": { + "header": "/component/header/header", + "confirm-dialog": "/component/confirmDialog/confirmDialog" + } +} \ No newline at end of file diff --git a/pages/myAccount/index.wxml b/pages/myAccount/index.wxml new file mode 100644 index 0000000..95bd9e1 --- /dev/null +++ b/pages/myAccount/index.wxml @@ -0,0 +1,32 @@ + +
+ + + + + 余额提现 + + + ¥{{member.money}} + 当前余额 + + + + 我的账单 + + + + 快速充值 + + + + + {{item.rechargeMoney}} + + 到账: ¥{{item.toMoney}} + + + 微信充值 + + + \ No newline at end of file diff --git a/pages/myAccount/index.wxss b/pages/myAccount/index.wxss new file mode 100644 index 0000000..08968e0 --- /dev/null +++ b/pages/myAccount/index.wxss @@ -0,0 +1,105 @@ +/* pages/myAccount/index.wxss */ + +.container { + min-height: calc(100vh - 190rpx); + padding: 30rpx; + padding-top: 160rpx; +} + +.header { + display: flex; + justify-content: space-around; + align-items: center; + height: 200rpx; + background: #1a191e; + border-radius: 20rpx; +} + +.header .item { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 86rpx; +} + +.header .item>image { + width: 42rpx; + height: 42rpx; +} + +.header .item>text { + margin-top: 20rpx; + font-size: 24rpx; + line-height: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.header .item>text:first-child { + /* margin-top: -10rpx; */ + color: #f3515c; + font-size: 36rpx; + line-height: 30rpx; + font-weight: bold; +} + +.title { + margin-top: 50rpx; + margin-bottom: 40rpx; + color: #fff; + font-size: 24rpx; + line-height: 24rpx; +} + +.list { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.list .cell { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: calc((100% - 88rpx)/ 3); + height: 140rpx; + margin-bottom: 20rpx; + border: 8rpx solid #3b3945; + border-radius: 16rpx; + color: rgba(255, 255, 255, 0.6); +} + +.list .cell.isActive { + color: #ffda2e; + border-color: #ffda2e; +} + +.list .cell .top>text:first-child { + font-size: 20rpx; + line-height: 20rpx; +} + +.list .cell .top>text:last-child { + font-size: 32rpx; + font-weight: bold; + line-height: 32rpx; +} + +.list .cell .bottom { + margin-top: 20rpx; + font-size: 24rpx; + line-height: 24rpx; +} + +.footer-btn { + height: 80rpx; + margin: 100rpx; + margin-bottom: 0rpx; + background: #ffda2e; + color: #252330; + line-height: 80rpx; + text-align: center; + font-size: 30rpx; + border-radius: 40rpx; +} \ No newline at end of file diff --git a/pages/myBills/index.js b/pages/myBills/index.js new file mode 100644 index 0000000..e7c89ef --- /dev/null +++ b/pages/myBills/index.js @@ -0,0 +1,105 @@ +// pages/myBills/index.js +const app = getApp(); +let page = 1; +Page({ + + /** + * 页面的初始数据 + */ + data: { + list: [], + isShowNewplot: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.getData(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + page = 1; + this.getData() + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + page++ + this.getData(); + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + return { + title: '智慧云馆' + } + }, + + getData() { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.memberMoneyLogBill({ + page: page, + pageSize: 10 + }).then(res => { + let list = []; + if (page != 1) { + list = this.data.list; + } + if (res.page.data.length == 0) { + page-- + } + for (let i = 0; i < res.page.data.length; i++) { + list.push(res.page.data[i]); + } + this.setData({ + list: list, + isShowNewplot: true + }) + wx.stopPullDownRefresh() + }, err => { + wx.stopPullDownRefresh() + this.setData({ + isShowNewplot: true + }) + }) + } +}) \ No newline at end of file diff --git a/pages/myBills/index.json b/pages/myBills/index.json new file mode 100644 index 0000000..9718ee0 --- /dev/null +++ b/pages/myBills/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "我的账单", + "enablePullDownRefresh": true, + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/myBills/index.wxml b/pages/myBills/index.wxml new file mode 100644 index 0000000..5b05587 --- /dev/null +++ b/pages/myBills/index.wxml @@ -0,0 +1,28 @@ + +
+ + + + + + {{item.venue.name}}进场 + 购买{{item.venue.name}}{{item.cardType}} + 预约{{item.venueLesson.name}} + 充值 + {{item.venueLesson.name}}退款 + 提现 + 提现失败 + 提现审核通过 + 单次扣款 + {{item.createdTime}} + + 使用{{item.cardType}} + {{item.money > 0 ? "+" : ""}}{{item.money}} + + + + + + + 暂无记录 ~ + diff --git a/pages/myBills/index.wxss b/pages/myBills/index.wxss new file mode 100644 index 0000000..8894136 --- /dev/null +++ b/pages/myBills/index.wxss @@ -0,0 +1,61 @@ +/* pages/myBills/index.wxss */ +.container { + min-height: calc(100vh - 190rpx); + padding: 160rpx 0 30rpx 0; +} + +.list { + background: #1a191e; +} + +.list .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 120rpx; + padding: 0 30rpx; + border-bottom: 2rpx solid #212025; +} + +.list .cell .left .title { + font-size: 24rpx; + line-height: 24rpx; + color: #FFF; +} + +.list .cell .left .date { + margin-top: 24rpx; + font-size: 20rpx; + line-height: 20rpx; + color: rgba(255, 255, 255, 0.6); +} + +.list .cell .right { + font-size: 26rpx; + color: #FFF; + font-weight: bold; +} + +.list .cell .right.isActive { + color: #caae2a; +} + +.newplot { + position: fixed; + top: 140rpx; + bottom: 0; + left: 0; + right: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #FFF; + font-size: 28rpx; +} + +.newplot>image { + width: 200rpx; + height: 200rpx; + margin-top: -200rpx; +} diff --git a/pages/myBookings/index.js b/pages/myBookings/index.js new file mode 100644 index 0000000..bcc01a8 --- /dev/null +++ b/pages/myBookings/index.js @@ -0,0 +1,226 @@ +// pages/myBookings/index.js +const app = getApp(); +let orderSn = "" +Page({ + + /** + * 页面的初始数据 + */ + data: { + isSignIn: false, + memberLessonTicket: {}, + showDeleteDialog: false, + isGoHome: false, + endDate: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + if (options.scene) { + app.$api.memberLessonTicketsSing({ + coachId: options.scene + }).then(res => { + orderSn = res.orderSn; + wx.showToast({ + title: '签到成功', + duration: 2000 + }) + let that = this; + setTimeout(function() { + that.getData(); + }, 2000) + }, err => { + setTimeout(function() { + if (!options.orderSn) { + wx.redirectTo({ + url: '/pages/home/index', + }) + } else { + wx.redirectTo({ + url: '/pages/myBookings/index?orderSn=' + options.orderSn, + }) + } + }, 2000) + }) + } else { + orderSn = options.orderSn; + this.getData(); + } + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 取消预约 + cancelBooking() { + if (!this.data.isSignIn) { + this.setData({ + showDeleteDialog: true + }) + return; + } else { + wx.showToast({ + title: '距离开课48小时内不得取消', + icon: 'none', + }) + } + }, + + // 我要签到 + signIn() { + let that = this; + // if (!this.data.isSignIn) { + // this.setData({ + // showDeleteDialog: true + // }) + // return; + // } + // let currentDate = new Date().getTime(); + // let startDate = new Date(this.data.memberLessonTicket.venueLesson.date.replace(/-/g, "/") + ' ' + this.data.memberLessonTicket.venueLesson.startTime).getTime(); + + // if (currentDate < startDate) { + // wx.showToast({ + // title: '课程还未开始', + // icon: 'none', + // }) + // return; + // } + wx.scanCode({ + onlyFromCamera: true, + success: function(res) { + if (!res.path) { + wx.showToast({ + title: '二维码错误', + icon: 'none', + }) + return; + } + wx.redirectTo({ + url: '/' + res.path + '&orderSn=' + orderSn, + }) + // that.setData({ + // isSignIn: true + // }) + }, + }) + }, + // 获取数据 + getData() { + app.$api.memberLessonTicketsDetail({ + orderSn: orderSn + }).then(res => { + let currentDate = new Date().getTime(); + let startDate = currentDate; + if (res.memberLessonTicket) { + startDate = new Date(res.memberLessonTicket.venueLesson.date.replace(/-/g, "/") + ' ' + res.memberLessonTicket.venueLesson.startTime).getTime(); + } + if (!res.memberLessonTicket) { + wx.navigateBack({ + delta: 1, + }) + } + this.setData({ + memberLessonTicket: res.memberLessonTicket, + isSignIn: (startDate - currentDate) / 1000 / 60 / 60 < 48, + }) + }, err => { + + }) + }, + + // 取消弹框 + cancelDeleteDialog() { + this.setData({ + showDeleteDialog: false + }) + }, + + // 确认删除 + confirmDeleteDialog() { + app.$api.memberLessonTicketsCancel({ + orderSn: this.data.memberLessonTicket.orderSn + }).then(res => { + wx.showToast({ + title: '取消成功', + }) + this.setData({ + showDeleteDialog: false + }) + this.getData(); + }, err => { + this.setData({ + showDeleteDialog: false + }) + }); + }, + + // 打开导航, + opnGPS() { + wx.openLocation({ + latitude: Number(this.data.memberLessonTicket.venueLesson.latitude), + longitude: Number(this.data.memberLessonTicket.venueLesson.longitude), + name: this.data.memberLessonTicket.venueLesson.name, + address: this.data.memberLessonTicket.venueLesson.address, + }) + }, + + // 点击图片 + clickImage() { + wx.previewImage({ + urls: [this.data.memberLessonTicket.venueLesson.coach.wechatCode], + }) + } +}) \ No newline at end of file diff --git a/pages/myBookings/index.json b/pages/myBookings/index.json new file mode 100644 index 0000000..5e84d0c --- /dev/null +++ b/pages/myBookings/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "我的预约", + "usingComponents": { + "confirm-dialog": "/component/confirmDialog/confirmDialog", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/myBookings/index.wxml b/pages/myBookings/index.wxml new file mode 100644 index 0000000..58fd584 --- /dev/null +++ b/pages/myBookings/index.wxml @@ -0,0 +1,64 @@ + +
+ + + + + {{memberLessonTicket.venueLesson.name}} + + + 已预约 + 未签到 + 已签到 + 已取消 + + + + {{memberLessonTicket.venueLesson.date}} {{memberLessonTicket.venueLesson.startTime}} ~ {{memberLessonTicket.venueLesson.endTime}} + + + + + {{memberLessonTicket.venueLesson.address}} + + + 导航 + + + + + {{memberLessonTicket.memberCard.cardType ? '已使用' + memberLessonTicket.memberCard.cardType : "未使用会员卡"}} + + + + 人数 + {{memberLessonTicket.lessonCount}}人 + + + + 费用 + 已支付: ¥{{memberLessonTicket.order.price}} + + + + 助理教练信息 + + + + 扫一扫加好友 + + + + + + 取消预约 + + 我要签到 + + + + + \ No newline at end of file diff --git a/pages/myBookings/index.wxss b/pages/myBookings/index.wxss new file mode 100644 index 0000000..f9c3164 --- /dev/null +++ b/pages/myBookings/index.wxss @@ -0,0 +1,117 @@ +/* pages/myBookings/index.wxss */ + +.container { + min-height: calc(100vh - 290rpx); + padding: 160rpx 30rpx 130rpx 30rpx; +} + +.cell-box { + background: #1a191e; + border-radius: 10rpx; +} + +.cell-box .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + border-bottom: 2rpx solid #212025; +} + +.cell-box .cell.unline { + border: none; +} + +.cell-box .cell>image { + width: 34rpx; + height: 34rpx; + margin-right: 26rpx; +} + +.cell-box .cell>text { + flex: 1; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.cell-box .cell .title { + flex: 1; + display: flex; + align-items: center; + color: #fff; + font-size: 26rpx; +} + +.cell-box .cell .cell-right { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.6); + font-size: 20rpx; +} + +.cell-box .cell .cell-right .gps-img { + width: 50rpx; + height: 50rpx; + border-radius: 50%; +} + +.cell-box .cell .cell-right>text { + height: 20rpx; + margin-top: 6rpx; + line-height: 20rpx; +} + +.cell-box .cell .state { + font-size: 22rpx; + color: #ffda2e; +} + +.cell-box .cell .cell-right-white { + color: #fff; + font-size: 24rpx; +} + +.cell-box .qrCode-box { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 300rpx; +} + +.cell-box .qrCode-box>image { + width: 200rpx; + height: 200rpx; +} + +.cell-box .qrCode-box>text { + margin-top: 20rpx; + font-size: 22rpx; + line-height: 22rpx; + color: rgba(255, 255, 255, 0.6); +} + +.footer-box { + position: fixed; + bottom: 0; + left: 0; + display: flex; + width: 100%; + height: 100rpx; +} + +.footer-btn { + flex: 1; + background: #767578; + color: #1a191e; + font-size: 32rpx; + text-align: center; + line-height: 100rpx; +} + +.footer-btn.isActive { + background: #ffda2e; +} diff --git a/pages/myBookingsList/index.js b/pages/myBookingsList/index.js new file mode 100644 index 0000000..7a95d84 --- /dev/null +++ b/pages/myBookingsList/index.js @@ -0,0 +1,131 @@ +// pages/myBookingsList/index.js +const app = getApp(); +let page = 1; +Page({ + + /** + * 页面的初始数据 + */ + data: { + state: 0, + list: [], + isShowNewplot: false, + gohome: true + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.getData(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + page = 1; + this.getData(); + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + page++; + this.getData(); + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 切换标签 + changeTab(e) { + let state = e.currentTarget.dataset.state; + this.setData({ + state: state + }) + page = 1; + this.getData(); + }, + + // 获取数据 + getData() { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.memberLessonTicketsReserve({ + page: page, + pageSize: 10, + status: this.data.state + }).then(res => { + let list = []; + if (page == 1) { + this.setData({ + list: [] + }) + } else { + list = this.data.list; + } + for (let i = 0; i < res.page.data.length; i++) { + let currentDate = new Date().getTime(); + let endDate = 0; + if (res.page.data[i].date) { + endDate = new Date(res.page.data[i].date.replace(/-/g, "/") + ' ' + res.page.data[i].endTime).getTime(); + } + res.page.data[i].isEnd = currentDate > endDate; + list.push(res.page.data[i]); + } + this.setData({ + list: list, + isShowNewplot: true + }) + wx.stopPullDownRefresh() + }, err => { + wx.stopPullDownRefresh() + }) + }, + + // 点击CEll + clickCell(e) { + let orderSn = e.currentTarget.dataset.ordersn; + wx.navigateTo({ + url: `/pages/myBookings/index?orderSn=${orderSn}`, + }) + } +}) \ No newline at end of file diff --git a/pages/myBookingsList/index.json b/pages/myBookingsList/index.json new file mode 100644 index 0000000..ab66812 --- /dev/null +++ b/pages/myBookingsList/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "我的预约", + "enablePullDownRefresh": true, + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/myBookingsList/index.wxml b/pages/myBookingsList/index.wxml new file mode 100644 index 0000000..1fcee97 --- /dev/null +++ b/pages/myBookingsList/index.wxml @@ -0,0 +1,44 @@ + +
+ + + + + 已预约 + + + 已完成 + + + + + + 预约单号: {{item.orderSn}} + 已预约 + 未签到 + 已完成 + 已取消 + + + + + + + {{item.lessonName}} + ({{item.lessonCount}}人) + + ¥{{item.order.price}} + + + {{item.date}} {{item.startTime}} ~ {{item.endTime}} + + {{item.address}} + + + + + + + + 暂无预约 ~ + \ No newline at end of file diff --git a/pages/myBookingsList/index.wxss b/pages/myBookingsList/index.wxss new file mode 100644 index 0000000..10188f5 --- /dev/null +++ b/pages/myBookingsList/index.wxss @@ -0,0 +1,134 @@ +/* pages/myBookingsList/index.wxss */ + +.container { + min-height: calc(100vh - 260rpx); + padding: 250rpx 30rpx 30rpx 30rpx; +} + +.header { + position: fixed; + top: 120rpx; + left: 0; + display: flex; + justify-content: space-between; + width: 100%; + height: 90rpx; + background: #1a191e; +} + +.header .btn-box { + flex: 1; + height: 100%; + text-align: center; +} + +.header .btn-box .item-btn { + width: 90rpx; + height: 84rpx; + margin: 0 auto; + font-size: 28rpx; + line-height: 90rpx; + border-bottom: 6rpx solid #1a191e; + color: rgba(255, 255, 255, 0.6); +} + +.header .btn-box .item-btn.isActive { + color: #ffda2e; + border-bottom: 6rpx solid #ffda2e; +} + +.cell { + margin-bottom: 30rpx; + border-radius: 20rpx; + background: #1a191e; +} + +.cell .top { + display: flex; + justify-content: space-between; + align-items: center; + height: 80rpx; + padding: 0 26rpx; + border: 2rpx solid #212025; +} + +.cell .top>text:first-child { + font-size: 24rpx; + color: #fff; +} + +.cell .top>text:last-child { + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; +} + +.cell .top>text:last-child.isActive { + color: #ffda2e; +} + +.cell .bottom { + display: flex; + justify-content: space-between; + padding: 20rpx 24rpx; +} + +.cell .bottom>image { + width: 130rpx; + height: 110rpx; +} + +.cell .bottom .goods-box { + flex: 1; + margin-left: 20rpx; +} + +.cell .bottom .goods-box .title-box { + display: flex; + justify-content: space-between; + align-items: center; +} + +.cell .bottom .goods-box .title-box .title-left { + flex: 1; + height: 26rpx; + color: #fff; + font-size: 24rpx; + line-height: 26rpx; +} + +.cell .bottom .goods-box .title-box .title-left>text:first-child { + font-size: 26rpx; + color: #ffda2e; +} + +.cell .bottom .goods-box .title-box .title-right { + font-size: 24rpx; + color: #FFF; +} + +.cell .bottom .goods-box .message { + font-size: 22rpx; + color: #FFF; + line-height: 22rpx; + margin-top: 16rpx; +} + +.newplot { + position: fixed; + top: 260rpx; + bottom: 0; + left: 0; + right: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #FFF; + font-size: 28rpx; +} + +.newplot>image { + width: 200rpx; + height: 200rpx; + margin-top: -200rpx; +} \ No newline at end of file diff --git a/pages/myMembershipCard/index.js b/pages/myMembershipCard/index.js new file mode 100644 index 0000000..5e6f9da --- /dev/null +++ b/pages/myMembershipCard/index.js @@ -0,0 +1,142 @@ +// pages/myMembershipCard/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + unfoldIndex: 1, + cards: [], + showCardMask: false, + venues: {}, + isShowNewplot: false + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.getData(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 展开Cell + unfoldCell(e) { + let index = e.currentTarget.dataset.index; + if (this.data.unfoldIndex == index) { + this.setData({ + unfoldIndex: '' + }) + } else { + this.setData({ + unfoldIndex: index + }) + } + }, + + // 选择默认 + selectDefault(e) { + let cardFlg = e.currentTarget.dataset.cardflg; + let id = e.currentTarget.dataset.id; + if (cardFlg == 0) { + app.$api.memberVenueUpdateCard({ + cardId: id + }).then(res => { + this.getData(); + }) + } + }, + // 获取数据 + getData() { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.memberVenueCard({}).then(res => { + let list = []; + for (let i = 0; i < res.cards.length; i++) { + let card = res.cards[i]; + for (let j = 0; j < card.memberCards.length; j++) { + card.memberCards[j].startTime = card.memberCards[j].startTime.split(' ')[0]; + card.memberCards[j].endTime = card.memberCards[j].endTime.split(' ')[0]; + } + list.push(card); + } + this.setData({ + cards: list, + isShowNewplot: true + }) + }, err => { + this.setData({ + isShowNewplot: true + }) + }); + }, + + // 关闭 + cancelCardMask() { + this.setData({ + showCardMask: false + }) + }, + + // 开启会员卡提示 + showCardContent(e) { + this.setData({ + showCardMask: true, + venues: this.data.cards[e.currentTarget.dataset.index] + }) + }, + +}) \ No newline at end of file diff --git a/pages/myMembershipCard/index.json b/pages/myMembershipCard/index.json new file mode 100644 index 0000000..3bda79c --- /dev/null +++ b/pages/myMembershipCard/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "我的会员卡", + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/myMembershipCard/index.wxml b/pages/myMembershipCard/index.wxml new file mode 100644 index 0000000..a9d2fb9 --- /dev/null +++ b/pages/myMembershipCard/index.wxml @@ -0,0 +1,40 @@ + +
+ + + + 默认 + + + {{item.name}} + + + + + + + + + + {{data.cardType}} + 有效期: {{data.startTime}} - {{data.endTime}} + {{data.cardFlg == 0 ? "可使用" : (data.cardFlg == 1 ? "待使用" : "已失效")}} + + + + + + + + + + + VIP会员享受专属特权 + + + + + + + 暂无会员卡 ~ + \ No newline at end of file diff --git a/pages/myMembershipCard/index.wxss b/pages/myMembershipCard/index.wxss new file mode 100644 index 0000000..e938f2b --- /dev/null +++ b/pages/myMembershipCard/index.wxss @@ -0,0 +1,182 @@ +/* pages/myMembershipCard/index.wxss */ + +.container { + min-height: calc(100vh - 190rpx); + padding: 160rpx 30rpx 30rpx 30rpx; +} + +.cell { + margin-bottom: 30rpx; + border-radius: 20rpx; + background: #1a191e; +} + +.cell .header { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + border-bottom: 2rpx solid #212025; +} + +.cell .header .default { + color: #fff; + font-size: 24rpx; +} + +.cell .header .icon { + width: 32rpx; + height: 30rpx; + margin: 0 26rpx 0 40rpx; +} + +.cell .header .title { + flex: 1; + font-size: 24rpx; + color: #fff; +} + +.cell .header .tip-icon { + width: 26rpx; + height: 26rpx; + margin-right: 16rpx; +} + +.cell .header .right-arrow { + width: 22rpx; + height: 12rpx; +} + +.cell .body { + animation: dropDown 0.5s linear; +} + +.cell .body .card-cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 30rpx; +} + +.cell .body .card-cell .default-icon { + width: 30rpx; + height: 30rpx; +} + +.cell .body .card-cell .tab { + width: 100rpx; + height: 26rpx; + padding: 0 4rpx; + margin-left: 40rpx; + margin-right: 16rpx; + font-size: 20rpx; + color: #b69d29; + border: 2rpx solid #b69d29; + line-height: 26rpx; + border-radius: 13rpx; + text-align: center; +} + +.cell .body .card-cell .tab.isActive { + color: rgba(255, 255, 255, 0.6); + border: 2rpx solid #737275; +} + +.cell .body .card-cell .indate { + flex: 1; + font-size: 20rpx; + color: rgba(255, 255, 255, 0.6); +} + +.cell .body .card-cell .state { + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; +} + +.cell .body .card-cell .state.isActive { + color: #b69d29; + font-size: 24rpx; +} + +.card-mask { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.6); +} + +.card-mask .card-box { + position: relative; + width: 70%; + /* min-height: 300rpx; */ + border-radius: 20rpx; + background: #1a191e; + font-size: 24rpx; + line-height: 30rpx; + color: rgba(255, 255, 255, 0.6); + padding: 30rpx; +} + +.card-mask .card-box .close { + position: absolute; + top: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + width: 60rpx; + height: 60rpx; +} + +.card-mask .card-box .close>image { + width: 26rpx; + height: 26rpx; +} + +.card-mask .card-box .info-rich { + padding: 30rpx; + font-size: 26rpx; + line-height: 36rpx; + color: rgba(255, 255, 255, 0.6); +} + +.card-mask .card-box .title { + text-align: center; + color: #ffda2e; + font-size: 28rpx; +} + +.newplot { + position: fixed; + top: 120rpx; + bottom: 0; + left: 0; + right: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #fff; + font-size: 28rpx; +} + +.newplot>image { + width: 200rpx; + height: 200rpx; + margin-top: -200rpx; +} + +.unClickClass { + height: 28rpx; + width: 28rpx; + border-radius: 50%; + /* background: #737275; */ + border: 2rpx solid rgba(255, 255, 255, 0.3); +} diff --git a/pages/notice/index.js b/pages/notice/index.js new file mode 100644 index 0000000..36f8458 --- /dev/null +++ b/pages/notice/index.js @@ -0,0 +1,84 @@ +// pages/notice/index.js +const app = getApp(); +let id = '' +Page({ + + /** + * 页面的初始数据 + */ + data: { + announcement: {}, + isGoHome: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + id = options.id; + app.$api.announcementDetail({ + id: id + }).then(res => { + res.announcement.description = res.announcement.description.replace(/section/g, "div"); + this.setData({ + announcement: res.announcement + }) + }, err => { + + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + } +}) \ No newline at end of file diff --git a/pages/notice/index.json b/pages/notice/index.json new file mode 100644 index 0000000..44abfcf --- /dev/null +++ b/pages/notice/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "公告", + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/notice/index.wxml b/pages/notice/index.wxml new file mode 100644 index 0000000..58544bc --- /dev/null +++ b/pages/notice/index.wxml @@ -0,0 +1,12 @@ + +
+ + + {{announcement.title}} + {{announcement.time}} + + + + + + diff --git a/pages/notice/index.wxss b/pages/notice/index.wxss new file mode 100644 index 0000000..f9a884c --- /dev/null +++ b/pages/notice/index.wxss @@ -0,0 +1,38 @@ +/* pages/notice/index.wxss */ + +.container { + /* min-height: calc(1100 - 200rpx); */ + background: #fff; +} + +.body { + padding-bottom: 40rpx; + padding-left: 30rpx; + padding-right: 30rpx; + background: #fff; +} + +.title { + padding-top: 40rpx; + font-size: 32rpx; + font-weight: bold; +} + +.date { + height: 20rpx; + margin-top: 36rpx; + font-size: 20rpx; + color: #cfcfcf; + line-height: 20rpx; +} + +.rich-box { + margin-top: 40rpx; + + font-size: 26rpx; + line-height: 40rpx; +} + +.rich-box .wscnph { + width: 100%; +} diff --git a/pages/questions/index.js b/pages/questions/index.js new file mode 100644 index 0000000..dc0ce83 --- /dev/null +++ b/pages/questions/index.js @@ -0,0 +1,93 @@ +// pages/questions/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + questions: [] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + app.$api.faqs({}).then(res => { + this.setData({ + questions: res.faqs + }) + }, err => { + + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 打开答案 + openAnswer(e) { + let index = e.currentTarget.dataset.index; + let list = []; + for (let i = 0; i < this.data.questions.length; i++) { + let item = this.data.questions[i] + if (i == index) { + item.isOpenAnswer = !item.isOpenAnswer; + } else { + item.isOpenAnswer = false; + } + list.push(item) + } + this.setData({ + questions: list + }) + } +}) \ No newline at end of file diff --git a/pages/questions/index.json b/pages/questions/index.json new file mode 100644 index 0000000..05f4ad8 --- /dev/null +++ b/pages/questions/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "常见问题", + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/questions/index.wxml b/pages/questions/index.wxml new file mode 100644 index 0000000..de5ea51 --- /dev/null +++ b/pages/questions/index.wxml @@ -0,0 +1,14 @@ + +
+ + + + + {{index + 1}}. {{item.problem}} + + + + {{item.answer}} + + + diff --git a/pages/questions/index.wxss b/pages/questions/index.wxss new file mode 100644 index 0000000..876f92b --- /dev/null +++ b/pages/questions/index.wxss @@ -0,0 +1,40 @@ +/* pages/questions/index.wxss */ + +.container { + padding: 20rpx; + padding-top: 150rpx; + min-height: calc(100vh - 170rpx); +} + +.body { + background: #1a191e; + border-radius: 10rpx; +} + +.body .cell { + overflow: hidden; + border-bottom: 2rpx solid #212025; +} + +.body .cell .question { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + color: #fff; + font-size: 24rpx; +} + +.body .cell .question>image { + width: 22rpx; + height: 12rpx; +} + +.body .cell .answer { + padding: 50rpx; + border-top: 2rpx solid #212025; + color: rgba(255, 255, 255, 0.6); + font-size: 22rpx; + line-height: 38rpx; +} diff --git a/pages/register/index.js b/pages/register/index.js new file mode 100644 index 0000000..6d604cf --- /dev/null +++ b/pages/register/index.js @@ -0,0 +1,315 @@ +// pages/register/index.js +const app = getApp(); +let timer = ''; +let codeType = 0; +let changeType = ''; +Page({ + + /** + * 页面的初始数据 + */ + data: { + isFocus: '', + body: {}, + code: "获取验证码", + isGetCode: false, + ageList: [{ + label: '男', + value: 0 + }, { + label: '女', + value: 1 + }, { + label: '不选择', + value: 2 + }], + isShowSexPopup: false, + sexLabel: '选择性别(选填)', + changeFrom: {}, + unClick: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + let that = this; + changeType = options.changeType ? options.changeType : ''; + codeType = options.codeType; + this.setData({ + changeFrom: options + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 输入框获取聚焦时 + inputFocus(event) { + let key = event.currentTarget.dataset.type; + this.setData({ + isFocus: key + }) + }, + + // 输入框输入时 + inputChange(event) { + let key = event.currentTarget.dataset.type; + this.data.body[key] = event.detail.value; + }, + + // 输入框失去焦点时 + inputBlur(event) { + let key = event.currentTarget.dataset.type; + this.setData({ + isFocus: '' + }) + }, + + // 获取验证码 + getCode() { + if (this.data.isGetCode) { + return; + } + if (!this.data.body.phone) { + wx.showToast({ + title: '请输入手机号', + icon: 'none', + }) + return; + } + this.data.isGetCode = true; + + if (this.data.changeFrom.codeType != 3) { + app.$api.smsRegister({ + mobile: this.data.body.phone, + 'type': codeType + }).then(res => { + clearTimeout(timer); + this.countdown(60); + }, err => { + this.data.isGetCode = false; + }) + } + if (this.data.changeFrom.codeType == 3) { + app.$api.memberSmsUpdate({ + mobile: this.data.body.phone, + }).then(res => {}, err => {}) + } + }, + + // 倒计时 + countdown(val) { + if (val == 0) { + this.data.isGetCode = false; + clearTimeout(timer); + return; + } + let that = this; + timer = setTimeout(function() { + val-- + that.countdown(val); + that.setData({ + code: val == 0 ? '获取验证码' : val + ' s' + }) + }, 1000) + }, + + // 点击选择性别 + changeSex() { + this.setData({ + isShowSexPopup: true + }) + }, + + // 取消选择性别 + cancelSex() { + this.setData({ + isShowSexPopup: false + }) + }, + + // 选择性别 + selectedSex(e) { + this.data.body.sex = e.detail.value; + this.setData({ + isShowSexPopup: false, + sexLabel: e.detail.label == '不选择' ? "选择性别(选填)" : e.detail.label + }) + }, + + // 注册 + registerClick(e) { + if (this.data.unClick) { + return; + } + if (!this.data.body.phone) { + wx.showToast({ + title: '请输入手机号', + icon: 'none', + }) + return; + } + if (!this.data.body.code) { + wx.showToast({ + title: '请输入验证码', + icon: 'none', + }) + return; + } + if (this.data.body.age > 100) { + wx.showToast({ + title: '输入年龄不得超过100', + icon: 'none', + }) + return; + } + this.data.unClick = true; + if (codeType == 2) { + app.$api.memberRegister({ + address: this.data.body.address ? this.data.body.address : '', + age: this.data.body.age ? this.data.body.age : '', + captcha: this.data.body.code ? this.data.body.code : '', + mobile: this.data.body.phone ? this.data.body.phone : '', + name: this.data.body.name ? this.data.body.name : '', + sex: this.data.body.sex ? this.data.body.sex : '', + }).then(res => { + this.data.unClick = false; + wx.setStorageSync('accessToken', res.authorization.accessToken); + // if (wx.getStorageSync('history').indexOf("basketballGym") > -1) { + wx.redirectTo({ + url: '/pages/myAccount/index?isPass=' + 1, + }) + // } else { + // wx.redirectTo({ + // url: '/pages/facialCapturing/index?isPass=' + 1, + // }) + // } + + }, err => { + this.data.unClick = false; + }) + } else if (codeType == 1) { + app.$api.memberLoginWXPhone({ + avatar: wx.getStorageSync('information').avatar, + nickname: wx.getStorageSync('information').nickname, + openId: wx.getStorageSync('information').openId, + address: this.data.body.address ? this.data.body.address : '', + age: this.data.body.age ? this.data.body.age : '', + captcha: this.data.body.code ? this.data.body.code : '', + mobile: this.data.body.phone ? this.data.body.phone : '', + name: this.data.body.name ? this.data.body.name : '', + sex: this.data.body.sex ? this.data.body.sex : '', + }).then(res => { + this.data.unClick = false; + wx.setStorageSync('accessToken', res.authorization.accessToken); + // if (wx.getStorageSync('history').indexOf("basketballGym") > -1) { + wx.redirectTo({ + url: '/pages/myAccount/index?isPass=' + 1, + }) + // } else { + // wx.redirectTo({ + // url: '/pages/facialCapturing/index?isPass=' + 1, + // }) + // } + }, err => { + this.data.unClick = false; + }) + } + }, + + // 保存修改 + saveClick() { + let body = {}; + if (this.data.changeFrom.label == "phone") { + if (!this.data.body.code) { + wx.showToast({ + title: '请输入验证码', + icon: 'none', + }) + return; + } + body.mobile = this.data.body.phone ? this.data.body.phone : this.data.changeFrom.value; + body.captcha = this.data.body.code; + } else { + if (this.data.changeFrom.label == 'age' && this.data.body.age > 100) { + wx.showToast({ + title: '输入年龄不得超过100', + icon: 'none', + }) + return; + } + if (this.data.changeFrom.label == 'nickname' && this.data.body.nickname === '') { + wx.showToast({ + title: '请输入昵称', + icon: 'none', + }) + return; + } + body[this.data.changeFrom.label] = this.data.body[this.data.changeFrom.label] != undefined ? this.data.body[this.data.changeFrom.label] : this.data.changeFrom.value + } + + app.$api.memberUpdateInformation(body).then(res => { + wx.showToast({ + title: '保存成功', + duration: 2000 + }); + setTimeout(function() { + wx.navigateBack({ + delta: 1, + }) + }, 2000); + + }, err => { + + }) + } +}) \ No newline at end of file diff --git a/pages/register/index.json b/pages/register/index.json new file mode 100644 index 0000000..773af37 --- /dev/null +++ b/pages/register/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "action-sheet": "/component/actionSheet/actionSheet", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/register/index.wxml b/pages/register/index.wxml new file mode 100644 index 0000000..94e6a2e --- /dev/null +++ b/pages/register/index.wxml @@ -0,0 +1,46 @@ + +
+ + + + + + + + + + + + + + + + + {{sexLabel}} + {{sexLabel}} + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/register/index.wxss b/pages/register/index.wxss new file mode 100644 index 0000000..5fcb5e7 --- /dev/null +++ b/pages/register/index.wxss @@ -0,0 +1,67 @@ +/* pages/register/index.wxss */ +page { + position: relative; +} + +.container { + min-height: calc(100vh - 230rpx); + padding: 230rpx 124rpx 0 124rpx; +} + +.input-box { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 30rpx; + border-bottom: 2rpx solid #3f3e49; +} + +.input-box>input { + /* flex: 1; */ + margin: 20rpx 0; + font-size: 24rpx; + font-weight: bold; + color: #fff; +} + +.input-box>text { + margin: 30rpx 0; + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; +} + +.input-box>image { + width: 12rpx; + height: 22rpx; +} + +.input-box.isActive { + border-bottom: 2rpx solid #6e602f; +} + +.input-box .placeholder { + color: rgba(255, 255, 255, 0.6); +} + +.input-box>button { + padding: 0; + width: 200rpx; + background: none; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); + text-align: center; +} + +.input-box>button::after { + border: none; +} + +.register-btn { + margin-top: 200rpx; + height: 80rpx; + border-radius: 40rpx; + background: #ffda2e; + color: #252330; + font-size: 26rpx; + line-height: 80rpx; +} \ No newline at end of file diff --git a/pages/sportsGroundList/index.js b/pages/sportsGroundList/index.js new file mode 100644 index 0000000..337eed1 --- /dev/null +++ b/pages/sportsGroundList/index.js @@ -0,0 +1,178 @@ +// pages/sportsGroundList/index.js +const app = getApp(); +let latitude = 0; // 纬度 +let longitude = 0; // 经度 +let page = 1; +Page({ + + /** + * 页面的初始数据 + */ + data: { + state: 1, + venues: [], + isShowAuth: false, + isShowNewplot: false, + isGoHome: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + let that = this; + this.setData({ + state: options.state + }) + this.getLocation(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + let pages = getCurrentPages(); + this.setData({ + isGoHome: pages.length == 1 + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + this.getData(); + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + this.getData(++page); + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 切换列表 + changeTip(e) { + let state = e.currentTarget.dataset.state; + this.setData({ + state: state + }) + + this.getData(); + }, + + // 点击cell + clickCell(e) { + let id = e.currentTarget.dataset.id; + if (this.data.state == 1) { + wx.navigateTo({ + url: `/pages/basketballGym/index?id=${id}`, + }) + } + if (this.data.state == 2) { + wx.navigateTo({ + url: `/pages/gymnasium/index?id=${id}`, + }) + } + }, + + // 获取数据 + getData(e) { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.venues({ + latitude: latitude, + longitude: longitude, + page: e ? e : 1, + pageSize: 10, + type: this.data.state + }).then(res => { + page = res.page.data.length > 0 ? res.page.page : page--; + let list = []; + if (e) { + list = this.data.venues + } + for (let i = 0; i < res.page.data.length; i++) { + list.push(res.page.data[i]); + } + this.setData({ + venues: list, + isShowNewplot: true + }) + if (this.data.state == 3) { + wx.showToast({ + title: '暂未开放,敬请期待', + icon: 'none', + }) + } + wx.stopPullDownRefresh(); + }, err => { + wx.stopPullDownRefresh(); + this.setData({ + isShowNewplot: true + }) + }) + }, + + // 活动当前坐标 + getLocation() { + let that = this; + wx.getLocation({ + type: 'gcj02', + success: function(res) { + latitude = res.latitude; + longitude = res.longitude; + that.getData() + }, + fail: function(res) { + if (res.errMsg == 'getLocation:fail auth deny' || res.errMsg == 'getLocation:fail:auth denied') { + that.setData({ + isShowAuth: true + }) + } + }, + }) + }, + + // 获取授权 + setAuthSuccess(e) { + if (e.detail.authSetting['scope.userLocation']) { + this.getLocation(); + this.setData({ + isShowAuth: false + }) + } + }, +}) \ No newline at end of file diff --git a/pages/sportsGroundList/index.json b/pages/sportsGroundList/index.json new file mode 100644 index 0000000..7639371 --- /dev/null +++ b/pages/sportsGroundList/index.json @@ -0,0 +1,7 @@ +{ + "enablePullDownRefresh": true, + "usingComponents": { + "confirm-dialog": "/component/confirmDialog/confirmDialog", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/sportsGroundList/index.wxml b/pages/sportsGroundList/index.wxml new file mode 100644 index 0000000..dabf4f7 --- /dev/null +++ b/pages/sportsGroundList/index.wxml @@ -0,0 +1,42 @@ + +
+ + + + + + 篮球场 + + + + + + 健身 + + + + + 足球场 + + + + + + + + {{item.name}} + + {{item.address}} + {{item.distance}}km + + + + + + + + + + + 暂无运动场馆 ~ + \ No newline at end of file diff --git a/pages/sportsGroundList/index.wxss b/pages/sportsGroundList/index.wxss new file mode 100644 index 0000000..304e8fc --- /dev/null +++ b/pages/sportsGroundList/index.wxss @@ -0,0 +1,96 @@ +/* pages/sportsGroundList/index.wxss */ + +.container { + min-height: calc(100vh - 300rpx); + padding-top: 270rpx; + padding-bottom: 30rpx; +} + +.header { + position: fixed; + top: 120rpx; + left: 0; + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + height: 140rpx; + background: #1a191e; + border-bottom: 2rpx solid #212025; +} + +.header .item-box { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: rgba(255, 255, 255, 0.6); + font-size: 24rpx; + line-height: 24rpx; +} + +.header .item-box.isActive { + color: #ffca00; +} + +.header .item-box>image { + width: 66rpx; + height: 58rpx; + margin-bottom: 16rpx; +} + +.list .cell-box { + display: flex; + justify-content: space-between; + align-items: center; + height: 140rpx; + margin-bottom: 30rpx; + padding: 0 26rpx 0 16rpx; + background: #1a191e; +} + +.list .cell-box>image { + width: 130rpx; + height: 110rpx; + margin-right: 20rpx; +} + +.list .cell-box .cell { + flex: 1; +} + +.list .cell-box .cell .title { + color: #fff; + font-size: 28rpx; + line-height: 28rpx; +} + +.list .cell-box .cell .address { + display: flex; + justify-content: space-between; + margin-top: 30rpx; + font-size: 24rpx; + line-height: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.newplot { + position: fixed; + top: 260rpx; + bottom: 0; + left: 0; + right: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #FFF; + font-size: 28rpx; +} + +.newplot>image { + width: 200rpx; + height: 200rpx; + margin-top: -200rpx; +} \ No newline at end of file diff --git a/pages/userInfo/index.js b/pages/userInfo/index.js new file mode 100644 index 0000000..a5f9a94 --- /dev/null +++ b/pages/userInfo/index.js @@ -0,0 +1,180 @@ +// pages/userInfo/index.js +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + setList: [], + isShowSheet: false, + members: {}, + gohome: true + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.getData(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 切换头像 + changeAvatar() { + let that = this; + wx.chooseImage({ + count: 1, + success: function (e) { + wx.showLoading({ + title: '正在上传...', + mask: true, + }) + app.$api.uploadAvatar({ + filePath: e.tempFilePaths[0] + }).then(res => { + wx.showToast({ + title: '上传成功', + icon: 'success', + }) + that.getData(); + }, err => {}); + }, + fail: function (res) { + console.log(res); + }, + }) + }, + + // 修改性别 + changeSex(val) { + this.setData({ + setList: [{ + label: '男', + value: 0, + type: 'sex' + }, { + label: '女', + value: 1, + type: 'sex' + }, { + label: '不选择', + value: 2, + type: 'sex' + }], + isShowSheet: true + }) + }, + + // 隐藏sheet弹框 + cancelSheet() { + this.setData({ + isShowSheet: false + }) + }, + + // 选择sheet + selectedSheet(e) { + let obj = e.detail; + if (obj.type == 'avatar') { + if (obj.value == 0) { + this.photograph('camera'); + } + if (obj.value == 1) { + this.photograph('album'); + } + } + if (obj.type == 'sex') { + this.updateSex(obj.value); + } + this.setData({ + isShowSheet: false + }) + }, + + // 修改性别 上传服务器 + updateSex(val) { + app.$api.memberUpdateInformation({ + sex: val + }).then(res => { + this.getData(); + }, err => { + + }) + }, + + // 修改信息 + changeMessage(e) { + let label = e.currentTarget.dataset.label; + let value = e.currentTarget.dataset.value ? e.currentTarget.dataset.value : ""; + wx.removeStorageSync('history'); + wx.navigateTo({ + url: `/pages/register/index?label=${label}&value=${value}&codeType=3`, + }) + }, + + // 获取数据 + getData() { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.memberInformation({}).then(res => { + this.setData({ + members: res.members + }) + }, err => { + + }) + } +}) \ No newline at end of file diff --git a/pages/userInfo/index.json b/pages/userInfo/index.json new file mode 100644 index 0000000..6bef9c4 --- /dev/null +++ b/pages/userInfo/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "action-sheet": "/component/actionSheet/actionSheet", + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/userInfo/index.wxml b/pages/userInfo/index.wxml new file mode 100644 index 0000000..7365419 --- /dev/null +++ b/pages/userInfo/index.wxml @@ -0,0 +1,50 @@ + +
+ + + + + 头像 + + + + + + + 昵称 + {{members.nickname}} + + + + 手机号 + {{members.mobile}} + + + + + + + + 姓名 + {{members.name}} + + + + 性别 + {{members.sex == 0 ? "男" : (members.sex == 1 ? "女" : "")}} + + + + 年龄 + {{members.age}} + + + + 地址 + {{members.address}} + + + + + + \ No newline at end of file diff --git a/pages/userInfo/index.wxss b/pages/userInfo/index.wxss new file mode 100644 index 0000000..10680eb --- /dev/null +++ b/pages/userInfo/index.wxss @@ -0,0 +1,61 @@ +/* pages/userInfo/index.wxss */ + +.container { + padding: 190rpx 30rpx 30rpx 30rpx; + min-height: calc(100vh - 190rpx); +} + +.list { + margin-bottom: 30rpx; + background: #1a191e; + border-radius: 20rpx; +} + +.list .cell { + display: flex; + justify-content: space-between; + align-items: center; + min-height: 90rpx; + padding: 0 30rpx; + border-bottom: 2rpx solid #212025; +} + +.list .cell.avatar { + height: 120rpx; +} + +.list .cell.unLine { + border-bottom: none; +} + +.list .cell .title { + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.list .cell .right-cell { + display: flex; + justify-content: flex-end; + align-items: center; +} + +.list .cell .avatar-img { + width: 80rpx; + height: 80rpx; + border-radius: 50%; +} + +.list .cell .right-arrow { + width: 12rpx; + height: 22rpx; + margin-left: 24rpx; +} + +.list .cell .message { + flex: 1; + margin: 20rpx 0; + text-align: right; + color: #FFF; + font-size: 24rpx; + line-height: 30rpx; +} \ No newline at end of file diff --git a/pages/withdrawal/index.js b/pages/withdrawal/index.js new file mode 100644 index 0000000..79261b2 --- /dev/null +++ b/pages/withdrawal/index.js @@ -0,0 +1,178 @@ +// pages/withdrawal/index.js +const app = getApp(); +let money = 0; +Page({ + + /** + * 页面的初始数据 + */ + data: { + cardholder: '', + bank: '', + bankCard: '', + money: '', + isUnClick: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + this.setData({ + money:options.money + }) + money = options.money + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + this.data.isUnClick = false; + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + return { + title: '智慧云馆' + } + }, + + // 修改持卡人 + cardholderInput(e) { + this.data.cardholder = e.detail.value; + }, + + // 修改银行 + bankInput(e) { + this.data.bank = e.detail.value; + }, + + // 修改银行卡号 + bankCardInput(e) { + this.data.bankCard = e.detail.value; + }, + + // 提现金额 + moneyInput(e) { + this.data.money = e.detail.value; + }, + + // 确认提现 + withdrawalClick(e) { + if (!this.data.cardholder) { + wx.showToast({ + title: '请输入持卡人', + icon: 'none', + }) + return; + } + if (!this.data.bank) { + wx.showToast({ + title: '请输入开户银行', + icon: 'none', + }) + return; + } + if (this.data.bankCard.length != 16) { + wx.showToast({ + title: '请输入16位银行卡号', + icon: 'none', + }) + return; + } + if (!this.data.money) { + wx.showToast({ + title: '请输入提现金额', + icon: 'none', + }) + return; + } + if (this.data.money > money) { + wx.showToast({ + title: '提现金额不得大于余额', + icon: 'none', + }) + return; + } + console.log(/^([1-9][\d]{0,7}|0)(\.[\d]{1,2})?$/.test(this.data.money)); + if (!/^([1-9][\d]{0,7}|0)(\.[\d]{1,2})?$/.test(this.data.money)) { + wx.showToast({ + title: '请输入正确的金额', + icon: 'none', + }) + return; + } + if (this.data.isUnClick) { + return + } + wx.showLoading({ + title: '加载中...', + mask: true, + }) + this.data.isUnClick = true; + app.$api.memberBankBind({ + bankName: this.data.bank, + bankNo: this.data.bankCard, + name: this.data.cardholder + }).then(res => { + app.$api.memberWithdrawApply({ + bankId: res.bankId, + money: this.data.money + }).then(res => { + wx.showToast({ + title: '已受理提现申请', + duration: 2000 + }), + setTimeout(function() { + wx.navigateBack({ + delta: 1, + }) + }, 2000) + }, err => { + this.data.isUnClick = false; + }) + }, err => { + this.data.isUnClick = false; + + }) + + } +}) \ No newline at end of file diff --git a/pages/withdrawal/index.json b/pages/withdrawal/index.json new file mode 100644 index 0000000..a67b89b --- /dev/null +++ b/pages/withdrawal/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "header": "/component/header/header" + } +} \ No newline at end of file diff --git a/pages/withdrawal/index.wxml b/pages/withdrawal/index.wxml new file mode 100644 index 0000000..25aae38 --- /dev/null +++ b/pages/withdrawal/index.wxml @@ -0,0 +1,27 @@ + +
+ + + + 持卡人 + + + + 银行 + + + + 银行卡卡号 + + + + + 提现金额 + + + + + 可提现余额为 {{money}} + 确认提现 + + \ No newline at end of file diff --git a/pages/withdrawal/index.wxss b/pages/withdrawal/index.wxss new file mode 100644 index 0000000..756878f --- /dev/null +++ b/pages/withdrawal/index.wxss @@ -0,0 +1,79 @@ +/* pages/withdrawal/index.wxss */ +.container { + min-height: calc(100vh - 190rpx); + padding: 30rpx; + padding-top: 190rpx; +} + +.box { + background: #1a191e; + border-radius: 20rpx; +} + +.box .cell { + display: flex; + justify-content: space-between; + align-items: center; + height: 90rpx; + padding: 0 20rpx; + border-bottom: 2rpx solid #212025; + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} + +.box .cell.unLine { + border: none; +} + +.box .cell>input { + flex: 1; + margin-left: 20rpx; + color: #FFF; + text-align: right; +} + +.box.bottom { + padding: 50rpx; + margin-top: 30rpx; +} + +.box .label { + font-size: 24rpx; + color: #FFF; + margin-top: 10rpx; +} + +.box .input-box { + display: flex; + /* align-items: center; */ + margin-top: 60rpx; + margin-bottom: 10rpx; + border-bottom: 2rpx solid #212025; + color: #FFF; + font-size: 30rpx; + font-weight: bold; +} + +.box .input-box>input { + height: 70rpx; + font-size: 52rpx; + font-weight: bold; + margin-bottom: 20rpx; + margin-left: 20rpx; +} + +.box .btn-box { + height: 80rpx; + margin: 60rpx 20rpx 20rpx 20rpx; + background: #ffda2e; + color: #1a191e; + border-radius: 40rpx; + line-height: 80rpx; + text-align: center; + font-size: 28rpx; +} + +.message { + font-size: 24rpx; + color: rgba(255, 255, 255, 0.6); +} \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..9114597 --- /dev/null +++ b/project.config.json @@ -0,0 +1,58 @@ +{ + "description": "项目配置文件。", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": false, + "es6": true, + "enhance": false, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": true, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "useIsolateContext": true, + "useCompilerModule": true, + "userConfirmedUseCompilerModuleSwitch": false + }, + "compileType": "miniprogram", + "libVersion": "2.10.2", + "appid": "wx73eb8a9ed10a029d", + "projectname": "%E6%99%BA%E6%85%A7%E4%BA%91%E9%A6%86", + "isGameTourist": false, + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": { + "search": { + "current": -1, + "list": [] + }, + "conversation": { + "current": -1, + "list": [] + }, + "game": { + "currentL": -1, + "list": [] + }, + "miniprogram": { + "current": -1, + "list": [] + } + } +} \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/utils/api.js b/utils/api.js new file mode 100644 index 0000000..1c1e35d --- /dev/null +++ b/utils/api.js @@ -0,0 +1,435 @@ +//testURL +//const BASE_URL = 'http://2t716830p2.zicp.vip'; +//prodURL +const BASE_URL = 'https://api.hongyutiyu.top'; +// const platformId = 1; +import { + getCurrentPageUrl +} from './util.js' + +function isUnLogin() { + wx.setStorageSync('history', getCurrentPageUrl()); + wx.removeStorageSync('accessToken'); + wx.redirectTo({ + url: '/pages/login/index', + }) +} + +function buildURL(url, needToken) { + let token = wx.getStorageSync('accessToken'); + + if (!needToken) { + return token ? url + (url.indexOf('?') >= 0 ? '&' : '?') + "access_token=" + token : url + } + + if (!token) { + // wx.redirectTo({ + // url: '/pages/login/index', + // }) + isUnLogin(); + return; + } + return url + (url.indexOf('?') >= 0 ? '&' : '?') + "access_token=" + token; +} + +export function fetchPost(url, params, needToken, multiple) { + url = buildURL(url, needToken); + + // params.platformId = platformId; + + // 如果url不存在,返回错误 + if (!url) { + return new Promise((resolve, reject) => { + reject(); + }) + } + + console.log("网络请求", url, params); + + // 如果上传图片 + if (multiple) { + return new Promise((resolve, reject) => { + wx.uploadFile({ + url: BASE_URL + url, + filePath: params.filePath, + name: 'image', + formData: {}, + success: function(response) { + console.log(response.data); + let res = JSON.parse(response.data); + console.log(res); + if (response.statusCode == 200) { + if (res.err_code == 0) { + // wx.hideLoading(); + resolve(res); + } else { + if (res.err_code == 10003 || res.err_code == 10006 || res.err_code == 20006) { + // wx.removeStorageSync('accessToken'); + // wx.redirectTo({ + // url: '/pages/login/index', + // }) + isUnLogin(); + reject(res); + return; + } else if (res.err_code == 20005) { + wx.removeStorageSync('accessToken'); + wx.removeStorageSync('history'); + wx.hideLoading(); + wx.showToast({ + title: res.err_msg, + icon: 'none', + duration: 2000 + }) + reject(res); + } else { + wx.hideLoading(); + wx.showToast({ + title: res.err_msg, + icon: 'none', + duration: 2000 + }) + reject(res); + } + } + } else { + wx.hideLoading(); + wx.showToast({ + title: '网络错误', + icon: 'none', + }) + reject(response); + } + }, + fail: function(err) { + console.log(err); + wx.hideLoading(); + wx.showToast({ + title: '网络错误', + icon: 'none', + }) + reject(response); + }, + }) + }) + } + + // 获取POST数据 + return new Promise((resolve, reject) => { + wx.request({ + url: BASE_URL + url, + data: params, + header: { + 'content-type': 'application/x-www-form-urlencoded' + }, + method: 'POST', + success: function(res) { + console.log("POST返回数据", url,res); + if (res.data.err_code == 0) { + wx.hideLoading(); + resolve(res.data); + } else { + if (res.data.err_code == 10003 || res.data.err_code == 10006 || res.data.err_code == 20006) { + // wx.removeStorageSync('accessToken'); + // wx.redirectTo({ + // url: '/pages/login/index', + // }) + isUnLogin(); + reject(res); + return; + } else if (res.data.err_code == 30022) { + reject(res); + } else if (res.data.err_code == 20005) { + wx.removeStorageSync('accessToken'); + wx.removeStorageSync('history'); + wx.hideLoading(); + wx.showToast({ + title: res.data.err_msg, + icon: 'none', + duration: 2000 + }) + reject(res); + } else { + wx.hideLoading(); + wx.showToast({ + title: res.data.err_msg, + icon: 'none', + duration: 2000 + }) + reject(res); + } + + } + }, + fail: function(res) { + wx.hideLoading(); + wx.showToast({ + title: '网络错误', + icon: 'none', + duration: 2000 + }) + reject(res); + + }, + }) + }) +} + +// get请求 +export function fetchGet(url, params, needToken) { + url = buildURL(url, needToken); + + if (!url) { + return new Promise((resolve, reject) => { + reject(); + }) + } + // params.platformId = platformId; + + return new Promise((resolve, reject) => { + wx.request({ + url: BASE_URL + url, + data: params, + method: 'GET', + success: function(res) { + console.log("GET返回数据", url, res); + if (res.statusCode == 200) { + if (res.data.err_code == 0) { + wx.hideLoading(); + resolve(res.data); + } else { + if (res.data.err_code == 10003 || res.data.err_code == 10006 || res.data.err_code == 20006) { + isUnLogin(); + reject(res); + return; + } else if (res.data.err_code == 20005) { + wx.removeStorageSync('accessToken'); + wx.removeStorageSync('history'); + wx.hideLoading(); + wx.showToast({ + title: res.data.err_msg, + icon: 'none', + duration: 2000 + }) + reject(res); + } else { + wx.hideLoading(); + wx.showToast({ + title: res.data.err_msg, + icon: 'none', + duration: 2000 + }) + reject(res); + } + } + } else { + wx.hideLoading(); + reject(res) + wx.showToast({ + title: '网络错误', + icon: 'none', + duration: 2000 + }) + } + }, + fail: function(res) { + wx.hideLoading(); + reject(res) + wx.showToast({ + title: '网络错误', + icon: 'none', + duration: 2000 + }) + }, + }) + }) +} + +// 暴露接口 +export default { + /** + * 公告 + */ + // 首页公告 + announcements(params) { + return fetchGet('/announcements', params, false); + }, + // 公告详情 + announcementDetail(params) { + return fetchGet('/announcement/detail', params, false); + }, + + /** + * 场馆 + */ + // 场馆列表 + venues(params) { + return fetchGet('/venues', params, false); + }, + // 场馆列表详情 + venueDetail(params) { + return fetchPost('/venue/detail', params, false); + }, + // 预约课程时间显示 + venueLessonShow(params) { + return fetchGet('/venue/lesson/show', params, false); + }, + // 健身馆对应时间的课程 + venueLessonDate(params) { + return fetchPost('/venue/lesson/date', params, false); + }, + // 课程详情 + venueLessonDetail(params) { + return fetchPost('/venue/lesson/detail', params, false); + }, + // 确认订单页面 + venueLessonOrder(params) { + return fetchPost('/venue/lesson/order', params, true); + }, + // 预约课程(会员卡) + memberLessonTicketOrderMemberCard(params) { + return fetchPost('/member/lesson/ticket/order/memberCard', params, true); + }, + // 预约课程(微信支付) + memberLessonTicketOrderWX(params) { + return fetchPost('/member/lesson/ticket/order/wx', params, true); + }, + // 篮球馆我要进场 + venueJoin(params) { + return fetchGet('/venue/join', params, true); + }, + + /** + * 个人中心 + */ + // 常见问题 + faqs(params) { + return fetchGet('/faqs', params, false); + }, + // 个人中心 + memberCenter(params) { + return fetchPost('/member/center', params, true); + }, + // 关于我们 + aboutUs(params) { + return fetchGet('/about/uss', params, false); + }, + // 上传图像 + uploadAvatar(params) { + return fetchPost('/upload/avatar', params, true, true); + }, + // 个人信息 + memberInformation(params) { + return fetchPost('/member/information', params, true); + }, + // 修改个人信息 + memberUpdateInformation(params) { + return fetchPost('/member/update/information', params, true); + }, + // 充值界面 + recharges(params) { + return fetchGet('/recharges', params, true); + }, + // 我的预约 + memberLessonTicketsReserve(params) { + return fetchPost('/member/lesson/tickets/reserve', params, true); + }, + // 预约详情页 + memberLessonTicketsDetail(params) { + return fetchPost('/member/lesson/tickets/detail', params, true); + }, + // 取消预约 + memberLessonTicketsCancel(params) { + return fetchPost('/member/lesson/tickets/cancel', params, true); + }, + // 我的会员卡 + memberVenueCard(params) { + return fetchPost('/member/venue/card', params, true) + }, + + /** + * 登录注册 + */ + // 发送登录验证码 + smsLogin(params) { + return fetchPost('/member/sms/login', params, false); + }, + // 手机验证码登录 + memberLogin(params) { + return fetchPost('/member/login', params, false); + }, + // 微信快捷登录 + memberLoginWX(params) { + return fetchPost('/member/login/wx', params, false); + }, + // 发送注册验证码 + smsRegister(params) { + return fetchPost('/member/sms/register', params, false); + }, + // 手机验证码注册 + memberRegister(params) { + return fetchPost('/member/register', params, false); + }, + // 微信绑定手机号 + memberLoginWXPhone(params) { + return fetchPost('/member/login/wx/phone', params, false); + }, + // 发送修改手机验证码 + memberSmsUpdate(params) { + return fetchPost('/member/sms/update', params, false); + }, + + /** + * 支付 + */ + // 购买会员卡 + memberCardOrderCreate(params) { + return fetchPost('/member/card/order/create', params, true); + }, + // 充值 + orderRecharge(params) { + return fetchPost('/order/recharge', params, true); + }, + + // 首页地图查询场馆 + venuesMap(params) { + return fetchGet('/venues/map', params, false); + }, + + // 协议 + protocols(params) { + return fetchGet('/protocols', params, false) + }, + + // 上传人脸识别图片 + memberFaceInfo(params) { + return fetchPost('/member/face/info', params, true, true); + }, + // 添加银行卡 + memberBankBind(params) { + return fetchPost('/member/bank/bind', params, true); + }, + // 提现申请 + memberWithdrawApply(params) { + return fetchPost('/member/withdraw/apply', params, true); + }, + // 我的账单 + memberMoneyLogBill(params) { + return fetchPost('/member/money/log/bill', params, true); + }, + // 签到 + memberLessonTicketsSing(params) { + return fetchPost('/member/lesson/tickets/sing', params, true); + }, + // 人脸信息 + memberFaceInfoInfos(params) { + return fetchPost('/member/face/info/infos', params, true); + }, + // 修改默认会员卡 + memberVenueUpdateCard(params) { + return fetchGet('/member/venue/updateCard', params, true); + }, + // 已用手机号登录,支付,再跳转微信登录 + memberLoginCheckWx(params) { + return fetchPost('/member/login/checkWx', params, true); + } +} \ No newline at end of file diff --git a/utils/pay.js b/utils/pay.js new file mode 100644 index 0000000..c5d7ce5 --- /dev/null +++ b/utils/pay.js @@ -0,0 +1,63 @@ +export function pay(body) { + return new Promise((resolve, reject) => { + console.log(body) + wx.requestPayment({ + timeStamp: body.time_stamp, + nonceStr: body.nonce_str, + package: 'prepay_id=' + body.prepay_id, + signType: body.sign_type, + paySign: body.pay_sign, + success: function(res) { + wx.showToast({ + title: '支付成功', + icon: 'success', + }) + resolve(res); + }, + fail: function(res) { + console.log(res); + reject(res); + }, + }) + }) +} + +export function payWxLoing(body) { + console.log(body) + + const app = getApp(); + return new Promise((resolve, reject) => { + if (!body.userInfo) { + reject(body); + return; + } + wx.login({ + success: function(res) { + wx.showLoading({ + title: '加载中...', + mask: true, + }) + app.$api.memberLoginCheckWx({ + avatar: body.userInfo.avatarUrl, + code: res.code, + nickname: body.userInfo.nickName + }).then(obj => { + wx.setStorageSync('accessToken', obj.authorization.accessToken); + resolve(res); + }) + }, + fail: function(res) { + reject(res); + }, + }) + }) +} + +export default { + wxPay(body) { + return pay(body); + }, + payWxLoing(body) { + return payWxLoing(body); + } +} \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..7218c71 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,32 @@ +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 +} + +// 获取当前页url +const getCurrentPageUrl = () => { + let pages = getCurrentPages(); + let currentPage = pages[pages.length - 1]; + let url = '/' + currentPage.route; + let options = currentPage.options; + for (let key in options) { + url += (url.indexOf('?') >= 0 ? '&' : '?') + `${key}=${options[key]}`; + } + return url; +} + +module.exports = { + formatTime: formatTime, + getCurrentPageUrl: getCurrentPageUrl +}