Files
pengxiao a594f54cd2 update: 切换品牌至 TeaLab / SI · 空间智能与自主设计
- 全站品牌替换:DAEL / Design AI & Ecology Lab → TeaLab / SI · 空间智能与自主设计
  * 11 个 HTML 页面 title、navbar、页脚、版权统一更新
  * Logo 字母 D → T,配色与版式不变
  * js/common.js 注释 + localStorage 计数键更新
  * backend/app.py /api/health 文案更新
- website.html 内容重写
  * Hero 改为"空间智能 & 自主设计",加序言两行 + 英文 mission
  * 使命段改为研究主线(感知→理解→推理闭环)
  * 研究方向三卡:自主设计 / 深邃之形 / 人本智能(含工具栈)
- research.html 拆分
  * 原 research.html(研究管理后台)重命名为 research-manage.html
  * 新建公开 research.html:研究定位 + 完整段落 + 概念对比表 + 研究维度表
- 基础设施调整
  * 后端端口 5000 → 5001(避开本机 zotero-proxy 占用)
  * start_backend.sh 加可执行位

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-14 01:33:28 +08:00

240 lines
12 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>内容管理 | TeaLab · 空间智能与自主设计</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/common.css">
</head>
<body class="antialiased bg-gray-50">
<!-- Navigation -->
<nav class="fixed w-full z-50 bg-white border-b border-gray-200 shadow-sm" id="navbar">
<div class="max-w-7xl mx-auto px-6 lg:px-12 h-16 flex items-center justify-between">
<a href="website.html" class="text-xl tracking-tight font-bold flex items-center gap-2">
<div class="w-8 h-8 bg-black text-white flex items-center justify-center font-serif italic">T</div>
<span>TeaLab<span class="text-gray-400 font-light mx-2">/</span><span class="text-sm font-normal text-gray-600">Admin Panel</span></span>
</a>
<div class="flex items-center gap-4">
<span id="admin-user" class="text-sm text-gray-600"></span>
<a href="website.html" class="text-sm text-gray-600 hover:text-black">返回网站</a>
<button id="logout-btn" class="text-xs border border-gray-300 px-4 py-2 rounded hover:bg-black hover:text-white transition-colors">退出</button>
</div>
</div>
</nav>
<!-- Admin Panel -->
<div class="pt-20 pb-12">
<div class="max-w-7xl mx-auto px-6 lg:px-12">
<h1 class="text-3xl font-bold mb-8">内容管理系统</h1>
<!-- Tabs -->
<div class="flex space-x-4 border-b border-gray-200 mb-8">
<button class="admin-tab active pb-4 px-4 text-sm font-medium border-b-2 border-black" data-tab="articles">文章管理</button>
<button class="admin-tab pb-4 px-4 text-sm font-medium text-gray-500 hover:text-black" data-tab="resources">资源管理</button>
<button class="admin-tab pb-4 px-4 text-sm font-medium text-gray-500 hover:text-black" data-tab="team">团队管理</button>
</div>
<!-- Articles Tab -->
<div id="tab-articles" class="admin-tab-content">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-bold">文章列表</h2>
<button onclick="showArticleForm()" class="bg-black text-white px-4 py-2 rounded text-sm hover:bg-gray-800">+ 新建文章</button>
</div>
<div id="articles-list" class="space-y-4">
<!-- Articles will be loaded here -->
</div>
</div>
<!-- Resources Tab -->
<div id="tab-resources" class="admin-tab-content hidden">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-bold">资源列表</h2>
<button onclick="showResourceForm()" class="bg-black text-white px-4 py-2 rounded text-sm hover:bg-gray-800">+ 上传资源</button>
</div>
<div id="resources-list" class="space-y-4">
<!-- Resources will be loaded here -->
</div>
</div>
<!-- Team Tab -->
<div id="tab-team" class="admin-tab-content hidden">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-bold">团队成员</h2>
<button onclick="showTeamForm()" class="bg-black text-white px-4 py-2 rounded text-sm hover:bg-gray-800">+ 添加成员</button>
</div>
<div id="team-list" class="space-y-4">
<!-- Team members will be loaded here -->
</div>
</div>
</div>
</div>
<!-- Article Form Modal -->
<div id="article-modal" class="hidden fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center">
<div class="bg-white rounded-lg p-8 max-w-2xl w-full mx-4 max-h-[90vh] overflow-y-auto">
<h3 class="text-2xl font-bold mb-6" id="article-modal-title">新建文章</h3>
<form id="article-form" onsubmit="saveArticle(event)">
<input type="hidden" id="article-id">
<div class="mb-4">
<label class="block text-sm font-medium mb-2">标题</label>
<input type="text" id="article-title" required class="form-input w-full">
</div>
<div class="mb-4">
<label class="block text-sm font-medium mb-2">摘要</label>
<textarea id="article-summary" class="form-input w-full" rows="2"></textarea>
</div>
<div class="mb-4">
<label class="block text-sm font-medium mb-2">内容</label>
<textarea id="article-content" required class="form-input w-full" rows="10"></textarea>
</div>
<div class="grid grid-cols-2 gap-4 mb-4">
<div>
<label class="block text-sm font-medium mb-2">分类</label>
<select id="article-category" class="form-input w-full">
<option value="news">新闻</option>
<option value="publication">出版物</option>
</select>
</div>
<div>
<label class="block text-sm font-medium mb-2">状态</label>
<select id="article-published" class="form-input w-full">
<option value="true">已发布</option>
<option value="false">草稿</option>
</select>
</div>
</div>
<div class="mb-4">
<label class="flex items-center">
<input type="checkbox" id="article-protected" class="mr-2">
<span class="text-sm">受保护内容(需要登录查看)</span>
</label>
</div>
<div class="flex gap-4">
<button type="submit" class="bg-black text-white px-6 py-2 rounded hover:bg-gray-800">保存</button>
<button type="button" onclick="closeArticleForm()" class="bg-gray-200 text-gray-800 px-6 py-2 rounded hover:bg-gray-300">取消</button>
</div>
</form>
</div>
</div>
<!-- Resource Form Modal -->
<div id="resource-modal" class="hidden fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center">
<div class="bg-white rounded-lg p-8 max-w-2xl w-full mx-4">
<h3 class="text-2xl font-bold mb-6">上传资源</h3>
<form id="resource-form" onsubmit="saveResource(event)">
<div class="mb-4">
<label class="block text-sm font-medium mb-2">文件</label>
<input type="file" id="resource-file" required class="form-input w-full">
</div>
<div class="mb-4">
<label class="block text-sm font-medium mb-2">名称</label>
<input type="text" id="resource-name" required class="form-input w-full">
</div>
<div class="mb-4">
<label class="block text-sm font-medium mb-2">描述</label>
<textarea id="resource-description" class="form-input w-full" rows="3"></textarea>
</div>
<div class="mb-4">
<label class="block text-sm font-medium mb-2">分类</label>
<select id="resource-category" class="form-input w-full">
<option value="software">软件</option>
<option value="dataset">数据集</option>
<option value="document">文档</option>
</select>
</div>
<div class="mb-4">
<label class="flex items-center">
<input type="checkbox" id="resource-protected" class="mr-2">
<span class="text-sm">受保护资源(需要登录下载)</span>
</label>
</div>
<div class="flex gap-4">
<button type="submit" class="bg-black text-white px-6 py-2 rounded hover:bg-gray-800">上传</button>
<button type="button" onclick="closeResourceForm()" class="bg-gray-200 text-gray-800 px-6 py-2 rounded hover:bg-gray-300">取消</button>
</div>
</form>
</div>
</div>
<!-- Team Form Modal -->
<div id="team-modal" class="hidden fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center">
<div class="bg-white rounded-lg p-8 max-w-2xl w-full mx-4 max-h-[90vh] overflow-y-auto">
<h3 class="text-2xl font-bold mb-6">添加团队成员</h3>
<form id="team-form" onsubmit="saveTeamMember(event)">
<input type="hidden" id="team-id">
<div class="mb-4">
<label class="block text-sm font-medium mb-2">姓名</label>
<input type="text" id="team-name" required class="form-input w-full">
</div>
<div class="grid grid-cols-2 gap-4 mb-4">
<div>
<label class="block text-sm font-medium mb-2">职位(中文)</label>
<input type="text" id="team-title" class="form-input w-full">
</div>
<div>
<label class="block text-sm font-medium mb-2">职位(英文)</label>
<input type="text" id="team-title-en" class="form-input w-full">
</div>
</div>
<div class="grid grid-cols-2 gap-4 mb-4">
<div>
<label class="block text-sm font-medium mb-2">简介(中文)</label>
<textarea id="team-bio" class="form-input w-full" rows="3"></textarea>
</div>
<div>
<label class="block text-sm font-medium mb-2">简介(英文)</label>
<textarea id="team-bio-en" class="form-input w-full" rows="3"></textarea>
</div>
</div>
<div class="grid grid-cols-2 gap-4 mb-4">
<div>
<label class="block text-sm font-medium mb-2">角色</label>
<select id="team-role" class="form-input w-full">
<option value="professor">教授</option>
<option value="faculty">教师</option>
<option value="student">在读学生</option>
<option value="alumni">毕业学生</option>
</select>
</div>
<div>
<label class="block text-sm font-medium mb-2">排序</label>
<input type="number" id="team-order" value="0" class="form-input w-full">
</div>
</div>
<div class="mb-4">
<label class="block text-sm font-medium mb-2">邮箱</label>
<input type="email" id="team-email" class="form-input w-full">
</div>
<div class="mb-4">
<label class="block text-sm font-medium mb-2">网站</label>
<input type="url" id="team-website" class="form-input w-full">
</div>
<div class="flex gap-4">
<button type="submit" class="bg-black text-white px-6 py-2 rounded hover:bg-gray-800">保存</button>
<button type="button" onclick="closeTeamForm()" class="bg-gray-200 text-gray-800 px-6 py-2 rounded hover:bg-gray-300">取消</button>
</div>
</form>
</div>
</div>
<script src="https://unpkg.com/lucide@latest"></script>
<script src="js/api.js"></script>
<script src="js/common.js"></script>
<script src="js/auth.js"></script>
<script src="js/admin.js"></script>
</body>
</html>