You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/src/stores/OrderStore.js

133 lines
4.0 KiB
JavaScript

import { create } from 'zustand'
import { fetchJSON } from '@/utils/request'
import { API_HOST } from '@/config'
import { isNotEmpty, prepareUrl } from '@/utils/commons'
export const useOrderStore = create((set, get) => ({
orderList: [],
orderDetail: {},
customerDetail: {},
lastQuotation: {},
quotationList: [],
fetchOrderList: async (formValues, loginUser) => {
let fetchOrderUrl = `${API_HOST}/getwlorder?opisn=${loginUser.userIdStr}&otype=${formValues.type}`
if (formValues.type === 'advance') {
let fromDate = null
let thruDate = null
if (isNotEmpty(formValues.startDateRange)) {
fromDate = formValues.startDateRange[0].format('YYYY-MM-DD')
thruDate = formValues.startDateRange[1].format('YYYY-MM-DD')
}
let confirmFromDate = null
let confirmThruDate = null
if (isNotEmpty(formValues.confirmDateRange)) {
confirmFromDate = formValues.confirmDateRange[0].format('YYYY-MM-DD')
confirmThruDate = formValues.confirmDateRange[1].format('YYYY-MM-DD')
}
fetchOrderUrl = prepareUrl('https://p9axztuwd7x8a7.mycht.cn/whatsapp_server/getdvancedwlorder')
.append('opisn', loginUser.userIdStr)
.append('startdate', fromDate)
.append('enddate', thruDate)
.append('tag', formValues.orderLabel)
.append('orderstate', formValues.orderStatus)
.append('remindstate', formValues.remindState)
.append('coli_id', formValues.orderNumber)
.append('firstName', formValues.firstName)
.append('lastName', formValues.lastName)
.append('emailphone', formValues.emailOrPhone)
.append('ConfirmDateStart', confirmFromDate)
.append('ConfirmDateEnd', confirmThruDate)
.build()
}
return fetchJSON(fetchOrderUrl)
.then(json => {
if (json.errcode === 0) {
set(() => ({
orderList: json.result.map((order) => { return { ...order, key: order.COLI_ID } }),
}))
} else {
throw new Error(json?.errmsg + ': ' + json.errcode)
}
})
},
fetchOrderDetail: (colisn) => {
return fetchJSON(`${API_HOST}/getorderinfo`, { colisn })
.then(json => {
if (json.errcode === 0 && json.result.length > 0) {
const orderResult = json.result[0]
set(() => ({
orderDetail: orderResult,
customerDetail: orderResult.contact.length > 0 ? orderResult.contact[0] : {},
lastQuotation: orderResult.quotes.length > 0 ? orderResult.quotes[0] : {},
quotationList: orderResult.quotes,
}))
} else {
throw new Error(json?.errmsg + ': ' + json.errcode)
}
})
},
setOrderPropValue: async (colisn, propName, value) => {
if (propName === 'orderlabel') {
set((state) => ({
orderDetail: {
...state.orderDetail,
tags: value
}
}))
}
if (propName === 'orderstatus') {
set((state) => ({
orderDetail: {
...state.orderDetail,
states: value
}
}))
}
return fetchJSON(`${API_HOST}/setorderstatus`, { colisn, stype: propName, svalue: value })
.then(json => {
if (json.errcode > 0) {
throw new Error(json?.errmsg + ': ' + json.errcode)
}
})
},
}))
export const OrderLabelDefaultOptions = [
{ value: 240003, label: '重点' },
{ value: 240002, label: '次重点' },
{ value: 240001, label: '一般' }
]
export const OrderStatusDefaultOptions = [
{ value: 1, label: '新订单' },
{ value: 2, label: '报价中' },
{ value: 3, label: '以后联系' },
{ value: 4, label: '等待付订金' },
{ value: 5, label: '成行' },
{ value: 6, label: '丢失' },
{ value: 7, label: '取消' },
{ value: 8, label: '未报价' }
]
export const RemindStateDefaultOptions = [
{ value: '1', label: '一催' },
{ value: '2', label: '二催' },
{ value: '3', label: '三催' }
]