|
|
<template> <view class="pageBg"> <view class="topBg"> <topNavbar title="找驾校"></topNavbar> <view class="searchCon pad"> <searchRow placeholder="搜索驾校名称" @searchFn="$goPage('/pages/indexEntry/findShcool/searchShcool/searchShcool')" :disable="true"></searchRow> </view> </view> <view class="pad"> <view class="navBox"> <view class="tab" v-for="(item,index) in tabData" :key="index" :class="{active: (params.sercheType==item.id&&!(params.businessScope||params.districts))}" @click="tabClick(item)"> {{ item.text }}</view> <view class="screen" @click="goScreen" :class="{active: (params.businessScope||params.districts)}"> <view class="txt">筛选</view> <u-icon name="arrow-down-fill" :color="(params.businessScope||params.districts)?'#fff':'#999'" size="8"></u-icon> </view> </view>
<view class="ul"> <view class="li" v-for="(item,index) in listData" :key="index" > <schoolItme :item="item" @click.native="goPage(item)"/> </view> </view> </view> <view style="padding-bottom: 20rpx;" v-if="listData.length"> <u-loadmore :status="status" /> </view> <nodata v-if="!listData.length&&status=='nomore'"></nodata> </view> </template>
<script> import schoolItme from '@/pages/tabbar/index/comp/schoolItem.vue' import { schoolPage } from '@/config/api.js' export default { components: { schoolItme }, data() { return { currentTab: 0, tabData: [{ text: '全部', id: 1 }, { text: '场地优先', id: 2 }, { text: '距离优先', id: 3 }, { text: '好评优先', id: 4 }, ], params: { pageNo: 1, pageSize: 20, lat: '', lng: '', sercheType: 1, businessScope: '', districts: '', name: '' }, total: 20, listData: [], status: 'loading' } }, onLoad() { let vuex_cityInfo = this.$store.state.user.vuex_cityInfo if(!vuex_cityInfo.lat) { this.$store.dispatch('getCity') }else { this.params.lat = vuex_cityInfo.lat this.params.lng = vuex_cityInfo.lng } this.schoolPageFn() uni.$on('screenConfirm',(obj)=>{ this.params = Object.assign(this.params, obj) this.listInit() }) }, onPullDownRefresh() { this.listInit() }, onReachBottom() { if(this.total>this.listData.length) { this.schoolPageFn() } }, methods: { searchFn(val) { this.params.name = val this.listInit() }, goScreen() { let url = `/pages/indexEntry/findShcool/screen/screen?businessScope=${this.params.businessScope}&districts=${this.params.districts}` this.$goPage(url) }, goPage(item) { this.$goPage('/pages/indexEntry/findShcool/shcoolDetail/shcoolDetail?schoolId='+ item.id) }, tabClick(item) { this.params.sercheType = item.id this.params.businessScope = '' this.params.districts = '' this.listInit() }, async listInit() { this.listData = [] this.params.pageNo = 1 await this.schoolPageFn() uni.stopPullDownRefresh() }, // 获取驾校列表
async schoolPageFn() { let obj = {} for(let key in this.params) { if(this.params[key]) { obj[key] = this.params[key] } } const {data: res} = await schoolPage(obj) this.params.pageNo ++ this.listData.push(...res.list) this.total = res.total if(this.listData.length>=this.total) this.status = 'nomore' console.log(res) } } } </script>
<style lang="scss" scoped> /deep/ .itemBox { padding: 20rpx !important; } .pageBg { width: 100%; .navBox { display: flex; justify-content: space-between; padding: 20rpx 0; .tab { font-size: 24rpx; color: #999; line-height: 50rpx; border-radius: 10rpx; background: #fff; text-align: center; height: 50rpx; width: 126rpx; &.active { background: $themC; color: #fff; }
}
.screen { width: 150rpx; display: flex; justify-content: center; align-items: center; position: relative; background: #fff; color: #999; border-radius: 10rpx; &.active { background: $themC; color: #fff; } .txt { font-size: 24rpx; margin-right: 10rpx; }
.screenIcon { width: 18rpx; height: 12rpx; } } }
.ul { width: 100%; .li { margin-bottom: 20rpx; } } } .topBg { padding-bottom: 20rpx; } </style>
|