|
@@ -1,6 +1,6 @@
|
1
|
|
-import { useState, useEffect } from "react";
|
2
|
|
-import Taro from "@tarojs/taro";
|
3
|
|
-import withLayout from "@/layout";
|
|
1
|
+import { useState, useEffect } from 'react';
|
|
2
|
+import Taro from '@tarojs/taro';
|
|
3
|
+import withLayout from '@/layout';
|
4
|
4
|
import {
|
5
|
5
|
ScrollView,
|
6
|
6
|
Image,
|
|
@@ -9,42 +9,42 @@ import {
|
9
|
9
|
Text,
|
10
|
10
|
Input,
|
11
|
11
|
Picker,
|
12
|
|
-} from "@tarojs/components";
|
13
|
|
-import Disclaimer from "@/components/Disclaimer";
|
14
|
|
-import { useSelector } from "react-redux";
|
|
12
|
+ Button
|
|
13
|
+} from '@tarojs/components';
|
|
14
|
+import Disclaimer from '@/components/Disclaimer';
|
|
15
|
+import { useSelector } from 'react-redux';
|
15
|
16
|
import {
|
16
|
|
- // addActivityShareNum,
|
17
|
17
|
signupActivity,
|
18
|
18
|
queryActivityDetail,
|
19
|
|
-} from "@/services/activity";
|
20
|
|
-import { getImgURL } from "@/utils/image";
|
21
|
|
-import getDateFormat from "@/utils/chatDate";
|
22
|
|
-import useParams from "@/utils/hooks/useParams";
|
23
|
|
-import useShare from "@/utils/hooks/useShare";
|
24
|
|
-import useFavor from "@/utils/hooks/useFavor";
|
25
|
|
-import { getDownloadURL, times, transferImage } from "@/utils/tools";
|
26
|
|
-import "./index.scss";
|
|
19
|
+} from '@/services/activity';
|
|
20
|
+import { getImgURL } from '@/utils/image';
|
|
21
|
+import getDateFormat from '@/utils/chatDate';
|
|
22
|
+import useParams from '@/utils/hooks/useParams';
|
|
23
|
+import useShare from '@/utils/hooks/useShare';
|
|
24
|
+import useFavor from '@/utils/hooks/useFavor';
|
|
25
|
+import { times } from '@/utils/tools';
|
|
26
|
+import './index.scss';
|
27
|
27
|
|
28
|
28
|
const activityStatusDict = {
|
29
|
29
|
0: {
|
30
|
|
- text: "立即参与",
|
31
|
|
- text1: "立即参团",
|
32
|
|
- className: "yellow",
|
|
30
|
+ text: '立即参与',
|
|
31
|
+ text1: '立即参团',
|
|
32
|
+ className: 'yellow',
|
33
|
33
|
},
|
34
|
34
|
1: {
|
35
|
|
- text: "未开始",
|
36
|
|
- text1: "未开始",
|
37
|
|
- className: "blue",
|
|
35
|
+ text: '未开始',
|
|
36
|
+ text1: '未开始',
|
|
37
|
+ className: 'blue',
|
38
|
38
|
},
|
39
|
39
|
2: {
|
40
|
|
- text: "已结束",
|
41
|
|
- text1: "已结束",
|
42
|
|
- className: "grey",
|
|
40
|
+ text: '已结束',
|
|
41
|
+ text1: '已结束',
|
|
42
|
+ className: 'grey',
|
43
|
43
|
},
|
44
|
44
|
3: {
|
45
|
|
- text: "已参与",
|
46
|
|
- text1: "已结束",
|
47
|
|
- className: "yellow",
|
|
45
|
+ text: '已参与',
|
|
46
|
+ text1: '已结束',
|
|
47
|
+ className: 'yellow',
|
48
|
48
|
},
|
49
|
49
|
};
|
50
|
50
|
|
|
@@ -54,11 +54,11 @@ export default withLayout((props) => {
|
54
|
54
|
|
55
|
55
|
const user = useSelector((state) => state.user);
|
56
|
56
|
|
57
|
|
- const [detail, setDetail] = useState();
|
58
|
|
- const [canChoose, setCanChoose] = useState("none");
|
59
|
|
- const [inputName, setInputName] = useState("");
|
60
|
|
- const [selectorChecked, setSelectorChecked] = useState("1");
|
61
|
|
- const [selector, setSelector] = useState("");
|
|
57
|
+ const [detail, setDetail] = useState({})
|
|
58
|
+ const [canChoose, setCanChoose] = useState('none');
|
|
59
|
+ const [inputName, setInputName] = useState('');
|
|
60
|
+ const [selectorChecked, setSelectorChecked] = useState('1');
|
|
61
|
+ const [selector, setSelector] = useState('');
|
62
|
62
|
|
63
|
63
|
const buildingId = detail?.buildingId;
|
64
|
64
|
|
|
@@ -105,31 +105,77 @@ export default withLayout((props) => {
|
105
|
105
|
if (id) {
|
106
|
106
|
getDetail(id);
|
107
|
107
|
}
|
108
|
|
- }, [id]);
|
|
108
|
+ }, [id])
|
|
109
|
+
|
|
110
|
+ const [CountDown, setCountDown] = useState({
|
|
111
|
+ day: 0,
|
|
112
|
+ hours: 0,
|
|
113
|
+ minutes: 0,
|
|
114
|
+ seconds: 0,
|
|
115
|
+ })
|
|
116
|
+
|
|
117
|
+ useEffect(() => {
|
|
118
|
+ if(detail.title) {
|
|
119
|
+ const CountsTime = new Date(detail.enlistEnd).getTime() - Date.now()
|
|
120
|
+ if(CountsTime) {
|
|
121
|
+ SetCountsDown(CountsTime)
|
|
122
|
+ }
|
|
123
|
+ }
|
|
124
|
+ }, [detail])
|
|
125
|
+
|
|
126
|
+ const SetCountsDown = (counts) => {
|
|
127
|
+ let Num = counts - 0
|
|
128
|
+ let Timer = setInterval(() => {
|
|
129
|
+ if(Num) {
|
|
130
|
+ Num -= 1000
|
|
131
|
+ let Time = Num
|
|
132
|
+ let day = Math.floor(Time / 1000 / 60 / 60 / 24)
|
|
133
|
+ Time = Time % (1000 * 60 * 60 * 24)
|
|
134
|
+ let hours = Math.floor(Time / 1000 / 60 / 60)
|
|
135
|
+ Time = Time % (1000 * 60 * 60)
|
|
136
|
+ let minutes = Math.floor(Time / 1000 / 60)
|
|
137
|
+ Time = Time % (1000 * 60)
|
|
138
|
+ let seconds = Math.floor(Time / 1000)
|
|
139
|
+ setCountDown({
|
|
140
|
+ day,
|
|
141
|
+ hours,
|
|
142
|
+ minutes,
|
|
143
|
+ seconds
|
|
144
|
+ })
|
|
145
|
+ } else {
|
|
146
|
+ clearInterval(Timer)
|
|
147
|
+ setCountDown({
|
|
148
|
+ day: 0,
|
|
149
|
+ hours: 0,
|
|
150
|
+ minutes: 0,
|
|
151
|
+ seconds: 0,
|
|
152
|
+ })
|
|
153
|
+ }
|
|
154
|
+ }, 1000)
|
|
155
|
+ }
|
109
|
156
|
|
110
|
157
|
const handleSignup = () => {
|
111
|
|
- const { buildingId, dynamicId, isSign } = detail;
|
|
158
|
+ const { isSign } = detail;
|
112
|
159
|
|
113
|
160
|
if (isSign) {
|
114
|
161
|
Taro.showToast({
|
115
|
|
- icon: "none",
|
116
|
|
- title: "你已报名成功",
|
|
162
|
+ icon: 'none',
|
|
163
|
+ title: '你已报名成功',
|
117
|
164
|
});
|
118
|
165
|
return;
|
119
|
166
|
}
|
120
|
|
- setCanChoose("block");
|
|
167
|
+ setCanChoose('block');
|
121
|
168
|
};
|
122
|
169
|
|
123
|
|
- const comfire = (e) => {
|
124
|
|
- const { dynamicId } =detail;
|
125
|
|
- // console.log(user, "user");
|
126
|
|
- const { userInfo: { person: { phone, tel } } } = user
|
127
|
|
- if (inputName == "") {
|
|
170
|
+ const comfire = () => {
|
|
171
|
+ const { dynamicId } = detail
|
|
172
|
+ const { userInfo: { person: { phone, tel } } } = user
|
|
173
|
+ if (inputName === '') {
|
128
|
174
|
Taro.showToast({
|
129
|
|
- title: "请输入姓名",
|
130
|
|
- icon: "none",
|
131
|
|
- });
|
132
|
|
- return;
|
|
175
|
+ title: '请输入姓名',
|
|
176
|
+ icon: 'none'
|
|
177
|
+ })
|
|
178
|
+ return
|
133
|
179
|
}
|
134
|
180
|
|
135
|
181
|
const payload = {
|
|
@@ -140,23 +186,19 @@ export default withLayout((props) => {
|
140
|
186
|
attendNum: selectorChecked,
|
141
|
187
|
};
|
142
|
188
|
|
143
|
|
- signupActivity(payload).then((res) => {
|
|
189
|
+ signupActivity(payload).then(() => {
|
144
|
190
|
Taro.showToast({
|
145
|
|
- title: "报名成功",
|
146
|
|
- });
|
|
191
|
+ title: '报名成功',
|
|
192
|
+ })
|
147
|
193
|
setSelector('none')
|
148
|
|
- // this.setState({
|
149
|
|
- // isSign: true,
|
150
|
|
- // canChoose: "none",
|
151
|
|
- // });
|
152
|
194
|
setTimeout(() => {
|
153
|
|
- getDetail(id);
|
154
|
|
- }, 500);
|
|
195
|
+ getDetail(id)
|
|
196
|
+ }, 500)
|
155
|
197
|
});
|
156
|
198
|
};
|
157
|
199
|
|
158
|
|
- function hideModal() {
|
159
|
|
- setCanChoose("none");
|
|
200
|
+ function hideModal () {
|
|
201
|
+ setCanChoose('none');
|
160
|
202
|
}
|
161
|
203
|
|
162
|
204
|
const onInputText = (e) => {
|
|
@@ -164,159 +206,209 @@ export default withLayout((props) => {
|
164
|
206
|
};
|
165
|
207
|
|
166
|
208
|
const dymic = () => (
|
167
|
|
- <view className="Info">
|
|
209
|
+ <view className='Info'>
|
168
|
210
|
<view>
|
169
|
|
- <view className="Title flex-h">
|
170
|
|
- <view className="flex-item">
|
|
211
|
+ <view className='Title flex-h'>
|
|
212
|
+ <view className='flex-item'>
|
171
|
213
|
<text>{detail.halfTitle}</text>
|
172
|
214
|
</view>
|
173
|
|
- <text className="Tips">{detail.enlisted || 0}人已报名</text>
|
|
215
|
+ <text className='Tips'>{detail.enlisted || 0}人已报名</text>
|
174
|
216
|
</view>
|
175
|
|
- <text className="Time">
|
|
217
|
+ <text className='Time'>
|
176
|
218
|
报名截止时间:
|
177
|
219
|
{getDateFormat(
|
178
|
220
|
new Date(detail.enlistEnd).valueOf(),
|
179
|
221
|
true,
|
180
|
|
- "yyyy/M/d"
|
|
222
|
+ 'yyyy/M/d'
|
181
|
223
|
)}
|
182
|
224
|
</text>
|
183
|
|
- <text className="Name">{detail.title}</text>
|
184
|
|
- <view className="flex-h Address">
|
|
225
|
+ <text className='Name'>{detail.title}</text>
|
|
226
|
+ <view className='flex-h Address'>
|
185
|
227
|
<text>地址:</text>
|
186
|
|
- <view className="flex-item">
|
|
228
|
+ <view className='flex-item'>
|
187
|
229
|
<text>{detail.address}</text>
|
188
|
230
|
</view>
|
189
|
231
|
</view>
|
190
|
|
- <view className="flex-h Date">
|
|
232
|
+ <view className='flex-h Date'>
|
191
|
233
|
<text>时间:</text>
|
192
|
|
- <view className="flex-item">
|
|
234
|
+ <view className='flex-item'>
|
193
|
235
|
<text>
|
194
|
236
|
{getDateFormat(
|
195
|
237
|
new Date(detail.startDate).valueOf(),
|
196
|
238
|
true,
|
197
|
|
- "yyyy/M/d"
|
198
|
|
- )}{" "}
|
199
|
|
- -{" "}
|
|
239
|
+ 'yyyy/M/d'
|
|
240
|
+ )}{' '}
|
|
241
|
+ -{' '}
|
200
|
242
|
{getDateFormat(
|
201
|
243
|
new Date(detail.endDate).valueOf(),
|
202
|
244
|
true,
|
203
|
|
- "yyyy/M/d"
|
|
245
|
+ 'yyyy/M/d'
|
204
|
246
|
)}
|
205
|
247
|
</text>
|
206
|
248
|
</view>
|
207
|
249
|
</view>
|
208
|
|
- <view className="Btn">
|
209
|
|
- <button open-type="share">
|
|
250
|
+ <view className='Btn'>
|
|
251
|
+ <Button open-type='share'>
|
210
|
252
|
<text>分享好友</text>
|
211
|
|
- </button>
|
|
253
|
+ </Button>
|
212
|
254
|
</view>
|
213
|
255
|
</view>
|
214
|
256
|
</view>
|
215
|
257
|
);
|
216
|
258
|
|
217
|
259
|
const house = () => (
|
218
|
|
- <view className="houseInfo">
|
219
|
|
- {/* <view> */}
|
220
|
|
- <view className="flex-h">
|
221
|
|
- <view className="left">
|
222
|
|
- <view className="Title">
|
223
|
|
- <view className="flex-item">
|
224
|
|
- <text>{detail.title}</text>
|
225
|
|
- </view>
|
226
|
|
- </view>
|
227
|
|
- <view className="flex-h Address">
|
228
|
|
- <text className="iconfont icon-dingwei"></text>
|
229
|
|
- <view className="flex-item">
|
|
260
|
+
|
|
261
|
+ <view className='BuildingInfo'>
|
|
262
|
+
|
|
263
|
+ <view className='flex-h Title'>
|
|
264
|
+ <view className='flex-item'>
|
|
265
|
+ <text className='Name'>{detail.title}</text>
|
|
266
|
+ <view className='Address flex-h'>
|
|
267
|
+ <text className='iconfont icon-dingwei'></text>
|
|
268
|
+ <view className='flex-item'>
|
230
|
269
|
<text>{detail.address}</text>
|
231
|
270
|
</view>
|
232
|
|
- <text className="price">价格待定</text>
|
|
271
|
+ <text className='Price'>价格待定</text>
|
233
|
272
|
</view>
|
234
|
|
- <text className="flex-h Time">
|
235
|
|
- 时间:
|
236
|
|
- {getDateFormat(
|
237
|
|
- new Date(detail.startDate).valueOf(),
|
238
|
|
- true,
|
239
|
|
- "yyyy/M/d"
|
240
|
|
- )}{" "}
|
241
|
|
- -{" "}
|
242
|
|
- {getDateFormat(
|
243
|
|
- new Date(detail.endDate).valueOf(),
|
244
|
|
- true,
|
245
|
|
- "yyyy/M/d"
|
246
|
|
- )}
|
247
|
|
- </text>
|
|
273
|
+ <text className='Time'>时间:{getDateFormat(new Date(detail.startDate).valueOf(), true, 'yyyy/M/d')} - {getDateFormat(new Date(detail.endDate).valueOf(), true, 'yyyy/M/d')}</text>
|
248
|
274
|
</view>
|
249
|
|
- <view className="right">
|
|
275
|
+ <view className='Option'>
|
250
|
276
|
<view>
|
251
|
|
- <button open-type="share">
|
252
|
|
- <text className="iconfont icon-fenxiang"></text>
|
253
|
|
- <text>分享</text>
|
254
|
|
- </button>
|
255
|
|
- {/* <text className="iconfont icon-dingwei"></text>
|
256
|
|
- <text>分享</text> */}
|
|
277
|
+ <text className='iconfont icon-fenxiang1'></text>
|
|
278
|
+ <text>分享</text>
|
|
279
|
+ <Button open-type='share' className='ShareBtn'>分享</Button>
|
257
|
280
|
</view>
|
258
|
281
|
<view>
|
259
|
|
- <text className="iconfont icon-dingwei"></text>
|
|
282
|
+ <text className='iconfont icon-haibao'></text>
|
260
|
283
|
<text>海报</text>
|
261
|
284
|
</view>
|
262
|
285
|
</view>
|
263
|
286
|
</view>
|
264
|
287
|
|
265
|
|
- <view className="lastdate">
|
266
|
|
- <text className="text">距离结束还有</text>
|
267
|
|
- <text className="text day">7</text>
|
268
|
|
- <text className="text">天</text>
|
269
|
|
- <text className="text time">2</text>
|
270
|
|
- <text className="text">时</text>
|
271
|
|
- <text className="text time">4</text>
|
272
|
|
- <text className="text">分</text>
|
273
|
|
- <text className="text time">5</text>
|
274
|
|
- <text className="text">秒</text>
|
275
|
|
- {/* <view>距离结束还有</view> */}
|
|
288
|
+ <view className='CountDown'>
|
|
289
|
+ <text>距离结束还有</text>
|
|
290
|
+ <text className='Red'>{CountDown.day}</text>
|
|
291
|
+ <text>天</text>
|
|
292
|
+ <text className='Number' style={{ marginLeft: '40rpx' }}>{CountDown.hours}</text>
|
|
293
|
+ <text className='active'>时</text>
|
|
294
|
+ <text className='Number'>{CountDown.minutes}</text>
|
|
295
|
+ <text className='active'>分</text>
|
|
296
|
+ <text className='Number'>{CountDown.seconds}</text>
|
|
297
|
+ <text className='active'>秒</text>
|
276
|
298
|
</view>
|
277
|
299
|
|
278
|
|
- <view className="flex-h join">
|
279
|
|
- <view className="Collect" onClick={handleFavor}>
|
280
|
|
- <text
|
281
|
|
- className="iconfont icon-shoucang"
|
282
|
|
- style={isSaved ? { color: "red" } : undefined}
|
283
|
|
- ></text>
|
284
|
|
- <text>{isSaved ? "已收藏" : "收藏"}</text>
|
|
300
|
+ <view className='Apply flex-h'>
|
|
301
|
+ <view className='Collect' onClick={handleFavor}>
|
|
302
|
+ <text className='iconfont icon-shoucang' style={isSaved ? { color: 'red' } : undefined}></text>
|
|
303
|
+ <text>{isSaved ? '已收藏' : '收藏'}</text>
|
285
|
304
|
</view>
|
286
|
|
- <view className="enlisted">
|
287
|
|
- <view>
|
288
|
|
- <text className="iconfont icon-shoucang"></text>
|
289
|
|
- <text>{detail.enlisted || 0}人已报名</text>
|
290
|
|
- </view>
|
291
|
|
- </view>
|
292
|
|
- <view className="btn" onClick={handleSignup}>
|
293
|
|
- <text>{activityStatusDict[detail.activityStatus]?.text1}</text>
|
|
305
|
+ <text className='iconfont icon-baoming'></text>
|
|
306
|
+ <view className='flex-item'>
|
|
307
|
+ <text>{detail.enlisted || 0}人已报名</text>
|
294
|
308
|
</view>
|
|
309
|
+ <text className='Btn' onClick={handleSignup}>{activityStatusDict[detail.activityStatus]?.text1}</text>
|
295
|
310
|
</view>
|
296
|
|
- {/* </view> */}
|
|
311
|
+
|
297
|
312
|
</view>
|
|
313
|
+ // <view className='houseInfo'>
|
|
314
|
+ // {/* <view> */}
|
|
315
|
+ // <view className='flex-h'>
|
|
316
|
+ // <view className='left'>
|
|
317
|
+ // <view className='Title'>
|
|
318
|
+ // <view className='flex-item'>
|
|
319
|
+ // <text>{detail.title}</text>
|
|
320
|
+ // </view>
|
|
321
|
+ // </view>
|
|
322
|
+ // <view className='flex-h Address'>
|
|
323
|
+ // <text className='iconfont icon-dingwei'></text>
|
|
324
|
+ // <view className='flex-item'>
|
|
325
|
+ // <text>{detail.address}</text>
|
|
326
|
+ // </view>
|
|
327
|
+ // <text className='price'>价格待定</text>
|
|
328
|
+ // </view>
|
|
329
|
+ // <text className='flex-h Time'>
|
|
330
|
+ // 时间:
|
|
331
|
+ // {getDateFormat(
|
|
332
|
+ // new Date(detail.startDate).valueOf(),
|
|
333
|
+ // true,
|
|
334
|
+ // 'yyyy/M/d'
|
|
335
|
+ // )}{' '}
|
|
336
|
+ // -{' '}
|
|
337
|
+ // {getDateFormat(
|
|
338
|
+ // new Date(detail.endDate).valueOf(),
|
|
339
|
+ // true,
|
|
340
|
+ // 'yyyy/M/d'
|
|
341
|
+ // )}
|
|
342
|
+ // </text>
|
|
343
|
+ // </view>
|
|
344
|
+ // <view className='right'>
|
|
345
|
+ // <view>
|
|
346
|
+ // {/* <Button open-type='share'>
|
|
347
|
+ // <text className='iconfont icon-fenxiang'></text>
|
|
348
|
+ // <text>分享</text>
|
|
349
|
+ // </Button> */}
|
|
350
|
+ // <text className='iconfont icon-fenxiang'></text>
|
|
351
|
+ // <text>分享</text>
|
|
352
|
+ // </view>
|
|
353
|
+ // <view>
|
|
354
|
+ // <text className='iconfont icon-dingwei'></text>
|
|
355
|
+ // <text>海报</text>
|
|
356
|
+ // </view>
|
|
357
|
+ // </view>
|
|
358
|
+ // </view>
|
|
359
|
+
|
|
360
|
+ // <view className='lastdate'>
|
|
361
|
+ // <text className='text'>距离结束还有</text>
|
|
362
|
+ // <text className='text day'>7</text>
|
|
363
|
+ // <text className='text'>天</text>
|
|
364
|
+ // <text className='text time'>2</text>
|
|
365
|
+ // <text className='text'>时</text>
|
|
366
|
+ // <text className='text time'>4</text>
|
|
367
|
+ // <text className='text'>分</text>
|
|
368
|
+ // <text className='text time'>5</text>
|
|
369
|
+ // <text className='text'>秒</text>
|
|
370
|
+ // {/* <view>距离结束还有</view> */}
|
|
371
|
+ // </view>
|
|
372
|
+
|
|
373
|
+ // <view className='flex-h join'>
|
|
374
|
+ // <view className='Collect' onClick={handleFavor}>
|
|
375
|
+ // <text className='iconfont icon-shoucang' style={isSaved ? { color: 'red' } : undefined}></text>
|
|
376
|
+ // <text>{isSaved ? '已收藏' : '收藏'}</text>
|
|
377
|
+ // </view>
|
|
378
|
+ // <view className='enlisted'>
|
|
379
|
+ // <view>
|
|
380
|
+ // <text className='iconfont icon-shoucang'></text>
|
|
381
|
+ // <text>{detail.enlisted || 0}人已报名</text>
|
|
382
|
+ // </view>
|
|
383
|
+ // </view>
|
|
384
|
+ // <view className='btn' onClick={handleSignup}>
|
|
385
|
+ // <text>{activityStatusDict[detail.activityStatus]?.text1}</text>
|
|
386
|
+ // </view>
|
|
387
|
+ // </view>
|
|
388
|
+ // {/* </view> */}
|
|
389
|
+ // </view>
|
298
|
390
|
);
|
299
|
391
|
|
300
|
392
|
return (
|
301
|
393
|
<>
|
302
|
394
|
{detail && (
|
303
|
|
- <view className="Page activityDetail flex-v">
|
304
|
|
- <view className="flex-item">
|
|
395
|
+ <view className='Page activityDetail flex-v'>
|
|
396
|
+ <view className='flex-item'>
|
305
|
397
|
<view>
|
306
|
398
|
<ScrollView scroll-y>
|
307
|
|
- <view className="PageContent">
|
308
|
|
- <view className="Top">
|
|
399
|
+ <view className='PageContent'>
|
|
400
|
+ <view className='Top'>
|
309
|
401
|
<Image
|
310
|
|
- mode="aspectFill"
|
|
402
|
+ mode='aspectFill'
|
311
|
403
|
src={getImgURL(detail.bannerListImg)}
|
312
|
|
- className="centerLabel"
|
|
404
|
+ className='centerLabel'
|
313
|
405
|
></Image>
|
314
|
406
|
</view>
|
315
|
407
|
|
316
|
|
- {detail.type == "dymic" && dymic()}
|
317
|
|
- {detail.type == "house" && house()}
|
318
|
|
- <view className="ActivityIntro">
|
319
|
|
- <view className="Title">
|
|
408
|
+ {detail.type == 'dymic' && dymic()}
|
|
409
|
+ {detail.type == 'house' && house()}
|
|
410
|
+ <view className='ActivityIntro'>
|
|
411
|
+ <view className='Title'>
|
320
|
412
|
<text>活动介绍</text>
|
321
|
413
|
</view>
|
322
|
414
|
<RichText nodes={detail.desc} />
|
|
@@ -327,22 +419,22 @@ export default withLayout((props) => {
|
327
|
419
|
</ScrollView>
|
328
|
420
|
</view>
|
329
|
421
|
</view>
|
330
|
|
- {detail.type == "dymic" && (
|
331
|
|
- <view className="PageBottom flex-h">
|
332
|
|
- <button className="Share" open-type="share">
|
333
|
|
- <text className="iconfont icon-fenxiang"></text>
|
|
422
|
+ {detail.type == 'dymic' && (
|
|
423
|
+ <view className='PageBottom flex-h'>
|
|
424
|
+ <Button className='Share' open-type='share'>
|
|
425
|
+ <text className='iconfont icon-fenxiang'></text>
|
334
|
426
|
<text>分享</text>
|
335
|
|
- </button>
|
336
|
|
- <view className="Collect" onClick={handleFavor}>
|
|
427
|
+ </Button>
|
|
428
|
+ <view className='Collect' onClick={handleFavor}>
|
337
|
429
|
<text
|
338
|
|
- className="iconfont icon-shoucang"
|
339
|
|
- style={isSaved ? { color: "red" } : undefined}
|
|
430
|
+ className='iconfont icon-shoucang'
|
|
431
|
+ style={isSaved ? { color: 'red' } : undefined}
|
340
|
432
|
></text>
|
341
|
|
- <text>{isSaved ? "已收藏" : "收藏"}</text>
|
|
433
|
+ <text>{isSaved ? '已收藏' : '收藏'}</text>
|
342
|
434
|
</view>
|
343
|
|
- <view className="flex-item"></view>
|
|
435
|
+ <view className='flex-item'></view>
|
344
|
436
|
|
345
|
|
- <text className="Post" onClick={handleSignup}>
|
|
437
|
+ <text className='Post' onClick={handleSignup}>
|
346
|
438
|
{activityStatusDict[detail.activityStatus]?.text}
|
347
|
439
|
</text>
|
348
|
440
|
</view>
|
|
@@ -350,29 +442,29 @@ export default withLayout((props) => {
|
350
|
442
|
</view>
|
351
|
443
|
)}
|
352
|
444
|
|
353
|
|
- <View className="page-body" style={{ display: canChoose }}>
|
354
|
|
- <View className="mask" onClick={() => hideModal()}></View>
|
355
|
|
- <View className="page-section">
|
356
|
|
- <Text className="page-section__title">报名信息</Text>
|
357
|
|
- <View className="page-content">
|
|
445
|
+ <View className='page-body' style={{ display: canChoose }}>
|
|
446
|
+ <View className='mask' onClick={() => hideModal()}></View>
|
|
447
|
+ <View className='page-section'>
|
|
448
|
+ <Text className='page-section__title'>报名信息</Text>
|
|
449
|
+ <View className='page-content'>
|
358
|
450
|
<Input
|
359
|
|
- className="inputName"
|
|
451
|
+ className='inputName'
|
360
|
452
|
onInput={onInputText}
|
361
|
|
- type="text"
|
362
|
|
- placeholder="请输入姓名"
|
|
453
|
+ type='text'
|
|
454
|
+ placeholder='请输入姓名'
|
363
|
455
|
/>
|
364
|
456
|
<Picker
|
365
|
|
- mode="selector"
|
|
457
|
+ mode='selector'
|
366
|
458
|
range={selector}
|
367
|
459
|
onChange={(e) => setSelectorChecked(selector[e.detail.value])}
|
368
|
460
|
>
|
369
|
|
- <View className="picker">
|
|
461
|
+ <View className='picker'>
|
370
|
462
|
<Text>参加人数</Text>
|
371
|
|
- <Text className="content">{selectorChecked}</Text>
|
|
463
|
+ <Text className='content'>{selectorChecked}</Text>
|
372
|
464
|
<Text>人</Text>
|
373
|
465
|
</View>
|
374
|
466
|
</Picker>
|
375
|
|
- <View onClick={comfire} className="comfire">
|
|
467
|
+ <View onClick={comfire} className='comfire'>
|
376
|
468
|
确认
|
377
|
469
|
</View>
|
378
|
470
|
</View>
|