Commit aa5acf7a authored by 前端-钟卫鹏's avatar 前端-钟卫鹏

fix: 采购订单添加操作,确认发货取消物流必填

parent 34468f62
......@@ -58,6 +58,8 @@ const DirectChannel: React.FC<{}> = () => {
const [currentOptionId, setCurrentOptionId] = useState<number>()
const [isDisabledOKbtn, setIsDisabledOKbtn] = useState<boolean>(false)
const [isBatchOption, setIsBatchOption] = useState<boolean>(false) // 是否是批量上下架操作
const currentRef = useRef<any>([])
const currentRowRef = useRef<any>([])
const columns: ColumnType<any>[] = [
{
......@@ -187,7 +189,7 @@ const DirectChannel: React.FC<{}> = () => {
// paramId ? 单个删除 : 批量删除
const clickDelete = (paramId?: number) => {
if(selectedRowKeys.length || paramId )
if(currentRef.current.length || paramId )
confirm({
title: '确定要执行删除操作?',
icon: <ExclamationCircleOutlined />,
......@@ -195,8 +197,8 @@ const DirectChannel: React.FC<{}> = () => {
okType: 'danger',
cancelText: '取消',
onOk() {
console.log(selectedRowKeys)
PublicApi.postProductChannelCommodityDeleteBatchChannelCommodity({idList: paramId ? [paramId] : selectedRowKeys}).then(res => {
console.log(currentRef.current)
PublicApi.postProductChannelCommodityDeleteBatchChannelCommodity({idList: paramId ? [paramId] : currentRef.current}).then(res => {
if(res.code === 1000)
ref.current.reload()
})
......@@ -223,14 +225,16 @@ const DirectChannel: React.FC<{}> = () => {
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectRow(selectedRows);
setSelectedRowKeys(selectedRowKeys);
currentRef.current = selectedRowKeys
currentRowRef.current = selectedRows
}
}
// 判断所选商品 priceType, ?source, status一致
const judgeType = () => {
// let sourceArr = Array.from(new Set(selectRow.map((item:any) => item.channelCommodity.source)))
let priceTypeArr = Array.from(new Set(selectRow.map((item:any) => item.channelCommodity.commodity.priceType)))
let statusArr = Array.from(new Set(selectRow.map((item:any) => item.status)))
let priceTypeArr = Array.from(new Set(currentRowRef.current.map((item:any) => item.channelCommodity.commodity.priceType)))
let statusArr = Array.from(new Set(currentRowRef.current.map((item:any) => item.status)))
return {
isPassJudge: priceTypeArr.length === 1 && statusArr.length ===1,
// source: sourceArr,
......@@ -241,7 +245,7 @@ const DirectChannel: React.FC<{}> = () => {
const handleBatchClick = (param: string) => {
setIsBatchOption(true)
setShopsOption([])
if(selectedRowKeys.length){
if(currentRef.current.length){
let _judge = judgeType()
if(_judge.isPassJudge){
setUpDownModal(true)
......@@ -294,7 +298,7 @@ const DirectChannel: React.FC<{}> = () => {
let params: any = {}
if(isBatchOption){
params = {
idList: selectRow.map(item => item.id),
idList: currentRowRef.current.map(item => item.id),
shopList: checkedValues
}
}else{
......
......@@ -64,6 +64,7 @@ const Products: React.FC<{}> = () => {
const [checkedValues, setCheckedValues] = useState<any>([])
const [currentOptionId, setCurrentOptionId] = useState()
const [isDisabledOKbtn, setIsDisabledOKbtn] = useState<boolean>(false)
const currentRef = useRef<any>()
const [shopId, setShopId] = useState<any>()
/** 带参数查询,给表单带默认值 */
......@@ -223,6 +224,7 @@ const Products: React.FC<{}> = () => {
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectRow(selectedRows);
setSelectedRowKeys(selectedRowKeys);
currentRef.current = selectedRowKeys
}
}
......@@ -441,10 +443,10 @@ const Products: React.FC<{}> = () => {
}
const handleMenuClick = (e: any) => {
console.log('menu', e, selectedRowKeys); // 1 批量删除;2 删除导入批次
// 1 批量删除;2 删除导入批次
if(e.key === '1'){
console.log('批量删除')
handleBatchDelete(selectedRowKeys, true)
handleBatchDelete(currentRef.current, true)
}else if(e.key === '2'){
console.log('删除导入批次')
setDeleteBatchModal(true)
......@@ -452,7 +454,7 @@ const Products: React.FC<{}> = () => {
}
const handleBatchDelete = (ids: string[], param?: boolean) => {
if(ids.length)
if(ids.length) {
if(param){
confirm({
title: '确定要执行批量删除操作?',
......@@ -478,8 +480,9 @@ const Products: React.FC<{}> = () => {
ref.current.reload()
})
}
else
message.error('请选择需要操作的商品!')
} else {
message.error('请选择需要操作的商品')
}
}
const confirmDelete = (paramId: any) => {
......
......@@ -64,10 +64,10 @@ const schema: ISchema = {
type: 'string',
title: '物流单号',
"x-rules": [
{
required: true,
message: '请输入物流单号'
},
// {
// required: true,
// message: '请输入物流单号'
// },
{
limitByte: true,
maxByte: 20
......@@ -81,12 +81,12 @@ const schema: ISchema = {
type: 'string',
enum: [],
title: '物流公司',
"x-rules": [
{
message: '请选择物流公司',
required: true
}
],
// "x-rules": [
// {
// message: '请选择物流公司',
// required: true
// }
// ],
"x-mega-props": {
span: 1
}
......
import React, { useState, useRef, useCallback } from 'react'
import { Card, Button, Modal, Row, Col, message } from 'antd'
import { Card, Button, Modal, Row, Col, message, Dropdown, Menu } from 'antd'
import { StandardTable } from 'god'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PublicApi } from '@/services/api'
......@@ -18,6 +18,7 @@ import cx from 'classnames'
import TableOperation from '@/components/TableOperation'
import ModalForm from '@/components/ModalForm'
import { useHttpRequest } from '@/hooks/useHttpRequest'
import { CaretDownOutlined } from '@ant-design/icons'
const SelectStyles = styled((props) => <div className='select-list' {...props}></div>)`
.select_style_border {
......@@ -121,29 +122,44 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
destroyActions.setFieldValue('id', id)
}
/** 参照后台数据生成 */
const renderOptionButton = (record: any) => {
if(record.button === 1) {
record.button = null
}
const statusAndOperationList = {
'2': ['取消订单'],
'3': ['售后'],
'4': ['售后', '评价'],
}
/** 参照后台数据生成 */
const renderOptionButton = (record: any) => {
const buttonGroup = { '取消订单': record.showCancel, '售后': record.showAfterSales, '评价': record.showComment }
const operationHandler = {
'取消订单': () => handleCancel(record.id),
'售后': () => handleSaleAfter(record.id),
'评价': () => handleEvaluate(record.id),
'取消订单': () => handleCancel(record.orderId),
'售后': () => handleSaleAfter(record.orderId),
'评价': () => handleEvaluate(record.orderId),
}
return (
<TableOperation
record={record}
customField='button'
statusOperationMap={statusAndOperationList}
operationHandler={operationHandler}
/>
)
const keyNames = Object.keys(buttonGroup)
return (<>
{
Object.values(buttonGroup).filter(Boolean).length > 2
?
<>
<Button type='link' onClick={operationHandler[keyNames[0]]}>{keyNames[0]}</Button>
<Dropdown overlay={
<Menu>
{
keyNames.slice(1, keyNames.length).map((e, i) => (
<Menu.Item key={`menuItem${i}`}>
<Button type='link' onClick={operationHandler[e]}>{ e }</Button>
</Menu.Item>
))
}
</Menu>
}>
<a className="ant-dropdown-link" onClick={e => e.preventDefault()}>
更多 <CaretDownOutlined />
</a>
</Dropdown>
</>
:
keyNames.map((e, i) => (buttonGroup[e] ? <Button key={`btnItem${i}`} type='link' onClick={operationHandler[e]}>{ e }</Button> : null))
}
</>)
}
const secondColumns = () => {
......
......@@ -42,7 +42,7 @@ const ReadyReceiveOrderDetail: React.FC = () => {
<div>
<OrderDetailContext.Provider value={formContext}>
<OrderDetailHeader detailList={detailList} detailData={formContext.data} extraRight={
<Button type='primary' onClick={handleClick}>
formContext.data?.receiveDone && <Button type='primary' onClick={handleClick}>
{isHeadReceipt ? '手工收货' : '去确认收货'}
</Button>
} />
......
import React, { useCallback, useRef } from 'react'
import { Card, Button } from 'antd'
import { Card, Button, Dropdown, Menu } from 'antd'
import { StandardTable } from 'god'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PublicApi } from '@/services/api'
......@@ -16,6 +16,7 @@ import { createFormActions } from '@formily/antd'
import TableOperation from '@/components/TableOperation'
import ModalForm from '@/components/ModalForm'
import { useHttpRequest } from '@/hooks/useHttpRequest'
import { CaretDownOutlined } from '@ant-design/icons'
// 销售订单查询
......@@ -34,13 +35,13 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
const ref = useRef<any>({})
const destoryRef = useRef<any>({})
const pauseRef = useRef<any>({})
const { run, loading } = useHttpRequest(PublicApi.postOrderPurchaseOrderCancel)
const { run: runPause, loading: loadingEnd } = useHttpRequest(PublicApi.postOrderSuspension)
const { run, loading } = useHttpRequest(PublicApi.postOrderVendorCancel)
const { run: runPause, loading: loadingEnd } = useHttpRequest(PublicApi.postOrderVendorTerminate)
// 提交取消
const handleSubmit = useCallback(() => {
destroyActions.submit().then(async ({values}: any) => {
const result = await run(values)
const result = await run({ orderId: values.id, reason: values.cancelReason })
if (result.code === 1000) {
destoryRef.current.setVisible(false)
setTimeout(() => {
......@@ -53,7 +54,7 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
// 提交中止
const handleSubmitPause = useCallback(() => {
pauseActions.submit().then(async ({values}: any) => {
const result = await runPause(values)
const result = await runPause({ orderId: values.id, reason: values.auditOpinion })
if (result.code === 1000) {
pauseRef.current.setVisible(false)
setTimeout(() => {
......@@ -69,38 +70,53 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
const handleCancel = (r) => {
destoryRef.current.setVisible(true)
destroyActions.setFieldValue('id', r.id)
destroyActions.setFieldValue('id', r.orderId)
}
const handleSuspend = (r) => {
pauseRef.current.setVisible(true)
pauseActions.setFieldValue('id', r.id)
pauseActions.setFieldValue('id', r.orderId)
pauseActions.setFieldValue('state', 1)
}
// 1.(查看)2.(查看、取消订单)3.(查看售后),4.(评价查看售后)5.(提交审核修改删除查看)6.(修改查看),7.(查看中止)8.查看评价9.待新增采购入库单
// 10.审核采购入库单,11.待新增销售发货单12.审核销售发货单13.待新增物流单,14.查看物流单15.修改物流单
/** 参照后台数据生成 */
const renderOptionButton = (record: any) => {
const statusAndOperationList = {
'2': ['取消订单'],
'7': ['中止'],
'8': ['评价'],
}
const buttonGroup = { '取消订单': record.showCancel, '中止': record.showTerminate, '评价': record.showComment }
const operationHandler = {
'取消订单': () => handleCancel(record),
'中止': () => handleSuspend(record),
'评价': () => handleEvaluate(record.id),
'评价': () => handleEvaluate(record.orderId),
}
return (
<TableOperation
record={record}
customField='button'
statusOperationMap={statusAndOperationList}
operationHandler={operationHandler}
priorityOperationName='审核'
/>
)
const keyNames = Object.keys(buttonGroup)
return (<>
{
Object.values(buttonGroup).filter(Boolean).length > 2
?
<>
<Button type='link' onClick={operationHandler[keyNames[0]]}>{keyNames[0]}</Button>
<Dropdown overlay={
<Menu>
{
keyNames.slice(1, keyNames.length).map((e, i) => (
<Menu.Item key={`menuItem${i}`}>
<Button type='link' onClick={operationHandler[e]}>{ e }</Button>
</Menu.Item>
))
}
</Menu>
}>
<a className="ant-dropdown-link" onClick={e => e.preventDefault()}>
更多 <CaretDownOutlined />
</a>
</Dropdown>
</>
:
keyNames.map((e, i) => (buttonGroup[e] ? <Button key={`btnItem${i}`} type='link' onClick={operationHandler[e]}>{ e }</Button> : null))
}
</>)
}
const secondColumns = () => {
......
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