当前位置: 首页 > news >正文

典籍知识问答典籍查询界面前端界面设计效果实现

根据组内负责前端界面设计的同学的界面设计,进行典籍查询前端界面的实现

1.实现效果

2.前端代码

ClassicView.vue

<template>

  <div class="classics">

    <img

        className="back"

        alt="Back"

        src="https://c.animaapp.com/m9pqi0c3GNaMeT/img/back.png"

      />

    <div class="hero-section">

      <div class="main-area">

        <div class="frame">

          <div class="text-wrapper">中医典籍</div>

        </div>

        <div class="frame-wrapper">

          <div class="div">

            <button

              v-for="tab in tabs"

              :key="tab"

              @click="selectedTab = tab"

              :class="['text-wrapper-3', { 'text-wrapper-2': selectedTab === tab }]"

            >

              {{ tab }}

            </button>

          </div>

        </div>

        <div class="div-wrapper">

          <div class="frame-2">

            <div

              class="frame-3"

              v-for="book in store.books"

              :key="book.id"

            >

              <img class="rectangle" :src="book.coverUrl" alt="cover" />

              <div class="text-wrapper-6">{{ book.title }}</div>

              <div class="text-wrapper-7">{{ book.author }}</div>

              <div class="text-wrapper-8">{{ book.summary }}</div>

              <button class="button-blue-instance text-wrapper-15" @click="goToDetail(book.id)">

                学习

              </button>

            </div>

          </div>

        </div>

        <div class="pagination-list">

          <div class="pagination-page">

            <div class="text-wrapper-9" @click="prevPage" :disabled="page === 1">‹</div>

          </div>

          <div class="element-wrapper">

            <div class="element">{{ page }}</div>

          </div>

          <div class="pagination-page">

            <div class="text-wrapper-9" @click="nextPage">›</div>

          </div>

        </div>

        <div class="tabs" style="position: absolute; top: 20px; right: 150px;">

          <input

  v-model="searchQuery"

  placeholder="搜索标题或作者"

  class="search-input text-wrapper-14"

  style="

    margin-right: 20px;

    padding: 8px 16px;

    border: 2px solid var(--huilan);

    border-radius: 24px;

    background-color: var(--grayswhite);

    transition: all 0.3s ease;

    width: 240px;

  "

/>

          <button

            class="button-blue text-wrapper-15"

            @click="$router.push('/admin-classics')"

          >

            后台管理

          </button>

        </div>

      </div>

    </div>

  </div>

</template>

<script setup>

import { ref, onMounted, watch } from 'vue'

import { useRouter } from 'vue-router'

import { useClassicStore } from '@/stores/classic'

import { tabs, formatCategory } from '@/utils/classic'

const router = useRouter()

const store = useClassicStore()

const page = ref(1)

const pageSize = 12

const searchQuery = ref('')

const selectedTab = ref('所有类型')

const fetchBooks = async () => {

  await store.loadBooks({

    page: page.value - 1,

    size: pageSize,

    category: formatCategory(selectedTab.value),

    keyword: searchQuery.value || null

  })

}

const goToDetail = (bookId) => {

  router.push({ path: '/classic-detail', query: { book_id: bookId } })

}

const nextPage = () => {

  if (page.value < store.totalPages) page.value++

}

const prevPage = () => {

  if (page.value > 1) page.value--

}

onMounted(fetchBooks)

watch([selectedTab, searchQuery, page], fetchBooks)

</script>

<style>

/* 覆盖可能需要调整的样式 */

.classics {

  position: relative;

  height: 100vh;

  overflow: hidden;

}

.main-area {

  overscroll-behavior: contain; /* 防止滚动穿透 */

}

</style>
其余store、api、utils、css代码就不做展示了

相关文章:

  • C# byte[]字节数组常用的一些操作。
  • 实战交易策略 篇十七:翻倍黑马交易策略
  • npm的基本使用安装所有包,安装删除指定版本的包,配置命名别名
  • 解决方案 | 晶尊微智能马桶着座感应模块
  • nodejs的包管理工具介绍,npm的介绍和安装,npm的初始化包 ,搜索包,下载安装包
  • Git远程操作
  • Java MCP客户端SDK实现
  • Unity 带碰撞的粒子效果
  • Linux 系统监控进阶:htop 命令详解与高效运维
  • 已安装爱思助手和Apple相关驱动,但仍无法有线连接iPhone热点,且网络适配器没有Apple Mobile Device Ethernet,问题解决
  • 比特币三种扩容路径Nubit、Babylon、Bitlayer分析
  • java的反编译命令
  • 【Hive入门】Hive架构与组件深度解析:从核心组件到生态协同
  • 关于RPC
  • 物联网 (IoT) 安全简介
  • Oracle数据库学习之路-目录
  • Nginx openresty web服务 与 Go 原生web服务性能对比
  • 跨平台.NET 版本 使用率排名
  • CAN总线接口卡有什么优势
  • 4.21—4.22学习总结 JavaWeb:HTML-CSS
  • 世界地球日丨上海交响乐团牵手上海植物园,为“树”写交响曲
  • 中国泳协:新奥运周期竞争激烈,“三从一新”全力提升实力
  • 外汇局:将持续强化外汇形势监测,保持汇率弹性,坚决对市场顺周期行为进行纠偏
  • 世界读书日丨上图东馆开启残疾人无障碍文化服务
  • 复旦大学附属中山医院也有儿科了,门诊将于下月底开业
  • 曼谷没有“邻家男孩”:跨境追星族经历的“余震”