Commit bd3fd45aa70c22ee93e6137f5d03fcd1ad18cf31
1 parent
88a7081c
feat: update
Showing
5 changed files
with
102 additions
and
19 deletions
src/pages/Order/components/FinancialDrawer.tsx
... | ... | @@ -4,17 +4,29 @@ import { |
4 | 4 | postServiceOrderEditOrder, |
5 | 5 | postServiceOrderInvoicing, |
6 | 6 | } from '@/services'; |
7 | +import { enumToSelect } from '@/utils'; | |
7 | 8 | import { |
8 | 9 | DrawerForm, |
9 | 10 | ProFormDatePicker, |
11 | + ProFormSelect, | |
10 | 12 | ProFormText, |
11 | 13 | ProFormTextArea, |
12 | 14 | } from '@ant-design/pro-components'; |
13 | 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 | 21 | const subIds = subOrders.map((item) => item.id); |
17 | 22 | console.log(subOrders); |
23 | + useEffect(() => { | |
24 | + // 在组件挂载或数据变化时,更新组件状态 | |
25 | + if (mainOrder) { | |
26 | + setInvoicingStatus(subOrders[0].invoicingStatus); | |
27 | + } | |
28 | + }, [mainOrder]); | |
29 | + | |
18 | 30 | const [form] = Form.useForm<{ name: string; company: string }>(); |
19 | 31 | return ( |
20 | 32 | <DrawerForm<{ |
... | ... | @@ -44,6 +56,8 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) => { |
44 | 56 | subIds: subIds, |
45 | 57 | collectMoneyTime: form.getFieldValue('collectMoneyTime'), |
46 | 58 | invoicingNotes: form.getFieldValue('invoicingNotes'), |
59 | + invoicingStatus: form.getFieldValue('invoicingStatus'), | |
60 | + mainorderOrSubOrderInvoicing: isMainOrder, | |
47 | 61 | }; |
48 | 62 | if (isEdit) { |
49 | 63 | res = await postServiceOrderEditOrder({ data: body }); |
... | ... | @@ -59,6 +73,21 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) => { |
59 | 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 | 91 | <ProFormText |
63 | 92 | width="lg" |
64 | 93 | name="invoiceIdentificationNumber" |
... | ... | @@ -80,20 +109,29 @@ export default ({ mainOrder, subOrders, isEdit, onClose }) => { |
80 | 109 | placeholder="请输入开户银行账号" |
81 | 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 | 136 | <ProFormTextArea |
99 | 137 | width="lg" | ... | ... |
src/pages/Order/components/HistoryModal.tsx
... | ... | @@ -2,7 +2,11 @@ import { postServiceOrderQueryHistoryOrderRecord } from '@/services'; |
2 | 2 | import { enumValueToLabel, formatDateTime } from '@/utils'; |
3 | 3 | import { Button, Col, Empty, Flex, Modal, Row, Spin } from 'antd'; |
4 | 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 | 11 | export default ({ subOrders, onClose }) => { |
8 | 12 | let subOrderIds = subOrders?.map((subOrder: any) => { |
... | ... | @@ -88,7 +92,10 @@ export default ({ subOrders, onClose }) => { |
88 | 92 | history.status, |
89 | 93 | ORDER_STATUS_OPTIONS, |
90 | 94 | ) === undefined |
91 | - ? '已开票' | |
95 | + ? enumValueToLabel( | |
96 | + history.status, | |
97 | + FINANCIAL_STATUS_OPTIONS, | |
98 | + ) | |
92 | 99 | : enumValueToLabel( |
93 | 100 | history.status, |
94 | 101 | ORDER_STATUS_OPTIONS, | ... | ... |
src/pages/Order/components/OrderDrawer.tsx
... | ... | @@ -27,6 +27,7 @@ import { cloneDeep } from 'lodash'; |
27 | 27 | import { useEffect, useRef, useState } from 'react'; |
28 | 28 | import { |
29 | 29 | INVOCING_STATUS_OPTIONS, |
30 | + INVOCING_STATUS_OPTIONS_OLD, | |
30 | 31 | PAYMENT_CHANNEL_OPTIONS, |
31 | 32 | PAYMENT_METHOD_OPTIONS, |
32 | 33 | PRODUCT_BELONG_DEPARTMENT_OPTIONS, |
... | ... | @@ -44,6 +45,17 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
44 | 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 | 59 | const fileList: any = []; |
48 | 60 | |
49 | 61 | useEffect(() => { |
... | ... | @@ -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 | 97 | if (subOrders !== undefined && subOrders.length > 0) { |
81 | 98 | data.list = subOrders; |
82 | 99 | } |
... | ... | @@ -447,7 +464,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
447 | 464 | name="invoicingStatus" |
448 | 465 | width="lg" |
449 | 466 | label="是否需要开票" |
450 | - options={enumToSelect(INVOCING_STATUS_OPTIONS)} | |
467 | + options={getInvoicingSelect()} | |
451 | 468 | // disabled={mainInfoDisbled} |
452 | 469 | onChange={(_, option) => { |
453 | 470 | setInvoicingStatus(option.value); | ... | ... |
src/pages/Order/constant.ts
... | ... | @@ -13,6 +13,7 @@ export const PAYMENT_METHOD_OPTIONS = { |
13 | 13 | CASH_ON_DELIVERY: '货到付款', |
14 | 14 | UNPAID: '未付款', |
15 | 15 | PLATFORM_SETTLEMENT: '平台结算', |
16 | + WITHHOLDING_ADVANCE_DEPOSIT: '扣预存', | |
16 | 17 | }; |
17 | 18 | |
18 | 19 | export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = { |
... | ... | @@ -23,13 +24,19 @@ export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = { |
23 | 24 | EXPERIMENTAL_CONSUMABLES: '实验耗材事业部门', |
24 | 25 | }; |
25 | 26 | |
26 | -export const INVOCING_STATUS_OPTIONS = { | |
27 | +export const INVOCING_STATUS_OPTIONS_OLD = { | |
27 | 28 | UN_INVOICE: '不需开票', |
28 | 29 | SPECIALLY_INVOICED: '专票', |
29 | 30 | COMMON_INVOICED: '普票', |
30 | 31 | INVOICED: '需要开票', |
31 | 32 | }; |
32 | 33 | |
34 | +export const INVOCING_STATUS_OPTIONS = { | |
35 | + UN_INVOICE: '不需开票', | |
36 | + SPECIALLY_INVOICED: '专票', | |
37 | + COMMON_INVOICED: '普票', | |
38 | +}; | |
39 | + | |
33 | 40 | export const INVOCING_STATUS = { |
34 | 41 | UN_INVOICE: '不需开票', |
35 | 42 | SPECIALLY_INVOICED: '专票', |
... | ... | @@ -84,6 +91,11 @@ export const ORDER_STATUS_OPTIONS = { |
84 | 91 | CONFIRM_RECEIPT: '确认收货', |
85 | 92 | }; |
86 | 93 | |
94 | +export const FINANCIAL_STATUS_OPTIONS = { | |
95 | + INVOICING: '已开票', | |
96 | + UN_INVOICING: '取消开票', | |
97 | +}; | |
98 | + | |
87 | 99 | export const TAGS_COLOR = new Map<string, string>([ |
88 | 100 | ['UN_INVOICE', 'success'], |
89 | 101 | ['INVOICED', 'processing'], |
... | ... | @@ -153,6 +165,7 @@ export const HISTORY_OPT_TYPE = new Map<string, string>([ |
153 | 165 | ['INVOICING', '财务开票'], |
154 | 166 | ['EDIT_ORDER', '财务编辑'], |
155 | 167 | ['MODIFY_SEN_INFORMATION', '发货信息编辑'], |
168 | + ['UN_INVOICING', '财务取消开票'], | |
156 | 169 | ]); |
157 | 170 | |
158 | 171 | export const MAIN_ORDER_COLUMNS = [ | ... | ... |
src/pages/Order/index.tsx
... | ... | @@ -441,6 +441,7 @@ const OrderPage = () => { |
441 | 441 | setIsFinalcialEdit(false); |
442 | 442 | setOrderRow(record); |
443 | 443 | setSelectedRows([optRecord]); |
444 | + setIsMainOrder(false); | |
444 | 445 | }} |
445 | 446 | > |
446 | 447 | 开票 |
... | ... | @@ -788,10 +789,14 @@ const OrderPage = () => { |
788 | 789 | let selectedSubOrders = selectedRowObj[record.id]; |
789 | 790 | setSelectedRows(selectedSubOrders); |
790 | 791 | if (selectedSubOrders === undefined) { |
792 | + setIsMainOrder(true); | |
791 | 793 | setSelectedRows(record.subOrderInformationLists); |
794 | + } else { | |
795 | + setIsMainOrder(false); | |
792 | 796 | } |
793 | 797 | setOrderRow(record); |
794 | 798 | setFinancialVisible(true); |
799 | + setIsFinalcialEdit(false); | |
795 | 800 | }} |
796 | 801 | > |
797 | 802 | 开票 |
... | ... | @@ -1202,10 +1207,13 @@ const OrderPage = () => { |
1202 | 1207 | isEdit={isFinalcialEdit} |
1203 | 1208 | mainOrder={orderRow} |
1204 | 1209 | subOrders={selectedRows} |
1210 | + isMainOrder={isMainOrder} | |
1205 | 1211 | onClose={() => { |
1206 | 1212 | setFinancialVisible(false); |
1207 | 1213 | setOrderRow({}); |
1208 | 1214 | refreshTable(); |
1215 | + setIsMainOrder(false); | |
1216 | + setIsFinalcialEdit(false); | |
1209 | 1217 | }} |
1210 | 1218 | /> |
1211 | 1219 | )} | ... | ... |