Merge remote-tracking branch 'origin/main' into dev/chat

dev/chat
Lei OT 2 years ago
commit 16688f2cf4

@ -15,13 +15,20 @@ const useOrderStore = create((set, get) => ({
fetchOrderDetail: async (colisn) => {
const json = await fetchJSON(`${API_HOST}/getorderinfo`, { colisn })
if (json.errcode === 0 && json.result.length > 0) {
const orderResult = json.result[0]
set(() => ({
orderDetail: json.result[0],
customerDetail: json.result[0].contact[0],
lastQuotation: json.result[0].quotes.length > 0 ? json.result[0].quotes[0] : {},
orderDetail: orderResult,
customerDetail: orderResult.contact.length > 0 ? orderResult.contact[0] : {},
lastQuotation: orderResult.quotes.length > 0 ? orderResult.quotes[0] : {},
}))
}
}
},
setOrderPropValue: async (colisn, propName, value) => {
const json = await fetchJSON(`${API_HOST}/setorderstatus`, { colisn, stype: propName, svalue: value })
console.info(json)
},
}))
export default useOrderStore

@ -103,7 +103,11 @@ function AuthApp() {
trigger={['click']}
>
<a onClick={(e) => e.preventDefault()} style={{ color: colorPrimary }}>
<Space><Avatar src={loginUser.avatarUrl}>{loginUser.username.substring(1)}</Avatar>{loginUser.username}<DownOutlined /></Space>
<Space><Avatar
style={{
backgroundColor: colorPrimary,
}}
src={loginUser.avatarUrl}>{loginUser.username.substring(1)}</Avatar>{loginUser.username}<DownOutlined /></Space>
</a>
</Dropdown>

@ -67,6 +67,29 @@ const SearchForm = memo(function ({ onSubmit }) {
]}
/>
</Form.Item>
<Form.Item label='顾问' name='travel' style={{width: '200px'}}>
<Select
showSearch
placeholder='Select a person'
optionFilterProp='children'
filterOption={(input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase())}
options={[
{
value: 'Coco',
label: 'Coco',
},
{
value: 'Ann',
label: 'Ann',
},
{
value: 'Lora',
label: 'Lora',
},
]}
/>
</Form.Item>
<Form.Item label='关键词' name='orderNumber'>
<Input placeholder='关键词' allowClear />
</Form.Item>

@ -9,14 +9,14 @@ import QuotesHistory from './QuotesHistory'
import useOrderStore from '@/stores/OrderStore'
const CustomerProfile = (() => {
let { state } = useLocation()
const { order_sn: order_sn } = useParams()
const { orderDetail, customerDetail, lastQuotation, fetchOrderDetail } = useOrderStore()
const { loginUser: currentUser } = useAuthContext()
const { orderDetail, customerDetail, lastQuotation,
fetchOrderDetail, setOrderPropValue
} = useOrderStore()
useEffect(() => {
fetchOrderDetail(order_sn)
}, [])
}, [order_sn])
return (
<div className=' divide-x-0 divide-y divide-dashed divide-gray-300 '>
@ -29,9 +29,13 @@ const CustomerProfile = (() => {
width: '100%'
}}
variant='borderless'
defaultValue={orderDetail.tags}
onSelect={(value) => {
console.info(value)
setOrderPropValue(order_sn, 'orderlabel', value)
}}
value={orderDetail.tags}
options={[
{ value: 0, label: '未设置' },
{ value: 0, label: '未设置', disabled: true, },
{ value: 240003, label: '重点' },
{ value: 240002, label: '次重点' },
{ value: 240001, label: '一般' }
@ -42,7 +46,11 @@ const CustomerProfile = (() => {
width: '100%'
}}
variant='borderless'
defaultValue={orderDetail.states}
onSelect={(value) => {
console.info(value)
setOrderPropValue(order_sn,'orderstatus', value)
}}
value={orderDetail.states}
options={[
{ value: 1, label: '新订单' },
{ value: 2, label: '报价中' },

@ -267,30 +267,64 @@ function OrderList({ formValues }) {
showTotal: (total) => { return `总数:${total}` }
}
return (
<Collapse defaultActiveKey={['1', '2', '3']} items={[
{
key: '1',
label: 'AH 订单25',
children: <Table key='AH Order Table' loading={loading} dataSource={orderData}
columns={orderColumns}
pagination={paginationProps} />
},
{
key: '2',
label: 'CH 订单25',
children: <Table key='CH Order Table' loading={loading} dataSource={orderData}
columns={orderColumns}
pagination={paginationProps} />
},
function groupByParam(array, param) {
return array.reduce((result, item) => {
(result[item[param]] = result[item[param]] || []).push(item);
return result;
}, {});
}
const deptMap = new Map([
['1', 'CH直销组'],
['2','CH大客户组'],
['7','市场推广'],
['8','德语市场'],
['9','日语市场'],
['10', '商旅市场'],
['11', '法语市场'],
['12', '西语市场'],
['13', '英文在线组'],
['14', '商务Biztravel'],
['15', 'CH产品'],
['16', 'APP移动项目组'],
['17', 'ChinaTravel组'],
['18', 'CT市场'],
['20', '俄语市场'],
['21', '意语市场'],
['22', '爱游网'],
['23', '三峡站'],
['24', '桂林站'],
['25', '上海站'],
['26', '北京站'],
['27', '西藏站'],
['28', 'AH亚洲项目组'],
['29', 'DMC地接组'],
['30', 'Trippest项目组'],
['31', '花梨鹰'],
['32', 'Daytours板块'],
['33', 'GH项目组'],
['34', 'trippest网站'],
['35', 'newsletter营销'],
])
const groupOrderData = groupByParam(orderData, 'OPI_DEI_SN')
const deptKeys = Object.keys(groupOrderData)
const collapseItems = []
deptKeys.forEach(deptNo => {
const deptOrderList = groupOrderData[deptNo]
collapseItems.push(
{
key: '3',
label: 'GH 订单25',
children: <Table key='GH Order Table' loading={loading} dataSource={orderData}
key: deptNo,
label: deptMap.get(deptNo) + '订单',
children: <Table key={'Order Table' + deptNo} loading={loading} dataSource={deptOrderList}
columns={orderColumns}
pagination={paginationProps} />
}]}
/>)
}
)
})
return (<Collapse bordered={false} activeKey={deptKeys} items={collapseItems} />)
}
function OrderFollow() {

Loading…
Cancel
Save