修复 #4

Merged
wenjiankun merged 1 commits from fix-feedback-url-encoding into master 2025-06-03 15:20:07 +08:00
4 changed files with 128 additions and 0 deletions

43
package.json.bak Normal file
View File

@ -0,0 +1,43 @@
{
"name": "docusaurus",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"dev": "docusaurus start --port 3000",
},
"dependencies": {
"@docusaurus/core": "2.4.1",
"@docusaurus/preset-classic": "2.4.1",
"@easyops-cn/docusaurus-search-local": "^0.35.0",
"@mdx-js/react": "^1.6.22",
"body-parser": "^1.20.2",
"clsx": "^1.2.1",
"docusaurus-plugin-image-zoom": "^1.0.1",
"express": "^4.18.2",
"prism-react-renderer": "^1.3.5",
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

View File

@ -0,0 +1,78 @@
import React, { useState, useEffect } from 'react';
import Layout from '@theme/Layout';
export default function FeedbackDashboard() {
const [feedbacks, setFeedbacks] = useState([]);
useEffect(() => {
// 从localStorage加载反馈
const storedFeedbacks = JSON.parse(localStorage.getItem('docFeedbacks') || '[]');
setFeedbacks(storedFeedbacks);
}, []);
// 清除所有反馈
const clearFeedbacks = () => {
if (confirm('确定要清除所有反馈吗?')) {
localStorage.setItem('docFeedbacks', '[]');
setFeedbacks([]);
}
};
return (
<Layout title="反馈管理">
<div className="container margin-vert--lg">
<h1>反馈管理</h1>
<div className="margin-bottom--lg">
<h2>总计: {feedbacks.length} 条反馈</h2>
{feedbacks.length > 0 && (
<button
onClick={clearFeedbacks}
className="button button--danger"
>
清除所有反馈
</button>
)}
</div>
<div className="card-demo margin-bottom--lg">
<div className="card">
<div className="card__header">
<h3>反馈列表</h3>
</div>
<div className="card__body">
{feedbacks.length === 0 ? (
<p>暂无反馈数据</p>
) : (
<table className="table">
<thead>
<tr>
<th>类型</th>
<th>页面</th>
<th>内容</th>
<th>时间</th>
</tr>
</thead>
<tbody>
{feedbacks.map((feedback, index) => (
<tr key={index}>
<td>{feedback.type === 'vote' ? '投票' : '评论'}</td>
<td>{feedback.page}</td>
<td>
{feedback.type === 'vote'
? (feedback.isHelpful ? '👍 有帮助' : '👎 没有帮助')
: feedback.content}
</td>
<td>{new Date(feedback.timestamp).toLocaleString('zh-CN')}</td>
</tr>
))}
</tbody>
</table>
)}
</div>
</div>
</div>
</div>
</Layout>
);
}

View File

@ -0,0 +1,7 @@
---
title: 反馈管理
---
import FeedbackDashboard from '@site/src/pages/feedback-dashboard';
<FeedbackDashboard />

View File