index.js 31 KB

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