index.js 31 KB

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