zlisen 3 anni fa
parent
commit
4dfebf20ef

+ 57
- 0
src/components/SelectButton/OrganizationSelect.jsx Vedi File

@@ -0,0 +1,57 @@
1
+import React, { useState, useEffect } from 'react';
2
+import { Select } from 'antd';
3
+import apis from '../../services/apis';
4
+import request from '../../utils/request'
5
+
6
+const { Option } = Select;
7
+
8
+
9
+/**
10
+ *
11
+ *
12
+ * @param {*} props
13
+ * @returns
14
+ */
15
+const OrganizationSelect = props => {
16
+  const [data, setData] = useState([])
17
+  const [value, setValue] = useState([])
18
+  useEffect(() => {
19
+    getBuildList();
20
+  }, [])
21
+
22
+  const getBuildList = e => {
23
+    request({ ...apis.institution.list, params: { pageNum: 1, pageSize: 999 } }).then(data => {
24
+        setData(data)
25
+        checkValue(data)
26
+        // 默认选中第一个
27
+    })
28
+  }
29
+
30
+
31
+  const checkValue = (data) => {
32
+    if (props.value) {
33
+      const tempData = data.filter(f => f.institutionId == props.value)
34
+      const va = (tempData.length > 0) ? props.value : '项目已下线,请重新选择项目'
35
+      props.onChange(va)
36
+
37
+    }
38
+  }
39
+
40
+  return (
41
+      <Select
42
+      showSearch
43
+      value={props.value}
44
+      style={{ width: '300px' }}
45
+      placeholder="请选择项目"
46
+      onChange={props.onChange}
47
+      filterOption={(input, option) =>
48
+        option.props.children && option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
49
+      }>
50
+          {/* <Option key="" value="">全部项目</Option> */}
51
+          {data.map(building => (
52
+            <Option key={building.institutionId} value={building.institutionId}>{building.institutionName}</Option>
53
+          ))}
54
+      </Select>
55
+  )
56
+}
57
+export default OrganizationSelect

+ 1
- 1
src/pages/activity/SignupActivity/edit/Share.jsx Vedi File

@@ -9,7 +9,7 @@ import Wangedit from '@/components/Wangedit/Wangedit';
9 9
 import request from '@/utils/request';
10 10
 import yinhao from '@/assets/yinhao.png';
11 11
 import ImageUploader from '@/components/XForm/ImageUpload';
12
-import logo from '@/assets/logo.png';
12
+import logo from '@/assets/logo.svg';
13 13
 import touxiang from '@/assets/touxiang.jpg';
14 14
 import poster1 from '@/assets/poster1.png';
15 15
 import poster2 from '@/assets/poster2.png';

+ 1
- 1
src/pages/activity/groupRoomActivity/edit/Share.jsx Vedi File

@@ -9,7 +9,7 @@ import Wangedit from '@/components/Wangedit/Wangedit';
9 9
 import request from '@/utils/request';
10 10
 import yinhao from '@/assets/yinhao.png';
11 11
 import ImageUploader from '@/components/XForm/ImageUpload';
12
-import logo from '@/assets/logo.png';
12
+import logo from '@/assets/logo.svg';
13 13
 import touxiang from '@/assets/touxiang.jpg';
14 14
 import poster1 from '@/assets/poster1.png';
15 15
 import poster2 from '@/assets/poster2.png';

+ 1
- 1
src/pages/activity/lookHouseActivity/edit/Share.jsx Vedi File

@@ -9,7 +9,7 @@ import Wangedit from '@/components/Wangedit/Wangedit';
9 9
 import request from '@/utils/request';
10 10
 import yinhao from '@/assets/yinhao.png';
11 11
 import ImageUploader from '@/components/XForm/ImageUpload';
12
-import logo from '@/assets/logo.png';
12
+import logo from '@/assets/logo.svg';
13 13
 import touxiang from '@/assets/touxiang.jpg';
14 14
 import poster1 from '@/assets/poster1.png';
15 15
 import poster2 from '@/assets/poster2.png';

+ 161
- 212
src/pages/staff/staff/Edit/index.jsx Vedi File

@@ -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;

+ 3
- 3
src/pages/staff/staff/list/index.jsx Vedi File

@@ -118,7 +118,7 @@ export default props => {
118 118
       render: () => <BuildingSelect style={{ width: 160 }} />,
119 119
     },
120 120
     {
121
-      name: 'code',
121
+      name: 'jobNumber',
122 122
       label: '工号',
123 123
       placeholder: '请输入工号',
124 124
     },
@@ -154,8 +154,8 @@ export default props => {
154 154
   const tableColumns = [
155 155
     {
156 156
       title: '工号',
157
-      key: 'code',
158
-      dataIndex: 'code',
157
+      key: 'jobNumber',
158
+      dataIndex: 'jobNumber',
159 159
       align: 'center',
160 160
     },
161 161
     {

+ 10
- 0
src/services/apis.js Vedi File

@@ -2100,4 +2100,14 @@ export default {
2100 2100
     },
2101 2101
   },
2102 2102
   // admin/redPacket/money/{id}
2103
+  institution: {
2104
+
2105
+    list: {
2106
+      method: 'GET',
2107
+      url: `${prefix}/institution/list`,
2108
+      action: 'admin.institution.list.get',
2109
+    },
2110
+   
2111
+  },
2112
+
2103 2113
 }