Commit 074821f1fea9388d7637d1de0ac7f2741139f06c
1 parent
796981fb
运费目标设置fix
Showing
3 changed files
with
61 additions
and
29 deletions
src/pages/pms/setting/FreightTarget/api.ts
src/pages/pms/setting/FreightTarget/index.tsx
... | ... | @@ -8,10 +8,10 @@ import { DeleteOutlined } from '@ant-design/icons'; |
8 | 8 | |
9 | 9 | const Index = () => { |
10 | 10 | const [disable, setDisable] = useState(false); |
11 | - const {data, setData, loading, setLoading} = useInitial<Item[], object>(getDetail, [], {}); | |
11 | + const { data, setData, loading, setLoading } = useInitial<Item[], object>(getDetail, [{ startDays: 1, endDays: '', amount: '' }, { startDays: '', endDays: '', amount: '' }], {}); | |
12 | 12 | |
13 | 13 | const handleAdd = () => { |
14 | - setData([...data, { startDays: '', endDays: '', amount: '' }]); | |
14 | + setData([...data, { startDays: null, endDays: null, amount: null }]); | |
15 | 15 | }; |
16 | 16 | |
17 | 17 | const handleInputChange = (index: number, p: any) => { |
... | ... | @@ -28,6 +28,7 @@ const Index = () => { |
28 | 28 | const handleDel = (event: any, index: number) => { |
29 | 29 | let arr = data; |
30 | 30 | arr.splice(index, 1); |
31 | + arr[arr.length -1].startDays = arr[arr.length-2].endDays+1; | |
31 | 32 | setData(arr); |
32 | 33 | }; |
33 | 34 | |
... | ... | @@ -43,28 +44,68 @@ const Index = () => { |
43 | 44 | <PageHeaderWrapper title="运费目标设置"> |
44 | 45 | <Card loading={loading}> |
45 | 46 | {!!data?.length && data.map((it, index) => ( |
46 | - <div key={index} style={{ display: 'flex', alignItems: 'center', marginBottom: 10 }}> | |
47 | - <span style={{ marginRight: 10 }}>{index + 1}、</span> | |
48 | - <> | |
49 | - 缺件起始天数 | |
50 | - <InputNumber disabled={!disable} min={0} value={it.startDays} onChange={value => handleInputChange(index, { startDays: value })} style={{ width: 100, marginLeft: 10, marginRight: 20 }} /> | |
51 | - </> | |
52 | - <> | |
53 | - 缺件结束天数 | |
54 | - <InputNumber disabled={!disable} min={0} value={it.endDays} onChange={value => handleInputChange(index, { endDays: value })} style={{ width: 100, marginLeft: 10, marginRight: 20 }} /> | |
55 | - </> | |
56 | - <> | |
57 | - 运费统计增加 | |
58 | - <InputNumber disabled={!disable} value={it.amount} min={0} onChange={value => handleInputChange(index, { amount: value })} style={{ width: 100, marginLeft: 10, marginRight: 20 }} /> | |
59 | - </> | |
60 | - {(index == data.length - 1 && disable) ? <Button onClick={(event: any) => handleDel(event, index)} shape="circle" icon={<DeleteOutlined />} /> : ''} | |
61 | - </div> | |
47 | + index < data.length-1 ? ( | |
48 | + <div key={index} style={{ display: 'flex', alignItems: 'center', marginBottom: 10 }}> | |
49 | + <span style={{ marginRight: 10 }}>{index + 1}、</span> | |
50 | + <> | |
51 | + 缺件起始天数 | |
52 | + <InputNumber | |
53 | + disabled | |
54 | + min={index > 0 ? data[index - 1].endDays : 1} | |
55 | + value={index > 0 ? data[index - 1].endDays+1 : 1} | |
56 | + style={{ width: 100, marginLeft: 10, marginRight: 20 }} | |
57 | + /> | |
58 | + </> | |
59 | + <> | |
60 | + 缺件结束天数 | |
61 | + <InputNumber | |
62 | + disabled={!disable} | |
63 | + min={0} | |
64 | + value={it.endDays} | |
65 | + onChange={value => handleInputChange(index, { startDays: index > 0 ? data[index - 1].endDays + 1 : it.startDays, endDays: value })} | |
66 | + style={{ width: 100, marginLeft: 10, marginRight: 20 }} | |
67 | + /> | |
68 | + </> | |
69 | + <> | |
70 | + 运费统计增加 | |
71 | + <InputNumber | |
72 | + disabled={!disable} | |
73 | + addonAfter="元" | |
74 | + value={it.amount} | |
75 | + min={0} | |
76 | + onChange={value => handleInputChange(index, { amount: value })} | |
77 | + style={{ width: 100, marginLeft: 10, marginRight: 20 }} | |
78 | + /> | |
79 | + </> | |
80 | + {(index == data.length - 2 && disable && index != 0) ? <Button onClick={(event: any) => handleDel(event, index)} shape="circle" icon={<DeleteOutlined />} /> : ''} | |
81 | + </div> | |
82 | + ) : | |
83 | + ( | |
84 | + <div style={{ display: 'flex', alignItems: 'center', marginBottom: 10 }}> | |
85 | + <span style={{ marginRight: 10 }}>{data.length}、</span> | |
86 | + <div style={{ marginRight: 20 }}> | |
87 | + <InputNumber disabled min={0} value={data[data.length - 2].endDays + 1} style={{ width: 100, marginRight: 10 }} /> | |
88 | + 天及以上 | |
89 | + </div> | |
90 | + <> | |
91 | + 运费统计增加 | |
92 | + <InputNumber | |
93 | + disabled={!disable} | |
94 | + addonAfter="元" | |
95 | + value={it.amount} | |
96 | + min={0} | |
97 | + onChange={value => handleInputChange(data.length - 1, { startDays: index > 0 ? data[index - 1].endDays + 1 : it.startDays, endDays: null, amount: value })} | |
98 | + style={{ width: 100, marginLeft: 10, marginRight: 20 }} | |
99 | + /> | |
100 | + </> | |
101 | + </div> | |
102 | + ) | |
62 | 103 | ))} |
63 | 104 | <Button type="default" disabled={!disable} onClick={() => handleAdd()}>添加梯度</Button> |
64 | 105 | <ConfirmBnt |
65 | 106 | disable={disable} |
66 | 107 | onOk={() => svae()} |
67 | - onCancel={() => { setDisable(false); setData(data); }} | |
108 | + onCancel={() => { setDisable(false); setLoading(true); }} | |
68 | 109 | onEdit={() => { |
69 | 110 | setDisable(true); |
70 | 111 | setData(data); | ... | ... |
src/pages/pms/setting/PerTarget/components/AddModal.tsx
... | ... | @@ -3,9 +3,7 @@ import {Modal, Form, InputNumber, message} from 'antd'; |
3 | 3 | import PmsSelsct from '@/pages/pms/comonents/PmsSelect'; |
4 | 4 | import { getStoragePage } from '@/pages/pms/storage/StorageManage/api'; |
5 | 5 | import usePagination from '@/hooks/usePagination'; |
6 | -import useInitial from '@/hooks/useInitail'; | |
7 | 6 | import { saveApi } from '../api'; |
8 | -import { getShopApi } from '@/common/api'; | |
9 | 7 | |
10 | 8 | const {Item} = Form; |
11 | 9 | |
... | ... | @@ -20,14 +18,12 @@ export default function Index(props: Props) { |
20 | 18 | const { item, onCancel, visible, refesh } = props; |
21 | 19 | const [form] = Form.useForm(); |
22 | 20 | const { list: storages } = usePagination<PartStorageSpace.PageVO>(getStoragePage, { pageSize: 1000 }); |
23 | - const { data: shops } = useInitial<CommonApi.OptionVO[], object>(getShopApi, [], {}); | |
24 | 21 | |
25 | 22 | const OK = () => { |
26 | 23 | form.validateFields().then(fileds => { |
27 | 24 | const params = { |
28 | 25 | id: item?.id, |
29 | 26 | storageId: fileds.storageId, |
30 | - shopId: fileds.shopId, | |
31 | 27 | days: fileds.days, |
32 | 28 | amount: fileds.amount |
33 | 29 | }; |
... | ... | @@ -67,12 +63,6 @@ export default function Index(props: Props) { |
67 | 63 | options={storages.map((item: PartStorageSpace.PageVO) => ({ value: item.id, label: item.storageName }))} |
68 | 64 | /> |
69 | 65 | </Item> |
70 | - <Item name="shopId" label="门店" required rules={[{ required: true, message: '请选择门店' }]}> | |
71 | - <PmsSelsct | |
72 | - style={{width: 300}} | |
73 | - options={shops.map((item: CommonApi.OptionVO) => ({ value: item.id, label: item.name }))} | |
74 | - /> | |
75 | - </Item> | |
76 | 66 | <Item name="days" label="订件时长目标" required rules={[{ required: true, message: '请输入' }]}> |
77 | 67 | <InputNumber style={{ width: 300 }} addonAfter="天" /> |
78 | 68 | </Item> | ... | ... |