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.
 
 
 
 

233 lines
4.7 KiB

<template>
<view class="container">
<!-- 搜索板块 -->
<view class="header">
<view class="tui-search">
<image class="search-icon" src="../../static/img/home/search.png"></image>
<input class="text-search" type="text" v-model="searchValue" placeholder="输入搜索内容" />
</view>
<view @tap='rtBubble' class="btn">搜索</view>
</view>
<view class="main">
<view class="rsTitle">热搜</view>
<view class="listitem" v-for="(item, index) in topSearch" :key="index">
<view class="title">
<view class="item">
<view @click="itemClick(item)">
<view class="item-text">{{ item }}</view>
</view>
</view>
</view>
</view>
</view>
<view class="main">
<view class="rsTitle">历史记录<image class="del" @click="del" src="../../static/img/my/del.png"></image>
</view>
<view class="listitem" v-for="(item, index) in selectOption" :key="index">
<view class="title">
<view class="item">
<view @click="itemClick(item.keyword)">
<view class="item-text">{{ item.keyword }}</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
selectOption: [],
topSearch: [],
localKeyword: 'orange-tyh-keyword',
searchValue: ''
};
},
onLoad() {
this.getReSou();
},
onShow() {
this.selectOption = this.$queue.get(this.localKeyword);
},
methods: {
getReSou() {
this.$Request.getT('/wm/topSearch').then(res => {
if (res.code === 0) {
this.topSearch = res.data;
}
});
},
goLogin() {
uni.navigateTo({
url: '/pages/public/login'
});
},
rtBubble() {
if (this.searchValue === '' || this.searchValue === ' ') {
uni.showToast({
icon: 'none',
title: '搜索框输入为空'
});
} else {
let keywords = this.$queue.get(this.localKeyword);
if (JSON.stringify(keywords).indexOf(this.searchValue) === -1) {
this.$queue.insert({
key: this.localKeyword,
value: {
keyword: this.searchValue
},
capacityNum: 20 //队列容量
});
}
let token = this.$queue.getData('token');
let userId = this.$queue.getData('userId');
if (token) {
uni.navigateTo({
url: '/pages/task/tasklist?searchValue=' + this.searchValue +
'&classifyId=-1&type=fuzzySearch'
});
} else {
this.goLogin();
}
this.searchValue = ''
}
},
itemClick(item) {
let keywords = this.$queue.get(this.localKeyword);
if (JSON.stringify(keywords).indexOf(item) === -1) {
this.$queue.insert({
key: this.localKeyword,
value: {
keyword: item
},
capacityNum: 20 //队列容量
});
}
let token = this.$queue.getData('token');
if (token) {
uni.navigateTo({
url: '/pages/task/tasklist?searchValue=' + item
});
} else {
this.goLogin();
}
},
del() {
//清空最近搜索的关键词
this.selectOption = [];
this.$queue.remove(this.localKeyword);
}
}
};
</script>
<style lang="scss">
page {
background: #FFFFFF;
}
.container {
.header {
width: 100%;
height: 88upx;
background-color: #FFF;
padding: 0 20upx;
display: flex;
align-items: center;
// border-bottom: 1upx solid #dcdcdc;
// justify-content: space-between;
// position: fixed;
.tui-search {
width: 650rpx;
flex: 1;
height: 60upx;
background: #F6F8F7;
border-radius: 50upx;
padding: 0 30upx;
display: flex;
align-items: center;
.search-icon {
width: 35upx;
height: 34upx;
}
.text-search {
flex: 1;
font-weight: 500;
margin-left: 10upx;
height: 60upx;
color: #333333;
font-size: 28upx;
}
}
.btn {
color: #333333;
background-color: #FFFFFF;
font-size: 30upx;
margin-left: 30upx;
}
}
.main {
padding: 0 30upx;
.title {
// padding: 20upx;
}
.item-text-title {
color: #000000;
font-size: 15px;
font-weight: bold;
margin-left: 20upx;
margin: 10upx;
color: #333;
}
.item {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.item-text {
margin-left: 20upx;
// border-radius: 50upx;
margin: 10upx;
// border: 1px solid #dee0de;
padding: 10upx;
padding-left: 20upx;
padding-right: 20upx;
font-size: 13px;
color: #999999;
background: #F5F5F5;
}
}
.rsTitle {
margin: 30upx 0;
font-size: 32upx;
color: #333;
font-weight: 600;
}
.listitem {
display: inline-block;
}
.del {
width: 20px;
height: 20px;
position: absolute;
right: 30px;
}
}
</style>