Commit 5d73e1d33adf3a54bfc76a4d94ee01d76f397eb1
Merge branch 'znh-small' into znh
Showing
6 changed files
with
116 additions
and
20 deletions
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 }) => { | @@ -44,6 +56,8 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) => { | ||
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 }) => { | @@ -59,6 +73,21 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) => { | ||
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 }) => { | @@ -80,20 +109,29 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) => { | ||
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 '@/services'; | @@ -2,7 +2,11 @@ import { postServiceOrderQueryHistoryOrderRecord } from '@/services'; | ||
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 }) => { | @@ -88,7 +92,10 @@ export default ({ subOrders, onClose }) => { | ||
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 'lodash'; | @@ -27,6 +27,7 @@ import { cloneDeep } from 'lodash'; | ||
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 }) => { | @@ -44,6 +45,17 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
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 }) => { | @@ -77,6 +89,11 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
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 }) => { | @@ -447,7 +464,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
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<string, string>([ | @@ -153,6 +165,7 @@ export const HISTORY_OPT_TYPE = new Map<string, string>([ | ||
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 = () => { | @@ -441,6 +441,7 @@ const OrderPage = () => { | ||
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 = () => { | @@ -615,6 +616,12 @@ const OrderPage = () => { | ||
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 = () => { | @@ -782,10 +789,14 @@ const OrderPage = () => { | ||
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 = () => { | @@ -1196,10 +1207,13 @@ const OrderPage = () => { | ||
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 | )} |