mirror of
https://git-qiuchenly.yltfspace.com/QiuChenly/corepatch
synced 2025-11-25 05:40:27 +08:00
### 后端更新 性能优化 - Redis、数据库索引优化, 复杂联表查询查询速度从10秒降低到500ms 功能增强 - 统一文件上传 API - 论坛权限管理优化 ### 前端更新 问题修复 - 统一错误提示、组件复用、图标本地化、密码加密传输、大文件分片上传 新增功能 - 全局通知系统、WebSocket 实时消息、图标批量同步、IP 封禁管理、应用版本批量查询、头像上传、TypeScript 类型完善、讨论区功能增强 代码优化 - 删除冗余组件、统一 API 错误处理、优化代码结构、统一 UI 风格
2 lines
5.9 KiB
CSS
2 lines
5.9 KiB
CSS
.discussion-forums-page[data-v-796923df]{width:100%;min-height:100%}.page-container[data-v-796923df]{width:100%}.page-header[data-v-796923df]{margin-bottom:32px}.page-title[data-v-796923df]{margin:0 0 8px;font-size:28px;font-weight:600;color:var(--text-primary)}.page-description[data-v-796923df]{margin:0;font-size:14px;color:var(--text-secondary)}.forums-grid[data-v-796923df]{display:grid;grid-template-columns:repeat(auto-fill,200px);gap:20px;margin-bottom:40px;justify-content:center}.builtin-grid[data-v-796923df]{margin-bottom:60px}.builtin-forums-section[data-v-796923df],.app-forums-section[data-v-796923df]{margin-bottom:40px}.section-title[data-v-796923df]{margin:0 0 20px;font-size:20px;font-weight:600;color:var(--text-primary)}.builtin-forum-card[data-v-796923df]{background:linear-gradient(135deg,#3b82f61a,#9333ea1a);border-color:#3b82f64d}.builtin-forum-card[data-v-796923df]:hover{border-color:#3b82f680;background:linear-gradient(135deg,#3b82f626,#9333ea26)}.builtin-icon[data-v-796923df]{background:linear-gradient(135deg,#3b82f633,#9333ea33)}.builtin-icon .builtin-icon-svg[data-v-796923df]{font-size:40px;color:var(--primary-color)}.builtin-icon .created-icon-img[data-v-796923df]{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-lg)}.forum-card[data-v-796923df]{display:flex;flex-direction:column;align-items:center;padding:24px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:12px;cursor:pointer;transition:all .2s ease;position:relative}.forum-card[data-v-796923df]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:var(--primary-color)}.forum-card.disabled[data-v-796923df]{cursor:default;pointer-events:none}.forum-card.disabled .forum-icon-wrapper[data-v-796923df],.forum-card.disabled .forum-info[data-v-796923df]>*:not(.request-open-btn){opacity:.6}.forum-card.disabled[data-v-796923df]:hover{transform:none;border-color:var(--border-light);box-shadow:none}.forum-card.disabled .request-open-btn[data-v-796923df]{pointer-events:auto;opacity:1!important}.forum-icon-wrapper[data-v-796923df]{margin-bottom:16px}.forum-icon[data-v-796923df]{width:80px;height:80px;border-radius:16px;overflow:hidden;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center}.forum-icon img[data-v-796923df]{width:100%;height:100%;object-fit:contain}.forum-icon .icon-placeholder[data-v-796923df]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:600;color:var(--text-secondary);background:var(--bg-secondary)}.forum-info[data-v-796923df]{text-align:center;width:100%}.forum-name[data-v-796923df]{margin:0 0 8px;font-size:16px;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.forum-bundle-id[data-v-796923df]{margin:0 0 8px;font-size:12px;color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.forum-description[data-v-796923df]{margin:0 0 8px;font-size:13px;color:var(--text-secondary);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.forum-stats[data-v-796923df]{display:flex;flex-direction:column;gap:6px;margin:8px 0;padding:8px 0;border-top:1px solid var(--border-light)}.forum-stats .stat-item[data-v-796923df]{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;color:var(--text-secondary)}.forum-stats .stat-icon[data-v-796923df]{font-size:14px;color:var(--primary-color)}.forum-status-disabled[data-v-796923df]{margin:8px 0 0;font-size:12px;color:#ff6b6b;font-weight:500}.request-open-btn[data-v-796923df]{margin-top:12px;padding:8px 20px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px rgba(var(--primary-color-rgb, 59, 130, 246),.3);position:relative;z-index:10;pointer-events:auto}.request-open-btn[data-v-796923df]:hover:not(:disabled){background:var(--primary-color);opacity:.95;transform:translateY(-2px);box-shadow:0 4px 12px rgba(var(--primary-color-rgb, 59, 130, 246),.4)}.request-open-btn[data-v-796923df]:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 6px rgba(var(--primary-color-rgb, 59, 130, 246),.3)}.request-open-btn[data-v-796923df]:disabled{background:var(--text-tertiary);cursor:not-allowed;opacity:.6;box-shadow:none;pointer-events:none}.loading[data-v-796923df],.error[data-v-796923df],.empty[data-v-796923df]{text-align:center;padding:60px 0}.loading .spinner[data-v-796923df],.error .spinner[data-v-796923df],.empty .spinner[data-v-796923df]{width:40px;height:40px;border:3px solid var(--border-light);border-top:3px solid var(--primary-color);border-radius:50%;animation:spin-796923df .8s linear infinite;margin:0 auto 16px}.loading p[data-v-796923df],.error p[data-v-796923df],.empty p[data-v-796923df]{color:var(--text-secondary);font-size:14px;margin-bottom:8px}.loading .empty-hint[data-v-796923df],.error .empty-hint[data-v-796923df],.empty .empty-hint[data-v-796923df]{font-size:12px;color:var(--text-tertiary)}@keyframes spin-796923df{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-icon[data-v-796923df]{font-size:64px;margin-bottom:16px;opacity:.3;color:var(--text-tertiary)}.list-footer[data-v-796923df]{padding:20px 0;border-top:1px solid var(--border-light)}.footer-stats[data-v-796923df]{display:flex;gap:24px;justify-content:center}.footer-stats .stat-item[data-v-796923df]{display:flex;gap:8px}.footer-stats .stat-item .stat-label[data-v-796923df]{color:var(--text-secondary);font-size:14px}.footer-stats .stat-item .stat-value[data-v-796923df]{color:var(--text-primary);font-weight:600;font-size:14px}.btn[data-v-796923df]{padding:8px 16px;border:none;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn.btn-primary[data-v-796923df]{background:var(--primary-color);color:#fff}.btn.btn-primary[data-v-796923df]:hover{opacity:.9}
|