import request from '../../utils/request'; import { fenApi } from '../../api/core'; import { getBaseUrl } from '../../utils/utilsServes'; // pages/home/home.js Page({ /** * 页面的初始数据 */ data: { wlanList: [ /* {SSID: '测试', BSSID: 'dc:fe:18:85:a5:7c', frequency: 5259} */ ], //当前wlan列表 isConnectWlan: null, //是否已经连接上WLAN connectWlanBssid: '', //当前连接WLAN的BSSID imei: '', //设备imei fenceId: '', //围栏id appType: '', //应用类型 env: '', //运行环境 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.checkOptions(options); this.getAuth(); this.getPrivacySetting(); }, // 获取用户隐私协议授权状态 getPrivacySetting() { const that = this wx.getPrivacySetting({ success(res) { if (res.errMsg == "getPrivacySetting:ok") { if(!res.needAuthorization) { // 如果已经授权,加载wifi模块 that.onStartWifi(); } } } }) }, onHide() { // 点击小程序右上角的关闭按钮时清空authToken wx.removeStorage({ key: 'authToken', }) }, // 获取token getAuth() { // 获取token时有token清空token,防止获取token接口的时候带上token if(wx.getStorageSync('authToken')) { wx.removeStorage({ key: 'authToken' }) } const manufactorId = "2cae99d6-0475-42fe-9fa7-ca27e03077de"; const baseUrl = getBaseUrl(this.data.env); const requestUrl = baseUrl + fenApi.getAuth; request.post(requestUrl, { manufactorId: manufactorId }).then(res => { if( res.code === 0 ) { // 先清除原来token,再把新token存在来 if(wx.getStorageSync('authToken')) { wx.removeStorage('authToken'); } wx.setStorage({ key: "authToken", data: res.data, }) }; }).catch(error => { console.log("error", error); }) }, agreePrivacy() { this.onStartWifi(); }, // 检查并获取从微信公众号传过来的参数 checkOptions(options) { // todo 获取从微信公众号跳转的参数 if(JSON.stringify(options) === '{}') { console.log("当前页面无携带参数"); } else { console.log("存在参数", options); this.setData({ imei: options.imei, fenceId: options.fenceId, appType: options.appType, env: options.env }); }; }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: 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() { that.getWifiList(); }, fail(res) { console.log("失败", res.errMsg); wx.showModal({ title: '温馨提示', content: `当前用户未打开WIFI和GPS`, showCancel: false, }) } }); }, // 获取当前链接的wifi信息 getConnectedWifi: function () { let that = this; wx.getConnectedWifi({ success(res) { if(res && (res.wifi.frequency / 1000) < 2.5) { // 如果已经连接上WLAN 并且是2.4G频段 that.setData({ isConnectWlan: true, connectWlanBssid: res.wifi.BSSID, }) } }, fail(res) { console.log(res.errMsg); that.setData({ isConnectWlan: false }) } }) }, // 刷新 onRefresh() { this.getWifiList(); this.getAuth(); }, // 搜索不到WLAN onHelp() { wx.showModal({ title: '温馨提示', content: `请您前往手机-设置-WLAN,打开WLAN开关并且打开手机的GPS`, showCancel: false, }) }, // 保存WLAN信息 onSave(value) { const currentWlanInfo = value.currentTarget.dataset.name; let that = this; wx.showModal({ title: '温馨提示', content: `当前选中WLAN是: ${currentWlanInfo.SSID} `, cancelText: '关闭', confirmText: that.data.fenceId ? `选择` : `复制`, success: (res) => { if (res.confirm && that.data.fenceId) { wx.showToast({ title: '设置中', icon: 'loading' }) let reqBody = { imei: this.data.imei, fenceId: this.data.fenceId, wifiName: currentWlanInfo.SSID, wifiInfo: currentWlanInfo.BSSID }; // 请求url分为:基础url + 接口Url const baseUrl = getBaseUrl(this.data.env); const requestUrl = baseUrl + fenApi.bindFenceWifi; request.post(requestUrl, { ...reqBody, }).then(() => { wx.showToast({ title: '设置成功', icon: 'success' }); // 2023.9.2 新增需求 保存成功后关闭小程序 wx.exitMiniProgram({}) }).catch(() => { wx.hideToast(); wx.showModal({ title: '温馨提示', content: '出错了,请您点击刷新按钮重新刷新页面后再重新设置', showCancel: false }) }) } } }) }, // 获取当前连接的周边的wifi列表 getWifiList() { let that = this; // 先获取当前连接的wifi信息 that.getConnectedWifi(); wx.showLoading({ title: '获取中WLAN...' }); wx.getWifiList({ success(res) { wx.hideLoading(); wx.showToast({ title: '获取成功', icon: 'success' }); wx.onGetWifiList((result) => { // 筛选wifi名称为空的数据 let wifiList = result.wifiList.filter(item => { return item.SSID !== ''; }).filter(item => { // 筛选 2.4GHZ的wifi return item.frequency ? ( item.frequency / 1000 ) < 2.5 : item; }); console.log("可用的wifi列表", wifiList); // ,如果有已连接的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) { wx.hideLoading(); wx.showModal({ title: '温馨提示', content: '当前用户未打开WIFI和GPS', showCancel: false, }) }, }); } })