- <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>
 
 
  |