xcx 4 lat temu
rodzic
commit
782c002bed

+ 1
- 0
src/app.js Wyświetl plik

@@ -45,6 +45,7 @@ class App extends Component {
45 45
           request({ ...apis.login, params: { code: res.code, from, recommender, scene } }).then(x => {
46 46
             setUser(x.person)
47 47
             Taro.setStorage({ key: 'token', data: x.token })
48
+            Taro.setStorage({ key: 'sessionKey', data: x.sessionKey })
48 49
 
49 50
             // 埋点
50 51
             if (recommender || x.scene) {

+ 37
- 0
src/components/GetUserIcon/index.jsx Wyświetl plik

@@ -0,0 +1,37 @@
1
+import React, { useState } from 'react'
2
+import { Button } from '@tarojs/components'
3
+import request, { apis } from '@/utils/request'
4
+import Taro from '@tarojs/taro'
5
+import { store, useModel } from '@/store'
6
+import '@/assets/css/reset.less'
7
+import '@/assets/css/iconfont.less'
8
+import './index.less'
9
+
10
+export default function GetUserIcon (props) {
11
+
12
+  const { setUser } = store.getModel('user').getState()
13
+  const { user } = useModel('user')
14
+  const { Show = false, Close = () => { } } = props
15
+
16
+  const ToGetUserIcon = (e) => { // 授权用户头像
17
+    if (e.detail.userInfo !== undefined) {
18
+      setUser({ ...user, avatarurl: e.detail.userInfo.avatarUrl, nickname: e.detail.userInfo.nickName })
19
+      Taro.showToast({ title: '头像授权成功', icon: 'none' })
20
+    } else {
21
+      Taro.showToast({ title: '头像授权失败', icon: 'none' })
22
+    }
23
+    Close()
24
+  }
25
+
26
+  return (
27
+    <view className='GetUserIcon' style={{ display: Show ? 'block' : 'none' }}>
28
+      <view className='centerLabel'>
29
+        <text>您暂未授权头像</text>
30
+        <view className='flex-h'>
31
+          <text className='flex-item' onClick={Close}>取消</text>
32
+          <Button className='flex-item' open-type='getUserInfo' lang='zh_CN' ongetuserinfo={ToGetUserIcon}>去授权</Button>
33
+        </view>
34
+      </view>
35
+    </view>
36
+  )
37
+}

+ 47
- 0
src/components/GetUserIcon/index.less Wyświetl plik

@@ -0,0 +1,47 @@
1
+.GetUserIcon {
2
+  width: 100%;
3
+  position: fixed !important;
4
+  left: 0;
5
+  top: 0;
6
+  bottom: 0;
7
+  z-index: 1000;
8
+  background: rgba(0, 0, 0, 0.7);
9
+
10
+  >view {
11
+    width: 60%;
12
+    background: #fff;
13
+    border-radius: 10px;
14
+
15
+    >text {
16
+      display: block;
17
+      text-align: center;
18
+      font-size: 28px;
19
+      line-height: 40px;
20
+      padding: 40px 0;
21
+    }
22
+
23
+    >.flex-h {
24
+      position: relative;
25
+      overflow: hidden;
26
+      border-top: 2px solid rgba(0, 0, 0, 0.08);
27
+
28
+      >text {
29
+        font-size: 28px;
30
+        line-height: 80px;
31
+        text-align: center;
32
+        border-right: 2px solid rgba(0, 0, 0, 0.08);
33
+        color: #999;
34
+      }
35
+      >button {
36
+        font-size: 28px;
37
+        line-height: 80px;
38
+        background: none;
39
+        border: none;
40
+        padding: 0 !important;
41
+        &::after {
42
+          display: none;
43
+        }
44
+      }
45
+    }
46
+  }
47
+}

+ 43
- 0
src/components/GetUserPhone/index.css Wyświetl plik

@@ -0,0 +1,43 @@
1
+.GetUserPhone {
2
+  width: 100%;
3
+  position: fixed !important;
4
+  left: 0;
5
+  top: 0;
6
+  bottom: 0;
7
+  z-index: 1000;
8
+  background: rgba(0, 0, 0, 0.7);
9
+}
10
+.GetUserPhone > view {
11
+  width: 60%;
12
+  background: #fff;
13
+  border-radius: 10px;
14
+}
15
+.GetUserPhone > view > text {
16
+  display: block;
17
+  text-align: center;
18
+  font-size: 28px;
19
+  line-height: 40px;
20
+  padding: 40px 0;
21
+}
22
+.GetUserPhone > view > .flex-h {
23
+  position: relative;
24
+  overflow: hidden;
25
+  border-top: 2px solid rgba(0, 0, 0, 0.08);
26
+}
27
+.GetUserPhone > view > .flex-h > text {
28
+  font-size: 28px;
29
+  line-height: 80px;
30
+  text-align: center;
31
+  border-right: 2px solid rgba(0, 0, 0, 0.08);
32
+  color: #999;
33
+}
34
+.GetUserPhone > view > .flex-h > button {
35
+  font-size: 28px;
36
+  line-height: 80px;
37
+  background: none;
38
+  border: none;
39
+  padding: 0 !important;
40
+}
41
+.GetUserPhone > view > .flex-h > button::after {
42
+  display: none;
43
+}

+ 16
- 6
src/components/GetUserPhone/index.jsx Wyświetl plik

@@ -1,32 +1,42 @@
1 1
 import React, { useState } from 'react'
2 2
 import { Button } from '@tarojs/components'
3 3
 import request, { apis } from '@/utils/request'
4
+import Taro from '@tarojs/taro'
5
+import { store, useModel } from '@/store'
4 6
 import '@/assets/css/reset.less'
5 7
 import '@/assets/css/iconfont.less'
6 8
 import './index.less'
7 9
 
8 10
 export default function GetUserPhone (props) {
9 11
 
12
+  const { setUser } = store.getModel('user').getState()
13
+  const { user } = useModel('user')
14
+  const { Show = false, Close = () => { } } = props
15
+
10 16
   const ToGetUserPhone = (e) => { // 授权手机号
17
+    Close()
11 18
     request({
12 19
       ...apis.getUserPhone,
13
-      params: {
14
-        sessionKey: e.detail.cloudId,
20
+      data: {
21
+        sessionKey: Taro.getStorageSync('sessionKey'),
15 22
         encryptedData: e.detail.encryptedData,
16 23
         iv: e.detail.iv
17 24
       }
18 25
     }).then((res) => {
19
-      console.log(res)
26
+      setUser({ ...user, phone: res.phoneNumber })
27
+      Taro.showToast({ title: '手机授权成功', icon: 'none' })
28
+    }).catch(() => {
29
+      Taro.showToast({ title: '手机授权失败', icon: 'none' })
20 30
     })
21 31
   }
22 32
 
23 33
   return (
24
-    <view className='GetUserPhone'>
34
+    <view className='GetUserPhone' style={{display: Show ? 'block' : 'none'}}>
25 35
       <view className='centerLabel'>
26 36
         <text>您暂未授权手机号</text>
27 37
         <view className='flex-h'>
28
-          <text className='flex-item'>取消</text>
29
-          <Button className='flex-item' open-type='getPhoneNumber' lang='zh_CN' onGetphonenumber={ToGetUserPhone}>授权手机</Button>
38
+          <text className='flex-item' onClick={Close}>取消</text>
39
+          <Button className='flex-item' open-type='getPhoneNumber' lang='zh_CN' onGetphonenumber={ToGetUserPhone}>授权</Button>
30 40
         </view>
31 41
       </view>
32 42
     </view>

+ 32
- 1
src/components/GetUserPhone/index.less Wyświetl plik

@@ -9,8 +9,39 @@
9 9
 
10 10
   >view {
11 11
     width: 60%;
12
-    padding: 20px;
13 12
     background: #fff;
14 13
     border-radius: 10px;
14
+
15
+    >text {
16
+      display: block;
17
+      text-align: center;
18
+      font-size: 28px;
19
+      line-height: 40px;
20
+      padding: 40px 0;
21
+    }
22
+
23
+    >.flex-h {
24
+      position: relative;
25
+      overflow: hidden;
26
+      border-top: 2px solid rgba(0, 0, 0, 0.08);
27
+
28
+      >text {
29
+        font-size: 28px;
30
+        line-height: 80px;
31
+        text-align: center;
32
+        border-right: 2px solid rgba(0, 0, 0, 0.08);
33
+        color: #999;
34
+      }
35
+      >button {
36
+        font-size: 28px;
37
+        line-height: 80px;
38
+        background: none;
39
+        border: none;
40
+        padding: 0 !important;
41
+        &::after {
42
+          display: none;
43
+        }
44
+      }
45
+    }
15 46
   }
16 47
 }

+ 9
- 9
src/components/WuYeBaoXiu/index.css Wyświetl plik

@@ -3,50 +3,50 @@
3 3
   position: relative;
4 4
   overflow: hidden;
5 5
 }
6
-.WuYeBaoXiu > .BigImg {
6
+.WuYeBaoXiu .BigImg {
7 7
   width: 100%;
8 8
   padding-bottom: 50%;
9 9
   position: relative;
10 10
   overflow: hidden;
11 11
   background: #ccc;
12 12
 }
13
-.WuYeBaoXiu > .BigImg > image {
13
+.WuYeBaoXiu .BigImg > image {
14 14
   width: 100%;
15 15
   height: 100%;
16 16
 }
17
-.WuYeBaoXiu > .WoYaoBaoXiu {
17
+.WuYeBaoXiu .WoYaoBaoXiu {
18 18
   padding: 0 30px;
19 19
   margin-top: 30px;
20 20
   position: relative;
21 21
   overflow: hidden;
22 22
 }
23
-.WuYeBaoXiu > .WoYaoBaoXiu > view {
23
+.WuYeBaoXiu .WoYaoBaoXiu > view {
24 24
   font-size: 0;
25 25
   white-space: nowrap;
26 26
   background: #fff;
27 27
   border-radius: 98px;
28 28
   text-align: center;
29 29
 }
30
-.WuYeBaoXiu > .WoYaoBaoXiu > view > text {
30
+.WuYeBaoXiu .WoYaoBaoXiu > view > text {
31 31
   display: inline-block;
32 32
   vertical-align: middle;
33 33
   font-size: 32px;
34 34
   color: #971C21;
35 35
   line-height: 98px;
36 36
 }
37
-.WuYeBaoXiu > .WoYaoBaoXiu > view > text.iconfont {
37
+.WuYeBaoXiu .WoYaoBaoXiu > view > text.iconfont {
38 38
   margin-right: 10px;
39 39
 }
40
-.WuYeBaoXiu > .List {
40
+.WuYeBaoXiu .List {
41 41
   position: relative;
42 42
   overflow: hidden;
43 43
 }
44
-.WuYeBaoXiu > .List > view {
44
+.WuYeBaoXiu .List > view {
45 45
   width: 100%;
46 46
   position: relative;
47 47
   overflow: hidden;
48 48
   margin-bottom: 30px;
49 49
 }
50
-.WuYeBaoXiu > .List > view:first-child {
50
+.WuYeBaoXiu .List > view:first-child {
51 51
   margin-top: 30px;
52 52
 }

+ 73
- 25
src/components/WuYeBaoXiu/index.jsx Wyświetl plik

@@ -1,43 +1,91 @@
1
-import React, { useState } from 'react'
1
+import React, { useState, useEffect } from 'react'
2
+import request, { apis } from '@/utils/request'
3
+import { useModel } from '@/store'
2 4
 import Taro from '@tarojs/taro'
3
-import WuYeBaoXiuItem from '../WuYeBaoXiuItem/index'
5
+import WuYeBaoXiuItem from '@/components/WuYeBaoXiuItem/index'
6
+import ScrollPage from '@/components/ScrollPage/index'
4 7
 import '@/assets/css/reset.less'
5 8
 import '@/assets/css/iconfont.less'
6 9
 import './index.less'
7 10
 
8 11
 export default function WuYeBaoXiu (props) {
9 12
 
10
-  const [PageList, setPageList] = useState(['', '', '', '', '', '', ''])
13
+  const { user } = useModel('user')
14
+  const [IsPullUp, setIsPullUp] = useState(false)
15
+  const [IsPullDown, setIsPullDown] = useState(false)
16
+  const [HasNextPage, setHasNextPage] = useState(true)
17
+  const [PageNum, setPageNum] = useState(1)
18
+  const [PageList, setPageList] = useState([])
11 19
 
12
-  const [TestImg, setTestImg] = useState('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989360&di=8610f1678b51e26de6d4c6af39d1cf63&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2F201503%2F19%2F211608ztcq7higicydxhsy.jpg')
20
+  useEffect(() => {
21
+    GetPageList(() => {
22
+      setIsPullUp(false)
23
+    })
24
+  }, [PageNum])
25
+
26
+  const GetPageList = (done = () => { }) => { // 获取列表
27
+    request({ ...apis.getGongDanList, args: { orgId: user.orgId }, params: { pageNum: PageNum, pageSize: 10, type: 2 } }).then((res) => {
28
+      if (PageNum === 1) {
29
+        setPageList([...res.records])
30
+      } else {
31
+        setPageList(PageList.concat([...res.records]))
32
+      }
33
+      setHasNextPage(res.current - 0 < res.pages - 0)
34
+      done()
35
+    }).catch(() => {
36
+      done()
37
+    })
38
+  }
39
+
40
+  const OnRefresh = () => { // 页面下拉刷新
41
+    setIsPullDown(true)
42
+    setHasNextPage(true)
43
+    setPageNum(1)
44
+    if (PageNum === 1) {
45
+      GetPageList(() => {
46
+        setIsPullDown(false)
47
+      })
48
+    } else {
49
+      setPageNum(1)
50
+    }
51
+  }
52
+
53
+  const OnPullUp = () => {
54
+    if (HasNextPage) {
55
+      setIsPullUp(true)
56
+      setPageNum(PageNum + 1)
57
+    }
58
+  }
13 59
 
14 60
   return (
15 61
     <view className='WuYeBaoXiu'>
62
+      <ScrollPage IsPullDown={IsPullDown} IsPullUp={IsPullUp} HasMore={HasNextPage} OnRefresh={OnRefresh} OnPullUp={OnPullUp}>
16 63
 
17
-      {/* 大图 */}
18
-      <view className='BigImg'>
19
-        <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
20
-      </view>
64
+        {/* 大图 */}
65
+        <view className='BigImg'>
66
+          <image mode='aspectFill' src={null} className='centerLabel'></image>
67
+        </view>
68
+
69
+        {/* 我要报修 */}
70
+        <view className='WoYaoBaoXiu'>
71
+          <view onClick={() => { Taro.navigateTo({ url: `/pages/WuYe/BaoXiuQuYu/index` }) }}>
72
+            <text className='iconfont iconjia'></text>
73
+            <text>我要报修</text>
74
+          </view>
75
+        </view>
21 76
 
22
-      {/* 我要报修 */}
23
-      <view className='WoYaoBaoXiu'>
24
-        <view onClick={() => { Taro.navigateTo({ url: `/pages/WuYe/BaoXiuQuYu/index` }) }}>
25
-          <text className='iconfont iconjia'></text>
26
-          <text>我要报修</text>
77
+        {/* 报修列表 */}
78
+        <view className='List'>
79
+          {
80
+            PageList.map((item, index) => (
81
+              <view key={`WuYeBaoXiuItem-${index}`}>
82
+                <WuYeBaoXiuItem Data={{ ...item, id: index }}></WuYeBaoXiuItem>
83
+              </view>
84
+            ))
85
+          }
27 86
         </view>
28
-      </view>
29
-
30
-      {/* 报修列表 */}
31
-      <view className='List'>
32
-        {
33
-          PageList.map((item, index) => (
34
-            <view key={`WuYeBaoXiuItem-${index}`}>
35
-              <WuYeBaoXiuItem Data={{ ...item, id: index }}></WuYeBaoXiuItem>
36
-            </view>
37
-          ))
38
-        }
39
-      </view>
40 87
 
88
+      </ScrollPage>
41 89
     </view>
42 90
   )
43 91
 }

+ 3
- 3
src/components/WuYeBaoXiu/index.less Wyświetl plik

@@ -3,7 +3,7 @@
3 3
   position: relative;
4 4
   overflow: hidden;
5 5
 
6
-  >.BigImg {
6
+  .BigImg {
7 7
     width: 100%;
8 8
     padding-bottom: 50%;
9 9
     position: relative;
@@ -16,7 +16,7 @@
16 16
     }
17 17
   }
18 18
 
19
-  >.WoYaoBaoXiu {
19
+  .WoYaoBaoXiu {
20 20
     padding: 0 30px;
21 21
     margin-top: 30px;
22 22
     position: relative;
@@ -42,7 +42,7 @@
42 42
     }
43 43
   }
44 44
 
45
-  >.List {
45
+  .List {
46 46
     position: relative;
47 47
     overflow: hidden;
48 48
 

+ 14
- 14
src/components/WuYeFuWu/index.css Wyświetl plik

@@ -3,41 +3,41 @@
3 3
   position: relative;
4 4
   overflow: hidden;
5 5
 }
6
-.WuYeFuWu > .BigImg {
6
+.WuYeFuWu .BigImg {
7 7
   width: 100%;
8 8
   padding-bottom: 50%;
9 9
   position: relative;
10 10
   overflow: hidden;
11 11
   background: #ccc;
12 12
 }
13
-.WuYeFuWu > .BigImg > image {
13
+.WuYeFuWu .BigImg > image {
14 14
   width: 100%;
15 15
   height: 100%;
16 16
 }
17
-.WuYeFuWu > .BanShiZhiNan {
17
+.WuYeFuWu .BanShiZhiNan {
18 18
   padding: 40px 30px;
19 19
   background: #fff;
20 20
   margin-top: 30px;
21 21
   overflow: hidden;
22 22
 }
23
-.WuYeFuWu > .BanShiZhiNan > text {
23
+.WuYeFuWu .BanShiZhiNan > text {
24 24
   font-size: 30px;
25 25
   color: #333;
26 26
   font-weight: bold;
27 27
   line-height: 40px;
28 28
   display: block;
29 29
 }
30
-.WuYeFuWu > .BanShiZhiNan > .flex-h {
30
+.WuYeFuWu .BanShiZhiNan > .flex-h {
31 31
   position: relative;
32 32
   margin-top: 60px;
33 33
 }
34
-.WuYeFuWu > .BanShiZhiNan > .flex-h > .Line {
34
+.WuYeFuWu .BanShiZhiNan > .flex-h > .Line {
35 35
   width: 50px;
36 36
   position: relative;
37 37
   overflow: visible;
38 38
   border-left: 2px dashed #586FF8;
39 39
 }
40
-.WuYeFuWu > .BanShiZhiNan > .flex-h > .Line > view {
40
+.WuYeFuWu .BanShiZhiNan > .flex-h > .Line > view {
41 41
   width: 14px;
42 42
   height: 14px;
43 43
   background: #586FF8;
@@ -46,13 +46,13 @@
46 46
   left: -8px;
47 47
   top: 30px;
48 48
 }
49
-.WuYeFuWu > .BanShiZhiNan > .flex-h > .flex-item {
49
+.WuYeFuWu .BanShiZhiNan > .flex-h > .flex-item {
50 50
   position: relative;
51 51
   overflow: visible;
52 52
   background: rgba(88, 111, 248, 0.08);
53 53
   padding: 20px;
54 54
 }
55
-.WuYeFuWu > .BanShiZhiNan > .flex-h > .flex-item::after {
55
+.WuYeFuWu .BanShiZhiNan > .flex-h > .flex-item::after {
56 56
   content: '';
57 57
   width: 0;
58 58
   height: 0;
@@ -64,26 +64,26 @@
64 64
   border-style: solid dashed solid solid;
65 65
   border-width: 20px;
66 66
 }
67
-.WuYeFuWu > .BanShiZhiNan > .flex-h > .flex-item > text {
67
+.WuYeFuWu .BanShiZhiNan > .flex-h > .flex-item > text {
68 68
   display: block;
69 69
   font-size: 24px;
70 70
   color: #333;
71 71
   line-height: 40px;
72 72
   margin-top: 10px;
73 73
 }
74
-.WuYeFuWu > .BanShiZhiNan > .flex-h > .flex-item > text:first-child {
74
+.WuYeFuWu .BanShiZhiNan > .flex-h > .flex-item > text:first-child {
75 75
   margin-top: 0;
76 76
 }
77
-.WuYeFuWu > .List {
77
+.WuYeFuWu .List {
78 78
   position: relative;
79 79
   overflow: hidden;
80 80
 }
81
-.WuYeFuWu > .List > view {
81
+.WuYeFuWu .List > view {
82 82
   width: 100%;
83 83
   position: relative;
84 84
   overflow: hidden;
85 85
   margin-bottom: 30px;
86 86
 }
87
-.WuYeFuWu > .List > view:first-child {
87
+.WuYeFuWu .List > view:first-child {
88 88
   margin-top: 30px;
89 89
 }

+ 57
- 25
src/components/WuYeFuWu/index.jsx Wyświetl plik

@@ -1,34 +1,67 @@
1
-import React, { Component } from 'react'
2
-import WuYeFuWuItem from '../WuYeFuWuItem/index'
3
-import '../../assets/css/reset.less'
4
-import '../../assets/css/iconfont.less'
1
+import React, { useState, useEffect } from 'react'
2
+import request, { apis } from '@/utils/request'
3
+import { useModel } from '@/store'
4
+import WuYeFuWuItem from '@/components/WuYeFuWuItem/index'
5
+import ScrollPage from '@/components/ScrollPage/index'
6
+import '@/assets/css/reset.less'
7
+import '@/assets/css/iconfont.less'
5 8
 import './index.less'
6 9
 
7
-export default class WuYeFuWu extends Component {
10
+export default function WuYeFuWu () {
8 11
 
9
-  state = {
10
-    PageList: ['', '', '', '', '', '', ''],
11
-    TestImg: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989360&di=8610f1678b51e26de6d4c6af39d1cf63&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2F201503%2F19%2F211608ztcq7higicydxhsy.jpg'
12
-  }
13
-
14
-  componentWillMount () { }
12
+  const { user } = useModel('user')
13
+  const [IsPullUp, setIsPullUp] = useState(false)
14
+  const [IsPullDown, setIsPullDown] = useState(false)
15
+  const [HasNextPage, setHasNextPage] = useState(true)
16
+  const [PageNum, setPageNum] = useState(1)
17
+  const [PageList, setPageList] = useState([])
15 18
 
16
-  componentDidMount () { }
19
+  useEffect(() => {
20
+    GetPageList(() => {
21
+      setIsPullUp(false)
22
+    })
23
+  }, [PageNum])
17 24
 
18
-  componentWillUnmount () { }
19
-
20
-  componentDidShow () { }
25
+  const GetPageList = (done = () => { }) => { // 获取列表
26
+    request({ ...apis.getGongGaoList, args: { orgId: user.orgId }, params: { pageNum: PageNum, pageSize: 10 } }).then((res) => {
27
+      if (PageNum === 1) {
28
+        setPageList([...res.records])
29
+      } else {
30
+        setPageList(PageList.concat([...res.records]))
31
+      }
32
+      setHasNextPage(res.current - 0 < res.pages - 0)
33
+      done()
34
+    }).catch(() => {
35
+      done()
36
+    })
37
+  }
21 38
 
22
-  componentDidHide () { }
39
+  const OnRefresh = () => { // 页面下拉刷新
40
+    setIsPullDown(true)
41
+    setHasNextPage(true)
42
+    setPageNum(1)
43
+    if (PageNum === 1) {
44
+      GetPageList(() => {
45
+        setIsPullDown(false)
46
+      })
47
+    } else {
48
+      setPageNum(1)
49
+    }
50
+  }
23 51
 
24
-  render () {
25
-    const { TestImg, PageList } = this.state
26
-    return (
27
-      <view className='WuYeFuWu'>
52
+  const OnPullUp = () => {
53
+    if (HasNextPage) {
54
+      setIsPullUp(true)
55
+      setPageNum(PageNum + 1)
56
+    }
57
+  }
28 58
 
59
+  return (
60
+    <view className='WuYeFuWu'>
61
+      <ScrollPage IsPullDown={IsPullDown} IsPullUp={IsPullUp} HasMore={HasNextPage} OnRefresh={OnRefresh} OnPullUp={OnPullUp}>
29 62
         {/* 大图 */}
30 63
         <view className='BigImg'>
31
-          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
64
+          <image mode='aspectFill' src={null} className='centerLabel'></image>
32 65
         </view>
33 66
 
34 67
         {/* 物业办事指南 */}
@@ -54,8 +87,7 @@ export default class WuYeFuWu extends Component {
54 87
             ))
55 88
           }
56 89
         </view>
57
-
58
-      </view>
59
-    )
60
-  }
90
+      </ScrollPage>
91
+    </view>
92
+  )
61 93
 }

+ 3
- 3
src/components/WuYeFuWu/index.less Wyświetl plik

@@ -3,7 +3,7 @@
3 3
   position: relative;
4 4
   overflow: hidden;
5 5
 
6
-  >.BigImg {
6
+  .BigImg {
7 7
     width: 100%;
8 8
     padding-bottom: 50%;
9 9
     position: relative;
@@ -16,7 +16,7 @@
16 16
     }
17 17
   }
18 18
 
19
-  >.BanShiZhiNan {
19
+  .BanShiZhiNan {
20 20
     padding: 40px 30px;
21 21
     background: #fff;
22 22
     margin-top: 30px;
@@ -85,7 +85,7 @@
85 85
 
86 86
   }
87 87
 
88
-  >.List {
88
+  .List {
89 89
     position: relative;
90 90
     overflow: hidden;
91 91
 

+ 30
- 0
src/components/WuYeGongGao/index.css Wyświetl plik

@@ -0,0 +1,30 @@
1
+.WuYeGongGao {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  overflow: hidden;
6
+}
7
+.WuYeGongGao .BigImg {
8
+  width: 100%;
9
+  padding-bottom: 50%;
10
+  position: relative;
11
+  overflow: hidden;
12
+  background: #ccc;
13
+}
14
+.WuYeGongGao .BigImg > image {
15
+  width: 100%;
16
+  height: 100%;
17
+}
18
+.WuYeGongGao .List {
19
+  position: relative;
20
+  overflow: hidden;
21
+}
22
+.WuYeGongGao .List > view {
23
+  width: 100%;
24
+  position: relative;
25
+  overflow: hidden;
26
+  margin-bottom: 30px;
27
+}
28
+.WuYeGongGao .List > view:first-child {
29
+  margin-top: 30px;
30
+}

+ 57
- 23
src/components/WuYeGongGao/index.jsx Wyświetl plik

@@ -1,34 +1,68 @@
1
-import React, { Component } from 'react'
2
-import WuYeGongGaoItem from '../../components/WuYeGongGaoItem/index'
3
-import '../../assets/css/reset.less'
4
-import '../../assets/css/iconfont.less'
1
+import React, { useState, useEffect } from 'react'
2
+import request, { apis } from '@/utils/request'
3
+import { useModel } from '@/store'
4
+import WuYeGongGaoItem from '@/components/WuYeGongGaoItem/index'
5
+import ScrollPage from '@/components/ScrollPage/index'
6
+import '@/assets/css/reset.less'
7
+import '@/assets/css/iconfont.less'
5 8
 import './index.less'
6 9
 
7
-export default class WuYeGongGao extends Component {
10
+export default function WuYeGongGao () {
8 11
 
9
-  state = {
10
-    PageList: ['', '', '', '', '', '', ''],
11
-    TestImg: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989360&di=8610f1678b51e26de6d4c6af39d1cf63&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2F201503%2F19%2F211608ztcq7higicydxhsy.jpg'
12
-  }
13
-
14
-  componentWillMount () { }
12
+  const { user } = useModel('user')
13
+  const [IsPullUp, setIsPullUp] = useState(false)
14
+  const [IsPullDown, setIsPullDown] = useState(false)
15
+  const [HasNextPage, setHasNextPage] = useState(true)
16
+  const [PageNum, setPageNum] = useState(1)
17
+  const [PageList, setPageList] = useState([])
15 18
 
16
-  componentDidMount () { }
19
+  useEffect(() => {
20
+    GetPageList(() => {
21
+      setIsPullUp(false)
22
+    })
23
+  }, [PageNum])
17 24
 
18
-  componentWillUnmount () { }
25
+  const GetPageList = (done = () => { }) => { // 获取列表
26
+    request({ ...apis.getGongGaoList, args: { orgId: user.orgId }, params: { pageNum: PageNum, pageSize: 10 } }).then((res) => {
27
+      if (PageNum === 1) {
28
+        setPageList([...res.records])
29
+      } else {
30
+        setPageList(PageList.concat([...res.records]))
31
+      }
32
+      setHasNextPage(res.current - 0 < res.pages - 0)
33
+      done()
34
+    }).catch(() => {
35
+      done()
36
+    })
37
+  }
19 38
 
20
-  componentDidShow () { }
39
+  const OnRefresh = () => { // 页面下拉刷新
40
+    setIsPullDown(true)
41
+    setHasNextPage(true)
42
+    setPageNum(1)
43
+    if (PageNum === 1) {
44
+      GetPageList(() => {
45
+        setIsPullDown(false)
46
+      })
47
+    } else {
48
+      setPageNum(1)
49
+    }
50
+  }
21 51
 
22
-  componentDidHide () { }
52
+  const OnPullUp = () => {
53
+    if (HasNextPage) {
54
+      setIsPullUp(true)
55
+      setPageNum(PageNum + 1)
56
+    }
57
+  }
23 58
 
24
-  render () {
25
-    const { TestImg, PageList } = this.state
26
-    return (
27
-      <view className='WuYeGongGao'>
59
+  return (
60
+    <view className='WuYeGongGao'>
61
+      <ScrollPage IsPullDown={IsPullDown} IsPullUp={IsPullUp} HasMore={HasNextPage} OnRefresh={OnRefresh} OnPullUp={OnPullUp}>
28 62
 
29 63
         {/* 大图 */}
30 64
         <view className='BigImg'>
31
-          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
65
+          <image mode='aspectFill' src={null} className='centerLabel'></image>
32 66
         </view>
33 67
 
34 68
         {/* 列表 */}
@@ -42,7 +76,7 @@ export default class WuYeGongGao extends Component {
42 76
           }
43 77
         </view>
44 78
 
45
-      </view>
46
-    )
47
-  }
79
+      </ScrollPage>
80
+    </view>
81
+  )
48 82
 }

+ 3
- 2
src/components/WuYeGongGao/index.less Wyświetl plik

@@ -1,9 +1,10 @@
1 1
 .WuYeGongGao {
2 2
   width: 100%;
3
+  height: 100%;
3 4
   position: relative;
4 5
   overflow: hidden;
5 6
 
6
-  >.BigImg {
7
+  .BigImg {
7 8
     width: 100%;
8 9
     padding-bottom: 50%;
9 10
     position: relative;
@@ -16,7 +17,7 @@
16 17
     }
17 18
   }
18 19
 
19
-  >.List {
20
+  .List {
20 21
     position: relative;
21 22
     overflow: hidden;
22 23
 

+ 68
- 19
src/components/WuYeJiaoFei/index.jsx Wyświetl plik

@@ -1,33 +1,82 @@
1
-import React, { useState } from 'react'
2
-import WuYeJiaoFeiItem from '../WuYeJiaoFeiItem/index'
1
+import React, { useState, useEffect } from 'react'
2
+import request, { apis } from '@/utils/request'
3
+import { useModel } from '@/store'
4
+import WuYeJiaoFeiItem from '@/components/WuYeJiaoFeiItem/index'
5
+import ScrollPage from '@/components/ScrollPage/index'
3 6
 import '@/assets/css/reset.less'
4 7
 import '@/assets/css/iconfont.less'
5 8
 import './index.less'
6 9
 
7 10
 export default function WuYeJiaoFei () {
8 11
 
9
-  const [PageList, setPageList] = useState(['', '', '', '', '', '', ''])
10
-  const [TestImg, setTestImg] = useState('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989360&di=8610f1678b51e26de6d4c6af39d1cf63&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2F201503%2F19%2F211608ztcq7higicydxhsy.jpg')
12
+  const { user } = useModel('user')
13
+  const [IsPullUp, setIsPullUp] = useState(false)
14
+  const [IsPullDown, setIsPullDown] = useState(false)
15
+  const [HasNextPage, setHasNextPage] = useState(true)
16
+  const [PageNum, setPageNum] = useState(1)
17
+  const [PageList, setPageList] = useState([])
18
+
19
+  useEffect(() => {
20
+    GetPageList(() => {
21
+      setIsPullUp(false)
22
+    })
23
+  }, [PageNum])
24
+
25
+  const GetPageList = (done = () => { }) => { // 获取列表
26
+    request({ ...apis.getJiaoFeiList, args: { type: 0 }, params: { pageNum: PageNum, pageSize: 10 } }).then((res) => {
27
+      if (PageNum === 1) {
28
+        setPageList([...res.records])
29
+      } else {
30
+        setPageList(PageList.concat([...res.records]))
31
+      }
32
+      setHasNextPage(res.current - 0 < res.pages - 0)
33
+      done()
34
+    }).catch(() => {
35
+      done()
36
+    })
37
+  }
38
+
39
+  const OnRefresh = () => { // 页面下拉刷新
40
+    setIsPullDown(true)
41
+    setHasNextPage(true)
42
+    setPageNum(1)
43
+    if (PageNum === 1) {
44
+      GetPageList(() => {
45
+        setIsPullDown(false)
46
+      })
47
+    } else {
48
+      setPageNum(1)
49
+    }
50
+  }
51
+
52
+  const OnPullUp = () => {
53
+    if (HasNextPage) {
54
+      setIsPullUp(true)
55
+      setPageNum(PageNum + 1)
56
+    }
57
+  }
11 58
 
12 59
   return (
13 60
     <view className='WuYeJiaoFei'>
61
+      <ScrollPage IsPullDown={IsPullDown} IsPullUp={IsPullUp} HasMore={HasNextPage} OnRefresh={OnRefresh} OnPullUp={OnPullUp}>
62
+
63
+        {/* 大图 */}
64
+        <view className='BigImg'>
65
+          <image mode='aspectFill' src={null} className='centerLabel'></image>
66
+        </view>
14 67
 
15
-      {/* 大图 */}
16
-      <view className='BigImg'>
17
-        <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
18
-      </view>
19
-
20
-      {/* 缴费列表 */}
21
-      <view className='List'>
22
-        {
23
-          PageList.map((item, index) => (
24
-            <view key={`WuYeJiaoFeiItem-${index}`}>
25
-              <WuYeJiaoFeiItem Data={item}></WuYeJiaoFeiItem>
26
-            </view>
27
-          ))
28
-        }
29
-      </view>
68
+        {/* 缴费列表 */}
69
+        <view className='List'>
70
+          {
71
+            PageList.map((item, index) => (
72
+              <view key={`WuYeJiaoFeiItem-${index}`}>
73
+                <WuYeJiaoFeiItem Data={item}></WuYeJiaoFeiItem>
74
+              </view>
75
+            ))
76
+          }
77
+        </view>
30 78
 
79
+      </ScrollPage>
31 80
     </view>
32 81
   )
33 82
 }

+ 4
- 1
src/pages/HuoDong/HuoDongDetail/index.css Wyświetl plik

@@ -102,6 +102,9 @@
102 102
   color: #fff;
103 103
   line-height: 98px;
104 104
   border-radius: 98px;
105
-  background: #F35844;
105
+  background: #ccc;
106 106
   margin-top: 60px;
107 107
 }
108
+.HuoDongDetail > .Info > .BottomBtn.active {
109
+  background: #F35844;
110
+}

+ 43
- 7
src/pages/HuoDong/HuoDongDetail/index.jsx Wyświetl plik

@@ -11,7 +11,9 @@ import './index.less'
11 11
 export default function HuoDongDetail (props) {
12 12
 
13 13
   const { user } = useModel('user')
14
+  const [DataLock, setDataLock] = useState(false)
14 15
   const [ShowGetUserPhoneLayer, setShowGetUserPhoneLayer] = useState(false)
16
+  const [HasJoin, setHasJoin] = useState(null)
15 17
   const [CurrnetHuoDongId] = useState(Current.router.params.id) // 当前活动id
16 18
   const [ActivityDetail, setActivityDetail] = useState(null) // 活动详情
17 19
 
@@ -22,21 +24,52 @@ export default function HuoDongDetail (props) {
22 24
   const GetActivityDetail = () => { // 获取活动详情
23 25
     request({ ...apis.getActivityDetail, args: { id: CurrnetHuoDongId } }).then((res) => {
24 26
       setActivityDetail(res)
27
+      CheckActivityJoin()
28
+    })
29
+  }
30
+
31
+  const CheckActivityJoin = () => { // 查询活动参加详情
32
+    request({ ...apis.checkActivityJoin, args: { id: CurrnetHuoDongId } }).then((res) => {
33
+      setHasJoin(!!res.dynamic.isSign)
25 34
     })
26 35
   }
27 36
 
28 37
   const ToJoin = () => { // 去报名
29
-    const { personId, phone } = user
38
+    if (DataLock || ActivityDetail === null || HasJoin) return
39
+    setDataLock(true)
40
+    const { personId, phone, nickname, orgId } = user
30 41
     const { dynamicId } = ActivityDetail
31
-    console.log(personId, phone, dynamicId)
42
+    if (!phone) { // 未授权手机号,唤起授权手机号弹窗
43
+      setShowGetUserPhoneLayer(true)
44
+      setDataLock(false)
45
+      return false
46
+    }
47
+    let Data = {
48
+      phone,
49
+      personId,
50
+      dynamicId,
51
+      name: nickname,
52
+      orgId,
53
+      attendNum: 1,
54
+      sharePerson: null,
55
+      sharePersonName: null,
56
+      sharePersonType: null
57
+    }
58
+    request({ ...apis.JoinActivity, data: { ...Data } }).then(() => {
59
+      setHasJoin(true)
60
+      setDataLock(false)
61
+    }).catch((res) => {
62
+      Taro.showToast({ title: res, icon: 'none' })
63
+      setDataLock(false)
64
+    })
32 65
   }
33 66
 
34 67
   return (
35 68
     <view className='HuoDongDetail'>
36
-      {
37
-        ShowGetUserPhoneLayer &&
38
-        <GetUserPhone></GetUserPhone>
39
-      }
69
+
70
+      {/* 获取用户手机号授权 */}
71
+      <GetUserPhone Show={ShowGetUserPhoneLayer} Close={() => { setShowGetUserPhoneLayer(false) }}></GetUserPhone>
72
+
40 73
       <view className='BannerLayer'></view>
41 74
       {
42 75
         ActivityDetail !== null &&
@@ -69,7 +102,10 @@ export default function HuoDongDetail (props) {
69 102
             <RichText nodes={ActivityDetail.desc}></RichText>
70 103
           </view>
71 104
 
72
-          <text className='BottomBtn' onClick={ToJoin}>立即参加</text>
105
+          {
106
+            HasJoin !== null &&
107
+            <text className={HasJoin ? 'BottomBtn' : 'active BottomBtn'} onClick={ToJoin}>{HasJoin ? '已报名' : '立即参加'}</text>
108
+          }
73 109
 
74 110
         </view>
75 111
       }

+ 5
- 1
src/pages/HuoDong/HuoDongDetail/index.less Wyświetl plik

@@ -114,8 +114,12 @@
114 114
       color: #fff;
115 115
       line-height: 98px;
116 116
       border-radius: 98px;
117
-      background: #F35844;
117
+      background: #ccc;
118 118
       margin-top: 60px;
119
+
120
+      &.active {
121
+        background: #F35844;
122
+      }
119 123
     }
120 124
   }
121 125
 }

+ 40
- 17
src/pages/ShouYe/HuoDong/index.jsx Wyświetl plik

@@ -1,4 +1,5 @@
1
-import React, { useState } from 'react'
1
+import React, { useState, useEffect } from 'react'
2
+import request, { apis } from '@/utils/request'
2 3
 import ActivityListItem from '@/components/ActivityListItem/index'
3 4
 import ScrollPage from '@/components/ScrollPage/index'
4 5
 import '@/assets/css/reset.less'
@@ -7,36 +8,58 @@ import './index.less'
7 8
 
8 9
 export default function ShouYeHuoDong (props) {
9 10
 
10
-  const [ActivityList, setActivityList] = useState(['', '', '', '', '', '', ''])
11
-  const [IsPullDown, setIsPullDown] = useState(false)
12 11
   const [IsPullUp, setIsPullUp] = useState(false)
13
-  const [HasMore, setHasMore] = useState(true)
12
+  const [IsPullDown, setIsPullDown] = useState(false)
13
+  const [HasNextPage, setHasNextPage] = useState(true)
14
+  const [PageNum, setPageNum] = useState(1)
15
+  const [PageList, setPageList] = useState([])
16
+
17
+  useEffect(() => {
18
+    GetPageList(() => {
19
+      setIsPullUp(false)
20
+    })
21
+  }, [PageNum])
22
+
23
+  const GetPageList = (done = () => { }) => { // 获取列表
24
+    request({ ...apis.getActivityList, params: { pageNum: PageNum, pageSize: 6 } }).then((res) => {
25
+      if (PageNum === 1) {
26
+        setPageList([...res.list])
27
+      } else {
28
+        setPageList(PageList.concat([...res.list]))
29
+      }
30
+      setHasNextPage(res.current - 0 < res.pages - 0)
31
+      done()
32
+    }).catch(() => {
33
+      done()
34
+    })
35
+  }
14 36
 
15 37
   const OnRefresh = () => { // 页面下拉刷新
16 38
     setIsPullDown(true)
17
-    window.setTimeout(() => {
18
-      setIsPullUp(false)
19
-      setHasMore(true)
20
-      setIsPullDown(false)
21
-    }, 1000)
39
+    setHasNextPage(true)
40
+    setPageNum(1)
41
+    if (PageNum === 1) {
42
+      GetPageList(() => {
43
+        setIsPullDown(false)
44
+      })
45
+    } else {
46
+      setPageNum(1)
47
+    }
22 48
   }
23 49
 
24
-  const OnPullUp = () => { // 页面上拉加载
25
-    if (HasMore && !IsPullUp) {
50
+  const OnPullUp = () => {
51
+    if (HasNextPage) {
26 52
       setIsPullUp(true)
27
-      window.setTimeout(() => {
28
-        setIsPullUp(false)
29
-        setHasMore(false)
30
-      }, 1000)
53
+      setPageNum(PageNum + 1)
31 54
     }
32 55
   }
33 56
 
34 57
   return (
35 58
     <view className='ShouYeHuoDong'>
36
-      <ScrollPage IsPullDown={IsPullDown} IsPullUp={IsPullUp} HasMore={HasMore} OnRefresh={OnRefresh} OnPullUp={OnPullUp}>
59
+      <ScrollPage IsPullDown={IsPullDown} IsPullUp={IsPullUp} HasMore={HasNextPage} OnRefresh={OnRefresh} OnPullUp={OnPullUp}>
37 60
         <view className='ShouYeHuoDongContent'>
38 61
           {
39
-            ActivityList.map((item, index) => (
62
+            PageList.map((item, index) => (
40 63
               <view className='ListItem' key={`ActivityItem-${index}`}>
41 64
                 <ActivityListItem Data={item}></ActivityListItem>
42 65
               </view>

+ 9
- 5
src/pages/ShouYe/index.jsx Wyświetl plik

@@ -1,6 +1,7 @@
1 1
 import React, { useState, useEffect } from 'react'
2 2
 import NavHeader from '@/components/NavHeader/index'
3 3
 import GetUserPhone from '@/components/GetUserPhone/index'
4
+import GetUserIcon from '@/components/GetUserIcon/index'
4 5
 import { Swiper, SwiperItem, Text } from '@tarojs/components'
5 6
 import request, { apis } from '@/utils/request'
6 7
 import { useModel } from '@/store'
@@ -14,7 +15,8 @@ import './index.less'
14 15
 export default function Index (props) {
15 16
 
16 17
   const { user } = useModel('user')
17
-  const [ShowGetUserPhoneLayer, setShowGetUserPhoneLayer] = useState(true)
18
+  const [ShowGetUserPhoneLayer, setShowGetUserPhoneLayer] = useState(false)
19
+  const [ShowGetUserIconLayer, setShowGetUserIconLayer] = useState(false)
18 20
   const [ShowAdvLayer, setShowAdvLayer] = useState(false)
19 21
   const [IsPull, setIsPull] = useState(false)
20 22
   const [OwnerList] = useState([
@@ -125,10 +127,6 @@ export default function Index (props) {
125 127
   return (
126 128
     <Page>
127 129
       <view className='ShouYe flex-v'>
128
-        {
129
-          ShowGetUserPhoneLayer &&
130
-          <GetUserPhone></GetUserPhone>
131
-        }
132 130
         <NavHeader BgColor='#f35844' Title='首页'></NavHeader>
133 131
         <view className='flex-item'>
134 132
 
@@ -258,6 +256,12 @@ export default function Index (props) {
258 256
           </view>
259 257
 
260 258
         </view>
259
+
260
+        {/* 获取用户手机号授权 */}
261
+        <GetUserPhone Show={ShowGetUserPhoneLayer} Close={() => { setShowGetUserPhoneLayer(false) }}></GetUserPhone>
262
+
263
+        {/* 获取用户头像 */}
264
+        <GetUserIcon Show={ShowGetUserIconLayer} Close={() => { setShowGetUserIconLayer(false) }}></GetUserIcon>
261 265
       </view >
262 266
     </Page>
263 267
   )

+ 49
- 13
src/pages/WoDe/WoDeHuoDong/index.jsx Wyświetl plik

@@ -1,36 +1,72 @@
1
-import React, { useState } from 'react'
1
+import React, { useState, useEffect } from 'react'
2
+import request, { apis } from '@/utils/request'
2 3
 import ActivityListItem from '@/components/ActivityListItem/index'
4
+import ScrollPage from '@/components/ScrollPage/index'
3 5
 import '@/assets/css/reset.less'
4 6
 import '@/assets/css/iconfont.less'
5 7
 import './index.less'
6 8
 
7 9
 export default function WoDeHuoDong (props) {
10
+  
11
+  const [IsPullUp, setIsPullUp] = useState(false)
12
+  const [IsPullDown, setIsPullDown] = useState(false)
13
+  const [HasNextPage, setHasNextPage] = useState(true)
14
+  const [PageNum, setPageNum] = useState(1)
15
+  const [PageList, setPageList] = useState([])
8 16
 
9
-  const [IsPull, setIsPull] = useState(false)
10
-  const [ActivityList, setActivityList] = useState(['', '', '', '', '', '', ''])
17
+  useEffect(() => {
18
+    GetPageList(() => {
19
+      setIsPullUp(false)
20
+    })
21
+  }, [PageNum])
11 22
 
12
-  const OnRefresh = () => {
13
-    setIsPull(true)
14
-    window.setTimeout(() => {
15
-      setIsPull(false)
16
-    }, 1000)
23
+  const GetPageList = (done = () => { }) => { // 获取列表
24
+    request({ ...apis.getActivityList, params: { pageNum: PageNum, pageSize: 6, mine: '1' } }).then((res) => {
25
+      if (PageNum === 1) {
26
+        setPageList([...res.records])
27
+      } else {
28
+        setPageList(PageList.concat([...res.records]))
29
+      }
30
+      setHasNextPage(res.current - 0 < res.pages - 0)
31
+      done()
32
+    }).catch(() => {
33
+      done()
34
+    })
35
+  }
36
+
37
+  const OnRefresh = () => { // 页面下拉刷新
38
+    setIsPullDown(true)
39
+    setHasNextPage(true)
40
+    setPageNum(1)
41
+    if (PageNum === 1) {
42
+      GetPageList(() => {
43
+        setIsPullDown(false)
44
+      })
45
+    } else {
46
+      setPageNum(1)
47
+    }
48
+  }
49
+
50
+  const OnPullUp = () => {
51
+    if (HasNextPage) {
52
+      setIsPullUp(true)
53
+      setPageNum(PageNum + 1)
54
+    }
17 55
   }
18 56
 
19 57
   return (
20 58
     <view className='WoDeHuoDong'>
21
-      <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={OnRefresh} refresher-triggered={IsPull} refresher-background='none'>
22
-
59
+      <ScrollPage OnRefresh={OnRefresh} IsPullUp={IsPullUp} IsPullDown={IsPullDown} OnPullUp={OnPullUp} HasMore={HasNextPage}>
23 60
         <view className='Content Activity'>
24 61
           {
25
-            ActivityList.map((item, index) => (
62
+            PageList.map((item, index) => (
26 63
               <view className='ListItem' key={`ActivityItem-${index}`}>
27 64
                 <ActivityListItem Data={item}></ActivityListItem>
28 65
               </view>
29 66
             ))
30 67
           }
31 68
         </view>
32
-
33
-      </scroll-view>
69
+      </ScrollPage>
34 70
     </view>
35 71
   )
36 72
 }

+ 28
- 32
src/pages/WuYe/index.jsx Wyświetl plik

@@ -34,41 +34,37 @@ export default function WuYe (props) {
34 34
       <TabPageCutNav List={NavList} CurrentNavId={CurrentNavId} NavChange={NavChange}></TabPageCutNav>
35 35
       <view className='flex-item'>
36 36
         <view>
37
-          <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={OnRefresh} refresher-triggered={IsPull} refresher-background='none'>
37
+          {/* 公告 */}
38
+          {
39
+            CurrentNavId - 0 === 1 &&
40
+            <view className='Content GongGao'>
41
+              <WuYeGongGao></WuYeGongGao>
42
+            </view>
43
+          }
38 44
 
39
-            {/* 公告 */}
40
-            {
41
-              CurrentNavId - 0 === 1 &&
42
-              <view className='Content GongGao'>
43
-                <WuYeGongGao></WuYeGongGao>
44
-              </view>
45
-            }
45
+          {/* 服务 */}
46
+          {
47
+            CurrentNavId - 0 === 2 &&
48
+            <view className='Content FuWu'>
49
+              <WuYeFuWu></WuYeFuWu>
50
+            </view>
51
+          }
46 52
 
47
-            {/* 服务 */}
48
-            {
49
-              CurrentNavId - 0 === 2 &&
50
-              <view className='Content FuWu'>
51
-                <WuYeFuWu></WuYeFuWu>
52
-              </view>
53
-            }
53
+          {/* 报修 */}
54
+          {
55
+            CurrentNavId - 0 === 3 &&
56
+            <view className='Content BaoXiu'>
57
+              <WuYeBaoXiu></WuYeBaoXiu>
58
+            </view>
59
+          }
54 60
 
55
-            {/* 报修 */}
56
-            {
57
-              CurrentNavId - 0 === 3 &&
58
-              <view className='Content BaoXiu'>
59
-                <WuYeBaoXiu></WuYeBaoXiu>
60
-              </view>
61
-            }
62
-
63
-            {/* 缴费 */}
64
-            {
65
-              CurrentNavId - 0 === 4 &&
66
-              <view className='Content JiaoFei'>
67
-                <WuYeJiaoFei></WuYeJiaoFei>
68
-              </view>
69
-            }
70
-
71
-          </scroll-view>
61
+          {/* 缴费 */}
62
+          {
63
+            CurrentNavId - 0 === 4 &&
64
+            <view className='Content JiaoFei'>
65
+              <WuYeJiaoFei></WuYeJiaoFei>
66
+            </view>
67
+          }
72 68
         </view>
73 69
       </view>
74 70
     </view>

+ 20
- 0
src/utils/api.js Wyświetl plik

@@ -1,6 +1,18 @@
1 1
 const prefix = `${HOST}/api/wx`
2 2
 
3 3
 const $api = {
4
+  getJiaoFeiList: { // 获取缴费列表
5
+    method: 'get',
6
+    url: `${prefix}/bills/current_user/:type`
7
+  },
8
+  getGongDanList: { // 获取小区工单列表
9
+    method: 'get',
10
+    url: `${prefix}/tickets/list/:orgId`
11
+  },
12
+  getGongGaoList: { // 获取小区公告列表
13
+    method: 'get',
14
+    url: `${prefix}/announcements/:orgId`
15
+  },
4 16
   getUserPhone: { // 获取用户手机号
5 17
     method: 'post',
6 18
     url: `${prefix}/userPhone`
@@ -9,10 +21,18 @@ const $api = {
9 21
     method: 'get',
10 22
     url: `${prefix}/buildingDynamiceList`
11 23
   },
24
+  checkActivityJoin: { // 查询活动参加详情
25
+    method: 'get',
26
+    url: `${prefix}/buildingDynamiceEnlistInfo/:id`
27
+  },
12 28
   getActivityDetail: { // 获取活动详情
13 29
     method: 'get',
14 30
     url: `${prefix}/buildingDynamiceInfo/:id`
15 31
   },
32
+  JoinActivity: { // 参加活动
33
+    method: 'post',
34
+    url: `${prefix}/activityDynamicEnlistAdd`
35
+  },
16 36
   getNewsList: { // 获取资讯列表
17 37
     method: 'get',
18 38
     url: `${prefix}/taNews`

+ 1
- 1
src/utils/request.js Wyświetl plik

@@ -37,7 +37,7 @@ const request = options => {
37 37
   }
38 38
 
39 39
   const token = Taro.getStorageSync('token')
40
-  const authHeader = token ? { authorization: `Bearer ${token}` } : {}
40
+  const authHeader = token ? { authorization: `Bearer ${token}`, 'X-Auth-Token': token } : {}
41 41
   const appHeader = { appId, 'x-action': 'miniapp' }
42 42
 
43 43
   const config = {