Commit 6a306d92 authored by XieZhiXiong's avatar XieZhiXiong
parents d592c0e2 42b124cb
import React, { useContext, useRef } from 'react'
import { Modal, Button, message } from 'antd'
import { createFormActions, ISchema } from '@formily/antd'
import ModalForm from '@/components/ModalForm'
import { history } from 'umi'
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'
import { PublicApi } from '@/services/api'
import { useHttpRequest } from '@/hooks/useHttpRequest'
import { OrderDetailContext } from '../../_public/order/context'
import { fetchOptions } from '@/pages/balance/common'
export interface OrderElectronModalProps {
currentRef: any
}
const schemaActions = createFormActions()
const schema: ISchema = {
type: 'object',
properties: {
NO_SUBMIT: {
type: 'object',
"x-component": "mega-layout",
"x-component-props": {
labelAlign: 'left',
labelCol: 6
},
properties: {
usingElectronicContracts: {
type: 'radio',
title: '是否使用电子合同',
enum: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
],
default: 1,
"x-linkages": [
{
type: 'value:visible',
target: 'contractTemplateId',
condition: "{{$value === 1}}"
},
{
type: 'value:visible',
target: 'electronicContractName',
condition: "{{$value === 1}}"
}
]
},
contractTemplateId: {
type: 'string',
enum: [],
title: '电子合同模板',
required: true,
"x-component-props": {
placeholder: '请选择电子合同模板',
style: {
minWidth: 140
}
},
"x-props": {
addonAfter: "{{electronBtn}}"
}
},
electronicContractName: {
type: 'string',
"x-component": 'children',
"x-component-props": {
children: ""
},
title: '电子合同',
"x-rules": [
{
message: '请先生成电子合同',
required: true
}
]
},
electronicContractUrl: {
type: 'string',
display: false,
},
signatureLogId: {
type: 'string',
display: false,
},
state: {
type: 'radio',
title: '是否审核通过',
enum: [
{ label: '审核通过', value: 1 },
{ label: '审核不通过', value: 0 },
],
default: 1,
"x-linkages": [
{
type: 'value:visible',
target: 'cause',
condition: "{{$value === 0}}"
}
]
},
cause: {
type: 'textarea',
"x-component-props": {
rows: 4,
placeholder: '在此输入你的原因, 最多60个汉字'
},
title: '审核不通过原因',
"x-rules": [
{
required: true,
message: '请输入审核不通过原因'
},
{
limitByte: true,
maxByte: 30
}
]
}
}
}
}
}
//@todo 尚未完成
const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
const formRef = useRef<any>({})
const { data } = useContext(OrderDetailContext)
const { run, loading } = useHttpRequest(PublicApi.postOrderSignatureSignContractCreate, {ctlType: 'none'})
const { run: submitRun, loading: submitLoading } = useHttpRequest(PublicApi.postOrderSubmittedReviewOrder)
const createElectron = async () => {
const contractTemplateId = schemaActions.getFieldValue('contractTemplateId')
if (data.isElectronicContract === 1 && !contractTemplateId) {
message.error('请先选择电子合同模板')
return ;
}
const orderNo = data.orderNo
const signMemberId = data.createMemberId
const params = {
contractTemplateId,
orderNo,
signMemberId
}
const { code, data: resData } = await run(params)
if (code === 1000) {
schemaActions.setFieldValue('electronicContractName', resData.contractName)
schemaActions.setFieldValue('signatureLogId', resData.signatureLogId) //** */
schemaActions.setFieldValue('electronicContractUrl', resData.contractUrl)
schemaActions.setFieldState('electronicContractName', state => {
state.props["x-component-props"].children = <a href={resData.contractUrl} download={resData.contractName} target='_blank'>{resData.contractName}</a>
})
}
}
const electronBtn = <Button style={{marginLeft: 24}} onClick={createElectron} loading={loading}>生成电子合同</Button>
const handleSubmit = async (value) => {
const params = {
...value,
id: data.id,
}
const { code } = await submitRun(params)
if (code === 1000) {
history.goBack()
}
}
const handleConfirm = () => {
schemaActions.submit()
}
return (
<ModalForm
modalTitle='确认提交审核'
previewPlaceholder=' '
currentRef={props.currentRef}
schema={schema}
actions={schemaActions}
onSubmit={handleSubmit}
confirm={handleConfirm}
modalProps={{
confirmLoading: submitLoading
}}
expressionScope={{
electronBtn
}}
effects={async ($, actions) => {
// $('onFormInit').subscribe(() => {
if (data.isElectronicContract === 1) {
// useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id']).then(()=>{
// actions.setFieldValue("contractTemplateId", data.contractTemplateId)
// })
const res = await PublicApi.getOrderSelectListContractTemplate()
let options = res.data.map(item => ({
label: item.name,
value: item.id,
}))
actions.setFieldState('contractTemplateId', state => {
state.props.enum = options
})
if(options?.length && options.filter(_i => _i.value === data['contractTemplateId']).length) {
actions.setFieldValue("contractTemplateId", data['contractTemplateId'])
}
} else {
actions.setFieldState('usingElectronicContracts', state => {
state.value = 0
state.props["x-component-props"] = {
disabled: true
}
})
}
$('onFieldValueChange', 'contractTemplateId').subscribe(state => {
console.log(state.props)
})
// })
}}
/>
)
}
CreateOrderElectronModal.defaultProps = {}
export default CreateOrderElectronModal
import React, { useContext, useRef } from 'react'
import { Modal, Button, message } from 'antd'
import { createFormActions, ISchema } from '@formily/antd'
import ModalForm from '@/components/ModalForm'
import { history } from 'umi'
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'
import { PublicApi } from '@/services/api'
import { useHttpRequest } from '@/hooks/useHttpRequest'
import { OrderDetailContext } from '../../_public/order/context'
import { fetchOptions } from '@/pages/balance/common'
export interface OrderElectronModalProps {
currentRef: any
}
const schemaActions = createFormActions()
const schema: ISchema = {
type: 'object',
properties: {
NO_SUBMIT: {
type: 'object',
"x-component": "mega-layout",
"x-component-props": {
labelAlign: 'left',
labelCol: 6
},
properties: {
usingElectronicContracts: {
type: 'radio',
title: '是否使用电子合同',
enum: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
],
default: 1,
"x-linkages": [
{
type: 'value:visible',
target: 'contractTemplateId',
condition: "{{$value === 1}}"
},
{
type: 'value:visible',
target: 'electronicContractName',
condition: "{{$value === 1}}"
}
]
},
contractTemplateId: {
type: 'string',
enum: [],
title: '电子合同模板',
required: true,
"x-component-props": {
placeholder: '请选择电子合同模板',
style: {
minWidth: 140
}
},
"x-props": {
addonAfter: "{{electronBtn}}"
}
},
electronicContractName: {
type: 'string',
"x-component": 'children',
"x-component-props": {
children: ""
},
title: '电子合同',
"x-rules": [
{
message: '请先生成电子合同',
required: true
}
]
},
electronicContractUrl: {
type: 'string',
display: false,
},
signatureLogId: {
type: 'string',
display: false,
},
state: {
type: 'radio',
title: '是否审核通过',
enum: [
{ label: '审核通过', value: 1 },
{ label: '审核不通过', value: 0 },
],
default: 1,
"x-linkages": [
{
type: 'value:visible',
target: 'cause',
condition: "{{$value === 0}}"
}
]
},
cause: {
type: 'textarea',
"x-component-props": {
rows: 4,
placeholder: '在此输入你的原因, 最多60个汉字'
},
title: '审核不通过原因',
"x-rules": [
{
required: true,
message: '请输入审核不通过原因'
},
{
limitByte: true,
maxByte: 30
}
]
}
}
}
}
}
//@todo 尚未完成
const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
const formRef = useRef<any>({})
const { data } = useContext(OrderDetailContext)
const { run, loading } = useHttpRequest(PublicApi.postOrderSignatureSignContractCreate, {ctlType: 'none'})
const { run: submitRun, loading: submitLoading } = useHttpRequest(PublicApi.postOrderSubmittedReviewOrder)
const createElectron = async () => {
const contractTemplateId = schemaActions.getFieldValue('contractTemplateId')
if (data.isElectronicContract === 1 && !contractTemplateId) {
message.error('请先选择电子合同模板')
return ;
}
const orderNo = data.orderNo
const signMemberId = data.createMemberId
const params = {
contractTemplateId,
orderNo,
signMemberId
}
const { code, data: resData } = await run(params)
if (code === 1000) {
schemaActions.setFieldValue('electronicContractName', resData.contractName)
schemaActions.setFieldValue('signatureLogId', resData.signatureLogId) //** */
schemaActions.setFieldValue('electronicContractUrl', resData.contractUrl)
schemaActions.setFieldState('electronicContractName', state => {
state.props["x-component-props"].children = <a href={resData.contractUrl} download={resData.contractName} target='_blank'>{resData.contractName}</a>
})
}
}
const electronBtn = <Button style={{marginLeft: 24}} onClick={createElectron} loading={loading}>生成电子合同</Button>
const handleSubmit = async (value) => {
const params = {
...value,
id: data.id,
}
const { code } = await submitRun(params)
if (code === 1000) {
history.goBack()
}
}
const handleConfirm = () => {
schemaActions.submit()
}
return (
<ModalForm
modalTitle='确认提交审核'
previewPlaceholder=' '
currentRef={props.currentRef}
schema={schema}
actions={schemaActions}
onSubmit={handleSubmit}
confirm={handleConfirm}
modalProps={{
confirmLoading: submitLoading
}}
expressionScope={{
electronBtn
}}
effects={async ($, actions) => {
// $('onFormInit').subscribe(() => {
if (data.isElectronicContract === 1) {
// useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id']).then(()=>{
// actions.setFieldValue("contractTemplateId", data.contractTemplateId)
// })
const res = await PublicApi.getOrderSelectListContractTemplate()
let options = res.data.map(item => ({
label: item.name,
value: item.id,
}))
actions.setFieldState('contractTemplateId', state => {
state.props.enum = options
})
if(options?.length && options.filter(_i => _i.value === data['contractTemplateId']).length) {
actions.setFieldValue("contractTemplateId", data['contractTemplateId'])
}
} else {
actions.setFieldState('usingElectronicContracts', state => {
state.value = 0
state.props["x-component-props"] = {
disabled: true
}
})
}
$('onFieldValueChange', 'contractTemplateId').subscribe(state => {
console.log(state.props)
})
// })
}}
/>
)
}
CreateOrderElectronModal.defaultProps = {}
export default CreateOrderElectronModal
import React, { useContext, useRef } from 'react'
import { Tabs, Table, Button } from 'antd'
import StatusColors from '@/pages/transaction/components/StatusColors'
import { formatTimeString } from '@/utils'
import { OrderDetailContext } from '../../_public/order/context'
import MellowCard from '@/components/MellowCard'
import NestTable from '@/components/NestTable'
import { SaleOrderInsideWorkState, DeliverySideState } from '@/constants'
import { PublicApi } from '@/services/api'
import { history } from 'umi'
export interface OrderDeleveRecordProps {}
// 订单发货记录
const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
const pathname = history.location.pathname
const isPreview = pathname.lastIndexOf('/preview') !== -1
// 是否是确认收货页
const isReceived = pathname.indexOf('readyReceiveOrder') !== -1
// 是否是确认回单页
const isReturn = pathname.indexOf('readyConfirmReturnOrder') !== -1
// 用于储存已经修改过的订单id
const dataRef = useRef<any>([])
const { data, reloadFormData } = useContext(OrderDetailContext)
const { orderReceivingStatisticsResponses, orderDeliveryDetailsResponses, orderModel } = data
const creditsCommodity = (orderModel === 24 || orderModel === 25) // 积分或渠道积分下单模式
const outOrderCols: any[] = [
{
title: '商品ID',
dataIndex: 'productId',
align: 'center',
key: 'productId'
},
{
title: '商品名称',
dataIndex: 'productName',
align: 'center',
key: 'productName',
},
{
title: '品类',
dataIndex: 'category',
align: 'center',
key: 'category'
},
{
title: '品牌',
dataIndex: 'brand',
align: 'center',
key: 'brand',
},
{
title: '单位',
dataIndex: 'unit',
align: 'center',
key: 'unit'
},
{
title: creditsCommodity ? '所需积分' : '单价',
dataIndex: 'unitPrice',
align: 'center',
key: 'unitPrice',
},
{
title: creditsCommodity ? '兑换数量' : '采购数量',
dataIndex: 'purchaseCount',
align: 'center',
key: 'purchaseCount',
},
{
title: '含税',
dataIndex: 'no',
align: 'center',
key: 'no',
render: () => '是'
},
{
title: creditsCommodity ? '所需积分小计' : '金额',
dataIndex: 'price',
align: 'center',
key: 'price',
},
{
title: '已发货',
dataIndex: 'delivered',
align: 'center',
key: 'delivered',
},
{
title: '未发货',
dataIndex: 'notDelivered',
align: 'center',
key: 'notDelivered',
},
{
title: '已收货',
dataIndex: 'goodsReceived',
align: 'center',
key: 'goodsReceived',
},
{
title: '差异数量',
dataIndex: 'differenceCount',
align: 'center',
key: 'differenceCount',
},
]
const sideChildrenCols: any[] = [
{
title: '商品ID',
dataIndex: 'productId',
align: 'center',
key: 'productId',
},
{
title: '商品名称',
dataIndex: 'productName',
align: 'center',
key: 'productName',
},
{
title: '品类',
dataIndex: 'category',
align: 'center',
key: 'category',
},
{
title: '品牌',
dataIndex: 'brand',
align: 'center',
key: 'brand',
},
{
title: '单位',
dataIndex: 'unit',
align: 'center',
key: 'unit',
},
{
title: creditsCommodity ? '兑换数量' : '采购数量',
dataIndex: 'purchaseCount',
align: 'center',
key: 'purchaseCount',
},
{
title: '发货数量',
dataIndex: 'deliverGoodsCount',
align: 'center',
key: 'deliverGoodsCount',
},
{
title: '入库数量',
dataIndex: 'storageCount',
align: 'center',
key: 'storageCount',
},
{
title: '差异数量',
dataIndex: 'differenceCount',
align: 'center',
key: 'differenceCount',
},
]
const sideOrderCols: any[] = [
{
title: '发货批次',
dataIndex: 'deliveryBatch',
align: 'center',
key: 'deliveryBatch'
},
{
title: '发货单号',
dataIndex: 'deliveryNo',
align: 'center',
key: 'deliveryNo',
},
{
title: '发货时间',
dataIndex: 'deliveryTime',
align: 'center',
key: 'deliveryTime',
render: text => formatTimeString(text)
},
{
title: '物流单号',
dataIndex: 'logisticsNo',
align: 'center',
key: 'logisticsNo',
},
{
title: '物流公司',
dataIndex: 'logisticsCompanyName',
align: 'center',
key: 'logisticsCompanyName'
},
{
title: '入库单号',
dataIndex: 'storageNo',
align: 'center',
key: 'storageNo',
},
{
title: '入库时间',
dataIndex: 'storageTime',
align: 'center',
key: 'storageTime',
render: text => formatTimeString(text)
},
{
title: '内部状态',
dataIndex: 'interiorState',
align: 'center',
key: 'interiorState',
render: text => <StatusColors type='deliveInside' status={text}/>
},
{
title: '操作',
dataIndex: 'ctl',
align: 'center',
key: 'ctl',
render: (text, record) => <>
{/* todo 需根据内部状态判断显示哪个按钮 */}
{ !isPreview && isReturn && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.CONFIRM_RECEIPT_ORDER && <Button type='link' onClick={() => handleReturn(record)}>确认回单</Button> }
{ !isPreview && isReceived && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.WAREHOUSE_ORDER && <Button type='link' onClick={() => handleConfirm(record)}>确认收货</Button> }
</>
},
]
// 确认收货
const handleConfirm = async (record) => {
const params = {
orderId: record.orderId,
id: record.id
}
const { code } = await PublicApi.postOrderConfirmReceipt(params)
if (code === 1000) {
dataRef.current.push(record.id)
reloadFormData && reloadFormData()
}
}
// 确认回单
const handleReturn = async (record) => {
const params = {
orderId: record.orderId,
id: record.id
}
const { code } = await PublicApi.postOrderReceiptOrderConfirmed(params)
if (code === 1000) {
dataRef.current.push(record.id)
reloadFormData && reloadFormData()
}
}
return (
<>
{
(orderReceivingStatisticsResponses?.length > 0 || orderDeliveryDetailsResponses?.length > 0) &&
<MellowCard style={{marginTop: 24}} bordered={false} id='deleveBox'>
<Tabs defaultActiveKey="2">
{
orderReceivingStatisticsResponses?.length > 0 && <Tabs.TabPane tab='订单收货统计' key="1">
<Table
columns={outOrderCols}
dataSource={orderReceivingStatisticsResponses}
pagination={false}
rowKey="productId"
/>
</Tabs.TabPane>
}
{
orderDeliveryDetailsResponses?.length > 0 && <Tabs.TabPane tab='订单收货明细' key="2">
<NestTable
NestColumns={[sideOrderCols, sideChildrenCols]}
rowKey='id'
childrenDataKey='orderDeliveryProducts'
dataSource={orderDeliveryDetailsResponses}
/>
</Tabs.TabPane>
}
</Tabs>
</MellowCard>
}
</>
)
}
OrderDeleveRecord.defaultProps = {}
export default OrderDeleveRecord
\ No newline at end of file
import React, { useContext, useRef, useState } from 'react'
import { Tabs, Table, Button } from 'antd'
import StatusColors from '@/pages/transaction/components/StatusColors'
import { formatTimeString } from '@/utils'
import { OrderDetailContext } from '../../_public/order/context'
import MellowCard from '@/components/MellowCard'
import NestTable from '@/components/NestTable'
import { SaleOrderInsideWorkState, DeliverySideState } from '@/constants'
import { PublicApi } from '@/services/api'
import { history } from 'umi'
export interface OrderDeleveRecordProps {}
// 订单发货记录
const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
const pathname = history.location.pathname
const isPreview = pathname.lastIndexOf('/preview') !== -1
// 是否是确认收货页
const isReceived = pathname.indexOf('readyReceiveOrder') !== -1
// 是否是确认回单页
const isReturn = pathname.indexOf('readyConfirmReturnOrder') !== -1
// 用于储存已经修改过的订单id
const dataRef = useRef<any>([])
const [disabled, setDisabled] = useState<boolean>(false)
const { data, reloadFormData } = useContext(OrderDetailContext)
const { orderReceivingStatisticsResponses, orderDeliveryDetailsResponses, orderModel } = data
const creditsCommodity = (orderModel === 24 || orderModel === 25) // 积分或渠道积分下单模式
const outOrderCols: any[] = [
{
title: '商品ID',
dataIndex: 'productId',
align: 'center',
key: 'productId'
},
{
title: '商品名称',
dataIndex: 'productName',
align: 'center',
key: 'productName',
},
{
title: '品类',
dataIndex: 'category',
align: 'center',
key: 'category'
},
{
title: '品牌',
dataIndex: 'brand',
align: 'center',
key: 'brand',
},
{
title: '单位',
dataIndex: 'unit',
align: 'center',
key: 'unit'
},
{
title: creditsCommodity ? '所需积分' : '单价',
dataIndex: 'unitPrice',
align: 'center',
key: 'unitPrice',
},
{
title: creditsCommodity ? '兑换数量' : '采购数量',
dataIndex: 'purchaseCount',
align: 'center',
key: 'purchaseCount',
},
{
title: '含税',
dataIndex: 'no',
align: 'center',
key: 'no',
render: () => '是'
},
{
title: creditsCommodity ? '所需积分小计' : '金额',
dataIndex: 'price',
align: 'center',
key: 'price',
},
{
title: '已发货',
dataIndex: 'delivered',
align: 'center',
key: 'delivered',
},
{
title: '未发货',
dataIndex: 'notDelivered',
align: 'center',
key: 'notDelivered',
},
{
title: '已收货',
dataIndex: 'goodsReceived',
align: 'center',
key: 'goodsReceived',
},
{
title: '差异数量',
dataIndex: 'differenceCount',
align: 'center',
key: 'differenceCount',
},
]
const sideChildrenCols: any[] = [
{
title: '商品ID',
dataIndex: 'productId',
align: 'center',
key: 'productId',
},
{
title: '商品名称',
dataIndex: 'productName',
align: 'center',
key: 'productName',
},
{
title: '品类',
dataIndex: 'category',
align: 'center',
key: 'category',
},
{
title: '品牌',
dataIndex: 'brand',
align: 'center',
key: 'brand',
},
{
title: '单位',
dataIndex: 'unit',
align: 'center',
key: 'unit',
},
{
title: creditsCommodity ? '兑换数量' : '采购数量',
dataIndex: 'purchaseCount',
align: 'center',
key: 'purchaseCount',
},
{
title: '发货数量',
dataIndex: 'deliverGoodsCount',
align: 'center',
key: 'deliverGoodsCount',
},
{
title: '入库数量',
dataIndex: 'storageCount',
align: 'center',
key: 'storageCount',
},
{
title: '差异数量',
dataIndex: 'differenceCount',
align: 'center',
key: 'differenceCount',
},
]
const sideOrderCols: any[] = [
{
title: '发货批次',
dataIndex: 'deliveryBatch',
align: 'center',
key: 'deliveryBatch'
},
{
title: '发货单号',
dataIndex: 'deliveryNo',
align: 'center',
key: 'deliveryNo',
},
{
title: '发货时间',
dataIndex: 'deliveryTime',
align: 'center',
key: 'deliveryTime',
render: text => formatTimeString(text)
},
{
title: '物流单号',
dataIndex: 'logisticsNo',
align: 'center',
key: 'logisticsNo',
},
{
title: '物流公司',
dataIndex: 'logisticsCompanyName',
align: 'center',
key: 'logisticsCompanyName'
},
{
title: '入库单号',
dataIndex: 'storageNo',
align: 'center',
key: 'storageNo',
},
{
title: '入库时间',
dataIndex: 'storageTime',
align: 'center',
key: 'storageTime',
render: text => formatTimeString(text)
},
{
title: '内部状态',
dataIndex: 'interiorState',
align: 'center',
key: 'interiorState',
render: text => <StatusColors type='deliveInside' status={text}/>
},
{
title: '操作',
dataIndex: 'ctl',
align: 'center',
key: 'ctl',
render: (text, record) => <>
{/* todo 需根据内部状态判断显示哪个按钮 */}
{ !isPreview && isReturn && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.CONFIRM_RECEIPT_ORDER && <Button type='link' disabled={disabled} onClick={() => handleReturn(record)}>确认回单</Button> }
{ !isPreview && isReceived && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.WAREHOUSE_ORDER && <Button type='link' disabled={disabled} onClick={() => handleConfirm(record)}>确认收货</Button> }
</>
},
]
// 确认收货
const handleConfirm = async (record) => {
const params = {
orderId: record.orderId,
id: record.id
}
setDisabled(true)
const { code } = await PublicApi.postOrderConfirmReceipt(params)
if (code === 1000) {
dataRef.current.push(record.id)
reloadFormData && reloadFormData()
setDisabled(false)
} else {
setDisabled(false)
}
}
// 确认回单
const handleReturn = async (record) => {
const params = {
orderId: record.orderId,
id: record.id
}
setDisabled(true)
const { code } = await PublicApi.postOrderReceiptOrderConfirmed(params)
if (code === 1000) {
dataRef.current.push(record.id)
reloadFormData && reloadFormData()
setDisabled(false)
} else {
setDisabled(false)
}
}
return (
<>
{
(orderReceivingStatisticsResponses?.length > 0 || orderDeliveryDetailsResponses?.length > 0) &&
<MellowCard style={{marginTop: 24}} bordered={false} id='deleveBox'>
<Tabs defaultActiveKey="2">
{
orderReceivingStatisticsResponses?.length > 0 && <Tabs.TabPane tab='订单收货统计' key="1">
<Table
columns={outOrderCols}
dataSource={orderReceivingStatisticsResponses}
pagination={false}
rowKey="productId"
/>
</Tabs.TabPane>
}
{
orderDeliveryDetailsResponses?.length > 0 && <Tabs.TabPane tab='订单收货明细' key="2">
<NestTable
NestColumns={[sideOrderCols, sideChildrenCols]}
rowKey='id'
childrenDataKey='orderDeliveryProducts'
dataSource={orderDeliveryDetailsResponses}
/>
</Tabs.TabPane>
}
</Tabs>
</MellowCard>
}
</>
)
}
OrderDeleveRecord.defaultProps = {}
export default OrderDeleveRecord
......@@ -25,7 +25,7 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
const isDeleved = pathname.indexOf('readyConfirmDelevedOrder') !== -1
// 是否是确认回单页
const isReturn = pathname.indexOf('readyConfirmReturnOrder') !== -1
const [disabled, setDisabled] = useState<boolean>(false)
// 用于储存已经修改过的订单id
const dataRef = useRef<any>([])
const { data, reloadFormData } = useContext(OrderDetailContext)
......@@ -230,8 +230,8 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
align: 'center',
key: 'ctl',
render: (text, record) => <>
{ !isPreview && isReturn && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.CONFIRM_RECEIPT_ORDER && <Button type='link' onClick={() => handleReturn(record)}>确认回单</Button> }
{ !isPreview && isDeleved && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.ADD_LOGISTICS_ORDER && <Button type='link' onClick={() => handleConfirm(record)}>确认发货</Button> }
{ !isPreview && isReturn && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.CONFIRM_RECEIPT_ORDER && <Button type='link' disabled={disabled} onClick={() => handleReturn(record)}>确认回单</Button> }
{ !isPreview && isDeleved && !dataRef.current.includes(record.id) && record.interiorState === DeliverySideState.ADD_LOGISTICS_ORDER && <Button type='link' disabled={disabled} onClick={() => handleConfirm(record)}>确认发货</Button> }
</>
},
]
......@@ -257,11 +257,14 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
orderId: record.orderId,
id: record.id
}
setDisabled(true)
const { code } = await PublicApi.postOrderConfirmShipmentOrder(params)
if (code === 1000) {
dataRef.current.push(record.id)
reloadFormData && reloadFormData()
setDisabled(false)
} else {
setDisabled(false)
}
}
......@@ -271,11 +274,14 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
orderId: record.orderId,
id: record.id
}
setDisabled(true)
const { code } = await PublicApi.postOrderReceiptOrderConfirmed(params)
if (code === 1000) {
dataRef.current.push(record.id)
reloadFormData && reloadFormData()
setDisabled(false)
} else {
setDisabled(false)
}
}
......
......@@ -113,7 +113,7 @@ export const useSelfTable = () => {
const handleConfirm = async (record) => {
const modal = Modal.confirm({
title: '确认审核操作',
content: `是否确认审核发货单号为${record.invoiceNumber}的销售发货单?`,
content: `是否确认审核发货单号为${record.deliverNo}的销售发货单?`,
onOk: async () => {
const { code } = await PublicApi.postOrderAuditSalesInvoiceOrder({
id: record.orderDeliveryDetailsId,
......
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