<template>
							 | 
						|
								    <view class="search-container">
							 | 
						|
								
							 | 
						|
								        <!-- 顶部搜索栏 -->
							 | 
						|
								        <view class="search-header">
							 | 
						|
								            <uv-search v-model="searchKeyword" placeholder="请输入内容" :show-action="true" action-text="搜索" :action-style="{
							 | 
						|
								                color: '#fff',
							 | 
						|
								                backgroundColor: '#06DADC',
							 | 
						|
								                borderRadius: '198rpx',
							 | 
						|
								                width: '100rpx',
							 | 
						|
								                height: '64rpx',
							 | 
						|
								                textAlign: 'center',
							 | 
						|
								                fontSize: '26rpx',
							 | 
						|
								                lineHeight: '64rpx',
							 | 
						|
								            }" @search="handleSearch" @custom="handleSearch" @clear="handleSearch"></uv-search>
							 | 
						|
								            <!-- 分类标签栏 -->
							 | 
						|
								            <uv-tabs 
							 | 
						|
								                :list="categoryTabs" 
							 | 
						|
								                :current="currentTab" 
							 | 
						|
								                keyName="title"
							 | 
						|
								                @change="switchTab"
							 | 
						|
								                :scrollable="true"
							 | 
						|
								                :lineColor="'#000'"
							 | 
						|
								                :activeStyle="{ color: '#000', fontWeight: '900' }"
							 | 
						|
								                :inactiveStyle="{ color: '#606266' }"
							 | 
						|
								            ></uv-tabs>
							 | 
						|
								        </view>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        <!-- 搜索结果列表 -->
							 | 
						|
								        <view class="search-results">
							 | 
						|
								            <BookList :list="list" :isLoading="isLoading" />
							 | 
						|
								        </view>
							 | 
						|
								    </view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
								
							 | 
						|
								import MixinList from '@/mixins/list.js'
							 | 
						|
								import BookList from '@/components/BookList.vue'
							 | 
						|
								
							 | 
						|
								export default {
							 | 
						|
								    mixins: [MixinList],
							 | 
						|
								    components: {
							 | 
						|
								        BookList
							 | 
						|
								    },
							 | 
						|
								    data() {
							 | 
						|
								        return {
							 | 
						|
								            mixinListApi: 'book.list',
							 | 
						|
								            // 自定义onShow
							 | 
						|
								            mixinListConfig: {
							 | 
						|
								                customOnShow: true,
							 | 
						|
								            },
							 | 
						|
								            searchKeyword: '',
							 | 
						|
								            label: '',
							 | 
						|
								            currentTab: 0,
							 | 
						|
								            categoryTabs: [],
							 | 
						|
								            bookList: [
							 | 
						|
								
							 | 
						|
								            ]
							 | 
						|
								        }
							 | 
						|
								    },
							 | 
						|
								    methods: {
							 | 
						|
								        mixinSetParams() {
							 | 
						|
								            const params = {}
							 | 
						|
								            // 只有当不是"全部"选项时才添加category参数
							 | 
						|
								            if (this.categoryTabs[this.currentTab] && this.categoryTabs[this.currentTab].id) {
							 | 
						|
								                params.category = this.categoryTabs[this.currentTab].id
							 | 
						|
								            }
							 | 
						|
								            if (this.label) {
							 | 
						|
								                params.label = this.label
							 | 
						|
								            }
							 | 
						|
								            if (this.searchKeyword) {
							 | 
						|
								                params.title = this.searchKeyword
							 | 
						|
								            }
							 | 
						|
								            return params
							 | 
						|
								        },
							 | 
						|
								        handleSearch() {
							 | 
						|
								            // console.log('搜索:', this.searchKeyword)
							 | 
						|
								            this.list = []
							 | 
						|
								            this.initPage()
							 | 
						|
								            this.getList(true)
							 | 
						|
								            // 这里添加搜索逻辑
							 | 
						|
								        },
							 | 
						|
								
							 | 
						|
								        switchTab(e) {
							 | 
						|
								            this.currentTab = e.index
							 | 
						|
								            this.initPage()
							 | 
						|
								            this.getList(true)
							 | 
						|
								        },
							 | 
						|
								        // 获取书籍分类
							 | 
						|
								        async getCategory() {
							 | 
						|
								            const categoryRes = await this.$api.book.category()
							 | 
						|
								            if (categoryRes.code === 200) {
							 | 
						|
								                this.categoryTabs = categoryRes.result.map(item => ({
							 | 
						|
								                    title: item.title,
							 | 
						|
								                    id: item.id
							 | 
						|
								                }))
							 | 
						|
								                // 在数组开头添加"全部"选项
							 | 
						|
								                this.categoryTabs.unshift({
							 | 
						|
								                    title: '全部',
							 | 
						|
								                    id: null
							 | 
						|
								                })
							 | 
						|
								            }
							 | 
						|
								        },
							 | 
						|
								    },
							 | 
						|
								    onLoad(options) {
							 | 
						|
								        if (options.label) {
							 | 
						|
								            this.label = options.label
							 | 
						|
								        }
							 | 
						|
								    },
							 | 
						|
								    async onShow() {
							 | 
						|
								        await this.getCategory()
							 | 
						|
								        this.getList()
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style scoped lang="scss">
							 | 
						|
								.search-container {
							 | 
						|
								    background: #fff;
							 | 
						|
								    min-height: 100vh;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								.search-header {
							 | 
						|
								    padding: 10rpx 32rpx 6rpx;
							 | 
						|
								    background: #fff;
							 | 
						|
								    position: sticky;
							 | 
						|
								    top: 0;
							 | 
						|
								    left: 0;
							 | 
						|
								    right: 0;
							 | 
						|
								    background-color: #fff;
							 | 
						|
								    z-index: 9;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								.search-results {
							 | 
						|
								    padding: 32rpx;
							 | 
						|
								}
							 | 
						|
								</style>
							 |