正在显示
26 个修改的文件
包含
706 行增加
和
159 行删除
1 | //app.js | 1 | //app.js |
2 | App({ | 2 | App({ |
3 | onLaunch: function () { | 3 | onLaunch: function () { |
4 | - // 展示本地存储能力 | 4 | + var that = this; |
5 | + console.log("onlaunch---", "onlaunch"); | ||
6 | + //调用API从本地缓存中获取数据 | ||
5 | var logs = wx.getStorageSync('logs') || [] | 7 | var logs = wx.getStorageSync('logs') || [] |
6 | logs.unshift(Date.now()) | 8 | logs.unshift(Date.now()) |
7 | wx.setStorageSync('logs', logs) | 9 | wx.setStorageSync('logs', logs) |
8 | - | ||
9 | - // 登录 | ||
10 | wx.login({ | 10 | wx.login({ |
11 | - success: res => { | ||
12 | - // 发送 res.code 到后台换取 openId, sessionKey, unionId | 11 | + success: function (res) { |
12 | + if (res.code) { | ||
13 | + that.getTokenByCode(res.code, true) | ||
14 | + } | ||
13 | } | 15 | } |
14 | }) | 16 | }) |
15 | - // 获取用户信息 | ||
16 | - wx.getSetting({ | ||
17 | - success: res => { | ||
18 | - if (res.authSetting['scope.userInfo']) { | ||
19 | - // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 | ||
20 | - wx.getUserInfo({ | ||
21 | - success: res => { | ||
22 | - // 可以将 res 发送给后台解码出 unionId | ||
23 | - this.globalData.userInfo = res.userInfo | 17 | + }, |
18 | + | ||
19 | + onShow: function (res) { | ||
20 | + console.log("onShow----", res); | ||
21 | + var that = this; | ||
22 | + that.globalData.onshow_count++; | ||
23 | + if (that.globalData.onshow_count > 1) {//除第一次进入小程序之外的打开时 | ||
24 | + wx.login({ | ||
25 | + success: function (res) { | ||
26 | + if (res.code) { | ||
27 | + that.getTokenByCode(res.code, false) | ||
28 | + } | ||
29 | + } | ||
30 | + }) | ||
31 | + } | ||
32 | + }, | ||
24 | 33 | ||
25 | - // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 | ||
26 | - // 所以此处加入 callback 以防止这种情况 | ||
27 | - if (this.userInfoReadyCallback) { | ||
28 | - this.userInfoReadyCallback(res) | ||
29 | - } | ||
30 | - } | 34 | + getTokenByCode: function (code, relaunch) { |
35 | + var that = this; | ||
36 | + var baseUrl = that.globalData.baseUrl; | ||
37 | + wx.request({ | ||
38 | + url: baseUrl + 'uaa/v1/auth/tokens', | ||
39 | + data: { | ||
40 | + "grant_type": "wx_app_code", | ||
41 | + "code": code, | ||
42 | + "scope": "global_access:end_user,tenant:wxe91c67adba6ac02d" | ||
43 | + }, | ||
44 | + method: "POST", | ||
45 | + header: { | ||
46 | + 'content-type': 'application/json' | ||
47 | + }, | ||
48 | + success: function (res) { | ||
49 | + console.log("getTokenByCode", res.data) | ||
50 | + var user = res.data.user; | ||
51 | + var tenant = res.data.tenant; | ||
52 | + that.globalData.tenant_id = tenant.id; | ||
53 | + that.globalData.userInfo = res.data.user; | ||
54 | + that.globalData.wx_open_id = user.wx_open_id; | ||
55 | + that.globalData.Authorization = "Bearer " + res.data.access_token; | ||
56 | + that.globalData.refresh_token = res.data.refresh_token; | ||
57 | + if (user && user.type == "0") {//匿名用户 | ||
58 | + wx.redirectTo({ | ||
59 | + url: '../../getPhone/getPhone' | ||
31 | }) | 60 | }) |
61 | + } else if (user && user.type == "1") {//注册用户 | ||
62 | + if (relaunch) { | ||
63 | + wx.reLaunch({ //重新加载 | ||
64 | + url: '../../tabbar/home/home' | ||
65 | + }) | ||
66 | + } | ||
32 | } | 67 | } |
33 | - } | 68 | + }, |
69 | + fail: function (res) { | ||
70 | + console.log("login-res-fail", res); | ||
71 | + }, | ||
34 | }) | 72 | }) |
35 | }, | 73 | }, |
74 | + getUserInfo: function (cb) { | ||
75 | + var that = this | ||
76 | + if (this.globalData.userInfo) { | ||
77 | + typeof cb == "function" && cb(this.globalData.userInfo) | ||
78 | + } else { | ||
79 | + //调用登录接口 | ||
80 | + wx.getUserInfo({ | ||
81 | + withCredentials: false, | ||
82 | + success: function (res) { | ||
83 | + console.log("userInfo---", res) | ||
84 | + that.globalData.userInfo = res.userInfo | ||
85 | + typeof cb == "function" && cb(that.globalData.userInfo) | ||
86 | + } | ||
87 | + }) | ||
88 | + } | ||
89 | + }, | ||
90 | + | ||
36 | globalData: { | 91 | globalData: { |
37 | - userInfo: null | 92 | + onshow_count: 0, |
93 | + baseUrl: "http://47.98.47.16:20000/", | ||
94 | + // baseUrl: "https://api.workai.com.cn/", | ||
95 | + OSSUrl: "https://oss.workai.com.cn/", | ||
96 | + userInfo: null, | ||
97 | + hasLogin: false, | ||
98 | + openid: null, | ||
99 | + Authorization: null, | ||
100 | + refresh_token: "", | ||
101 | + tenant_id: "", | ||
102 | + wx_open_id: "", | ||
103 | + newComerOrder: null | ||
38 | } | 104 | } |
39 | }) | 105 | }) |
1 | { | 1 | { |
2 | - "pages":[ | ||
3 | - "pages/index/index", | ||
4 | - "pages/logs/logs" | 2 | + "pages": [ |
3 | + "pages/main/home/home", | ||
4 | + "pages/login/login", | ||
5 | + "pages/getPhone/getPhone" | ||
6 | + | ||
5 | ], | 7 | ], |
6 | - "window":{ | ||
7 | - "backgroundTextStyle":"light", | ||
8 | - "navigationBarBackgroundColor": "#fff", | 8 | + "window": { |
9 | + "backgroundTextStyle": "light", | ||
10 | + "navigationBarBackgroundColor": "#4478e3", | ||
9 | "navigationBarTitleText": "WeChat", | 11 | "navigationBarTitleText": "WeChat", |
10 | - "navigationBarTextStyle":"black" | 12 | + "navigationBarTextStyle": "#fff" |
11 | } | 13 | } |
12 | -} | 14 | +} |
images/arrow_right.png
0 → 100644
418 Bytes
images/id.png
0 → 100644
989 Bytes
images/phone.png
0 → 100644
838 Bytes
pages/getPhone/getPhone.js
0 → 100644
1 | +// pages/getPhone/getPhone.js | ||
2 | +const baseUrl = getApp().globalData.baseUrl; | ||
3 | +let Authorization = ''; | ||
4 | +var app = getApp(); | ||
5 | +Page({ | ||
6 | + | ||
7 | + /** | ||
8 | + * 页面的初始数据 | ||
9 | + */ | ||
10 | + data: { | ||
11 | + | ||
12 | + }, | ||
13 | + | ||
14 | + /** | ||
15 | + * 生命周期函数--监听页面加载 | ||
16 | + */ | ||
17 | + onLoad: function (options) { | ||
18 | + }, | ||
19 | + getPhoneNumber: function (e) { | ||
20 | + const _this = this; | ||
21 | + const iv = e.detail.iv; | ||
22 | + const encryptedData = e.detail.encryptedData; | ||
23 | + console.log('getPhoneNumber' ,e) | ||
24 | + if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { | ||
25 | + wx.showModal({ | ||
26 | + title: '提示', | ||
27 | + showCancel: false, | ||
28 | + content: '未授权', | ||
29 | + success: function (res) { } | ||
30 | + }) | ||
31 | + } else { | ||
32 | + this.login(iv, encryptedData); | ||
33 | + } | ||
34 | + }, | ||
35 | + login: function (iv, phone) { | ||
36 | + var that = this; | ||
37 | + var Authorization = getApp().globalData.Authorization; | ||
38 | + const userInfo = app.globalData.userInfo; | ||
39 | + const { opt, salary_unit,id } = that.data; | ||
40 | + wx.request({ | ||
41 | + url: baseUrl + "uaa/v1/users/op/bind-mobile", | ||
42 | + data: { | ||
43 | + "mobile": '13691224349',//必传,随便写一个 | ||
44 | + "sms_code": '1234',//必传,随便写一个 | ||
45 | + "wx_open_id": app.globalData.wx_open_id, //可选,如果传了,绑定到对应的微信号 | ||
46 | + "tenant_id": app.globalData.tenant_id, | ||
47 | + "source": "wx_app::" + phone + ":" + iv, | ||
48 | + "scope": "expert" | ||
49 | + }, | ||
50 | + method: "POST", | ||
51 | + header: { | ||
52 | + 'content-type': 'application/json', // 默认值 | ||
53 | + "Authorization": Authorization | ||
54 | + }, | ||
55 | + success: function (res) { | ||
56 | + | ||
57 | + console.log("succ", res); | ||
58 | + if (200 == res.statusCode) { | ||
59 | + app.globalData.Authorization = "Bearer " + res.data.access_token; | ||
60 | + app.globalData.refresh_token = res.data.refresh_token; | ||
61 | + var user = res.data.user; | ||
62 | + var tenant = res.data.tenant; | ||
63 | + app.globalData.tenant_id = tenant.id; | ||
64 | + app.globalData.userInfo = user; | ||
65 | + app.globalData.wx_open_id = user.wx_open_id; | ||
66 | + | ||
67 | + wx.reLaunch({ | ||
68 | + url: '../tabbar/home/home' | ||
69 | + }) | ||
70 | + | ||
71 | + } else { | ||
72 | + wx.showToast({ | ||
73 | + title: '登录失败,请重新登录', | ||
74 | + }) | ||
75 | + } | ||
76 | + }, | ||
77 | + fail: function (res) { | ||
78 | + console.log("fail ", res.data) | ||
79 | + }, | ||
80 | + complete:function (res){ | ||
81 | + wx.reLaunch({ | ||
82 | + url: '../tabbar/home/home' | ||
83 | + }) | ||
84 | + } | ||
85 | + }) | ||
86 | + }, | ||
87 | + phoneLogin: function () { | ||
88 | + wx.navigateTo({ | ||
89 | + url: '../login/login', | ||
90 | + }) | ||
91 | + }, | ||
92 | + | ||
93 | +}) |
pages/getPhone/getPhone.json
0 → 100644
pages/getPhone/getPhone.wxml
0 → 100644
1 | +<!--pages/getPhone/getPhone.wxml--> | ||
2 | +<!-- <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取用户手机号</button> --> | ||
3 | +<view class='page'> | ||
4 | + <image src='/images/bg.jpg' class='back-img' mode="bottom aspectFill"></image> | ||
5 | + <view class='content-wrap'> | ||
6 | + <image src='/images/logo.png' class='logo' mode="aspectFit"></image> | ||
7 | + <button open-type="getPhoneNumber" class='btn' bindgetphonenumber="getPhoneNumber">微信快速授权/登录</button> | ||
8 | + <view class='loginByPhone' bindtap='phoneLogin'>输入手机号登录</view> | ||
9 | + </view> | ||
10 | + | ||
11 | +</view> |
pages/getPhone/getPhone.wxss
0 → 100644
1 | +/* pages/getPhone/getPhone.wxss */ | ||
2 | +.page{ | ||
3 | + height: 100%; | ||
4 | +} | ||
5 | +.back-img{ | ||
6 | + position: absolute; | ||
7 | + top: 0px; | ||
8 | + width: 100%; | ||
9 | + height: 100%; | ||
10 | +} | ||
11 | +.content-wrap{ | ||
12 | + margin-top: 360rpx; | ||
13 | + width: 100%; | ||
14 | +} | ||
15 | +.logo{ | ||
16 | + position: relative; | ||
17 | + top: 0rpx; | ||
18 | + height: 60rpx; | ||
19 | + margin: 10px auto; | ||
20 | + display: block; | ||
21 | +} | ||
22 | + | ||
23 | +.btn{ | ||
24 | + background: #FFF; | ||
25 | + color: #529CE2; | ||
26 | + height: 84rpx; | ||
27 | + line-height: 84rpx; | ||
28 | + font-size: 28rpx; | ||
29 | + border-radius: 42rpx; | ||
30 | + margin: 120rpx 60rpx 0 60rpx; | ||
31 | +} | ||
32 | + | ||
33 | +.loginByPhone{ | ||
34 | + position: relative; | ||
35 | + text-align: center; | ||
36 | + color: #FFF; | ||
37 | + font-size: 28rpx; | ||
38 | + margin: 40rpx; | ||
39 | +} |
pages/index/index.js
已删除
100644 → 0
1 | -//index.js | ||
2 | -//获取应用实例 | ||
3 | -const app = getApp() | ||
4 | - | ||
5 | -Page({ | ||
6 | - data: { | ||
7 | - motto: 'Hello World', | ||
8 | - userInfo: {}, | ||
9 | - hasUserInfo: false, | ||
10 | - canIUse: wx.canIUse('button.open-type.getUserInfo') | ||
11 | - }, | ||
12 | - //事件处理函数 | ||
13 | - bindViewTap: function() { | ||
14 | - wx.navigateTo({ | ||
15 | - url: '../logs/logs' | ||
16 | - }) | ||
17 | - }, | ||
18 | - onLoad: function () { | ||
19 | - if (app.globalData.userInfo) { | ||
20 | - this.setData({ | ||
21 | - userInfo: app.globalData.userInfo, | ||
22 | - hasUserInfo: true | ||
23 | - }) | ||
24 | - } else if (this.data.canIUse){ | ||
25 | - // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 | ||
26 | - // 所以此处加入 callback 以防止这种情况 | ||
27 | - app.userInfoReadyCallback = res => { | ||
28 | - this.setData({ | ||
29 | - userInfo: res.userInfo, | ||
30 | - hasUserInfo: true | ||
31 | - }) | ||
32 | - } | ||
33 | - } else { | ||
34 | - // 在没有 open-type=getUserInfo 版本的兼容处理 | ||
35 | - wx.getUserInfo({ | ||
36 | - success: res => { | ||
37 | - app.globalData.userInfo = res.userInfo | ||
38 | - this.setData({ | ||
39 | - userInfo: res.userInfo, | ||
40 | - hasUserInfo: true | ||
41 | - }) | ||
42 | - } | ||
43 | - }) | ||
44 | - } | ||
45 | - }, | ||
46 | - getUserInfo: function(e) { | ||
47 | - console.log(e) | ||
48 | - app.globalData.userInfo = e.detail.userInfo | ||
49 | - this.setData({ | ||
50 | - userInfo: e.detail.userInfo, | ||
51 | - hasUserInfo: true | ||
52 | - }) | ||
53 | - } | ||
54 | -}) |
pages/index/index.wxml
已删除
100644 → 0
1 | -<!--index.wxml--> | ||
2 | -<view class="container"> | ||
3 | - <view class="userinfo"> | ||
4 | - <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button> | ||
5 | - <block wx:else> | ||
6 | - <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image> | ||
7 | - <text class="userinfo-nickname">{{userInfo.nickName}}</text> | ||
8 | - </block> | ||
9 | - </view> | ||
10 | - <view class="usermotto"> | ||
11 | - <text class="user-motto">{{motto}}</text> | ||
12 | - </view> | ||
13 | -</view> |
pages/index/index.wxss
已删除
100644 → 0
1 | -/**index.wxss**/ | ||
2 | -.userinfo { | ||
3 | - display: flex; | ||
4 | - flex-direction: column; | ||
5 | - align-items: center; | ||
6 | -} | ||
7 | - | ||
8 | -.userinfo-avatar { | ||
9 | - width: 128rpx; | ||
10 | - height: 128rpx; | ||
11 | - margin: 20rpx; | ||
12 | - border-radius: 50%; | ||
13 | -} | ||
14 | - | ||
15 | -.userinfo-nickname { | ||
16 | - color: #aaa; | ||
17 | -} | ||
18 | - | ||
19 | -.usermotto { | ||
20 | - margin-top: 200px; | ||
21 | -} |
pages/login/login.js
0 → 100644
1 | +//login.js | ||
2 | +const loginUrl = require('../../config').loginUrl; | ||
3 | +//获取应用实例 | ||
4 | +var app = getApp(); | ||
5 | +var baseUrl = app.globalData.baseUrl; | ||
6 | + | ||
7 | +Page({ | ||
8 | + data: { | ||
9 | + mobile: '', | ||
10 | + verifyCode: "", | ||
11 | + tenant_id: "", | ||
12 | + wx_open_id: "", | ||
13 | + verifyCodeTime: "获取验证码", | ||
14 | + buttonDisable: false | ||
15 | + }, | ||
16 | + | ||
17 | + mobileInputEvent: function (e) { | ||
18 | + this.setData({ | ||
19 | + mobile: e.detail.value | ||
20 | + }); | ||
21 | + }, | ||
22 | + | ||
23 | + verifyInputEvent: function (e) { | ||
24 | + this.setData({ | ||
25 | + verifyCode: e.detail.value | ||
26 | + }); | ||
27 | + console.log("verifyCode", this.data.verifyCode); | ||
28 | + }, | ||
29 | + | ||
30 | + verifyCodeEvent: function () { | ||
31 | + console.log("buttonDisable", this.data.buttonDisable); | ||
32 | + if (this.data.buttonDisable) return; | ||
33 | + var that = this; | ||
34 | + var mobile = this.data.mobile; | ||
35 | + var regMobile = /^1[3|4|5|7|8][0-9]{9}$/; | ||
36 | + console.log("mobile---", mobile); | ||
37 | + if (!regMobile.test(mobile)) { | ||
38 | + wx.showToast({ | ||
39 | + title: '手机号有误!' | ||
40 | + }) | ||
41 | + return; | ||
42 | + } | ||
43 | + var timelength = 60 | ||
44 | + | ||
45 | + var intervalId = setInterval(function () { | ||
46 | + timelength = timelength - 1; | ||
47 | + that.setData({ | ||
48 | + verifyCodeTime: timelength + 's后重发', | ||
49 | + buttonDisable: true | ||
50 | + }) | ||
51 | + if (timelength == 0) { | ||
52 | + clearInterval(intervalId); | ||
53 | + that.setData({ | ||
54 | + verifyCodeTime: '获取验证码', | ||
55 | + buttonDisable: false | ||
56 | + }) | ||
57 | + } | ||
58 | + }, 1000); | ||
59 | + that.getVerifyCode(mobile); | ||
60 | + }, | ||
61 | + | ||
62 | + getVerifyCode: function (mobile) { | ||
63 | + var that = this; | ||
64 | + var Authorization = app.globalData.Authorization; | ||
65 | + that.setData({ | ||
66 | + tenant_id: app.globalData.tenant_id, | ||
67 | + wx_open_id: app.globalData.wx_open_id | ||
68 | + }) | ||
69 | + wx.request({ | ||
70 | + url: baseUrl + 'sms/v1/sms_codes', | ||
71 | + method: "POST", | ||
72 | + data: { | ||
73 | + "mobile": mobile, | ||
74 | + "type": "bindmobile", | ||
75 | + "scope": "global_access:expert" | ||
76 | + }, | ||
77 | + header: { | ||
78 | + 'content-type': 'application/json', // 默认值 | ||
79 | + "Authorization": Authorization | ||
80 | + }, | ||
81 | + success: function (res) { | ||
82 | + console.log(res.data) | ||
83 | + }, | ||
84 | + fail(res) { | ||
85 | + console.log(res.data) | ||
86 | + } | ||
87 | + }) | ||
88 | + }, | ||
89 | + | ||
90 | + login: function () { | ||
91 | + var that = this; | ||
92 | + var Authorization = getApp().globalData.Authorization; | ||
93 | + wx.request({ | ||
94 | + url: baseUrl + "uaa/v1/users/op/bind-mobile", | ||
95 | + data: { | ||
96 | + "mobile": that.data.mobile, | ||
97 | + "sms_code": that.data.verifyCode, | ||
98 | + "wx_open_id": that.data.wx_open_id, //可选,如果传了,绑定到对应的微信号 | ||
99 | + "tenant_id": that.data.tenant_id, | ||
100 | + "source": "wx_app", | ||
101 | + "scope": "expert" | ||
102 | + }, | ||
103 | + method: "POST", | ||
104 | + header: { | ||
105 | + 'content-type': 'application/json', // 默认值 | ||
106 | + "Authorization": Authorization | ||
107 | + }, | ||
108 | + success: function (res) { | ||
109 | + console.log("succ", res); | ||
110 | + if (200 == res.statusCode) { | ||
111 | + app.globalData.Authorization = "Bearer " + res.data.access_token; | ||
112 | + app.globalData.refresh_token = res.data.refresh_token; | ||
113 | + var user = res.data.user; | ||
114 | + var tenant = res.data.tenant; | ||
115 | + app.globalData.tenant_id = tenant.id; | ||
116 | + app.globalData.userInfo = user; | ||
117 | + app.globalData.wx_open_id = user.wx_open_id; | ||
118 | + | ||
119 | + wx.reLaunch({ | ||
120 | + url: '../tabbar/home/home' | ||
121 | + }) | ||
122 | + } else { | ||
123 | + wx.showToast({ | ||
124 | + title: '请重新登录', | ||
125 | + }) | ||
126 | + } | ||
127 | + }, | ||
128 | + fail: function (res) { | ||
129 | + console.log("fail ", res.data) | ||
130 | + }, | ||
131 | + complete: function (res) { | ||
132 | + wx.reLaunch({ | ||
133 | + url: '../tabbar/home/home' | ||
134 | + }) | ||
135 | + } | ||
136 | + }) | ||
137 | + }, | ||
138 | + | ||
139 | + onLoad: function () { | ||
140 | + | ||
141 | + } | ||
142 | +}) |
pages/login/login.json
0 → 100644
pages/login/login.wxml
0 → 100644
1 | +<!--pages/login/login.wxml--> | ||
2 | +<view class="page"> | ||
3 | + <image src='/images/bg.jpg' class='back-img' mode="bottom aspectFill"></image> | ||
4 | + <view class='content-wrap'> | ||
5 | + <image src='/images/logo.png' class='logo' mode="aspectFit"></image> | ||
6 | + <view class="data_item"> | ||
7 | + <image src='/images/user_name.png' class='icon' mode="aspectFit"></image> | ||
8 | + <view class='input-wrap'>+86 | ||
9 | + <input class="text-area" style='margin-left:20rpx;' bindinput="mobileInputEvent" name="mobile" type="number" placeholder='请输入手机号' placeholder-class='pl-class'></input> | ||
10 | + </view> | ||
11 | + </view> | ||
12 | + <view class="data_item"> | ||
13 | + <image src='/images/user_pwd.png' class='icon' mode="aspectFit"></image> | ||
14 | + <view class='input-wrap' style='width:180rpx;'> | ||
15 | + <input class="text-area" name="verify_code" bindinput="verifyInputEvent" placeholder='短信验证码' placeholder-class='pl-class'></input> | ||
16 | + </view> | ||
17 | + <button class="code-btn" bindtap="verifyCodeEvent" disabled="{{buttonDisable}}">{{verifyCodeTime}}</button> | ||
18 | + | ||
19 | + </view> | ||
20 | + | ||
21 | + <view > | ||
22 | + <button class="btn" bindtap="login">登 录</button> | ||
23 | + </view> | ||
24 | + </view> | ||
25 | + | ||
26 | + | ||
27 | +</view> |
pages/login/login.wxss
0 → 100644
1 | +/* pages/login/login.wxss */ | ||
2 | + @import "../getPhone/getPhone.wxss"; | ||
3 | +.data_item{ | ||
4 | + position: relative; | ||
5 | + height: 120rpx; | ||
6 | + color: #fff; | ||
7 | + margin: 0 120rpx; | ||
8 | + display: flex; | ||
9 | + border-bottom: 2rpx solid #FFF; | ||
10 | +} | ||
11 | +.pl-class{ | ||
12 | + color: #FFF; | ||
13 | + font-size: 28rpx; | ||
14 | +} | ||
15 | +.icon{ | ||
16 | + position: absolute; | ||
17 | + width: 32rpx; | ||
18 | + height: 36rpx; | ||
19 | + padding: 42rpx 44rpx ; | ||
20 | +} | ||
21 | +.input-wrap{ | ||
22 | + display: flex; | ||
23 | + line-height: 120rpx; | ||
24 | + margin-left: 120rpx; | ||
25 | +} | ||
26 | +.text-area{ | ||
27 | + font-size:28rpx; | ||
28 | + margin: auto 0; | ||
29 | + display: flex; | ||
30 | +} | ||
31 | +.code-btn{ | ||
32 | + position: absolute; | ||
33 | + color:#529CE2; | ||
34 | + font-size: 28rpx; | ||
35 | + border-radius: 32rpx; | ||
36 | + height: 64rpx; | ||
37 | + right: 0; | ||
38 | + bottom: 28rpx; | ||
39 | +} | ||
40 | + | ||
41 | + |
pages/logs/logs.js
已删除
100644 → 0
pages/logs/logs.wxml
已删除
100644 → 0
pages/logs/logs.wxss
已删除
100644 → 0
pages/main/home/home.js
0 → 100644
1 | +// pages/home/home.js | ||
2 | +Page({ | ||
3 | + | ||
4 | + /** | ||
5 | + * 页面的初始数据 | ||
6 | + */ | ||
7 | + data: { | ||
8 | + list:["",""] | ||
9 | + }, | ||
10 | + | ||
11 | + /** | ||
12 | + * 生命周期函数--监听页面加载 | ||
13 | + */ | ||
14 | + onLoad: function (options) { | ||
15 | + | ||
16 | + }, | ||
17 | + | ||
18 | + /** | ||
19 | + * 生命周期函数--监听页面初次渲染完成 | ||
20 | + */ | ||
21 | + onReady: function () { | ||
22 | + | ||
23 | + }, | ||
24 | + | ||
25 | + /** | ||
26 | + * 生命周期函数--监听页面显示 | ||
27 | + */ | ||
28 | + onShow: function () { | ||
29 | + | ||
30 | + }, | ||
31 | + | ||
32 | + /** | ||
33 | + * 生命周期函数--监听页面隐藏 | ||
34 | + */ | ||
35 | + onHide: function () { | ||
36 | + | ||
37 | + }, | ||
38 | + | ||
39 | + /** | ||
40 | + * 生命周期函数--监听页面卸载 | ||
41 | + */ | ||
42 | + onUnload: function () { | ||
43 | + | ||
44 | + }, | ||
45 | + | ||
46 | + /** | ||
47 | + * 页面相关事件处理函数--监听用户下拉动作 | ||
48 | + */ | ||
49 | + onPullDownRefresh: function () { | ||
50 | + | ||
51 | + }, | ||
52 | + | ||
53 | + /** | ||
54 | + * 页面上拉触底事件的处理函数 | ||
55 | + */ | ||
56 | + onReachBottom: function () { | ||
57 | + | ||
58 | + }, | ||
59 | + | ||
60 | + /** | ||
61 | + * 用户点击右上角分享 | ||
62 | + */ | ||
63 | + onShareAppMessage: function () { | ||
64 | + | ||
65 | + } | ||
66 | +}) |
pages/main/home/home.wxml
0 → 100644
1 | +<view class='page'> | ||
2 | + | ||
3 | + <view wx:if="{{list.length>0}}"> | ||
4 | + <block wx:for="{{list}}" wx:key=""> | ||
5 | + <view class='rectangle_solid_bg'> | ||
6 | + <view style='padding:22rpx'> | ||
7 | + <text class='text_black_28'>小爱同学</text> | ||
8 | + <text class='rectangle_orange_bg text_red_20'>子女</text> | ||
9 | + <text class='text_blue_28'>去完善</text> | ||
10 | + <image class='arrow_wrap' src='/images/arrow_right.png'> </image> | ||
11 | + </view> | ||
12 | + <view style='padding:22rpx'> | ||
13 | + <image class='phone_image_wrap'src='/images/phone.png'></image> | ||
14 | + <text class='text_999_22'>130****8888</text> | ||
15 | +<text style='margin:0rpx 20rpx;color:#999;height:16rpx'>|</text> | ||
16 | + <image class='id_image_wrap'src='/images/id.png'></image> | ||
17 | + <text class='text_999_22'>152000********0000</text> | ||
18 | + </view> | ||
19 | + </view> | ||
20 | + </block> | ||
21 | + </view> | ||
22 | + | ||
23 | + <view class='rectangle_dashed_bg'> | ||
24 | + <view class='text_blue_28'> | ||
25 | + 十 添加家庭成员 | ||
26 | + </view> | ||
27 | + </view> | ||
28 | + | ||
29 | +</view> |
pages/main/home/home.wxss
0 → 100644
1 | +/* pages/home/home.wxss */ | ||
2 | + | ||
3 | +.rectangle_solid_bg { | ||
4 | + margin: 20rpx 32rpx; | ||
5 | + background: #fff; | ||
6 | + box-shadow: 0 8rpx 28rpx 0 rgba(208, 208, 208, 0.50); | ||
7 | + border-radius: 8rpx; | ||
8 | +} | ||
9 | + | ||
10 | +.rectangle_dashed_bg { | ||
11 | + height: 68rpx; | ||
12 | + margin: 40rpx 32rpx; | ||
13 | + background: #fff; | ||
14 | + border-style: dashed; | ||
15 | + border: 2rpx solid #d7e4fb; | ||
16 | + border-radius: 8rpx; | ||
17 | +} | ||
18 | + | ||
19 | +.rectangle_orange_bg { | ||
20 | + height: 32rpx; | ||
21 | + margin: 0rpx 20rpx; | ||
22 | + opacity: 0.5; | ||
23 | +background: #F9DCD6; | ||
24 | +border-radius: 2px; | ||
25 | +} | ||
26 | + | ||
27 | +.text_red_20 { | ||
28 | + font-family: PingFang-SC-Medium; | ||
29 | + font-size: 20rpx; | ||
30 | + padding: 14rpx; | ||
31 | + text-align: center; | ||
32 | + color: #FF7052; | ||
33 | + letter-spacing: 0; | ||
34 | +} | ||
35 | + | ||
36 | +.text_blue_28 { | ||
37 | + font-family: PingFang-SC-Medium; | ||
38 | + font-size: 28rpx; | ||
39 | + padding: 14rpx; | ||
40 | + text-align: center; | ||
41 | + color: #357aeb; | ||
42 | + letter-spacing: 0; | ||
43 | +} | ||
44 | + | ||
45 | +.text_black_28 { | ||
46 | + font-family: PingFangSC-Regular; | ||
47 | + font-size: 28rpx; | ||
48 | + color: #000; | ||
49 | + line-height: 40rpx; | ||
50 | +} | ||
51 | + | ||
52 | +.text_999_22 { | ||
53 | + font-family: PingFangSC-Regular; | ||
54 | + font-size: 22rpx; | ||
55 | + color: #999; | ||
56 | +} | ||
57 | + | ||
58 | +.arrow_wrap { | ||
59 | + width: 12rpx; | ||
60 | + height: 20rpx; | ||
61 | +} | ||
62 | + | ||
63 | +.phone_image_wrap { | ||
64 | + width: 22rpx; | ||
65 | + height: 20rpx; | ||
66 | + margin-right:12rpx; | ||
67 | +} | ||
68 | + | ||
69 | +.id_image_wrap { | ||
70 | + width: 30rpx; | ||
71 | + height: 20rpx; | ||
72 | + margin-right:12rpx; | ||
73 | +} |
1 | -const formatTime = date => { | ||
2 | - const year = date.getFullYear() | ||
3 | - const month = date.getMonth() + 1 | ||
4 | - const day = date.getDate() | ||
5 | - const hour = date.getHours() | ||
6 | - const minute = date.getMinutes() | ||
7 | - const second = date.getSeconds() | 1 | +function formatTime(date) { |
2 | + var year = date.getFullYear() | ||
3 | + var month = date.getMonth() + 1 | ||
4 | + var day = date.getDate() | ||
8 | 5 | ||
9 | - return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') | 6 | + var hour = date.getHours() |
7 | + var minute = date.getMinutes() | ||
8 | + var second = date.getSeconds() | ||
9 | + | ||
10 | + return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute].map(formatNumber).join(':') | ||
10 | } | 11 | } |
11 | 12 | ||
12 | -const formatNumber = n => { | 13 | +function formatNumber(n) { |
13 | n = n.toString() | 14 | n = n.toString() |
14 | return n[1] ? n : '0' + n | 15 | return n[1] ? n : '0' + n |
15 | } | 16 | } |
16 | 17 | ||
18 | +function formatDateString(dateStr) { | ||
19 | + var date = new Date() | ||
20 | + date.setTime(dateStr * 1000) | ||
21 | + var newDate = this.formatTime(date) | ||
22 | + return newDate | ||
23 | +} | ||
24 | +function yearFormString(dateStr) { | ||
25 | + var date = new Date() | ||
26 | + date.setTime(dateStr * 1000) | ||
27 | + var year = date.getFullYear() | ||
28 | + return year | ||
29 | +} | ||
30 | +function monthFormString(dateStr) { | ||
31 | + var date = new Date() | ||
32 | + date.setTime(dateStr * 1000) | ||
33 | + var month = date.getMonth() + 1 | ||
34 | + return month | ||
35 | +} | ||
36 | +function dayFormString(dateStr) { | ||
37 | + var date = new Date() | ||
38 | + date.setTime(dateStr * 1000) | ||
39 | + var day = date.getDate() | ||
40 | + return day | ||
41 | +} | ||
42 | + | ||
43 | +/** | ||
44 | + * 检验18位身份证号码(15位号码可以只检测生日是否正确即可) | ||
45 | + * @author wolfchen | ||
46 | + * @param idCardNo 18为的身份证号码 | ||
47 | + * @return Boolean 是否合法 | ||
48 | + **/ | ||
49 | +function isIDCardNum(idCardNo) { | ||
50 | + var regID_18 = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; | ||
51 | + var regID_15 = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/; | ||
52 | + var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子 | ||
53 | + var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码 | ||
54 | + if (regID_15.test(idCardNo)) { | ||
55 | + return true; | ||
56 | + } else if (regID_18.test(idCardNo)) { | ||
57 | + var sum = 0, idx; | ||
58 | + for (var i = 0; i < idCardNo.length - 1; i++) { | ||
59 | + // 对前17位数字与权值乘积求和 | ||
60 | + sum += parseInt(idCardNo.substr(i, 1), 10) * arrExp[i]; | ||
61 | + } | ||
62 | + // 计算模(固定算法) | ||
63 | + idx = sum % 11; | ||
64 | + // 检验第18为是否与校验码相等 | ||
65 | + return arrValid[idx] == idCardNo.substr(17, 1).toUpperCase(); | ||
66 | + } else { | ||
67 | + return false; | ||
68 | + } | ||
69 | +} | ||
70 | + | ||
17 | module.exports = { | 71 | module.exports = { |
18 | - formatTime: formatTime | 72 | + formatTime: formatTime, |
73 | + formatDateString: formatDateString, | ||
74 | + yearFormString: yearFormString, | ||
75 | + monthFormString: monthFormString, | ||
76 | + dayFormString: dayFormString, | ||
77 | + udekapi: udekapi, | ||
78 | + isIDCardNum: isIDCardNum | ||
19 | } | 79 | } |
请
注册
或
登录
后发表评论