index.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3. import { Encrypt, Decrypt } from '@/utils/crypto';
  4. import { crmQueryMemberInfo } from '@/utils/api-crm-member';
  5. import uni from '@/utils/uniHooks';
  6. import { kipAllCities, kipGetUserDetail, getVIPIntegral } from '@/utils/api-kip';
  7. import cachedViews from './cachedViews';
  8. import order from './order/index';
  9. import invoice from './invoice';
  10. import { lbsDictionary } from '@/common/js/BaseDictionary';
  11. import { updateUnionId } from '@/api/parking/index'
  12. import {backLbsHome, getGroupIdAndMallIdByLsbId} from '@/utils';
  13. // import { parkingLots } from '@/utils/api-crm-ms';
  14. Vue.use(Vuex);
  15. function getValue(state, key) {
  16. let value = state[key];
  17. if (!value) {
  18. value = uni.getStorageSync(key);
  19. }
  20. // console.log(1414141414141414, { key, value });
  21. return value;
  22. }
  23. const store = new Vuex.Store({
  24. state: {
  25. // groupId: '8a84819f7c6e260e017c72669bbe01c2',
  26. // kipUserId: '8a888aea82c9ac970182ecfa259a0ddf',
  27. // mallId: '8a8486a37f48f7bd017f4e5bddd10000',
  28. // openid: 'oudWQ5SCDElfn-IQH6eBR5JesOz4',
  29. // appId: 'wx92c3e55fbef6b2af',
  30. lbsId: '',
  31. groupId: '',
  32. kipUserId: '',
  33. mallId: '',
  34. openid: '',
  35. appId: '',
  36. member: {},
  37. userInfo: {},
  38. mobile: '',
  39. custTypeId: 0, // 0 默认版本,1 上海静安 2 上海浦东 3 KIP:默认版本 4: 新的baseUI
  40. paramsScene: {},
  41. parkFee: {},
  42. marketList: [],
  43. projectId: '',
  44. isLogin: 'notLoggedIn', // notLoggedIn: 未登录, haveLoggedIn: 已登录, loginDenied: 拒绝登录
  45. accessToken: '', // 用户的token
  46. tempParkingOrder: {},
  47. tempParkingMoney: '',
  48. // 停车缴费
  49. bonusCopy: 0,
  50. source: '', // 访问方:微信小程序:(CRM|KIP|JINGAN|PUDONG|ALIPAY)
  51. brandInfo: {},
  52. curMarket: {},
  53. isInit: false, // 当内嵌在小程序中的H5页面,没有接收到小程序数据时,默认显示骨架屏幕
  54. // 无牌车
  55. unlicensedInfo: '',
  56. // 防止用户在无牌车流程中卡死
  57. endlessLoop: '',
  58. sourceId: '', // 微信:unionId; 支付宝:userId
  59. pageHistory: {},// 记录未登录页面已经跳转过
  60. refreshPageKey: 1
  61. },
  62. mutations: {
  63. SET_GROUP_ID(state, payload) {
  64. uni.setStorageSync('groupId', payload);
  65. state.groupId = payload;
  66. },
  67. SET_KIP_USER_ID(state, payload) {
  68. uni.setStorageSync('kipUserId', payload);
  69. state.kipUserId = payload;
  70. },
  71. SET_MALL_ID(state, payload) {
  72. uni.setStorageSync('mallId', payload);
  73. state.mallId = payload;
  74. },
  75. SET_OPENID(state, payload) {
  76. uni.setStorageSync('openid', payload);
  77. state.openid = payload;
  78. },
  79. SET_WX_ACCESS_TOKEN(state, payload) {
  80. uni.setStorageSync('wxAccessToken', payload);
  81. state.access_token = payload;
  82. },
  83. SET_WX_REFRESH_TOKEN(state, payload) {
  84. uni.setStorageSync('wxRefreshToken', payload);
  85. state.refresh_token = payload;
  86. },
  87. SET_MEMBER(state, payload) {
  88. uni.setStorageSync('member', payload);
  89. state.member = payload;
  90. },
  91. SET_USER_INFO(state, payload) {
  92. uni.setStorageSync('userInfo', payload);
  93. state.userInfo = payload;
  94. },
  95. SET_MOBILE(state, payload) {
  96. uni.setStorageSync('mobile', payload);
  97. state.mobile = payload;
  98. },
  99. SET_PARAMS_SCENE(state, payload) {
  100. uni.setStorageSync('paramsScene', payload);
  101. state.paramsScene = payload;
  102. },
  103. SET_PARK_FEE(state, payload) {
  104. state.parkFee = payload;
  105. },
  106. SET_MARKET_LIST(state, payload) {
  107. state.marketList = payload;
  108. },
  109. SET_PROJECT_ID(state, payload) {
  110. uni.setStorageSync('projectId', payload);
  111. state.projectId = payload;
  112. },
  113. SET_IS_LOGIN(state, payload) {
  114. state.isLogin = payload;
  115. uni.setStorageSync('isLogin', payload);
  116. },
  117. SET_ACCESS_TOKEN(state, payload) {
  118. state.accessToken = payload;
  119. // uni.setStorageSync('accessToken', payload);
  120. uni.setStorageSync('kipAccessToken', payload);
  121. },
  122. setTempParkingOrder(state, payload) {
  123. state.tempParkingOrder = payload;
  124. },
  125. setTempParkingMoney(state, payload) {
  126. state.tempParkingMoney = payload;
  127. },
  128. // setbonusCopy
  129. SET_BONUS_COPY(state, payload) {
  130. state.bonusCopy = payload;
  131. },
  132. SET_CUST_TYPE_ID(state, payload) {
  133. uni.setStorageSync('custTypeId', payload);
  134. state.custTypeId = payload;
  135. },
  136. SET_SOURCE(state, payload) {
  137. uni.setStorageSync('source', payload);
  138. state.source = payload;
  139. },
  140. SET_APPID(state, payload) {
  141. uni.setStorageSync('appId', payload);
  142. state.appId = payload;
  143. },
  144. SET_BRAND_INFO(state, payload) {
  145. uni.setStorageSync('brandInfo', payload);
  146. state.brandInfo = payload;
  147. },
  148. SET_CUR_MARKET(state, payload) {
  149. uni.setStorageSync('curMarket', payload);
  150. state.curMarket = payload;
  151. },
  152. SET_IS_INIT(state, payload) {
  153. // TODO: 与小程序通信时打开
  154. state.isInit = payload;
  155. },
  156. SET_LBS_ID(state, payload) {
  157. uni.setStorageSync('lbsId', payload);
  158. uni.setStorageSync('mallId', payload);
  159. state.lbsId = payload;
  160. },
  161. SET_BRAND_ID(state, payload) {
  162. state.brandId = payload;
  163. },
  164. // 无牌车
  165. SET_UNLICENSED_INFO(state, payload) {
  166. console.log(163, payload);
  167. state.unlicensedInfo = payload;
  168. },
  169. SET_ENDLESS_LOOP(state, payload) {
  170. state.endlessLoop = payload;
  171. },
  172. SET_SOURCE_ID(state, payload) {
  173. uni.setStorageSync('sourceId', payload);
  174. state.sourceId = payload;
  175. },
  176. setPageHistory(state, payload) {
  177. state.pageHistory = {
  178. ...state.pageHistory,
  179. ...payload
  180. };
  181. },
  182. SET_REGRESH_PAGE_KEY(state) {
  183. state.refreshPageKey = state.refreshPageKey + 1;
  184. }
  185. },
  186. actions: {
  187. async baseInit({ commit, dispatch }, { options, callback }) {
  188. try {
  189. // console.log(
  190. // 'Encrypt',
  191. // Encrypt(
  192. // // '8a8480487c96d58f017c9b7bab7d0020_8a84811682cf02420182ed5fb8c4000d_8a8485067ce4da2d017ce555e9b20000_ozdsB4yx3I7ez2Ba3DgEmeSR-CFY_15267617473'
  193. // '8aaa81947c6e1ca0017c7201e82d0001#8aaa80cc7d4fc7b3017d55c4d6120000#8aaa80b47c784020017c78b00d060022#ozdsB4yx3I7ez2Ba3DgEmeSR-CFY#13601829387'
  194. // )
  195. // );
  196. // console.log('128128128128', options);
  197. // if (!pageId) return;
  198. let {
  199. groupId = '',
  200. mallId = '',
  201. kipUserId = '',
  202. custTypeId = '',
  203. brandId = '',
  204. openid = '',
  205. mobile = '',
  206. lbsId = '',
  207. lbsName = '',
  208. isLogin = false,
  209. accessToken = '',
  210. source = '',
  211. appId = 'wx92c3e55fbef6b2af',
  212. // 无牌车逻辑
  213. unlicensedInfo,
  214. // CRM
  215. // brandInfo = {},
  216. // curMarket = {}
  217. unionId = ''
  218. } = options;
  219. console.log({ lbsId });
  220. /* {
  221. buildingId: mallId,
  222. projectId: groupId,
  223. openId: openid,
  224. }
  225. * */
  226. // const resp = await parkingLots();
  227. // console.log(171171, resp);
  228. commit('SET_SOURCE', source);
  229. commit('SET_APPID', appId);
  230. // let { groupId, mallId } =
  231. // source: "ALIPAY"
  232. // console.log('227227227227', !/CRM|PUDONG|JINGAN|ALIPAY/.test(source), source)
  233. if (!/CRM|PUDONG|JINGAN|ALIPAY/.test(source)) {
  234. const groupIdAndMallId = getGroupIdAndMallIdByLsbId(lbsId);
  235. groupId = groupIdAndMallId.groupId;
  236. mallId = groupIdAndMallId.mallId;
  237. // console.log('lbsId', groupIdAndMallId)
  238. commit('SET_LBS_ID', mallId);
  239. } else {
  240. commit('SET_LBS_ID', lbsId);
  241. }
  242. if (unionId) {
  243. commit('SET_SOURCE_ID', unionId);
  244. }
  245. commit('SET_CUST_TYPE_ID', custTypeId);
  246. // 如果为 false,则表示当前用户是从小程序端未登录进入的
  247. if (!isLogin) {
  248. // 如果用户未登录,清理原来的数据, 小程序入口不需要处理
  249. }
  250. const href = window.location.href;
  251. commit('SET_GROUP_ID', groupId);
  252. commit('SET_MALL_ID', mallId);
  253. commit('SET_BRAND_ID', brandId);
  254. // console.log('用户扫码进入的', unlicensedInfo, unlicensedInfo?.type);
  255. // 如果是无牌车
  256. if (unlicensedInfo?.type) {
  257. // console.log('用户扫码进入的', unlicensedInfo);
  258. commit('SET_UNLICENSED_INFO', unlicensedInfo)
  259. // commit('SET_ENDLESS_LOOP', true)
  260. }
  261. /*if (/dev-|8080|qa-/.test(href)) {
  262. commit('SET_GROUP_ID', groupId);
  263. commit('SET_MALL_ID', mallId);
  264. } else {
  265. commit('SET_GROUP_ID', '8a8884e77cc9e70a017cca1c77e80004');
  266. groupId = '8a8884e77cc9e70a017cca1c77e80004';
  267. mallId = '8a888aed7d0295e5017d029ff1f40000';
  268. commit('SET_MALL_ID', '8a888aed7d0295e5017d029ff1f40000');
  269. }*/
  270. commit('SET_OPENID', openid || uni.getStorageSync('openid'));
  271. if (isLogin) {
  272. if(!kipUserId) {
  273. backLbsHome()
  274. return
  275. }
  276. commit('SET_ACCESS_TOKEN', accessToken);
  277. commit('SET_KIP_USER_ID', kipUserId);
  278. commit('SET_MOBILE', mobile);
  279. commit('SET_IS_LOGIN', 'haveLoggedIn');
  280. dispatch('getUserDetail');
  281. dispatch('memberInit',{
  282. openid,
  283. unionId,
  284. isError: true
  285. });
  286. } else {
  287. dispatch('updateUnionIdActive', {
  288. unionId: unionId,
  289. openId: openid || uni.getStorageSync('openid')
  290. })
  291. }
  292. callback && callback();
  293. } catch (e) {
  294. console.log(e);
  295. callback && callback();
  296. }
  297. },
  298. async baseInitV2({ commit, dispatch }, { options, callback }) {
  299. try {
  300. // console.log(
  301. // 'Encrypt',
  302. // Encrypt(
  303. // // '8a8480487c96d58f017c9b7bab7d0020_8a84811682cf02420182ed5fb8c4000d_8a8485067ce4da2d017ce555e9b20000_ozdsB4yx3I7ez2Ba3DgEmeSR-CFY_15267617473'
  304. // '8aaa81947c6e1ca0017c7201e82d0001#8aaa80cc7d4fc7b3017d55c4d6120000#8aaa80b47c784020017c78b00d060022#ozdsB4yx3I7ez2Ba3DgEmeSR-CFY#13601829387'
  305. // )
  306. // );
  307. // if (!pageId) return;
  308. let {
  309. groupId = '',
  310. mallId = '',
  311. kipUserId = '',
  312. custTypeId = '',
  313. brandId = '',
  314. openId = '',
  315. mobile = '',
  316. lbsId = '',
  317. lbsName = '',
  318. isLogin = false,
  319. accessToken = '',
  320. source = '',
  321. appId = 'wx92c3e55fbef6b2af',
  322. // 无牌车逻辑
  323. unlicensedInfo,
  324. // CRM
  325. // brandInfo = {},
  326. // curMarket = {}
  327. unionId = ''
  328. } = options;
  329. console.log({ lbsId });
  330. console.log('128128128128', options);
  331. commit('SET_SOURCE', source);
  332. commit('SET_APPID', appId);
  333. commit('SET_LBS_ID', mallId);
  334. commit('SET_CUST_TYPE_ID', custTypeId);
  335. commit('SET_GROUP_ID', groupId);
  336. commit('SET_MALL_ID', mallId);
  337. commit('SET_OPENID', openId || uni.getStorageSync('openid'));
  338. commit('SET_ACCESS_TOKEN', accessToken);
  339. commit('SET_KIP_USER_ID', kipUserId);
  340. commit('SET_MOBILE', mobile);
  341. if (unionId) {
  342. commit('SET_SOURCE_ID', unionId);
  343. }
  344. if(isLogin) {
  345. commit('SET_IS_LOGIN', isLogin);
  346. }
  347. if(isLogin === 'haveLoggedIn') {
  348. dispatch('memberInit', {
  349. openid: openId || uni.getStorageSync('openid'),
  350. unionId,
  351. isError: true
  352. });
  353. } else {
  354. dispatch('updateUnionIdActive', {
  355. unionId: unionId,
  356. openId: openId || uni.getStorageSync('openid')
  357. })
  358. }
  359. callback && callback();
  360. } catch (e) {
  361. console.log(e);
  362. callback && callback();
  363. }
  364. },
  365. async getUserDetail({ commit }) {
  366. try {
  367. const res = await kipGetUserDetail();
  368. // console.log(296, res);
  369. commit('SET_USER_INFO', res.data);
  370. // console.log('user_info', res);
  371. } catch (err) {
  372. console.log(err, err);
  373. }
  374. },
  375. async memberInit({ commit, dispatch },{unionId, openid, isError = true}) {
  376. try {
  377. const memberRes = await getVIPIntegral()
  378. if(!memberRes?.vipcode && uni.getStorageSync('lbsId') !== '8a8484f488af06890188be39913e000e' && uni.getStorageSync('lbsId') !== '8a88817a8a629b5f018a838a0f6e001f' ) {
  379. backLbsHome()
  380. return
  381. }
  382. if (memberRes && isError) {
  383. await dispatch('updateUnionIdActive', {
  384. unionId: unionId,
  385. openId: openid || uni.getStorageSync('openid'),
  386. vipCode: memberRes.vipcode
  387. })
  388. commit('SET_MEMBER', memberRes);
  389. }
  390. } catch (err) {
  391. console.log(err);
  392. }
  393. const member = uni.getStorageSync('member')
  394. return JSON.stringify(member) === '{}'
  395. },
  396. // updateUnionId
  397. async updateUnionIdActive({ commit }, { openId, unionId, vipCode = null }) {
  398. try {
  399. await updateUnionId({
  400. openId, unionId, vipCode
  401. })
  402. } catch (err) {
  403. console.log(318, err);
  404. }
  405. },
  406. clearUnlicensed({ state, commit }) {
  407. commit('SET_UNLICENSED_INFO', '');
  408. commit('SET_ENDLESS_LOOP', '');
  409. }
  410. },
  411. modules: {
  412. cachedViews,
  413. order,
  414. invoice
  415. },
  416. });
  417. export default store;