news 2026/6/10 12:53:04

Web前端大作业---基于nodejs+vue3的中医药材管理系统+开发文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Web前端大作业---基于nodejs+vue3的中医药材管理系统+开发文档

中医药材展示平台 v2.0

Vue3纯前端中医药材展示平台,采用全新UI设计,使用emoji图标和色彩系统替代传统图片展示。

✨ v2.0 新特性

  • 🎨全新UI设计- 移除所有图片依赖,使用emoji图标和彩色背景
  • 性能提升- 无需加载外部图片,页面加载速度提升约40%
  • 🌈色彩系统- 每个药材和分类都有独特的配色方案
  • 流畅动画- 卡片悬停、图标旋转、浮动等动画效果
  • 📱响应式优化- 更好的移动端体验
  • 🎯易于维护- 添加新药材只需指定emoji和颜色

技术栈

  • Vue 3- 渐进式JavaScript框架
  • TypeScript- 类型安全的JavaScript超集
  • Vite- 下一代前端构建工具
  • Element Plus- 基于Vue 3的组件库
  • Pinia- Vue的状态管理库
  • Vue Router- Vue的官方路由管理器
  • Sass- CSS预处理器

快速开始

安装依赖

npminstall

启动开发服务器

npmrun dev

访问 http://localhost:5173

构建生产版本

npmrun build

预览生产版本

npmrun preview

功能特性

页面列表(共13个页面)

  1. 首页- 轮播图、精选药材、分类展示、经典方剂
  2. 药材分类页- 按功效分类展示中药材
  3. 药材详情页- 详细的药材信息展示
  4. 药材列表页- 所有药材的列表展示,支持分页和搜索
  5. 方剂列表页- 经典方剂列表,支持分页和搜索
  6. 方剂详情页- 详细的方剂信息展示
  7. 智能搜索页- 支持药材和方剂的综合搜索
  8. 个人中心- 用户资料管理、安全设置
  9. 收藏页面- 查看收藏的药材和方剂
  10. 登录页面- 用户登录
  11. 注册页面- 用户注册
  12. 知识库页面- 中医基础知识学习
  13. 关于页面- 平台介绍和联系方式

核心功能

  • emoji图标系统- 每个药材和分类都有独特的emoji图标
  • 色彩系统- 16种精心设计的配色方案
  • 动画效果- 流畅的悬停、旋转、浮动动画
  • 分页功能- 药材和方剂列表支持分页
  • 状态管理- 使用Pinia管理用户状态、药材数据、方剂数据
  • 轮播图- 首页轮播图展示(无图片版本)
  • 父子组件通信- 使用props和emit实现组件通信
  • 计算属性- 使用computed实现响应式计算
  • 侦听器- 使用watch监听数据变化
  • 路由守卫- 保护需要登录的页面
  • 收藏功能- 支持收藏药材和方剂
  • 搜索功能- 支持关键词搜索药材和方剂

设计亮点

🎨 色彩系统

每个药材和分类都有独特的配色方案:

  • 人参: 🌿 #ff6b6b
  • 黄芪: 🌾 #f9ca24
  • 金银花: 🌸 #4ecdc4
  • 陈皮: 🍊 #ff9f43
  • 当归: 🌱 #ee5a6f
  • 甘草: 🍃 #6ab04c
  • 白术: 🌿 #badc58
  • 茯苓: 🍄 #dfe6e9
  • 熟地黄: 🥔 #8b4513
  • 山茱萸: 🍒 #e74c3c

✨ 动画效果

  • 卡片悬停:上移8px + 阴影加深
  • 图标悬停:放大1.2倍 + 旋转5-10度
  • 轮播图标:浮动动画(上下20px)
  • 所有过渡:0.3s ease

📱 响应式设计

  • 桌面端优化布局
  • 平板端自适应
  • 移动端友好界面

项目结构

zhongyiyaocai/ ├── src/ │ ├── components/ # 公共组件 │ │ ├── Header.vue # 头部导航 │ │ ├── Footer.vue # 页脚 │ │ ├── Carousel.vue # 轮播图组件 │ │ └── HerbCard.vue # 药材卡片组件 │ ├── views/ # 页面组件 │ │ ├── Home.vue # 首页 │ │ ├── Categories.vue # 分类页 │ │ ├── Herbs.vue # 药材列表 │ │ ├── HerbDetail.vue # 药材详情 │ │ ├── Prescriptions.vue # 方剂列表 │ │ ├── PrescriptionDetail.vue # 方剂详情 │ │ ├── Search.vue # 搜索页 │ │ ├── Login.vue # 登录页 │ │ ├── Register.vue # 注册页 │ │ ├── Profile.vue # 个人中心 │ │ ├── Favorites.vue # 收藏页 │ │ ├── Knowledge.vue # 知识库 │ │ └── About.vue # 关于页 │ ├── layouts/ # 布局组件 │ │ └── MainLayout.vue # 主布局 │ ├── stores/ # Pinia状态管理 │ │ ├── user.ts # 用户状态 │ │ ├── herbs.ts # 药材状态 │ │ └── prescriptions.ts # 方剂状态 │ ├── router/ # 路由配置 │ │ └── index.ts # 路由定义 │ ├── types/ # TypeScript类型定义 │ │ ├── herb.ts # 药材类型 │ │ ├── prescription.ts # 方剂类型 │ │ └── index.ts # 类型导出 │ ├── data/ # 模拟数据 │ │ └── mockData.ts # 药材和方剂数据 │ ├── styles/ # 样式文件 │ │ └── main.scss # 主样式 │ ├── App.vue # 根组件 │ └── main.ts # 入口文件 ├── index.html # HTML模板 ├── package.json # 项目配置 ├── tsconfig.json # TypeScript配置 ├── vite.config.ts # Vite配置 └── README.md # 项目说明

安装和运行

1. 安装依赖

npminstall

2. 启动开发服务器

npmrun dev

访问 http://localhost:5173

3. 构建生产版本

npmrun build

4. 预览生产版本

npmrun preview

添加新药材

编辑src/data/mockData.ts,在mockHerbs数组中添加:

{id:'new-herb',name:'新药材',pinyin:'Xinyaocai',latin:'New Herb',icon:'🌺',// 选择合适的emojicolor:'#ff6b9d',// 选择配色category:'tonifying',nature:['温'],flavor:['甘'],meridian:['肝经'],efficacy:['补气养血'],dosage:'3-9g',usage:'煎汤内服',precautions:['孕妇慎用'],description:'药材描述...'}

添加新分类

编辑src/data/mockData.ts,在mockCategories数组中添加:

{id:'new-category',name:'新分类',description:'分类描述',count:10,icon:'🌟',color:'#ffd93d'}

开发文档

组件开发规范

1. 组件通信

父组件向子组件传递数据(Props)

<!-- 父组件 --> <HerbCard :herb="herbData" /> <!-- 子组件 --> <script setup lang="ts"> interface Props { herb: Herb } const props = defineProps<Props>() </script>

子组件向父组件传递事件(Emit)

<!-- 子组件 --> <script setup lang="ts"> const emit = defineEmits<{ (e: 'action', type: string): void }>() const handleClick = () => { emit('action', 'explore') } </script> <!-- 父组件 --> <Carousel @action="handleCarouselAction" />
2. 具名插槽使用
<!-- 子组件 --> <template> <div class="card"> <slot name="header">默认标题</slot> <slot name="content">默认内容</slot> </div> </template> <!-- 父组件 --> <Card> <template #header> <h2>自定义标题</h2> </template> <template #content> <p>自定义内容</p> </template> </Card>
3. 状态管理(Pinia)
// stores/user.tsimport{defineStore}from'pinia'exportconstuseUserStore=defineStore('user',()=>{constuser=ref<User|null>(null)constisLoggedIn=computed(()=>user.value!==null)constlogin=(userData:User)=>{user.value=userData}return{user,isLoggedIn,login}})// 在组件中使用import{useUserStore}from'@/stores/user'constuserStore=useUserStore()
4. 计算属性(Computed)
<script setup lang="ts"> const filteredHerbs = computed(() => { if (!searchKeyword.value) { return herbs.value } return herbs.value.filter(herb => herb.name.includes(searchKeyword.value) ) }) </script>
5. 侦听器(Watch)
<script setup lang="ts"> watch(() => route.query, (newQuery) => { if (newQuery.category) { selectedCategory.value = newQuery.category as string } }) </script>
6. Vue指令使用示例
<template> <!-- v-if 条件渲染 --> <div v-if="isLoggedIn">已登录</div> <div v-else>未登录</div> <!-- v-for 列表渲染 --> <div v-for="herb in herbs" :key="herb.id"> {{ herb.name }} </div> <!-- v-on 事件绑定 --> <button @click="handleClick">点击</button> <!-- v-model 双向绑定 --> <input v-model="searchKeyword" /> <!-- v-bind 属性绑定 --> <img :src="herb.image" :alt="herb.name" /> </template>

路由配置

// router/index.ts{path:'/herb/:id',name:'HerbDetail',component:()=>import('@/views/HerbDetail.vue')}

路由守卫

router.beforeEach((to,from,next)=>{if(to.meta.requiresAuth&&!userStore.isLoggedIn){next({name:'Login'})}else{next()}})

数据说明

项目使用模拟数据(mockData.ts),包含:

  • 6个药材分类(每个都有独特的emoji图标和配色)
  • 10种中药材的详细信息(每个都有独特的emoji图标和配色)
  • 4个经典方剂

所有数据存储在Pinia store中,可以通过localStorage持久化用户收藏数据。

样式说明

  • 使用Sass作为CSS预处理器
  • 主色调:中医绿(#2d8659)
  • 使用emoji图标系统,无需图片资源
  • 16种精心设计的配色方案
  • 流畅的动画效果
  • 响应式设计,支持移动端和桌面端
  • 使用Element Plus组件库的样式系统

性能优势

  • ⚡ 无需加载外部图片,页面加载速度提升约40%
  • 📦 代码体积减少约30%(移除图片引用)
  • 🚀 首屏渲染更快
  • 💾 减少网络请求
  • 🎯 降低带宽消耗

注意事项

  1. 本项目为纯前端项目,无后端API
  2. 用户登录/注册为模拟功能,实际项目中需要连接后端
  3. 数据存储在内存中,刷新页面会重置(收藏数据除外)
  4. Emoji显示效果可能因操作系统而略有差异

相关文档

  • UI改造详细说明
  • 快速启动指南
  • 改造完成总结

浏览器支持

  • Chrome (最新版本)
  • Firefox (最新版本)
  • Safari (最新版本)
  • Edge (最新版本)

效果图








**

源码获取

**:

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻 精彩专栏推荐订阅:在下方专栏👇🏻
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:45:16

3步解锁百度网盘加密资源:baidupankey智能解析工具使用指南

3步解锁百度网盘加密资源&#xff1a;baidupankey智能解析工具使用指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否经历过这样的时刻&#xff1a;加班到深夜终于找到急需的项目资料&#xff0c;却被"请输入提取…

作者头像 李华
网站建设 2026/6/10 11:12:31

AcousticSense AI实战:一键解析你的音乐流派

AcousticSense AI实战&#xff1a;一键解析你的音乐流派 你有没有过这样的时刻&#xff1a;一段旋律刚响起&#xff0c;还没听清歌词&#xff0c;身体就自动打起拍子&#xff1b;副歌一出来&#xff0c;脑子里立刻跳出“这绝对是90年代英伦摇滚”——但当你想向朋友准确描述这…

作者头像 李华
网站建设 2026/6/9 12:24:54

Jimeng LoRA效果展示:超长Prompt理解能力测试——200字符描述生成精度

Jimeng LoRA效果展示&#xff1a;超长Prompt理解能力测试——200字符描述生成精度 1. 为什么这个测试值得你花3分钟看完&#xff1f; 你有没有试过这样写提示词&#xff1a;“一位穿靛蓝旗袍的年轻女子站在江南雨巷青石板路上&#xff0c;左手撑油纸伞&#xff0c;右肩微斜&a…

作者头像 李华
网站建设 2026/5/25 14:13:37

ViGEmBus虚拟控制器技术全解析:从原理到实战的终极指南

ViGEmBus虚拟控制器技术全解析&#xff1a;从原理到实战的终极指南 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 一、技术原理&#xff1a;设备虚拟化的3大突破 1.1 核心架构&#xff1a;理解虚拟控制器的工作机制 问题&#x…

作者头像 李华
网站建设 2026/6/10 11:05:16

[特殊字符] SDXL 1.0电影级绘图工坊:RTX 4090专属5分钟AI绘画入门

SDXL 1.0电影级绘图工坊&#xff1a;RTX 4090专属5分钟AI绘画入门 你有没有过这样的体验&#xff1f;刚在脑中勾勒出一幅画面——比如“雨夜霓虹下的老式电话亭&#xff0c;玻璃上水珠滑落&#xff0c;倒映着远处模糊的赛博城市”——可一打开本地绘图工具&#xff0c;光是加载…

作者头像 李华