a66655b2
舒述军
附加值任务配置
|
1
|
import React, { useState, useEffect } from 'react';
|
4cbecaac
舒述军
添加商业险和装潢产值目标
|
2
|
import { Modal, Button, message, Form, InputNumber, DatePicker, Radio, Row, Col } from 'antd';
|
a66655b2
舒述军
附加值任务配置
|
3
|
import {useStore} from '../index';
|
cf7c5d59
舒述军
编辑时禁止修改生效时间
|
4
|
import {ListResult, saveConfigApi} from '../api';
|
3b96183d
舒述军
校验规则调整
|
5
|
import { debounce, isNil } from 'lodash';
|
a66655b2
舒述军
附加值任务配置
|
6
7
|
import ShopSelectNew from '@/components/ShopSelectNew';
import moment from 'moment';
|
3b96183d
舒述军
校验规则调整
|
8
|
import '../index.less';
|
a66655b2
舒述军
附加值任务配置
|
9
10
11
12
13
14
|
const { RangePicker } = DatePicker;
export default function DetailModal() {
const {currentData, setCurrentData, setLoading} = useStore();
const [confirm, setConfirm] = useState<boolean>(false);
|
efa991fe
舒述军
附加值任务枚举调整
|
15
|
const [type, setType] = useState<number>(2);
|
a66655b2
舒述军
附加值任务配置
|
16
|
const [form] = Form.useForm();
|
a66655b2
舒述军
附加值任务配置
|
17
18
19
|
useEffect(() => {
if (currentData.visible && currentData.data.id) {
|
48787c5f
舒述军
添加禁用门店
|
20
|
handleSetValue();
|
80f54b9f
舒述军
附加值任务配置
|
21
|
} else {
|
efa991fe
舒述军
附加值任务枚举调整
|
22
|
form.setFieldsValue({addedValueType: 2});
|
a66655b2
舒述军
附加值任务配置
|
23
24
25
|
}
}, [currentData.visible]);
|
80f54b9f
舒述军
附加值任务配置
|
26
27
|
const handleChangeType = (value: number) => {
setType(value);
|
efa991fe
舒述军
附加值任务枚举调整
|
28
|
if (value === 1) {
|
80f54b9f
舒述军
附加值任务配置
|
29
30
31
32
33
34
|
form.setFieldsValue({
tciOutputValueRatio: 100,
vciOutputValueRatio: 100,
jcxOutputValueRatio: 100,
decoOutputValueRatio: 100,
});
|
efa991fe
舒述军
附加值任务枚举调整
|
35
|
} else if (value === 2) {
|
80f54b9f
舒述军
附加值任务配置
|
36
37
38
39
40
41
42
43
44
|
form.setFieldsValue({
tciOutputValueRatio: 0,
vciOutputValueRatio: 0,
jcxOutputValueRatio: 0,
decoOutputValueRatio: 0,
});
}
};
|
a66655b2
舒述军
附加值任务配置
|
45
46
47
|
const handleCancel = () => {
form.resetFields();
setCurrentData({visible: false, data: {}, title: ""});
|
efa991fe
舒述军
附加值任务枚举调整
|
48
|
setType(2);
|
a66655b2
舒述军
附加值任务配置
|
49
50
|
};
|
48787c5f
舒述军
添加禁用门店
|
51
52
53
54
55
56
57
58
|
const handleSetValue = () => {
form.setFieldsValue({
addedValueTask: currentData.data?.addedValueTask,
tciOutputValueRatio: currentData.data?.tciOutputValueRatio,
vciOutputValueRatio: currentData.data?.vciOutputValueRatio,
jcxOutputValueRatio: currentData.data?.jcxOutputValueRatio,
decoOutputValueRatio: currentData.data?.decoOutputValueRatio,
shopList: currentData.data?.shopList?.map((v: any) => ({value: v.shopId, label: v.shopName})) || [],
|
80f54b9f
舒述军
附加值任务配置
|
59
|
rangeDate: [moment(currentData.data.beginTime), moment(currentData.data.endTime)],
|
4cbecaac
舒述军
添加商业险和装潢产值目标
|
60
61
62
|
addedValueType: currentData?.data?.addedValueType,
vciOutputValueTask: currentData?.data?.vciOutputValueTask,
decoOutputValueTask: currentData?.data?.decoOutputValueTask
|
48787c5f
舒述军
添加禁用门店
|
63
|
});
|
efa991fe
舒述军
附加值任务枚举调整
|
64
|
setType(currentData.data?.addedValueType || 2);
|
48787c5f
舒述军
添加禁用门店
|
65
66
|
};
|
a66655b2
舒述军
附加值任务配置
|
67
68
|
const onFinish = async () => {
const params = await form.validateFields();
|
a66655b2
舒述军
附加值任务配置
|
69
70
71
72
73
74
75
76
77
78
|
setConfirm(true);
const _params: ListResult = {
id: currentData.data?.id,
addedValueTask: params.addedValueTask,
tciOutputValueRatio: params.tciOutputValueRatio,
vciOutputValueRatio: params.vciOutputValueRatio,
jcxOutputValueRatio: params.jcxOutputValueRatio,
decoOutputValueRatio: params.decoOutputValueRatio,
shopList: params.shopList.map((v: any) => ({shopId: v.value, shopName: v.label})),
beginTime: moment(params.rangeDate[0]).valueOf(),
|
80f54b9f
舒述军
附加值任务配置
|
79
|
endTime: moment(params.rangeDate[1]).valueOf(),
|
4cbecaac
舒述军
添加商业险和装潢产值目标
|
80
81
82
|
addedValueType: params.addedValueType,
vciOutputValueTask: params.vciOutputValueTask,
decoOutputValueTask: params.decoOutputValueTask
|
a66655b2
舒述军
附加值任务配置
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
};
saveConfigApi(_params)
.then(res => {
message.success(res.result);
setConfirm(false);
setLoading(true);
handleCancel();
})
.catch(e => {
setConfirm(false);
message.error(e.message);
});
};
return (
<Modal
destroyOnClose
forceRender
title={currentData.title}
open={currentData.visible}
maskClosable={false}
onCancel={handleCancel}
|
64ae3e45
舒述军
样式调整
|
105
|
width="50%"
|
a66655b2
舒述军
附加值任务配置
|
106
107
108
109
110
111
112
|
footer={[
<Button key="cancel" onClick={handleCancel} style={{marginLeft: 10}}>取消</Button>,
<Button key="submit" onClick={debounce(onFinish, 380)} type="primary" htmlType="submit" loading={confirm}>确认</Button>
]}
>
<Form
form={form}
|
64ae3e45
舒述军
样式调整
|
113
114
|
labelAlign="left"
style={{marginLeft: 30, marginRight: 30}}
|
a66655b2
舒述军
附加值任务配置
|
115
|
>
|
80f54b9f
舒述军
附加值任务配置
|
116
|
<Form.Item name="addedValueType">
|
efa991fe
舒述军
附加值任务枚举调整
|
117
118
119
|
<Radio.Group onChange={(e) => handleChangeType(e.target.value)} defaultValue={2} buttonStyle="solid">
<Radio.Button value={2}>按毛利计算</Radio.Button>
<Radio.Button value={1}>按产值计算</Radio.Button>
|
80f54b9f
舒述军
附加值任务配置
|
120
121
|
</Radio.Group>
</Form.Item>
|
a66655b2
舒述军
附加值任务配置
|
122
|
<Form.Item
|
efa991fe
舒述军
附加值任务枚举调整
|
123
|
label={type === 2 ? "单车附加值毛利目标" : "单车附加值产值目标"}
|
a66655b2
舒述军
附加值任务配置
|
124
125
126
127
128
129
130
131
132
133
134
135
|
name="addedValueTask"
rules={[{ required: true, message: "请输入" }]}
>
<InputNumber
style={{width: '100%'}}
controls={false}
min={0}
formatter={(value: any) => `${value}元/台`}
precision={2}
parser={(value: string) => value?.replace('元/台', '')}
/>
</Form.Item>
|
4cbecaac
舒述军
添加商业险和装潢产值目标
|
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
<Row style={{marginLeft: 30}}>
<Form.Item
label={<span>其中:<span>商业险产值目标</span></span>}
name="vciOutputValueTask"
style={{width: '100%'}}
rules={[({ getFieldValue }) => ({
validator(_, value) {
if (isNil(value)) {
return Promise.reject(new Error('请输入'));
}
return Promise.resolve();
},
})]}
>
<InputNumber
style={{width: '100%'}}
controls={false}
min={0}
formatter={(value: any) => `${value}元/台`}
precision={2}
parser={(value: string) => value?.replace('元/台', '')}
/>
</Form.Item>
<Form.Item
label={<span style={{textIndent: '42px'}}>装潢产值目标</span>}
name="decoOutputValueTask"
style={{width: '100%'}}
rules={[({ getFieldValue }) => ({
validator(_, value) {
if (isNil(value)) {
return Promise.reject(new Error('请输入'));
}
return Promise.resolve();
},
})]}
>
<InputNumber
style={{width: '100%'}}
controls={false}
min={0}
formatter={(value: any) => `${value}元/台`}
precision={2}
parser={(value: string) => value?.replace('元/台', '')}
/>
</Form.Item>
</Row>
|
3b96183d
舒述军
校验规则调整
|
184
|
<div className="addValue_wrapper"><span className="addvalue_text">*</span><span>产值构成:</span></div>
|
a66655b2
舒述军
附加值任务配置
|
185
|
<Form.Item
|
efa991fe
舒述军
附加值任务枚举调整
|
186
|
label={type === 2 ? "1.计算保险毛利" : "1.计算保险产值:"}
|
a66655b2
舒述军
附加值任务配置
|
187
188
|
>
<Form.Item
|
3b96183d
舒述军
校验规则调整
|
189
|
label={<span className="addValue_label">商业险金额 x</span>}
|
a66655b2
舒述军
附加值任务配置
|
190
|
name="vciOutputValueRatio"
|
80f54b9f
舒述军
附加值任务配置
|
191
|
colon={false}
|
3b96183d
舒述军
校验规则调整
|
192
193
194
195
196
197
198
199
|
rules={[({ getFieldValue }) => ({
validator(_, value) {
if (isNil(value)) {
return Promise.reject(new Error('请输入'));
}
return Promise.resolve();
},
})]}
|
a66655b2
舒述军
附加值任务配置
|
200
201
202
203
|
>
<InputNumber
style={{width: '100%'}}
controls={false}
|
efa991fe
舒述军
附加值任务枚举调整
|
204
|
disabled={type === 1}
|
b2649dca
舒述军
输入最小值调整
|
205
|
min={0}
|
a66655b2
舒述军
附加值任务配置
|
206
207
208
209
210
211
212
|
max={100}
formatter={(value: any) => `${value}%`}
precision={2}
parser={(value?: string) => value?.replace('%', '')}
/>
</Form.Item>
<Form.Item
|
3b96183d
舒述军
校验规则调整
|
213
|
label={<span className="addValue_label">交强险金额 x</span>}
|
80f54b9f
舒述军
附加值任务配置
|
214
|
colon={false}
|
a66655b2
舒述军
附加值任务配置
|
215
|
name="tciOutputValueRatio"
|
3b96183d
舒述军
校验规则调整
|
216
217
218
219
220
221
222
223
|
rules={[({ getFieldValue }) => ({
validator(_, value) {
if (isNil(value)) {
return Promise.reject(new Error('请输入'));
}
return Promise.resolve();
},
})]}
|
a66655b2
舒述军
附加值任务配置
|
224
225
226
227
|
>
<InputNumber
style={{width: '100%'}}
controls={false}
|
efa991fe
舒述军
附加值任务枚举调整
|
228
|
disabled={type === 1}
|
b2649dca
舒述军
输入最小值调整
|
229
|
min={0}
|
a66655b2
舒述军
附加值任务配置
|
230
231
232
233
234
235
236
|
max={100}
formatter={(value: any) => `${value}%`}
precision={2}
parser={(value?: string) => value?.replace('%', '')}
/>
</Form.Item>
<Form.Item
|
3b96183d
舒述军
校验规则调整
|
237
|
label={<span className="addValue_label">驾意险金额 x</span>}
|
80f54b9f
舒述军
附加值任务配置
|
238
|
colon={false}
|
a66655b2
舒述军
附加值任务配置
|
239
|
name="jcxOutputValueRatio"
|
3b96183d
舒述军
校验规则调整
|
240
241
242
243
244
245
246
247
|
rules={[({ getFieldValue }) => ({
validator(_, value) {
if (isNil(value)) {
return Promise.reject(new Error('请输入'));
}
return Promise.resolve();
},
})]}
|
a66655b2
舒述军
附加值任务配置
|
248
249
250
251
|
>
<InputNumber
style={{width: '100%'}}
controls={false}
|
efa991fe
舒述军
附加值任务枚举调整
|
252
|
disabled={type === 1}
|
b2649dca
舒述军
输入最小值调整
|
253
|
min={0}
|
a66655b2
舒述军
附加值任务配置
|
254
255
256
257
258
259
260
261
|
max={100}
formatter={(value: any) => `${value}%`}
precision={2}
parser={(value?: string) => value?.replace('%', '')}
/>
</Form.Item>
</Form.Item>
<Form.Item
|
efa991fe
舒述军
附加值任务枚举调整
|
262
|
label={<span style={{fontSize: '14px'}}><span style={{color: "#333"}}>2.{type === 2 ? "计算装潢毛利" : "计算装潢产值"}:</span><span className="addValue_label">装潢金额 x</span></span>}
|
80f54b9f
舒述军
附加值任务配置
|
263
264
|
colon={false}
name="decoOutputValueRatio"
|
3b96183d
舒述军
校验规则调整
|
265
266
267
268
269
270
271
272
|
rules={[({ getFieldValue }) => ({
validator(_, value) {
if (isNil(value)) {
return Promise.reject(new Error('请输入'));
}
return Promise.resolve();
},
})]}
|
80f54b9f
舒述军
附加值任务配置
|
273
274
275
276
|
>
<InputNumber
style={{width: '100%'}}
controls={false}
|
efa991fe
舒述军
附加值任务枚举调整
|
277
|
disabled={type === 1}
|
80f54b9f
舒述军
附加值任务配置
|
278
279
280
281
282
283
284
285
286
287
288
289
290
291
|
min={0}
max={100}
formatter={(value: any) => `${value}%`}
precision={2}
parser={(value?: string) => value?.replace('%', '')}
/>
</Form.Item>
<div style={{marginBottom: '25px'}}>
<span style={{color: "#333", fontSize: '14px'}}>3.其他附加值:</span>
<span style={{color: "#F4333C", fontSize: '14px'}}>分期附加费</span>
<span style={{color: "#999", fontSize: '12px'}}>(包含服务费、GPS费、抵押上户费、解除抵押费)</span>
<span style={{color: "#F4333C", fontSize: '14px'}}>和全款上户费要按实收计算</span>
</div>
<Form.Item
|
a66655b2
舒述军
附加值任务配置
|
292
293
294
295
|
label="适用门店"
name="shopList"
rules={[{ required: true, message: "请输入" }]}
>
|
cf7c5d59
舒述军
编辑时禁止修改生效时间
|
296
|
<ShopSelectNew defaultOptions={{bizTypes: "1"}} placeholder="请选择门店" multiple />
|
a66655b2
舒述军
附加值任务配置
|
297
298
299
300
301
302
|
</Form.Item>
<Form.Item
label="生效时间"
name="rangeDate"
rules={[{ required: true, message: "请输入" }]}
>
|
feab491d
舒述军
fix 生效时间限制
|
303
|
<RangePicker disabled={!!currentData.data.id} disabledDate={(current) => current && current < moment().startOf('day')} picker="month" format="YYYY-MM" />
|
a66655b2
舒述军
附加值任务配置
|
304
305
306
307
308
|
</Form.Item>
</Form>
</Modal>
);
}
|