|
@@ -1,30 +1,15 @@
|
1
|
1
|
import React, { useState, useEffect } from 'react';
|
2
|
|
-
|
3
|
|
-import { Input, Card, message, Radio, Select, Modal } from 'antd';
|
4
|
|
-import { FormattedMessage } from 'umi-plugin-react/locale';
|
5
|
|
-import BuildSelect from '@/components/SelectButton/BuildSelect'
|
|
2
|
+import { Input, Card, message, Select } from 'antd';
|
|
3
|
+import OrganizationSelect from '@/components/SelectButton/OrganizationSelect';
|
6
|
4
|
import router from 'umi/router';
|
7
|
5
|
import { FieldTypes, createForm } from '@/components/XForm';
|
8
|
|
-import Wangedit from '@/components/Wangedit/Wangedit'
|
9
|
|
-// import channels from './channelList.less';
|
10
|
|
-// import Tagss from '../components/Tagss.jsx';
|
11
|
6
|
import apis from '@/services/apis';
|
12
|
|
-import request from '@/utils/request'
|
13
|
|
-import BuildingSelection from '../components/BuildingSelection'
|
|
7
|
+import request from '@/utils/request';
|
|
8
|
+import BuildingSelection from '../components/BuildingSelection';
|
14
|
9
|
|
15
|
10
|
const { TextArea } = Input;
|
16
|
|
-const { Option } = Select;
|
17
|
|
-let consultantChecked = false;
|
18
|
|
-
|
19
|
|
-const setExtraData = (data) => {
|
20
|
|
- consultantChecked = data.isConsultant
|
21
|
|
-}
|
22
|
|
-
|
23
|
|
-const handleFormValueChange = (props, changedValues, allValues) => {
|
24
|
|
- setExtraData(allValues)
|
25
|
|
-}
|
26
|
11
|
|
27
|
|
-const XForm = createForm({ onValuesChange: handleFormValueChange })
|
|
12
|
+const XForm = createForm();
|
28
|
13
|
|
29
|
14
|
/**
|
30
|
15
|
*
|
|
@@ -32,283 +17,247 @@ const XForm = createForm({ onValuesChange: handleFormValueChange })
|
32
|
17
|
* @param {*} props
|
33
|
18
|
* @returns
|
34
|
19
|
*/
|
35
|
|
-const StaffEdit = (props) => {
|
36
|
|
- const userId = props.location.query.userId
|
37
|
|
- const [userData, setUserData] = useState({})
|
38
|
|
- const [tagData, setTagData] = useState([])
|
39
|
|
- const [roleData, setRoleData] = useState([])
|
40
|
|
- const [buildData, setBuildData] = useState([])
|
41
|
|
- const [visible, setVisible] = useState(false)
|
42
|
|
-
|
43
|
|
- const getTagList = () => {
|
44
|
|
- request({ ...apis.staff.taTags, params: { pageNum: 1, pageSize: 999 } }).then((data) => {
|
45
|
|
- setTagData(data.records)
|
46
|
|
- })
|
47
|
|
- }
|
|
20
|
+const StaffEdit = props => {
|
|
21
|
+ const userId = props.location.query.userId;
|
|
22
|
+ const [userData, setUserData] = useState({});
|
|
23
|
+ const [roleData, setRoleData] = useState([]);
|
|
24
|
+ const [buildData, setBuildData] = useState([]);
|
|
25
|
+ const [isConsultant, setIsConsultant] = useState(false);
|
48
|
26
|
|
49
|
27
|
const getRoleList = () => {
|
50
|
|
- request({ ...apis.role.getRoleList, params: { pageNum: 1, pageSize: 999 } }).then((data) => {
|
51
|
|
- console.log(data)
|
52
|
|
- setRoleData(data.records)
|
53
|
|
- })
|
54
|
|
- }
|
|
28
|
+ request({ ...apis.role.getRoleList, params: { pageNum: 1, pageSize: 999 } }).then(data => {
|
|
29
|
+ console.log(data);
|
|
30
|
+ setRoleData(data.records);
|
|
31
|
+ });
|
|
32
|
+ };
|
55
|
33
|
|
56
|
34
|
//获取项目列表
|
57
|
35
|
const getBuildList = e => {
|
58
|
|
- request({ ...apis.building.buildingSelect, params: { pageNum: 1, pageSize: 999 } }).then(data => {
|
59
|
|
- setBuildData(data)
|
60
|
|
- })
|
61
|
|
- }
|
|
36
|
+ request({ ...apis.building.buildingSelect, params: { pageNum: 1, pageSize: 999 } }).then(
|
|
37
|
+ data => {
|
|
38
|
+ setBuildData(data);
|
|
39
|
+ },
|
|
40
|
+ );
|
|
41
|
+ };
|
62
|
42
|
|
63
|
43
|
// 查询列表
|
64
|
|
- const getUserData = (userId) => {
|
65
|
|
- request({ ...apis.staff.getTaUser, urlData: { id: userId } }).then((data) => {
|
66
|
|
- consultantChecked = data.isConsultant
|
67
|
|
- setUserData(data)
|
68
|
|
- })
|
69
|
|
- }
|
|
44
|
+ const getUserData = userId => {
|
|
45
|
+ request({ ...apis.staff.getTaUser, urlData: { id: userId } }).then(data => {
|
|
46
|
+ // consultantChecked =;
|
|
47
|
+ setIsConsultant(data.isConsultant);
|
|
48
|
+ setUserData(data);
|
|
49
|
+ });
|
|
50
|
+ };
|
70
|
51
|
|
71
|
|
- if(userData.buildingIds && buildData.length > 0 && !consultantChecked){
|
72
|
|
- const newBuildings = userData.buildingIds.filter(x => buildData.filter(it => it.buildingId === x)[0])
|
73
|
|
- userData.buildingIds = newBuildings
|
|
52
|
+ if (userData.buildingIds && buildData.length > 0 && !isConsultant) {
|
|
53
|
+ const newBuildings = userData.buildingIds.filter(
|
|
54
|
+ x => buildData.filter(it => it.buildingId === x)[0],
|
|
55
|
+ );
|
|
56
|
+ userData.buildingIds = newBuildings;
|
74
|
57
|
}
|
75
|
58
|
|
76
|
|
- if(userData.roleIds && roleData.length > 0){
|
77
|
|
- const newRoleIds = userData.roleIds.filter(x => roleData.filter(it => it.roleId === x)[0])
|
78
|
|
- userData.roleIds = newRoleIds
|
|
59
|
+ if (userData.roleIds && roleData.length > 0) {
|
|
60
|
+ const newRoleIds = userData.roleIds.filter(x => roleData.filter(it => it.roleId === x)[0]);
|
|
61
|
+ userData.roleIds = newRoleIds;
|
79
|
62
|
}
|
80
|
63
|
|
81
|
64
|
useEffect(() => {
|
82
|
|
- getTagList();
|
83
|
65
|
getRoleList();
|
84
|
66
|
getBuildList();
|
85
|
67
|
if (userId) {
|
86
|
68
|
getUserData(userId);
|
87
|
69
|
}
|
88
|
|
- }, [])
|
89
|
|
-
|
90
|
|
- const tagsChange = (value) => {
|
91
|
|
- console.log(`selected ${value}`);
|
92
|
|
- }
|
|
70
|
+ }, []);
|
93
|
71
|
|
94
|
72
|
const handleSubmit = val => {
|
95
|
73
|
if (userId) {
|
96
|
|
- request({ ...apis.staff.updateTaUser, urlData: { id: userId }, data: val, }).then((data) => {
|
97
|
|
- console.log(data, "tauser")
|
98
|
|
- message.info("保存成功")
|
99
|
|
- router.go(-1)
|
100
|
|
- }).catch(error => {
|
101
|
|
- // message.info(error.message)
|
102
|
|
- })
|
|
74
|
+ request({ ...apis.staff.updateTaUser, urlData: { id: userId }, data: val })
|
|
75
|
+ .then(data => {
|
|
76
|
+ console.log(data, 'tauser');
|
|
77
|
+ message.info('保存成功');
|
|
78
|
+ router.go(-1);
|
|
79
|
+ })
|
|
80
|
+ .catch(error => {
|
|
81
|
+ // message.info(error.message)
|
|
82
|
+ });
|
103
|
83
|
} else {
|
104
|
|
- request({ ...apis.staff.addTaUser, data: val, }).then((data) => {
|
105
|
|
- console.log(data, "tauser")
|
106
|
|
- message.info("保存成功")
|
107
|
|
- router.go(-1)
|
108
|
|
- }).catch(error => {
|
109
|
|
- // message.info(error.message)
|
110
|
|
- })
|
|
84
|
+ request({ ...apis.staff.addTaUser, data: val })
|
|
85
|
+ .then(data => {
|
|
86
|
+ console.log(data, 'tauser');
|
|
87
|
+ message.info('保存成功');
|
|
88
|
+ router.go(-1);
|
|
89
|
+ })
|
|
90
|
+ .catch(error => {
|
|
91
|
+ // message.info(error.message)
|
|
92
|
+ });
|
111
|
93
|
}
|
112
|
|
- }
|
|
94
|
+ };
|
113
|
95
|
|
114
|
|
- const photoBeforeUpload = (file) => {
|
|
96
|
+ const photoBeforeUpload = file => {
|
115
|
97
|
// const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
|
116
|
98
|
// if (!isJpgOrPng) {
|
117
|
99
|
// message.error('请上传 JPG/PNG 格式的图片!');
|
118
|
100
|
// }
|
119
|
|
- console.log(file.size, file.size / 1024)
|
120
|
|
- const isLt100k = (file.size / 1024) < 100;
|
|
101
|
+ console.log(file.size, file.size / 1024);
|
|
102
|
+ const isLt100k = file.size / 1024 < 100;
|
121
|
103
|
if (!isLt100k) {
|
122
|
104
|
message.error('请上传小于100k的图片!');
|
123
|
105
|
}
|
124
|
106
|
return isLt100k;
|
125
|
|
- }
|
126
|
|
-
|
127
|
|
- //授权项目改变
|
128
|
|
- const consultantBuildingChange =(e) => {
|
129
|
|
- if(userData.isConsultant){
|
130
|
|
- request({ ...apis.staff.check, params: { userId: userData.userId, personId: userData.consultantPersonId, buildingId: userData.buildingId } }).then(res => {
|
131
|
|
- if(res.length > 0){
|
132
|
|
- Modal.confirm({
|
133
|
|
- title: '此置业顾问下有私客,是否转移私客?',
|
134
|
|
- okText: '确认',
|
135
|
|
- cancelText: '取消',
|
136
|
|
- onOk () {
|
137
|
|
- setVisible(true)
|
138
|
|
- },
|
139
|
|
- });
|
140
|
|
- }
|
141
|
|
- })
|
142
|
|
- }
|
143
|
|
- }
|
144
|
|
-
|
145
|
|
- //迁移私客成功回调
|
146
|
|
- const moveSuccess = (e) => {
|
147
|
|
- setVisible(false)
|
148
|
|
- }
|
|
107
|
+ };
|
149
|
108
|
|
150
|
109
|
const fields = [
|
151
|
110
|
{
|
152
|
|
- label: '姓名',
|
153
|
|
- name: 'userName',
|
|
111
|
+ label: '头像',
|
|
112
|
+ name: 'avatar',
|
|
113
|
+ type: FieldTypes.ImageUploader,
|
|
114
|
+ extra: '建议图片尺寸:320*320px,比例1:1,格式:jpg,用于置业顾问头像,限制大小:100k',
|
|
115
|
+ value: userData.avatar,
|
|
116
|
+ beforeUpload: e => photoBeforeUpload(e),
|
|
117
|
+ rules: [{ required: true, message: '请选择头像' }],
|
|
118
|
+ },
|
|
119
|
+
|
|
120
|
+ {
|
|
121
|
+ label: '工号',
|
|
122
|
+ name: 'jobNumber',
|
154
|
123
|
type: FieldTypes.Text,
|
155
|
|
- value: userData.userName,
|
156
|
|
- rules: [
|
157
|
|
- { required: true, message: '请输入姓名' },
|
158
|
|
- ]
|
|
124
|
+ value: userData.jobNumber,
|
|
125
|
+ rules: [{ required: true, message: '请输入工号' }],
|
159
|
126
|
},
|
160
|
127
|
{
|
161
|
|
- label: '公司',
|
162
|
|
- name: 'orgName',
|
|
128
|
+ label: '姓名',
|
|
129
|
+ name: 'userName',
|
163
|
130
|
type: FieldTypes.Text,
|
164
|
|
- placeholder: '请输入公司名称',
|
165
|
|
- value: userData.orgName,
|
166
|
|
- rules: [
|
167
|
|
- { required: true, message: '请输入公司名称' },
|
168
|
|
- ]
|
|
131
|
+ value: userData.userName,
|
|
132
|
+ rules: [{ required: true, message: '请输入姓名' }],
|
169
|
133
|
},
|
170
|
134
|
{
|
171
|
|
- label: '部门',
|
172
|
|
- name: 'department',
|
|
135
|
+ label: '登录名',
|
|
136
|
+ name: 'loginName',
|
173
|
137
|
type: FieldTypes.Text,
|
174
|
|
- placeholder: '请输入部门',
|
175
|
|
- value: userData.department,
|
176
|
|
- rules: [
|
177
|
|
- { required: true, message: '请输入部门' },
|
178
|
|
- ]
|
|
138
|
+ placeholder: '请输入登录名',
|
|
139
|
+ value: userData.loginName,
|
179
|
140
|
},
|
180
|
141
|
{
|
181
|
|
- label: '职位',
|
182
|
|
- name: 'position',
|
|
142
|
+ label: '电话',
|
|
143
|
+ name: 'phone',
|
183
|
144
|
type: FieldTypes.Text,
|
184
|
|
- placeholder: '请输入职位',
|
185
|
|
- value: userData.position,
|
|
145
|
+ placeholder: '请输入电话号码',
|
|
146
|
+ value: userData.phone,
|
186
|
147
|
rules: [
|
187
|
|
- { required: true, message: '请输入职位' },
|
188
|
|
- ]
|
|
148
|
+ {
|
|
149
|
+ required: true,
|
|
150
|
+ pattern: new RegExp('^1[0-9]{10}$'),
|
|
151
|
+ message: '请输入正确的电话号码',
|
|
152
|
+ },
|
|
153
|
+ ],
|
|
154
|
+ help: '登录账号为手机号 默认密码:12345',
|
189
|
155
|
},
|
|
156
|
+
|
190
|
157
|
{
|
191
|
158
|
label: '是否置业顾问',
|
192
|
159
|
name: 'isConsultant',
|
193
|
160
|
type: FieldTypes.Switch,
|
194
|
161
|
value: userData.isConsultant,
|
195
|
|
- props: {disabled: userData.isConsultant},
|
|
162
|
+ props: {
|
|
163
|
+ disabled: userData.isConsultant,
|
|
164
|
+ onChange: e => {
|
|
165
|
+ console.log(e, '------');
|
|
166
|
+ setIsConsultant(e);
|
|
167
|
+ },
|
|
168
|
+ },
|
196
|
169
|
},
|
197
|
170
|
{
|
198
|
|
- label: '电话',
|
199
|
|
- name: 'phone',
|
|
171
|
+ label: '部门',
|
|
172
|
+ name: 'department',
|
200
|
173
|
type: FieldTypes.Text,
|
201
|
|
- placeholder: '请输入电话号码',
|
202
|
|
- value: userData.phone,
|
203
|
|
- rules: [
|
204
|
|
- {
|
205
|
|
- required: true,
|
206
|
|
- pattern: new RegExp('^1[0-9]{10}$'),
|
207
|
|
- message: '请输入正确的电话号码',
|
208
|
|
- },
|
209
|
|
- ]
|
|
174
|
+ placeholder: '请输入部门',
|
|
175
|
+ value: userData.department,
|
|
176
|
+ rules: [{ required: true, message: '请输入部门' }],
|
210
|
177
|
},
|
211
|
178
|
{
|
212
|
|
- label: '登录名',
|
213
|
|
- name: 'loginName',
|
|
179
|
+ label: '岗位类别',
|
|
180
|
+ name: 'position',
|
214
|
181
|
type: FieldTypes.Text,
|
215
|
|
- placeholder: '请输入登录名',
|
216
|
|
- value: userData.loginName,
|
217
|
|
- // hidden: () => consultantChecked,
|
218
|
|
- help: '默认密码:123456',
|
|
182
|
+ placeholder: '请输入岗位类别',
|
|
183
|
+ value: userData.position,
|
|
184
|
+ rules: [{ required: true, message: '请输入岗位类别' }],
|
219
|
185
|
},
|
|
186
|
+
|
220
|
187
|
{
|
221
|
188
|
label: '角色',
|
222
|
189
|
name: 'roleIds',
|
223
|
|
- render: <Select
|
224
|
|
- mode="multiple"
|
225
|
|
- style={{ width: '100%' }}
|
226
|
|
- placeholder="请选择标签"
|
227
|
|
- onChange={tagsChange} >
|
228
|
|
- {roleData.map(item => (
|
229
|
|
- <Select.Option key={item.roleId} value={item.roleId}>
|
230
|
|
- {item.roleName}
|
231
|
|
- </Select.Option>
|
232
|
|
- ))}
|
233
|
|
- </Select>,
|
|
190
|
+ render: (
|
|
191
|
+ <Select mode="multiple" style={{ width: '100%' }} placeholder="请选择标签">
|
|
192
|
+ {roleData.map(item => (
|
|
193
|
+ <Select.Option key={item.roleId} value={item.roleId}>
|
|
194
|
+ {item.roleName}
|
|
195
|
+ </Select.Option>
|
|
196
|
+ ))}
|
|
197
|
+ </Select>
|
|
198
|
+ ),
|
234
|
199
|
value: userData.roleIds,
|
235
|
200
|
},
|
236
|
201
|
{
|
237
|
|
- label: '授权项目', //改成组织机构
|
238
|
|
- name: 'buildingId',
|
239
|
|
- render: <BuildingSelection userData={userData} />,
|
240
|
|
- value: userData.buildingId,
|
241
|
|
- hidden: () => !consultantChecked,
|
242
|
|
- rules: [
|
243
|
|
- { required: true, message: '请选择授权项目' },
|
244
|
|
- ]
|
|
202
|
+ label: '组织机构',
|
|
203
|
+ name: 'institutionId',
|
|
204
|
+ render: <OrganizationSelect />,
|
|
205
|
+ value: userData.institutionId,
|
|
206
|
+ rules: [{ required: true, message: '组织机构' }],
|
245
|
207
|
},
|
246
|
208
|
{
|
247
|
209
|
label: '授权项目',
|
248
|
|
- name: 'buildingIds',
|
249
|
|
- render: <Select
|
250
|
|
- mode="multiple"
|
251
|
|
- showSearch
|
252
|
|
- style={{ width: '100%' }}
|
253
|
|
- placeholder="请选择授权项目"
|
254
|
|
- filterOption={(input, option) =>
|
255
|
|
- option.props.children && option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
256
|
|
- }
|
257
|
|
- >
|
258
|
|
- {buildData.map(item => (
|
259
|
|
- <Select.Option key={item.buildingId} value={item.buildingId}>
|
260
|
|
- {item.buildingName}
|
261
|
|
- </Select.Option>
|
262
|
|
- ))}
|
263
|
|
- </Select>,
|
264
|
|
- value: userData.buildingIds,
|
265
|
|
- hidden: () => consultantChecked,
|
266
|
|
- rules: [
|
267
|
|
- { required: true, message: '请选择授权项目' },
|
268
|
|
- ]
|
|
210
|
+ name: 'buildingId',
|
|
211
|
+ render: <BuildingSelection userData={userData} />,
|
|
212
|
+ value: userData.buildingId,
|
|
213
|
+ hidden: () => !isConsultant,
|
|
214
|
+ rules: [{ required: true, message: '请选择授权项目' }],
|
269
|
215
|
},
|
|
216
|
+
|
270
|
217
|
{
|
271
|
|
- label: '置业顾问头像',
|
|
218
|
+ label: '背景图',
|
272
|
219
|
name: 'photo',
|
273
|
220
|
type: FieldTypes.ImageUploader,
|
274
|
|
- extra: '建议图片尺寸:320*320px,比例1:1,格式:jpg,用于置业顾问头像,限制大小:100k',
|
|
221
|
+ // extra: '建议图片尺寸:320*320px,比例1:1,格式:jpg,用于置业顾问头像,限制大小:100k',
|
275
|
222
|
value: userData.photo,
|
276
|
|
- beforeUpload: (e) => photoBeforeUpload(e),
|
277
|
|
- rules: [
|
278
|
|
- { required: true, message: '请选择头像' },
|
279
|
|
- ]
|
|
223
|
+ // beforeUpload: e => photoBeforeUpload(e),
|
|
224
|
+ rules: [{ required: true, message: '请选择图片' }],
|
280
|
225
|
},
|
281
|
226
|
{
|
282
|
227
|
label: '简介',
|
283
|
228
|
name: 'description',
|
284
|
|
- render: <TextArea ></TextArea>,
|
285
|
|
- value: userData.description
|
|
229
|
+ render: <TextArea></TextArea>,
|
|
230
|
+ value: userData.description,
|
286
|
231
|
// className={channels.inpuitTxt}
|
287
|
232
|
},
|
288
|
|
- {
|
289
|
|
- label: '状态',
|
290
|
|
- name: 'status',
|
291
|
|
- render: <Radio.Group initialValue="1" buttonStyle="solid">
|
292
|
|
- <Radio.Button value="9">禁用</Radio.Button>
|
293
|
|
- <Radio.Button value="1">启用</Radio.Button>
|
294
|
|
- </Radio.Group>,
|
295
|
|
- value: userData.status != null ? userData.status.toString() : "1"
|
296
|
|
- },
|
|
233
|
+ // {
|
|
234
|
+ // label: '状态',
|
|
235
|
+ // name: 'status',
|
|
236
|
+ // render: <Radio.Group initialValue="1" buttonStyle="solid">
|
|
237
|
+ // <Radio.Button value="9">禁用</Radio.Button>
|
|
238
|
+ // <Radio.Button value="1">启用</Radio.Button>
|
|
239
|
+ // </Radio.Group>,
|
|
240
|
+ // value: userData.status != null ? userData.status.toString() : "1"
|
|
241
|
+ // },
|
297
|
242
|
{
|
298
|
243
|
label: '权重',
|
299
|
244
|
name: 'weight',
|
300
|
245
|
type: FieldTypes.Number,
|
301
|
|
- render: <Input type="number" style={{ width: 150}} />,
|
|
246
|
+ render: <Input type="number" style={{ width: 150 }} />,
|
302
|
247
|
value: userData.weight,
|
303
|
248
|
help: '数字越大越靠前',
|
304
|
249
|
},
|
305
|
|
- ]
|
306
|
|
-
|
307
|
|
-
|
308
|
|
- return <Card>
|
309
|
|
- <XForm onSubmit={handleSubmit} fields={fields.filter(Boolean)} onCancel={() => router.go(-1)}></XForm>
|
|
250
|
+ ];
|
310
|
251
|
|
311
|
|
- </Card>
|
312
|
|
-}
|
|
252
|
+ return (
|
|
253
|
+ <Card>
|
|
254
|
+ <XForm
|
|
255
|
+ onSubmit={handleSubmit}
|
|
256
|
+ fields={fields.filter(Boolean)}
|
|
257
|
+ onCancel={() => router.go(-1)}
|
|
258
|
+ ></XForm>
|
|
259
|
+ </Card>
|
|
260
|
+ );
|
|
261
|
+};
|
313
|
262
|
|
314
|
|
-export default StaffEdit
|
|
263
|
+export default StaffEdit;
|