2019-03-14 09:28:33 +08:00

274 lines
6.7 KiB
JavaScript

import * as API from 'api/real/orders';
const state = {
order_group: {}, // 订单组
real_orders: [], // RD订单
cards: [], // RD订单卡列表
relations: [],
selected: [],
orderParams: {},
cardParams: {},
real_companies: [],
real_packages: [],
relationParams: {},
relationObj: {
real_company_id: '',
real_package_id: '',
virtual_company_id: '',
virtual_package_id: ''
}
};
const getters = {
relations: state => state.relations,
relationObj: state => state.relationObj,
orders: state => state.real_orders,
cards: state => state.cards,
selected: state => state.selected,
counts: (state) => {
if (!state.selected.length) {
return 0;
}
return state.selected.reduce((acc, cur) => {
return acc + cur.counts;
}, 0);
},
getFilterUsedCards: () => (cards) => {
return cards.filter(item => item.virtual_order_id === 0);
},
getRealOrderById: (state) => (id) => {
return state.real_orders.find(item => item.id === id);
},
getSelectedByOrderId: (state) => (order_id) => {
if (typeof order_id !== 'object') {
order_id = [order_id];
}
return state.selected.filter(item => {
return order_id.includes(item.order_id);
});
},
getCardByOderIdAndSim: (state) => (order_id, sim) => {
return state.selected.find(item => {
return item.order_id === order_id && item.sim === sim;
});
},
real_companies: (state) => {
return state.real_orders.map(el => { return el.company_name; }).filter((v, i, s) => { return s.indexOf(v) === i; });
},
real_packages: (state) => {
return state.real_orders.map(el => { return el.package_name; }).filter((v, i, s) => { return s.indexOf(v) === i; });
}
};
const mutations = {
SET_ORDER_GROUP(state, data) {
state.order_group = data;
},
SET_REAL_ORDERS(state, data) {
state.real_orders = data;
},
SET_CARDS(state, data) {
state.cards = data;
},
SET_RELATIONS(state, data) {
state.relations = data;
},
SET_RELATION_OBJ(state, obj) {
state.relationObj = obj;
},
SET_RELATION_PARAMS(state, data) {
state.relationParams = data;
},
SET_CARD_PARAMS(state, obj) {
state.cardParams = obj;
},
SET_ORDER_PARAMS(state, obj) {
state.orderParams = obj;
},
PUSH_CARDS(state, cards) {
state.cards = state.cards.concat(cards.filter(item => {
return state.cards.findIndex(v => {
return v.sim === item.sim && v.order_id === item.order_id;
}) === -1;
}));
},
SET_SELECTED(state, data) {
state.selected = data;
},
PUSH_SELECTED(state, array) {
let selected = JSON.parse(JSON.stringify(state.selected));
for (let index = 0; index < array.length; index++) {
const element = array[index];
let i = selected.findIndex(item => {
return item.order_id === element.order_id && item.sim === element.sim;
});
if (i !== -1) {
selected.splice(i, 1);
}
let obj = element;
selected.push(obj);
}
state.selected = selected;
},
REMOVE_SELECTED(state, array) {
let selected = state.selected.map(item => {
return JSON.parse(JSON.stringify(item));
});
for (let index = 0; index < array.length; index++) {
const element = array[index];
let i = 0;
while (i !== -1) {
i = selected.findIndex(item => {
return element.sim ? (item.order_id === element.order_id && item.sim === element.sim) : (item.order_id === element.order_id);
});
if (i !== -1) {
selected.splice(i, 1);
}
}
}
state.selected = selected;
}
};
const actions = {
initOrder(context) {
context.commit('SET_RELATION_PARAMS', {});
context.commit('SET_ORDER_PARAMS', {});
context.commit('SET_CARD_PARAMS', {});
context.commit('SET_RELATION_OBJ', {});
context.commit('SET_ORDER_GROUP', {});
context.commit('SET_REAL_ORDERS', []);
context.commit('SET_CARDS', []);
context.commit('SET_SELECTED', []);
},
getRelations(context, params) {
return new Promise((resolve, reject) => {
if (JSON.stringify(context.state.relationParams) == JSON.stringify(params)) {
return resolve(context.state.relations);
}
context.commit('SET_RELATION_PARAMS', params);
API.relations(params).then(res => {
if (res.code === 0) {
context.commit('SET_RELATIONS', res.data);
resolve(res.data);
} else {
reject(res);
}
}).catch(err => {
reject(err);
});
});
},
getOrders(context, params) {
params.limit = 0;
return new Promise((resolve, reject) => {
if (JSON.stringify(context.state.orderParams) == JSON.stringify(params)) {
return resolve(context.state.real_orders);
}
context.commit('SET_ORDER_PARAMS', params);
API.index(params).then(res => {
if (res.code === 0) {
context.commit('SET_REAL_ORDERS', res.data);
resolve(res.data);
} else {
reject(res);
}
}).catch(err => {
reject(err);
});
});
},
getCards(context, { order_id, type }) {
return new Promise((resolve, reject) => {
if (typeof order_id !== 'object') {
order_id = [order_id];
}
let array = [];
for (let index = 0; index < order_id.length; index++) {
const id = order_id[index];
let i = context.state.cards.findIndex(item => {
return item.order_id === id;
});
if (i === -1 && array.indexOf(id) === -1) {
array.push(id);
}
}
let cards = [];
if (!array.length) {
cards = context.state.cards.filter(v => {
return order_id.indexOf(v.order_id) !== -1;
});
return resolve(cards);
}
API.cards({ order_id: array, type }).then(res => {
let index = context.state.cards.length;
if (res.code === 0) {
let data = res.data;
data.map(row => {
row._index = index++;
});
context.commit('PUSH_CARDS', data);
let cards = context.state.cards.filter(v => {
return order_id.indexOf(v.order_id) !== -1;
});
resolve(cards);
} else {
reject(res);
}
}).catch(err => {
reject(err);
});
});
},
getCardsByParams(context, params) {
return new Promise((resolve, reject) => {
API.cards(params).then(res => {
if (res.code === 0) {
context.commit('PUSH_CARDS', res.data);
resolve(res.data);
} else {
reject(res);
}
}).catch(err => {
reject(err);
});
});
}
};
export default {
state,
getters,
mutations,
actions
};