@@ -0,0 +1,19 @@ | |||
//app.js | |||
App({ | |||
onLaunch: function () { | |||
if (!wx.cloud) { | |||
console.error('请使用 2.2.3 或以上的基础库以使用云能力') | |||
} else { | |||
wx.cloud.init({ | |||
// env 参数说明: | |||
// env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源 | |||
// 此处请填入环境 ID, 环境 ID 可打开云控制台查看 | |||
// 如不填则使用默认环境(第一个创建的环境) | |||
env: 'cloud1-7g8hw3qu242eeb5f', | |||
traceUser: true, //将用户访问记录到用户管理中 | |||
}) | |||
} | |||
this.globalData = {} | |||
} | |||
}) |
@@ -0,0 +1,42 @@ | |||
{ | |||
"pages": [ | |||
"pages/home/home", | |||
"pages/more/more" | |||
], | |||
"permission": { | |||
"scope.userLocation": { | |||
"desc": "你的位置信息将用于小程序位置接口的效果展示" | |||
} | |||
}, | |||
"window": { | |||
"backgroundTextStyle": "dark", | |||
"navigationBarBackgroundColor": "#1772cb", | |||
"navigationBarTitleText": "随手精灵", | |||
"navigationBarTextStyle": "white" | |||
}, | |||
"tabBar": { | |||
"color": "#7A7E83", | |||
"selectedColor": "#13227a", | |||
"backgroundColor": "#ffffff", | |||
"list": [ | |||
{ | |||
"pagePath": "pages/home/home", | |||
"iconPath": "images/icon/icon_home.png", | |||
"selectedIconPath": "images/icon/icon_home_active.png", | |||
"text": "首页" | |||
}, | |||
{ | |||
"pagePath": "pages/more/more", | |||
"iconPath": "images/icon/icon_more.png", | |||
"selectedIconPath": "images/icon/icon_more_active.png", | |||
"text": "更多" | |||
} | |||
] | |||
}, | |||
"networkTimeout": { | |||
"request": 10000, | |||
"downloadFile": 10000 | |||
}, | |||
"debug": true, | |||
"sitemapLocation": "sitemap.json" | |||
} |
@@ -0,0 +1 @@ | |||
@import 'style/app.wxss'; |
@@ -0,0 +1 @@ | |||
export const VersionModel = '2.0.0F'; |
@@ -0,0 +1,211 @@ | |||
// pages/home/home.js | |||
Page({ | |||
/** | |||
* 页面的初始数据 | |||
*/ | |||
data: { | |||
wlanList: [ | |||
], //当前wlan列表 | |||
isConnectWlan: null, //是否已经连接上WLAN | |||
connectWlanBssid: '', //当前连接WLAN的SSID | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
onLoad: function (options) { | |||
this.onStartWifi(); | |||
// todo 获取从微信公众号跳转的参数 | |||
}, | |||
/** | |||
* 生命周期函数--监听页面初次渲染完成 | |||
*/ | |||
onReady: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面显示 | |||
*/ | |||
onShow: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面隐藏 | |||
*/ | |||
onHide: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面卸载 | |||
*/ | |||
onUnload: function () { | |||
}, | |||
/** | |||
* 页面相关事件处理函数--监听用户下拉动作 | |||
*/ | |||
onPullDownRefresh: function () { | |||
}, | |||
/** | |||
* 页面上拉触底事件的处理函数 | |||
*/ | |||
onReachBottom: function () { | |||
}, | |||
/** | |||
* 用户点击右上角分享 | |||
*/ | |||
onShareAppMessage: function () { | |||
}, | |||
navigateTo() { | |||
wx.navigateTo({ | |||
url: '/pages/lifecyle/lifecyle' | |||
}) | |||
}, | |||
switchTab() { | |||
wx.switchTab({ | |||
url: "/pages/list/list", | |||
}) | |||
}, | |||
// 加载wifi模板 | |||
onStartWifi() { | |||
let that = this; | |||
wx.startWifi({ | |||
success(res) { | |||
console.log("成功", res.errMsg); | |||
that.getWifiList(); | |||
}, | |||
fail(res) { | |||
console.log("失败", res.errMsg); | |||
wx.showModal({ | |||
title: '温馨提示', | |||
content: `当前用户未打开WIFI和GPS`, | |||
showCancel: false, | |||
success(res) { | |||
if (res.confirm) { | |||
console.log('用户点击确定'); | |||
} else if (res.cancel) { | |||
console.log('用户点击取消'); | |||
} | |||
} | |||
}) | |||
} | |||
}); | |||
}, | |||
// 获取当前链接的wifi信息 | |||
getConnectedWifi: function () { | |||
let that = this; | |||
wx.getConnectedWifi({ | |||
success(res) { | |||
console.log(res); | |||
if(res) { | |||
// 如果已经连接上WLAN | |||
that.setData({ | |||
isConnectWlan: true, | |||
connectWlanBssid: res.wifi.BSSID, | |||
}) | |||
} | |||
}, | |||
fail(res) { | |||
console.log(res.errMsg); | |||
that.setData({ | |||
isConnectWlan: false | |||
}) | |||
} | |||
}) | |||
}, | |||
// 刷新 | |||
onRefresh() { | |||
this.getWifiList(); | |||
}, | |||
// 搜索不到WLAN | |||
onHelp() { | |||
wx.showModal({ | |||
title: '温馨提示', | |||
content: `请您前往手机-设置-WLAN,打开WLAN开关并且打开手机的GPS`, | |||
showCancel: false, | |||
}) | |||
}, | |||
// 保存WLAN信息 | |||
onSave(value) { | |||
const currentWlanInfo = value.currentTarget.dataset.name; | |||
console.log("当前点击的WLAN信息", currentWlanInfo); | |||
wx.showModal({ | |||
title: '温馨提示', | |||
content: `当前选中WLANBSSID是: | |||
${currentWlanInfo.BSSID} | |||
`, | |||
cancelText: '关闭', | |||
confirmText: '复制', | |||
success: (res) => { | |||
if (res.confirm) { | |||
wx.setClipboardData({ | |||
data: `${currentWlanInfo.BSSID}`, | |||
}) | |||
} | |||
} | |||
}) | |||
// todo 调取接口 | |||
}, | |||
// 获取当前连接的周边的wifi列表 | |||
getWifiList() { | |||
let that = this; | |||
// 先获取当前连接的wifi信息 | |||
that.getConnectedWifi(); | |||
wx.showLoading({ | |||
title: '获取中WLAN...' | |||
}); | |||
wx.getWifiList({ | |||
success(res) { | |||
console.log("getWifiList", res); | |||
wx.hideLoading(); | |||
wx.showToast({ | |||
title: '获取成功', | |||
icon: 'success' | |||
}); | |||
wx.onGetWifiList((result) => { | |||
// 筛选wifi名称为空的数据 | |||
let wifiList = result.wifiList.filter(item => { | |||
return item.SSID !== ''; | |||
}); | |||
// ,如果有已连接的wifi则将已连接的wifi移动到第一位,否则不做任何操作 | |||
if(that.data.connectWlanBssid !== '') { | |||
//let newWifiList = that.data.wlanList; | |||
// 找到与当前已连接wifi相同bssid数据的下标 | |||
const index = wifiList.findIndex(v => v.BSSID === that.data.connectWlanBssid); | |||
//根据该对象在数组的下标从数组中移出 | |||
const moveObj = wifiList.splice(index, 1); | |||
//把当前数据插入到数据首位 | |||
wifiList.splice(0, 0, ...moveObj); | |||
that.setData({ | |||
wlanList: wifiList | |||
}) | |||
} else { | |||
that.setData({ | |||
wlanList: wifiList | |||
}) | |||
} | |||
}); | |||
}, | |||
fail(res) { | |||
console.log(res.errMsg); | |||
wx.hideLoading(); | |||
wx.showModal({ | |||
title: '温馨提示', | |||
content: '当前用户未打开WIFI和GPS', | |||
showCancel: false, | |||
}) | |||
}, | |||
}); | |||
} | |||
}) |
@@ -0,0 +1,3 @@ | |||
{ | |||
"navigationBarTitleText": "首页" | |||
} |
@@ -0,0 +1,31 @@ | |||
<view class="home-container"> | |||
<!--header --> | |||
<view class="header"> | |||
<text>设备不支持5G类型以及机场,酒店等热点WLAN。如未获取到,请打开WIFI和GPS后刷新页面。点击WLAN即可查看对应的WlAN信息。</text> | |||
</view> | |||
<!-- list --> | |||
<view class="disable-wlan"> | |||
<text>可用WLAN列表</text> | |||
<button class="disable-wlan-btn" type="primary" size="mini" bindtap="onRefresh" wx:if="{{wlanList.length > 0}}">刷新</button> | |||
</view> | |||
<!-- body --> | |||
<view class="body"> | |||
<view class="wlan-list" wx:if="{{wlanList.length > 0}}"> | |||
<view class="wlan-item" wx:for="{{wlanList}}" wx:key="index"> | |||
<view bindtap="onSave" data-name="{{wlanList[index]}}" class="{{index === 0 && isConnectWlan ? 'isConnect' : ''}}"> | |||
<text class="wlan-item-text" wx:if="{{index === 0 && isConnectWlan}}">(当前手机连接网络)</text> | |||
{{wlanList[index].SSID}} | |||
</view> | |||
</view> | |||
</view> | |||
<view class="wlan-list-empty" wx:else="{{wlanList.length === 0}}"> | |||
<image class="no_wifi" src="../../images/icon/no_wifi.png"></image> | |||
<text bindtap="onHelp">找不到WLAN?</text> | |||
<button type="primary" bindtap="onRefresh">刷新</button> | |||
</view> | |||
</view> | |||
<!-- footer --> | |||
<view class="footer"> | |||
<image class="help" src="../../images/icon/help.png"></image><text bindtap="onHelp">搜索不到WLAN</text> | |||
</view> | |||
</view> |
@@ -0,0 +1,96 @@ | |||
/* pages/home/home.wxss.wxss */ | |||
.home-container { | |||
position: relative; | |||
height: 100vh; | |||
overflow: hidden; | |||
background-color: #f2f4f5; | |||
} | |||
.header { | |||
height: 80px; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
padding: 0 20px; | |||
background-color: #fff; | |||
font-size: 14px; | |||
color: gray; | |||
} | |||
.disable-wlan { | |||
height: 50px; | |||
line-height: 50px; | |||
margin-top: 15px; | |||
padding: 0 20px; | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
background-color: white; | |||
} | |||
.disable-wlan-btn { | |||
width: 120px; | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
} | |||
.refresh-img { | |||
height: 25px; | |||
width: 25px; | |||
} | |||
.body { | |||
height: calc(100vh - 205px); | |||
overflow: auto; | |||
background-color: #f2f4f5; | |||
} | |||
.wlan-list { | |||
flex: 1; | |||
background-color: #f2f4f5; | |||
overflow: auto; | |||
} | |||
.wlan-list-empty { | |||
height: 100%; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
flex-direction: column; | |||
} | |||
.no_wifi { | |||
height: 80px; | |||
width: 80px; | |||
margin-bottom: 10px; | |||
opacity: .6; | |||
} | |||
button { | |||
width: 120px; | |||
margin: 10px 0; | |||
} | |||
.wlan-item { | |||
height: 65px; | |||
line-height: 65px; | |||
padding-left: 20px; | |||
margin: 5px 0; | |||
background-color: #fff; | |||
white-space: nowrap; | |||
overflow-y: hidden; | |||
} | |||
.wlan-item-text { | |||
font-size: 14px; | |||
} | |||
.isConnect { | |||
color: #2599ff; | |||
} | |||
.footer { | |||
height: 55px; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
color: #2599ff; | |||
background-color: #fff; | |||
position: absolute; | |||
bottom: 5px; | |||
left: 0; | |||
right: 0; | |||
} | |||
.help { | |||
height: 25px; | |||
width: 25px; | |||
margin-right: 5px; | |||
} |
@@ -0,0 +1,67 @@ | |||
// pages/more/more.js | |||
import { VersionModel } from '../../model/index' | |||
Page({ | |||
/** | |||
* 页面的初始数据 | |||
*/ | |||
data: { | |||
version: VersionModel, //版本号 | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
onLoad: function (options) { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面初次渲染完成 | |||
*/ | |||
onReady: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面显示 | |||
*/ | |||
onShow: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面隐藏 | |||
*/ | |||
onHide: function () { | |||
}, | |||
/** | |||
* 生命周期函数--监听页面卸载 | |||
*/ | |||
onUnload: function () { | |||
}, | |||
/** | |||
* 页面相关事件处理函数--监听用户下拉动作 | |||
*/ | |||
onPullDownRefresh: function () { | |||
}, | |||
/** | |||
* 页面上拉触底事件的处理函数 | |||
*/ | |||
onReachBottom: function () { | |||
}, | |||
/** | |||
* 用户点击右上角分享 | |||
*/ | |||
onShareAppMessage: function () { | |||
} | |||
}) |
@@ -0,0 +1,3 @@ | |||
{ | |||
"navigationBarTitleText": "更多" | |||
} |
@@ -0,0 +1,4 @@ | |||
<!--pages/more/more.wxml--> | |||
<view class="more-container"> | |||
<text>当前小程序版本号:{{version}}</text> | |||
</view> |
@@ -0,0 +1,7 @@ | |||
.more-container { | |||
height: 100%; | |||
width: 100%; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} |
@@ -0,0 +1,7 @@ | |||
{ | |||
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", | |||
"rules": [{ | |||
"action": "allow", | |||
"page": "*" | |||
}] | |||
} |
@@ -0,0 +1,67 @@ | |||
{ | |||
"miniprogramRoot": "miniprogram/", | |||
"cloudfunctionRoot": "cloudfunctions/", | |||
"setting": { | |||
"urlCheck": false, | |||
"es6": true, | |||
"enhance": true, | |||
"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, | |||
"useMultiFrameRuntime": true, | |||
"useApiHook": true, | |||
"useApiHostProcess": true, | |||
"babelSetting": { | |||
"ignore": [], | |||
"disablePlugins": [], | |||
"outputPath": "" | |||
}, | |||
"enableEngineNative": false, | |||
"useIsolateContext": true, | |||
"userConfirmedBundleSwitch": false, | |||
"packNpmManually": false, | |||
"packNpmRelationList": [], | |||
"minifyWXSS": true, | |||
"disableUseStrict": false, | |||
"showES6CompileOption": false, | |||
"useCompilerPlugins": false, | |||
"minifyWXML": true, | |||
"useStaticServer": true | |||
}, | |||
"appid": "wx64cc3af90544c0cd", | |||
"projectname": "cloudbase", | |||
"libVersion": "2.14.1", | |||
"condition": { | |||
"miniprogram": { | |||
"list": [ | |||
{ | |||
"name": "db guide", | |||
"pathName": "pages/databaseGuide/databaseGuide", | |||
"query": "" | |||
} | |||
] | |||
} | |||
}, | |||
"compileType": "miniprogram", | |||
"srcMiniprogramRoot": "miniprogram/", | |||
"packOptions": { | |||
"ignore": [], | |||
"include": [] | |||
}, | |||
"editorSetting": { | |||
"tabIndent": "insertSpaces", | |||
"tabSize": 4 | |||
}, | |||
"description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html" | |||
} |