Browse Source

静态页面

1002884655 4 years ago
parent
commit
0faedfe41e

+ 1
- 1
src/pages/FuLi/index.jsx View File

@@ -30,7 +30,7 @@ export default function FuLi () {
30 30
     if (DataLock || (user.havaSigned !== undefined && user.havaSigned - 0 === 1)) return
31 31
     setDataLock(true)
32 32
     request({ ...apis.userSign }).then(() => {
33
-      Taro.showToast({ title: '签到成功', icon: 'none' })
33
+      Taro.showToast({ title: '签到成功,积分+1', icon: 'none' })
34 34
       setUser({ ...user, havaSigned: 1, points: user.points - 0 > 0 ? user.points - 0 + 1 : 1 })
35 35
       setDataLock(false)
36 36
     }).catch((res) => {

+ 225
- 0
src/pages/HuoDong/HuoDongDetail/index copy.jsx View File

@@ -0,0 +1,225 @@
1
+import React, { useState, useEffect } from 'react'
2
+import Taro, { Current } from '@tarojs/taro'
3
+import { RichText, Input } from '@tarojs/components'
4
+import request, { apis } from '@/utils/request'
5
+import { useModel } from '@/store'
6
+import Page from '@/layouts'
7
+import toolclass from '@/utils/toolclass.js'
8
+import { getShareObject } from '@/utils/share.js'
9
+import GetUserPhone from '@/components/GetUserPhone/index'
10
+import '@/assets/css/reset.less'
11
+import '@/assets/css/iconfont.less'
12
+import './index.less'
13
+
14
+export default function HuoDongDetail () {
15
+
16
+  const { user } = useModel('user')
17
+  const [DataLock, setDataLock] = useState(false)
18
+  const [HasJoin, setHasJoin] = useState(null)
19
+  const [HasSign, setHasSign] = useState(null)
20
+  const [CanJoin, setCanJoin] = useState(null)
21
+  const [JoinBtnText, setJoinBtnText] = useState(null)
22
+  const [JoinBtnStatus, setJoinBtnStatus] = useState(false)
23
+  const [ShowJoinNumPopup, setShowJoinNumPopup] = useState(false)
24
+  const [JoinNum, setJoinNum] = useState(null)
25
+  const [ShowGetUserPhoneLayer, setShowGetUserPhoneLayer] = useState(false)
26
+  const [CurrnetHuoDongId] = useState(Current.router.params.id) // 当前活动id
27
+  const [ActivityDetail, setActivityDetail] = useState(null) // 活动详情
28
+
29
+  Taro.useShareAppMessage(() => {
30
+    return getShareObject({
31
+      title: ActivityDetail.title,
32
+      id: CurrnetHuoDongId,
33
+      image: ActivityDetail.imgUrl
34
+    }, user)
35
+  })
36
+
37
+  useEffect(() => {
38
+    GetActivityDetail()
39
+  }, [CurrnetHuoDongId])
40
+
41
+  useEffect(() => {
42
+    if (ActivityDetail !== null) {
43
+      ToSetJoinBtnText()
44
+    }
45
+  }, [HasJoin, CanJoin, HasSign, ActivityDetail])
46
+
47
+  const GetActivityDetail = () => { // 获取活动详情
48
+    request({ ...apis.getActivityDetail, args: { id: CurrnetHuoDongId } }).then((res) => {
49
+      setActivityDetail(res)
50
+      CheckActivityJoin()
51
+    })
52
+  }
53
+
54
+  const CheckActivityJoin = () => { // 查询活动参加详情
55
+    request({ ...apis.checkActivityJoin, args: { id: CurrnetHuoDongId } }).then((res) => {
56
+      setHasJoin(!!res.dynamic.isSign)
57
+      setCanJoin(!!res.dynamic.isEnlist)
58
+      setHasSign(!!res.enlist.isCheckin)
59
+    })
60
+  }
61
+
62
+  const ToSetJoinBtnText = () => {
63
+    if (ActivityDetail.activityStatus - 0 === 2) {
64
+      setJoinBtnStatus(false)
65
+      setJoinBtnText(`已结束`)
66
+      return false
67
+    } else {
68
+      if (HasSign) {
69
+        setJoinBtnStatus(false)
70
+        setJoinBtnText(`已签到`)
71
+        return false
72
+      } else {
73
+        if (HasJoin) {
74
+          if (ActivityDetail.activityStatus - 0 === 1) {
75
+            setJoinBtnStatus(false)
76
+            setJoinBtnText(`已报名`)
77
+          } else if (ActivityDetail.activityStatus - 0 === 0) {
78
+            setJoinBtnStatus(true)
79
+            setJoinBtnText(`去签到`)
80
+          }
81
+          return false
82
+        } else {
83
+          if (CanJoin) {
84
+            setJoinBtnStatus(true)
85
+            setJoinBtnText(`去报名`)
86
+            return false
87
+          } else {
88
+            setJoinBtnStatus(false)
89
+            setJoinBtnText(null)
90
+            return false
91
+          }
92
+        }
93
+      }
94
+    }
95
+  }
96
+
97
+  const ConfirmToJoin = () => {
98
+    if (JoinNum === null || JoinNum - 0 < 1) {
99
+      Taro.showToast({ title: '请填入参加活动人数', icon: 'none' })
100
+      setDataLock(false)
101
+    } else {
102
+      const { personId, phone, nickname, orgId } = user
103
+      const { dynamicId } = ActivityDetail
104
+      let Data = {
105
+        phone,
106
+        personId,
107
+        dynamicId,
108
+        name: nickname,
109
+        orgId,
110
+        attendNum: JoinNum - 0 || 1,
111
+        sharePerson: null,
112
+        sharePersonName: null,
113
+        sharePersonType: null
114
+      }
115
+      request({ ...apis.JoinActivity, data: { ...Data } }).then(() => {
116
+        Taro.showToast({ title: '报名成功', icon: 'none' })
117
+        setHasJoin(true)
118
+        setShowJoinNumPopup(false)
119
+        setDataLock(false)
120
+      }).catch((res) => {
121
+        Taro.showToast({ title: res, icon: 'none' })
122
+        setDataLock(false)
123
+      })
124
+    }
125
+  }
126
+
127
+  const ToJoin = () => { // 去报名
128
+    if (DataLock || ActivityDetail === null || !JoinBtnStatus) return
129
+    setDataLock(true)
130
+    if (JoinBtnText === '去签到') {
131
+      setDataLock(false)
132
+      Taro.navigateTo({ url: `/pages/HuoDong/HuoDongSign/index?id=${ActivityDetail.dynamicId}` })
133
+    } else {
134
+      const { phone } = user
135
+      setDataLock(false)
136
+      if (!phone) { // 未授权手机号,唤起授权手机号弹窗
137
+        setShowGetUserPhoneLayer(true)
138
+        return false
139
+      }
140
+      setShowJoinNumPopup(true)
141
+    }
142
+  }
143
+
144
+  const JoinNumChange = (e) => {
145
+    setJoinNum(e.detail.value)
146
+  }
147
+
148
+  const showError = err => {
149
+    Taro.showModal({
150
+      title: '错误',
151
+      content: err,
152
+      showCancel: false
153
+    })
154
+  }
155
+
156
+  return (
157
+    <Page>
158
+      <view className='HuoDongDetail'>
159
+
160
+        <GetUserPhone visible={ShowGetUserPhoneLayer} onError={err => showError(`授权手机失败: ${err}`)} onCancel={() => { }}></GetUserPhone>
161
+
162
+        <view className='BannerLayer'></view>
163
+        {
164
+          ActivityDetail !== null &&
165
+          <view className='Banner'>
166
+            <image mode='aspectFill' src={ActivityDetail.imgUrl} className='centerLabel'></image>
167
+          </view>
168
+        }
169
+        {
170
+          ActivityDetail !== null &&
171
+          <view className='Info'>
172
+            <view className='MainInfo'>
173
+              <text className='Name'>{ActivityDetail.title}</text>
174
+              <text className='Tips'>{ActivityDetail.enlisted}人已报名</text>
175
+              <view className='flex-h'>
176
+                <text>活动时间:</text>
177
+                <view className='flex-item'>{toolclass.FormatDate(ActivityDetail.startDate)}<text>限{ActivityDetail.enlistNum}人</text></view>
178
+              </view>
179
+              <view className='flex-h'>
180
+                <text>活动地址:</text>
181
+                <view className='flex-item'>{ActivityDetail.address}</view>
182
+              </view>
183
+              <view className='flex-h'>
184
+                <text>报名截止:</text>
185
+                <view className='flex-item'>{toolclass.FormatDate(ActivityDetail.enlistEnd)}</view>
186
+              </view>
187
+            </view>
188
+
189
+            <view className='Desc'>
190
+              <text>活动介绍</text>
191
+              <RichText nodes={`${ActivityDetail.desc.replace(/font-size\:\s(\d+)px/ig, 'font-size: $1rpx')}`}></RichText>
192
+            </view>
193
+
194
+            {
195
+              HasJoin !== null &&
196
+              <text className={JoinBtnStatus ? 'active BottomBtn' : 'BottomBtn'} onClick={ToJoin}>{JoinBtnText}</text>
197
+            }
198
+
199
+          </view>
200
+        }
201
+        <view className={ShowJoinNumPopup ? 'JoinNumLayer active' : 'JoinNumLayer'}>
202
+          <view className='centerLabel'>
203
+            <text>温馨提示</text>
204
+            <view className='flex-h Form'>
205
+              <view>
206
+                <text>参数人数:</text>
207
+              </view>
208
+              <view className='flex-item'>
209
+                <Input placeholder='请输入活动参加人数' onInput={JoinNumChange} value={JoinNum}></Input>
210
+              </view>
211
+            </view>
212
+            <view className='flex-h Bottom'>
213
+              <view className='flex-item'>
214
+                <text onClick={() => { setShowJoinNumPopup(false) }}>取消</text>
215
+              </view>
216
+              <view className='flex-item'>
217
+                <text onClick={ConfirmToJoin}>确定</text>
218
+              </view>
219
+            </view>
220
+          </view>
221
+        </view>
222
+      </view>
223
+    </Page>
224
+  )
225
+}

+ 76
- 54
src/pages/HuoDong/HuoDongDetail/index.jsx View File

@@ -15,16 +15,19 @@ export default function HuoDongDetail () {
15 15
 
16 16
   const { user } = useModel('user')
17 17
   const [DataLock, setDataLock] = useState(false)
18
-  const [HasJoin, setHasJoin] = useState(null)
19
-  const [HasSign, setHasSign] = useState(null)
20
-  const [CanJoin, setCanJoin] = useState(null)
21
-  const [JoinBtnText, setJoinBtnText] = useState(null)
22
-  const [JoinBtnStatus, setJoinBtnStatus] = useState(false)
18
+  // const [HasJoin, setHasJoin] = useState(null)
19
+  // const [HasSign, setHasSign] = useState(null)
20
+  // const [CanJoin, setCanJoin] = useState(null)
21
+  // const [JoinBtnText, setJoinBtnText] = useState(null)
22
+  // const [JoinBtnStatus, setJoinBtnStatus] = useState(false)
23 23
   const [ShowJoinNumPopup, setShowJoinNumPopup] = useState(false)
24 24
   const [JoinNum, setJoinNum] = useState(null)
25 25
   const [ShowGetUserPhoneLayer, setShowGetUserPhoneLayer] = useState(false)
26 26
   const [CurrnetHuoDongId] = useState(Current.router.params.id) // 当前活动id
27 27
   const [ActivityDetail, setActivityDetail] = useState(null) // 活动详情
28
+  const [JoinInfo, setJoinInfo] = useState(null) // 参加活动详情
29
+  const [Status, setStatus] = useState(null) // 参加活动状态 0-立即参与 1-未开始 2-去报名 3-已报名 4-去签到 5-已签到 6-已结束
30
+  const [StatusText, setStatusText] = useState(null) // 参加活动状态 0-立即参与 1-未开始 2-去报名 3-已报名 4-去签到 5-已签到 6-已结束
28 31
 
29 32
   Taro.useShareAppMessage(() => {
30 33
     return getShareObject({
@@ -35,62 +38,87 @@ export default function HuoDongDetail () {
35 38
   })
36 39
 
37 40
   useEffect(() => {
38
-    GetActivityDetail()
41
+    GetActivityDetail() // 获取活动详情
39 42
   }, [CurrnetHuoDongId])
40 43
 
41 44
   useEffect(() => {
42 45
     if (ActivityDetail !== null) {
43
-      ToSetJoinBtnText()
46
+      CheckActivityJoin() // 查询活动参加详情
44 47
     }
45
-  }, [HasJoin, CanJoin, HasSign, ActivityDetail])
48
+  }, [ActivityDetail])
49
+
50
+  useEffect(() => {
51
+    if (JoinInfo !== null) {
52
+      ToGetActivityStatus() // 计算参加活动状态
53
+    }
54
+  }, [JoinInfo])
55
+
56
+  useEffect(() => {
57
+    if (Status !== null) {
58
+      CalcStatusText()
59
+    }
60
+  }, [Status])
46 61
 
47 62
   const GetActivityDetail = () => { // 获取活动详情
48 63
     request({ ...apis.getActivityDetail, args: { id: CurrnetHuoDongId } }).then((res) => {
49 64
       setActivityDetail(res)
50
-      CheckActivityJoin()
51 65
     })
52 66
   }
53 67
 
54 68
   const CheckActivityJoin = () => { // 查询活动参加详情
55 69
     request({ ...apis.checkActivityJoin, args: { id: CurrnetHuoDongId } }).then((res) => {
56
-      setHasJoin(!!res.dynamic.isSign)
57
-      setCanJoin(!!res.dynamic.isEnlist)
58
-      setHasSign(!!res.enlist.isCheckin)
70
+      setJoinInfo(res)
59 71
     })
60 72
   }
61 73
 
62
-  const ToSetJoinBtnText = () => {
63
-    if (ActivityDetail.activityStatus - 0 === 2) {
64
-      setJoinBtnStatus(false)
65
-      setJoinBtnText(`已结束`)
66
-      return false
67
-    } else {
68
-      if (HasSign) {
69
-        setJoinBtnStatus(false)
70
-        setJoinBtnText(`已签到`)
71
-        return false
72
-      } else {
73
-        if (HasJoin) {
74
-          if (ActivityDetail.activityStatus - 0 === 1) {
75
-            setJoinBtnStatus(false)
76
-            setJoinBtnText(`已报名`)
77
-          } else if (ActivityDetail.activityStatus - 0 === 0) {
78
-            setJoinBtnStatus(true)
79
-            setJoinBtnText(`去签到`)
80
-          }
81
-          return false
82
-        } else {
83
-          if (CanJoin) {
84
-            setJoinBtnStatus(true)
85
-            setJoinBtnText(`去报名`)
86
-            return false
87
-          } else {
88
-            setJoinBtnStatus(false)
89
-            setJoinBtnText(null)
90
-            return false
91
-          }
92
-        }
74
+  const ToGetActivityStatus = () => { // 计算参加活动状态
75
+    if (ActivityDetail.activityStatus - 0 === 0) { // 进行中
76
+      if (JoinInfo.enlist.isCheckin - 0 === 1) { // 已签到
77
+        setStatus(5)
78
+      } else { // 未签到
79
+        setStatus(4)
80
+      }
81
+    } else if (ActivityDetail.activityStatus - 0 === 1) { // 未开始
82
+      if (JoinInfo.dynamic.isSign - 0 === 1) { // 已报名
83
+        setStatus(3)
84
+      } else { // 未报名
85
+        setStatus(2)
93 86
       }
87
+    } else { // 已结束
88
+      setStatus(6)
89
+    }
90
+    // if (ActivityDetail.activityStatus - 0 === 0) { // 立即参与
91
+    //   if (JoinInfo.dynamic.isSign - 0 === 1) { // 已报名
92
+    //     setStatus(3)
93
+    //   } else { // 未报名
94
+    //     setStatus(2)
95
+    //   }
96
+    // } else if (ActivityDetail.activityStatus - 0 === 1) { // 未开始
97
+    //   setStatus(1)
98
+    // } else if (ActivityDetail.activityStatus - 0 === 2) { // 已结束
99
+    //   setStatus(6)
100
+    // } else { // 已参与
101
+    //   if (JoinInfo.dynamic.isCheckin - 0 === 1) { // 已签到
102
+    //     setStatus(5)
103
+    //   } else { // 未签到
104
+    //     setStatus(4)
105
+    //   }
106
+    // }
107
+  }
108
+
109
+  const CalcStatusText = () => { // 参加活动状态 1-未开始 2-去报名 3-已报名 4-去签到 5-已签到 6-已结束
110
+    if (Status - 0 === 1) {
111
+      setStatusText('未开始')
112
+    } else if (Status - 0 === 2) {
113
+      setStatusText('去报名')
114
+    } else if (Status - 0 === 3) {
115
+      setStatusText('已报名')
116
+    } else if (Status - 0 === 4) {
117
+      setStatusText('去签到')
118
+    } else if (Status - 0 === 5) {
119
+      setStatusText('已签到')
120
+    } else if (Status - 0 === 6) {
121
+      setStatusText('已结束')
94 122
     }
95 123
   }
96 124
 
@@ -114,8 +142,8 @@ export default function HuoDongDetail () {
114 142
       }
115 143
       request({ ...apis.JoinActivity, data: { ...Data } }).then(() => {
116 144
         Taro.showToast({ title: '报名成功', icon: 'none' })
117
-        setHasJoin(true)
118 145
         setShowJoinNumPopup(false)
146
+        GetActivityDetail() // 获取活动详情
119 147
         setDataLock(false)
120 148
       }).catch((res) => {
121 149
         Taro.showToast({ title: res, icon: 'none' })
@@ -125,14 +153,11 @@ export default function HuoDongDetail () {
125 153
   }
126 154
 
127 155
   const ToJoin = () => { // 去报名
128
-    if (DataLock || ActivityDetail === null || !JoinBtnStatus) return
129
-    setDataLock(true)
130
-    if (JoinBtnText === '去签到') {
131
-      setDataLock(false)
156
+    if (DataLock || ActivityDetail === null || (Status - 0 !== 2 && Status - 0 !== 4)) return
157
+    if (Status - 0 === 4) { // 去签到
132 158
       Taro.navigateTo({ url: `/pages/HuoDong/HuoDongSign/index?id=${ActivityDetail.dynamicId}` })
133
-    } else {
159
+    } else { // 去报名
134 160
       const { phone } = user
135
-      setDataLock(false)
136 161
       if (!phone) { // 未授权手机号,唤起授权手机号弹窗
137 162
         setShowGetUserPhoneLayer(true)
138 163
         return false
@@ -191,10 +216,7 @@ export default function HuoDongDetail () {
191 216
               <RichText nodes={`${ActivityDetail.desc.replace(/font-size\:\s(\d+)px/ig, 'font-size: $1rpx')}`}></RichText>
192 217
             </view>
193 218
 
194
-            {
195
-              HasJoin !== null &&
196
-              <text className={JoinBtnStatus ? 'active BottomBtn' : 'BottomBtn'} onClick={ToJoin}>{JoinBtnText}</text>
197
-            }
219
+            <text className={Status - 0 === 2 || Status - 0 === 4 ? 'active BottomBtn' : 'BottomBtn'} onClick={ToJoin}>{StatusText}</text>
198 220
 
199 221
           </view>
200 222
         }