Files
RentWeAppFront/pages-biz/search/search.vue

143 lines
3.2 KiB
Vue
Raw Normal View History

2025-11-14 11:39:33 +08:00
<template>
<view class="u-margin-left-20 u-margin-right-20">
<u-navbar :is-back="true" title="搜索" :border-bottom="false"></u-navbar>
2026-01-15 17:18:24 +08:00
<u-search placeholder="请输入资产名称/街道/位置等信息" v-model="keyword" @search="clickSearch(value)"
2025-11-14 11:39:33 +08:00
:focus="true" action-text="取消" @custom="cancelSearch"></u-search>
<!-- 搜索记录 -->
<template v-if="historyList.length > 0">
<view style="position: relative;">
<u-card title="搜索记录" :border="false" :head-border-bottom="false" padding="0" title-size="28">
<view slot="body">
<u-cell-group :border="false">
<u-cell-item v-for="(item,index) in historyList" :key="index" :title="item" @click="clickSearchTag(item)" :border-bottom="false" :arrow="false">
<!-- <u-icon slot="icon" size="32" name="search"></u-icon> -->
</u-cell-item>
</u-cell-group>
</view>
</u-card>
<view class="arrow-right" @click="clearHistory">
<u-icon name="trash"></u-icon>
清除
</view>
</view>
</template>
</view>
</template>
<script>
export default {
data() {
return {
historyList:[],
keyword:"",
}
},
onLoad() {
// 加载历史记录
let history = uni.getStorageSync('searchHistory')
this.historyList = history ? JSON.parse(history) : []
},
onReady() {
},
methods: {
clickSearch(){
if(this.keyword === ''){
return uni.showToast({
title: '关键词不能为空',
icon: 'none'
});
}else{
uni.hideKeyboard()
this.addHistory()
this.$u.route({
2026-01-15 17:18:24 +08:00
url: '/pages-biz/search/searchList',
2025-11-14 11:39:33 +08:00
params: {
2026-01-15 17:18:24 +08:00
keyword: this.keyword
2025-11-14 11:39:33 +08:00
}
})
}
},
// 自定义取消搜索事件
cancelSearch(){
uni.navigateBack({
delta: 1
})
},
clickSearchTag(item){
this.keyword = item
this.clickSearch()
},
// 加入搜索记录
addHistory(){
let index = this.historyList.indexOf(this.keyword)
let history = this.historyList;
if(index === -1){
history.unshift(this.keyword)
}else{
history.unshift(history.splice(index,1)[0])
}
uni.setStorageSync('searchHistory',JSON.stringify(history))
},
clearHistory(){
// 清除搜索记录
uni.showModal({
title: '提示',
content: '是否清除搜索历史?',
cancelText: '取消',
confirmText: '确认',
success: res => {
if(res.confirm){
uni.removeStorageSync('searchHistory');
this.historyList = []
this.keyword = ''
this.$mytip.toast('清除成功')
}
}
});
}
}
}
</script>
<style>
page {
background: #FFFFFF;
}
</style>
<style lang="scss" scoped>
.item-title {
font-size: 28rpx;
color: $u-main-color;
font-weight: bold;
}
.item-price {
font-weight: normal;
font-size: 35rpx;
color: $u-type-warning;
margin-top: 3px;
}
.item-desc {
font-weight: normal;
font-size: 26rpx;
color: $u-tips-color;
}
.item-tag {
font-size: 24rpx;
color: $u-tips-color;
margin-top: 3px;
}
.arrow-right{
position: absolute;
top: 0rpx;
right: 28rpx;
font-weight: normal;
font-size: 28rpx;
color: $u-tips-color;
}
</style>