index.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896
  1. //index.js
  2. //获取应用实例
  3. let app = getApp();
  4. let wechat = require("../../utils/wechat");
  5. let amap = require("../../utils/amap");
  6. let Util = require("../../utils/util");
  7. let log = require('../../utils/log.js');
  8. let mapregionchange_makertap = false;
  9. Page({
  10. data: {
  11. scanFlag:false,
  12. markers: [],
  13. latitude: 39.9088120620532,
  14. longitude: 116.39747668717192,
  15. user_lat: 39.9088120620532,
  16. user_lon: 116.39747668717192,
  17. textData: null,
  18. city: null,
  19. markerId: null,
  20. keywords: "搜索充电桩",
  21. userInfo: {},
  22. isLogin: false,
  23. myChargeStationsIds: '',
  24. distanceinfo: [
  25. // {
  26. // value: 1000,
  27. // text: '1km'
  28. // }, {
  29. // value: 2000,
  30. // text: '2km'
  31. // }, {
  32. // value: 5000,
  33. // text: '5km'
  34. // },
  35. {
  36. value: 10000,
  37. text: '10km'
  38. },
  39. // {
  40. // value: 20000,
  41. // text: '20km'
  42. // },
  43. {
  44. value: 50000,
  45. text: '50km'
  46. }, {
  47. value: 100000,
  48. text: '100km'
  49. }],
  50. distanceinfoindex: 0,
  51. polygon: [{
  52. points: [{
  53. latitude: 31,
  54. longitude: 131
  55. }, {
  56. latitude: 31,
  57. longitude: 131.1
  58. }, {
  59. latitude: 31.1,
  60. longitude: 131.1
  61. }, , {
  62. latitude: 31.1,
  63. longitude: 131
  64. }]
  65. }],
  66. showModal: false,
  67. notice: null
  68. },
  69. wxScan(q) {
  70. //console.log(decodeURIComponent(e.q));
  71. let charePileId = decodeURIComponent(q).replace("https://cdgl.pjnes.com/", "");
  72. //console.log(charePileId);
  73. log.info('[首页]', '[微信扫一扫]', { 'q': q });
  74. if(!charePileId){
  75. charePileId = "0"
  76. }
  77. if (charePileId) {
  78. let userInfo = wx.getStorageSync('userInfo');
  79. let isLogin = wx.getStorageSync('isLogin');
  80. if (isLogin && userInfo.flag) {
  81. return;
  82. }
  83. if (!isLogin) {
  84. log.info('[首页]', '[未登陆跳转登录界面]');
  85. let url = `/pages/login/login`;
  86. wx.navigateTo({
  87. url
  88. });
  89. return;
  90. } else {
  91. log.info('[首页]', '[获取用户是否有未完成订单]', '[请求]', { userId: userInfo.userId });
  92. wx.request({
  93. url: getApp().globalData.postHeadAgreement + '/restapi/pileLog/wechatchargstatus',
  94. data: {
  95. userId: userInfo.userId
  96. },
  97. method: 'POST',
  98. success(res) {
  99. let {
  100. data
  101. } = res;
  102. log.info('[首页]', '[获取用户是否有未完成订单]', '[响应]', data);
  103. if (data && data.code == 200) {
  104. log.info('[首页]', '[有未完成订单跳充电界面]');
  105. //onShow会跳转
  106. } else {
  107. //console.log('无订单');
  108. log.info('[首页]', '[用户无未完成订单]');
  109. log.info('[首页]', '[获取微信扫一扫充电桩]', '[请求]', charePileId);
  110. wx.request({
  111. url: getApp().globalData.postHeadAgreement + '/restapi/wechat/chargPile',
  112. // data: charePileId,
  113. data:{
  114. chargPileId:charePileId,
  115. userId: userInfo.userId
  116. },
  117. method: 'POST',
  118. success(res) {
  119. //console.log(res.data);
  120. log.info('[首页]', '[获取微信扫一扫充电桩]', '[响应]', res.data);
  121. if (!res.data || res.data.code == 500) {
  122. //没有该充电桩信息
  123. wx.showModal({
  124. showCancel: false,
  125. content: res && res.data && res.data.msg ? res.data.msg :'无效的终端编号'
  126. });
  127. } else {
  128. res.data = res.data.result
  129. //充电状态0:离线、1:故障、2:空闲中、3:充电中、4:欠压故障、5:过压故障、6:过电流故障、8:预约、9:在线升级、10:操作中、11:已插枪等
  130. if (!res.data.chargstatus || res.data.chargstatus == 0 || res.data.chargstatus == 1 || res.data.chargstatus == 4 || res.data.chargstatus == 5 || res.data.chargstatus == 6 || res.data.chargstatus == 9) {
  131. //充电桩故障
  132. wx.showModal({
  133. showCancel: false,
  134. content: '终端故障,维修中'
  135. });
  136. } else if (res.data.chargstatus == 3 || res.data.chargstatus == 8 || res.data.chargstatus == 10) {
  137. wx.showModal({
  138. showCancel: false,
  139. content: '正在充电中'
  140. });
  141. } else if (res.data.chargstatus == 2 || res.data.chargstatus == 11) {
  142. wx.setStorage({
  143. key: "scan_chargpile",
  144. data: res.data
  145. });
  146. log.info('[首页]', '[微信扫一扫充电桩空闲跳转去充电界面]');
  147. let url = `/pages/scan_result/scan_result`;
  148. wx.navigateTo({
  149. url
  150. });
  151. }
  152. }
  153. },
  154. fail(e) {
  155. getApp().showNetworkError();
  156. }
  157. });
  158. }
  159. },
  160. fail(e) {
  161. getApp().showNetworkError();
  162. }
  163. });
  164. }
  165. }
  166. },
  167. onLoad(e) {
  168. this.scanFlag = false;
  169. wx.hideLoading();
  170. if (e.q) {
  171. //console.log(decodeURIComponent(e.q));
  172. //let charePileId = decodeURIComponent(e.q).replace("https://cdgl.pjnes.com/", "");
  173. //console.log(charePileId);
  174. //if (charePileId){
  175. //}
  176. this.wxScan(e.q);
  177. }
  178. log.info('[首页]', '[加载完成]');
  179. amap.getRegeo(function () {
  180. var fail = function (obj) {
  181. wx.showModal({
  182. title: '请求失败',
  183. content: obj.errMsg,
  184. });
  185. }
  186. })
  187. .then(d => {
  188. //console.log(d);
  189. let {
  190. latitude,
  191. longitude,
  192. latitude: user_lat,
  193. longitude: user_lon
  194. } = d[0];
  195. //console.log(d[0].regeocodeData.addressComponent);
  196. var {
  197. city
  198. } = d[0].regeocodeData.addressComponent;
  199. if (d[0].regeocodeData.addressComponent.city.length == 0) {
  200. var {
  201. province: city
  202. } = d[0].regeocodeData.addressComponent;
  203. }
  204. let that = this;
  205. let userInfo = wx.getStorageSync('userInfo');
  206. let isLogin = wx.getStorageSync('isLogin');
  207. // userInfo.flag=true;
  208. this.setData({
  209. city,
  210. latitude,
  211. longitude,
  212. user_lat,
  213. user_lon,
  214. userInfo,
  215. isLogin
  216. });
  217. //开始请求充电站信息
  218. var chargStationType;
  219. if (!userInfo.flag) {
  220. //用户是普通用户
  221. chargStationType = '2';
  222. }
  223. wx.request({
  224. url: getApp().globalData.postHeadAgreement + '/restapi/wechat/chargStations',
  225. data: {
  226. lon: longitude,
  227. lat: latitude,
  228. distance: that.data.distanceinfo[that.data.distanceinfoindex].value,
  229. chargStationType
  230. },
  231. method: 'POST',
  232. success(res) {
  233. //userInfo.flag = true;
  234. if (isLogin && userInfo.flag) {
  235. wx.request({
  236. url: getApp().globalData.postHeadAgreement + '/restapi/wechat/userChargStations',
  237. data: {
  238. userId: userInfo.userId,
  239. lat: latitude,
  240. lon: longitude
  241. },
  242. method: 'POST',
  243. success(res1) {
  244. //console.log(res1);
  245. var myChargeStationsIds = '';
  246. res1.data.forEach((item, index) => {
  247. myChargeStationsIds += item.id + ",";
  248. });
  249. //console.log(myChargeStationsIds);
  250. let {
  251. data
  252. } = res;
  253. let markers = [];
  254. data.forEach((item, index) => {
  255. //item.callout = {
  256. // content: item.name, //文本 String 1.2.0
  257. // display: 'BYCLICK', //'BYCLICK': 点击显示; 'ALWAYS': 常显 String 1.2.0
  258. // textAlign: 'center' //文本对齐方式。有效值: left, right, center String 1.6.0
  259. // };
  260. var iconPath = "/images/marker.png";
  261. if (myChargeStationsIds.indexOf(item.id + ',') != -1) {
  262. iconPath = "/images/marker1.png";
  263. }
  264. if (item.breaknum && item.breaknum != 0) {
  265. iconPath = "/images/marker_b.png";
  266. }
  267. /**
  268. * 运营状态 初始,待运营,运营中,暂停营业,关闭,未运营
  269. * */
  270. //private Long operationState;
  271. var marker = {
  272. name: item.chargStationName,
  273. address: item.address,
  274. width: "46rpx",
  275. height: "67rpx",
  276. iconPath: iconPath,
  277. id: item.id,
  278. callout: {},
  279. latitude: item.lat,
  280. longitude: item.lon,
  281. //distance: item.distance / 1000,
  282. distance: Util.distance(that.data.user_lat, that.data.user_lon, item.lat, item.lon),
  283. chargPileNum: item.fastCharg + item.slowCharg,
  284. fastCharg: item.fastCharg,
  285. slowCharg: item.slowCharg,
  286. freenum: item.freenum,
  287. fastfreenum: item.fastfreenum,
  288. slowfreenum: item.slowfreenum,
  289. breaknum: item.breaknum,
  290. /** 电费 */
  291. chargprice: item.chargprice,
  292. /** 服务费 */
  293. serviceprice: item.serviceprice,
  294. /** 停车费 */
  295. stopprice: item.stopprice,
  296. operationState: item.operationState
  297. };
  298. markers[index] = marker;
  299. });
  300. that.setData({
  301. markers,
  302. myChargeStationsIds
  303. });
  304. },
  305. fail(e) {
  306. getApp().showNetworkError();
  307. }
  308. });
  309. } else {
  310. let {
  311. data
  312. } = res;
  313. let markers = [];
  314. data.forEach((item, index) => {
  315. //item.callout = {
  316. // content: item.name, //文本 String 1.2.0
  317. // display: 'BYCLICK', //'BYCLICK': 点击显示; 'ALWAYS': 常显 String 1.2.0
  318. // textAlign: 'center' //文本对齐方式。有效值: left, right, center String 1.6.0
  319. // };
  320. var iconPath = "/images/marker.png";
  321. //撤销普通用户显示异常站
  322. //if (item.breaknum && item.breaknum != 0) {
  323. // iconPath = "/images/marker_b.png";
  324. //}
  325. //撤销结束
  326. var marker = {
  327. name: item.chargStationName,
  328. address: item.address,
  329. width: "46rpx",
  330. height: "67rpx",
  331. iconPath: iconPath,
  332. id: item.id,
  333. callout: {},
  334. latitude: item.lat,
  335. longitude: item.lon,
  336. //distance: item.distance / 1000,
  337. distance: Util.distance(that.data.user_lat, that.data.user_lon, item.lat, item.lon),
  338. chargPileNum: item.fastCharg + item.slowCharg,
  339. fastCharg: item.fastCharg,
  340. slowCharg: item.slowCharg,
  341. freenum: item.freenum,
  342. fastfreenum: item.fastfreenum,
  343. slowfreenum: item.slowfreenum,
  344. breaknum: item.breaknum,
  345. /** 电费 */
  346. chargprice: item.chargprice,
  347. /** 服务费 */
  348. serviceprice: item.serviceprice,
  349. /** 停车费 */
  350. stopprice: item.stopprice,
  351. operationState: item.operationState
  352. };
  353. markers[index] = marker;
  354. });
  355. that.setData({
  356. markers
  357. });
  358. }
  359. },
  360. fail(e) {
  361. getApp().showNetworkError();
  362. }
  363. });
  364. })
  365. .catch(e => {
  366. console.log(e);
  367. });
  368. let that = this;
  369. let userInfo = wx.getStorageSync('userInfo');
  370. let isLogin = wx.getStorageSync('isLogin');
  371. //console.log(userInfo);
  372. if (isLogin) {
  373. wx.request({
  374. url: getApp().globalData.postHeadAgreement + '/restapi/wechat/lastNotice',
  375. data: { loginName: userInfo.loginName },
  376. method: 'POST',
  377. success(res) {
  378. //console.log(res);
  379. //res.data = { noticeTitle: '派捷充电例行维护通知', noticeContent:'nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好nihao你好'};
  380. if (res.data) {
  381. that.setData({
  382. showModal: true,
  383. notice: res.data
  384. });
  385. } else {
  386. that.setData({
  387. showModal: false,
  388. notice: null
  389. });
  390. }
  391. },
  392. fail(e) {
  393. //console.log(e);
  394. that.setData({
  395. showModal: false,
  396. notice: null
  397. });
  398. getApp().showNetworkError();
  399. }
  400. });
  401. }
  402. },
  403. //跳转个人中心
  404. bindUserAvatarUrl() {
  405. let url = `/pages/ucenter/index/index`;
  406. wx.navigateTo({
  407. url
  408. });
  409. },
  410. //搜索
  411. bindInput() {
  412. var {
  413. user_lat: latitude,
  414. user_lon: longitude,
  415. city
  416. } = this.data;
  417. //console.log(this.data.city);
  418. let url = `/pages/inputtip/inputtip?city=${city}&lonlat=${longitude},${latitude}`;
  419. wx.navigateTo({
  420. url
  421. });
  422. },
  423. //单击地图mark
  424. makertap(e) {
  425. mapregionchange_makertap = true;
  426. //console.log(e);
  427. let {
  428. markerId
  429. } = e.detail;
  430. // console.log({
  431. // e
  432. // });
  433. let {
  434. markers
  435. } = this.data;
  436. //撤销普通用户显示异常站
  437. let userInfo = wx.getStorageSync('userInfo');
  438. let isLogin = wx.getStorageSync('isLogin');
  439. let showBadMark = false;
  440. if (isLogin && userInfo.flag) {
  441. showBadMark = true;
  442. }
  443. //撤销结束
  444. markers.forEach((item, index) => {
  445. item.iconPath = "/images/marker.png";
  446. if (this.data.myChargeStationsIds.indexOf(item.id + ',') != -1) {
  447. item.iconPath = "/images/marker1.png";
  448. }
  449. //撤销普通用户显示异常站
  450. if (showBadMark) {
  451. //撤销结束
  452. if (item.breaknum && item.breaknum != 0) {
  453. item.iconPath = "/images/marker_b.png";
  454. }
  455. //撤销普通用户显示异常站
  456. }
  457. //撤销结束
  458. if (item.id == markerId) {
  459. item.iconPath = "/images/marker_checked.png";
  460. this.showMarkerInfo(item);
  461. }
  462. });
  463. this.setData({
  464. markers,
  465. markerId
  466. });
  467. },
  468. //将mark呈现在地图中心点,并弹出详细信息框
  469. showMarkerInfo(data) {
  470. let {
  471. latitude,
  472. longitude
  473. } = data;
  474. this.setData({
  475. textData: data,
  476. latitude: latitude,
  477. longitude: longitude
  478. })
  479. },
  480. //改变选中mark的颜色
  481. changeMarkerColor(markerId) {
  482. let {
  483. markers
  484. } = this.data;
  485. //撤销普通用户显示异常站
  486. let userInfo = wx.getStorageSync('userInfo');
  487. let isLogin = wx.getStorageSync('isLogin');
  488. let showBadMark = false;
  489. if (isLogin && userInfo.flag) {
  490. showBadMark = true;
  491. }
  492. //撤销结束
  493. markers.forEach((item, index) => {
  494. item.iconPath = "/images/marker.png";
  495. if (this.data.myChargeStationsIds.indexOf(item.id + ',') != -1) {
  496. item.iconPath = "/images/marker1.png";
  497. }
  498. //撤销普通用户显示异常站
  499. if (showBadMark) {
  500. //撤销结束
  501. if (item.breaknum && item.breaknum != 0) {
  502. item.iconPath = "/images/marker_b.png";
  503. }
  504. //撤销普通用户显示异常站
  505. }
  506. //撤销结束
  507. if (item.id == markerId) {
  508. item.iconPath = "/images/marker_checked.png";
  509. }
  510. })
  511. this.setData({
  512. markers,
  513. markerId
  514. });
  515. },
  516. //导航
  517. getRoute(e) {
  518. //console.log(e);
  519. // 起点
  520. let {
  521. user_lat: latitude,
  522. user_lon: longitude,
  523. markers,
  524. markerId,
  525. city,
  526. textData
  527. } = this.data;
  528. let {
  529. name,
  530. address
  531. } = textData;
  532. if (!markers.length) return;
  533. // 终点
  534. markers.forEach((item, index) => {
  535. if (markerId && markerId == item.id) {
  536. let {
  537. latitude: latitude2,
  538. longitude: longitude2
  539. } = item;
  540. let url = `/pages/routes/routes?longitude=${longitude}&latitude=${latitude}&longitude2=${longitude2}&latitude2=${latitude2}&city=${city}&name=${name}&desc=${address}`;
  541. //console.log(url);
  542. wx.navigateTo({
  543. url
  544. });
  545. }
  546. });
  547. },
  548. //回到当前位置
  549. click_location_control(e) {
  550. //console.log("回到用户当前定位点");
  551. // let {
  552. // controlId
  553. // } = e;
  554. let mpCtx = wx.createMapContext("map");
  555. mpCtx.moveToLocation();
  556. },
  557. //打开扫一扫
  558. click_scan_control(e) {
  559. if(this.scanFlag){
  560. return;
  561. }
  562. this.scanFlag = true;
  563. wx.showLoading({
  564. title: '努力加载中...',
  565. })
  566. console.log("打开扫一扫");
  567. log.info('[首页]', '[打开扫一扫]');
  568. let that = this;
  569. if (!this.data.isLogin) {
  570. log.info('[首页]', '[未登陆跳转登录界面]');
  571. let url = `/pages/login/login`;
  572. that.scanFlag = false;
  573. wx.hideLoading();
  574. wx.navigateTo({
  575. url
  576. });
  577. return;
  578. } else {
  579. log.info('[首页]', '[获取用户是否有未支付订单]', '[请求]', { userId: this.data.userInfo.userId });
  580. wx.request({
  581. url: getApp().globalData.postHeadAgreement + '/restapi/pileLog/wechatsettlement',
  582. data: {
  583. userId: this.data.userInfo.userId
  584. },
  585. method: 'POST',
  586. success(res) {
  587. let {
  588. data
  589. } = res;
  590. let {
  591. result: order
  592. } = data;
  593. log.info('[首页]', '[获取用户是否有未支付订单]', '[响应]', data);
  594. if (data && order && data.code == 200) {
  595. that.scanFlag = false;
  596. wx.hideLoading();
  597. log.info('[首页]', '[用户有未支付订单跳转订单支付界面]');
  598. wx.showModal({
  599. showCancel: false,
  600. content: '你有未支付的订单,请先支付',
  601. success: function (res) {
  602. //console.log(res);
  603. if (!res.cancel) {
  604. //点击确定
  605. let url = `/pages/order/order?orderid=${order.orderid}&userId=${order.userId}&chargPileId=${order.chargPileId}`;
  606. wx.navigateTo({
  607. url
  608. });
  609. }
  610. }
  611. });
  612. //console.log(that.data.result);
  613. } else {
  614. //console.log('无订单');
  615. log.info('[首页]', '[用户无未支付订单]');
  616. //console.log("打开扫一扫");
  617. wx.scanCode({
  618. success: function (d) {
  619. //console.log("完成扫一扫");
  620. //console.log(d);
  621. //兼容标准格式hlht://202001022222220101.330414214二维码
  622. let scanResult = d.result;
  623. if((!scanResult) || scanResult == ""){
  624. scanResult="*"
  625. }
  626. console.log(scanResult);
  627. if (scanResult.startsWith("hlht://") || scanResult.startsWith("HLHT://")){
  628. scanResult = scanResult.substring(7, scanResult.indexOf("."));
  629. }
  630. console.log(scanResult);
  631. log.info('[首页]', '[用户完成扫一扫]', scanResult);
  632. log.info('[首页]', '[获取扫一扫充电桩]', '[请求]', scanResult);
  633. wx.request({
  634. url: getApp().globalData.postHeadAgreement + '/restapi/wechat/chargPile',
  635. // data: scanResult,
  636. data: {
  637. chargPileId:scanResult,
  638. userId: that.data.userInfo.userId
  639. },
  640. method: 'POST',
  641. success(res) {
  642. console.log(scanResult);
  643. log.info('[首页]', '[获取扫一扫充电桩]', '[响应]', res.data);
  644. if (!res.data || res.data.code == 500) {
  645. that.scanFlag = false;
  646. wx.hideLoading();
  647. //没有该充电桩信息
  648. wx.showModal({
  649. showCancel: false,
  650. content: res && res.data && res.data.msg ? res.data.msg :'无效的终端编号'
  651. });
  652. } else {
  653. res.data = res.data.result
  654. //充电状态0:离线、1:故障、2:空闲中、3:充电中、4:欠压故障、5:过压故障、6:过电流故障、8:预约、9:在线升级、10:操作中、11:已插枪等
  655. if (!res.data.chargstatus || res.data.chargstatus == 0 || res.data.chargstatus == 1 || res.data.chargstatus == 4 || res.data.chargstatus == 5 || res.data.chargstatus == 6 || res.data.chargstatus == 9) {
  656. //充电桩故障
  657. wx.showModal({
  658. showCancel: false,
  659. content: '终端故障,维修中'
  660. });
  661. } else if (res.data.chargstatus == 3 || res.data.chargstatus == 8 || res.data.chargstatus == 10) {
  662. wx.showModal({
  663. showCancel: false,
  664. content: '正在充电中'
  665. });
  666. } else if (res.data.chargstatus == 2 || res.data.chargstatus == 11) {
  667. wx.setStorage({
  668. key: "scan_chargpile",
  669. data: res.data
  670. });
  671. log.info('[首页]', '[扫一扫充电桩空闲跳转去充电界面]');
  672. let url = `/pages/scan_result/scan_result`;
  673. that.scanFlag = false;
  674. wx.hideLoading();
  675. wx.navigateTo({
  676. url
  677. });
  678. }
  679. that.scanFlag = false;
  680. wx.hideLoading();
  681. }
  682. },
  683. fail(e) {
  684. getApp().showNetworkError();
  685. }
  686. });
  687. },
  688. fail(e){
  689. that.scanFlag = false;
  690. wx.hideLoading();
  691. }
  692. });
  693. }
  694. },
  695. fail(e) {
  696. that.scanFlag = false;
  697. wx.hideLoading();
  698. getApp().showNetworkError();
  699. }
  700. });
  701. }
  702. },
  703. //地图位移
  704. mapchange(e) {
  705. if (e.type == 'end') {
  706. if (!mapregionchange_makertap) {
  707. //console.log("移动地图");
  708. let that = this;
  709. let wMap = wx.createMapContext('map');
  710. wMap.getCenterLocation({
  711. type: 'gcj02',
  712. success: function (res) {
  713. let {
  714. latitude,
  715. longitude
  716. } = res;
  717. let userInfo = wx.getStorageSync('userInfo');
  718. let isLogin = wx.getStorageSync('isLogin');
  719. var chargStationType;
  720. if (!userInfo.flag) {
  721. //用户是普通用户
  722. chargStationType = '2';
  723. }
  724. wx.request({
  725. url: getApp().globalData.postHeadAgreement + '/restapi/wechat/chargStations',
  726. data: {
  727. lon: longitude,
  728. lat: latitude,
  729. distance: that.data.distanceinfo[that.data.distanceinfoindex].value,
  730. chargStationType
  731. },
  732. method: 'POST',
  733. success(res) {
  734. let {
  735. data
  736. } = res;
  737. let markers = [];
  738. var flag = false;
  739. data.forEach((item, index) => {
  740. var iconPath;
  741. if (that.data.markerId && that.data.markerId == item.id) {
  742. iconPath = "/images/marker_checked.png";
  743. flag = true;
  744. } else {
  745. iconPath = "/images/marker.png";
  746. if (that.data.myChargeStationsIds.indexOf(item.id + ',') != -1) {
  747. iconPath = "/images/marker1.png";
  748. }
  749. //撤销普通用户显示异常站
  750. if (isLogin && userInfo.flag) {
  751. //撤销结束
  752. if (item.breaknum && item.breaknum != 0) {
  753. iconPath = "/images/marker_b.png";
  754. }
  755. //撤销普通用户显示异常站
  756. }
  757. //撤销结束
  758. }
  759. //console.log(Util.distance(that.data.user_lat, that.data.user_lon, item.lat, item.lon));
  760. var marker = {
  761. name: item.chargStationName,
  762. address: item.address,
  763. width: "46rpx",
  764. height: "67rpx",
  765. iconPath: iconPath,
  766. id: item.id,
  767. callout: {},
  768. latitude: item.lat,
  769. longitude: item.lon,
  770. //distance: item.distance / 1000,
  771. distance: Util.distance(that.data.user_lat, that.data.user_lon, item.lat, item.lon),
  772. chargPileNum: item.fastCharg + item.slowCharg,
  773. fastCharg: item.fastCharg,
  774. slowCharg: item.slowCharg,
  775. freenum: item.freenum,
  776. fastfreenum: item.fastfreenum,
  777. slowfreenum: item.slowfreenum,
  778. breaknum: item.breaknum,
  779. /** 电费 */
  780. chargprice: item.chargprice,
  781. /** 服务费 */
  782. serviceprice: item.serviceprice,
  783. /** 停车费 */
  784. stopprice: item.stopprice,
  785. operationState: item.operationState
  786. };
  787. markers[index] = marker;
  788. });
  789. if (!flag) {
  790. that.setData({
  791. textData: null,
  792. markerId: null,
  793. });
  794. }
  795. that.setData({
  796. markers: markers
  797. });
  798. },
  799. fail(e) {
  800. getApp().showNetworkError();
  801. }
  802. });
  803. }
  804. });
  805. } else {
  806. //点击marker的情况下
  807. //console.log("点击marker");
  808. mapregionchange_makertap = false;
  809. }
  810. }
  811. },
  812. /**
  813. * 生命周期函数--监听页面显示
  814. */
  815. onShow: function () {
  816. let userInfo = wx.getStorageSync('userInfo');
  817. let isLogin = wx.getStorageSync('isLogin');
  818. // 页面显示
  819. if (userInfo && isLogin) {
  820. //console.log(userInfo);
  821. //userInfo.flag = true;
  822. this.setData({
  823. userInfo: userInfo,
  824. isLogin: isLogin
  825. });
  826. if ((!userInfo.userId && userInfo.userId != 0)){
  827. log.info('[首页]', '[已登陆未有用户ID跳转登录界面]');
  828. let url = `/pages/login/login`;
  829. wx.navigateTo({
  830. url
  831. });
  832. return;
  833. }
  834. log.info('[首页]', '[获取用户是否有未完成订单]', '[请求]', { userId: userInfo.userId });
  835. wx.request({
  836. url: getApp().globalData.postHeadAgreement + '/restapi/pileLog/wechatchargstatus',
  837. data: {
  838. userId: userInfo.userId
  839. },
  840. method: 'POST',
  841. success(res) {
  842. let {
  843. data
  844. } = res;
  845. log.info('[首页]', '[获取用户是否有未完成订单]', '[响应]', data);
  846. if (data && data.code == 200) {
  847. log.info('[首页]', '[有未完成订单跳充电界面]');
  848. //获取用户正在充电的订单,并跳转到该页面
  849. let url = `/pages/charging/charging?orderid=${data.result.orderid}&userId=${userInfo.userId}&chargPileId=${data.result.chargPileId}`;
  850. //let url = `/pages/charging/charging?userId=${userInfo.userId}`;
  851. wx.navigateTo({
  852. url
  853. });
  854. } else {
  855. //console.log(res);
  856. }
  857. },
  858. fail(e) {
  859. getApp().showNetworkError();
  860. }
  861. });
  862. } else {
  863. //未登录信息
  864. this.setData({
  865. userInfo: {}
  866. });
  867. }
  868. },
  869. bindDistanceinfoChange: function (e) {
  870. let distance = this.data.distanceinfo[e.detail.value].value;
  871. this.setData({
  872. distanceinfoindex: e.detail.value
  873. });
  874. },
  875. Sure: function () {
  876. this.setData({
  877. showModal: false
  878. });
  879. }
  880. })