Commit b65804494e6e506376019cd3f98f8e06cb8f4172
fix: 弹窗跳转一次
Showing
9 changed files
with
330 additions
and
142 deletions
Too many changes to show.
To preserve performance only 9 of 10 files are displayed.
src/pages/Invoice/Invoice/components/AddBankStatementModal.tsx
@@ -14,11 +14,21 @@ export default ({ getRows, onFinish }) => { | @@ -14,11 +14,21 @@ export default ({ getRows, onFinish }) => { | ||
14 | dataIndex: 'id', | 14 | dataIndex: 'id', |
15 | }, | 15 | }, |
16 | { | 16 | { |
17 | + title: '编号', | ||
18 | + hideInTable: true, | ||
19 | + dataIndex: 'id', | ||
20 | + }, | ||
21 | + { | ||
17 | title: '流水号', | 22 | title: '流水号', |
18 | hideInSearch: true, | 23 | hideInSearch: true, |
19 | dataIndex: 'serialNumber', | 24 | dataIndex: 'serialNumber', |
20 | }, | 25 | }, |
21 | { | 26 | { |
27 | + title: '流水号', | ||
28 | + hideInTable: true, | ||
29 | + dataIndex: 'serialNumber', | ||
30 | + }, | ||
31 | + { | ||
22 | title: '收款时间', | 32 | title: '收款时间', |
23 | dataIndex: 'collectionDatetime', | 33 | dataIndex: 'collectionDatetime', |
24 | hideInSearch: true, | 34 | hideInSearch: true, |
@@ -26,7 +36,7 @@ export default ({ getRows, onFinish }) => { | @@ -26,7 +36,7 @@ export default ({ getRows, onFinish }) => { | ||
26 | }, | 36 | }, |
27 | { | 37 | { |
28 | title: '收款方', | 38 | title: '收款方', |
29 | - hideInTable: true, | 39 | + hideInSearch: true, |
30 | dataIndex: 'payeeText', | 40 | dataIndex: 'payeeText', |
31 | }, | 41 | }, |
32 | { | 42 | { |
src/pages/Invoice/Invoice/components/InvoiceVerificationModal.tsx
@@ -20,7 +20,6 @@ export default ({ invoiceId, setVisible, onClose }) => { | @@ -20,7 +20,6 @@ export default ({ invoiceId, setVisible, onClose }) => { | ||
20 | const [bankChooseModalVisible, setBankChooseModalVisible] = useState(false); | 20 | const [bankChooseModalVisible, setBankChooseModalVisible] = useState(false); |
21 | const [invoiceInfo, setInvoiceInfo] = useState({}); | 21 | const [invoiceInfo, setInvoiceInfo] = useState({}); |
22 | const [relationOrderIds, setRelationOrderIds] = useState([]); | 22 | const [relationOrderIds, setRelationOrderIds] = useState([]); |
23 | - const [setRelationBankStatements] = useState([]); | ||
24 | const actionRef = useRef<ActionType>(); | 23 | const actionRef = useRef<ActionType>(); |
25 | 24 | ||
26 | const loadInvoiceData = async () => { | 25 | const loadInvoiceData = async () => { |
@@ -31,7 +30,6 @@ export default ({ invoiceId, setVisible, onClose }) => { | @@ -31,7 +30,6 @@ export default ({ invoiceId, setVisible, onClose }) => { | ||
31 | setInvoiceInfo(res.data); | 30 | setInvoiceInfo(res.data); |
32 | setRelationOrderIds(res.data.mainOrderIds); | 31 | setRelationOrderIds(res.data.mainOrderIds); |
33 | console.log('bs:' + res.data.bankStatementDtos); | 32 | console.log('bs:' + res.data.bankStatementDtos); |
34 | - setRelationBankStatements(res.data.bankStatementDtos); | ||
35 | } | 33 | } |
36 | }; | 34 | }; |
37 | 35 | ||
@@ -117,6 +115,18 @@ export default ({ invoiceId, setVisible, onClose }) => { | @@ -117,6 +115,18 @@ export default ({ invoiceId, setVisible, onClose }) => { | ||
117 | }, | 115 | }, |
118 | { | 116 | { |
119 | key: '11', | 117 | key: '11', |
118 | + label: '订单类型', | ||
119 | + children: invoiceInfo?.orderTypeText, | ||
120 | + span: 12, | ||
121 | + }, | ||
122 | + { | ||
123 | + key: '12', | ||
124 | + label: '绑定流水号', | ||
125 | + children: invoiceInfo?.serialNumbersTextByOrder, | ||
126 | + span: 12, | ||
127 | + }, | ||
128 | + { | ||
129 | + key: '13', | ||
120 | label: '备注', | 130 | label: '备注', |
121 | children: invoiceInfo?.notes, | 131 | children: invoiceInfo?.notes, |
122 | span: 24, | 132 | span: 24, |
src/pages/Invoice/Invoice/components/invoiceWriteOffModal.tsx
@@ -30,24 +30,29 @@ export default ({ getData, triggerButton, readOnly }) => { | @@ -30,24 +30,29 @@ export default ({ getData, triggerButton, readOnly }) => { | ||
30 | { | 30 | { |
31 | title: '发票号码', | 31 | title: '发票号码', |
32 | dataIndex: 'invoiceNumber', | 32 | dataIndex: 'invoiceNumber', |
33 | + ellipsis: true, | ||
33 | }, | 34 | }, |
34 | { | 35 | { |
35 | title: '收款方', | 36 | title: '收款方', |
36 | dataIndex: 'payeeText', | 37 | dataIndex: 'payeeText', |
38 | + ellipsis: true, | ||
37 | }, | 39 | }, |
38 | { | 40 | { |
39 | title: '付款方', | 41 | title: '付款方', |
40 | dataIndex: 'purchaser', | 42 | dataIndex: 'purchaser', |
43 | + ellipsis: true, | ||
41 | }, | 44 | }, |
42 | { | 45 | { |
43 | title: '金额', | 46 | title: '金额', |
44 | dataIndex: 'money', | 47 | dataIndex: 'money', |
45 | valueType: 'money', | 48 | valueType: 'money', |
49 | + ellipsis: true, | ||
46 | }, | 50 | }, |
47 | { | 51 | { |
48 | title: '日期', | 52 | title: '日期', |
49 | dataIndex: 'invoicingTime', | 53 | dataIndex: 'invoicingTime', |
50 | valueType: 'date', | 54 | valueType: 'date', |
55 | + ellipsis: true, | ||
51 | }, | 56 | }, |
52 | ]; | 57 | ]; |
53 | if (!readOnly) { | 58 | if (!readOnly) { |
@@ -84,49 +89,52 @@ export default ({ getData, triggerButton, readOnly }) => { | @@ -84,49 +89,52 @@ export default ({ getData, triggerButton, readOnly }) => { | ||
84 | { | 89 | { |
85 | title: '流水号', | 90 | title: '流水号', |
86 | dataIndex: 'serialNumber', | 91 | dataIndex: 'serialNumber', |
92 | + ellipsis: true, | ||
87 | }, | 93 | }, |
88 | { | 94 | { |
89 | title: '收款方', | 95 | title: '收款方', |
90 | dataIndex: 'payeeText', | 96 | dataIndex: 'payeeText', |
97 | + ellipsis: true, | ||
91 | }, | 98 | }, |
92 | { | 99 | { |
93 | title: '付款方', | 100 | title: '付款方', |
94 | dataIndex: 'payer', | 101 | dataIndex: 'payer', |
102 | + ellipsis: true, | ||
95 | }, | 103 | }, |
96 | { | 104 | { |
97 | title: '金额', | 105 | title: '金额', |
98 | dataIndex: 'amount', | 106 | dataIndex: 'amount', |
99 | valueType: 'money', | 107 | valueType: 'money', |
108 | + ellipsis: true, | ||
100 | }, | 109 | }, |
101 | { | 110 | { |
102 | title: '日期', | 111 | title: '日期', |
103 | dataIndex: 'collectionDatetime', | 112 | dataIndex: 'collectionDatetime', |
104 | valueType: 'date', | 113 | valueType: 'date', |
114 | + ellipsis: true, | ||
105 | }, | 115 | }, |
106 | ]; | 116 | ]; |
107 | - if (!readOnly) { | ||
108 | - columns.push({ | ||
109 | - title: '操作', | ||
110 | - valueType: 'option', | ||
111 | - width: 200, | ||
112 | - render: (text, record) => [ | ||
113 | - <a | ||
114 | - key="delete" | ||
115 | - onClick={() => { | ||
116 | - const tableDataSource = | ||
117 | - formRef.current?.getFieldValue('bankStatements'); | ||
118 | - console.log(JSON.stringify(tableDataSource)); | ||
119 | - formRef.current?.setFieldValue( | ||
120 | - 'bankStatements', | ||
121 | - tableDataSource.filter((item) => item.id !== record.id), | ||
122 | - ); | ||
123 | - }} | ||
124 | - > | ||
125 | - 删除 | ||
126 | - </a>, | ||
127 | - ], | ||
128 | - }); | ||
129 | - } | 117 | + columns.push({ |
118 | + title: '操作', | ||
119 | + valueType: 'option', | ||
120 | + width: 200, | ||
121 | + render: (text, record) => [ | ||
122 | + <a | ||
123 | + key="delete" | ||
124 | + onClick={() => { | ||
125 | + const tableDataSource = | ||
126 | + formRef.current?.getFieldValue('bankStatements'); | ||
127 | + console.log(JSON.stringify(tableDataSource)); | ||
128 | + formRef.current?.setFieldValue( | ||
129 | + 'bankStatements', | ||
130 | + tableDataSource.filter((item) => item.id !== record.id), | ||
131 | + ); | ||
132 | + }} | ||
133 | + > | ||
134 | + 删除 | ||
135 | + </a>, | ||
136 | + ], | ||
137 | + }); | ||
130 | return columns; | 138 | return columns; |
131 | }; | 139 | }; |
132 | 140 | ||
@@ -155,9 +163,9 @@ export default ({ getData, triggerButton, readOnly }) => { | @@ -155,9 +163,9 @@ export default ({ getData, triggerButton, readOnly }) => { | ||
155 | return getData(); | 163 | return getData(); |
156 | }} | 164 | }} |
157 | /*initialValues={{ | 165 | /*initialValues={{ |
158 | - invoiceWriteOffId:invoiceWriteOffId, | ||
159 | - invoices:originInvoices, | ||
160 | - }}*/ | 166 | + invoiceWriteOffId:invoiceWriteOffId, |
167 | + invoices:originInvoices, | ||
168 | + }}*/ | ||
161 | > | 169 | > |
162 | <ProFormText name={'invoiceWriteOffId'} hidden={true}></ProFormText> | 170 | <ProFormText name={'invoiceWriteOffId'} hidden={true}></ProFormText> |
163 | 171 | ||
@@ -295,30 +303,27 @@ export default ({ getData, triggerButton, readOnly }) => { | @@ -295,30 +303,27 @@ export default ({ getData, triggerButton, readOnly }) => { | ||
295 | recordCreatorProps={false} | 303 | recordCreatorProps={false} |
296 | toolBarRender={() => [ | 304 | toolBarRender={() => [ |
297 | <> | 305 | <> |
298 | - {!readOnly && ( | ||
299 | - <AddBankStatementModal | ||
300 | - getRows={() => formRef.current?.getFieldValue('bankStatements')} | ||
301 | - onFinish={(datas) => { | ||
302 | - const bankStatements = | ||
303 | - formRef.current?.getFieldValue('bankStatements'); | ||
304 | - // 添加非空判断,并处理为空的情况 | ||
305 | - const mergedBankStatements = | ||
306 | - bankStatements && Array.isArray(bankStatements) | ||
307 | - ? bankStatements | ||
308 | - : []; | ||
309 | - const mergedDatas = | ||
310 | - datas && Array.isArray(datas) ? datas : []; | ||
311 | - let res = [...mergedBankStatements, ...mergedDatas]; | ||
312 | - //对res 进行去重处理,根据id去重 | ||
313 | - const resMap = new Map(); | ||
314 | - res.forEach((item) => { | ||
315 | - resMap.set(item.id, item); | ||
316 | - }); | ||
317 | - res = Array.from(resMap.values()); | ||
318 | - formRef.current?.setFieldValue('bankStatements', res); | ||
319 | - }} | ||
320 | - /> | ||
321 | - )} | 306 | + <AddBankStatementModal |
307 | + getRows={() => formRef.current?.getFieldValue('bankStatements')} | ||
308 | + onFinish={(datas) => { | ||
309 | + const bankStatements = | ||
310 | + formRef.current?.getFieldValue('bankStatements'); | ||
311 | + // 添加非空判断,并处理为空的情况 | ||
312 | + const mergedBankStatements = | ||
313 | + bankStatements && Array.isArray(bankStatements) | ||
314 | + ? bankStatements | ||
315 | + : []; | ||
316 | + const mergedDatas = datas && Array.isArray(datas) ? datas : []; | ||
317 | + let res = [...mergedBankStatements, ...mergedDatas]; | ||
318 | + //对res 进行去重处理,根据id去重 | ||
319 | + const resMap = new Map(); | ||
320 | + res.forEach((item) => { | ||
321 | + resMap.set(item.id, item); | ||
322 | + }); | ||
323 | + res = Array.from(resMap.values()); | ||
324 | + formRef.current?.setFieldValue('bankStatements', res); | ||
325 | + }} | ||
326 | + /> | ||
322 | </>, | 327 | </>, |
323 | ]} | 328 | ]} |
324 | columns={getBankStatementColumns()} | 329 | columns={getBankStatementColumns()} |
src/pages/Invoice/Invoice/index.tsx
@@ -11,6 +11,7 @@ import { | @@ -11,6 +11,7 @@ import { | ||
11 | postServiceInvoiceGetWriteOffRecord, | 11 | postServiceInvoiceGetWriteOffRecord, |
12 | postServiceInvoiceQueryInvoice, | 12 | postServiceInvoiceQueryInvoice, |
13 | } from '@/services'; | 13 | } from '@/services'; |
14 | +import { orderExport } from '@/services/order'; | ||
14 | import { enumValueToLabel, formatDateTime } from '@/utils'; | 15 | import { enumValueToLabel, formatDateTime } from '@/utils'; |
15 | import { formatDate } from '@/utils/time'; | 16 | import { formatDate } from '@/utils/time'; |
16 | import { ActionType, ProTable } from '@ant-design/pro-components'; | 17 | import { ActionType, ProTable } from '@ant-design/pro-components'; |
@@ -23,6 +24,7 @@ const InvoiceRecord = () => { | @@ -23,6 +24,7 @@ const InvoiceRecord = () => { | ||
23 | const [invoiceVerificationVisible, setInvoiceVerificationVisible] = | 24 | const [invoiceVerificationVisible, setInvoiceVerificationVisible] = |
24 | useState(false); | 25 | useState(false); |
25 | const [invoiceId, setInvoiceId] = useState(undefined); | 26 | const [invoiceId, setInvoiceId] = useState(undefined); |
27 | + const [messageApi, contextHolder] = message.useMessage(); | ||
26 | const reloadInvoiceTable = () => { | 28 | const reloadInvoiceTable = () => { |
27 | invoiceActionRef.current?.reload(); | 29 | invoiceActionRef.current?.reload(); |
28 | }; | 30 | }; |
@@ -216,6 +218,31 @@ const InvoiceRecord = () => { | @@ -216,6 +218,31 @@ const InvoiceRecord = () => { | ||
216 | rowKey="id" | 218 | rowKey="id" |
217 | search={{ | 219 | search={{ |
218 | labelWidth: 'auto', | 220 | labelWidth: 'auto', |
221 | + optionRender: (searchConfig, formProps, dom) => [ | ||
222 | + ...dom.reverse(), | ||
223 | + <Button | ||
224 | + key="out" | ||
225 | + onClick={() => { | ||
226 | + const values = searchConfig?.form?.getFieldsValue(); | ||
227 | + messageApi.open({ | ||
228 | + type: 'loading', | ||
229 | + content: '导出中...', | ||
230 | + duration: 0, | ||
231 | + }); | ||
232 | + orderExport( | ||
233 | + '/api/service/invoice/exportInvoices', | ||
234 | + '发票.xlsx', | ||
235 | + 'POST', | ||
236 | + values, | ||
237 | + () => { | ||
238 | + messageApi.destroy(); | ||
239 | + }, | ||
240 | + ); | ||
241 | + }} | ||
242 | + > | ||
243 | + 导出 | ||
244 | + </Button>, | ||
245 | + ], | ||
219 | }} | 246 | }} |
220 | options={{ | 247 | options={{ |
221 | setting: { | 248 | setting: { |
@@ -265,6 +292,7 @@ const InvoiceRecord = () => { | @@ -265,6 +292,7 @@ const InvoiceRecord = () => { | ||
265 | ) : ( | 292 | ) : ( |
266 | '' | 293 | '' |
267 | )} | 294 | )} |
295 | + {contextHolder} | ||
268 | </div> | 296 | </div> |
269 | ); | 297 | ); |
270 | }; | 298 | }; |
src/pages/Invoice/InvoiceVerification/index.tsx
1 | import ButtonConfirm from '@/components/ButtomConfirm'; | 1 | import ButtonConfirm from '@/components/ButtomConfirm'; |
2 | import EllipsisDiv from '@/components/Div/EllipsisDiv'; | 2 | import EllipsisDiv from '@/components/Div/EllipsisDiv'; |
3 | import { RESPONSE_CODE } from '@/constants/enum'; | 3 | import { RESPONSE_CODE } from '@/constants/enum'; |
4 | +import InvoiceWriteOffModal from '@/pages/Invoice/Invoice/components/invoiceWriteOffModal'; | ||
4 | import BankImportModal from '@/pages/Invoice/InvoiceVerification/components/BankImportModal'; | 5 | import BankImportModal from '@/pages/Invoice/InvoiceVerification/components/BankImportModal'; |
5 | import InvoiceRecordDetailModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceRecordDetailModal'; | 6 | import InvoiceRecordDetailModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceRecordDetailModal'; |
6 | import InvoiceVerificationModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceVerificationModal'; | 7 | import InvoiceVerificationModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceVerificationModal'; |
@@ -13,7 +14,9 @@ import { | @@ -13,7 +14,9 @@ import { | ||
13 | postServiceBankStatementDeleteBankStatement, | 14 | postServiceBankStatementDeleteBankStatement, |
14 | postServiceBankStatementEditBankStatement, | 15 | postServiceBankStatementEditBankStatement, |
15 | postServiceBankStatementQueryBankStatement, | 16 | postServiceBankStatementQueryBankStatement, |
17 | + postServiceInvoiceGetWriteOffRecord, | ||
16 | } from '@/services'; | 18 | } from '@/services'; |
19 | +import { orderExport } from '@/services/order'; | ||
17 | import { enumValueToLabel, formatDateTime } from '@/utils'; | 20 | import { enumValueToLabel, formatDateTime } from '@/utils'; |
18 | import { formatDate } from '@/utils/time'; | 21 | import { formatDate } from '@/utils/time'; |
19 | import { PlusOutlined } from '@ant-design/icons'; | 22 | import { PlusOutlined } from '@ant-design/icons'; |
@@ -27,6 +30,7 @@ const InvoiceRecord = () => { | @@ -27,6 +30,7 @@ const InvoiceRecord = () => { | ||
27 | const [bankImportModalVisible, setBankImportModalVisible] = useState(false); | 30 | const [bankImportModalVisible, setBankImportModalVisible] = useState(false); |
28 | const [invoiceVerificationVisible, setInvoiceVerificationVisible] = | 31 | const [invoiceVerificationVisible, setInvoiceVerificationVisible] = |
29 | useState(false); | 32 | useState(false); |
33 | + const [messageApi, contextHolder] = message.useMessage(); | ||
30 | const [invoiceId] = useState(undefined); | 34 | const [invoiceId] = useState(undefined); |
31 | const [invoiceRecordDetailVisible, setInvoiceRecordDetailVisible] = | 35 | const [invoiceRecordDetailVisible, setInvoiceRecordDetailVisible] = |
32 | useState(false); | 36 | useState(false); |
@@ -133,6 +137,28 @@ const InvoiceRecord = () => { | @@ -133,6 +137,28 @@ const InvoiceRecord = () => { | ||
133 | ); | 137 | ); |
134 | } | 138 | } |
135 | 139 | ||
140 | + if (record.writeOffId !== null) { | ||
141 | + btns.push( | ||
142 | + <InvoiceWriteOffModal | ||
143 | + getData={async () => { | ||
144 | + console.log(record.writeOffId); | ||
145 | + const res = await postServiceInvoiceGetWriteOffRecord({ | ||
146 | + data: { id: record.writeOffId }, | ||
147 | + }); | ||
148 | + const data = res.data; | ||
149 | + return { | ||
150 | + invoiceWriteOffId: data.id, | ||
151 | + invoices: data.invoiceDtos, | ||
152 | + bankStatements: data.bankStatementDtos, | ||
153 | + }; | ||
154 | + }} | ||
155 | + key="writeOff" | ||
156 | + triggerButton={<Button type="link">核销记录</Button>} | ||
157 | + readOnly={true} | ||
158 | + />, | ||
159 | + ); | ||
160 | + } | ||
161 | + | ||
136 | if (record.paths?.includes('deleteBankStatement')) { | 162 | if (record.paths?.includes('deleteBankStatement')) { |
137 | btns.push( | 163 | btns.push( |
138 | <ButtonConfirm | 164 | <ButtonConfirm |
@@ -202,6 +228,31 @@ const InvoiceRecord = () => { | @@ -202,6 +228,31 @@ const InvoiceRecord = () => { | ||
202 | rowKey="id" | 228 | rowKey="id" |
203 | search={{ | 229 | search={{ |
204 | labelWidth: 'auto', | 230 | labelWidth: 'auto', |
231 | + optionRender: (searchConfig, formProps, dom) => [ | ||
232 | + ...dom.reverse(), | ||
233 | + <Button | ||
234 | + key="out" | ||
235 | + onClick={() => { | ||
236 | + const values = searchConfig?.form?.getFieldsValue(); | ||
237 | + messageApi.open({ | ||
238 | + type: 'loading', | ||
239 | + content: '导出中...', | ||
240 | + duration: 0, | ||
241 | + }); | ||
242 | + orderExport( | ||
243 | + '/api/service/invoice/exportBankStatements', | ||
244 | + '银行流水.xlsx', | ||
245 | + 'POST', | ||
246 | + values, | ||
247 | + () => { | ||
248 | + messageApi.destroy(); | ||
249 | + }, | ||
250 | + ); | ||
251 | + }} | ||
252 | + > | ||
253 | + 导出 | ||
254 | + </Button>, | ||
255 | + ], | ||
205 | }} | 256 | }} |
206 | options={{ | 257 | options={{ |
207 | setting: { | 258 | setting: { |
@@ -260,6 +311,7 @@ const InvoiceRecord = () => { | @@ -260,6 +311,7 @@ const InvoiceRecord = () => { | ||
260 | ) : ( | 311 | ) : ( |
261 | '' | 312 | '' |
262 | )} | 313 | )} |
314 | + {contextHolder} | ||
263 | </div> | 315 | </div> |
264 | ); | 316 | ); |
265 | }; | 317 | }; |
src/pages/Invoice/constant.tsx
@@ -78,6 +78,43 @@ export const INVOICE_COLUMNS = [ | @@ -78,6 +78,43 @@ export const INVOICE_COLUMNS = [ | ||
78 | hideInTable: true, | 78 | hideInTable: true, |
79 | }, | 79 | }, |
80 | { | 80 | { |
81 | + title: '订单状态', | ||
82 | + dataIndex: 'orderTypeText', | ||
83 | + valueType: 'text', | ||
84 | + width: 180, | ||
85 | + }, | ||
86 | + { | ||
87 | + title: '绑定流水号', | ||
88 | + dataIndex: 'serialNumbersTextByOrder', | ||
89 | + | ||
90 | + valueType: 'text', | ||
91 | + width: 180, | ||
92 | + }, | ||
93 | + { | ||
94 | + title: '是否预付款', | ||
95 | + dataIndex: 'orderIsPrePay', | ||
96 | + valueType: 'select', | ||
97 | + valueEnum: { | ||
98 | + true: { | ||
99 | + text: '是', | ||
100 | + status: true, | ||
101 | + }, | ||
102 | + false: { | ||
103 | + text: '否', | ||
104 | + status: false, | ||
105 | + }, | ||
106 | + }, | ||
107 | + hideInTable: true, | ||
108 | + width: 180, | ||
109 | + }, | ||
110 | + { | ||
111 | + title: '绑定流水号', | ||
112 | + dataIndex: 'serialNumberLike', | ||
113 | + hideInTable: true, | ||
114 | + valueType: 'text', | ||
115 | + width: 180, | ||
116 | + }, | ||
117 | + { | ||
81 | title: '购买方', | 118 | title: '购买方', |
82 | dataIndex: 'purchaser', | 119 | dataIndex: 'purchaser', |
83 | valueType: 'text', | 120 | valueType: 'text', |
src/pages/Order/Order/index.tsx
@@ -214,7 +214,7 @@ const OrderPage = () => { | @@ -214,7 +214,7 @@ const OrderPage = () => { | ||
214 | const [ids, setIds] = useState([]); | 214 | const [ids, setIds] = useState([]); |
215 | const [recordOptNode, setRecordOptNode] = useState(null); | 215 | const [recordOptNode, setRecordOptNode] = useState(null); |
216 | const roleCode = userInfo?.roleSmallVO?.code; | 216 | const roleCode = userInfo?.roleSmallVO?.code; |
217 | - // const navigate = useNavigate(); | 217 | + const roles = userInfo?.roles; |
218 | const canMergeInvoicing = useMemo(() => { | 218 | const canMergeInvoicing = useMemo(() => { |
219 | if (subOrderSelectedMap.size === 0) { | 219 | if (subOrderSelectedMap.size === 0) { |
220 | return false; | 220 | return false; |
@@ -228,6 +228,7 @@ const OrderPage = () => { | @@ -228,6 +228,7 @@ const OrderPage = () => { | ||
228 | .every((subItem) => subItem.paths.includes('applyInvoicing_old')); | 228 | .every((subItem) => subItem.paths.includes('applyInvoicing_old')); |
229 | }, [selectedSubOrderKeys]); | 229 | }, [selectedSubOrderKeys]); |
230 | 230 | ||
231 | + console.log(JSON.stringify(userInfo)); | ||
231 | const triggerRecordOptNode = async (id) => { | 232 | const triggerRecordOptNode = async (id) => { |
232 | const res = await postServiceOrderGetCurrentOptNode({ | 233 | const res = await postServiceOrderGetCurrentOptNode({ |
233 | query: { | 234 | query: { |
@@ -2096,8 +2097,9 @@ const OrderPage = () => { | @@ -2096,8 +2097,9 @@ const OrderPage = () => { | ||
2096 | title="已和客户确认发票??" | 2097 | title="已和客户确认发票??" |
2097 | text="确认发票" | 2098 | text="确认发票" |
2098 | onConfirm={async () => { | 2099 | onConfirm={async () => { |
2100 | + let body = { ids: [optRecord.id] }; | ||
2099 | const data = await postServiceOrderConfirmInvoice({ | 2101 | const data = await postServiceOrderConfirmInvoice({ |
2100 | - data: [optRecord.id], | 2102 | + data: body, |
2101 | }); | 2103 | }); |
2102 | if (data.result === RESPONSE_CODE.SUCCESS) { | 2104 | if (data.result === RESPONSE_CODE.SUCCESS) { |
2103 | message.success(data.message); | 2105 | message.success(data.message); |
@@ -2108,7 +2110,6 @@ const OrderPage = () => { | @@ -2108,7 +2110,6 @@ const OrderPage = () => { | ||
2108 | ) : ( | 2110 | ) : ( |
2109 | '' | 2111 | '' |
2110 | )} | 2112 | )} |
2111 | - | ||
2112 | {optRecord.paths?.includes('orderCancel') ? ( | 2113 | {optRecord.paths?.includes('orderCancel') ? ( |
2113 | <ButtonConfirm | 2114 | <ButtonConfirm |
2114 | className="p-0" | 2115 | className="p-0" |
@@ -3889,12 +3890,15 @@ const OrderPage = () => { | @@ -3889,12 +3890,15 @@ const OrderPage = () => { | ||
3889 | title="已和客户确认发票?" | 3890 | title="已和客户确认发票?" |
3890 | text="确认发票" | 3891 | text="确认发票" |
3891 | onConfirm={async () => { | 3892 | onConfirm={async () => { |
3892 | - const data = await postServiceOrderConfirmInvoice({ | ||
3893 | - data: [ | 3893 | + let body = { |
3894 | + ids: [ | ||
3894 | ...record.subOrderInformationLists.map( | 3895 | ...record.subOrderInformationLists.map( |
3895 | (subOrder) => subOrder.id, | 3896 | (subOrder) => subOrder.id, |
3896 | ), | 3897 | ), |
3897 | ], | 3898 | ], |
3899 | + }; | ||
3900 | + const data = await postServiceOrderConfirmInvoice({ | ||
3901 | + data: body, | ||
3898 | }); | 3902 | }); |
3899 | if (data.result === RESPONSE_CODE.SUCCESS) { | 3903 | if (data.result === RESPONSE_CODE.SUCCESS) { |
3900 | message.success(data.message); | 3904 | message.success(data.message); |
@@ -4042,7 +4046,7 @@ const OrderPage = () => { | @@ -4042,7 +4046,7 @@ const OrderPage = () => { | ||
4042 | /** | 4046 | /** |
4043 | * 采购的订单状态筛选内容 | 4047 | * 采购的订单状态筛选内容 |
4044 | */ | 4048 | */ |
4045 | - if (roleCode === 'procure' && item.dataIndex === 'orderStatus') { | 4049 | + if (roles.includes('PROCURE') && item.dataIndex === 'orderStatus') { |
4046 | item.valueEnum = enumToProTableEnumValue( | 4050 | item.valueEnum = enumToProTableEnumValue( |
4047 | PROCURE_PRIMARY_ORDER_STATUS_OPTIONS, | 4051 | PROCURE_PRIMARY_ORDER_STATUS_OPTIONS, |
4048 | ); | 4052 | ); |
@@ -4054,7 +4058,12 @@ const OrderPage = () => { | @@ -4054,7 +4058,12 @@ const OrderPage = () => { | ||
4054 | /** | 4058 | /** |
4055 | * 采购可以筛选供应商备注 | 4059 | * 采购可以筛选供应商备注 |
4056 | */ | 4060 | */ |
4057 | - if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) { | 4061 | + if ( |
4062 | + (roleCode === 'procure' || | ||
4063 | + roles.includes('PROCURE') || | ||
4064 | + roleCode === 'admin') && | ||
4065 | + !isSupplier() | ||
4066 | + ) { | ||
4058 | mainOrdersColumns.push({ | 4067 | mainOrdersColumns.push({ |
4059 | title: '供应商备注', | 4068 | title: '供应商备注', |
4060 | width: 120, | 4069 | width: 120, |
@@ -4067,7 +4076,12 @@ const OrderPage = () => { | @@ -4067,7 +4076,12 @@ const OrderPage = () => { | ||
4067 | /** | 4076 | /** |
4068 | * 采购可以筛选其他采购 | 4077 | * 采购可以筛选其他采购 |
4069 | */ | 4078 | */ |
4070 | - if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) { | 4079 | + if ( |
4080 | + (roleCode === 'procure' || | ||
4081 | + roles.includes('PROCURE') || | ||
4082 | + roleCode === 'admin') && | ||
4083 | + !isSupplier() | ||
4084 | + ) { | ||
4071 | mainOrdersColumns.push({ | 4085 | mainOrdersColumns.push({ |
4072 | title: '采购名称', | 4086 | title: '采购名称', |
4073 | width: 120, | 4087 | width: 120, |
@@ -4087,7 +4101,12 @@ const OrderPage = () => { | @@ -4087,7 +4101,12 @@ const OrderPage = () => { | ||
4087 | /** | 4101 | /** |
4088 | * 排除采购 | 4102 | * 排除采购 |
4089 | */ | 4103 | */ |
4090 | - if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) { | 4104 | + if ( |
4105 | + (roleCode === 'procure' || | ||
4106 | + roles.includes('PROCURE') || | ||
4107 | + roleCode === 'admin') && | ||
4108 | + !isSupplier() | ||
4109 | + ) { | ||
4091 | mainOrdersColumns.push({ | 4110 | mainOrdersColumns.push({ |
4092 | title: '采购排除', | 4111 | title: '采购排除', |
4093 | width: 120, | 4112 | width: 120, |
@@ -4122,7 +4141,11 @@ const OrderPage = () => { | @@ -4122,7 +4141,11 @@ const OrderPage = () => { | ||
4122 | } | 4141 | } |
4123 | 4142 | ||
4124 | //判断是否是采购,是的话新增一个筛选条件 | 4143 | //判断是否是采购,是的话新增一个筛选条件 |
4125 | - if (roleCode === 'procure' || roleCode === 'admin') { | 4144 | + if ( |
4145 | + roleCode === 'procure' || | ||
4146 | + roles.includes('PROCURE') || | ||
4147 | + roleCode === 'admin' | ||
4148 | + ) { | ||
4126 | mainOrdersColumns.push({ | 4149 | mainOrdersColumns.push({ |
4127 | title: isSupplier() ? '下单状态' : '采购下单状态', | 4150 | title: isSupplier() ? '下单状态' : '采购下单状态', |
4128 | dataIndex: 'procureOrderStatus', | 4151 | dataIndex: 'procureOrderStatus', |
@@ -4151,7 +4174,7 @@ const OrderPage = () => { | @@ -4151,7 +4174,7 @@ const OrderPage = () => { | ||
4151 | } | 4174 | } |
4152 | 4175 | ||
4153 | //采购可以筛选出需要处理的订单 | 4176 | //采购可以筛选出需要处理的订单 |
4154 | - if (roleCode === 'procure' && !isSupplier()) { | 4177 | + if (roles.includes('PROCURE') && !isSupplier()) { |
4155 | radios.push(<Radio value={60}>其他采购</Radio>); | 4178 | radios.push(<Radio value={60}>其他采购</Radio>); |
4156 | radios.push(<Radio value={10}>待处理</Radio>); | 4179 | radios.push(<Radio value={10}>待处理</Radio>); |
4157 | } | 4180 | } |
@@ -4335,7 +4358,7 @@ const OrderPage = () => { | @@ -4335,7 +4358,7 @@ const OrderPage = () => { | ||
4335 | key="out" | 4358 | key="out" |
4336 | onClick={() => { | 4359 | onClick={() => { |
4337 | setIsMainOrder(true); | 4360 | setIsMainOrder(true); |
4338 | - if (roleCode === 'procure') { | 4361 | + if (roles.includes('PROCURE')) { |
4339 | setProcureCheckModalVisible(true); | 4362 | setProcureCheckModalVisible(true); |
4340 | } | 4363 | } |
4341 | 4364 |
src/pages/ResearchGroup/components/ResearchGroupAddModal.tsx
@@ -267,9 +267,15 @@ export default ({ setVisible, researchGroupId, onClose }) => { | @@ -267,9 +267,15 @@ export default ({ setVisible, researchGroupId, onClose }) => { | ||
267 | let uidIdMap = new Map( | 267 | let uidIdMap = new Map( |
268 | accounts.map((item: any) => [item.accountId, item.id]), | 268 | accounts.map((item: any) => [item.accountId, item.id]), |
269 | ); | 269 | ); |
270 | - let res = await postCanrdApiUserList({ | ||
271 | - data: { uids: accountIds, phones: phones }, | ||
272 | - }); | 270 | + let data = {}; |
271 | + if (accountIds.length > 0) { | ||
272 | + data = { ...data, uids: accountIds }; | ||
273 | + } | ||
274 | + if (phones.length > 0) { | ||
275 | + data = { ...data, phones: phones }; | ||
276 | + } | ||
277 | + | ||
278 | + let res = await postCanrdApiUserList({ data }); | ||
273 | if (res && res.result === RESPONSE_CODE.SUCCESS) { | 279 | if (res && res.result === RESPONSE_CODE.SUCCESS) { |
274 | let accountList = res?.data?.data; | 280 | let accountList = res?.data?.data; |
275 | console.log(accountList); | 281 | console.log(accountList); |
src/services/definition.ts
@@ -3,82 +3,82 @@ | @@ -3,82 +3,82 @@ | ||
3 | /** Do not modify manually. | 3 | /** Do not modify manually. |
4 | content is generated automatically by `ts-gear`. */ | 4 | content is generated automatically by `ts-gear`. */ |
5 | export type ModelAndViewStatus = | 5 | export type ModelAndViewStatus = |
6 | - | "100 CONTINUE" | ||
7 | - | "101 SWITCHING_PROTOCOLS" | ||
8 | - | "102 PROCESSING" | ||
9 | - | "103 CHECKPOINT" | ||
10 | - | "200 OK" | ||
11 | - | "201 CREATED" | ||
12 | - | "202 ACCEPTED" | ||
13 | - | "203 NON_AUTHORITATIVE_INFORMATION" | ||
14 | - | "204 NO_CONTENT" | ||
15 | - | "205 RESET_CONTENT" | ||
16 | - | "206 PARTIAL_CONTENT" | ||
17 | - | "207 MULTI_STATUS" | ||
18 | - | "208 ALREADY_REPORTED" | ||
19 | - | "226 IM_USED" | ||
20 | - | "300 MULTIPLE_CHOICES" | ||
21 | - | "301 MOVED_PERMANENTLY" | ||
22 | - | "302 FOUND" | ||
23 | - | "302 MOVED_TEMPORARILY" | ||
24 | - | "303 SEE_OTHER" | ||
25 | - | "304 NOT_MODIFIED" | ||
26 | - | "305 USE_PROXY" | ||
27 | - | "307 TEMPORARY_REDIRECT" | ||
28 | - | "308 PERMANENT_REDIRECT" | ||
29 | - | "400 BAD_REQUEST" | ||
30 | - | "401 UNAUTHORIZED" | ||
31 | - | "402 PAYMENT_REQUIRED" | ||
32 | - | "403 FORBIDDEN" | ||
33 | - | "404 NOT_FOUND" | ||
34 | - | "405 METHOD_NOT_ALLOWED" | ||
35 | - | "406 NOT_ACCEPTABLE" | ||
36 | - | "407 PROXY_AUTHENTICATION_REQUIRED" | ||
37 | - | "408 REQUEST_TIMEOUT" | ||
38 | - | "409 CONFLICT" | ||
39 | - | "410 GONE" | ||
40 | - | "411 LENGTH_REQUIRED" | ||
41 | - | "412 PRECONDITION_FAILED" | ||
42 | - | "413 PAYLOAD_TOO_LARGE" | ||
43 | - | "413 REQUEST_ENTITY_TOO_LARGE" | ||
44 | - | "414 URI_TOO_LONG" | ||
45 | - | "414 REQUEST_URI_TOO_LONG" | ||
46 | - | "415 UNSUPPORTED_MEDIA_TYPE" | ||
47 | - | "416 REQUESTED_RANGE_NOT_SATISFIABLE" | ||
48 | - | "417 EXPECTATION_FAILED" | ||
49 | - | "418 I_AM_A_TEAPOT" | ||
50 | - | "419 INSUFFICIENT_SPACE_ON_RESOURCE" | ||
51 | - | "420 METHOD_FAILURE" | ||
52 | - | "421 DESTINATION_LOCKED" | ||
53 | - | "422 UNPROCESSABLE_ENTITY" | ||
54 | - | "423 LOCKED" | ||
55 | - | "424 FAILED_DEPENDENCY" | ||
56 | - | "425 TOO_EARLY" | ||
57 | - | "426 UPGRADE_REQUIRED" | ||
58 | - | "428 PRECONDITION_REQUIRED" | ||
59 | - | "429 TOO_MANY_REQUESTS" | ||
60 | - | "431 REQUEST_HEADER_FIELDS_TOO_LARGE" | ||
61 | - | "451 UNAVAILABLE_FOR_LEGAL_REASONS" | ||
62 | - | "500 INTERNAL_SERVER_ERROR" | ||
63 | - | "501 NOT_IMPLEMENTED" | ||
64 | - | "502 BAD_GATEWAY" | ||
65 | - | "503 SERVICE_UNAVAILABLE" | ||
66 | - | "504 GATEWAY_TIMEOUT" | ||
67 | - | "505 HTTP_VERSION_NOT_SUPPORTED" | ||
68 | - | "506 VARIANT_ALSO_NEGOTIATES" | ||
69 | - | "507 INSUFFICIENT_STORAGE" | ||
70 | - | "508 LOOP_DETECTED" | ||
71 | - | "509 BANDWIDTH_LIMIT_EXCEEDED" | ||
72 | - | "510 NOT_EXTENDED" | ||
73 | - | "511 NETWORK_AUTHENTICATION_REQUIRED"; | 6 | + | '100 CONTINUE' |
7 | + | '101 SWITCHING_PROTOCOLS' | ||
8 | + | '102 PROCESSING' | ||
9 | + | '103 CHECKPOINT' | ||
10 | + | '200 OK' | ||
11 | + | '201 CREATED' | ||
12 | + | '202 ACCEPTED' | ||
13 | + | '203 NON_AUTHORITATIVE_INFORMATION' | ||
14 | + | '204 NO_CONTENT' | ||
15 | + | '205 RESET_CONTENT' | ||
16 | + | '206 PARTIAL_CONTENT' | ||
17 | + | '207 MULTI_STATUS' | ||
18 | + | '208 ALREADY_REPORTED' | ||
19 | + | '226 IM_USED' | ||
20 | + | '300 MULTIPLE_CHOICES' | ||
21 | + | '301 MOVED_PERMANENTLY' | ||
22 | + | '302 FOUND' | ||
23 | + | '302 MOVED_TEMPORARILY' | ||
24 | + | '303 SEE_OTHER' | ||
25 | + | '304 NOT_MODIFIED' | ||
26 | + | '305 USE_PROXY' | ||
27 | + | '307 TEMPORARY_REDIRECT' | ||
28 | + | '308 PERMANENT_REDIRECT' | ||
29 | + | '400 BAD_REQUEST' | ||
30 | + | '401 UNAUTHORIZED' | ||
31 | + | '402 PAYMENT_REQUIRED' | ||
32 | + | '403 FORBIDDEN' | ||
33 | + | '404 NOT_FOUND' | ||
34 | + | '405 METHOD_NOT_ALLOWED' | ||
35 | + | '406 NOT_ACCEPTABLE' | ||
36 | + | '407 PROXY_AUTHENTICATION_REQUIRED' | ||
37 | + | '408 REQUEST_TIMEOUT' | ||
38 | + | '409 CONFLICT' | ||
39 | + | '410 GONE' | ||
40 | + | '411 LENGTH_REQUIRED' | ||
41 | + | '412 PRECONDITION_FAILED' | ||
42 | + | '413 PAYLOAD_TOO_LARGE' | ||
43 | + | '413 REQUEST_ENTITY_TOO_LARGE' | ||
44 | + | '414 URI_TOO_LONG' | ||
45 | + | '414 REQUEST_URI_TOO_LONG' | ||
46 | + | '415 UNSUPPORTED_MEDIA_TYPE' | ||
47 | + | '416 REQUESTED_RANGE_NOT_SATISFIABLE' | ||
48 | + | '417 EXPECTATION_FAILED' | ||
49 | + | '418 I_AM_A_TEAPOT' | ||
50 | + | '419 INSUFFICIENT_SPACE_ON_RESOURCE' | ||
51 | + | '420 METHOD_FAILURE' | ||
52 | + | '421 DESTINATION_LOCKED' | ||
53 | + | '422 UNPROCESSABLE_ENTITY' | ||
54 | + | '423 LOCKED' | ||
55 | + | '424 FAILED_DEPENDENCY' | ||
56 | + | '425 TOO_EARLY' | ||
57 | + | '426 UPGRADE_REQUIRED' | ||
58 | + | '428 PRECONDITION_REQUIRED' | ||
59 | + | '429 TOO_MANY_REQUESTS' | ||
60 | + | '431 REQUEST_HEADER_FIELDS_TOO_LARGE' | ||
61 | + | '451 UNAVAILABLE_FOR_LEGAL_REASONS' | ||
62 | + | '500 INTERNAL_SERVER_ERROR' | ||
63 | + | '501 NOT_IMPLEMENTED' | ||
64 | + | '502 BAD_GATEWAY' | ||
65 | + | '503 SERVICE_UNAVAILABLE' | ||
66 | + | '504 GATEWAY_TIMEOUT' | ||
67 | + | '505 HTTP_VERSION_NOT_SUPPORTED' | ||
68 | + | '506 VARIANT_ALSO_NEGOTIATES' | ||
69 | + | '507 INSUFFICIENT_STORAGE' | ||
70 | + | '508 LOOP_DETECTED' | ||
71 | + | '509 BANDWIDTH_LIMIT_EXCEEDED' | ||
72 | + | '510 NOT_EXTENDED' | ||
73 | + | '511 NETWORK_AUTHENTICATION_REQUIRED'; | ||
74 | export type ProcureReturnBillDtoSendStore = | 74 | export type ProcureReturnBillDtoSendStore = |
75 | - | "DALANG_WAREHOUSE" | ||
76 | - | "HOUJIE_WAREHOUSE"; | 75 | + | 'DALANG_WAREHOUSE' |
76 | + | 'HOUJIE_WAREHOUSE'; | ||
77 | export type ProcureReturnBillDtoStatus = | 77 | export type ProcureReturnBillDtoStatus = |
78 | - | "AUDIT_NOTPASS" | ||
79 | - | "WAIT_SEND" | ||
80 | - | "SENDED" | ||
81 | - | "WAIT_AUDIT"; | 78 | + | 'AUDIT_NOTPASS' |
79 | + | 'WAIT_SEND' | ||
80 | + | 'SENDED' | ||
81 | + | 'WAIT_AUDIT'; | ||
82 | export interface AdminAuthRoleVO { | 82 | export interface AdminAuthRoleVO { |
83 | menuIds?: Array<number>; | 83 | menuIds?: Array<number>; |
84 | /** @format int64 */ | 84 | /** @format int64 */ |
@@ -1465,11 +1465,20 @@ export interface InvoiceDto { | @@ -1465,11 +1465,20 @@ export interface InvoiceDto { | ||
1465 | invoiceStatus?: string; | 1465 | invoiceStatus?: string; |
1466 | /** | 1466 | /** |
1467 | * @description | 1467 | * @description |
1468 | + * 发票类型 | ||
1469 | + */ | ||
1470 | + invoiceStatusText?: string; | ||
1471 | + /** | ||
1472 | + * @description | ||
1468 | * 开票日期 | 1473 | * 开票日期 |
1469 | * @format date-time | 1474 | * @format date-time |
1470 | */ | 1475 | */ |
1471 | invoicingTime?: string; | 1476 | invoicingTime?: string; |
1472 | invoicingType?: string; | 1477 | invoicingType?: string; |
1478 | + /** | ||
1479 | + * @description | ||
1480 | + * 开具类型 | ||
1481 | + */ | ||
1473 | invoicingTypeText?: string; | 1482 | invoicingTypeText?: string; |
1474 | logicDelete?: boolean; | 1483 | logicDelete?: boolean; |
1475 | /** | 1484 | /** |
@@ -1501,6 +1510,11 @@ export interface InvoiceDto { | @@ -1501,6 +1510,11 @@ export interface InvoiceDto { | ||
1501 | payeeText?: string; | 1510 | payeeText?: string; |
1502 | /** | 1511 | /** |
1503 | * @description | 1512 | * @description |
1513 | + * 收款单位 | ||
1514 | + */ | ||
1515 | + payeeText?: string; | ||
1516 | + /** | ||
1517 | + * @description | ||
1504 | * 购买方 | 1518 | * 购买方 |
1505 | */ | 1519 | */ |
1506 | purchaser?: string; | 1520 | purchaser?: string; |
@@ -3693,6 +3707,9 @@ export interface SubOrder { | @@ -3693,6 +3707,9 @@ export interface SubOrder { | ||
3693 | id?: number; | 3707 | id?: number; |
3694 | image?: string; | 3708 | image?: string; |
3695 | invoiceApplyUsername?: string; | 3709 | invoiceApplyUsername?: string; |
3710 | + invoiceConfirmStatus?: string; | ||
3711 | + /** @format date-time */ | ||
3712 | + invoiceConfirmStatusDatetime?: string; | ||
3696 | invoiceInformation?: string; | 3713 | invoiceInformation?: string; |
3697 | /** @format int64 */ | 3714 | /** @format int64 */ |
3698 | invoiceRecordId?: number; | 3715 | invoiceRecordId?: number; |