index.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3. import $mConstDataConfig from '@/config/constData.config';
  4. import $mConfig from '@/config/index.config.js';
  5. Vue.use(Vuex);
  6. const ACCESSTOKEN = uni.getStorageSync('accessToken') || '';
  7. const REFERRER = uni.getStorageSync('referrer') || '';
  8. const USER = uni.getStorageSync('user') || {};
  9. const REFRESHTOKEN = uni.getStorageSync('refreshToken') || '';
  10. const GLOBALCONFIG = uni.getStorageSync('globalConfig') || {};
  11. const CARTNUM = uni.getStorageSync('cartNum') || 0;
  12. const NOTIFYNUM = uni.getStorageSync('notifyNum') || 0;
  13. const IMHISTORY = uni.getStorageSync('imHistory') || [];
  14. const IMNOREAD = uni.getStorageSync('imNoRead') || 0;
  15. const THEMECOLOR = uni.getStorageSync('themeColor') || {
  16. title: '海蓝',
  17. name: 'blue',
  18. color: '#0081ff'
  19. };
  20. const store = new Vuex.Store({
  21. state: {
  22. // 用户token
  23. accessToken: ACCESSTOKEN,
  24. // 用户信息
  25. userInfo: USER.username,
  26. // 推荐人
  27. referrer: REFERRER,
  28. // 小程序openid
  29. openId: '',
  30. // 网络状态,用于下载提醒
  31. networkState: 'unknown',
  32. globalConfig: GLOBALCONFIG,
  33. refreshToken: REFRESHTOKEN,
  34. // 购物车数字角标
  35. cartNum: CARTNUM,
  36. // 消息中心数字角标
  37. notifyNum: NOTIFYNUM,
  38. // 历史聊天消息,仅保存最后100条
  39. imHistory: IMHISTORY,
  40. // 当前未读聊天消息数量
  41. imNoRead: IMNOREAD,
  42. // 当前是否处于聊天面板
  43. isImPanel: false,
  44. // 当前是否人工客服服务
  45. isStuffService: false,
  46. themeColor: THEMECOLOR
  47. },
  48. getters: {
  49. // 全局配置
  50. themeColor: state => {
  51. return state.themeColor;
  52. },
  53. // 全局配置
  54. globalConfig: state => {
  55. return state.globalConfig;
  56. },
  57. // 获取网络状态
  58. networkStatus: state => {
  59. return state.networkState;
  60. },
  61. // 判断用户是否登录
  62. hasLogin: state => {
  63. return !!state.accessToken;
  64. }
  65. },
  66. mutations: {
  67. login(state, provider) {
  68. state.accessToken = provider.token;
  69. state.refreshToken = provider.refresh_token;
  70. state.userInfo = provider.loginUser.user.nickName;
  71. state.user = provider.loginUser.user;
  72. uni.setStorageSync('user', provider.loginUser.user);
  73. uni.setStorageSync('accessToken', provider.token);
  74. uni.setStorageSync('refreshToken', provider.refresh_token);
  75. uni.setStorageSync('userInfo', provider.loginUser.user.nickName);
  76. },
  77. logout(state) {
  78. state.accessToken = '';
  79. state.refreshToken = '';
  80. state.userInfo = {};
  81. state.user = '';
  82. uni.removeStorageSync('accessToken');
  83. uni.removeTabBarBadge({
  84. index: $mConstDataConfig.notifyIndex
  85. });
  86. uni.removeTabBarBadge({
  87. index: $mConstDataConfig.cartIndex
  88. });
  89. uni.removeStorageSync('refreshToken');
  90. uni.removeStorageSync('userInfo');
  91. uni.removeStorageSync('user');
  92. },
  93. setReferrer(state, referrer) {
  94. state.referrer = referrer;
  95. uni.setStorageSync('referrer', referrer);
  96. },
  97. setOpenId(state, openId) {
  98. state.openId = openId;
  99. uni.setStorageSync('openId', openId);
  100. },
  101. setNetworkState(state, provider) {
  102. state.networkState = provider;
  103. },
  104. setCartNum(state, provider) {
  105. state.cartNum = provider;
  106. uni.setStorageSync('cartNum', provider);
  107. if (!provider || parseInt(provider, 10) === 0) {
  108. uni.removeTabBarBadge({
  109. index: $mConstDataConfig.cartIndex
  110. });
  111. } else {
  112. uni.setTabBarBadge({
  113. index: $mConstDataConfig.cartIndex,
  114. text: provider.toString()
  115. });
  116. }
  117. },
  118. setNotifyNum(state, provider) {
  119. state.notifyNum = provider;
  120. uni.setStorageSync('notifyNum', provider);
  121. if (parseInt(provider, 10) === 0) {
  122. uni.removeTabBarBadge({
  123. index: $mConstDataConfig.notifyIndex
  124. });
  125. } else {
  126. uni.setTabBarBadge({
  127. index: $mConstDataConfig.notifyIndex,
  128. text: provider.toString()
  129. });
  130. }
  131. },
  132. setGlobalConfig(state, provider) {
  133. state.globalConfig = provider;
  134. uni.setStorageSync('globalConfig', provider);
  135. },
  136. addImHistory(state, provider) {
  137. if (provider) {
  138. let data = state.imHistory;
  139. data.push(provider);
  140. uni.setStorageSync('imHistory', data);
  141. state.imHistory = data;
  142. if (!state.isImPanel) {
  143. this.commit('addImNoRead', 1);
  144. }
  145. }
  146. },
  147. clearImHistory(state) {
  148. state.imHistory = [];
  149. uni.setStorageSync('imHistory', []);
  150. state.imNoRead = 0;
  151. uni.setStorageSync('imNoRead', 0);
  152. },
  153. addImNoRead(state, provider) {
  154. state.imNoRead = state.imNoRead + provider;
  155. // if (state.imNoRead > $mAppConfig.imHisotryNum) {
  156. // state.imNoRead = $mAppConfig.imHisotryNum;
  157. // }
  158. uni.setStorageSync('imNoRead', state.imNoRead);
  159. },
  160. setIsImPanel(state, provider) {
  161. state.isImPanel = provider;
  162. if (provider) {
  163. state.imNoRead = 0;
  164. uni.setStorageSync('imNoRead', 0);
  165. }
  166. },
  167. setIsStuffService(state, provider) {
  168. state.isStuffService = provider;
  169. },
  170. setThemeColor(state, val) {
  171. state.themeColor = val;
  172. uni.setStorageSync('themeColor', val);
  173. }
  174. },
  175. actions: {
  176. globalConfigChange({
  177. commit
  178. }, info) {
  179. commit('setGlobalConfig', info);
  180. },
  181. networkStateChange({
  182. commit
  183. }, info) {
  184. commit('setNetworkState', info);
  185. },
  186. logout({
  187. commit
  188. }) {
  189. commit('logout');
  190. }
  191. }
  192. });
  193. export default store;