@@ -0,0 +1,28 @@ | |||
// app.js | |||
App({ | |||
onLaunch() { | |||
// 展示本地存储能力 | |||
const logs = wx.getStorageSync('logs') || [] | |||
logs.unshift(Date.now()) | |||
wx.setStorageSync('logs', logs) | |||
// 登录 | |||
wx.login({ | |||
success: res => { | |||
// 发送 res.code 到后台换取 openId, sessionKey, unionId | |||
} | |||
}) | |||
}, | |||
globalData: { | |||
userInfo: null, | |||
openid: "", | |||
appid: "", | |||
sessionKey: "", | |||
suiteCode: "", | |||
customerId: "", | |||
}, | |||
// mangerUrl: 'http://test2.hhrchina.com', | |||
mangerUrl: "http://192.168.18.156", | |||
// mangerUrl: "https://www.hhrchina.com", | |||
// mangerUrlPath: "https://www.hhrchina.com", | |||
}) |
@@ -0,0 +1,21 @@ | |||
{ | |||
"pages":[ | |||
"pages/index/index", | |||
"pages/logs/logs" | |||
], | |||
"usingComponents": { | |||
"tabBar": "/components/tabbar/tabbar" | |||
}, | |||
"window":{ | |||
"backgroundTextStyle":"light", | |||
"navigationBarBackgroundColor": "#fff", | |||
"navigationBarTitleText": "Weixin", | |||
"navigationBarTextStyle":"black" | |||
}, | |||
"style": "v2", | |||
"sitemapLocation": "sitemap.json", | |||
"useExtendedLib": { | |||
"kbone": true, | |||
"weui": true | |||
} | |||
} |
@@ -0,0 +1,11 @@ | |||
/**app.wxss**/ | |||
.container { | |||
width: 100%; | |||
height: 100%; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: space-between; | |||
box-sizing: border-box; | |||
} |
@@ -0,0 +1,43 @@ | |||
// components/tabbar/tabbar.js | |||
const app = getApp() | |||
Component({ | |||
/** | |||
* 组件的属性列表 | |||
*/ | |||
properties: { | |||
currentIndex: { | |||
type: String, | |||
value: '0', | |||
} | |||
}, | |||
/** | |||
* 组件的初始数据 | |||
*/ | |||
data: { | |||
list: [ | |||
{ | |||
text: "对话", | |||
iconPath: "/images/tabbar/tabbar_1.png", | |||
selectedIconPath: "/images/tabbar/tabbar_1.png", | |||
dot: true | |||
}, | |||
{ | |||
text: "设置", | |||
iconPath: "/images/tabbar/tabbar_2.png", | |||
selectedIconPath: "/images/tabbar/tabbar_2.png", | |||
badge: '99+' | |||
} | |||
] | |||
}, | |||
/** | |||
* 组件的方法列表 | |||
*/ | |||
methods: { | |||
tabChange(e) { | |||
console.log('tab change--aa', e) | |||
} | |||
} | |||
}) | |||
@@ -0,0 +1,6 @@ | |||
{ | |||
"component": true, | |||
"usingComponents": { | |||
"mp-tabbar": "/miniprogram_npm/weui-miniprogram/tabbar/tabbar" | |||
} | |||
} |
@@ -0,0 +1,3 @@ | |||
<view class="page"> | |||
<mp-tabbar style="position:fixed;bottom:0;width:100%;left:0;right:0;" list="{{list}}" bindchange="tabChange"></mp-tabbar> | |||
</view> |
@@ -0,0 +1 @@ | |||
/* components/tabbar/tabbar.wxss */ |
@@ -0,0 +1,49 @@ | |||
// index.js | |||
// 获取应用实例 | |||
const app = getApp() | |||
Page({ | |||
data: { | |||
motto: 'Hello World', | |||
userInfo: {}, | |||
hasUserInfo: false, | |||
canIUse: wx.canIUse('button.open-type.getUserInfo'), | |||
canIUseGetUserProfile: false, | |||
canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'), // 如需尝试获取用户信息可改为false | |||
currentIndex: 0 | |||
}, | |||
// 事件处理函数 | |||
bindViewTap() { | |||
wx.navigateTo({ | |||
url: '../logs/logs' | |||
}) | |||
}, | |||
onLoad() { | |||
if (wx.getUserProfile) { | |||
this.setData({ | |||
canIUseGetUserProfile: true | |||
}) | |||
} | |||
}, | |||
getUserProfile(e) { | |||
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 | |||
wx.getUserProfile({ | |||
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 | |||
success: (res) => { | |||
console.log(res) | |||
this.setData({ | |||
userInfo: res.userInfo, | |||
hasUserInfo: true | |||
}) | |||
} | |||
}) | |||
}, | |||
getUserInfo(e) { | |||
// 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 | |||
console.log(e) | |||
this.setData({ | |||
userInfo: e.detail.userInfo, | |||
hasUserInfo: true | |||
}) | |||
} | |||
}) |
@@ -0,0 +1,4 @@ | |||
{ | |||
"usingComponents": { | |||
} | |||
} |
@@ -0,0 +1,6 @@ | |||
<!--index.wxml--> | |||
<view class="container"> | |||
康慧慧V8 | |||
<tabBar currentIndex="{{currentIndex}}"></tabBar> | |||
</view> | |||
@@ -0,0 +1,19 @@ | |||
/**index.wxss**/ | |||
.userinfo { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
color: #aaa; | |||
} | |||
.userinfo-avatar { | |||
overflow: hidden; | |||
width: 128rpx; | |||
height: 128rpx; | |||
margin: 20rpx; | |||
border-radius: 50%; | |||
} | |||
.usermotto { | |||
margin-top: 200px; | |||
} |
@@ -0,0 +1,18 @@ | |||
// logs.js | |||
const util = require('../../utils/util.js') | |||
Page({ | |||
data: { | |||
logs: [] | |||
}, | |||
onLoad() { | |||
this.setData({ | |||
logs: (wx.getStorageSync('logs') || []).map(log => { | |||
return { | |||
date: util.formatTime(new Date(log)), | |||
timeStamp: log | |||
} | |||
}) | |||
}) | |||
} | |||
}) |
@@ -0,0 +1,4 @@ | |||
{ | |||
"navigationBarTitleText": "查看启动日志", | |||
"usingComponents": {} | |||
} |
@@ -0,0 +1,6 @@ | |||
<!--logs.wxml--> | |||
<view class="container log-list"> | |||
<block wx:for="{{logs}}" wx:key="timeStamp" wx:for-item="log"> | |||
<text class="log-item">{{index + 1}}. {{log.date}}</text> | |||
</block> | |||
</view> |
@@ -0,0 +1,8 @@ | |||
.log-list { | |||
display: flex; | |||
flex-direction: column; | |||
padding: 40rpx; | |||
} | |||
.log-item { | |||
margin: 10rpx; | |||
} |
@@ -0,0 +1,74 @@ | |||
{ | |||
"description": "项目配置文件", | |||
"packOptions": { | |||
"ignore": [] | |||
}, | |||
"setting": { | |||
"urlCheck": true, | |||
"es6": true, | |||
"enhance": false, | |||
"postcss": true, | |||
"preloadBackgroundData": false, | |||
"minified": true, | |||
"newFeature": false, | |||
"coverView": true, | |||
"nodeModules": false, | |||
"autoAudits": false, | |||
"showShadowRootInWxmlPanel": true, | |||
"scopeDataCheck": false, | |||
"uglifyFileName": false, | |||
"checkInvalidKey": true, | |||
"checkSiteMap": true, | |||
"uploadWithSourceMap": true, | |||
"compileHotReLoad": false, | |||
"lazyloadPlaceholderEnable": false, | |||
"useMultiFrameRuntime": true, | |||
"useApiHook": true, | |||
"useApiHostProcess": true, | |||
"babelSetting": { | |||
"ignore": [], | |||
"disablePlugins": [], | |||
"outputPath": "" | |||
}, | |||
"enableEngineNative": false, | |||
"useIsolateContext": true, | |||
"userConfirmedBundleSwitch": false, | |||
"packNpmManually": false, | |||
"packNpmRelationList": [], | |||
"minifyWXSS": true, | |||
"showES6CompileOption": false | |||
}, | |||
"compileType": "miniprogram", | |||
"libVersion": "2.18.1", | |||
"appid": "wx2fb79bf1a0f4a450", | |||
"projectname": "communication_app", | |||
"debugOptions": { | |||
"hidedInDevtools": [] | |||
}, | |||
"scripts": {}, | |||
"staticServerOptions": { | |||
"baseURL": "", | |||
"servePath": "" | |||
}, | |||
"isGameTourist": false, | |||
"condition": { | |||
"search": { | |||
"list": [] | |||
}, | |||
"conversation": { | |||
"list": [] | |||
}, | |||
"game": { | |||
"list": [] | |||
}, | |||
"plugin": { | |||
"list": [] | |||
}, | |||
"gamePlugin": { | |||
"list": [] | |||
}, | |||
"miniprogram": { | |||
"list": [] | |||
} | |||
} | |||
} |
@@ -0,0 +1,7 @@ | |||
{ | |||
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", | |||
"rules": [{ | |||
"action": "allow", | |||
"page": "*" | |||
}] | |||
} |
@@ -0,0 +1,77 @@ | |||
// wx.request封装 | |||
const app = getApp() | |||
const request = async (url, options, contentType) => { | |||
let openId | |||
await new Promise(resolve => { | |||
let tiems = setInterval(() => { | |||
// 如果此时openid已被赋值 | |||
openId = app.globalData.openid; // data里要固定添加openid(项目需要) | |||
if (!!app.globalData.openid) { | |||
clearInterval(tiems) | |||
resolve() | |||
} | |||
}, 500); | |||
}) | |||
!!contentType?contentType:contentType="application/json" | |||
return new Promise( (resolve, reject) => { | |||
wx.request({ | |||
url: `${app.mangerUrl}${url}?openId=${openId}`,//获取域名接口地址 | |||
method: options.method, //配置method方法 | |||
data:options.data, | |||
//如果是GET,GET自动让数据成为query String,其他方法需要让options.data转化为字符串 | |||
header: { | |||
'Content-Type': contentType, | |||
'Cookie':wx.getStorageSync('cookieKey')||'' | |||
}, | |||
success(request) { | |||
if (request && request.header && request.header['Set-Cookie']) { | |||
if(request.header['Set-Cookie'].indexOf("SESSION")==0){ | |||
wx.setStorageSync('cookieKey', request.header['Set-Cookie']); //保存Cookie到Storage | |||
} | |||
} | |||
//监听成功后的操作 | |||
resolve(request.data) | |||
}, | |||
fail(error) { | |||
//返回失败也同样传入reject()方法 | |||
reject(error.data) | |||
} | |||
}) | |||
}) | |||
} | |||
//封装get方法 | |||
const get = (url, options = {}) => { | |||
return request(url, { | |||
method: 'GET', | |||
data: options | |||
}) | |||
} | |||
//封装post方法 | |||
const post = (url, options,contentType) => { | |||
return request(url, { | |||
method: 'POST', | |||
data: options | |||
},contentType) | |||
} | |||
//封装put方法 | |||
const put = (url, options) => { | |||
return request(url, { | |||
method: 'PUT', | |||
data: options | |||
}) | |||
} | |||
//封装remove方法 | |||
// 不能声明DELETE(关键字) | |||
const remove = (url, options) => { | |||
return request(url, { | |||
method: 'DELETE', | |||
data: options | |||
}) | |||
} | |||
//抛出wx.request的post,get,put,remove方法 | |||
module.exports = { | |||
get, | |||
post, | |||
put, | |||
remove | |||
} |
@@ -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 | |||
} |