Commit 7293ba7264e7cb16cb4fa79ce3e7bf550582e77a
1 parent
91ecba53
feat: update
Showing
4 changed files
with
152 additions
and
94 deletions
.umirc.ts
@@ -13,7 +13,7 @@ export default defineConfig({ | @@ -13,7 +13,7 @@ export default defineConfig({ | ||
13 | }, | 13 | }, |
14 | proxy: { | 14 | proxy: { |
15 | '/service/': { | 15 | '/service/': { |
16 | - target: 'http://localhost:8085/', | 16 | + target: 'http://39.108.227.113:8085/', |
17 | changeOrigin: true, | 17 | changeOrigin: true, |
18 | // pathRewrite: { '^/api': '' }, | 18 | // pathRewrite: { '^/api': '' }, |
19 | }, | 19 | }, |
src/pages/Order/components/OrderDrawer.tsx
@@ -9,7 +9,6 @@ import { | @@ -9,7 +9,6 @@ import { | ||
9 | ProCard, | 9 | ProCard, |
10 | ProFormDateTimePicker, | 10 | ProFormDateTimePicker, |
11 | ProFormDigit, | 11 | ProFormDigit, |
12 | - ProFormGroup, | ||
13 | ProFormList, | 12 | ProFormList, |
14 | ProFormSelect, | 13 | ProFormSelect, |
15 | ProFormText, | 14 | ProFormText, |
@@ -25,8 +24,37 @@ import { | @@ -25,8 +24,37 @@ import { | ||
25 | } from '../constant'; | 24 | } from '../constant'; |
26 | 25 | ||
27 | export default ({ onClose, data }) => { | 26 | export default ({ onClose, data }) => { |
28 | - console.log(''); | ||
29 | - const [form] = Form.useForm<{ name: string; company: string }>(); | 27 | + const [form] = Form.useForm<{ |
28 | + salesCode: ''; | ||
29 | + customerName: ''; | ||
30 | + customerContactNumber: ''; | ||
31 | + institution: ''; | ||
32 | + institutionContactName: ''; | ||
33 | + customerShippingAddress: ''; | ||
34 | + totalPayment: ''; | ||
35 | + paymentChannel: ''; | ||
36 | + paymentMethod: ''; | ||
37 | + productBelongBusiness: ''; | ||
38 | + invoicingStatus: ''; | ||
39 | + invoiceIdentificationNumber: ''; | ||
40 | + invoicingTime: ''; | ||
41 | + bank: ''; | ||
42 | + bankAccountNumber: ''; | ||
43 | + notes: ''; | ||
44 | + list: [ | ||
45 | + { | ||
46 | + productCode: ''; | ||
47 | + productName: ''; | ||
48 | + quantity: ''; | ||
49 | + productPrice: ''; | ||
50 | + parameters: ''; | ||
51 | + subOrderPayment: ''; | ||
52 | + unit: ''; | ||
53 | + serialNumber: ''; | ||
54 | + notes: ''; | ||
55 | + }, | ||
56 | + ]; | ||
57 | + }>(); | ||
30 | const actionRef = useRef< | 58 | const actionRef = useRef< |
31 | FormListActionType<{ | 59 | FormListActionType<{ |
32 | name: string; | 60 | name: string; |
@@ -39,8 +67,18 @@ export default ({ onClose, data }) => { | @@ -39,8 +67,18 @@ export default ({ onClose, data }) => { | ||
39 | form.setFieldsValue({ ...data }); | 67 | form.setFieldsValue({ ...data }); |
40 | }, [data]); | 68 | }, [data]); |
41 | 69 | ||
42 | - function autoFillProductInfo(action) { | ||
43 | - console.log(action); | 70 | + /** |
71 | + * | ||
72 | + * @param option 商品名称所对应的商品数据 | ||
73 | + * @param currentRowData list中当前行的数据 | ||
74 | + */ | ||
75 | + function autoFillProductInfo(option: any, currentRowData: any) { | ||
76 | + let copyList = form.getFieldValue('list'); | ||
77 | + let currentData = copyList[currentRowData.field.key]; | ||
78 | + currentData.productCode = option.productCode; | ||
79 | + currentData.parameters = option.specifications; | ||
80 | + currentData.unit = option.unit; | ||
81 | + form.setFieldValue('list', copyList); | ||
44 | } | 82 | } |
45 | 83 | ||
46 | return ( | 84 | return ( |
@@ -344,95 +382,97 @@ export default ({ onClose, data }) => { | @@ -344,95 +382,97 @@ export default ({ onClose, data }) => { | ||
344 | }); | 382 | }); |
345 | }, | 383 | }, |
346 | }} | 384 | }} |
347 | - itemRender={({ listDom, action }, {}) => { | 385 | + itemRender={(doms, listMeta) => { |
348 | // const list = actionRef.current?.getList(); | 386 | // const list = actionRef.current?.getList(); |
349 | return ( | 387 | return ( |
350 | <ProCard | 388 | <ProCard |
351 | bordered | 389 | bordered |
352 | - extra={action} | 390 | + extra={doms.action} |
353 | title={'商品' + rowNumber.current++} | 391 | title={'商品' + rowNumber.current++} |
354 | style={{ | 392 | style={{ |
355 | marginBlockEnd: 8, | 393 | marginBlockEnd: 8, |
356 | }} | 394 | }} |
357 | > | 395 | > |
358 | - {listDom} | 396 | + {[ |
397 | + <ProFormSelect | ||
398 | + key={listMeta.field.key} | ||
399 | + label="商品名称" | ||
400 | + width="lg" | ||
401 | + showSearch | ||
402 | + name="productName" | ||
403 | + placeholder="请搜索商品" | ||
404 | + onChange={(_, option) => { | ||
405 | + autoFillProductInfo(option, listMeta); | ||
406 | + }} | ||
407 | + request={async (value) => { | ||
408 | + const { data } = | ||
409 | + await postServiceOrderQueryProductInformation({ | ||
410 | + data: { productName: value.keyWords }, | ||
411 | + }); | ||
412 | + return data.map((p: any) => { | ||
413 | + return { ...p, label: p.productName, value: p.id }; | ||
414 | + }); | ||
415 | + }} | ||
416 | + />, | ||
417 | + doms.listDom, | ||
418 | + ]} | ||
359 | </ProCard> | 419 | </ProCard> |
360 | ); | 420 | ); |
361 | }} | 421 | }} |
362 | actionRef={actionRef} | 422 | actionRef={actionRef} |
363 | > | 423 | > |
364 | - <ProFormGroup key="group"> | ||
365 | - <ProFormSelect | ||
366 | - label="商品名称" | ||
367 | - width="lg" | ||
368 | - showSearch | ||
369 | - name="productName" | ||
370 | - placeholder="请搜索商品" | ||
371 | - onChange={() => { | ||
372 | - autoFillProductInfo(actionRef); | ||
373 | - }} | ||
374 | - request={async (value) => { | ||
375 | - const { data } = await postServiceOrderQueryProductInformation({ | ||
376 | - data: { productName: value.keyWords }, | ||
377 | - }); | ||
378 | - return data.map((p: any) => { | ||
379 | - return { ...p, label: p.productName, value: p.id }; | ||
380 | - }); | ||
381 | - }} | ||
382 | - /> | ||
383 | - <ProFormText | ||
384 | - width="lg" | ||
385 | - name="productCode" | ||
386 | - disabled | ||
387 | - label="商品编码" | ||
388 | - placeholder="未输入商品名称" | ||
389 | - /> | ||
390 | - <ProFormText | ||
391 | - width="lg" | ||
392 | - disabled | ||
393 | - name="parameters" | ||
394 | - label="商品参数" | ||
395 | - placeholder="请输入商品参数" | ||
396 | - /> | ||
397 | - <ProFormText | ||
398 | - width="lg" | ||
399 | - name="quantity" | ||
400 | - label="商品数量" | ||
401 | - placeholder="请输入商品数量" | ||
402 | - /> | ||
403 | - <ProFormDigit | ||
404 | - width="lg" | ||
405 | - name="productPrice" | ||
406 | - label="商品单价" | ||
407 | - placeholder="请输入商品单价" | ||
408 | - /> | ||
409 | - <ProFormText | ||
410 | - width="lg" | ||
411 | - name="unit" | ||
412 | - disabled | ||
413 | - label="价格单位" | ||
414 | - placeholder="请输入价格单位" | ||
415 | - /> | 424 | + <ProFormText |
425 | + width="lg" | ||
426 | + name="productCode" | ||
427 | + disabled | ||
428 | + label="商品编码" | ||
429 | + placeholder="未输入商品名称" | ||
430 | + /> | ||
431 | + <ProFormText | ||
432 | + width="lg" | ||
433 | + disabled | ||
434 | + name="parameters" | ||
435 | + label="商品参数" | ||
436 | + placeholder="请输入商品参数" | ||
437 | + /> | ||
438 | + <ProFormText | ||
439 | + width="lg" | ||
440 | + name="quantity" | ||
441 | + label="商品数量" | ||
442 | + placeholder="请输入商品数量" | ||
443 | + /> | ||
444 | + <ProFormDigit | ||
445 | + width="lg" | ||
446 | + name="productPrice" | ||
447 | + label="商品单价" | ||
448 | + placeholder="请输入商品单价" | ||
449 | + /> | ||
450 | + <ProFormText | ||
451 | + width="lg" | ||
452 | + name="unit" | ||
453 | + disabled | ||
454 | + label="价格单位" | ||
455 | + placeholder="请输入价格单位" | ||
456 | + /> | ||
416 | 457 | ||
417 | - <ProFormDigit | ||
418 | - width="lg" | ||
419 | - name="subOrderPayment" | ||
420 | - label="子订单金额" | ||
421 | - placeholder="请输入子订单金额" | ||
422 | - /> | ||
423 | - <ProFormText | ||
424 | - width="lg" | ||
425 | - name="serialNumber" | ||
426 | - label="物流单号" | ||
427 | - placeholder="请输入物流单号" | ||
428 | - /> | ||
429 | - <ProFormText | ||
430 | - width="lg" | ||
431 | - name="notes" | ||
432 | - label="备注" | ||
433 | - placeholder="请输入备注" | ||
434 | - /> | ||
435 | - </ProFormGroup> | 458 | + <ProFormDigit |
459 | + width="lg" | ||
460 | + name="subOrderPayment" | ||
461 | + label="子订单金额" | ||
462 | + placeholder="请输入子订单金额" | ||
463 | + /> | ||
464 | + <ProFormText | ||
465 | + width="lg" | ||
466 | + name="serialNumber" | ||
467 | + label="物流单号" | ||
468 | + placeholder="请输入物流单号" | ||
469 | + /> | ||
470 | + <ProFormText | ||
471 | + width="lg" | ||
472 | + name="notes" | ||
473 | + label="备注" | ||
474 | + placeholder="请输入备注" | ||
475 | + /> | ||
436 | </ProFormList> | 476 | </ProFormList> |
437 | 477 | ||
438 | {/* <ProFormDateRangePicker name="contractTime" label="合同生效时间" /> */} | 478 | {/* <ProFormDateRangePicker name="contractTime" label="合同生效时间" /> */} |
src/pages/Order/index.tsx
@@ -28,6 +28,7 @@ const OrderPage = () => { | @@ -28,6 +28,7 @@ const OrderPage = () => { | ||
28 | const [deliverVisible, setDeliverVisible] = useState<boolean>(false); | 28 | const [deliverVisible, setDeliverVisible] = useState<boolean>(false); |
29 | const [expandedRowKeys, setExpandedRowKeys] = useState<Key[]>([]); | 29 | const [expandedRowKeys, setExpandedRowKeys] = useState<Key[]>([]); |
30 | const [orderRow, setOrderRow] = useState<Partial<OrderType>>({}); | 30 | const [orderRow, setOrderRow] = useState<Partial<OrderType>>({}); |
31 | + const [mainOrderAllItemKeys, setMainOrderAllItemKeys] = useState([]); | ||
31 | 32 | ||
32 | const [selectedRows, setSelectedRows] = useState({}); | 33 | const [selectedRows, setSelectedRows] = useState({}); |
33 | const [selectedRowObj, setSelectedRowObj] = useState({}); | 34 | const [selectedRowObj, setSelectedRowObj] = useState({}); |
@@ -41,7 +42,14 @@ const OrderPage = () => { | @@ -41,7 +42,14 @@ const OrderPage = () => { | ||
41 | 42 | ||
42 | setSelectedItems(newSelectedItems); | 43 | setSelectedItems(newSelectedItems); |
43 | }; | 44 | }; |
45 | + const handleAllExpand = () => { | ||
46 | + if (expandedRowKeys.length === mainOrderAllItemKeys.length) { | ||
47 | + setExpandedRowKeys([]); | ||
48 | + return; | ||
49 | + } | ||
44 | 50 | ||
51 | + setExpandedRowKeys(mainOrderAllItemKeys); | ||
52 | + }; | ||
45 | // 主订单内容渲染 | 53 | // 主订单内容渲染 |
46 | const MainOrderColumnRender = ({ record }: { record: OrderListItemType }) => { | 54 | const MainOrderColumnRender = ({ record }: { record: OrderListItemType }) => { |
47 | const handleExpand = (key: number) => { | 55 | const handleExpand = (key: number) => { |
@@ -61,7 +69,7 @@ const OrderPage = () => { | @@ -61,7 +69,7 @@ const OrderPage = () => { | ||
61 | > | 69 | > |
62 | <Flex wrap="wrap" gap="middle"> | 70 | <Flex wrap="wrap" gap="middle"> |
63 | <div>{record.createTime}</div> | 71 | <div>{record.createTime}</div> |
64 | - <div>订单编号:{record.main_order_id}</div> | 72 | + <div>订单编号:{record.id}</div> |
65 | </Flex> | 73 | </Flex> |
66 | </Checkbox> | 74 | </Checkbox> |
67 | </Flex> | 75 | </Flex> |
@@ -330,6 +338,7 @@ const OrderPage = () => { | @@ -330,6 +338,7 @@ const OrderPage = () => { | ||
330 | rowKey="id" | 338 | rowKey="id" |
331 | pagination={{ | 339 | pagination={{ |
332 | showQuickJumper: true, | 340 | showQuickJumper: true, |
341 | + pageSize: 10, | ||
333 | }} | 342 | }} |
334 | expandedRowKeys={expandedRowKeys} | 343 | expandedRowKeys={expandedRowKeys} |
335 | expandable={{ expandedRowRender }} | 344 | expandable={{ expandedRowRender }} |
@@ -342,10 +351,7 @@ const OrderPage = () => { | @@ -342,10 +351,7 @@ const OrderPage = () => { | ||
342 | request={async ( | 351 | request={async ( |
343 | // 第一个参数 params 查询表单和 params 参数的结合 | 352 | // 第一个参数 params 查询表单和 params 参数的结合 |
344 | // 第一个参数中一定会有 pageSize 和 current ,这两个参数是 antd 的规范 | 353 | // 第一个参数中一定会有 pageSize 和 current ,这两个参数是 antd 的规范 |
345 | - params: { | ||
346 | - pageSize: 10; | ||
347 | - current: 1; | ||
348 | - }, | 354 | + params, |
349 | sorter, | 355 | sorter, |
350 | filter, | 356 | filter, |
351 | ) => { | 357 | ) => { |
@@ -357,13 +363,23 @@ const OrderPage = () => { | @@ -357,13 +363,23 @@ const OrderPage = () => { | ||
357 | filter, | 363 | filter, |
358 | data: params, | 364 | data: params, |
359 | }); | 365 | }); |
360 | - console.log(data); | 366 | + setMainOrderAllItemKeys(data?.data?.map((d) => d.id)); //存储所有主订单的key,一键展开用 |
361 | return { | 367 | return { |
362 | data: data?.data || [], | 368 | data: data?.data || [], |
369 | + total: data?.total || 0, | ||
363 | }; | 370 | }; |
364 | }} | 371 | }} |
365 | toolBarRender={() => [ | 372 | toolBarRender={() => [ |
366 | - <Button key="show">一键展开</Button>, | 373 | + <Button |
374 | + key="show" | ||
375 | + onClick={() => { | ||
376 | + handleAllExpand(); | ||
377 | + }} | ||
378 | + > | ||
379 | + {mainOrderAllItemKeys.length !== expandedRowKeys.length | ||
380 | + ? '一键展开' | ||
381 | + : '一键收起'} | ||
382 | + </Button>, | ||
367 | <Button key="out" onClick={() => setOrderDrawerVisible(true)}> | 383 | <Button key="out" onClick={() => setOrderDrawerVisible(true)}> |
368 | 新增 | 384 | 新增 |
369 | </Button>, | 385 | </Button>, |
src/pages/OrderPrint/index.tsx
@@ -19,7 +19,9 @@ function InvoiceDetails() { | @@ -19,7 +19,9 @@ function InvoiceDetails() { | ||
19 | <div className="grid grid-cols-2 gap-4 mb-6 text-sm"> | 19 | <div className="grid grid-cols-2 gap-4 mb-6 text-sm"> |
20 | <div> | 20 | <div> |
21 | <p>单位名称: 某某科技有限公司</p> | 21 | <p>单位名称: 某某科技有限公司</p> |
22 | + <p>联系人: 张三</p> | ||
22 | <p>联系电话: 18583817221</p> | 23 | <p>联系电话: 18583817221</p> |
24 | + <p>送货地址: 广东省东莞市</p> | ||
23 | </div> | 25 | </div> |
24 | <div className="text-right"> | 26 | <div className="text-right"> |
25 | <p>编号: Canrd-DZ-2023-1101-004</p> | 27 | <p>编号: Canrd-DZ-2023-1101-004</p> |
@@ -34,24 +36,24 @@ function ProductsTable() { | @@ -34,24 +36,24 @@ function ProductsTable() { | ||
34 | <div className="mb-6"> | 36 | <div className="mb-6"> |
35 | <table className="w-full text-sm border border-gray-300 table-fixed"> | 37 | <table className="w-full text-sm border border-gray-300 table-fixed"> |
36 | <thead> | 38 | <thead> |
37 | - <tr className="bg-gray-200"> | 39 | + <tr className=""> |
38 | <th className="w-1/4 p-2 border border-gray-300 border-solid"> | 40 | <th className="w-1/4 p-2 border border-gray-300 border-solid"> |
39 | - 名称 | 41 | + 序号 |
40 | </th> | 42 | </th> |
41 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> | 43 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> |
42 | - 规格 | 44 | + 订单号 |
43 | </th> | 45 | </th> |
44 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> | 46 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> |
45 | - 单位 | 47 | + 货品名称 |
46 | </th> | 48 | </th> |
47 | <th className="w-1/12 p-2 border border-gray-300 border-solid"> | 49 | <th className="w-1/12 p-2 border border-gray-300 border-solid"> |
48 | - 数量 | 50 | + 规格 |
49 | </th> | 51 | </th> |
50 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> | 52 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> |
51 | - 单价 | 53 | + 单位 |
52 | </th> | 54 | </th> |
53 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> | 55 | <th className="w-1/6 p-2 border border-gray-300 border-solid"> |
54 | - 金额 | 56 | + 数量 |
55 | </th> | 57 | </th> |
56 | <th className="w-1/4 p-2 border border-gray-300 border-solid"> | 58 | <th className="w-1/4 p-2 border border-gray-300 border-solid"> |
57 | 备注 | 59 | 备注 |