|
|
@ -1,7 +1,7 @@
|
|
|
|
import { create } from 'zustand'
|
|
|
|
import { create } from 'zustand'
|
|
|
|
import { devtools } from 'zustand/middleware'
|
|
|
|
import { devtools } from 'zustand/middleware'
|
|
|
|
import { fetchJSON, postForm } from '@/utils/request'
|
|
|
|
import { fetchJSON, postForm, postJSON } from '@/utils/request'
|
|
|
|
import { API_HOST, EMAIL_HOST } from '@/config'
|
|
|
|
import { API_HOST, API_HOST_V3, EMAIL_HOST } from '@/config'
|
|
|
|
import { isNotEmpty, prepareUrl, uniqWith } from '@/utils/commons'
|
|
|
|
import { isNotEmpty, prepareUrl, uniqWith } from '@/utils/commons'
|
|
|
|
|
|
|
|
|
|
|
|
const initialState = {
|
|
|
|
const initialState = {
|
|
|
@ -11,10 +11,11 @@ const initialState = {
|
|
|
|
lastQuotation: {},
|
|
|
|
lastQuotation: {},
|
|
|
|
quotationList: [],
|
|
|
|
quotationList: [],
|
|
|
|
otherEmailList: [],
|
|
|
|
otherEmailList: [],
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export const useOrderStore = create(
|
|
|
|
|
|
|
|
devtools(
|
|
|
|
|
|
|
|
(set, get) => ({
|
|
|
|
...initialState,
|
|
|
|
...initialState,
|
|
|
|
drawerOpen: false,
|
|
|
|
drawerOpen: false,
|
|
|
|
|
|
|
|
|
|
|
@ -22,30 +23,31 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
|
|
|
|
|
|
|
|
openDrawer: () => {
|
|
|
|
openDrawer: () => {
|
|
|
|
set(() => ({
|
|
|
|
set(() => ({
|
|
|
|
drawerOpen: true
|
|
|
|
drawerOpen: true,
|
|
|
|
}))
|
|
|
|
}))
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
closeDrawer: () => {
|
|
|
|
closeDrawer: () => {
|
|
|
|
set(() => ({
|
|
|
|
set(() => ({
|
|
|
|
drawerOpen: false
|
|
|
|
drawerOpen: false,
|
|
|
|
}))
|
|
|
|
}))
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
fetchOrderList: async (formValues, loginUser) => {
|
|
|
|
fetchOrderList: async (formValues, loginUser) => {
|
|
|
|
let fetchOrderUrl = `${API_HOST}/getwlorder?opisn=${loginUser.userIdStr}&otype=${formValues.type}`
|
|
|
|
let fetchOrderUrl = `${API_HOST}/getwlorder?opisn=${loginUser.userIdStr}&otype=${formValues.type}`
|
|
|
|
const params = {};
|
|
|
|
const params = {}
|
|
|
|
|
|
|
|
|
|
|
|
if (formValues.type === 'advance') {
|
|
|
|
if (formValues.type === 'advance') {
|
|
|
|
fetchOrderUrl = `${API_HOST}/getdvancedwlorder?opisn=${loginUser.userIdStr}`;
|
|
|
|
fetchOrderUrl = `${API_HOST}/getdvancedwlorder?opisn=${loginUser.userIdStr}`
|
|
|
|
const { type, ...formParams } = formValues;
|
|
|
|
const { type, ...formParams } = formValues
|
|
|
|
Object.assign(params, formParams)
|
|
|
|
Object.assign(params, formParams)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return fetchJSON(fetchOrderUrl, params)
|
|
|
|
return fetchJSON(fetchOrderUrl, params).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
const _result = json.result.map((order) => { return { ...order, key: order.COLI_ID } })
|
|
|
|
const _result = json.result.map((order) => {
|
|
|
|
|
|
|
|
return { ...order, key: order.COLI_ID }
|
|
|
|
|
|
|
|
})
|
|
|
|
const _result_unique = uniqWith(_result, (a, b) => a.COLI_SN === b.COLI_SN)
|
|
|
|
const _result_unique = uniqWith(_result, (a, b) => a.COLI_SN === b.COLI_SN)
|
|
|
|
set(() => ({
|
|
|
|
set(() => ({
|
|
|
|
orderList: _result_unique,
|
|
|
|
orderList: _result_unique,
|
|
|
@ -54,12 +56,10 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
fetchOrderDetail: (colisn) => {
|
|
|
|
fetchOrderDetail: (colisn) => {
|
|
|
|
return fetchJSON(`${API_HOST}/getorderinfo`, { colisn })
|
|
|
|
return fetchJSON(`${API_HOST}/getorderinfo`, { colisn }).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0 && json.result.length > 0) {
|
|
|
|
if (json.errcode === 0 && json.result.length > 0) {
|
|
|
|
const orderResult = json.result[0]
|
|
|
|
const orderResult = json.result[0]
|
|
|
|
set(() => ({
|
|
|
|
set(() => ({
|
|
|
@ -78,7 +78,6 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
appendOrderComment: async (opi_sn, coli_sn, comment) => {
|
|
|
|
appendOrderComment: async (opi_sn, coli_sn, comment) => {
|
|
|
@ -88,8 +87,7 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
formData.append('coli_sn', coli_sn)
|
|
|
|
formData.append('coli_sn', coli_sn)
|
|
|
|
formData.append('remark', comment)
|
|
|
|
formData.append('remark', comment)
|
|
|
|
|
|
|
|
|
|
|
|
return postForm(`${API_HOST}/remark_order`, formData)
|
|
|
|
return postForm(`${API_HOST}/remark_order`, formData).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
return fetchOrderDetail(coli_sn)
|
|
|
|
return fetchOrderDetail(coli_sn)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -113,8 +111,7 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
formData.append('onlyusa', 0)
|
|
|
|
formData.append('onlyusa', 0)
|
|
|
|
formData.append('useyhm', 0)
|
|
|
|
formData.append('useyhm', 0)
|
|
|
|
|
|
|
|
|
|
|
|
return postForm(`${API_HOST}/generate_payment_links`, formData)
|
|
|
|
return postForm(`${API_HOST}/generate_payment_links`, formData).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
return json.result
|
|
|
|
return json.result
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -124,20 +121,17 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
fetchHistoryOrder: (userId, email, whatsappid = '') => {
|
|
|
|
fetchHistoryOrder: (userId, email, whatsappid = '') => {
|
|
|
|
return fetchJSON(`${API_HOST}/query_guest_order`, { opisn: userId, whatsappid, email: email })
|
|
|
|
return fetchJSON(`${API_HOST}/query_guest_order`, { opisn: userId, whatsappid, email: email }).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
return json.result
|
|
|
|
return json.result
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
importEmailMessage: ({ orderId, orderNumber }) => {
|
|
|
|
importEmailMessage: ({ orderId, orderNumber }) => {
|
|
|
|
return fetchJSON(`${API_HOST}/generate_email_msg`, { coli_sn: orderId, coli_id: orderNumber })
|
|
|
|
return fetchJSON(`${API_HOST}/generate_email_msg`, { coli_sn: orderId, coli_id: orderNumber }).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
return json
|
|
|
|
return json
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -149,10 +143,9 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
batchImportEmailMessage: () => {
|
|
|
|
batchImportEmailMessage: () => {
|
|
|
|
const { orderList } = get()
|
|
|
|
const { orderList } = get()
|
|
|
|
|
|
|
|
|
|
|
|
const orderPromiseList = orderList.map(order => {
|
|
|
|
const orderPromiseList = orderList.map((order) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
fetchJSON(`${API_HOST}/generate_email_msg`, { coli_sn: order.COLI_SN, coli_id: order.COLI_ID })
|
|
|
|
fetchJSON(`${API_HOST}/generate_email_msg`, { coli_sn: order.COLI_SN, coli_id: order.COLI_ID }).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
resolve(json)
|
|
|
|
resolve(json)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -163,13 +156,12 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
Promise.all(orderPromiseList).then((values) => {
|
|
|
|
Promise.all(orderPromiseList).then((values) => {
|
|
|
|
console.log(values);
|
|
|
|
console.log(values)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
fetchOtherEmail: (coli_sn) => {
|
|
|
|
fetchOtherEmail: (coli_sn) => {
|
|
|
|
return fetchJSON(`${EMAIL_HOST}/email_supplier`, { coli_sn })
|
|
|
|
return fetchJSON(`${EMAIL_HOST}/email_supplier`, { coli_sn }).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
set(() => ({
|
|
|
|
set(() => ({
|
|
|
|
otherEmailList: json.result.MailInfo ?? [],
|
|
|
|
otherEmailList: json.result.MailInfo ?? [],
|
|
|
@ -180,14 +172,55 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
setOrderPropValue: async (colisn, propName, value) => {
|
|
|
|
updateWhatsapp: (coli_sn, number) => {
|
|
|
|
|
|
|
|
return postJSON(`${API_HOST_V3}/order_update`, {
|
|
|
|
|
|
|
|
coli_sn: coli_sn,
|
|
|
|
|
|
|
|
set: {
|
|
|
|
|
|
|
|
concat_whatsapp: number,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}).then((json) => {
|
|
|
|
|
|
|
|
if (json.errcode > 0) {
|
|
|
|
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
set((state) => ({
|
|
|
|
|
|
|
|
customerDetail: {
|
|
|
|
|
|
|
|
...state.customerDetail,
|
|
|
|
|
|
|
|
whatsapp_phone_number: number,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
if (propName === 'orderlabel') {
|
|
|
|
updateExtraInfo: (coli_sn, extra) => {
|
|
|
|
|
|
|
|
const { orderDetail } = get()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return postJSON(`${API_HOST_V3}/order_update`, {
|
|
|
|
|
|
|
|
coli_sn: coli_sn,
|
|
|
|
|
|
|
|
set: {
|
|
|
|
|
|
|
|
extra_info: extra,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}).then((json) => {
|
|
|
|
|
|
|
|
if (json.errcode > 0) {
|
|
|
|
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
set((state) => ({
|
|
|
|
set((state) => ({
|
|
|
|
orderDetail: {
|
|
|
|
orderDetail: {
|
|
|
|
...state.orderDetail,
|
|
|
|
...state.orderDetail,
|
|
|
|
tags: value
|
|
|
|
COLI_Introduction: extra,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setOrderPropValue: async (colisn, propName, value) => {
|
|
|
|
|
|
|
|
if (propName === 'orderlabel') {
|
|
|
|
|
|
|
|
set((state) => ({
|
|
|
|
|
|
|
|
orderDetail: {
|
|
|
|
|
|
|
|
...state.orderDetail,
|
|
|
|
|
|
|
|
tags: value,
|
|
|
|
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
}))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -195,29 +228,30 @@ export const useOrderStore = create(devtools((set, get) => ({
|
|
|
|
set((state) => ({
|
|
|
|
set((state) => ({
|
|
|
|
orderDetail: {
|
|
|
|
orderDetail: {
|
|
|
|
...state.orderDetail,
|
|
|
|
...state.orderDetail,
|
|
|
|
states: value
|
|
|
|
states: value,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
}))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return fetchJSON(`${API_HOST}/setorderstatus`, { colisn, stype: propName, svalue: value })
|
|
|
|
return fetchJSON(`${API_HOST}/setorderstatus`, { colisn, stype: propName, svalue: value }).then((json) => {
|
|
|
|
.then(json => {
|
|
|
|
|
|
|
|
if (json.errcode > 0) {
|
|
|
|
if (json.errcode > 0) {
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
throw new Error(json?.errmsg + ': ' + json.errcode)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
}),
|
|
|
|
}), { name: 'orderStore' }))
|
|
|
|
{ name: 'orderStore' },
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
export const OrderLabelDefaultOptions = [
|
|
|
|
export const OrderLabelDefaultOptions = [
|
|
|
|
{ value: 240003, label: '重点', emoji: '❣️' },
|
|
|
|
{ value: 240003, label: '重点', emoji: '❣️' },
|
|
|
|
{ value: 240002, label: '次重点', emoji: '❗' },
|
|
|
|
{ value: 240002, label: '次重点', emoji: '❗' },
|
|
|
|
{ value: 240001, label: '一般', emoji: '' }
|
|
|
|
{ value: 240001, label: '一般', emoji: '' },
|
|
|
|
]
|
|
|
|
]
|
|
|
|
export const OrderLabelDefaultOptionsMapped = OrderLabelDefaultOptions.reduce((acc, cur) => {
|
|
|
|
export const OrderLabelDefaultOptionsMapped = OrderLabelDefaultOptions.reduce((acc, cur) => {
|
|
|
|
return { ...acc, [String(cur.value)]: cur }
|
|
|
|
return { ...acc, [String(cur.value)]: cur }
|
|
|
|
}, {}) ;
|
|
|
|
}, {})
|
|
|
|
|
|
|
|
|
|
|
|
export const OrderStatusDefaultOptions = [
|
|
|
|
export const OrderStatusDefaultOptions = [
|
|
|
|
{ value: 1, label: '新订单', emoji: '' },
|
|
|
|
{ value: 1, label: '新订单', emoji: '' },
|
|
|
@ -227,7 +261,7 @@ export const OrderStatusDefaultOptions = [
|
|
|
|
{ value: 5, label: '成行', emoji: '💰' },
|
|
|
|
{ value: 5, label: '成行', emoji: '💰' },
|
|
|
|
{ value: 6, label: '丢失', emoji: '🎈' },
|
|
|
|
{ value: 6, label: '丢失', emoji: '🎈' },
|
|
|
|
{ value: 7, label: '取消', emoji: '🚫' },
|
|
|
|
{ value: 7, label: '取消', emoji: '🚫' },
|
|
|
|
{ value: 8, label: '未报价', emoji: '' }
|
|
|
|
{ value: 8, label: '未报价', emoji: '' },
|
|
|
|
]
|
|
|
|
]
|
|
|
|
export const OrderStatusDefaultOptionsMapped = OrderStatusDefaultOptions.reduce((acc, cur) => {
|
|
|
|
export const OrderStatusDefaultOptionsMapped = OrderStatusDefaultOptions.reduce((acc, cur) => {
|
|
|
|
return { ...acc, [String(cur.value)]: cur }
|
|
|
|
return { ...acc, [String(cur.value)]: cur }
|
|
|
@ -239,7 +273,7 @@ export const OrderStatusDefaultOptionsMapped = OrderStatusDefaultOptions.reduce(
|
|
|
|
export const RemindStateDefaultOptions = [
|
|
|
|
export const RemindStateDefaultOptions = [
|
|
|
|
{ value: '1', label: '一催' },
|
|
|
|
{ value: '1', label: '一催' },
|
|
|
|
{ value: '2', label: '二催' },
|
|
|
|
{ value: '2', label: '二催' },
|
|
|
|
{ value: '3', label: '三催' }
|
|
|
|
{ value: '3', label: '三催' },
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -251,15 +285,15 @@ export const remindStatusOptions = [
|
|
|
|
{ value: 3, label: '已发三催' },
|
|
|
|
{ value: 3, label: '已发三催' },
|
|
|
|
{ value: 'important', label: '重点团' },
|
|
|
|
{ value: 'important', label: '重点团' },
|
|
|
|
{ value: 'sendsurvey', label: '已发 travel advisor survey' },
|
|
|
|
{ value: 'sendsurvey', label: '已发 travel advisor survey' },
|
|
|
|
];
|
|
|
|
]
|
|
|
|
export const remindStatusOptionsMapped = remindStatusOptions.reduce((acc, cur) => {
|
|
|
|
export const remindStatusOptionsMapped = remindStatusOptions.reduce((acc, cur) => {
|
|
|
|
return { ...acc, [String(cur.value)]: cur }
|
|
|
|
return { ...acc, [String(cur.value)]: cur }
|
|
|
|
}, {});
|
|
|
|
}, {})
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @param {Object} params { coli_sn, remindstate }
|
|
|
|
* @param {Object} params { coli_sn, remindstate }
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
export const fetchSetRemindStateAction = async (params) => {
|
|
|
|
export const fetchSetRemindStateAction = async (params) => {
|
|
|
|
const { errcode, result } = await fetchJSON(`${API_HOST}/SetRemindState`, params);
|
|
|
|
const { errcode, result } = await fetchJSON(`${API_HOST}/SetRemindState`, params)
|
|
|
|
return errcode === 0 ? result : {};
|
|
|
|
return errcode === 0 ? result : {}
|
|
|
|
};
|
|
|
|
}
|
|
|
|