Commit 8ccad1f0509d396be9b562feecd89ee421e85691
1 parent
04a31534
feat: update
Showing
7 changed files
with
560 additions
and
47 deletions
src/pages/Order/components/DeliverModal.tsx
1 | 1 | import { RESPONSE_CODE } from '@/constants/enum'; |
2 | 2 | import { |
3 | + postServiceOrderProcureSend, | |
3 | 4 | postServiceOrderSendProduct, |
4 | 5 | postServiceOrderSupplierSendOrder, |
5 | 6 | } from '@/services'; |
... | ... | @@ -156,6 +157,8 @@ const DeliverModal = ({ |
156 | 157 | let res; |
157 | 158 | if (optType(CHECK_TYPE.SUPPLIER)) { |
158 | 159 | res = await postServiceOrderSupplierSendOrder({ data: body }); |
160 | + } else if (optType(CHECK_TYPE.PROCURE)) { | |
161 | + res = await postServiceOrderProcureSend({ data: body }); | |
159 | 162 | } else { |
160 | 163 | res = await postServiceOrderSendProduct({ data: body }); |
161 | 164 | } |
... | ... |
src/pages/Order/components/ProcureCheckModal.tsx
... | ... | @@ -49,10 +49,14 @@ export default ({ setCheckVisible, data, subOrders, onClose }) => { |
49 | 49 | }} |
50 | 50 | submitTimeout={2000} |
51 | 51 | onFinish={async (values) => { |
52 | + let procureIsPrintAndSend = false; | |
53 | + if (values.name === '采购自行发货') { | |
54 | + procureIsPrintAndSend = true; | |
55 | + } | |
52 | 56 | return doCheck({ |
53 | 57 | ids: subOrderIds, |
54 | 58 | supplier: values.name, |
55 | - procureIsPrintAndSend: false, | |
59 | + procureIsPrintAndSend: procureIsPrintAndSend, | |
56 | 60 | }); |
57 | 61 | }} |
58 | 62 | onOpenChange={setCheckVisible} |
... | ... |
src/pages/Order/constant.ts
... | ... | @@ -102,12 +102,22 @@ export const ORDER_STATUS_OPTIONS = { |
102 | 102 | AUDITED: '已审核', |
103 | 103 | PROCURE_UN_PROCESS: '采购未审核', |
104 | 104 | PROCURE_PROCESS: '采购已审核', |
105 | - SUPPLIER_WAIT_SHIP: '供应商-待发货', | |
106 | - SUPPLIER_SHIPPED: '供应商-已发货', | |
105 | + PROCURE_PROCESS_FOR_MINE: '采购待发货', | |
106 | + SUPPLIER_WAIT_SHIP: '供应商待发货', | |
107 | + SUPPLIER_SHIPPED: '供应商已发货', | |
107 | 108 | WAIT_SHIP: '待发货', |
108 | 109 | SHIPPED: '已发货', |
109 | 110 | CONFIRM_RECEIPT: '确认收货', |
110 | 111 | AUDIT_FAILED: '审核失败', |
112 | + IN_AFTER_SALES: '售后中', | |
113 | + AFTER_SALES_COMPLETION: '售后完成', | |
114 | +}; | |
115 | + | |
116 | +export const AFTE_SALES_PLAN_OPTIONS = { | |
117 | + RETURNS_OR_REFUNDS: '退货/退款', | |
118 | + EXCHANGE_GOODS: '换货', | |
119 | + FREE_ORDER: '免单', | |
120 | + DISCOUNT: '折扣', | |
111 | 121 | }; |
112 | 122 | |
113 | 123 | export const FINANCIAL_STATUS_OPTIONS = { |
... | ... | @@ -132,6 +142,9 @@ export const TAGS_COLOR = new Map<string, string>([ |
132 | 142 | ['PROCURE_PROCESS', 'processing'], |
133 | 143 | ['SUPPLIER_WAIT_SHIP', 'processing'], |
134 | 144 | ['SUPPLIER_SHIPPED', 'processing'], |
145 | + ['IN_AFTER_SALES', 'red'], | |
146 | + ['AFTER_SALES_COMPLETION', 'red'], | |
147 | + ['PROCURE_PROCESS_FOR_MINE', 'processing'], | |
135 | 148 | ]); |
136 | 149 | |
137 | 150 | export const SALES_CODE_OPTIONS = [ |
... | ... | @@ -196,6 +209,10 @@ export const HISTORY_OPT_TYPE = new Map<string, string>([ |
196 | 209 | ['PROCURE_CHECK_ORDER', '采购审核'], |
197 | 210 | ['SUPPLIER_PRINT', '供应商打印'], |
198 | 211 | ['EXTERNAL_PROCUREMENT', '仓库操作外部采购子订单'], |
212 | + ['APPLY_AFTER_SALES', '申请售后子订单'], | |
213 | + ['AFTER_SALES_COMPLETION', '完成售后子订单'], | |
214 | + ['PROCURE_PRINT', '采购打印子订单'], | |
215 | + ['PROCURE_SEND', '采购发货子订单'], | |
199 | 216 | ]); |
200 | 217 | |
201 | 218 | export const MAIN_ORDER_COLUMNS = [ |
... | ... |
src/pages/Order/index.tsx
1 | 1 | import ButtonConfirm from '@/components/ButtomConfirm'; |
2 | 2 | import { RESPONSE_CODE } from '@/constants/enum'; |
3 | 3 | import { |
4 | + postServiceOrderAfterSalesCompletion, | |
4 | 5 | postServiceOrderOrderCancel, |
5 | 6 | postServiceOrderQueryServiceOrder, |
6 | 7 | } from '@/services'; |
... | ... | @@ -37,6 +38,7 @@ import { |
37 | 38 | import { cloneDeep } from 'lodash'; |
38 | 39 | import { Key, useRef, useState } from 'react'; |
39 | 40 | import OrderPrintModal from '../OrderPrint/OrderPrintModal'; |
41 | +import AfterSalesDrawer from './components/AfterSalesDrawer'; | |
40 | 42 | import AttachmentModal from './components/AttachmentModal'; |
41 | 43 | import CheckModal from './components/CheckModal'; |
42 | 44 | import ConfirmReceiptModal from './components/ConfirmReceiptModal'; |
... | ... | @@ -76,6 +78,8 @@ const OrderPage = () => { |
76 | 78 | const [attachmentModalVisible, setAttachmentModalVisible] = |
77 | 79 | useState<boolean>(false); |
78 | 80 | const [financialVisible, setFinancialVisible] = useState<boolean>(false); |
81 | + const [afterSalesDrawerVisible, setAfterSalesDrawerVisible] = | |
82 | + useState<boolean>(false); | |
79 | 83 | const [historyModalVisible, setHistoryModalVisible] = |
80 | 84 | useState<boolean>(false); |
81 | 85 | const [isRePrintOrder, setIsRePrintOrder] = useState<boolean>(false); |
... | ... | @@ -227,15 +231,15 @@ const OrderPage = () => { |
227 | 231 | <Flex vertical className="w-[31%]" gap="small"> |
228 | 232 | {/* 商品名称 */} |
229 | 233 | <div |
230 | - className="whitespace-no-wrap overflow-hidden overflow-ellipsis" | |
234 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | |
231 | 235 | title={optRecord.productName} |
232 | 236 | > |
233 | - <span className="text-black font-medium "> | |
237 | + <span className="font-medium text-black "> | |
234 | 238 | {optRecord.productName} |
235 | 239 | </span> |
236 | 240 | </div> |
237 | 241 | <div |
238 | - className="whitespace-no-wrap overflow-hidden overflow-ellipsis" | |
242 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | |
239 | 243 | title={optRecord.parameters} |
240 | 244 | > |
241 | 245 | <span className="text-[#8C8C8C]">参数:{optRecord.parameters}</span> |
... | ... | @@ -259,21 +263,21 @@ const OrderPage = () => { |
259 | 263 | </Flex> |
260 | 264 | <Flex className="w-[16%]" vertical gap="small"> |
261 | 265 | <div |
262 | - className="whitespace-no-wrap overflow-hidden overflow-ellipsis" | |
266 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | |
263 | 267 | title={optRecord.productPrice} |
264 | 268 | > |
265 | 269 | <span className="text-[#8C8C8C]">单价:</span> |
266 | 270 | <span className="text-slate-700">¥{optRecord.productPrice}</span> |
267 | 271 | </div> |
268 | 272 | <div |
269 | - className="whitespace-no-wrap overflow-hidden overflow-ellipsis" | |
273 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | |
270 | 274 | title={optRecord.quantity} |
271 | 275 | > |
272 | 276 | <span className="text-[#8C8C8C]">数量:</span> |
273 | 277 | <span className="text-slate-700">x{optRecord.quantity}</span> |
274 | 278 | </div> |
275 | 279 | <div |
276 | - className="whitespace-no-wrap overflow-hidden overflow-ellipsis" | |
280 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | |
277 | 281 | title={optRecord.subOrderPayment} |
278 | 282 | > |
279 | 283 | <span className="text-[#8C8C8C]">合计:</span> |
... | ... | @@ -284,7 +288,7 @@ const OrderPage = () => { |
284 | 288 | </Flex> |
285 | 289 | <Flex className="w-[10%]" vertical gap="small"> |
286 | 290 | {/* 支付方式 */} |
287 | - <div className="whitespace-no-wrap overflow-hidden overflow-ellipsis"> | |
291 | + <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | |
288 | 292 | <span className="text-slate-700"> |
289 | 293 | {enumValueToLabel( |
290 | 294 | optRecord.paymentMethod, |
... | ... | @@ -293,7 +297,7 @@ const OrderPage = () => { |
293 | 297 | </span> |
294 | 298 | </div> |
295 | 299 | {/* 支付渠道 */} |
296 | - <div className="whitespace-no-wrap overflow-hidden overflow-ellipsis"> | |
300 | + <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | |
297 | 301 | <span className="text-slate-700"> |
298 | 302 | {enumValueToLabel( |
299 | 303 | optRecord.paymentChannel, |
... | ... | @@ -305,7 +309,7 @@ const OrderPage = () => { |
305 | 309 | <Flex className="w-[15%]" vertical gap="small"> |
306 | 310 | {/* 所属部门 */} |
307 | 311 | <div |
308 | - className="whitespace-no-wrap overflow-hidden overflow-ellipsis" | |
312 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | |
309 | 313 | title={enumValueToLabel( |
310 | 314 | optRecord.productBelongBusiness, |
311 | 315 | PRODUCT_BELONG_DEPARTMENT_OPTIONS, |
... | ... | @@ -320,7 +324,7 @@ const OrderPage = () => { |
320 | 324 | </div> |
321 | 325 | |
322 | 326 | {/* 开票类型 */} |
323 | - <div className="whitespace-no-wrap overflow-hidden overflow-ellipsis"> | |
327 | + <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | |
324 | 328 | <span className="text-slate-700"> |
325 | 329 | {getInvoicingType(optRecord)} |
326 | 330 | </span> |
... | ... | @@ -329,7 +333,7 @@ const OrderPage = () => { |
329 | 333 | |
330 | 334 | <Flex className="w-[10%]" vertical gap="small"> |
331 | 335 | {/* 开票状态 */} |
332 | - <div className="whitespace-no-wrap overflow-hidden overflow-ellipsis"> | |
336 | + <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | |
333 | 337 | <Tag |
334 | 338 | color={ |
335 | 339 | optRecord.invoicingTime === null || |
... | ... | @@ -342,21 +346,21 @@ const OrderPage = () => { |
342 | 346 | </Tag> |
343 | 347 | </div> |
344 | 348 | {/* 订单状态 */} |
345 | - <div className="whitespace-no-wrap overflow-hidden overflow-ellipsis"> | |
349 | + <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | |
346 | 350 | <Tag color={TAGS_COLOR.get(optRecord.orderStatus)}> |
347 | 351 | {enumValueToLabel(optRecord.orderStatus, ORDER_STATUS_OPTIONS)} |
348 | 352 | </Tag> |
349 | 353 | </div> |
350 | 354 | |
351 | 355 | {/* 物流信息 */} |
352 | - <div className="whitespace-no-wrap overflow-hidden overflow-ellipsis"> | |
356 | + <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | |
353 | 357 | {optRecord.orderStatus === 'CONFIRM_RECEIPT' || |
354 | 358 | optRecord.orderStatus === 'SHIPPED' ? ( |
355 | 359 | <Tooltip |
356 | 360 | color="#FFFFFF" |
357 | 361 | placement="bottom" |
358 | 362 | title={ |
359 | - <div className="text-black px-5 py-4"> | |
363 | + <div className="px-5 py-4 text-black"> | |
360 | 364 | {optRecord.serialNumber === undefined |
361 | 365 | ? '暂无物流信息' |
362 | 366 | : enumValueToLabel( |
... | ... | @@ -459,7 +463,7 @@ const OrderPage = () => { |
459 | 463 | setOrderCheckType(CHECK_TYPE.NORMAL); |
460 | 464 | }} |
461 | 465 | > |
462 | - 打印 | |
466 | + 仓库打印 | |
463 | 467 | </Button> |
464 | 468 | ) : ( |
465 | 469 | '' |
... | ... | @@ -476,7 +480,7 @@ const OrderPage = () => { |
476 | 480 | setOrderCheckType(CHECK_TYPE.SUPPLIER); |
477 | 481 | }} |
478 | 482 | > |
479 | - 打印 | |
483 | + 供应商打印 | |
480 | 484 | </Button> |
481 | 485 | ) : ( |
482 | 486 | '' |
... | ... | @@ -597,6 +601,43 @@ const OrderPage = () => { |
597 | 601 | ) : ( |
598 | 602 | '' |
599 | 603 | )} |
604 | + | |
605 | + {optRecord.subPath.includes('applyAfterSales') ? ( | |
606 | + <Button | |
607 | + className="p-0" | |
608 | + type="link" | |
609 | + onClick={() => { | |
610 | + setAfterSalesDrawerVisible(true); | |
611 | + setSelectedRows([optRecord]); | |
612 | + setOrderRow(record); | |
613 | + }} | |
614 | + > | |
615 | + 申请售后 | |
616 | + </Button> | |
617 | + ) : ( | |
618 | + '' | |
619 | + )} | |
620 | + | |
621 | + {optRecord.subPath.includes('afterSalesCompletion') ? ( | |
622 | + <ButtonConfirm | |
623 | + className="p-0" | |
624 | + title="是否完成售后?" | |
625 | + text="完成售后" | |
626 | + onConfirm={async () => { | |
627 | + let res = await postServiceOrderAfterSalesCompletion({ | |
628 | + data: { ids: [optRecord.id] }, | |
629 | + }); | |
630 | + if (res.result === RESPONSE_CODE.SUCCESS) { | |
631 | + message.success(res.message); | |
632 | + refreshTable(); | |
633 | + return true; | |
634 | + } | |
635 | + }} | |
636 | + /> | |
637 | + ) : ( | |
638 | + '' | |
639 | + )} | |
640 | + | |
600 | 641 | {optRecord.subPath.includes('viewImages') ? ( |
601 | 642 | <Button |
602 | 643 | className="p-0" |
... | ... | @@ -641,7 +682,7 @@ const OrderPage = () => { |
641 | 682 | return ( |
642 | 683 | <ProTable |
643 | 684 | id="sub-table" |
644 | - className=" w-full" | |
685 | + className="w-full " | |
645 | 686 | showHeader={false} |
646 | 687 | columns={[ |
647 | 688 | { |
... | ... | @@ -686,7 +727,7 @@ const OrderPage = () => { |
686 | 727 | <Flex vertical={true}> |
687 | 728 | {/* 编号、时间、销售信息 */} |
688 | 729 | <Flex |
689 | - className="px-4 py-4 bg-white bg-white rounded-t-lg" | |
730 | + className="px-4 py-4 bg-white rounded-t-lg" | |
690 | 731 | justify="space-between" |
691 | 732 | > |
692 | 733 | <Flex wrap="wrap" gap="middle" vertical> |
... | ... | @@ -742,7 +783,7 @@ const OrderPage = () => { |
742 | 783 | </Flex> |
743 | 784 | <Flex className="pl-6" align="center"> |
744 | 785 | <div title={record.notes}> |
745 | - <div className="max-w-md whitespace-no-wrap overflow-hidden overflow-ellipsis"> | |
786 | + <div className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis"> | |
746 | 787 | <span className="text-[#8C8C8C]">备注:</span> |
747 | 788 | <span className="ml-2"> |
748 | 789 | {record.notes === undefined ? '暂无备注' : record.notes} |
... | ... | @@ -848,6 +889,27 @@ const OrderPage = () => { |
848 | 889 | ) : ( |
849 | 890 | '' |
850 | 891 | )} |
892 | + | |
893 | + {record.mainPath.includes('procureSend') ? ( | |
894 | + <Button | |
895 | + className="p-0" | |
896 | + type="link" | |
897 | + onClick={() => { | |
898 | + if (!selectedRowObj[record.id]?.length) { | |
899 | + return message.error('请选择选择子订单'); | |
900 | + } | |
901 | + setSelectedRows(selectedRowObj[record.id]); | |
902 | + setDeliverVisible(true); | |
903 | + setIsSendProduct(true); | |
904 | + setOrderCheckType(CHECK_TYPE.PROCURE); | |
905 | + }} | |
906 | + > | |
907 | + 采购发货 | |
908 | + </Button> | |
909 | + ) : ( | |
910 | + '' | |
911 | + )} | |
912 | + | |
851 | 913 | {record.mainPath.includes('printOrder') ? ( |
852 | 914 | <Button |
853 | 915 | className="p-0" |
... | ... | @@ -862,7 +924,7 @@ const OrderPage = () => { |
862 | 924 | setOrderCheckType(CHECK_TYPE.NORMAL); |
863 | 925 | }} |
864 | 926 | > |
865 | - 打印 | |
927 | + 仓库打印 | |
866 | 928 | </Button> |
867 | 929 | ) : ( |
868 | 930 | '' |
... | ... | @@ -882,7 +944,7 @@ const OrderPage = () => { |
882 | 944 | setOrderCheckType(CHECK_TYPE.SUPPLIER); |
883 | 945 | }} |
884 | 946 | > |
885 | - 打印 | |
947 | + 供应商打印 | |
886 | 948 | </Button> |
887 | 949 | ) : ( |
888 | 950 | '' |
... | ... | @@ -1103,6 +1165,79 @@ const OrderPage = () => { |
1103 | 1165 | '' |
1104 | 1166 | )} |
1105 | 1167 | |
1168 | + {record.mainPath.includes('applyAfterSales') ? ( | |
1169 | + <Button | |
1170 | + className="p-0" | |
1171 | + type="link" | |
1172 | + onClick={() => { | |
1173 | + let selectedSubOrders = selectedRowObj[record.id]; | |
1174 | + if (selectedSubOrders === undefined) { | |
1175 | + selectedSubOrders = record.subOrderInformationLists; | |
1176 | + } | |
1177 | + setSelectedRows(selectedSubOrders); | |
1178 | + for (let i = 0; i < selectedSubOrders.length; i++) { | |
1179 | + if ( | |
1180 | + selectedSubOrders[i].orderStatus !== | |
1181 | + 'CONFIRM_RECEIPT' | |
1182 | + ) { | |
1183 | + message.error('请选择确认收货状态的子订单进行售后'); | |
1184 | + return; | |
1185 | + } | |
1186 | + } | |
1187 | + setAfterSalesDrawerVisible(true); | |
1188 | + setOrderRow(record); | |
1189 | + }} | |
1190 | + > | |
1191 | + 申请售后 | |
1192 | + </Button> | |
1193 | + ) : ( | |
1194 | + '' | |
1195 | + )} | |
1196 | + | |
1197 | + {record.mainPath.includes('afterSalesCompletion') ? ( | |
1198 | + <ButtonConfirm | |
1199 | + className="p-0" | |
1200 | + title="售后是否已完成?" | |
1201 | + text="完成售后" | |
1202 | + onConfirm={async () => { | |
1203 | + let selectedSubOrders = selectedRowObj[record.id]; | |
1204 | + if (selectedSubOrders === undefined) { | |
1205 | + selectedSubOrders = record.subOrderInformationLists; | |
1206 | + } | |
1207 | + for (let i = 0; i < selectedSubOrders.length; i++) { | |
1208 | + if ( | |
1209 | + selectedSubOrders[i].orderStatus !== | |
1210 | + 'IN_AFTER_SALES' | |
1211 | + ) { | |
1212 | + message.error( | |
1213 | + '请选择售后中状态的子订单进行完成售后', | |
1214 | + ); | |
1215 | + return false; | |
1216 | + } | |
1217 | + } | |
1218 | + | |
1219 | + const ids = selectedSubOrders?.map((item) => { | |
1220 | + return item.id; | |
1221 | + }); | |
1222 | + | |
1223 | + let body = { | |
1224 | + ids: ids, | |
1225 | + }; | |
1226 | + const data = await postServiceOrderAfterSalesCompletion( | |
1227 | + { | |
1228 | + data: body, | |
1229 | + }, | |
1230 | + ); | |
1231 | + if (data.result === RESPONSE_CODE.SUCCESS) { | |
1232 | + message.success(data.message); | |
1233 | + refreshTable(); | |
1234 | + } | |
1235 | + }} | |
1236 | + /> | |
1237 | + ) : ( | |
1238 | + '' | |
1239 | + )} | |
1240 | + | |
1106 | 1241 | {record.mainPath.includes('orderCancel') ? ( |
1107 | 1242 | <ButtonConfirm |
1108 | 1243 | className="p-0" |
... | ... | @@ -1125,6 +1260,26 @@ const OrderPage = () => { |
1125 | 1260 | ) : ( |
1126 | 1261 | '' |
1127 | 1262 | )} |
1263 | + | |
1264 | + {record.mainPath.includes('procurePrint') ? ( | |
1265 | + <Button | |
1266 | + className="p-0" | |
1267 | + type="link" | |
1268 | + onClick={() => { | |
1269 | + if (!selectedRowObj[record.id]?.length) { | |
1270 | + return message.error('请选择选择子订单'); | |
1271 | + } | |
1272 | + setSelectedRows(selectedRowObj[record.id]); | |
1273 | + setOrderRow(record); | |
1274 | + setOrderPrintVisible(true); | |
1275 | + setOrderCheckType(CHECK_TYPE.PROCURE); | |
1276 | + }} | |
1277 | + > | |
1278 | + 采购打印 | |
1279 | + </Button> | |
1280 | + ) : ( | |
1281 | + '' | |
1282 | + )} | |
1128 | 1283 | </Space> |
1129 | 1284 | </Space.Compact> |
1130 | 1285 | </Flex> |
... | ... | @@ -1549,6 +1704,20 @@ const OrderPage = () => { |
1549 | 1704 | /> |
1550 | 1705 | )} |
1551 | 1706 | |
1707 | + {afterSalesDrawerVisible && ( | |
1708 | + <AfterSalesDrawer | |
1709 | + setVisible={setAfterSalesDrawerVisible} | |
1710 | + mainOrder={orderRow} | |
1711 | + subOrders={selectedRows} | |
1712 | + onClose={() => { | |
1713 | + setAfterSalesDrawerVisible(false); | |
1714 | + setSelectedRows({}); | |
1715 | + setOrderRow({}); | |
1716 | + refreshTable(); | |
1717 | + }} | |
1718 | + /> | |
1719 | + )} | |
1720 | + | |
1552 | 1721 | {contextHolder} |
1553 | 1722 | </PageContainer> |
1554 | 1723 | ); |
... | ... |
src/pages/OrderPrint/OrderPrintModal.tsx
... | ... | @@ -2,6 +2,7 @@ import { RESPONSE_CODE } from '@/constants/enum'; |
2 | 2 | import '@/pages/OrderPrint/index.less'; |
3 | 3 | import { |
4 | 4 | postServiceOrderPrintOrder, |
5 | + postServiceOrderProcurePrint, | |
5 | 6 | postServiceOrderSupplierPrint, |
6 | 7 | } from '@/services'; |
7 | 8 | import { ExclamationCircleFilled } from '@ant-design/icons'; |
... | ... | @@ -66,6 +67,14 @@ export default ({ |
66 | 67 | }), |
67 | 68 | }, |
68 | 69 | }); |
70 | + } else if (optType(CHECK_TYPE.PROCURE)) { | |
71 | + res = await postServiceOrderProcurePrint({ | |
72 | + data: { | |
73 | + ids: subOrders.map((item) => { | |
74 | + return item.id; | |
75 | + }), | |
76 | + }, | |
77 | + }); | |
69 | 78 | } else { |
70 | 79 | res = await postServiceOrderPrintOrder({ data: body }); |
71 | 80 | } |
... | ... |
src/services/definition.ts
... | ... | @@ -699,11 +699,24 @@ export interface ProcureCheckOrderDto { |
699 | 699 | ids?: Array<number>; |
700 | 700 | /** |
701 | 701 | * @description |
702 | - * 采购人姓名 | |
702 | + * true表示采购走打印发货流程,false表示选择供应商进行发货 | |
703 | + */ | |
704 | + procureIsPrintAndSend?: boolean; | |
705 | + /** | |
706 | + * @description | |
707 | + * 供应商姓名 | |
703 | 708 | */ |
704 | 709 | supplier?: string; |
705 | 710 | } |
706 | 711 | |
712 | +export interface ProcurePrintDto { | |
713 | + /** | |
714 | + * @description | |
715 | + * 子订单id集合 | |
716 | + */ | |
717 | + ids?: Array<number>; | |
718 | +} | |
719 | + | |
707 | 720 | export interface ProductInformationDto { |
708 | 721 | /** |
709 | 722 | * @description |
... | ... |
src/services/request.ts
... | ... | @@ -26,7 +26,6 @@ import type { |
26 | 26 | DictionaryQueryVO, |
27 | 27 | DictionaryVO, |
28 | 28 | Dto, |
29 | - ModelAndView, | |
30 | 29 | OrderAddVO, |
31 | 30 | OrderAuditLogQueryVO, |
32 | 31 | OrderBaseInfoQueryVO, |
... | ... | @@ -36,6 +35,7 @@ import type { |
36 | 35 | OrderUnlockFieldApplyVO, |
37 | 36 | OrderUpdateVO, |
38 | 37 | ProcureCheckOrderDto, |
38 | + ProcurePrintDto, | |
39 | 39 | ProductInformationDto, |
40 | 40 | QueryAnnexDto, |
41 | 41 | QueryHistoryRecordDto, |
... | ... | @@ -223,7 +223,9 @@ export interface GetErrorResponse { |
223 | 223 | * @description |
224 | 224 | * OK |
225 | 225 | */ |
226 | - 200: ModelAndView; | |
226 | + 200: { | |
227 | + [propertyName: string]: any; | |
228 | + }; | |
227 | 229 | /** |
228 | 230 | * @description |
229 | 231 | * Unauthorized |
... | ... | @@ -244,9 +246,9 @@ export interface GetErrorResponse { |
244 | 246 | export type GetErrorResponseSuccess = GetErrorResponse[200]; |
245 | 247 | /** |
246 | 248 | * @description |
247 | - * errorHtml | |
249 | + * error | |
248 | 250 | * @tags basic-error-controller |
249 | - * @produces text/html | |
251 | + * @produces * | |
250 | 252 | */ |
251 | 253 | export const getError = /* #__PURE__ */ (() => { |
252 | 254 | const method = 'get'; |
... | ... | @@ -270,7 +272,9 @@ export interface PutErrorResponse { |
270 | 272 | * @description |
271 | 273 | * OK |
272 | 274 | */ |
273 | - 200: ModelAndView; | |
275 | + 200: { | |
276 | + [propertyName: string]: any; | |
277 | + }; | |
274 | 278 | /** |
275 | 279 | * @description |
276 | 280 | * Created |
... | ... | @@ -296,9 +300,9 @@ export interface PutErrorResponse { |
296 | 300 | export type PutErrorResponseSuccess = PutErrorResponse[200]; |
297 | 301 | /** |
298 | 302 | * @description |
299 | - * errorHtml | |
303 | + * error | |
300 | 304 | * @tags basic-error-controller |
301 | - * @produces text/html | |
305 | + * @produces * | |
302 | 306 | * @consumes application/json |
303 | 307 | */ |
304 | 308 | export const putError = /* #__PURE__ */ (() => { |
... | ... | @@ -323,7 +327,9 @@ export interface PostErrorResponse { |
323 | 327 | * @description |
324 | 328 | * OK |
325 | 329 | */ |
326 | - 200: ModelAndView; | |
330 | + 200: { | |
331 | + [propertyName: string]: any; | |
332 | + }; | |
327 | 333 | /** |
328 | 334 | * @description |
329 | 335 | * Created |
... | ... | @@ -349,9 +355,9 @@ export interface PostErrorResponse { |
349 | 355 | export type PostErrorResponseSuccess = PostErrorResponse[200]; |
350 | 356 | /** |
351 | 357 | * @description |
352 | - * errorHtml | |
358 | + * error | |
353 | 359 | * @tags basic-error-controller |
354 | - * @produces text/html | |
360 | + * @produces * | |
355 | 361 | * @consumes application/json |
356 | 362 | */ |
357 | 363 | export const postError = /* #__PURE__ */ (() => { |
... | ... | @@ -376,7 +382,9 @@ export interface DeleteErrorResponse { |
376 | 382 | * @description |
377 | 383 | * OK |
378 | 384 | */ |
379 | - 200: ModelAndView; | |
385 | + 200: { | |
386 | + [propertyName: string]: any; | |
387 | + }; | |
380 | 388 | /** |
381 | 389 | * @description |
382 | 390 | * No Content |
... | ... | @@ -397,9 +405,9 @@ export interface DeleteErrorResponse { |
397 | 405 | export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; |
398 | 406 | /** |
399 | 407 | * @description |
400 | - * errorHtml | |
408 | + * error | |
401 | 409 | * @tags basic-error-controller |
402 | - * @produces text/html | |
410 | + * @produces * | |
403 | 411 | */ |
404 | 412 | export const deleteError = /* #__PURE__ */ (() => { |
405 | 413 | const method = 'delete'; |
... | ... | @@ -423,7 +431,9 @@ export interface OptionsErrorResponse { |
423 | 431 | * @description |
424 | 432 | * OK |
425 | 433 | */ |
426 | - 200: ModelAndView; | |
434 | + 200: { | |
435 | + [propertyName: string]: any; | |
436 | + }; | |
427 | 437 | /** |
428 | 438 | * @description |
429 | 439 | * No Content |
... | ... | @@ -444,9 +454,9 @@ export interface OptionsErrorResponse { |
444 | 454 | export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; |
445 | 455 | /** |
446 | 456 | * @description |
447 | - * errorHtml | |
457 | + * error | |
448 | 458 | * @tags basic-error-controller |
449 | - * @produces text/html | |
459 | + * @produces * | |
450 | 460 | * @consumes application/json |
451 | 461 | */ |
452 | 462 | export const optionsError = /* #__PURE__ */ (() => { |
... | ... | @@ -471,7 +481,9 @@ export interface HeadErrorResponse { |
471 | 481 | * @description |
472 | 482 | * OK |
473 | 483 | */ |
474 | - 200: ModelAndView; | |
484 | + 200: { | |
485 | + [propertyName: string]: any; | |
486 | + }; | |
475 | 487 | /** |
476 | 488 | * @description |
477 | 489 | * No Content |
... | ... | @@ -492,9 +504,9 @@ export interface HeadErrorResponse { |
492 | 504 | export type HeadErrorResponseSuccess = HeadErrorResponse[200]; |
493 | 505 | /** |
494 | 506 | * @description |
495 | - * errorHtml | |
507 | + * error | |
496 | 508 | * @tags basic-error-controller |
497 | - * @produces text/html | |
509 | + * @produces * | |
498 | 510 | * @consumes application/json |
499 | 511 | */ |
500 | 512 | export const headError = /* #__PURE__ */ (() => { |
... | ... | @@ -519,7 +531,9 @@ export interface PatchErrorResponse { |
519 | 531 | * @description |
520 | 532 | * OK |
521 | 533 | */ |
522 | - 200: ModelAndView; | |
534 | + 200: { | |
535 | + [propertyName: string]: any; | |
536 | + }; | |
523 | 537 | /** |
524 | 538 | * @description |
525 | 539 | * No Content |
... | ... | @@ -540,9 +554,9 @@ export interface PatchErrorResponse { |
540 | 554 | export type PatchErrorResponseSuccess = PatchErrorResponse[200]; |
541 | 555 | /** |
542 | 556 | * @description |
543 | - * errorHtml | |
557 | + * error | |
544 | 558 | * @tags basic-error-controller |
545 | - * @produces text/html | |
559 | + * @produces * | |
546 | 560 | * @consumes application/json |
547 | 561 | */ |
548 | 562 | export const patchError = /* #__PURE__ */ (() => { |
... | ... | @@ -4771,6 +4785,148 @@ export const postServiceOrderAddOrder = /* #__PURE__ */ (() => { |
4771 | 4785 | return request; |
4772 | 4786 | })(); |
4773 | 4787 | |
4788 | +/** @description request parameter type for postServiceOrderAfterSalesCompletion */ | |
4789 | +export interface PostServiceOrderAfterSalesCompletionOption { | |
4790 | + /** | |
4791 | + * @description | |
4792 | + * dto | |
4793 | + */ | |
4794 | + body: { | |
4795 | + /** | |
4796 | + @description | |
4797 | + dto */ | |
4798 | + dto: Dto; | |
4799 | + }; | |
4800 | +} | |
4801 | + | |
4802 | +/** @description response type for postServiceOrderAfterSalesCompletion */ | |
4803 | +export interface PostServiceOrderAfterSalesCompletionResponse { | |
4804 | + /** | |
4805 | + * @description | |
4806 | + * OK | |
4807 | + */ | |
4808 | + 200: ServerResult; | |
4809 | + /** | |
4810 | + * @description | |
4811 | + * Created | |
4812 | + */ | |
4813 | + 201: any; | |
4814 | + /** | |
4815 | + * @description | |
4816 | + * Unauthorized | |
4817 | + */ | |
4818 | + 401: any; | |
4819 | + /** | |
4820 | + * @description | |
4821 | + * Forbidden | |
4822 | + */ | |
4823 | + 403: any; | |
4824 | + /** | |
4825 | + * @description | |
4826 | + * Not Found | |
4827 | + */ | |
4828 | + 404: any; | |
4829 | +} | |
4830 | + | |
4831 | +export type PostServiceOrderAfterSalesCompletionResponseSuccess = | |
4832 | + PostServiceOrderAfterSalesCompletionResponse[200]; | |
4833 | +/** | |
4834 | + * @description | |
4835 | + * 售后完成 | |
4836 | + * @tags 内部订单 | |
4837 | + * @produces * | |
4838 | + * @consumes application/json | |
4839 | + */ | |
4840 | +export const postServiceOrderAfterSalesCompletion = /* #__PURE__ */ (() => { | |
4841 | + const method = 'post'; | |
4842 | + const url = '/service/order/afterSalesCompletion'; | |
4843 | + function request( | |
4844 | + option: PostServiceOrderAfterSalesCompletionOption, | |
4845 | + ): Promise<PostServiceOrderAfterSalesCompletionResponseSuccess> { | |
4846 | + return requester(request.url, { | |
4847 | + method: request.method, | |
4848 | + ...option, | |
4849 | + }) as unknown as Promise<PostServiceOrderAfterSalesCompletionResponseSuccess>; | |
4850 | + } | |
4851 | + | |
4852 | + /** http method */ | |
4853 | + request.method = method; | |
4854 | + /** request url */ | |
4855 | + request.url = url; | |
4856 | + return request; | |
4857 | +})(); | |
4858 | + | |
4859 | +/** @description request parameter type for postServiceOrderApplyAfterSales */ | |
4860 | +export interface PostServiceOrderApplyAfterSalesOption { | |
4861 | + /** | |
4862 | + * @description | |
4863 | + * dto | |
4864 | + */ | |
4865 | + body: { | |
4866 | + /** | |
4867 | + @description | |
4868 | + dto */ | |
4869 | + dto: Dto; | |
4870 | + }; | |
4871 | +} | |
4872 | + | |
4873 | +/** @description response type for postServiceOrderApplyAfterSales */ | |
4874 | +export interface PostServiceOrderApplyAfterSalesResponse { | |
4875 | + /** | |
4876 | + * @description | |
4877 | + * OK | |
4878 | + */ | |
4879 | + 200: ServerResult; | |
4880 | + /** | |
4881 | + * @description | |
4882 | + * Created | |
4883 | + */ | |
4884 | + 201: any; | |
4885 | + /** | |
4886 | + * @description | |
4887 | + * Unauthorized | |
4888 | + */ | |
4889 | + 401: any; | |
4890 | + /** | |
4891 | + * @description | |
4892 | + * Forbidden | |
4893 | + */ | |
4894 | + 403: any; | |
4895 | + /** | |
4896 | + * @description | |
4897 | + * Not Found | |
4898 | + */ | |
4899 | + 404: any; | |
4900 | +} | |
4901 | + | |
4902 | +export type PostServiceOrderApplyAfterSalesResponseSuccess = | |
4903 | + PostServiceOrderApplyAfterSalesResponse[200]; | |
4904 | +/** | |
4905 | + * @description | |
4906 | + * 申请售后 | |
4907 | + * @tags 内部订单 | |
4908 | + * @produces * | |
4909 | + * @consumes application/json | |
4910 | + */ | |
4911 | +export const postServiceOrderApplyAfterSales = /* #__PURE__ */ (() => { | |
4912 | + const method = 'post'; | |
4913 | + const url = '/service/order/applyAfterSales'; | |
4914 | + function request( | |
4915 | + option: PostServiceOrderApplyAfterSalesOption, | |
4916 | + ): Promise<PostServiceOrderApplyAfterSalesResponseSuccess> { | |
4917 | + return requester(request.url, { | |
4918 | + method: request.method, | |
4919 | + ...option, | |
4920 | + }) as unknown as Promise<PostServiceOrderApplyAfterSalesResponseSuccess>; | |
4921 | + } | |
4922 | + | |
4923 | + /** http method */ | |
4924 | + request.method = method; | |
4925 | + /** request url */ | |
4926 | + request.url = url; | |
4927 | + return request; | |
4928 | +})(); | |
4929 | + | |
4774 | 4930 | /** @description request parameter type for postServiceOrderCheckOrder */ |
4775 | 4931 | export interface PostServiceOrderCheckOrderOption { |
4776 | 4932 | /** |
... | ... | @@ -5764,6 +5920,148 @@ export const postServiceOrderProcureCheckOrder = /* #__PURE__ */ (() => { |
5764 | 5920 | return request; |
5765 | 5921 | })(); |
5766 | 5922 | |
5923 | +/** @description request parameter type for postServiceOrderProcurePrint */ | |
5924 | +export interface PostServiceOrderProcurePrintOption { | |
5925 | + /** | |
5926 | + * @description | |
5927 | + * dto | |
5928 | + */ | |
5929 | + body: { | |
5930 | + /** | |
5931 | + @description | |
5932 | + dto */ | |
5933 | + dto: ProcurePrintDto; | |
5934 | + }; | |
5935 | +} | |
5936 | + | |
5937 | +/** @description response type for postServiceOrderProcurePrint */ | |
5938 | +export interface PostServiceOrderProcurePrintResponse { | |
5939 | + /** | |
5940 | + * @description | |
5941 | + * OK | |
5942 | + */ | |
5943 | + 200: ServerResult; | |
5944 | + /** | |
5945 | + * @description | |
5946 | + * Created | |
5947 | + */ | |
5948 | + 201: any; | |
5949 | + /** | |
5950 | + * @description | |
5951 | + * Unauthorized | |
5952 | + */ | |
5953 | + 401: any; | |
5954 | + /** | |
5955 | + * @description | |
5956 | + * Forbidden | |
5957 | + */ | |
5958 | + 403: any; | |
5959 | + /** | |
5960 | + * @description | |
5961 | + * Not Found | |
5962 | + */ | |
5963 | + 404: any; | |
5964 | +} | |
5965 | + | |
5966 | +export type PostServiceOrderProcurePrintResponseSuccess = | |
5967 | + PostServiceOrderProcurePrintResponse[200]; | |
5968 | +/** | |
5969 | + * @description | |
5970 | + * 采购打印订单 | |
5971 | + * @tags 内部订单 | |
5972 | + * @produces * | |
5973 | + * @consumes application/json | |
5974 | + */ | |
5975 | +export const postServiceOrderProcurePrint = /* #__PURE__ */ (() => { | |
5976 | + const method = 'post'; | |
5977 | + const url = '/service/order/procurePrint'; | |
5978 | + function request( | |
5979 | + option: PostServiceOrderProcurePrintOption, | |
5980 | + ): Promise<PostServiceOrderProcurePrintResponseSuccess> { | |
5981 | + return requester(request.url, { | |
5982 | + method: request.method, | |
5983 | + ...option, | |
5984 | + }) as unknown as Promise<PostServiceOrderProcurePrintResponseSuccess>; | |
5985 | + } | |
5986 | + | |
5987 | + /** http method */ | |
5988 | + request.method = method; | |
5989 | + /** request url */ | |
5990 | + request.url = url; | |
5991 | + return request; | |
5992 | +})(); | |
5993 | + | |
5994 | +/** @description request parameter type for postServiceOrderProcureSend */ | |
5995 | +export interface PostServiceOrderProcureSendOption { | |
5996 | + /** | |
5997 | + * @description | |
5998 | + * dto | |
5999 | + */ | |
6000 | + body: { | |
6001 | + /** | |
6002 | + @description | |
6003 | + dto */ | |
6004 | + dto: Dto; | |
6005 | + }; | |
6006 | +} | |
6007 | + | |
6008 | +/** @description response type for postServiceOrderProcureSend */ | |
6009 | +export interface PostServiceOrderProcureSendResponse { | |
6010 | + /** | |
6011 | + * @description | |
6012 | + * OK | |
6013 | + */ | |
6014 | + 200: ServerResult; | |
6015 | + /** | |
6016 | + * @description | |
6017 | + * Created | |
6018 | + */ | |
6019 | + 201: any; | |
6020 | + /** | |
6021 | + * @description | |
6022 | + * Unauthorized | |
6023 | + */ | |
6024 | + 401: any; | |
6025 | + /** | |
6026 | + * @description | |
6027 | + * Forbidden | |
6028 | + */ | |
6029 | + 403: any; | |
6030 | + /** | |
6031 | + * @description | |
6032 | + * Not Found | |
6033 | + */ | |
6034 | + 404: any; | |
6035 | +} | |
6036 | + | |
6037 | +export type PostServiceOrderProcureSendResponseSuccess = | |
6038 | + PostServiceOrderProcureSendResponse[200]; | |
6039 | +/** | |
6040 | + * @description | |
6041 | + * 采购发送订单 | |
6042 | + * @tags 内部订单 | |
6043 | + * @produces * | |
6044 | + * @consumes application/json | |
6045 | + */ | |
6046 | +export const postServiceOrderProcureSend = /* #__PURE__ */ (() => { | |
6047 | + const method = 'post'; | |
6048 | + const url = '/service/order/procureSend'; | |
6049 | + function request( | |
6050 | + option: PostServiceOrderProcureSendOption, | |
6051 | + ): Promise<PostServiceOrderProcureSendResponseSuccess> { | |
6052 | + return requester(request.url, { | |
6053 | + method: request.method, | |
6054 | + ...option, | |
6055 | + }) as unknown as Promise<PostServiceOrderProcureSendResponseSuccess>; | |
6056 | + } | |
6057 | + | |
6058 | + /** http method */ | |
6059 | + request.method = method; | |
6060 | + /** request url */ | |
6061 | + request.url = url; | |
6062 | + return request; | |
6063 | +})(); | |
6064 | + | |
5767 | 6065 | /** @description response type for getServiceOrderProvideInvoicingStatus */ |
5768 | 6066 | export interface GetServiceOrderProvideInvoicingStatusResponse { |
5769 | 6067 | /** |
... | ... |