智慧水务管理系统 - 精河县供水工程综合管理平台

documents.html 3.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>文档协作</title>
  7. <script src="https://cdn.tailwindcss.com"></script>
  8. </head>
  9. <body class="bg-gray-50 min-h-screen">
  10. <nav class="bg-purple-600 text-white shadow-lg">
  11. <div class="container mx-auto px-4 py-4">
  12. <div class="flex justify-between items-center">
  13. <div class="flex items-center space-x-3"><span class="text-2xl">🤝</span><h1 class="text-xl font-bold">远程团队协作工具</h1></div>
  14. <div class="flex space-x-4">
  15. <a href="/" class="hover:bg-purple-500 px-3 py-2 rounded">首页</a>
  16. <a href="/documents" class="bg-purple-500 px-3 py-2 rounded">文档</a>
  17. <a href="/tasks" class="hover:bg-purple-500 px-3 py-2 rounded">任务</a>
  18. </div>
  19. </div>
  20. </div>
  21. </nav>
  22. <main class="container mx-auto px-4 py-8">
  23. <div class="flex justify-between items-center mb-8">
  24. <div><h2 class="text-3xl font-bold text-gray-800">📄 文档协作</h2><p class="text-gray-600 mt-2">异步文档编辑和评论</p></div>
  25. <button onclick="createDoc()" class="bg-blue-600 text-white px-6 py-3 rounded-lg">➕ 新建文档</button>
  26. </div>
  27. <div id="docList" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"></div>
  28. </main>
  29. <script>
  30. async function loadDocs() {
  31. const res = await fetch('/api/documents');
  32. const data = await res.json();
  33. const container = document.getElementById('docList');
  34. if (data.success && data.data.length > 0) {
  35. container.innerHTML = data.data.map(d => `
  36. <div class="bg-white rounded-lg shadow p-6 hover:shadow-md transition">
  37. <h3 class="text-lg font-bold mb-2">${d.title}</h3>
  38. <p class="text-gray-600 text-sm mb-4">${d.content ? d.content.substring(0, 80) + '...' : '无内容'}</p>
  39. <div class="flex justify-between items-center">
  40. <span class="text-xs text-gray-500">作者:${d.owner_name}</span>
  41. <button onclick="viewDoc(${d.id})" class="text-blue-600 hover:underline text-sm">查看</button>
  42. </div>
  43. </div>
  44. `).join('');
  45. } else {
  46. container.innerHTML = '<div class="col-span-full text-center text-gray-500 py-8">暂无文档,点击右上角创建第一个文档</div>';
  47. }
  48. }
  49. async function createDoc() {
  50. const title = prompt('文档标题:');
  51. if (!title) return;
  52. const res = await fetch('/api/documents', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title, content: '', owner_id: 1, is_public: true }) });
  53. const result = await res.json();
  54. if (result.success) { alert('✅ 文档创建成功'); loadDocs(); }
  55. else alert('❌ ' + result.error);
  56. }
  57. function viewDoc(id) { alert('文档详情功能开发中... 文档 ID: ' + id); }
  58. document.addEventListener('DOMContentLoaded', loadDocs);
  59. </script>
  60. </body>
  61. </html>