Browse Source

Auth 功能、Empty组件

master
lqq 6 years ago
parent
commit
7e83f2413f
  1. 1
      app.wxss
  2. 1
      components/card/index.wxss
  3. 1
      components/cell/index.wxss
  4. 13
      components/empty/index.js
  5. 8
      components/empty/index.wxml
  6. 49
      components/empty/index.wxss
  7. 2
      components/focus/index.wxml
  8. 2
      components/swiper/index.wxml
  9. 35
      models/auth.js
  10. 2
      pages/article/index.js
  11. 3
      pages/article/index.wxss
  12. 4
      pages/billboards/park/park-list/index.js
  13. 2
      pages/billboards/park/park-list/index.wxss
  14. 12
      pages/home/index.js
  15. 3
      pages/home/index.json
  16. 1
      pages/home/index.wxml
  17. 77
      pages/register/index.js
  18. 2
      pages/register/index.wxml
  19. 9
      utils/http.js

1
app.wxss

@ -2,4 +2,5 @@
page{ page{
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
/* background-color: #f7f7f7; */
} }

1
components/card/index.wxss

@ -1,5 +1,6 @@
/* components/card/index.wxss */ /* components/card/index.wxss */
.card { .card {
background-color: white;
border: 1px solid #e7e7e7; border: 1px solid #e7e7e7;
box-shadow: 1px 1px 1px #eee; box-shadow: 1px 1px 1px #eee;
} }

1
components/cell/index.wxss

@ -1,5 +1,6 @@
/* components/cell/index.wxss */ /* components/cell/index.wxss */
.cell { .cell {
background-color: white;
border-bottom: 1px solid #E7E7E7; border-bottom: 1px solid #E7E7E7;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

13
components/empty/index.js

@ -4,7 +4,18 @@ Component({
* 组件的属性列表 * 组件的属性列表
*/ */
properties: { properties: {
loading: {
type: Boolean,
value: true,
},
empty: {
type: Boolean,
value: false,
},
message: {
type: Boolean,
value: '页面迷路了!'
}
}, },
/** /**

8
components/empty/index.wxml

@ -1,4 +1,10 @@
<!--components/empty/index.wxml--> <!--components/empty/index.wxml-->
<view class="empty"> <view class="empty">
<view class="empty-loading" wx:if="{{loading && !empty}}">
<view class="load-indicator">加载中<dot></dot></view>
</view>
<view class="empty-bd" wx:if="{{empty}}">
<view class="empty-logo">{{message}}</view>
<view class="empty-refresh"></view>
</view>
</view> </view>

49
components/empty/index.wxss

@ -1 +1,50 @@
/* components/empty/index.wxss */ /* components/empty/index.wxss */
.empty {
position: relative;
width: 100%;
}
.empty-loading {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
}
.empty-bd {
padding: 10px 0;
text-align: center;
font-size: 17px;
color: #888;
}
.load-indicator {
font-size: 16px;
color: #888;
text-align: center;
}
dot {
display: inline-block;
overflow: hidden;
height: 1em;
line-height: 1;
vertical-align: -.25em;
}
dot::after {
display: block;
white-space: pre-wrap;
content: "...\A..\A.";
animation: loading 3s infinite step-start both;
}
@keyframes loading {
33% {
transform: translate3d(0, -2em, 0);
}
66% {
transform: translate3d(0, -1em, 0);
}
}

2
components/focus/index.wxml

@ -1,5 +1,5 @@
<!--components/focus/index.wxml--> <!--components/focus/index.wxml-->
<view class="focus"> <view class="focus" wx:if="{{items.length > 0}}">
<view class="focus_icon"> <view class="focus_icon">
<image src="images/focus.png" style="width: 40px; height: 20px"></image> <image src="images/focus.png" style="width: 40px; height: 20px"></image>
</view> </view>

2
components/swiper/index.wxml

@ -1,5 +1,5 @@
<!--components/swiper/index.wxml--> <!--components/swiper/index.wxml-->
<view class="e-swiper"> <view class="e-swiper" wx:if="{{images.length > 0}}">
<swiper autoplay="{{true}}" <swiper autoplay="{{true}}"
interval="{{2000}}" interval="{{2000}}"
duration="{{500}}" duration="{{500}}"

35
models/auth.js

@ -1,35 +1,50 @@
import { HTTP, Method, HTTPConst } from '../utils/http.js' import { HTTP, Method, HTTPConst } from '../utils/http.js'
const token_url = '' const AuthConst = {
token_url: '/api/user/getToken', // 获取token
check_register_url: '/api/miniuser/isRegister',
mobile_code_url: '/api/miniuser/getSmsCode', // 获取验证码
verify_update_phone_url: '/api/miniuser/updateMiniUser' // mobile 验证
}
class AuthModel extends HTTP { class AuthModel extends HTTP {
constructor() { constructor() {
super() super()
} }
// 获取短信验证码 // 获取短信验证码
getMsgCode (phone) { getMsgCode (phone, success) {
let params = { let params = {
url: '', url: AuthConst.mobile_code_url,
method: Method.POST, method: Method.GET,
data: { data: {
phone: phone,
}, },
success: (data)=> { success: (data)=> {
wx.showToast({ wx.showToast({
title: '短信验证码已发送!', title: '短信验证码已发送!',
icon: 'none' icon: 'none'
}) })
success(data)
} }
} }
this.request(params) this.request(params)
} }
// 验证和注册 checkRegister (success) {
let params = {
url: AuthConst.check_register_url,
method: Method.POST,
success: success,
}
this.request(params)
}
// 提交验证和注册
register (phone, name, vscode, success) { register (phone, name, vscode, success) {
let params = { let params = {
url: '', url: AuthConst.verify_update_phone_url,
method: Method.POST, method: Method.POST,
data: { data: {
phone: phone,
realName: name,
verificationCode: vscode,
}, },
success: (data) => { success: (data) => {
if (data) { if (data) {
@ -51,7 +66,7 @@ class AuthModel extends HTTP {
this._fetchWXCode().then(res => { this._fetchWXCode().then(res => {
if (!res) return if (!res) return
let params = { let params = {
url: token_url, url: AuthConst.token_url,
method: Method.GET, method: Method.GET,
data: { data: {
code: res code: res

2
pages/article/index.js

@ -11,7 +11,7 @@ Page({
data: { data: {
nodes: '', nodes: '',
isStar: true, // 是否 isStar: true, // 是否
showBtn: true, showBtn: false,
aId: '', aId: '',
title: '', title: '',
date: '', date: '',

3
pages/article/index.wxss

@ -1,4 +1,7 @@
/* pages/article/index.wxss */ /* pages/article/index.wxss */
.contianer {
overflow: hidden;
}
.page_hd { .page_hd {
padding: 0 15px; padding: 0 15px;
display: flex; display: flex;

4
pages/billboards/park/park-list/index.js

@ -7,6 +7,7 @@ Page({
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
loading: true,
list: [], list: [],
curCode: '', curCode: '',
curPage:1, curPage:1,
@ -34,6 +35,9 @@ Page({
const {curCode} = this.data const {curCode} = this.data
const page = this.data.curPage const page = this.data.curPage
billboard.fetchBailList(curCode, page, res => { billboard.fetchBailList(curCode, page, res => {
this.setData({
loading:false,
})
console.log(res) console.log(res)
const list = res.list const list = res.list
if (page == 1) { if (page == 1) {

2
pages/billboards/park/park-list/index.wxss

@ -13,7 +13,7 @@
.page_empty { .page_empty {
width: 100%; width: 100%;
height: 100px; height: 100px;
margin-top: 100px; margin-top: 20px;
font-size: 14px; font-size: 14px;
color: #aaa; color: #aaa;
text-align: center; text-align: center;

12
pages/home/index.js

@ -6,6 +6,7 @@ import { HomeModel } from '../../models/home.js'
let homeModel = new HomeModel() let homeModel = new HomeModel()
Page({ Page({
data: { data: {
loading: true,
currPage: 1, currPage: 1,
banners: [], banners: [],
hots: [], hots: [],
@ -47,6 +48,9 @@ Page({
fetchHomeList() { fetchHomeList() {
let page = this.data.currPage let page = this.data.currPage
homeModel.getHomeList(page, res => { homeModel.getHomeList(page, res => {
this.setData({
loading: false
})
console.log('啦啦啦') console.log('啦啦啦')
const datas = res.list const datas = res.list
let tempDatas = [] let tempDatas = []
@ -130,10 +134,10 @@ Page({
}, },
clickListItem(e) { clickListItem(e) {
console.log(e.detail) console.log(e.detail)
this.gotoArticePage(e.detail.id) // this.gotoArticePage(e.detail.id)
// wx.redirectTo({ wx.redirectTo({
// url: '/pages/register/index', url: '/pages/register/index',
// }) })
}, },
gotoArticePage(id) { gotoArticePage(id) {
wx.navigateTo({ wx.navigateTo({

3
pages/home/index.json

@ -5,6 +5,7 @@
"usingComponents": { "usingComponents": {
"e-swiper": "/components/swiper/index", "e-swiper": "/components/swiper/index",
"e-focus": "/components/focus/index", "e-focus": "/components/focus/index",
"e-cell": "/components/cell/index" "e-cell": "/components/cell/index",
"e-empty": "/components/empty/index"
} }
} }

1
pages/home/index.wxml

@ -11,4 +11,5 @@
showTop="{{item.showTop}}" showTop="{{item.showTop}}"
bind:clickListItem="clickListItem"/> bind:clickListItem="clickListItem"/>
</block> </block>
<e-empty loading="{{loading}}" empty="{{list.length == 0}}"/>
</view> </view>

77
pages/register/index.js

@ -1,4 +1,7 @@
// pages/register/index.js // pages/register/index.js
import {AuthModel} from '../..//models/auth.js'
let auth = new AuthModel()
Page({ Page({
/** /**
@ -18,9 +21,11 @@ Page({
rules: { required: true, message: '验证码必填' }, rules: { required: true, message: '验证码必填' },
}, },
], ],
formData: { formData: {},
time: 60,
} fetchCode: true,
interval: null,
btnTitle: '获取验证码'
}, },
/** /**
@ -28,6 +33,67 @@ Page({
*/ */
onLoad: function (options) { onLoad: function (options) {
},
onHide () {
clearInterval(this.data.interval)
},
// 重新获取Code
refetchCodeDownTime () {
this.data.interval = setInterval(() => {
const time = this.data.time - 1
const title = `${time}s 重新发送`
this.setData({
fetchCode: false,
time: time,
btnTitle: title
})
if (time == 0) {
this.setData({
fetchCode: true,
time: 60,
btnTitle: '重新发送'
})
clearInterval(this.data.interval)
}
}, 1000)
},
// 调用获取 Code 接口
onGetMsgCode () {
this.selectComponent('#form').validate((valid, errors) => {
if (!valid) {
let emptyPhone = false
errors.forEach(item => {
if (item.name === 'mobile') {
emptyPhone = true
wx.showToast({
title: item.message,
icon: 'none'
})
}
})
if (!emptyPhone) {
// console.log(this.data.formData)
this.fetchMsgCodeApi()
}
}
})
},
fetchMsgCodeApi () {
auth.getMsgCode(this.data.formData.mobile, res => {
console.log(res)
this.refetchCodeDownTime()
})
},
registerApi () {
const {mobile, name, vcode} = this.data.formData
auth.register(modile, name, vcode, res => {
console.log(res)
wx.reLaunch({
url: '/pages/home/index',
})
})
}, },
formInputChange (e) { formInputChange (e) {
const { field } = e.currentTarget.dataset const { field } = e.currentTarget.dataset
@ -40,6 +106,7 @@ Page({
console.log('valid', valid, errors) console.log('valid', valid, errors)
if (!valid) { if (!valid) {
const firstError = Object.keys(errors) const firstError = Object.keys(errors)
console.log(firstError)
if (firstError.length) { if (firstError.length) {
const error = errors[firstError[0]].message const error = errors[firstError[0]].message
wx.showToast({ wx.showToast({
@ -48,9 +115,7 @@ Page({
}) })
} }
} else { } else {
wx.showToast({ this.registerApi()
title: '校验通过'
})
} }
}) })
} }

2
pages/register/index.wxml

@ -15,7 +15,7 @@
</mp-cell> </mp-cell>
<mp-cell prop="vcode" ext-class="weui-cell_vcode"> <mp-cell prop="vcode" ext-class="weui-cell_vcode">
<input bindinput="formInputChange" data-field="vcode" class="weui-input" placeholder="请输入验证码"/> <input bindinput="formInputChange" data-field="vcode" class="weui-input" placeholder="请输入验证码"/>
<view slot="footer" class="weui-vcode-btn">获取验证码</view> <view slot="footer" class="weui-vcode-btn" bindtap="{{fetchCode ? 'onGetMsgCode' : ''}}">{{btnTitle}}</view>
</mp-cell> </mp-cell>
</mp-cells> </mp-cells>
</mp-form> </mp-form>

9
utils/http.js

@ -47,11 +47,18 @@ class HTTP {
} }
} else { } else {
console.log('请求错误') console.log('请求错误')
wx.showToast({
title: '服务器错误!',
icon: 'none'
})
params.error && params.error(res) params.error && params.error(res)
} }
}, },
fail: function (res) { fail: function (res) {
console.log('服务器错误') wx.showToast({
title: '网络连接错误,请求失败!',
icon: 'none'
})
params.fail && params.fail(res) params.fail && params.fail(res)
}, },
}) })

Loading…
Cancel
Save