随手精灵小程序,单独为了获取WIFI信息加强围栏告警功能能力
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
před 2 roky
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. import request from '../../utils/request';
  2. import { fenApi } from '../../api/core';
  3. import { getBaseUrl } from '../../utils/utilsServes';
  4. // pages/home/home.js
  5. Page({
  6. /**
  7. * 页面的初始数据
  8. */
  9. data: {
  10. wlanList: [
  11. /* {SSID: '测试', BSSID: 'dc:fe:18:85:a5:7c', frequency: 5259} */
  12. ], //当前wlan列表
  13. isConnectWlan: null, //是否已经连接上WLAN
  14. connectWlanBssid: '', //当前连接WLAN的BSSID
  15. imei: '', //设备imei
  16. fenceId: '', //围栏id
  17. appType: '', //应用类型
  18. env: '', //运行环境
  19. },
  20. /**
  21. * 生命周期函数--监听页面加载
  22. */
  23. onLoad: function (options) {
  24. this.onStartWifi();
  25. this.checkOptions(options);
  26. this.getAuth();
  27. },
  28. onHide() {
  29. // 点击小程序右上角的关闭按钮时清空authToken
  30. wx.removeStorage({
  31. key: 'authToken',
  32. })
  33. },
  34. // 获取token
  35. getAuth() {
  36. // 获取token时有token清空token,防止获取token接口的时候带上token
  37. if(wx.getStorageSync('authToken')) {
  38. wx.removeStorage({
  39. key: 'authToken'
  40. })
  41. }
  42. const manufactorId = "2cae99d6-0475-42fe-9fa7-ca27e03077de";
  43. const baseUrl = getBaseUrl(this.data.env);
  44. const requestUrl = baseUrl + fenApi.getAuth;
  45. request.post(requestUrl, {
  46. manufactorId: manufactorId
  47. }).then(res => {
  48. if( res.code === 0 ) {
  49. // 先清除原来token,再把新token存在来
  50. if(wx.getStorageSync('authToken')) {
  51. wx.removeStorage('authToken');
  52. }
  53. wx.setStorage({
  54. key: "authToken",
  55. data: res.data,
  56. })
  57. };
  58. }).catch(error => {
  59. console.log("error", error);
  60. })
  61. },
  62. // 检查并获取从微信公众号传过来的参数
  63. checkOptions(options) {
  64. // todo 获取从微信公众号跳转的参数
  65. if(JSON.stringify(options) === '{}') {
  66. console.log("当前页面无携带参数");
  67. } else {
  68. console.log("存在参数", options);
  69. this.setData({
  70. imei: options.imei,
  71. fenceId: options.fenceId,
  72. appType: options.appType,
  73. env: options.env
  74. });
  75. };
  76. },
  77. /**
  78. * 生命周期函数--监听页面初次渲染完成
  79. */
  80. onReady: function () {
  81. },
  82. /**
  83. * 生命周期函数--监听页面显示
  84. */
  85. onShow: function () {
  86. },
  87. /**
  88. * 生命周期函数--监听页面卸载
  89. */
  90. onUnload: function () {
  91. },
  92. /**
  93. * 页面相关事件处理函数--监听用户下拉动作
  94. */
  95. onPullDownRefresh: function () {
  96. },
  97. /**
  98. * 页面上拉触底事件的处理函数
  99. */
  100. onReachBottom: function () {
  101. },
  102. /**
  103. * 用户点击右上角分享
  104. */
  105. onShareAppMessage: function () {
  106. },
  107. navigateTo() {
  108. wx.navigateTo({
  109. url: '/pages/lifecyle/lifecyle'
  110. })
  111. },
  112. switchTab() {
  113. wx.switchTab({
  114. url: "/pages/list/list",
  115. })
  116. },
  117. // 加载wifi模板
  118. onStartWifi() {
  119. let that = this;
  120. wx.startWifi({
  121. success() {
  122. that.getWifiList();
  123. },
  124. fail(res) {
  125. console.log("失败", res.errMsg);
  126. wx.showModal({
  127. title: '温馨提示',
  128. content: `当前用户未打开WIFI和GPS`,
  129. showCancel: false,
  130. })
  131. }
  132. });
  133. },
  134. // 获取当前链接的wifi信息
  135. getConnectedWifi: function () {
  136. let that = this;
  137. wx.getConnectedWifi({
  138. success(res) {
  139. if(res && (res.wifi.frequency / 1000) < 2.5) {
  140. // 如果已经连接上WLAN 并且是2.4G频段
  141. that.setData({
  142. isConnectWlan: true,
  143. connectWlanBssid: res.wifi.BSSID,
  144. })
  145. }
  146. },
  147. fail(res) {
  148. console.log(res.errMsg);
  149. that.setData({
  150. isConnectWlan: false
  151. })
  152. }
  153. })
  154. },
  155. // 刷新
  156. onRefresh() {
  157. this.getWifiList();
  158. this.getAuth();
  159. },
  160. // 搜索不到WLAN
  161. onHelp() {
  162. wx.showModal({
  163. title: '温馨提示',
  164. content: `请您前往手机-设置-WLAN,打开WLAN开关并且打开手机的GPS`,
  165. showCancel: false,
  166. })
  167. },
  168. // 保存WLAN信息
  169. onSave(value) {
  170. const currentWlanInfo = value.currentTarget.dataset.name;
  171. let that = this;
  172. wx.showModal({
  173. title: '温馨提示',
  174. content: `当前选中WLAN是:
  175. ${currentWlanInfo.SSID}
  176. `,
  177. cancelText: '关闭',
  178. confirmText: that.data.fenceId ? `选择` : `复制`,
  179. success: (res) => {
  180. if (res.confirm && that.data.fenceId) {
  181. wx.showToast({
  182. title: '设置中',
  183. icon: 'loading'
  184. })
  185. let reqBody = {
  186. imei: this.data.imei,
  187. fenceId: this.data.fenceId,
  188. wifiName: currentWlanInfo.SSID,
  189. wifiInfo: currentWlanInfo.BSSID
  190. };
  191. // 请求url分为:基础url + 接口Url
  192. const baseUrl = getBaseUrl(this.data.env);
  193. const requestUrl = baseUrl + fenApi.bindFenceWifi;
  194. request.post(requestUrl, {
  195. ...reqBody,
  196. }).then(() => {
  197. wx.showToast({
  198. title: '设置成功',
  199. icon: 'success'
  200. })
  201. }).catch(() => {
  202. wx.hideToast();
  203. wx.showModal({
  204. title: '温馨提示',
  205. content: '出错了,请您点击刷新按钮重新刷新页面后再重新设置',
  206. showCancel: false
  207. })
  208. })
  209. }
  210. }
  211. })
  212. },
  213. // 获取当前连接的周边的wifi列表
  214. getWifiList() {
  215. let that = this;
  216. // 先获取当前连接的wifi信息
  217. that.getConnectedWifi();
  218. wx.showLoading({
  219. title: '获取中WLAN...'
  220. });
  221. wx.getWifiList({
  222. success(res) {
  223. wx.hideLoading();
  224. wx.showToast({
  225. title: '获取成功',
  226. icon: 'success'
  227. });
  228. wx.onGetWifiList((result) => {
  229. // 筛选wifi名称为空的数据
  230. let wifiList = result.wifiList.filter(item => {
  231. return item.SSID !== '';
  232. }).filter(item => {
  233. // 筛选 2.4GHZ的wifi
  234. return item.frequency ? ( item.frequency / 1000 ) < 2.5 : item;
  235. });
  236. console.log("可用的wifi列表", wifiList);
  237. // ,如果有已连接的wifi则将已连接的wifi移动到第一位,否则不做任何操作
  238. if(that.data.connectWlanBssid !== '') {
  239. //let newWifiList = that.data.wlanList;
  240. // 找到与当前已连接wifi相同bssid数据的下标
  241. const index = wifiList.findIndex(v => v.BSSID === that.data.connectWlanBssid);
  242. //根据该对象在数组的下标从数组中移出
  243. const moveObj = wifiList.splice(index, 1);
  244. //把当前数据插入到数据首位
  245. wifiList.splice(0, 0, ...moveObj);
  246. that.setData({
  247. wlanList: wifiList
  248. })
  249. } else {
  250. that.setData({
  251. wlanList: wifiList
  252. })
  253. }
  254. });
  255. },
  256. fail(res) {
  257. wx.hideLoading();
  258. wx.showModal({
  259. title: '温馨提示',
  260. content: '当前用户未打开WIFI和GPS',
  261. showCancel: false,
  262. })
  263. },
  264. });
  265. }
  266. })