Browse Source

Merge branch 'master' of http://git.ycjcjy.com/xiangsong/miniapp into master

张延森 4 years ago
parent
commit
9a7c4f0873
100 changed files with 20724 additions and 23 deletions
  1. 16024
    0
      package-lock.json
  2. 2
    0
      package.json
  3. 36
    12
      project.config.json
  4. 51
    3
      src/app.config.js
  5. 36
    0
      src/app.css
  6. 36
    0
      src/app.less
  7. 116
    0
      src/assets/css/iconfont.css
  8. 152
    0
      src/assets/css/iconfont.less
  9. 36
    0
      src/assets/css/reset.less
  10. 52
    0
      src/assets/img/bars.svg
  11. BIN
      src/assets/img/tabicon1-.png
  12. BIN
      src/assets/img/tabicon1.png
  13. BIN
      src/assets/img/tabicon2-.png
  14. BIN
      src/assets/img/tabicon2.png
  15. BIN
      src/assets/img/tabicon3-.png
  16. BIN
      src/assets/img/tabicon3.png
  17. BIN
      src/assets/img/tabicon4-.png
  18. BIN
      src/assets/img/tabicon4.png
  19. BIN
      src/assets/img/tabicon5-.png
  20. BIN
      src/assets/img/tabicon5.png
  21. 39
    0
      src/components/ActivityListItem/index.jsx
  22. 58
    0
      src/components/ActivityListItem/index.less
  23. 39
    0
      src/components/NavHeader/index.jsx
  24. 13
    0
      src/components/NavHeader/index.less
  25. 41
    0
      src/components/NewsListItem/index.jsx
  26. 53
    0
      src/components/NewsListItem/index.less
  27. 53
    0
      src/components/PrizeListItem/index.css
  28. 41
    0
      src/components/PrizeListItem/index.jsx
  29. 62
    0
      src/components/PrizeListItem/index.less
  30. 49
    0
      src/components/TabPageCutNav/index.css
  31. 37
    0
      src/components/TabPageCutNav/index.jsx
  32. 55
    0
      src/components/TabPageCutNav/index.less
  33. 52
    0
      src/components/WuYeBaoXiu/index.css
  34. 56
    0
      src/components/WuYeBaoXiu/index.jsx
  35. 60
    0
      src/components/WuYeBaoXiu/index.less
  36. 110
    0
      src/components/WuYeBaoXiuItem/index.css
  37. 48
    0
      src/components/WuYeBaoXiuItem/index.jsx
  38. 129
    0
      src/components/WuYeBaoXiuItem/index.less
  39. 89
    0
      src/components/WuYeFuWu/index.css
  40. 61
    0
      src/components/WuYeFuWu/index.jsx
  41. 103
    0
      src/components/WuYeFuWu/index.less
  42. 35
    0
      src/components/WuYeFuWuItem/index.css
  43. 37
    0
      src/components/WuYeFuWuItem/index.jsx
  44. 40
    0
      src/components/WuYeFuWuItem/index.less
  45. 48
    0
      src/components/WuYeGongGao/index.jsx
  46. 34
    0
      src/components/WuYeGongGao/index.less
  47. 39
    0
      src/components/WuYeGongGaoItem/index.jsx
  48. 61
    0
      src/components/WuYeGongGaoItem/index.less
  49. 29
    0
      src/components/WuYeJiaoFei/index.css
  50. 48
    0
      src/components/WuYeJiaoFei/index.jsx
  51. 34
    0
      src/components/WuYeJiaoFei/index.less
  52. 76
    0
      src/components/WuYeJiaoFeiItem/index.css
  53. 50
    0
      src/components/WuYeJiaoFeiItem/index.jsx
  54. 89
    0
      src/components/WuYeJiaoFeiItem/index.less
  55. 6
    5
      src/components/demo/index.jsx
  56. 0
    0
      src/components/demo/index.less
  57. 4
    0
      src/pages/FuLi/index.config.js
  58. 179
    0
      src/pages/FuLi/index.css
  59. 110
    0
      src/pages/FuLi/index.jsx
  60. 210
    0
      src/pages/FuLi/index.less
  61. 4
    0
      src/pages/HuoDong/index.config.js
  62. 111
    0
      src/pages/HuoDong/index.jsx
  63. 119
    0
      src/pages/HuoDong/index.less
  64. 3
    0
      src/pages/ShouYe/HuoDong/index.config.js
  65. 20
    0
      src/pages/ShouYe/HuoDong/index.css
  66. 54
    0
      src/pages/ShouYe/HuoDong/index.jsx
  67. 20
    0
      src/pages/ShouYe/HuoDong/index.less
  68. 3
    0
      src/pages/ShouYe/ZiXun/index.config.js
  69. 20
    0
      src/pages/ShouYe/ZiXun/index.css
  70. 54
    0
      src/pages/ShouYe/ZiXun/index.jsx
  71. 20
    0
      src/pages/ShouYe/ZiXun/index.less
  72. 4
    0
      src/pages/ShouYe/index.config.js
  73. 207
    0
      src/pages/ShouYe/index.jsx
  74. 372
    0
      src/pages/ShouYe/index.less
  75. 4
    0
      src/pages/WoDe/index.config.js
  76. 113
    0
      src/pages/WoDe/index.css
  77. 101
    0
      src/pages/WoDe/index.jsx
  78. 130
    0
      src/pages/WoDe/index.less
  79. 3
    0
      src/pages/WuYe/BaoXiuQuYu/index.config.js
  80. 50
    0
      src/pages/WuYe/BaoXiuQuYu/index.css
  81. 48
    0
      src/pages/WuYe/BaoXiuQuYu/index.jsx
  82. 56
    0
      src/pages/WuYe/BaoXiuQuYu/index.less
  83. 3
    0
      src/pages/WuYe/FuWuDetail/index.config.js
  84. 6
    0
      src/pages/WuYe/FuWuDetail/index.css
  85. 29
    0
      src/pages/WuYe/FuWuDetail/index.jsx
  86. 6
    0
      src/pages/WuYe/FuWuDetail/index.less
  87. 3
    0
      src/pages/WuYe/GongGaoDetail/index.config.js
  88. 6
    0
      src/pages/WuYe/GongGaoDetail/index.css
  89. 33
    0
      src/pages/WuYe/GongGaoDetail/index.jsx
  90. 6
    0
      src/pages/WuYe/GongGaoDetail/index.less
  91. 3
    0
      src/pages/WuYe/TianJiaBaoXiu/index.config.js
  92. 7
    0
      src/pages/WuYe/TianJiaBaoXiu/index.css
  93. 30
    0
      src/pages/WuYe/TianJiaBaoXiu/index.jsx
  94. 7
    0
      src/pages/WuYe/TianJiaBaoXiu/index.less
  95. 4
    0
      src/pages/WuYe/index.config.js
  96. 20
    0
      src/pages/WuYe/index.css
  97. 104
    0
      src/pages/WuYe/index.jsx
  98. 23
    0
      src/pages/WuYe/index.less
  99. 0
    3
      src/pages/index/index.config.js
  100. 0
    0
      yarn.lock

+ 16024
- 0
package-lock.json
File diff suppressed because it is too large
View File


+ 2
- 0
package.json View File

@@ -56,6 +56,8 @@
56 56
     "eslint-plugin-import": "^2.12.0",
57 57
     "eslint-plugin-react": "^7.8.2",
58 58
     "eslint-plugin-react-hooks": "^1.6.1",
59
+    "less": "^3.12.2",
60
+    "less-loader": "^7.1.0",
59 61
     "stylelint": "9.3.0"
60 62
   }
61 63
 }

+ 36
- 12
project.config.json View File

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

+ 51
- 3
src/app.config.js View File

@@ -1,9 +1,57 @@
1 1
 export default {
2 2
   pages: [
3
-    'pages/index/index',
4
-    'pages/foo/index',
5
-    'pages/bar/index'
3
+    'pages/WuYe/TianJiaBaoXiu/index', // 物业-添加报修
4
+    'pages/ShouYe/index', // tab-首页
5
+    'pages/ShouYe/HuoDong/index', // 首页-活动
6
+    'pages/ShouYe/ZiXun/index', // 首页-资讯
7
+
8
+    'pages/WuYe/index', // tab-物业
9
+    'pages/WuYe/FuWuDetail/index', // 物业-服务详情
10
+    'pages/WuYe/GongGaoDetail/index', // 物业-公告详情
11
+    'pages/WuYe/BaoXiuQuYu/index', // 物业-报修区域
12
+
13
+    'pages/HuoDong/index', // tab-活动
14
+
15
+    'pages/FuLi/index', // tab-福利
16
+
17
+    'pages/WoDe/index', // tab-我的
6 18
   ],
19
+  tabBar: {
20
+    color: '#666666',
21
+    selectedColor: '#971C21',
22
+    list: [
23
+      {
24
+        iconPath: 'assets/img/tabicon1.png',
25
+        selectedIconPath: 'assets/img/tabicon1-.png',
26
+        pagePath: 'pages/ShouYe/index',
27
+        text: '首页'
28
+      },
29
+      {
30
+        iconPath: 'assets/img/tabicon2.png',
31
+        selectedIconPath: 'assets/img/tabicon2-.png',
32
+        pagePath: 'pages/WuYe/index',
33
+        text: '物业'
34
+      },
35
+      {
36
+        iconPath: 'assets/img/tabicon3.png',
37
+        selectedIconPath: 'assets/img/tabicon3-.png',
38
+        pagePath: 'pages/HuoDong/index',
39
+        text: '活动'
40
+      },
41
+      {
42
+        iconPath: 'assets/img/tabicon4.png',
43
+        selectedIconPath: 'assets/img/tabicon4-.png',
44
+        pagePath: 'pages/FuLi/index',
45
+        text: '福利'
46
+      },
47
+      {
48
+        iconPath: 'assets/img/tabicon5.png',
49
+        selectedIconPath: 'assets/img/tabicon5-.png',
50
+        pagePath: 'pages/WoDe/index',
51
+        text: '我的'
52
+      }
53
+    ]
54
+  },
7 55
   window: {
8 56
     backgroundTextStyle: 'light',
9 57
     navigationBarBackgroundColor: '#fff',

+ 36
- 0
src/app.css View File

@@ -0,0 +1,36 @@
1
+page {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+}
6
+.centerLabel {
7
+  display: block;
8
+  position: absolute;
9
+  left: 50%;
10
+  top: 50%;
11
+  transform: translate(-50%, -50%);
12
+  -webkit-transform: translate(-50%, -50%);
13
+}
14
+.flex-h {
15
+  display: flex;
16
+  display: -webkit-flex;
17
+}
18
+.flex-v {
19
+  display: flex;
20
+  display: -webkit-flex;
21
+  flex-direction: column;
22
+  -webkit-flex-direction: column;
23
+}
24
+.flex-item {
25
+  flex: 1;
26
+  -webkit-flex: 1;
27
+  position: relative;
28
+  overflow: hidden;
29
+}
30
+.text-overflow-line2 {
31
+  overflow: hidden;
32
+  text-overflow: ellipsis;
33
+  display: -webkit-box;
34
+  -webkit-box-orient: vertical;
35
+  -webkit-line-clamp: 2;
36
+}

+ 36
- 0
src/app.less View File

@@ -0,0 +1,36 @@
1
+page {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+}
6
+.centerLabel {
7
+  display: block;
8
+  position: absolute;
9
+  left: 50%;
10
+  top: 50%;
11
+  transform: translate(-50%, -50%);
12
+  -webkit-transform: translate(-50%, -50%);
13
+}
14
+.flex-h {
15
+  display: flex;
16
+  display: -webkit-flex;
17
+}
18
+.flex-v {
19
+  display: flex;
20
+  display: -webkit-flex;
21
+  flex-direction: column;
22
+  -webkit-flex-direction: column;
23
+}
24
+.flex-item {
25
+  flex: 1;
26
+  -webkit-flex: 1;
27
+  position: relative;
28
+  overflow: hidden;
29
+}
30
+.text-overflow-line2 {
31
+  overflow: hidden;
32
+  text-overflow: ellipsis;
33
+  display: -webkit-box;
34
+  -webkit-box-orient: vertical;
35
+  -webkit-line-clamp: 2;
36
+}

+ 116
- 0
src/assets/css/iconfont.css
File diff suppressed because it is too large
View File


+ 152
- 0
src/assets/css/iconfont.less
File diff suppressed because it is too large
View File


+ 36
- 0
src/assets/css/reset.less View File

@@ -0,0 +1,36 @@
1
+page {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+}
6
+.centerLabel {
7
+  display: block;
8
+  position: absolute;
9
+  left: 50%;
10
+  top: 50%;
11
+  transform: translate(-50%, -50%);
12
+  -webkit-transform: translate(-50%, -50%);
13
+}
14
+.flex-h {
15
+  display: flex;
16
+  display: -webkit-flex;
17
+}
18
+.flex-v {
19
+  display: flex;
20
+  display: -webkit-flex;
21
+  flex-direction: column;
22
+  -webkit-flex-direction: column;
23
+}
24
+.flex-item {
25
+  flex: 1;
26
+  -webkit-flex: 1;
27
+  position: relative;
28
+  overflow: hidden;
29
+}
30
+.text-overflow-line2 {
31
+  overflow: hidden;
32
+  text-overflow: ellipsis;
33
+  display: -webkit-box;
34
+  -webkit-box-orient: vertical;
35
+  -webkit-line-clamp: 2;
36
+}

+ 52
- 0
src/assets/img/bars.svg View File

@@ -0,0 +1,52 @@
1
+<svg width="135" height="140" viewBox="0 0 135 140" xmlns="http://www.w3.org/2000/svg" fill="#ccc">
2
+    <rect y="10" width="15" height="120" rx="6">
3
+        <animate attributeName="height"
4
+             begin="0.5s" dur="1s"
5
+             values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear"
6
+             repeatCount="indefinite" />
7
+        <animate attributeName="y"
8
+             begin="0.5s" dur="1s"
9
+             values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear"
10
+             repeatCount="indefinite" />
11
+    </rect>
12
+    <rect x="30" y="10" width="15" height="120" rx="6">
13
+        <animate attributeName="height"
14
+             begin="0.25s" dur="1s"
15
+             values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear"
16
+             repeatCount="indefinite" />
17
+        <animate attributeName="y"
18
+             begin="0.25s" dur="1s"
19
+             values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear"
20
+             repeatCount="indefinite" />
21
+    </rect>
22
+    <rect x="60" width="15" height="140" rx="6">
23
+        <animate attributeName="height"
24
+             begin="0s" dur="1s"
25
+             values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear"
26
+             repeatCount="indefinite" />
27
+        <animate attributeName="y"
28
+             begin="0s" dur="1s"
29
+             values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear"
30
+             repeatCount="indefinite" />
31
+    </rect>
32
+    <rect x="90" y="10" width="15" height="120" rx="6">
33
+        <animate attributeName="height"
34
+             begin="0.25s" dur="1s"
35
+             values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear"
36
+             repeatCount="indefinite" />
37
+        <animate attributeName="y"
38
+             begin="0.25s" dur="1s"
39
+             values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear"
40
+             repeatCount="indefinite" />
41
+    </rect>
42
+    <rect x="120" y="10" width="15" height="120" rx="6">
43
+        <animate attributeName="height"
44
+             begin="0.5s" dur="1s"
45
+             values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear"
46
+             repeatCount="indefinite" />
47
+        <animate attributeName="y"
48
+             begin="0.5s" dur="1s"
49
+             values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear"
50
+             repeatCount="indefinite" />
51
+    </rect>
52
+</svg>

BIN
src/assets/img/tabicon1-.png View File


BIN
src/assets/img/tabicon1.png View File


BIN
src/assets/img/tabicon2-.png View File


BIN
src/assets/img/tabicon2.png View File


BIN
src/assets/img/tabicon3-.png View File


BIN
src/assets/img/tabicon3.png View File


BIN
src/assets/img/tabicon4-.png View File


BIN
src/assets/img/tabicon4.png View File


BIN
src/assets/img/tabicon5-.png View File


BIN
src/assets/img/tabicon5.png View File


+ 39
- 0
src/components/ActivityListItem/index.jsx View File

@@ -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 View File

@@ -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
+}

+ 39
- 0
src/components/NavHeader/index.jsx View File

@@ -0,0 +1,39 @@
1
+import React, { Component } from 'react'
2
+import Taro from '@tarojs/taro'
3
+import '../../assets/css/reset.less'
4
+import '../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class NavHeader extends Component {
8
+
9
+  state = {
10
+    MarginTop: 0,
11
+    LineHeight: 0
12
+  }
13
+
14
+  componentWillMount () {
15
+    console.log(this.props.IsFixed)
16
+    this.setState({
17
+      MarginTop: Taro.getMenuButtonBoundingClientRect().top,
18
+      LineHeight: Taro.getMenuButtonBoundingClientRect().height
19
+    })
20
+  }
21
+
22
+  componentDidMount () { }
23
+
24
+  componentWillUnmount () { }
25
+
26
+  componentDidShow () { }
27
+
28
+  componentDidHide () { }
29
+
30
+  render () {
31
+    const { MarginTop, LineHeight } = this.state
32
+    const { BgColor = '#fff', IsFixed = false, Title = '香颂蔚澜' } = this.props
33
+    return (
34
+      <view className='NavHeader' style={{background: BgColor, position: IsFixed ? 'absolute' : 'relative'}}>
35
+        <text style={{marginTop: `${MarginTop}px`, lineHeight: `${LineHeight}px`}}>{Title}</text>
36
+      </view>
37
+    )
38
+  }
39
+}

+ 13
- 0
src/components/NavHeader/index.less View File

@@ -0,0 +1,13 @@
1
+.NavHeader {
2
+  width: 100%;
3
+  position: relative;
4
+  overflow: hidden;
5
+  z-index: 2;
6
+  > text {
7
+    display: block;
8
+    font-size: 32px;
9
+    color: #fff;
10
+    text-indent: 30px;
11
+    padding-bottom: 20px;
12
+  }
13
+}

+ 41
- 0
src/components/NewsListItem/index.jsx View File

@@ -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 NewsListItem 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 View File

@@ -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
+}

+ 53
- 0
src/components/PrizeListItem/index.css View File

@@ -0,0 +1,53 @@
1
+.PrizeListItem {
2
+  width: 100%;
3
+  position: relative;
4
+  overflow: hidden;
5
+  background: #fff;
6
+  border-radius: 12px;
7
+}
8
+.PrizeListItem > .Img {
9
+  width: 100%;
10
+  padding-bottom: 100%;
11
+  position: relative;
12
+  overflow: hidden;
13
+  background: #ccc;
14
+}
15
+.PrizeListItem > .Img > image {
16
+  width: 100%;
17
+  height: 100%;
18
+}
19
+.PrizeListItem > .Info {
20
+  padding: 10px;
21
+  position: relative;
22
+  overflow: hidden;
23
+}
24
+.PrizeListItem > .Info > text {
25
+  font-size: 28px;
26
+  color: #333;
27
+  line-height: 40px;
28
+  display: block;
29
+  font-weight: bold;
30
+  height: 80px;
31
+  overflow: hidden;
32
+  text-overflow: ellipsis;
33
+  display: -webkit-box;
34
+  -webkit-box-orient: vertical;
35
+  -webkit-line-clamp: 2;
36
+}
37
+.PrizeListItem > .Info > .flex-h {
38
+  align-items: center;
39
+}
40
+.PrizeListItem > .Info > .flex-h > text {
41
+  font-size: 24px;
42
+  color: #333;
43
+  line-height: 40px;
44
+}
45
+.PrizeListItem > .Info > .flex-h > text.Count {
46
+  color: #971C21;
47
+}
48
+.PrizeListItem > .Info > .flex-h > text.Num {
49
+  color: #FF2C28;
50
+}
51
+.PrizeListItem > .Info > .flex-h > text:last-child {
52
+  color: #999;
53
+}

+ 41
- 0
src/components/PrizeListItem/index.jsx View File

@@ -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 PrizeListItem 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='PrizeListItem'>
26
+        <view className='Img'>
27
+          <image mode='aspectFill' src={TestImg} className='centerLabel'></image>
28
+        </view>
29
+        <view className='Info'>
30
+          <text>沙发垫欧式轻奢</text>
31
+          <view className='flex-h'>
32
+            <text className='Count'>70</text>
33
+            <text className='flex-item'>人已兑换</text>
34
+            <text className='Num'>30000</text>
35
+            <text>积分</text>
36
+          </view>
37
+        </view>
38
+      </view >
39
+    )
40
+  }
41
+}

+ 62
- 0
src/components/PrizeListItem/index.less View File

@@ -0,0 +1,62 @@
1
+.PrizeListItem {
2
+  width: 100%;
3
+  position: relative;
4
+  overflow: hidden;
5
+  background: #fff;
6
+  border-radius: 12px;
7
+
8
+  >.Img {
9
+    width: 100%;
10
+    padding-bottom: 100%;
11
+    position: relative;
12
+    overflow: hidden;
13
+    background: #ccc;
14
+
15
+    >image {
16
+      width: 100%;
17
+      height: 100%;
18
+    }
19
+  }
20
+
21
+  >.Info {
22
+    padding: 10px;
23
+    position: relative;
24
+    overflow: hidden;
25
+
26
+    >text {
27
+      font-size: 28px;
28
+      color: #333;
29
+      line-height: 40px;
30
+      display: block;
31
+      font-weight: bold;
32
+      height: 80px;
33
+      overflow: hidden;
34
+      text-overflow: ellipsis;
35
+      display: -webkit-box;
36
+      -webkit-box-orient: vertical;
37
+      -webkit-line-clamp: 2;
38
+    }
39
+
40
+    >.flex-h {
41
+      align-items: center;
42
+
43
+      >text {
44
+        font-size: 24px;
45
+        color: #333;
46
+        line-height: 40px;
47
+
48
+        &.Count {
49
+          color: #971C21;
50
+        }
51
+
52
+        &.Num {
53
+          color: #FF2C28;
54
+        }
55
+
56
+        &:last-child {
57
+          color: #999;
58
+        }
59
+      }
60
+    }
61
+  }
62
+}

+ 49
- 0
src/components/TabPageCutNav/index.css View File

@@ -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
+}

+ 37
- 0
src/components/TabPageCutNav/index.jsx View File

@@ -0,0 +1,37 @@
1
+import React, { Component } from 'react'
2
+// import { View, Text } from '@tarojs/components'
3
+import '../../assets/css/reset.less'
4
+import '../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class TabPageCutNav extends Component {
8
+
9
+  componentWillMount () { }
10
+
11
+  componentDidMount () { }
12
+
13
+  componentWillUnmount () { }
14
+
15
+  componentDidShow () { }
16
+
17
+  componentDidHide () { }
18
+
19
+  render () {
20
+    const { List = [], CurrentNavId = null, NavChange = () => { } } = this.props
21
+    return (
22
+      <view className='TabPageCutNav'>
23
+        <view>
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>
33
+        </view>
34
+      </view >
35
+    )
36
+  }
37
+}

+ 55
- 0
src/components/TabPageCutNav/index.less View File

@@ -0,0 +1,55 @@
1
+.TabPageCutNav {
2
+  width: 100%;
3
+  padding-bottom: 35%;
4
+  background-image: linear-gradient(#F35844, rgba(255, 141, 97, 1, 0.5));
5
+  position: relative;
6
+  z-index: 1;
7
+
8
+  >view {
9
+    width: 100%;
10
+    position: absolute;
11
+    left: 0;
12
+    bottom: 0;
13
+    overflow: hidden;
14
+
15
+    >view {
16
+      width: 100%;
17
+      position: relative;
18
+      overflow: hidden;
19
+
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;
35
+
36
+          &.active {
37
+            color: #333;
38
+            font-weight: bold;
39
+
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
+          }
51
+        }
52
+      }
53
+    }
54
+  }
55
+}

+ 52
- 0
src/components/WuYeBaoXiu/index.css View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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
+}

+ 37
- 0
src/components/WuYeFuWuItem/index.jsx View File

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

+ 40
- 0
src/components/WuYeFuWuItem/index.less View File

@@ -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 View File

@@ -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 View File

@@ -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
+}

+ 39
- 0
src/components/WuYeGongGaoItem/index.jsx View File

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

+ 61
- 0
src/components/WuYeGongGaoItem/index.less View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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
+}

src/pages/index/index.jsx → src/components/demo/index.jsx View File

@@ -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
 }

src/pages/index/index.less → src/components/demo/index.less View File


+ 4
- 0
src/pages/FuLi/index.config.js View File

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

+ 179
- 0
src/pages/FuLi/index.css View File

@@ -0,0 +1,179 @@
1
+.FuLi {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  overflow: hidden;
6
+  background: #f8f8f8;
7
+}
8
+.FuLi > .TopBg {
9
+  width: 100%;
10
+  position: relative;
11
+  overflow: hidden;
12
+  padding-bottom: 56.25%;
13
+  background-image: linear-gradient(#ff8d61, #F35844);
14
+}
15
+.FuLi > .TopBg > image {
16
+  width: 100%;
17
+  height: 100%;
18
+}
19
+.FuLi > .flex-item {
20
+  position: relative;
21
+  overflow: hidden;
22
+}
23
+.FuLi > .flex-item > view {
24
+  width: 100%;
25
+  height: 100%;
26
+  position: relative;
27
+  overflow: hidden;
28
+}
29
+.FuLi > .flex-item > view .FuLiContent {
30
+  position: relative;
31
+  overflow: hidden;
32
+}
33
+.FuLi > .flex-item > view .FuLiContent > .UserTab {
34
+  padding: 0 30px;
35
+  position: relative;
36
+  overflow: hidden;
37
+  margin-top: 30px;
38
+}
39
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view {
40
+  padding: 20px;
41
+  position: relative;
42
+  overflow: hidden;
43
+  background: #fff;
44
+  border-radius: 24px;
45
+}
46
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info {
47
+  align-items: center;
48
+}
49
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info > .Icon {
50
+  width: 132px;
51
+  height: 132px;
52
+  background: #ccc;
53
+  border-radius: 100%;
54
+  position: relative;
55
+  overflow: hidden;
56
+  margin-right: 20px;
57
+}
58
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info > .Icon > image {
59
+  width: 100%;
60
+  height: 100%;
61
+}
62
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info > .flex-item {
63
+  position: relative;
64
+  overflow: hidden;
65
+}
66
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info > .flex-item > text {
67
+  display: block;
68
+  font-size: 28px;
69
+  color: #666;
70
+  line-height: 40px;
71
+}
72
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info > .flex-item > text:first-child {
73
+  font-size: 32px;
74
+  color: #333;
75
+  white-space: nowrap;
76
+  overflow: hidden;
77
+  text-overflow: ellipsis;
78
+  margin-bottom: 20px;
79
+}
80
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info > text {
81
+  line-height: 48px;
82
+  font-size: 28px;
83
+  border: 2px solid rgba(243, 88, 68, 0.5);
84
+  border-radius: 8px;
85
+  padding: 0 10px;
86
+  color: rgba(243, 88, 68, 0.5);
87
+  margin-left: 20px;
88
+  margin-right: 20px;
89
+}
90
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Info > text.active {
91
+  color: #f35844;
92
+  border-color: #f35844;
93
+}
94
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Rule {
95
+  align-items: center;
96
+  border-top: 2px solid rgba(0, 0, 0, 0.08);
97
+  margin-top: 20px;
98
+  padding-top: 20px;
99
+}
100
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Rule > view {
101
+  overflow: hidden;
102
+  font-size: 0;
103
+  white-space: nowrap;
104
+  text-align: center;
105
+  position: relative;
106
+}
107
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Rule > view::after {
108
+  content: '';
109
+  display: block;
110
+  width: 2px;
111
+  position: absolute;
112
+  left: 0;
113
+  top: 50%;
114
+  transform: translateY(-50%);
115
+  -webkit-transform: translateY(-50%);
116
+  height: 50px;
117
+  background: rgba(0, 0, 0, 0.08);
118
+}
119
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Rule > view:first-child::after {
120
+  display: none;
121
+}
122
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Rule > view > text {
123
+  font-size: 28px;
124
+  color: #333;
125
+  line-height: 60px;
126
+  display: inline-block;
127
+  vertical-align: middle;
128
+}
129
+.FuLi > .flex-item > view .FuLiContent > .UserTab > view > .Rule > view > text.iconfont {
130
+  font-size: 46px;
131
+  color: #F35844;
132
+  margin-right: 20px;
133
+}
134
+.FuLi > .flex-item > view .FuLiContent > .SearchContainer {
135
+  padding: 0 30px;
136
+  position: relative;
137
+  overflow: hidden;
138
+  margin-top: 30px;
139
+}
140
+.FuLi > .flex-item > view .FuLiContent > .SearchContainer > view {
141
+  position: relative;
142
+  overflow: hidden;
143
+  background: #fff;
144
+  font-size: 0;
145
+  white-space: nowrap;
146
+  border-radius: 68px;
147
+  text-align: center;
148
+}
149
+.FuLi > .flex-item > view .FuLiContent > .SearchContainer > view > text {
150
+  font-size: 24px;
151
+  color: #666;
152
+  display: inline-block;
153
+  vertical-align: middle;
154
+  line-height: 68px;
155
+}
156
+.FuLi > .flex-item > view .FuLiContent > .SearchContainer > view > text:first-child {
157
+  margin-right: 10px;
158
+}
159
+.FuLi > .flex-item > view .FuLiContent > .SearchContainer > view > text.iconfont {
160
+  font-size: 36px;
161
+}
162
+.FuLi > .flex-item > view .FuLiContent > .PirzeList {
163
+  padding-right: 30px;
164
+  position: relative;
165
+  overflow: hidden;
166
+  font-size: 0;
167
+  padding-bottom: 30px;
168
+}
169
+.FuLi > .flex-item > view .FuLiContent > .PirzeList > view {
170
+  width: 50%;
171
+  display: inline-block;
172
+  vertical-align: middle;
173
+  margin-top: 30px;
174
+}
175
+.FuLi > .flex-item > view .FuLiContent > .PirzeList > view > view {
176
+  padding-left: 30px;
177
+  position: relative;
178
+  overflow: hidden;
179
+}

+ 110
- 0
src/pages/FuLi/index.jsx View File

@@ -0,0 +1,110 @@
1
+import React, { Component } from 'react'
2
+import NavHeader from '../../components/NavHeader/index'
3
+import PrizeListItem from '../../components/PrizeListItem/index'
4
+import '../../assets/css/reset.less'
5
+import '../../assets/css/iconfont.less'
6
+import './index.less'
7
+
8
+export default class FuLi extends Component {
9
+
10
+  state = {
11
+    PirzeList: ['', '', '', '', '', '', '', '', ''],
12
+    IsPull: false,
13
+    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'
14
+  }
15
+
16
+  componentWillMount () { }
17
+
18
+  componentDidMount () { }
19
+
20
+  componentWillUnmount () { }
21
+
22
+  componentDidShow () { }
23
+
24
+  componentDidHide () { }
25
+
26
+  OnRefresh () {
27
+    this.setState({
28
+      IsPull: true
29
+    }, () => {
30
+      window.setTimeout(() => {
31
+        this.setState({
32
+          IsPull: false
33
+        })
34
+      }, 1000)
35
+    })
36
+  }
37
+
38
+  render () {
39
+    const { IsPull, TestImg, PirzeList } = this.state
40
+    return (
41
+      <view className='FuLi flex-v'>
42
+        <NavHeader BgColor='none' Title='福利' IsFixed={true}></NavHeader>
43
+
44
+        {/* 顶部背景图 */}
45
+        <view className='TopBg'>
46
+          {/* <image mode='aspectFill' src={TestImg} class='centerLabel'></image> */}
47
+        </view>
48
+
49
+        {/* 正文 */}
50
+        <view className='flex-item'>
51
+          <view>
52
+            <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='none'>
53
+              <view className='FuLiContent'>
54
+
55
+                {/* 用户面板 */}
56
+                <view className='UserTab'>
57
+                  <view>
58
+                    <view className='Info flex-h'>
59
+                      <view className='Icon'>
60
+                        <image mode='aspectFill' src={TestImg} class='centerLabel'></image>
61
+                      </view>
62
+                      <view className='flex-item'>
63
+                        <text>三十而已</text>
64
+                        <text>积分10</text>
65
+                      </view>
66
+                      <text className='active'>签到</text>
67
+                    </view>
68
+                    <view className='Rule flex-h'>
69
+                      <view className='flex-item'>
70
+                        <text className='iconfont iconjifen'></text>
71
+                        <text>积分规则</text>
72
+                      </view>
73
+                      <view className='flex-item'>
74
+                        <text className='iconfont iconjifenguize'></text>
75
+                        <text>积分明细</text>
76
+                      </view>
77
+                    </view>
78
+                  </view>
79
+                </view>
80
+
81
+                {/* 搜索框 */}
82
+                <view className='SearchContainer'>
83
+                  <view>
84
+                    <text className='iconfont iconsousuo'></text>
85
+                    <text>附近热搜:火锅</text>
86
+                  </view>
87
+                </view>
88
+
89
+                {/* 积分礼品列表 */}
90
+                <view className='PirzeList'>
91
+                  {
92
+                    PirzeList.map((item, index) => (
93
+                      <view key={`PirzeListItem-${index}`}>
94
+                        <view>
95
+                          <PrizeListItem></PrizeListItem>
96
+                        </view>
97
+                      </view>
98
+                    ))
99
+                  }
100
+                </view>
101
+
102
+              </view>
103
+            </scroll-view>
104
+          </view>
105
+        </view>
106
+
107
+      </view>
108
+    )
109
+  }
110
+}

+ 210
- 0
src/pages/FuLi/index.less View File

@@ -0,0 +1,210 @@
1
+.FuLi {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  overflow: hidden;
6
+  background: #f8f8f8;
7
+
8
+  >.TopBg {
9
+    width: 100%;
10
+    position: relative;
11
+    overflow: hidden;
12
+    padding-bottom: 56.25%;
13
+    background-image: linear-gradient(rgba(255, 141, 97, 1, 0.5), #F35844);
14
+
15
+    >image {
16
+      width: 100%;
17
+      height: 100%;
18
+    }
19
+  }
20
+
21
+  >.flex-item {
22
+    position: relative;
23
+    overflow: hidden;
24
+
25
+    >view {
26
+      width: 100%;
27
+      height: 100%;
28
+      position: relative;
29
+      overflow: hidden;
30
+
31
+      .FuLiContent {
32
+        position: relative;
33
+        overflow: hidden;
34
+
35
+        >.UserTab {
36
+          padding: 0 30px;
37
+          position: relative;
38
+          overflow: hidden;
39
+          margin-top: 30px;
40
+
41
+          >view {
42
+            padding: 20px;
43
+            position: relative;
44
+            overflow: hidden;
45
+            background: #fff;
46
+            border-radius: 24px;
47
+
48
+            >.Info {
49
+              align-items: center;
50
+
51
+              >.Icon {
52
+                width: 132px;
53
+                height: 132px;
54
+                background: #ccc;
55
+                border-radius: 100%;
56
+                position: relative;
57
+                overflow: hidden;
58
+                margin-right: 20px;
59
+
60
+                >image {
61
+                  width: 100%;
62
+                  height: 100%;
63
+                }
64
+              }
65
+
66
+              >.flex-item {
67
+                position: relative;
68
+                overflow: hidden;
69
+
70
+                >text {
71
+                  display: block;
72
+                  font-size: 28px;
73
+                  color: #666;
74
+                  line-height: 40px;
75
+
76
+                  &:first-child {
77
+                    font-size: 32px;
78
+                    color: #333;
79
+                    white-space: nowrap;
80
+                    overflow: hidden;
81
+                    text-overflow: ellipsis;
82
+                    margin-bottom: 20px;
83
+                  }
84
+                }
85
+              }
86
+
87
+              >text {
88
+                line-height: 48px;
89
+                font-size: 28px;
90
+                border: 2px solid rgba(243, 88, 68, 0.5);
91
+                border-radius: 8px;
92
+                padding: 0 10px;
93
+                color: rgba(243, 88, 68, 0.5);
94
+                margin-left: 20px;
95
+                margin-right: 20px;
96
+
97
+                &.active {
98
+                  color: rgba(243, 88, 68, 1);
99
+                  border-color: rgba(243, 88, 68, 1);
100
+                }
101
+              }
102
+            }
103
+
104
+            >.Rule {
105
+              align-items: center;
106
+              border-top: 2px solid rgba(0, 0, 0, 0.08);
107
+              margin-top: 20px;
108
+              padding-top: 20px;
109
+
110
+              >view {
111
+                position: relative;
112
+                overflow: hidden;
113
+                font-size: 0;
114
+                white-space: nowrap;
115
+                text-align: center;
116
+                position: relative;
117
+
118
+                &::after {
119
+                  content: '';
120
+                  display: block;
121
+                  width: 2px;
122
+                  position: absolute;
123
+                  left: 0;
124
+                  top: 50%;
125
+                  transform: translateY(-50%);
126
+                  -webkit-transform: translateY(-50%);
127
+                  height: 50px;
128
+                  background: rgba(0, 0, 0, 0.08);
129
+                }
130
+
131
+                &:first-child {
132
+                  &::after {
133
+                    display: none;
134
+                  }
135
+                }
136
+
137
+                >text {
138
+                  font-size: 28px;
139
+                  color: #333;
140
+                  line-height: 60px;
141
+                  display: inline-block;
142
+                  vertical-align: middle;
143
+
144
+                  &.iconfont {
145
+                    font-size: 46px;
146
+                    color: #F35844;
147
+                    margin-right: 20px;
148
+                  }
149
+                }
150
+              }
151
+            }
152
+          }
153
+        }
154
+
155
+        >.SearchContainer {
156
+          padding: 0 30px;
157
+          position: relative;
158
+          overflow: hidden;
159
+          margin-top: 30px;
160
+
161
+          >view {
162
+            position: relative;
163
+            overflow: hidden;
164
+            background: #fff;
165
+            font-size: 0;
166
+            white-space: nowrap;
167
+            border-radius: 68px;
168
+            text-align: center;
169
+
170
+            >text {
171
+              font-size: 24px;
172
+              color: #666;
173
+              display: inline-block;
174
+              vertical-align: middle;
175
+              line-height: 68px;
176
+
177
+              &:first-child {
178
+                margin-right: 10px;
179
+              }
180
+
181
+              &.iconfont {
182
+                font-size: 36px;
183
+              }
184
+            }
185
+          }
186
+        }
187
+
188
+        >.PirzeList {
189
+          padding-right: 30px;
190
+          position: relative;
191
+          overflow: hidden;
192
+          font-size: 0;
193
+          padding-bottom: 30px;
194
+
195
+          >view {
196
+            width: 50%;
197
+            display: inline-block;
198
+            vertical-align: middle;
199
+            margin-top: 30px;
200
+            >view {
201
+              padding-left: 30px;
202
+              position: relative;
203
+              overflow: hidden;
204
+            }
205
+          }
206
+        }
207
+      }
208
+    }
209
+  }
210
+}

+ 4
- 0
src/pages/HuoDong/index.config.js View File

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

+ 111
- 0
src/pages/HuoDong/index.jsx View File

@@ -0,0 +1,111 @@
1
+import React, { Component } from 'react'
2
+// import { View, Text } from '@tarojs/components'
3
+import TabPageCutNav from '../../components/TabPageCutNav/index'
4
+import NavHeader from '../../components/NavHeader/index'
5
+import ActivityListItem from '../../components/ActivityListItem/index'
6
+import NewsListItem from '../../components/NewsListItem/index'
7
+import '../../assets/css/reset.less'
8
+import '../../assets/css/iconfont.less'
9
+import './index.less'
10
+
11
+export default class HuoDong extends Component {
12
+
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',
15
+    NavList: [
16
+      { name: '活动', id: 1 },
17
+      { name: '资讯', id: 2 }
18
+    ],
19
+    CurrentNavId: 1,
20
+    IsPull: false,
21
+    ActivityList: ['', '', '', '', '', '', '', ''],
22
+    NewsList: ['', '', '', '', '', '', '', '']
23
+    // DataLock: false,
24
+    // PageList: [],
25
+    // PageData: {
26
+    //   pageNum: 1,
27
+    //   pageSize: 10
28
+    // },
29
+    // HasNextPage: true
30
+  }
31
+
32
+  componentWillMount () { }
33
+
34
+  componentDidMount () { }
35
+
36
+  componentWillUnmount () { }
37
+
38
+  componentDidShow () { }
39
+
40
+  componentDidHide () { }
41
+
42
+  NavChange (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
+    })
60
+  }
61
+
62
+  render () {
63
+    const { CurrentNavId, NavList, IsPull, ActivityList, NewsList, TestImg } = this.state
64
+    return (
65
+      <view className='HuoDong flex-v'>
66
+        <NavHeader BgColor='none' Title='活动' IsFixed={true}></NavHeader>
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>
108
+      </view>
109
+    )
110
+  }
111
+}

+ 119
- 0
src/pages/HuoDong/index.less View File

@@ -0,0 +1,119 @@
1
+.HuoDong {
2
+  width: 100%;
3
+  height: 100%;
4
+  overflow: hidden;
5
+  background: #f8f8f8;
6
+
7
+  >.TopNav {
8
+    width: 100%;
9
+    padding-bottom: 35%;
10
+    background-image: linear-gradient(#f35844, #ff8d61);
11
+    position: relative;
12
+    z-index: 1;
13
+
14
+    >view {
15
+      width: 100%;
16
+      font-size: 0;
17
+      white-space: nowrap;
18
+      text-align: center;
19
+      position: absolute;
20
+      left: 0;
21
+      bottom: 0;
22
+
23
+      >text {
24
+        display: inline-block;
25
+        vertical-align: middle;
26
+        font-size: 32px;
27
+        color: #fff;
28
+        margin-left: 160px;
29
+        position: relative;
30
+        padding: 0 30px;
31
+        padding-bottom: 20px;
32
+
33
+        &:first-child {
34
+          margin-left: 0;
35
+        }
36
+
37
+        &.active {
38
+          color: #333;
39
+          line-height: 60px;
40
+          font-weight: bold;
41
+
42
+          &::after {
43
+            content: "";
44
+            display: block;
45
+            position: absolute;
46
+            left: 0;
47
+            bottom: 0;
48
+            height: 2px;
49
+            background: #000;
50
+            width: 100%;
51
+          }
52
+        }
53
+      }
54
+    }
55
+  }
56
+
57
+  >.flex-item {
58
+    position: relative;
59
+    overflow: hidden;
60
+
61
+    >view {
62
+      width: 100%;
63
+      height: 100%;
64
+      position: relative;
65
+      overflow: hidden;
66
+    }
67
+
68
+    .Content {
69
+      position: relative;
70
+      overflow: hidden;
71
+
72
+      &.Activity {
73
+        padding: 0 30px;
74
+
75
+        >.ListItem {
76
+          width: 100%;
77
+          position: relative;
78
+          overflow: hidden;
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
+          }
115
+        }
116
+      }
117
+    }
118
+  }
119
+}

+ 3
- 0
src/pages/ShouYe/HuoDong/index.config.js View File

@@ -0,0 +1,3 @@
1
+export default {
2
+  navigationBarTitleText: '活动'
3
+}

+ 20
- 0
src/pages/ShouYe/HuoDong/index.css View File

@@ -0,0 +1,20 @@
1
+.ShouYeHuoDong {
2
+  width: 100%;
3
+  height: 100%;
4
+  overflow: hidden;
5
+  background: #f8f8f8;
6
+}
7
+.ShouYeHuoDong .ShouYeHuoDongContent {
8
+  position: relative;
9
+  overflow: hidden;
10
+  padding: 0 30px;
11
+}
12
+.ShouYeHuoDong .ShouYeHuoDongContent > .ListItem {
13
+  width: 100%;
14
+  position: relative;
15
+  overflow: hidden;
16
+  margin-bottom: 30px;
17
+}
18
+.ShouYeHuoDong .ShouYeHuoDongContent > .ListItem:first-child {
19
+  margin-top: 30px;
20
+}

+ 54
- 0
src/pages/ShouYe/HuoDong/index.jsx View File

@@ -0,0 +1,54 @@
1
+import React, { Component } from 'react'
2
+import ActivityListItem from '../../../components/ActivityListItem/index'
3
+import '../../../assets/css/reset.less'
4
+import '../../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class ShouYeHuoDong extends Component {
8
+
9
+  state = {
10
+    ActivityList: ['', '', '', '', '', '', '', ''],
11
+    IsPull: false
12
+  }
13
+
14
+  componentWillMount () { }
15
+
16
+  componentDidMount () { }
17
+
18
+  componentWillUnmount () { }
19
+
20
+  componentDidShow () { }
21
+
22
+  componentDidHide () { }
23
+
24
+  OnRefresh () { // 页面下拉刷新
25
+    this.setState({
26
+      IsPull: true
27
+    }, () => {
28
+      window.setTimeout(() => {
29
+        this.setState({
30
+          IsPull: false
31
+        })
32
+      }, 1000)
33
+    })
34
+  }
35
+
36
+  render () {
37
+    const { IsPull, ActivityList } = this.state
38
+    return (
39
+      <view className='ShouYeHuoDong'>
40
+        <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='none'>
41
+          <view className='ShouYeHuoDongContent'>
42
+            {
43
+              ActivityList.map((item, index) => (
44
+                <view className='ListItem' key={`ActivityItem-${index}`}>
45
+                  <ActivityListItem Data={item}></ActivityListItem>
46
+                </view>
47
+              ))
48
+            }
49
+          </view>
50
+        </scroll-view>
51
+      </view >
52
+    )
53
+  }
54
+}

+ 20
- 0
src/pages/ShouYe/HuoDong/index.less View File

@@ -0,0 +1,20 @@
1
+.ShouYeHuoDong {
2
+  width: 100%;
3
+  height: 100%;
4
+  overflow: hidden;
5
+  background: #f8f8f8;
6
+  .ShouYeHuoDongContent {
7
+    position: relative;
8
+    overflow: hidden;
9
+    padding: 0 30px;
10
+    >.ListItem {
11
+      width: 100%;
12
+      position: relative;
13
+      overflow: hidden;
14
+      margin-bottom: 30px;
15
+      &:first-child {
16
+        margin-top: 30px;
17
+      }
18
+    }
19
+  }
20
+}

+ 3
- 0
src/pages/ShouYe/ZiXun/index.config.js View File

@@ -0,0 +1,3 @@
1
+export default {
2
+  navigationBarTitleText: '资讯'
3
+}

+ 20
- 0
src/pages/ShouYe/ZiXun/index.css View File

@@ -0,0 +1,20 @@
1
+.ShouYeZiXun {
2
+  width: 100%;
3
+  height: 100%;
4
+  overflow: hidden;
5
+  background: #f8f8f8;
6
+}
7
+.ShouYeZiXun .ShouYeHuoDongContent {
8
+  position: relative;
9
+  overflow: hidden;
10
+  padding: 0 30px;
11
+}
12
+.ShouYeZiXun .ShouYeHuoDongContent > .ListItem {
13
+  width: 100%;
14
+  position: relative;
15
+  overflow: hidden;
16
+  margin-bottom: 30px;
17
+}
18
+.ShouYeZiXun .ShouYeHuoDongContent > .ListItem:first-child {
19
+  margin-top: 30px;
20
+}

+ 54
- 0
src/pages/ShouYe/ZiXun/index.jsx View File

@@ -0,0 +1,54 @@
1
+import React, { Component } from 'react'
2
+import NewsListItem from '../../../components/NewsListItem/index'
3
+import '../../../assets/css/reset.less'
4
+import '../../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class ShouYeZiXun extends Component {
8
+
9
+  state = {
10
+    ActivityList: ['', '', '', '', '', '', '', ''],
11
+    IsPull: false
12
+  }
13
+
14
+  componentWillMount () { }
15
+
16
+  componentDidMount () { }
17
+
18
+  componentWillUnmount () { }
19
+
20
+  componentDidShow () { }
21
+
22
+  componentDidHide () { }
23
+
24
+  OnRefresh () { // 页面下拉刷新
25
+    this.setState({
26
+      IsPull: true
27
+    }, () => {
28
+      window.setTimeout(() => {
29
+        this.setState({
30
+          IsPull: false
31
+        })
32
+      }, 1000)
33
+    })
34
+  }
35
+
36
+  render () {
37
+    const { IsPull, ActivityList } = this.state
38
+    return (
39
+      <view className='ShouYeZiXun'>
40
+        <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='none'>
41
+          <view className='ShouYeHuoDongContent'>
42
+            {
43
+              ActivityList.map((item, index) => (
44
+                <view className='ListItem' key={`ActivityItem-${index}`}>
45
+                  <NewsListItem Data={item} ShowTips={index === 0}></NewsListItem>
46
+                </view>
47
+              ))
48
+            }
49
+          </view>
50
+        </scroll-view>
51
+      </view >
52
+    )
53
+  }
54
+}

+ 20
- 0
src/pages/ShouYe/ZiXun/index.less View File

@@ -0,0 +1,20 @@
1
+.ShouYeZiXun {
2
+  width: 100%;
3
+  height: 100%;
4
+  overflow: hidden;
5
+  background: #f8f8f8;
6
+  .ShouYeHuoDongContent {
7
+    position: relative;
8
+    overflow: hidden;
9
+    padding: 0 30px;
10
+    >.ListItem {
11
+      width: 100%;
12
+      position: relative;
13
+      overflow: hidden;
14
+      margin-bottom: 30px;
15
+      &:first-child {
16
+        margin-top: 30px;
17
+      }
18
+    }
19
+  }
20
+}

+ 4
- 0
src/pages/ShouYe/index.config.js View File

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

+ 207
- 0
src/pages/ShouYe/index.jsx View File

@@ -0,0 +1,207 @@
1
+import React, { Component } from 'react'
2
+import NavHeader from '../../components/NavHeader/index'
3
+import { Swiper, SwiperItem, Text } from '@tarojs/components'
4
+import Taro from '@tarojs/taro'
5
+import '../../assets/css/reset.less'
6
+import '../../assets/css/iconfont.less'
7
+import './index.less'
8
+
9
+export default class Index extends Component {
10
+
11
+  state = {
12
+    ShowAdvLayer: false,
13
+    IsPull: false,
14
+    NewsList: [
15
+      { img: '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', title: '标题', desc: '描述' },
16
+      { img: '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', title: '标题', desc: '描述' },
17
+      { img: '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', title: '标题', desc: '描述' },
18
+      { img: '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', title: '标题', desc: '描述' }
19
+    ],
20
+    OwnerList: [
21
+      { icon: 'iconjiaofei', name: '物业缴费', id: 1 },
22
+      { icon: 'icontongzhi', name: '物业通知', id: 2 },
23
+      { icon: 'iconbaoxiu', name: '物业报修', id: 3 },
24
+      { icon: 'iconrenzheng', name: '业主认证', id: 4 }
25
+    ],
26
+    NavList: [
27
+      { icon: 'iconhuodong1', name: '活动', id: 1, router: '/pages/ShouYe/HuoDong/index', isTab: false },
28
+      { icon: 'iconfuli', name: '福利', id: 2, router: '/pages/FuLi/index', isTab: true },
29
+      { icon: 'iconfuwu', name: '服务', id: 3, router: '/pages/WuYe/index', isTab: true },
30
+      { icon: 'iconxinwen', name: '资讯', id: 4, router: '/pages/ShouYe/ZiXun/index', isTab: false }
31
+    ],
32
+    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',
33
+    BannerList: [
34
+      { img: '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' },
35
+      { img: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989360&di=16024dc7edcdbb6c325d40cdff6373a1&imgtype=0&src=http%3A%2F%2Fattach.bbs.miui.com%2Fforum%2F201408%2F07%2F213601f2xz7usscm2z1mjh.jpg' },
36
+      { img: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989360&di=3f54f5330ec21728ecb02352fbb6af90&imgtype=0&src=http%3A%2F%2Fattach.bbs.miui.com%2Fforum%2F201205%2F15%2F152011zser9o5oa9ee9xx6.jpg' },
37
+      { img: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989359&di=46ae1d0f0d4f1f3740139191398f2a81&imgtype=0&src=http%3A%2F%2Fpic.baike.soso.com%2Fp%2F20131230%2F20131230165604-1960511167.jpg' },
38
+      { img: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606120989359&di=2ec3fe46fb98c01055601cece86f111f&imgtype=0&src=http%3A%2F%2Fbenyouhuifile.it168.com%2Fforum%2Fday_100429%2F1004291840008539c8ac02cd5c.jpg' }
39
+    ]
40
+  }
41
+
42
+  componentWillMount () { }
43
+
44
+  componentDidMount () { }
45
+
46
+  componentWillUnmount () { }
47
+
48
+  componentDidShow () { }
49
+
50
+  componentDidHide () { }
51
+
52
+  NavClick (item) {
53
+    return () => {
54
+      if (item.isTab) {
55
+        Taro.switchTab({ url: item.router })
56
+      } else {
57
+        Taro.navigateTo({ url: item.router })
58
+      }
59
+    }
60
+  }
61
+
62
+  OnRefresh () { // 页面下拉刷新
63
+    this.setState({
64
+      IsPull: true
65
+    }, () => {
66
+      window.setTimeout(() => {
67
+        this.setState({
68
+          IsPull: false
69
+        })
70
+      }, 1000)
71
+    })
72
+  }
73
+
74
+  render () {
75
+    const { TestImg, ShowAdvLayer, IsPull, BannerList, NavList, OwnerList, NewsList } = this.state
76
+    return (
77
+      <view className='ShouYe flex-v'>
78
+        <NavHeader BgColor='#f35844' Title='首页'></NavHeader>
79
+        <view className='flex-item'>
80
+
81
+          {/* 广告 */}
82
+          <view className='AdvLayer' style={{ display: ShowAdvLayer ? 'block' : 'none' }}>
83
+            <view className='centerLabel'>
84
+              <image mode='aspectFit' src={TestImg}></image>
85
+              <Text className='iconfont iconguanbi'></Text>
86
+            </view>
87
+          </view>
88
+
89
+          {/* 正文 */}
90
+          <view className='PageContainer'>
91
+            <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='#f35844'>
92
+              <view className='Content'>
93
+
94
+                {/* 背景图 */}
95
+                <view className='TopBg'></view>
96
+
97
+                <view>
98
+
99
+                  {/* 欢迎词 */}
100
+                  <Text className='Welcome'>欢迎来到远道智慧社区!</Text>
101
+
102
+                  {/* banner */}
103
+                  <view className='BannerContainer'>
104
+                    <view>
105
+                      <view>
106
+                        <Swiper className='BannerSwiper' autoplay circular indicator-dots indicator-color='rgba(0,0,0,0.4)' indicator-active-color='rgba(255,255,255,0.8)'>
107
+                          {
108
+                            BannerList.map((item, index) => (
109
+                              <SwiperItem className='SwiperItem' key={`Banner-${index}`}>
110
+                                <view className='BannerItem'>
111
+                                  <image mode='aspectFill' src={item.img}></image>
112
+                                </view>
113
+                              </SwiperItem>
114
+                            ))
115
+                          }
116
+                        </Swiper>
117
+                      </view>
118
+                    </view>
119
+                  </view>
120
+
121
+                  {/* 导航 */}
122
+                  <view className='NavContainer flex-h'>
123
+                    {
124
+                      NavList.map((item, index) => (
125
+                        <view key={`Nav-${index}`} className='flex-item'>
126
+                          <view onClick={this.NavClick(item)}>
127
+                            <view className='centerLabel'>
128
+                              <Text className={`iconfont ${item.icon}`}></Text>
129
+                              <Text>{item.name}</Text>
130
+                            </view>
131
+                          </view>
132
+                        </view>
133
+                      ))
134
+                    }
135
+                  </view>
136
+
137
+                  {/* 热门活动 */}
138
+                  <view className='HotActivityContainer'>
139
+                    <view>
140
+                      <view className='Title'>
141
+                        <Text onClick={() => { Taro.navigateTo({ url: '/pages/ShouYe/HuoDong/index' }) }}>热门活动</Text>
142
+                        <Text className='iconfont icongengduo' onClick={() => { Taro.navigateTo({ url: '/pages/ShouYe/HuoDong/index' }) }}></Text>
143
+                      </view>
144
+                      <view className='Activity'>
145
+                        <image className='centerLabel' mode='aspectFill' src={TestImg}></image>
146
+                      </view>
147
+                    </view>
148
+                  </view>
149
+
150
+                  {/* 业主专区 */}
151
+                  <view className='OwnerContainer'>
152
+                    <view>
153
+                      <view className='Title'>
154
+                        <Text>业主专区</Text>
155
+                      </view>
156
+                      <view className='OwnerList flex-h'>
157
+                        {
158
+                          OwnerList.map((item, index) => (
159
+                            <view className='flex-item' key={`Owners-${index}`}>
160
+                              <Text className={`iconfont ${item.icon}`}></Text>
161
+                              <Text>{item.name}</Text>
162
+                            </view>
163
+                          ))
164
+                        }
165
+                      </view>
166
+                    </view>
167
+                  </view>
168
+
169
+                  {/* 热门资讯 */}
170
+                  <view className='NewsContainer'>
171
+                    <view>
172
+                      <view className='Title flex-h'>
173
+                        <Text className='flex-item'>热门资讯</Text>
174
+                        <Text onClick={() => { Taro.navigateTo({ url: '/pages/ShouYe/ZiXun/index' }) }}>查看全部</Text>
175
+                        <Text className='iconfont iconjiantouright'></Text>
176
+                      </view>
177
+                      <view className='List'>
178
+                        {
179
+                          NewsList.map((item, index) => (
180
+                            <view key={`News-${index}`} className='flex-h'>
181
+                              <view className='Img'>
182
+                                <image mode='aspectFill' src={item.img} className='centerLabel'></image>
183
+                              </view>
184
+                              <view className='flex-item'>
185
+                                <Text>{item.title}</Text>
186
+                                <Text>{item.desc}</Text>
187
+                              </view>
188
+                            </view>
189
+                          ))
190
+                        }
191
+                      </view>
192
+                    </view>
193
+                  </view>
194
+
195
+                  <view className='PageBottom'></view>
196
+
197
+                </view>
198
+
199
+              </view>
200
+            </scroll-view>
201
+          </view>
202
+
203
+        </view>
204
+      </view >
205
+    )
206
+  }
207
+}

+ 372
- 0
src/pages/ShouYe/index.less View File

@@ -0,0 +1,372 @@
1
+.ShouYe {
2
+  width: 100%;
3
+  height: 100%;
4
+  overflow: hidden;
5
+  background: #f8f8f8;
6
+  > view {
7
+    position: relative;
8
+    &.flex-item {
9
+      position: relative;
10
+      overflow: hidden;
11
+      > .AdvLayer {
12
+        width: 100%;
13
+        position: absolute;
14
+        left: 0;
15
+        top: 0;
16
+        bottom: 0;
17
+        z-index: 2;
18
+        background: rgba(0, 0, 0, 0.8);
19
+        > view {
20
+          width: 100%;
21
+          height: 100vw;
22
+          overflow: visible;
23
+          > image {
24
+            width: 60%;
25
+            height: 60%;
26
+            position: relative;
27
+            z-index: 1;
28
+            margin: 0 auto;
29
+            display: block;
30
+          }
31
+          >text {
32
+            display: inline-block;
33
+            color: #fff;
34
+            font-size: 60px;
35
+            position: absolute;
36
+            left: 50%;
37
+            bottom: -30px;
38
+            transform: translateX(-50%);
39
+            -webkit-transform: translateX(-50%);
40
+            z-index: 2;
41
+          }
42
+        }
43
+      }
44
+      > .PageContainer {
45
+        width: 100%;
46
+        position: relative;
47
+        z-index: 2;
48
+        height: 100%;
49
+        overflow: hidden;
50
+        z-index: 1;
51
+        .Content {
52
+          position: relative;
53
+          overflow: hidden;
54
+          > view {
55
+            position: relative;
56
+            z-index: 2;
57
+            &.TopBg {
58
+              width: 100%;
59
+              position: absolute;
60
+              z-index: 1;
61
+              left: 0;
62
+              top: 0;
63
+              padding-bottom: 60%;
64
+              border-radius: 0 0 100px 100px;
65
+              background-image: linear-gradient(#f35844, #ff8d61);
66
+              z-index: 1;
67
+            }
68
+            > .Welcome {
69
+              display: block;
70
+              font-size: 30px;
71
+              color: #fff;
72
+              margin-top: 60px;
73
+              text-indent: 30px;
74
+            }
75
+            > .BannerContainer {
76
+              padding: 0 30px;
77
+              position: relative;
78
+              overflow: hidden;
79
+              margin-top: 50px;
80
+              > view {
81
+                width: 100%;
82
+                position: relative;
83
+                overflow: hidden;
84
+                padding-bottom: 50%;
85
+                background: #f8f8f8;
86
+                border-radius: 24px;
87
+                height: 0;
88
+                > view {
89
+                  width: 100%;
90
+                  position: absolute;
91
+                  left: 0;
92
+                  top: 0;
93
+                  bottom: 0;
94
+                  overflow: hidden;
95
+                  > .BannerSwiper {
96
+                    width: 100%;
97
+                    height: 100%;
98
+                    position: relative;
99
+                    overflow: hidden;
100
+                    border-radius: 24px;
101
+                    .BannerItem {
102
+                      width: 100%;
103
+                      height: 100%;
104
+                      position: relative;
105
+                      overflow: hidden;
106
+                      border-radius: 24px;
107
+                      > image {
108
+                        width: 100%;
109
+                        height: 100%;
110
+                      }
111
+                    }
112
+                  }
113
+                }
114
+              }
115
+            }
116
+            > .NavContainer {
117
+              position: relative;
118
+              overflow: hidden;
119
+              align-items: center;
120
+              padding: 0 30px;
121
+              margin-top: 40px;
122
+              > view {
123
+                margin-left: 30px;
124
+                position: relative;
125
+                overflow: hidden;
126
+                &:first-child {
127
+                  margin-left: 0;
128
+                }
129
+                &:nth-child(1) {
130
+                  > view {
131
+                    > view {
132
+                      > text {
133
+                        &:first-child {
134
+                          color: #ffc412;
135
+                        }
136
+                      }
137
+                    }
138
+                  }
139
+                }
140
+                &:nth-child(2) {
141
+                  > view {
142
+                    > view {
143
+                      > text {
144
+                        &:first-child {
145
+                          color: #fb3fc8;
146
+                        }
147
+                      }
148
+                    }
149
+                  }
150
+                }
151
+                &:nth-child(3) {
152
+                  > view {
153
+                    > view {
154
+                      > text {
155
+                        &:first-child {
156
+                          color: #fb7820;
157
+                        }
158
+                      }
159
+                    }
160
+                  }
161
+                }
162
+                &:nth-child(4) {
163
+                  > view {
164
+                    > view {
165
+                      > text {
166
+                        &:first-child {
167
+                          color: #586ff8;
168
+                        }
169
+                      }
170
+                    }
171
+                  }
172
+                }
173
+                > view {
174
+                  width: 100%;
175
+                  padding-bottom: 100%;
176
+                  background: #fff;
177
+                  position: relative;
178
+                  overflow: hidden;
179
+                  border-radius: 12px;
180
+                  > view {
181
+                    width: 100%;
182
+                    > text {
183
+                      display: block;
184
+                      text-align: center;
185
+                      line-height: 40px;
186
+                      color: #333;
187
+                      font-size: 26px;
188
+                      &:first-child {
189
+                        font-size: 50px;
190
+                        line-height: 60px;
191
+                        margin-bottom: 10px;
192
+                      }
193
+                    }
194
+                  }
195
+                }
196
+              }
197
+            }
198
+            > .HotActivityContainer {
199
+              padding: 0 30px;
200
+              position: relative;
201
+              overflow: hidden;
202
+              margin-top: 30px;
203
+              > view {
204
+                width: 100%;
205
+                position: relative;
206
+                overflow: hidden;
207
+                border-radius: 40px;
208
+                background: #fff;
209
+                > .Title {
210
+                  font-size: 0;
211
+                  white-space: nowrap;
212
+                  text-align: center;
213
+                  padding: 30px 0;
214
+                  > text {
215
+                    display: inline-block;
216
+                    vertical-align: middle;
217
+                    font-size: 24px;
218
+                    color: #999;
219
+                    &:first-child {
220
+                      font-size: 34px;
221
+                      color: #333;
222
+                      line-height: 40px;
223
+                      font-weight: bold;
224
+                      margin-right: 20px;
225
+                    }
226
+                  }
227
+                }
228
+                > .Activity {
229
+                  width: 100%;
230
+                  padding-bottom: 33.33%;
231
+                  position: relative;
232
+                  overflow: hidden;
233
+                  > image {
234
+                    width: 100%;
235
+                    height: 100%;
236
+                  }
237
+                }
238
+              }
239
+            }
240
+            > .OwnerContainer {
241
+              padding: 0 30px;
242
+              position: relative;
243
+              overflow: hidden;
244
+              margin-top: 30px;
245
+              > view {
246
+                width: 100%;
247
+                position: relative;
248
+                overflow: hidden;
249
+                border-radius: 40px;
250
+                background: #fff;
251
+                > .Title {
252
+                  font-size: 0;
253
+                  white-space: nowrap;
254
+                  text-align: center;
255
+                  padding: 30px 0;
256
+                  > text {
257
+                    display: inline-block;
258
+                    vertical-align: middle;
259
+                    font-size: 24px;
260
+                    color: #999;
261
+                    &:first-child {
262
+                      font-size: 34px;
263
+                      color: #333;
264
+                      line-height: 40px;
265
+                      font-weight: bold;
266
+                      margin-right: 20px;
267
+                    }
268
+                  }
269
+                }
270
+                > .OwnerList {
271
+                  border-top: 2px solid #f8f8f8;
272
+                  align-items: center;
273
+                  padding: 30px 0;
274
+                  > view {
275
+                    > text {
276
+                      display: block;
277
+                      width: 100%;
278
+                      text-align: center;
279
+                      font-size: 26px;
280
+                      color: #333;
281
+                      line-height: 40px;
282
+                      &:first-child {
283
+                        color: #f35844;
284
+                        font-size: 60px;
285
+                        line-height: 70px;
286
+                        margin-bottom: 10px;
287
+                      }
288
+                    }
289
+                  }
290
+                }
291
+              }
292
+            }
293
+            > .NewsContainer {
294
+              padding: 0 30px;
295
+              position: relative;
296
+              overflow: hidden;
297
+              margin-top: 30px;
298
+              > view {
299
+                position: relative;
300
+                overflow: hidden;
301
+                background: #fff;
302
+                border-radius: 40px;
303
+                > .Title {
304
+                  align-items: center;
305
+                  padding: 0 20px;
306
+                  > text {
307
+                    font-size: 24px;
308
+                    color: #666;
309
+                    line-height: 98px;
310
+                    margin-left: 10px;
311
+                    &:first-child {
312
+                      font-size: 30px;
313
+                      color: #333;
314
+                    }
315
+                  }
316
+                }
317
+                > .List {
318
+                  > view {
319
+                    align-items: center;
320
+                    border-top: 2px solid #f8f8f8;
321
+                    padding: 30px 20px;
322
+                    position: relative;
323
+                    overflow: hidden;
324
+                    &:first-child {
325
+                      border-top: none;
326
+                    }
327
+                    > .Img {
328
+                      width: 160px;
329
+                      height: 128px;
330
+                      position: relative;
331
+                      overflow: hidden;
332
+                      background: #f8f8f8;
333
+                      margin-right: 20px;
334
+                      > image {
335
+                        width: 100%;
336
+                        height: 100%;
337
+                      }
338
+                    }
339
+                    > .flex-item {
340
+                      position: relative;
341
+                      overflow: hidden;
342
+                      > text {
343
+                        display: block;
344
+                        font-size: 26px;
345
+                        color: #666;
346
+                        line-height: 40px;
347
+                        &:first-child {
348
+                          font-size: 30px;
349
+                          color: #333;
350
+                          margin-bottom: 10px;
351
+                        }
352
+                        &:last-child {
353
+                          white-space: nowrap;
354
+                          overflow: hidden;
355
+                          text-overflow: ellipsis;
356
+                        }
357
+                      }
358
+                    }
359
+                  }
360
+                }
361
+              }
362
+            }
363
+            > .PageBottom {
364
+              width: 100%;
365
+              height: 30px;
366
+            }
367
+          }
368
+        }
369
+      }
370
+    }
371
+  }
372
+}

+ 4
- 0
src/pages/WoDe/index.config.js View File

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

+ 113
- 0
src/pages/WoDe/index.css View File

@@ -0,0 +1,113 @@
1
+.WoDe {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  background: #fff;
6
+}
7
+.WoDe .WoDeContent {
8
+  width: 100%;
9
+  position: relative;
10
+  overflow: hidden;
11
+}
12
+.WoDe .WoDeContent > .TopBg {
13
+  width: 400vw;
14
+  height: 400vw;
15
+  position: relative;
16
+  overflow: hidden;
17
+  border-radius: 100%;
18
+  margin-left: -150vw;
19
+  margin-top: -340vw;
20
+}
21
+.WoDe .WoDeContent > .TopBg > .ColorBg {
22
+  width: 100%;
23
+  position: absolute;
24
+  left: 0;
25
+  bottom: 0;
26
+  height: 60vw;
27
+  z-index: 1;
28
+  background-image: linear-gradient(#F35844, #ff8d61);
29
+}
30
+.WoDe .WoDeContent > .TopBg > .UserInfo {
31
+  position: absolute;
32
+  left: 50%;
33
+  transform: translateX(-50%);
34
+  -webkit-transform: translateX(-50%);
35
+  bottom: 60px;
36
+  z-index: 2;
37
+  width: 100vw;
38
+  align-items: center;
39
+}
40
+.WoDe .WoDeContent > .TopBg > .UserInfo > .Icon {
41
+  width: 196px;
42
+  height: 196px;
43
+  border-radius: 100%;
44
+  position: relative;
45
+  overflow: hidden;
46
+  background-color: #fff;
47
+  margin-right: 40px;
48
+  margin-left: 30px;
49
+}
50
+.WoDe .WoDeContent > .TopBg > .UserInfo > .Icon > image {
51
+  width: 100%;
52
+  height: 100%;
53
+}
54
+.WoDe .WoDeContent > .TopBg > .UserInfo > .flex-item {
55
+  position: relative;
56
+  overflow: hidden;
57
+}
58
+.WoDe .WoDeContent > .TopBg > .UserInfo > .flex-item > text {
59
+  display: block;
60
+  white-space: nowrap;
61
+  font-size: 30px;
62
+  color: #333;
63
+  line-height: 40px;
64
+  overflow: hidden;
65
+  text-overflow: ellipsis;
66
+}
67
+.WoDe .WoDeContent > .TopBg > .UserInfo > .flex-item > text:first-child {
68
+  font-size: 34px;
69
+  margin-bottom: 30px;
70
+}
71
+.WoDe .WoDeContent > .TopBg > .UserInfo > text {
72
+  font-size: 30px;
73
+  line-height: 58px;
74
+  border: 2px solid #000;
75
+  border-radius: 8px;
76
+  padding: 0 20px;
77
+  margin-right: 30px;
78
+}
79
+.WoDe .WoDeContent > .UserTab {
80
+  padding: 30px 0;
81
+  margin-top: 20px;
82
+  position: relative;
83
+  overflow: hidden;
84
+}
85
+.WoDe .WoDeContent > .UserTab > .Line {
86
+  width: 100%;
87
+  height: 20px;
88
+  background-color: #f8f8f8;
89
+}
90
+.WoDe .WoDeContent > .UserTab > .flex-h {
91
+  padding: 0 30px;
92
+  align-items: center;
93
+}
94
+.WoDe .WoDeContent > .UserTab > .flex-h > text {
95
+  font-size: 44px;
96
+  color: #F35844;
97
+  margin-right: 20px;
98
+}
99
+.WoDe .WoDeContent > .UserTab > .flex-h > view {
100
+  align-items: center;
101
+  border-bottom: 2px solid #f8f8f8;
102
+}
103
+.WoDe .WoDeContent > .UserTab > .flex-h > view > text {
104
+  font-size: 32px;
105
+  color: #999;
106
+  line-height: 100px;
107
+  margin-left: 20px;
108
+  overflow: hidden;
109
+}
110
+.WoDe .WoDeContent > .UserTab > .flex-h > view > text:first-child {
111
+  margin-left: 0;
112
+  color: #333;
113
+}

+ 101
- 0
src/pages/WoDe/index.jsx View File

@@ -0,0 +1,101 @@
1
+import React, { Component } from 'react'
2
+import NavHeader from '../../components/NavHeader/index'
3
+import '../../assets/css/reset.less'
4
+import '../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class WoDe extends Component {
8
+
9
+  state = {
10
+    IsPull: false,
11
+    UserTab: [
12
+      { icon: 'iconrenzheng1', name: '业主认证', id: 1 },
13
+      { icon: 'iconjifenguize', name: '积分明细', id: 2 },
14
+      { icon: 'iconjiaofei', name: '物业缴费', id: 3 },
15
+      { icon: 'iconfuwu1', name: '物业服务', id: 4 }
16
+    ],
17
+    MoreUserTab: [
18
+      { icon: 'iconerweima', name: '推荐二维码', id: 5 },
19
+      { icon: 'iconfenxiang', name: '推荐分享', id: 6 },
20
+      { icon: 'iconhuodong', name: '参与活动', id: 7 }
21
+    ]
22
+  }
23
+
24
+  componentWillMount () { }
25
+
26
+  componentDidMount () { }
27
+
28
+  componentWillUnmount () { }
29
+
30
+  componentDidShow () { }
31
+
32
+  componentDidHide () { }
33
+
34
+  OnRefresh () { // 页面下拉刷新
35
+    this.setState({
36
+      IsPull: true
37
+    }, () => {
38
+      window.setTimeout(() => {
39
+        this.setState({
40
+          IsPull: false
41
+        })
42
+      }, 1000)
43
+    })
44
+  }
45
+
46
+  render () {
47
+    const { IsPull, UserTab, MoreUserTab } = this.state
48
+    return (
49
+      <view className='WoDe'>
50
+        <NavHeader BgColor='none' Title='我的' IsFixed={true}></NavHeader>
51
+        <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='#F35844'>
52
+          <view className='WoDeContent'>
53
+
54
+            {/* 顶部背景图 */}
55
+            <view className='TopBg'>
56
+              <view className='ColorBg'></view>
57
+              <view className='UserInfo flex-h'>
58
+                <view className='Icon'>
59
+                  <image mode='aspectFill' src={null} class='centerLabel'></image>
60
+                </view>
61
+                <view className='flex-item'>
62
+                  <text>徐慧慧</text>
63
+                  <text>13613949434</text>
64
+                </view>
65
+                <text>签到</text>
66
+              </view>
67
+            </view>
68
+
69
+            {/* 用户选项 */}
70
+            <view className='UserTab'>
71
+              {
72
+                UserTab.map((item, index) => (
73
+                  <view key={`UserTab-${index}`} className='flex-h'>
74
+                    <text className={`iconfont ${item.icon}`}></text>
75
+                    <view className='flex-h flex-item'>
76
+                      <text className='flex-item'>{item.name}</text>
77
+                      <text className='iconfont iconjiantouright'></text>
78
+                    </view>
79
+                  </view>
80
+                ))
81
+              }
82
+              <view className='Line'></view>
83
+              {
84
+                MoreUserTab.map((item, index) => (
85
+                  <view key={`UserTab-${index}`} className='flex-h'>
86
+                    <text className={`iconfont ${item.icon}`}></text>
87
+                    <view className='flex-h flex-item'>
88
+                      <text className='flex-item'>{item.name}</text>
89
+                      <text className='iconfont iconjiantouright'></text>
90
+                    </view>
91
+                  </view>
92
+                ))
93
+              }
94
+            </view>
95
+
96
+          </view>
97
+        </scroll-view>
98
+      </view>
99
+    )
100
+  }
101
+}

+ 130
- 0
src/pages/WoDe/index.less View File

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

+ 3
- 0
src/pages/WuYe/BaoXiuQuYu/index.config.js View File

@@ -0,0 +1,3 @@
1
+export default {
2
+  navigationBarTitleText: '报修区域'
3
+}

+ 50
- 0
src/pages/WuYe/BaoXiuQuYu/index.css View File

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

+ 48
- 0
src/pages/WuYe/BaoXiuQuYu/index.jsx View File

@@ -0,0 +1,48 @@
1
+import React, { Component } from 'react'
2
+import Taro from '@tarojs/taro'
3
+import '../../../assets/css/reset.less'
4
+import '../../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class WuYeBaoXiuQuYu extends Component {
8
+
9
+  state = {
10
+    TypeList: [
11
+      { icon: 'icongonggongquyu', name: '公共区域问题', desc: '如绿植被破坏、楼道灯不亮等问题', id: 1 },
12
+      { icon: 'iconfangwuzhiliang', name: '房屋质量问题', desc: '如家中墙体开裂、墙皮脱落等问题', id: 2 },
13
+      { icon: 'iconhuneisheshi', name: '户内设施问题', desc: '如通浴室下水道、保洁等可能需要收费的项目', id: 3 }
14
+    ]
15
+  }
16
+
17
+  componentWillMount () {
18
+  }
19
+
20
+  componentDidMount () { }
21
+
22
+  componentWillUnmount () { }
23
+
24
+  componentDidShow () { }
25
+
26
+  componentDidHide () { }
27
+
28
+  render () {
29
+    const { TypeList } = this.state
30
+    return (
31
+      <view className='WuYeBaoXiuQuYu'>
32
+        {
33
+          TypeList.map((item, index) => (
34
+            <view key={`WuYeBaoXiuQuYu-${index}`}>
35
+              <view onClick={() => { Taro.navigateTo({ url: `/pages/WuYe/TianJiaBaoXiu/index?type=${item.id}` }) }}>
36
+                <view>
37
+                  <text className={`iconfont ${item.icon}`}></text>
38
+                  <text>{item.name}</text>
39
+                </view>
40
+                <text>{item.desc}</text>
41
+              </view>
42
+            </view>
43
+          ))
44
+        }
45
+      </view>
46
+    )
47
+  }
48
+}

+ 56
- 0
src/pages/WuYe/BaoXiuQuYu/index.less View File

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

+ 3
- 0
src/pages/WuYe/FuWuDetail/index.config.js View File

@@ -0,0 +1,3 @@
1
+export default {
2
+  navigationBarTitleText: '服务详情'
3
+}

+ 6
- 0
src/pages/WuYe/FuWuDetail/index.css View File

@@ -0,0 +1,6 @@
1
+.WuYeFuWuDetail {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  background: #f8f8f8;
6
+}

+ 29
- 0
src/pages/WuYe/FuWuDetail/index.jsx View File

@@ -0,0 +1,29 @@
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 WuYeFuWuDetail extends Component {
7
+
8
+  state = {
9
+  }
10
+
11
+  componentWillMount () {
12
+  }
13
+
14
+  componentDidMount () { }
15
+
16
+  componentWillUnmount () { }
17
+
18
+  componentDidShow () { }
19
+
20
+  componentDidHide () { }
21
+
22
+  render () {
23
+    return (
24
+      <view className='WuYeFuWuDetail'>
25
+
26
+      </view>
27
+    )
28
+  }
29
+}

+ 6
- 0
src/pages/WuYe/FuWuDetail/index.less View File

@@ -0,0 +1,6 @@
1
+.WuYeFuWuDetail {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  background: #f8f8f8;
6
+}

+ 3
- 0
src/pages/WuYe/GongGaoDetail/index.config.js View File

@@ -0,0 +1,3 @@
1
+export default {
2
+  navigationBarTitleText: '公告详情'
3
+}

+ 6
- 0
src/pages/WuYe/GongGaoDetail/index.css View File

@@ -0,0 +1,6 @@
1
+.WuYeGongGaoDetail {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  background: #f8f8f8;
6
+}

+ 33
- 0
src/pages/WuYe/GongGaoDetail/index.jsx View File

@@ -0,0 +1,33 @@
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 WuYeGongGaoDetail extends Component {
7
+
8
+  state = {
9
+  }
10
+
11
+  componentWillMount () {
12
+  }
13
+
14
+  componentDidMount () { }
15
+
16
+  componentWillUnmount () { }
17
+  
18
+  onLoad (opt) {
19
+    console.log(opt.id)
20
+  }
21
+
22
+  componentDidShow () { }
23
+
24
+  componentDidHide () { }
25
+
26
+  render () {
27
+    return (
28
+      <view className='WuYeGongGaoDetail'>
29
+
30
+      </view>
31
+    )
32
+  }
33
+}

+ 6
- 0
src/pages/WuYe/GongGaoDetail/index.less View File

@@ -0,0 +1,6 @@
1
+.WuYeGongGaoDetail {
2
+  width: 100%;
3
+  height: 100%;
4
+  position: relative;
5
+  background: #f8f8f8;
6
+}

+ 3
- 0
src/pages/WuYe/TianJiaBaoXiu/index.config.js View File

@@ -0,0 +1,3 @@
1
+export default {
2
+  navigationBarTitleText: '添加报修'
3
+}

+ 7
- 0
src/pages/WuYe/TianJiaBaoXiu/index.css View File

@@ -0,0 +1,7 @@
1
+.WuYeTianJiaBaoXiu {
2
+  width: 100%;
3
+  position: relative;
4
+  background: #f8f8f8;
5
+  overflow: hidden;
6
+  min-height: 100%;
7
+}

+ 30
- 0
src/pages/WuYe/TianJiaBaoXiu/index.jsx View File

@@ -0,0 +1,30 @@
1
+import React, { Component } from 'react'
2
+// import Taro from '@tarojs/taro'
3
+import '../../../assets/css/reset.less'
4
+import '../../../assets/css/iconfont.less'
5
+import './index.less'
6
+
7
+export default class WuYeTianJiaBaoXiu extends Component {
8
+
9
+  state = {
10
+  }
11
+
12
+  componentWillMount () {
13
+  }
14
+
15
+  componentDidMount () { }
16
+
17
+  componentWillUnmount () { }
18
+
19
+  componentDidShow () { }
20
+
21
+  componentDidHide () { }
22
+
23
+  render () {
24
+    return (
25
+      <view className='WuYeTianJiaBaoXiu'>
26
+
27
+      </view>
28
+    )
29
+  }
30
+}

+ 7
- 0
src/pages/WuYe/TianJiaBaoXiu/index.less View File

@@ -0,0 +1,7 @@
1
+.WuYeTianJiaBaoXiu {
2
+  width: 100%;
3
+  position: relative;
4
+  background: #f8f8f8;
5
+  overflow: hidden;
6
+  min-height: 100%;
7
+}

+ 4
- 0
src/pages/WuYe/index.config.js View File

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

+ 20
- 0
src/pages/WuYe/index.css View File

@@ -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
+}

+ 104
- 0
src/pages/WuYe/index.jsx View File

@@ -0,0 +1,104 @@
1
+import React, { Component } from 'react'
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'
10
+import './index.less'
11
+
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
+  }
24
+
25
+  componentWillMount () {
26
+  }
27
+
28
+  componentDidMount () { }
29
+
30
+  componentWillUnmount () { }
31
+
32
+  componentDidShow () { }
33
+
34
+  componentDidHide () { }
35
+
36
+  NavChange (e) {
37
+    return () => {
38
+      this.setState({
39
+        CurrentNavId: e.id
40
+      })
41
+    }
42
+  }
43
+
44
+  OnRefresh () {
45
+    this.setState({
46
+      IsPull: true
47
+    }, () => {
48
+      window.setTimeout(() => {
49
+        this.setState({
50
+          IsPull: false
51
+        })
52
+      }, 1000)
53
+    })
54
+  }
55
+
56
+  render () {
57
+    const { NavList, CurrentNavId, IsPull } = this.state
58
+    return (
59
+      <view className='WuYe flex-v'>
60
+        <NavHeader Title='物业' BgColor='none' IsFixed={true}></NavHeader>
61
+        <TabPageCutNav List={NavList} CurrentNavId={CurrentNavId} NavChange={this.NavChange.bind(this)}></TabPageCutNav>
62
+        <view className='flex-item'>
63
+          <view>
64
+            <scroll-view scroll-y='true' style='height: 100%;' refresher-enabled={true} onrefresherrefresh={this.OnRefresh.bind(this)} refresher-triggered={IsPull} refresher-background='none'>
65
+
66
+              {/* 公告 */}
67
+              {
68
+                CurrentNavId - 0 === 1 &&
69
+                <view className='Content GongGao'>
70
+                  <WuYeGongGao></WuYeGongGao>
71
+                </view>
72
+              }
73
+
74
+              {/* 服务 */}
75
+              {
76
+                CurrentNavId - 0 === 2 &&
77
+                <view className='Content FuWu'>
78
+                  <WuYeFuWu></WuYeFuWu>
79
+                </view>
80
+              }
81
+
82
+              {/* 报修 */}
83
+              {
84
+                CurrentNavId - 0 === 3 &&
85
+                <view className='Content BaoXiu'>
86
+                  <WuYeBaoXiu></WuYeBaoXiu>
87
+                </view>
88
+              }
89
+
90
+              {/* 缴费 */}
91
+              {
92
+                CurrentNavId - 0 === 4 &&
93
+                <view className='Content JiaoFei'>
94
+                  <WuYeJiaoFei></WuYeJiaoFei>
95
+                </view>
96
+              }
97
+
98
+            </scroll-view>
99
+          </view>
100
+        </view>
101
+      </view>
102
+    )
103
+  }
104
+}

+ 23
- 0
src/pages/WuYe/index.less View File

@@ -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
+}

+ 0
- 3
src/pages/index/index.config.js View File

@@ -1,3 +0,0 @@
1
-export default {
2
-  navigationBarTitleText: '首页'
3
-}

+ 0
- 0
yarn.lock View File


Some files were not shown because too many files changed in this diff