Commit 5d73e1d33adf3a54bfc76a4d94ee01d76f397eb1

Authored by zhongnanhuang
2 parents 1f86602e 77954e9c

Merge branch 'znh-small' into znh

src/pages/Order/components/FinancialDrawer.tsx
@@ -4,17 +4,29 @@ import { @@ -4,17 +4,29 @@ import {
4 postServiceOrderEditOrder, 4 postServiceOrderEditOrder,
5 postServiceOrderInvoicing, 5 postServiceOrderInvoicing,
6 } from '@/services'; 6 } from '@/services';
  7 +import { enumToSelect } from '@/utils';
7 import { 8 import {
8 DrawerForm, 9 DrawerForm,
9 ProFormDatePicker, 10 ProFormDatePicker,
  11 + ProFormSelect,
10 ProFormText, 12 ProFormText,
11 ProFormTextArea, 13 ProFormTextArea,
12 } from '@ant-design/pro-components'; 14 } from '@ant-design/pro-components';
13 import { Form, message } from 'antd'; 15 import { Form, message } from 'antd';
  16 +import { useEffect, useState } from 'react';
  17 +import { INVOCING_STATUS_OPTIONS_OLD } from '../constant';
14 18
15 -export default ({ mainOrder, subOrders, isEdit, onClose }) => { 19 +export default ({ mainOrder, subOrders, isEdit, isMainOrder, onClose }) => {
  20 + const [invoicingStatus, setInvoicingStatus] = useState('');
16 const subIds = subOrders.map((item) => item.id); 21 const subIds = subOrders.map((item) => item.id);
17 console.log(subOrders); 22 console.log(subOrders);
  23 + useEffect(() => {
  24 + // 在组件挂载或数据变化时,更新组件状态
  25 + if (mainOrder) {
  26 + setInvoicingStatus(subOrders[0].invoicingStatus);
  27 + }
  28 + }, [mainOrder]);
  29 +
18 const [form] = Form.useForm<{ name: string; company: string }>(); 30 const [form] = Form.useForm<{ name: string; company: string }>();
19 return ( 31 return (
20 <DrawerForm<{ 32 <DrawerForm<{
@@ -44,6 +56,8 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) =&gt; { @@ -44,6 +56,8 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) =&gt; {
44 subIds: subIds, 56 subIds: subIds,
45 collectMoneyTime: form.getFieldValue('collectMoneyTime'), 57 collectMoneyTime: form.getFieldValue('collectMoneyTime'),
46 invoicingNotes: form.getFieldValue('invoicingNotes'), 58 invoicingNotes: form.getFieldValue('invoicingNotes'),
  59 + invoicingStatus: form.getFieldValue('invoicingStatus'),
  60 + mainorderOrSubOrderInvoicing: isMainOrder,
47 }; 61 };
48 if (isEdit) { 62 if (isEdit) {
49 res = await postServiceOrderEditOrder({ data: body }); 63 res = await postServiceOrderEditOrder({ data: body });
@@ -59,6 +73,21 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) =&gt; { @@ -59,6 +73,21 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) =&gt; {
59 return !val && onClose(); 73 return !val && onClose();
60 }} 74 }}
61 > 75 >
  76 + {isMainOrder ? (
  77 + <ProFormSelect
  78 + placeholder="选择是否需要开票"
  79 + name="invoicingStatus"
  80 + width="lg"
  81 + label="是否需要开票"
  82 + options={enumToSelect(INVOCING_STATUS_OPTIONS_OLD)}
  83 + onChange={setInvoicingStatus}
  84 + // disabled={mainInfoDisbled}
  85 + rules={[{ required: true, message: '是否需要开票必填' }]}
  86 + />
  87 + ) : (
  88 + ''
  89 + )}
  90 +
62 <ProFormText 91 <ProFormText
63 width="lg" 92 width="lg"
64 name="invoiceIdentificationNumber" 93 name="invoiceIdentificationNumber"
@@ -80,20 +109,29 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) =&gt; { @@ -80,20 +109,29 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) =&gt; {
80 placeholder="请输入开户银行账号" 109 placeholder="请输入开户银行账号"
81 disabled 110 disabled
82 /> 111 />
83 - <ProFormDatePicker  
84 - width="lg"  
85 - name="invoicingTime"  
86 - label="开票时间"  
87 - disabled={isEdit}  
88 - rules={[{ required: !isEdit ? true : false, message: '这是必填项' }]}  
89 - initialValue={subOrders[0].invoicingTime}  
90 - />  
91 - <ProFormDatePicker  
92 - width="lg"  
93 - name="collectMoneyTime"  
94 - label="收款时间"  
95 - initialValue={subOrders[0].collectMoneyTime}  
96 - /> 112 +
  113 + {invoicingStatus !== 'UN_INVOICE'
  114 + ? [
  115 + <ProFormDatePicker
  116 + key="invoicingTime"
  117 + width="lg"
  118 + name="invoicingTime"
  119 + label="开票时间"
  120 + disabled={isEdit}
  121 + rules={[
  122 + { required: !isEdit ? true : false, message: '这是必填项' },
  123 + ]}
  124 + initialValue={subOrders[0].invoicingTime}
  125 + />,
  126 + <ProFormDatePicker
  127 + key="collectMoneyTime"
  128 + width="lg"
  129 + name="collectMoneyTime"
  130 + label="收款时间"
  131 + initialValue={subOrders[0].collectMoneyTime}
  132 + />,
  133 + ]
  134 + : ''}
97 135
98 <ProFormTextArea 136 <ProFormTextArea
99 width="lg" 137 width="lg"
src/pages/Order/components/HistoryModal.tsx
@@ -2,7 +2,11 @@ import { postServiceOrderQueryHistoryOrderRecord } from &#39;@/services&#39;; @@ -2,7 +2,11 @@ import { postServiceOrderQueryHistoryOrderRecord } from &#39;@/services&#39;;
2 import { enumValueToLabel, formatDateTime } from '@/utils'; 2 import { enumValueToLabel, formatDateTime } from '@/utils';
3 import { Button, Col, Empty, Flex, Modal, Row, Spin } from 'antd'; 3 import { Button, Col, Empty, Flex, Modal, Row, Spin } from 'antd';
4 import { useEffect, useState } from 'react'; 4 import { useEffect, useState } from 'react';
5 -import { HISTORY_OPT_TYPE, ORDER_STATUS_OPTIONS } from '../constant'; 5 +import {
  6 + FINANCIAL_STATUS_OPTIONS,
  7 + HISTORY_OPT_TYPE,
  8 + ORDER_STATUS_OPTIONS,
  9 +} from '../constant';
6 10
7 export default ({ subOrders, onClose }) => { 11 export default ({ subOrders, onClose }) => {
8 let subOrderIds = subOrders?.map((subOrder: any) => { 12 let subOrderIds = subOrders?.map((subOrder: any) => {
@@ -88,7 +92,10 @@ export default ({ subOrders, onClose }) =&gt; { @@ -88,7 +92,10 @@ export default ({ subOrders, onClose }) =&gt; {
88 history.status, 92 history.status,
89 ORDER_STATUS_OPTIONS, 93 ORDER_STATUS_OPTIONS,
90 ) === undefined 94 ) === undefined
91 - ? '已开票' 95 + ? enumValueToLabel(
  96 + history.status,
  97 + FINANCIAL_STATUS_OPTIONS,
  98 + )
92 : enumValueToLabel( 99 : enumValueToLabel(
93 history.status, 100 history.status,
94 ORDER_STATUS_OPTIONS, 101 ORDER_STATUS_OPTIONS,
src/pages/Order/components/OrderDrawer.tsx
@@ -27,6 +27,7 @@ import { cloneDeep } from &#39;lodash&#39;; @@ -27,6 +27,7 @@ import { cloneDeep } from &#39;lodash&#39;;
27 import { useEffect, useRef, useState } from 'react'; 27 import { useEffect, useRef, useState } from 'react';
28 import { 28 import {
29 INVOCING_STATUS_OPTIONS, 29 INVOCING_STATUS_OPTIONS,
  30 + INVOCING_STATUS_OPTIONS_OLD,
30 PAYMENT_CHANNEL_OPTIONS, 31 PAYMENT_CHANNEL_OPTIONS,
31 PAYMENT_METHOD_OPTIONS, 32 PAYMENT_METHOD_OPTIONS,
32 PRODUCT_BELONG_DEPARTMENT_OPTIONS, 33 PRODUCT_BELONG_DEPARTMENT_OPTIONS,
@@ -44,6 +45,17 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -44,6 +45,17 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
44 return orderOptType === type; 45 return orderOptType === type;
45 } 46 }
46 47
  48 + /**
  49 + *
  50 + * @returns 获取开票选项
  51 + */
  52 + function getInvoicingSelect() {
  53 + if (optType('edit') || optType('copy')) {
  54 + return enumToSelect(INVOCING_STATUS_OPTIONS_OLD);
  55 + }
  56 + return enumToSelect(INVOCING_STATUS_OPTIONS);
  57 + }
  58 +
47 const fileList: any = []; 59 const fileList: any = [];
48 60
49 useEffect(() => { 61 useEffect(() => {
@@ -77,6 +89,11 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -77,6 +89,11 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
77 }); 89 });
78 } 90 }
79 91
  92 + //复制的时候,如果是不需要开票,要把开票信息清空
  93 + if (optType('copy') && data.invoicingStatus === 'UN_INVOICE') {
  94 + data.invoiceIdentificationNumber = undefined;
  95 + }
  96 +
80 if (subOrders !== undefined && subOrders.length > 0) { 97 if (subOrders !== undefined && subOrders.length > 0) {
81 data.list = subOrders; 98 data.list = subOrders;
82 } 99 }
@@ -447,7 +464,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -447,7 +464,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
447 name="invoicingStatus" 464 name="invoicingStatus"
448 width="lg" 465 width="lg"
449 label="是否需要开票" 466 label="是否需要开票"
450 - options={enumToSelect(INVOCING_STATUS_OPTIONS)} 467 + options={getInvoicingSelect()}
451 // disabled={mainInfoDisbled} 468 // disabled={mainInfoDisbled}
452 onChange={(_, option) => { 469 onChange={(_, option) => {
453 setInvoicingStatus(option.value); 470 setInvoicingStatus(option.value);
src/pages/Order/constant.ts
@@ -13,6 +13,7 @@ export const PAYMENT_METHOD_OPTIONS = { @@ -13,6 +13,7 @@ export const PAYMENT_METHOD_OPTIONS = {
13 CASH_ON_DELIVERY: '货到付款', 13 CASH_ON_DELIVERY: '货到付款',
14 UNPAID: '未付款', 14 UNPAID: '未付款',
15 PLATFORM_SETTLEMENT: '平台结算', 15 PLATFORM_SETTLEMENT: '平台结算',
  16 + WITHHOLDING_ADVANCE_DEPOSIT: '扣预存',
16 }; 17 };
17 18
18 export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = { 19 export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = {
@@ -23,13 +24,19 @@ export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = { @@ -23,13 +24,19 @@ export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = {
23 EXPERIMENTAL_CONSUMABLES: '实验耗材事业部门', 24 EXPERIMENTAL_CONSUMABLES: '实验耗材事业部门',
24 }; 25 };
25 26
26 -export const INVOCING_STATUS_OPTIONS = { 27 +export const INVOCING_STATUS_OPTIONS_OLD = {
27 UN_INVOICE: '不需开票', 28 UN_INVOICE: '不需开票',
28 SPECIALLY_INVOICED: '专票', 29 SPECIALLY_INVOICED: '专票',
29 COMMON_INVOICED: '普票', 30 COMMON_INVOICED: '普票',
30 INVOICED: '需要开票', 31 INVOICED: '需要开票',
31 }; 32 };
32 33
  34 +export const INVOCING_STATUS_OPTIONS = {
  35 + UN_INVOICE: '不需开票',
  36 + SPECIALLY_INVOICED: '专票',
  37 + COMMON_INVOICED: '普票',
  38 +};
  39 +
33 export const INVOCING_STATUS = { 40 export const INVOCING_STATUS = {
34 UN_INVOICE: '不需开票', 41 UN_INVOICE: '不需开票',
35 SPECIALLY_INVOICED: '专票', 42 SPECIALLY_INVOICED: '专票',
@@ -84,6 +91,11 @@ export const ORDER_STATUS_OPTIONS = { @@ -84,6 +91,11 @@ export const ORDER_STATUS_OPTIONS = {
84 CONFIRM_RECEIPT: '确认收货', 91 CONFIRM_RECEIPT: '确认收货',
85 }; 92 };
86 93
  94 +export const FINANCIAL_STATUS_OPTIONS = {
  95 + INVOICING: '已开票',
  96 + UN_INVOICING: '取消开票',
  97 +};
  98 +
87 export const TAGS_COLOR = new Map<string, string>([ 99 export const TAGS_COLOR = new Map<string, string>([
88 ['UN_INVOICE', 'success'], 100 ['UN_INVOICE', 'success'],
89 ['INVOICED', 'processing'], 101 ['INVOICED', 'processing'],
@@ -153,6 +165,7 @@ export const HISTORY_OPT_TYPE = new Map&lt;string, string&gt;([ @@ -153,6 +165,7 @@ export const HISTORY_OPT_TYPE = new Map&lt;string, string&gt;([
153 ['INVOICING', '财务开票'], 165 ['INVOICING', '财务开票'],
154 ['EDIT_ORDER', '财务编辑'], 166 ['EDIT_ORDER', '财务编辑'],
155 ['MODIFY_SEN_INFORMATION', '发货信息编辑'], 167 ['MODIFY_SEN_INFORMATION', '发货信息编辑'],
  168 + ['UN_INVOICING', '财务取消开票'],
156 ]); 169 ]);
157 170
158 export const MAIN_ORDER_COLUMNS = [ 171 export const MAIN_ORDER_COLUMNS = [
@@ -266,7 +279,7 @@ export const MAIN_ORDER_COLUMNS = [ @@ -266,7 +279,7 @@ export const MAIN_ORDER_COLUMNS = [
266 { 279 {
267 title: '创建日期', 280 title: '创建日期',
268 dataIndex: 'createTime', 281 dataIndex: 'createTime',
269 - valueType: 'dateRange', 282 + valueType: 'dateTimeRange',
270 hideInTable: true, 283 hideInTable: true,
271 search: { 284 search: {
272 transform: (value) => { 285 transform: (value) => {
src/pages/Order/index.tsx
@@ -441,6 +441,7 @@ const OrderPage = () =&gt; { @@ -441,6 +441,7 @@ const OrderPage = () =&gt; {
441 setIsFinalcialEdit(false); 441 setIsFinalcialEdit(false);
442 setOrderRow(record); 442 setOrderRow(record);
443 setSelectedRows([optRecord]); 443 setSelectedRows([optRecord]);
  444 + setIsMainOrder(false);
444 }} 445 }}
445 > 446 >
446 开票 447 开票
@@ -615,6 +616,12 @@ const OrderPage = () =&gt; { @@ -615,6 +616,12 @@ const OrderPage = () =&gt; {
615 <span className="text-[#8C8C8C]">联系人:</span> 616 <span className="text-[#8C8C8C]">联系人:</span>
616 <span className="text-slate-700"> 617 <span className="text-slate-700">
617 {record.institutionContactName + ' '} 618 {record.institutionContactName + ' '}
  619 + </span>
  620 + </span>
  621 + <span>
  622 + <span className="text-[#8C8C8C]">收货人:</span>
  623 + <span className="text-slate-700">
  624 + {record.customerName + ' '}
618 <ContainerTwoTone 625 <ContainerTwoTone
619 className="hover:curcor-pointer" 626 className="hover:curcor-pointer"
620 onClick={() => { 627 onClick={() => {
@@ -782,10 +789,14 @@ const OrderPage = () =&gt; { @@ -782,10 +789,14 @@ const OrderPage = () =&gt; {
782 let selectedSubOrders = selectedRowObj[record.id]; 789 let selectedSubOrders = selectedRowObj[record.id];
783 setSelectedRows(selectedSubOrders); 790 setSelectedRows(selectedSubOrders);
784 if (selectedSubOrders === undefined) { 791 if (selectedSubOrders === undefined) {
  792 + setIsMainOrder(true);
785 setSelectedRows(record.subOrderInformationLists); 793 setSelectedRows(record.subOrderInformationLists);
  794 + } else {
  795 + setIsMainOrder(false);
786 } 796 }
787 setOrderRow(record); 797 setOrderRow(record);
788 setFinancialVisible(true); 798 setFinancialVisible(true);
  799 + setIsFinalcialEdit(false);
789 }} 800 }}
790 > 801 >
791 开票 802 开票
@@ -1196,10 +1207,13 @@ const OrderPage = () =&gt; { @@ -1196,10 +1207,13 @@ const OrderPage = () =&gt; {
1196 isEdit={isFinalcialEdit} 1207 isEdit={isFinalcialEdit}
1197 mainOrder={orderRow} 1208 mainOrder={orderRow}
1198 subOrders={selectedRows} 1209 subOrders={selectedRows}
  1210 + isMainOrder={isMainOrder}
1199 onClose={() => { 1211 onClose={() => {
1200 setFinancialVisible(false); 1212 setFinancialVisible(false);
1201 setOrderRow({}); 1213 setOrderRow({});
1202 refreshTable(); 1214 refreshTable();
  1215 + setIsMainOrder(false);
  1216 + setIsFinalcialEdit(false);
1203 }} 1217 }}
1204 /> 1218 />
1205 )} 1219 )}
src/pages/OrderReport/index.less 0 → 100644
  1 +.order-statictis-card .ant-pro-card-body {
  2 + padding-top: 0;
  3 +}
  4 +
  5 +.order-statictis-card {
  6 + height: 100%;
  7 +}