index.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. //index.js
  2. //获取应用实例
  3. const app = getApp()
  4. Page({
  5. data: {
  6. motto: 'Hello World',
  7. type: '', //0上课,1寝室
  8. sucmsg: false,
  9. warmsg: false,
  10. errmsg: '',
  11. list: [],
  12. placeList: []
  13. },
  14. //事件处理函数
  15. bindViewTap: function () {
  16. wx.navigateTo({
  17. url: '../logs/logs'
  18. })
  19. },
  20. onLoad: function (option) {
  21. this.stopDiscovery();
  22. this.startDiscover();
  23. this.setData({
  24. type: option.type
  25. })
  26. this.getPlaceList();
  27. },
  28. addsuc: function () {
  29. this.setData({
  30. sucmsg: true,
  31. warmsg: false,
  32. });
  33. },
  34. addmsg: function (errmsg) {
  35. let msg = '';
  36. if (errmsg.errCode == '11001' || errmsg.errCode === 11001) msg = '请打开蓝牙功能,重新进入';
  37. else if (errmsg.errCode == '11003' || errmsg.errCode === 11003) msg = '已经开始搜索';
  38. else if (errmsg.errCode == '11004' || errmsg.errCode === 11004) msg = '还未开始搜索';
  39. else msg = errmsg.errMsg;
  40. this.setData({
  41. warmsg: true,
  42. sucmsg: false,
  43. errmsg: msg,
  44. });
  45. },
  46. ibeaconBtn: function () {
  47. var that = this;
  48. wx.showLoading({
  49. title: '正在签到',
  50. mask: true,
  51. })
  52. let newdata = {
  53. openid: app.globalData.openid,
  54. type: that.data.type,
  55. ibeacon: that.data.list.map(i => i.minor)
  56. };
  57. wx.request({
  58. url: app.globalData.contentpath + 'api/train/attendance/attendancecreate',
  59. header: {//请求头
  60. "Content-Type": "application/json"
  61. },
  62. data: newdata,
  63. method: 'POST',
  64. dataType: 'json',
  65. success: function (res) {
  66. if (res.data.errcode == 0) {
  67. that.addsuc();
  68. } else {
  69. console.log('签到失败' + res.data.errmsg);
  70. that.addmsg({ errMsg: res.data.errmsg });
  71. }
  72. },
  73. fail: function (err) {
  74. console.log('签到失败' + err);
  75. that.addmsg(err);
  76. },//请求失败
  77. complete: function () {
  78. wx.hideLoading()
  79. }//请求完成后执行的函数
  80. })
  81. },
  82. startDiscover() {
  83. // setTimeout(() => this.stopDiscovery(), 5000);
  84. wx.startBeaconDiscovery({
  85. uuids: ['FDA50693-A4E2-4FB1-AFCF-C6EB07647825'],
  86. success: (res) => {
  87. wx.onBeaconUpdate(res => {
  88. wx.getBeacons({
  89. success: (result) => {
  90. const { beacons } = result
  91. var beaconList = [];
  92. var limit = 30;
  93. for (var i = 0; i < beacons.length; i++) {
  94. var beacon = beacons[i];
  95. if (beacon.accuracy < limit) {
  96. const r = this.data.placeList.find(f => f.ibeacon === `${beacon.minor}`)
  97. if (r) {
  98. if (this.data.type === '0') {
  99. const { name } = r
  100. beaconList.push(name);
  101. } else {
  102. const { code, floor } = r
  103. let name;
  104. let remark = 'C区';
  105. if (code.includes('后楼')) {
  106. if (code.includes('-')) remark = "B区"
  107. if (floor) name = `后楼${remark}${floor.includes('楼') ? floor : `${floor}楼`}`
  108. else name = `后楼${remark}${beacon.minor}`
  109. } else if (code.includes('前楼')) {
  110. if (floor) name = `前楼${floor.includes('楼') ? floor : `${floor}楼`}`
  111. else name = `前楼${beacon.minor}`
  112. } else name = code
  113. beaconList.push(name);
  114. }
  115. }
  116. }
  117. }
  118. this.setData({
  119. list: beaconList
  120. })
  121. console.log(result)
  122. },
  123. })
  124. })
  125. },
  126. fail: (error) => {
  127. console.log(error)
  128. this.addmsg(error);
  129. }
  130. })
  131. },
  132. stopDiscovery() {
  133. wx.stopBeaconDiscovery({
  134. success: (res) => {
  135. console.log('停止扫描');
  136. },
  137. })
  138. },
  139. getPlaceList() {
  140. let model;
  141. if (this.data.type === '1' || this.data.type === 1) {
  142. model = 'bedroom'
  143. } else {
  144. model = 'location'
  145. }
  146. let uri = `api/train/${model}`
  147. wx.request({
  148. url: `${app.globalData.contentpath}${uri}`,
  149. header: {//请求头
  150. "Content-Type": "application/json"
  151. },
  152. method: 'GET',
  153. dataType: 'json',
  154. success: (res) => {
  155. if (res.data.errcode == 0) {
  156. console.log(res);
  157. const { data } = res.data;
  158. if (data) {
  159. const list = data.filter(f => f.ibeacon)
  160. this.setData({
  161. placeList: list
  162. })
  163. console.log(this.data.placeList);
  164. }
  165. } else {
  166. }
  167. },
  168. fail: function (err) {
  169. that.addmsg(err);
  170. },//请求失败
  171. })
  172. }
  173. })