Browse Source

静态页面

1002884655 4 years ago
parent
commit
1d764b00f9
100 changed files with 5082 additions and 112 deletions
  1. 1
    1
      src/app.config.js
  2. BIN
      src/assets/buildingDetail-icon1.png
  3. BIN
      src/assets/buildingDetail-icon2.png
  4. BIN
      src/assets/buildingDetail-icon3.png
  5. BIN
      src/assets/buildingDetail-icon4.jpg
  6. 30
    6
      src/assets/css/iconfont.css
  7. BIN
      src/assets/css/iconfont.eot
  8. 1
    1
      src/assets/css/iconfont.js
  9. 42
    0
      src/assets/css/iconfont.json
  10. 18
    0
      src/assets/css/iconfont.svg
  11. BIN
      src/assets/css/iconfont.ttf
  12. BIN
      src/assets/css/iconfont.woff
  13. BIN
      src/assets/css/iconfont.woff2
  14. BIN
      src/assets/ency-icon1.png
  15. BIN
      src/assets/ency-icon2.png
  16. BIN
      src/assets/ency-icon3.png
  17. BIN
      src/assets/ency-icon4.png
  18. BIN
      src/assets/ency-icon5.png
  19. BIN
      src/assets/ency-icon6.png
  20. BIN
      src/assets/findHouse-icon1.png
  21. BIN
      src/assets/mine-icon19.png
  22. BIN
      src/assets/mine-icon20.png
  23. BIN
      src/assets/mine-icon21.png
  24. BIN
      src/assets/mine-icon22.png
  25. BIN
      src/assets/mine-icon23.png
  26. 2
    1
      src/components/ProjectListItem/index.jsx
  27. 1
    1
      src/components/ProjectListItem/index.scss
  28. 1
    1
      src/pages/chat/index.config.js
  29. 23
    2
      src/pages/chat/index.jsx
  30. 69
    0
      src/pages/chat/index.scss
  31. 155
    0
      src/pages/index/buildingDetail/components/BasicInfo/index.jsx
  32. 275
    0
      src/pages/index/buildingDetail/components/BasicInfo/index.scss
  33. 28
    0
      src/pages/index/buildingDetail/components/DetailBottom/index.jsx
  34. 44
    0
      src/pages/index/buildingDetail/components/DetailBottom/index.scss
  35. 37
    10
      src/pages/index/buildingDetail/index.jsx
  36. 67
    8
      src/pages/index/buildingDetail/index.scss
  37. 48
    9
      src/pages/index/buildingList/index.jsx
  38. 89
    5
      src/pages/index/buildingList/index.scss
  39. 26
    0
      src/pages/index/components/ActivityListItem/index.jsx
  40. 61
    0
      src/pages/index/components/ActivityListItem/index.scss
  41. 19
    0
      src/pages/index/components/NewsListItem/index.jsx
  42. 35
    0
      src/pages/index/components/NewsListItem/index.scss
  43. 3
    0
      src/pages/index/encyDetail/index.config.js
  44. 52
    0
      src/pages/index/encyDetail/index.jsx
  45. 116
    0
      src/pages/index/encyDetail/index.scss
  46. 37
    26
      src/pages/index/encyclopediasOfBuyHouse/index.jsx
  47. 81
    0
      src/pages/index/encyclopediasOfBuyHouse/index.scss
  48. 319
    0
      src/pages/index/helpToFindHouse/components/BuyHouse/index.jsx
  49. 153
    0
      src/pages/index/helpToFindHouse/components/BuyHouse/index.scss
  50. 319
    0
      src/pages/index/helpToFindHouse/components/HousePurchasing/index.jsx
  51. 153
    0
      src/pages/index/helpToFindHouse/components/HousePurchasing/index.scss
  52. 319
    0
      src/pages/index/helpToFindHouse/components/RentingHouse/index.jsx
  53. 153
    0
      src/pages/index/helpToFindHouse/components/RentingHouse/index.scss
  54. 59
    0
      src/pages/index/helpToFindHouse/components/SubmitBuyHouseResult/index.jsx
  55. 198
    0
      src/pages/index/helpToFindHouse/components/SubmitBuyHouseResult/index.scss
  56. 53
    20
      src/pages/index/helpToFindHouse/index.jsx
  57. 62
    0
      src/pages/index/helpToFindHouse/index.scss
  58. 34
    11
      src/pages/index/newsDetail/index.jsx
  59. 110
    6
      src/pages/index/newsDetail/index.scss
  60. 6
    1
      src/pages/index/newsList/index.jsx
  61. 16
    0
      src/pages/index/newsList/index.scss
  62. 22
    0
      src/pages/mine/components/MyActivityListItem/index.jsx
  63. 46
    0
      src/pages/mine/components/MyActivityListItem/index.scss
  64. 45
    0
      src/pages/mine/components/MyCollectForActivity/index.jsx
  65. 32
    0
      src/pages/mine/components/MyCollectForActivity/index.scss
  66. 45
    0
      src/pages/mine/components/MyCollectForBuilding/index.jsx
  67. 31
    0
      src/pages/mine/components/MyCollectForBuilding/index.scss
  68. 45
    0
      src/pages/mine/components/MyCollectForCourse/index.jsx
  69. 31
    0
      src/pages/mine/components/MyCollectForCourse/index.scss
  70. 45
    0
      src/pages/mine/components/MyCollectForNews/index.jsx
  71. 31
    0
      src/pages/mine/components/MyCollectForNews/index.scss
  72. 35
    0
      src/pages/mine/components/MyCourseListItem/index.jsx
  73. 113
    0
      src/pages/mine/components/MyCourseListItem/index.scss
  74. 27
    0
      src/pages/mine/components/MyCustomerListItem/index.jsx
  75. 52
    0
      src/pages/mine/components/MyCustomerListItem/index.scss
  76. 36
    0
      src/pages/mine/components/MyShareListItem/index.jsx
  77. 109
    0
      src/pages/mine/components/MyShareListItem/index.scss
  78. 3
    0
      src/pages/mine/feedBack/index.config.js
  79. 37
    0
      src/pages/mine/feedBack/index.jsx
  80. 56
    0
      src/pages/mine/feedBack/index.scss
  81. 12
    3
      src/pages/mine/index.jsx
  82. 3
    0
      src/pages/mine/myActivity/index.config.js
  83. 54
    0
      src/pages/mine/myActivity/index.jsx
  84. 38
    0
      src/pages/mine/myActivity/index.scss
  85. 3
    0
      src/pages/mine/myCollect/index.config.js
  86. 73
    0
      src/pages/mine/myCollect/index.jsx
  87. 54
    0
      src/pages/mine/myCollect/index.scss
  88. 3
    0
      src/pages/mine/myCustomer/index.config.js
  89. 73
    0
      src/pages/mine/myCustomer/index.jsx
  90. 98
    0
      src/pages/mine/myCustomer/index.scss
  91. 3
    0
      src/pages/mine/myShare/index.config.js
  92. 51
    0
      src/pages/mine/myShare/index.jsx
  93. 30
    0
      src/pages/mine/myShare/index.scss
  94. 3
    0
      src/pages/mine/partnerChannel/index.config.js
  95. 107
    0
      src/pages/mine/partnerChannel/index.jsx
  96. 176
    0
      src/pages/mine/partnerChannel/index.scss
  97. 3
    0
      src/pages/mine/recommendUser/index.config.js
  98. 71
    0
      src/pages/mine/recommendUser/index.jsx
  99. 71
    0
      src/pages/mine/recommendUser/index.scss
  100. 0
    0
      src/pages/mine/reportUser/index.config.js

+ 1
- 1
src/app.config.js View File

29
       },
29
       },
30
       {
30
       {
31
         pagePath: "pages/chat/index",
31
         pagePath: "pages/chat/index",
32
-        text: "聊天",
32
+        text: "消息",
33
         iconPath: './assets/tabbar/chat1.png',
33
         iconPath: './assets/tabbar/chat1.png',
34
         selectedIconPath: './assets/tabbar/chat2.png',
34
         selectedIconPath: './assets/tabbar/chat2.png',
35
       },
35
       },

BIN
src/assets/buildingDetail-icon1.png View File


BIN
src/assets/buildingDetail-icon2.png View File


BIN
src/assets/buildingDetail-icon3.png View File


BIN
src/assets/buildingDetail-icon4.jpg View File


+ 30
- 6
src/assets/css/iconfont.css View File

1
 @font-face {
1
 @font-face {
2
   font-family: "iconfont"; /* Project id 2603904 */
2
   font-family: "iconfont"; /* Project id 2603904 */
3
-  src: url('iconfont.eot?t=1623340225195'); /* IE9 */
4
-  src: url('iconfont.eot?t=1623340225195#iefix') format('embedded-opentype'), /* IE6-IE8 */
5
-       url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAoUAAsAAAAAEkgAAAnFAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGZACFKAqTeJBBATYCJANICyYABCAFhG0HgVcbpg8jEfaCsfIn+6sD3hA17xEMrCI844RqBMTojNk5DMr6Fwn04o9cU9tU9nME9Guv++4uhOzKLAFwPJJvhC242JYVjk/rmNxHkLEx8qQOT6f+y6Ud7tVRhZSeEF6hQ+ElaSdmc/K/7zbXTDPYl2QC0nzgfH/Tb4yhUSe75Le3/PR8CDR9kPQgdAgrLgcATIaOpXbaqG6VQFO7/774uPWtsnhNCfRAUfeLCBsOeDjBAdEAfBrLSWAm1OWq8uv2HAHZBs0QzXtftk7+fn38oGoJuTXgDQz7cdcWmdc8SUZokKlJTzg+LRF+a0QXo6e4bnULnwyHwP7SYvJGq3bO3+7eW++vdyJ1wvp42on6puD4iFQKaYjR27uC8JRS+kTsoF6LZCeNTNxAtcLIpd+Gt5lvq3WZYZ1JN03d88/31+vb+623Gcke3+YiDQ+q1apXSGvvSDwnzRnyZL3/yUuXI1+2XAUKFYkI6STJhed0WxFvaSmk8TakEPM2A8jkLZZFq4GBdoHJA50BJgt0HZgEdBJMOuhNMDmgU0ghn3c9KWTz7lsKubz7zhSA/gBTCPoTXJG9K0eJiCTF/JhWjBDHJBMQcEVzpFCaERokUqU1lggODijOLkiXEWlp6VLbSF9FUkNu88L3Ew6ECbGNi8DNViBwsmUJeMHBrl48wQJyZDUjyKjU8XFVRYd+ni0GL6q6XlRGaKGJQM25J02jzxfBOVvjTYTKTEKQCwFqydueyDLghy0Ui+Mog2w+ROaGiviUeYwt2JZgJm1ZfEschwPNEJRCc02Ecx4LcYBVWKgFVV0oi50aYRghrOJm6A4+f0/QHsUJEjUt3ixRCYcWiici23zLzaSIavdiqNMjLypNEJpwlkk7gYD2QM4CCHQsS5vNeosl35YxmYATB1jUhjYf4nCiQq2BDlJV1PR2ikSIbi+ErGsfhEwvALqZ/RxuZXdfnXCBvnpMV4l1DZ8KbcnLlGUKbdD3Mb26HmhTyjRCG7RU9fbeXoB8f9GebULSuYGNY2lym9nTrKeaLYkWhthq8pjEdNfr67pQuke3dgFp4dTfk6EsWUQpnYD1w8QMsC6LLCAgcBpBXBxdyYgOZ82CrOwPZdPnDukPn2fOHjQdOJNXRlYPoWrGTOKU1jAx4EcwAqKykV/Bxyu2CavymE4Boqvp6BJy9X0+dysX62WEyEExbfXIOV+l3igifkWHUFOlF02mA0i8AzUEXevcKLKuyY1TvzuQovQHMTtdCKJzZ2ODGCdqjeIekqiEjIhTXS8kKZZAWFUlJElEd2UI3uFcUSsgcEjTP0jLCI6afBrZIJXGYPZqt8irIXMyePjIvtOltPgIy3q3RG8crp6R4WX7Yzf7tpnNsuntxgYZzAsqV6VZqFFV0DXzOlHZlmbjKlYNOtJO1oiquwWdZnlV65crUGfUCCpr+cQ/I/qeh073+9Vnf09/c9rU6TPUqX9oAsNeHQrUBD0kZszQ6YDFdY2nBMEMAMPsHqtzIM1TtatOHNwdlsSfTJKoBCiNK5qHtKw0AizT9XTriXr+lP1TYHnuKFGQgqe271uHJHmOrR4oQT9We0kRxTqgtCvhawLln8tz3WQnWneFY4KpmepXDVPSd48bjUCJSlr6DMaVLajEXWNAFF7SNahkfglU53wOkvPUIKFtTRJql2z12WfLX9Z+2pJoXr+4MqtZq30eJVvZuQzj35tlq3bIEy5KKSnSrpM7M2hC93OECx3ybdWqdxOJ+XGKzKESAeUoscYkVwtSAof8DoEFFlg7ScFYzrSEXPmccz0TiyYOm2hWjIJGrvjp01HDJ0wcsVhAgZc44tWgIwwLDcXCRQFpo/wDLgXo904LEIWHYlgoCPvmEO1NyWoGOq2qkRBuEred+3m1TpTGefv3Bs6V0buS5/IfSHTUqWKIqKzMKCL6pApN6EK/9sT9CPWwzMz7fgpx0lgv4aswRbvHLvwv7iwE/+UOvRJ9x8OJ7+RxJ/rK3Vh44ZjRD8vg3fHwIa8qHJjepkojkePhnfJ7u8rsm656XGmyF/7uewOGjFJ2/BlHqcdF45EZGVF41DFAE7ql0fgxcY9IPHockSRWiCNa9fsCSGWoPDhEHqI0hmAccq4MMVrFwcFyf7UxRBl8lwz8Pb3HjihIjUwOC08JTysAqUp9QmHOdK+La8V7D3lRM+KLlHqQWhCRFp6cEqYbz3kR8KEoKe1j0oc0gJnGwZIl5bE5MSQZkxN7QYXQx5D+JRfu54kjo6PJuJwhZdmhSSFKZUhS6AYBBXShf8mGu0+Y4gKKsKR7nQ1O/znCyuXJX1Ytz+sUF3ZZogBbG6Gda5rNm+lebqk2jo8xaOdWEwj1dKs19RPau9bZvJ0WAesZmkpCEGJPN2jrAKbs6vWUeNQNGNB/gC2uBbUXDD4+Bo86YBY6BW+glD/Jme+aFg7jxbsZ/Zs+gqMZXnrAl1xfMTdi7l/E+oM+pRHXjfb0n767E1CPUW9adxf82R+qwezpzv6nKxlyTBBwvq4/75e/J/Ar71ti/u5z/tGqoDGaCjrgtPP073DAOFDTa3eJSsuYLRNiRoGAL9gjxGSz0zKoS3Zef49bvXpcJW8kz1eUlRiPl2i5ICExUWIvMbomAK62JB6Pcyby5YWmeHx7luoBYjc61g2D9Q444zq42x6gF6yUDG8VR15Ra5b8vpc0GecjN4DUd8uQ31bUYSu5I6Oum8MVt36wlGtDKZ2OvEP4dqSTdyCfUXJEAbUXsY4LEFaOPLUYrUWOAamnDFwhShnkGcJkyIjaaB9yAuUKJPyIbR68bLjRXGQ/7CMiYELumH73ZrZVm3qYaEeTedzAocXC1Inf9hWTA3QdxUnS4mqyWmOKrVfYHCFb2USqnSKv29aUkeV/DJoyD0Qy1IFYplbXxLMXpMkxCtJlmgmy9Vh4co4SR8VCkoVuZxkICt0BkXx3UZzk+Qwl8HwF0hz55F99hMCwD878hvtznnsOePaSQAtYtV0VGianFsqZPfATfAk6ceXJ3i+kjEyqrZpvxwcQpDqc5Ml3Ik65xFG9MwGEwGpMPICRqkf7uKlrd3NaGY47Z14kQBMjsaVsrdmRwYjbXpxFvv8T8IpASxkzvrL/AkmGhiutSkNw/SBEmrEvw7OJ1xHOHaWNT1ikvHMOgtLKlDHZ0gAYotKXaB5t1HwlRyVV+5q49YnNN6v8zOKwp6iabgjTsh3X8/ndunOfjraipgEPLf5hOc09kI+odTmY2cKR3wiXFU4CahY005HRcd2GH2UuufCxpfAZ8DIMR6SjFclk58N3hHAJ4OSkrC2jyR9qXJBO48vLeOF0JPS9kHtYnmlnBwAA') format('woff2'),
6
-       url('iconfont.woff?t=1623340225195') format('woff'),
7
-       url('iconfont.ttf?t=1623340225195') format('truetype'),
8
-       url('iconfont.svg?t=1623340225195#iconfont') format('svg');
3
+  src: url('iconfont.eot?t=1624086408943'); /* IE9 */
4
+  src: url('iconfont.eot?t=1624086408943#iefix') format('embedded-opentype'), /* IE6-IE8 */
5
+       url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAwkAAsAAAAAFmQAAAvVAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACGHAqaOJVtATYCJANgCzIABCAFhG0Hgh0bIBNFRoWNA0AafyNk/x+ONxaH7lEqZzK6ggQX9CoVDKrWV2MMCQoEWgyKPHzuP77Ho/ZfYhKaaNiWWSos6j8ZE+81M1c/H0oJz+PSvZ9LrmtNTSUWhapRCLV18Qi7HGo5HMIV5LWMOTzd/Nc1BHPbjbyhS1M1qIHfaF9g32QIcqigztsCgIe32/u7v8ACi7AsDKStLblFiZxQbkkaZA26obA52RyZCjtF/NsaqQl0LjXyJi9SFWQmEuD51ubnA/+3qZZahpVhchtzu7N/2ykCy4cRDyKtBkzu2y+1jIpgQyhUnM/z8yGw++dgwhsAKCELVcl7VyB2lVfhyFW20lTLCOfrZk1hPfoleaycPuw389mFVcxDXcPtT98HAV5jO9TYzwtKledBQAsPF9QLSsV9hTPq6Zlo4bbbtPdN5A2oBn0HVuTXy8M0cKCYQvhCe43T5uBztpPmBHxL7JpDdqvg+goYYIH+nTXKN9/2X0reJ5Z3bPHqCUBVWXaquz6D2/E7cQJ6qYo1Fy7dFs3Y55fnDzixbaHzMR+2q/VB5YmqpvZ/4g2Bj4cR5CIsATEhXppfRJwSFpWQlOJmQzrC+f0AGeTxFByQFMAHB1MADxyIMMBQEEEgDoI+kiBYgywQFlAAIgDUg4gBU0GEgMUgvMDRIDRwLgRs0Q8iAtyOAsSxYRRAYWMsQBibD4I5/AgiAfwEIgn8jAKksJ1IuAlOgvHztUE6u88YLGD95gKh7Y7MtGhCJbrSFmZqb61H1TOm0S09mymFBK9icWg0AtV+4oyx9UIx4AYFiT+u5ODTRZ3EZwvJbDaDLOWI6fUCKbPbAOsYFBXloDSKkzyK4qzuCssEbQs+Kpz5v7IEHvIHw2YNeQBwgwQ0Hqyi2QSzWIWtp1bwVDo03U3udQlFprcKjESmLxVmhpKX5kU8ckIWdyUnmY6h+zDunEmw39mVLCUkSHikITQQdbSrELU0h8f9ftVynWjIICPOE/JEHkl922cqHEljFkra8TTvcF6HZ1RM5J7nLnTB9FrfD4K6CSzXRiXXbLXHrcNbq0UOeo4KLbe/H+d+PJcEbcZhdBmkSMmKv6TbryeB8oPVKbIyDKRiICl5yaO1Ugn4LicCQoWAWMbxYqjbf812jJcersnweAHvr5Jl4CiFKHUpKh8nR6/FvpzU+YOKOPB1S7xF9+GG9avqc/P5vs8Yvd3zBPoTCXIi58K9C45k2D3pm8vJt61/9qdgp69TPwSXkjeU64DkCMGyjOZ56XiephLOa6Eclr2V9W97OWam5TZHA4YxzHkBQPDkw7VEEn1hr+Th3lDSqtd9JXfg4n8kP8VimnwROyiQ5G/A4sskeBRFknLC8KGOp7WLVYLhh9kcEZBd+VrtT3yQzj7Bh9po66DCQudGHc5l9hp/HLUAVQuOKYpcUpdAf7Z73HhX8BaMtb+pkP18S9/94j/epK+/l6wx2GyJiLABgR6Yc57t6VBdlbPupvslfEAb5jT3D+rDadLwHeE1cjM0WoHQ5eDJpWrZnCJVt1+UFqXGSbYEw37l0OBNXp3R2jlTbntmQEv+ZDq8nngvGr2+KMSIG2fIQZuOiZxD930dY86Osgjsn+a2aAimPv2lLnPtQzq/Q5hWbZzN7cv3BoB/WbZ5a/Ktmi16L8S87uV3NtseZy/2auW9Bb1Ztuf1zhBmnNV5X6VOrxXyNt1vFW6qcb8a/Pohe41gSDs0lfjfr06zZ9o0r+WXUM8bvuZpb6xev756o/1fYBjYW/5vqUefNy3kmyOLIiKKIl0nBYY5sivypPJZFB/Pnho0ZlOmcIyzbAwVQ5n97PFqUdRGEFB39yZUxcVVJXifEwiEveXnlrJbXJ0LLoiIKIBdxwWGObILPq54UsekxNzUWFPHPsveRrMJ6QRlx/a5QRypUqHHBWtTM1BrXBVrhGaVanbQSPCQSn5+2HvU+0K+7KBMd2nOxD1DJk1nXNdUH+50WXG5Ez7bNTVmxeT2PbMnaS7JH2wDU551Y7hJ1FF8um/kzbsoic7HkKbiF/wblov3uXUXJQM+jaw/7tCMEPIoEq0PH0xuPoG72Unqql3TV9i3L8Il7XQTxD6cOTBrwI/FPl/g5bnA+r0unbt2a3AMadSa3h/WNuqeubp18/nADcFUCQKhawCKUl40lBLHMOuX1p88tMdkZXV0uwkIsPgnLkxcNMkP0ELBmcUn57I6HehEbC5L5+rymA3UteshqyRrJh4hfJspzYby1gMLxctq1Ob+aC4T5pxcvNuMsjsXylNNljGPTvj9wEJAFq1d45+0iICIGtdAedLsqQSkn5fYUPpDl8tsALFLploJFFvQD/nWYcHK3l6YGRLdFNRjivy5LYjCT2Y97kFuoJVzBtq91b3X5/ICDPN1OANoFeSG+s9trn7ReYVJCNtDR4JR5FalXZsYwLhRbWUwIxtkYbrEluX2Or+qrbotue16KYEMq3r1Kj2ltS11EIFicHn7KWCZCTUaUTNX40xXay5r+rWdGq7ZiKJGYPpNg2WenFl4xuRZiEuICHcdYM5meF7JPLCv5a5g9SQmfxSIo/vq+dKr0Amf0iaFnKr37tGQXFj4RJmnsmZJOe9NkX1v0TQqWrst+Kks6Sb8UMxgMcQP4Zu3ylyVmfGsifiohfgM3VX4/CXSewktxIfNbyDIoS64Jb65gMoJmD+CxHTLsqHRnoY6uDhcdFuKI44DDNMGFx/vvUZ4MVznsqryVGGL2/dr3BZjrt6Qa7D4DSgA0mLwkxa9Pnf3+A0WvaU9+OeUZaVWOsJtJrPd7KwEDkt7bFVpV+mldap9h6WebjHVlnbgqAxzmm12U6tL32q+Vlud36xfnQC1Ggwe3BxVGul2R5ZGXRSkM9K9N7loPU60G4bd0aWJTSVGq8FiMViNGwmEgb3JRivIlPcEeSbr4+XzGKPoxOkTbD8nTyhfrjwxf3Ae2DafSBE4SR+7SoUOEv0FSqQIZ7WiJcLZrv4RqYI5pE9dwohzJd6ZihNxe4mQSKaBTrtXSxDxHBwuFPfdfjaYfXGNXL5GPAdc5zD0Gz01K/FYAqeZGKPaM7b941oXpjGl9qDCvWFan7A+w1wbDslrw+74qWOGKvbEEsTpHxfvqRwaSmwAPbvy1Gemj3Vn6gDvTvsFZcVe7S/m77iKPefVcL0us3HaGM0ZXtc/RFwdmLWactnjLOiZw0H9bDaLvZeD5vR0FnguU6TD66ZMqZvOTGMquEVxMcXe3lgQGxeHUJHzxLEA29sbU1wUx1UwjXbx79cOMYjaRJ/zGLQap4k58CWfw2owCXm8fTj6ntYafJWZEThtOzaWpN22AqsZ/WAZlgrIUOh1bC+oJXYs1M9VBXQXgMAf46GAlHbEJGxa2h29sKqxr8ZhSTRtXaHP6NgBLWfFf8itR1XSajL6roHx2GboVQ+0DjqOiVfWYDl7mXvH5ECpCdB+6GRHHmQ+f14PXHEd31FNTf6GI15ST7n7JQ9H+gJHojX7tLkpVciOTQHflXaL+nTZD+kc+zcTY7eMtCWgjSjgjXaBk2VX1Os92RLU5inblqiZ4lJgFre6t/bvM8NnzmxuC+bVs/tgn5gDgCXpAbrOJCbCbpgS9MgsYc/e2v+FGUlfzBYOLPPax8Qe06cZJ7YcshJIBiPUW6CmYNXEh2LBL3DFy9SsJql/kDIOirZqupN3CJBY3CE/XMdshU00iV56MfCeREw0guZqYI63urZjd6w0TbNDVgLJWW4jUO/yqCnYI/Oh9/O/wBUv08wa3fJ/kDKev6CloqHwvluBao33snh+uA6WpRXJ8okmQS9L8NEYCeL4tUbQXDGsGIk3anlLltaq9rdN/wkL7ltr+E2kBeJTVKHphmnZjuv5/OgYmFjYOLh4+ImjslUyuM9Q9nmgouuSbXSR+CrX/P0jSnphcIae4dweLXGjUB1dG/zH23oguGlwjtWTDGyY9Lxh5yk5L+nZaDl9/cU3mUoutDWOfALqi2HEsHljyOk4BiswFQ+Wd3fB13oHhv1wR4mncjKhG5hav6+6GQAA') format('woff2'),
6
+       url('iconfont.woff?t=1624086408943') format('woff'),
7
+       url('iconfont.ttf?t=1624086408943') format('truetype'),
8
+       url('iconfont.svg?t=1624086408943#iconfont') format('svg');
9
 }
9
 }
10
 
10
 
11
 .iconfont {
11
 .iconfont {
16
   -moz-osx-font-smoothing: grayscale;
16
   -moz-osx-font-smoothing: grayscale;
17
 }
17
 }
18
 
18
 
19
+.icon-gou:before {
20
+  content: "\e60c";
21
+}
22
+
23
+.icon-bangzhu:before {
24
+  content: "\e712";
25
+}
26
+
27
+.icon-shoucang1:before {
28
+  content: "\e614";
29
+}
30
+
31
+.icon-paixu:before {
32
+  content: "\e689";
33
+}
34
+
35
+.icon-sanjiaoxingdown:before {
36
+  content: "\e602";
37
+}
38
+
39
+.icon-sanjiaoxingup:before {
40
+  content: "\e890";
41
+}
42
+
19
 .icon-bianji:before {
43
 .icon-bianji:before {
20
   content: "\e608";
44
   content: "\e608";
21
 }
45
 }

BIN
src/assets/css/iconfont.eot View File


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


+ 42
- 0
src/assets/css/iconfont.json View File

5
   "css_prefix_text": "icon-",
5
   "css_prefix_text": "icon-",
6
   "description": "",
6
   "description": "",
7
   "glyphs": [
7
   "glyphs": [
8
+    {
9
+      "icon_id": "9055670",
10
+      "name": "勾",
11
+      "font_class": "gou",
12
+      "unicode": "e60c",
13
+      "unicode_decimal": 58892
14
+    },
15
+    {
16
+      "icon_id": "13312722",
17
+      "name": "帮 助",
18
+      "font_class": "bangzhu",
19
+      "unicode": "e712",
20
+      "unicode_decimal": 59154
21
+    },
22
+    {
23
+      "icon_id": "9664796",
24
+      "name": "收 藏",
25
+      "font_class": "shoucang1",
26
+      "unicode": "e614",
27
+      "unicode_decimal": 58900
28
+    },
29
+    {
30
+      "icon_id": "1984404",
31
+      "name": "排序",
32
+      "font_class": "paixu",
33
+      "unicode": "e689",
34
+      "unicode_decimal": 59017
35
+    },
36
+    {
37
+      "icon_id": "12198242",
38
+      "name": "三角形",
39
+      "font_class": "sanjiaoxingdown",
40
+      "unicode": "e602",
41
+      "unicode_decimal": 58882
42
+    },
43
+    {
44
+      "icon_id": "22258201",
45
+      "name": "三角形",
46
+      "font_class": "sanjiaoxingup",
47
+      "unicode": "e890",
48
+      "unicode_decimal": 59536
49
+    },
8
     {
50
     {
9
       "icon_id": "11745026",
51
       "icon_id": "11745026",
10
       "name": "编辑",
52
       "name": "编辑",

+ 18
- 0
src/assets/css/iconfont.svg View File

20
   />
20
   />
21
     <missing-glyph />
21
     <missing-glyph />
22
     
22
     
23
+    <glyph glyph-name="gou" unicode="&#58892;" d="M511.9990625 821.8303125C270.6059375 821.8303125 74.1696875 625.4034375 74.1696875 384c0-241.404375 196.4353125-437.8303125 437.829375-437.8303125 241.41374999 0 437.83125001 196.4259375 437.83125 437.8303125 0 241.4034375-196.4175 437.8303125-437.83125 437.8303125m0-807.4275c-203.7675 0-369.598125 165.808125-369.598125 369.5971875 0 203.788125 165.8315625 369.59625001 369.598125 369.59625001 203.8115625 0 369.59625001-165.808125 369.59625-369.59625001 0-203.7890625-165.7846875-369.5971875-369.59625-369.5971875M646.55375001 510.62624999L442.0325 308.65874999000005l-55.726875 63.68062501c-12.3946875 14.17125001-33.9628125 15.646875-48.1546875 3.2325-14.1703125-12.41625001-15.6140625-33.9834375-3.219375-48.15375l79.603125-90.9778125a34.284375 34.284375 0 0 1 24.4771875-11.6184375c0.40124999-0.0215625 0.79874999-0.0215625 1.220625-0.0215625 8.9521875 0 17.56875001 3.4978125 23.968125 9.8278125l230.2875 227.445c13.415625 13.2609375 13.5478125 34.8375 0.309375 48.2540625-13.2365625 13.404375-34.8271875 13.5375-48.24375001 0.29906249"  horiz-adv-x="1024" />
24
+
25
+    
26
+    <glyph glyph-name="bangzhu" unicode="&#59154;" d="M512-37.875A421.875 421.875 0 1 0 512 805.875a421.875 421.875 0 0 0 0-843.75z m0 56.20660401a365.66839599 365.66839599 0 1 1 0 731.33679198 365.66839599 365.66839599 0 0 1 0-731.33679198z m10.90365601 571.86804198c38.42358398 0 69.64233398-10.125 93.591156-31.80294799 24.01473999-20.96438599 36.021698-49.78125 36.021698-85.802948 0-29.33679199-7.788208-53.93490601-22.78125-73.146698-5.38632202-6.61981201-22.26132202-22.197052-50.42971801-46.79598999a101.444458 101.444458 0 0 1-25.18313599-31.153656 80.740448 80.740448 0 0 1-9.67016602-39.65625v-10.190094h-64.25518799v10.190094c0 22.19787598 3.56945801 41.40884399 11.94268799 56.98608398 7.788208 16.74481201 30.634552 41.40802002 67.82382202 74.38018798l10.190094 11.35766602c10.83938599 13.88891602 16.74563599 28.16839599 16.74563598 43.80990601 0 21.02865601-6.03643799 37.19009399-17.46002197 49.13195801-11.94186401 12.00778198-29.33596802 17.97912598-51.01391601 17.97912597-27 0-46.79516602-8.37322998-58.73785401-25.76733398-10.83856201-14.40884399-16.225708-34.85412598-16.225708-61.20483398h-62.95660401c0 43.81072998 12.59033203 77.94964599 37.70837402 103.19787598 25.44268799 25.896698 60.29598999 38.48785401 104.625 38.48785399z m-10.70919801-350.934906c12.59197998 0 23.365448-3.57028198 31.80294801-11.94268799 8.4375-7.788208 12.65625-17.978302 12.65625-30.634552a42.51214599 42.51214599 0 0 0-13.17535401-31.15447998 44.913208 44.913208 0 0 0-31.15447997-11.94186401 43.09634399 43.09634399 0 0 0-43.80908204 43.225708c0 12.59197998 4.21875 22.71697998 12.59033204 30.56945801a42.1875 42.1875 0 0 0 31.08938597 11.87841797z"  horiz-adv-x="1024" />
27
+
28
+    
29
+    <glyph glyph-name="shoucang1" unicode="&#58900;" d="M737-16.5c-9 0-19.5 3-28.5 7.5l-195 97.5-196.5-97.5c-19.5-10.5-45-9-63 4.5-18 13.5-28.5 37.5-24 60l40.5 210L116 409.5C99.5 426 93.5 451.5 99.5 472.5c7.5 22.5 25.5 39 49.5 42l214.5 39 96 195c10.5 21 31.5 34.5 54 34.5s45-13.5 54-34.5l96-195 214.5-37.5c22.5-3 42-19.5 48-42 7.5-22.5 1.5-46.5-15-63L756.5 265.5l39-210c4.5-24-6-46.5-24-60-9-7.5-21-12-34.5-12z"  horiz-adv-x="1024" />
30
+
31
+    
32
+    <glyph glyph-name="paixu" unicode="&#59017;" d="M403.4375 741.9375c-11.25 4.59375-24.1875 1.96875-32.71875-6.65625L101.75 462.5625c-11.625-11.8125-11.53125-30.75 0.28125-42.46875 11.8125-11.625 30.75-11.53125 42.46875 0.28125l217.59375 220.59375v-585.84375c0-16.59375 13.40625-30 30-30s30 13.40625 30 30v659.0625c0 12.1875-7.40625 23.15625-18.65625 27.75zM922.15625 349.3125c-11.8125 11.625-30.75 11.53125-42.46875-0.28125l-217.5-220.6875V714.1875c0 16.59375-13.40625 30-30 30s-30-13.40625-30-30v-658.96875c0-12.1875 7.3125-23.15625 18.65625-27.75 3.65625-1.5 7.5-2.25 11.34375-2.25 7.875 0 15.65625 3.09375 21.375 8.90625l268.96875 272.71875c11.625 11.8125 11.4375 30.75-0.375 42.46875z"  horiz-adv-x="1024" />
33
+
34
+    
35
+    <glyph glyph-name="sanjiaoxingdown" unicode="&#58882;" d="M146.21177467 616.92168889L856.79806105 616.92168889a28.25055836 28.25055836 0 0 0 21.69642846-46.33091529l-355.30726831-426.35742188a28.25055836 28.25055836 0 0 0-43.3928577-1e-8L124.51534619 570.59077359A28.25055836 28.25055836 0 0 0 146.21177467 616.92168889z"  horiz-adv-x="1024" />
36
+
37
+    
38
+    <glyph glyph-name="sanjiaoxingup" unicode="&#59536;" d="M877.78822533 151.07831110999996L167.20193895 151.07831110999996a28.25055836 28.25055836 0 0 0-21.69642846 46.33091529l355.30726831 426.35742188a28.25055836 28.25055836 0 0 0 43.3928577 1e-8L899.48465381 197.40922640999997A28.25055836 28.25055836 0 0 0 877.78822533 151.07831110999996z"  horiz-adv-x="1024" />
39
+
40
+    
23
     <glyph glyph-name="bianji" unicode="&#58888;" d="M797.86880407 541.08664501L669.1300934 669.86880407 717.1844352 718.05349239a45.66465922 45.66465922 0 0 0 64.95591337-0.08689746l63.82624636-63.78279729a45.62121016 45.62121016 0 0 0 0.0434484-64.95591405l-48.0977902-48.14123858z m-64.39107954-64.43452859L362.94659898 106.07754179999995c-8.77665177-8.77665177-25.46098003-19.55194721-36.71421252-23.89682438l-103.36462809-39.712178c-47.01157089-18.074689-70.3870105 5.64834045-52.39921895 52.39921896l39.7556264 103.32117968c4.38832623 11.5139242 15.5112115 28.32859899 23.89682436 36.71421184l370.6180237 370.61802303 128.78215905-128.86905651z"  horiz-adv-x="1024" />
41
     <glyph glyph-name="bianji" unicode="&#58888;" d="M797.86880407 541.08664501L669.1300934 669.86880407 717.1844352 718.05349239a45.66465922 45.66465922 0 0 0 64.95591337-0.08689746l63.82624636-63.78279729a45.62121016 45.62121016 0 0 0 0.0434484-64.95591405l-48.0977902-48.14123858z m-64.39107954-64.43452859L362.94659898 106.07754179999995c-8.77665177-8.77665177-25.46098003-19.55194721-36.71421252-23.89682438l-103.36462809-39.712178c-47.01157089-18.074689-70.3870105 5.64834045-52.39921895 52.39921896l39.7556264 103.32117968c4.38832623 11.5139242 15.5112115 28.32859899 23.89682436 36.71421184l370.6180237 370.61802303 128.78215905-128.86905651z"  horiz-adv-x="1024" />
24
 
42
 
25
     
43
     

BIN
src/assets/css/iconfont.ttf View File


BIN
src/assets/css/iconfont.woff View File


BIN
src/assets/css/iconfont.woff2 View File


BIN
src/assets/ency-icon1.png View File


BIN
src/assets/ency-icon2.png View File


BIN
src/assets/ency-icon3.png View File


BIN
src/assets/ency-icon4.png View File


BIN
src/assets/ency-icon5.png View File


BIN
src/assets/ency-icon6.png View File


BIN
src/assets/findHouse-icon1.png View File


BIN
src/assets/mine-icon19.png View File


BIN
src/assets/mine-icon20.png View File


BIN
src/assets/mine-icon21.png View File


BIN
src/assets/mine-icon22.png View File


BIN
src/assets/mine-icon23.png View File


+ 2
- 1
src/components/ProjectListItem/index.jsx View File

1
 import React, { useState, useEffect } from 'react'
1
 import React, { useState, useEffect } from 'react'
2
 import './index.scss'
2
 import './index.scss'
3
+import Taro from '@tarojs/taro'
3
 
4
 
4
 export default function ProjectListItem (props) {
5
 export default function ProjectListItem (props) {
5
   const { Data = {} } = props
6
   const { Data = {} } = props
6
   return (
7
   return (
7
-    <view className='components ProjectListItem flex-h'>
8
+    <view className='components ProjectListItem flex-h' onClick={() => {Taro.navigateTo({ url: `/pages/index/buildingDetail/index?id=${Data.id}` })}}>
8
       <view className='Img'>
9
       <view className='Img'>
9
         <view>
10
         <view>
10
           {
11
           {

+ 1
- 1
src/components/ProjectListItem/index.scss View File

1
 .components.ProjectListItem {
1
 .components.ProjectListItem {
2
   padding-bottom: 30px;
2
   padding-bottom: 30px;
3
-  border-bottom: 2px solid #eee;
3
+  border-bottom: 2px solid rgba(0, 0, 0, 0.1);
4
   > .Img {
4
   > .Img {
5
     width: 260px;
5
     width: 260px;
6
     position: relative;
6
     position: relative;

+ 1
- 1
src/pages/chat/index.config.js View File

1
 export default {
1
 export default {
2
-  navigationBarTitleText: '聊天'
2
+  navigationBarTitleText: '聊天记录'
3
 }
3
 }

+ 23
- 2
src/pages/chat/index.jsx View File

1
 import React, { useState, useEffect } from 'react'
1
 import React, { useState, useEffect } from 'react'
2
 import withLayout from '@/layout'
2
 import withLayout from '@/layout'
3
 import './index.scss'
3
 import './index.scss'
4
-import { ScrollView } from '@tarojs/components'
4
+import { ScrollView, Image } from '@tarojs/components'
5
 
5
 
6
 export default withLayout((props) => {
6
 export default withLayout((props) => {
7
 
7
 
8
   // const [PageProps] = useState(props)
8
   // const [PageProps] = useState(props)
9
   const [IsPull, setPull] = useState(false)
9
   const [IsPull, setPull] = useState(false)
10
   const [PullTimer, setPullTimer] = useState(null)
10
   const [PullTimer, setPullTimer] = useState(null)
11
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', ''])
11
 
12
 
12
   const PageRefresh = () => { // 页面下拉刷新回调
13
   const PageRefresh = () => { // 页面下拉刷新回调
13
     setPull(true)
14
     setPull(true)
27
 
28
 
28
       <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
29
       <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
29
         <view className='PageContent'>
30
         <view className='PageContent'>
30
-          聊天
31
+          {
32
+            PageList.map((item, index) => (
33
+              <view className='ListItem flex-h' key={`ListItem-${index}`}>
34
+                <view className='Icon'>
35
+                  <view>
36
+                    <Image mode='aspectFill' className='centerLabel' src={item.img || require('../../assets/mine-icon18.png')} />
37
+                  </view>
38
+                  <text className='Num'>99</text>
39
+                </view>
40
+                <view className='flex-item'>
41
+                  <view className='flex-h'>
42
+                    <text className='flex-item'>张三</text>
43
+                    <text>刚刚</text>
44
+                  </view>
45
+                  <view className='Msg'>
46
+                    <text>户型很好,很满意</text>
47
+                  </view>
48
+                </view>
49
+              </view>
50
+            ))
51
+          }
31
         </view>
52
         </view>
32
       </ScrollView>
53
       </ScrollView>
33
 
54
 

+ 69
- 0
src/pages/chat/index.scss View File

7
       position: relative;
7
       position: relative;
8
       overflow: hidden;
8
       overflow: hidden;
9
       min-height: 100vh;
9
       min-height: 100vh;
10
+      > .ListItem {
11
+        padding: 20px 30px;
12
+        position: relative;
13
+        overflow: hidden;
14
+        align-items: center;
15
+        border-top: 2px solid rgba(0, 0, 0, 0.05);
16
+        &:first-child {
17
+          border: none;
18
+        }
19
+        > .Icon {
20
+          width: 80px;
21
+          height: 80px;
22
+          position: relative;
23
+          overflow: visible;
24
+          > view {
25
+            width: 100%;
26
+            height: 100%;
27
+            border-radius: 6px;
28
+            background: #ccc;
29
+            position: relative;
30
+            overflow: hidden;
31
+            z-index: 1;
32
+            > image {
33
+              width: 100%;
34
+              height: 100%;
35
+            }
36
+          }
37
+          >.Num {
38
+            width: 30px;
39
+            line-height: 30px;
40
+            display: inline-block;
41
+            text-align: center;
42
+            color: #fff;
43
+            background: #F02222;
44
+            border-radius: 100%;
45
+            position: absolute;
46
+            z-index: 2;
47
+            right: -10px;
48
+            top: -10px;
49
+            font-size: 18px;
50
+          }
51
+        }
52
+        >.flex-item {
53
+          margin-left: 20px;
54
+          >.flex-h {
55
+            align-items: center;
56
+            >text {
57
+              font-size: 20px;
58
+              color: #888;
59
+              line-height: 40px;
60
+              &:first-child {
61
+                font-size: 28px;
62
+                color: #333;
63
+              }
64
+            }
65
+          }
66
+          >.Msg {
67
+            >text {
68
+              display: block;
69
+              white-space: nowrap;
70
+              overflow: hidden;
71
+              text-overflow: ellipsis;
72
+              font-size: 24px;
73
+              color: #888;
74
+              line-height: 40px;
75
+            }
76
+          }
77
+        }
78
+      }
10
     }
79
     }
11
   }
80
   }
12
 }
81
 }

+ 155
- 0
src/pages/index/buildingDetail/components/BasicInfo/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import '../../../../../assets/css/iconfont.css'
4
+import { ScrollView, Image } from '@tarojs/components'
5
+
6
+export default function BasicInfo (props) {
7
+  const { Data = {} } = props
8
+  return (
9
+    <view className='components BasicInfo'>
10
+
11
+      {/* 标题名称 */}
12
+      <view className='Title flex-h'>
13
+        <view className='flex-item'>
14
+          <text>葛洲坝·南京中国府高档小区</text>
15
+        </view>
16
+        <view className='Collect'>
17
+          <text className='iconfont icon-shoucang'></text>
18
+          <text>收藏</text>
19
+        </view>
20
+      </view>
21
+
22
+      {/* 标签 */}
23
+      <view className='Tags'>
24
+        {
25
+          ['全朝南', '品牌开发商', '轨交房'].map((item, index) => (
26
+            <text key={`TagItem-${index}`}>{item}</text>
27
+          ))
28
+        }
29
+      </view>
30
+
31
+      {/* 项目列表 */}
32
+      <view className='ProjectList'>
33
+        <ScrollView scroll-x={true}>
34
+          {
35
+            ['', '', ''].map((item, index) => (
36
+              <view className='ListItem' key={`List-${index}`}>
37
+                <Image mode='heightFix' src={require('../../../../../assets/buildingDetail-icon4.jpg')} />
38
+                <view>
39
+                  <view>
40
+                    <text>项目类型:</text>
41
+                    <text className='active black'>公寓</text>
42
+                  </view>
43
+                  <view>
44
+                    <text>房屋产权:</text>
45
+                    <text className='active'>40年</text>
46
+                    <text>装修标准:</text>
47
+                    <text className='active'>毛坯</text>
48
+                  </view>
49
+                  <view>
50
+                    <text>项目参考价格:</text>
51
+                    <text className='active'>45-75万/套</text>
52
+                  </view>
53
+                  <text className='SaleStatus active'>在售</text>
54
+                </view>
55
+              </view>
56
+            ))
57
+          }
58
+        </ScrollView>
59
+      </view>
60
+
61
+      {/* 隔断 */}
62
+      <view className='CutLine'></view>
63
+
64
+      {/* 更多信息 */}
65
+      <view className='MoreInfo'>
66
+        <view className='flex-h'>
67
+          <view className='flex-item'>
68
+            <text>楼盘地址:</text>
69
+          </view>
70
+          <view className='flex-item3'>
71
+            <text className='active'>南京市建邺区友谊街与建邺路交汇处235号</text>
72
+          </view>
73
+        </view>
74
+        <view className='flex-h'>
75
+          <view className='flex-item'>
76
+            <text>开盘时间:</text>
77
+          </view>
78
+          <view className='flex-item3'>
79
+            <text className='active'>2019年8月5日</text>
80
+          </view>
81
+        </view>
82
+        <view className='flex-h'>
83
+          <view className='flex-item'>
84
+            <text>容积率:</text>
85
+          </view>
86
+          <view className='flex-item'>
87
+            <text className='active'>1.5</text>
88
+          </view>
89
+          <view className='flex-item'>
90
+            <text>车位比率:</text>
91
+          </view>
92
+          <view className='flex-item'>
93
+            <text className='active'>1 : 200</text>
94
+          </view>
95
+        </view>
96
+        <view className='flex-h'>
97
+          <view className='flex-item'>
98
+            <text>绿化率:</text>
99
+          </view>
100
+          <view className='flex-item'>
101
+            <text className='active'>40%</text>
102
+          </view>
103
+          <view className='flex-item'>
104
+            <text>物业费:</text>
105
+          </view>
106
+          <view className='flex-item'>
107
+            <text className='active'>1.9元/㎡/月</text>
108
+          </view>
109
+        </view>
110
+        <view className='flex-h'>
111
+          <view className='flex-item'>
112
+            <text>规划户数:</text>
113
+          </view>
114
+          <view className='flex-item'>
115
+            <text className='active'>2000</text>
116
+          </view>
117
+          <view className='flex-item'>
118
+            <text>物业:</text>
119
+          </view>
120
+          <view className='flex-item'>
121
+            <text className='active'>万科物业</text>
122
+          </view>
123
+        </view>
124
+      </view>
125
+
126
+      {/* 围观 */}
127
+      <view className='Views flex-h'>
128
+          <text>28人围观</text>
129
+          <view className='flex-item'>
130
+            {
131
+              ['', '', '', '', '', ''].map((item, index) => (
132
+                <view key={`ViewsItem-${index}`}>
133
+                  <Image mode='aspectFill' className='centerLabel' src={null} />
134
+                </view>
135
+              ))
136
+            }
137
+            <text>...</text>
138
+          </view>
139
+      </view>
140
+
141
+      {/* 互动 */}
142
+      <view className='Interact flex-h'>
143
+        <text className='flex-item'>更多楼盘信息</text>
144
+        <text className='flex-item active'>订阅活动通知</text>
145
+      </view>
146
+
147
+      {/* 提示 */}
148
+      <view className='Tips'>
149
+        <text className='iconfont icon-bangzhu'></text>
150
+        <text>查看报备规则?</text>
151
+      </view>
152
+
153
+    </view>
154
+  )
155
+}

+ 275
- 0
src/pages/index/buildingDetail/components/BasicInfo/index.scss View File

1
+.components.BasicInfo {
2
+  position: relative;
3
+  overflow: hidden;
4
+  >.Title {
5
+    padding: 0 30px;
6
+    position: relative;
7
+    overflow: hidden;
8
+    align-items: flex-start;
9
+    margin-top: 40px;
10
+    >.flex-item {
11
+      margin-right: 20px;
12
+      >text {
13
+        display: block;
14
+        font-size: 40px;
15
+        line-height: 56px;
16
+        color: #000;
17
+      }
18
+    }
19
+    >.Collect {
20
+      width: 80px;
21
+      >text {
22
+        display: block;
23
+        text-align: center;
24
+        font-size: 24px;
25
+        line-height: 34px;
26
+        &.iconfont {
27
+          font-size: 40px;
28
+          line-height: 50px;
29
+        }
30
+      }
31
+    }
32
+  }
33
+  >.Tags {
34
+    padding: 0 30px;
35
+    font-size: 0;
36
+    position: relative;
37
+    overflow: hidden;
38
+    >text {
39
+      display: inline-block;
40
+      vertical-align: middle;
41
+      margin-top: 20px;
42
+      margin-right: 6px;
43
+      font-size: 22px;
44
+      color: #666;
45
+      padding: 0 12px;
46
+      line-height: 36px;
47
+      color: #666;
48
+      background: rgba(251, 171, 87, 0.3);
49
+      border-radius: 8px;
50
+    }
51
+  }
52
+  >.ProjectList {
53
+    position: relative;
54
+    overflow: hidden;
55
+    margin-top: 40px;
56
+    height: 200px;
57
+    >scroll-view {
58
+      width: 100%;
59
+      height: 100%;
60
+      font-size: 0;
61
+      white-space: nowrap;
62
+      .ListItem {
63
+        width: 572px;
64
+        height: 100%;
65
+        box-sizing: border-box;
66
+        border: 2px dashed rgba(0, 0, 0, 0.2);
67
+        margin-right: 30px;
68
+        display: inline-block;
69
+        vertical-align: middle;
70
+        position: relative;
71
+        overflow: hidden;
72
+        border-radius: 20px;
73
+        &:first-child {
74
+          margin-left: 30px;
75
+        }
76
+        >image {
77
+          height: 180px;
78
+          z-index: 1;
79
+          display: block;
80
+          position: absolute;
81
+          left: 50%;
82
+          bottom: 0;
83
+          transform: translateX(-50%);
84
+          -webkit-transform: translateX(-50%);
85
+        }
86
+        >view {
87
+          width: 100%;
88
+          height: 100%;
89
+          position: relative;
90
+          z-index: 2;
91
+          overflow: hidden;
92
+          >.SaleStatus {
93
+            display: inline-block;
94
+            position: absolute;
95
+            right: 0;
96
+            top: 0;
97
+            line-height: 50px;
98
+            font-size: 24px;
99
+            color: #999;
100
+            background: #ccc;
101
+            padding: 0 20px;
102
+            border-radius: 25px 0 0 25px;
103
+            z-index: 2;
104
+            &.active {
105
+              background: #1a3b83;
106
+              color: #fff;
107
+            }
108
+          }
109
+          >view {
110
+            font-size: 0;
111
+            white-space: nowrap;
112
+            padding-left: 20px;
113
+            &:first-child {
114
+              margin-top: 16px;
115
+            }
116
+            >text {
117
+              display: inline-block;
118
+              vertical-align: middle;
119
+              font-size: 26px;
120
+              line-height: 54px;
121
+              color: #666;
122
+              &.active {
123
+                color: #1a3b83;
124
+                margin-right: 20px;
125
+              }
126
+              &.black {
127
+                color: #000 !important;
128
+              }
129
+            }
130
+          }
131
+        }
132
+      }
133
+    }
134
+  }
135
+  >.CutLine {
136
+    position: relative;
137
+    overflow: hidden;
138
+    margin-top: 28px;
139
+    height: 8px;
140
+    &::after {
141
+      content: '';
142
+      display: block;
143
+      position: absolute;
144
+      width: 200px;
145
+      height: 100%;
146
+      background: rgba(0, 0, 0, 0.12);
147
+      border-radius: 8px;
148
+      top: 0;
149
+      left: 50%;
150
+      transform: translateX(-50%);
151
+      -webkit-transform: translateX(-50%);
152
+    }
153
+  }
154
+  >.MoreInfo {
155
+    position: relative;
156
+    overflow: hidden;
157
+    margin-top: 40px;
158
+    padding: 0 30px;
159
+    >view {
160
+      align-items: center;
161
+      margin-top: 20px;
162
+      &:first-child {
163
+        margin-top: 0;
164
+      }
165
+      >view {
166
+        min-width: 25%;
167
+        &.flex-item3 {
168
+          flex: 3;
169
+          -webkit-flex: 3;
170
+        }
171
+        >text {
172
+          display: block;
173
+          font-size: 32px;
174
+          line-height: 44px;
175
+          color: #999;
176
+          overflow: hidden;
177
+          white-space: nowrap;
178
+          text-overflow: ellipsis;
179
+          text-align: justify;
180
+          text-align-last: justify;
181
+          &.active {
182
+            color: #000;
183
+            text-align: left;
184
+            text-align-last: left;
185
+          }
186
+        }
187
+      }
188
+    }
189
+  }
190
+  >.Views {
191
+    padding: 0 30px;
192
+    position: relative;
193
+    overflow: hidden;
194
+    margin-top: 20px;
195
+    align-items: center;
196
+    >text {
197
+      font-size: 26px;
198
+      color: #999;
199
+      line-height: 44px;
200
+    }
201
+    >.flex-item {
202
+      position: relative;
203
+      overflow: hidden;
204
+      font-size: 0;
205
+      white-space: nowrap;
206
+      >view {
207
+        display: inline-block;
208
+        vertical-align: middle;
209
+        width: 52px;
210
+        height: 52px;
211
+        border-radius: 100%;
212
+        position: relative;
213
+        overflow: hidden;
214
+        background: #eee;
215
+        margin-left: -16px;
216
+        &:first-child {
217
+          margin-left: 30px;
218
+        }
219
+        >image {
220
+          width: 100%;
221
+          height: 100%;
222
+        }
223
+      }
224
+      >text {
225
+        display: inline-block;
226
+        vertical-align: middle;
227
+        font-size: 24px;
228
+        color: #999;
229
+        margin-left: 20px;
230
+      }
231
+    }
232
+  }
233
+  >.Interact {
234
+    padding: 0 30px;
235
+    position: relative;
236
+    overflow: hidden;
237
+    margin-top: 40px;
238
+    >text {
239
+      margin-left: 30px;
240
+      font-size: 36px;
241
+      line-height: 90px;
242
+      border: 2px solid #979797;
243
+      color: #333;
244
+      text-align: center;
245
+      border-radius: 8px;
246
+      &:first-child {
247
+        margin-left: 0;
248
+      }
249
+      &.active {
250
+        border-color: #1a3b83;
251
+        color: #1a3b83;
252
+      }
253
+    }
254
+  }
255
+  .Tips {
256
+    position: relative;
257
+    overflow: hidden;
258
+    padding: 0 30px;
259
+    font-size: 0;
260
+    white-space: nowrap;
261
+    margin-top: 30px;
262
+    margin-bottom: 40px;
263
+    >text {
264
+      display: inline-block;
265
+      vertical-align: middle;
266
+      color: #1a3b83;
267
+      font-size: 28px;
268
+      line-height: 40px;
269
+      margin-right: 10px;
270
+      &.iconfont {
271
+        font-size: 32px;
272
+      }
273
+    }
274
+  }
275
+}

+ 28
- 0
src/pages/index/buildingDetail/components/DetailBottom/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import { Image } from '@tarojs/components'
4
+
5
+export default function DetailBottom (props) {
6
+  const { Data = {} } = props
7
+  return (
8
+    <view className='components DetailBottom flex-h'>
9
+      <view className='Item'>
10
+        <Image mode="heightFix" src={require('../../../../../assets/buildingDetail-icon3.png')}></Image>
11
+        <text>一键海报</text>
12
+      </view>
13
+      <view className='Item'>
14
+        <Image mode="heightFix" src={require('../../../../../assets/buildingDetail-icon1.png')}></Image>
15
+        <text>一键带看</text>
16
+      </view>
17
+      <view className='Item'>
18
+        <Image mode="heightFix" src={require('../../../../../assets/buildingDetail-icon2.png')}></Image>
19
+        <text>一键推荐</text>
20
+      </view>
21
+      <view className='flex-item'></view>
22
+      <view className='Btn'>
23
+        <text>一键咨询</text>
24
+        <text className='active'>一键电话</text>
25
+      </view>
26
+    </view>
27
+  )
28
+}

+ 44
- 0
src/pages/index/buildingDetail/components/DetailBottom/index.scss View File

1
+.components.DetailBottom {
2
+  position: relative;
3
+  overflow: hidden;
4
+  padding: 15px;
5
+  padding-left: 0;
6
+  align-items: center;
7
+  background: #fff;
8
+  > .Item {
9
+    text-align: center;
10
+    margin-left: 24px;
11
+    > image {
12
+      width: 40px;
13
+      height: 40px;
14
+    }
15
+    > text {
16
+      display: block;
17
+      text-align: center;
18
+      font-size: 22px;
19
+      color: #666;
20
+      line-height: 30px;
21
+    }
22
+  }
23
+  > .Btn {
24
+    font-size: 0;
25
+    white-space: nowrap;
26
+    border: 2px solid #1a3b83;
27
+    border-radius: 46px;
28
+    position: relative;
29
+    overflow: hidden;
30
+    > text {
31
+      display: inline-block;
32
+      vertical-align: middle;
33
+      width: 180px;
34
+      text-align: center;
35
+      line-height: 92px;
36
+      color: #1a3b83;
37
+      font-size: 32px;
38
+      &.active {
39
+        color: #fff;
40
+        background: #1a3b83;
41
+      }
42
+    }
43
+  }
44
+}

+ 37
- 10
src/pages/index/buildingDetail/index.jsx View File

1
 import React, { useState, useEffect } from 'react'
1
 import React, { useState, useEffect } from 'react'
2
 import withLayout from '@/layout'
2
 import withLayout from '@/layout'
3
 import './index.scss'
3
 import './index.scss'
4
-import { ScrollView } from '@tarojs/components'
4
+import { ScrollView, Image } from '@tarojs/components'
5
 import '../../../assets/css/iconfont.css'
5
 import '../../../assets/css/iconfont.css'
6
+import DetailBottom from './components/DetailBottom/index'
7
+import BasicInfo from './components/BasicInfo/index'
6
 
8
 
7
 export default withLayout((props) => {
9
 export default withLayout((props) => {
8
 
10
 
25
   }, [IsPull])
27
   }, [IsPull])
26
 
28
 
27
   return (
29
   return (
28
-    <view className='Page buildingDetail'>
30
+    <view className='Page buildingDetail flex-v'>
29
 
31
 
30
-      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
31
-        <view className='PageContent'>
32
+      <view className='flex-item'>
33
+        <view>
34
+          <ScrollView scroll-y={true} refresher-enabled={false} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#f8f8f8'>
35
+            <view className='PageContent'>
32
 
36
 
33
-          楼盘详情
37
+              {/* banner */}
38
+              <view className='BannerContainer'>
39
+                <view>
40
+                  <view>
34
 
41
 
35
-          {/* bottom */}
36
-          <view className='PageBottom'>
37
-            <text>已经到底了~</text>
38
-          </view>
42
+                  </view>
43
+                </view>
44
+              </view>
39
 
45
 
46
+              {/* content */}
47
+              <view className='DetailContent'>
48
+
49
+                {/* 基本信息 */}
50
+                <view className='BasicInfo'>
51
+                  <BasicInfo></BasicInfo>
52
+                </view>
53
+
54
+              </view>
55
+
56
+              {/* bottom */}
57
+              <view className='ScrollBottom'>
58
+                <text>已经到底了~</text>
59
+              </view>
60
+
61
+            </view>
62
+          </ScrollView>
40
         </view>
63
         </view>
41
-      </ScrollView>
64
+      </view>
65
+
66
+      <view className='PageBottom'>
67
+        <DetailBottom></DetailBottom>
68
+      </view>
42
 
69
 
43
     </view>
70
     </view>
44
   )
71
   )

+ 67
- 8
src/pages/index/buildingDetail/index.scss View File

1
 .Page.buildingDetail {
1
 .Page.buildingDetail {
2
-  background: #fff;
3
-  > scroll-view {
4
-    width: 100%;
5
-    height: 100%;
6
-    .PageContent {
7
-      position: relative;
8
-      overflow: hidden;
9
-      min-height: 100vh;
2
+  background: #f8f8f8;
3
+  > .flex-item {
4
+    position: relative;
5
+    overflow: hidden;
6
+    > view {
7
+      width: 100%;
8
+      position: absolute;
9
+      left: 0;
10
+      top: 0;
11
+      bottom: 0;
12
+      > scroll-view {
13
+        width: 100%;
14
+        height: 100%;
15
+        .PageContent {
16
+          position: relative;
17
+          overflow: hidden;
18
+          min-height: 100vh;
19
+          > .BannerContainer {
20
+            width: 100%;
21
+            position: fixed;
22
+            overflow: hidden;
23
+            z-index: 1;
24
+            left: 0;
25
+            top: 0;
26
+            > view {
27
+              width: 100%;
28
+              padding-bottom: 80%;
29
+              position: relative;
30
+              overflow: hidden;
31
+              background: #eee;
32
+              > view {
33
+                width: 100%;
34
+                position: absolute;
35
+                overflow: hidden;
36
+                left: 0;
37
+                top: 0;
38
+                bottom: 0;
39
+              }
40
+            }
41
+          }
42
+          >.DetailContent {
43
+            position: relative;
44
+            overflow: hidden;
45
+            z-index: 2;
46
+            margin-top: 71.5vw;
47
+            >view {
48
+              position: relative;
49
+              overflow: hidden;
50
+              background: #fff;
51
+              margin-top: 20px;
52
+              min-height: 60px;
53
+              &:first-child {
54
+                margin-top: 0;
55
+              }
56
+              &.BasicInfo {
57
+                border-radius: 40px 40px 0 0;
58
+                min-height: 200px;
59
+              }
60
+            }
61
+          }
62
+        }
63
+      }
10
     }
64
     }
11
   }
65
   }
66
+  > .PageBottom {
67
+    position: relative;
68
+    overflow: hidden;
69
+    box-shadow: 0 0 6px 6px rgba(0, 0, 0, 0.03);
70
+  }
12
 }
71
 }

+ 48
- 9
src/pages/index/buildingList/index.jsx View File

3
 import './index.scss'
3
 import './index.scss'
4
 import { ScrollView } from '@tarojs/components'
4
 import { ScrollView } from '@tarojs/components'
5
 import '../../../assets/css/iconfont.css'
5
 import '../../../assets/css/iconfont.css'
6
+import ProjectListItem from '../../../components/ProjectListItem/index'
6
 
7
 
7
 export default withLayout((props) => {
8
 export default withLayout((props) => {
8
 
9
 
25
   }, [IsPull])
26
   }, [IsPull])
26
 
27
 
27
   return (
28
   return (
28
-    <view className='Page buildingList'>
29
+    <view className='Page buildingList flex-v'>
29
 
30
 
30
-      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
31
-        <view className='PageContent'>
32
-
33
-          楼盘列表
31
+      <view className='Search'>
32
+        <view>
33
+          <text className='iconfont icon-sousuo'></text>
34
+          <text>输入项目名称或直播标题</text>
35
+        </view>
36
+      </view>
34
 
37
 
35
-          {/* bottom */}
36
-          <view className='PageBottom'>
37
-            <text>已经到底了~</text>
38
+      <view className='Filter'>
39
+        <view className='flex-h'>
40
+          <view className='flex-item'>
41
+            <text>区域</text>
42
+            <text className='iconfont icon-sanjiaoxingdown'></text>
43
+          </view>
44
+          <view className='flex-item'>
45
+            <text>价格</text>
46
+            <text className='iconfont icon-sanjiaoxingdown'></text>
47
+          </view>
48
+          <view className='flex-item'>
49
+            <text>户型</text>
50
+            <text className='iconfont icon-sanjiaoxingdown'></text>
38
           </view>
51
           </view>
52
+          <view className='flex-item'>
53
+            <text>更多</text>
54
+            <text className='iconfont icon-sanjiaoxingdown'></text>
55
+          </view>
56
+          <text className='iconfont icon-paixu Sort'></text>
57
+        </view>
58
+      </view>
59
+
60
+      <view className='flex-item'>
61
+        <view>
62
+          <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
63
+            <view className='PageContent'>
64
+              <view className='ProjectList'>
65
+                {
66
+                  PageList.map((item, index) => (
67
+                    <ProjectListItem Data={item} key={`ProjectListItem-${index}`}></ProjectListItem>
68
+                  ))
69
+                }
70
+              </view>
71
+
72
+              {/* bottom */}
73
+              <view className='PageBottom'>
74
+                <text>已经到底了~</text>
75
+              </view>
39
 
76
 
77
+            </view>
78
+          </ScrollView>
40
         </view>
79
         </view>
41
-      </ScrollView>
80
+      </view>
42
 
81
 
43
     </view>
82
     </view>
44
   )
83
   )

+ 89
- 5
src/pages/index/buildingList/index.scss View File

1
 .Page.buildingList {
1
 .Page.buildingList {
2
   background: #fff;
2
   background: #fff;
3
-  > scroll-view {
4
-    width: 100%;
5
-    height: 100%;
6
-    .PageContent {
3
+  > .Search {
4
+    padding: 0 50px;
5
+    position: relative;
6
+    overflow: hidden;
7
+    > view {
8
+      text-align: center;
9
+      background: #f8f8f8;
10
+      font-size: 0;
11
+      white-space: nowrap;
12
+      border-radius: 44px;
13
+      >text {
14
+        display: inline-block;
15
+        vertical-align: middle;
16
+        font-size: 20px;
17
+        color: #999;
18
+        margin-left: 10px;
19
+        line-height: 44px;
20
+        &:first-child {
21
+          margin-left: 0;
22
+        }
23
+      }
24
+    }
25
+  }
26
+  >.Filter {
27
+    padding: 0 30px;
28
+    position: relative;
29
+    margin-top: 20px;
30
+    >view {
7
       position: relative;
31
       position: relative;
8
       overflow: hidden;
32
       overflow: hidden;
9
-      min-height: 100vh;
33
+      border-bottom: 2px solid rgba(25, 60, 131, 0.1);
34
+      align-items: center;
35
+      >view {
36
+        font-size: 0;
37
+        white-space: nowrap;
38
+        text-align: left;
39
+        padding: 15px 0;
40
+        >text {
41
+          font-size: 30px;
42
+          line-height: 40px;
43
+          color: #333;
44
+          &.iconfont {
45
+            font-size: 20px;
46
+            color: #ccc;
47
+            margin-left: 10px;
48
+          }
49
+        }
50
+      }
51
+      >.Sort {
52
+        font-size: 32px;
53
+      }
54
+    }
55
+  }
56
+  > .flex-item {
57
+    position: relative;
58
+    overflow: hidden;
59
+    > view {
60
+      width: 100%;
61
+      position: absolute;
62
+      left: 0;
63
+      top: 0;
64
+      bottom: 0;
65
+      > scroll-view {
66
+        width: 100%;
67
+        height: 100%;
68
+        .PageContent {
69
+          position: relative;
70
+          overflow: hidden;
71
+          min-height: 100vh;
72
+          >.ProjectList {
73
+            padding: 0 30px;
74
+            position: relative;
75
+            overflow: hidden;
76
+            >view {
77
+              margin-top: 30px;
78
+            }
79
+          }
80
+          > .PageBottom {
81
+            text-align: center;
82
+            font-size: 0;
83
+            white-space: nowrap;
84
+            > text {
85
+              display: inline-block;
86
+              font-size: 28px;
87
+              color: #666;
88
+              line-height: 40px;
89
+              margin: 20px auto;
90
+            }
91
+          }
92
+        }
93
+      }
10
     }
94
     }
11
   }
95
   }
12
 }
96
 }

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

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import { Image } from '@tarojs/components'
4
+import Taro from '@tarojs/taro'
5
+
6
+export default function ActivityListItem (props) {
7
+  const { Data = {} } = props
8
+  return (
9
+    <view className='components ActivityListItem' onClick={() => { Taro.navigateTo({ url: `/pages/index/newsDetail/index?id=${Data.id}` }) }}>
10
+      <view className='Img'>
11
+        <Image mode='aspectFill' src={null} className='centerLabel'></Image>
12
+      </view>
13
+      <view className='Info'>
14
+        <view className='Name flex-h'>
15
+          <view className='flex-item'>
16
+            <text>5D沉浸式剧场</text>
17
+          </view>
18
+          <text className='yellow'>立即参与</text>
19
+        </view>
20
+        <view className='Time'>
21
+          <text>活动时间:2019/10/20 10:00 - 2019/10/22 10:00</text>
22
+        </view>
23
+      </view>
24
+    </view>
25
+  )
26
+}

+ 61
- 0
src/pages/index/components/ActivityListItem/index.scss View File

1
+.components.ActivityListItem {
2
+  width: 100%;
3
+  position: relative;
4
+  overflow: hidden;
5
+  border-radius: 12px;
6
+  background: #fff;
7
+  >.Img {
8
+    width: 100%;
9
+    padding-bottom: 56.25%;
10
+    position: relative;
11
+    overflow: hidden;
12
+    background: #eee;
13
+    >image {
14
+      width: 100%;
15
+      height: 100%;
16
+    }
17
+  }
18
+  >.Info {
19
+    padding: 20px;
20
+    position: relative;
21
+    overflow: hidden;
22
+    >.Name {
23
+      align-items: flex-start;
24
+      >.flex-item {
25
+        margin-right: 10px;
26
+        >text {
27
+          display: block;
28
+          font-size: 34px;
29
+          font-weight: bold;
30
+          color: #333;
31
+          line-height: 60px;
32
+          overflow: hidden;
33
+          text-overflow: ellipsis;
34
+          white-space: nowrap;
35
+        }
36
+      }
37
+      >text {
38
+        font-size: 30px;
39
+        color: #fff;
40
+        line-height: 60px;
41
+        text-align: center;
42
+        border-radius: 60px;
43
+        background: #B9B2B2;
44
+        width: 144px;
45
+        &.yellow {
46
+          background: #FA9730;
47
+        }
48
+        &.blue {
49
+          background: #193C83;
50
+        }
51
+      }
52
+    }
53
+    >.Time {
54
+      >text {
55
+        font-size: 24px;
56
+        color: #999;
57
+        line-height: 40px;
58
+      }
59
+    }
60
+  }
61
+}

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

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import { Image } from '@tarojs/components'
4
+import Taro from '@tarojs/taro'
5
+
6
+export default function NewsListItem (props) {
7
+  const { Data = {} } = props
8
+  return (
9
+    <view className='components NewsListItem flex-h' onClick={() => { Taro.navigateTo({ url: `/pages/index/newsDetail/index?id=${Data.id}` }) }}>
10
+      <view className='Img'>
11
+        <Image mode='aspectFill' src={null} className='centerLabel'></Image>
12
+      </view>
13
+      <view className='flex-item'>
14
+        <text>破晓·内容生态下半场的版权之道2019企业版权</text>
15
+        <text>于2019-12-12 14:20:30发布</text>
16
+      </view>
17
+    </view>
18
+  )
19
+}

+ 35
- 0
src/pages/index/components/NewsListItem/index.scss View File

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

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

1
+export default {
2
+  navigationBarTitleText: '百科详情'
3
+}

+ 52
- 0
src/pages/index/encyDetail/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import { ScrollView } from '@tarojs/components'
5
+import '../../../assets/css/iconfont.css'
6
+import { Image, RichText } from '@tarojs/components'
7
+
8
+export default withLayout((props) => {
9
+
10
+  // const [PageProps] = useState(props)
11
+
12
+  return (
13
+    <view className='Page encyDetail flex-v'>
14
+      <view className='flex-item'>
15
+        <view>
16
+          <ScrollView scroll-y={true} refresher-enabled={false} refresher-background='#fff'>
17
+            <view className='PageContent'>
18
+
19
+              <view className='Info'>
20
+                <view>
21
+                  <text className='Title'>公积金又有新变化,附最新南京公积金贷款和提取方法。</text>
22
+                  <view>
23
+                    <text>阅读:28</text>
24
+                    <text>点赞15</text>
25
+                    <text>收藏22</text>
26
+                  </view>
27
+                  <text className='Time'>时间:2019-10-20 10:00 </text>
28
+                  <text className='Share'>分享好友</text>
29
+                </view>
30
+              </view>
31
+
32
+              <view className='Content'>
33
+                <RichText nodes={'<p>这是内容</p>'}></RichText>
34
+              </view>
35
+
36
+            </view>
37
+          </ScrollView>
38
+        </view>
39
+      </view>
40
+      <view className='Bottom'>
41
+        <view>
42
+          <Image mode='heightFix' src={require('../../../assets/buildingDetail-icon3.png')}></Image>
43
+          <text>生成海报</text>
44
+        </view>
45
+        <view>
46
+          <text className='iconfont icon-shoucang'></text>
47
+          <text>收藏</text>
48
+        </view>
49
+      </view>
50
+    </view>
51
+  )
52
+})

+ 116
- 0
src/pages/index/encyDetail/index.scss View File

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

+ 37
- 26
src/pages/index/encyclopediasOfBuyHouse/index.jsx View File

1
 import React, { useState, useEffect } from 'react'
1
 import React, { useState, useEffect } from 'react'
2
 import withLayout from '@/layout'
2
 import withLayout from '@/layout'
3
 import './index.scss'
3
 import './index.scss'
4
-import { ScrollView } from '@tarojs/components'
4
+import { ScrollView, Image } from '@tarojs/components'
5
 import '../../../assets/css/iconfont.css'
5
 import '../../../assets/css/iconfont.css'
6
+import Taro from '@tarojs/taro'
6
 
7
 
7
 export default withLayout((props) => {
8
 export default withLayout((props) => {
8
 
9
 
9
   // const [PageProps] = useState(props)
10
   // const [PageProps] = useState(props)
10
-  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
11
-  const [IsPull, setPull] = useState(false)
12
-  const [PullTimer, setPullTimer] = useState(null)
13
-
14
-  const PageRefresh = () => { // 页面下拉刷新回调
15
-    setPull(true)
16
-  }
17
-
18
-  useEffect(() => { // 下拉刷新触发
19
-    if (IsPull) {
20
-      clearTimeout(PullTimer)
21
-      setPullTimer(setTimeout(() => {
22
-        setPull(false)
23
-      }, 2000))
24
-    }
25
-  }, [IsPull])
11
+  const [PageList] = useState([
12
+    {name: '准备买房', icon: require('../../../assets/ency-icon3.png'), list: [{name: '买房资质查询', id: 1, tips: 'HOT', tipsColor: '#FF0000', icon: ''}, {name: '22个房产名词', id: 2, tips: 'NEW', tipsColor: '#30CFCF', icon: ''}]},
13
+    {name: '看房选房', icon: require('../../../assets/ency-icon4.png'), list: [{name: '热门楼盘地图', id: 3, tips: '', icon: ''}, {name: '选户型攻略', id: 4, tips: '实用', tipsColor: '#62D547', icon: ''}, {name: '期房新房怎么选', id: 5, tips: '', icon: ''}]},
14
+    {name: '认筹签约', icon: require('../../../assets/ency-icon5.png'), list: [{name: '买房签约流程', id: 6, tips: '哇!', tipsColor: '#FF396C', icon: require('../../../assets/ency-icon2.png')}, {name: '契税征收标准', id: 7, tips: '', icon: ''}, {name: '公司名义买房', id: 8, tips: '', icon: ''}]},
15
+    {name: '贷款买房', icon: require('../../../assets/ency-icon6.png'), list: [{name: '新房贷政策', id: 9, tips: '', icon: ''}, {name: '贷款查征信', id: 10, tips: '', icon: require('../../../assets/ency-icon1.png')}]}
16
+  ])
26
 
17
 
27
   return (
18
   return (
28
     <view className='Page encyclopediasOfBuyHouse'>
19
     <view className='Page encyclopediasOfBuyHouse'>
29
 
20
 
30
-      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
21
+      <ScrollView scroll-y={true} refresher-enabled={false} refresher-background='#fff'>
31
         <view className='PageContent'>
22
         <view className='PageContent'>
32
-
33
-          购房百科
34
-
35
-          {/* bottom */}
36
-          <view className='PageBottom'>
37
-            <text>已经到底了~</text>
38
-          </view>
39
-
23
+          {
24
+            PageList.map((item, index) => (
25
+              <view key={`ListItem-${index}`}>
26
+                <view className='Title'>
27
+                  <text>{index + 1 > 9 ? index + 1 : `0${index + 1}`}</text>
28
+                  <text>/{item.name}</text>
29
+                  <Image mode='heightFix' src={item.icon}></Image>
30
+                </view>
31
+                <view className='List'>
32
+                  {
33
+                    item.list.map((subItem, subIndex) => (
34
+                      <view key={`subItem-${subIndex}`} onClick={() => { Taro.navigateTo({ url: `/pages/index/encyDetail/index?id=${subItem.id}` }) }}>
35
+                        <text className='Name'>{subItem.name}</text>
36
+                        {
37
+                          subItem.tips !== '' &&
38
+                          <text className='Tips' style={{background: subItem.tipsColor}}>{subItem.tips}</text>
39
+                        }
40
+                        {
41
+                          subItem.icon !== '' &&
42
+                          <Image mode='heightFix' src={subItem.icon}></Image>
43
+                        }
44
+                      </view>
45
+                    ))
46
+                  }
47
+                </view>
48
+              </view>
49
+            ))
50
+          }
40
         </view>
51
         </view>
41
       </ScrollView>
52
       </ScrollView>
42
 
53
 

+ 81
- 0
src/pages/index/encyclopediasOfBuyHouse/index.scss View File

7
       position: relative;
7
       position: relative;
8
       overflow: hidden;
8
       overflow: hidden;
9
       min-height: 100vh;
9
       min-height: 100vh;
10
+      >view {
11
+        position: relative;
12
+        overflow: visible;
13
+        margin-top: 40px;
14
+        padding: 0 30px;
15
+        >.Title {
16
+          font-size: 0;
17
+          white-space: nowrap;
18
+          position: relative;
19
+          overflow: visible;
20
+          >text {
21
+            display: inline-block;
22
+            vertical-align: bottom;
23
+            font-size: 34px;
24
+            font-weight: bold;
25
+            line-height: 40px;
26
+            position: relative;
27
+            z-index: 2;
28
+            &:first-child {
29
+              font-size: 48px;
30
+              line-height: 50px;
31
+            }
32
+          }
33
+          >image {
34
+            display: block;
35
+            width: 28px;
36
+            height: 28px;
37
+            position: absolute;
38
+            left: -10px;
39
+            z-index: 1;
40
+            bottom: -10px;
41
+          }
42
+        }
43
+        >.List {
44
+          font-size: 0;
45
+          >view {
46
+            display: inline-block;
47
+            vertical-align: middle;
48
+            margin-top: 30px;
49
+            margin-right: 30px;
50
+            background: rgba(25, 60, 131, 0.08);
51
+            min-width: 268px;
52
+            text-align: center;
53
+            border-radius: 6px;
54
+            position: relative;
55
+            overflow: hidden;
56
+            >.Name {
57
+              display: inline-block;
58
+              vertical-align: middle;
59
+              max-width: 100%;
60
+              font-size: 30px;
61
+              line-height: 80px;
62
+              font-weight: bold;
63
+              color: #333;
64
+              position: relative;
65
+              z-index: 1;
66
+            }
67
+            >.Tips {
68
+              display: inline-block;
69
+              position: absolute;
70
+              z-index: 2;
71
+              left: 0;
72
+              top: 0;
73
+              width: 60px;
74
+              font-size: 16px;
75
+              text-align: center;
76
+              white-space: nowrap;
77
+              color: #fff;
78
+              background: #ccc;
79
+              line-height: 24px;
80
+              border-radius: 0 0 6px 0;
81
+            }
82
+            >image {
83
+              display: inline-block;
84
+              vertical-align: middle;
85
+              height: 24px;
86
+              margin-left: 10px;
87
+            }
88
+          }
89
+        }
90
+      }
10
     }
91
     }
11
   }
92
   }
12
 }
93
 }

+ 319
- 0
src/pages/index/helpToFindHouse/components/BuyHouse/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import '../../../../../assets/css/iconfont.css'
4
+import { Image, Input, Slider, Textarea } from '@tarojs/components'
5
+import SubmitBuyHouseResult from '../SubmitBuyHouseResult/index'
6
+
7
+export default function BuyHouse (props) {
8
+  const { change = () => { } } = props
9
+
10
+  const [SingleList] = useState([
11
+    { name: '首套', id: 1 },
12
+    { name: '二套', id: 2 }
13
+  ])
14
+  const [CurrnetSingleId, setCurrnetSingleId] = useState(null)
15
+
16
+  const [NewOldList] = useState([
17
+    { name: '新房', id: 1 },
18
+    { name: '二手房', id: 2 }
19
+  ])
20
+  const [CurrnetNewOldId, setCurrnetNewOldId] = useState(null)
21
+
22
+  const [HouseTypeList] = useState([
23
+    { name: '一室一厅', id: 1 },
24
+    { name: '二室一厅', id: 2 },
25
+    { name: '二室二厅', id: 3 },
26
+    { name: '三室一厅', id: 4 },
27
+    { name: '三室二厅', id: 5 },
28
+    { name: '四室一厅', id: 6 },
29
+    { name: '四室二厅', id: 7 },
30
+    { name: '五室及以上', id: 8 }
31
+  ])
32
+  const [CurrnetHouseTypeId, setCurrnetHouseTypeId] = useState(null)
33
+
34
+  const [AreaList] = useState([
35
+    { name: '60㎡以下', id: 1 },
36
+    { name: '60-90㎡', id: 2 },
37
+    { name: '90-110㎡', id: 3 },
38
+    { name: '110-130㎡', id: 4 },
39
+    { name: '130-150㎡', id: 5 },
40
+    { name: '150-200㎡', id: 6 },
41
+    { name: '200㎡以上', id: 7 }
42
+  ])
43
+  const [CurrnetAreaId, setCurrnetAreaId] = useState(null)
44
+
45
+  const [PreferenceList] = useState([
46
+    { name: '南北通透', id: 1 },
47
+    { name: '朝南', id: 2 },
48
+    { name: '低楼层', id: 3 },
49
+    { name: '高楼层', id: 4 },
50
+    { name: '精装修', id: 5 },
51
+    { name: '电梯房', id: 6 },
52
+    { name: '近地铁', id: 7 },
53
+    { name: '满五年', id: 8 },
54
+    { name: '满两年', id: 9 },
55
+    { name: '楼龄5年内', id: 10 },
56
+    { name: '楼龄10年内', id: 11 }
57
+  ])
58
+  const [CurrnetPreferenceId, setCurrnetPreferenceId] = useState(null)
59
+
60
+  const [GoalList] = useState([
61
+    { name: '刚需', id: 1 },
62
+    { name: '结婚', id: 2 },
63
+    { name: '养老', id: 3 },
64
+    { name: '改善', id: 4 },
65
+    { name: '教育', id: 5 },
66
+    { name: '投资', id: 6 }
67
+  ])
68
+  const [CurrnetGoalId, setCurrnetGoalId] = useState(null)
69
+
70
+  const [LongTimeList] = useState([
71
+    { name: '1月内', id: 1 },
72
+    { name: '6个月', id: 2 },
73
+    { name: '1年内', id: 3 },
74
+    { name: '1年后', id: 4 }
75
+  ])
76
+  const [CurrnetLongTimeId, setCurrnetLongTimeId] = useState(null)
77
+
78
+  const [StepId, setStepId] = useState(1)
79
+
80
+  const [ShowPopup, setShowPopup] = useState(false)
81
+
82
+  useEffect(() => {
83
+    change(StepId)
84
+  }, [StepId])
85
+
86
+  const CutSingleId = (id) => {
87
+    return () => {
88
+      setCurrnetSingleId(id === CurrnetSingleId ? null : id)
89
+    }
90
+  }
91
+
92
+  const CutNewOldId = (id) => {
93
+    return () => {
94
+      setCurrnetNewOldId(id === CurrnetNewOldId ? null : id)
95
+    }
96
+  }
97
+
98
+  const CutHouseTypeId = (id) => {
99
+    return () => {
100
+      setCurrnetHouseTypeId(id === CurrnetHouseTypeId ? null : id)
101
+    }
102
+  }
103
+
104
+  const CutAreaId = (id) => {
105
+    return () => {
106
+      setCurrnetAreaId(id === CurrnetAreaId ? null : id)
107
+    }
108
+  }
109
+
110
+  const CutPreferenceId = (id) => {
111
+    return () => {
112
+      setCurrnetPreferenceId(id === CurrnetPreferenceId ? null : id)
113
+    }
114
+  }
115
+
116
+  const CutGoalId = (id) => {
117
+    return () => {
118
+      setCurrnetGoalId(id === CurrnetGoalId ? null : id)
119
+    }
120
+  }
121
+
122
+  const CutLongTimeId = (id) => {
123
+    return () => {
124
+      setCurrnetLongTimeId(id === CurrnetLongTimeId ? null : id)
125
+    }
126
+  }
127
+
128
+  const PriceRangehange = (e) => {
129
+    console.log(e)
130
+  }
131
+
132
+  const NextStep = () => {
133
+    if (StepId < 4) {
134
+      setStepId(StepId + 1)
135
+    }
136
+  }
137
+
138
+  const PrevStep = () => {
139
+    if (StepId > 1) {
140
+      setStepId(StepId - 1)
141
+    }
142
+  }
143
+
144
+  return (
145
+    <view className='components BuyHouse'>
146
+      {
147
+        ShowPopup && 
148
+        <SubmitBuyHouseResult></SubmitBuyHouseResult>
149
+      }
150
+      {
151
+        StepId === 1 &&
152
+        <view className='Step'>
153
+          <view>
154
+            <text>意向区域</text>
155
+            <view className='Area'>
156
+              <view className='flex-h'>
157
+                <text className='iconfont icon-dingwei'></text>
158
+                <text>不限</text>
159
+                <view className='flex-item'></view>
160
+                <text className='iconfont icon-jiantoudown'></text>
161
+              </view>
162
+            </view>
163
+          </view>
164
+
165
+          <view>
166
+            <text>意向楼盘</text>
167
+            <view className='Purpose'>
168
+              <view>
169
+                <Input placeholder="请输入意向楼盘" />
170
+              </view>
171
+            </view>
172
+          </view>
173
+
174
+          <view>
175
+            <text>您想购买的是首套房还是二套房?</text>
176
+            <view className='CheckList'>
177
+              {
178
+                SingleList.map((item, index) => (
179
+                  <view key={`SingleItem-${index}`} className={CurrnetSingleId === item.id ? 'active' : ''} onClick={CutSingleId(item.id)}>
180
+                    {item.name}
181
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
182
+                  </view>
183
+                ))
184
+              }
185
+            </view>
186
+          </view>
187
+
188
+          <view>
189
+            <text>总价预算范围</text>
190
+            <view className='PriceRange'>
191
+              <view className='flex-h'>
192
+                <view className='flex-item'>
193
+                  <Input placeholder="最小面积㎡" />
194
+                </view>
195
+                <text>-</text>
196
+                <view className='flex-item'>
197
+                  <Input placeholder="最大面积㎡" />
198
+                </view>
199
+              </view>
200
+            </view>
201
+          </view>
202
+        </view>
203
+      }
204
+
205
+      {
206
+        StepId === 2 &&
207
+        <view className='Step'>
208
+          <view>
209
+            <text>您想购买的是二手房还是新房?</text>
210
+            <view className='CheckList'>
211
+              {
212
+                NewOldList.map((item, index) => (
213
+                  <view key={`NewOldItem-${index}`} className={CurrnetNewOldId === item.id ? 'active' : ''} onClick={CutNewOldId(item.id)}>
214
+                    {item.name}
215
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
216
+                  </view>
217
+                ))
218
+              }
219
+            </view>
220
+          </view>
221
+          <view>
222
+            <text>居室要求</text>
223
+            <view className='CheckList'>
224
+              {
225
+                HouseTypeList.map((item, index) => (
226
+                  <view key={`HouseTypeItem-${index}`} className={CurrnetHouseTypeId === item.id ? 'active' : ''} onClick={CutHouseTypeId(item.id)}>
227
+                    {item.name}
228
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
229
+                  </view>
230
+                ))
231
+              }
232
+            </view>
233
+          </view>
234
+          <view>
235
+            <text>面积要求</text>
236
+            <view className='CheckList'>
237
+              {
238
+                AreaList.map((item, index) => (
239
+                  <view key={`AreaItem-${index}`} className={CurrnetAreaId === item.id ? 'active' : ''} onClick={CutAreaId(item.id)}>
240
+                    {item.name}
241
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
242
+                  </view>
243
+                ))
244
+              }
245
+            </view>
246
+          </view>
247
+        </view>
248
+      }
249
+
250
+      {
251
+        StepId === 3 &&
252
+        <view className='Step'>
253
+          <view>
254
+            <text>价格要求</text>
255
+            <view className='RangeList'>
256
+              <Slider activeColor="#193C83" block-color="#193C83" change={PriceRangehange} min="50" max="200" show-value />
257
+            </view>
258
+          </view>
259
+          <view>
260
+            <text>偏好设置</text>
261
+            <view className='CheckList'>
262
+              {
263
+                PreferenceList.map((item, index) => (
264
+                  <view key={`PreferenceItem-${index}`} className={CurrnetPreferenceId === item.id ? 'active' : ''} onClick={CutPreferenceId(item.id)}>
265
+                    {item.name}
266
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
267
+                  </view>
268
+                ))
269
+              }
270
+            </view>
271
+          </view>
272
+          <view>
273
+            <text>购房目的</text>
274
+            <view className='CheckList'>
275
+              {
276
+                GoalList.map((item, index) => (
277
+                  <view key={`GoalItem-${index}`} className={CurrnetGoalId === item.id ? 'active' : ''} onClick={CutGoalId(item.id)}>
278
+                    {item.name}
279
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
280
+                  </view>
281
+                ))
282
+              }
283
+            </view>
284
+          </view>
285
+        </view>
286
+      }
287
+
288
+      {
289
+        StepId === 4 &&
290
+        <view className='Step'>
291
+          <view>
292
+            <text>计划在多久购房?</text>
293
+            <view className='CheckList'>
294
+              {
295
+                LongTimeList.map((item, index) => (
296
+                  <view key={`LongTimeItem-${index}`} className={CurrnetLongTimeId === item.id ? 'active' : ''} onClick={CutLongTimeId(item.id)}>
297
+                    {item.name}
298
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
299
+                  </view>
300
+                ))
301
+              }
302
+            </view>
303
+          </view>
304
+          <view>
305
+            <text>您还有哪些需要备注的信息?</text>
306
+            <view className='Textarea'>
307
+              <Textarea placeholder="请说出您的其他需求,让我们更好的为您服务!" />
308
+            </view>
309
+          </view>
310
+        </view>
311
+      }
312
+
313
+      <view className='Btn'>
314
+        <text className='active' onClick={NextStep}>下一步</text>
315
+        <text onClick={PrevStep}>返回</text>
316
+      </view>
317
+    </view>
318
+  )
319
+}

+ 153
- 0
src/pages/index/helpToFindHouse/components/BuyHouse/index.scss View File

1
+.components.BuyHouse {
2
+  position: relative;
3
+  overflow: hidden;
4
+  margin-top: 0 !important;
5
+  z-index: 1;
6
+  > .Step {
7
+    position: relative;
8
+    overflow: hidden;
9
+    > view {
10
+      position: relative;
11
+      overflow: hidden;
12
+      margin-top: 30px;
13
+      > text {
14
+        display: block;
15
+        font-size: 34px;
16
+        font-weight: bold;
17
+        color: #333;
18
+        line-height: 40px;
19
+      }
20
+      > view {
21
+        position: relative;
22
+        overflow: hidden;
23
+        margin-top: 20px;
24
+      }
25
+      > .Area {
26
+        > view {
27
+          align-items: center;
28
+          background: #f8f8f8;
29
+          border-radius: 12px;
30
+          padding: 24px 20px;
31
+          > text {
32
+            font-size: 26px;
33
+            color: #333;
34
+            line-height: 40px;
35
+            margin-left: 20px;
36
+            &:first-child {
37
+              margin-left: 0;
38
+              color: #193c83;
39
+            }
40
+          }
41
+        }
42
+      }
43
+      > .Purpose {
44
+        > view {
45
+          align-items: center;
46
+          background: #f8f8f8;
47
+          border-radius: 12px;
48
+          padding: 24px 20px;
49
+          > input {
50
+            font-size: 26px;
51
+            color: #333;
52
+            line-height: 40px;
53
+            display: block;
54
+            width: 100%;
55
+            background: none;
56
+          }
57
+        }
58
+      }
59
+      > .CheckList {
60
+        font-size: 0;
61
+        margin-top: 0;
62
+        > view {
63
+          display: inline-block;
64
+          vertical-align: middle;
65
+          font-size: 30px;
66
+          font-weight: bold;
67
+          color: #333;
68
+          line-height: 40px;
69
+          padding: 20px 0;
70
+          min-width: 194px;
71
+          box-sizing: border-box;
72
+          white-space: nowrap;
73
+          text-align: center;
74
+          border: 2px solid #193c83;
75
+          border-radius: 4px;
76
+          margin-right: 54px;
77
+          position: relative;
78
+          overflow: hidden;
79
+          margin-top: 20px;
80
+          &:nth-child(3n+3) {
81
+            margin-right: 0;
82
+          }
83
+          &.active {
84
+            > image {
85
+              display: block;
86
+            }
87
+          }
88
+          > image {
89
+            display: none;
90
+            width: 36px;
91
+            height: 36px;
92
+            position: absolute;
93
+            right: -2px;
94
+            bottom: -2px;
95
+          }
96
+        }
97
+      }
98
+      > .PriceRange {
99
+        > view {
100
+          align-items: center;
101
+          background: #f8f8f8;
102
+          border-radius: 12px;
103
+          padding: 24px 0;
104
+          > view {
105
+            > input {
106
+              font-size: 26px;
107
+              color: #333;
108
+              line-height: 40px;
109
+              display: block;
110
+              width: 100%;
111
+              background: none;
112
+              text-align: center;
113
+            }
114
+          }
115
+        }
116
+      }
117
+      >.Textarea {
118
+        background: #f8f8f8;
119
+        border-radius: 12px;
120
+        padding: 20px;
121
+        >textarea {
122
+          font-size: 26px;
123
+          color: #333;
124
+          line-height: 40px;
125
+          display: block;
126
+          width: 100%;
127
+          background: none;
128
+        }
129
+      }
130
+    }
131
+  }
132
+  >.Btn {
133
+    padding: 0 30px;
134
+    margin: 150px auto 60px;
135
+    > text {
136
+      display: block;
137
+      text-align: center;
138
+      font-size: 32px;
139
+      line-height: 92px;
140
+      box-sizing: border-box;
141
+      border: 2px solid #193c83;
142
+      color: #193c83;
143
+      border-radius: 92px;
144
+      margin-top: 20px;
145
+      text-indent: 0;
146
+      font-weight: normal;
147
+      &.active {
148
+        background: #193c83;
149
+        color: #fff;
150
+      }
151
+    }
152
+  }
153
+}

+ 319
- 0
src/pages/index/helpToFindHouse/components/HousePurchasing/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import '../../../../../assets/css/iconfont.css'
4
+import { Image, Input, Slider, Textarea } from '@tarojs/components'
5
+import SubmitBuyHouseResult from '../SubmitBuyHouseResult/index'
6
+
7
+export default function HousePurchasing (props) {
8
+  const { change = () => { } } = props
9
+
10
+  const [SingleList] = useState([
11
+    { name: '首套', id: 1 },
12
+    { name: '二套', id: 2 }
13
+  ])
14
+  const [CurrnetSingleId, setCurrnetSingleId] = useState(null)
15
+
16
+  const [NewOldList] = useState([
17
+    { name: '新房', id: 1 },
18
+    { name: '二手房', id: 2 }
19
+  ])
20
+  const [CurrnetNewOldId, setCurrnetNewOldId] = useState(null)
21
+
22
+  const [HouseTypeList] = useState([
23
+    { name: '一室一厅', id: 1 },
24
+    { name: '二室一厅', id: 2 },
25
+    { name: '二室二厅', id: 3 },
26
+    { name: '三室一厅', id: 4 },
27
+    { name: '三室二厅', id: 5 },
28
+    { name: '四室一厅', id: 6 },
29
+    { name: '四室二厅', id: 7 },
30
+    { name: '五室及以上', id: 8 }
31
+  ])
32
+  const [CurrnetHouseTypeId, setCurrnetHouseTypeId] = useState(null)
33
+
34
+  const [AreaList] = useState([
35
+    { name: '60㎡以下', id: 1 },
36
+    { name: '60-90㎡', id: 2 },
37
+    { name: '90-110㎡', id: 3 },
38
+    { name: '110-130㎡', id: 4 },
39
+    { name: '130-150㎡', id: 5 },
40
+    { name: '150-200㎡', id: 6 },
41
+    { name: '200㎡以上', id: 7 }
42
+  ])
43
+  const [CurrnetAreaId, setCurrnetAreaId] = useState(null)
44
+
45
+  const [PreferenceList] = useState([
46
+    { name: '南北通透', id: 1 },
47
+    { name: '朝南', id: 2 },
48
+    { name: '低楼层', id: 3 },
49
+    { name: '高楼层', id: 4 },
50
+    { name: '精装修', id: 5 },
51
+    { name: '电梯房', id: 6 },
52
+    { name: '近地铁', id: 7 },
53
+    { name: '满五年', id: 8 },
54
+    { name: '满两年', id: 9 },
55
+    { name: '楼龄5年内', id: 10 },
56
+    { name: '楼龄10年内', id: 11 }
57
+  ])
58
+  const [CurrnetPreferenceId, setCurrnetPreferenceId] = useState(null)
59
+
60
+  const [GoalList] = useState([
61
+    { name: '刚需', id: 1 },
62
+    { name: '结婚', id: 2 },
63
+    { name: '养老', id: 3 },
64
+    { name: '改善', id: 4 },
65
+    { name: '教育', id: 5 },
66
+    { name: '投资', id: 6 }
67
+  ])
68
+  const [CurrnetGoalId, setCurrnetGoalId] = useState(null)
69
+
70
+  const [LongTimeList] = useState([
71
+    { name: '1月内', id: 1 },
72
+    { name: '6个月', id: 2 },
73
+    { name: '1年内', id: 3 },
74
+    { name: '1年后', id: 4 }
75
+  ])
76
+  const [CurrnetLongTimeId, setCurrnetLongTimeId] = useState(null)
77
+
78
+  const [StepId, setStepId] = useState(1)
79
+
80
+  const [ShowPopup, setShowPopup] = useState(false)
81
+
82
+  useEffect(() => {
83
+    change(StepId)
84
+  }, [StepId])
85
+
86
+  const CutSingleId = (id) => {
87
+    return () => {
88
+      setCurrnetSingleId(id === CurrnetSingleId ? null : id)
89
+    }
90
+  }
91
+
92
+  const CutNewOldId = (id) => {
93
+    return () => {
94
+      setCurrnetNewOldId(id === CurrnetNewOldId ? null : id)
95
+    }
96
+  }
97
+
98
+  const CutHouseTypeId = (id) => {
99
+    return () => {
100
+      setCurrnetHouseTypeId(id === CurrnetHouseTypeId ? null : id)
101
+    }
102
+  }
103
+
104
+  const CutAreaId = (id) => {
105
+    return () => {
106
+      setCurrnetAreaId(id === CurrnetAreaId ? null : id)
107
+    }
108
+  }
109
+
110
+  const CutPreferenceId = (id) => {
111
+    return () => {
112
+      setCurrnetPreferenceId(id === CurrnetPreferenceId ? null : id)
113
+    }
114
+  }
115
+
116
+  const CutGoalId = (id) => {
117
+    return () => {
118
+      setCurrnetGoalId(id === CurrnetGoalId ? null : id)
119
+    }
120
+  }
121
+
122
+  const CutLongTimeId = (id) => {
123
+    return () => {
124
+      setCurrnetLongTimeId(id === CurrnetLongTimeId ? null : id)
125
+    }
126
+  }
127
+
128
+  const PriceRangehange = (e) => {
129
+    console.log(e)
130
+  }
131
+
132
+  const NextStep = () => {
133
+    if (StepId < 4) {
134
+      setStepId(StepId + 1)
135
+    }
136
+  }
137
+
138
+  const PrevStep = () => {
139
+    if (StepId > 1) {
140
+      setStepId(StepId - 1)
141
+    }
142
+  }
143
+
144
+  return (
145
+    <view className='components HousePurchasing'>
146
+      {
147
+        ShowPopup && 
148
+        <SubmitBuyHouseResult></SubmitBuyHouseResult>
149
+      }
150
+      {
151
+        StepId === 1 &&
152
+        <view className='Step'>
153
+          <view>
154
+            <text>意向区域</text>
155
+            <view className='Area'>
156
+              <view className='flex-h'>
157
+                <text className='iconfont icon-dingwei'></text>
158
+                <text>不限</text>
159
+                <view className='flex-item'></view>
160
+                <text className='iconfont icon-jiantoudown'></text>
161
+              </view>
162
+            </view>
163
+          </view>
164
+
165
+          <view>
166
+            <text>意向楼盘</text>
167
+            <view className='Purpose'>
168
+              <view>
169
+                <Input placeholder="请输入意向楼盘" />
170
+              </view>
171
+            </view>
172
+          </view>
173
+
174
+          <view>
175
+            <text>您想购买的是首套房还是二套房?</text>
176
+            <view className='CheckList'>
177
+              {
178
+                SingleList.map((item, index) => (
179
+                  <view key={`SingleItem-${index}`} className={CurrnetSingleId === item.id ? 'active' : ''} onClick={CutSingleId(item.id)}>
180
+                    {item.name}
181
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
182
+                  </view>
183
+                ))
184
+              }
185
+            </view>
186
+          </view>
187
+
188
+          <view>
189
+            <text>总价预算范围</text>
190
+            <view className='PriceRange'>
191
+              <view className='flex-h'>
192
+                <view className='flex-item'>
193
+                  <Input placeholder="最小面积㎡" />
194
+                </view>
195
+                <text>-</text>
196
+                <view className='flex-item'>
197
+                  <Input placeholder="最大面积㎡" />
198
+                </view>
199
+              </view>
200
+            </view>
201
+          </view>
202
+        </view>
203
+      }
204
+
205
+      {
206
+        StepId === 2 &&
207
+        <view className='Step'>
208
+          <view>
209
+            <text>您想购买的是二手房还是新房?</text>
210
+            <view className='CheckList'>
211
+              {
212
+                NewOldList.map((item, index) => (
213
+                  <view key={`NewOldItem-${index}`} className={CurrnetNewOldId === item.id ? 'active' : ''} onClick={CutNewOldId(item.id)}>
214
+                    {item.name}
215
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
216
+                  </view>
217
+                ))
218
+              }
219
+            </view>
220
+          </view>
221
+          <view>
222
+            <text>居室要求</text>
223
+            <view className='CheckList'>
224
+              {
225
+                HouseTypeList.map((item, index) => (
226
+                  <view key={`HouseTypeItem-${index}`} className={CurrnetHouseTypeId === item.id ? 'active' : ''} onClick={CutHouseTypeId(item.id)}>
227
+                    {item.name}
228
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
229
+                  </view>
230
+                ))
231
+              }
232
+            </view>
233
+          </view>
234
+          <view>
235
+            <text>面积要求</text>
236
+            <view className='CheckList'>
237
+              {
238
+                AreaList.map((item, index) => (
239
+                  <view key={`AreaItem-${index}`} className={CurrnetAreaId === item.id ? 'active' : ''} onClick={CutAreaId(item.id)}>
240
+                    {item.name}
241
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
242
+                  </view>
243
+                ))
244
+              }
245
+            </view>
246
+          </view>
247
+        </view>
248
+      }
249
+
250
+      {
251
+        StepId === 3 &&
252
+        <view className='Step'>
253
+          <view>
254
+            <text>价格要求</text>
255
+            <view className='RangeList'>
256
+              <Slider activeColor="#193C83" block-color="#193C83" change={PriceRangehange} min="50" max="200" show-value />
257
+            </view>
258
+          </view>
259
+          <view>
260
+            <text>偏好设置</text>
261
+            <view className='CheckList'>
262
+              {
263
+                PreferenceList.map((item, index) => (
264
+                  <view key={`PreferenceItem-${index}`} className={CurrnetPreferenceId === item.id ? 'active' : ''} onClick={CutPreferenceId(item.id)}>
265
+                    {item.name}
266
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
267
+                  </view>
268
+                ))
269
+              }
270
+            </view>
271
+          </view>
272
+          <view>
273
+            <text>购房目的</text>
274
+            <view className='CheckList'>
275
+              {
276
+                GoalList.map((item, index) => (
277
+                  <view key={`GoalItem-${index}`} className={CurrnetGoalId === item.id ? 'active' : ''} onClick={CutGoalId(item.id)}>
278
+                    {item.name}
279
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
280
+                  </view>
281
+                ))
282
+              }
283
+            </view>
284
+          </view>
285
+        </view>
286
+      }
287
+
288
+      {
289
+        StepId === 4 &&
290
+        <view className='Step'>
291
+          <view>
292
+            <text>计划在多久购房?</text>
293
+            <view className='CheckList'>
294
+              {
295
+                LongTimeList.map((item, index) => (
296
+                  <view key={`LongTimeItem-${index}`} className={CurrnetLongTimeId === item.id ? 'active' : ''} onClick={CutLongTimeId(item.id)}>
297
+                    {item.name}
298
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
299
+                  </view>
300
+                ))
301
+              }
302
+            </view>
303
+          </view>
304
+          <view>
305
+            <text>您还有哪些需要备注的信息?</text>
306
+            <view className='Textarea'>
307
+              <Textarea placeholder="请说出您的其他需求,让我们更好的为您服务!" />
308
+            </view>
309
+          </view>
310
+        </view>
311
+      }
312
+
313
+      <view className='Btn'>
314
+        <text className='active' onClick={NextStep}>下一步</text>
315
+        <text onClick={PrevStep}>返回</text>
316
+      </view>
317
+    </view>
318
+  )
319
+}

+ 153
- 0
src/pages/index/helpToFindHouse/components/HousePurchasing/index.scss View File

1
+.components.HousePurchasing {
2
+  position: relative;
3
+  overflow: hidden;
4
+  margin-top: 0 !important;
5
+  z-index: 1;
6
+  > .Step {
7
+    position: relative;
8
+    overflow: hidden;
9
+    > view {
10
+      position: relative;
11
+      overflow: hidden;
12
+      margin-top: 30px;
13
+      > text {
14
+        display: block;
15
+        font-size: 34px;
16
+        font-weight: bold;
17
+        color: #333;
18
+        line-height: 40px;
19
+      }
20
+      > view {
21
+        position: relative;
22
+        overflow: hidden;
23
+        margin-top: 20px;
24
+      }
25
+      > .Area {
26
+        > view {
27
+          align-items: center;
28
+          background: #f8f8f8;
29
+          border-radius: 12px;
30
+          padding: 24px 20px;
31
+          > text {
32
+            font-size: 26px;
33
+            color: #333;
34
+            line-height: 40px;
35
+            margin-left: 20px;
36
+            &:first-child {
37
+              margin-left: 0;
38
+              color: #193c83;
39
+            }
40
+          }
41
+        }
42
+      }
43
+      > .Purpose {
44
+        > view {
45
+          align-items: center;
46
+          background: #f8f8f8;
47
+          border-radius: 12px;
48
+          padding: 24px 20px;
49
+          > input {
50
+            font-size: 26px;
51
+            color: #333;
52
+            line-height: 40px;
53
+            display: block;
54
+            width: 100%;
55
+            background: none;
56
+          }
57
+        }
58
+      }
59
+      > .CheckList {
60
+        font-size: 0;
61
+        margin-top: 0;
62
+        > view {
63
+          display: inline-block;
64
+          vertical-align: middle;
65
+          font-size: 30px;
66
+          font-weight: bold;
67
+          color: #333;
68
+          line-height: 40px;
69
+          padding: 20px 0;
70
+          min-width: 194px;
71
+          box-sizing: border-box;
72
+          white-space: nowrap;
73
+          text-align: center;
74
+          border: 2px solid #193c83;
75
+          border-radius: 4px;
76
+          margin-right: 54px;
77
+          position: relative;
78
+          overflow: hidden;
79
+          margin-top: 20px;
80
+          &:nth-child(3n+3) {
81
+            margin-right: 0;
82
+          }
83
+          &.active {
84
+            > image {
85
+              display: block;
86
+            }
87
+          }
88
+          > image {
89
+            display: none;
90
+            width: 36px;
91
+            height: 36px;
92
+            position: absolute;
93
+            right: -2px;
94
+            bottom: -2px;
95
+          }
96
+        }
97
+      }
98
+      > .PriceRange {
99
+        > view {
100
+          align-items: center;
101
+          background: #f8f8f8;
102
+          border-radius: 12px;
103
+          padding: 24px 0;
104
+          > view {
105
+            > input {
106
+              font-size: 26px;
107
+              color: #333;
108
+              line-height: 40px;
109
+              display: block;
110
+              width: 100%;
111
+              background: none;
112
+              text-align: center;
113
+            }
114
+          }
115
+        }
116
+      }
117
+      >.Textarea {
118
+        background: #f8f8f8;
119
+        border-radius: 12px;
120
+        padding: 20px;
121
+        >textarea {
122
+          font-size: 26px;
123
+          color: #333;
124
+          line-height: 40px;
125
+          display: block;
126
+          width: 100%;
127
+          background: none;
128
+        }
129
+      }
130
+    }
131
+  }
132
+  >.Btn {
133
+    padding: 0 30px;
134
+    margin: 150px auto 60px;
135
+    > text {
136
+      display: block;
137
+      text-align: center;
138
+      font-size: 32px;
139
+      line-height: 92px;
140
+      box-sizing: border-box;
141
+      border: 2px solid #193c83;
142
+      color: #193c83;
143
+      border-radius: 92px;
144
+      margin-top: 20px;
145
+      text-indent: 0;
146
+      font-weight: normal;
147
+      &.active {
148
+        background: #193c83;
149
+        color: #fff;
150
+      }
151
+    }
152
+  }
153
+}

+ 319
- 0
src/pages/index/helpToFindHouse/components/RentingHouse/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import '../../../../../assets/css/iconfont.css'
4
+import { Image, Input, Slider, Textarea } from '@tarojs/components'
5
+import SubmitBuyHouseResult from '../SubmitBuyHouseResult/index'
6
+
7
+export default function RentingHouse (props) {
8
+  const { change = () => { } } = props
9
+
10
+  const [SingleList] = useState([
11
+    { name: '首套', id: 1 },
12
+    { name: '二套', id: 2 }
13
+  ])
14
+  const [CurrnetSingleId, setCurrnetSingleId] = useState(null)
15
+
16
+  const [NewOldList] = useState([
17
+    { name: '新房', id: 1 },
18
+    { name: '二手房', id: 2 }
19
+  ])
20
+  const [CurrnetNewOldId, setCurrnetNewOldId] = useState(null)
21
+
22
+  const [HouseTypeList] = useState([
23
+    { name: '一室一厅', id: 1 },
24
+    { name: '二室一厅', id: 2 },
25
+    { name: '二室二厅', id: 3 },
26
+    { name: '三室一厅', id: 4 },
27
+    { name: '三室二厅', id: 5 },
28
+    { name: '四室一厅', id: 6 },
29
+    { name: '四室二厅', id: 7 },
30
+    { name: '五室及以上', id: 8 }
31
+  ])
32
+  const [CurrnetHouseTypeId, setCurrnetHouseTypeId] = useState(null)
33
+
34
+  const [AreaList] = useState([
35
+    { name: '60㎡以下', id: 1 },
36
+    { name: '60-90㎡', id: 2 },
37
+    { name: '90-110㎡', id: 3 },
38
+    { name: '110-130㎡', id: 4 },
39
+    { name: '130-150㎡', id: 5 },
40
+    { name: '150-200㎡', id: 6 },
41
+    { name: '200㎡以上', id: 7 }
42
+  ])
43
+  const [CurrnetAreaId, setCurrnetAreaId] = useState(null)
44
+
45
+  const [PreferenceList] = useState([
46
+    { name: '南北通透', id: 1 },
47
+    { name: '朝南', id: 2 },
48
+    { name: '低楼层', id: 3 },
49
+    { name: '高楼层', id: 4 },
50
+    { name: '精装修', id: 5 },
51
+    { name: '电梯房', id: 6 },
52
+    { name: '近地铁', id: 7 },
53
+    { name: '满五年', id: 8 },
54
+    { name: '满两年', id: 9 },
55
+    { name: '楼龄5年内', id: 10 },
56
+    { name: '楼龄10年内', id: 11 }
57
+  ])
58
+  const [CurrnetPreferenceId, setCurrnetPreferenceId] = useState(null)
59
+
60
+  const [GoalList] = useState([
61
+    { name: '刚需', id: 1 },
62
+    { name: '结婚', id: 2 },
63
+    { name: '养老', id: 3 },
64
+    { name: '改善', id: 4 },
65
+    { name: '教育', id: 5 },
66
+    { name: '投资', id: 6 }
67
+  ])
68
+  const [CurrnetGoalId, setCurrnetGoalId] = useState(null)
69
+
70
+  const [LongTimeList] = useState([
71
+    { name: '1月内', id: 1 },
72
+    { name: '6个月', id: 2 },
73
+    { name: '1年内', id: 3 },
74
+    { name: '1年后', id: 4 }
75
+  ])
76
+  const [CurrnetLongTimeId, setCurrnetLongTimeId] = useState(null)
77
+
78
+  const [StepId, setStepId] = useState(1)
79
+
80
+  const [ShowPopup, setShowPopup] = useState(false)
81
+
82
+  useEffect(() => {
83
+    change(StepId)
84
+  }, [StepId])
85
+
86
+  const CutSingleId = (id) => {
87
+    return () => {
88
+      setCurrnetSingleId(id === CurrnetSingleId ? null : id)
89
+    }
90
+  }
91
+
92
+  const CutNewOldId = (id) => {
93
+    return () => {
94
+      setCurrnetNewOldId(id === CurrnetNewOldId ? null : id)
95
+    }
96
+  }
97
+
98
+  const CutHouseTypeId = (id) => {
99
+    return () => {
100
+      setCurrnetHouseTypeId(id === CurrnetHouseTypeId ? null : id)
101
+    }
102
+  }
103
+
104
+  const CutAreaId = (id) => {
105
+    return () => {
106
+      setCurrnetAreaId(id === CurrnetAreaId ? null : id)
107
+    }
108
+  }
109
+
110
+  const CutPreferenceId = (id) => {
111
+    return () => {
112
+      setCurrnetPreferenceId(id === CurrnetPreferenceId ? null : id)
113
+    }
114
+  }
115
+
116
+  const CutGoalId = (id) => {
117
+    return () => {
118
+      setCurrnetGoalId(id === CurrnetGoalId ? null : id)
119
+    }
120
+  }
121
+
122
+  const CutLongTimeId = (id) => {
123
+    return () => {
124
+      setCurrnetLongTimeId(id === CurrnetLongTimeId ? null : id)
125
+    }
126
+  }
127
+
128
+  const PriceRangehange = (e) => {
129
+    console.log(e)
130
+  }
131
+
132
+  const NextStep = () => {
133
+    if (StepId < 4) {
134
+      setStepId(StepId + 1)
135
+    }
136
+  }
137
+
138
+  const PrevStep = () => {
139
+    if (StepId > 1) {
140
+      setStepId(StepId - 1)
141
+    }
142
+  }
143
+
144
+  return (
145
+    <view className='components RentingHouse'>
146
+      {
147
+        ShowPopup && 
148
+        <SubmitBuyHouseResult></SubmitBuyHouseResult>
149
+      }
150
+      {
151
+        StepId === 1 &&
152
+        <view className='Step'>
153
+          <view>
154
+            <text>意向区域</text>
155
+            <view className='Area'>
156
+              <view className='flex-h'>
157
+                <text className='iconfont icon-dingwei'></text>
158
+                <text>不限</text>
159
+                <view className='flex-item'></view>
160
+                <text className='iconfont icon-jiantoudown'></text>
161
+              </view>
162
+            </view>
163
+          </view>
164
+
165
+          <view>
166
+            <text>意向楼盘</text>
167
+            <view className='Purpose'>
168
+              <view>
169
+                <Input placeholder="请输入意向楼盘" />
170
+              </view>
171
+            </view>
172
+          </view>
173
+
174
+          <view>
175
+            <text>您想购买的是首套房还是二套房?</text>
176
+            <view className='CheckList'>
177
+              {
178
+                SingleList.map((item, index) => (
179
+                  <view key={`SingleItem-${index}`} className={CurrnetSingleId === item.id ? 'active' : ''} onClick={CutSingleId(item.id)}>
180
+                    {item.name}
181
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
182
+                  </view>
183
+                ))
184
+              }
185
+            </view>
186
+          </view>
187
+
188
+          <view>
189
+            <text>总价预算范围</text>
190
+            <view className='PriceRange'>
191
+              <view className='flex-h'>
192
+                <view className='flex-item'>
193
+                  <Input placeholder="最小面积㎡" />
194
+                </view>
195
+                <text>-</text>
196
+                <view className='flex-item'>
197
+                  <Input placeholder="最大面积㎡" />
198
+                </view>
199
+              </view>
200
+            </view>
201
+          </view>
202
+        </view>
203
+      }
204
+
205
+      {
206
+        StepId === 2 &&
207
+        <view className='Step'>
208
+          <view>
209
+            <text>您想购买的是二手房还是新房?</text>
210
+            <view className='CheckList'>
211
+              {
212
+                NewOldList.map((item, index) => (
213
+                  <view key={`NewOldItem-${index}`} className={CurrnetNewOldId === item.id ? 'active' : ''} onClick={CutNewOldId(item.id)}>
214
+                    {item.name}
215
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
216
+                  </view>
217
+                ))
218
+              }
219
+            </view>
220
+          </view>
221
+          <view>
222
+            <text>居室要求</text>
223
+            <view className='CheckList'>
224
+              {
225
+                HouseTypeList.map((item, index) => (
226
+                  <view key={`HouseTypeItem-${index}`} className={CurrnetHouseTypeId === item.id ? 'active' : ''} onClick={CutHouseTypeId(item.id)}>
227
+                    {item.name}
228
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
229
+                  </view>
230
+                ))
231
+              }
232
+            </view>
233
+          </view>
234
+          <view>
235
+            <text>面积要求</text>
236
+            <view className='CheckList'>
237
+              {
238
+                AreaList.map((item, index) => (
239
+                  <view key={`AreaItem-${index}`} className={CurrnetAreaId === item.id ? 'active' : ''} onClick={CutAreaId(item.id)}>
240
+                    {item.name}
241
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
242
+                  </view>
243
+                ))
244
+              }
245
+            </view>
246
+          </view>
247
+        </view>
248
+      }
249
+
250
+      {
251
+        StepId === 3 &&
252
+        <view className='Step'>
253
+          <view>
254
+            <text>价格要求</text>
255
+            <view className='RangeList'>
256
+              <Slider activeColor="#193C83" block-color="#193C83" change={PriceRangehange} min="50" max="200" show-value />
257
+            </view>
258
+          </view>
259
+          <view>
260
+            <text>偏好设置</text>
261
+            <view className='CheckList'>
262
+              {
263
+                PreferenceList.map((item, index) => (
264
+                  <view key={`PreferenceItem-${index}`} className={CurrnetPreferenceId === item.id ? 'active' : ''} onClick={CutPreferenceId(item.id)}>
265
+                    {item.name}
266
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
267
+                  </view>
268
+                ))
269
+              }
270
+            </view>
271
+          </view>
272
+          <view>
273
+            <text>购房目的</text>
274
+            <view className='CheckList'>
275
+              {
276
+                GoalList.map((item, index) => (
277
+                  <view key={`GoalItem-${index}`} className={CurrnetGoalId === item.id ? 'active' : ''} onClick={CutGoalId(item.id)}>
278
+                    {item.name}
279
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
280
+                  </view>
281
+                ))
282
+              }
283
+            </view>
284
+          </view>
285
+        </view>
286
+      }
287
+
288
+      {
289
+        StepId === 4 &&
290
+        <view className='Step'>
291
+          <view>
292
+            <text>计划在多久购房?</text>
293
+            <view className='CheckList'>
294
+              {
295
+                LongTimeList.map((item, index) => (
296
+                  <view key={`LongTimeItem-${index}`} className={CurrnetLongTimeId === item.id ? 'active' : ''} onClick={CutLongTimeId(item.id)}>
297
+                    {item.name}
298
+                    <Image mode='heightFix' src={require('../../../../../assets/findHouse-icon1.png')}></Image>
299
+                  </view>
300
+                ))
301
+              }
302
+            </view>
303
+          </view>
304
+          <view>
305
+            <text>您还有哪些需要备注的信息?</text>
306
+            <view className='Textarea'>
307
+              <Textarea placeholder="请说出您的其他需求,让我们更好的为您服务!" />
308
+            </view>
309
+          </view>
310
+        </view>
311
+      }
312
+
313
+      <view className='Btn'>
314
+        <text className='active' onClick={NextStep}>下一步</text>
315
+        <text onClick={PrevStep}>返回</text>
316
+      </view>
317
+    </view>
318
+  )
319
+}

+ 153
- 0
src/pages/index/helpToFindHouse/components/RentingHouse/index.scss View File

1
+.components.RentingHouse {
2
+  position: relative;
3
+  overflow: hidden;
4
+  margin-top: 0 !important;
5
+  z-index: 1;
6
+  > .Step {
7
+    position: relative;
8
+    overflow: hidden;
9
+    > view {
10
+      position: relative;
11
+      overflow: hidden;
12
+      margin-top: 30px;
13
+      > text {
14
+        display: block;
15
+        font-size: 34px;
16
+        font-weight: bold;
17
+        color: #333;
18
+        line-height: 40px;
19
+      }
20
+      > view {
21
+        position: relative;
22
+        overflow: hidden;
23
+        margin-top: 20px;
24
+      }
25
+      > .Area {
26
+        > view {
27
+          align-items: center;
28
+          background: #f8f8f8;
29
+          border-radius: 12px;
30
+          padding: 24px 20px;
31
+          > text {
32
+            font-size: 26px;
33
+            color: #333;
34
+            line-height: 40px;
35
+            margin-left: 20px;
36
+            &:first-child {
37
+              margin-left: 0;
38
+              color: #193c83;
39
+            }
40
+          }
41
+        }
42
+      }
43
+      > .Purpose {
44
+        > view {
45
+          align-items: center;
46
+          background: #f8f8f8;
47
+          border-radius: 12px;
48
+          padding: 24px 20px;
49
+          > input {
50
+            font-size: 26px;
51
+            color: #333;
52
+            line-height: 40px;
53
+            display: block;
54
+            width: 100%;
55
+            background: none;
56
+          }
57
+        }
58
+      }
59
+      > .CheckList {
60
+        font-size: 0;
61
+        margin-top: 0;
62
+        > view {
63
+          display: inline-block;
64
+          vertical-align: middle;
65
+          font-size: 30px;
66
+          font-weight: bold;
67
+          color: #333;
68
+          line-height: 40px;
69
+          padding: 20px 0;
70
+          min-width: 194px;
71
+          box-sizing: border-box;
72
+          white-space: nowrap;
73
+          text-align: center;
74
+          border: 2px solid #193c83;
75
+          border-radius: 4px;
76
+          margin-right: 54px;
77
+          position: relative;
78
+          overflow: hidden;
79
+          margin-top: 20px;
80
+          &:nth-child(3n+3) {
81
+            margin-right: 0;
82
+          }
83
+          &.active {
84
+            > image {
85
+              display: block;
86
+            }
87
+          }
88
+          > image {
89
+            display: none;
90
+            width: 36px;
91
+            height: 36px;
92
+            position: absolute;
93
+            right: -2px;
94
+            bottom: -2px;
95
+          }
96
+        }
97
+      }
98
+      > .PriceRange {
99
+        > view {
100
+          align-items: center;
101
+          background: #f8f8f8;
102
+          border-radius: 12px;
103
+          padding: 24px 0;
104
+          > view {
105
+            > input {
106
+              font-size: 26px;
107
+              color: #333;
108
+              line-height: 40px;
109
+              display: block;
110
+              width: 100%;
111
+              background: none;
112
+              text-align: center;
113
+            }
114
+          }
115
+        }
116
+      }
117
+      >.Textarea {
118
+        background: #f8f8f8;
119
+        border-radius: 12px;
120
+        padding: 20px;
121
+        >textarea {
122
+          font-size: 26px;
123
+          color: #333;
124
+          line-height: 40px;
125
+          display: block;
126
+          width: 100%;
127
+          background: none;
128
+        }
129
+      }
130
+    }
131
+  }
132
+  >.Btn {
133
+    padding: 0 30px;
134
+    margin: 150px auto 60px;
135
+    > text {
136
+      display: block;
137
+      text-align: center;
138
+      font-size: 32px;
139
+      line-height: 92px;
140
+      box-sizing: border-box;
141
+      border: 2px solid #193c83;
142
+      color: #193c83;
143
+      border-radius: 92px;
144
+      margin-top: 20px;
145
+      text-indent: 0;
146
+      font-weight: normal;
147
+      &.active {
148
+        background: #193c83;
149
+        color: #fff;
150
+      }
151
+    }
152
+  }
153
+}

+ 59
- 0
src/pages/index/helpToFindHouse/components/SubmitBuyHouseResult/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import '../../../../../assets/css/iconfont.css'
4
+import { Image } from '@tarojs/components'
5
+
6
+export default function SubmitBuyHouseResult (props) {
7
+  const { Data = {} } = props
8
+  return (
9
+    <view className='components SubmitBuyHouseResult'>
10
+      <view className='centerLabel'>
11
+        <view>
12
+          <view>
13
+
14
+            <view className='Status'>
15
+              <text className='iconfont icon-gou'></text>
16
+              <text>提交成功</text>
17
+            </view>
18
+
19
+            <view className='Tips'>
20
+              <text>已接收到您的需求我们预计将在48小时内联系您!</text>
21
+              <text>客服工作时间为周一至周五9:00-17:00</text>
22
+              <text>请保持电话畅通;谢谢!</text>
23
+            </view>
24
+
25
+            <view className='Btn flex-h'>
26
+              <text className='flex-item'>一键咨询</text>
27
+              <text className='flex-item active'>一键电话</text>
28
+            </view>
29
+
30
+            {/* 匹配楼盘 */}
31
+            <view className='Recommend'>
32
+              <view className='Title'>
33
+                <view>
34
+                  <text>匹配楼盘</text>
35
+                </view>
36
+              </view>
37
+              <view className='PlanTitle'>“方案一:综合匹配度<text>99%</text>”</view>
38
+              <view className='RecommendBuildingItem'>
39
+                <view>
40
+                  <view className='Img'>
41
+                    <Image mode='aspectFill' src={null} className='centerLabel'></Image>
42
+                  </view>
43
+                  <view className='Title flex-h'>
44
+                    <view className='flex-item'>
45
+                      <text>奥园金基天著尚居</text>
46
+                    </view>
47
+                    <view className='Price'>约<text>20000/㎡</text></view>
48
+                  </view>
49
+                  <text className='Address'>江宁禄口云熙99路号(诚信大道)</text>
50
+                </view>
51
+              </view>
52
+            </view>
53
+
54
+          </view>
55
+        </view>
56
+      </view>
57
+    </view>
58
+  )
59
+}

+ 198
- 0
src/pages/index/helpToFindHouse/components/SubmitBuyHouseResult/index.scss View File

1
+.components.SubmitBuyHouseResult {
2
+  width: 100%;
3
+  position: fixed !important;
4
+  left: 0;
5
+  top: 0;
6
+  bottom: 0;
7
+  background: rgba(0, 0, 0, 0.6);
8
+  margin: 0 !important;
9
+  padding: 0 !important;
10
+  z-index: 100 !important;
11
+  >view {
12
+    width: 100%;
13
+    >view {
14
+      padding: 0 30px;
15
+      position: relative;
16
+      overflow: hidden;
17
+      >view {
18
+        position: relative;
19
+        overflow: hidden;
20
+        min-height: 80px;
21
+        background: #fff;
22
+        border-radius: 24px;
23
+        >.Status {
24
+          text-align: center;
25
+          margin-top: 40px;
26
+          >text {
27
+            font-size: 34px;
28
+            font-weight: bold;
29
+            color: #193C83;
30
+            display: block;
31
+            text-align: center;
32
+            line-height: 34px;
33
+            &.iconfont {
34
+              font-size: 100px;
35
+              line-height: 100px;
36
+              font-weight: normal;
37
+              margin-bottom: 22px;
38
+            }
39
+          }
40
+        }
41
+        >.Tips {
42
+          position: relative;
43
+          overflow: hidden;
44
+          margin-top: 30px;
45
+          >text {
46
+            display: block;
47
+            text-align: center;
48
+            font-size: 26px;
49
+            color: #666;
50
+            line-height: 50px;
51
+            white-space: nowrap;
52
+          }
53
+        }
54
+        >.Btn {
55
+          padding: 0 80px;
56
+          position: relative;
57
+          overflow: hidden;
58
+          margin-top: 40px;
59
+          align-items: center;
60
+          margin-bottom: 60px;
61
+          >text {
62
+            font-size: 30px;
63
+            line-height: 78px;
64
+            border-radius: 78px;
65
+            margin-left: 60px;
66
+            text-align: center;
67
+            border: 2px solid #193C83;
68
+            box-sizing: border-box;
69
+            color: #193C83;
70
+            font-weight: bold;
71
+            &:first-child {
72
+              margin-left: 0;
73
+            }
74
+            &.active {
75
+              background: #193C83;
76
+              color: #fff;
77
+            }
78
+          }
79
+        }
80
+        >.Recommend {
81
+          padding: 0 30px;
82
+          position: relative;
83
+          overflow: hidden;
84
+          >.Title {
85
+            position: relative;
86
+            overflow: hidden;
87
+            &::after {
88
+              content: '';
89
+              width: 100%;
90
+              display: block;
91
+              position: absolute;
92
+              left: 0;
93
+              top: 14px;
94
+              height: 2px;
95
+              background: rgba(0, 0, 0, 0.12);
96
+              z-index: 1;
97
+            }
98
+            >view {
99
+              display: block;
100
+              position: relative;
101
+              z-index: 2;
102
+              margin: 0 auto;
103
+              width: 260px;
104
+              background: #fff;
105
+              text-align: center;
106
+              font-size: 0;
107
+              &::after {
108
+                content: '';
109
+                width: 100%;
110
+                display: block;
111
+                position: absolute;
112
+                left: 0;
113
+                top: 14px;
114
+                height: 0;
115
+                z-index: 2;
116
+                border-bottom: 2px dashed #333;
117
+              }
118
+              >text {
119
+                display: inline-block;
120
+                position: relative;
121
+                z-index: 3;
122
+                font-size: 30px;
123
+                line-height: 30px;
124
+                font-weight: bold;
125
+                color: #666;
126
+                background: #fff;
127
+                padding: 0 40px;
128
+              }
129
+            }
130
+          }
131
+          >.PlanTitle {
132
+            font-size: 30px;
133
+            font-weight: bold;
134
+            white-space: nowrap;
135
+            position: relative;
136
+            overflow: hidden;
137
+            margin-top: 40px;
138
+            text-align: center;
139
+            >text {
140
+              color: #FC3838;
141
+            }
142
+          }
143
+          >.RecommendBuildingItem {
144
+            position: relative;
145
+            overflow: hidden;
146
+            padding: 0 60px;
147
+            margin-top: 30px;
148
+            margin-bottom: 50px;
149
+            >view {
150
+              position: relative;
151
+              overflow: hidden;
152
+              >.Img {
153
+                width: 100%;
154
+                padding-bottom: 60%;
155
+                position: relative;
156
+                overflow: hidden;
157
+                background: #eee;
158
+                >image {
159
+                  width: 100%;
160
+                  height: 100%;
161
+                }
162
+              }
163
+              >.Title {
164
+                align-items: flex-start;
165
+                margin-top: 24px;
166
+                >.flex-item {
167
+                  >text {
168
+                    display: block;
169
+                    font-size: 32px;
170
+                    font-weight: bold;
171
+                    color: #333;
172
+                    line-height: 40px;
173
+                  }
174
+                }
175
+                >.Price {
176
+                  font-size: 22px;
177
+                  font-weight: bold;
178
+                  color: #333;
179
+                  margin-left: 10px;
180
+                  line-height: 40px;
181
+                  >text {
182
+                    color: #FC2C2C;
183
+                  }
184
+                }
185
+              }
186
+              >.Address {
187
+                font-size: 22px;
188
+                color: #666;
189
+                line-height: 30px;
190
+                margin-top: 20px;
191
+              }
192
+            }
193
+          }
194
+        }
195
+      }
196
+    }
197
+  }
198
+}

+ 53
- 20
src/pages/index/helpToFindHouse/index.jsx View File

1
 import React, { useState, useEffect } from 'react'
1
 import React, { useState, useEffect } from 'react'
2
 import withLayout from '@/layout'
2
 import withLayout from '@/layout'
3
 import './index.scss'
3
 import './index.scss'
4
-import { ScrollView } from '@tarojs/components'
4
+import { ScrollView, Image, Input } from '@tarojs/components'
5
 import '../../../assets/css/iconfont.css'
5
 import '../../../assets/css/iconfont.css'
6
+import BuyHouse from './components/BuyHouse/index'
7
+import RentingHouse from './components/RentingHouse/index'
8
+import HousePurchasing from './components/HousePurchasing/index'
6
 
9
 
7
 export default withLayout((props) => {
10
 export default withLayout((props) => {
8
 
11
 
9
   // const [PageProps] = useState(props)
12
   // const [PageProps] = useState(props)
10
-  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
11
-  const [IsPull, setPull] = useState(false)
12
-  const [PullTimer, setPullTimer] = useState(null)
13
+  const [DemandList] = useState([
14
+    { name: '我要买房', id: 1, icon: '', spell: 'MAI FANG' },
15
+    { name: '我要租房', id: 2, icon: '', spell: 'ZU FANG' },
16
+    { name: '海外置业', id: 3, icon: '', spell: 'ZHI YE' }
17
+  ])
18
+  const [CurrentDemandId, setCurrentDemandId] = useState(2)
19
+  const [ShowDemand, setShowDemand] = useState(true)
13
 
20
 
14
-  const PageRefresh = () => { // 页面下拉刷新回调
15
-    setPull(true)
21
+  const CutDemandId = (id) => {
22
+    return () => {
23
+      setCurrentDemandId(id)
24
+    }
16
   }
25
   }
17
 
26
 
18
-  useEffect(() => { // 下拉刷新触发
19
-    if (IsPull) {
20
-      clearTimeout(PullTimer)
21
-      setPullTimer(setTimeout(() => {
22
-        setPull(false)
23
-      }, 2000))
24
-    }
25
-  }, [IsPull])
27
+  const StepChange = (id) => {
28
+    setShowDemand(id === 1)
29
+  }
26
 
30
 
27
   return (
31
   return (
28
     <view className='Page helpToFindHouse'>
32
     <view className='Page helpToFindHouse'>
29
 
33
 
30
-      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
34
+      <ScrollView scroll-y={true} refresher-enabled={false}>
31
         <view className='PageContent'>
35
         <view className='PageContent'>
32
 
36
 
33
-          帮我找房
37
+          {
38
+            ShowDemand &&
39
+            <view>
40
+              <text>选择您的需求</text>
41
+              <view className='Demand flex-h'>
42
+                {
43
+                  DemandList.map((item, index) => (
44
+                    <view key={`DemandItem-${index}`} className={CurrentDemandId === item.id ? 'flex-item active' : 'flex-item'} onClick={CutDemandId(item.id)}>
45
+                      <Image mode='heightFix' src={item.icon || null}></Image>
46
+                      <text>{item.name}</text>
47
+                      <text>{item.spell}</text>
48
+                    </view>
49
+                  ))
50
+                }
51
+              </view>
52
+            </view>
53
+          }
54
+
55
+          {/* 买房 */}
56
+          {
57
+            CurrentDemandId === 1 &&
58
+            <BuyHouse change={StepChange}></BuyHouse>
59
+          }
60
+
61
+          {/* 租房 */}
62
+          {
63
+            CurrentDemandId === 2 &&
64
+            <RentingHouse></RentingHouse>
65
+          }
34
 
66
 
35
-          {/* bottom */}
36
-          <view className='PageBottom'>
37
-            <text>已经到底了~</text>
38
-          </view>
67
+          {/* 置业 */}
68
+          {
69
+            CurrentDemandId === 3 &&
70
+            <HousePurchasing></HousePurchasing>
71
+          }
39
 
72
 
40
         </view>
73
         </view>
41
       </ScrollView>
74
       </ScrollView>

+ 62
- 0
src/pages/index/helpToFindHouse/index.scss View File

7
       position: relative;
7
       position: relative;
8
       overflow: hidden;
8
       overflow: hidden;
9
       min-height: 100vh;
9
       min-height: 100vh;
10
+      > view {
11
+        position: relative;
12
+        overflow: hidden;
13
+        &:first-child {
14
+          margin-top: 30px;
15
+        }
16
+        > text {
17
+          display: block;
18
+          font-size: 34px;
19
+          font-weight: bold;
20
+          color: #333;
21
+          line-height: 40px;
22
+          text-indent: 30px;
23
+        }
24
+        > view {
25
+          padding: 0 30px;
26
+          position: relative;
27
+          overflow: hidden;
28
+          margin-top: 20px;
29
+        }
30
+        > .Demand {
31
+          align-items: center;
32
+          > view {
33
+            box-sizing: border-box;
34
+            border: 2px solid #333;
35
+            border-radius: 8px;
36
+            margin-left: 30px;
37
+            position: relative;
38
+            overflow: hidden;
39
+            padding: 0 20px;
40
+            &:first-child {
41
+              margin-left: 0;
42
+            }
43
+            &.active {
44
+              border-color: #193c83;
45
+              > text {
46
+                color: #193c83;
47
+              }
48
+            }
49
+            > image {
50
+              width: 24px;
51
+              height: 24px;
52
+              display: block;
53
+              margin: 10px auto 0;
54
+            }
55
+            > text {
56
+              font-size: 30px;
57
+              line-height: 30px;
58
+              display: block;
59
+              text-align: center;
60
+              margin-top: 10px;
61
+              &:last-child {
62
+                font-size: 24px;
63
+                font-weight: bold;
64
+                color: #ccc;
65
+                padding: 6px 0;
66
+                border-top: 2px solid #eee;
67
+              }
68
+            }
69
+          }
70
+        }
71
+      }
10
     }
72
     }
11
   }
73
   }
12
 }
74
 }

+ 34
- 11
src/pages/index/newsDetail/index.jsx View File

3
 import './index.scss'
3
 import './index.scss'
4
 import { ScrollView } from '@tarojs/components'
4
 import { ScrollView } from '@tarojs/components'
5
 import '../../../assets/css/iconfont.css'
5
 import '../../../assets/css/iconfont.css'
6
+import { Image, RichText } from '@tarojs/components'
6
 
7
 
7
 export default withLayout((props) => {
8
 export default withLayout((props) => {
8
 
9
 
25
   }, [IsPull])
26
   }, [IsPull])
26
 
27
 
27
   return (
28
   return (
28
-    <view className='Page newsDetail'>
29
+    <view className='Page newsDetail flex-v'>
30
+      <view className='flex-item'>
31
+        <view>
32
+          <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
33
+            <view className='PageContent'>
29
 
34
 
30
-      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
31
-        <view className='PageContent'>
35
+              <view className='Info'>
36
+                <view>
37
+                  <text className='Title'>公积金又有新变化,附最新南京公积金贷款和提取方法。</text>
38
+                  <view>
39
+                    <text>阅读:28</text>
40
+                    <text>点赞15</text>
41
+                    <text>收藏22</text>
42
+                  </view>
43
+                  <text className='Time'>时间:2019-10-20 10:00 </text>
44
+                  <text className='Share'>分享好友</text>
45
+                </view>
46
+              </view>
32
 
47
 
33
-          资讯详情
34
-
35
-          {/* bottom */}
36
-          <view className='PageBottom'>
37
-            <text>已经到底了~</text>
38
-          </view>
48
+              <view className='Content'>
49
+                <RichText nodes={'<p>这是内容</p>'}></RichText>
50
+              </view>
39
 
51
 
52
+            </view>
53
+          </ScrollView>
40
         </view>
54
         </view>
41
-      </ScrollView>
42
-
55
+      </view>
56
+      <view className='Bottom'>
57
+        <view>
58
+          <Image mode='heightFix' src={require('../../../assets/buildingDetail-icon3.png')}></Image>
59
+          <text>生成海报</text>
60
+        </view>
61
+        <view>
62
+          <text className='iconfont icon-shoucang'></text>
63
+          <text>收藏</text>
64
+        </view>
65
+      </view>
43
     </view>
66
     </view>
44
   )
67
   )
45
 })
68
 })

+ 110
- 6
src/pages/index/newsDetail/index.scss View File

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

+ 6
- 1
src/pages/index/newsList/index.jsx View File

3
 import './index.scss'
3
 import './index.scss'
4
 import { ScrollView } from '@tarojs/components'
4
 import { ScrollView } from '@tarojs/components'
5
 import '../../../assets/css/iconfont.css'
5
 import '../../../assets/css/iconfont.css'
6
+import NewsListItem from '../components/NewsListItem/index'
6
 
7
 
7
 export default withLayout((props) => {
8
 export default withLayout((props) => {
8
 
9
 
30
       <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
31
       <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
31
         <view className='PageContent'>
32
         <view className='PageContent'>
32
 
33
 
33
-          新闻资讯
34
+          {
35
+            PageList.map((item, index) => (
36
+              <NewsListItem></NewsListItem>
37
+            ))
38
+          }
34
 
39
 
35
           {/* bottom */}
40
           {/* bottom */}
36
           <view className='PageBottom'>
41
           <view className='PageBottom'>

+ 16
- 0
src/pages/index/newsList/index.scss View File

7
       position: relative;
7
       position: relative;
8
       overflow: hidden;
8
       overflow: hidden;
9
       min-height: 100vh;
9
       min-height: 100vh;
10
+      padding: 0 30px;
11
+      >view {
12
+        margin-top: 30px;
13
+      }
14
+      > .PageBottom {
15
+        text-align: center;
16
+        font-size: 0;
17
+        white-space: nowrap;
18
+        > text {
19
+          display: inline-block;
20
+          font-size: 28px;
21
+          color: #666;
22
+          line-height: 40px;
23
+          margin: 20px auto;
24
+        }
25
+      }
10
     }
26
     }
11
   }
27
   }
12
 }
28
 }

+ 22
- 0
src/pages/mine/components/MyActivityListItem/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import Taro from '@tarojs/taro'
4
+
5
+export default function MyActivityListItem (props) {
6
+  const { Data = {} } = props
7
+  return (
8
+    <view className='components MyActivityListItem' onClick={() => { Taro.navigateTo({ url: `/pages/index/activityDetail/index?id=${Data.id}` }) }}>
9
+      <view className='Img'>
10
+        {
11
+          Data.img &&
12
+          <Image mode='aspectFill' className='centerLabel' src={Data.img || null} />
13
+        }
14
+      </view>
15
+      <view className='Info'>
16
+        <text className='Name'>5D沉浸式剧场</text>
17
+        <text className='Address'>江宁禄口云熙99路号(诚信大道)</text>
18
+        <text className='Time'>活动时间:2019/10/20 10:00 - 2019/10/22 10:00</text>
19
+      </view>
20
+    </view>
21
+  )
22
+}

+ 46
- 0
src/pages/mine/components/MyActivityListItem/index.scss View File

1
+.components.MyActivityListItem {
2
+  position: relative;
3
+  overflow: hidden;
4
+  background: #fff;
5
+  border-radius: 12px;
6
+  box-shadow: 0 0 6px 6px rgba(0, 0, 0, 0.03);
7
+  >.Img {
8
+    width: 100%;
9
+    padding-bottom: 56.25%;
10
+    background: #eee;
11
+    position: relative;
12
+    overflow: hidden;
13
+    >image {
14
+      width: 100%;
15
+      height: 100%;
16
+    }
17
+  }
18
+  >.Info {
19
+    padding: 20px;
20
+    position: relative;
21
+    overflow: hidden;
22
+    >text {
23
+      display: block;
24
+      white-space: nowrap;
25
+      overflow: hidden;
26
+      text-overflow: ellipsis;
27
+      line-height: 1;
28
+      &.Name {
29
+        font-size: 34px;
30
+        margin-top: 6px;
31
+        font-weight: bold;
32
+      }
33
+      &.Address {
34
+        font-size: 22px;
35
+        color: #666;
36
+        margin-top: 30px;
37
+      }
38
+      &.Time {
39
+        font-size: 24px;
40
+        color: #999;
41
+        margin-top: 30px;
42
+        margin-bottom: 20px;
43
+      }
44
+    }
45
+  }
46
+}

+ 45
- 0
src/pages/mine/components/MyCollectForActivity/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import { ScrollView } from '@tarojs/components'
4
+import ActivityListItem from '../../../index/components/ActivityListItem/index'
5
+
6
+export default function MyCollectForActivity (props) {
7
+  const { Data = {} } = props
8
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
9
+  const [IsPull, setPull] = useState(false)
10
+  const [PullTimer, setPullTimer] = useState(null)
11
+
12
+  const PageRefresh = () => { // 页面下拉刷新回调
13
+    setPull(true)
14
+  }
15
+
16
+  useEffect(() => { // 下拉刷新触发
17
+    if (IsPull) {
18
+      clearTimeout(PullTimer)
19
+      setPullTimer(setTimeout(() => {
20
+        setPull(false)
21
+      }, 2000))
22
+    }
23
+  }, [IsPull])
24
+
25
+  return (
26
+    <view className='components MyCollectForActivity'>
27
+      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
28
+        <view className='PageContent'>
29
+          <view className='List'>
30
+            {
31
+              PageList.map((item, index) => (
32
+                <ActivityListItem Data={item} key={`ActivityListItem-${index}`}></ActivityListItem>
33
+              ))
34
+            }
35
+          </view>
36
+
37
+          {/* bottom */}
38
+          <view className='PageBottom'>
39
+            <text>已经到底了~</text>
40
+          </view>
41
+        </view>
42
+      </ScrollView>
43
+    </view>
44
+  )
45
+}

+ 32
- 0
src/pages/mine/components/MyCollectForActivity/index.scss View File

1
+.components.MyCollectForActivity {
2
+  position: relative;
3
+  overflow: hidden;
4
+  background: #f8f8f8;
5
+  >scroll-view {
6
+    width: 100%;
7
+    height: 100%;
8
+    .PageContent {
9
+      min-height: 100vh;
10
+      position: relative;
11
+      overflow: visible;
12
+      padding: 0 30px;
13
+      >.List {
14
+        >view {
15
+          margin-top: 30px;
16
+        }
17
+      }
18
+      > .PageBottom {
19
+        text-align: center;
20
+        font-size: 0;
21
+        white-space: nowrap;
22
+        > text {
23
+          display: inline-block;
24
+          font-size: 28px;
25
+          color: #666;
26
+          line-height: 40px;
27
+          margin: 20px auto;
28
+        }
29
+      }
30
+    }
31
+  }
32
+}

+ 45
- 0
src/pages/mine/components/MyCollectForBuilding/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import { ScrollView } from '@tarojs/components'
4
+import MyShareListItem from '../MyShareListItem/index'
5
+
6
+export default function MyCollectForBuilding (props) {
7
+  const { Data = {} } = props
8
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
9
+  const [IsPull, setPull] = useState(false)
10
+  const [PullTimer, setPullTimer] = useState(null)
11
+
12
+  const PageRefresh = () => { // 页面下拉刷新回调
13
+    setPull(true)
14
+  }
15
+
16
+  useEffect(() => { // 下拉刷新触发
17
+    if (IsPull) {
18
+      clearTimeout(PullTimer)
19
+      setPullTimer(setTimeout(() => {
20
+        setPull(false)
21
+      }, 2000))
22
+    }
23
+  }, [IsPull])
24
+
25
+  return (
26
+    <view className='components MyCollectForBuilding'>
27
+      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
28
+        <view className='PageContent'>
29
+          <view className='List'>
30
+            {
31
+              PageList.map((item, index) => (
32
+                <MyShareListItem Data={item} key={`MyShareListItem-${index}`}></MyShareListItem>
33
+              ))
34
+            }
35
+          </view>
36
+
37
+          {/* bottom */}
38
+          <view className='PageBottom'>
39
+            <text>已经到底了~</text>
40
+          </view>
41
+        </view>
42
+      </ScrollView>
43
+    </view>
44
+  )
45
+}

+ 31
- 0
src/pages/mine/components/MyCollectForBuilding/index.scss View File

1
+.components.MyCollectForBuilding {
2
+  position: relative;
3
+  overflow: hidden;
4
+  >scroll-view {
5
+    width: 100%;
6
+    height: 100%;
7
+    .PageContent {
8
+      min-height: 100vh;
9
+      position: relative;
10
+      overflow: hidden;
11
+      padding: 0 30px;
12
+      >.List {
13
+        >view {
14
+          margin-top: 30px;
15
+        }
16
+      }
17
+      > .PageBottom {
18
+        text-align: center;
19
+        font-size: 0;
20
+        white-space: nowrap;
21
+        > text {
22
+          display: inline-block;
23
+          font-size: 28px;
24
+          color: #666;
25
+          line-height: 40px;
26
+          margin: 20px auto;
27
+        }
28
+      }
29
+    }
30
+  }
31
+}

+ 45
- 0
src/pages/mine/components/MyCollectForCourse/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import { ScrollView } from '@tarojs/components'
4
+import MyCourseListItem from '../../components/MyCourseListItem/index'
5
+
6
+export default function MyCollectForCourse (props) {
7
+  const { Data = {} } = props
8
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
9
+  const [IsPull, setPull] = useState(false)
10
+  const [PullTimer, setPullTimer] = useState(null)
11
+
12
+  const PageRefresh = () => { // 页面下拉刷新回调
13
+    setPull(true)
14
+  }
15
+
16
+  useEffect(() => { // 下拉刷新触发
17
+    if (IsPull) {
18
+      clearTimeout(PullTimer)
19
+      setPullTimer(setTimeout(() => {
20
+        setPull(false)
21
+      }, 2000))
22
+    }
23
+  }, [IsPull])
24
+
25
+  return (
26
+    <view className='components MyCollectForCourse'>
27
+      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
28
+        <view className='PageContent'>
29
+          <view className='List'>
30
+            {
31
+              PageList.map((item, index) => (
32
+                <MyCourseListItem Data={item} key={`MyCourseListItem-${index}`}></MyCourseListItem>
33
+              ))
34
+            }
35
+          </view>
36
+
37
+          {/* bottom */}
38
+          <view className='PageBottom'>
39
+            <text>已经到底了~</text>
40
+          </view>
41
+        </view>
42
+      </ScrollView>
43
+    </view>
44
+  )
45
+}

+ 31
- 0
src/pages/mine/components/MyCollectForCourse/index.scss View File

1
+.components.MyCollectForCourse {
2
+  position: relative;
3
+  overflow: hidden;
4
+  >scroll-view {
5
+    width: 100%;
6
+    height: 100%;
7
+    .PageContent {
8
+      min-height: 100vh;
9
+      position: relative;
10
+      overflow: hidden;
11
+      padding: 0 30px;
12
+      >.List {
13
+        >view {
14
+          margin-top: 30px;
15
+        }
16
+      }
17
+      > .PageBottom {
18
+        text-align: center;
19
+        font-size: 0;
20
+        white-space: nowrap;
21
+        > text {
22
+          display: inline-block;
23
+          font-size: 28px;
24
+          color: #666;
25
+          line-height: 40px;
26
+          margin: 20px auto;
27
+        }
28
+      }
29
+    }
30
+  }
31
+}

+ 45
- 0
src/pages/mine/components/MyCollectForNews/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import { ScrollView } from '@tarojs/components'
4
+import NewsListItem from '../../../index/components/NewsListItem/index'
5
+
6
+export default function MyCollectForNews (props) {
7
+  const { Data = {} } = props
8
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
9
+  const [IsPull, setPull] = useState(false)
10
+  const [PullTimer, setPullTimer] = useState(null)
11
+
12
+  const PageRefresh = () => { // 页面下拉刷新回调
13
+    setPull(true)
14
+  }
15
+
16
+  useEffect(() => { // 下拉刷新触发
17
+    if (IsPull) {
18
+      clearTimeout(PullTimer)
19
+      setPullTimer(setTimeout(() => {
20
+        setPull(false)
21
+      }, 2000))
22
+    }
23
+  }, [IsPull])
24
+
25
+  return (
26
+    <view className='components MyCollectForNews'>
27
+      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
28
+        <view className='PageContent'>
29
+          <view className='List'>
30
+            {
31
+              PageList.map((item, index) => (
32
+                <NewsListItem Data={item} key={`NewsListItem-${index}`}></NewsListItem>
33
+              ))
34
+            }
35
+          </view>
36
+
37
+          {/* bottom */}
38
+          <view className='PageBottom'>
39
+            <text>已经到底了~</text>
40
+          </view>
41
+        </view>
42
+      </ScrollView>
43
+    </view>
44
+  )
45
+}

+ 31
- 0
src/pages/mine/components/MyCollectForNews/index.scss View File

1
+.components.MyCollectForNews {
2
+  position: relative;
3
+  overflow: hidden;
4
+  >scroll-view {
5
+    width: 100%;
6
+    height: 100%;
7
+    .PageContent {
8
+      min-height: 100vh;
9
+      position: relative;
10
+      overflow: hidden;
11
+      padding: 0 30px;
12
+      >.List {
13
+        >view {
14
+          margin-top: 30px;
15
+        }
16
+      }
17
+      > .PageBottom {
18
+        text-align: center;
19
+        font-size: 0;
20
+        white-space: nowrap;
21
+        > text {
22
+          display: inline-block;
23
+          font-size: 28px;
24
+          color: #666;
25
+          line-height: 40px;
26
+          margin: 20px auto;
27
+        }
28
+      }
29
+    }
30
+  }
31
+}

+ 35
- 0
src/pages/mine/components/MyCourseListItem/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import Taro from '@tarojs/taro'
4
+
5
+export default function MyCourseListItem (props) {
6
+  const { Data = {} } = props
7
+  return (
8
+    <view className='components MyCourseListItem flex-h' onClick={() => {Taro.navigateTo({ url: `/pages/index/buildingDetail/index?id=${Data.id}` })}}>
9
+      <view className='Img'>
10
+        <view>
11
+          {
12
+            Data.img &&
13
+            <Image mode='aspectFill' className='centerLabel' src={Data.img || null} />
14
+          }
15
+        </view>
16
+      </view>
17
+      <view className='flex-item'>
18
+        <view className='Name flex-h'>
19
+          <view className='flex-item'>
20
+            <text>课程名称</text>
21
+          </view>
22
+        </view>
23
+        <text className='Address'>课程描述...</text>
24
+        <view className='ShareInfo'>
25
+          <view className='Users'>
26
+            <view></view>
27
+            <view></view>
28
+            <view></view>
29
+          </view>
30
+          <text>...9人查看</text>
31
+        </view>
32
+      </view>
33
+    </view>
34
+  )
35
+}

+ 113
- 0
src/pages/mine/components/MyCourseListItem/index.scss View File

1
+.components.MyCourseListItem {
2
+  padding-bottom: 30px;
3
+  border-bottom: 2px solid rgba(0, 0, 0, 0.1);
4
+  > .Img {
5
+    width: 260px;
6
+    position: relative;
7
+    overflow: hidden;
8
+    margin-right: 20px;
9
+    > view {
10
+      width: 100%;
11
+      padding-bottom: 60%;
12
+      background: #eee;
13
+      position: relative;
14
+      overflow: hidden;
15
+      border-radius: 8px;
16
+      > image {
17
+        width: 100%;
18
+        height: 100%;
19
+      }
20
+    }
21
+  }
22
+  > .flex-item {
23
+    > .Name {
24
+      align-items: center;
25
+      > .flex-item {
26
+        margin-right: 10px;
27
+        > text {
28
+          display: block;
29
+          font-size: 28px;
30
+          font-weight: bold;
31
+          color: #000;
32
+          line-height: 40px;
33
+          white-space: nowrap;
34
+          overflow: hidden;
35
+          text-overflow: ellipsis;
36
+        }
37
+      }
38
+      > text {
39
+        font-size: 24px;
40
+        line-height: 40px;
41
+        color: #000;
42
+        &:last-child {
43
+          color: red;
44
+        }
45
+      }
46
+    }
47
+    > .Address {
48
+      display: block;
49
+      font-size: 24px;
50
+      color: #666;
51
+      line-height: 40px;
52
+      white-space: nowrap;
53
+      overflow: hidden;
54
+      text-overflow: ellipsis;
55
+    }
56
+    > .Tags {
57
+      font-size: 0;
58
+      white-space: nowrap;
59
+      > text {
60
+        display: inline-block;
61
+        vertical-align: middle;
62
+        font-size: 16px;
63
+        padding: 0 10px;
64
+        line-height: 36px;
65
+        background: #FBAB57;
66
+        color: #333;
67
+        margin-right: 10px;
68
+      }
69
+    }
70
+    > .ShareInfo {
71
+      font-size: 0;
72
+      white-space: nowrap;
73
+      margin-top: 10px;
74
+      > text {
75
+        display: inline-block;
76
+        vertical-align: middle;
77
+        font-size: 24px;
78
+        color: #333;
79
+        line-height: 40px;
80
+        margin-left: 10px;
81
+        &:first-child {
82
+          margin-left: 0;
83
+        }
84
+      }
85
+      > .Users {
86
+        display: inline-block;
87
+        vertical-align: middle;
88
+        font-size: 0;
89
+        white-space: nowrap;
90
+        > view {
91
+          display: inline-block;
92
+          vertical-align: middle;
93
+          width: 40px;
94
+          height: 40px;
95
+          background: #eee;
96
+          border-radius: 100%;
97
+          margin-left: -10px;
98
+          position: relative;
99
+          &:nth-child(1) {
100
+            z-index: 1;
101
+            margin-left: 0;
102
+          }
103
+          &:nth-child(2) {
104
+            z-index: 2;
105
+          }
106
+          &:nth-child(3) {
107
+            z-index: 3;
108
+          }
109
+        }
110
+      }
111
+    }
112
+  }
113
+}

+ 27
- 0
src/pages/mine/components/MyCustomerListItem/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import Taro from '@tarojs/taro'
4
+
5
+export default function MyCustomerListItem (props) {
6
+  const { Data = {} } = props
7
+  return (
8
+    <view className='components MyCustomerListItem flex-h' onClick={() => { Taro.navigateTo({ url: `/pages/index/activityDetail/index?id=${Data.id}` }) }}>
9
+      <view className='Img'>
10
+        {
11
+          Data.img &&
12
+          <Image mode='aspectFill' className='centerLabel' src={Data.img || null} />
13
+        }
14
+      </view>
15
+      <view className='flex-item'>
16
+        <view className='Name flex-h'>
17
+          <text className='flex-item'>徐慧慧</text>
18
+          <text>11/11 15:12:58收回</text>
19
+        </view>
20
+        <view className='Time flex-h'>
21
+          <text className='flex-item'>136 **** 9434</text>
22
+          <text>跟进状态</text>
23
+        </view>
24
+      </view>
25
+    </view>
26
+  )
27
+}

+ 52
- 0
src/pages/mine/components/MyCustomerListItem/index.scss View File

1
+.components.MyCustomerListItem {
2
+  position: relative;
3
+  overflow: hidden;
4
+  padding: 12px 0;
5
+  border-bottom: 2px solid rgba(0, 0, 0, 0.12);
6
+  align-items: center;
7
+  >.Img {
8
+    width: 92px;
9
+    height: 92px;
10
+    min-width: 92px;
11
+    background: #eee;
12
+    position: relative;
13
+    overflow: hidden;
14
+    border-radius: 100%;
15
+    >image {
16
+      width: 100%;
17
+      height: 100%;
18
+    }
19
+  }
20
+  >.flex-item {
21
+    position: relative;
22
+    overflow: hidden;
23
+    margin-left: 30px;
24
+    >view {
25
+      align-items: center;
26
+      &.Name {
27
+        >text {
28
+          font-size: 20px;
29
+          color: #999;
30
+          white-space: nowrap;
31
+          line-height: 1;
32
+          &:first-child {
33
+            font-size: 32px;
34
+            color: #333;
35
+          }
36
+        }
37
+      }
38
+      &.Time {
39
+        margin-top: 16px;
40
+        >text {
41
+          font-size: 28px;
42
+          color: #666;
43
+          white-space: nowrap;
44
+          line-height: 1;
45
+          &.active {
46
+            color: #193C83;
47
+          }
48
+        }
49
+      }
50
+    }
51
+  }
52
+}

+ 36
- 0
src/pages/mine/components/MyShareListItem/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import './index.scss'
3
+import Taro from '@tarojs/taro'
4
+
5
+export default function MyShareListItem (props) {
6
+  const { Data = {} } = props
7
+  return (
8
+    <view className='components MyShareListItem flex-h' onClick={() => {Taro.navigateTo({ url: `/pages/index/buildingDetail/index?id=${Data.id}` })}}>
9
+      <view className='Img'>
10
+        <view>
11
+          {
12
+            Data.img &&
13
+            <Image mode='aspectFill' className='centerLabel' src={Data.img || null} />
14
+          }
15
+        </view>
16
+      </view>
17
+      <view className='flex-item'>
18
+        <view className='Name flex-h'>
19
+          <view className='flex-item'>
20
+            <text>楼盘名称</text>
21
+          </view>
22
+        </view>
23
+        <view className='Price'>约<text>20000m²</text></view>
24
+        <text className='Address'>楼盘地址sdsdsdsdsds</text>
25
+        <view className='ShareInfo'>
26
+          <view className='Users'>
27
+            <view></view>
28
+            <view></view>
29
+            <view></view>
30
+          </view>
31
+          <text>...9人查看</text>
32
+        </view>
33
+      </view>
34
+    </view>
35
+  )
36
+}

+ 109
- 0
src/pages/mine/components/MyShareListItem/index.scss View File

1
+.components.MyShareListItem {
2
+  padding-bottom: 30px;
3
+  border-bottom: 2px solid rgba(0, 0, 0, 0.1);
4
+  > .Img {
5
+    width: 260px;
6
+    position: relative;
7
+    overflow: hidden;
8
+    margin-right: 20px;
9
+    > view {
10
+      width: 100%;
11
+      padding-bottom: 60%;
12
+      background: #eee;
13
+      position: relative;
14
+      overflow: hidden;
15
+      border-radius: 8px;
16
+      > image {
17
+        width: 100%;
18
+        height: 100%;
19
+      }
20
+    }
21
+  }
22
+  > .flex-item {
23
+    > .Name {
24
+      align-items: center;
25
+      > .flex-item {
26
+        margin-right: 10px;
27
+        > text {
28
+          display: block;
29
+          font-size: 28px;
30
+          font-weight: bold;
31
+          color: #000;
32
+          line-height: 30px;
33
+          white-space: nowrap;
34
+          overflow: hidden;
35
+          text-overflow: ellipsis;
36
+        }
37
+      }
38
+      > text {
39
+        font-size: 24px;
40
+        line-height: 40px;
41
+        color: #000;
42
+        &:last-child {
43
+          color: red;
44
+        }
45
+      }
46
+    }
47
+    >.Price {
48
+      font-size: 22px;
49
+      line-height: 28px;
50
+      font-weight: bold;
51
+      margin-top: 8px;
52
+      >text {
53
+        color: #FC2C2C;
54
+      }
55
+    }
56
+    > .Address {
57
+      display: block;
58
+      font-size: 22px;
59
+      color: #666;
60
+      line-height: 28px;
61
+      white-space: nowrap;
62
+      overflow: hidden;
63
+      text-overflow: ellipsis;
64
+      margin-top: 8px;
65
+    }
66
+    > .ShareInfo {
67
+      font-size: 0;
68
+      white-space: nowrap;
69
+      margin-top: 10px;
70
+      > text {
71
+        display: inline-block;
72
+        vertical-align: middle;
73
+        font-size: 24px;
74
+        color: #333;
75
+        line-height: 40px;
76
+        margin-left: 10px;
77
+        &:first-child {
78
+          margin-left: 0;
79
+        }
80
+      }
81
+      > .Users {
82
+        display: inline-block;
83
+        vertical-align: middle;
84
+        font-size: 0;
85
+        white-space: nowrap;
86
+        > view {
87
+          display: inline-block;
88
+          vertical-align: middle;
89
+          width: 40px;
90
+          height: 40px;
91
+          background: #eee;
92
+          border-radius: 100%;
93
+          margin-left: -10px;
94
+          position: relative;
95
+          &:nth-child(1) {
96
+            z-index: 1;
97
+            margin-left: 0;
98
+          }
99
+          &:nth-child(2) {
100
+            z-index: 2;
101
+          }
102
+          &:nth-child(3) {
103
+            z-index: 3;
104
+          }
105
+        }
106
+      }
107
+    }
108
+  }
109
+}

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

1
+export default {
2
+  navigationBarTitleText: '意见反馈'
3
+}

+ 37
- 0
src/pages/mine/feedBack/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import { ScrollView, Input } from '@tarojs/components'
5
+import '../../../assets/css/iconfont.css'
6
+
7
+export default withLayout((props) => {
8
+
9
+  // const [PageProps] = useState(props)
10
+
11
+  return (
12
+    <view className='Page feedBack flex-v'>
13
+
14
+      <view className='flex-item'>
15
+        <view>
16
+          <ScrollView scroll-y={true} refresher-enabled={false} refresher-background='#fff'>
17
+            <view className='PageContent'>
18
+              <text className='Title'>问题描述</text>
19
+              <view>
20
+                <Input placeholder='请填写10个字以上的问题描述以便我们提供更好的帮助'></Input>
21
+              </view>
22
+              <text className='Title'>联系方式(选填)</text>
23
+              <view>
24
+                <Input placeholder='输入邮箱/手机号方便联系'></Input>
25
+              </view>
26
+            </view>
27
+          </ScrollView>
28
+        </view>
29
+      </view>
30
+
31
+      <view className='Bottom'>
32
+        <text>提交</text>
33
+      </view>
34
+
35
+    </view>
36
+  )
37
+})

+ 56
- 0
src/pages/mine/feedBack/index.scss View File

1
+.Page.feedBack {
2
+  background: #fff;
3
+  > .flex-item {
4
+    position: relative;
5
+    > view {
6
+      width: 100%;
7
+      position: absolute;
8
+      left: 0;
9
+      top: 0;
10
+      bottom: 0;
11
+      > scroll-view {
12
+        width: 100%;
13
+        height: 100%;
14
+        .PageContent {
15
+          position: relative;
16
+          overflow: hidden;
17
+          min-height: 100vh;
18
+          > .Title {
19
+            font-size: 34px;
20
+            font-weight: bold;
21
+            color: #333;
22
+            display: block;
23
+            text-indent: 38px;
24
+            margin-top: 30px;
25
+          }
26
+          > view {
27
+            padding: 15px 38px;
28
+            border-bottom: 2px solid rgba(0, 0, 0, 0.12);
29
+            margin-top: 10px;
30
+            > input {
31
+              display: block;
32
+              width: 100%;
33
+              background: none;
34
+              font-size: 26px;
35
+              line-height: 30px;
36
+              height: 30px;
37
+            }
38
+          }
39
+        }
40
+      }
41
+    }
42
+  }
43
+  >.Bottom {
44
+    padding: 40px;
45
+    >text {
46
+      display: block;
47
+      text-align: center;
48
+      font-size: 32px;
49
+      line-height: 92px;
50
+      color: #fff;
51
+      font-weight: bold;
52
+      background: #193C83;
53
+      border-radius: 92px;
54
+    }
55
+  }
56
+}

+ 12
- 3
src/pages/mine/index.jsx View File

5
 import { ScrollView, Image } from '@tarojs/components'
5
 import { ScrollView, Image } from '@tarojs/components'
6
 import '../../assets/css/iconfont.css'
6
 import '../../assets/css/iconfont.css'
7
 import MineMenuList from './tabData'
7
 import MineMenuList from './tabData'
8
+import Taro from '@tarojs/taro'
8
 
9
 
9
 export default withLayout((props) => {
10
 export default withLayout((props) => {
10
 
11
 
28
     }
29
     }
29
   }, [IsPull])
30
   }, [IsPull])
30
 
31
 
32
+  const MenuClick = (router) => {
33
+    return () => {
34
+      if (router) {
35
+        Taro.navigateTo({ url: router })
36
+      }
37
+    }
38
+  }
39
+
31
   return (
40
   return (
32
     <view className='Page Mine'>
41
     <view className='Page Mine'>
33
 
42
 
55
                     <view>
64
                     <view>
56
                       <text>用户姓名</text>
65
                       <text>用户姓名</text>
57
                       <view>
66
                       <view>
58
-                        <text className='iconfont icon-bianji'></text>
59
-                        <text>个人信息资料修改</text>
67
+                        <text className='iconfont icon-bianji' onClick={() => { Taro.navigateTo({ url: `/pages/mine/userInfo/index` }) }}></text>
68
+                        <text onClick={() => { Taro.navigateTo({ url: `/pages/mine/userInfo/index` }) }}>个人信息资料修改</text>
60
                       </view>
69
                       </view>
61
                     </view>
70
                     </view>
62
                     <text className='Role'>{UserRole === 1 ? '客户' : UserRole === 2 ? '经纪人' : UserRole === 3 ? '置业顾问' : '驻场管理'}</text>
71
                     <text className='Role'>{UserRole === 1 ? '客户' : UserRole === 2 ? '经纪人' : UserRole === 3 ? '置业顾问' : '驻场管理'}</text>
73
                     <view>
82
                     <view>
74
                       {
83
                       {
75
                         item.map((subItem, subIndex) => (
84
                         item.map((subItem, subIndex) => (
76
-                          <view key={`MenuItem-${index}-${subIndex}`} className='flex-h'>
85
+                          <view key={`MenuItem-${index}-${subIndex}`} className='flex-h' onClick={MenuClick(subItem.router)}>
77
                             <view className='Icon'>
86
                             <view className='Icon'>
78
                               <Image mode='aspectFit' className='centerLabel' src={subItem.icon} />
87
                               <Image mode='aspectFit' className='centerLabel' src={subItem.icon} />
79
                             </view>
88
                             </view>

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

1
+export default {
2
+  navigationBarTitleText: '我的活动'
3
+}

+ 54
- 0
src/pages/mine/myActivity/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import { ScrollView } from '@tarojs/components'
5
+import '../../../assets/css/iconfont.css'
6
+import MyActivityListItem from '../components/MyActivityListItem/index'
7
+
8
+export default withLayout((props) => {
9
+
10
+  // const [PageProps] = useState(props)
11
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
12
+  const [IsPull, setPull] = useState(false)
13
+  const [PullTimer, setPullTimer] = useState(null)
14
+
15
+  const PageRefresh = () => { // 页面下拉刷新回调
16
+    setPull(true)
17
+  }
18
+
19
+  useEffect(() => { // 下拉刷新触发
20
+    if (IsPull) {
21
+      clearTimeout(PullTimer)
22
+      setPullTimer(setTimeout(() => {
23
+        setPull(false)
24
+      }, 2000))
25
+    }
26
+  }, [IsPull])
27
+
28
+  return (
29
+    <view className='Page myActivity'>
30
+
31
+      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#f8f8f8'>
32
+        <view className='PageContent'>
33
+          <view className='List'>
34
+            {
35
+              PageList.map((item, index) => (
36
+                <view>
37
+                  <text>2021-05-23 12:00</text>
38
+                  <MyActivityListItem Data={item} key={`MyActivityListItem-${index}`}></MyActivityListItem>
39
+                </view>
40
+              ))
41
+            }
42
+          </view>
43
+
44
+          {/* bottom */}
45
+          <view className='PageBottom'>
46
+            <text>已经到底了~</text>
47
+          </view>
48
+
49
+        </view>
50
+      </ScrollView>
51
+
52
+    </view>
53
+  )
54
+})

+ 38
- 0
src/pages/mine/myActivity/index.scss View File

1
+.Page.myActivity {
2
+  background: #f8f8f8;
3
+  > scroll-view {
4
+    width: 100%;
5
+    height: 100%;
6
+    .PageContent {
7
+      position: relative;
8
+      overflow: hidden;
9
+      min-height: 100vh;
10
+      padding: 0 30px;
11
+      >.List {
12
+        >view {
13
+          margin-top: 30px;
14
+          position: relative;
15
+          overflow: visible;
16
+          >text {
17
+            display: block;
18
+            font-size: 28px;
19
+            line-height: 40px;
20
+            margin-bottom: 30px;
21
+          }
22
+        }
23
+      }
24
+      > .PageBottom {
25
+        text-align: center;
26
+        font-size: 0;
27
+        white-space: nowrap;
28
+        > text {
29
+          display: inline-block;
30
+          font-size: 28px;
31
+          color: #666;
32
+          line-height: 40px;
33
+          margin: 20px auto;
34
+        }
35
+      }
36
+    }
37
+  }
38
+}

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

1
+export default {
2
+  navigationBarTitleText: '我的收藏'
3
+}

+ 73
- 0
src/pages/mine/myCollect/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import '../../../assets/css/iconfont.css'
5
+import MyCollectForBuilding from '../components/MyCollectForBuilding/index'
6
+import MyCollectForNews from '../components/MyCollectForNews/index'
7
+import MyCollectForActivity from '../components/MyCollectForActivity/index'
8
+import MyCollectForCourse from '../components/MyCollectForCourse/index'
9
+
10
+export default withLayout((props) => {
11
+
12
+  // const [PageProps] = useState(props)
13
+  const [MenuList] = useState([
14
+    { name: '项目', id: 1 },
15
+    { name: '资讯', id: 2 },
16
+    { name: '活动', id: 3 },
17
+    { name: '课程', id: 4 }
18
+  ])
19
+  const [CurrentMenuId, setCurrentMenuId] = useState(1)
20
+
21
+  const CutMenu = (id) => {
22
+    return () => {
23
+      if (id !== CurrentMenuId) {
24
+        setCurrentMenuId(id)
25
+      }
26
+    }
27
+  }
28
+
29
+  return (
30
+    <view className='Page MyCollect flex-v'>
31
+      <view className='Menu'>
32
+        <view className='flex-h'>
33
+          {
34
+            MenuList.map((item, index) => (
35
+              <view className={item.id === CurrentMenuId ? 'flex-item active' : 'flex-item'} key={`MenuItem-${index}`} onClick={CutMenu(item.id)}>
36
+                <text>{item.name}</text>
37
+              </view>
38
+            ))
39
+          }
40
+        </view>
41
+      </view>
42
+      <view className='flex-item'>
43
+        <view>
44
+
45
+          {/* 项目 */}
46
+          {
47
+            CurrentMenuId === 1 &&
48
+            <MyCollectForBuilding></MyCollectForBuilding>
49
+          }
50
+
51
+          {/* 资讯 */}
52
+          {
53
+            CurrentMenuId === 2 &&
54
+            <MyCollectForNews></MyCollectForNews>
55
+          }
56
+
57
+          {/* 活动 */}
58
+          {
59
+            CurrentMenuId === 3 &&
60
+            <MyCollectForActivity></MyCollectForActivity>
61
+          }
62
+
63
+          {/* 课程 */}
64
+          {
65
+            CurrentMenuId === 4 &&
66
+            <MyCollectForCourse></MyCollectForCourse>
67
+          }
68
+          
69
+        </view>
70
+      </view>
71
+    </view>
72
+  )
73
+})

+ 54
- 0
src/pages/mine/myCollect/index.scss View File

1
+.Page.MyCollect {
2
+  background: #fff;
3
+  >.Menu {
4
+    padding: 0 30px;
5
+    position: relative;
6
+    overflow: hidden;
7
+    >view {
8
+      position: relative;
9
+      overflow: hidden;
10
+      align-items: center;
11
+      border-bottom: 2px solid rgba(0, 0, 0, 0.12);
12
+      >view {
13
+        text-align: center;
14
+        font-size: 0;
15
+        &.active {
16
+          >text {
17
+            font-weight: bold;
18
+            &::after {
19
+              content: '';
20
+              width: 100%;
21
+              height: 4px;
22
+              position: absolute;
23
+              left: 0;
24
+              bottom: 0;
25
+              background: #193C83;
26
+              display: block;
27
+            }
28
+          }
29
+        }
30
+        >text {
31
+          font-size: 32px;
32
+          line-height: 1;
33
+          display: inline-block;
34
+          position: relative;
35
+          padding: 20px 0;
36
+        }
37
+      }
38
+    }
39
+  }
40
+  > .flex-item {
41
+    position: relative;
42
+    > view {
43
+      width: 100%;
44
+      position: absolute;
45
+      left: 0;
46
+      top: 0;
47
+      bottom: 0;
48
+      >view {
49
+        width: 100%;
50
+        height: 100%;
51
+      }
52
+    }
53
+  }
54
+}

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

1
+export default {
2
+  navigationBarTitleText: '我的客户'
3
+}

+ 73
- 0
src/pages/mine/myCustomer/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import { ScrollView } from '@tarojs/components'
5
+import '../../../assets/css/iconfont.css'
6
+import MyCustomerListItem from '../components/MyCustomerListItem/index'
7
+
8
+export default withLayout((props) => {
9
+
10
+  // const [PageProps] = useState(props)
11
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
12
+  const [IsPull, setPull] = useState(false)
13
+  const [PullTimer, setPullTimer] = useState(null)
14
+
15
+  const PageRefresh = () => { // 页面下拉刷新回调
16
+    setPull(true)
17
+  }
18
+
19
+  useEffect(() => { // 下拉刷新触发
20
+    if (IsPull) {
21
+      clearTimeout(PullTimer)
22
+      setPullTimer(setTimeout(() => {
23
+        setPull(false)
24
+      }, 2000))
25
+    }
26
+  }, [IsPull])
27
+
28
+  return (
29
+    <view className='Page myCustomer flex-v'>
30
+
31
+      <view className='Filter'>
32
+        <view className='flex-h'>
33
+          <view className='Time'>
34
+            <text>全部时间</text>
35
+            <text className='iconfont icon-sanjiaoxingdown'></text>
36
+          </view>
37
+          <view className='Type'>
38
+            <text>全部类型</text>
39
+            <text className='iconfont icon-sanjiaoxingdown'></text>
40
+          </view>
41
+          <view className='flex-item'></view>
42
+          <text className='iconfont icon-sousuo'></text>
43
+        </view>
44
+      </view>
45
+
46
+      <view className='flex-item'>
47
+        <view>
48
+
49
+          <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
50
+            <view className='PageContent'>
51
+              <view className='List'>
52
+                {
53
+                  PageList.map((item, index) => (
54
+                    <view>
55
+                      <MyCustomerListItem Data={item} key={`MyCustomerListItem-${index}`}></MyCustomerListItem>
56
+                    </view>
57
+                  ))
58
+                }
59
+              </view>
60
+
61
+              {/* bottom */}
62
+              <view className='PageBottom'>
63
+                <text>已经到底了~</text>
64
+              </view>
65
+
66
+            </view>
67
+          </ScrollView>
68
+        </view>
69
+      </view>
70
+
71
+    </view>
72
+  )
73
+})

+ 98
- 0
src/pages/mine/myCustomer/index.scss View File

1
+.Page.myCustomer {
2
+  background: #fff;
3
+  > .Filter {
4
+    position: relative;
5
+    overflow: hidden;
6
+    padding: 0 30px;
7
+    > view {
8
+      align-items: center;
9
+      border-bottom: 2px solid rgba(0, 0, 0, 0.12);
10
+      padding: 20px 0;
11
+      >view {
12
+        font-size: 0;
13
+        white-space: nowrap;
14
+        padding-right: 30px;
15
+        position: relative;
16
+        overflow: hidden;
17
+        margin-left: 30px;
18
+        &:first-child {
19
+          margin-left: 0;
20
+        }
21
+        &::after {
22
+          content: '';
23
+          width: 2px;
24
+          height: 30px;
25
+          background: rgba(0, 0, 0, 0.12);
26
+          display: block;
27
+          position: absolute;
28
+          right: 0;
29
+          top: 0;
30
+        }
31
+        &:nth-child(2) {
32
+          &::after {
33
+            display: none;
34
+          }
35
+        }
36
+        >text {
37
+          display: inline-block;
38
+          vertical-align: middle;
39
+          font-size: 30px;
40
+          line-height: 1;
41
+          margin-left: 10px;
42
+          &:first-child {
43
+            margin-left: 0;
44
+          }
45
+          &.iconfont {
46
+            font-size: 20px;
47
+            color: #666;
48
+          }
49
+        }
50
+      }
51
+      >text {
52
+        font-size: 40px;
53
+        color: #666;
54
+      }
55
+    }
56
+  }
57
+  > .flex-item {
58
+    position: relative;
59
+    overflow: hidden;
60
+    > view {
61
+      width: 100%;
62
+      position: absolute;
63
+      left: 0;
64
+      top: 0;
65
+      bottom: 0;
66
+      overflow: hidden;
67
+      > scroll-view {
68
+        width: 100%;
69
+        height: 100%;
70
+        .PageContent {
71
+          position: relative;
72
+          overflow: hidden;
73
+          min-height: 100vh;
74
+          padding: 0 30px;
75
+          > .List {
76
+            > view {
77
+              margin-top: 20px;
78
+              position: relative;
79
+              overflow: visible;
80
+            }
81
+          }
82
+          > .PageBottom {
83
+            text-align: center;
84
+            font-size: 0;
85
+            white-space: nowrap;
86
+            > text {
87
+              display: inline-block;
88
+              font-size: 28px;
89
+              color: #666;
90
+              line-height: 40px;
91
+              margin: 20px auto;
92
+            }
93
+          }
94
+        }
95
+      }
96
+    }
97
+  }
98
+}

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

1
+export default {
2
+  navigationBarTitleText: '我的分享'
3
+}

+ 51
- 0
src/pages/mine/myShare/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import { ScrollView } from '@tarojs/components'
5
+import '../../../assets/css/iconfont.css'
6
+import MyShareListItem from '../components/MyShareListItem/index'
7
+
8
+export default withLayout((props) => {
9
+
10
+  // const [PageProps] = useState(props)
11
+  const [PageList, setPageList] = useState(['', '', '', '', '', '', '', '', '', '', '', '', ''])
12
+  const [IsPull, setPull] = useState(false)
13
+  const [PullTimer, setPullTimer] = useState(null)
14
+
15
+  const PageRefresh = () => { // 页面下拉刷新回调
16
+    setPull(true)
17
+  }
18
+
19
+  useEffect(() => { // 下拉刷新触发
20
+    if (IsPull) {
21
+      clearTimeout(PullTimer)
22
+      setPullTimer(setTimeout(() => {
23
+        setPull(false)
24
+      }, 2000))
25
+    }
26
+  }, [IsPull])
27
+
28
+  return (
29
+    <view className='Page MyShare'>
30
+
31
+      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
32
+        <view className='PageContent'>
33
+          <view className='List'>
34
+            {
35
+              PageList.map((item, index) => (
36
+                <MyShareListItem Data={item} key={`MyShareListItem-${index}`}></MyShareListItem>
37
+              ))
38
+            }
39
+          </view>
40
+
41
+          {/* bottom */}
42
+          <view className='PageBottom'>
43
+            <text>已经到底了~</text>
44
+          </view>
45
+
46
+        </view>
47
+      </ScrollView>
48
+
49
+    </view>
50
+  )
51
+})

+ 30
- 0
src/pages/mine/myShare/index.scss View File

1
+.Page.MyShare {
2
+  background: #fff;
3
+  > scroll-view {
4
+    width: 100%;
5
+    height: 100%;
6
+    .PageContent {
7
+      position: relative;
8
+      overflow: hidden;
9
+      min-height: 100vh;
10
+      padding: 0 30px;
11
+      >.List {
12
+        >view {
13
+          margin-top: 30px;
14
+        }
15
+      }
16
+      > .PageBottom {
17
+        text-align: center;
18
+        font-size: 0;
19
+        white-space: nowrap;
20
+        > text {
21
+          display: inline-block;
22
+          font-size: 28px;
23
+          color: #666;
24
+          line-height: 40px;
25
+          margin: 20px auto;
26
+        }
27
+      }
28
+    }
29
+  }
30
+}

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

1
+export default {
2
+  navigationBarTitleText: '合作渠道'
3
+}

+ 107
- 0
src/pages/mine/partnerChannel/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import { ScrollView, Image } from '@tarojs/components'
5
+import '../../../assets/css/iconfont.css'
6
+
7
+export default withLayout((props) => {
8
+
9
+  // const [PageProps] = useState(props)
10
+  const [RankingList, setRankingList] = useState([
11
+    { name: '范丞丞', id: '', icon: '', num: '5', department: '销售部' },
12
+    { name: '范丞丞', id: '', icon: '', num: '6', department: '销售部' },
13
+    { name: '范丞丞', id: '', icon: '', num: '3', department: '销售部' }
14
+  ])
15
+  const [IsPull, setPull] = useState(false)
16
+  const [PullTimer, setPullTimer] = useState(null)
17
+
18
+  const PageRefresh = () => { // 页面下拉刷新回调
19
+    setPull(true)
20
+  }
21
+
22
+  useEffect(() => { // 下拉刷新触发
23
+    if (IsPull) {
24
+      clearTimeout(PullTimer)
25
+      setPullTimer(setTimeout(() => {
26
+        setPull(false)
27
+      }, 2000))
28
+    }
29
+  }, [IsPull])
30
+
31
+  return (
32
+    <view className='Page partnerChannel'>
33
+      <ScrollView scroll-y={true} refresher-enabled={true} refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
34
+        <view className='PageContent'>
35
+
36
+          {/* 排行榜 */}
37
+          <view className='Ranking'>
38
+            <view className='Top flex-h'>
39
+              <text className='flex-item'>龙虎榜</text>
40
+              <Image mode='heightFix' src={require('../../../assets/mine-icon23.png')}></Image>
41
+            </view>
42
+            <view className='List flex-h'>
43
+              {
44
+                RankingList.map((item, index) => (
45
+                  <view className={index === 1 ? 'flex-item active' : 'flex-item'} key={`ListItem-${index}`}>
46
+                    {
47
+                      index === 0 &&
48
+                      <Image mode='heightFix' src={require('../../../assets/mine-icon21.png')}></Image>
49
+                    }
50
+                    {
51
+                      index === 1 &&
52
+                      <Image mode='heightFix' src={require('../../../assets/mine-icon20.png')}></Image>
53
+                    }
54
+                    {
55
+                      index === 2 &&
56
+                      <Image mode='heightFix' src={require('../../../assets/mine-icon22.png')}></Image>
57
+                    }
58
+                    <view className='Icon'>
59
+                      <Image mode='aspectFill' src={item.icon || null}></Image>
60
+                    </view>
61
+                    <view className='Index'>
62
+                      <text>{item.name}</text>
63
+                      <text>{index === 0 ? 2 : index === 1 ? 1 : 3}</text>
64
+                    </view>
65
+                    <view className='Num'>
66
+                      <text>{item.department}</text>
67
+                      <text>{item.num}</text>
68
+                    </view>
69
+                  </view>
70
+                ))
71
+              }
72
+            </view>
73
+          </view>
74
+
75
+          {/* 销售简报 */}
76
+          <view className='SaleNews'>
77
+            <view className='Top flex-h'>
78
+              <text>销售简报</text>
79
+              <Image mode='heightFix' src={require('../../../assets/mine-icon23.png')}></Image>
80
+              <view className='flex-item'></view>
81
+              <text>更多</text>
82
+              <text className='iconfont icon-jiantouright'></text>
83
+            </view>
84
+            <view className='List'>
85
+              <view className='flex-h'>
86
+                <text className='flex-item'>新增客户</text>
87
+                <text>34人</text>
88
+                <text className='iconfont icon-jiantouright'></text>
89
+              </view>
90
+              <view className='flex-h'>
91
+                <text className='flex-item'>跟进客户</text>
92
+                <text>34人</text>
93
+                <text className='iconfont icon-jiantouright'></text>
94
+              </view>
95
+              <view className='flex-h'>
96
+                <text className='flex-item'>成交客户</text>
97
+                <text>34人</text>
98
+                <text className='iconfont icon-jiantouright'></text>
99
+              </view>
100
+            </view>
101
+          </view>
102
+
103
+        </view>
104
+      </ScrollView>
105
+    </view>
106
+  )
107
+})

+ 176
- 0
src/pages/mine/partnerChannel/index.scss View File

1
+.Page.partnerChannel {
2
+  background: #fff;
3
+  > scroll-view {
4
+    width: 100%;
5
+    height: 100%;
6
+    .PageContent {
7
+      position: relative;
8
+      overflow: visible;
9
+      min-height: 100vh;
10
+      padding: 0 30px;
11
+      >view {
12
+        box-shadow: 0 0 6px 6px rgba(0, 0, 0, 0.03);
13
+        position: relative;
14
+        overflow: hidden;
15
+        background: #fff;
16
+        border-radius: 16px;
17
+        margin-top: 30px;
18
+        &.Ranking {
19
+          >.Top {
20
+            align-items: center;
21
+            padding: 0 30px;
22
+            margin-top: 30px;
23
+            >text {
24
+              font-size: 34px;
25
+              color: #333;
26
+              line-height: 1;
27
+              font-weight: bold;
28
+            }
29
+            >image {
30
+              height: 34px;
31
+            }
32
+          }
33
+          >.List {
34
+            position: relative;
35
+            overflow: visible;
36
+            margin-top: 30px;
37
+            >.flex-item {
38
+              position: relative;
39
+              overflow: hidden;
40
+              z-index: 1;
41
+              &.active {
42
+                z-index: 2;
43
+                border-radius: 16px 16px 0 0;
44
+                box-shadow: 0 0 6px 6px rgba(0, 0, 0, 0.03);
45
+                >image {
46
+                  margin-top: 30px;
47
+                }
48
+                >.Icon {
49
+                  width: 120px;
50
+                  height: 120px;
51
+                  margin-top: 24px;
52
+                }
53
+                >.Index {
54
+                  margin-top: 20px;
55
+                  >text {
56
+                    &:first-child {
57
+                      font-size: 24px;
58
+                    }
59
+                  }
60
+                }
61
+                >.Num {
62
+                  margin-top: 30px;
63
+                  >text {
64
+                    font-size: 24px;
65
+                  }
66
+                }
67
+              }
68
+              >image {
69
+                height: 66px;
70
+                display: block;
71
+                margin: 60px auto 0;
72
+              }
73
+              >.Icon {
74
+                width: 100px;
75
+                height: 100px;
76
+                position: relative;
77
+                overflow: hidden;
78
+                border-radius: 100%;
79
+                background: #eee;
80
+                margin: 34px auto 0;
81
+              }
82
+              >.Index {
83
+                width: 148px;
84
+                text-align: center;
85
+                white-space: nowrap;
86
+                position: relative;
87
+                overflow: hidden;
88
+                margin: 30px auto 0;
89
+                background: #193C83;
90
+                border-radius: 34px;
91
+                font-size: 0;
92
+                >text {
93
+                  display: inline-block;
94
+                  color: #fff;
95
+                  font-size: 20px;
96
+                  font-weight: bold;
97
+                  line-height: 34px;
98
+                  text-indent: 34px;
99
+                  &:last-child {
100
+                    width: 34px;
101
+                    line-height: 34px;
102
+                    border-radius: 34px;
103
+                    background: #FA9730;
104
+                    position: absolute;
105
+                    left: 0;
106
+                    top: 0;
107
+                    text-align: center;
108
+                    text-indent: 0;
109
+                  }
110
+                }
111
+              }
112
+              >.Num {
113
+                font-size: 0;
114
+                white-space: nowrap;
115
+                text-align: center;
116
+                margin: 30px auto 42px;
117
+                >text {
118
+                  display: inline-block;
119
+                  vertical-align: middle;
120
+                  font-size: 20px;
121
+                  font-weight: bold;
122
+                  color: #333;
123
+                  line-height: 1;
124
+                }
125
+              }
126
+            }
127
+          }
128
+        }
129
+        &.SaleNews {
130
+          >.Top {
131
+            align-items: center;
132
+            margin-top: 40px;
133
+            padding: 0 20px;
134
+            >text {
135
+              font-size: 24px;
136
+              color: #333;
137
+              &:first-child {
138
+                font-size: 34px;
139
+                font-weight: bold;
140
+                line-height: 1;
141
+              }
142
+            }
143
+            >image {
144
+              height: 34px;
145
+              margin-left: 30px;
146
+            }
147
+          }
148
+          >.List {
149
+            padding: 0 20px;
150
+            >view {
151
+              align-items: center;
152
+              border-bottom: 2px solid rgba(0, 0, 0, 0.12);
153
+              padding: 30px 0;
154
+              margin-top: 20px;
155
+              &:last-child {
156
+                border-bottom: none;
157
+              }
158
+              >text {
159
+                font-size: 30px;
160
+                font-weight: bold;
161
+                line-height: 1;
162
+                color: #193C83;
163
+                &.iconfont {
164
+                  font-weight: normal;
165
+                }
166
+                &:first-child {
167
+                  color: #333;
168
+                }
169
+              }
170
+            }
171
+          }
172
+        }
173
+      }
174
+    }
175
+  }
176
+}

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

1
+export default {
2
+  navigationBarTitleText: '推荐客户'
3
+}

+ 71
- 0
src/pages/mine/recommendUser/index.jsx View File

1
+import React, { useState, useEffect } from 'react'
2
+import withLayout from '@/layout'
3
+import './index.scss'
4
+import { ScrollView, Input, Image } from '@tarojs/components'
5
+import '../../../assets/css/iconfont.css'
6
+
7
+export default withLayout((props) => {
8
+
9
+  // const [PageProps] = useState(props)
10
+
11
+  return (
12
+    <view className='Page recommendUser'>
13
+
14
+      <ScrollView scroll-y={true} refresher-enabled={false} refresher-background='#fff'>
15
+        <view className='PageContent'>
16
+
17
+          <text>客户姓名</text>
18
+          <view className='FormLine flex-h'>
19
+            <view className='flex-item'>
20
+              <Input placeholder='请输入客户真实姓名'></Input>
21
+            </view>
22
+          </view>
23
+
24
+          <text>客户电话</text>
25
+          <view className='FormLine flex-h'>
26
+            <view className='flex-item'>
27
+              <Input placeholder='请输入手机号码'></Input>
28
+            </view>
29
+          </view>
30
+
31
+          <text>客户性别</text>
32
+          <view className='FormLine flex-h'>
33
+            <view className='flex-item'>
34
+              <text>请选择</text>
35
+            </view>
36
+            <text className='iconfont icon-jiantoudown'></text>
37
+          </view>
38
+
39
+          <text>意向楼盘</text>
40
+          <view className='FormLine flex-h'>
41
+            <view className='flex-item'>
42
+              <Input placeholder='请输入意向楼盘'></Input>
43
+            </view>
44
+          </view>
45
+
46
+          <text>置业顾问(选填)</text>
47
+          <view className='FormLine flex-h'>
48
+            <view className='flex-item'>
49
+              <text>请选择</text>
50
+            </view>
51
+            <Image mode='heightFix' src={require('../../../assets/mine-icon19.png')}></Image>
52
+            <text>选择</text>
53
+          </view>
54
+
55
+          <text>备注</text>
56
+          <view className='FormLine flex-h'>
57
+            <view className='flex-item'>
58
+              <Input placeholder='补充说明(选填)'></Input>
59
+            </view>
60
+          </view>
61
+
62
+          <view className='Btn'>
63
+            <text>提交</text>
64
+          </view>
65
+
66
+        </view>
67
+      </ScrollView>
68
+
69
+    </view>
70
+  )
71
+})

+ 71
- 0
src/pages/mine/recommendUser/index.scss View File

1
+.Page.recommendUser {
2
+  background: #fff;
3
+  height: 100vh;
4
+  width: 100%;
5
+  > scroll-view {
6
+    width: 100%;
7
+    height: 100%;
8
+    .PageContent {
9
+      position: relative;
10
+      overflow: hidden;
11
+      min-height: 100vh;
12
+      > text {
13
+        font-size: 34px;
14
+        font-weight: bold;
15
+        color: #333;
16
+        display: block;
17
+        text-indent: 40px;
18
+        margin-top: 30px;
19
+      }
20
+      > .flex-h {
21
+        padding: 20px 40px;
22
+        border-bottom: 2px solid rgba(0, 0, 0, 0.12);
23
+        margin-top: 10px;
24
+        align-items: center;
25
+        > view {
26
+          > input {
27
+            display: block;
28
+            width: 100%;
29
+            background: none;
30
+            font-size: 26px;
31
+            line-height: 40px;
32
+            height: 40px;
33
+          }
34
+          > text {
35
+            display: block;
36
+            width: 100%;
37
+            background: none;
38
+            font-size: 26px;
39
+            line-height: 40px;
40
+            height: 40px;
41
+          }
42
+        }
43
+        > text {
44
+          font-size: 26px;
45
+          &.iconfont {
46
+            font-size: 30px;
47
+          }
48
+        }
49
+        >image {
50
+          height: 30px;
51
+          margin-right: 10px;
52
+        }
53
+      }
54
+      .Btn {
55
+        padding: 40px;
56
+        position: relative;
57
+        overflow: hidden;
58
+        > text {
59
+          display: block;
60
+          text-align: center;
61
+          font-size: 32px;
62
+          line-height: 92px;
63
+          background: #193c83;
64
+          color: #fff;
65
+          font-weight: bold;
66
+          border-radius: 92px;
67
+        }
68
+      }
69
+    }
70
+  }
71
+}

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


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