瑶都万能墙
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.

424 lines
8.5 KiB

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