|
@@ -1,5 +1,5 @@
|
1
|
1
|
import React, { useState, useEffect } from 'react';
|
2
|
|
-import { Form, Input, Button, Icon, Select, Tabs, Radio, DatePicker,message } from 'antd';
|
|
2
|
+import { Form, Input, Button, Icon, Select, Tabs, Radio, DatePicker, message } from 'antd';
|
3
|
3
|
import { FormattedMessage } from 'umi-plugin-react/locale';
|
4
|
4
|
import styles from '../style/GoodsList.less';
|
5
|
5
|
import moment from 'moment';
|
|
@@ -8,37 +8,42 @@ import BuildSelect from '../../components/SelectButton/BuildSelect'
|
8
|
8
|
import XForm, { FieldTypes } from '../../components/XForm';
|
9
|
9
|
import Wangedit from '../../components/Wangedit/Wangedit'
|
10
|
10
|
import request from '../../utils/request'
|
|
11
|
+import PosterBottom from '../../assets/bottom.png'
|
|
12
|
+import yinhao from '../../assets/yinhao.png'
|
|
13
|
+import ImageUploader from '../../components/XForm/ImageUpload';
|
|
14
|
+import logo from '../../assets/logo.png';
|
11
|
15
|
|
12
|
16
|
const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
|
17
|
+
|
13
|
18
|
/**
|
14
|
19
|
*
|
15
|
20
|
*
|
16
|
21
|
* @param {*} props
|
17
|
22
|
* @returns
|
18
|
23
|
*/
|
19
|
|
- const Edit = (props) => {
|
20
|
|
- const [ tab, changeTab ] = useState('basic')
|
|
24
|
+const Edit = (props) => {
|
|
25
|
+ const [tab, changeTab] = useState('basic')
|
21
|
26
|
const dynamicId = props.location.query.dynamicId
|
22
|
|
- const [ dynamicData, setDynamicData ] = useState({})
|
23
|
|
- if(dynamicId){
|
|
27
|
+ const [dynamicData, setDynamicData] = useState({})
|
|
28
|
+ if (dynamicId) {
|
24
|
29
|
useEffect(() => {
|
25
|
30
|
getDynamicData(dynamicId);
|
26
|
|
- },[])
|
|
31
|
+ }, [])
|
27
|
32
|
|
28
|
|
- // 查询列表
|
29
|
|
- const getDynamicData = (dynamicId) => {
|
30
|
|
- request({
|
|
33
|
+ // 查询列表
|
|
34
|
+ const getDynamicData = (dynamicId) => {
|
|
35
|
+ request({
|
31
|
36
|
url: '/api/admin/buildingDynamic/Details',
|
32
|
37
|
method: 'GET',
|
33
|
38
|
params: { dynamicId },
|
34
|
|
- }).then((data) => {
|
|
39
|
+ }).then((data) => {
|
35
|
40
|
console.log(data)
|
36
|
41
|
setDynamicData(data)
|
37
|
|
- })
|
38
|
|
- }
|
|
42
|
+ })
|
|
43
|
+ }
|
39
|
44
|
}
|
40
|
45
|
|
41
|
|
- const cancelPage = () =>{
|
|
46
|
+ const cancelPage = () => {
|
42
|
47
|
router.push({
|
43
|
48
|
pathname: '/activity/ActivityList',
|
44
|
49
|
});
|
|
@@ -52,7 +57,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
52
|
57
|
render: <BuildSelect />,
|
53
|
58
|
value: dynamicData.buildingId,
|
54
|
59
|
rules: [
|
55
|
|
- {required: true, message: '请选择所属项目'},
|
|
60
|
+ { required: true, message: '请选择所属项目' },
|
56
|
61
|
]
|
57
|
62
|
},
|
58
|
63
|
{
|
|
@@ -67,16 +72,16 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
67
|
72
|
type: FieldTypes.Text,
|
68
|
73
|
value: dynamicData.title,
|
69
|
74
|
rules: [
|
70
|
|
- {required: true, message: '请输入活动标题'},
|
|
75
|
+ { required: true, message: '请输入活动标题' },
|
71
|
76
|
]
|
72
|
77
|
},
|
73
|
78
|
{
|
74
|
79
|
label: '活动时间',
|
75
|
80
|
name: 'activityTime',
|
76
|
81
|
type: FieldTypes.RangePicker,
|
77
|
|
- value: dynamicData.startDate != null ? [moment(dynamicData.startDate,'YYYY-MM-DD'),moment(dynamicData.endDate,'YYYY-MM-DD')] : null,
|
|
82
|
+ value: dynamicData.startDate != null ? [moment(dynamicData.startDate, 'YYYY-MM-DD'), moment(dynamicData.endDate, 'YYYY-MM-DD')] : null,
|
78
|
83
|
rules: [
|
79
|
|
- {required: true, message: '请选择活动时间'},
|
|
84
|
+ { required: true, message: '请选择活动时间' },
|
80
|
85
|
]
|
81
|
86
|
},
|
82
|
87
|
{
|
|
@@ -85,7 +90,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
85
|
90
|
type: FieldTypes.Text,
|
86
|
91
|
value: dynamicData.address,
|
87
|
92
|
rules: [
|
88
|
|
- {required: true, message: '请输入活动地点'},
|
|
93
|
+ { required: true, message: '请输入活动地点' },
|
89
|
94
|
]
|
90
|
95
|
},
|
91
|
96
|
{
|
|
@@ -94,7 +99,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
94
|
99
|
type: FieldTypes.Text,
|
95
|
100
|
value: dynamicData.enlistNum,
|
96
|
101
|
rules: [
|
97
|
|
- {required: true, message: '请输入活动人数'},
|
|
102
|
+ { required: true, message: '请输入活动人数' },
|
98
|
103
|
]
|
99
|
104
|
},
|
100
|
105
|
{
|
|
@@ -107,24 +112,24 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
107
|
112
|
label: '是否需要报名',
|
108
|
113
|
name: 'isEnlist',
|
109
|
114
|
render: <Radio.Group name="radiogroup">
|
110
|
|
- <Radio value={1}>是</Radio>
|
111
|
|
- <Radio value={0}>否</Radio>
|
112
|
|
- </Radio.Group>,
|
113
|
|
- value: dynamicData.isEnlist != null ? dynamicData.isEnlist-0 : 1,
|
|
115
|
+ <Radio value={1}>是</Radio>
|
|
116
|
+ <Radio value={0}>否</Radio>
|
|
117
|
+ </Radio.Group>,
|
|
118
|
+ value: dynamicData.isEnlist != null ? dynamicData.isEnlist - 0 : 1,
|
114
|
119
|
},
|
115
|
120
|
{
|
116
|
121
|
label: '报名时间',
|
117
|
122
|
name: 'signupTime',
|
118
|
123
|
type: FieldTypes.RangePicker,
|
119
|
|
- value: dynamicData.enlistStart != null ? [moment(dynamicData.enlistStart,'YYYY-MM-DD'),moment(dynamicData.enlistEnd,'YYYY-MM-DD')] : null,
|
|
124
|
+ value: dynamicData.enlistStart != null ? [moment(dynamicData.enlistStart, 'YYYY-MM-DD'), moment(dynamicData.enlistEnd, 'YYYY-MM-DD')] : null,
|
120
|
125
|
rules: [
|
121
|
|
- {required: true, message: '请选择报名时间'},
|
|
126
|
+ { required: true, message: '请选择报名时间' },
|
122
|
127
|
]
|
123
|
128
|
},
|
124
|
129
|
]
|
125
|
|
-
|
126
|
|
- const handleSubmit = val => {
|
127
|
|
- let {activityTime,signupTime, ...submitValue} = val
|
|
130
|
+
|
|
131
|
+ const handleSubmit = val => {
|
|
132
|
+ let { activityTime, signupTime, ...submitValue } = val
|
128
|
133
|
const [startDate, endDate] = activityTime
|
129
|
134
|
submitValue.startDate = moment(startDate).format('YYYY-MM-DD');
|
130
|
135
|
submitValue.endDate = moment(endDate).format('YYYY-MM-DD');
|
|
@@ -132,7 +137,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
132
|
137
|
submitValue.enlistStart = moment(enlistStart).format('YYYY-MM-DD');
|
133
|
138
|
submitValue.enlistEnd = moment(enlistEnd).format('YYYY-MM-DD');
|
134
|
139
|
console.log('submit data --->', submitValue)
|
135
|
|
- if(dynamicId){
|
|
140
|
+ if (dynamicId) {
|
136
|
141
|
submitValue.dynamicId = dynamicId
|
137
|
142
|
request({
|
138
|
143
|
url: '/api/admin/buildingDynamic/update',
|
|
@@ -143,7 +148,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
143
|
148
|
}).catch((err) => {
|
144
|
149
|
message.info(err.msg || err.message)
|
145
|
150
|
})
|
146
|
|
- }else{
|
|
151
|
+ } else {
|
147
|
152
|
request({
|
148
|
153
|
url: '/api/admin/buildingDynamic/add',
|
149
|
154
|
method: 'POST',
|
|
@@ -155,16 +160,83 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
155
|
160
|
})
|
156
|
161
|
}
|
157
|
162
|
}
|
158
|
|
-
|
|
163
|
+
|
159
|
164
|
return <XForm onSubmit={handleSubmit} onCancel={cancelPage} fields={fields}></XForm>
|
160
|
165
|
}
|
161
|
|
-
|
|
166
|
+
|
162
|
167
|
const Poster = (props) => {
|
163
|
|
- return <div>Poster</div>
|
|
168
|
+
|
|
169
|
+ return <div style={{ display: 'flex' }}>
|
|
170
|
+ <div style={{ width: '420px', height: '900px', display: 'inline-block', marginTop: '30px' }}>
|
|
171
|
+ <div style={{ width: '375px', height: '785px', backgroundColor: '#fff', boxShadow: '0px 0px 16px 6px rgba(0,0,0,0.15)', position: 'relative', margin: '0 auto' }}>
|
|
172
|
+
|
|
173
|
+ <img style={{ width: '100%', height: '300px' }} src="http://img0.imgtn.bdimg.com/it/u=4246326797,2657995307&fm=26&gp=0.jpg" alt="" />
|
|
174
|
+
|
|
175
|
+ <div style={{ display: 'flex', alignItems: 'center', marginTop: '-24px' }}>
|
|
176
|
+ <img style={{ width: '70px', height: '70px', border: '4px solid #fff', borderRadius: '35px', marginLeft: '16px' }} src="http://img0.imgtn.bdimg.com/it/u=3463541938,2540701974&fm=26&gp=0.jpg" alt="" />
|
|
177
|
+ <span style={{ color: '#222', fontWeight: '600', margin: '24px 10px 0 14px', fontSize: '17px' }}>喵喵</span>
|
|
178
|
+ <span style={{ color: '#999', marginTop: '25px', fontSize: '17px' }}>邀您阅读</span>
|
|
179
|
+ <span style={{ color: '#999', margin: '25px 0 0 60px', fontSize: '17px' }}>2019.09.21</span>
|
|
180
|
+ </div>
|
|
181
|
+ <p style={{
|
|
182
|
+ margin: '10px 20px', fontSize: '20px', color: '#222', fontWeight: '600',
|
|
183
|
+ display: '-webkit-box', lineClamp: '3', height: '60px',
|
|
184
|
+ WebkitLineClamp: '2',
|
|
185
|
+ WebkitBoxOrient: 'vertical',
|
|
186
|
+ overflow: 'hidden',
|
|
187
|
+ textOverflow: 'ellipsis'
|
|
188
|
+ }}>破晓·内容生态下半场的版权到企业高峰论坛会议破晓·内容生态下半场的版权到企业高峰论坛活动</p>
|
|
189
|
+
|
|
190
|
+ <img src={yinhao} style={{ width: '30px', marginLeft: '10px' }} alt="" />
|
|
191
|
+ <p style={{
|
|
192
|
+ margin: '16px 20px 28px 20px', fontSize: '17px', color: '#999',
|
|
193
|
+ display: '-webkit-box', lineClamp: '3', height: '76px',
|
|
194
|
+ WebkitLineClamp: '3',
|
|
195
|
+ WebkitBoxOrient: 'vertical',
|
|
196
|
+ overflow: 'hidden',
|
|
197
|
+ textOverflow: 'ellipsis'
|
|
198
|
+ }}>活动描述:破晓·内容生态下半场的版权到企业高峰论坛活动破晓·内容生态下半场的版权到企业高峰论坛活动破晓·内容生态下半场的版权到企业高峰论坛活动</p>
|
|
199
|
+ <img src={PosterBottom} style={{ width: '100%' }} alt="" />
|
|
200
|
+ </div>
|
|
201
|
+ <p style={{ textAlign: 'center', fontSize: '19px', color: '#666', marginTop: '30px' }}>海报模板</p>
|
|
202
|
+ </div>
|
|
203
|
+ <div></div>
|
|
204
|
+ </div>
|
164
|
205
|
}
|
165
|
|
-
|
|
206
|
+
|
166
|
207
|
const Share = (props) => {
|
167
|
|
- return <div>Share</div>
|
|
208
|
+ const fields = [
|
|
209
|
+ {
|
|
210
|
+ label: '分享模板',
|
|
211
|
+ name: 'buildingId',
|
|
212
|
+ render: () => <div style={{ margin: ' 10px 20px' }}>
|
|
213
|
+ <p style={{ display: 'flex', alignItems: 'center', fontSize: '14px', color: '#999', margin: '0', lineHeight: '0' }}><img src={logo} style={{ width: '22px', marginRight: '10px' }} />知与行互动</p>
|
|
214
|
+ <p style={{ fontSize: '16px', color: '#222', fontWeight: '600', margin: '0' }}>置业V客厅 精准获客平台</p>
|
|
215
|
+ <img style={{ width: '200px', height: '140px' }} src="http://house.china.com.cn/nanjing/UserFiles/20171124/11070256.jpg" alt="" />
|
|
216
|
+ </div>,
|
|
217
|
+ },
|
|
218
|
+ {
|
|
219
|
+ label: '海报标题',
|
|
220
|
+ name: 'newsTypeName',
|
|
221
|
+ type: FieldTypes.Text,
|
|
222
|
+ value: '',
|
|
223
|
+ rules: [
|
|
224
|
+ { required: true, message: '请输入咨询名称' },
|
|
225
|
+ ]
|
|
226
|
+ },
|
|
227
|
+ {
|
|
228
|
+ label: '类型图',
|
|
229
|
+ name: 'newsTypeImg',
|
|
230
|
+ type: FieldTypes.ImageUploader,
|
|
231
|
+ value: 'newsTypeImg',
|
|
232
|
+ },
|
|
233
|
+ ]
|
|
234
|
+ const handleSubmit = (values) => {
|
|
235
|
+
|
|
236
|
+ }
|
|
237
|
+ return <div>
|
|
238
|
+ <XForm onSubmit={handleSubmit} onCancel={cancelPage} fields={fields}></XForm>
|
|
239
|
+ </div>
|
168
|
240
|
}
|
169
|
241
|
|
170
|
242
|
return (
|
|
@@ -177,13 +249,13 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
177
|
249
|
</Radio.Group>
|
178
|
250
|
</div>
|
179
|
251
|
<div>
|
180
|
|
- { tab === 'basic' && <Basic /> }
|
181
|
|
- { tab === 'poster' && <Poster /> }
|
182
|
|
- { tab === 'share' && <Share /> }
|
|
252
|
+ {tab === 'basic' && <Basic />}
|
|
253
|
+ {tab === 'poster' && <Poster />}
|
|
254
|
+ {tab === 'share' && <Share />}
|
183
|
255
|
</div>
|
184
|
256
|
</div>
|
185
|
257
|
);
|
186
|
|
- }
|
|
258
|
+}
|
187
|
259
|
|
188
|
260
|
|
189
|
261
|
|