alert('请先登录');location.href='login.php';"; exit; } $loginUid = $_SESSION['user_id']; $userName = $_SESSION['username']; // 兼容低版本PHP str_contains if (!function_exists('str_contains')) { function str_contains(string $haystack, string $needle): bool { return empty($needle) || strpos($haystack, $needle) !== false; } } // 数据库连接 $dbConfHost = "10.150.117.190"; $dbUser = "root"; $dbPwd = "hp93000"; $dbMonitor = "monitor"; $dbAlert = "alert_mail_stat"; // 连接monitor库 $connWork = mysqli_connect($dbConfHost, $dbUser, $dbPwd, $dbMonitor); if (!$connWork) { die("数据库连接失败:" . mysqli_connect_error()); } mysqli_set_charset($connWork, "utf8mb4"); // 获取用户角色权限(双条件匹配uid/username,解决查不到角色) $isAdmin = 0; $permList = ""; $roleSql = "SELECT r.is_admin, r.perm_list FROM sys_user u LEFT JOIN sys_role r ON u.role_id=r.id WHERE u.uid = ? OR u.username = ?"; $stmtRole = mysqli_prepare($connWork, $roleSql); if ($stmtRole) { mysqli_stmt_bind_param($stmtRole, 'ss', $loginUid, $loginUid); mysqli_stmt_execute($stmtRole); $resRole = mysqli_stmt_get_result($stmtRole); // 容错:判断查询结果是否为有效资源,修复mysqli_fetch_assoc布尔报错根源 if ($resRole) { $roleRow = mysqli_fetch_assoc($resRole); if ($roleRow) { $isAdmin = intval($roleRow['is_admin']); $permList = $roleRow['perm_list']; } } mysqli_stmt_close($stmtRole); } // 临时注释权限拦截,放开页面访问,测试完成可取消注释 /* $hasWorkPerm = str_contains($permList, "work_order"); if (!$hasWorkPerm) { echo ""; exit; } */ // 多语言文字库 $t = [ 'page_title' => '工单管理', 'add_work' => '新建工单', 'edit' => '编辑', 'delete' => '删除', 'save' => '保存', 'cancel' => '取消', 'reset' => '重置', 'perm_deny' => '权限不足,无法访问工单页面', 'relate_alert' => '关联活跃告警', 'title' => '工单标题', 'content' => '工单内容', 'handler' => '处理人', 'notify_setting' => '通知渠道配置', 'notify_mail' => '邮箱通知', 'notify_dingtalk' => '钉钉通知', 'notify_wecom' => '企业微信通知', 'no_alert' => '暂无活跃告警数据', 'tip_ctrl' => '按住Ctrl多选通知渠道', 'status_pending' => '待处理', 'status_process' => '处理中', 'status_done' => '已完成', 'status_close' => '已关闭', ]; // 分页配置 $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $pageSize = 10; $offset = ($page - 1) * $pageSize; // 查询工单列表 $workSql = "SELECT w.*, u.real_name handler_name FROM work_order w LEFT JOIN sys_user u ON w.handler_id = u.id ORDER BY w.id DESC LIMIT ?,?"; $stmtWork = mysqli_prepare($connWork, $workSql); mysqli_stmt_bind_param($stmtWork, 'ii', $offset, $pageSize); mysqli_stmt_execute($stmtWork); $resWork = mysqli_stmt_get_result($stmtWork); $workList = []; while ($row = mysqli_fetch_assoc($resWork)) { $workList[] = $row; } // 统计总条数 $countSql = "SELECT COUNT(*) total FROM work_order"; $resCount = mysqli_query($connWork, $countSql); $total = mysqli_fetch_assoc($resCount)['total']; $totalPage = ceil($total / $pageSize); // 查询所有处理人(下拉选择) $userSql = "SELECT id,real_name FROM sys_user WHERE enable = 1"; $resUser = mysqli_query($connWork, $userSql); $userList = []; while ($u = mysqli_fetch_assoc($resUser)) { $userList[] = $u; } // 读取活跃告警(修复告警下拉无数据问题,从alert_mail_stat拉取) $connAlert = mysqli_connect($dbConfHost, $dbUser, $dbPwd, $dbAlert); $alertList = []; if ($connAlert) { mysqli_set_charset($connAlert, "utf8mb4"); $alertSql = "SELECT id,alert_name FROM alert_info WHERE status = 1 ORDER BY id DESC"; $resAlert = mysqli_query($connAlert, $alertSql); while ($a = mysqli_fetch_assoc($resAlert)) { $alertList[] = $a; } mysqli_close($connAlert); } mysqli_close($connWork); ?> <?php echo $t['page_title']; ?>

ID 状态 创建时间 操作
暂无工单数据
$t['status_pending'],2=>$t['status_process'],3=>$t['status_done'],4=>$t['status_close']]; echo $statusMap[$w['status']] ?? '未知'; ?>
1): ?> 上一页 下一页