xcx 4 年 前
コミット
5a49bf23f2
共有41 個のファイルを変更した2010 個の追加87 個の削除を含む
  1. 15
    8
      project.config.json
  2. 2
    2
      src/app.config.js
  3. 95
    0
      src/assets/css/iconfont.css
  4. 22
    6
      src/assets/css/iconfont.less
  5. 39
    0
      src/components/ActivityListItem/index.jsx
  6. 58
    0
      src/components/ActivityListItem/index.less
  7. 41
    0
      src/components/NewsListItem/index.jsx
  8. 53
    0
      src/components/NewsListItem/index.less
  9. 49
    0
      src/components/TabPageCutNav/index.css
  10. 10
    12
      src/components/TabPageCutNav/index.jsx
  11. 33
    27
      src/components/TabPageCutNav/index.less
  12. 52
    0
      src/components/WuYeBaoXiu/index.css
  13. 56
    0
      src/components/WuYeBaoXiu/index.jsx
  14. 60
    0
      src/components/WuYeBaoXiu/index.less
  15. 110
    0
      src/components/WuYeBaoXiuItem/index.css
  16. 48
    0
      src/components/WuYeBaoXiuItem/index.jsx
  17. 129
    0
      src/components/WuYeBaoXiuItem/index.less
  18. 89
    0
      src/components/WuYeFuWu/index.css
  19. 61
    0
      src/components/WuYeFuWu/index.jsx
  20. 103
    0
      src/components/WuYeFuWu/index.less
  21. 35
    0
      src/components/WuYeFuWuItem/index.css
  22. 36
    0
      src/components/WuYeFuWuItem/index.jsx
  23. 40
    0
      src/components/WuYeFuWuItem/index.less
  24. 48
    0
      src/components/WuYeGongGao/index.jsx
  25. 34
    0
      src/components/WuYeGongGao/index.less
  26. 38
    0
      src/components/WuYeGongGaoItem/index.jsx
  27. 61
    0
      src/components/WuYeGongGaoItem/index.less
  28. 29
    0
      src/components/WuYeJiaoFei/index.css
  29. 48
    0
      src/components/WuYeJiaoFei/index.jsx
  30. 34
    0
      src/components/WuYeJiaoFei/index.less
  31. 76
    0
      src/components/WuYeJiaoFeiItem/index.css
  32. 50
    0
      src/components/WuYeJiaoFeiItem/index.jsx
  33. 89
    0
      src/components/WuYeJiaoFeiItem/index.less
  34. 6
    5
      src/components/demo/index.jsx
  35. 72
    11
      src/pages/HuoDong/index.jsx
  36. 59
    9
      src/pages/HuoDong/index.less
  37. 1
    1
      src/pages/ShouYe/index.jsx
  38. 2
    1
      src/pages/WuYe/index.config.js
  39. 20
    0
      src/pages/WuYe/index.css
  40. 84
    5
      src/pages/WuYe/index.jsx
  41. 23
    0
      src/pages/WuYe/index.less

+ 15
- 8
project.config.json ファイルの表示

@@ -5,23 +5,30 @@
5 5
 	"appid": "touristappid",
6 6
 	"setting": {
7 7
 		"urlCheck": true,
8
-		"scopeDataCheck": false,
9
-		"coverView": true,
10 8
 		"es6": false,
9
+		"enhance": false,
11 10
 		"postcss": false,
12
-		"compileHotReLoad": false,
13 11
 		"preloadBackgroundData": false,
14 12
 		"minified": false,
15
-		"autoAudits": false,
16 13
 		"newFeature": false,
14
+		"coverView": true,
15
+		"nodeModules": false,
16
+		"autoAudits": false,
17
+		"showShadowRootInWxmlPanel": true,
18
+		"scopeDataCheck": false,
17 19
 		"uglifyFileName": false,
20
+		"checkInvalidKey": true,
21
+		"checkSiteMap": true,
18 22
 		"uploadWithSourceMap": true,
23
+		"compileHotReLoad": false,
24
+		"babelSetting": {
25
+			"ignore": [],
26
+			"disablePlugins": [],
27
+			"outputPath": ""
28
+		},
19 29
 		"useIsolateContext": true,
20
-		"nodeModules": false,
21
-		"enhance": false,
22 30
 		"useCompilerModule": false,
23
-		"userConfirmedUseCompilerModuleSwitch": false,
24
-		"showShadowRootInWxmlPanel": true
31
+		"userConfirmedUseCompilerModuleSwitch": false
25 32
 	},
26 33
 	"compileType": "miniprogram",
27 34
 	"simulatorType": "wechat",

+ 2
- 2
src/app.config.js ファイルの表示

@@ -1,9 +1,9 @@
1 1
 export default {
2 2
   pages: [
3
-    'pages/HuoDong/index',
3
+    'pages/FuLi/index',
4 4
     'pages/ShouYe/index',
5 5
     'pages/WuYe/index',
6
-    'pages/FuLi/index',
6
+    'pages/HuoDong/index',
7 7
     'pages/WoDe/index'
8 8
   ],
9 9
   tabBar: {

+ 95
- 0
src/assets/css/iconfont.css
ファイル差分が大きすぎるため省略します
ファイルの表示


+ 22
- 6
src/assets/css/iconfont.less
ファイル差分が大きすぎるため省略します
ファイルの表示


+ 39
- 0
src/components/ActivityListItem/index.jsx ファイルの表示

@@ -0,0 +1,39 @@
1
+import React, { Component } from 'react'
2
+import '../../assets/css/reset.less'
3
+import '../../assets/css/iconfont.less'
4
+import './index.less'
5
+
6
+export default class Index extends Component {
7
+
8
+  state = {
9
+    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'
10
+  }
11
+
12
+  componentWillMount () { }
13
+
14
+  componentDidMount () { }
15
+
16
+  componentWillUnmount () { }
17
+
18
+  componentDidShow () { }
19
+
20
+  componentDidHide () { }
21
+
22
+  render () {
23
+    const { TestImg } = this.state
24
+    return (
25
+      <view className='ActivityListItem'>
26
+        <view className='Img'>
27
+          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
28
+        </view>
29
+        <view className='Info flex-h'>
30
+          <view className='flex-item'>
31
+            <text>核销拼团</text>
32
+            <text>参与截止时间:2019年10月20日 10:00:00</text>
33
+          </view>
34
+          <text className='active'>未开始</text>
35
+        </view>
36
+      </view >
37
+    )
38
+  }
39
+}

+ 58
- 0
src/components/ActivityListItem/index.less ファイルの表示

@@ -0,0 +1,58 @@
1
+.ActivityListItem {
2
+  width: 100%;
3
+  position: relative;
4
+  overflow: hidden;
5
+  background: #fff;
6
+  border-radius: 12px;
7
+  > .Img {
8
+    width: 100%;
9
+    padding-bottom: 56.25%;
10
+    position: relative;
11
+    overflow: hidden;
12
+    background: #ccc;
13
+    > image {
14
+      width: 100%;
15
+      height: 100%;
16
+      z-index: 1;
17
+    }
18
+  }
19
+  > .Info {
20
+    padding: 0 20px;
21
+    position: relative;
22
+    overflow: hidden;
23
+    align-items: center;
24
+    > .flex-item {
25
+      position: relative;
26
+      overflow: hidden;
27
+      margin-right: 20px;
28
+      padding: 24px 0;
29
+      > text {
30
+        display: block;
31
+        font-size: 24px;
32
+        color: #999;
33
+        line-height: 40px;
34
+        white-space: nowrap;
35
+        overflow: hidden;
36
+        text-overflow: ellipsis;
37
+        &:first-child {
38
+          color: #333;
39
+          font-size: 32px;
40
+          font-weight: bold;
41
+          margin-bottom: 10px;
42
+        }
43
+      }
44
+    }
45
+    > text {
46
+      font-size: 30px;
47
+      color: #333;
48
+      line-height: 60px;
49
+      padding: 0 30px;
50
+      border-radius: 60px;
51
+      background: #ccc;
52
+      &.active {
53
+        color: #f35844;
54
+        background: rgba(243, 88, 68, 0.3);
55
+      }
56
+    }
57
+  }
58
+}

+ 41
- 0
src/components/NewsListItem/index.jsx ファイルの表示

@@ -0,0 +1,41 @@
1
+import React, { Component } from 'react'
2
+import '../../assets/css/reset.less'
3
+import '../../assets/css/iconfont.less'
4
+import './index.less'
5
+
6
+export default class Index extends Component {
7
+
8
+  state = {
9
+    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'
10
+  }
11
+
12
+  componentWillMount () { }
13
+
14
+  componentDidMount () { }
15
+
16
+  componentWillUnmount () { }
17
+
18
+  componentDidShow () { }
19
+
20
+  componentDidHide () { }
21
+
22
+  render () {
23
+    const { TestImg } = this.state
24
+    const { ShowTips } = this.props
25
+    return (
26
+      <view className='NewsListItem flex-h'>
27
+        <view className='Img'>
28
+          <image mode='aspectFill' src={TestImg}></image>
29
+          {
30
+            ShowTips &&
31
+            <text>置顶</text>
32
+          }
33
+        </view>
34
+        <view className='Info flex-item'>
35
+          <text>破晓·内容生态下半场的版权之道—2019企业版权</text>
36
+          <text>于2019-12-12 14:20:30发布</text>
37
+        </view>
38
+      </view >
39
+    )
40
+  }
41
+}

+ 53
- 0
src/components/NewsListItem/index.less ファイルの表示

@@ -0,0 +1,53 @@
1
+.NewsListItem {
2
+  width: 100%;
3
+  position: relative;
4
+  overflow: hidden;
5
+  background: #fff;
6
+  border-radius: 0 12px 12px 0;
7
+  align-items: center;
8
+  > .Img {
9
+    width: 220px;
10
+    height: 176px;
11
+    position: relative;
12
+    overflow: hidden;
13
+    background: #ccc;
14
+    margin-right: 20px;
15
+    > image {
16
+      display: block;
17
+      position: relative;
18
+      z-index: 1;
19
+      width: 100%;
20
+      height: 100%;
21
+    }
22
+    > text {
23
+      font-size: 24px;
24
+      color: #971c21;
25
+      display: inline-block;
26
+      position: absolute;
27
+      z-index: 2;
28
+      left: 0;
29
+      top: 0;
30
+      line-height: 40px;
31
+      width: 80px;
32
+      text-align: center;
33
+      background: rgba(255, 255, 255, 0.8);
34
+    }
35
+  }
36
+  > .Info {
37
+    margin-right: 20px;
38
+    position: relative;
39
+    overflow: hidden;
40
+    > text {
41
+      display: block;
42
+      font-size: 24px;
43
+      color: #666;
44
+      line-height: 40px;
45
+      &:first-child {
46
+        font-size: 28px;
47
+        color: #333;
48
+        font-weight: bold;
49
+        margin-bottom: 10px;
50
+      }
51
+    }
52
+  }
53
+}

+ 49
- 0
src/components/TabPageCutNav/index.css ファイルの表示

@@ -0,0 +1,49 @@
1
+.TabPageCutNav {
2
+  width: 100%;
3
+  padding-bottom: 35%;
4
+  background-image: linear-gradient(#F35844, #ff8d61);
5
+  position: relative;
6
+  z-index: 1;
7
+}
8
+.TabPageCutNav > view {
9
+  width: 100%;
10
+  position: absolute;
11
+  left: 0;
12
+  bottom: 0;
13
+  overflow: hidden;
14
+}
15
+.TabPageCutNav > view > view {
16
+  width: 100%;
17
+  position: relative;
18
+  overflow: hidden;
19
+}
20
+.TabPageCutNav > view > view > view {
21
+  align-items: center;
22
+  font-size: 0;
23
+  white-space: nowrap;
24
+  text-align: center;
25
+}
26
+.TabPageCutNav > view > view > view > text {
27
+  display: inline-block;
28
+  vertical-align: middle;
29
+  font-size: 32px;
30
+  color: #fff;
31
+  position: relative;
32
+  padding: 0 30px;
33
+  padding-bottom: 20px;
34
+  line-height: 60px;
35
+}
36
+.TabPageCutNav > view > view > view > text.active {
37
+  color: #333;
38
+  font-weight: bold;
39
+}
40
+.TabPageCutNav > view > view > view > text.active::after {
41
+  content: "";
42
+  display: block;
43
+  position: absolute;
44
+  left: 0;
45
+  bottom: 0;
46
+  height: 2px;
47
+  background: #000;
48
+  width: 100%;
49
+}

+ 10
- 12
src/components/TabPageCutNav/index.jsx ファイルの表示

@@ -16,22 +16,20 @@ export default class TabPageCutNav extends Component {
16 16
 
17 17
   componentDidHide () { }
18 18
 
19
-  CutNav (e) { // 切换nav
20
-    return () => {
21
-      this.props.Change(e.id)
22
-    }
23
-  }
24
-
25 19
   render () {
26
-    const { List = [], CurrentNavId = null } = this.props
20
+    const { List = [], CurrentNavId = null, NavChange = () => { } } = this.props
27 21
     return (
28 22
       <view className='TabPageCutNav'>
29 23
         <view>
30
-          {
31
-            List.map((item, index) => (
32
-              <text key={`TabPageNav-${index}`} class={item.id - 0 === CurrentNavId - 0 ? 'active' : ''} onClick={this.CutNav(item)}>{item.name}</text>
33
-            ))
34
-          }
24
+          <view className='flex-h'>
25
+            {
26
+              List.map((item, index) => (
27
+                <view className='flex-item' key={`TabPageNav-${index}`}>
28
+                  <text class={item.id - 0 === CurrentNavId - 0 ? 'active' : ''} onClick={NavChange(item)}>{item.name}</text>
29
+                </view>
30
+              ))
31
+            }
32
+          </view>
35 33
         </view>
36 34
       </view >
37 35
     )

+ 33
- 27
src/components/TabPageCutNav/index.less ファイルの表示

@@ -7,41 +7,47 @@
7 7
 
8 8
   >view {
9 9
     width: 100%;
10
-    font-size: 0;
11
-    white-space: nowrap;
12
-    text-align: center;
13 10
     position: absolute;
14 11
     left: 0;
15 12
     bottom: 0;
13
+    overflow: hidden;
16 14
 
17
-    >text {
18
-      display: inline-block;
19
-      vertical-align: middle;
20
-      font-size: 32px;
21
-      color: #fff;
22
-      margin-left: 160px;
15
+    >view {
16
+      width: 100%;
23 17
       position: relative;
24
-      padding: 0 30px;
25
-      padding-bottom: 20px;
26
-      line-height: 60px;
18
+      overflow: hidden;
27 19
 
28
-      &:first-child {
29
-        margin-left: 0;
30
-      }
20
+      >view {
21
+        align-items: center;
22
+        font-size: 0;
23
+        white-space: nowrap;
24
+        text-align: center;
25
+
26
+        >text {
27
+          display: inline-block;
28
+          vertical-align: middle;
29
+          font-size: 32px;
30
+          color: #fff;
31
+          position: relative;
32
+          padding: 0 30px;
33
+          padding-bottom: 20px;
34
+          line-height: 60px;
31 35
 
32
-      &.active {
33
-        color: #333;
34
-        font-weight: bold;
36
+          &.active {
37
+            color: #333;
38
+            font-weight: bold;
35 39
 
36
-        &::after {
37
-          content: "";
38
-          display: block;
39
-          position: absolute;
40
-          left: 0;
41
-          bottom: 0;
42
-          height: 2px;
43
-          background: #000;
44
-          width: 100%;
40
+            &::after {
41
+              content: "";
42
+              display: block;
43
+              position: absolute;
44
+              left: 0;
45
+              bottom: 0;
46
+              height: 2px;
47
+              background: #000;
48
+              width: 100%;
49
+            }
50
+          }
45 51
         }
46 52
       }
47 53
     }

+ 52
- 0
src/components/WuYeBaoXiu/index.css ファイルの表示

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

+ 56
- 0
src/components/WuYeBaoXiu/index.jsx ファイルの表示

@@ -0,0 +1,56 @@
1
+import React, { Component } from 'react'
2
+import WuYeBaoXiuItem from '../WuYeBaoXiuItem/index'
3
+import '../../assets/css/reset.less'
4
+import '../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class WuYeBaoXiu extends Component {
8
+
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 () { }
15
+
16
+  componentDidMount () { }
17
+
18
+  componentWillUnmount () { }
19
+
20
+  componentDidShow () { }
21
+
22
+  componentDidHide () { }
23
+
24
+  render () {
25
+    const { TestImg, PageList } = this.state
26
+    return (
27
+      <view className='WuYeBaoXiu'>
28
+
29
+        {/* 大图 */}
30
+        <view className='BigImg'>
31
+          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
32
+        </view>
33
+
34
+        {/* 我要报修 */}
35
+        <view className='WoYaoBaoXiu'>
36
+          <view>
37
+            <text className='iconfont iconjia'></text>
38
+            <text>我要报修</text>
39
+          </view>
40
+        </view>
41
+
42
+        {/* 报修列表 */}
43
+        <view className='List'>
44
+          {
45
+            PageList.map((item, index) => (
46
+              <view key={`WuYeBaoXiuItem-${index}`}>
47
+                <WuYeBaoXiuItem Data={item}></WuYeBaoXiuItem>
48
+              </view>
49
+            ))
50
+          }
51
+        </view>
52
+
53
+      </view>
54
+    )
55
+  }
56
+}

+ 60
- 0
src/components/WuYeBaoXiu/index.less ファイルの表示

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

+ 110
- 0
src/components/WuYeBaoXiuItem/index.css ファイルの表示

@@ -0,0 +1,110 @@
1
+.WuYeBaoXiuItem {
2
+  position: relative;
3
+  background: #fff;
4
+  padding: 0 30px;
5
+}
6
+.WuYeBaoXiuItem > .Title {
7
+  align-items: center;
8
+  padding-top: 10px;
9
+  border-bottom: 2px solid rgba(0, 0, 0, 0.08);
10
+}
11
+.WuYeBaoXiuItem > .Title > text {
12
+  font-size: 24px;
13
+  color: #999;
14
+  line-height: 88px;
15
+  margin-left: 10px;
16
+}
17
+.WuYeBaoXiuItem > .Title > text:first-child {
18
+  margin-left: 0;
19
+  font-size: 34px;
20
+  color: #F35844;
21
+}
22
+.WuYeBaoXiuItem > .Title > text.flex-item {
23
+  font-size: 24px;
24
+  font-weight: bold;
25
+  color: #333;
26
+  white-space: nowrap;
27
+}
28
+.WuYeBaoXiuItem > .Name {
29
+  align-items: center;
30
+  margin-top: 20px;
31
+}
32
+.WuYeBaoXiuItem > .Name > text {
33
+  font-size: 30px;
34
+  font-weight: bold;
35
+  line-height: 60px;
36
+  white-space: nowrap;
37
+  overflow: hidden;
38
+  text-overflow: ellipsis;
39
+}
40
+.WuYeBaoXiuItem > .Name > text.iconfont {
41
+  font-size: 40px;
42
+  color: #F35844;
43
+  margin-left: 20px;
44
+  font-weight: normal;
45
+}
46
+.WuYeBaoXiuItem > .Detail {
47
+  position: relative;
48
+  margin-top: 40px;
49
+  padding-bottom: 30px;
50
+}
51
+.WuYeBaoXiuItem > .Detail > .Line {
52
+  width: 50px;
53
+  position: relative;
54
+  overflow: visible;
55
+  border-left: 2px dashed #F35844;
56
+}
57
+.WuYeBaoXiuItem > .Detail > .Line > view {
58
+  width: 14px;
59
+  height: 14px;
60
+  background: #F35844;
61
+  border-radius: 100%;
62
+  position: absolute;
63
+  left: -8px;
64
+  top: 30px;
65
+}
66
+.WuYeBaoXiuItem > .Detail > .flex-item {
67
+  position: relative;
68
+  overflow: visible;
69
+  background: rgba(243, 88, 68, 0.08);
70
+  padding: 20px;
71
+}
72
+.WuYeBaoXiuItem > .Detail > .flex-item::after {
73
+  content: '';
74
+  width: 0;
75
+  height: 0;
76
+  display: block;
77
+  position: absolute;
78
+  left: -40px;
79
+  top: 16px;
80
+  border-color: transparent rgba(243, 88, 68, 0.08) transparent transparent;
81
+  border-style: solid dashed solid solid;
82
+  border-width: 20px;
83
+}
84
+.WuYeBaoXiuItem > .Detail > .flex-item > .flex-h {
85
+  align-items: center;
86
+}
87
+.WuYeBaoXiuItem > .Detail > .flex-item > .flex-h > text {
88
+  font-size: 24px;
89
+  color: #999;
90
+  line-height: 40px;
91
+}
92
+.WuYeBaoXiuItem > .Detail > .flex-item > .flex-h > text:first-child {
93
+  color: #F35844;
94
+}
95
+.WuYeBaoXiuItem > .Detail > .flex-item > .Desc {
96
+  font-size: 24px;
97
+  line-height: 40px;
98
+  color: #333;
99
+  margin-top: 10px;
100
+}
101
+.WuYeBaoXiuItem > .Detail > .flex-item > .Desc > text.Name {
102
+  color: #F35844;
103
+  font-size: 24px;
104
+  line-height: 40px;
105
+}
106
+.WuYeBaoXiuItem > .Detail > .flex-item > .Desc > text.Phone {
107
+  color: #14DC05;
108
+  font-size: 24px;
109
+  line-height: 40px;
110
+}

+ 48
- 0
src/components/WuYeBaoXiuItem/index.jsx ファイルの表示

@@ -0,0 +1,48 @@
1
+import React, { Component } from 'react'
2
+import '../../assets/css/reset.less'
3
+import '../../assets/css/iconfont.less'
4
+import './index.less'
5
+
6
+export default class WuYeBaoXiuItem extends Component {
7
+
8
+  state = {
9
+
10
+  }
11
+
12
+  componentWillMount () { }
13
+
14
+  componentDidMount () { }
15
+
16
+  componentWillUnmount () { }
17
+
18
+  componentDidShow () { }
19
+
20
+  componentDidHide () { }
21
+
22
+  render () {
23
+    const { } = this.state
24
+    return (
25
+      <view className='WuYeBaoXiuItem'>
26
+        <view className='Title flex-h'>
27
+          <text className='iconfont icongonggongquyu'></text>
28
+          <text className='flex-item'>公共区域问题</text>
29
+          <text className='Time'>2020/06/08 13:00</text>
30
+        </view>
31
+        <view className='Name flex-h'>
32
+          <text className='flex-item'>1栋3单元2楼-3楼走廊声控灯出现故障</text>
33
+          <text className='iconfont iconbianji'></text>
34
+        </view>
35
+        <view className='Detail flex-h'>
36
+          <view className='Line'><view></view></view>
37
+          <view className='flex-item'>
38
+            <view className='flex-h'>
39
+              <text className='flex-item'>正在处理</text>
40
+              <text className='Time'>2020/06/08 12:58</text>
41
+            </view>
42
+            <view className='Desc'>您的报修已经分配给物业处理人员<text className='Name'>郭培军</text>处理,联系方式<text className='Phone'>18266666666</text></view>
43
+          </view>
44
+        </view>
45
+      </view>
46
+    )
47
+  }
48
+}

+ 129
- 0
src/components/WuYeBaoXiuItem/index.less ファイルの表示

@@ -0,0 +1,129 @@
1
+.WuYeBaoXiuItem {
2
+  position: relative;
3
+  background: #fff;
4
+  padding: 0 30px;
5
+
6
+  >.Title {
7
+    align-items: center;
8
+    padding-top: 10px;
9
+    border-bottom: 2px solid rgba(0, 0, 0, 0.08);
10
+
11
+    >text {
12
+      font-size: 24px;
13
+      color: #999;
14
+      line-height: 88px;
15
+      margin-left: 10px;
16
+
17
+      &:first-child {
18
+        margin-left: 0;
19
+        font-size: 34px;
20
+        color: #F35844;
21
+      }
22
+
23
+      &.flex-item {
24
+        font-size: 24px;
25
+        font-weight: bold;
26
+        color: #333;
27
+        white-space: nowrap;
28
+      }
29
+    }
30
+  }
31
+
32
+  >.Name {
33
+    align-items: center;
34
+    margin-top: 20px;
35
+
36
+    >text {
37
+      font-size: 30px;
38
+      font-weight: bold;
39
+      line-height: 60px;
40
+      white-space: nowrap;
41
+      overflow: hidden;
42
+      text-overflow: ellipsis;
43
+
44
+      &.iconfont {
45
+        font-size: 40px;
46
+        color: #F35844;
47
+        margin-left: 20px;
48
+        font-weight: normal;
49
+      }
50
+    }
51
+  }
52
+
53
+  >.Detail {
54
+    position: relative;
55
+    margin-top: 40px;
56
+    padding-bottom: 30px;
57
+
58
+    >.Line {
59
+      width: 50px;
60
+      position: relative;
61
+      overflow: visible;
62
+      border-left: 2px dashed #F35844;
63
+
64
+      >view {
65
+        width: 14px;
66
+        height: 14px;
67
+        background: #F35844;
68
+        border-radius: 100%;
69
+        position: absolute;
70
+        left: -8px;
71
+        top: 30px;
72
+      }
73
+    }
74
+
75
+    >.flex-item {
76
+      position: relative;
77
+      overflow: visible;
78
+      background: rgba(243, 88, 68, 0.08);
79
+      padding: 20px;
80
+
81
+      &::after {
82
+        content: '';
83
+        width: 0;
84
+        height: 0;
85
+        display: block;
86
+        position: absolute;
87
+        left: -40px;
88
+        top: 16px;
89
+        border-color: transparent rgba(243, 88, 68, 0.08) transparent transparent;
90
+        border-style: solid dashed solid solid;
91
+        border-width: 20px;
92
+      }
93
+
94
+      >.flex-h {
95
+        align-items: center;
96
+
97
+        >text {
98
+          font-size: 24px;
99
+          color: #999;
100
+          line-height: 40px;
101
+
102
+          &:first-child {
103
+            color: #F35844;
104
+          }
105
+        }
106
+      }
107
+
108
+      >.Desc {
109
+        font-size: 24px;
110
+        line-height: 40px;
111
+        color: #333;
112
+        margin-top: 10px;
113
+
114
+        >text {
115
+          &.Name {
116
+            color: #F35844;
117
+            font-size: 24px;
118
+            line-height: 40px;
119
+          }
120
+          &.Phone {
121
+            color: #14DC05;
122
+            font-size: 24px;
123
+            line-height: 40px;
124
+          }
125
+        }
126
+      }
127
+    }
128
+  }
129
+}

+ 89
- 0
src/components/WuYeFuWu/index.css ファイルの表示

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

+ 61
- 0
src/components/WuYeFuWu/index.jsx ファイルの表示

@@ -0,0 +1,61 @@
1
+import React, { Component } from 'react'
2
+import WuYeFuWuItem from '../WuYeFuWuItem/index'
3
+import '../../assets/css/reset.less'
4
+import '../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class WuYeFuWu extends Component {
8
+
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 () { }
15
+
16
+  componentDidMount () { }
17
+
18
+  componentWillUnmount () { }
19
+
20
+  componentDidShow () { }
21
+
22
+  componentDidHide () { }
23
+
24
+  render () {
25
+    const { TestImg, PageList } = this.state
26
+    return (
27
+      <view className='WuYeFuWu'>
28
+
29
+        {/* 大图 */}
30
+        <view className='BigImg'>
31
+          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
32
+        </view>
33
+
34
+        {/* 物业办事指南 */}
35
+        <view className='BanShiZhiNan'>
36
+          <text>物业办事指南</text>
37
+          <view className='flex-h'>
38
+            <view className='Line'><view></view></view>
39
+            <view className='flex-item'>
40
+              <text>1、业主收楼手续办理</text>
41
+              <text>2、物业转名手续办理</text>
42
+              <text>3、业主卡、住户卡办理</text>
43
+            </view>
44
+          </view>
45
+        </view>
46
+
47
+        {/* 服务列表 */}
48
+        <view className='List'>
49
+          {
50
+            PageList.map((item, index) => (
51
+              <view key={`WuYeFuWuItem-${index}`}>
52
+                <WuYeFuWuItem Data={item}></WuYeFuWuItem>
53
+              </view>
54
+            ))
55
+          }
56
+        </view>
57
+
58
+      </view>
59
+    )
60
+  }
61
+}

+ 103
- 0
src/components/WuYeFuWu/index.less ファイルの表示

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

+ 35
- 0
src/components/WuYeFuWuItem/index.css ファイルの表示

@@ -0,0 +1,35 @@
1
+.WuYeFuWuItem {
2
+  position: relative;
3
+  background: #fff;
4
+  padding: 0 30px;
5
+  align-items: center;
6
+}
7
+.WuYeFuWuItem > .Img {
8
+  width: 220px;
9
+  height: 176px;
10
+  position: relative;
11
+  overflow: hidden;
12
+  background: #ccc;
13
+  margin-right: 20px;
14
+}
15
+.WuYeFuWuItem > .Img > image {
16
+  width: 100%;
17
+  height: 100%;
18
+}
19
+.WuYeFuWuItem > .flex-item {
20
+  position: relative;
21
+  overflow: hidden;
22
+}
23
+.WuYeFuWuItem > .flex-item > text {
24
+  display: block;
25
+  font-size: 24px;
26
+  line-height: 40px;
27
+  width: 100%;
28
+  color: #666;
29
+}
30
+.WuYeFuWuItem > .flex-item > text:first-child {
31
+  font-size: 28px;
32
+  font-weight: bold;
33
+  margin-bottom: 20px;
34
+  color: #333;
35
+}

+ 36
- 0
src/components/WuYeFuWuItem/index.jsx ファイルの表示

@@ -0,0 +1,36 @@
1
+import React, { Component } from 'react'
2
+import '../../assets/css/reset.less'
3
+import '../../assets/css/iconfont.less'
4
+import './index.less'
5
+
6
+export default class WuYeFuWuItem extends Component {
7
+
8
+  state = {
9
+    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'
10
+  }
11
+
12
+  componentWillMount () { }
13
+
14
+  componentDidMount () { }
15
+
16
+  componentWillUnmount () { }
17
+
18
+  componentDidShow () { }
19
+
20
+  componentDidHide () { }
21
+
22
+  render () {
23
+    const { TestImg } = this.state
24
+    return (
25
+      <view className='WuYeFuWuItem flex-h'>
26
+        <view className='Img'>
27
+          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
28
+        </view>
29
+        <view className='flex-item'>
30
+          <text>业主收楼办理手续</text>
31
+          <text>于2019-12-12 14:20:30发布</text>
32
+        </view>
33
+      </view>
34
+    )
35
+  }
36
+}

+ 40
- 0
src/components/WuYeFuWuItem/index.less ファイルの表示

@@ -0,0 +1,40 @@
1
+.WuYeFuWuItem {
2
+  position: relative;
3
+  background: #fff;
4
+  padding: 0 30px;
5
+  align-items: center;
6
+
7
+  >.Img {
8
+    width: 220px;
9
+    height: 176px;
10
+    position: relative;
11
+    overflow: hidden;
12
+    background: #ccc;
13
+    margin-right: 20px;
14
+
15
+    >image {
16
+      width: 100%;
17
+      height: 100%;
18
+    }
19
+  }
20
+
21
+  >.flex-item {
22
+    position: relative;
23
+    overflow: hidden;
24
+
25
+    >text {
26
+      display: block;
27
+      font-size: 24px;
28
+      line-height: 40px;
29
+      width: 100%;
30
+      color: #666;
31
+
32
+      &:first-child {
33
+        font-size: 28px;
34
+        font-weight: bold;
35
+        margin-bottom: 20px;
36
+        color: #333;
37
+      }
38
+    }
39
+  }
40
+}

+ 48
- 0
src/components/WuYeGongGao/index.jsx ファイルの表示

@@ -0,0 +1,48 @@
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'
5
+import './index.less'
6
+
7
+export default class WuYeGongGao extends Component {
8
+
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 () { }
15
+
16
+  componentDidMount () { }
17
+
18
+  componentWillUnmount () { }
19
+
20
+  componentDidShow () { }
21
+
22
+  componentDidHide () { }
23
+
24
+  render () {
25
+    const { TestImg, PageList } = this.state
26
+    return (
27
+      <view className='WuYeGongGao'>
28
+
29
+        {/* 大图 */}
30
+        <view className='BigImg'>
31
+          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
32
+        </view>
33
+
34
+        {/* 列表 */}
35
+        <view className='List'>
36
+          {
37
+            PageList.map((item, index) => (
38
+              <view key={`WuYeGongGaoItem-${index}`}>
39
+                <WuYeGongGaoItem Data={item}></WuYeGongGaoItem>
40
+              </view>
41
+            ))
42
+          }
43
+        </view>
44
+
45
+      </view>
46
+    )
47
+  }
48
+}

+ 34
- 0
src/components/WuYeGongGao/index.less ファイルの表示

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

+ 38
- 0
src/components/WuYeGongGaoItem/index.jsx ファイルの表示

@@ -0,0 +1,38 @@
1
+import React, { Component } from 'react'
2
+import '../../assets/css/reset.less'
3
+import '../../assets/css/iconfont.less'
4
+import './index.less'
5
+
6
+export default class WuYeGongGaoItem extends Component {
7
+
8
+  componentWillMount () { }
9
+
10
+  componentDidMount () { }
11
+
12
+  componentWillUnmount () { }
13
+
14
+  componentDidShow () { }
15
+
16
+  componentDidHide () { }
17
+
18
+  render () {
19
+    return (
20
+      <view className='WuYeGongGaoItem'>
21
+        <view className='Title flex-h'>
22
+          <text className='flex-item'>处理绿化带种菜公告</text>
23
+          <text>2020/06/08</text>
24
+        </view>
25
+        <view className='GaoItemContent'>
26
+          <text>为了小区能有一个舒适、温馨、绿化美好的居住环境,请各位业主不要在绿化带内种菜。对于这种种树种花...</text>
27
+          <view className='flex-h'>
28
+            <text>孙琪琪</text>
29
+            <text>物业</text>
30
+            <view className='flex-item'></view>
31
+            <text className='iconfont iconguankan'></text>
32
+            <text>1234人观看</text>
33
+          </view>
34
+        </view>
35
+      </view>
36
+    )
37
+  }
38
+}

+ 61
- 0
src/components/WuYeGongGaoItem/index.less ファイルの表示

@@ -0,0 +1,61 @@
1
+.WuYeGongGaoItem {
2
+  position: relative;
3
+  background: #fff;
4
+  padding: 40px 30px;
5
+
6
+  >.Title {
7
+    align-items: center;
8
+
9
+    >text {
10
+      font-size: 24px;
11
+      color: #999;
12
+      line-height: 40px;
13
+      white-space: nowrap;
14
+
15
+      &:first-child {
16
+        font-size: 30px;
17
+        color: #333;
18
+        font-weight: bold;
19
+        margin-right: 20px;
20
+        overflow: hidden;
21
+        text-overflow: ellipsis;
22
+      }
23
+    }
24
+  }
25
+
26
+  >.GaoItemContent {
27
+    position: relative;
28
+    overflow: hidden;
29
+    background: rgba(243, 88, 68, 0.08);
30
+    padding: 20px;
31
+    margin-top: 40px;
32
+
33
+    >text {
34
+      font-size: 24px;
35
+      line-height: 38px;
36
+      color: #333;
37
+      display: block;
38
+    }
39
+
40
+    >.flex-h {
41
+      align-items: center;
42
+      margin-top: 20px;
43
+
44
+      >text {
45
+        font-size: 24px;
46
+        line-height: 40px;
47
+        color: #999;
48
+        margin-left: 10px;
49
+
50
+        &:first-child {
51
+          margin-left: 0;
52
+        }
53
+
54
+        &.iconfont {
55
+          color: #F35844;
56
+          font-size: 40px;
57
+        }
58
+      }
59
+    }
60
+  }
61
+}

+ 29
- 0
src/components/WuYeJiaoFei/index.css ファイルの表示

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

+ 48
- 0
src/components/WuYeJiaoFei/index.jsx ファイルの表示

@@ -0,0 +1,48 @@
1
+import React, { Component } from 'react'
2
+import WuYeJiaoFeiItem from '../WuYeJiaoFeiItem/index'
3
+import '../../assets/css/reset.less'
4
+import '../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class WuYeJiaoFei extends Component {
8
+
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 () { }
15
+
16
+  componentDidMount () { }
17
+
18
+  componentWillUnmount () { }
19
+
20
+  componentDidShow () { }
21
+
22
+  componentDidHide () { }
23
+
24
+  render () {
25
+    const { TestImg, PageList } = this.state
26
+    return (
27
+      <view className='WuYeJiaoFei'>
28
+
29
+        {/* 大图 */}
30
+        <view className='BigImg'>
31
+          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
32
+        </view>
33
+
34
+        {/* 缴费列表 */}
35
+        <view className='List'>
36
+          {
37
+            PageList.map((item, index) => (
38
+              <view key={`WuYeJiaoFeiItem-${index}`}>
39
+                <WuYeJiaoFeiItem Data={item}></WuYeJiaoFeiItem>
40
+              </view>
41
+            ))
42
+          }
43
+        </view>
44
+
45
+      </view>
46
+    )
47
+  }
48
+}

+ 34
- 0
src/components/WuYeJiaoFei/index.less ファイルの表示

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

+ 76
- 0
src/components/WuYeJiaoFeiItem/index.css ファイルの表示

@@ -0,0 +1,76 @@
1
+.WuYeJiaoFeiItem {
2
+  position: relative;
3
+  background: #fff;
4
+  padding: 30px;
5
+}
6
+.WuYeJiaoFeiItem > .Title {
7
+  align-items: center;
8
+}
9
+.WuYeJiaoFeiItem > .Title > text {
10
+  font-size: 24px;
11
+  color: #999;
12
+  line-height: 40px;
13
+}
14
+.WuYeJiaoFeiItem > .Title > text:first-child {
15
+  font-size: 30px;
16
+  color: #333;
17
+  font-weight: bold;
18
+  margin-right: 20px;
19
+  white-space: nowrap;
20
+  overflow: hidden;
21
+  text-overflow: ellipsis;
22
+}
23
+.WuYeJiaoFeiItem > .JiaoFeiContent {
24
+  padding: 20px;
25
+  background: rgba(243, 88, 68, 0.08);
26
+  position: relative;
27
+  overflow: hidden;
28
+  margin-top: 40px;
29
+}
30
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Name {
31
+  align-items: center;
32
+}
33
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Name > text {
34
+  font-size: 24px;
35
+  color: #999;
36
+  line-height: 40px;
37
+}
38
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Name > text:first-child {
39
+  color: #333;
40
+  white-space: nowrap;
41
+  overflow: hidden;
42
+  text-overflow: ellipsis;
43
+  margin-right: 20px;
44
+}
45
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Name > text.Num {
46
+  color: #F35844;
47
+}
48
+.WuYeJiaoFeiItem > .JiaoFeiContent > text {
49
+  display: block;
50
+  font-size: 24px;
51
+  color: #333;
52
+  line-height: 40px;
53
+  margin-top: 6px;
54
+}
55
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Price {
56
+  border-top: 2px solid rgba(0, 0, 0, 0.08);
57
+  padding: 20px 0;
58
+  align-items: center;
59
+  margin-top: 20px;
60
+}
61
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Price > text {
62
+  font-size: 24px;
63
+  color: #999;
64
+  line-height: 60px;
65
+}
66
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Price > text.Num {
67
+  font-size: 48px;
68
+  font-weight: bold;
69
+  color: #F35844;
70
+}
71
+.WuYeJiaoFeiItem > .JiaoFeiContent > .Price > text.Btn {
72
+  padding: 0 30px;
73
+  background: #F35844;
74
+  border-radius: 60px;
75
+  color: #fff;
76
+}

+ 50
- 0
src/components/WuYeJiaoFeiItem/index.jsx ファイルの表示

@@ -0,0 +1,50 @@
1
+import React, { Component } from 'react'
2
+import '../../assets/css/reset.less'
3
+import '../../assets/css/iconfont.less'
4
+import './index.less'
5
+
6
+export default class WuYeJiaoFeiItem extends Component {
7
+
8
+  state = {
9
+
10
+  }
11
+
12
+  componentWillMount () { }
13
+
14
+  componentDidMount () { }
15
+
16
+  componentWillUnmount () { }
17
+
18
+  componentDidShow () { }
19
+
20
+  componentDidHide () { }
21
+
22
+  render () {
23
+    const { } = this.state
24
+    return (
25
+      <view className='WuYeJiaoFeiItem'>
26
+        <view className='Title flex-h'>
27
+          <text className='flex-item'>物业费</text>
28
+          <text>2020/06/08  0:00截止</text>
29
+        </view>
30
+        <view className='JiaoFeiContent'>
31
+          <view className='Name flex-h'>
32
+            <text className='flex-item'>2020年5月物业管理费</text>
33
+            <text>剩余缴费时间</text>
34
+            <text className='Num'>3</text>
35
+            <text>天</text>
36
+          </view>
37
+          <text>垃圾费:300元</text>
38
+          <text>电费:300.83元</text>
39
+          <text>物业费:300元</text>
40
+          <view className='Price flex-h'>
41
+            <text className='Num'>340</text>
42
+            <text>元</text>
43
+            <view className='flex-item'></view>
44
+            <text className='Btn'>立即缴费</text>
45
+          </view>
46
+        </view>
47
+      </view>
48
+    )
49
+  }
50
+}

+ 89
- 0
src/components/WuYeJiaoFeiItem/index.less ファイルの表示

@@ -0,0 +1,89 @@
1
+.WuYeJiaoFeiItem {
2
+  position: relative;
3
+  background: #fff;
4
+  padding: 30px;
5
+
6
+  >.Title {
7
+    align-items: center;
8
+
9
+    >text {
10
+      font-size: 24px;
11
+      color: #999;
12
+      line-height: 40px;
13
+
14
+      &:first-child {
15
+        font-size: 30px;
16
+        color: #333;
17
+        font-weight: bold;
18
+        margin-right: 20px;
19
+        white-space: nowrap;
20
+        overflow: hidden;
21
+        text-overflow: ellipsis;
22
+      }
23
+    }
24
+  }
25
+
26
+  >.JiaoFeiContent {
27
+    padding: 20px;
28
+    background: rgba(243, 88, 68, 0.08);
29
+    position: relative;
30
+    overflow: hidden;
31
+    margin-top: 40px;
32
+
33
+    >.Name {
34
+      align-items: center;
35
+
36
+      >text {
37
+        font-size: 24px;
38
+        color: #999;
39
+        line-height: 40px;
40
+
41
+        &:first-child {
42
+          color: #333;
43
+          white-space: nowrap;
44
+          overflow: hidden;
45
+          text-overflow: ellipsis;
46
+          margin-right: 20px;
47
+        }
48
+
49
+        &.Num {
50
+          color: #F35844;
51
+        }
52
+      }
53
+    }
54
+
55
+    >text {
56
+      display: block;
57
+      font-size: 24px;
58
+      color: #333;
59
+      line-height: 40px;
60
+      margin-top: 6px;
61
+    }
62
+
63
+    >.Price {
64
+      border-top: 2px solid rgba(0, 0, 0, 0.08);
65
+      padding: 20px 0;
66
+      align-items: center;
67
+      margin-top: 20px;
68
+
69
+      >text {
70
+        font-size: 24px;
71
+        color: #999;
72
+        line-height: 60px;
73
+
74
+        &.Num {
75
+          font-size: 48px;
76
+          font-weight: bold;
77
+          color: #F35844;
78
+        }
79
+
80
+        &.Btn {
81
+          padding: 0 30px;
82
+          background: #F35844;
83
+          border-radius: 60px;
84
+          color: #fff;
85
+        }
86
+      }
87
+    }
88
+  }
89
+}

+ 6
- 5
src/components/demo/index.jsx ファイルの表示

@@ -1,8 +1,9 @@
1 1
 import React, { Component } from 'react'
2
-import { View, Text } from '@tarojs/components'
2
+import '../../assets/css/reset.less'
3
+import '../../assets/css/iconfont.less'
3 4
 import './index.less'
4 5
 
5
-export default class Index extends Component {
6
+export default class Demo extends Component {
6 7
 
7 8
   componentWillMount () { }
8 9
 
@@ -16,9 +17,9 @@ export default class Index extends Component {
16 17
 
17 18
   render () {
18 19
     return (
19
-      <View className='index'>
20
-        <Text>Hello world!</Text>
21
-      </View>
20
+      <view className='Demo'>
21
+
22
+      </view>
22 23
     )
23 24
   }
24 25
 }

+ 72
- 11
src/pages/HuoDong/index.jsx ファイルの表示

@@ -2,26 +2,31 @@ import React, { Component } from 'react'
2 2
 // import { View, Text } from '@tarojs/components'
3 3
 import TabPageCutNav from '../../components/TabPageCutNav/index'
4 4
 import NavHeader from '../../components/NavHeader/index'
5
+import ActivityListItem from '../../components/ActivityListItem/index'
6
+import NewsListItem from '../../components/NewsListItem/index'
5 7
 import '../../assets/css/reset.less'
6 8
 import '../../assets/css/iconfont.less'
7 9
 import './index.less'
8 10
 
9
-export default class Index extends Component {
11
+export default class HuoDong extends Component {
10 12
 
11 13
   state = {
14
+    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 15
     NavList: [
13 16
       { name: '活动', id: 1 },
14 17
       { name: '资讯', id: 2 }
15 18
     ],
16 19
     CurrentNavId: 1,
17 20
     IsPull: false,
18
-    DataLock: false,
19
-    PageList: [],
20
-    PageData: {
21
-      pageNum: 1,
22
-      pageSize: 10
23
-    },
24
-    HasNextPage: true
21
+    ActivityList: ['', '', '', '', '', '', '', ''],
22
+    NewsList: ['', '', '', '', '', '', '', '']
23
+    // DataLock: false,
24
+    // PageList: [],
25
+    // PageData: {
26
+    //   pageNum: 1,
27
+    //   pageSize: 10
28
+    // },
29
+    // HasNextPage: true
25 30
   }
26 31
 
27 32
   componentWillMount () { }
@@ -35,15 +40,71 @@ export default class Index extends Component {
35 40
   componentDidHide () { }
36 41
 
37 42
   NavChange (e) {
38
-    console.log(e)
43
+    return () => {
44
+      this.setState({
45
+        CurrentNavId: e.id
46
+      })
47
+    }
48
+  }
49
+
50
+  OnRefresh () {
51
+    this.setState({
52
+      IsPull: true
53
+    }, () => {
54
+      window.setTimeout(() => {
55
+        this.setState({
56
+          IsPull: false
57
+        })
58
+      }, 1000)
59
+    })
39 60
   }
40 61
 
41 62
   render () {
42
-    const { CurrentNavId, DataLock, IsPull, NavList } = this.state
63
+    const { CurrentNavId, NavList, IsPull, ActivityList, NewsList, TestImg } = this.state
43 64
     return (
44 65
       <view className='HuoDong flex-v'>
45 66
         <NavHeader BgColor='none' Title='活动' IsFixed={true}></NavHeader>
46
-        <TabPageCutNav List={NavList} CurrentNavId={CurrentNavId} onChange={this.NavChange}></TabPageCutNav>
67
+        <TabPageCutNav List={NavList} CurrentNavId={CurrentNavId} NavChange={this.NavChange.bind(this)}></TabPageCutNav>
68
+        <view className='flex-item'>
69
+          <view>
70
+            <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='none'>
71
+
72
+              {/* 活动 */}
73
+              {
74
+                CurrentNavId - 0 === 1 &&
75
+                <view className='Content Activity'>
76
+                  {
77
+                    ActivityList.map((item, index) => (
78
+                      <view className='ListItem' key={`ActivityItem-${index}`}>
79
+                        <ActivityListItem Data={item}></ActivityListItem>
80
+                      </view>
81
+                    ))
82
+                  }
83
+                </view>
84
+              }
85
+
86
+              {/* 资讯 */}
87
+              {
88
+                CurrentNavId - 0 === 2 &&
89
+                <view className='Content News'>
90
+                  <view className='BigImg'>
91
+                    <image mode='aspectFill' src={TestImg} class='centerLabel'></image>
92
+                  </view>
93
+                  <view className='List'>
94
+                    {
95
+                      NewsList.map((item, index) => (
96
+                        <view className='ListItem' key={`NewsItem-${index}`}>
97
+                          <NewsListItem Data={item} ShowTips={index === 0}></NewsListItem>
98
+                        </view>
99
+                      ))
100
+                    }
101
+                  </view>
102
+                </view>
103
+              }
104
+
105
+            </scroll-view>
106
+          </view>
107
+        </view>
47 108
       </view>
48 109
     )
49 110
   }

+ 59
- 9
src/pages/HuoDong/index.less ファイルの表示

@@ -3,13 +3,15 @@
3 3
   height: 100%;
4 4
   overflow: hidden;
5 5
   background: #f8f8f8;
6
-  > .TopNav {
6
+
7
+  >.TopNav {
7 8
     width: 100%;
8 9
     padding-bottom: 35%;
9 10
     background-image: linear-gradient(#f35844, #ff8d61);
10 11
     position: relative;
11 12
     z-index: 1;
12
-    > view {
13
+
14
+    >view {
13 15
       width: 100%;
14 16
       font-size: 0;
15 17
       white-space: nowrap;
@@ -17,7 +19,8 @@
17 19
       position: absolute;
18 20
       left: 0;
19 21
       bottom: 0;
20
-      > text {
22
+
23
+      >text {
21 24
         display: inline-block;
22 25
         vertical-align: middle;
23 26
         font-size: 32px;
@@ -26,13 +29,16 @@
26 29
         position: relative;
27 30
         padding: 0 30px;
28 31
         padding-bottom: 20px;
32
+
29 33
         &:first-child {
30 34
           margin-left: 0;
31 35
         }
36
+
32 37
         &.active {
33 38
           color: #333;
34 39
           line-height: 60px;
35 40
           font-weight: bold;
41
+
36 42
           &::after {
37 43
             content: "";
38 44
             display: block;
@@ -47,23 +53,67 @@
47 53
       }
48 54
     }
49 55
   }
50
-  > .flex-item {
56
+
57
+  >.flex-item {
51 58
     position: relative;
52 59
     overflow: hidden;
60
+
61
+    >view {
62
+      width: 100%;
63
+      height: 100%;
64
+      position: relative;
65
+      overflow: hidden;
66
+    }
67
+
53 68
     .Content {
54 69
       position: relative;
55 70
       overflow: hidden;
71
+
56 72
       &.Activity {
57 73
         padding: 0 30px;
58
-        > .ListItem {
74
+
75
+        >.ListItem {
59 76
           width: 100%;
60 77
           position: relative;
61 78
           overflow: hidden;
62
-          background: #fff;
63
-          border-radius: 12px;
64
-          margin-top: 30px;
79
+          margin-bottom: 30px;
80
+
81
+          &:first-child {
82
+            margin-top: 30px;
83
+          }
84
+        }
85
+      }
86
+
87
+      &.News {
88
+
89
+        >.BigImg {
90
+          width: 100%;
91
+          position: relative;
92
+          overflow: hidden;
93
+          padding-bottom: 50%;
94
+          background: #ccc;
95
+
96
+          >image {
97
+            width: 100%;
98
+            height: 100%;
99
+          }
100
+        }
101
+
102
+        >.List {
103
+          padding: 0 30px;
104
+
105
+          >.ListItem {
106
+            width: 100%;
107
+            position: relative;
108
+            overflow: hidden;
109
+            margin-bottom: 30px;
110
+
111
+            &:first-child {
112
+              margin-top: 30px;
113
+            }
114
+          }
65 115
         }
66 116
       }
67 117
     }
68 118
   }
69
-}
119
+}

+ 1
- 1
src/pages/ShouYe/index.jsx ファイルの表示

@@ -77,7 +77,7 @@ export default class Index extends Component {
77 77
 
78 78
           {/* 正文 */}
79 79
           <view className='PageContainer'>
80
-            <scroll-view scroll-y="true" style="height: 100%;" refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background="none">
80
+            <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='none'>
81 81
               <view className='Content'>
82 82
 
83 83
                 {/* 背景图 */}

+ 2
- 1
src/pages/WuYe/index.config.js ファイルの表示

@@ -1,3 +1,4 @@
1 1
 export default {
2
-  navigationBarTitleText: '首页'
2
+  navigationStyle: 'custom',
3
+  navigationBarTextStyle: 'white'
3 4
 }

+ 20
- 0
src/pages/WuYe/index.css ファイルの表示

@@ -0,0 +1,20 @@
1
+.WuYe {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  background: #f8f8f8;
6
+}
7
+.WuYe > .flex-item {
8
+  position: relative;
9
+  overflow: hidden;
10
+}
11
+.WuYe > .flex-item > view {
12
+  width: 100%;
13
+  height: 100%;
14
+  position: relative;
15
+}
16
+.WuYe > .flex-item > view .Content {
17
+  width: 100%;
18
+  position: relative;
19
+  overflow: hidden;
20
+}

+ 84
- 5
src/pages/WuYe/index.jsx ファイルの表示

@@ -1,8 +1,26 @@
1 1
 import React, { Component } from 'react'
2
-import { View, Text } from '@tarojs/components'
2
+import TabPageCutNav from '../../components/TabPageCutNav/index'
3
+import NavHeader from '../../components/NavHeader/index'
4
+import WuYeGongGao from '../../components/WuYeGongGao/index'
5
+import WuYeFuWu from '../../components/WuYeFuWu/index'
6
+import WuYeBaoXiu from '../../components/WuYeBaoXiu/index'
7
+import WuYeJiaoFei from '../../components/WuYeJiaoFei/index'
8
+import '../../assets/css/reset.less'
9
+import '../../assets/css/iconfont.less'
3 10
 import './index.less'
4 11
 
5
-export default class Index extends Component {
12
+export default class WuYe extends Component {
13
+
14
+  state = {
15
+    NavList: [
16
+      { name: '公告', id: 1 },
17
+      { name: '服务', id: 2 },
18
+      { name: '报修', id: 3 },
19
+      { name: '缴费', id: 4 }
20
+    ],
21
+    CurrentNavId: 1,
22
+    IsPull: false
23
+  }
6 24
 
7 25
   componentWillMount () { }
8 26
 
@@ -14,11 +32,72 @@ export default class Index extends Component {
14 32
 
15 33
   componentDidHide () { }
16 34
 
35
+  NavChange (e) {
36
+    return () => {
37
+      this.setState({
38
+        CurrentNavId: e.id
39
+      })
40
+    }
41
+  }
42
+
43
+  OnRefresh () {
44
+    this.setState({
45
+      IsPull: true
46
+    }, () => {
47
+      window.setTimeout(() => {
48
+        this.setState({
49
+          IsPull: false
50
+        })
51
+      }, 1000)
52
+    })
53
+  }
54
+
17 55
   render () {
56
+    const { NavList, CurrentNavId, IsPull } = this.state
18 57
     return (
19
-      <View className='index'>
20
-        <Text>Hello world!</Text>
21
-      </View>
58
+      <view className='WuYe flex-v'>
59
+        <NavHeader Title='物业' BgColor='none' IsFixed={true}></NavHeader>
60
+        <TabPageCutNav List={NavList} CurrentNavId={CurrentNavId} NavChange={this.NavChange.bind(this)}></TabPageCutNav>
61
+        <view className='flex-item'>
62
+          <view>
63
+            <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='none'>
64
+
65
+              {/* 公告 */}
66
+              {
67
+                CurrentNavId - 0 === 1 &&
68
+                <view className='Content GongGao'>
69
+                  <WuYeGongGao></WuYeGongGao>
70
+                </view>
71
+              }
72
+
73
+              {/* 服务 */}
74
+              {
75
+                CurrentNavId - 0 === 2 &&
76
+                <view className='Content FuWu'>
77
+                  <WuYeFuWu></WuYeFuWu>
78
+                </view>
79
+              }
80
+
81
+              {/* 报修 */}
82
+              {
83
+                CurrentNavId - 0 === 3 &&
84
+                <view className='Content BaoXiu'>
85
+                  <WuYeBaoXiu></WuYeBaoXiu>
86
+                </view>
87
+              }
88
+
89
+              {/* 缴费 */}
90
+              {
91
+                CurrentNavId - 0 === 4 &&
92
+                <view className='Content JiaoFei'>
93
+                  <WuYeJiaoFei></WuYeJiaoFei>
94
+                </view>
95
+              }
96
+
97
+            </scroll-view>
98
+          </view>
99
+        </view>
100
+      </view>
22 101
     )
23 102
   }
24 103
 }

+ 23
- 0
src/pages/WuYe/index.less ファイルの表示

@@ -0,0 +1,23 @@
1
+.WuYe {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  background: #f8f8f8;
6
+
7
+  >.flex-item {
8
+    position: relative;
9
+    overflow: hidden;
10
+
11
+    >view {
12
+      width: 100%;
13
+      height: 100%;
14
+      position: relative;
15
+
16
+      .Content {
17
+        width: 100%;
18
+        position: relative;
19
+        overflow: hidden;
20
+      }
21
+    }
22
+  }
23
+}