App.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <script>
  2. export default {
  3. onLaunch: function() {
  4. let gps = [];
  5. wx.setKeepScreenOn({
  6. keepScreenOn: true
  7. });
  8. //TODO 每隔3分钟触发自定义事件,接受系统消息
  9. wx.startLocationUpdate({
  10. success(resp) {
  11. console.log('开启定位成功');
  12. },
  13. fail(resp) {
  14. console.log('开启定位失败');
  15. uni.$emit('updateLocation', null);
  16. }
  17. });
  18. wx.onLocationChange(function(resp) {
  19. let latitude = resp.latitude;
  20. let longitude = resp.longitude;
  21. let speed = resp.speed;
  22. let location = {
  23. latitude: latitude,
  24. longitude: longitude
  25. };
  26. let workStatus = uni.getStorageSync('workStatus');
  27. let baseUrl = 'http://10.114.41.214:8201/hxds-driver';
  28. if (workStatus == '开始接单') {
  29. // TODO 只在每分钟的前10秒上报定位信息,减小服务器压力
  30. // let current = new Date();
  31. // if (current.getSeconds() > 10) {
  32. // return;
  33. // }
  34. let settings = uni.getStorageSync('settings');
  35. settings = {
  36. orderDistance: 0,
  37. rangeDistance: 5,
  38. orientation: ''
  39. };
  40. let orderDistance = settings.orderDistance;
  41. let rangeDistance = settings.rangeDistance;
  42. let orientation = settings.orientation;
  43. uni.request({
  44. url: `${baseUrl}/driver/location/updateLocationCache`,
  45. method: 'POST',
  46. header: {
  47. token: uni.getStorageSync('token')
  48. },
  49. data: {
  50. latitude: latitude,
  51. longitude: longitude,
  52. orderDistance: orderDistance,
  53. rangeDistance: rangeDistance,
  54. orientateLongitude: orientation != '' ? orientation.longitude : null,
  55. orientateLatitude: orientation != '' ? orientation.latitude : null
  56. },
  57. success: function(resp) {
  58. if (resp.statusCode == 401) {
  59. uni.redirectTo({
  60. url: 'pages/login/login'
  61. });
  62. } else if (resp.statusCode == 200 && resp.data.code == 200) {
  63. let data = resp.data;
  64. if (data.hasOwnProperty('token')) {
  65. let token = data.token;
  66. uni.setStorageSync('token', token);
  67. }
  68. console.log('定位更新成功');
  69. } else {
  70. console.error('更新GPS定位信息失败', resp.data);
  71. }
  72. },
  73. fail: function(error) {
  74. console.error('更新GPS定位信息失败', error);
  75. }
  76. });
  77. }
  78. else if(workStatus == '接客户'){
  79. let executeOrder = uni.getStorageSync('executeOrder');
  80. let orderId=executeOrder.id
  81. let data={
  82. orderId:orderId,
  83. latitude: latitude,
  84. longitude: longitude
  85. }
  86. uni.request({
  87. url: `${baseUrl}/driver/location/updateOrderLocationCache`,
  88. method:"POST",
  89. header:{
  90. token:uni.getStorageSync("token")
  91. },
  92. data:data,
  93. success:function(resp){
  94. if (resp.statusCode == 401) {
  95. uni.redirectTo({
  96. url: 'pages/login/login'
  97. });
  98. } else if (resp.statusCode == 200 && resp.data.code == 200) {
  99. let data = resp.data;
  100. if (data.hasOwnProperty('token')) {
  101. let token = data.token;
  102. uni.setStorageSync('token', token);
  103. }
  104. console.log('订单定位更新成功');
  105. } else {
  106. console.error('订单定位更新失败', resp.data);
  107. }
  108. },
  109. fail:function(error){
  110. console.error('订单定位更新失败', error);
  111. }
  112. })
  113. }
  114. else if (workStatus == '开始代驾') {
  115. //每凑够20个定位就上传一次,减少服务器的压力
  116. let executeOrder=uni.getStorageSync("executeOrder")
  117. if(executeOrder!=null){
  118. gps.push({
  119. orderId: executeOrder.id,
  120. customerId: executeOrder.customerId,
  121. latitude: latitude,
  122. longitude: longitude,
  123. speed: speed
  124. })
  125. if(gps.length==5){
  126. uni.request({
  127. url:`${baseUrl}/order/gps/insertOrderGps`,
  128. method: 'POST',
  129. header: {
  130. token: uni.getStorageSync('token')
  131. },
  132. data: {
  133. list: gps
  134. },
  135. success: function(resp) {
  136. if (resp.statusCode == 401) {
  137. uni.redirectTo({
  138. url: '/pages/login/login'
  139. });
  140. }
  141. else if (resp.statusCode == 200 && resp.data.code == 200) {
  142. let data = resp.data;
  143. console.log("上传GPS成功");
  144. }
  145. else {
  146. console.error('保存GPS定位失败', resp.data);
  147. }
  148. gps.length = 0;
  149. },
  150. fail: function(error) {
  151. console.error('保存GPS定位失败', error);
  152. }
  153. })
  154. }
  155. }
  156. }
  157. uni.$emit('updateLocation', location);
  158. });
  159. },
  160. onShow: function() {
  161. console.log('App Show');
  162. },
  163. onHide: function() {
  164. console.log('App Hide');
  165. }
  166. };
  167. </script>
  168. <style lang="scss">
  169. @import 'uview-ui/index.scss';
  170. </style>