123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <!-- 搜索界面 -->
- <template>
- <s-layout class="set-wrap" title="搜索" :bgStyle="{ color: '#FFF' }">
- <view class="ss-p-x-24">
- <view class="ss-flex ss-col-center">
- <uni-search-bar
- class="ss-flex-1"
- radius="33"
- placeholder="请输入关键字"
- cancelButton="none"
- :focus="true"
- @confirm="onSearch($event.value)"
- />
- </view>
- <view class="ss-flex ss-row-between ss-col-center">
- <view class="serach-history">搜索历史</view>
- <button class="clean-history ss-reset-button" @tap="onDelete"> 清除搜索历史 </button>
- </view>
- <view class="ss-flex ss-col-center ss-row-left ss-flex-wrap">
- <button
- class="history-btn ss-reset-button"
- @tap="onSearch(item)"
- v-for="(item, index) in state.historyList"
- :key="index"
- >
- {{ item }}
- </button>
- </view>
- </view>
- </s-layout>
- </template>
- <script setup>
- import { reactive } from 'vue';
- import sheep from '@/sheep';
- import { onLoad } from '@dcloudio/uni-app';
- const state = reactive({
- historyList: [],
- });
- // 搜索
- function onSearch(keyword) {
- if (!keyword) {
- return;
- }
- saveSearchHistory(keyword);
- // 前往商品列表(带搜索条件)
- sheep.$router.go('/pages/goods/list', { keyword });
- }
- // 保存搜索历史
- function saveSearchHistory(keyword) {
- // 如果关键词在搜索历史中,则把此关键词先移除
- if (state.historyList.includes(keyword)) {
- state.historyList.splice(state.historyList.indexOf(keyword), 1);
- }
- // 置顶关键词
- state.historyList.unshift(keyword);
- // 最多保留 10 条记录
- if (state.historyList.length >= 10) {
- state.historyList.length = 10;
- }
- uni.setStorageSync('searchHistory', state.historyList);
- }
- function onDelete() {
- uni.showModal({
- title: '提示',
- content: '确认清除搜索历史吗?',
- success: function (res) {
- if (res.confirm) {
- state.historyTag = [];
- uni.removeStorageSync('searchHistory');
- }
- },
- });
- }
- onLoad(() => {
- state.historyList = uni.getStorageSync('searchHistory') || [];
- });
- </script>
- <style lang="scss" scoped>
- .serach-title {
- font-size: 30rpx;
- font-weight: 500;
- color: #333333;
- }
- .uni-searchbar {
- padding-left: 0;
- }
- .serach-history {
- font-weight: bold;
- color: #333333;
- font-size: 30rpx;
- }
- .clean-history {
- font-weight: 500;
- color: #999999;
- font-size: 28rpx;
- }
- .history-btn {
- padding: 0 38rpx;
- height: 60rpx;
- background: #f5f6f8;
- border-radius: 30rpx;
- font-size: 28rpx;
- color: #333333;
- max-width: 690rpx;
- margin: 0 20rpx 20rpx 0;
- }
- </style>
|