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

Merge branch 'dev' into test

parents afeb2ced 5e5b3a62
import React, { ReactText, useRef, useEffect } from 'react'
import React, { ReactText, useRef, useEffect, useLayoutEffect } from 'react'
import {StandardTable} from 'god'
import NestTable from '@/components/NestTable'
import { IStandardTableProps } from 'god/dist/src/standard-table'
......@@ -22,23 +22,25 @@ export interface ModalTableProps extends IStandardTableProps<any> {
useNestTable?: boolean, // 是否使用嵌套表格
nestColumns?: any[],
nestTableProps?: any,
// fix: 新增参数, 为true时每次开启弹窗都会重新reload接口
forceRender?: boolean
}
const ModalTable:React.FC<ModalTableProps> = (props) => {
const { width = 704, modalTitle, confirm, cancel, visible, currentRef, resetModal, modalType = 'none', useNestTable = false, nestColumns, nestTableProps, ...resetTable } = props
const { width = 704, modalTitle, confirm, cancel, visible, currentRef, resetModal, modalType = 'none', forceRender, useNestTable = false, nestColumns, nestTableProps, ...resetTable } = props
const selfRef = currentRef || useRef<any>({})
useEffect(() => {
if (visible) {
if (visible && forceRender) {
// 重新开启时需reload接口
// fix: 去掉自动reload接口, 防止重复请求
// console.log(selfRef)
// selfRef.current.reload && selfRef.current.reload()
// fix: 新增forceRender接口, 用于控制弹窗是否需要reload
selfRef.current.reload && selfRef.current.reload()
} else {
selfRef.current.resetField && selfRef.current.resetField({
validate: false
})
}
}, [visible, selfRef.current])
}, [visible])
const modelSchemaRender = () => {
switch (modalType) {
......
......@@ -831,6 +831,72 @@ export const SaleOrderInsideWorkStateTexts = {
27: '待手工发货'
}
// 订单流转记录外部状态
export const OrderTransformOutWorkStateTexts = {
"-1": '取消订单',
1: '待确认',
2: '待确认电子合同',
3: '待支付',
4: '待确认支付结果',
5: '待新增销售发货单',
6: '待新增物流单',
7: '待确认发货订单',
8: '待新增采购入库单',
9: '待确认收货订单',
10: '待确认收货订单',
11: '待确认回单',
12: '待归档',
13: '待归档',
14: '不接受订单',
15: '确认未到账',
16: '待新增采购入库单',
17: '手工确认发货'
}
// 采购订单流转记录内部状态
export const PurchaseOrderTransformInsideWorkStateTexts = {
"-1": '取消订单',
1: '待提交审核',
2: '提交审核通过',
3: '审核通过',
4: '审核通过',
5: '审核通过',
6: '已确认电子合同',
7: '审核不通过',
8: '审核不通过',
9: '支付成功',
10: '支付失败',
11: '已审核采购入库单',
12: '已确认收货',
13: '订单归档完成',
14: '修改订单',
15: '手工收货'
}
// 销售订单流转记录内部状态
export const SaleOrderTransformInsideWorkStateTexts = {
"-1": '取消订单',
1: '审核通过',
2: '审核通过',
3: '审核通过',
4: '接受订单',
5: '确认到账',
6: '已审核销售发货单',
7: '接受物流单',
8: '已确认发货',
9: '已确认回单',
10: '已归档',
11: '审核不通过',
12: '审核不通过',
13: '不接受订单',
14: '确认未到账',
15: '审核不通过',
16: '不接受物流单'
}
export const PayOutWorkStateTexts = {
1: '待支付',
2: '待确认支付结果',
......
import React from 'react'
import { Tag } from 'antd'
import { PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkStateTexts, PurchaseOrderInsideWorkState, PurchaseOrderOutWorkState, SaleOrderInsideWorkState, SaleOrderInsideWorkStateTexts, PayOutWorkStateTexts, DeliverySideState, DeliverySideStateTexts, InquiryStateTexts } from '@/constants'
import { PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkStateTexts, PurchaseOrderInsideWorkState, PurchaseOrderOutWorkState, SaleOrderInsideWorkState, SaleOrderInsideWorkStateTexts, PayOutWorkStateTexts, DeliverySideState, DeliverySideStateTexts, InquiryStateTexts, OrderTransformOutWorkStateTexts, PurchaseOrderTransformInsideWorkStateTexts, SaleOrderTransformInsideWorkStateTexts } from '@/constants'
export interface IStatusColor {
[key: string]: {
......@@ -12,7 +12,7 @@ export interface IStatusColor {
// 用于标签状态控制
export interface StatusColorsProps {
status: number,
type: 'out' | 'inside' | 'saleInside' | 'payOut' | 'deliveInside' | 'inquiry'
type: 'out' | 'inside' | 'saleInside' | 'payOut' | 'deliveInside' | 'inquiry' | 'transformOut' | 'transformInside' | 'transformSaleInside'
}
export enum ORDER_EXAMINE_ENUM {
......@@ -94,6 +94,9 @@ const typeMaps = {
'payOut': PayOutWorkStateTexts,
'deliveInside': DeliverySideStateTexts,
'inquiry': InquiryStateTexts,
'transformOut': OrderTransformOutWorkStateTexts,
'transformInside': PurchaseOrderTransformInsideWorkStateTexts,
'transformSaleInside': SaleOrderTransformInsideWorkStateTexts
}
// 订单内部状态显示
......
......@@ -34,7 +34,7 @@ const OrderDetailSection:React.FC<OrderDetailSectionProps> = ({formContext, type
{ type === 'saleOrder' ? <OrderSaleRecord/> : <OrderDeleveRecord /> }
<OrderTransformRecord />
<OrderTransformRecord type={type}/>
</div>
)
}
......
......@@ -136,11 +136,11 @@ const OrderHandDeleveModal:React.FC<OrderHandDeleveModalProps> = (props) => {
})
$('onFieldInputChange', 'addresId').subscribe(({value}) => {
actions.setFieldValue('name', dataRef.current.addresId.find(v => v.value === value)?.label || '')
actions.setFieldValue('name', dataRef.current.addresId.find(v => v.id === value)?.fullAddress || '')
})
$('onFieldInputChange', 'logisticsCompanyId').subscribe(({value}) => {
actions.setFieldValue('logisticsCompany', dataRef.current.logisticsCompanyId.find(v => v.value === value)?.label || '')
actions.setFieldValue('logisticsCompany', dataRef.current.logisticsCompanyId.find(v => v.id === value)?.name || '')
})
}}
/>
......
......@@ -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 { AddressPop } from '../../purchaseOrder/orderCollect/components/productModalTable'
import { DELIVERY_TYPE } from '@/constants'
export interface OrderProductTableProps {
editable: boolean
......@@ -337,7 +339,8 @@ const OrderProductTable:React.FC<OrderProductTableProps> = ({editable}) => {
dataIndex: 'logistics',
align: 'center',
key: 'logistics',
render: text => (text && text.render) || ''
render: (text) => (text && text && text.deliveryType === 2) ?
<AddressPop pickInfo={text}>{DELIVERY_TYPE[text.deliveryType]}</AddressPop> : DELIVERY_TYPE[text.deliveryType]
}
]
......
......@@ -5,7 +5,9 @@ import { formatTimeString } from '@/utils'
import { OrderDetailContext } from '../../_public/order/context'
import MellowCard from '@/components/MellowCard'
export interface OrderTransformRecordProps {}
export interface OrderTransformRecordProps {
type: 'saleOrder' | 'purchaseOrder'
}
const outOrderCols: any[] = [
{
......@@ -26,7 +28,7 @@ const outOrderCols: any[] = [
dataIndex: 'state',
align: 'center',
key: 'state',
render: text => <StatusColors status={text} type='out'/>
render: text => <StatusColors status={text} type='transformOut'/>
// @todo 需传递工作流状态重新render
},
{
......@@ -49,7 +51,60 @@ const outOrderCols: any[] = [
key: 'auditOpinion',
},
]
const sideOrderCols: any[] = [
const PurchaseSideOrderCols: any[] = [
{
title: '流转记录',
dataIndex: 'no',
align: 'center',
key: 'no',
render: (_, __, index: number) => index + 1
},
{
title: '操作人',
dataIndex: 'roleName',
align: 'center',
key: 'roleName',
},
{
title: '部门',
dataIndex: 'department',
align: 'center',
key: 'department',
},
{
title: '职位',
dataIndex: 'position',
align: 'center',
key: 'position',
},
{
title: '状态',
dataIndex: 'state',
align: 'center',
key: 'state',
render: text => <StatusColors status={text} type='transformInside'/>
},
{
title: '操作',
dataIndex: 'operation',
align: 'center',
key: 'operation',
},
{
title: '操作时间',
dataIndex: 'operationTime',
align: 'center',
key: 'operationTime',
render: text => formatTimeString(text)
},
{
title: '审核意见',
dataIndex: 'auditOpinion',
align: 'center',
key: 'auditOpinion',
},
]
const SaleSideOrderCols: any[] = [
{
title: '流转记录',
dataIndex: 'no',
......@@ -80,7 +135,7 @@ const sideOrderCols: any[] = [
dataIndex: 'state',
align: 'center',
key: 'state',
render: text => <StatusColors status={text} type='inside'/>
render: text => <StatusColors status={text} type='transformSaleInside'/>
},
{
title: '操作',
......@@ -103,7 +158,7 @@ const sideOrderCols: any[] = [
},
]
// 订单流转记录
const OrderTransformRecord:React.FC<OrderTransformRecordProps> = (props) => {
const OrderTransformRecord:React.FC<OrderTransformRecordProps> = ({type}) => {
const { data } = useContext(OrderDetailContext)
const { externalProcurementOrderLogResponses, interiorProcurementOrderLogResponses } = data
return (
......@@ -119,7 +174,7 @@ const OrderTransformRecord:React.FC<OrderTransformRecordProps> = (props) => {
</Tabs.TabPane>
<Tabs.TabPane tab='内部订单流转记录' key="2">
<Table
columns={sideOrderCols}
columns={type === 'saleOrder' ? SaleSideOrderCols : PurchaseSideOrderCols}
dataSource={interiorProcurementOrderLogResponses}
pagination={false}
rowKey="id"
......
......@@ -12,6 +12,8 @@ import { SALE_ORDER_STATUS } from '../../_public/order/constant'
import { usePageStatus } from '@/hooks/usePageStatus'
import ModalTable from '@/components/ModalTable'
import { formatTimeString } from '@/utils'
import { AddressPop } from '../../purchaseOrder/orderCollect/components/productModalTable'
import { DELIVERY_TYPE } from '@/constants'
export interface OrderProductTableProps {}
......@@ -391,7 +393,8 @@ const SaleOrderProductTable:React.FC<OrderProductTableProps> = (props) => {
dataIndex: 'logistics',
align: 'center',
key: 'logistics',
render: text => (text && text.render) || ''
render: (text) => (text && text && text.deliveryType === 2) ?
<AddressPop pickInfo={text}>{DELIVERY_TYPE[text.deliveryType]}</AddressPop> : DELIVERY_TYPE[text.deliveryType]
},
{
title: '仓位库存扣减记录',
......
......@@ -3,7 +3,7 @@ import { PublicApi } from '@/services/api'
export const fetchOrderApi = {
// 弹窗获取商品列表
async getProductList(params) {
const { data } = await PublicApi.getProductCommodityCommonGetCommodityListByBuyer(params)
const { data } = await PublicApi.getProductCommodityCommonGetCommodityListByBuyer(params, { useCache: true, ttl: 10 * 1000 })
return data
},
......@@ -25,8 +25,9 @@ export const fetchOrderApi = {
return data
},
// 根据需求报价id查询商品列表
async getProductListByDemandOrderId(params) {
const { data } = await PublicApi.getOrderRequisitionFormProductList(params)
const { data } = await PublicApi.getOrderQuotationParticularsProductList(params)
return data
},
......
......@@ -32,12 +32,14 @@ const DemandModalTable:React.FC<DemandModalTableProps> = (props) => {
const item = rowSelectionCtl.selectRow[0]
if (item) {
schemaAction.setFieldValue('quotationNo', item.quotationNo)
const data = await fetchOrderApi.getProductListByQuotationOrderId({
const data = await fetchOrderApi.getProductListByDemandOrderId({
id: item.id
})
schemaAction.setFieldValue('orderProductRequests', data)
schemaAction.setFieldValue('supplyMembersName', item.demandMembers)
schemaAction.setFieldValue('supplyMembersId', item.demandMemberId)
// 需求单回显订单明细
schemaAction.setFieldValue('orderThe', item.quotationSummary)
}
confirmModal && confirmModal()
setVisible(false)
......@@ -49,7 +51,7 @@ const DemandModalTable:React.FC<DemandModalTableProps> = (props) => {
visible={visible}
confirm={handleConfirm}
cancel={() => setVisible(false)}
fetchTableData={async (params) => (await PublicApi.getOrderQuotationRequisitionFormList({...params, externalState: 5})).data}
fetchTableData={async (params) => (await PublicApi.getOrderConfirmationQuotationList({...params, externalState: 5})).data}
rowSelection={rowSelection}
modalType='demandByDefault'
tableProps={{
......
......@@ -35,8 +35,15 @@ const InquiryModalTable:React.FC<InquiryModalTableProps> = (props) => {
const data = await fetchOrderApi.getProductListByQuotationOrderId({
id: item.id
})
schemaAction.setFieldValue('orderProductRequests', data)
// 将询价报价单的id字段 冗余给商品列表
schemaAction.setFieldValue('orderProductRequests', data.map((v: any) => {
v.memberId = item.memberId
v.memberRoleId = item.memberRoleId
return v
}))
schemaAction.setFieldValue('supplyMembersName', item.memberName || '后端没有返回会员名称')
// 询价单回显订单明细
schemaAction.setFieldValue('orderThe', item.details)
}
confirmModal && confirmModal()
setVisible(false)
......
......@@ -346,10 +346,17 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
}
ctx.reset({
validate: false,
selector: '*(quotationNo,supplyMembersName,orderProductRequests)'
selector: '*(quotationNo,supplyMembersName,orderProductRequests,orderThe)'
})
// 清空弹窗所选的值
productRef.current.rowSelectionCtl.setSelectRow([])
productRef.current.rowSelectionCtl.setSelectedRowKeys([])
memberRef.current.rowSelectionCtl.setSelectRow([])
memberRef.current.rowSelectionCtl.setSelectedRowKeys([])
inquiryRef.current.rowSelectionCtl.setSelectRow([])
inquiryRef.current.rowSelectionCtl.setSelectedRowKeys([])
demandRef.current.rowSelectionCtl.setSelectRow([])
demandRef.current.rowSelectionCtl.setSelectedRowKeys([])
}
})
useOrderFormInitEffect(ctx)
......@@ -403,7 +410,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
}}
/>
</Card>
<ProductModalTable currentRef={productRef} schemaAction={addSchemaAction} sectionProps={sectionProps}/>
<ProductModalTable currentRef={productRef} schemaAction={addSchemaAction} sectionProps={sectionProps} forceRender/>
<MemberModalTable currentRef={memberRef} schemaAction={addSchemaAction}/>
{/* 询价报价单弹窗 */}
<InquiryModalTable currentRef={inquiryRef} schemaAction={addSchemaAction}/>
......
......@@ -8,6 +8,11 @@ import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
export const getUnitPriceTotal = (record) => {
const purchaseCount = Number(record['purchaseCount']) || 0
// fix 当没有传递unitPrice字段时 自动容错, 单价显示为0
record.unitPrice = record.unitPrice || record.price || 0
if (typeof record.unitPrice === 'number') {
return record.unitPrice * purchaseCount
}
let unitPrice = 0
Object.entries(record.unitPrice).forEach(([key, value]) => {
const [min, max] = key.split('-').map(v => Number(v))
......
......@@ -172,27 +172,27 @@ export const inquiryColumns: any[] = [
},
{
title: '询价单号',
dataIndex: 'inquiryListNo',
dataIndex: 'requisitionFormNo',
align: 'center',
key: 'inquiryListNo',
key: 'requisitionFormNo',
},
{
title: '报价单摘要',
dataIndex: 'details',
dataIndex: 'quotationSummary',
align: 'center',
key: 'details',
key: 'quotationSummary',
},
{
title: '询价会员',
dataIndex: 'memberName',
dataIndex: 'demandMembers',
align: 'center',
key: 'memberName',
key: 'demandMembers',
},
{
title: '单据时间',
dataIndex: 'voucherTime',
dataIndex: 'documentsTime',
align: 'center',
key: 'voucherTime',
key: 'documentsTime',
render: _ => formatTimeString(_)
}
]
......
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