Commit 62bc5c393f5ba413a9fa56b6fb0fceccf40242cd
1 parent
695fadca
feat: update 申请售后功能修改
Showing
4 changed files
with
117 additions
and
24 deletions
src/pages/Order/components/ApplyForInvoicingModal.tsx
... | ... | @@ -19,14 +19,20 @@ export default ({ |
19 | 19 | isMainOrder, |
20 | 20 | onClose, |
21 | 21 | }) => { |
22 | - console.log(subOrders); | |
23 | 22 | let ids = []; |
24 | 23 | let newSubOrder = {}; |
24 | + let sumPrice = 0; | |
25 | + | |
26 | + for (let order of subOrders) { | |
27 | + sumPrice += parseFloat(order.totalPayment); | |
28 | + } | |
29 | + | |
25 | 30 | if (isMainOrder) { |
26 | 31 | ids = data; |
27 | 32 | } else { |
28 | 33 | newSubOrder = cloneDeep(subOrders[0]); |
29 | 34 | ids = subOrders?.map((item) => { |
35 | + sumPrice += parseFloat(item.totalPayment); | |
30 | 36 | return item.id; |
31 | 37 | }); |
32 | 38 | } |
... | ... | @@ -126,6 +132,15 @@ export default ({ |
126 | 132 | }} |
127 | 133 | onOpenChange={setCheckVisible} |
128 | 134 | > |
135 | + {isMainOrder ? ( | |
136 | + <div className="mb-[24px]"> | |
137 | + <span>总订单金额:</span> | |
138 | + <span className="text-red-500">{sumPrice}¥</span> | |
139 | + </div> | |
140 | + ) : ( | |
141 | + '' | |
142 | + )} | |
143 | + | |
129 | 144 | <div className="mb-1"> |
130 | 145 | 如果需要合并订单,请将需要合并的订单id写在备注中,id之间用英文逗号隔开。 |
131 | 146 | </div> | ... | ... |
src/pages/Order/components/CheckModal.tsx
... | ... | @@ -247,19 +247,23 @@ export default ({ |
247 | 247 | let formData = new FormData(); |
248 | 248 | //附件处理 |
249 | 249 | for (let file of fileList) { |
250 | - //有url的话取url(源文件),没url取thumbUrl。有url的时候thumbUrl是略缩图 | |
251 | - if (file?.url === undefined || file?.url === null) { | |
252 | - formData.append( | |
253 | - 'files', | |
254 | - transImageFile(file?.thumbUrl), | |
255 | - file?.originFileObj?.name, | |
256 | - ); | |
250 | + if (file.originFileObj) { | |
251 | + formData.append('files', file.originFileObj as RcFile); | |
257 | 252 | } else { |
258 | - formData.append( | |
259 | - 'files', | |
260 | - transImageFile(file?.url), | |
261 | - file?.originFileObj?.name, | |
262 | - ); | |
253 | + //有url的话取url(源文件),没url取thumbUrl。有url的时候thumbUrl是略缩图 | |
254 | + if (file?.url === undefined || file?.url === null) { | |
255 | + formData.append( | |
256 | + 'files', | |
257 | + transImageFile(file?.thumbUrl), | |
258 | + file?.originFileObj?.name, | |
259 | + ); | |
260 | + } else { | |
261 | + formData.append( | |
262 | + 'files', | |
263 | + transImageFile(file?.url), | |
264 | + file?.originFileObj?.name, | |
265 | + ); | |
266 | + } | |
263 | 267 | } |
264 | 268 | } |
265 | 269 | let res = await postServiceOrderFileProcess({ | ... | ... |
src/pages/Order/components/OrderDrawer.tsx
1 | 1 | import { RESPONSE_CODE } from '@/constants/enum'; |
2 | 2 | import { |
3 | 3 | postServiceOrderAddOrder, |
4 | + postServiceOrderApplyAfterSales, | |
4 | 5 | postServiceOrderQueryCustomerNameInformation, |
5 | 6 | postServiceOrderQueryProductInformation, |
6 | 7 | postServiceOrderQuerySalesCode, |
... | ... | @@ -27,6 +28,7 @@ import { Button, Form, message } from 'antd'; |
27 | 28 | import { cloneDeep } from 'lodash'; |
28 | 29 | import { useEffect, useRef, useState } from 'react'; |
29 | 30 | import { |
31 | + AFTE_SALES_PLAN_OPTIONS, | |
30 | 32 | INVOCING_STATUS_OPTIONS, |
31 | 33 | INVOCING_STATUS_OPTIONS_OLD, |
32 | 34 | PAYMENT_CHANNEL_OPTIONS, |
... | ... | @@ -37,6 +39,7 @@ import { |
37 | 39 | export default ({ onClose, data, subOrders, orderOptType }) => { |
38 | 40 | const [invoicingStatus, setInvoicingStatus] = useState(''); |
39 | 41 | const [salesCodeOptions, setSalesCodeOptions] = useState([]); |
42 | + const [drawerTitle, setDrawerTitle] = useState(''); | |
40 | 43 | const [form] = Form.useForm<{ |
41 | 44 | salesCode: ''; |
42 | 45 | customerName: ''; |
... | ... | @@ -54,6 +57,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
54 | 57 | bank: ''; |
55 | 58 | bankAccountNumber: ''; |
56 | 59 | deleteSubOrderLists: []; |
60 | + filePaths: []; | |
57 | 61 | notes: ''; |
58 | 62 | list: [ |
59 | 63 | { |
... | ... | @@ -107,7 +111,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
107 | 111 | includeFlag = true; |
108 | 112 | } |
109 | 113 | } |
110 | - console.log(includeFlag); | |
111 | 114 | if (!includeFlag) { |
112 | 115 | form.resetFields(['salesCode']); |
113 | 116 | message.warning('检测到销售代码为旧的,已清空,请重新选择'); |
... | ... | @@ -117,6 +120,20 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
117 | 120 | |
118 | 121 | useEffect(() => { |
119 | 122 | getSalesCodeOptions(); |
123 | + | |
124 | + //弹窗标题 | |
125 | + if (optType('add')) { | |
126 | + setDrawerTitle('新增订单'); | |
127 | + } | |
128 | + if (optType('copy')) { | |
129 | + setDrawerTitle('复制订单'); | |
130 | + } | |
131 | + if (optType('edit')) { | |
132 | + setDrawerTitle('修改订单'); | |
133 | + } | |
134 | + if (optType('after-sales')) { | |
135 | + setDrawerTitle('申请售后'); | |
136 | + } | |
120 | 137 | }, []); |
121 | 138 | |
122 | 139 | useEffect(() => { |
... | ... | @@ -127,7 +144,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
127 | 144 | }, [data]); |
128 | 145 | |
129 | 146 | // let mainInfoDisbled = optType('edit'); |
130 | - if (optType('edit') || optType('copy')) { | |
147 | + if (optType('edit') || optType('copy') || optType('after-sales')) { | |
131 | 148 | //如果是复制,需要开票,不回显是否需要开票字段 |
132 | 149 | if (optType('copy')) { |
133 | 150 | if (data.invoicingStatus === 'INVOICED') { |
... | ... | @@ -251,7 +268,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
251 | 268 | }> |
252 | 269 | open |
253 | 270 | width="35%" |
254 | - title={optType('add') || optType('copy') ? '新建订单' : '修改订单'} | |
271 | + title={drawerTitle} | |
255 | 272 | resize={{ |
256 | 273 | onResize() { |
257 | 274 | console.log('resize!'); |
... | ... | @@ -285,9 +302,12 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
285 | 302 | values.institution = values.institution?.trim(); |
286 | 303 | values.institutionContactName = values.institutionContactName?.trim(); |
287 | 304 | |
305 | + //新增 | |
288 | 306 | if (optType('add') || optType('copy')) { |
289 | 307 | res = await postServiceOrderAddOrder({ data: values }); |
290 | - } else { | |
308 | + } | |
309 | + //修改或者申请售后 | |
310 | + if (optType('edit') || optType('after-sales')) { | |
291 | 311 | //计算已删除的子订单id |
292 | 312 | const originIds = originSubOrders.map((item) => { |
293 | 313 | return item.id; |
... | ... | @@ -297,7 +317,21 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
297 | 317 | }); |
298 | 318 | let diff = originIds.filter((item) => !curIds.includes(item)); |
299 | 319 | values.deleteSubOrderLists = diff; |
300 | - res = await postServiceOrderUpdateOrder({ data: values }); | |
320 | + | |
321 | + if (optType('edit')) { | |
322 | + res = await postServiceOrderUpdateOrder({ data: values }); | |
323 | + } | |
324 | + | |
325 | + if (optType('after-sales')) { | |
326 | + values.filePaths = values.filePaths?.map((file) => { | |
327 | + return { url: file.response.data[0] }; | |
328 | + }); | |
329 | + let res = await postServiceOrderApplyAfterSales({ data: values }); | |
330 | + if (res?.result === RESPONSE_CODE.SUCCESS) { | |
331 | + message.success(res.message); | |
332 | + onClose(); | |
333 | + } | |
334 | + } | |
301 | 335 | } |
302 | 336 | |
303 | 337 | if (res.result === RESPONSE_CODE.SUCCESS) { |
... | ... | @@ -311,6 +345,39 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
311 | 345 | return !val && onClose(); |
312 | 346 | }} |
313 | 347 | > |
348 | + {optType('after-sales') ? ( | |
349 | + <> | |
350 | + <h2>售后信息</h2> | |
351 | + <ProFormSelect | |
352 | + key="key" | |
353 | + label="售后方案" | |
354 | + width="lg" | |
355 | + showSearch | |
356 | + name="afterSalesPlan" | |
357 | + options={enumToSelect(AFTE_SALES_PLAN_OPTIONS)} | |
358 | + placeholder="请搜索" | |
359 | + rules={[{ required: true, message: '售后方案必填' }]} | |
360 | + ></ProFormSelect> | |
361 | + <ProFormTextArea | |
362 | + width="lg" | |
363 | + label="售后原因" | |
364 | + name="afterSalesNotes" | |
365 | + rules={[{ required: true, message: '售后原因必填' }]} | |
366 | + /> | |
367 | + <ProFormUploadDragger | |
368 | + key="filePaths" | |
369 | + label="售后附件" | |
370 | + name="filePaths" | |
371 | + action="/api/service/order/fileProcess" | |
372 | + fieldProps={{ | |
373 | + headers: { Authorization: localStorage.getItem('token') }, | |
374 | + }} | |
375 | + /> | |
376 | + </> | |
377 | + ) : ( | |
378 | + '' | |
379 | + )} | |
380 | + | |
314 | 381 | <h2>订单基本信息</h2> |
315 | 382 | <ProFormText |
316 | 383 | key="id" |
... | ... | @@ -602,10 +669,11 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
602 | 669 | }, |
603 | 670 | ]} |
604 | 671 | actionGuard={{ |
605 | - beforeRemoveRow: async (index) => { | |
672 | + beforeRemoveRow: async () => { | |
606 | 673 | return new Promise((resolve) => { |
607 | - if (index === 0) { | |
608 | - message.error('第一行数据不能删除'); | |
674 | + let list = form.getFieldValue('list'); | |
675 | + if (list?.length === 1) { | |
676 | + message.error('删除失败,至少要有一个商品'); | |
609 | 677 | resolve(false); |
610 | 678 | return; |
611 | 679 | } | ... | ... |
src/pages/Order/index.tsx
... | ... | @@ -1049,7 +1049,7 @@ const OrderPage = () => { |
1049 | 1049 | '' |
1050 | 1050 | )} |
1051 | 1051 | |
1052 | - {optRecord.subPath?.includes('applyAfterSales') ? ( | |
1052 | + {/* {optRecord.subPath?.includes('applyAfterSales') ? ( | |
1053 | 1053 | <Button |
1054 | 1054 | className="p-0" |
1055 | 1055 | type="link" |
... | ... | @@ -1063,7 +1063,7 @@ const OrderPage = () => { |
1063 | 1063 | </Button> |
1064 | 1064 | ) : ( |
1065 | 1065 | '' |
1066 | - )} | |
1066 | + )} */} | |
1067 | 1067 | |
1068 | 1068 | {optRecord.subPath?.includes('afterSalesCompletion') ? ( |
1069 | 1069 | <ButtonConfirm |
... | ... | @@ -1924,8 +1924,9 @@ const OrderPage = () => { |
1924 | 1924 | return; |
1925 | 1925 | } |
1926 | 1926 | } |
1927 | - setAfterSalesDrawerVisible(true); | |
1927 | + setOrderDrawerVisible(true); | |
1928 | 1928 | setOrderRow(record); |
1929 | + setOrderOptType('after-sales'); | |
1929 | 1930 | }} |
1930 | 1931 | > |
1931 | 1932 | 申请售后 |
... | ... | @@ -2204,6 +2205,11 @@ const OrderPage = () => { |
2204 | 2205 | //选中订单 |
2205 | 2206 | setIsEdit(false); |
2206 | 2207 | setIsMainOrder(true); |
2208 | + let mainOrderList = []; | |
2209 | + for (let order of mainOrderSelectedMap.values()) { | |
2210 | + mainOrderList.push(order); | |
2211 | + } | |
2212 | + setSelectedRows(mainOrderList); | |
2207 | 2213 | }} |
2208 | 2214 | disabled={selectedItems?.length === 0} |
2209 | 2215 | > | ... | ... |