274 lines
6.7 KiB
JavaScript
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
|
|
};
|