From 3b063ff64cf45f658464c120e1065f45e65687b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E8=80=81=E7=99=BD=E5=85=94?= Date: Sun, 28 Sep 2025 14:52:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=86=97=E4=BD=99=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=B9=B6=E9=87=8D=E6=9E=84=E5=86=85=E5=AE=B9=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=EF=BC=9A=E5=88=A0=E9=99=A4=E6=8A=80?= =?UTF-8?q?=E6=9C=AF=E6=A0=88=E5=92=8C=E5=85=BC=E5=AE=B9=E6=80=A7=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E6=96=87=E6=A1=A3=EF=BC=8C=E7=A7=BB=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E6=A8=A1=E6=80=81=E6=A1=86=E7=BB=84=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=95=B4=E5=90=88=E7=AE=A1=E7=90=86=E7=BB=84=E4=BB=B6=E4=B8=BA?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E7=BB=93=E6=9E=84=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=84=E7=BB=87=EF=BC=8C=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E5=8F=AF=E7=BB=B4=E6=8A=A4=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cunkebao/兼容性说明.md | 177 ------------- Cunkebao/技术栈.md | 26 -- Touchkebao/src/pages/index.tsx | 2 +- .../content-management/AddKeywordModal.tsx | 162 ------------ .../content-management/AddMaterialModal.tsx | 174 ------------- .../AddSensitiveWordModal.tsx | 133 ---------- .../content-management/EditMaterialModal.tsx | 211 --------------- .../powerCenter/content-management/api.ts | 19 +- .../content-management/components/index.ts | 12 +- .../management}/KeywordManagement.tsx | 9 +- .../management}/MaterialManagement.tsx | 25 +- .../management}/SensitiveWordManagement.tsx | 9 +- .../components/management/index.ts | 4 + .../components/modals/ContentManager.tsx | 244 ++++++++++++++++++ .../modals/KeywordModal.tsx} | 88 +++++-- .../components/modals/MaterialModal.tsx | 194 ++++++++++++++ .../modals/SensitiveWordModal.tsx} | 82 ++++-- .../components/modals/index.ts | 5 + .../powerCenter/content-management/index.tsx | 38 ++- .../content-management/modals/index.ts | 3 - 20 files changed, 639 insertions(+), 978 deletions(-) delete mode 100644 Cunkebao/兼容性说明.md delete mode 100644 Cunkebao/技术栈.md delete mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/AddKeywordModal.tsx delete mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/AddMaterialModal.tsx delete mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/AddSensitiveWordModal.tsx delete mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/EditMaterialModal.tsx rename Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/{ => components/management}/KeywordManagement.tsx (97%) rename Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/{ => components/management}/MaterialManagement.tsx (94%) rename Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/{ => components/management}/SensitiveWordManagement.tsx (97%) create mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/management/index.ts create mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/modals/ContentManager.tsx rename Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/{EditKeywordModal.tsx => components/modals/KeywordModal.tsx} (68%) create mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/modals/MaterialModal.tsx rename Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/{EditSensitiveWordModal.tsx => components/modals/SensitiveWordModal.tsx} (65%) create mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/components/modals/index.ts delete mode 100644 Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/modals/index.ts diff --git a/Cunkebao/兼容性说明.md b/Cunkebao/兼容性说明.md deleted file mode 100644 index dc77df52..00000000 --- a/Cunkebao/兼容性说明.md +++ /dev/null @@ -1,177 +0,0 @@ -# 存客宝项目 - 浏览器兼容性说明 - -## 🎯 **兼容性目标** - -本项目已配置为支持以下浏览器版本: - -- **Chrome**: 50+ -- **Firefox**: 50+ -- **Safari**: 10+ -- **Edge**: 12+ -- **Internet Explorer**: 11+ (部分功能受限) -- **Android**: 4.4+ (特别优化Android 7) -- **iOS**: 9+ - -## 🔧 **兼容性配置** - -### 1. **Polyfill 支持** - -项目已集成以下 polyfill 来确保低版本浏览器兼容性: - -- **core-js**: ES6+ 特性支持 -- **regenerator-runtime**: async/await 支持 -- **whatwg-fetch**: fetch API 支持 -- **Android专用polyfill**: 针对Android 7等低版本系统优化 - -### 2. **构建配置** - -- 使用 **terser** 进行代码压缩 -- 配置了 **browserslist** 目标浏览器 -- 添加了兼容性检测组件 -- 特别针对Android设备优化 - -### 3. **特性支持** - -项目通过 polyfill 支持以下 ES6+ 特性: - -- ✅ Promise -- ✅ fetch API -- ✅ Array.from, Array.find, Array.includes, Array.findIndex -- ✅ Object.assign, Object.entries, Object.values, Object.keys -- ✅ String.includes, String.startsWith, String.endsWith -- ✅ Map, Set, WeakMap, WeakSet -- ✅ Symbol -- ✅ requestAnimationFrame -- ✅ IntersectionObserver -- ✅ ResizeObserver -- ✅ URLSearchParams -- ✅ AbortController - -## 🚀 **使用方法** - -### 开发环境 - -```bash -pnpm dev -``` - -### 生产构建 - -```bash -pnpm build -``` - -### 预览构建结果 - -```bash -pnpm preview -``` - -## 📱 **Android 特别优化** - -### **Android 7 兼容性** - -Android 7 (API 24) 系统对ES6+特性支持不完整,项目已特别优化: - -#### **问题解决:** - -- ✅ Array.prototype.includes 方法缺失 -- ✅ String.prototype.includes 方法缺失 -- ✅ Object.assign 方法缺失 -- ✅ Array.from 方法缺失 -- ✅ requestAnimationFrame 缺失 -- ✅ IntersectionObserver 缺失 -- ✅ URLSearchParams 缺失 - -#### **解决方案:** - -- 使用自定义polyfill补充缺失方法 -- 提供降级实现确保功能可用 -- 自动检测Android版本并启用相应polyfill - -### **Android WebView 优化** - -- 针对系统WebView进行特别优化 -- 支持微信、QQ等内置浏览器 -- 提供降级方案确保基本功能可用 - -## ⚠️ **注意事项** - -1. **Android 7 支持** - - 已启用兼容模式,基本功能可用 - - 建议升级到Android 8+或使用最新版Chrome - - 部分高级特性可能受限 - -2. **Android 6 及以下** - - 支持有限,建议升级系统 - - 使用最新版Chrome浏览器 - - 部分功能可能不可用 - -3. **移动端兼容性** - - iOS Safari 10+ - - Android Chrome 50+ - - 微信内置浏览器 (部分功能受限) - - QQ内置浏览器 (部分功能受限) - -4. **性能考虑** - - polyfill 会增加包体积 - - 现代浏览器会自动忽略不需要的 polyfill - - Android设备上会有额外的兼容性检测 - -## 🔍 **兼容性检测** - -项目包含自动兼容性检测功能: - -### **通用检测** - -- 在低版本浏览器中会显示警告提示 -- 控制台会输出兼容性信息 -- 建议用户升级浏览器 - -### **Android专用检测** - -- 自动检测Android系统版本 -- 检测Chrome和WebView版本 -- 识别微信、QQ等内置浏览器 -- 提供针对性的解决方案建议 - -## 📝 **更新日志** - -### v3.0.0 - -- ✅ 添加 ES5 兼容性支持 -- ✅ 集成 core-js polyfill -- ✅ 添加兼容性检测组件 -- ✅ 优化构建配置 -- ✅ **新增Android 7专用polyfill** -- ✅ **新增Android兼容性检测** -- ✅ **优化移动端体验** - -## 🛠️ **故障排除** - -如果遇到兼容性问题: - -1. **Android设备问题** - - 检查Android系统版本 - - 确认Chrome浏览器版本 - - 查看控制台错误信息 - - 尝试使用系统浏览器而非内置浏览器 - -2. **通用问题** - - 检查浏览器版本是否在支持范围内 - - 查看控制台是否有错误信息 - - 确认 polyfill 是否正确加载 - - 尝试清除浏览器缓存 - -3. **性能问题** - - 在低版本设备上可能加载较慢 - - 建议使用WiFi网络 - - 关闭不必要的浏览器扩展 - -## 📞 **技术支持** - -如有兼容性问题,请联系开发团队。 - -### **特别说明** - -本项目已针对Android 7等低版本系统进行了特别优化,通过代码弥补了系统内核对ES6+特性支持不完整的问题。虽然不能完全替代系统升级,但可以确保应用在低版本Android设备上正常运行。 diff --git a/Cunkebao/技术栈.md b/Cunkebao/技术栈.md deleted file mode 100644 index a565619f..00000000 --- a/Cunkebao/技术栈.md +++ /dev/null @@ -1,26 +0,0 @@ -## 使用技术栈 -- React 18 -- TypeScript -- Vite(新一代前端构建工具) -- axios -- sass (scss) -- React Router v6 -- antd-mobile -- antd(已设置基础单位为 rem,配合 postcss-pxtorem) -- postcss-pxtorem(px 转 rem,移动端适配) -- ESLint + Prettier(代码规范与自动格式化) -- 路径别名 @ 指向 src 目录 - -## 关于兼容与工程化 -- 自动化脚本(yarn lint、yarn dev 等) -- 移动端 rem 适配(html 根字体 + pxtorem) -- iOS 浏览器滚动回弹兼容问题已通过全局样式处理 -- 支持 VS Code 编辑器自动格式化(推荐配合 ESLint/Prettier 插件) - -## 目录结构简要 -- src/ 业务源码(pages、api、styles、App.tsx、main.tsx 等) -- public/ 静态资源目录 -- index.html 项目入口(根目录) -- vite.config.ts 构建与路径别名配置 -- tsconfig.json TypeScript 配置 -- .eslintrc.js 代码规范配置 \ No newline at end of file diff --git a/Touchkebao/src/pages/index.tsx b/Touchkebao/src/pages/index.tsx index ed9c8153..d0857ff5 100644 --- a/Touchkebao/src/pages/index.tsx +++ b/Touchkebao/src/pages/index.tsx @@ -18,7 +18,7 @@ const IndexPage: React.FC = () => { if (isMobile()) { navigate("/mobile/dashboard"); } else { - navigate("/pc/dashboard"); + navigate("/pc/weChat"); } }, [navigate]); diff --git a/Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/AddKeywordModal.tsx b/Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/AddKeywordModal.tsx deleted file mode 100644 index 86836d9b..00000000 --- a/Touchkebao/src/pages/pc/ckbox/powerCenter/content-management/AddKeywordModal.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import React, { useState } from "react"; -import { Modal, Form, Input, Button, message, Select } from "antd"; -import { addKeyword, type KeywordAddRequest } from "./api"; - -const { TextArea } = Input; -const { Option } = Select; - -interface AddKeywordModalProps { - visible: boolean; - onCancel: () => void; - onSuccess: () => void; -} - -const AddKeywordModal: React.FC = ({ - visible, - onCancel, - onSuccess, -}) => { - const [form] = Form.useForm(); - const [loading, setLoading] = useState(false); - - const handleSubmit = async (values: any) => { - try { - setLoading(true); - const data: KeywordAddRequest = { - title: values.title, - keywords: values.keywords, - content: values.content, - matchType: values.matchType, - priority: values.priority, - replyType: values.replyType, - status: values.status || "1", - }; - - const response = await addKeyword(data); - if (response) { - message.success("添加关键词成功"); - form.resetFields(); - onSuccess(); - onCancel(); - } else { - message.error(response?.message || "添加关键词失败"); - } - } catch (error) { - console.error("添加关键词失败:", error); - message.error("添加关键词失败"); - } finally { - setLoading(false); - } - }; - - const handleCancel = () => { - form.resetFields(); - onCancel(); - }; - - return ( - -
- - - - - - - - - -