22 changed files with 461 additions and 0 deletions
@ -0,0 +1,39 @@ |
|||
//app.js
|
|||
App({ |
|||
onLaunch: function () { |
|||
// 展示本地存储能力
|
|||
var logs = wx.getStorageSync('logs') || [] |
|||
logs.unshift(Date.now()) |
|||
wx.setStorageSync('logs', logs) |
|||
|
|||
// 登录
|
|||
wx.login({ |
|||
success: res => { |
|||
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
|||
} |
|||
}) |
|||
// 获取用户信息
|
|||
wx.getSetting({ |
|||
success: res => { |
|||
if (res.authSetting['scope.userInfo']) { |
|||
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
|
|||
wx.getUserInfo({ |
|||
success: res => { |
|||
// 可以将 res 发送给后台解码出 unionId
|
|||
this.globalData.userInfo = res.userInfo |
|||
|
|||
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
|
|||
// 所以此处加入 callback 以防止这种情况
|
|||
if (this.userInfoReadyCallback) { |
|||
this.userInfoReadyCallback(res) |
|||
} |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
globalData: { |
|||
userInfo: null |
|||
} |
|||
}) |
|||
@ -0,0 +1,36 @@ |
|||
{ |
|||
"pages": [ |
|||
"pages/home/index", |
|||
"pages/user/index", |
|||
"pages/billboards/index", |
|||
"pages/topics/index" |
|||
], |
|||
"window": { |
|||
"backgroundTextStyle": "light", |
|||
"navigationBarBackgroundColor": "#fff", |
|||
"navigationBarTitleText": "凤栖市北", |
|||
"navigationBarTextStyle": "black" |
|||
}, |
|||
"tabBar": { |
|||
"list": [ |
|||
{ |
|||
"pagePath": "pages/home/index", |
|||
"text": "首页" |
|||
}, |
|||
{ |
|||
"pagePath": "pages/billboards/index", |
|||
"text": "宣传栏" |
|||
}, |
|||
{ |
|||
"pagePath": "pages/topics/index", |
|||
"text": "议事厅" |
|||
}, |
|||
{ |
|||
"pagePath": "pages/user/index", |
|||
"text": "我的" |
|||
} |
|||
] |
|||
}, |
|||
"debug": true, |
|||
"sitemapLocation": "sitemap.json" |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
/**app.wxss**/ |
|||
.container { |
|||
height: 100%; |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
padding: 200rpx 0; |
|||
box-sizing: border-box; |
|||
} |
|||
@ -0,0 +1,66 @@ |
|||
// pages/billboards/index.js
|
|||
Page({ |
|||
|
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面初次渲染完成 |
|||
*/ |
|||
onReady: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面显示 |
|||
*/ |
|||
onShow: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面隐藏 |
|||
*/ |
|||
onHide: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面卸载 |
|||
*/ |
|||
onUnload: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面相关事件处理函数--监听用户下拉动作 |
|||
*/ |
|||
onPullDownRefresh: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面上拉触底事件的处理函数 |
|||
*/ |
|||
onReachBottom: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 用户点击右上角分享 |
|||
*/ |
|||
onShareAppMessage: function () { |
|||
|
|||
} |
|||
}) |
|||
@ -0,0 +1,3 @@ |
|||
{ |
|||
"usingComponents": {} |
|||
} |
|||
@ -0,0 +1,2 @@ |
|||
<!--pages/billboards/index.wxml--> |
|||
<text>pages/billboards/index.wxml</text> |
|||
@ -0,0 +1 @@ |
|||
/* pages/billboards/index.wxss */ |
|||
@ -0,0 +1,54 @@ |
|||
//index.js
|
|||
//获取应用实例
|
|||
const app = getApp() |
|||
|
|||
Page({ |
|||
data: { |
|||
motto: 'Hello World', |
|||
userInfo: {}, |
|||
hasUserInfo: false, |
|||
canIUse: wx.canIUse('button.open-type.getUserInfo') |
|||
}, |
|||
//事件处理函数
|
|||
bindViewTap: function() { |
|||
wx.navigateTo({ |
|||
url: '../logs/logs' |
|||
}) |
|||
}, |
|||
onLoad: function () { |
|||
if (app.globalData.userInfo) { |
|||
this.setData({ |
|||
userInfo: app.globalData.userInfo, |
|||
hasUserInfo: true |
|||
}) |
|||
} else if (this.data.canIUse){ |
|||
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
|
|||
// 所以此处加入 callback 以防止这种情况
|
|||
app.userInfoReadyCallback = res => { |
|||
this.setData({ |
|||
userInfo: res.userInfo, |
|||
hasUserInfo: true |
|||
}) |
|||
} |
|||
} else { |
|||
// 在没有 open-type=getUserInfo 版本的兼容处理
|
|||
wx.getUserInfo({ |
|||
success: res => { |
|||
app.globalData.userInfo = res.userInfo |
|||
this.setData({ |
|||
userInfo: res.userInfo, |
|||
hasUserInfo: true |
|||
}) |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
getUserInfo: function(e) { |
|||
console.log(e) |
|||
app.globalData.userInfo = e.detail.userInfo |
|||
this.setData({ |
|||
userInfo: e.detail.userInfo, |
|||
hasUserInfo: true |
|||
}) |
|||
} |
|||
}) |
|||
@ -0,0 +1,3 @@ |
|||
{ |
|||
"usingComponents": {} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
<!--index.wxml--> |
|||
<view class="container"> |
|||
<view class="userinfo"> |
|||
<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button> |
|||
<block wx:else> |
|||
<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image> |
|||
<text class="userinfo-nickname">{{userInfo.nickName}}</text> |
|||
</block> |
|||
</view> |
|||
<view class="usermotto"> |
|||
<text class="user-motto">{{motto}}</text> |
|||
</view> |
|||
</view> |
|||
@ -0,0 +1,21 @@ |
|||
/**index.wxss**/ |
|||
.userinfo { |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: center; |
|||
} |
|||
|
|||
.userinfo-avatar { |
|||
width: 128rpx; |
|||
height: 128rpx; |
|||
margin: 20rpx; |
|||
border-radius: 50%; |
|||
} |
|||
|
|||
.userinfo-nickname { |
|||
color: #aaa; |
|||
} |
|||
|
|||
.usermotto { |
|||
margin-top: 200px; |
|||
} |
|||
@ -0,0 +1,66 @@ |
|||
// pages/topics/index.js
|
|||
Page({ |
|||
|
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面初次渲染完成 |
|||
*/ |
|||
onReady: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面显示 |
|||
*/ |
|||
onShow: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面隐藏 |
|||
*/ |
|||
onHide: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面卸载 |
|||
*/ |
|||
onUnload: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面相关事件处理函数--监听用户下拉动作 |
|||
*/ |
|||
onPullDownRefresh: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面上拉触底事件的处理函数 |
|||
*/ |
|||
onReachBottom: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 用户点击右上角分享 |
|||
*/ |
|||
onShareAppMessage: function () { |
|||
|
|||
} |
|||
}) |
|||
@ -0,0 +1,3 @@ |
|||
{ |
|||
"usingComponents": {} |
|||
} |
|||
@ -0,0 +1,2 @@ |
|||
<!--pages/topics/index.wxml--> |
|||
<text>pages/topics/index.wxml</text> |
|||
@ -0,0 +1 @@ |
|||
/* pages/topics/index.wxss */ |
|||
@ -0,0 +1,66 @@ |
|||
// pages/user/index.js
|
|||
Page({ |
|||
|
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面初次渲染完成 |
|||
*/ |
|||
onReady: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面显示 |
|||
*/ |
|||
onShow: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面隐藏 |
|||
*/ |
|||
onHide: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面卸载 |
|||
*/ |
|||
onUnload: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面相关事件处理函数--监听用户下拉动作 |
|||
*/ |
|||
onPullDownRefresh: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面上拉触底事件的处理函数 |
|||
*/ |
|||
onReachBottom: function () { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 用户点击右上角分享 |
|||
*/ |
|||
onShareAppMessage: function () { |
|||
|
|||
} |
|||
}) |
|||
@ -0,0 +1,3 @@ |
|||
{ |
|||
"usingComponents": {} |
|||
} |
|||
@ -0,0 +1,2 @@ |
|||
<!--pages/user/index.wxml--> |
|||
<text>pages/user/index.wxml</text> |
|||
@ -0,0 +1 @@ |
|||
/* pages/user/index.wxss */ |
|||
@ -0,0 +1,43 @@ |
|||
{ |
|||
"description": "项目配置文件", |
|||
"packOptions": { |
|||
"ignore": [] |
|||
}, |
|||
"setting": { |
|||
"urlCheck": true, |
|||
"es6": true, |
|||
"postcss": true, |
|||
"minified": true, |
|||
"newFeature": true, |
|||
"autoAudits": false, |
|||
"coverView": true |
|||
}, |
|||
"compileType": "miniprogram", |
|||
"libVersion": "2.8.1", |
|||
"appid": "wx3bcb2b4ced1544f7", |
|||
"projectname": "fqsb_wx", |
|||
"debugOptions": { |
|||
"hidedInDevtools": [] |
|||
}, |
|||
"isGameTourist": false, |
|||
"simulatorType": "wechat", |
|||
"simulatorPluginLibVersion": {}, |
|||
"condition": { |
|||
"search": { |
|||
"current": -1, |
|||
"list": [] |
|||
}, |
|||
"conversation": { |
|||
"current": -1, |
|||
"list": [] |
|||
}, |
|||
"game": { |
|||
"currentL": -1, |
|||
"list": [] |
|||
}, |
|||
"miniprogram": { |
|||
"current": -1, |
|||
"list": [] |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", |
|||
"rules": [{ |
|||
"action": "allow", |
|||
"page": "*" |
|||
}] |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
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 |
|||
} |
|||
|
|||
module.exports = { |
|||
formatTime: formatTime |
|||
} |
|||
Loading…
Reference in new issue