96 UI optimization (#136)

* fix(home): 🐛 解决多次切换路由后页面卡顿的问题 #96

卸载路由时清除requestAnimationFrame

* feat:  文件存储使用Blob格式

* style: 💄 修改部分类型any为具体类型

* feat:  界面设置中模块使用瀑布流布局 #96

* fix: 🐛 md文档更换文件夹解决控制台警告

* style: 💄 switch按钮改回使用daisyui组件

* refactor: ♻️ 所有人员列表提取tableColumn

* style: 💄 奖项列表中的图片类型修复

* fix(globalConfig): 修复当前音乐项类型缺失问题

* feat:  single person not done

* feat:  可添加单人 #96

* build(.gitignore): 添加 auto-imports.d.ts 到忽略文件

* fix: 🐛 上传、下载excel文件时修复路径错误

打包成应用和网页端的baseUrl不一样,使用环境变量来表示

* fix: 🐛 导入人员列表时处理有值为空的情况

* style: 💄 改变toaster的组件

* fix: 🐛 上传文件、解析数据与存储/读取数据的处理

、

* fix(Config): 更新备案信息链接样式

将备案信息的段落标签替换为可点击的链接标签,使用户能够直接跳转到工信部备案查询页面。同时添加了悬停效果样式,提升用户体验。

* feat:  首页奖项列表样式修改 not done #96

* chore(deps): ✏️ 更新依赖版本

* chore: ✏️ gsap list demo

* build: 🏗️ docker构建优化

* chore: ✏️ gsap scroll demo

* style: 💄 gsap demno

* feat:  demo smooth scroll gsap scrolltrigger

* feat(Demo): 添加更多颜色选项并注释GSAP动画

* refactor(PrizeList): 重构奖品列表组件结构

* feat(PrizeList): 重构奖品列表组件并添加滚动动画

* feat:  增加定时抽取功能 #96

* feat:  添加定时抽取功能的说明

* feat:  优化gsap #96

项数不多时不触发gsap

* style: 💄 文本修改

* feat:  优化

* feat:  优化奖项列表

* fix(Home): 修复奖品列表滚动检测逻辑

* fix(home): 修复抽奖停止逻辑避免重复执行;调整卡片垂直居中位置计算

* feat:  播放中奖音频 #96
This commit is contained in:
LOG1997
2025-12-28 00:04:20 +08:00
committed by GitHub
parent a0223bda4f
commit bd5eac7d70
27 changed files with 4287 additions and 4439 deletions

View File

@@ -20,92 +20,94 @@
"dependencies": {
"@tweenjs/tween.js": "23.1.2",
"@vueuse/core": "^14.1.0",
"axios": "^1.7.8",
"canvas-confetti": "^1.9.3",
"axios": "^1.13.2",
"canvas-confetti": "^1.9.4",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"dayjs": "^1.11.13",
"dayjs": "^1.11.19",
"dexie": "^4.2.1",
"github-markdown-css": "^5.8.0",
"github-markdown-css": "^5.8.1",
"gsap": "^3.14.2",
"localforage": "^1.10.0",
"lodash-es": "^4.17.21",
"lucide-vue-next": "^0.559.0",
"lodash-es": "^4.17.22",
"lucide-vue-next": "^0.562.0",
"markdown-it": "^14.1.0",
"masonry-layout": "^4.2.2",
"pinia": "^3.0.3",
"pinia": "^3.0.4",
"pinia-plugin-persist": "^1.0.0",
"reka-ui": "^2.6.1",
"reka-ui": "^2.7.0",
"sparticles": "^1.3.1",
"tailwind-merge": "^3.4.0",
"three": "0.166.0",
"three-css3d": "1.0.6",
"uuid": "^13.0.0",
"vue": "^3.5.13",
"vue-dompurify-html": "^5.2.0",
"vue": "^3.5.26",
"vue-dompurify-html": "^5.3.0",
"vue-draggable-plus": "^0.6.0",
"vue-i18n": "^11.2.2",
"vue-router": "^4.5.0",
"vue-i18n": "^11.2.7",
"vue-router": "^4.6.4",
"vue-sonner": "^2.0.9",
"vue-toast-notification": "^3",
"vue3-colorpicker": "^2.3.0",
"xlsx": "^0.18.5",
"zod": "^4.1.11"
"zod": "^4.2.1"
},
"devDependencies": {
"@antfu/eslint-config": "^6.4.1",
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.15.0",
"@iconify-json/ep": "^1.2.1",
"@iconify-json/fluent": "^1.2.8",
"@tailwindcss/typography": "^0.5.15",
"@tailwindcss/vite": "^4.1.13",
"@tauri-apps/cli": "^2.9.5",
"@antfu/eslint-config": "^6.7.3",
"@eslint/eslintrc": "^3.3.3",
"@eslint/js": "^9.39.2",
"@iconify-json/ep": "^1.2.3",
"@iconify-json/fluent": "^1.2.36",
"@tailwindcss/typography": "^0.5.19",
"@tailwindcss/vite": "^4.1.18",
"@tauri-apps/cli": "^2.9.6",
"@testing-library/vue": "^8.1.0",
"@types/canvas-confetti": "^1.6.4",
"@types/canvas-confetti": "^1.9.0",
"@types/lodash-es": "^4.17.12",
"@types/markdown-it": "^14.1.2",
"@types/masonry-layout": "^4.2.8",
"@types/node": "^25.0.0",
"@types/node": "^25.0.3",
"@types/three": "0.166.0",
"@typescript-eslint/eslint-plugin": "^8.49.0",
"@typescript-eslint/parser": "^8.49.0",
"@typescript-eslint/eslint-plugin": "^8.50.1",
"@typescript-eslint/parser": "^8.50.1",
"@vitejs/plugin-legacy": "^7.2.1",
"@vitejs/plugin-vue": "^6.0.1",
"@vitest/ui": "^4.0.15",
"@vitejs/plugin-vue": "^6.0.3",
"@vitest/ui": "^4.0.16",
"@vue/test-utils": "^2.4.6",
"@vue/tsconfig": "^0.8.1",
"autoprefixer": "^10.4.20",
"baseline-browser-mapping": "^2.8.32",
"autoprefixer": "^10.4.23",
"baseline-browser-mapping": "^2.9.11",
"child_process": "^1.0.2",
"daisyui": "^5.1.13",
"eslint": "^9.15.0",
"eslint-plugin-vue": "^10.4.0",
"globals": "^16.4.0",
"daisyui": "^5.5.14",
"eslint": "^9.39.2",
"eslint-plugin-vue": "^10.6.2",
"fast-glob": "^3.3.3",
"globals": "^16.5.0",
"happy-dom": "^20.0.11",
"husky": "^9.1.7",
"jsdom": "^27.0.0",
"jsdom": "^27.3.0",
"path": "^0.12.7",
"postcss": "^8.4.49",
"rollup-plugin-visualizer": "^6.0.3",
"sass": "^1.81.0",
"sass-loader": "^16.0.3",
"tailwindcss": "^4.1.17",
"terser": "^5.36.0",
"postcss": "^8.5.6",
"rollup-plugin-visualizer": "^6.0.5",
"sass": "^1.97.1",
"sass-loader": "^16.0.6",
"tailwindcss": "^4.1.18",
"terser": "^5.44.1",
"tw-animate-css": "^1.4.0",
"typescript": "~5.9.3",
"unplugin-auto-import": "^20.1.0",
"unplugin-icons": "^22.3.0",
"unplugin-auto-import": "^20.3.0",
"unplugin-icons": "^22.5.0",
"unplugin-vue-components": "^30.0.0",
"vite": "^7.1.6",
"vite": "^7.3.0",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-inspect": "^11.3.3",
"vite-plugin-svg-icons": "^2.0.1",
"vite-plugin-vue-devtools": "^8.0.2",
"vitest": "^4.0.15",
"vue-tsc": "^3.0.7"
"vite-plugin-vue-devtools": "^8.0.5",
"vitest": "^4.0.16",
"vue-tsc": "^3.2.1"
},
"engines": {
"node": ">=22.x"
},
"packageManager": "pnpm@10.8.1+sha1.a4eff733d0c4ccc179997f0ef4986f6e92427781"
"packageManager": "pnpm@10.26.1"
}