index.js
2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import {
FETCH_HOME_REQUEST,
FETCH_HOME_FAILURE,
FETCH_HOME_SUCCESS,
FETCH_CHANNEL_REQUEST,
FETCH_CHANNEL_SUCCESS,
FETCH_CHANNEL_FAILURE
} from './types';
import {
HOME_CONTENT_CODE,
CHANNEL_MAN_CONTENT_CODE,
CHANNEL_WOMEN_CONTENT_CODE
} from '../content-code';
import _ from 'lodash';
export default {
state: {
home: {},
gender: 'men',
men: {
sort: {},
data: {},
isFetching: false
},
women: {
sort: {},
data: {},
isFetching: false
},
fethingHome: false,
},
mutations: {
[FETCH_HOME_REQUEST](state) {
state.fethingHome = true;
},
[FETCH_HOME_FAILURE](state) {
state.fethingHome = false;
},
[FETCH_HOME_SUCCESS](state, {data}) {
state.fethingHome = false;
state.home = data;
},
[FETCH_CHANNEL_REQUEST](state, gender) {
state.gender = gender;
state[gender].isFetching = true;
},
[FETCH_CHANNEL_FAILURE](state) {
state[state.gender].isFetching = false;
},
[FETCH_CHANNEL_SUCCESS](state, {data, sort}) {
const keyCvt = {
men: 'MEN男士',
women: 'WOMEN女士',
};
state[state.gender].isFetching = false;
// mock data
data.splice(1, 0 , {
category: true
});
state[state.gender].data = data;
state[state.gender].sort = sort[keyCvt[state.gender]];
},
},
actions: {
async [FETCH_HOME_REQUEST]({commit, state}) {
// if (!_.isEmpty(state.home)) {
// return Promise.resolve(state.home);
// }
commit(FETCH_HOME_REQUEST);
try {
const result = await this.$api.get('/resource/get', {content_code: HOME_CONTENT_CODE});
commit(FETCH_HOME_SUCCESS, result);
return result;
} catch (e) {
console.error(e);
commit(FETCH_HOME_FAILURE);
}
},
async [FETCH_CHANNEL_REQUEST]({commit}, gender) {
commit(FETCH_CHANNEL_REQUEST, gender);
try {
const result = await this.$api.get('/resource/get', {
content_code: gender === 'men' ? CHANNEL_MAN_CONTENT_CODE : CHANNEL_WOMEN_CONTENT_CODE
});
const sort = await this.$api.get('/sort/list', {
channel: gender
});
commit(FETCH_CHANNEL_SUCCESS, {data: result.data, sort: sort.data});
return result;
} catch (e) {
console.error(e);
commit(FETCH_CHANNEL_FAILURE);
}
}
}
};