Blame view

src/pages/order3/AddValueTaskConfig/components/EditModal.tsx 10.9 KB
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">&#65290;</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>
    );
  }