index.js 37 KB

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