mutations.js
1.68 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
import * as Types from './types';
import {get, find } from 'lodash';
function ensureSelectedProduct(state, productId) {
if (!state.selectedProductInfo || state.selectedProductInfo.productId !== productId) {
state.selectedProductInfo = {
productId,
product: state.products.byId[productId],
sizeId: null,
storageId: null,
size: {},
tradeTypeId: null,
tradeType: {}
};
}
}
export default {
[Types.UPDATE_PRODUCT_DETAIL](state, payload) {
state.products.byId[state.currentId] = null;
state.currentId = payload.product_id;
state.products.byId[state.currentId] = payload;
ensureSelectedProduct(state, state.currentId);
},
[Types.UPDATE_PRODUCT_FAV](state, { productId, isFav}) {
if (state.products.byId[productId]) {
state.products.byId[productId].isFav = isFav;
}
},
[Types.UPDATE_SELECTED_RPODUCT_SIZE](state, { productId, sizeId, storageId}) {
ensureSelectedProduct(state, productId);
const sizeList = get(state.selectedProductInfo.product, 'goods_list[0].size_list', []);
let sizeInfo;
if (storageId) {
sizeInfo = find(sizeList, (size) => size.storage_id === storageId) || {};
} else {
sizeInfo = find(sizeList, (size) => size.size_id === sizeId) || {};
}
state.selectedProductInfo.sizeId = sizeInfo.size_id;
state.selectedProductInfo.storageId = sizeInfo.storage_id;
state.selectedProductInfo.size = sizeInfo;
},
[Types.UPDATE_SELECTED_TRADE_TYPE](state, { productId, tradeTypeId}) {
ensureSelectedProduct(state, productId);
state.selectedProductInfo.tradeTypeId = tradeTypeId;
state.selectedProductInfo.tradeType = {}; // FIXME: 查询交易类型
},
};