|
@@ -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 apis from '../../../services/apis';
|
|
@@ -7,7 +7,7 @@ import moment from 'moment';
|
7
|
7
|
import router from 'umi/router';
|
8
|
8
|
import BuildSelect from '../../../components/SelectButton/BuildSelect2'
|
9
|
9
|
import NewsTypeSelect from '../../../components/SelectButton/NewTypeSelect'
|
10
|
|
-import { FieldTypes, createForm } from '../../../components/XForm';
|
|
10
|
+import { FieldTypes, createForm } from '../../../components/XForm';
|
11
|
11
|
import Wangedit from '../../../components/Wangedit/Wangedit'
|
12
|
12
|
import request from '../../../utils/request'
|
13
|
13
|
import ImageUploader from '../../../components/XForm/ImageUpload';
|
|
@@ -22,7 +22,7 @@ import Prompt from 'umi/prompt';
|
22
|
22
|
const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
|
23
|
23
|
const { TextArea } = Input;
|
24
|
24
|
|
25
|
|
-let detailVisible = true;
|
|
25
|
+let detailVisible = false;
|
26
|
26
|
let urlVisible = false;
|
27
|
27
|
|
28
|
28
|
const setExtraData = (data) => {
|
|
@@ -31,12 +31,12 @@ const setExtraData = (data) => {
|
31
|
31
|
}
|
32
|
32
|
|
33
|
33
|
const handleFormValueChange = (props, changedValues, allValues) => {
|
34
|
|
- setExtraData(allValues)
|
|
34
|
+ setExtraData(allValues)
|
35
|
35
|
}
|
36
|
36
|
|
37
|
37
|
const XForm = createForm({ onValuesChange: handleFormValueChange })
|
38
|
38
|
|
39
|
|
-const cancelPage = () => {
|
|
39
|
+const cancelPage = () =>{
|
40
|
40
|
router.push({
|
41
|
41
|
pathname: '/news/list/NewsList',
|
42
|
42
|
});
|
|
@@ -44,7 +44,7 @@ const cancelPage = () => {
|
44
|
44
|
|
45
|
45
|
const Basic = (props) => {
|
46
|
46
|
const { data: dynamicData } = props
|
47
|
|
- const [changeBuildingId, setChangeBuildingIdData] = useState('')
|
|
47
|
+ const [ changeBuildingId, setChangeBuildingIdData ] = useState('')
|
48
|
48
|
|
49
|
49
|
const handleBuildingChange = (e) => {
|
50
|
50
|
console.log(e)
|
|
@@ -55,10 +55,10 @@ const Basic = (props) => {
|
55
|
55
|
{
|
56
|
56
|
label: '意向项目',
|
57
|
57
|
name: 'buildingId',
|
58
|
|
- render: <BuildSelect onChange={(e => handleBuildingChange(e))} />,
|
|
58
|
+ render: <BuildSelect onChange={(e => handleBuildingChange(e))}/>,
|
59
|
59
|
value: dynamicData.buildingId,
|
60
|
60
|
rules: [
|
61
|
|
- { required: true, message: '请选择所属项目' },
|
|
61
|
+ {required: true, message: '请选择所属项目'},
|
62
|
62
|
]
|
63
|
63
|
},
|
64
|
64
|
{
|
|
@@ -68,7 +68,7 @@ const Basic = (props) => {
|
68
|
68
|
value: dynamicData.newsImg,
|
69
|
69
|
help: '建议图片尺寸:320*240px,比例5:4,格式:jpg,用于资讯列表',
|
70
|
70
|
rules: [
|
71
|
|
- { required: true, message: '请选择资讯列表' },
|
|
71
|
+ {required: true, message: '请选择资讯列表'},
|
72
|
72
|
]
|
73
|
73
|
},
|
74
|
74
|
{
|
|
@@ -77,28 +77,28 @@ const Basic = (props) => {
|
77
|
77
|
type: FieldTypes.Text,
|
78
|
78
|
value: dynamicData.newsName,
|
79
|
79
|
rules: [
|
80
|
|
- { required: true, message: '请输入资讯标题' },
|
|
80
|
+ {required: true, message: '请输入资讯标题'},
|
81
|
81
|
]
|
82
|
82
|
},
|
83
|
83
|
{
|
84
|
84
|
label: '资讯类型',
|
85
|
85
|
name: 'newsTypeId',
|
86
|
|
- render: <NewsTypeSelect buildingId={changeBuildingId || dynamicData.buildingId} />,
|
|
86
|
+ render: <NewsTypeSelect buildingId={changeBuildingId || dynamicData.buildingId}/>,
|
87
|
87
|
value: dynamicData.newsTypeId,
|
88
|
88
|
rules: [
|
89
|
|
- { required: true, message: '请选择资讯类型' },
|
|
89
|
+ {required: true, message: '请选择资讯类型'},
|
90
|
90
|
]
|
91
|
91
|
},
|
92
|
92
|
{
|
93
|
93
|
label: '资讯详情',
|
94
|
94
|
name: 'newsDetailType',
|
95
|
|
- render: <Radio.Group >
|
96
|
|
- <Radio value={1}>自定义</Radio>
|
97
|
|
- <Radio value={0}>公众号链接</Radio>
|
98
|
|
- </Radio.Group>,
|
99
|
|
- value: dynamicData.newsDetailType === undefined ? 1 : dynamicData.newsDetailType - 0,
|
|
95
|
+ render: <Radio.Group>
|
|
96
|
+ <Radio value={1}>自定义</Radio>
|
|
97
|
+ <Radio value={0}>公众号链接</Radio>
|
|
98
|
+ </Radio.Group>,
|
|
99
|
+ value: dynamicData.newsDetailType - 0,
|
100
|
100
|
rules: [
|
101
|
|
- { required: true, message: '请选择资讯类型' },
|
|
101
|
+ {required: true, message: '请选择资讯类型'},
|
102
|
102
|
]
|
103
|
103
|
},
|
104
|
104
|
{
|
|
@@ -108,7 +108,7 @@ const Basic = (props) => {
|
108
|
108
|
hidden: () => !detailVisible,
|
109
|
109
|
value: dynamicData.newsDetail,
|
110
|
110
|
rules: [
|
111
|
|
- { required: true, message: '请输入详情内容' },
|
|
111
|
+ {required: true, message: '请输入详情内容'},
|
112
|
112
|
]
|
113
|
113
|
},
|
114
|
114
|
{
|
|
@@ -119,48 +119,48 @@ const Basic = (props) => {
|
119
|
119
|
value: dynamicData.newsDetail,
|
120
|
120
|
help: "只能填写同一主体公众号的文章链接",
|
121
|
121
|
rules: [
|
122
|
|
- { required: true, message: '请输入公众号链接' },
|
|
122
|
+ {required: true, message: '请输入公众号链接'},
|
123
|
123
|
]
|
124
|
124
|
},
|
125
|
125
|
]
|
126
|
126
|
|
127
|
|
- const handleSubmit = val => {
|
128
|
|
- console.log(dynamicData, '12312345')
|
129
|
|
- let { ...submitValue } = val
|
130
|
|
-
|
131
|
|
- if (dynamicData.newsId) {
|
|
127
|
+ const handleSubmit = val => {
|
|
128
|
+ console.log(dynamicData,'12312345')
|
|
129
|
+ let {...submitValue} = val
|
|
130
|
+
|
|
131
|
+ if(dynamicData.newsId){
|
132
|
132
|
submitValue.newsId = dynamicData.newsId
|
133
|
|
- request({ ...apis.news.put, urlData: { id: dynamicData.newsId }, data: { ...submitValue }, }).then((data) => {
|
|
133
|
+ request({ ...apis.news.put, urlData: {id: dynamicData.newsId}, data: { ...submitValue },}).then((data) => {
|
134
|
134
|
// cancelPage();
|
135
|
135
|
message.info("保存成功")
|
136
|
|
- console.log(data, 'data1')
|
|
136
|
+ console.log(data,'data1')
|
137
|
137
|
}).catch((err) => {
|
138
|
138
|
message.info(err.msg || err.message)
|
139
|
139
|
})
|
140
|
|
- } else {
|
141
|
|
- request({ ...apis.news.post, data: { ...submitValue }, }).then((data) => {
|
|
140
|
+ }else{
|
|
141
|
+ request({ ...apis.news.post, data: { ...submitValue },}).then((data) => {
|
142
|
142
|
// cancelPage();
|
143
|
143
|
message.info("保存成功")
|
144
|
144
|
router.push({
|
145
|
145
|
pathname: '/news/list/editNewsList',
|
146
|
146
|
query: {
|
147
|
|
- newsId: data.newsId
|
|
147
|
+ newsId:data.newsId
|
148
|
148
|
},
|
149
|
149
|
});
|
150
|
|
- console.log(data, 'data2')
|
|
150
|
+ console.log(data,'data2')
|
151
|
151
|
}).catch((err) => {
|
152
|
152
|
message.info(err.msg || err.message)
|
153
|
153
|
})
|
154
|
154
|
}
|
155
|
155
|
}
|
156
|
156
|
|
157
|
|
- const cancelPage = () => {
|
|
157
|
+ const cancelPage = () =>{
|
158
|
158
|
router.push({
|
159
|
159
|
pathname: '/news/list/NewsList',
|
160
|
160
|
});
|
161
|
161
|
}
|
162
|
|
-
|
163
|
|
- return <XForm onSubmit={handleSubmit} onCancel={cancelPage} fields={fields}></XForm>
|
|
162
|
+
|
|
163
|
+ return <XForm onSubmit={handleSubmit} onCancel={cancelPage} fields={fields}></XForm>
|
164
|
164
|
}
|
165
|
165
|
|
166
|
166
|
/**
|
|
@@ -169,20 +169,20 @@ const Basic = (props) => {
|
169
|
169
|
* @param {*} props
|
170
|
170
|
* @returns
|
171
|
171
|
*/
|
172
|
|
-const Edit = (props) => {
|
173
|
|
- const [tab, changeTab] = useState('basic')
|
|
172
|
+ const Edit = (props) => {
|
|
173
|
+ const [ tab, changeTab ] = useState('basic')
|
174
|
174
|
const newsId = props.location.query.newsId
|
175
|
|
- const [dynamicData, setDynamicData] = useState({})
|
|
175
|
+ const [ dynamicData, setDynamicData ] = useState({})
|
176
|
176
|
|
177
|
|
- useEffect(() => {
|
178
|
|
- if (newsId) {
|
179
|
|
- getDynamicData(newsId);
|
180
|
|
- }
|
181
|
|
- }, [newsId])
|
|
177
|
+ useEffect(() => {
|
|
178
|
+ if(newsId){
|
|
179
|
+ getDynamicData(newsId);
|
|
180
|
+ }
|
|
181
|
+ },[newsId])
|
182
|
182
|
|
183
|
183
|
// 查询列表
|
184
|
184
|
const getDynamicData = (newsId) => {
|
185
|
|
- request({ ...apis.news.get, urlData: { id: newsId }, }).then((data) => {
|
|
185
|
+ request({ ...apis.news.get, urlData: { id: newsId },}).then((data) => {
|
186
|
186
|
setDynamicData(data)
|
187
|
187
|
setExtraData(data)
|
188
|
188
|
// detailVisible = data.newsDetailType == '1'
|
|
@@ -191,7 +191,7 @@ const Edit = (props) => {
|
191
|
191
|
console.log(err)
|
192
|
192
|
message.info(err.msg || err.message)
|
193
|
193
|
})
|
194
|
|
- }
|
|
194
|
+ }
|
195
|
195
|
|
196
|
196
|
const Poster = (props) => {
|
197
|
197
|
const [inputValue, changeInput] = useState('')
|
|
@@ -199,11 +199,11 @@ const Edit = (props) => {
|
199
|
199
|
const [imgValue, changeImg] = useState('')
|
200
|
200
|
const [posterId, setPosterId] = useState('')
|
201
|
201
|
|
202
|
|
- useEffect(() => {
|
203
|
|
- if (newsId) {
|
204
|
|
- request({ ...apis.activity.poster, params: { targetId: newsId, targetType: 'news' } }).then((data) => {
|
205
|
|
- console.log(data, "2222")
|
206
|
|
- if (data.length > 0) {
|
|
202
|
+ if(newsId){
|
|
203
|
+ useEffect(() => {
|
|
204
|
+ request({ ...apis.activity.poster, params: {targetId: newsId,targetType: 'news'} }).then((data) => {
|
|
205
|
+ console.log(data,"2222")
|
|
206
|
+ if(data.length > 0){
|
207
|
207
|
setPosterId(data[0].posterId)
|
208
|
208
|
changeImg(data[0].posterImg)
|
209
|
209
|
changeTextArea(data[0].posterDescription)
|
|
@@ -213,59 +213,40 @@ const Edit = (props) => {
|
213
|
213
|
message.info(err.msg || err.message)
|
214
|
214
|
})
|
215
|
215
|
getMiniappName()
|
216
|
|
- } else {
|
217
|
|
- getMiniappName()
|
218
|
|
- }
|
219
|
|
- }, [])
|
220
|
|
-
|
221
|
|
- // if(newsId){
|
222
|
|
- // useEffect(() => {
|
223
|
|
- // request({ ...apis.activity.poster, params: {targetId: newsId,targetType: 'news'} }).then((data) => {
|
224
|
|
- // console.log(data,"2222")
|
225
|
|
- // if(data.length > 0){
|
226
|
|
- // setPosterId(data[0].posterId)
|
227
|
|
- // changeImg(data[0].posterImg)
|
228
|
|
- // changeTextArea(data[0].posterDescription)
|
229
|
|
- // changeInput(data[0].posterTitle)
|
230
|
|
- // }
|
231
|
|
- // }).catch((err) => {
|
232
|
|
- // message.info(err.msg || err.message)
|
233
|
|
- // })
|
234
|
|
- // getMiniappName()
|
235
|
|
- // }, [])
|
236
|
|
- // }else{
|
237
|
|
- // getMiniappName()
|
238
|
|
- // }
|
|
216
|
+ }, [])
|
|
217
|
+ }else{
|
|
218
|
+ getMiniappName()
|
|
219
|
+ }
|
239
|
220
|
|
240
|
221
|
// 获取小程序名称
|
241
|
|
- const [miniappName, setMiniappName] = useState('')
|
242
|
|
- function getMiniappName() {
|
|
222
|
+ const [miniappName, setMiniappName] = useState('')
|
|
223
|
+ function getMiniappName() {
|
243
|
224
|
|
244
|
|
- request({ ...apis.building.getMiniappName }).then(res => {
|
245
|
|
-
|
246
|
|
- setMiniappName(res)
|
247
|
|
-
|
248
|
|
- })
|
249
|
|
- }
|
250
|
|
- const submitPoster = () => {
|
251
|
|
- if (newsId) {
|
252
|
|
- if (posterId) {
|
253
|
|
- request({ ...apis.activity.updatePoster, urlData: { id: posterId }, data: { targetId: newsId, targetType: 'news', posterImg: imgValue, posterTitle: inputValue, posterDescription: textAreaValue }, }).then((data) => {
|
|
225
|
+ request({ ...apis.building.getMiniappName }).then(res => {
|
|
226
|
+
|
|
227
|
+ setMiniappName(res)
|
|
228
|
+
|
|
229
|
+ })
|
|
230
|
+ }
|
|
231
|
+ const submitPoster = () => {
|
|
232
|
+ if(newsId){
|
|
233
|
+ if(posterId){
|
|
234
|
+ request({ ...apis.activity.updatePoster, urlData: {id: posterId}, data: {targetId: newsId,targetType: 'news',posterImg: imgValue,posterTitle: inputValue,posterDescription: textAreaValue},}).then((data) => {
|
254
|
235
|
message.info("保存成功")
|
255
|
236
|
}).catch((err) => {
|
256
|
237
|
message.info(err.msg || err.message)
|
257
|
238
|
})
|
258
|
|
- } else {
|
259
|
|
- request({ ...apis.activity.addPoster, data: { targetId: newsId, targetType: 'news', posterImg: imgValue, posterTitle: inputValue, posterDescription: textAreaValue }, }).then((data) => {
|
|
239
|
+ }else{
|
|
240
|
+ request({ ...apis.activity.addPoster, data: {targetId: newsId,targetType: 'news',posterImg: imgValue,posterTitle: inputValue,posterDescription: textAreaValue},}).then((data) => {
|
260
|
241
|
setPosterId(data.posterId)
|
261
|
242
|
message.info("保存成功")
|
262
|
243
|
}).catch((err) => {
|
263
|
244
|
message.info(err.msg || err.message)
|
264
|
245
|
})
|
265
|
|
- }
|
266
|
|
- } else {
|
|
246
|
+ }
|
|
247
|
+ }else{
|
267
|
248
|
message.warn("请先保存基本信息数据")
|
268
|
|
- }
|
|
249
|
+ }
|
269
|
250
|
}
|
270
|
251
|
|
271
|
252
|
return <div>
|
|
@@ -297,12 +278,12 @@ const Edit = (props) => {
|
297
|
278
|
overflow: 'hidden',
|
298
|
279
|
textOverflow: 'ellipsis'
|
299
|
280
|
}}>{textAreaValue ? textAreaValue : '海报描述'}</p>
|
300
|
|
- <div style={{ backgroundColor: '#f1f1f1', padding: '22px 30px', boxShadow: '0px 6px 12px -4px #dcdcdc', position: 'relative' }}>
|
301
|
|
- <p style={{ margin: '0', fontSize: '18px', color: '#888' }}>长按识别小程序码</p>
|
302
|
|
- <p style={{ margin: '0', fontSize: '18px', color: '#888' }}>进入资讯查看详情</p>
|
303
|
|
- <img style={{ width: '80px', position: 'absolute', right: '30px', top: '10px' }} src={xiaochengxu} alt="" />
|
304
|
|
- </div>
|
305
|
|
-
|
|
281
|
+ <div style={{ backgroundColor: '#f1f1f1', padding: '22px 30px', boxShadow: '0px 6px 12px -4px #dcdcdc',position:'relative' }}>
|
|
282
|
+ <p style={{margin:'0',fontSize:'18px',color:'#888'}}>长按识别小程序码</p>
|
|
283
|
+ <p style={{margin:'0',fontSize:'18px',color:'#888'}}>进入资讯查看详情</p>
|
|
284
|
+ <img style={{ width: '80px',position: 'absolute',right:'30px',top:'10px' }} src={xiaochengxu} alt="" />
|
|
285
|
+ </div>
|
|
286
|
+
|
306
|
287
|
</div>
|
307
|
288
|
<p style={{ textAlign: 'center', fontSize: '19px', color: '#666', marginTop: '30px' }}>海报模板</p>
|
308
|
289
|
</div>
|
|
@@ -312,7 +293,7 @@ const Edit = (props) => {
|
312
|
293
|
<p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>资讯海报图</p>
|
313
|
294
|
<ImageUploader value={imgValue} onChange={e => changeImg(e)} />
|
314
|
295
|
</div>
|
315
|
|
- <p style={{ fontSize: '0.5vw', color: '#A9A9A9', marginLeft: '230px', marginBottom: '30px' }}>建议图片尺寸:640*670px,比例64:67,格式:jpg,用于资讯海报</p>
|
|
296
|
+ <p style={{ fontSize: '0.5vw', color: '#A9A9A9', marginLeft: '230px', marginBottom: '30px'}}>建议图片尺寸:640*670px,比例64:67,格式:jpg,用于资讯海报</p>
|
316
|
297
|
<div style={{ display: 'flex', alignItems: 'center', width: '100%', marginBottom: '60px' }}>
|
317
|
298
|
<p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>海报标题</p>
|
318
|
299
|
<Input style={{ width: '20vw' }} value={inputValue} placeholder="请输入海报标题" onChange={e => changeInput(e.target.value)} />
|
|
@@ -329,17 +310,17 @@ const Edit = (props) => {
|
329
|
310
|
</div>
|
330
|
311
|
|
331
|
312
|
}
|
332
|
|
-
|
|
313
|
+
|
333
|
314
|
const Share = (props) => {
|
334
|
315
|
const [inputValue, changeInput] = useState('')
|
335
|
316
|
const [imgValue, changeImg] = useState('')
|
336
|
317
|
const [shareContentId, setShareContentId] = useState('')
|
337
|
|
-
|
338
|
|
- if (newsId) {
|
|
318
|
+
|
|
319
|
+ if(newsId){
|
339
|
320
|
useEffect(() => {
|
340
|
|
- request({ ...apis.activity.shareContent, params: { targetId: newsId, targetType: 'news' }, }).then((data) => {
|
341
|
|
- console.log(data, "2222")
|
342
|
|
- if (data.length > 0) {
|
|
321
|
+ request({ ...apis.activity.shareContent, params: {targetId: newsId,targetType: 'news'},}).then((data) => {
|
|
322
|
+ console.log(data,"2222")
|
|
323
|
+ if(data.length > 0){
|
343
|
324
|
setShareContentId(data[0].shareContentId)
|
344
|
325
|
changeImg(data[0].shareContentImg)
|
345
|
326
|
changeInput(data[0].shareContentTitle)
|
|
@@ -351,24 +332,24 @@ const Edit = (props) => {
|
351
|
332
|
}
|
352
|
333
|
|
353
|
334
|
const submitShare = () => {
|
354
|
|
- if (newsId) {
|
355
|
|
- if (shareContentId) {
|
356
|
|
- request({ ...apis.activity.updateShareContent, urlData: { id: shareContentId }, data: { targetId: newsId, shareContentType: 'news', shareContentImg: imgValue, shareContentTitle: inputValue }, }).then((data) => {
|
|
335
|
+ if(newsId){
|
|
336
|
+ if(shareContentId){
|
|
337
|
+ request({ ...apis.activity.updateShareContent, urlData: {id: shareContentId},data: {targetId: newsId,shareContentType: 'news',shareContentImg: imgValue,shareContentTitle: inputValue},}).then((data) => {
|
357
|
338
|
message.info("保存成功")
|
358
|
339
|
}).catch((err) => {
|
359
|
340
|
message.info(err.msg || err.message)
|
360
|
341
|
})
|
361
|
|
- } else {
|
362
|
|
- request({ ...apis.activity.addShareContent, data: { targetId: newsId, shareContentType: 'news', shareContentImg: imgValue, shareContentTitle: inputValue }, }).then((data) => {
|
|
342
|
+ }else{
|
|
343
|
+ request({ ...apis.activity.addShareContent, data: {targetId: newsId,shareContentType: 'news',shareContentImg: imgValue,shareContentTitle: inputValue},}).then((data) => {
|
363
|
344
|
setShareContentId(data.shareContentId)
|
364
|
345
|
message.info("保存成功")
|
365
|
346
|
}).catch((err) => {
|
366
|
347
|
message.info(err.msg || err.message)
|
367
|
348
|
})
|
368
|
|
- }
|
369
|
|
- } else {
|
|
349
|
+ }
|
|
350
|
+ }else{
|
370
|
351
|
message.warn("请先保存基本信息数据")
|
371
|
|
- }
|
|
352
|
+ }
|
372
|
353
|
}
|
373
|
354
|
|
374
|
355
|
return <div style={{ padding: '20px' }}>
|
|
@@ -404,17 +385,17 @@ const Edit = (props) => {
|
404
|
385
|
</Radio.Group>
|
405
|
386
|
</div>
|
406
|
387
|
<div>
|
407
|
|
- {tab === 'basic' && <Basic data={dynamicData} />}
|
408
|
|
- {tab === 'poster' && <Poster />}
|
409
|
|
- {tab === 'share' && <Share />}
|
|
388
|
+ { tab === 'basic' && <Basic data={dynamicData} /> }
|
|
389
|
+ { tab === 'poster' && <Poster /> }
|
|
390
|
+ { tab === 'share' && <Share /> }
|
410
|
391
|
</div>
|
411
|
392
|
<Prompt message={location =>
|
412
|
|
- location.pathname.startsWith("/news/list")
|
413
|
|
- ? true
|
414
|
|
- : localStorage.removeItem("newsPageParams")} />
|
|
393
|
+ location.pathname.startsWith("/news/list")
|
|
394
|
+ ? true
|
|
395
|
+ : localStorage.removeItem("newsPageParams")} />
|
415
|
396
|
</div>
|
416
|
397
|
);
|
417
|
|
-}
|
|
398
|
+ }
|
418
|
399
|
|
419
|
400
|
|
420
|
401
|
|