index.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. Vue.use(Vuex)
  4. let lifeData = {};
  5. try {
  6. // 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
  7. lifeData = uni.getStorageSync('lifeData');
  8. } catch (e) {
  9. }
  10. // 需要永久存储,且下次APP启动需要取出的,在state中的变量名
  11. let saveStateKeys = [
  12. 'vuex_user',
  13. 'vuex_token',
  14. 'vuex_invitecode',
  15. 'vuex_channel_id',
  16. 'vuex_signin',
  17. 'vuex_webs',
  18. 'vuex_theme'
  19. ];
  20. // 保存变量到本地存储中
  21. const saveLifeData = function(key, value) {
  22. // 判断变量名是否在需要存储的数组中
  23. if (saveStateKeys.indexOf(key) != -1) {
  24. // 获取本地存储的lifeData对象,将变量添加到对象中
  25. let tmp = uni.getStorageSync('lifeData');
  26. // 第一次打开APP,不存在lifeData变量,故放一个{}空对象
  27. tmp = tmp ? tmp : {};
  28. tmp[key] = value;
  29. // 执行这一步后,所有需要存储的变量,都挂载在本地的lifeData对象中
  30. uni.setStorageSync('lifeData', tmp);
  31. }
  32. }
  33. const store = new Vuex.Store({
  34. state: {
  35. // 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量
  36. // 加上vuex_前缀,是防止变量名冲突,也让人一目了然
  37. vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {},
  38. vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
  39. vuex_channel_id: lifeData.vuex_channel_id ? lifeData.vuex_channel_id : '',
  40. vuex_version: '1.0.1',
  41. vuex__token__: '',
  42. vuex_config: {},
  43. vuex_theme: lifeData.vuex_theme ? lifeData.vuex_theme : {},
  44. vuex_signin: lifeData.vuex_signin ? lifeData.vuex_signin : '', //签到init
  45. vuex_invitecode: lifeData.vuex_invitecode ? lifeData.vuex_invitecode : '', //邀请码
  46. vuex_webs: lifeData.vuex_webs ? lifeData.vuex_webs : {},
  47. vuex_third: {},
  48. vuex_table_title: '',
  49. vuex_parse_style: {
  50. // 字符串的形式
  51. h1: 'padding:20rpx 0;',
  52. h2: 'padding:10rpx 0;',
  53. h3: 'padding:10rpx 0;',
  54. h4: 'padding:10rpx 0;',
  55. h5: 'padding:5rpx 0;',
  56. h6: 'padding:5rpx 0;',
  57. ul: 'margin-bottom:20rpx;padding-left:30rpx;',
  58. ol: 'margin-bottom:20rpx;padding-left:30rpx;',
  59. code: 'background-color: #f6f6f6;margin: 0 5rpx;padding: 6rpx 8rpx;border-radius: 6rpx;text-align:center;',
  60. pre: 'white-space: pre;overflow: auto;background: #f6f6f6;border-radius: 8rpx;border: none;color: #1a1a1a;margin-bottom: 20rpx;padding:20rpx;',
  61. 'pre code': 'margin:0;padding:0;',
  62. blockquote: 'padding: 15rpx;margin:0 0 20rpx 0;border-radius: 6rpx;',
  63. p: 'margin-bottom:20rpx',
  64. table: 'width:100%;margin-bottom:20rpx;border-collapse: collapse;',
  65. th: 'background-color: whitesmoke;border: 1px solid #e6e6e6;padding:10rpx;',
  66. td: 'border: 1px solid #e6e6e6;padding:10rpx;'
  67. },
  68. //备胎导航
  69. vuex_tabbar: {
  70. "color": "#999",
  71. "selectColor": "#000",
  72. "bgColor": "#FFFFFF",
  73. "borderStyle": "black",
  74. "list": [{
  75. "path": "pages/index/index",
  76. "image": "static/tabbar/home.png",
  77. "selectedImage": "static/tabbar/home-hl.png",
  78. "text": "首页"
  79. },
  80. {
  81. "path": "pages/article/article",
  82. "image": "static/tabbar/article.png",
  83. "selectedImage": "static/tabbar/article-hl.png",
  84. "text": "资讯"
  85. },
  86. {
  87. "path": "pages/product/product",
  88. "image": "static/tabbar/image.png",
  89. "selectedImage": "static/tabbar/image-hl.png",
  90. "text": "产品"
  91. },
  92. {
  93. "path": "pages/my/my",
  94. "image": "static/tabbar/my.png",
  95. "selectedImage": "static/tabbar/my-hl.png",
  96. "text": "我的"
  97. }
  98. ]
  99. }
  100. },
  101. mutations: {
  102. $uStore(state, payload) {
  103. // 判断是否多层级调用,state中为对象存在的情况,诸如user.info.score = 1
  104. let nameArr = payload.name.split('.');
  105. let saveKey = '';
  106. let len = nameArr.length;
  107. if (len >= 2) {
  108. let obj = state[nameArr[0]];
  109. for (let i = 1; i < len - 1; i++) {
  110. obj = obj[nameArr[i]];
  111. }
  112. obj[nameArr[len - 1]] = payload.value;
  113. saveKey = nameArr[0];
  114. } else {
  115. // 单层级变量,在state就是一个普通变量的情况
  116. state[payload.name] = payload.value;
  117. saveKey = payload.name;
  118. }
  119. // 保存变量到本地,见顶部函数定义
  120. saveLifeData(saveKey, state[saveKey])
  121. }
  122. }
  123. })
  124. export default store