瑶都万能墙
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

430 lines
8.8 KiB

8 months ago
7 months ago
6 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
6 months ago
7 months ago
6 months ago
7 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
6 months ago
6 months ago
6 months ago
8 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
8 months ago
7 months ago
8 months ago
8 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
8 months ago
6 months ago
7 months ago
7 months ago
7 months ago
8 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
6 months ago
8 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
6 months ago
7 months ago
  1. <template>
  2. <view class="page">
  3. <view>
  4. <!-- <uv-swiper
  5. :list="bannerList"
  6. indicator
  7. height="490rpx"
  8. indicatorStyle="bottom: 100rpx;"
  9. keyName="image"></uv-swiper> -->
  10. <image :src="headInfo.bg"
  11. style="width: 100%;height: 490rpx;"
  12. mode="aspectFill"></image>
  13. </view>
  14. <!-- 瑶都万能墙 -->
  15. <view class="Headbackground">
  16. <view class="Toggle">
  17. <uv-icon
  18. size="30rpx"
  19. color="#fff"
  20. name="map"></uv-icon>
  21. 江华瑶族自治县
  22. </view>
  23. <view class="top">
  24. <view class="profilePicture"
  25. >
  26. <image :src="headInfo.headImage" mode=""></image>
  27. </view>
  28. <view class="UniversalWall">
  29. <view class="dynamic">
  30. {{ headInfo.name }}
  31. </view>
  32. <!-- <view class="dynamics">
  33. {{headInfo.num}}动态
  34. <text>|</text>
  35. <view
  36. @click="$utils.navigateTo('/pages_order/mine/allUser')"
  37. >
  38. {{headInfo.userNum}}江华人
  39. </view>
  40. </view>
  41. <view class="dynamics">
  42. {{headInfo.homeNum}}租房
  43. <text>|</text>
  44. {{headInfo.jobNum}}工作
  45. <text>|</text>
  46. {{headInfo.jdNum}}景点
  47. <text>|</text>
  48. {{headInfo.shopNum}}美食
  49. <text>|</text>
  50. {{headInfo.activityNum}}活动
  51. </view> -->
  52. <view class="dynamics">
  53. 江华便民生活好帮手
  54. </view>
  55. </view>
  56. <view class="join"
  57. @click="join">
  58. <view
  59. v-if="userInfo.idCardOpen == 0">
  60. 审核中
  61. </view>
  62. <view
  63. v-else-if="!userInfo.idCardOpen">
  64. 加入
  65. </view>
  66. <view
  67. v-else>
  68. <uv-icon
  69. color="#fff"
  70. size="30rpx"
  71. name="list-dot"></uv-icon>
  72. </view>
  73. </view>
  74. </view>
  75. </view>
  76. <view class="box">
  77. <!-- 菜单栏 -->
  78. <scroll-view
  79. scroll-x="true">
  80. <view class="life">
  81. <view class="mouse" @click="menuClick(item.url)"
  82. :key="index"
  83. v-for="(item, index) in menu">
  84. <view class="RentingAhouseimg">
  85. <image
  86. :src="item.icon" mode=""></image>
  87. </view>
  88. <view class="RentingAhouse">
  89. {{ item.title }}
  90. </view>
  91. </view>
  92. </view>
  93. </scroll-view>
  94. <!-- 分类 -->
  95. <view class="LabelOptions">
  96. <uv-tabs :list="category"
  97. :activeStyle="{color : '#000', fontWeight : 900, fontSize : '36rpx'}"
  98. lineColor="#5baaff"
  99. lineHeight="8rpx"
  100. lineWidth="60rpx"
  101. keyName="title"
  102. @click="tabsClick"></uv-tabs>
  103. </view>
  104. <!-- 动态列表 -->
  105. <view
  106. class="dynamicList">
  107. <dynamicItem
  108. :key="index"
  109. v-for="(item, index) in list"
  110. :item="item"
  111. @click="$utils.navigateTo('/pages_order/post/postDetail?id=' + item.id)"
  112. />
  113. </view>
  114. </view>
  115. <!-- 页面浮窗 -->
  116. <createDetailPopup
  117. @customerServiceOpen="$refs.customerServicePopup.open()"
  118. @integralDetailsOpen="$refs.integralDetailsPopup.open('bottom')"
  119. />
  120. <!-- 加入我们 -->
  121. <certificationPopup ref="certificationPopup"/>
  122. <!-- 分享 -->
  123. <sharePopup ref="sharePopup"/>
  124. <!-- 签到获取积分 -->
  125. <signInOnePopup ref="signInOnePopup"/>
  126. <!-- 联系客服 -->
  127. <customerServicePopup
  128. :title="headInfo.details"
  129. :image="headInfo.kefu"
  130. ref="customerServicePopup"/>
  131. <!-- 隐私协议 -->
  132. <PrivacyAgreementPoup />
  133. <!-- 积分规则 -->
  134. <uv-popup ref="integralDetailsPopup"
  135. :round="30"
  136. :customStyle="{height: '60vh'}">
  137. <view style="overflow: scroll;padding: 30rpx 20rpx;">
  138. <uv-parse :content="headInfo.integralDetails"></uv-parse>
  139. </view>
  140. </uv-popup>
  141. <tabber select="0" />
  142. </view>
  143. </template>
  144. <script>
  145. import PrivacyAgreementPoup from '@/components/config/PrivacyAgreementPoup.vue'
  146. import tabber from '@/components/base/tabbar.vue'
  147. import certificationPopup from '@/components/user/certificationPopup.vue'
  148. import createDetailPopup from '@/components/user/createDetailPopup.vue'
  149. import customerServicePopup from '@/components/user/customerServicePopup.vue'
  150. import sharePopup from '@/components/user/sharePopup.vue'
  151. import signInOnePopup from '@/components/user/signInOnePopup.vue'
  152. import dynamicItem from '@/components/list/dynamic/dynamicItem.vue'
  153. import mixinsList from '@/mixins/list.js'
  154. import { mapState } from 'vuex'
  155. export default {
  156. mixins: [mixinsList],
  157. components: {
  158. tabber,
  159. PrivacyAgreementPoup,
  160. createDetailPopup,
  161. customerServicePopup,
  162. dynamicItem,
  163. certificationPopup,
  164. sharePopup,
  165. signInOnePopup,
  166. },
  167. data() {
  168. return {
  169. // headInfo: {},
  170. menu : [],
  171. mixinsListApi : 'getPostPage',
  172. bannerList : [],
  173. onShowData : false,
  174. }
  175. },
  176. onLoad(query) {
  177. if(query.shareId){
  178. uni.setStorageSync('shareId', query.shareId)
  179. }
  180. this.getData()
  181. // this.getIndexHeaderInfo()
  182. this.$store.commit('getIndexHeaderInfo')
  183. this.getClassifyList()
  184. // this.getBannerList()
  185. this.$store.commit('getCategory')
  186. },
  187. onShareAppMessage(res) {
  188. return {
  189. title: this.headInfo.name,
  190. path: '/pages/index/index'
  191. }
  192. },
  193. onShow() {
  194. this.getUserInfo()
  195. },
  196. onPullDownRefresh() {
  197. // this.getIndexHeaderInfo()
  198. this.getClassifyList()
  199. // this.getBannerList()
  200. this.$store.commit('getCategory')
  201. this.getUserInfo()
  202. },
  203. computed: {
  204. ...mapState(['city', 'category', 'userInfo', 'headInfo']),
  205. },
  206. methods: {
  207. tabsClick(item) {
  208. if(item.index){
  209. this.queryParams.classId = item.id
  210. }else{
  211. delete this.queryParams.classId
  212. }
  213. this.getData()
  214. },
  215. menuClick(url) {
  216. // 跳转页面
  217. if (url.includes('reLaunch:')) {
  218. uni.reLaunch({
  219. url : url.replace('reLaunch:', '')
  220. })
  221. }else{
  222. uni.navigateTo({
  223. url
  224. })
  225. }
  226. },
  227. //获取首页头部信息
  228. getIndexHeaderInfo(){
  229. this.$api('getIndexHeaderInfo',res =>{
  230. if(res.code == 200){
  231. this.headInfo = res.result
  232. }
  233. })
  234. },
  235. //获取菜单
  236. getClassifyList(){
  237. this.$api('getClassifyList',res =>{
  238. if(res.code == 200){
  239. this.menu = res.result
  240. }
  241. })
  242. },
  243. //获取菜单
  244. getClassifyList(){
  245. this.$api('getClassifyList',res =>{
  246. if(res.code == 200){
  247. this.menu = res.result
  248. }
  249. })
  250. },
  251. // 获取banner
  252. getBannerList(){
  253. this.$api('getBannerList', res =>{
  254. if(res.code == 200){
  255. this.bannerList = res.result
  256. }
  257. })
  258. },
  259. join(){
  260. if(!uni.getStorageSync('token')){
  261. uni.navigateTo({
  262. url: '/pages_order/auth/wxLogin'
  263. })
  264. return
  265. }
  266. // if(this.userInfo.idCardOpen == 0){
  267. // uni.showToast({
  268. // title: '审核中...',
  269. // icon:'none'
  270. // })
  271. // }else if(!this.userInfo.idCardOpen){
  272. // this.$refs.certificationPopup.open()
  273. // }else{
  274. this.$refs.sharePopup.open()
  275. // }
  276. },
  277. getUserInfo(){
  278. if(uni.getStorageSync('token')){
  279. this.$store.commit('getUserInfo')
  280. }
  281. },
  282. }
  283. }
  284. </script>
  285. <style scoped lang="scss">
  286. .page{
  287. position: relative;
  288. /deep/ .uv-tabs__wrapper__scroll-view::-webkit-scrollbar{
  289. width: 0 !important;
  290. height: 0 !important;
  291. }
  292. }
  293. image{
  294. width: 100%;
  295. height: 100%;
  296. }
  297. .Headbackground {
  298. position: absolute;
  299. width: 100%;
  300. top: 0;
  301. left: 0;
  302. padding-top: 80rpx;
  303. // background: linear-gradient(to bottom, rgb(85, 94, 123), rgb(45, 51, 73));
  304. .Toggle{
  305. margin: 10rpx 30rpx;
  306. padding: 20rpx;
  307. background-color: #00000022;
  308. color: #fff;
  309. border-radius: 40rpx;
  310. width: fit-content;
  311. display: flex;
  312. justify-content: center;
  313. align-items: center;
  314. font-size: 28rpx;
  315. }
  316. .top {
  317. display: flex;
  318. color: white;
  319. padding: 25rpx;
  320. align-items: center;
  321. position: relative;
  322. .profilePicture {
  323. width: 150rpx;
  324. height: 150rpx;
  325. image{
  326. border-radius: 20rpx;
  327. }
  328. }
  329. .UniversalWall {
  330. padding: 0rpx 20rpx;
  331. .dynamic {
  332. font-size: 40rpx;
  333. letter-spacing: 5rpx;
  334. }
  335. .dynamics {
  336. margin-top: 20rpx;
  337. font-size: 25rpx;
  338. display: flex;
  339. text {
  340. margin: 0 10rpx;
  341. }
  342. }
  343. }
  344. .join {
  345. position: absolute;
  346. right: 10rpx;
  347. top: 40rpx;
  348. width: 125rpx;
  349. height: 50rpx;
  350. background-color: $uni-color;
  351. margin-left: auto;
  352. display: flex;
  353. align-items: center;
  354. justify-content: center;
  355. border-radius: 50rpx;
  356. }
  357. }
  358. }
  359. .box{
  360. margin-top: -70rpx;
  361. background-color: #fff;
  362. border-top-left-radius: 40rpx;
  363. border-top-right-radius: 40rpx;
  364. position: relative;
  365. z-index: 9;
  366. overflow: hidden;
  367. .life {
  368. display: flex;
  369. text-align: center;
  370. padding: 10rpx 0;
  371. .mouse {
  372. width: 20%;
  373. box-sizing: border-box;
  374. display: flex;
  375. justify-content: center;
  376. align-items: center;
  377. flex-direction: column;
  378. font-size: 26rpx;
  379. flex-shrink: 0;
  380. .RentingAhouseimg {
  381. display: flex;
  382. justify-content: center;
  383. align-items: center;
  384. flex-direction: column;
  385. image{
  386. width: 70rpx;
  387. height: 70rpx;
  388. }
  389. }
  390. }
  391. }
  392. .dynamicList{
  393. padding-top: 10rpx;
  394. }
  395. }
  396. </style>