271 lines
6.9 KiB
JavaScript
271 lines
6.9 KiB
JavaScript
import * as API from 'api/real/orders';
|
|
|
|
let remove_selected = (selected, array) => {
|
|
return selected.filter(el => {
|
|
return array.findIndex(e => {
|
|
return e._rowIndex === el._rowIndex;
|
|
}) === -1;
|
|
});
|
|
};
|
|
|
|
const state = {
|
|
order_group: {}, // 订单组
|
|
real_orders: [], // RD订单
|
|
cards: [], // RD订单卡列表
|
|
relations: [],
|
|
selected: [],
|
|
counts: 0, // 选择的卡数量
|
|
selectedMapped: [], // 选择的卡索引
|
|
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,
|
|
selectedMapped: state => state.selectedMapped,
|
|
counts: state => state.counts,
|
|
order_group: state => state.order_group,
|
|
total: (state) => {
|
|
if (!state.cards.length) {
|
|
return 0;
|
|
}
|
|
|
|
return state.cards.reduce((acc, cur) => {
|
|
return acc + cur.counts;
|
|
}, 0);
|
|
},
|
|
getFilterUsedCards: () => (cards) => {
|
|
return cards.filter(item => item.virtual_order_id === 0 && !item.refunded_at);
|
|
},
|
|
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);
|
|
});
|
|
},
|
|
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) {
|
|
let data = cards.filter(el => {
|
|
return state.cards.findIndex(v => {
|
|
return v.sim === el.sim && v.order_id === el.order_id;
|
|
}) === -1;
|
|
});
|
|
let concatCards = state.cards.concat(data);
|
|
state.cards = concatCards;
|
|
},
|
|
SET_SELECTED(state, data) {
|
|
state.selected = data;
|
|
},
|
|
SET_SELECTED_COUNTS(state, value) {
|
|
state.counts = value;
|
|
},
|
|
SET_SELECTED_MAPPED(state, data) {
|
|
state.selectedMapped = data;
|
|
}
|
|
};
|
|
|
|
const actions = {
|
|
initOrder(context) {
|
|
context.commit('SET_RELATION_PARAMS', {});
|
|
context.commit('SET_ORDER_PARAMS', {});
|
|
context.commit('SET_CARD_PARAMS', {});
|
|
context.commit('SET_ORDER_GROUP', {});
|
|
context.commit('SET_REAL_ORDERS', []);
|
|
context.commit('SET_CARDS', []);
|
|
context.dispatch('setSelected', []);
|
|
},
|
|
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);
|
|
}
|
|
|
|
let params = { order_id: array, type };
|
|
API.cards(params).then(res => {
|
|
if (res.code === 0) {
|
|
let data = res.data;
|
|
data.map(row => {
|
|
row._rowIndex = row.sim + row.order_id;
|
|
});
|
|
context.commit('PUSH_CARDS', data);
|
|
resolve(data);
|
|
} else {
|
|
reject(res);
|
|
}
|
|
}).catch(err => {
|
|
reject(err);
|
|
});
|
|
});
|
|
},
|
|
getCardsByParams(context, params) {
|
|
return new Promise((resolve, reject) => {
|
|
API.cards(params).then(res => {
|
|
if (res.code === 0) {
|
|
let data = res.data;
|
|
|
|
data.map(row => {
|
|
row._rowIndex = row.sim + row.order_id;
|
|
});
|
|
|
|
context.commit('PUSH_CARDS', data);
|
|
resolve(data);
|
|
} else {
|
|
reject(res);
|
|
}
|
|
}).catch(err => {
|
|
reject(err);
|
|
});
|
|
});
|
|
},
|
|
setSelected(context, selected) {
|
|
let mapped = selected.map(el => { return el._rowIndex; });
|
|
context.commit('SET_SELECTED', selected);
|
|
context.commit('SET_SELECTED_MAPPED', mapped);
|
|
context.commit('SET_SELECTED_COUNTS', selected.reduce((acc, cur) => {
|
|
return acc + cur.counts;
|
|
}, 0));
|
|
},
|
|
pushSelected(context, array) {
|
|
let selected = JSON.parse(JSON.stringify(context.getters.selected));
|
|
selected = remove_selected(selected, array);
|
|
array.map(el => { selected.push(el); });
|
|
context.dispatch('setSelected', selected);
|
|
},
|
|
removeSelected(context, array) {
|
|
let selected = JSON.parse(JSON.stringify(context.getters.selected));
|
|
selected = remove_selected(selected, array);
|
|
context.dispatch('setSelected', selected);
|
|
},
|
|
removeSelectedByOrderId(context, order_id) {
|
|
if (typeof order_id !== 'object') {
|
|
order_id = [order_id];
|
|
}
|
|
|
|
let array = context.state.cards.filter(el => {
|
|
return order_id.indexOf(el.order_id) !== -1;
|
|
});
|
|
|
|
context.dispatch('removeSelected', array);
|
|
}
|
|
};
|
|
|
|
export default {
|
|
state,
|
|
getters,
|
|
mutations,
|
|
actions
|
|
};
|