Pārlūkot izejas kodu

refactor(store):重构store

Tim_Walker 1 gadu atpakaļ
vecāks
revīzija
8aa7f1d9a4

+ 0 - 1
src/api/login.js

@@ -30,7 +30,6 @@ export function loginByWxLoginCode(data) {
       'Content-Type': 'application/x-www-form-urlencoded',
     },
     data: data,
-    loadingText: '登录中...',
   });
 }
 

+ 0 - 386
src/data/citylist.json

@@ -1,386 +0,0 @@
-[
-  {
-    "letter": "A",
-    "data": ["阿坝", "阿拉善", "阿里", "安康", "安庆", "鞍山", "安顺", "安阳", "澳门"]
-  },
-  {
-    "letter": "B",
-    "data": ["北京", "白银", "保定", "宝鸡", "保山", "包头", "巴中", "北海", "蚌埠", "本溪", "毕节", "滨州", "百色", "亳州"]
-  },
-  {
-    "letter": "C",
-    "data": [
-      "重庆",
-      "成都",
-      "长沙",
-      "长春",
-      "沧州",
-      "常德",
-      "昌都",
-      "长治",
-      "常州",
-      "巢湖",
-      "潮州",
-      "承德",
-      "郴州",
-      "赤峰",
-      "池州",
-      "崇左",
-      "楚雄",
-      "滁州",
-      "朝阳"
-    ]
-  },
-  {
-    "letter": "D",
-    "data": ["大连", "东莞", "大理", "丹东", "大庆", "大同", "大兴安岭", "德宏", "德阳", "德州", "定西", "迪庆", "东营"]
-  },
-  {
-    "letter": "E",
-    "data": ["鄂尔多斯", "恩施", "鄂州"]
-  },
-  {
-    "letter": "F",
-    "data": ["福州", "防城港", "佛山", "抚顺", "抚州", "阜新", "阜阳"]
-  },
-  {
-    "letter": "G",
-    "data": ["广州", "桂林", "贵阳", "甘南", "赣州", "甘孜", "广安", "广元", "贵港", "果洛"]
-  },
-  {
-    "letter": "H",
-    "data": [
-      "杭州",
-      "哈尔滨",
-      "合肥",
-      "海口",
-      "呼和浩特",
-      "海北",
-      "海东",
-      "海南",
-      "海西",
-      "邯郸",
-      "汉中",
-      "鹤壁",
-      "河池",
-      "鹤岗",
-      "黑河",
-      "衡水",
-      "衡阳",
-      "河源",
-      "贺州",
-      "红河",
-      "淮安",
-      "淮北",
-      "怀化",
-      "淮南",
-      "黄冈",
-      "黄南",
-      "黄山",
-      "黄石",
-      "惠州",
-      "葫芦岛",
-      "呼伦贝尔",
-      "湖州",
-      "菏泽"
-    ]
-  },
-  {
-    "letter": "J",
-    "data": [
-      "济南",
-      "佳木斯",
-      "吉安",
-      "江门",
-      "焦作",
-      "嘉兴",
-      "嘉峪关",
-      "揭阳",
-      "吉林",
-      "金昌",
-      "晋城",
-      "景德镇",
-      "荆门",
-      "荆州",
-      "金华",
-      "济宁",
-      "晋中",
-      "锦州",
-      "九江",
-      "酒泉"
-    ]
-  },
-  {
-    "letter": "K",
-    "data": ["昆明", "开封"]
-  },
-  {
-    "letter": "L",
-    "data": [
-      "兰州",
-      "拉萨",
-      "来宾",
-      "莱芜",
-      "廊坊",
-      "乐山",
-      "凉山",
-      "连云港",
-      "聊城",
-      "辽阳",
-      "辽源",
-      "丽江",
-      "临沧",
-      "临汾",
-      "临夏",
-      "临沂",
-      "林芝",
-      "丽水",
-      "六安",
-      "六盘水",
-      "柳州",
-      "陇南",
-      "龙岩",
-      "娄底",
-      "漯河",
-      "洛阳",
-      "泸州",
-      "吕梁"
-    ]
-  },
-  {
-    "letter": "M",
-    "data": ["马鞍山", "茂名", "眉山", "梅州", "绵阳", "牡丹江"]
-  },
-  {
-    "letter": "N",
-    "data": ["南京", "南昌", "南宁", "宁波", "南充", "南平", "南通", "南阳", "那曲", "内江", "宁德", "怒江"]
-  },
-  {
-    "letter": "P",
-    "data": ["盘锦", "攀枝花", "平顶山", "平凉", "萍乡", "莆田", "濮阳"]
-  },
-  {
-    "letter": "Q",
-    "data": ["青岛", "黔东南", "黔南", "黔西南", "庆阳", "清远", "秦皇岛", "钦州", "齐齐哈尔", "泉州", "曲靖", "衢州"]
-  },
-  {
-    "letter": "R",
-    "data": ["日喀则", "日照"]
-  },
-  {
-    "letter": "S",
-    "data": [
-      "上海",
-      "深圳",
-      "苏州",
-      "沈阳",
-      "石家庄",
-      "三门峡",
-      "三明",
-      "三亚",
-      "商洛",
-      "商丘",
-      "上饶",
-      "山南",
-      "汕头",
-      "汕尾",
-      "韶关",
-      "绍兴",
-      "邵阳",
-      "十堰",
-      "朔州",
-      "四平",
-      "绥化",
-      "遂宁",
-      "随州",
-      "宿迁",
-      "宿州"
-    ]
-  },
-  {
-    "letter": "T",
-    "data": ["天津", "太原", "泰安", "泰州", "台州", "唐山", "天水", "铁岭", "铜川", "通化", "通辽", "铜陵", "铜仁", "台湾"]
-  },
-  {
-    "letter": "W",
-    "data": ["武汉", "乌鲁木齐", "无锡", "威海", "潍坊", "文山", "温州", "乌海", "芜湖", "乌兰察布", "武威", "梧州"]
-  },
-  {
-    "letter": "X",
-    "data": [
-      "厦门",
-      "西安",
-      "西宁",
-      "襄樊",
-      "湘潭",
-      "湘西",
-      "咸宁",
-      "咸阳",
-      "孝感",
-      "邢台",
-      "新乡",
-      "信阳",
-      "新余",
-      "忻州",
-      "西双版纳",
-      "宣城",
-      "许昌",
-      "徐州",
-      "香港",
-      "锡林郭勒",
-      "兴安"
-    ]
-  },
-  {
-    "letter": "Y",
-    "data": [
-      "银川",
-      "雅安",
-      "延安",
-      "延边",
-      "盐城",
-      "阳江",
-      "阳泉",
-      "扬州",
-      "烟台",
-      "宜宾",
-      "宜昌",
-      "宜春",
-      "营口",
-      "益阳",
-      "永州",
-      "岳阳",
-      "榆林",
-      "运城",
-      "云浮",
-      "玉树",
-      "玉溪",
-      "玉林"
-    ]
-  },
-  {
-    "letter": "Z",
-    "data": [
-      "杂多县",
-      "赞皇县",
-      "枣强县",
-      "枣阳市",
-      "枣庄",
-      "泽库县",
-      "增城市",
-      "曾都区",
-      "泽普县",
-      "泽州县",
-      "札达县",
-      "扎赉特旗",
-      "扎兰屯市",
-      "扎鲁特旗",
-      "扎囊县",
-      "张北县",
-      "张店区",
-      "章贡区",
-      "张家港",
-      "张家界",
-      "张家口",
-      "漳平市",
-      "漳浦县",
-      "章丘市",
-      "樟树市",
-      "张湾区",
-      "彰武县",
-      "漳县",
-      "张掖",
-      "漳州",
-      "长子县",
-      "湛河区",
-      "湛江",
-      "站前区",
-      "沾益县",
-      "诏安县",
-      "召陵区",
-      "昭平县",
-      "肇庆",
-      "昭通",
-      "赵县",
-      "昭阳区",
-      "招远市",
-      "肇源县",
-      "肇州县",
-      "柞水县",
-      "柘城县",
-      "浙江",
-      "镇安县",
-      "振安区",
-      "镇巴县",
-      "正安县",
-      "正定县",
-      "正定新区",
-      "正蓝旗",
-      "正宁县",
-      "蒸湘区",
-      "正镶白旗",
-      "正阳县",
-      "郑州",
-      "镇海区",
-      "镇江",
-      "浈江区",
-      "镇康县",
-      "镇赉县",
-      "镇平县",
-      "振兴区",
-      "镇雄县",
-      "镇原县",
-      "志丹县",
-      "治多县",
-      "芝罘区",
-      "枝江市",
-      "芷江侗族自治县",
-      "织金县",
-      "中方县",
-      "中江县",
-      "钟楼区",
-      "中牟县",
-      "中宁县",
-      "中山",
-      "中山区",
-      "钟山区",
-      "钟山县",
-      "中卫",
-      "钟祥市",
-      "中阳县",
-      "中原区",
-      "周村区",
-      "周口",
-      "周宁县",
-      "舟曲县",
-      "舟山",
-      "周至县",
-      "庄河市",
-      "诸城市",
-      "珠海",
-      "珠晖区",
-      "诸暨市",
-      "驻马店",
-      "准格尔旗",
-      "涿鹿县",
-      "卓尼",
-      "涿州市",
-      "卓资县",
-      "珠山区",
-      "竹山县",
-      "竹溪县",
-      "株洲",
-      "株洲县",
-      "淄博",
-      "子长县",
-      "淄川区",
-      "自贡",
-      "秭归县",
-      "紫金县",
-      "自流井区",
-      "资溪县",
-      "资兴市",
-      "资阳"
-    ]
-  }
-]

+ 2 - 1
src/pages/index.vue

@@ -22,7 +22,8 @@ export default {
         grant_type: 'wechat',
         token: wxCode,
       });
-      await this.$store.dispatch('GetUserInfo');
+      // TODO: 获取用户信息
+      // await this.$store.dispatch('GetUserInfo');
       this.$Router.pushTab('/pages/tabbar/home/index')
       this.loading = false
     } catch (error) {

+ 9 - 14
src/pages/tabbar/home/index.vue

@@ -67,14 +67,14 @@
       >
         <view slot="title" class="hot-title"> 热门推荐 </view>
       </u-cell>
-      <block v-if="homeData.recommendMerchants.length > 0">
+      <block v-if="homeData.recommends&&homeData.recommends.length > 0">
         <view>
           <u-grid :border="false" col="2">
             <u-grid-item
               @click="
                 $Router.push(`/pages/business/detail/index?id=${item.id}`)
               "
-              v-for="item in homeData.recommendMerchants"
+              v-for="item in homeData.recommends"
               :key="item.id"
             >
               <recommend-item :item="item"></recommend-item>
@@ -99,14 +99,14 @@
       >
         <view slot="title" class="near-title"> 附近商家 </view>
       </u-cell>
-      <block v-if="homeData.nearbyMerchants.length > 0">
+      <block v-if="homeData.nears&&homeData.nears.length > 0">
         <view>
           <u-grid :border="false" col="2">
             <u-grid-item
               @click="
                 $Router.push(`/pages/business/detail/index?id=${item.id}`)
               "
-              v-for="item in homeData.nearbyMerchants"
+              v-for="item in homeData.nears"
               :key="item.id"
             >
               <hot-item :item="item"></hot-item>
@@ -208,11 +208,9 @@ export default {
         },
       ],
       homeData: {
-        configuration: {
-          banners: [],
-        },
-        nearbyMerchants: [],
-        recommendMerchants: [],
+        categories:[],
+        nears: [],
+        recommends: [],
       },
       scrollTop: 0,
     };
@@ -263,6 +261,8 @@ export default {
       getHomePage(location)
         .then(res => {
           this.homeData = res.data;
+          // 将分类数据做缓存处理
+          this.$store.commit('SET_CATEGORIES',this.homeData.categories)
         })
         .catch(err => {
           console.log(err);
@@ -271,10 +271,6 @@ export default {
     manualGetLocation() {
       uni.chooseLocation({
         success: res => {
-          console.log('位置名称:' + res.name);
-          console.log('详细地址:' + res.address);
-          console.log('纬度:' + res.latitude);
-          console.log('经度:' + res.longitude);
           this.$store.commit('SET_LOCATION', {
             longitude: res.longitude,
             latitude: res.latitude,
@@ -286,7 +282,6 @@ export default {
   watch: {
     location: {
       handler: function (newVal, oldVal) {
-        console.log(newVal, oldVal);
         this.getHomeData(newVal);
       },
     },

+ 3 - 3
src/store/getters.js

@@ -1,8 +1,8 @@
 const getters = {
-  access_token: state => state.user.access_token,
-  refresh_token: state => state.user.refresh_token,
+  access_token: state => state.login.access_token,
+  refresh_token: state => state.login.refresh_token,
   user_info: state => state.user.user_info,
-  location: state => state.user.location
+  location: state => state.data.location
 };
 
 export default getters;

+ 4 - 0
src/store/index.js

@@ -1,13 +1,17 @@
 import Vue from 'vue';
 import Vuex from 'vuex';
 import getters from './getters';
+import login from './modules/login';
 import user from './modules/user';
+import data from './modules/data';
 Vue.use(Vuex);
 
 const store = new Vuex.Store({
   getters,
   modules: {
+    login,
     user,
+    data,
   },
 });
 

+ 0 - 0
src/store/modules/app.js


+ 22 - 0
src/store/modules/data.js

@@ -0,0 +1,22 @@
+import { setCache, getCache } from '@/utils/cache';
+
+export default {
+  state: () => ({
+    location: getCache('location') || {
+      longitude: 0,
+      latitude: 0,
+    },
+    categories:getCache('categories') || []
+  }),
+  mutations: {
+    SET_LOCATION(state, data) {
+      state.location = data;
+      setCache('location', state.location);
+    },
+    SET_CATEGORIES(state, data) {
+      state.categories = data
+      setCache('categories', state.categories);
+    }
+  },
+  actions: {},
+};

+ 54 - 0
src/store/modules/login.js

@@ -0,0 +1,54 @@
+/**
+ * 用户令牌信息
+ */
+import { setCache, getCache } from '@/utils/cache';
+import { loginByWxLoginCode, refreshToken } from '@/api/login';
+
+export default {
+  state: () => ({
+    access_token: getCache('access_token') || '',
+    refresh_token: getCache('refresh_token') || '',
+  }),
+  mutations: {
+    SET_ACCESS_TOKEN(state, data) {
+      state.access_token = data;
+      setCache('access_token', state.access_token);
+    },
+    SET_REFRESH_TOKEN(state, data) {
+      state.refresh_token = data;
+      setCache('refresh_token', state.refresh_token);
+    },
+  },
+  actions: {
+    LoginByWxCode({ commit }, data) {
+      return new Promise((resolve, reject) => {
+        loginByWxLoginCode(data)
+          .then(res => {
+            if (res.access_token) {
+              commit('SET_ACCESS_TOKEN', res.access_token);
+              commit('SET_REFRESH_TOKEN', res.refresh_token);
+              resolve();
+            }
+          })
+          .catch(err => {
+            reject(err);
+          });
+      });
+    },
+    RefreshToken({ commit }, data) {
+      return new Promise((resolve, reject) => {
+        refreshToken(data)
+          .then(res => {
+            if (res.access_token) {
+              commit('SET_ACCESS_TOKEN', res.access_token);
+              commit('SET_REFRESH_TOKEN', res.refresh_token);
+              resolve();
+            }
+          })
+          .catch(err => {
+            reject(err);
+          });
+      });
+    },
+  },
+};

+ 3 - 49
src/store/modules/user.js

@@ -1,51 +1,20 @@
+/**
+ * 用户基本信息
+ */
 import { setCache, getCache } from '@/utils/cache';
-import { loginByWxLoginCode, refreshToken } from '@/api/login';
 import { getUserInfo } from '../../api/user';
 
 export default {
   state: () => ({
-    access_token: getCache('access_token') || '',
-    refresh_token: getCache('refresh_token') || '',
     user_info: getCache('user_info') || {},
-    location: getCache('location') || {
-      longitude: 0,
-      latitude: 0,
-    },
   }),
   mutations: {
-    SET_ACCESS_TOKEN(state, data) {
-      state.access_token = data;
-      setCache('access_token', state.access_token);
-    },
-    SET_REFRESH_TOKEN(state, data) {
-      state.refresh_token = data;
-      setCache('refresh_token', state.refresh_token);
-    },
     SET_USER_INFO(state, data) {
       state.user_info = data;
       setCache('user_info', state.user_info);
     },
-    SET_LOCATION(state, data) {
-      state.location = data;
-      setCache('location', state.location);
-    },
   },
   actions: {
-    LoginByWxCode({ commit }, data) {
-      return new Promise((resolve, reject) => {
-        loginByWxLoginCode(data)
-          .then(res => {
-            if (res.access_token) {
-              commit('SET_ACCESS_TOKEN', res.access_token);
-              commit('SET_REFRESH_TOKEN', res.refresh_token);
-              resolve();
-            }
-          })
-          .catch(err => {
-            reject(err);
-          });
-      });
-    },
     GetUserInfo({ commit }) {
       return new Promise((resolve, reject) => {
         getUserInfo()
@@ -58,20 +27,5 @@ export default {
           });
       });
     },
-    RefreshToken({ commit }, data) {
-      return new Promise((resolve, reject) => {
-        refreshToken(data)
-          .then(res => {
-            if (res.access_token) {
-              commit('SET_ACCESS_TOKEN', res.access_token);
-              commit('SET_REFRESH_TOKEN', res.refresh_token);
-              resolve();
-            }
-          })
-          .catch(err => {
-            reject(err);
-          });
-      });
-    },
   },
 };

+ 2 - 1
src/utils/request.js

@@ -1,7 +1,7 @@
 import { getSystemInfoAsync } from '@/utils/system';
 import store from '@/store';
 
-const BASE_URL = 'https://test.chelvc.com';
+const BASE_URL = 'https://test.api.chelvc.com';
 const TIME_OUT = 60000;
 const errStatus = {
   200: '成功',
@@ -42,6 +42,7 @@ export function request(options) {
           Version: osVersion,
           Terminal: 'APPLET',
           Business: 'CUSTOMER',
+          Initial: false,
         },
         options.header,
       ),