index.js 35 KB

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