Commit ed26099c3e11b305f2376b8733084b6464562782
1 parent
db3b0f99
跟进设置调整
Showing
8 changed files
with
155 additions
and
365 deletions
package.json
src/pages/ascrm/setting/components/FmModal.tsx
... | ... | @@ -22,9 +22,6 @@ const layoutItem = { |
22 | 22 | }; |
23 | 23 | const defaultData = { |
24 | 24 | 1: 0, |
25 | - 2: 0, | |
26 | - 3: 0, | |
27 | - 4: 0, | |
28 | 25 | 5: 0, |
29 | 26 | 6: 0, |
30 | 27 | 7: 0, |
... | ... | @@ -36,9 +33,6 @@ const defaultData = { |
36 | 33 | |
37 | 34 | const defaultList = [ |
38 | 35 | { type: 1, detailValue: 0, unit: 4 }, |
39 | - { type: 2, detailValue: 0, unit: 3 }, | |
40 | - { type: 3, detailValue: 0, unit: 4 }, | |
41 | - { type: 4, detailValue: 0, unit: 4 }, | |
42 | 36 | { type: 5, detailValue: 0, unit: 4 }, |
43 | 37 | { type: 6, detailValue: 0, unit: 4 }, |
44 | 38 | { type: 7, detailValue: 0, unit: 4 }, | ... | ... |
src/pages/ascrm/setting/components/crmForm.tsx
1 | -import React, {useEffect, useImperativeHandle} from 'react'; | |
2 | -import { Form, InputNumber } from 'antd'; | |
1 | +import React, { useEffect, useImperativeHandle } from "react"; | |
2 | +import { Form, InputNumber } from "antd"; | |
3 | +import { SettingTypeEnum } from "@/pages/ascrm/setting/entity"; | |
3 | 4 | |
4 | 5 | const layout = { |
5 | - labelCol: { span: 12}, | |
6 | - wrapperCol: { span: 12, offset: 4}, | |
6 | + labelCol: { span: 12 }, | |
7 | + wrapperCol: { span: 12, offset: 4 }, | |
7 | 8 | }; |
8 | 9 | const FormItem = Form.Item; |
9 | -const CrmForm = (props:any) => { | |
10 | +const CrmForm = (props: any) => { | |
11 | + const { data = [] } = props; | |
10 | 12 | const [form] = Form.useForm(); |
11 | 13 | useImperativeHandle(props.onRef, () => ({ |
12 | 14 | formFields: form, |
13 | 15 | })); |
14 | 16 | useEffect(() => { |
15 | - props.data && form.setFieldsValue({ | |
16 | - minimumRetentionRate: props.data[0].detailValue, | |
17 | - keepTime: props.data[1].detailValue, | |
18 | - }); | |
19 | - }); | |
17 | + console.log(props); | |
18 | + if (!data) { | |
19 | + return; | |
20 | + } | |
21 | + const effectiveTime = data.find((t: any) => t.type == SettingTypeEnum["跟进有效时间"]); | |
22 | + const minClueCount = data.find((t: any) => t.type == SettingTypeEnum["公共客户线索分配初始数"]); | |
23 | + const minConversionRate = data.find((t: any) => t.type == SettingTypeEnum["公共客户线索最低转换率"]); | |
24 | + const increaseCount = data.find((t: any) => t.type == SettingTypeEnum["跟进有效时间"]); | |
25 | + const keepTime = data.find((t: any) => t.type == SettingTypeEnum["公共客户线索池保留时间"]); | |
26 | + const minimumRetentionRate = data.find((t: any) => t.type == SettingTypeEnum["保持率标准最低值"]); | |
27 | + | |
28 | + form.setFieldsValue({ | |
29 | + effectiveTime: effectiveTime?.detailValue, | |
30 | + minClueCount: minClueCount?.detailValue, | |
31 | + minConversionRate: minConversionRate?.detailValue, | |
32 | + increaseCount: increaseCount?.detailValue, | |
33 | + keepTime: keepTime?.detailValue, | |
34 | + minimumRetentionRate: minimumRetentionRate?.detailValue, | |
35 | + }); | |
36 | + }, [data]); | |
20 | 37 | return ( |
21 | 38 | <Form |
22 | - // eslint-disable-next-line react/jsx-props-no-spreading | |
39 | + // eslint-disable-next-line react/jsx-props-no-spreading | |
23 | 40 | {...layout} |
24 | 41 | colon={false} |
25 | 42 | form={form} |
26 | 43 | labelAlign="left" |
27 | 44 | name="crmForm" |
28 | 45 | > |
46 | + <FormItem label="有效跟进时间" rules={[{ required: true, message: "" }]}> | |
47 | + <FormItem noStyle name="effectiveTime" rules={[{ required: true, message: `请填写` }]}> | |
48 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
49 | + </FormItem> | |
50 | + <span>小时</span> | |
51 | + </FormItem> | |
52 | + <FormItem label="专属线索客户(单个顾问)" rules={[{ required: true, message: "" }]}> | |
53 | + <FormItem noStyle name="minClueCount" rules={[{ required: true, message: `请填写` }]}> | |
54 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
55 | + </FormItem> | |
56 | + <span>台</span> | |
57 | + </FormItem> | |
58 | + <div style={{ marginBottom: 15, fontSize: 16, color: "#333" }}>• 暂停站岗分配资格</div> | |
59 | + <FormItem label="最低专属线索转化率" rules={[{ required: true, message: "" }]}> | |
60 | + <FormItem noStyle name="minConversionRate" rules={[{ required: true, message: `请填写` }]}> | |
61 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
62 | + </FormItem> | |
63 | + <span>%</span> | |
64 | + </FormItem> | |
65 | + | |
29 | 66 | <FormItem |
30 | - label="公共客户线索池保留时间" | |
31 | - rules={[{ required: true, message: ''}]} | |
67 | + label="判断标准" | |
68 | + rules={[{ required: true, message: "" }]} | |
69 | + tooltip="当天通过区域站岗获得的线索数每增加次数量就会检查转化率,未达标者暂停分配" | |
32 | 70 | > |
33 | - <FormItem | |
34 | - noStyle | |
35 | - name="keepTime" | |
36 | - rules={[{ required: true, message: `请填写` }]} | |
37 | - > | |
38 | - <InputNumber | |
39 | - min={0} | |
40 | - style={{ width: '60%', marginRight: 10 }} | |
41 | - placeholder="请填写" | |
42 | - /> | |
71 | + <FormItem noStyle name="increaseCount" rules={[{ required: true, message: `请填写` }]}> | |
72 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
73 | + </FormItem> | |
74 | + <span>台</span> | |
75 | + </FormItem> | |
76 | + | |
77 | + <FormItem label="专属线索超期战败" rules={[{ required: true, message: "" }]}> | |
78 | + <FormItem noStyle name="keepTime" rules={[{ required: true, message: `请填写` }]}> | |
79 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
43 | 80 | </FormItem> |
44 | 81 | <span>天</span> |
45 | 82 | </FormItem> |
46 | - <FormItem | |
47 | - label="客户保持率集团比最低差异率" | |
48 | - rules={[{ required: true, message: ''}]} | |
49 | - > | |
50 | - <FormItem | |
51 | - noStyle | |
52 | - name="minimumRetentionRate" | |
53 | - rules={[{ required: true, message: `请填写` }]} | |
54 | - > | |
55 | - <InputNumber | |
56 | - min={0} | |
57 | - style={{ width: '60%', marginRight: 10 }} | |
58 | - placeholder="请填写" | |
59 | - /> | |
83 | + <FormItem label="客户保持率集团比最低差异率" rules={[{ required: true, message: "" }]}> | |
84 | + <FormItem noStyle name="minimumRetentionRate" rules={[{ required: true, message: `请填写` }]}> | |
85 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
60 | 86 | </FormItem> |
61 | 87 | <span>%</span> |
62 | 88 | </FormItem> |
63 | 89 | </Form> |
64 | 90 | ); |
65 | 91 | }; |
66 | -export default CrmForm; | |
67 | 92 | \ No newline at end of file |
93 | +export default CrmForm; | ... | ... |
src/pages/ascrm/setting/components/firstInsuranceForm.tsx
1 | -import React, {useEffect, useImperativeHandle} from 'react'; | |
2 | -import { Form, InputNumber } from 'antd'; | |
1 | +import React, { useEffect, useImperativeHandle } from "react"; | |
2 | +import { Form, InputNumber } from "antd"; | |
3 | 3 | |
4 | 4 | const layout = { |
5 | 5 | labelCol: { span: 10 }, |
6 | - wrapperCol: { span: 15, offset: 4}, | |
6 | + wrapperCol: { span: 15, offset: 4 }, | |
7 | 7 | }; |
8 | 8 | const layoutItem = { |
9 | 9 | labelCol: { span: 10, offset: 1 }, |
10 | - wrapperCol: { span: 15, offset: 2}, | |
10 | + wrapperCol: { span: 15, offset: 2 }, | |
11 | 11 | }; |
12 | 12 | const FormItem = Form.Item; |
13 | -const FirstInsuranceForm = (props:any) => { | |
13 | +const FirstInsuranceForm = (props: any) => { | |
14 | 14 | const [form] = Form.useForm(); |
15 | 15 | useImperativeHandle(props.onRef, () => ({ |
16 | 16 | formFields: form, |
... | ... | @@ -19,14 +19,12 @@ const FirstInsuranceForm = (props:any) => { |
19 | 19 | props.data && |
20 | 20 | form.setFieldsValue({ |
21 | 21 | firstFollowUp: props.data[0].detailValue, |
22 | - effectiveTime: props.data[1].detailValue, | |
23 | - timeInterval: props.data[2].detailValue, | |
24 | 22 | remindCustomers: props.data[5].detailValue, |
25 | 23 | reminderInterval: props.data[6].detailValue, |
26 | 24 | remindNumber: props.data[7].detailValue, |
27 | 25 | fail: props.data[3].detailValue, |
28 | 26 | closeingDate: props.data[4].detailValue, |
29 | - reviseRatio: props.data[8].detailValue | |
27 | + reviseRatio: props.data[8].detailValue, | |
30 | 28 | }); |
31 | 29 | }); |
32 | 30 | return ( |
... | ... | @@ -44,18 +42,7 @@ const FirstInsuranceForm = (props:any) => { |
44 | 42 | </FormItem> |
45 | 43 | <span>天</span> |
46 | 44 | </FormItem> |
47 | - <FormItem {...layoutItem} label="跟进有效时间" rules={[{ required: true, message: "" }]}> | |
48 | - <FormItem noStyle name="effectiveTime" rules={[{ required: true, message: `请填写` }]}> | |
49 | - <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
50 | - </FormItem> | |
51 | - <span>小时</span> | |
52 | - </FormItem> | |
53 | - <FormItem {...layoutItem} label="跟进时间间隔" rules={[{ required: true, message: "" }]}> | |
54 | - <FormItem noStyle name="timeInterval" rules={[{ required: true, message: `请填写` }]}> | |
55 | - <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
56 | - </FormItem> | |
57 | - <span>天</span> | |
58 | - </FormItem> | |
45 | + | |
59 | 46 | <FormItem {...layoutItem} label="首保到期提醒客户" rules={[{ required: true, message: "" }]}> |
60 | 47 | <FormItem noStyle name="remindCustomers" rules={[{ required: true, message: `请填写` }]}> |
61 | 48 | <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> |
... | ... | @@ -74,12 +61,6 @@ const FirstInsuranceForm = (props:any) => { |
74 | 61 | </FormItem> |
75 | 62 | <span>次</span> |
76 | 63 | </FormItem> |
77 | - <FormItem {...layoutItem} label="跟进战败且划走(未成交)" rules={[{ required: true, message: "" }]}> | |
78 | - <FormItem noStyle name="fail" rules={[{ required: true, message: `请填写` }]}> | |
79 | - <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
80 | - </FormItem> | |
81 | - <span>天</span> | |
82 | - </FormItem> | |
83 | 64 | <FormItem {...layoutItem} label="首保跟进截止日期" rules={[{ required: true, message: "" }]}> |
84 | 65 | <FormItem noStyle name="closeingDate" rules={[{ required: true, message: `请填写` }]}> |
85 | 66 | <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> |
... | ... | @@ -95,4 +76,4 @@ const FirstInsuranceForm = (props:any) => { |
95 | 76 | </Form> |
96 | 77 | ); |
97 | 78 | }; |
98 | -export default FirstInsuranceForm; | |
99 | 79 | \ No newline at end of file |
80 | +export default FirstInsuranceForm; | ... | ... |
src/pages/ascrm/setting/components/lossWarningForm.tsx
1 | -import React, {useEffect, useImperativeHandle} from 'react'; | |
2 | -import { Form, InputNumber } from 'antd'; | |
1 | +import React, { useEffect, useImperativeHandle } from "react"; | |
2 | +import { Form, InputNumber } from "antd"; | |
3 | 3 | |
4 | 4 | const layout = { |
5 | - labelCol: { span: 9}, | |
6 | - wrapperCol: { span: 15, offset: 4}, | |
5 | + labelCol: { span: 9 }, | |
6 | + wrapperCol: { span: 15, offset: 4 }, | |
7 | 7 | }; |
8 | 8 | const layoutItem = { |
9 | 9 | labelCol: { span: 9, offset: 2 }, |
10 | - wrapperCol: { span: 15, offset: 2}, | |
10 | + wrapperCol: { span: 15, offset: 2 }, | |
11 | 11 | }; |
12 | 12 | const FormItem = Form.Item; |
13 | -const LoseWaringForm = (props:any) => { | |
13 | +const LoseWaringForm = (props: any) => { | |
14 | 14 | const [form] = Form.useForm(); |
15 | 15 | useImperativeHandle(props.onRef, () => ({ |
16 | 16 | formFields: form, |
17 | 17 | })); |
18 | 18 | useEffect(() => { |
19 | - props.data && form.setFieldsValue({ | |
20 | - firstFollowUp: props.data[0].detailValue, | |
21 | - effectiveTime: props.data[1].detailValue, | |
22 | - timeInterval: props.data[2].detailValue, | |
23 | - remindCustomers: props.data[5].detailValue, | |
24 | - reminderInterval: props.data[6].detailValue, | |
25 | - remindNumber: props.data[7].detailValue, | |
26 | - fail: props.data[3].detailValue, | |
27 | - closeingDate: props.data[4].detailValue | |
28 | - }); | |
19 | + props.data && | |
20 | + form.setFieldsValue({ | |
21 | + firstFollowUp: props.data[0].detailValue, | |
22 | + effectiveTime: props.data[1].detailValue, | |
23 | + timeInterval: props.data[2].detailValue, | |
24 | + remindCustomers: props.data[5].detailValue, | |
25 | + reminderInterval: props.data[6].detailValue, | |
26 | + remindNumber: props.data[7].detailValue, | |
27 | + fail: props.data[3].detailValue, | |
28 | + closeingDate: props.data[4].detailValue, | |
29 | + }); | |
29 | 30 | }); |
30 | 31 | return ( |
31 | 32 | <Form |
32 | - // eslint-disable-next-line react/jsx-props-no-spreading | |
33 | + // eslint-disable-next-line react/jsx-props-no-spreading | |
33 | 34 | {...layout} |
34 | 35 | colon={false} |
35 | 36 | form={form} |
36 | 37 | labelAlign="left" |
37 | 38 | name="loseWaringForm" |
38 | 39 | > |
39 | - <FormItem | |
40 | - label="第一次跟进" | |
41 | - rules={[{ required: true, message: ''}]} | |
42 | - > | |
43 | - <FormItem | |
44 | - noStyle | |
45 | - name="firstFollowUp" | |
46 | - rules={[{ required: true, message: `请填写` }]} | |
47 | - > | |
48 | - <InputNumber | |
49 | - min={0} | |
50 | - style={{ width: '60%', marginRight: 10 }} | |
51 | - placeholder="请填写" | |
52 | - /> | |
40 | + <FormItem label="第一次跟进" rules={[{ required: true, message: "" }]}> | |
41 | + <FormItem noStyle name="firstFollowUp" rules={[{ required: true, message: `请填写` }]}> | |
42 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
53 | 43 | </FormItem> |
54 | 44 | <span>天</span> |
55 | 45 | </FormItem> |
56 | - <FormItem | |
57 | - {...layoutItem} | |
58 | - label="跟进有效时间" | |
59 | - rules={[{ required: true, message: ''}]} | |
60 | - > | |
61 | - <FormItem | |
62 | - noStyle | |
63 | - name="effectiveTime" | |
64 | - rules={[{ required: true, message: `请填写` }]} | |
65 | - > | |
66 | - <InputNumber | |
67 | - min={0} | |
68 | - style={{ width: '60%', marginRight: 10 }} | |
69 | - placeholder="请填写" | |
70 | - /> | |
71 | - </FormItem> | |
72 | - <span>小时</span> | |
73 | - </FormItem> | |
74 | - <FormItem | |
75 | - {...layoutItem} | |
76 | - label="跟进时间间隔" | |
77 | - rules={[{ required: true, message: ''}]} | |
78 | - > | |
79 | - <FormItem | |
80 | - noStyle | |
81 | - name="timeInterval" | |
82 | - rules={[{ required: true, message: `请填写` }]} | |
83 | - > | |
84 | - <InputNumber | |
85 | - min={0} | |
86 | - style={{ width: '60%', marginRight: 10 }} | |
87 | - placeholder="请填写" | |
88 | - /> | |
89 | - </FormItem> | |
90 | - <span>天</span> | |
91 | - </FormItem> | |
92 | - <FormItem | |
93 | - label="到期提醒客户" | |
94 | - rules={[{ required: true, message: ''}]} | |
95 | - > | |
96 | - <FormItem | |
97 | - noStyle | |
98 | - name="remindCustomers" | |
99 | - rules={[{ required: true, message: `请填写` }]} | |
100 | - > | |
101 | - <InputNumber | |
102 | - min={0} | |
103 | - style={{ width: '60%', marginRight: 10 }} | |
104 | - placeholder="请填写" | |
105 | - /> | |
46 | + <FormItem label="到期提醒客户" rules={[{ required: true, message: "" }]}> | |
47 | + <FormItem noStyle name="remindCustomers" rules={[{ required: true, message: `请填写` }]}> | |
48 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
106 | 49 | </FormItem> |
107 | 50 | <span>天</span> |
108 | 51 | </FormItem> |
109 | - <FormItem | |
110 | - {...layoutItem} | |
111 | - label="提醒间隔" | |
112 | - rules={[{ required: true, message: ''}]} | |
113 | - > | |
114 | - <FormItem | |
115 | - noStyle | |
116 | - name="reminderInterval" | |
117 | - rules={[{ required: true, message: `请填写` }]} | |
118 | - > | |
119 | - <InputNumber | |
120 | - min={0} | |
121 | - style={{ width: '60%', marginRight: 10 }} | |
122 | - placeholder="请填写" | |
123 | - /> | |
52 | + <FormItem {...layoutItem} label="提醒间隔" rules={[{ required: true, message: "" }]}> | |
53 | + <FormItem noStyle name="reminderInterval" rules={[{ required: true, message: `请填写` }]}> | |
54 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
124 | 55 | </FormItem> |
125 | 56 | <span>天</span> |
126 | 57 | </FormItem> |
127 | - <FormItem | |
128 | - {...layoutItem} | |
129 | - label="提醒次数" | |
130 | - rules={[{ required: true, message: ''}]} | |
131 | - > | |
132 | - <FormItem | |
133 | - noStyle | |
134 | - name="remindNumber" | |
135 | - rules={[{ required: true, message: `请填写` }]} | |
136 | - > | |
137 | - <InputNumber | |
138 | - min={0} | |
139 | - style={{ width: '60%', marginRight: 10 }} | |
140 | - placeholder="请填写" | |
141 | - /> | |
58 | + <FormItem {...layoutItem} label="提醒次数" rules={[{ required: true, message: "" }]}> | |
59 | + <FormItem noStyle name="remindNumber" rules={[{ required: true, message: `请填写` }]}> | |
60 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
142 | 61 | </FormItem> |
143 | 62 | <span>次</span> |
144 | 63 | </FormItem> |
145 | - <FormItem | |
146 | - label="跟进战败且划走(未成交)" | |
147 | - rules={[{ required: true, message: ''}]} | |
148 | - > | |
149 | - <FormItem | |
150 | - noStyle | |
151 | - name="fail" | |
152 | - rules={[{ required: true, message: `请填写` }]} | |
153 | - > | |
154 | - <InputNumber | |
155 | - min={0} | |
156 | - style={{ width: '60%', marginRight: 10 }} | |
157 | - placeholder="请填写" | |
158 | - /> | |
159 | - </FormItem> | |
160 | - <span>天</span> | |
161 | - </FormItem> | |
162 | - <FormItem | |
163 | - label="流失客户跟进截止日期" | |
164 | - rules={[{ required: true, message: ''}]} | |
165 | - > | |
166 | - <FormItem | |
167 | - noStyle | |
168 | - name="closeingDate" | |
169 | - rules={[{ required: true, message: `请填写` }]} | |
170 | - > | |
171 | - <InputNumber | |
172 | - min={0} | |
173 | - style={{ width: '60%', marginRight: 10 }} | |
174 | - placeholder="请填写" | |
175 | - /> | |
64 | + <FormItem label="流失客户跟进截止日期" rules={[{ required: true, message: "" }]}> | |
65 | + <FormItem noStyle name="closeingDate" rules={[{ required: true, message: `请填写` }]}> | |
66 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
176 | 67 | </FormItem> |
177 | 68 | <span>天</span> |
178 | 69 | </FormItem> |
179 | 70 | </Form> |
180 | 71 | ); |
181 | 72 | }; |
182 | -export default LoseWaringForm; | |
183 | 73 | \ No newline at end of file |
74 | +export default LoseWaringForm; | ... | ... |
src/pages/ascrm/setting/components/renewalOfInsurance.tsx
1 | -import React, {useEffect, useImperativeHandle} from 'react'; | |
2 | -import { Form, InputNumber } from 'antd'; | |
1 | +import React, { useEffect, useImperativeHandle } from "react"; | |
2 | +import { Form, InputNumber, Radio } from "antd"; | |
3 | +import { SettingTypeEnum } from '@/pages/ascrm/setting/entity'; | |
3 | 4 | |
4 | 5 | const layout = { |
5 | - labelCol: { span: 9}, | |
6 | - wrapperCol: { span: 15, offset: 4}, | |
6 | + labelCol: { span: 9 }, | |
7 | + wrapperCol: { span: 15, offset: 4 }, | |
7 | 8 | }; |
8 | 9 | const layoutItem = { |
9 | 10 | labelCol: { span: 9, offset: 2 }, |
10 | - wrapperCol: { span: 15, offset: 2}, | |
11 | + wrapperCol: { span: 15, offset: 2 }, | |
11 | 12 | }; |
12 | 13 | const FormItem = Form.Item; |
13 | -const RenewalOfInsurance = (props:any) => { | |
14 | +const RenewalOfInsurance = (props: any) => { | |
14 | 15 | const [form] = Form.useForm(); |
15 | 16 | useImperativeHandle(props.onRef, () => ({ |
16 | 17 | formFields: form, |
17 | 18 | })); |
18 | 19 | useEffect(() => { |
19 | - props.data && form.setFieldsValue({ | |
20 | - firstFollowUp: props.data[0].detailValue, | |
21 | - effectiveTime: props.data[1].detailValue, | |
22 | - timeInterval: props.data[2].detailValue, | |
23 | - remindCustomers: props.data[5].detailValue, | |
24 | - reminderInterval: props.data[6].detailValue, | |
25 | - remindNumber: props.data[7].detailValue, | |
26 | - fail: props.data[3].detailValue, | |
27 | - closeingDate: props.data[4].detailValue | |
28 | - }); | |
20 | + props.data && | |
21 | + form.setFieldsValue({ | |
22 | + firstFollowUp: props.data[0].detailValue, | |
23 | + effectiveTime: props.data[1].detailValue, | |
24 | + timeInterval: props.data[2].detailValue, | |
25 | + remindCustomers: props.data[5].detailValue, | |
26 | + reminderInterval: props.data[6].detailValue, | |
27 | + remindNumber: props.data[7].detailValue, | |
28 | + fail: props.data[3].detailValue, | |
29 | + closeingDate: props.data[4].detailValue, | |
30 | + mode: `${props.data?.find((t: any) => t.type == SettingTypeEnum["续保跟进模式"])?.detailValue || 1}`, | |
31 | + }); | |
29 | 32 | }); |
30 | 33 | return ( |
31 | 34 | <Form |
32 | - // eslint-disable-next-line react/jsx-props-no-spreading | |
35 | + // eslint-disable-next-line react/jsx-props-no-spreading | |
33 | 36 | {...layout} |
34 | 37 | colon={false} |
35 | 38 | form={form} |
36 | 39 | labelAlign="left" |
37 | 40 | name="renewalOfInsurance" |
38 | 41 | > |
39 | - <FormItem | |
40 | - label="第一次跟进" | |
41 | - rules={[{ required: true, message: ''}]} | |
42 | - > | |
43 | - <FormItem | |
44 | - noStyle | |
45 | - name="firstFollowUp" | |
46 | - rules={[{ required: true, message: `请填写` }]} | |
47 | - > | |
48 | - <InputNumber | |
49 | - min={0} | |
50 | - style={{ width: '60%', marginRight: 10 }} | |
51 | - placeholder="请填写" | |
52 | - /> | |
53 | - </FormItem> | |
54 | - <span>天</span> | |
55 | - </FormItem> | |
56 | - <FormItem | |
57 | - {...layoutItem} | |
58 | - label="跟进有效时间" | |
59 | - rules={[{ required: true, message: ''}]} | |
60 | - > | |
61 | - <FormItem | |
62 | - noStyle | |
63 | - name="effectiveTime" | |
64 | - rules={[{ required: true, message: `请填写` }]} | |
65 | - > | |
66 | - <InputNumber | |
67 | - min={0} | |
68 | - style={{ width: '60%', marginRight: 10 }} | |
69 | - placeholder="请填写" | |
70 | - /> | |
71 | - </FormItem> | |
72 | - <span>小时</span> | |
42 | + <FormItem label="模式" name="mode" rules={[{ required: true, message: `请选择` }]}> | |
43 | + <Radio.Group> | |
44 | + <Radio value="1">模式一(续保角色)</Radio> | |
45 | + <Radio value="2">模式二(续保角色 + 新车销售/售后接待)</Radio> | |
46 | + </Radio.Group> | |
73 | 47 | </FormItem> |
74 | - <FormItem | |
75 | - {...layoutItem} | |
76 | - label="跟进时间间隔" | |
77 | - rules={[{ required: true, message: ''}]} | |
78 | - > | |
79 | - <FormItem | |
80 | - noStyle | |
81 | - name="timeInterval" | |
82 | - rules={[{ required: true, message: `请填写` }]} | |
83 | - > | |
84 | - <InputNumber | |
85 | - min={0} | |
86 | - style={{ width: '60%', marginRight: 10 }} | |
87 | - placeholder="请填写" | |
88 | - /> | |
48 | + | |
49 | + <FormItem label="第一次跟进" rules={[{ required: true, message: "" }]}> | |
50 | + <FormItem noStyle name="firstFollowUp" rules={[{ required: true, message: `请填写` }]}> | |
51 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
89 | 52 | </FormItem> |
90 | 53 | <span>天</span> |
91 | 54 | </FormItem> |
92 | - <FormItem | |
93 | - label="保险到期提醒客户" | |
94 | - rules={[{ required: true, message: ''}]} | |
95 | - > | |
96 | - <FormItem | |
97 | - noStyle | |
98 | - name="remindCustomers" | |
99 | - rules={[{ required: true, message: `请填写` }]} | |
100 | - > | |
101 | - <InputNumber | |
102 | - min={0} | |
103 | - style={{ width: '60%', marginRight: 10 }} | |
104 | - placeholder="请填写" | |
105 | - /> | |
55 | + <FormItem label="保险到期提醒客户" rules={[{ required: true, message: "" }]}> | |
56 | + <FormItem noStyle name="remindCustomers" rules={[{ required: true, message: `请填写` }]}> | |
57 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
106 | 58 | </FormItem> |
107 | 59 | <span>天</span> |
108 | 60 | </FormItem> |
109 | - <FormItem | |
110 | - {...layoutItem} | |
111 | - label="提醒间隔" | |
112 | - rules={[{ required: true, message: ''}]} | |
113 | - > | |
114 | - <FormItem | |
115 | - noStyle | |
116 | - name="reminderInterval" | |
117 | - rules={[{ required: true, message: `请填写` }]} | |
118 | - > | |
119 | - <InputNumber | |
120 | - min={0} | |
121 | - style={{ width: '60%', marginRight: 10 }} | |
122 | - placeholder="请填写" | |
123 | - /> | |
61 | + <FormItem {...layoutItem} label="提醒间隔" rules={[{ required: true, message: "" }]}> | |
62 | + <FormItem noStyle name="reminderInterval" rules={[{ required: true, message: `请填写` }]}> | |
63 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
124 | 64 | </FormItem> |
125 | 65 | <span>天</span> |
126 | 66 | </FormItem> |
127 | - <FormItem | |
128 | - {...layoutItem} | |
129 | - label="提醒次数" | |
130 | - rules={[{ required: true, message: ''}]} | |
131 | - > | |
132 | - <FormItem | |
133 | - noStyle | |
134 | - name="remindNumber" | |
135 | - rules={[{ required: true, message: `请填写` }]} | |
136 | - > | |
137 | - <InputNumber | |
138 | - min={0} | |
139 | - style={{ width: '60%', marginRight: 10 }} | |
140 | - placeholder="请填写" | |
141 | - /> | |
67 | + <FormItem {...layoutItem} label="提醒次数" rules={[{ required: true, message: "" }]}> | |
68 | + <FormItem noStyle name="remindNumber" rules={[{ required: true, message: `请填写` }]}> | |
69 | + <InputNumber min={0} style={{ width: "60%", marginRight: 10 }} placeholder="请填写" /> | |
142 | 70 | </FormItem> |
143 | 71 | <span>次</span> |
144 | 72 | </FormItem> |
145 | - <FormItem | |
146 | - label="跟进划走(未成交)" | |
147 | - rules={[{ required: true, message: ''}]} | |
148 | - > | |
149 | - <FormItem | |
150 | - noStyle | |
151 | - name="fail" | |
152 | - rules={[{ required: true, message: `请填写` }]} | |
153 | - > | |
154 | - <InputNumber | |
155 | - min={0} | |
156 | - style={{ width: '60%', marginRight: 10 }} | |
157 | - placeholder="请填写" | |
158 | - /> | |
159 | - </FormItem> | |
160 | - <span>天</span> | |
161 | - </FormItem> | |
162 | - <FormItem | |
163 | - label="续保跟进截止日期" | |
164 | - rules={[{ required: true, message: ''}]} | |
165 | - > | |
166 | - <FormItem | |
167 | - noStyle | |
168 | - name="closeingDate" | |
169 | - rules={[{ required: true, message: `请填写` }]} | |
170 | - > | |
171 | - <InputNumber | |
172 | - min={0} | |
173 | - style={{ width: '60%', marginRight: 10 }} | |
174 | - placeholder="请填写" | |
175 | - /> | |
176 | - </FormItem> | |
177 | - <span>天</span> | |
178 | - </FormItem> | |
179 | 73 | </Form> |
180 | 74 | ); |
181 | 75 | }; |
182 | -export default RenewalOfInsurance; | |
183 | 76 | \ No newline at end of file |
77 | +export default RenewalOfInsurance; | ... | ... |
src/pages/ascrm/setting/entity.ts
... | ... | @@ -39,14 +39,19 @@ export enum SettingTypeEnum { |
39 | 39 | "提醒间隔", |
40 | 40 | "提醒次数", |
41 | 41 | "成交率集团比最低差异率", |
42 | + "待办时效", | |
42 | 43 | "保持率标准最低值" = 11, |
43 | - "公共客户线索池保留时间" = 12, | |
44 | + "公共客户线索池保留时间", | |
45 | + "公共客户线索最低转换率", | |
46 | + "公共客户线索分配初始数", | |
47 | + "公共客户线增量数", | |
48 | + "续保跟进模式" = 99, | |
44 | 49 | } |
45 | 50 | |
46 | 51 | export const FollowSettingMap = new Map<number, Array<number>>([ |
47 | - [1, [1, 2, 3, 4, 5, 6, 7, 8, 9]], | |
48 | - [2, [1, 2, 3, 4, 5, 6, 7, 8]], | |
52 | + [1, [1, 5, 6, 7, 8, 9]], | |
53 | + [2, [1, 5, 6, 7, 8]], | |
49 | 54 | [3, [2, 5]], |
50 | - [4, [1, 2, 3, 4, 5, 6, 7, 8]], | |
55 | + [4, [1, 5, 6, 7, 8]], | |
51 | 56 | [99, [11, 12]], |
52 | 57 | ]); | ... | ... |