Commit 62bc5c393f5ba413a9fa56b6fb0fceccf40242cd

Authored by zhongnanhuang
1 parent 695fadca

feat: update 申请售后功能修改

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 &#39;antd&#39;;
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 }) =&gt; {
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 }) =&gt; {
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 }) =&gt; {
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 }) =&gt; {
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 }) =&gt; {
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 }) =&gt; {
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 }) =&gt; {
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 }) =&gt; {
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 }) =&gt; {
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 = () =&gt; {
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 = () =&gt; {
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 = () =&gt; {
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 = () =&gt; {
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 >
... ...