Files
pupil/packageSearch/search/search.vue
”chenxuelian“ 09855d7da1 搜索页
2022-12-25 14:50:29 +08:00

176 lines
4.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<!-- 顶部导航栏 -->
<view class="top-search">
<customer-searchbar ref="search" :queryParam="queryParam" :search-bar-top="searchBarTop"
:search-bar-height="searchBarHeight" @search="goSearch" @back="goBack" />
</view>
<!-- 最近搜索 -->
<view class="recent-search" :style="{marginTop: Number(searchBarTop + searchBarHeight) + 'px',}">
<view class="title">
<text class="title-text">最近搜索</text>
<u-icon name="trash" color="#666666" size="24" @click="clearRecentSearch" />
</view>
<view class="recent-record">
<view v-if="recentRecordList.length > 0" class="no-empty-record">
<view v-for="(item, index) in recentRecordList" :key="index" class="tag-item">
<u-tag bg-color="#eee" borderColor="#eee" color="#666" :text="item"
@click="recentSearch(item)" />
</view>
</view>
<view v-else>
<view class="empty-record">
<text>暂无搜索记录</text>
</view>
</view>
</view>
</view>
<!-- 搜索发现 -->
<view class="search-found">
<view class="title">
<text class="title-text">搜索发现</text>
</view>
<view class="found-record">
<view v-for="(item, index) in foundList" :key="index" class="tag-item">
<u-tag bg-color="#eee" borderColor="#eee" color="#666" :text="item.name" @click="recentSearch(item.name)" />
</view>
</view>
</view>
</view>
</template>
<script>
import {
toast
} from 'service/request.js'
export default {
data() {
return {
searchBarTop: 0, //搜索栏的外边框高度单位px
searchBarHeight: 0, //搜索栏的高度单位px
queryParam: '',
recentRecordList: [],
foundList: []
}
},
onLoad() {
this.getDiscover()
const tempList = uni.getStorageSync('storage_search_record')
this.recentRecordList = tempList ? tempList : [];
console.log(this.recentRecordList)
const menuButtonInfo = uni.getMenuButtonBoundingClientRect();
this.searchBarTop = menuButtonInfo.top;
this.searchBarHeight = menuButtonInfo.height;
},
methods: {
goSearch(param) {
if (!param) {
toast.warn('请输入搜索内容')
return
}
this.queryParam = param
const index = this.recentRecordList.findIndex(item => {
return item === param
})
if (index > -1) {
this.recentRecordList.splice(index, 1)
}
this.recentRecordList.unshift(param)
try {
uni.setStorageSync('storage_search_record', this.recentRecordList);
} catch (e) {
// error
}
},
goBack() {
uni.navigateBack()
},
recentSearch(obj) {
this.queryParam = obj
// console.log(obj)
},
clearRecentSearch() {
this.recentRecordList = []
try {
uni.setStorageSync('storage_search_record', this.recentRecordList);
} catch (e) {
// error
}
},
getDiscover() {
this.$apiServe.getDiscover().then(res => {
this.foundList = res.data.data
console.log(res.data.data)
}).finally(_ => {})
}
}
}
</script>
<style lang="less">
.top-search {
position: relative;
}
.recent-search {
.title {
padding: 32rpx 10rpx;
display: flex;
justify-content: space-between;
.title-text {
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #3E3E3E;
line-height: 42rpx;
}
}
.recent-record {
.empty-record {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 28rpx;
text-align: center;
}
.no-empty-record {
display: flex;
flex-wrap: wrap;
padding: 0 10rpx;
.tag-item {
margin: 0 20rpx 20rpx 0;
}
}
}
}
.search-found {
.title {
padding: 32rpx 10rpx;
.title-text {
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #3E3E3E;
line-height: 42rpx;
}
}
.found-record {
display: flex;
flex-wrap: wrap;
padding: 0 10rpx;
.tag-item {
margin: 0 20rpx 20rpx 0;
}
}
}
</style>