charging.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. // pages/charging/charging.js
  2. var chargingPng;
  3. var chargingStatus;
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. orderid: null,
  10. userId: null,
  11. chargPileId: null,
  12. chargingRate: 0,
  13. chargingTime: '',
  14. chargingOrder: null,
  15. chargPile: null
  16. },
  17. drawCircle: function(step) {
  18. var context = wx.createCanvasContext('canvasProgress');
  19. context.setLineWidth(4); // 设置圆环的宽度
  20. // 设置渐变
  21. //var gradient = context.createLinearGradient(200, 100, 100, 200);
  22. //gradient.addColorStop("0", "#2661DD");
  23. //gradient.addColorStop("0.5", "#40ED94");
  24. //gradient.addColorStop("1.0", "#5956CC");
  25. context.setLineWidth(this.getSize(20));
  26. context.setStrokeStyle('#24e383');
  27. context.setLineCap('round')
  28. context.beginPath();
  29. // 参数step 为绘制的圆环周长,从0到2为一周 。 -Math.PI / 2 将起始角设在12点钟位置 ,结束角 通过改变 step 的值确定
  30. context.arc(this.getSize(100) - 1, this.getSize(100) - 1, this.getSize(90) - 1, -Math.PI / 2, step / (100 / 2) * Math.PI - Math.PI / 2, false);
  31. context.stroke();
  32. context.draw()
  33. },
  34. getSize: function(v) {
  35. //console.log(wx.getSystemInfoSync().windowWidth);
  36. //console.log(v * (wx.getSystemInfoSync().windowWidth / 375));
  37. return v * (wx.getSystemInfoSync().windowWidth / 375)
  38. },
  39. stopCharging(e) {
  40. wx.showLoading({
  41. title: '结束充电中...',
  42. mask: true
  43. });
  44. clearInterval(chargingStatus);
  45. let {
  46. orderid,
  47. userId,
  48. chargPileId
  49. } = this.data;
  50. wx.request({
  51. url: getApp().globalData.postHeadAgreement + '://cdgl.xinyhy.cn/restapi/pileLog/chargstop',
  52. data: {
  53. chargPileId,
  54. userId,
  55. orderid
  56. },
  57. method: 'POST',
  58. success(res) {
  59. wx.hideLoading();
  60. let {
  61. data
  62. } = res;
  63. if (data && data.code == 200) {
  64. //wx.showModal({
  65. //showCancel: false,
  66. //content: '结束充电成功'
  67. //});
  68. let url = `/pages/order/order?orderid=${orderid}&userId=${userId}&chargPileId=${chargPileId}`;
  69. wx.redirectTo({
  70. url
  71. });
  72. } else {
  73. wx.showModal({
  74. showCancel: false,
  75. content: '结束充电失败'
  76. });
  77. }
  78. },
  79. fail(err){
  80. wx.hideLoading();
  81. wx.showModal({
  82. showCancel: false,
  83. content: '结束充电失败'
  84. });
  85. }
  86. });
  87. },
  88. showChargingPng() {
  89. var i = 0;
  90. let that = this;
  91. if (that.data.chargingOrder && that.data.chargingOrder.soc && that.data.chargingOrder.soc != 0) {
  92. chargingPng = setInterval(function() {
  93. if (i <= that.data.chargingOrder.soc) {
  94. that.drawCircle(i);
  95. that.setData({
  96. chargingRate: i
  97. });
  98. i++;
  99. } else {
  100. //console.log(chargingPng);
  101. clearInterval(chargingPng);
  102. }
  103. }, 20);
  104. }
  105. },
  106. /**
  107. * 生命周期函数--监听页面加载
  108. */
  109. onLoad: function(options) {
  110. //console.log(options);
  111. let {
  112. orderid,
  113. userId,
  114. chargPileId
  115. } = options;
  116. this.setData({
  117. orderid,
  118. userId,
  119. chargPileId
  120. });
  121. if (!orderid||orderid=="null"){
  122. orderid="";
  123. }
  124. let that = this;
  125. wx.request({
  126. url: getApp().globalData.postHeadAgreement + '://cdgl.xinyhy.cn/restapi/pileLog/wechatchargstatus',
  127. data: {
  128. chargPileId,
  129. userId,
  130. orderid
  131. },
  132. method: 'POST',
  133. success(res) {
  134. let {
  135. data
  136. } = res;
  137. if (data && data.code == 200) {
  138. let {
  139. result: chargingOrder
  140. } = data;
  141. let {
  142. chargPileId,
  143. soc: chargingRate
  144. } = chargingOrder;
  145. let orderid_r = chargingOrder.orderid;
  146. console.log(chargingOrder);
  147. wx.request({
  148. url: getApp().globalData.postHeadAgreement + '://cdgl.xinyhy.cn/restapi/wechat/chargPile',
  149. data: chargPileId,
  150. method: 'POST',
  151. success(res1) {
  152. console.log(res1.data);
  153. if (res1.data) {
  154. let {
  155. data: chargPile
  156. } = res1;
  157. that.setData({
  158. chargPile
  159. });
  160. }
  161. }
  162. });
  163. console.log(chargingOrder.chargPileStatus);
  164. if (chargingOrder.chargPileStatus == 1) { //启动中,继续轮训
  165. that.setData({
  166. chargingOrder,
  167. chargPileId,
  168. orderid: orderid_r
  169. });
  170. } else if (chargingOrder.chargPileStatus == 2) { //充电中,继续轮训
  171. console.log(chargingOrder.chargPileStatus == 2);
  172. if (chargingOrder.ljcdsj || chargingOrder.ljcdsj == 0) {
  173. var chargingTimeHour = Math.floor(chargingOrder.ljcdsj / 60);
  174. if (chargingTimeHour <= 9) {
  175. chargingTimeHour = '0' + chargingTimeHour;
  176. }
  177. var chargingTimeMinute = chargingOrder.ljcdsj % 60;
  178. if (chargingTimeMinute <= 9) {
  179. chargingTimeMinute = '0' + chargingTimeMinute
  180. }
  181. var chargingTime = chargingTimeHour + ":" + chargingTimeMinute + ":00";
  182. }
  183. that.setData({
  184. chargingOrder,
  185. chargPileId,
  186. chargingTime,
  187. orderid: orderid_r
  188. });
  189. that.showChargingPng();
  190. } else if (chargingOrder.chargPileStatus == 3) { //充电完成,适用于主动拔枪
  191. clearInterval(chargingStatus);
  192. let {
  193. orderid,
  194. userId,
  195. chargPileId
  196. } = that.data;
  197. let url = `/pages/order/order?orderid=${orderid_r}&userId=${userId}&chargPileId=${chargPileId}`;
  198. wx.redirectTo({
  199. url
  200. });
  201. } else if (chargingOrder.chargPileStatus == 4) { //启动异常,回退界面
  202. clearInterval(chargingStatus);
  203. wx.showModal({
  204. showCancel: false,
  205. content: '开启充电失败'
  206. });
  207. that.delOrder(orderid_r);
  208. console.log(orderid_r);
  209. }
  210. } else {
  211. console.log(res);
  212. }
  213. },
  214. fail(err) {
  215. // var chargingOrder = {chargStatus:1};
  216. // that.setData({
  217. // chargingOrder
  218. // });
  219. }
  220. });
  221. },
  222. delOrder(orderId){
  223. if (orderId){
  224. wx.request({
  225. url: getApp().globalData.postHeadAgreement + '://cdgl.xinyhy.cn/restapi/pileLog/exceptOrder',
  226. data: {"orderid":orderId},
  227. method: 'POST',
  228. success(res1) {
  229. console.log(res1.data);
  230. //if (res1.data ) {
  231. //}
  232. wx.navigateBack();
  233. }
  234. });
  235. }
  236. },
  237. /**
  238. * 生命周期函数--监听页面初次渲染完成
  239. */
  240. onReady: function() {},
  241. /**
  242. * 生命周期函数--监听页面显示
  243. */
  244. onShow: function(e) {
  245. clearInterval(chargingStatus);
  246. this.showChargingPng();
  247. let {
  248. orderid,
  249. userId,
  250. chargPileId
  251. } = this.data;
  252. if (!orderid || orderid == "null") {
  253. orderid = "";
  254. }
  255. let that = this;
  256. chargingStatus = setInterval(function() {
  257. wx.request({
  258. url: getApp().globalData.postHeadAgreement + '://cdgl.xinyhy.cn/restapi/pileLog/wechatchargstatus',
  259. data: {
  260. chargPileId,
  261. userId,
  262. orderid
  263. },
  264. method: 'POST',
  265. success(res) {
  266. let {
  267. data
  268. } = res;
  269. if (data && data.code == 200) {
  270. let {
  271. result: chargingOrder
  272. } = data;
  273. let {
  274. chargPileId,
  275. soc: chargingRate
  276. } = chargingOrder;
  277. let orderid_r = chargingOrder.orderid;
  278. if (chargingOrder.chargPileStatus == 1) { //启动中,继续轮训
  279. that.setData({
  280. chargingOrder,
  281. chargPileId,
  282. orderid: orderid_r
  283. });
  284. } else if (chargingOrder.chargPileStatus == 2) { //充电中,继续轮训
  285. if (chargingOrder.ljcdsj || chargingOrder.ljcdsj == 0) {
  286. var chargingTimeHour = Math.floor(chargingOrder.ljcdsj / 60);
  287. if (chargingTimeHour <= 9) {
  288. chargingTimeHour = '0' + chargingTimeHour;
  289. }
  290. var chargingTimeMinute = chargingOrder.ljcdsj % 60;
  291. if (chargingTimeMinute <= 9) {
  292. chargingTimeMinute = '0' + chargingTimeMinute
  293. }
  294. var chargingTime = chargingTimeHour + ":" + chargingTimeMinute + ":00";
  295. }
  296. that.setData({
  297. chargingOrder,
  298. chargPileId,
  299. chargingTime,
  300. chargingRate,
  301. orderid: orderid_r
  302. });
  303. that.drawCircle(chargingRate);
  304. } else if (chargingOrder.chargPileStatus == 3) { //充电完成,适用于主动拔枪
  305. clearInterval(chargingStatus);
  306. let {
  307. orderid,
  308. userId,
  309. chargPileId
  310. } = that.data;
  311. let url = `/pages/order/order?orderid=${orderid_r}&userId=${userId}&chargPileId=${chargPileId}`;
  312. wx.redirectTo({
  313. url
  314. });
  315. } else if (chargingOrder.chargPileStatus == 4) { //启动异常,回退界面
  316. clearInterval(chargingStatus);
  317. wx.showModal({
  318. showCancel: false,
  319. content: '开启充电失败'
  320. });
  321. console.log(orderid_r);
  322. that.delOrder(orderid_r);
  323. }
  324. } else {
  325. console.log(res);
  326. }
  327. }
  328. });
  329. }, 20000);
  330. },
  331. /**
  332. * 生命周期函数--监听页面隐藏
  333. */
  334. onHide: function() {
  335. clearInterval(chargingStatus);
  336. },
  337. /**
  338. * 生命周期函数--监听页面卸载
  339. */
  340. onUnload: function() {
  341. clearInterval(chargingStatus);
  342. },
  343. /**
  344. * 页面相关事件处理函数--监听用户下拉动作
  345. */
  346. onPullDownRefresh: function() {
  347. },
  348. /**
  349. * 页面上拉触底事件的处理函数
  350. */
  351. onReachBottom: function() {
  352. },
  353. /**
  354. * 用户点击右上角分享
  355. */
  356. onShareAppMessage: function() {
  357. }
  358. })