init: TEALab 2025 实验室网站项目
从百度网盘 /apps/bypy/dofile/ 下载的完整项目结构,包含: - dofile/: Flask 后端(端口 5000)+ 静态前端(端口 6002) - officefile/: 项目相关文档 - .gitignore: Python venv / 日志 / 缓存 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,239 @@
|
||||
<!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>内容管理 | Design AI & Ecology Lab</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">D</div>
|
||||
<span>DAEL<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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user