index.js 31 KB

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