pitfall / index.html
brainwang's picture
请构建一个隐患工单增删改查界面, 下面是结构信息 # AIDF-Example-Pitfall-analysis 数据库模型设计 # 概述 本文档为项目 "AIDF-Example-Pitfall-analysis" 的数据库设计文档。 **模型信息:** * **短名:** pitfall * **名称:** AIDF-Example-Pitfall-analysis * **描述:** AIDF隐患管理示例 * **创建者:** Bow * **创建于:** 2024-11-25 11:42:50 * **更新于:** 2025-1-17 10:21:49 * **版本:** 0.0.1-SNAPSHOT * **包括域:** # 实体关系图 下图为根据设计生成的E-R图: ```mermaid erDiagram PITFALL_TICKET { String ticket_id PK "工单编号" String field_type "专业类型 (Not Null)" String impact_field "受影响专业" String category "隐患类型 (Not Null)" String device_level "设施等级" String pitfall_level "隐患等级 (Not Null)" String critical_level "紧急程度 (Not Null)" String fiber_name "光缆名称" String fiber_id "光缆段ID" String fiber_segment_id "光缆段名称" String fiber_type "光缆类型" Integer fiber_pith_count "光缆芯数" String fiber_device_type_a "A段支撑设备类型" String fiber_device_code_a "A段支撑设备编码" String fiber_device_name_a "A段支撑设备名称" String fiber_device_type_z "Z段支撑设备类型" String fiber_device_code_z "Z段支撑设备编码" String fiber_device_name_z "Z段支撑设备名称" Date plan_complete_time "计划完成时间 (Not Null)" String ticket_name "工单标题 (Not Null)" String department "责任单位 (Not Null)" String audit_by "审核人 (Not Null)" String pitfall_description "隐患描述" String pitfall_impact_evaluation "隐患对业务的影响评估" String emergency_plan "应急预案概述" String solution_suggestion "整改方案建议" String fix_status "整治完成状态 (Not Null)" String created_by "创建人" Date created_time "创建时间" String updated_by "更新人" Date updated_time "更新时间" } PITFALL_TICKET_TASK { String task_id PK "任务单号" String ticket_id "归属工单号 (Not Null)" String process_dept "处理部门 (Not Null)" String process_position "处理岗位 (Not Null)" String process_user "处理人 (Not Null)" String status "任务单状态 (Not Null)" Date process_begin "派单时间 (Not Null)" Date process_end "完工时间" String created_by "创建人" Date created_time "创建时间" String updated_by "更新人" Date updated_time "更新时间" } PITFALL_TICKET_ACTION { String action_id PK "动作id" String ticket_id "关联工单号 (Not Null)" String task_id "关联工单任务号 (Not Null)" String action_name "动作名称 (Not Null)" String process_user "处理人 (Not Null)" String process_dept "处理部门 (Not Null)" String process_group "处理组/室 (Not Null)" String action_desc "操作描述 (Not Null)" Date action_time "动作时间 (Not Null)" String created_by "创建人" Date created_time "创建时间" String updated_by "更新人" Date updated_time "更新时间" } PITFALL_SOLUTION { String solution_id PK "方案ID" String name "方案名称" String field "专业" String charged_user "整治负责人" String strtegy "策略" String description "方案备注" String created_by "创建人" Date created_time "创建时间" String updated_by "更新人" Date updated_time "更新时间" } PITFALL_SOLUTION_TICKET { Long id PK "关系标识 (自生成)" String solution_id "方案ID (Not Null)" String ticket_id "工单编号 (Not Null)" String CREATED_BY "创建人" Date CREATED_TIME "创建时间" String UPDATED_BY "更新人" Date UPDATED_TIME "更新时间" } PITFALL_TICKET ||--o{ PITFALL_TICKET_TASK : "ticket_id -> ticket_id" PITFALL_TICKET ||--o{ PITFALL_TICKET_ACTION : "ticket_id -> ticket_id" PITFALL_TICKET ||--o{ PITFALL_SOLUTION_TICKET : "ticket_id -> ticket_id" PITFALL_TICKET_TASK ||--o{ PITFALL_TICKET_ACTION : "task_id -> task_id" PITFALL_SOLUTION ||--o{ PITFALL_SOLUTION_TICKET : "solution_id -> solution_id" ``` # 数据库设计 这里列出根据设计生成的数据库表。 ## 数据库表: 隐患工单 (PITFALL_TICKET) 隐患工单(PITFALL_TICKET): . ### "隐患工单" 表字段 | 字段名 | 字段中文名 | 数据类型 | Java类型 | 非空 | 缺省值 | 字段说明 | |---|---|---|---|---|---|---| | **ticket_id<sup>PK</sup>** | **工单编号** | VARCHAR(255) | String | true | | 唯一编号。综调生成。 | | **field_type** | 专业类型 | VARCHAR(255) | String | true | | 如:传输承载网 | | impact_field | 受影响专业 | VARCHAR(255) | String | false | | 如:传输承载网 | | **category** | 隐患类型 | VARCHAR(255) | String | true | | 如:传输理由组织隐患 | | device_level | 设施等级 | VARCHAR(255) | String | false | | 如:一千 | | **pitfall_level** | 隐患等级 | VARCHAR(255) | String | true | | 如:一般隐患 | | **critical_level** | 紧急程度 | VARCHAR(90) | String | true | | 如:一般 | | fiber_name | 光缆名称 | VARCHAR(90) | String | false | | 如: 广发。白前村12总光缆 | | fiber_id | 光缆段ID | VARCHAR(90) | String | false | | 如: 2023122121 | | fiber_segment_id | 光缆段名称 | VARCHAR(90) | String | false | | 如: 广发光交-干家洞水库管理站EP端/09 | | fiber_type | 光缆类型 | VARCHAR(90) | String | false | | 如:配线光缆 | | fiber_pith_count | 光缆芯数 | INTEGER | Integer | false | | 如: 6 | | fiber_device_type_a | A段支撑设备类型 | VARCHAR(90) | String | false | | | | fiber_device_code_a | A段支撑设备编码 | VARCHAR(90) | String | false | | | | fiber_device_name_a | A段支撑设备名称 | VARCHAR(90) | String | false | | | | fiber_device_type_z | Z段支撑设备类型 | VARCHAR(90) | String | false | | | | fiber_device_code_z | Z段支撑设备编码 | VARCHAR(90) | String | false | | | | fiber_device_name_z | Z段支撑设备名称 | VARCHAR(90) | String | false | | | | **plan_complete_time** | 计划完成时间 | TIMESTAMP | Date | true | | | | **ticket_name** | 工单标题 | VARCHAR(255) | String | true | | | | **department** | 责任单位 | VARCHAR(255) | String | true | | 如:东区电信局 | | **audit_by** | 审核人 | VARCHAR(32) | String | true | | 如: wangbo | | pitfall_description | 隐患描述 | VARCHAR(900) | String | false | | | | pitfall_impact_evaluation | 隐患对业务的影响评估 | VARCHAR(900) | String | false | | | | emergency_plan | 应急预案概述 | VARCHAR(900) | String | false | | | | solution_suggestion | 整改方案建议 | VARCHAR(900) | String | false | | 整改方案的建设思路 | | **fix_status** | 整治完成状态 | VARCHAR(32) | String | true | | 如:未处理,进行中,已完成. 字典TICKET_FIX_STATUS | | created_by | 创建人 | VARCHAR(32) | String | false | | | | created_time | 创建时间 | TIMESTAMP | Date | false | | | | updated_by | 更新人 | VARCHAR(32) | String | false | | | | updated_time | 更新时间 | TIMESTAMP | Date | false | | | ### "隐患工单" 表关系 * 字段: 工单编号(ticket_id) ⇒ 实体: 工单任务单(PITFALL_TICKET_TASK) 字段 归属工单号(ticket_id) * 字段: 工单编号(ticket_id) ⇒ 实体: 工单动作列表(PITFALL_TICKET_ACTION) 字段 关联工单号(ticket_id) * 字段: 工单编号(ticket_id) ⇒ 实体: 隐患方案工单关系(PITFALL_SOLUTION_TICKET) 字段 工单编号(ticket_id) ## 数据库表: 工单任务单 (PITFALL_TICKET_TASK) 工单任务单(PITFALL_TICKET_TASK): . ### "工单任务单" 表字段 | 字段名 | 字段中文名 | 数据类型 | Java类型 | 非空 | 缺省值 | 字段说明 | |---|---|---|---|---|---|---| | **task_id<sup>PK</sup>** | **任务单号** | VARCHAR(32) | String | false | | 任务单号 | | **ticket_id** | 归属工单号 | VARCHAR(255) | String | true | | 归属工单号 | | **process_dept** | 处理部门 | VARCHAR(90) | String | true | | 如:东区电信局 | | **process_position** | 处理岗位 | VARCHAR(32) | String | true | | 如:东区局(安全地图整治) | | **process_user** | 处理人 | VARCHAR(32) | String | true | | 工号。关联到 AIDF_USER.user_id | | **status** | 任务单状态 | VARCHAR(32) | String | true | | 如:待提交,待审核,已完成 ... 字典TICKET_TASK_STATUS IN AIDF_SYS_DICT | | **process_begin** | 派单时间 | TIMESTAMP | Date | true | | | | process_end | 完工时间 | TIMESTAMP | Date | false | | | | created_by | 创建人 | VARCHAR(32) | String | false | | AIDF_USER.user_id | | created_time | 创建时间 | TIMESTAMP | Date | false | | | | updated_by | 更新人 | VARCHAR(32) | String | false | | AIDF_USER.user_id | | updated_time | 更新时间 | TIMESTAMP | Date | false | | | ### "工单任务单" 表关系 * 字段: 任务单号(task_id) ⇒ 实体: 工单动作列表(PITFALL_TICKET_ACTION) 字段 关联工单任务号(task_id) ## 数据库表: 工单动作列表 (PITFALL_TICKET_ACTION) 工单动作列表(PITFALL_TICKET_ACTION): . ### "工单动作列表" 表字段 | 字段名 | 字段中文名 | 数据类型 | Java类型 | 非空 | 缺省值 | 字段说明 | |---|---|---|---|---|---|---| | **action_id<sup>PK</sup>** | **动作id** | VARCHAR(32) | String | false | | | | **ticket_id** | 关联工单号 | VARCHAR(255) | String | true | | | | **task_id** | 关联工单任务号 | VARCHAR(32) | String | true | | | | **action_name** | 动作名称 | VARCHAR(90) | String | true | | 如:转派(跨部门转报) | | **process_user** | 处理人 | VARCHAR(32) | String | true | | | | **process_dept** | 处理部门 | VARCHAR(90) | String | true | | 如: 融合:东区维护中心 | | **process_group** | 处理组/室 | VARCHAR(90) | String | true | | 如: 融合:东区局综合支撑工位 | | **action_desc** | 操作描述 | VARCHAR(900) | String | true | | 如: 【故障原因】海外拥塞-中国电信范围:【故障类别】海外拥塞-中国电信范围:【故障段落】外省市电信及骨干 | | **action_time** | 动作时间 | TIMESTAMP | Date | true | | | | created_by | 创建人 | VARCHAR(32) | String | false | | | | created_time | 创建时间 | TIMESTAMP | Date | false | | | | updated_by | 更新人 | VARCHAR(32) | String | false | | | | updated_time | 更新时间 | TIMESTAMP | Date | false | | | ## 数据库表: 隐患方案 (PITFALL_SOLUTION) 隐患方案(PITFALL_SOLUTION): . ### "隐患方案" 表字段 | 字段名 | 字段中文名 | 数据类型 | Java类型 | 非空 | 缺省值 | 字段说明 | |---|---|---|---|---|---|---| | **solution_id<sup>PK</sup>** | **方案ID** | VARCHAR(32) | String | true | | | | name | 方案名称 | VARCHAR(90) | String | false | | | | field | 专业 | VARCHAR(90) | String | false | | | | charged_user | 整治负责人 | VARCHAR(32) | String | false | | | | strtegy | 策略 | VARCHAR(90) | String | false | | | | description | 方案备注 | VARCHAR(900) | String | false | | | | created_by | 创建人 | VARCHAR(32) | String | false | | | | created_time | 创建时间 | TIMESTAMP | Date | false | | | | updated_by | 更新人 | VARCHAR(32) | String | false | | | | updated_time | 更新时间 | TIMESTAMP | Date | false | | | ### "隐患方案" 表关系 * 字段: 方案ID(solution_id) ⇒ 实体: 隐患方案工单关系(PITFALL_SOLUTION_TICKET) 字段 方案ID(solution_id) ## 数据库表: 隐患方案工单关系 (PITFALL_SOLUTION_TICKET) 隐患方案工单关系(PITFALL_SOLUTION_TICKET): . ### "隐患方案工单关系" 表字段 | 字段名 | 字段中文名 | 数据类型 | Java类型 | 非空 | 缺省值 | 字段说明 | |---|---|---|---|---|---|---| | **id<sup>PK</sup><sup>(自生成)</sup>** | **关系标识** | BIGINT | Long | true | | 唯一编号 | | **solution_id** | 方案ID | VARCHAR(32) | String | true | | 隐患方案标识 | | **ticket_id** | 工单编号 | VARCHAR(255) | String | true | | 唯一编号。综调生成。 | | CREATED_BY | 创建人 | VARCHAR(32) | String | false | | | | CREATED_TIME | 创建时间 | TIMESTAMP | Date | false | | | | UPDATED_BY | 更新人 | VARCHAR(32) | String | false | | | | UPDATED_TIME | 更新时间 | TIMESTAMP | Date | false | | | ## 数据字典 这里列出设计时加入数据库字典的数据。 ### 字典: 工单整治状态 (TICKET_FIX_STATUS) * **引用名:** TICKET_FIX_STATUS * **中文名:** 工单整治状态 * **注释:** | 字典项引用名 | 字典项引用中文名 | 字典项注释 | 字典项显示顺序 | |---|---|---|---| | **D** | **已完成** | Done | 326 | | **P** | **进行中** | Processing | 326 | | **W** | **未处理** | Waitting | 326 | ### 字典: 工单任务状态 (TICKET_TASK_STATUS) * **引用名:** TICKET_TASK_STATUS * **中文名:** 工单任务状态 * **注释:** | 字典项引用名 | 字典项引用中文名 | 字典项注释 | 字典项显示顺序 | |---|---|---|---| | **D** | **已完成** | Done已完成 | 326 | | **R** | **待审核** | Reviewing待审核 | 326 | | **W** | **待提交** | Waitting. 待提交 | 326 | ### AIDF 字典说明 AIDF使用如下数据库表保存应用的数据库字典内容: * `AIDF_DICT`: 字典说明. 关键字段: `dict_key`, `dict_label` * `AIDF_DICT_ITEM`: 字典项说明. 关键字段: `dict_key`, `item_key`, `item_label`, `item_order` 详细参见表结构说明和AIDF文档。 - Initial Deployment
9d131fc verified
Raw History Blame Contribute Delete
25.3 kB
<!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: '#2563eb',
secondary: '#8b5cf6',
success: '#10b981',
warning: '#f59e0b',
danger: '#ef4444',
info: '#06b6d4',
}
}
}
}
</script>
<style>
.accordion-content {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-in-out;
}
.accordion-content.active {
max-height: 1000px;
transition: max-height 0.5s ease-in-out;
}
.dashboard-stat {
transition: all 0.3s ease;
}
.dashboard-stat:hover {
transform: translateY(-5px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
</style>
</head>
<body class="bg-gray-50 font-sans">
<!-- 标题栏 -->
<header class="bg-white shadow-md">
<div class="container mx-auto px-4 py-4 flex items-center justify-between">
<div class="flex items-center space-x-4">
<div class="w-12 h-12 rounded-lg bg-primary flex items-center justify-center">
<i class="fas fa-exclamation-triangle text-white text-2xl"></i>
</div>
<div>
<h1 class="text-2xl font-bold text-gray-800">隐患工单管理系统</h1>
<p class="text-sm text-gray-500">AIDF-Example-Pitfall-analysis</p>
</div>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<button class="p-2 rounded-full hover:bg-gray-100">
<i class="fas fa-bell text-gray-600"></i>
<span class="absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full"></span>
</button>
</div>
<div class="flex items-center space-x-2">
<div class="w-9 h-9 rounded-full bg-gradient-to-r from-primary to-secondary"></div>
<span class="text-gray-700 font-medium">管理员</span>
</div>
</div>
</div>
</header>
<!-- 主要内容区 -->
<div class="container mx-auto px-4 py-8 flex flex-col lg:flex-row gap-8">
<!-- 左侧导航 -->
<aside class="w-full lg:w-64 flex-shrink-0 bg-white rounded-xl shadow-md h-min">
<nav>
<div class="p-4 border-b">
<h3 class="text-gray-700 font-semibold">主菜单</h3>
</div>
<ul class="py-2">
<li class="px-4 py-3 flex items-center space-x-3 text-primary bg-primary/10">
<i class="fas fa-list-check"></i>
<span>工单管理</span>
</li>
<li class="px-4 py-3 flex items-center space-x-3 hover:bg-gray-100 cursor-pointer">
<i class="fas fa-chart-pie"></i>
<span>分析报表</span>
</li>
<li class="px-4 py-3 flex items-center space-x-3 hover:bg-gray-100 cursor-pointer">
<i class="fas fa-lightbulb"></i>
<span>隐患方案</span>
</li>
<li class="px-4 py-3 flex items-center space-x-3 hover:bg-gray-100 cursor-pointer">
<i class="fas fa-tasks"></i>
<span>工单任务</span>
</li>
<li class="px-4 py-3 flex items-center space-x-3 hover:bg-gray-100 cursor-pointer">
<i class="fas fa-cog"></i>
<span>系统设置</span>
</li>
</ul>
</nav>
<!-- 状态面板 -->
<div class="p-4 border-t mt-4">
<h3 class="text-gray-700 font-semibold mb-3">系统状态</h3>
<div class="space-y-3">
<div class="flex items-center justify-between text-sm">
<span class="text-gray-600">工单总数</span>
<span class="font-medium">84</span>
</div>
<div class="flex items-center justify-between text-sm">
<span class="text-gray-600">未处理隐患</span>
<span class="font-medium text-danger">12</span>
</div>
<div class="flex items-center justify-between text-sm">
<span class="text-gray-600">进行中工单</span>
<span class="font-medium text-warning">23</span>
</div>
</div>
</div>
</aside>
<!-- 主要内容区 -->
<main class="flex-1">
<!-- 仪表板统计 -->
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
<div class="dashboard-stat bg-white rounded-xl shadow-md p-6 flex items-center justify-between">
<div>
<p class="text-sm text-gray-500">隐患总数</p>
<h3 class="text-3xl font-bold text-primary">84</h3>
</div>
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
<i class="fas fa-list-check text-primary text-xl"></i>
</div>
</div>
<div class="dashboard-stat bg-white rounded-xl shadow-md p-6 flex items-center justify-between">
<div>
<p class="text-sm text-gray-500">紧急隐患</p>
<h3 class="text-3xl font-bold text-danger">15</h3>
</div>
<div class="w-12 h-12 rounded-full bg-danger/10 flex items-center justify-center">
<i class="fas fa-fire text-danger text-xl"></i>
</div>
</div>
<div class="dashboard-stat bg-white rounded-xl shadow-md p-6 flex items-center justify-between">
<div>
<p class="text-sm text-gray-500">未处理</p>
<h3 class="text-3xl font-bold text-warning">12</h3>
</div>
<div class="w-12 h-12 rounded-full bg-warning/10 flex items-center justify-center">
<i class="fas fa-exclamation-circle text-warning text-xl"></i>
</div>
</div>
<div class="dashboard-stat bg-white rounded-xl shadow-md p-6 flex items-center justify-between">
<div>
<p class="text-sm text-gray-500">已处理</p>
<h3 class="text-3xl font-bold text-success">72</h3>
</div>
<div class="w-12 h-12 rounded-full bg-success/10 flex items-center justify-center">
<i class="fas fa-check-circle text-success text-xl"></i>
</div>
</div>
</div>
<!-- 搜索和操作栏 -->
<div class="bg-white rounded-xl shadow-md p-6 mb-8">
<div class="flex flex-col md:flex-row gap-4 justify-between items-center">
<div class="relative w-full md:w-64">
<input type="text" placeholder="搜索工单..." class="w-full pl-10 pr-4 py-2 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent">
<i class="fas fa-search absolute left-3 top-3 text-gray-400"></i>
</div>
<div class="flex items-center space-x-3 w-full md:w-auto">
<select class="border rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-primary">
<option>全部状态</option>
<option>未处理</option>
<option>进行中</option>
<option>已完成</option>
</select>
<button class="px-4 py-2 bg-primary hover:bg-blue-700 text-white rounded-lg font-medium flex items-center space-x-2">
<i class="fas fa-filter"></i>
<span>筛选</span>
</button>
<button class="px-4 py-2 bg-success hover:bg-green-600 text-white rounded-lg font-medium flex items-center space-x-2">
<i class="fas fa-plus"></i>
<span>新增工单</span>
</button>
</div>
</div>
</div>
<!-- 工单表格 -->
<div class="bg-white rounded-xl shadow-md overflow-hidden">
<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>
</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">
<div class="text-sm font-medium text-gray-900">PT-2024-00125</div>
</td>
<td class="px-6 py-4">
<div class="text-sm font-medium text-gray-900">广发光交-干家洞水库光缆中断隐患</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-500">传输承载网</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-danger/10 text-danger font-medium">严重隐患</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-danger/10 text-danger font-medium">紧急</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">进行中</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium flex space-x-3">
<button class="text-blue-600 hover:text-blue-900">
<i class="fas fa-eye"></i>
</button>
<button class="text-green-600 hover:text-green-900">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">PT-2024-00118</div>
</td>
<td class="px-6 py-4">
<div class="text-sm font-medium text-gray-900">白前村12总光缆老化整改</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-500">传输承载网</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">一般隐患</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">一般</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">进行中</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium flex space-x-3">
<button class="text-blue-600 hover:text-blue-900">
<i class="fas fa-eye"></i>
</button>
<button class="text-green-600 hover:text-green-900">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">PT-2024-00103</div>
</td>
<td class="px-6 py-4">
<div class="text-sm font-medium text-gray-900">东区电信局机架线缆混乱整治</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-500">传输设备</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">中等隐患</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-info/10 text-info font-medium">中等</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-success/10 text-success font-medium">已完成</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium flex space-x-3">
<button class="text-blue-600 hover:text-blue-900">
<i class="fas fa-eye"></i>
</button>
<button class="text-green-600 hover:text-green-900">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">PT-2023-00874</div>
</td>
<td class="px-6 py-4">
<div class="text-sm font-medium text-gray-900">主干光缆过负载预警</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-500">光缆线路</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">一般隐患</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">一般</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-success/10 text-success font-medium">已完成</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium flex space-x-3">
<button class="text-blue-600 hover:text-blue-900">
<i class="fas fa-eye"></i>
</button>
<button class="text-green-600 hover:text-green-900">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">PT-2023-00921</div>
</td>
<td class="px-6 py-4">
<div class="text-sm font-medium text-gray-900">市区中心环线光缆保护管破损</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-500">光缆线路</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">中等隐患</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-warning/10 text-warning font-medium">一般</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded-full bg-gray-100 text-gray-600 font-medium">未处理</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium flex space-x-3">
<button class="text-blue-600 hover:text-blue-900">
<i class="fas fa-eye"></i>
</button>
<button class="text-green-600 hover:text-green-900">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="bg-gray-50 px-6 py-4 flex flex-col md:flex-row items-center justify-between">
<div class="text-sm text-gray-700">
显示 <span class="font-medium">1</span> 到 <span class="font-medium">5</span> 的 <span class="font-medium">84</span> 个结果
</div>
<div class="mt-3 md:mt-0">
<nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
<button class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
<span class="sr-only">上一页</span>
<i class="fas fa-chevron-left"></i>
</button>
<button aria-current="page" class="z-10 bg-primary border-primary text-white relative inline-flex items-center px-4 py-2 border text-sm font-medium">1</button>
<button class="relative inline-flex items-center px-4 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50">2</button>
<button class="relative inline-flex items-center px-4 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50">3</button>
<button class="hidden sm:inline-flex relative items-center px-4 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50">4</button>
<button class="hidden sm:inline-flex relative items-center px-4 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50">5</button>
<span class="relative inline-flex items-center px-4 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700">...</span>
<button class="relative inline-flex items-center px-4 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50">17</button>
<button class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-
<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=brainwang/pitfall" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>