Commit cc50ec96 authored by 前端-许佳敏's avatar 前端-许佳敏

销售订单

parent 7be43942
......@@ -302,11 +302,11 @@ const TranactionRoute = {
},
// 订单详情
{
path: '/memberCenter/tranactionAbility/saleOrder/orderDetail',
name: 'orderDetail',
path: '/memberCenter/tranactionAbility/saleOrder/orderPreview',
name: 'orderPreview',
hideInMenu: true,
noMargin: true,
component: '@/pages/transaction/saleOrder/orderDetail'
component: '@/pages/transaction/saleOrder/orderPreview'
},
// 一级审核
{
......@@ -332,6 +332,36 @@ const TranactionRoute = {
name: 'readyPayResult',
component: '@/pages/transaction/saleOrder/readyPayResult'
},
// 新增销售发货单列表
{
path: '/memberCenter/tranactionAbility/saleOrder/addSaleDelevedOrder',
name: 'addSaleDelevedOrder',
component: '@/pages/transaction/saleOrder/addSaleDelevedOrder'
},
// 待新增物流单
{
path: '/memberCenter/tranactionAbility/saleOrder/readyAddLogisticsOrder',
name: 'readyAddLogisticsOrder',
component: '@/pages/transaction/saleOrder/readyAddLogisticsOrder'
},
// 待确认发货单
{
path: '/memberCenter/tranactionAbility/saleOrder/readyConfirmDelevedOrder',
name: 'readyConfirmDelevedOrder',
component: '@/pages/transaction/saleOrder/readyConfirmDelevedOrder'
},
// 待确认回单
{
path: '/memberCenter/tranactionAbility/saleOrder/readyConfirmReturnOrder',
name: 'readyConfirmReturnOrder',
component: '@/pages/transaction/saleOrder/readyConfirmReturnOrder'
},
// 待归档订单
{
path: '/memberCenter/tranactionAbility/saleOrder/readyReturnDocument',
name: 'readyReturnDocument',
component: '@/pages/transaction/saleOrder/readyReturnDocument'
},
]
},
// 交易规则
......
.overflow-text {
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
\ No newline at end of file
import React from 'react'
import style from './index.less'
import { Tooltip } from 'antd'
export interface OverflowTextProps {
[key: string]: any
}
const OverflowText:React.FC<OverflowTextProps> = ({children, ...props}) => {
return (
<Tooltip placement='topLeft' title={children} arrowPointAtCenter>
<div className={style['overflow-text']} {...props}>
{children}
</div>
</Tooltip>
)
}
OverflowText.defaultProps = {}
export default OverflowText
\ No newline at end of file
......@@ -679,12 +679,22 @@ export enum SaleOrderInsideWorkState {
/**
* 确认回单
*/
CONFIRM_RECEIPT,
CONFIRM_RECEIPT = 23,
/**
* 订单归档
*/
FILLING_ORDER,
/**
* 销售发货单待审核
*/
READY_DELEVED_APPROVED,
/**
* 销售发货单审核成功
*/
DELIVERY_APPROVED_SUCCESS
}
// 支付外部状态
......@@ -740,7 +750,7 @@ export const SaleOrderInsideWorkStateTexts = {
2: '一级审核订单',
3: '二级审核订单',
4: '确认订单',
5: '接受订单',
5: '接受订单',
6: '不接受订单',
7: '提交一级审核订单不通过',
8: '提交二级审核订单不通过',
......@@ -750,8 +760,10 @@ export const SaleOrderInsideWorkStateTexts = {
18: '发货单创建',
19: '新增物流单',
20: '订单发货确认',
21: '确认回单',
22: '订单归档',
23: '确认回单',
24: '订单归档',
25: '待审核发货单',
26: '发货单审核成功'
}
export const PayOutWorkStateTexts = {
......
......@@ -160,11 +160,18 @@ export default {
'menu.tranactionAbility.saleOrder': '销售订单',
'menu.tranactionAbility.saleOrder.saleOrderSearch': '订单查询',
'menu.tranactionAbility.saleOrder.readyApprovedOrder': '待审核订单',
'menu.tranactionAbility.saleOrder.orderDetail': '订单详情',
'menu.tranactionAbility.saleOrder.orderPreview': '查看订单',
'menu.tranactionAbility.saleOrder.firstApprovedOrder': '待审核订单(一级)',
'menu.tranactionAbility.saleOrder.secondApprovedOrder': '待审核订单(二级)',
'menu.tranactionAbility.saleOrder.readyConfirmOrder': '待确认订单',
'menu.tranactionAbility.saleOrder.readyPayResult': '待确认支付结果',
'menu.tranactionAbility.saleOrder.addSaleDelevedOrder': '待新增销售发货单',
'menu.tranactionAbility.saleOrder.addSaleDelevedOrderDetail': '新增销售发货单',
'menu.tranactionAbility.saleOrder.readyAddLogisticsOrder': '待新增物流单',
'menu.tranactionAbility.saleOrder.readyConfirmDelevedOrder': '待确认发货订单',
'menu.tranactionAbility.saleOrder.readyConfirmReturnOrder': '待确认回单',
'menu.tranactionAbility.saleOrder.readyReturnDocument': '待确认归档',
//需求报价
'menu.tranactionAbility.enquiryOffer': '需求报价',
......
......@@ -103,7 +103,7 @@ const OrderPayModal:React.FC<OrderPayModalProps> = (props) => {
const params = {
id: Number(id),
payOrderUrls,
payOrderUrls: payOrderUrls.join(','),
paymentInformationId
}
......
......@@ -4,7 +4,7 @@ import { Button, Row, Col } from 'antd'
import { PublicApi } from '@/services/api'
import EyePreview from '@/components/EyePreview'
import { formatTimeString } from '@/utils'
import { ORDER_TYPE } from '@/constants'
import { ORDER_TYPE, PurchaseOrderInsideWorkState, SaleOrderInsideWorkState } from '@/constants'
import StatusColors from '@/pages/transaction/components/StatusColors'
import { FieldTimeOutlined } from '@ant-design/icons'
import {
......@@ -19,39 +19,6 @@ import {
} from 'bizcharts';
import DataSet from "@antv/data-set";
// 圆形环状金额显示
const CircleChart = props => {
const { sumPrice = 100, alreadyPay = 10 } = props
const { DataView } = DataSet;
const dv = new DataView();
const userData = [
{ type: '总金额', value: sumPrice - alreadyPay },
{ type: '已支付', value: alreadyPay }
];
const userDv = new DataView();
userDv.source(userData).transform({
type: 'percent',
field: 'value',
dimension: 'type',
as: 'percent',
});
return <Chart placeholder={false} height={40} autoFit>
<Legend visible={false} />
{/* 绘制图形 */}
<View data={userDv.rows}>
<Coordinate type="theta" innerRadius={0.75} />
<Interval
position="percent"
adjust="stack"
color={['type', ['#EBECF0', '#41CC9E']]}
tooltip={false}
/>
</View>
</Chart>
}
// 业务hooks, 待支付订单
export const useSelfTable = () => {
const ref = useRef<any>({})
......@@ -64,7 +31,7 @@ export const useSelfTable = () => {
key: 'orderNo',
render: (text, record) => {
// 查看订单, 需根据状态显示不同schema
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderDetail?page_type=-1&id=${record.id}&preview=1`}>
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderPreview?page_type=-1&id=${record.id}&preview=1`}>
{text}
</EyePreview>
}
......@@ -114,9 +81,9 @@ export const useSelfTable = () => {
{
title: '内部状态',
align: 'center',
dataIndex: 'interiorState',
key: 'interiorState',
render: (text) => <StatusColors status={text} type='inside'/>
dataIndex: 'purchaseOrderInteriorState',
key: 'purchaseOrderInteriorState',
render: (text) => <StatusColors status={text} type='saleInside'/>
},
{
title: '操作',
......@@ -124,19 +91,23 @@ export const useSelfTable = () => {
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
<Button type='link' onClick={() => handleConfirm(record)}>审核</Button>
<Button type='link' onClick={() => handleCancel(record.id)}>发货</Button>
{/* 支付结果确认到账= 待审核状态 */}
{ record.purchaseOrderInteriorState === SaleOrderInsideWorkState.READY_DELEVED_APPROVED &&
<Button type='link' onClick={() => handleConfirm(record)}>审核</Button>
}
{ record.purchaseOrderInteriorState === SaleOrderInsideWorkState.SALE_CREATE_DELIVED_ORDER &&
<Button type='link' onClick={() => handleAdd(record)}>新增发货单</Button>
}
</>
}
]
const handleConfirm = async (record) => {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderDetail?page_type=4&id=${record.id}&preview=0`)
history.push(`/memberCenter/tranactionAbility/saleOrder/addSaleDelevedOrder/detail?id=${record.id}&preview=0`)
}
const handleCancel = async (id) => {
await PublicApi.postOrderPurchaseOrderCancel({id})
ref.current.reload()
const handleAdd = async (record) => {
history.push(`/memberCenter/tranactionAbility/stockSellStorage/addBills?relevanceInvoicesId=${record.id}&invoicesTypeId=S002&relevanceInvoices=1`)
}
return {
......
......@@ -13,7 +13,7 @@ export const baseOrderListColumns: any[] = [
key: 'orderNo',
render: (text, record) => {
// 查看订单, 需根据状态显示不同schema
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderDetail?page_type=-1&id=${record.id}&preview=1`}>
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderPreview?page_type=-1&id=${record.id}&preview=1`}>
{text}
</EyePreview>
}
......
import { createContext } from 'react';
export const ReadyAddOrderDetailContext = createContext<any>({})
\ No newline at end of file
export const ReadyAddOrderDetailContext = createContext<any>({})
export const OrderDetailByIdContext = createContext<any>({})
\ No newline at end of file
......@@ -13,7 +13,7 @@ export const useSelfTable = () => {
const handleSubmit = async (record) => {
if (record.purchaseOrderInteriorState === SaleOrderInsideWorkState.ONE_LEVEL_AUDIT_ORDER) {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderDetail?id=${record.id}&preview=0&page_type=1`)
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?id=${record.id}&preview=0&page_type=1`)
}
}
const secondColumns: any[] = baseOrderListColumns.concat([
......
......@@ -5,6 +5,7 @@ import { OrderDetailContext } from '../../context'
import { PayOutWorkState } from '@/constants'
import { PublicApi } from '@/services/api'
import { history, Link } from 'umi'
import OverflowText from '@/components/OverflowText'
export interface OrderPayResultModalProps {
type: 'default' | 'preview',
......@@ -16,6 +17,8 @@ const OrderPayResultModal:React.FC<OrderPayResultModalProps> = ({type, currentRe
const { id } = usePageStatus()
const [visible, setVisible] = useState(false)
const canCtlData = data.paymentInformationResponses.find(v => v.externalState === PayOutWorkState.READY_CONFIRM_RESULT) || {}
const transData = canCtlData.payOrderUrls?.split(',') || []
useEffect(() => {
if (currentRef) {
currentRef.current = {
......@@ -32,7 +35,7 @@ const OrderPayResultModal:React.FC<OrderPayResultModalProps> = ({type, currentRe
const handleConfirm = async (isReady) => {
const params = {
state: isReady,
id,
id: Number(id),
paymentInformationId: canCtlData.id
}
......@@ -46,7 +49,8 @@ const OrderPayResultModal:React.FC<OrderPayResultModalProps> = ({type, currentRe
<Modal
title={type === 'default' ? '确认支付结果' : '查看支付结果'}
visible={visible}
footer={(type === 'default' && canCtlData.payOrderUrls) ? <Space>
onCancel={handleCancel}
footer={(type === 'default' && transData) ? <Space>
<Button onClick={handleCancel}>取消</Button>
<Button onClick={() => handleConfirm(0)} type='dashed'>确认未到账</Button>
<Button onClick={() => handleConfirm(1)} type='primary'>确认到账</Button>
......@@ -54,10 +58,12 @@ const OrderPayResultModal:React.FC<OrderPayResultModalProps> = ({type, currentRe
>
<List
itemLayout="horizontal"
dataSource={canCtlData.payOrderUrls || []}
renderItem={item => (
<List.Item extra={<Link to={item} target='_blank'>预览</Link>}>
{item}
dataSource={transData || []}
renderItem={(item: string) => (
<List.Item style={{fontSize: 12}} extra={<a href={item} target='_blank'>预览</a>}>
<OverflowText style={{flex: '.9'}}>
{item}
</OverflowText>
</List.Item>
)}
/>
......
......@@ -27,7 +27,7 @@ const TabHeader = ({dataSource}) => {
<Row justify='space-between' align='middle' style={{width: '100%'}}>
<Col className={style.smallnumber}>{dataSource.payPrice || 0}</Col>
<Col>
{ dataSource.externalState === PayOutWorkState.READY_PAY && <a onClick={() => {
{ dataSource.externalState === PayOutWorkState.READY_CONFIRM_RESULT && <a onClick={() => {
setPayResultType('preview')
payResultVisible.current.setVisible(true)
}}>查看</a> }
......
......@@ -9,6 +9,8 @@ import styled from 'styled-components'
import ModalForm from '@/components/ModalForm'
import { createFormActions } from '@formily/antd'
import MellowCard from '@/components/MellowCard'
import { SALE_ORDER_STATUS } from '../../constant'
import { usePageStatus } from '@/hooks/usePageStatus'
export interface OrderProductTableProps {}
......@@ -39,7 +41,7 @@ const RowStyle = styled(props => <Row style={{marginTop: 12}} justify='end' {...
const modalPriceActions = createFormActions()
// 总计金额联动框
export const MoneyTotalBox = ({ dataSource }) => {
export const MoneyTotalBox = ({ dataSource, isEditData }) => {
const { orderProductRequests = [], receiverAddressId } = dataSource || {}
const sum = orderProductRequests.reduce((prev, next) => prev + parseInt((next.price || 0)), 0)
const modelRef = useRef<any>({})
......@@ -79,7 +81,7 @@ export const MoneyTotalBox = ({ dataSource }) => {
<div>{sum}</div>
</Col>
<Col span={2}>
<div>运费 <SettingOutlined style={{marginLeft: 8}} onClick={handleSetting}/></div>
<div>运费 { isEditData && <SettingOutlined style={{marginLeft: 8}} onClick={handleSetting}/>}</div>
<div>{freePrice}</div>
</Col>
<Col span={2}>
......@@ -207,8 +209,10 @@ const EditableCell: React.FC<EditableCellProps> = ({
const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
const { ctl, data } = useContext(OrderDetailContext)
const { page_type } = usePageStatus()
const { orderProductRequests = [] } = data || {}
// 判断是否可操作当前表格
const isEditData = SALE_ORDER_STATUS.READY_APPROVED_ORDER === parseInt(page_type)
const productComponents = {
body: {
row: EditableRow,
......@@ -297,7 +301,7 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
dataIndex: 'price',
align: 'left',
key: 'price',
editable: true
editable: isEditData
},
{
title: '会员折扣',
......@@ -368,7 +372,7 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
rowKey='id'
pagination={false}
/>
<MoneyTotalBox dataSource={data}/>
<MoneyTotalBox dataSource={data} isEditData={isEditData}/>
</MellowCard>
)
}
......
import React from 'react'
import { history } from 'umi'
import { Card, Button, Space, Dropdown, Menu } from 'antd'
import { StandardTable } from 'god'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PublicApi } from '@/services/api'
import { useSelfTable } from './model/useSelfTable'
import { PlusCircleOutlined, DownOutlined, DeleteOutlined } from '@ant-design/icons'
import DropDeleteDown from '@/components/DropDeleteDown'
import { tableListSchema } from './schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import Submit from '@/components/NiceForm/components/Submit'
import { DatePicker } from '@formily/antd-components'
// 待新增物流单
export interface FirstApprovedOrderProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.getOrderLogisticsOrderList(params)
return data
}
// TODO
const FirstApprovedOrder:React.FC<FirstApprovedOrderProps> = (props) => {
const {
columns
} = useSelfTable()
return <PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
columns={columns}
rowKey={'orderNo'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePicker: DatePicker.RangePicker,
Submit
}
}
}}
/>
</Card>
</PageHeaderWrapper>
}
FirstApprovedOrder.defaultProps = {}
export default FirstApprovedOrder
\ No newline at end of file
import React, { useRef } from 'react'
import { history, Link } from 'umi'
import { Button, Row, Col } from 'antd'
import { PublicApi } from '@/services/api'
import EyePreview from '@/components/EyePreview'
import { formatTimeString } from '@/utils'
import { ORDER_TYPE, PurchaseOrderInsideWorkState, SaleOrderInsideWorkState } from '@/constants'
import StatusColors from '@/pages/transaction/components/StatusColors'
import { FieldTimeOutlined } from '@ant-design/icons'
import {
Chart,
Interval,
Axis,
Tooltip,
Coordinate,
Legend,
View,
Annotation,
} from 'bizcharts';
import DataSet from "@antv/data-set";
// 业务hooks, 待支付订单
export const useSelfTable = () => {
const ref = useRef<any>({})
const customOrderColumns: any[] = [
{
title: '订单号',
align: 'center',
dataIndex: 'orderNo',
key: 'orderNo',
render: (text, record) => {
// 查看订单, 需根据状态显示不同schema
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderPreview?page_type=-1&id=${record.id}&preview=1`}>
{text}
</EyePreview>
}
},
{
title: '订单商品摘要/下单时间',
align: 'center',
dataIndex: 'orderThe',
key: 'orderThe',
render: (text, record) => <>
<div>{record.orderThe}</div>
<div><FieldTimeOutlined />{formatTimeString(record.createTime)}</div>
</>,
width: 200
},
{
title: '采购会员',
align: 'left',
dataIndex: 'supplyMembersName',
key: 'supplyMembersName',
},
{
title: '总金额/已支付(元)',
align: 'center',
dataIndex: 'sumPrice',
key: 'sumPrice',
render: text => '¥' + text
},
{ title: '发货批次', align: 'center', dataIndex: 'shipmentBatch', key: 'shipmentBatch', render: text => `第${text}次` },
// @todo 发货单号跳转
{ title: '发货单号', align: 'center', dataIndex: 'invoiceNumber', key: 'invoiceNumber', render: text => <Link to={'/'}>{text}</Link> },
{ title: '当前支付', align: 'center', dataIndex: 'currentPayments', render: (text, record) => text},
{
title: '订单类型',
align: 'center',
dataIndex: 'type',
key: 'type',
render: (text) => ORDER_TYPE[text]
},
{
title: '外部状态',
align: 'center',
dataIndex: 'externalState',
key: 'externalState',
render: text => <StatusColors status={text} type='out'/>
},
{
title: '内部状态',
align: 'center',
dataIndex: 'purchaseOrderInteriorState',
key: 'purchaseOrderInteriorState',
render: (text) => <StatusColors status={text} type='saleInside'/>
},
{
title: '操作',
align: 'center',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
{/* 支付结果确认到账= 待审核状态 */}
{ record.purchaseOrderInteriorState === SaleOrderInsideWorkState.ADD_LOGISTICS_ORDER &&
<Button type='link' onClick={() => handleConfirm(record.id)}>新增物流单</Button>
}
</>
}
]
const handleConfirm = async (record) => {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?page_type=4&id=${record.id}&preview=0`)
}
return {
columns: customOrderColumns
}
}
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
/**
* 除了订单必填字段, 默认
*/
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入订单编号',
align: 'flex-start',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
inline: true,
colStyle: {
marginRight: 20
}
},
properties: {
orderThe: {
type: 'string',
'x-component-props': {
placeholder: '请输入订单摘要',
}
},
"supplyMembersName": {
type: 'string',
"x-component-props": {
placeholder: '请输入供应会员名称'
}
},
"[startCreateTime,endCreateTime]": {
type: 'array',
"x-component": 'daterangepicker',
'x-component-props': {
placeholder: ['开始时间','结束时间'],
},
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: '查询',
},
},
},
},
}
}
\ No newline at end of file
......@@ -12,7 +12,7 @@ export const useSelfTable = () => {
const [rowSelection, rowSelectionCtl] = useRowSelectionTable({customKey: 'id'})
const handleSubmit = async (id) => {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderDetail?page_type=0&id=${id}&preview=0`)
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?page_type=0&id=${id}&preview=0`)
}
const secondColumns: any[] = baseOrderListColumns.concat([
......
import React from 'react'
import { history } from 'umi'
import { Card, Button, Space, Dropdown, Menu } from 'antd'
import { StandardTable } from 'god'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PublicApi } from '@/services/api'
import { useSelfTable } from './model/useSelfTable'
import { PlusCircleOutlined, DownOutlined, DeleteOutlined } from '@ant-design/icons'
import DropDeleteDown from '@/components/DropDeleteDown'
import { tableListSchema } from './schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import Submit from '@/components/NiceForm/components/Submit'
import { DatePicker } from '@formily/antd-components'
// 待确认发货单
export interface FirstApprovedOrderProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.getOrderConfirmShipmentOrderList(params)
return data
}
// TODO
const FirstApprovedOrder:React.FC<FirstApprovedOrderProps> = (props) => {
const {
columns
} = useSelfTable()
return <PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
columns={columns}
rowKey={'orderNo'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePicker: DatePicker.RangePicker,
Submit
}
}
}}
/>
</Card>
</PageHeaderWrapper>
}
FirstApprovedOrder.defaultProps = {}
export default FirstApprovedOrder
\ No newline at end of file
import React, { useRef } from 'react'
import { history, Link } from 'umi'
import { Button, Row, Col } from 'antd'
import { PublicApi } from '@/services/api'
import EyePreview from '@/components/EyePreview'
import { formatTimeString } from '@/utils'
import { ORDER_TYPE, PurchaseOrderInsideWorkState, SaleOrderInsideWorkState } from '@/constants'
import StatusColors from '@/pages/transaction/components/StatusColors'
import { FieldTimeOutlined } from '@ant-design/icons'
import {
Chart,
Interval,
Axis,
Tooltip,
Coordinate,
Legend,
View,
Annotation,
} from 'bizcharts';
import DataSet from "@antv/data-set";
// 业务hooks, 待支付订单
export const useSelfTable = () => {
const ref = useRef<any>({})
const customOrderColumns: any[] = [
{
title: '订单号',
align: 'center',
dataIndex: 'orderNo',
key: 'orderNo',
render: (text, record) => {
// 查看订单, 需根据状态显示不同schema
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderPreview?page_type=-1&id=${record.id}&preview=1`}>
{text}
</EyePreview>
}
},
{
title: '订单商品摘要/下单时间',
align: 'center',
dataIndex: 'orderThe',
key: 'orderThe',
render: (text, record) => <>
<div>{record.orderThe}</div>
<div><FieldTimeOutlined />{formatTimeString(record.createTime)}</div>
</>,
width: 200
},
{
title: '采购会员',
align: 'left',
dataIndex: 'supplyMembersName',
key: 'supplyMembersName',
},
{
title: '总金额/已支付(元)',
align: 'center',
dataIndex: 'sumPrice',
key: 'sumPrice',
render: text => '¥' + text
},
{ title: '发货批次', align: 'center', dataIndex: 'shipmentBatch', key: 'shipmentBatch', render: text => `第${text}次` },
// @todo 发货单号跳转
{ title: '发货单号', align: 'center', dataIndex: 'invoiceNumber', key: 'invoiceNumber', render: text => <Link to={'/'}>{text}</Link> },
{ title: '当前支付', align: 'center', dataIndex: 'currentPayments', render: (text, record) => text},
{
title: '订单类型',
align: 'center',
dataIndex: 'type',
key: 'type',
render: (text) => ORDER_TYPE[text]
},
{
title: '外部状态',
align: 'center',
dataIndex: 'externalState',
key: 'externalState',
render: text => <StatusColors status={text} type='out'/>
},
{
title: '内部状态',
align: 'center',
dataIndex: 'purchaseOrderInteriorState',
key: 'purchaseOrderInteriorState',
render: (text) => <StatusColors status={text} type='saleInside'/>
},
{
title: '操作',
align: 'center',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
{/* 支付结果确认到账= 待审核状态 */}
{ record.purchaseOrderInteriorState === SaleOrderInsideWorkState.ADD_LOGISTICS_ORDER &&
<Button type='link' onClick={() => handleConfirm(record.id)}>新增物流单</Button>
}
</>
}
]
const handleConfirm = async (record) => {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?page_type=4&id=${record.id}&preview=0`)
}
return {
columns: customOrderColumns
}
}
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
/**
* 除了订单必填字段, 默认
*/
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入订单编号',
align: 'flex-start',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
inline: true,
colStyle: {
marginRight: 20
}
},
properties: {
orderThe: {
type: 'string',
'x-component-props': {
placeholder: '请输入订单摘要',
}
},
"supplyMembersName": {
type: 'string',
"x-component-props": {
placeholder: '请输入供应会员名称'
}
},
"[startCreateTime,endCreateTime]": {
type: 'array',
"x-component": 'daterangepicker',
'x-component-props': {
placeholder: ['开始时间','结束时间'],
},
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: '查询',
},
},
},
},
}
}
\ No newline at end of file
......@@ -6,7 +6,7 @@ import { baseOrderListColumns } from '../../constant'
// 业务hooks, 待新增订单
export const useSelfTable = () => {
const handleConfirm = async (record) => {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderDetail?page_type=3&id=${record.id}&preview=1`)
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?page_type=3&id=${record.id}&preview=1`)
}
const secondColumns: any[] = baseOrderListColumns.concat([
{
......
import React from 'react'
import { history } from 'umi'
import { Card, Button, Space, Dropdown, Menu } from 'antd'
import { StandardTable } from 'god'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PublicApi } from '@/services/api'
import { useSelfTable } from './model/useSelfTable'
import { PlusCircleOutlined, DownOutlined, DeleteOutlined } from '@ant-design/icons'
import DropDeleteDown from '@/components/DropDeleteDown'
import { tableListSchema } from './schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import Submit from '@/components/NiceForm/components/Submit'
import { DatePicker } from '@formily/antd-components'
// 待新增物流单
export interface FirstApprovedOrderProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.getOrderReceiptOrderConfirmedList(params)
return data
}
// TODO
const FirstApprovedOrder:React.FC<FirstApprovedOrderProps> = (props) => {
const {
columns
} = useSelfTable()
return <PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
columns={columns}
rowKey={'orderNo'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePicker: DatePicker.RangePicker,
Submit
}
}
}}
/>
</Card>
</PageHeaderWrapper>
}
FirstApprovedOrder.defaultProps = {}
export default FirstApprovedOrder
\ No newline at end of file
import React, { useRef } from 'react'
import { history, Link } from 'umi'
import { Button, Row, Col } from 'antd'
import { PublicApi } from '@/services/api'
import EyePreview from '@/components/EyePreview'
import { formatTimeString } from '@/utils'
import { ORDER_TYPE, PurchaseOrderInsideWorkState, SaleOrderInsideWorkState } from '@/constants'
import StatusColors from '@/pages/transaction/components/StatusColors'
import { FieldTimeOutlined } from '@ant-design/icons'
import {
Chart,
Interval,
Axis,
Tooltip,
Coordinate,
Legend,
View,
Annotation,
} from 'bizcharts';
import DataSet from "@antv/data-set";
// 业务hooks, 待支付订单
export const useSelfTable = () => {
const ref = useRef<any>({})
const customOrderColumns: any[] = [
{
title: '订单号',
align: 'center',
dataIndex: 'orderNo',
key: 'orderNo',
render: (text, record) => {
// 查看订单, 需根据状态显示不同schema
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderPreview?page_type=-1&id=${record.id}&preview=1`}>
{text}
</EyePreview>
}
},
{
title: '订单商品摘要/下单时间',
align: 'center',
dataIndex: 'orderThe',
key: 'orderThe',
render: (text, record) => <>
<div>{record.orderThe}</div>
<div><FieldTimeOutlined />{formatTimeString(record.createTime)}</div>
</>,
width: 200
},
{
title: '采购会员',
align: 'left',
dataIndex: 'supplyMembersName',
key: 'supplyMembersName',
},
{
title: '总金额/已支付(元)',
align: 'center',
dataIndex: 'sumPrice',
key: 'sumPrice',
render: text => '¥' + text
},
{ title: '发货批次', align: 'center', dataIndex: 'shipmentBatch', key: 'shipmentBatch', render: text => `第${text}次` },
// @todo 发货单号跳转
{ title: '发货单号', align: 'center', dataIndex: 'invoiceNumber', key: 'invoiceNumber', render: text => <Link to={'/'}>{text}</Link> },
{ title: '当前支付', align: 'center', dataIndex: 'currentPayments', render: (text, record) => text},
{
title: '订单类型',
align: 'center',
dataIndex: 'type',
key: 'type',
render: (text) => ORDER_TYPE[text]
},
{
title: '外部状态',
align: 'center',
dataIndex: 'externalState',
key: 'externalState',
render: text => <StatusColors status={text} type='out'/>
},
{
title: '内部状态',
align: 'center',
dataIndex: 'purchaseOrderInteriorState',
key: 'purchaseOrderInteriorState',
render: (text) => <StatusColors status={text} type='saleInside'/>
},
{
title: '操作',
align: 'center',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
{/* 支付结果确认到账= 待审核状态 */}
{ record.purchaseOrderInteriorState === SaleOrderInsideWorkState.ADD_LOGISTICS_ORDER &&
<Button type='link' onClick={() => handleConfirm(record.id)}>新增物流单</Button>
}
</>
}
]
const handleConfirm = async (record) => {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?page_type=4&id=${record.id}&preview=0`)
}
return {
columns: customOrderColumns
}
}
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
/**
* 除了订单必填字段, 默认
*/
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入订单编号',
align: 'flex-start',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
inline: true,
colStyle: {
marginRight: 20
}
},
properties: {
orderThe: {
type: 'string',
'x-component-props': {
placeholder: '请输入订单摘要',
}
},
"supplyMembersName": {
type: 'string',
"x-component-props": {
placeholder: '请输入供应会员名称'
}
},
"[startCreateTime,endCreateTime]": {
type: 'array',
"x-component": 'daterangepicker',
'x-component-props': {
placeholder: ['开始时间','结束时间'],
},
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: '查询',
},
},
},
},
}
}
\ No newline at end of file
......@@ -64,7 +64,7 @@ export const useSelfTable = () => {
key: 'orderNo',
render: (text, record) => {
// 查看订单, 需根据状态显示不同schema
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderDetail?page_type=-1&id=${record.id}&preview=1`}>
return <EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/orderPreview?page_type=-1&id=${record.id}&preview=1`}>
{text}
</EyePreview>
}
......@@ -138,7 +138,7 @@ export const useSelfTable = () => {
]
const handleConfirm = async (record) => {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderDetail?page_type=4&id=${record.id}&preview=0`)
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?page_type=4&id=${record.id}&preview=0`)
}
const handleCancel = async (id) => {
......
import React, { useRef } from 'react'
import { history } from 'umi'
import { Card, Button, Space, Dropdown, Menu, message } from 'antd'
import { StandardTable } from 'god'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PublicApi } from '@/services/api'
import { useSelfTable } from './model/useSelfTable'
import { PlusCircleOutlined, DownOutlined, DeleteOutlined } from '@ant-design/icons'
import DropDeleteDown from '@/components/DropDeleteDown'
import { tableListSchema } from './schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import Submit from '@/components/NiceForm/components/Submit'
import { DatePicker } from '@formily/antd-components'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import { PurchaseOrderInsideWorkState, SaleOrderInsideWorkState } from '@/constants'
// 待确认回单
export interface FirstApprovedOrderProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.getOrderListOfOrdersToBeFiled(params)
return data
}
// TODO
const FirstApprovedOrder:React.FC<FirstApprovedOrderProps> = (props) => {
const {
columns,
ref,
rowSelection,
rowSelectionCtl
} = useSelfTable()
const handleSubmitBatch = async () => {
if (rowSelectionCtl.selectRow.length === 0) {
message.error('请先勾选订单')
return ;
}
const canBitch = !rowSelectionCtl.selectRow.some(v => v.purchaseOrderInteriorState !== SaleOrderInsideWorkState.ONE_LEVEL_AUDIT_ORDER)
if (canBitch) {
await PublicApi.postOrderSubmittedReviewOrderOneAll({ids: rowSelectionCtl.selectedRowKeys})
ref.current.reload()
} else {
message.error('只能批量提交内部状态为审核中的订单')
}
}
return <PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
rowSelection={rowSelection}
columns={columns}
currentRef={ref}
rowKey={'id'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePicker: DatePicker.RangePicker,
Submit
}
},
layouts: {
order: 2,
span: 16
}
}}
formilyChilds={{
children: <Space>
<Button onClick={handleSubmitBatch}>批量提交审核</Button>
</Space>,
layouts: {
span: 8
}
}}
/>
</Card>
</PageHeaderWrapper>
}
FirstApprovedOrder.defaultProps = {}
export default FirstApprovedOrder
\ No newline at end of file
import React, { useRef } from 'react'
import { Button } from 'antd'
import { baseOrderListColumns } from '../../constant'
import { history } from 'umi'
import { PublicApi } from '@/services/api'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import { PurchaseOrderInsideWorkState, SaleOrderInsideWorkState } from '@/constants'
// 业务hooks, 待新增订单
export const useSelfTable = () => {
const ref = useRef<any>({})
const [rowSelection, rowSelectionCtl] = useRowSelectionTable({customKey: 'id'})
const handleSubmit = async (record) => {
if (record.purchaseOrderInteriorState === SaleOrderInsideWorkState.ONE_LEVEL_AUDIT_ORDER) {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?id=${record.id}&preview=0&page_type=1`)
}
}
const secondColumns: any[] = baseOrderListColumns.concat([
{
title: '操作',
align: 'center',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
{
record.purchaseOrderInteriorState === SaleOrderInsideWorkState.ONE_LEVEL_AUDIT_ORDER &&
<Button type='link' onClick={() => handleSubmit(record)}>提交审核</Button>
}
</>
}
])
return {
columns: secondColumns,
ref,
rowSelection,
rowSelectionCtl
}
}
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
/**
* 除了订单必填字段, 默认
*/
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入订单编号',
align: 'flex-end',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
inline: true,
colStyle: {
marginLeft: 20
}
},
properties: {
orderThe: {
type: 'string',
'x-component-props': {
placeholder: '请输入订单摘要',
}
},
"supplyMembersName": {
type: 'string',
"x-component-props": {
placeholder: '请输入供应会员名称'
}
},
"[startCreateTime,endCreateTime]": {
type: 'array',
"x-component": 'daterangepicker',
'x-component-props': {
placeholder: ['开始时间','结束时间'],
},
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: '查询',
},
},
},
},
}
}
\ No newline at end of file
......@@ -10,7 +10,7 @@ export const useSelfTable = () => {
const ref = useRef<any>({})
const handleSubmit = async (record) => {
if (record.purchaseOrderInteriorState === SaleOrderInsideWorkState.TWO_LEVEL_AUDIT_ORDER) {
history.push(`/memberCenter/tranactionAbility/saleOrder/orderDetail?id=${record.id}&preview=0&page_type=2`)
history.push(`/memberCenter/tranactionAbility/saleOrder/orderPreview?id=${record.id}&preview=0&page_type=2`)
}
}
const secondColumns: any[] = baseOrderListColumns.concat([
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment