|
|
<!DOCTYPE html> |
|
|
<html lang="zh-CN"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>实验室管理系统 - 实验任务管理子系统</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
|
<script> |
|
|
tailwind.config = { |
|
|
theme: { |
|
|
extend: { |
|
|
colors: { |
|
|
primary: { |
|
|
50: '#f0f9ff', |
|
|
100: '#e0f2fe', |
|
|
200: '#bae6fd', |
|
|
300: '#7dd3fc', |
|
|
400: '#38bdf8', |
|
|
500: '#0ea5e9', |
|
|
600: '#0284c7', |
|
|
700: '#0369a1', |
|
|
800: '#075985', |
|
|
900: '#0c4a6e', |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
</script> |
|
|
<style> |
|
|
.gantt-bar { |
|
|
position: relative; |
|
|
height: 16px; |
|
|
border-radius: 4px; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.gantt-phase { |
|
|
height: 100%; |
|
|
display: inline-block; |
|
|
position: relative; |
|
|
border-right: 1px solid white; |
|
|
} |
|
|
|
|
|
.gantt-phase:last-child { |
|
|
border-right: none; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar { |
|
|
width: 8px; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-track { |
|
|
background: #f1f1f1; |
|
|
border-radius: 4px; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-thumb { |
|
|
background: #cbd5e1; |
|
|
border-radius: 4px; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-thumb:hover { |
|
|
background: #94a3b8; |
|
|
} |
|
|
|
|
|
.status-badge { |
|
|
font-size: 0.75rem; |
|
|
padding: 2px 8px; |
|
|
border-radius: 12px; |
|
|
} |
|
|
|
|
|
.shadow-custom { |
|
|
box-shadow: 0 4px 16px rgba(0,0,0,0.08); |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="bg-gray-50 text-gray-800 font-sans"> |
|
|
|
|
|
<header class="bg-white shadow-sm z-20 fixed top-0 left-0 right-0 h-16 flex items-center px-6"> |
|
|
<div class="flex items-center justify-between w-full"> |
|
|
|
|
|
<div class="flex items-center"> |
|
|
<div class="bg-primary-500 w-9 h-9 rounded-lg flex items-center justify-center mr-3"> |
|
|
<i class="fas fa-flask text-white text-xl"></i> |
|
|
</div> |
|
|
<h1 class="text-gray-700 text-lg font-semibold">实验室管理系统</h1> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="text-primary-600 font-medium text-lg"> |
|
|
<i class="fas fa-tasks mr-2"></i> |
|
|
实验任务管理子系统 |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="flex items-center space-x-4"> |
|
|
<div class="relative group"> |
|
|
<div class="flex items-center space-x-2 cursor-pointer"> |
|
|
<div class="w-9 h-9 bg-gray-200 rounded-full overflow-hidden"> |
|
|
<div class="bg-gradient-to-tr from-primary-400 to-primary-600 w-full h-full flex items-center justify-center"> |
|
|
<span class="text-white font-medium">A</span> |
|
|
</div> |
|
|
</div> |
|
|
<span class="font-medium">admin</span> |
|
|
<i class="fas fa-caret-down text-gray-500"></i> |
|
|
</div> |
|
|
|
|
|
<div class="absolute right-0 top-12 mt-2 w-48 bg-white rounded-md shadow-lg py-1 hidden group-hover:block z-20 border"> |
|
|
<div class="px-4 py-2 border-b text-sm text-gray-500">管理员 (admin)</div> |
|
|
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50"> |
|
|
<i class="fas fa-user mr-2"></i>个人中心 |
|
|
</a> |
|
|
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50"> |
|
|
<i class="fas fa-cog mr-2"></i>系统设置 |
|
|
</a> |
|
|
<a href="#" class="block px-4 py-2 text-sm text-red-600 hover:bg-red-50"> |
|
|
<i class="fas fa-sign-out-alt mr-2"></i>退出登录 |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
|
|
|
|
|
|
<div class="flex pt-16 bg-gray-50 min-h-screen"> |
|
|
|
|
|
<nav class="w-64 bg-gray-800 text-gray-300 fixed top-16 left-0 bottom-0 overflow-y-auto"> |
|
|
<div class="px-4 py-6"> |
|
|
<ul class="space-y-1"> |
|
|
<li> |
|
|
<a href="#" class="flex items-center px-4 py-3 hover:bg-gray-700 rounded-md"> |
|
|
<i class="fas fa-calendar-alt mr-3"></i> |
|
|
<span class="font-medium">实验计划管理</span> |
|
|
</a> |
|
|
</li> |
|
|
<li> |
|
|
<a href="#" class="flex items-center px-4 py-3 bg-primary-800 text-white rounded-md"> |
|
|
<i class="fas fa-tasks mr-3"></i> |
|
|
<span class="font-medium">实验任务管理</span> |
|
|
</a> |
|
|
</li> |
|
|
<li> |
|
|
<a href="#" class="flex items-center px-4 py-3 hover:bg-gray-700 rounded-md"> |
|
|
<i class="fas fa-microscope mr-3"></i> |
|
|
<span class="font-medium">实验设备管理</span> |
|
|
</a> |
|
|
</li> |
|
|
<li> |
|
|
<a href="#" class="flex items-center px-4 py-3 hover:bg-gray-700 rounded-md"> |
|
|
<i class="fas fa-map-marked-alt mr-3"></i> |
|
|
<span class="font-medium">实验场地管理</span> |
|
|
</a> |
|
|
</li> |
|
|
<li> |
|
|
<a href="#" class="flex items-center px-4 py-3 hover:bg-gray-700 rounded-md"> |
|
|
<i class="fas fa-database mr-3"></i> |
|
|
<span class="font-medium">实验数据管理</span> |
|
|
</a> |
|
|
</li> |
|
|
<li> |
|
|
<a href="#" class="flex items-center px-4 py-3 hover:bg-gray-700 rounded-md mt-6"> |
|
|
<i class="fas fa-cog mr-3"></i> |
|
|
<span class="font-medium">系统设置</span> |
|
|
</a> |
|
|
</li> |
|
|
</ul> |
|
|
</div> |
|
|
</nav> |
|
|
|
|
|
|
|
|
<main class="ml-64 flex-1 p-6"> |
|
|
|
|
|
<div class="bg-white rounded-xl shadow-custom mb-6"> |
|
|
<div class="px-6 py-4 flex flex-col md:flex-row md:items-center md:justify-between border-b"> |
|
|
<div> |
|
|
<h2 class="text-xl font-semibold text-gray-800">实验任务总览</h2> |
|
|
<p class="text-sm text-gray-500 mt-1">管理所有正在进行及已完成的实验任务</p> |
|
|
</div> |
|
|
<div class="mt-4 md:mt-0 flex flex-wrap gap-2"> |
|
|
<button class="bg-primary-600 text-white px-4 py-2 rounded-md hover:bg-primary-700 flex items-center"> |
|
|
<i class="fas fa-plus mr-2"></i> 创建新任务 |
|
|
</button> |
|
|
<button class="border border-gray-300 text-gray-600 px-4 py-2 rounded-md hover:bg-gray-50 flex items-center"> |
|
|
<i class="fas fa-file-import mr-2"></i> 批量导入 |
|
|
</button> |
|
|
<button class="border border-gray-300 text-gray-600 px-4 py-2 rounded-md hover:bg-gray-50 flex items-center"> |
|
|
<i class="fas fa-clipboard-list mr-2"></i> 任务模板管理 |
|
|
</button> |
|
|
<button class="border border-gray-300 text-gray-600 px-4 py-2 rounded-md hover:bg-gray-50 flex items-center"> |
|
|
<i class="fas fa-file-export mr-2"></i> 导出任务表格 |
|
|
</button> |
|
|
<div class="relative rounded-md shadow-sm"> |
|
|
<input type="text" placeholder="搜索任务..." class="py-2 px-4 pl-10 w-full md:w-64 rounded-md border border-gray-300 focus:ring-primary-500 focus:border-primary-500"> |
|
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> |
|
|
<i class="fas fa-search text-gray-400"></i> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="px-6 py-5 border-b"> |
|
|
<div class="grid grid-cols-1 md:grid-cols-6 gap-4"> |
|
|
<div class="md:col-span-2"> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-1">起止时间范围</label> |
|
|
<div class="flex space-x-2"> |
|
|
<input type="date" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-primary-500 focus:ring-primary-500 text-sm"> |
|
|
<span class="self-center text-gray-400">至</span> |
|
|
<input type="date" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-primary-500 focus:ring-primary-500 text-sm"> |
|
|
</div> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-1">所属型号</label> |
|
|
<input type="text" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-primary-500 focus:ring-primary-500 text-sm" placeholder="输入型号"> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-1">实验类别</label> |
|
|
<select class="block w-full rounded-md border-gray-300 shadow-sm focus:border-primary-500 focus:ring-primary-500 text-sm"> |
|
|
<option>全部类别</option> |
|
|
<option>环境</option> |
|
|
<option>电磁</option> |
|
|
<option>计量</option> |
|
|
</select> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-1">实验负责人</label> |
|
|
<select class="block w-full rounded-md border-gray-300 shadow-sm focus:border-primary-500 focus:ring-primary-500 text-sm"> |
|
|
<option>全部人员</option> |
|
|
<option selected>张工</option> |
|
|
<option>李主任</option> |
|
|
<option>王教授</option> |
|
|
<option>赵研究员</option> |
|
|
</select> |
|
|
</div> |
|
|
<div class="self-end"> |
|
|
<button class="w-full bg-primary-600 hover:bg-primary-700 text-white font-medium py-1.5 px-4 rounded-md flex items-center justify-center"> |
|
|
<i class="fas fa-search mr-2"></i> 搜索 |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mt-4"> |
|
|
<label class="block text-sm font-medium text-gray-700 mb-2">状态筛选</label> |
|
|
<div class="flex flex-wrap gap-2"> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="rounded border-gray-300 text-primary-600 shadow-sm focus:border-primary-500 focus:ring focus:ring-primary-500 focus:ring-opacity-50" checked> |
|
|
<span class="ml-2 text-sm text-gray-700">未开始</span> |
|
|
</label> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="rounded border-gray-300 text-primary-600 shadow-sm focus:border-primary-500 focus:ring focus:ring-primary-500 focus:ring-opacity-50" checked> |
|
|
<span class="ml-2 text-sm text-gray-700">进行中</span> |
|
|
</label> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="rounded border-gray-300 text-primary-600 shadow-sm focus:border-primary-500 focus:ring focus:ring-primary-500 focus:ring-opacity-50"> |
|
|
<span class="ml-2 text-sm text-gray-700">已暂停</span> |
|
|
</label> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="rounded border-gray-300 text-primary-600 shadow-sm focus:border-primary-500 focus:ring focus:ring-primary-500 focus:ring-opacity-50" checked> |
|
|
<span class="ml-2 text-sm text-gray-700">已完成</span> |
|
|
</label> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="overflow-x-auto"> |
|
|
<table class="min-w-full divide-y divide-gray-200"> |
|
|
<thead class="bg-gray-50"> |
|
|
<tr> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">序号</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">实验任务名称</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">所属计划</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">所属型号</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">实验类别</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">起止时间</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">状态</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">任务进度</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">负责人</th> |
|
|
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">操作</th> |
|
|
</tr> |
|
|
</thead> |
|
|
<tbody class="bg-white divide-y divide-gray-200"> |
|
|
<tr class="hover:bg-gray-50"> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">1</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<div class="text-sm font-medium text-gray-900">高温应力测试任务A1</div> |
|
|
<div class="text-sm text-gray-500">TASK-A1-HST</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">高温试验计划A1</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 font-medium">XJ-78</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-blue-100 text-blue-800">环境</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"> |
|
|
<div>2025-07-01</div> |
|
|
<div class="text-gray-400">至 2025-07-20</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="status-badge bg-yellow-100 text-yellow-800">进行中</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<div class="text-sm text-gray-900 font-medium">8/4</div> |
|
|
<div class="w-full bg-gray-200 rounded-full h-1.5"> |
|
|
<div class="bg-yellow-500 h-1.5 rounded-full" style="width: 50%"></div> |
|
|
</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">张工</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm"> |
|
|
<div class="flex space-x-2"> |
|
|
<button class="text-gray-500 hover:text-primary-600"> |
|
|
<i class="fas fa-eye"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-blue-600"> |
|
|
<i class="fas fa-edit"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-green-600"> |
|
|
<i class="fas fa-sitemap"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-red-600"> |
|
|
<i class="fas fa-trash"></i> |
|
|
</button> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
<tr class="hover:bg-gray-50"> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">2</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<div class="text-sm font-medium text-gray-900">电磁干扰测试任务B3</div> |
|
|
<div class="text-sm text-gray-500">TASK-B3-EMI</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">电磁干扰试验B3</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 font-medium">WD-22</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-purple-100 text-purple-800">电磁</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"> |
|
|
<div>2025-06-10</div> |
|
|
<div class="text-gray-400">至 2025-06-25</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="status-badge bg-green-100 text-green-800">已完成</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<div class="text-sm text-gray-900 font-medium">12/12</div> |
|
|
<div class="w-full bg-gray-200 rounded-full h-1.5"> |
|
|
<div class="bg-green-500 h-1.5 rounded-full" style="width: 100%"></div> |
|
|
</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">李主任</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm"> |
|
|
<div class="flex space-x-2"> |
|
|
<button class="text-gray-500 hover:text-primary-600"> |
|
|
<i class="fas fa-eye"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-blue-600"> |
|
|
<i class="fas fa-edit"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-green-600"> |
|
|
<i class="fas fa-sitemap"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-red-600"> |
|
|
<i class="fas fa-trash"></i> |
|
|
</button> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
<tr class="hover:bg-gray-50"> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">3</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<div class="text-sm font-medium text-gray-900">计量精度测试C5</div> |
|
|
<div class="text-sm text-gray-500">TASK-C5-MET</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">高精度计量计划C</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 font-medium">PR-44</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-orange-100 text-orange-800">计量</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"> |
|
|
<div>2025-08-15</div> |
|
|
<div class="text-gray-400">至 2025-08-30</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<span class="status-badge bg-gray-100 text-gray-800">未开始</span> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap"> |
|
|
<div class="text-sm text-gray-900 font-medium">0/5</div> |
|
|
<div class="w-full bg-gray-200 rounded-full h-1.5"> |
|
|
<div class="bg-gray-400 h-1.5 rounded-full" style="width: 0%"></div> |
|
|
</div> |
|
|
</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">王教授</td> |
|
|
<td class="px-6 py-4 whitespace-nowrap text-sm"> |
|
|
<div class="flex space-x-2"> |
|
|
<button class="text-gray-500 hover:text-primary-600"> |
|
|
<i class="fas fa-eye"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-blue-600"> |
|
|
<i class="fas fa-edit"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-green-600"> |
|
|
<i class="fas fa-sitemap"></i> |
|
|
</button> |
|
|
<button class="text-gray-500 hover:text-red-600"> |
|
|
<i class="fas fa-trash"></i> |
|
|
</button> |
|
|
</div> |
|
|
</td> |
|
|
</tr> |
|
|
</tbody> |
|
|
</table> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="px-6 py-5 border-t"> |
|
|
<h3 class="text-lg font-medium text-gray-800 mb-4 flex items-center"> |
|
|
<i class="fas fa-project-diagram mr-2 text-primary-600"></i>任务执行状态甘特图 |
|
|
</h3> |
|
|
|
|
|
<div class="space-y-4"> |
|
|
|
|
|
<div> |
|
|
<div class="flex mb-2 text-sm"> |
|
|
<div class="w-48 font-medium text-gray-800">高温应力测试任务A1</div> |
|
|
<div class="flex-1 truncate text-gray-500">7月1日 – 7月20日</div> |
|
|
</div> |
|
|
<div class="gantt-bar bg-gray-100"> |
|
|
<div class="gantt-phase bg-gray-400" style="width: 10%"><span class="absolute ml-1 text-white text-xs">准备</span></div> |
|
|
<div class="gantt-phase bg-yellow-500" style="width: 50%"><span class="absolute ml-1 text-white text-xs">测试执行</span></div> |
|
|
<div class="gantt-phase bg-blue-300" style="width: 20%"><span class="absolute ml-1 text-white text-xs">分析</span></div> |
|
|
<div class="gantt-phase bg-gray-200" style="width: 20%">完成</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<div class="flex mb-2 text-sm"> |
|
|
<div class="w-48 font-medium text-gray-800">电磁干扰测试任务B3</div> |
|
|
<div class="flex-1 truncate text-gray-500">6月10日 – 6月25日</div> |
|
|
</div> |
|
|
<div class="gantt-bar bg-gray-100"> |
|
|
<div class="gantt-phase bg-blue-400" style="width: 15%"><span class="absolute ml-1 text-white text-xs">准备</span></div> |
|
|
<div class="gantt-phase bg-blue-400" style="width: 40%"><span class="absolute ml-1 text-white text-xs">测试执行</span></div> |
|
|
<div class="gantt-phase bg-blue-400" style="width: 25%"><span class="absolute ml-1 text-white text-xs">分析</span></div> |
|
|
<div class="gantt-phase bg-green-500" style="width: 20%"><span class="absolute ml-1 text-white text-xs">完成</span></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<div class="flex mb-2 text-sm"> |
|
|
<div class="w-48 font-medium text-gray-800">计量精度测试C5</div> |
|
|
<div class="flex-1 truncate text-gray-500">8月15日 – 8月30日</div> |
|
|
</div> |
|
|
<div class="gantt-bar bg-gray-100"> |
|
|
<div class="gantt-phase bg-gray-300" style="width: 100%"><span class="absolute ml-1 text-gray-700 text-xs">计划中</span></div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mt-6 flex flex-wrap gap-4 text-xs"> |
|
|
<div class="flex items-center"> |
|
|
<div class="w-3 h-3 bg-gray-400 rounded-sm mr-2"></div> |
|
|
<span>准备阶段</span> |
|
|
</div> |
|
|
<div class="flex items-center"> |
|
|
<div class="w-3 h-3 bg-yellow-500 rounded-sm mr-2"></div> |
|
|
<span>测试执行中</span> |
|
|
</div> |
|
|
<div class="flex items-center"> |
|
|
<div class="w-3 h-3 bg-blue-400 rounded-sm mr-2"></div> |
|
|
<span>数据分析中</span> |
|
|
</div> |
|
|
<div class="flex items-center"> |
|
|
<div class="w-3 h-3 bg-green-500 rounded-sm mr-2"></div> |
|
|
<span>已完成</span> |
|
|
</div> |
|
|
<div class="flex items-center"> |
|
|
<div class="w-3 h-3 bg-gray-200 rounded-sm mr-2"></div> |
|
|
<span>未开始</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="px-6 py-4 border-t flex items-center justify-between"> |
|
|
<div class="text-sm text-gray-500"> |
|
|
显示 1-3 条,共 24 条记录 |
|
|
</div> |
|
|
<div class="inline-flex items-center space-x-2"> |
|
|
<select class="border-gray-300 text-sm rounded-md shadow-sm"> |
|
|
<option>10 条/页</option> |
|
|
<option>20 条/页</option> |
|
|
<option>50 条/页</option> |
|
|
<option>100 条/页</option> |
|
|
</select> |
|
|
<nav class="flex space-x-1"> |
|
|
<button class="relative inline-flex items-center justify-center h-8 w-8 rounded-md text-sm font-medium bg-white text-gray-400 hover:bg-gray-50"> |
|
|
<i class="fas fa-chevron-left"></i> |
|
|
</button> |
|
|
<button class="relative inline-flex items-center justify-center h-8 w-8 rounded-md text-sm font-medium bg-primary-600 text-white">1</button> |
|
|
<button class="relative inline-flex items-center justify-center h-8 w-8 rounded-md text-sm font-medium bg-white hover:bg-gray-50">2</button> |
|
|
<button class="relative inline-flex items-center justify-center h-8 w-8 rounded-md text-sm font-medium bg-white hover:bg-gray-50">3</button> |
|
|
<span class="relative inline-flex items-center justify-center h-8 w-8">...</span> |
|
|
<button class="relative inline-flex items-center justify-center h-8 w-8 rounded-md text-sm font-medium bg-white hover:bg-gray-50">8</button> |
|
|
<button class="relative inline-flex items-center justify-center h-8 w-8 rounded-md text-sm font-medium bg-white text-gray-400 hover:bg-gray-50"> |
|
|
<i class="fas fa-chevron-right"></i> |
|
|
</button> |
|
|
</nav> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mt-6 text-center text-sm text-gray-500"> |
|
|
<p>© 2025 实验室管理系统 | 版权所有</p> |
|
|
</div> |
|
|
</main> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
|
|
|
const tableRows = document.querySelectorAll('tbody tr'); |
|
|
tableRows.forEach(row => { |
|
|
row.addEventListener('mouseenter', () => { |
|
|
row.classList.add('bg-gray-50'); |
|
|
}); |
|
|
row.addEventListener('mouseleave', () => { |
|
|
row.classList.remove('bg-gray-50'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const searchInput = document.querySelector('input[type="text"][placeholder="搜索任务..."]'); |
|
|
searchInput.addEventListener('focus', function() { |
|
|
this.parentElement.classList.add('ring-2', 'ring-primary-300', 'rounded-md'); |
|
|
}); |
|
|
searchInput.addEventListener('blur', function() { |
|
|
this.parentElement.classList.remove('ring-2', 'ring-primary-300', 'rounded-md'); |
|
|
}); |
|
|
|
|
|
|
|
|
const statusBadges = document.querySelectorAll('.status-badge'); |
|
|
statusBadges.forEach(badge => { |
|
|
const statusText = badge.innerText.trim(); |
|
|
if(statusText === '进行中') { |
|
|
badge.classList.remove('bg-yellow-100', 'text-yellow-800'); |
|
|
badge.classList.add('bg-yellow-200', 'text-yellow-900'); |
|
|
} else if(statusText === '已完成') { |
|
|
badge.classList.remove('bg-green-100', 'text-green-800'); |
|
|
badge.classList.add('bg-green-200', 'text-green-900'); |
|
|
} else if(statusText === '未开始') { |
|
|
badge.classList.remove('bg-gray-100', 'text-gray-800'); |
|
|
badge.classList.add('bg-gray-200', 'text-gray-900'); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
</script> |
|
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=maomaobj/lab2" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |