|
|
|
|
@ -3,65 +3,73 @@
|
|
|
|
|
<view class="search-bar">
|
|
|
|
|
<view class="search-bar__input">
|
|
|
|
|
<u-input
|
|
|
|
|
v-model="select.keyword"
|
|
|
|
|
v-model="select.name"
|
|
|
|
|
:height="26"
|
|
|
|
|
placeholder="请输入学校名称"
|
|
|
|
|
style="flex: 1; margin-right: 40rpx"
|
|
|
|
|
@input="$u.debounce(() => getList(true), 1000)"
|
|
|
|
|
></u-input>
|
|
|
|
|
<u-icon name="search" color="#333" :size="30"></u-icon>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<u-dropdown ref="uDropdown" inactive-color="#333" :height="80">
|
|
|
|
|
<u-dropdown-item
|
|
|
|
|
v-model="select.year"
|
|
|
|
|
v-model="select.type"
|
|
|
|
|
title="学段"
|
|
|
|
|
:options="options1">
|
|
|
|
|
:options="typeList"
|
|
|
|
|
@change="getList(true)">
|
|
|
|
|
</u-dropdown-item>
|
|
|
|
|
<u-dropdown-item
|
|
|
|
|
v-model="select.year"
|
|
|
|
|
v-model="select.area_id"
|
|
|
|
|
title="区域"
|
|
|
|
|
:options="options1"
|
|
|
|
|
:options="areaList"
|
|
|
|
|
@change="getList(true)"
|
|
|
|
|
></u-dropdown-item>
|
|
|
|
|
<u-dropdown-item
|
|
|
|
|
v-model="select.year"
|
|
|
|
|
v-model="select.nature"
|
|
|
|
|
title="性质"
|
|
|
|
|
:options="options1"
|
|
|
|
|
:options="natureList"
|
|
|
|
|
@change="getList(true)"
|
|
|
|
|
></u-dropdown-item>
|
|
|
|
|
</u-dropdown>
|
|
|
|
|
<view class="wrap">
|
|
|
|
|
<view class="list">
|
|
|
|
|
<view
|
|
|
|
|
class="list-item"
|
|
|
|
|
v-for="i in 20"
|
|
|
|
|
:key="i"
|
|
|
|
|
v-for="i in list"
|
|
|
|
|
:key="i.id"
|
|
|
|
|
@click="$u.route({
|
|
|
|
|
url: '/package_sub/pages/SchoolDetail/SchoolDetail',
|
|
|
|
|
params: {
|
|
|
|
|
id: ''
|
|
|
|
|
id: i.id
|
|
|
|
|
}
|
|
|
|
|
})">
|
|
|
|
|
<view class="left">
|
|
|
|
|
<image mode="aspectFill" class="list-item__img" :src="vuex_default_icon"></image>
|
|
|
|
|
<image mode="aspectFill" class="list-item__img" :src="(i.icon && i.icon.url) ? i.icon.url : vuex_default_icon"></image>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="right">
|
|
|
|
|
<view class="list-item__title">
|
|
|
|
|
<text>苏州中学</text>
|
|
|
|
|
<text>{{ i.name }}</text>
|
|
|
|
|
<u-icon name="arrow-right" color="#333" :size="30"></u-icon>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="list-item__tags">
|
|
|
|
|
<view class="list-item__tags--area">
|
|
|
|
|
姑苏区
|
|
|
|
|
{{ i.area ? i.area.name : '' }}
|
|
|
|
|
</view>
|
|
|
|
|
<view class="list-item__tags--type">
|
|
|
|
|
初中
|
|
|
|
|
<view class="list-item__tags--type" v-for="(tag, index1) in i.type" :key="index1">
|
|
|
|
|
{{ tag }}
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="list-item__info">
|
|
|
|
|
办学性质:公办
|
|
|
|
|
办学性质:{{ i.nature === 1 ? '公办' : (i.nature === 2 ? '民办' : '-') }}
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<u-loadmore
|
|
|
|
|
:status="loadStatus"
|
|
|
|
|
:margin-top="20"
|
|
|
|
|
></u-loadmore>
|
|
|
|
|
</view>
|
|
|
|
|
<u-back-top :scroll-top="scrollTop"></u-back-top>
|
|
|
|
|
</view>
|
|
|
|
|
@ -73,35 +81,99 @@ export default {
|
|
|
|
|
return {
|
|
|
|
|
defaultTime: '',
|
|
|
|
|
select: {
|
|
|
|
|
keyword: "",
|
|
|
|
|
year: new Date().getFullYear().toString(),
|
|
|
|
|
name: "",
|
|
|
|
|
type: "",
|
|
|
|
|
nature: "",
|
|
|
|
|
area_id: "",
|
|
|
|
|
page: 1,
|
|
|
|
|
page_size: 10
|
|
|
|
|
},
|
|
|
|
|
scrollTop: 0,
|
|
|
|
|
tableData: [
|
|
|
|
|
|
|
|
|
|
],
|
|
|
|
|
options1: [
|
|
|
|
|
typeList: ['全部', '初中', '中专', '3+3', '五年制大专', '中本贯通5+2', '中本贯通3+4', '综合高中', '高中'].map(i => ({ label: i, value: i === '全部' ? '' : i })),
|
|
|
|
|
natureList: [
|
|
|
|
|
{
|
|
|
|
|
label: "默认排序",
|
|
|
|
|
value: 1,
|
|
|
|
|
label: "全部",
|
|
|
|
|
value: '',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: "距离优先",
|
|
|
|
|
value: 2,
|
|
|
|
|
label: "公办",
|
|
|
|
|
value: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: "价格优先",
|
|
|
|
|
value: 3,
|
|
|
|
|
},
|
|
|
|
|
label: "民办",
|
|
|
|
|
value: 2,
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
areaList: [],
|
|
|
|
|
|
|
|
|
|
total: 0,
|
|
|
|
|
list: [],
|
|
|
|
|
loadStatus: 'loadmore',
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
async getArea() {
|
|
|
|
|
try {
|
|
|
|
|
const res = await this.$u.api.area()
|
|
|
|
|
this.areaList = [{
|
|
|
|
|
label: '全部',
|
|
|
|
|
value: ''
|
|
|
|
|
},...res.list.map(i => ({
|
|
|
|
|
label: i.name,
|
|
|
|
|
value: i.id
|
|
|
|
|
}))]
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error(err)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
async getList(isRefresh=false) {
|
|
|
|
|
if (isRefresh) {
|
|
|
|
|
this.select.page = 1;
|
|
|
|
|
this.loadStatus = 'loadmore'
|
|
|
|
|
}
|
|
|
|
|
if (this.loadStatus === 'nomore') return
|
|
|
|
|
try {
|
|
|
|
|
this.loadStatus = 'loading'
|
|
|
|
|
const { list: res } = await this.$u.api.schoolList(this.select);
|
|
|
|
|
console.log(res);
|
|
|
|
|
this.total = res.total;
|
|
|
|
|
if (isRefresh) {
|
|
|
|
|
this.list.length = 0;
|
|
|
|
|
}
|
|
|
|
|
this.list.push(...res.data)
|
|
|
|
|
if (this.list.length >= res.total) {
|
|
|
|
|
this.loadStatus = 'nomore'
|
|
|
|
|
} else {
|
|
|
|
|
this.select.page++;
|
|
|
|
|
this.loadStatus = 'loadmore'
|
|
|
|
|
}
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error(err);
|
|
|
|
|
this.loadStatus = 'loadmore'
|
|
|
|
|
} finally {
|
|
|
|
|
uni.stopPullDownRefresh()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
onPullDownRefresh() {
|
|
|
|
|
this.getList(true)
|
|
|
|
|
},
|
|
|
|
|
onPageScroll(e) {
|
|
|
|
|
this.scrollTop = e.scrollTop;
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
this.getArea()
|
|
|
|
|
this.getList(true)
|
|
|
|
|
},
|
|
|
|
|
onReachBottom() {
|
|
|
|
|
this.getList()
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
@ -171,6 +243,7 @@ export default {
|
|
|
|
|
.list-item__tags {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
padding-top: 20rpx;
|
|
|
|
|
|
|
|
|
|
&--area {
|
|
|
|
|
|