Commit a45593e06b460ca04c8f961fc89535b8ac4609d7

Authored by 柏杨
1 parent ca07bc32

feat: 开票查询

src/pages/Order/FeedBack/constant.ts
@@ -251,13 +251,8 @@ export const FINANCIAL_STATUS_OPTIONS = { @@ -251,13 +251,8 @@ export const FINANCIAL_STATUS_OPTIONS = {
251 export const AFTER_INVOICING_STATUS = { 251 export const AFTER_INVOICING_STATUS = {
252 NOT_YET_INVOICED: '尚未开票', 252 NOT_YET_INVOICED: '尚未开票',
253 APPLY_FOR_INVOICING: '申请开票', 253 APPLY_FOR_INVOICING: '申请开票',
254 - URGENT_INVOICE_AUDITING: '加急待审核',  
255 - URGENT_INVOICE_AUDIT_NOTPASS: '加急审核失败',  
256 PARTIAL_INVOICING: '部分开票', 254 PARTIAL_INVOICING: '部分开票',
257 COMPLETE_INVOICING: '完全开票', 255 COMPLETE_INVOICING: '完全开票',
258 - INVOICING: '开票中',  
259 - REISSUE: '重新开票',  
260 - UN_INVOICE: '不需开票',  
261 }; 256 };
262 257
263 export const TAGS_COLOR = new Map<string, string>([ 258 export const TAGS_COLOR = new Map<string, string>([
src/pages/Order/OrderList/OrderList.tsx
@@ -2556,1518 +2556,1565 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; { @@ -2556,1518 +2556,1565 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
2556 ); 2556 );
2557 }; 2557 };
2558 2558
  2559 + // 检查主订单是否包含待冲红的子订单
  2560 + const hasWaitFlushSubOrder = (record: OrderListItemType): boolean => {
  2561 + return (
  2562 + record.subOrderInformationLists?.some(
  2563 + (subOrder: any) => subOrder.afterInvoicingStatus === 'WAIT_FLUSH',
  2564 + ) || false
  2565 + );
  2566 + };
  2567 +
2559 // 主订单内容渲染 2568 // 主订单内容渲染
2560 const MainOrderColumnRender = ({ record }: { record: OrderListItemType }) => { 2569 const MainOrderColumnRender = ({ record }: { record: OrderListItemType }) => {
  2570 + const showWaitFlushBadge = hasWaitFlushSubOrder(record);
  2571 +
2561 return ( 2572 return (
2562 - <Flex vertical={true}>  
2563 - {/* 编号、时间、销售信息 */}  
2564 - <Flex  
2565 - className="px-4 py-4 bg-white rounded-t-lg"  
2566 - justify="space-between"  
2567 - >  
2568 - <Flex wrap="wrap" gap="middle" vertical>  
2569 - <Flex> 2573 + <div style={{ position: 'relative', overflow: 'visible' }}>
  2574 + {showWaitFlushBadge && (
  2575 + <div
  2576 + style={{
  2577 + position: 'absolute',
  2578 + top: 4,
  2579 + left: 4,
  2580 + zIndex: 10,
  2581 + backgroundColor: 'rgba(255, 255, 255, 0.85)',
  2582 + color: '#ff4d4f',
  2583 + border: '1px solid #ff4d4f',
  2584 + borderRadius: '20px',
  2585 + fontSize: '24px',
  2586 + fontWeight: 'normal',
  2587 + padding: '8px 16px',
  2588 + height: 'auto',
  2589 + minWidth: 'auto',
  2590 + lineHeight: '32px',
  2591 + whiteSpace: 'nowrap',
  2592 + pointerEvents: 'none',
  2593 + boxShadow: '0 2px 8px rgba(255, 77, 79, 0.15)',
  2594 + }}
  2595 + >
  2596 + 待冲红
  2597 + </div>
  2598 + )}
  2599 + <Flex vertical={true}>
  2600 + {/* 编号、时间、销售信息 */}
  2601 + <Flex
  2602 + className="px-4 py-4 bg-white rounded-t-lg"
  2603 + justify="space-between"
  2604 + >
  2605 + <Flex wrap="wrap" gap="middle" vertical>
2570 <Flex> 2606 <Flex>
2571 - <Checkbox  
2572 - onChange={() => onCheckboxChange(record)}  
2573 - checked={selectedMainOrderKeys.includes(record.id)}  
2574 - >  
2575 - <Space split={<Divider type="vertical" />}>  
2576 - <div>  
2577 - <span className="text-[#8C8C8C]">订单号:</span>  
2578 - <span className="text-slate-700">{record.id}</span>  
2579 - {record.modified ? (  
2580 - <Tooltip title="点击查看详情">  
2581 - <span  
2582 - className="text-[#f44e4e] cursor-pointer"  
2583 - onClick={async () => {  
2584 - createOptObject(null, record.id);  
2585 - setModifiedDiffModalVisible(true);  
2586 - }}  
2587 - >  
2588 - (修改过)  
2589 - </span>  
2590 - </Tooltip>  
2591 - ) : (  
2592 - ''  
2593 - )}  
2594 - </div>  
2595 - </Space>  
2596 - </Checkbox>  
2597 - <Tooltip title="点击复制订单号">  
2598 - <CopyOutlined  
2599 - className="hover:cursor-pointer"  
2600 - style={{ color: '#8C8C8C' }}  
2601 - onClick={() => {  
2602 - copyToClipboard(record.id);  
2603 - message.info('订单号复制成功!');  
2604 - }}  
2605 - />  
2606 - </Tooltip>  
2607 - <Divider type="vertical" />  
2608 - <span>{formatDateTime(record.createTime)}</span>  
2609 - <Divider type="vertical" />  
2610 - <Space split={<Divider type="vertical" />}>  
2611 - <div  
2612 - className="hover:cursor-pointer"  
2613 - onClick={() => {  
2614 - copyToClipboard(record.salesCode);  
2615 - message.info('代表复制成功:' + record.salesCode);  
2616 - }} 2607 + <Flex>
  2608 + <Checkbox
  2609 + onChange={() => onCheckboxChange(record)}
  2610 + checked={selectedMainOrderKeys.includes(record.id)}
2617 > 2611 >
2618 - <span className="text-[#8C8C8C]">代表:</span>  
2619 - <span className="text-slate-700">{record.salesCode}</span>  
2620 - </div>  
2621 - {!isSupplier() ? (  
2622 - <>  
2623 - <div  
2624 - title={record.institution}  
2625 - className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[150px]"  
2626 - >  
2627 - <span className="text-[#8C8C8C]">单位:</span>  
2628 - <span className="text-slate-700">  
2629 - {record.institution}  
2630 - </span> 2612 + <Space split={<Divider type="vertical" />}>
  2613 + <div>
  2614 + <span className="text-[#8C8C8C]">订单号:</span>
  2615 + <span className="text-slate-700">{record.id}</span>
  2616 + {record.modified ? (
  2617 + <Tooltip title="点击查看详情">
  2618 + <span
  2619 + className="text-[#f44e4e] cursor-pointer"
  2620 + onClick={async () => {
  2621 + createOptObject(null, record.id);
  2622 + setModifiedDiffModalVisible(true);
  2623 + }}
  2624 + >
  2625 + (修改过)
  2626 + </span>
  2627 + </Tooltip>
  2628 + ) : (
  2629 + ''
  2630 + )}
2631 </div> 2631 </div>
2632 - <span>  
2633 - <span className="text-[#8C8C8C]">课题组:</span>  
2634 - <span className="text-slate-700">  
2635 - {record.institutionContactName  
2636 - ? record.institutionContactName + ' '  
2637 - : '企业'}  
2638 - </span>  
2639 - </span>  
2640 - </>  
2641 - ) : (  
2642 - ''  
2643 - )}  
2644 - <div  
2645 - title={record.institution}  
2646 - className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[150px]"  
2647 - >  
2648 - <span 2632 + </Space>
  2633 + </Checkbox>
  2634 + <Tooltip title="点击复制订单号">
  2635 + <CopyOutlined
2649 className="hover:cursor-pointer" 2636 className="hover:cursor-pointer"
  2637 + style={{ color: '#8C8C8C' }}
2650 onClick={() => { 2638 onClick={() => {
2651 - copyToClipboard(record.customerName);  
2652 - message.info('收货人复制成功:' + record.customerName); 2639 + copyToClipboard(record.id);
  2640 + message.info('订单号复制成功!');
2653 }} 2641 }}
2654 - >  
2655 - <span className="text-[#8C8C8C]">收货人:</span>  
2656 - {!isSupplier() && (  
2657 - <Tooltip className="order-tooltip" title="详情">  
2658 - <ContainerTwoTone  
2659 - className="px-1 hover:curcor-pointer"  
2660 - onClick={() => {  
2661 - createOptObject(null, record.id);  
2662 - setDeliverInfoDrawerVisible(true);  
2663 - }}  
2664 - />  
2665 - </Tooltip>  
2666 - )}  
2667 - <span className="text-slate-700">  
2668 - {record.customerName + ' '}  
2669 - </span>  
2670 - </span>  
2671 - </div>  
2672 -  
2673 - {isSupplier() ? ( 2642 + />
  2643 + </Tooltip>
  2644 + <Divider type="vertical" />
  2645 + <span>{formatDateTime(record.createTime)}</span>
  2646 + <Divider type="vertical" />
  2647 + <Space split={<Divider type="vertical" />}>
2674 <div 2648 <div
2675 - title={record.customerShippingAddress}  
2676 - className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[400px] hover:cursor-pointer" 2649 + className="hover:cursor-pointer"
2677 onClick={() => { 2650 onClick={() => {
2678 - copyToClipboard(record.customerShippingAddress);  
2679 - message.info(  
2680 - '收货地址复制成功:' + record.customerShippingAddress,  
2681 - ); 2651 + copyToClipboard(record.salesCode);
  2652 + message.info('代表复制成功:' + record.salesCode);
2682 }} 2653 }}
2683 > 2654 >
2684 - <span className="text-[#8C8C8C]">收货地址:</span>  
2685 - <span className="text-slate-700">  
2686 - {record.customerShippingAddress} 2655 + <span className="text-[#8C8C8C]">代表:</span>
  2656 + <span className="text-slate-700">{record.salesCode}</span>
  2657 + </div>
  2658 + {!isSupplier() ? (
  2659 + <>
  2660 + <div
  2661 + title={record.institution}
  2662 + className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[150px]"
  2663 + >
  2664 + <span className="text-[#8C8C8C]">单位:</span>
  2665 + <span className="text-slate-700">
  2666 + {record.institution}
  2667 + </span>
  2668 + </div>
  2669 + <span>
  2670 + <span className="text-[#8C8C8C]">课题组:</span>
  2671 + <span className="text-slate-700">
  2672 + {record.institutionContactName
  2673 + ? record.institutionContactName + ' '
  2674 + : '企业'}
  2675 + </span>
  2676 + </span>
  2677 + </>
  2678 + ) : (
  2679 + ''
  2680 + )}
  2681 + <div
  2682 + title={record.institution}
  2683 + className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[150px]"
  2684 + >
  2685 + <span
  2686 + className="hover:cursor-pointer"
  2687 + onClick={() => {
  2688 + copyToClipboard(record.customerName);
  2689 + message.info(
  2690 + '收货人复制成功:' + record.customerName,
  2691 + );
  2692 + }}
  2693 + >
  2694 + <span className="text-[#8C8C8C]">收货人:</span>
  2695 + {!isSupplier() && (
  2696 + <Tooltip className="order-tooltip" title="详情">
  2697 + <ContainerTwoTone
  2698 + className="px-1 hover:curcor-pointer"
  2699 + onClick={() => {
  2700 + createOptObject(null, record.id);
  2701 + setDeliverInfoDrawerVisible(true);
  2702 + }}
  2703 + />
  2704 + </Tooltip>
  2705 + )}
  2706 + <span className="text-slate-700">
  2707 + {record.customerName + ' '}
  2708 + </span>
2687 </span> 2709 </span>
2688 </div> 2710 </div>
2689 - ) : (  
2690 - ''  
2691 - )}  
2692 - </Space>  
2693 - </Flex>  
2694 - </Flex>  
2695 2711
2696 - {isSupplier() ? (  
2697 - <Flex className="pl-6" align="center">  
2698 - <Flex  
2699 - className="hover:cursor-pointer"  
2700 - onClick={() => {  
2701 - copyToClipboard(record.customerContactNumber);  
2702 - message.info(  
2703 - '联系电话复制成功:' + record.customerContactNumber,  
2704 - );  
2705 - }}  
2706 - >  
2707 - <span className="text-[#8C8C8C]">联系电话:</span>  
2708 - <span className="text-slate-700">  
2709 - {record.customerContactNumber + ' '}  
2710 - </span> 2712 + {isSupplier() ? (
  2713 + <div
  2714 + title={record.customerShippingAddress}
  2715 + className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[400px] hover:cursor-pointer"
  2716 + onClick={() => {
  2717 + copyToClipboard(record.customerShippingAddress);
  2718 + message.info(
  2719 + '收货地址复制成功:' +
  2720 + record.customerShippingAddress,
  2721 + );
  2722 + }}
  2723 + >
  2724 + <span className="text-[#8C8C8C]">收货地址:</span>
  2725 + <span className="text-slate-700">
  2726 + {record.customerShippingAddress}
  2727 + </span>
  2728 + </div>
  2729 + ) : (
  2730 + ''
  2731 + )}
  2732 + </Space>
2711 </Flex> 2733 </Flex>
2712 </Flex> 2734 </Flex>
2713 - ) : (  
2714 - ''  
2715 - )}  
2716 2735
2717 - <Flex className="pl-6" align="center">  
2718 - {roleCode === 'finance' ? (  
2719 - <div  
2720 - title={enumValueToLabel(  
2721 - record.receivingCompany,  
2722 - getReceivingCompanyOptions(PAYEE_OPTIONS),  
2723 - )}  
2724 - className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[400px]"  
2725 - >  
2726 - <span className="text-[#8C8C8C]">开票收款单位:</span>  
2727 - <span className="text-slate-700">  
2728 - {record.receivingCompany !== null  
2729 - ? enumValueToLabel(  
2730 - record.receivingCompany,  
2731 - getReceivingCompanyOptions(PAYEE_OPTIONS),  
2732 - )  
2733 - : '暂无'}  
2734 - </span>  
2735 - </div> 2736 + {isSupplier() ? (
  2737 + <Flex className="pl-6" align="center">
  2738 + <Flex
  2739 + className="hover:cursor-pointer"
  2740 + onClick={() => {
  2741 + copyToClipboard(record.customerContactNumber);
  2742 + message.info(
  2743 + '联系电话复制成功:' + record.customerContactNumber,
  2744 + );
  2745 + }}
  2746 + >
  2747 + <span className="text-[#8C8C8C]">联系电话:</span>
  2748 + <span className="text-slate-700">
  2749 + {record.customerContactNumber + ' '}
  2750 + </span>
  2751 + </Flex>
  2752 + </Flex>
2736 ) : ( 2753 ) : (
2737 '' 2754 ''
2738 )} 2755 )}
2739 2756
2740 - {roleCode === 'finance' ? <Divider type="vertical" /> : ''}  
2741 -  
2742 - {/* 添加付款审核状态 */}  
2743 - <div>  
2744 - <span className="text-[#8C8C8C]">付款状态:</span>  
2745 - <span className="text-slate-700">  
2746 - {getPaymentStatusText(record.paymentAuditStatus)}  
2747 - </span>  
2748 - </div>  
2749 - <Divider type="vertical" />  
2750 -  
2751 - {/* 开票状态 */}  
2752 - <div>  
2753 - <span className="text-[#8C8C8C]">开票状态:</span>  
2754 - <span className="text-slate-700">  
2755 - {enumValueToLabel(  
2756 - record.afterInvoicingStatus,  
2757 - AFTER_INVOICING_STATUS,  
2758 - ) || '尚未开票'}  
2759 - </span>  
2760 - </div>  
2761 - <Divider type="vertical" /> 2757 + <Flex className="pl-6" align="center">
  2758 + {roleCode === 'finance' ? (
  2759 + <div
  2760 + title={enumValueToLabel(
  2761 + record.receivingCompany,
  2762 + getReceivingCompanyOptions(PAYEE_OPTIONS),
  2763 + )}
  2764 + className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[400px]"
  2765 + >
  2766 + <span className="text-[#8C8C8C]">开票收款单位:</span>
  2767 + <span className="text-slate-700">
  2768 + {record.receivingCompany !== null
  2769 + ? enumValueToLabel(
  2770 + record.receivingCompany,
  2771 + getReceivingCompanyOptions(PAYEE_OPTIONS),
  2772 + )
  2773 + : '暂无'}
  2774 + </span>
  2775 + </div>
  2776 + ) : (
  2777 + ''
  2778 + )}
2762 2779
2763 - {/* 添加已回款金额 */}  
2764 - <div>  
2765 - <span className="text-[#8C8C8C]">已回款金额:¥</span>  
2766 - <span className="text-slate-700">  
2767 - {record.payedMoney || '0'}  
2768 - </span>  
2769 - </div>  
2770 - <Divider type="vertical" /> 2780 + {roleCode === 'finance' ? <Divider type="vertical" /> : ''}
2771 2781
2772 - {/* 添加未回款金额 */}  
2773 - <div>  
2774 - <span className="text-[#8C8C8C]">未回款金额:¥</span>  
2775 - <span className="text-slate-700">  
2776 - {record.unPayedMoney || '0'}  
2777 - </span>  
2778 - </div>  
2779 - <Divider type="vertical" />  
2780 - </Flex>  
2781 - <Flex className="pl-6" align="center">  
2782 - <div>  
2783 - <span className="text-[#8C8C8C]">开票中金额:¥</span>  
2784 - <span className="text-slate-700">  
2785 - {record.invoicePendingAmount || '-'}  
2786 - </span>  
2787 - </div>  
2788 - <Divider type="vertical" />  
2789 - <div>  
2790 - <span className="text-[#8C8C8C]">已开票金额:¥</span>  
2791 - <span className="text-slate-700">  
2792 - {record.invoiceIssuedAmount || '-'}  
2793 - </span>  
2794 - </div>  
2795 - <Divider type="vertical" />  
2796 - {/* 添加发票核销金额 */}  
2797 - <div>  
2798 - <span className="text-[#8C8C8C]">发票核销金额:¥</span>  
2799 - <span className="text-slate-700">  
2800 - {record.invoiceMoney || '-'}  
2801 - </span>  
2802 - </div>  
2803 - <Divider type="vertical" />  
2804 - </Flex>  
2805 - <Flex className="pl-6" align="center">  
2806 - <div title={record.notes}>  
2807 - <div  
2808 - className="max-w-[850px] whitespace-normal overflow-hidden overflow-ellipsis hover:cursor-pointer"  
2809 - onClick={() => {  
2810 - copyToClipboard(record.notes);  
2811 - message.info('备注复制成功:' + record.notes);  
2812 - }}  
2813 - >  
2814 - <span className="text-[#8C8C8C]">备注:</span>  
2815 - <span className="ml-2">  
2816 - {record.notes === null ? '暂无备注' : record.notes} 2782 + {/* 添加付款审核状态 */}
  2783 + <div>
  2784 + <span className="text-[#8C8C8C]">付款状态:</span>
  2785 + <span className="text-slate-700">
  2786 + {getPaymentStatusText(record.paymentAuditStatus)}
2817 </span> 2787 </span>
2818 </div> 2788 </div>
2819 - </div> 2789 + <Divider type="vertical" />
2820 2790
2821 - {!isSupplier() ? (  
2822 - <Tooltip title="编辑">  
2823 - <EditTwoTone  
2824 - className="pl-1 hover:curcor-pointer"  
2825 - onClick={() => {  
2826 - setNotesEditVisible(true);  
2827 - setSelectedRows([record.id]);  
2828 - setNotes(record.notes);  
2829 - setNotesType(0);  
2830 - }}  
2831 - />  
2832 - </Tooltip>  
2833 - ) : (  
2834 - ''  
2835 - )} 2791 + {/* 开票状态 */}
  2792 + <div>
  2793 + <span className="text-[#8C8C8C]">开票状态:</span>
  2794 + <span className="text-slate-700">
  2795 + {enumValueToLabel(
  2796 + record.afterInvoicingStatus,
  2797 + AFTER_INVOICING_STATUS,
  2798 + ) || '尚未开票'}
  2799 + </span>
  2800 + </div>
  2801 + <Divider type="vertical" />
2836 2802
2837 - {record.goodsWeight !== null ? (  
2838 - <div title={record.goodsWeight + 'kg'} className="pl-3">  
2839 - <div  
2840 - className="overflow-hidden max-w-md overflow-ellipsis whitespace-no-wrap hover:cursor-pointer"  
2841 - onClick={() => {  
2842 - copyToClipboard(record.goodsWeight + 'kg');  
2843 - message.info(  
2844 - '包裹重量复制成功:' + record.goodsWeight + 'kg',  
2845 - );  
2846 - }}  
2847 - >  
2848 - <span className="text-[#8C8C8C]">包裹重量:</span>  
2849 - <span className="ml-2">{record.goodsWeight + 'kg'}</span>  
2850 - </div> 2803 + {/* 添加已回款金额 */}
  2804 + <div>
  2805 + <span className="text-[#8C8C8C]">已回款金额:¥</span>
  2806 + <span className="text-slate-700">
  2807 + {record.payedMoney || '0'}
  2808 + </span>
2851 </div> 2809 </div>
2852 - ) : (  
2853 - ''  
2854 - )} 2810 + <Divider type="vertical" />
2855 2811
2856 - {record.goodsVolume !== null ? (  
2857 - <div title={record.goodsVolume + 'm³'} className="pl-3"> 2812 + {/* 添加未回款金额 */}
  2813 + <div>
  2814 + <span className="text-[#8C8C8C]">未回款金额:¥</span>
  2815 + <span className="text-slate-700">
  2816 + {record.unPayedMoney || '0'}
  2817 + </span>
  2818 + </div>
  2819 + <Divider type="vertical" />
  2820 + </Flex>
  2821 + <Flex className="pl-6" align="center">
  2822 + <div>
  2823 + <span className="text-[#8C8C8C]">开票中金额:¥</span>
  2824 + <span className="text-slate-700">
  2825 + {record.invoicePendingAmount || '-'}
  2826 + </span>
  2827 + </div>
  2828 + <Divider type="vertical" />
  2829 + <div>
  2830 + <span className="text-[#8C8C8C]">已开票金额:¥</span>
  2831 + <span className="text-slate-700">
  2832 + {record.invoiceIssuedAmount || '-'}
  2833 + </span>
  2834 + </div>
  2835 + <Divider type="vertical" />
  2836 + {/* 添加发票核销金额 */}
  2837 + <div>
  2838 + <span className="text-[#8C8C8C]">发票核销金额:¥</span>
  2839 + <span className="text-slate-700">
  2840 + {record.invoiceMoney || '-'}
  2841 + </span>
  2842 + </div>
  2843 + <Divider type="vertical" />
  2844 + </Flex>
  2845 + <Flex className="pl-6" align="center">
  2846 + <div title={record.notes}>
2858 <div 2847 <div
2859 - className="overflow-hidden max-w-md overflow-ellipsis whitespace-no-wrap hover:cursor-pointer" 2848 + className="max-w-[850px] whitespace-normal overflow-hidden overflow-ellipsis hover:cursor-pointer"
2860 onClick={() => { 2849 onClick={() => {
2861 - copyToClipboard(record.goodsVolume + 'm³');  
2862 - message.info(  
2863 - '包裹体积复制成功:' + record.goodsVolume + 'm³',  
2864 - ); 2850 + copyToClipboard(record.notes);
  2851 + message.info('备注复制成功:' + record.notes);
2865 }} 2852 }}
2866 > 2853 >
2867 - <span className="text-[#8C8C8C]">包裹体积:</span>  
2868 - <span className="ml-2">{record.goodsVolume + 'm³'}</span>  
2869 - </div>  
2870 - </div>  
2871 - ) : (  
2872 - ''  
2873 - )}  
2874 - </Flex>  
2875 - </Flex>  
2876 - <Flex wrap="wrap" gap="middle" vertical>  
2877 - <Flex justify="flex-end">  
2878 - <Flex wrap="wrap" gap="middle" align="center">  
2879 - {!isSupplier() ? (  
2880 - <div>  
2881 - <span className="text-[#8C8C8C]">总金额:¥</span>  
2882 - <span className="text-lg font-medium">  
2883 - {record.totalPayment || '0'} 2854 + <span className="text-[#8C8C8C]">备注:</span>
  2855 + <span className="ml-2">
  2856 + {record.notes === null ? '暂无备注' : record.notes}
2884 </span> 2857 </span>
2885 </div> 2858 </div>
2886 - ) : (  
2887 - ''  
2888 - )} 2859 + </div>
2889 2860
2890 - {rolePath?.includes('addOrder') ? (  
2891 - <Tooltip title="复制">  
2892 - <CopyTwoTone  
2893 - className="hover:cursor-pointer"  
2894 - onClick={() => {  
2895 - createOptObject(null, record.id);  
2896 - copyOrderToClipboard(record);  
2897 - setOrderOptType('copy');  
2898 - setOrderDrawerVisible(true);  
2899 - }}  
2900 - />  
2901 - </Tooltip>  
2902 - ) : (  
2903 - <Tooltip title="复制文本">  
2904 - <CopyTwoTone  
2905 - className="hover:cursor-pointer"  
2906 - onClick={() => {  
2907 - copyOrderToClipboard(record);  
2908 - }}  
2909 - />  
2910 - </Tooltip>  
2911 - )}  
2912 {!isSupplier() ? ( 2861 {!isSupplier() ? (
2913 - <Tooltip title="历史">  
2914 - <ClockCircleTwoTone  
2915 - className="hover:cursor-pointer" 2862 + <Tooltip title="编辑">
  2863 + <EditTwoTone
  2864 + className="pl-1 hover:curcor-pointer"
2916 onClick={() => { 2865 onClick={() => {
2917 - setHistoryModalVisible(true);  
2918 - if (subOrderSelectedMap.get(record.id)?.length) {  
2919 - setSelectedRows(subOrderSelectedMap.get(record.id));  
2920 - } else {  
2921 - setSelectedRows(record.subOrderInformationLists);  
2922 - } 2866 + setNotesEditVisible(true);
  2867 + setSelectedRows([record.id]);
  2868 + setNotes(record.notes);
  2869 + setNotesType(0);
2923 }} 2870 }}
2924 /> 2871 />
2925 </Tooltip> 2872 </Tooltip>
2926 ) : ( 2873 ) : (
2927 '' 2874 ''
2928 )} 2875 )}
2929 - </Flex>  
2930 - </Flex>  
2931 - <Flex justify="flex-end">  
2932 - <Space.Compact direction="vertical" align="end">  
2933 - <Space wrap>  
2934 - {record.paths?.includes('postAudit') ? (  
2935 - <Button  
2936 - className="p-0"  
2937 - type="link" 2876 +
  2877 + {record.goodsWeight !== null ? (
  2878 + <div title={record.goodsWeight + 'kg'} className="pl-3">
  2879 + <div
  2880 + className="overflow-hidden max-w-md overflow-ellipsis whitespace-no-wrap hover:cursor-pointer"
2938 onClick={() => { 2881 onClick={() => {
2939 - setCurrentMainId(record.id);  
2940 - setCurretnOptSubId(null);  
2941 - setCheckVisible(true);  
2942 - setOrderCheckType(CHECK_TYPE.WAITING_FOR_POST_AUDIT); 2882 + copyToClipboard(record.goodsWeight + 'kg');
  2883 + message.info(
  2884 + '包裹重量复制成功:' + record.goodsWeight + 'kg',
  2885 + );
2943 }} 2886 }}
2944 > 2887 >
2945 - 后置审核  
2946 - </Button>  
2947 - ) : (  
2948 - ''  
2949 - )}  
2950 - {record.paths?.includes('URGENT_INVOICE_AUDITING') ? (  
2951 - <Button  
2952 - className="p-0"  
2953 - type="link"  
2954 - onClick={() => {  
2955 - createOptObject(null, record.id);  
2956 - setCheckVisible(true);  
2957 - setOrderCheckType(CHECK_TYPE.URGENT_INVOICE_AUDITING);  
2958 - }}  
2959 - >  
2960 - 加急审核(新)  
2961 - </Button>  
2962 - ) : (  
2963 - ''  
2964 - )}  
2965 - {record.paths?.includes('URGENT_INVOICE_AUDITING_old') ? (  
2966 - <Button  
2967 - className="p-0"  
2968 - type="link" 2888 + <span className="text-[#8C8C8C]">包裹重量:</span>
  2889 + <span className="ml-2">{record.goodsWeight + 'kg'}</span>
  2890 + </div>
  2891 + </div>
  2892 + ) : (
  2893 + ''
  2894 + )}
  2895 +
  2896 + {record.goodsVolume !== null ? (
  2897 + <div title={record.goodsVolume + 'm³'} className="pl-3">
  2898 + <div
  2899 + className="overflow-hidden max-w-md overflow-ellipsis whitespace-no-wrap hover:cursor-pointer"
2969 onClick={() => { 2900 onClick={() => {
2970 - createOptObject(null, record.id);  
2971 - setCheckVisible(true);  
2972 - setOrderCheckType(  
2973 - CHECK_TYPE.URGENT_INVOICE_AUDITING_OLD, 2901 + copyToClipboard(record.goodsVolume + 'm³');
  2902 + message.info(
  2903 + '包裹体积复制成功:' + record.goodsVolume + 'm³',
2974 ); 2904 );
2975 }} 2905 }}
2976 > 2906 >
2977 - 加急审核(旧)  
2978 - </Button> 2907 + <span className="text-[#8C8C8C]">包裹体积:</span>
  2908 + <span className="ml-2">{record.goodsVolume + 'm³'}</span>
  2909 + </div>
  2910 + </div>
  2911 + ) : (
  2912 + ''
  2913 + )}
  2914 + </Flex>
  2915 + </Flex>
  2916 + <Flex wrap="wrap" gap="middle" vertical>
  2917 + <Flex justify="flex-end">
  2918 + <Flex wrap="wrap" gap="middle" align="center">
  2919 + {!isSupplier() ? (
  2920 + <div>
  2921 + <span className="text-[#8C8C8C]">总金额:¥</span>
  2922 + <span className="text-lg font-medium">
  2923 + {record.totalPayment || '0'}
  2924 + </span>
  2925 + </div>
2979 ) : ( 2926 ) : (
2980 '' 2927 ''
2981 )} 2928 )}
2982 - {record.paths?.includes('salesConfirm') && (  
2983 - <ButtonConfirm  
2984 - className="p-0"  
2985 - title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。"  
2986 - text="订单确认"  
2987 - onConfirm={async () => {  
2988 - let subIds = subOrderSelectedMap  
2989 - .get(record.id)  
2990 - ?.map((item) => {  
2991 - return item.id;  
2992 - });  
2993 - if (subIds === null || subIds === undefined) {  
2994 - subIds = record.subOrderInformationLists.map(  
2995 - (item) => {  
2996 - return item.id;  
2997 - },  
2998 - );  
2999 - }  
3000 - let res = await postServiceOrderSalesConfirm({  
3001 - data: {  
3002 - subOrderIds: subIds,  
3003 - },  
3004 - });  
3005 2929
3006 - if (res && res.result === RESPONSE_CODE.SUCCESS) {  
3007 - message.success(res.message);  
3008 - refreshTable();  
3009 - }  
3010 - }}  
3011 - />  
3012 - )}  
3013 - {record.paths?.includes('uploadPaymentReceiptBill') ? (  
3014 - <Button  
3015 - className="p-0"  
3016 - type="link"  
3017 - onClick={() => {  
3018 - createOptObject(null, record.id);  
3019 - setUploadPayBillModalVisible(true);  
3020 - }}  
3021 - >  
3022 - 回款  
3023 - </Button> 2930 + {rolePath?.includes('addOrder') ? (
  2931 + <Tooltip title="复制">
  2932 + <CopyTwoTone
  2933 + className="hover:cursor-pointer"
  2934 + onClick={() => {
  2935 + createOptObject(null, record.id);
  2936 + copyOrderToClipboard(record);
  2937 + setOrderOptType('copy');
  2938 + setOrderDrawerVisible(true);
  2939 + }}
  2940 + />
  2941 + </Tooltip>
3024 ) : ( 2942 ) : (
3025 - '' 2943 + <Tooltip title="复制文本">
  2944 + <CopyTwoTone
  2945 + className="hover:cursor-pointer"
  2946 + onClick={() => {
  2947 + copyOrderToClipboard(record);
  2948 + }}
  2949 + />
  2950 + </Tooltip>
3026 )} 2951 )}
3027 - {record.paths?.includes('updateHirePurchase') ? (  
3028 - <Button  
3029 - className="p-0"  
3030 - type="link"  
3031 - onClick={() => {  
3032 - createOptObject(record.id, record.id);  
3033 - setHirePurchaseUploadPayBillModalVisible(true);  
3034 - }}  
3035 - >  
3036 - 回款  
3037 - </Button> 2952 + {!isSupplier() ? (
  2953 + <Tooltip title="历史">
  2954 + <ClockCircleTwoTone
  2955 + className="hover:cursor-pointer"
  2956 + onClick={() => {
  2957 + setHistoryModalVisible(true);
  2958 + if (subOrderSelectedMap.get(record.id)?.length) {
  2959 + setSelectedRows(subOrderSelectedMap.get(record.id));
  2960 + } else {
  2961 + setSelectedRows(record.subOrderInformationLists);
  2962 + }
  2963 + }}
  2964 + />
  2965 + </Tooltip>
3038 ) : ( 2966 ) : (
3039 '' 2967 ''
3040 )} 2968 )}
  2969 + </Flex>
  2970 + </Flex>
  2971 + <Flex justify="flex-end">
  2972 + <Space.Compact direction="vertical" align="end">
  2973 + <Space wrap>
  2974 + {record.paths?.includes('postAudit') ? (
  2975 + <Button
  2976 + className="p-0"
  2977 + type="link"
  2978 + onClick={() => {
  2979 + setCurrentMainId(record.id);
  2980 + setCurretnOptSubId(null);
  2981 + setCheckVisible(true);
  2982 + setOrderCheckType(CHECK_TYPE.WAITING_FOR_POST_AUDIT);
  2983 + }}
  2984 + >
  2985 + 后置审核
  2986 + </Button>
  2987 + ) : (
  2988 + ''
  2989 + )}
  2990 + {record.paths?.includes('URGENT_INVOICE_AUDITING') ? (
  2991 + <Button
  2992 + className="p-0"
  2993 + type="link"
  2994 + onClick={() => {
  2995 + createOptObject(null, record.id);
  2996 + setCheckVisible(true);
  2997 + setOrderCheckType(CHECK_TYPE.URGENT_INVOICE_AUDITING);
  2998 + }}
  2999 + >
  3000 + 加急审核(新)
  3001 + </Button>
  3002 + ) : (
  3003 + ''
  3004 + )}
  3005 + {record.paths?.includes('URGENT_INVOICE_AUDITING_old') ? (
  3006 + <Button
  3007 + className="p-0"
  3008 + type="link"
  3009 + onClick={() => {
  3010 + createOptObject(null, record.id);
  3011 + setCheckVisible(true);
  3012 + setOrderCheckType(
  3013 + CHECK_TYPE.URGENT_INVOICE_AUDITING_OLD,
  3014 + );
  3015 + }}
  3016 + >
  3017 + 加急审核(旧)
  3018 + </Button>
  3019 + ) : (
  3020 + ''
  3021 + )}
  3022 + {record.paths?.includes('salesConfirm') && (
  3023 + <ButtonConfirm
  3024 + className="p-0"
  3025 + title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。"
  3026 + text="订单确认"
  3027 + onConfirm={async () => {
  3028 + let subIds = subOrderSelectedMap
  3029 + .get(record.id)
  3030 + ?.map((item) => {
  3031 + return item.id;
  3032 + });
  3033 + if (subIds === null || subIds === undefined) {
  3034 + subIds = record.subOrderInformationLists.map(
  3035 + (item) => {
  3036 + return item.id;
  3037 + },
  3038 + );
  3039 + }
  3040 + let res = await postServiceOrderSalesConfirm({
  3041 + data: {
  3042 + subOrderIds: subIds,
  3043 + },
  3044 + });
3041 3045
3042 - {record.paths?.includes('refundHistory') ? (  
3043 - <Button  
3044 - className="p-0"  
3045 - type="link"  
3046 - onClick={() => {  
3047 - createOptObject(record.id, record.id);  
3048 - setPaymentRecordModalVisible(true);  
3049 - }}  
3050 - >  
3051 - 付款记录  
3052 - </Button>  
3053 - ) : (  
3054 - ''  
3055 - )} 3046 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  3047 + message.success(res.message);
  3048 + refreshTable();
  3049 + }
  3050 + }}
  3051 + />
  3052 + )}
  3053 + {record.paths?.includes('uploadPaymentReceiptBill') ? (
  3054 + <Button
  3055 + className="p-0"
  3056 + type="link"
  3057 + onClick={() => {
  3058 + createOptObject(null, record.id);
  3059 + setUploadPayBillModalVisible(true);
  3060 + }}
  3061 + >
  3062 + 回款
  3063 + </Button>
  3064 + ) : (
  3065 + ''
  3066 + )}
  3067 + {record.paths?.includes('updateHirePurchase') ? (
  3068 + <Button
  3069 + className="p-0"
  3070 + type="link"
  3071 + onClick={() => {
  3072 + createOptObject(record.id, record.id);
  3073 + setHirePurchaseUploadPayBillModalVisible(true);
  3074 + }}
  3075 + >
  3076 + 回款
  3077 + </Button>
  3078 + ) : (
  3079 + ''
  3080 + )}
3056 3081
3057 - {/* 输出日志以检查权限和支付方式 */}  
3058 - {console.log('Order info:', record.id, record.paths)}  
3059 - {record.paths?.includes('auditPartialPaymentReceipt') ? (  
3060 - <Button  
3061 - className="p-0"  
3062 - type="link"  
3063 - onClick={() => {  
3064 - createOptObject(null, record.id);  
3065 - setCheckVisible(true);  
3066 - setOrderCheckType(  
3067 - CHECK_TYPE.PARTIAL_PAYMENT_RECEIPTS_AUDIT,  
3068 - );  
3069 - }}  
3070 - >  
3071 - 回款审核  
3072 - </Button>  
3073 - ) : (  
3074 - ''  
3075 - )} 3082 + {record.paths?.includes('refundHistory') ? (
  3083 + <Button
  3084 + className="p-0"
  3085 + type="link"
  3086 + onClick={() => {
  3087 + createOptObject(record.id, record.id);
  3088 + setPaymentRecordModalVisible(true);
  3089 + }}
  3090 + >
  3091 + 付款记录
  3092 + </Button>
  3093 + ) : (
  3094 + ''
  3095 + )}
3076 3096
3077 - {record.paths?.includes('modifiedAuditRequest') ? (  
3078 - <Button  
3079 - className="p-0"  
3080 - type="link"  
3081 - onClick={() => {  
3082 - createOptObject(null, record.id);  
3083 - setCheckVisible(true);  
3084 - setOrderCheckType(CHECK_TYPE.NODE_OPERATING_AUDIT);  
3085 - }}  
3086 - >  
3087 - 节点修改审核  
3088 - </Button>  
3089 - ) : (  
3090 - ''  
3091 - )} 3097 + {/* 输出日志以检查权限和支付方式 */}
  3098 + {console.log('Order info:', record.id, record.paths)}
  3099 + {record.paths?.includes('auditPartialPaymentReceipt') ? (
  3100 + <Button
  3101 + className="p-0"
  3102 + type="link"
  3103 + onClick={() => {
  3104 + createOptObject(null, record.id);
  3105 + setCheckVisible(true);
  3106 + setOrderCheckType(
  3107 + CHECK_TYPE.PARTIAL_PAYMENT_RECEIPTS_AUDIT,
  3108 + );
  3109 + }}
  3110 + >
  3111 + 回款审核
  3112 + </Button>
  3113 + ) : (
  3114 + ''
  3115 + )}
3092 3116
3093 - {record.paths?.includes('auditPaymentReceipt') ? (  
3094 - <Button  
3095 - className="p-0"  
3096 - type="link"  
3097 - onClick={() => {  
3098 - createOptObject(null, record.id);  
3099 - setCheckVisible(true);  
3100 - setOrderCheckType(CHECK_TYPE.PAYMENT_RECEIPTS_AUDIT);  
3101 - }}  
3102 - >  
3103 - 回款审核  
3104 - </Button>  
3105 - ) : (  
3106 - ''  
3107 - )} 3117 + {record.paths?.includes('modifiedAuditRequest') ? (
  3118 + <Button
  3119 + className="p-0"
  3120 + type="link"
  3121 + onClick={() => {
  3122 + createOptObject(null, record.id);
  3123 + setCheckVisible(true);
  3124 + setOrderCheckType(CHECK_TYPE.NODE_OPERATING_AUDIT);
  3125 + }}
  3126 + >
  3127 + 节点修改审核
  3128 + </Button>
  3129 + ) : (
  3130 + ''
  3131 + )}
3108 3132
3109 - {/* 第二个回款审核(分期)按钮已被移除,使用上面的带权限检查的按钮 */} 3133 + {record.paths?.includes('auditPaymentReceipt') ? (
  3134 + <Button
  3135 + className="p-0"
  3136 + type="link"
  3137 + onClick={() => {
  3138 + createOptObject(null, record.id);
  3139 + setCheckVisible(true);
  3140 + setOrderCheckType(CHECK_TYPE.PAYMENT_RECEIPTS_AUDIT);
  3141 + }}
  3142 + >
  3143 + 回款审核
  3144 + </Button>
  3145 + ) : (
  3146 + ''
  3147 + )}
3110 3148
3111 - {record.paths?.includes('modifiedLeaderAuditRequest') ? (  
3112 - <Button  
3113 - className="p-0"  
3114 - type="link"  
3115 - onClick={() => {  
3116 - createOptObject(null, record.id);  
3117 - setCheckVisible(true);  
3118 - setOrderCheckType(CHECK_TYPE.MODIFY_LEADER_AUDIT);  
3119 - }}  
3120 - >  
3121 - 领导修改审核  
3122 - </Button>  
3123 - ) : (  
3124 - ''  
3125 - )} 3149 + {/* 第二个回款审核(分期)按钮已被移除,使用上面的带权限检查的按钮 */}
  3150 +
  3151 + {record.paths?.includes('modifiedLeaderAuditRequest') ? (
  3152 + <Button
  3153 + className="p-0"
  3154 + type="link"
  3155 + onClick={() => {
  3156 + createOptObject(null, record.id);
  3157 + setCheckVisible(true);
  3158 + setOrderCheckType(CHECK_TYPE.MODIFY_LEADER_AUDIT);
  3159 + }}
  3160 + >
  3161 + 领导修改审核
  3162 + </Button>
  3163 + ) : (
  3164 + ''
  3165 + )}
3126 3166
3127 - {false ? (  
3128 - <Button  
3129 - className="p-0"  
3130 - type="link"  
3131 - onClick={() => {  
3132 - createOptObject(null, record.id);  
3133 - setFinancialReceiptsModalVisible(true);  
3134 - setIsEdit(true);  
3135 - }}  
3136 - >  
3137 - 收款记录  
3138 - </Button>  
3139 - ) : (  
3140 - ''  
3141 - )} 3167 + {false ? (
  3168 + <Button
  3169 + className="p-0"
  3170 + type="link"
  3171 + onClick={() => {
  3172 + createOptObject(null, record.id);
  3173 + setFinancialReceiptsModalVisible(true);
  3174 + setIsEdit(true);
  3175 + }}
  3176 + >
  3177 + 收款记录
  3178 + </Button>
  3179 + ) : (
  3180 + ''
  3181 + )}
3142 3182
3143 - {record.paths?.includes('confirmReissue_old') ? (  
3144 - <Button  
3145 - className="p-0"  
3146 - type="link"  
3147 - onClick={() => {  
3148 - setCurrentMainId(record.id);  
3149 - setCurretnOptSubId(null);  
3150 - setCheckVisible(true);  
3151 - setOrderCheckType(CHECK_TYPE.CONFIRM_REISSUE_OLD);  
3152 - }}  
3153 - >  
3154 - 重新开票审核(旧)  
3155 - </Button>  
3156 - ) : (  
3157 - ''  
3158 - )} 3183 + {record.paths?.includes('confirmReissue_old') ? (
  3184 + <Button
  3185 + className="p-0"
  3186 + type="link"
  3187 + onClick={() => {
  3188 + setCurrentMainId(record.id);
  3189 + setCurretnOptSubId(null);
  3190 + setCheckVisible(true);
  3191 + setOrderCheckType(CHECK_TYPE.CONFIRM_REISSUE_OLD);
  3192 + }}
  3193 + >
  3194 + 重新开票审核(旧)
  3195 + </Button>
  3196 + ) : (
  3197 + ''
  3198 + )}
3159 3199
3160 - {record.paths?.includes('confirmReissue') ? (  
3161 - <Button  
3162 - className="p-0"  
3163 - type="link"  
3164 - onClick={() => {  
3165 - setCurrentMainId(record.id);  
3166 - setCurretnOptSubId(null);  
3167 - setCheckVisible(true);  
3168 - setOrderCheckType(CHECK_TYPE.CONFIRM_REISSUE);  
3169 - }}  
3170 - >  
3171 - 重新开票审核(新)  
3172 - </Button>  
3173 - ) : (  
3174 - ''  
3175 - )} 3200 + {record.paths?.includes('confirmReissue') ? (
  3201 + <Button
  3202 + className="p-0"
  3203 + type="link"
  3204 + onClick={() => {
  3205 + setCurrentMainId(record.id);
  3206 + setCurretnOptSubId(null);
  3207 + setCheckVisible(true);
  3208 + setOrderCheckType(CHECK_TYPE.CONFIRM_REISSUE);
  3209 + }}
  3210 + >
  3211 + 重新开票审核(新)
  3212 + </Button>
  3213 + ) : (
  3214 + ''
  3215 + )}
3176 3216
3177 - {record.paths?.includes('procureOrder') ? (  
3178 - <ButtonConfirm  
3179 - className="p-0"  
3180 - title="是否下单?"  
3181 - text="下单"  
3182 - onConfirm={async () => {  
3183 - let subIds = subOrderSelectedMap  
3184 - .get(record.id)  
3185 - ?.map((item) => {  
3186 - return item.id;  
3187 - });  
3188 - if (subIds === null || subIds === undefined) {  
3189 - subIds = record.subOrderInformationLists.map(  
3190 - (item) => { 3217 + {record.paths?.includes('procureOrder') ? (
  3218 + <ButtonConfirm
  3219 + className="p-0"
  3220 + title="是否下单?"
  3221 + text="下单"
  3222 + onConfirm={async () => {
  3223 + let subIds = subOrderSelectedMap
  3224 + .get(record.id)
  3225 + ?.map((item) => {
3191 return item.id; 3226 return item.id;
3192 - },  
3193 - );  
3194 - }  
3195 - let res = await postServiceOrderProcureOrder({  
3196 - data: { subIds: subIds },  
3197 - });  
3198 - if (res.result === RESPONSE_CODE.SUCCESS) {  
3199 - message.success(res.message);  
3200 - refreshTable();  
3201 - return true;  
3202 - }  
3203 - }}  
3204 - />  
3205 - ) : (  
3206 - ''  
3207 - )}  
3208 -  
3209 - {record.paths?.includes('cancelSend') ? (  
3210 - <ButtonConfirm  
3211 - className="p-0"  
3212 - title="是否取消发货?"  
3213 - text="取消发货"  
3214 - onConfirm={async () => {  
3215 - let subIds = subOrderSelectedMap  
3216 - .get(record.id)  
3217 - ?.map((item) => {  
3218 - return item.id; 3227 + });
  3228 + if (subIds === null || subIds === undefined) {
  3229 + subIds = record.subOrderInformationLists.map(
  3230 + (item) => {
  3231 + return item.id;
  3232 + },
  3233 + );
  3234 + }
  3235 + let res = await postServiceOrderProcureOrder({
  3236 + data: { subIds: subIds },
3219 }); 3237 });
3220 - if (subIds === null || subIds === undefined) {  
3221 - subIds = record.subOrderInformationLists.map(  
3222 - (item) => { 3238 + if (res.result === RESPONSE_CODE.SUCCESS) {
  3239 + message.success(res.message);
  3240 + refreshTable();
  3241 + return true;
  3242 + }
  3243 + }}
  3244 + />
  3245 + ) : (
  3246 + ''
  3247 + )}
  3248 +
  3249 + {record.paths?.includes('cancelSend') ? (
  3250 + <ButtonConfirm
  3251 + className="p-0"
  3252 + title="是否取消发货?"
  3253 + text="取消发货"
  3254 + onConfirm={async () => {
  3255 + let subIds = subOrderSelectedMap
  3256 + .get(record.id)
  3257 + ?.map((item) => {
3223 return item.id; 3258 return item.id;
3224 - },  
3225 - );  
3226 - }  
3227 - let res = await postServiceOrderCancelSend({  
3228 - data: { subIds: subIds },  
3229 - });  
3230 - if (res.result === RESPONSE_CODE.SUCCESS) {  
3231 - message.success(res.message);  
3232 - refreshTable();  
3233 - return true;  
3234 - }  
3235 - }}  
3236 - />  
3237 - ) : (  
3238 - ''  
3239 - )} 3259 + });
  3260 + if (subIds === null || subIds === undefined) {
  3261 + subIds = record.subOrderInformationLists.map(
  3262 + (item) => {
  3263 + return item.id;
  3264 + },
  3265 + );
  3266 + }
  3267 + let res = await postServiceOrderCancelSend({
  3268 + data: { subIds: subIds },
  3269 + });
  3270 + if (res.result === RESPONSE_CODE.SUCCESS) {
  3271 + message.success(res.message);
  3272 + refreshTable();
  3273 + return true;
  3274 + }
  3275 + }}
  3276 + />
  3277 + ) : (
  3278 + ''
  3279 + )}
3240 3280
3241 - {record.paths?.includes('applyModify') ? (  
3242 - <Button  
3243 - className="p-0"  
3244 - type="link"  
3245 - onClick={() => {  
3246 - createOptObject(null, record.id);  
3247 - setOrderDrawerVisible(true);  
3248 - setOrderOptType('order-change-normal');  
3249 - }}  
3250 - >  
3251 - 申请修改  
3252 - </Button>  
3253 - ) : (  
3254 - ''  
3255 - )}  
3256 - {record.paths?.includes('saleCancelInvoicing') ? (  
3257 - <ButtonConfirm  
3258 - className="p-0"  
3259 - title="确认取消申请开票?"  
3260 - text="取消申请(新)"  
3261 - onConfirm={async () => {  
3262 - let selectedSubOrders = subOrderSelectedMap.get(  
3263 - record.id,  
3264 - );  
3265 - if (selectedSubOrders === undefined) {  
3266 - selectedSubOrders = record.subOrderInformationLists;  
3267 - }  
3268 - let subOrderIds = selectedSubOrders.map(  
3269 - (item) => item.id,  
3270 - );  
3271 - let res = await postServiceInvoiceCancelApply({  
3272 - data: {  
3273 - subOrderIds: subOrderIds,  
3274 - },  
3275 - }); 3281 + {record.paths?.includes('applyModify') ? (
  3282 + <Button
  3283 + className="p-0"
  3284 + type="link"
  3285 + onClick={() => {
  3286 + createOptObject(null, record.id);
  3287 + setOrderDrawerVisible(true);
  3288 + setOrderOptType('order-change-normal');
  3289 + }}
  3290 + >
  3291 + 申请修改
  3292 + </Button>
  3293 + ) : (
  3294 + ''
  3295 + )}
  3296 + {record.paths?.includes('saleCancelInvoicing') ? (
  3297 + <ButtonConfirm
  3298 + className="p-0"
  3299 + title="确认取消申请开票?"
  3300 + text="取消申请(新)"
  3301 + onConfirm={async () => {
  3302 + let selectedSubOrders = subOrderSelectedMap.get(
  3303 + record.id,
  3304 + );
  3305 + if (selectedSubOrders === undefined) {
  3306 + selectedSubOrders = record.subOrderInformationLists;
  3307 + }
  3308 + let subOrderIds = selectedSubOrders.map(
  3309 + (item) => item.id,
  3310 + );
  3311 + let res = await postServiceInvoiceCancelApply({
  3312 + data: {
  3313 + subOrderIds: subOrderIds,
  3314 + },
  3315 + });
3276 3316
3277 - if (res && res.result === RESPONSE_CODE.SUCCESS) {  
3278 - message.success(res.message);  
3279 - refreshTable();  
3280 - }  
3281 - }}  
3282 - />  
3283 - ) : (  
3284 - ''  
3285 - )} 3317 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  3318 + message.success(res.message);
  3319 + refreshTable();
  3320 + }
  3321 + }}
  3322 + />
  3323 + ) : (
  3324 + ''
  3325 + )}
3286 3326
3287 - {record.paths?.includes('leaderAudit') ? (  
3288 - <Button  
3289 - className="p-0"  
3290 - type="link"  
3291 - onClick={() => {  
3292 - let selectedSubOrders = subOrderSelectedMap.get(  
3293 - record.id,  
3294 - );  
3295 - setSelectedRows(selectedSubOrders);  
3296 - if (selectedSubOrders === undefined) {  
3297 - selectedSubOrders = record.subOrderInformationLists;  
3298 - }  
3299 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3300 - if (  
3301 - selectedSubOrders[i].orderStatus !==  
3302 - 'LEADER_PROCESS'  
3303 - ) {  
3304 - message.error('请选择领导待审核的子订单进行审核');  
3305 - return; 3327 + {record.paths?.includes('leaderAudit') ? (
  3328 + <Button
  3329 + className="p-0"
  3330 + type="link"
  3331 + onClick={() => {
  3332 + let selectedSubOrders = subOrderSelectedMap.get(
  3333 + record.id,
  3334 + );
  3335 + setSelectedRows(selectedSubOrders);
  3336 + if (selectedSubOrders === undefined) {
  3337 + selectedSubOrders = record.subOrderInformationLists;
3306 } 3338 }
3307 - }  
3308 - createOptObject(null, record.id);  
3309 - setCheckVisible(true);  
3310 - setOrderCheckType(CHECK_TYPE.LEADER_AUDIT);  
3311 - }}  
3312 - >  
3313 - 审核  
3314 - </Button>  
3315 - ) : (  
3316 - ''  
3317 - )} 3339 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3340 + if (
  3341 + selectedSubOrders[i].orderStatus !==
  3342 + 'LEADER_PROCESS'
  3343 + ) {
  3344 + message.error('请选择领导待审核的子订单进行审核');
  3345 + return;
  3346 + }
  3347 + }
  3348 + createOptObject(null, record.id);
  3349 + setCheckVisible(true);
  3350 + setOrderCheckType(CHECK_TYPE.LEADER_AUDIT);
  3351 + }}
  3352 + >
  3353 + 审核
  3354 + </Button>
  3355 + ) : (
  3356 + ''
  3357 + )}
3318 3358
3319 - {record.paths?.includes('changeOrderAudit') ? (  
3320 - <Button  
3321 - className="p-0"  
3322 - type="link"  
3323 - onClick={() => {  
3324 - let selectedSubOrders = subOrderSelectedMap.get(  
3325 - record.id,  
3326 - );  
3327 - setSelectedRows(selectedSubOrders);  
3328 - if (selectedSubOrders === undefined) {  
3329 - selectedSubOrders = record.subOrderInformationLists;  
3330 - }  
3331 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3332 - if (  
3333 - selectedSubOrders[i].orderStatus !==  
3334 - 'MODIFY_APPLY_WAIT_FOR_AUDIT'  
3335 - ) {  
3336 - message.error('请选择[修改待审核]的子订单进行审核');  
3337 - return; 3359 + {record.paths?.includes('changeOrderAudit') ? (
  3360 + <Button
  3361 + className="p-0"
  3362 + type="link"
  3363 + onClick={() => {
  3364 + let selectedSubOrders = subOrderSelectedMap.get(
  3365 + record.id,
  3366 + );
  3367 + setSelectedRows(selectedSubOrders);
  3368 + if (selectedSubOrders === undefined) {
  3369 + selectedSubOrders = record.subOrderInformationLists;
3338 } 3370 }
3339 - }  
3340 - createOptObject(null, record.id);  
3341 - setCheckVisible(true);  
3342 - setOrderCheckType(  
3343 - CHECK_TYPE.MODIFY_APPLY_WAIT_FOR_AUDIT,  
3344 - );  
3345 - }}  
3346 - >  
3347 - 审核  
3348 - </Button>  
3349 - ) : (  
3350 - ''  
3351 - )} 3371 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3372 + if (
  3373 + selectedSubOrders[i].orderStatus !==
  3374 + 'MODIFY_APPLY_WAIT_FOR_AUDIT'
  3375 + ) {
  3376 + message.error(
  3377 + '请选择[修改待审核]的子订单进行审核',
  3378 + );
  3379 + return;
  3380 + }
  3381 + }
  3382 + createOptObject(null, record.id);
  3383 + setCheckVisible(true);
  3384 + setOrderCheckType(
  3385 + CHECK_TYPE.MODIFY_APPLY_WAIT_FOR_AUDIT,
  3386 + );
  3387 + }}
  3388 + >
  3389 + 审核
  3390 + </Button>
  3391 + ) : (
  3392 + ''
  3393 + )}
3352 3394
3353 - {record.paths?.includes('creditAudit') ? (  
3354 - <Button  
3355 - className="p-0"  
3356 - type="link"  
3357 - onClick={() => {  
3358 - let selectedSubOrders = subOrderSelectedMap.get(  
3359 - record.id,  
3360 - );  
3361 - setSelectedRows(selectedSubOrders);  
3362 - if (selectedSubOrders === undefined) {  
3363 - selectedSubOrders = record.subOrderInformationLists;  
3364 - }  
3365 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3366 - if (  
3367 - selectedSubOrders[i].orderStatus !==  
3368 - 'CREDIT_CONFIRM'  
3369 - ) {  
3370 - message.error('请选择[赊账待审核]的子订单进行审核');  
3371 - return; 3395 + {record.paths?.includes('creditAudit') ? (
  3396 + <Button
  3397 + className="p-0"
  3398 + type="link"
  3399 + onClick={() => {
  3400 + let selectedSubOrders = subOrderSelectedMap.get(
  3401 + record.id,
  3402 + );
  3403 + setSelectedRows(selectedSubOrders);
  3404 + if (selectedSubOrders === undefined) {
  3405 + selectedSubOrders = record.subOrderInformationLists;
3372 } 3406 }
3373 - }  
3374 - createOptObject(null, record.id);  
3375 - setCheckVisible(true);  
3376 - setOrderCheckType(CHECK_TYPE.CREDIT_AUDIT);  
3377 - }}  
3378 - >  
3379 - 赊账审核  
3380 - </Button>  
3381 - ) : (  
3382 - ''  
3383 - )} 3407 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3408 + if (
  3409 + selectedSubOrders[i].orderStatus !==
  3410 + 'CREDIT_CONFIRM'
  3411 + ) {
  3412 + message.error(
  3413 + '请选择[赊账待审核]的子订单进行审核',
  3414 + );
  3415 + return;
  3416 + }
  3417 + }
  3418 + createOptObject(null, record.id);
  3419 + setCheckVisible(true);
  3420 + setOrderCheckType(CHECK_TYPE.CREDIT_AUDIT);
  3421 + }}
  3422 + >
  3423 + 赊账审核
  3424 + </Button>
  3425 + ) : (
  3426 + ''
  3427 + )}
3384 3428
3385 - {record.paths?.includes('editProductionTime') ? (  
3386 - <Button  
3387 - className="p-0"  
3388 - type="link"  
3389 - onClick={() => {  
3390 - createOptObject(null, record.id);  
3391 - setProductionTimeModalVisible(true);  
3392 - }}  
3393 - >  
3394 - 生产时间  
3395 - </Button>  
3396 - ) : (  
3397 - ''  
3398 - )} 3429 + {record.paths?.includes('editProductionTime') ? (
  3430 + <Button
  3431 + className="p-0"
  3432 + type="link"
  3433 + onClick={() => {
  3434 + createOptObject(null, record.id);
  3435 + setProductionTimeModalVisible(true);
  3436 + }}
  3437 + >
  3438 + 生产时间
  3439 + </Button>
  3440 + ) : (
  3441 + ''
  3442 + )}
3399 3443
3400 - {record.paths?.includes('procureConvertProcure') ? (  
3401 - <Button  
3402 - className="p-0"  
3403 - type="link"  
3404 - onClick={() => {  
3405 - let selectedSubOrders = subOrderSelectedMap.get(  
3406 - record.id,  
3407 - );  
3408 - if (selectedSubOrders === undefined) {  
3409 - selectedSubOrders = record.subOrderInformationLists;  
3410 - } 3444 + {record.paths?.includes('procureConvertProcure') ? (
  3445 + <Button
  3446 + className="p-0"
  3447 + type="link"
  3448 + onClick={() => {
  3449 + let selectedSubOrders = subOrderSelectedMap.get(
  3450 + record.id,
  3451 + );
  3452 + if (selectedSubOrders === undefined) {
  3453 + selectedSubOrders = record.subOrderInformationLists;
  3454 + }
3411 3455
3412 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3413 - if (  
3414 - !selectedSubOrders[i].paths.includes(  
3415 - 'procureConvertProcure',  
3416 - )  
3417 - ) {  
3418 - message.error('请选择允许转发的子订单进行转发');  
3419 - return; 3456 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3457 + if (
  3458 + !selectedSubOrders[i].paths.includes(
  3459 + 'procureConvertProcure',
  3460 + )
  3461 + ) {
  3462 + message.error('请选择允许转发的子订单进行转发');
  3463 + return;
  3464 + }
3420 } 3465 }
3421 - }  
3422 - createOptObject(null, record.id);  
3423 - setOrderCheckType(CHECK_TYPE.PROCURE);  
3424 - setProcureConvertModalVisible(true);  
3425 - }}  
3426 - >  
3427 - 转发  
3428 - </Button>  
3429 - ) : (  
3430 - ''  
3431 - )}  
3432 - {record.paths?.includes('sendProduct') ? (  
3433 - <Button  
3434 - className="p-0"  
3435 - type="link"  
3436 - onClick={() => {  
3437 - if (!subOrderSelectedMap.get(record.id)?.length) {  
3438 - return message.error('请选择选择子订单');  
3439 - }  
3440 - createOptObject(null, record.id);  
3441 - setDeliverVisible(true);  
3442 - setIsSendProduct(true);  
3443 - setOrderCheckType(CHECK_TYPE.WEARHOUSE_KEEPER);  
3444 - }}  
3445 - >  
3446 - 仓库发货  
3447 - </Button>  
3448 - ) : (  
3449 - ''  
3450 - )} 3466 + createOptObject(null, record.id);
  3467 + setOrderCheckType(CHECK_TYPE.PROCURE);
  3468 + setProcureConvertModalVisible(true);
  3469 + }}
  3470 + >
  3471 + 转发
  3472 + </Button>
  3473 + ) : (
  3474 + ''
  3475 + )}
  3476 + {record.paths?.includes('sendProduct') ? (
  3477 + <Button
  3478 + className="p-0"
  3479 + type="link"
  3480 + onClick={() => {
  3481 + if (!subOrderSelectedMap.get(record.id)?.length) {
  3482 + return message.error('请选择选择子订单');
  3483 + }
  3484 + createOptObject(null, record.id);
  3485 + setDeliverVisible(true);
  3486 + setIsSendProduct(true);
  3487 + setOrderCheckType(CHECK_TYPE.WEARHOUSE_KEEPER);
  3488 + }}
  3489 + >
  3490 + 仓库发货
  3491 + </Button>
  3492 + ) : (
  3493 + ''
  3494 + )}
3451 3495
3452 - {/* 供应商发货 */}  
3453 - {record.paths?.includes('supplierSendOrder') ? (  
3454 - <Button  
3455 - className="p-0"  
3456 - type="link"  
3457 - onClick={() => {  
3458 - if (!subOrderSelectedMap.get(record.id)?.length) {  
3459 - return message.error('请选择选择子订单');  
3460 - }  
3461 - createOptObject(null, record.id);  
3462 - setDeliverVisible(true);  
3463 - setIsSendProduct(true);  
3464 - setOrderCheckType(CHECK_TYPE.SUPPLIER);  
3465 - }}  
3466 - >  
3467 - 供应商发货  
3468 - </Button>  
3469 - ) : (  
3470 - ''  
3471 - )} 3496 + {/* 供应商发货 */}
  3497 + {record.paths?.includes('supplierSendOrder') ? (
  3498 + <Button
  3499 + className="p-0"
  3500 + type="link"
  3501 + onClick={() => {
  3502 + if (!subOrderSelectedMap.get(record.id)?.length) {
  3503 + return message.error('请选择选择子订单');
  3504 + }
  3505 + createOptObject(null, record.id);
  3506 + setDeliverVisible(true);
  3507 + setIsSendProduct(true);
  3508 + setOrderCheckType(CHECK_TYPE.SUPPLIER);
  3509 + }}
  3510 + >
  3511 + 供应商发货
  3512 + </Button>
  3513 + ) : (
  3514 + ''
  3515 + )}
3472 3516
3473 - {record.paths?.includes('procureSend') ? (  
3474 - <Button  
3475 - className="p-0"  
3476 - type="link"  
3477 - onClick={() => {  
3478 - if (!subOrderSelectedMap.get(record.id)?.length) {  
3479 - return message.error('请选择选择子订单');  
3480 - }  
3481 - createOptObject(null, record.id);  
3482 - setDeliverVisible(true);  
3483 - setIsSendProduct(true);  
3484 - setOrderCheckType(CHECK_TYPE.PROCURE);  
3485 - }}  
3486 - >  
3487 - {isSupplier() ? '发货' : '采购发货'}  
3488 - </Button>  
3489 - ) : (  
3490 - ''  
3491 - )} 3517 + {record.paths?.includes('procureSend') ? (
  3518 + <Button
  3519 + className="p-0"
  3520 + type="link"
  3521 + onClick={() => {
  3522 + if (!subOrderSelectedMap.get(record.id)?.length) {
  3523 + return message.error('请选择选择子订单');
  3524 + }
  3525 + createOptObject(null, record.id);
  3526 + setDeliverVisible(true);
  3527 + setIsSendProduct(true);
  3528 + setOrderCheckType(CHECK_TYPE.PROCURE);
  3529 + }}
  3530 + >
  3531 + {isSupplier() ? '发货' : '采购发货'}
  3532 + </Button>
  3533 + ) : (
  3534 + ''
  3535 + )}
3492 3536
3493 - {record.paths?.includes('printOrder') ? (  
3494 - <Button  
3495 - className="p-0"  
3496 - type="link"  
3497 - onClick={() => {  
3498 - const selectedSubOrders = subOrderSelectedMap.get(  
3499 - record.id,  
3500 - );  
3501 - if (!selectedSubOrders?.length) {  
3502 - return message.error('请选择选择子订单');  
3503 - } 3537 + {record.paths?.includes('printOrder') ? (
  3538 + <Button
  3539 + className="p-0"
  3540 + type="link"
  3541 + onClick={() => {
  3542 + const selectedSubOrders = subOrderSelectedMap.get(
  3543 + record.id,
  3544 + );
  3545 + if (!selectedSubOrders?.length) {
  3546 + return message.error('请选择选择子订单');
  3547 + }
3504 3548
3505 - for (let subOrderRecord of selectedSubOrders) {  
3506 - let paths = subOrderRecord.paths;  
3507 - if (!checkePrintable(paths)) {  
3508 - return message.error('请选择可以打印的子订单'); 3549 + for (let subOrderRecord of selectedSubOrders) {
  3550 + let paths = subOrderRecord.paths;
  3551 + if (!checkePrintable(paths)) {
  3552 + return message.error('请选择可以打印的子订单');
  3553 + }
3509 } 3554 }
3510 - }  
3511 - createOptObject(null, record.id);  
3512 - setOrderPrintVisible(true);  
3513 - setOrderCheckType(CHECK_TYPE.WEARHOUSE_KEEPER);  
3514 - }}  
3515 - >  
3516 - 仓库打印  
3517 - </Button>  
3518 - ) : (  
3519 - ''  
3520 - )} 3555 + createOptObject(null, record.id);
  3556 + setOrderPrintVisible(true);
  3557 + setOrderCheckType(CHECK_TYPE.WEARHOUSE_KEEPER);
  3558 + }}
  3559 + >
  3560 + 仓库打印
  3561 + </Button>
  3562 + ) : (
  3563 + ''
  3564 + )}
3521 3565
3522 - {record.paths?.includes('supplierPrint') ? (  
3523 - <Button  
3524 - className="p-0"  
3525 - type="link"  
3526 - onClick={() => {  
3527 - if (!subOrderSelectedMap.get(record.id)?.length) {  
3528 - return message.error('请选择选择子订单');  
3529 - } 3566 + {record.paths?.includes('supplierPrint') ? (
  3567 + <Button
  3568 + className="p-0"
  3569 + type="link"
  3570 + onClick={() => {
  3571 + if (!subOrderSelectedMap.get(record.id)?.length) {
  3572 + return message.error('请选择选择子订单');
  3573 + }
3530 3574
3531 - createOptObject(null, record.id);  
3532 - setOrderPrintVisible(true);  
3533 - setOrderCheckType(CHECK_TYPE.SUPPLIER);  
3534 - }}  
3535 - >  
3536 - 供应商打印  
3537 - </Button>  
3538 - ) : (  
3539 - ''  
3540 - )} 3575 + createOptObject(null, record.id);
  3576 + setOrderPrintVisible(true);
  3577 + setOrderCheckType(CHECK_TYPE.SUPPLIER);
  3578 + }}
  3579 + >
  3580 + 供应商打印
  3581 + </Button>
  3582 + ) : (
  3583 + ''
  3584 + )}
3541 3585
3542 - {record.paths?.includes('rePrintOrder') ? (  
3543 - <Button  
3544 - className="p-0"  
3545 - type="link"  
3546 - onClick={() => {  
3547 - if (!subOrderSelectedMap.get(record.id)?.length) {  
3548 - return message.error('请选择选择子订单');  
3549 - }  
3550 - createOptObject(null, record.id);  
3551 - setOrderPrintVisible(true);  
3552 - setIsRePrintOrder(true);  
3553 - }}  
3554 - >  
3555 - 重新打印  
3556 - </Button>  
3557 - ) : (  
3558 - ''  
3559 - )}  
3560 - {record.paths?.includes('confirmReceipt') ? (  
3561 - <Button  
3562 - className="p-0"  
3563 - type="link"  
3564 - onClick={() => {  
3565 - createOptObject(null, record.id);  
3566 - setConfirmReceiptVisible(true);  
3567 - }}  
3568 - >  
3569 - 确认收货  
3570 - </Button>  
3571 - ) : (  
3572 - ''  
3573 - )}  
3574 - {record.paths?.includes('modifySendInformation') ? (  
3575 - <Button  
3576 - className="p-0"  
3577 - type="link"  
3578 - onClick={() => {  
3579 - if (!subOrderSelectedMap.get(record.id)?.length) {  
3580 - return message.error(  
3581 - '请选择已经发货或者已经确认收货的子订单',  
3582 - );  
3583 - }  
3584 - for (let row of subOrderSelectedMap.get(record.id)) {  
3585 - if (  
3586 - row.orderStatus !== 'CONFIRM_RECEIPT' &&  
3587 - row.orderStatus !== 'SHIPPED'  
3588 - ) { 3586 + {record.paths?.includes('rePrintOrder') ? (
  3587 + <Button
  3588 + className="p-0"
  3589 + type="link"
  3590 + onClick={() => {
  3591 + if (!subOrderSelectedMap.get(record.id)?.length) {
  3592 + return message.error('请选择选择子订单');
  3593 + }
  3594 + createOptObject(null, record.id);
  3595 + setOrderPrintVisible(true);
  3596 + setIsRePrintOrder(true);
  3597 + }}
  3598 + >
  3599 + 重新打印
  3600 + </Button>
  3601 + ) : (
  3602 + ''
  3603 + )}
  3604 + {record.paths?.includes('confirmReceipt') ? (
  3605 + <Button
  3606 + className="p-0"
  3607 + type="link"
  3608 + onClick={() => {
  3609 + createOptObject(null, record.id);
  3610 + setConfirmReceiptVisible(true);
  3611 + }}
  3612 + >
  3613 + 确认收货
  3614 + </Button>
  3615 + ) : (
  3616 + ''
  3617 + )}
  3618 + {record.paths?.includes('modifySendInformation') ? (
  3619 + <Button
  3620 + className="p-0"
  3621 + type="link"
  3622 + onClick={() => {
  3623 + if (!subOrderSelectedMap.get(record.id)?.length) {
3589 return message.error( 3624 return message.error(
3590 '请选择已经发货或者已经确认收货的子订单', 3625 '请选择已经发货或者已经确认收货的子订单',
3591 ); 3626 );
3592 } 3627 }
3593 - }  
3594 - createOptObject(null, record.id);  
3595 - setDeliverVisible(true);  
3596 - setIsSendProduct(false);  
3597 - }}  
3598 - >  
3599 - 修改发货信息  
3600 - </Button>  
3601 - ) : (  
3602 - ''  
3603 - )}  
3604 - {record.paths?.includes('invoicing') ? (  
3605 - <Button  
3606 - type="link"  
3607 - className="p-0"  
3608 - onClick={() => {  
3609 - createOptObject(null, record.id);  
3610 - setFinancialVisible(true);  
3611 - setIsEdit(false);  
3612 - }}  
3613 - >  
3614 - 开票  
3615 - </Button>  
3616 - ) : (  
3617 - ''  
3618 - )}  
3619 -  
3620 - {record.paths?.includes('applyInvoicing_old') ? (  
3621 - <Button  
3622 - type="link"  
3623 - className="p-0"  
3624 - onClick={() => {  
3625 - let selectedSubOrders = subOrderSelectedMap.get(  
3626 - record.id,  
3627 - );  
3628 - if (selectedSubOrders === undefined) {  
3629 - selectedSubOrders = record.subOrderInformationLists;  
3630 - }  
3631 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3632 - if (  
3633 - selectedSubOrders[i].invoicingStatus ===  
3634 - 'UN_INVOICE' ||  
3635 - selectedSubOrders[i].afterInvoicingStatus ===  
3636 - 'APPLY_FOR_INVOICING'  
3637 - ) {  
3638 - message.error(  
3639 - '请选择需要开票且未申请开票的子订单进行申请',  
3640 - );  
3641 - return; 3628 + for (let row of subOrderSelectedMap.get(record.id)) {
  3629 + if (
  3630 + row.orderStatus !== 'CONFIRM_RECEIPT' &&
  3631 + row.orderStatus !== 'SHIPPED'
  3632 + ) {
  3633 + return message.error(
  3634 + '请选择已经发货或者已经确认收货的子订单',
  3635 + );
  3636 + }
3642 } 3637 }
3643 - }  
3644 -  
3645 - createOptObject(null, record.id);  
3646 - setApplyForInvoicingVisible(true);  
3647 - setIsEdit(false);  
3648 - setIsMainOrder(false);  
3649 - }}  
3650 - >  
3651 - 申请开票(旧)  
3652 - </Button>  
3653 - ) : (  
3654 - ''  
3655 - )} 3638 + createOptObject(null, record.id);
  3639 + setDeliverVisible(true);
  3640 + setIsSendProduct(false);
  3641 + }}
  3642 + >
  3643 + 修改发货信息
  3644 + </Button>
  3645 + ) : (
  3646 + ''
  3647 + )}
  3648 + {record.paths?.includes('invoicing') ? (
  3649 + <Button
  3650 + type="link"
  3651 + className="p-0"
  3652 + onClick={() => {
  3653 + createOptObject(null, record.id);
  3654 + setFinancialVisible(true);
  3655 + setIsEdit(false);
  3656 + }}
  3657 + >
  3658 + 开票
  3659 + </Button>
  3660 + ) : (
  3661 + ''
  3662 + )}
3656 3663
3657 - {record.paths?.includes('applyInvoicing') ? (  
3658 - <Button  
3659 - type="link"  
3660 - className="p-0"  
3661 - onClick={() => {  
3662 - let selectedSubOrders = subOrderSelectedMap.get(  
3663 - record.id,  
3664 - );  
3665 - if (selectedSubOrders === undefined) {  
3666 - selectedSubOrders = record.subOrderInformationLists;  
3667 - }  
3668 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3669 - if (  
3670 - selectedSubOrders[i].invoicingStatus ===  
3671 - 'UN_INVOICE' ||  
3672 - selectedSubOrders[i].afterInvoicingStatus ===  
3673 - 'APPLY_FOR_INVOICING'  
3674 - ) {  
3675 - message.error(  
3676 - '请选择需要开票且未申请开票的子订单进行申请',  
3677 - );  
3678 - return; 3664 + {record.paths?.includes('applyInvoicing_old') ? (
  3665 + <Button
  3666 + type="link"
  3667 + className="p-0"
  3668 + onClick={() => {
  3669 + let selectedSubOrders = subOrderSelectedMap.get(
  3670 + record.id,
  3671 + );
  3672 + if (selectedSubOrders === undefined) {
  3673 + selectedSubOrders = record.subOrderInformationLists;
3679 } 3674 }
3680 - }  
3681 -  
3682 - createOptObject(null, record.id);  
3683 - setInvoicingDrawerFormVisible(true);  
3684 - setIsEdit(false);  
3685 - setIsMainOrder(false);  
3686 - }}  
3687 - >  
3688 - 申请开票(新)  
3689 - </Button>  
3690 - ) : (  
3691 - ''  
3692 - )}  
3693 -  
3694 - {record.paths?.includes('updateOrder') ? (  
3695 - <Button  
3696 - className="p-0"  
3697 - type="link"  
3698 - onClick={() => {  
3699 - //勾选的子订单:如果有勾选,后面只校验有勾选的  
3700 -  
3701 - let selectedSubOrders = subOrderSelectedMap.get(  
3702 - record.id,  
3703 - );  
3704 - if (  
3705 - selectedSubOrders === undefined ||  
3706 - selectedSubOrders.length === 0  
3707 - ) {  
3708 - selectedSubOrders = record.subOrderInformationLists;  
3709 - }  
3710 - for (  
3711 - let index = 0;  
3712 - index < selectedSubOrders.length;  
3713 - index++  
3714 - ) {  
3715 - let orderStatus =  
3716 - selectedSubOrders[index].orderStatus;  
3717 - //仓库管理员在审核之后的任何时候都可以编辑  
3718 - if (  
3719 - roleCode !== 'warehouseKeeper' &&  
3720 - roleCode !== 'admin'  
3721 - ) {  
3722 - //是审核通过及之后的订单 3675 + for (let i = 0; i < selectedSubOrders.length; i++) {
3723 if ( 3676 if (
3724 - orderStatus !== 'UNAUDITED' &&  
3725 - orderStatus !== 'PROCURE_REJECT' &&  
3726 - orderStatus !== 'AUDIT_FAILED' &&  
3727 - orderStatus !== 'LEADER_PROCESS' &&  
3728 - orderStatus !== 'SALES_CONFIRM' &&  
3729 - orderStatus !== 'CREDIT_CONFIRM' 3677 + selectedSubOrders[i].invoicingStatus ===
  3678 + 'UN_INVOICE' ||
  3679 + selectedSubOrders[i].afterInvoicingStatus ===
  3680 + 'APPLY_FOR_INVOICING'
3730 ) { 3681 ) {
3731 message.error( 3682 message.error(
3732 - '请选择【未审核、审核失败、销售待确认、赊账待审核】的订单进行编辑', 3683 + '请选择需要开票且未申请开票的子订单进行申请',
3733 ); 3684 );
3734 return; 3685 return;
3735 } 3686 }
3736 - } else {  
3737 - //仓库管理员只能编辑是还未审核的订单 3687 + }
  3688 +
  3689 + createOptObject(null, record.id);
  3690 + setApplyForInvoicingVisible(true);
  3691 + setIsEdit(false);
  3692 + setIsMainOrder(false);
  3693 + }}
  3694 + >
  3695 + 申请开票(旧)
  3696 + </Button>
  3697 + ) : (
  3698 + ''
  3699 + )}
  3700 +
  3701 + {record.paths?.includes('applyInvoicing') ? (
  3702 + <Button
  3703 + type="link"
  3704 + className="p-0"
  3705 + onClick={() => {
  3706 + let selectedSubOrders = subOrderSelectedMap.get(
  3707 + record.id,
  3708 + );
  3709 + if (selectedSubOrders === undefined) {
  3710 + selectedSubOrders = record.subOrderInformationLists;
  3711 + }
  3712 + for (let i = 0; i < selectedSubOrders.length; i++) {
3738 if ( 3713 if (
3739 - roleCode !== 'admin' &&  
3740 - (orderStatus === 'UNAUDITED' ||  
3741 - orderStatus === 'PROCURE_REJECT' ||  
3742 - orderStatus === 'AUDIT_FAILED') 3714 + selectedSubOrders[i].invoicingStatus ===
  3715 + 'UN_INVOICE' ||
  3716 + selectedSubOrders[i].afterInvoicingStatus ===
  3717 + 'APPLY_FOR_INVOICING'
3743 ) { 3718 ) {
3744 - message.error('请选择已审核的订单进行编辑'); 3719 + message.error(
  3720 + '请选择需要开票且未申请开票的子订单进行申请',
  3721 + );
3745 return; 3722 return;
3746 } 3723 }
3747 } 3724 }
3748 - }  
3749 3725
3750 - createOptObject(null, record.id);  
3751 - setOrderDrawerVisible(true);  
3752 - setOrderOptType('edit');  
3753 - }}  
3754 - >  
3755 - 编辑  
3756 - </Button>  
3757 - ) : (  
3758 - ''  
3759 - )} 3726 + createOptObject(null, record.id);
  3727 + setInvoicingDrawerFormVisible(true);
  3728 + setIsEdit(false);
  3729 + setIsMainOrder(false);
  3730 + }}
  3731 + >
  3732 + 申请开票(新)
  3733 + </Button>
  3734 + ) : (
  3735 + ''
  3736 + )}
3760 3737
3761 - {record?.subOrderInformationLists[0].paths?.includes(  
3762 - 'noNeedInvoicingEdit',  
3763 - ) ? (  
3764 - <Button  
3765 - className="p-0"  
3766 - type="link"  
3767 - onClick={() => {  
3768 - createOptObject(null, record.id);  
3769 - setFinancialEditVisible(true);  
3770 - setIsMainOrder(true);  
3771 - }}  
3772 - >  
3773 - 财务编辑  
3774 - </Button>  
3775 - ) : (  
3776 - ''  
3777 - )} 3738 + {record.paths?.includes('updateOrder') ? (
  3739 + <Button
  3740 + className="p-0"
  3741 + type="link"
  3742 + onClick={() => {
  3743 + //勾选的子订单:如果有勾选,后面只校验有勾选的
3778 3744
3779 - {record.paths?.includes('checkOrder') ? (  
3780 - <Button  
3781 - className="p-0"  
3782 - type="link"  
3783 - onClick={() => {  
3784 - let selectedSubOrders = subOrderSelectedMap.get(  
3785 - record.id,  
3786 - );  
3787 - setSelectedRows(selectedSubOrders);  
3788 - if (selectedSubOrders === undefined) {  
3789 - selectedSubOrders = record.subOrderInformationLists;  
3790 - }  
3791 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3792 - let orderStatus = selectedSubOrders[i].orderStatus; 3745 + let selectedSubOrders = subOrderSelectedMap.get(
  3746 + record.id,
  3747 + );
3793 if ( 3748 if (
3794 - orderStatus !== 'UNAUDITED' &&  
3795 - orderStatus !== 'PROCURE_REJECT' &&  
3796 - orderStatus !== 'FINANCE_PROCESS' &&  
3797 - orderStatus !== 'LEADER_AUDITED' 3749 + selectedSubOrders === undefined ||
  3750 + selectedSubOrders.length === 0
3798 ) { 3751 ) {
3799 - message.error(  
3800 - '请选择未审核或者领导已审核的子订单进行审核',  
3801 - );  
3802 - return; 3752 + selectedSubOrders = record.subOrderInformationLists;
  3753 + }
  3754 + for (
  3755 + let index = 0;
  3756 + index < selectedSubOrders.length;
  3757 + index++
  3758 + ) {
  3759 + let orderStatus =
  3760 + selectedSubOrders[index].orderStatus;
  3761 + //仓库管理员在审核之后的任何时候都可以编辑
  3762 + if (
  3763 + roleCode !== 'warehouseKeeper' &&
  3764 + roleCode !== 'admin'
  3765 + ) {
  3766 + //是审核通过及之后的订单
  3767 + if (
  3768 + orderStatus !== 'UNAUDITED' &&
  3769 + orderStatus !== 'PROCURE_REJECT' &&
  3770 + orderStatus !== 'AUDIT_FAILED' &&
  3771 + orderStatus !== 'LEADER_PROCESS' &&
  3772 + orderStatus !== 'SALES_CONFIRM' &&
  3773 + orderStatus !== 'CREDIT_CONFIRM'
  3774 + ) {
  3775 + message.error(
  3776 + '请选择【未审核、审核失败、销售待确认、赊账待审核】的订单进行编辑',
  3777 + );
  3778 + return;
  3779 + }
  3780 + } else {
  3781 + //仓库管理员只能编辑是还未审核的订单
  3782 + if (
  3783 + roleCode !== 'admin' &&
  3784 + (orderStatus === 'UNAUDITED' ||
  3785 + orderStatus === 'PROCURE_REJECT' ||
  3786 + orderStatus === 'AUDIT_FAILED')
  3787 + ) {
  3788 + message.error('请选择已审核的订单进行编辑');
  3789 + return;
  3790 + }
  3791 + }
3803 } 3792 }
3804 - }  
3805 3793
3806 - createOptObject(null, record.id);  
3807 - setCheckVisible(true);  
3808 - setOrderCheckType(CHECK_TYPE.WEARHOUSE_KEEPER);  
3809 - }}  
3810 - >  
3811 - 审核  
3812 - </Button>  
3813 - ) : (  
3814 - ''  
3815 - )} 3794 + createOptObject(null, record.id);
  3795 + setOrderDrawerVisible(true);
  3796 + setOrderOptType('edit');
  3797 + }}
  3798 + >
  3799 + 编辑
  3800 + </Button>
  3801 + ) : (
  3802 + ''
  3803 + )}
3816 3804
3817 - {record.paths?.includes('afterSalesCheck') ? (  
3818 - <Button  
3819 - className="p-0"  
3820 - type="link"  
3821 - onClick={() => {  
3822 - let selectedSubOrders = subOrderSelectedMap.get(  
3823 - record.id,  
3824 - );  
3825 - setSelectedRows(selectedSubOrders);  
3826 - if (selectedSubOrders === undefined) {  
3827 - selectedSubOrders = record.subOrderInformationLists;  
3828 - }  
3829 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3830 - if (  
3831 - selectedSubOrders[i].orderStatus !==  
3832 - 'IN_AFTER_SALES'  
3833 - ) {  
3834 - message.error('请选择售后中的子订单进行审核');  
3835 - return; 3805 + {record?.subOrderInformationLists[0].paths?.includes(
  3806 + 'noNeedInvoicingEdit',
  3807 + ) ? (
  3808 + <Button
  3809 + className="p-0"
  3810 + type="link"
  3811 + onClick={() => {
  3812 + createOptObject(null, record.id);
  3813 + setFinancialEditVisible(true);
  3814 + setIsMainOrder(true);
  3815 + }}
  3816 + >
  3817 + 财务编辑
  3818 + </Button>
  3819 + ) : (
  3820 + ''
  3821 + )}
  3822 +
  3823 + {record.paths?.includes('checkOrder') ? (
  3824 + <Button
  3825 + className="p-0"
  3826 + type="link"
  3827 + onClick={() => {
  3828 + let selectedSubOrders = subOrderSelectedMap.get(
  3829 + record.id,
  3830 + );
  3831 + setSelectedRows(selectedSubOrders);
  3832 + if (selectedSubOrders === undefined) {
  3833 + selectedSubOrders = record.subOrderInformationLists;
  3834 + }
  3835 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3836 + let orderStatus = selectedSubOrders[i].orderStatus;
  3837 + if (
  3838 + orderStatus !== 'UNAUDITED' &&
  3839 + orderStatus !== 'PROCURE_REJECT' &&
  3840 + orderStatus !== 'FINANCE_PROCESS' &&
  3841 + orderStatus !== 'LEADER_AUDITED'
  3842 + ) {
  3843 + message.error(
  3844 + '请选择未审核或者领导已审核的子订单进行审核',
  3845 + );
  3846 + return;
  3847 + }
3836 } 3848 }
3837 - }  
3838 3849
3839 - createOptObject(null, record.id);  
3840 - setCheckVisible(true);  
3841 - setOrderCheckType(CHECK_TYPE.AFTER_SALES);  
3842 - }}  
3843 - >  
3844 - 售后审核  
3845 - </Button>  
3846 - ) : (  
3847 - ''  
3848 - )} 3850 + createOptObject(null, record.id);
  3851 + setCheckVisible(true);
  3852 + setOrderCheckType(CHECK_TYPE.WEARHOUSE_KEEPER);
  3853 + }}
  3854 + >
  3855 + 审核
  3856 + </Button>
  3857 + ) : (
  3858 + ''
  3859 + )}
3849 3860
3850 - {record.paths?.includes('afterSalesConfirm') ? (  
3851 - <Button  
3852 - className="p-0"  
3853 - type="link"  
3854 - onClick={() => {  
3855 - setCurrentMainId(record.id);  
3856 - createOptObject(null, record.id);  
3857 - setStoreCheckModalVisible(true);  
3858 - setOrderCheckType(CHECK_TYPE.AFTER_SALES);  
3859 - }}  
3860 - >  
3861 - 仓库确认  
3862 - </Button>  
3863 - ) : (  
3864 - ''  
3865 - )} 3861 + {record.paths?.includes('afterSalesCheck') ? (
  3862 + <Button
  3863 + className="p-0"
  3864 + type="link"
  3865 + onClick={() => {
  3866 + let selectedSubOrders = subOrderSelectedMap.get(
  3867 + record.id,
  3868 + );
  3869 + setSelectedRows(selectedSubOrders);
  3870 + if (selectedSubOrders === undefined) {
  3871 + selectedSubOrders = record.subOrderInformationLists;
  3872 + }
  3873 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3874 + if (
  3875 + selectedSubOrders[i].orderStatus !==
  3876 + 'IN_AFTER_SALES'
  3877 + ) {
  3878 + message.error('请选择售后中的子订单进行审核');
  3879 + return;
  3880 + }
  3881 + }
3866 3882
3867 - {record.paths?.includes('noNeedSend') ? (  
3868 - <ButtonConfirm  
3869 - className="p-0"  
3870 - title="此订单是否无需发货?"  
3871 - text="无需发货"  
3872 - onConfirm={async () => {  
3873 - let selectedSubOrders = subOrderSelectedMap.get(  
3874 - record.id,  
3875 - );  
3876 - if (selectedSubOrders === undefined) {  
3877 - selectedSubOrders = record.subOrderInformationLists;  
3878 - }  
3879 - setSelectedRows(selectedSubOrders);  
3880 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3881 - if (  
3882 - selectedSubOrders[i].orderStatus !== 'AUDITED' &&  
3883 - selectedSubOrders[i].orderStatus !==  
3884 - 'PROCURE_PROCESS' &&  
3885 - selectedSubOrders[i].orderStatus !==  
3886 - 'PROCURE_PROCESS_FOR_MINE' &&  
3887 - selectedSubOrders[i].orderStatus !==  
3888 - 'PROCURE_WAIT_SHIP' &&  
3889 - selectedSubOrders[i].orderStatus !==  
3890 - 'SUPPLIER_WAIT_SHIP' &&  
3891 - selectedSubOrders[i].orderStatus !== 'WAIT_SHIP'  
3892 - ) {  
3893 - message.error(  
3894 - '请选择未发货的子订单进行无需发货操作',  
3895 - );  
3896 - return; 3883 + createOptObject(null, record.id);
  3884 + setCheckVisible(true);
  3885 + setOrderCheckType(CHECK_TYPE.AFTER_SALES);
  3886 + }}
  3887 + >
  3888 + 售后审核
  3889 + </Button>
  3890 + ) : (
  3891 + ''
  3892 + )}
  3893 +
  3894 + {record.paths?.includes('afterSalesConfirm') ? (
  3895 + <Button
  3896 + className="p-0"
  3897 + type="link"
  3898 + onClick={() => {
  3899 + setCurrentMainId(record.id);
  3900 + createOptObject(null, record.id);
  3901 + setStoreCheckModalVisible(true);
  3902 + setOrderCheckType(CHECK_TYPE.AFTER_SALES);
  3903 + }}
  3904 + >
  3905 + 仓库确认
  3906 + </Button>
  3907 + ) : (
  3908 + ''
  3909 + )}
  3910 +
  3911 + {record.paths?.includes('noNeedSend') ? (
  3912 + <ButtonConfirm
  3913 + className="p-0"
  3914 + title="此订单是否无需发货?"
  3915 + text="无需发货"
  3916 + onConfirm={async () => {
  3917 + let selectedSubOrders = subOrderSelectedMap.get(
  3918 + record.id,
  3919 + );
  3920 + if (selectedSubOrders === undefined) {
  3921 + selectedSubOrders = record.subOrderInformationLists;
  3922 + }
  3923 + setSelectedRows(selectedSubOrders);
  3924 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3925 + if (
  3926 + selectedSubOrders[i].orderStatus !== 'AUDITED' &&
  3927 + selectedSubOrders[i].orderStatus !==
  3928 + 'PROCURE_PROCESS' &&
  3929 + selectedSubOrders[i].orderStatus !==
  3930 + 'PROCURE_PROCESS_FOR_MINE' &&
  3931 + selectedSubOrders[i].orderStatus !==
  3932 + 'PROCURE_WAIT_SHIP' &&
  3933 + selectedSubOrders[i].orderStatus !==
  3934 + 'SUPPLIER_WAIT_SHIP' &&
  3935 + selectedSubOrders[i].orderStatus !== 'WAIT_SHIP'
  3936 + ) {
  3937 + message.error(
  3938 + '请选择未发货的子订单进行无需发货操作',
  3939 + );
  3940 + return;
  3941 + }
3897 } 3942 }
3898 - }  
3899 3943
3900 - const data = await postServiceOrderNoNeedSend({  
3901 - data: {  
3902 - ids: selectedSubOrders.map((item) => {  
3903 - return item.id;  
3904 - }),  
3905 - },  
3906 - });  
3907 - if (data.result === RESPONSE_CODE.SUCCESS) {  
3908 - message.success(data.message);  
3909 - refreshTable();  
3910 - }  
3911 - }}  
3912 - />  
3913 - ) : (  
3914 - ''  
3915 - )} 3944 + const data = await postServiceOrderNoNeedSend({
  3945 + data: {
  3946 + ids: selectedSubOrders.map((item) => {
  3947 + return item.id;
  3948 + }),
  3949 + },
  3950 + });
  3951 + if (data.result === RESPONSE_CODE.SUCCESS) {
  3952 + message.success(data.message);
  3953 + refreshTable();
  3954 + }
  3955 + }}
  3956 + />
  3957 + ) : (
  3958 + ''
  3959 + )}
3916 3960
3917 - {record.paths?.includes('saleCancelInvoicing_old') ? (  
3918 - <ButtonConfirm  
3919 - className="p-0"  
3920 - title="确认取消申请开票?"  
3921 - text="取消申请(旧)"  
3922 - onConfirm={async () => {  
3923 - let selectedSubOrders = subOrderSelectedMap.get(  
3924 - record.id,  
3925 - );  
3926 - if (selectedSubOrders === undefined) {  
3927 - selectedSubOrders = record.subOrderInformationLists;  
3928 - } 3961 + {record.paths?.includes('saleCancelInvoicing_old') ? (
  3962 + <ButtonConfirm
  3963 + className="p-0"
  3964 + title="确认取消申请开票?"
  3965 + text="取消申请(旧)"
  3966 + onConfirm={async () => {
  3967 + let selectedSubOrders = subOrderSelectedMap.get(
  3968 + record.id,
  3969 + );
  3970 + if (selectedSubOrders === undefined) {
  3971 + selectedSubOrders = record.subOrderInformationLists;
  3972 + }
3929 3973
3930 - console.log(selectedSubOrders);  
3931 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3932 - if (  
3933 - selectedSubOrders[i].afterInvoicingStatus !==  
3934 - 'APPLY_FOR_INVOICING'  
3935 - ) {  
3936 - message.error(  
3937 - '请选择已[申请开票]的子订单进行取消申请',  
3938 - );  
3939 - return; 3974 + console.log(selectedSubOrders);
  3975 + for (let i = 0; i < selectedSubOrders.length; i++) {
  3976 + if (
  3977 + selectedSubOrders[i].afterInvoicingStatus !==
  3978 + 'APPLY_FOR_INVOICING'
  3979 + ) {
  3980 + message.error(
  3981 + '请选择已[申请开票]的子订单进行取消申请',
  3982 + );
  3983 + return;
  3984 + }
3940 } 3985 }
3941 - }  
3942 - let res = await postServiceOrderSaleCancelInvoicing({  
3943 - data: {  
3944 - subOrderIds: selectedSubOrders.map((item) => {  
3945 - return item.id;  
3946 - }),  
3947 - },  
3948 - }); 3986 + let res = await postServiceOrderSaleCancelInvoicing({
  3987 + data: {
  3988 + subOrderIds: selectedSubOrders.map((item) => {
  3989 + return item.id;
  3990 + }),
  3991 + },
  3992 + });
3949 3993
3950 - if (res && res.result === RESPONSE_CODE.SUCCESS) {  
3951 - message.success(res.message);  
3952 - refreshTable();  
3953 - }  
3954 - }}  
3955 - />  
3956 - ) : (  
3957 - ''  
3958 - )}  
3959 - {/* 财务审核:主订单暂无 */}  
3960 - {record.paths?.includes('financeCheckOrder') ? (  
3961 - <Button  
3962 - className="p-0"  
3963 - type="link"  
3964 - onClick={() => {  
3965 - let selectedSubOrders = subOrderSelectedMap.get(  
3966 - record.id,  
3967 - );  
3968 - setSelectedRows(selectedSubOrders);  
3969 - if (selectedSubOrders === undefined) {  
3970 - selectedSubOrders = record.subOrderInformationLists;  
3971 - }  
3972 - for (let i = 0; i < selectedSubOrders.length; i++) {  
3973 - if (  
3974 - selectedSubOrders[i].orderStatus !== 'UNAUDITED' &&  
3975 - selectedSubOrders[i].orderStatus !==  
3976 - 'PROCURE_REJECT' &&  
3977 - selectedSubOrders[i].orderStatus !==  
3978 - 'FINANCE_PROCESS' &&  
3979 - selectedSubOrders[i].orderStatus !==  
3980 - 'LEADER_AUDITED'  
3981 - ) {  
3982 - message.error(  
3983 - '请选择[未审核]、[财务待审核]、[领导已审核]的子订单进行审核',  
3984 - );  
3985 - return; 3994 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  3995 + message.success(res.message);
  3996 + refreshTable();
3986 } 3997 }
3987 - }  
3988 - createOptObject(null, record.id);  
3989 - setCheckVisible(true);  
3990 - setOrderCheckType(CHECK_TYPE.FINALCIAL);  
3991 - }}  
3992 - >  
3993 - 财务审核  
3994 - </Button>  
3995 - ) : (  
3996 - ''  
3997 - )} 3998 + }}
  3999 + />
  4000 + ) : (
  4001 + ''
  4002 + )}
  4003 + {/* 财务审核:主订单暂无 */}
  4004 + {record.paths?.includes('financeCheckOrder') ? (
  4005 + <Button
  4006 + className="p-0"
  4007 + type="link"
  4008 + onClick={() => {
  4009 + let selectedSubOrders = subOrderSelectedMap.get(
  4010 + record.id,
  4011 + );
  4012 + setSelectedRows(selectedSubOrders);
  4013 + if (selectedSubOrders === undefined) {
  4014 + selectedSubOrders = record.subOrderInformationLists;
  4015 + }
  4016 + for (let i = 0; i < selectedSubOrders.length; i++) {
  4017 + if (
  4018 + selectedSubOrders[i].orderStatus !==
  4019 + 'UNAUDITED' &&
  4020 + selectedSubOrders[i].orderStatus !==
  4021 + 'PROCURE_REJECT' &&
  4022 + selectedSubOrders[i].orderStatus !==
  4023 + 'FINANCE_PROCESS' &&
  4024 + selectedSubOrders[i].orderStatus !==
  4025 + 'LEADER_AUDITED'
  4026 + ) {
  4027 + message.error(
  4028 + '请选择[未审核]、[财务待审核]、[领导已审核]的子订单进行审核',
  4029 + );
  4030 + return;
  4031 + }
  4032 + }
  4033 + createOptObject(null, record.id);
  4034 + setCheckVisible(true);
  4035 + setOrderCheckType(CHECK_TYPE.FINALCIAL);
  4036 + }}
  4037 + >
  4038 + 财务审核
  4039 + </Button>
  4040 + ) : (
  4041 + ''
  4042 + )}
3998 4043
3999 - {/* 采购审核 */}  
4000 - {record.paths?.includes('procureCheckOrder') ? (  
4001 - <Button  
4002 - className="p-0"  
4003 - type="link"  
4004 - onClick={() => {  
4005 - let selectedSubOrders = subOrderSelectedMap.get(  
4006 - record.id,  
4007 - );  
4008 - setSelectedRows(selectedSubOrders);  
4009 - if (selectedSubOrders === undefined) {  
4010 - selectedSubOrders = record.subOrderInformationLists;  
4011 - }  
4012 - for (let i = 0; i < selectedSubOrders.length; i++) {  
4013 - if (  
4014 - selectedSubOrders[i].orderStatus !==  
4015 - 'PROCURE_UN_PROCESS'  
4016 - ) {  
4017 - message.error('请选择未审核的子订单进行审核');  
4018 - return; 4044 + {/* 采购审核 */}
  4045 + {record.paths?.includes('procureCheckOrder') ? (
  4046 + <Button
  4047 + className="p-0"
  4048 + type="link"
  4049 + onClick={() => {
  4050 + let selectedSubOrders = subOrderSelectedMap.get(
  4051 + record.id,
  4052 + );
  4053 + setSelectedRows(selectedSubOrders);
  4054 + if (selectedSubOrders === undefined) {
  4055 + selectedSubOrders = record.subOrderInformationLists;
  4056 + }
  4057 + for (let i = 0; i < selectedSubOrders.length; i++) {
  4058 + if (
  4059 + selectedSubOrders[i].orderStatus !==
  4060 + 'PROCURE_UN_PROCESS'
  4061 + ) {
  4062 + message.error('请选择未审核的子订单进行审核');
  4063 + return;
  4064 + }
4019 } 4065 }
4020 - }  
4021 4066
4022 - createOptObject(null, record.id);  
4023 - setProcureCheckModalVisible(true);  
4024 - setOrderCheckType(CHECK_TYPE.PROCURE);  
4025 - }}  
4026 - >  
4027 - 采购审核  
4028 - </Button>  
4029 - ) : (  
4030 - ''  
4031 - )} 4067 + createOptObject(null, record.id);
  4068 + setProcureCheckModalVisible(true);
  4069 + setOrderCheckType(CHECK_TYPE.PROCURE);
  4070 + }}
  4071 + >
  4072 + 采购审核
  4073 + </Button>
  4074 + ) : (
  4075 + ''
  4076 + )}
4032 4077
4033 - {record.paths?.includes('applyAfterSales') ? (  
4034 - <Button  
4035 - className="p-0"  
4036 - type="link"  
4037 - onClick={() => {  
4038 - let selectedSubOrders = subOrderSelectedMap.get(  
4039 - record.id,  
4040 - );  
4041 - if (selectedSubOrders === undefined) {  
4042 - selectedSubOrders = record.subOrderInformationLists;  
4043 - }  
4044 - setSelectedRows(selectedSubOrders);  
4045 - for (let i = 0; i < selectedSubOrders.length; i++) {  
4046 - if (  
4047 - selectedSubOrders[i].orderStatus !==  
4048 - 'CONFIRM_RECEIPT' &&  
4049 - selectedSubOrders[i].orderStatus !==  
4050 - 'AFTER_SALES_FAILURE' &&  
4051 - selectedSubOrders[i].orderStatus !==  
4052 - 'AFTER_SALES_COMPLETION'  
4053 - ) {  
4054 - message.error('请选择确认收货状态的子订单进行售后');  
4055 - return; 4078 + {record.paths?.includes('applyAfterSales') ? (
  4079 + <Button
  4080 + className="p-0"
  4081 + type="link"
  4082 + onClick={() => {
  4083 + let selectedSubOrders = subOrderSelectedMap.get(
  4084 + record.id,
  4085 + );
  4086 + if (selectedSubOrders === undefined) {
  4087 + selectedSubOrders = record.subOrderInformationLists;
  4088 + }
  4089 + setSelectedRows(selectedSubOrders);
  4090 + for (let i = 0; i < selectedSubOrders.length; i++) {
  4091 + if (
  4092 + selectedSubOrders[i].orderStatus !==
  4093 + 'CONFIRM_RECEIPT' &&
  4094 + selectedSubOrders[i].orderStatus !==
  4095 + 'AFTER_SALES_FAILURE' &&
  4096 + selectedSubOrders[i].orderStatus !==
  4097 + 'AFTER_SALES_COMPLETION'
  4098 + ) {
  4099 + message.error(
  4100 + '请选择确认收货状态的子订单进行售后',
  4101 + );
  4102 + return;
  4103 + }
4056 } 4104 }
4057 - }  
4058 4105
4059 - createOptObject(null, record.id);  
4060 - setOrderDrawerVisible(true);  
4061 - setOrderOptType('after-sales');  
4062 - }}  
4063 - >  
4064 - 申请售后  
4065 - </Button>  
4066 - ) : (  
4067 - ''  
4068 - )} 4106 + createOptObject(null, record.id);
  4107 + setOrderDrawerVisible(true);
  4108 + setOrderOptType('after-sales');
  4109 + }}
  4110 + >
  4111 + 申请售后
  4112 + </Button>
  4113 + ) : (
  4114 + ''
  4115 + )}
4069 4116
4070 - {/* {record.paths?.includes('afterSalesCompletion') ? ( 4117 + {/* {record.paths?.includes('afterSalesCompletion') ? (
4071 <ButtonConfirm 4118 <ButtonConfirm
4072 className="p-0" 4119 className="p-0"
4073 title="售后是否已完成?" 4120 title="售后是否已完成?"
@@ -4111,164 +4158,165 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; { @@ -4111,164 +4158,165 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
4111 '' 4158 ''
4112 )} */} 4159 )} */}
4113 4160
4114 - {record.paths?.includes('salOrderSave') ? (  
4115 - <ButtonConfirm  
4116 - className="p-0"  
4117 - title="是否推送至金蝶ERP?"  
4118 - text="推送ERP"  
4119 - onConfirm={async () => {  
4120 - let res = await postKingdeeRepSalOrderSave({  
4121 - data: {  
4122 - id: record.id,  
4123 - },  
4124 - }); 4161 + {record.paths?.includes('salOrderSave') ? (
  4162 + <ButtonConfirm
  4163 + className="p-0"
  4164 + title="是否推送至金蝶ERP?"
  4165 + text="推送ERP"
  4166 + onConfirm={async () => {
  4167 + let res = await postKingdeeRepSalOrderSave({
  4168 + data: {
  4169 + id: record.id,
  4170 + },
  4171 + });
4125 4172
4126 - if (res && res.result === RESPONSE_CODE.SUCCESS) {  
4127 - message.success('推送成功');  
4128 - mainTableRef.current.reload();  
4129 - }  
4130 - }}  
4131 - />  
4132 - ) : (  
4133 - ''  
4134 - )} 4173 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  4174 + message.success('推送成功');
  4175 + mainTableRef.current.reload();
  4176 + }
  4177 + }}
  4178 + />
  4179 + ) : (
  4180 + ''
  4181 + )}
4135 4182
4136 - {record.paths?.includes('salBillOutbound') ? (  
4137 - <ButtonConfirm  
4138 - className="p-0"  
4139 - title="是否下推金蝶ERP出库单?"  
4140 - text="下推出库"  
4141 - onConfirm={async () => {  
4142 - let res = await postKingdeeRepSalBillOutbound({  
4143 - data: {  
4144 - id: record.id,  
4145 - },  
4146 - }); 4183 + {record.paths?.includes('salBillOutbound') ? (
  4184 + <ButtonConfirm
  4185 + className="p-0"
  4186 + title="是否下推金蝶ERP出库单?"
  4187 + text="下推出库"
  4188 + onConfirm={async () => {
  4189 + let res = await postKingdeeRepSalBillOutbound({
  4190 + data: {
  4191 + id: record.id,
  4192 + },
  4193 + });
4147 4194
4148 - if (res && res.result === RESPONSE_CODE.SUCCESS) {  
4149 - message.success('下推成功');  
4150 - mainTableRef.current.reload();  
4151 - }  
4152 - }}  
4153 - />  
4154 - ) : (  
4155 - ''  
4156 - )} 4195 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  4196 + message.success('下推成功');
  4197 + mainTableRef.current.reload();
  4198 + }
  4199 + }}
  4200 + />
  4201 + ) : (
  4202 + ''
  4203 + )}
4157 4204
4158 - {record.paths?.includes('confirmInvoice') ? (  
4159 - <ButtonConfirm  
4160 - className="p-0"  
4161 - title="已和客户确认发票?"  
4162 - text="确认发票"  
4163 - onConfirm={async () => {  
4164 - let body = [  
4165 - ...record.subOrderInformationLists.map(  
4166 - (subOrder) => subOrder.id,  
4167 - ),  
4168 - ];  
4169 - const data = await postServiceOrderConfirmInvoice({  
4170 - data: body,  
4171 - });  
4172 - if (data.result === RESPONSE_CODE.SUCCESS) {  
4173 - message.success(data.message);  
4174 - refreshTable();  
4175 - }  
4176 - }}  
4177 - />  
4178 - ) : (  
4179 - ''  
4180 - )} 4205 + {record.paths?.includes('confirmInvoice') ? (
  4206 + <ButtonConfirm
  4207 + className="p-0"
  4208 + title="已和客户确认发票?"
  4209 + text="确认发票"
  4210 + onConfirm={async () => {
  4211 + let body = [
  4212 + ...record.subOrderInformationLists.map(
  4213 + (subOrder) => subOrder.id,
  4214 + ),
  4215 + ];
  4216 + const data = await postServiceOrderConfirmInvoice({
  4217 + data: body,
  4218 + });
  4219 + if (data.result === RESPONSE_CODE.SUCCESS) {
  4220 + message.success(data.message);
  4221 + refreshTable();
  4222 + }
  4223 + }}
  4224 + />
  4225 + ) : (
  4226 + ''
  4227 + )}
4181 4228
4182 - {record.paths?.includes('orderCancel') ? (  
4183 - <ButtonConfirm  
4184 - className="p-0"  
4185 - title="确认作废?"  
4186 - text="作废"  
4187 - onConfirm={async () => {  
4188 - let body = {  
4189 - ids: [record.id],  
4190 - checkIsMainOrderId: true,  
4191 - };  
4192 - const data = await postServiceOrderOrderCancel({  
4193 - data: body,  
4194 - });  
4195 - if (data.result === RESPONSE_CODE.SUCCESS) {  
4196 - message.success(data.message);  
4197 - refreshTable();  
4198 - }  
4199 - }}  
4200 - />  
4201 - ) : (  
4202 - ''  
4203 - )} 4229 + {record.paths?.includes('orderCancel') ? (
  4230 + <ButtonConfirm
  4231 + className="p-0"
  4232 + title="确认作废?"
  4233 + text="作废"
  4234 + onConfirm={async () => {
  4235 + let body = {
  4236 + ids: [record.id],
  4237 + checkIsMainOrderId: true,
  4238 + };
  4239 + const data = await postServiceOrderOrderCancel({
  4240 + data: body,
  4241 + });
  4242 + if (data.result === RESPONSE_CODE.SUCCESS) {
  4243 + message.success(data.message);
  4244 + refreshTable();
  4245 + }
  4246 + }}
  4247 + />
  4248 + ) : (
  4249 + ''
  4250 + )}
4204 4251
4205 - {record.paths?.includes('procurePrint') ? (  
4206 - <ButtonConfirm  
4207 - className="p-0"  
4208 - title="确认打印?"  
4209 - text="采购打印"  
4210 - onConfirm={async () => {  
4211 - let selectedSubOrders = subOrderSelectedMap.get(  
4212 - record.id,  
4213 - );  
4214 - if (selectedSubOrders === undefined) {  
4215 - selectedSubOrders = record.subOrderInformationLists;  
4216 - }  
4217 - for (let i = 0; i < selectedSubOrders.length; i++) {  
4218 - if (  
4219 - selectedSubOrders[i].orderStatus !==  
4220 - 'PROCURE_PROCESS_FOR_MINE'  
4221 - ) {  
4222 - message.error(  
4223 - '请选择采购待打印状态的子订单进行打印',  
4224 - );  
4225 - return false; 4252 + {record.paths?.includes('procurePrint') ? (
  4253 + <ButtonConfirm
  4254 + className="p-0"
  4255 + title="确认打印?"
  4256 + text="采购打印"
  4257 + onConfirm={async () => {
  4258 + let selectedSubOrders = subOrderSelectedMap.get(
  4259 + record.id,
  4260 + );
  4261 + if (selectedSubOrders === undefined) {
  4262 + selectedSubOrders = record.subOrderInformationLists;
  4263 + }
  4264 + for (let i = 0; i < selectedSubOrders.length; i++) {
  4265 + if (
  4266 + selectedSubOrders[i].orderStatus !==
  4267 + 'PROCURE_PROCESS_FOR_MINE'
  4268 + ) {
  4269 + message.error(
  4270 + '请选择采购待打印状态的子订单进行打印',
  4271 + );
  4272 + return false;
  4273 + }
4226 } 4274 }
4227 - }  
4228 4275
4229 - const ids = selectedSubOrders?.map((item) => {  
4230 - return item.id;  
4231 - });  
4232 - let res = await postServiceOrderProcurePrint({  
4233 - data: {  
4234 - ids: ids,  
4235 - },  
4236 - }); 4276 + const ids = selectedSubOrders?.map((item) => {
  4277 + return item.id;
  4278 + });
  4279 + let res = await postServiceOrderProcurePrint({
  4280 + data: {
  4281 + ids: ids,
  4282 + },
  4283 + });
4237 4284
4238 - if (res.result === RESPONSE_CODE.SUCCESS) {  
4239 - message.success(res.message);  
4240 - refreshTable();  
4241 - }  
4242 - }}  
4243 - />  
4244 - ) : (  
4245 - // <Button  
4246 - // className="p-0"  
4247 - // type="link"  
4248 - // onClick={() => {  
4249 - // if (!subOrderSelectedMap.get(record.id)?.length) {  
4250 - // return message.error('请选择选择子订单');  
4251 - // }  
4252 - // setSelectedRows(subOrderSelectedMap.get(record.id));  
4253 - // setOrderRow(record);  
4254 - // setOrderPrintVisible(true);  
4255 - // setOrderCheckType(CHECK_TYPE.PROCURE);  
4256 - // }}  
4257 - // >  
4258 - // 采购打印  
4259 - // </Button>  
4260 - ''  
4261 - )}  
4262 - </Space>  
4263 - </Space.Compact> 4285 + if (res.result === RESPONSE_CODE.SUCCESS) {
  4286 + message.success(res.message);
  4287 + refreshTable();
  4288 + }
  4289 + }}
  4290 + />
  4291 + ) : (
  4292 + // <Button
  4293 + // className="p-0"
  4294 + // type="link"
  4295 + // onClick={() => {
  4296 + // if (!subOrderSelectedMap.get(record.id)?.length) {
  4297 + // return message.error('请选择选择子订单');
  4298 + // }
  4299 + // setSelectedRows(subOrderSelectedMap.get(record.id));
  4300 + // setOrderRow(record);
  4301 + // setOrderPrintVisible(true);
  4302 + // setOrderCheckType(CHECK_TYPE.PROCURE);
  4303 + // }}
  4304 + // >
  4305 + // 采购打印
  4306 + // </Button>
  4307 + ''
  4308 + )}
  4309 + </Space>
  4310 + </Space.Compact>
  4311 + </Flex>
4264 </Flex> 4312 </Flex>
4265 </Flex> 4313 </Flex>
4266 - </Flex>  
4267 4314
4268 - <Flex className="p-0 pb-[24px] pt-[4px] pl-[23px] pr-[5px] bg-white rounded-b-lg">  
4269 - {expandedRowRender(record)} 4315 + <Flex className="p-0 pb-[24px] pt-[4px] pl-[23px] pr-[5px] bg-white rounded-b-lg">
  4316 + {expandedRowRender(record)}
  4317 + </Flex>
4270 </Flex> 4318 </Flex>
4271 - </Flex> 4319 + </div>
4272 ); 4320 );
4273 }; 4321 };
4274 4322
src/pages/Order/constant.ts
@@ -265,15 +265,13 @@ export const FINANCIAL_STATUS_OPTIONS = { @@ -265,15 +265,13 @@ export const FINANCIAL_STATUS_OPTIONS = {
265 export const AFTER_INVOICING_STATUS = { 265 export const AFTER_INVOICING_STATUS = {
266 NOT_YET_INVOICED: '尚未开票', 266 NOT_YET_INVOICED: '尚未开票',
267 UN_INVOICE: '不需开票', 267 UN_INVOICE: '不需开票',
268 - APPLY_FOR_INVOICING: '申请开票',  
269 - URGENT_INVOICE_AUDITING: '加急待审核',  
270 - URGENT_INVOICE_AUDIT_NOTPASS: '加急审核失败',  
271 PARTIAL_INVOICING: '部分开票', 268 PARTIAL_INVOICING: '部分开票',
272 COMPLETE_INVOICING: '完全开票', 269 COMPLETE_INVOICING: '完全开票',
273 - INVOICING: '开票中',  
274 - REISSUE: '重新开票',  
275 - WAIT_FLUSH: '待冲红',  
276 - FLUSHED: '已冲红', 270 +};
  271 +
  272 +export const IS_WAIT_FLUSHED_OPTIONS = {
  273 + true: '是',
  274 + false: '否',
277 }; 275 };
278 276
279 export const TAGS_COLOR = new Map<string, string>([ 277 export const TAGS_COLOR = new Map<string, string>([
@@ -712,6 +710,20 @@ export const MAIN_ORDER_COLUMNS = [ @@ -712,6 +710,20 @@ export const MAIN_ORDER_COLUMNS = [
712 valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS), 710 valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS),
713 }, 711 },
714 { 712 {
  713 + title: '是否待冲红',
  714 + dataIndex: 'isWaitFlushed',
  715 + valueType: 'select',
  716 + hideInTable: true,
  717 + valueEnum: enumToProTableEnumValue(IS_WAIT_FLUSHED_OPTIONS),
  718 + search: {
  719 + transform: (value) => {
  720 + return {
  721 + isWaitFlushed: value === 'true',
  722 + };
  723 + },
  724 + },
  725 + },
  726 + {
715 title: '发票号码', 727 title: '发票号码',
716 dataIndex: 'invoiceNumberLike', 728 dataIndex: 'invoiceNumberLike',
717 valueType: 'text', 729 valueType: 'text',