初始化

This commit is contained in:
2026-08-08 18:28:49 +08:00
parent 9bef4420e0
commit f082037a6e
854 changed files with 217171 additions and 11 deletions
+340
View File
@@ -0,0 +1,340 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title><?php echo htmlspecialchars($title); ?> - MES 后台管理</title>
<!-- Bootstrap 3.3.6 -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/css/font-awesome.min.css">
<!-- Ionicons(已本地化,P3-14 消除外部 CDN 供应链风险) -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/css/ionicons.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/css/AdminLTE.min.css">
<!-- AdminLTE Skins -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/css/skins/_all-skins.min.css">
<!-- iCheck -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/plugins/iCheck/flat/blue.css">
<!-- Morris chart -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/plugins/morris/morris.css">
<!-- jvectormap -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/plugins/jvectormap/jquery-jvectormap-1.2.2.css">
<!-- Date Picker -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/plugins/datepicker/datepicker3.css">
<!-- Daterange picker -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/plugins/daterangepicker/daterangepicker-bs3.css">
<!-- bootstrap wysihtml5 - text editor -->
<link rel="stylesheet" href="<?php echo BASE_URL; ?>/static/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<style>
/* 全局表格居中 */
.table th,
.table td {
text-align: center !important;
vertical-align: middle !important;
}
/* ========== 类型卡片 Grid 并列布局 (productModel) ========== */
.type-grid {
display: grid;
gap: 16px;
grid-template-columns: repeat(2, 1fr); /* 默认2列 */
}
.type-grid[data-columns="1"] { grid-template-columns: 1fr; }
.type-grid[data-columns="2"] { grid-template-columns: repeat(2, 1fr); }
.type-grid[data-columns="3"] { grid-template-columns: repeat(3, 1fr); }
.type-grid[data-columns="auto"] { grid-template-columns: repeat(auto-fill, minmax(450px, 1fr)); }
.type-grid-item {
margin-bottom: 0 !important;
display: flex;
flex-direction: column;
}
.type-grid-item .box-body {
flex: 1;
}
/* 列数调节按钮激活态 */
.column-adjuster .col-btn.active {
background-color: #3c8dbc !important;
color: #fff !important;
border-color: #367fa9 !important;
}
/* 移动端降级 */
@media (max-width: 992px) {
.type-grid[data-columns="2"],
.type-grid[data-columns="3"],
.type-grid[data-columns="auto"] {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 768px) {
.type-grid,
.type-grid[data-columns="2"],
.type-grid[data-columns="3"],
.type-grid[data-columns="auto"] {
grid-template-columns: 1fr;
}
}
</style>
<script src="<?php echo BASE_URL; ?>/static/js/jquery-3.7.1.min.js"></script>
<?php // v3-P2 CSP:全局事件委托(替代内联 onclick 等),配合 nonce 实现无 unsafe-inline ?>
<script src="<?php echo BASE_URL; ?>/static/js/csp_global.js" nonce="<?php echo csp_nonce(); ?>"></script>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="<?php echo BASE_URL; ?>/static/js/html5shiv.min.js"></script>
<script src="<?php echo BASE_URL; ?>/static/js/respond.min.js"></script>
<![endif]-->
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<header class="main-header">
<a href="<?php echo BASE_URL; ?>/Admin/index" class="logo">
<span class="logo-mini"><b>MES</b></span>
<span class="logo-lg"><b>MES</b> 后台管理</span>
</a>
<nav class="navbar navbar-static-top">
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">切换导航</span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<li>
<a href="<?php echo BASE_URL; ?>/Dashboard/index"><i class="fa fa-tachometer"></i> <span class="hidden-xs">工位看板</span></a>
</li>
<li>
<a href="<?php echo BASE_URL; ?>/Front/index"><i class="fa fa-desktop"></i> <span class="hidden-xs">前台工位</span></a>
</li>
<li class="dropdown user user-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-user"></i>
<span class="hidden-xs"><?php echo htmlspecialchars($user['emp_name']); ?></span>
</a>
<ul class="dropdown-menu">
<li class="user-header" style="background:#3c8dbc; color:#fff; padding:10px; text-align:center;">
<p><?php echo htmlspecialchars($user['emp_name']); ?><br>
<small><?php
$roleNames = \core\base\Controller::ROLE_NAMES;
echo htmlspecialchars($roleNames[$user['role']] ?? $user['role']);
?></small></p>
</li>
<li class="user-footer">
<div class="pull-right">
<a href="<?php echo BASE_URL; ?>/Login/logout" class="btn btn-default btn-flat"><i class="fa fa-power-off"></i> 退出登录</a>
</div>
</li>
</ul>
</li>
</ul>
</div>
</nav>
</header>
<aside class="main-sidebar">
<section class="sidebar">
<div class="user-panel" style="padding:10px; color:#fff; text-align:center; border-bottom:1px solid #4b646f;">
<p style="margin:0;"><i class="fa fa-circle text-success"></i> <?php echo htmlspecialchars($user['emp_name']); ?></p>
<small style="color:#b8c7ce;">
<?php
$roleNames = \core\base\Controller::ROLE_NAMES;
echo htmlspecialchars($roleNames[$user['role']] ?? $user['role']);
?>
</small>
</div>
<ul class="sidebar-menu" data-widget="tree">
<li class="header">导航菜单</li>
<?php
$role = $user['role'];
$category = $user['category'] ?? 'mes';
$ROLE_SUPER_ADMIN = \core\base\Controller::ROLE_SUPER_ADMIN;
$ROLE_ADMIN = \core\base\Controller::ROLE_ADMIN;
$isSuperAdmin = ($role === $ROLE_SUPER_ADMIN);
$isMESAdmin = ($isSuperAdmin || ($role === $ROLE_ADMIN && $category === \core\base\Controller::CATEGORY_MES));
$isInventoryAdmin = ($isSuperAdmin || ($role === $ROLE_ADMIN && $category === \core\base\Controller::CATEGORY_INVENTORY));
$isFinanceAdmin = ($isSuperAdmin || ($role === $ROLE_ADMIN && $category === \core\base\Controller::CATEGORY_FINANCE));
$isGeneralAdmin = ($isSuperAdmin || ($role === $ROLE_ADMIN && $category === \core\base\Controller::CATEGORY_GENERAL));
$catNames = \core\base\Controller::CATEGORY_NAMES;
$catIcons = \core\base\Controller::CATEGORY_ICONS;
$currentCat = isset($_GET['cat']) ? $_GET['cat'] : ($category === 'all' ? 'mes' : $category);
?>
<?php if ($isSuperAdmin): ?>
<!-- 超级管理员:类目切换菜单 -->
<li class="header">管理类目切换</li>
<li class="<?php echo $currentCat === 'mes' ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/index?cat=mes">
<i class="fa <?php echo $catIcons['mes']; ?>"></i>
<span><?php echo htmlspecialchars($catNames['mes']); ?></span>
</a>
</li>
<li class="<?php echo $currentCat === 'inventory' ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Inventory/index?cat=inventory">
<i class="fa <?php echo $catIcons['inventory']; ?>"></i>
<span><?php echo htmlspecialchars($catNames['inventory']); ?></span>
</a>
</li>
<li class="<?php echo $currentCat === 'finance' ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Finance/index?cat=finance">
<i class="fa <?php echo $catIcons['finance']; ?>"></i>
<span><?php echo htmlspecialchars($catNames['finance']); ?></span>
</a>
</li>
<li class="<?php echo $currentCat === 'general' ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/General/index?cat=general">
<i class="fa <?php echo $catIcons['general']; ?>"></i>
<span><?php echo htmlspecialchars($catNames['general']); ?></span>
</a>
</li>
<li class="header">全局管理</li>
<?php endif; ?>
<!-- ========== MES 类目菜单 ========== -->
<?php if ($isMESAdmin): ?>
<li class="header"><?php echo htmlspecialchars($catNames['mes']); ?></li>
<li class="<?php echo (!isset($activeMenu) || $activeMenu === 'index') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/index"><i class="fa fa-dashboard"></i> <span>控制台</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'customer') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/customer"><i class="fa fa-building"></i> <span>客户管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'productModel') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/productModel"><i class="fa fa-cube"></i> <span>产品型号</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'workstation') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/workstation"><i class="fa fa-th"></i> <span>工位管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'config') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/config"><i class="fa fa-cog"></i> <span>系统配置</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'productSearch') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/productSearch"><i class="fa fa-search"></i> <span>产品追溯</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'asdTestData') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/asdTestData"><i class="fa fa-flask"></i> <span>测试数据</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'asdDeviceDebug') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/asdDeviceDebug"><i class="fa fa-plug"></i> <span>设备调试</span></a>
</li>
<?php if ($isSuperAdmin): ?>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'import') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/import"><i class="fa fa-upload"></i> <span>批量导入</span></a>
</li>
<?php endif; ?>
<?php endif; ?>
<!-- ========== 进销存类目菜单 ========== -->
<?php if ($isInventoryAdmin): ?>
<li class="header"><?php echo htmlspecialchars($catNames['inventory']); ?></li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'inventory_dashboard') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Inventory/index"><i class="fa fa-dashboard"></i> <span>进销存概览</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'purchase') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Inventory/purchase"><i class="fa fa-truck"></i> <span>采购管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'stock') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Inventory/stock"><i class="fa fa-archive"></i> <span>库存管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'sales') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Inventory/sales"><i class="fa fa-shopping-cart"></i> <span>销售管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'supplier') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Inventory/supplier"><i class="fa fa-address-book"></i> <span>供应商管理</span></a>
</li>
<?php endif; ?>
<!-- ========== 财务管理类目菜单 ========== -->
<?php if ($isFinanceAdmin): ?>
<li class="header"><?php echo htmlspecialchars($catNames['finance']); ?></li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'finance_dashboard') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Finance/index"><i class="fa fa-dashboard"></i> <span>财务概览</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'accounts') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Finance/accounts"><i class="fa fa-book"></i> <span>账务管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'receivable') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Finance/receivable"><i class="fa fa-arrow-down"></i> <span>应收账款</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'payable') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Finance/payable"><i class="fa fa-arrow-up"></i> <span>应付账款</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'report') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Finance/report"><i class="fa fa-bar-chart"></i> <span>财务报表</span></a>
</li>
<?php endif; ?>
<!-- ========== 综合管理类目菜单 ========== -->
<?php if ($isGeneralAdmin): ?>
<li class="header"><?php echo htmlspecialchars($catNames['general']); ?></li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'general_dashboard') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/General/index"><i class="fa fa-dashboard"></i> <span>综合概览</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'hr') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/General/hr"><i class="fa fa-id-card"></i> <span>人事管理</span></a>
</li>
<?php if ($isSuperAdmin): ?>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'employee') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/employee"><i class="fa fa-users"></i> <span>账号管理</span></a>
</li>
<?php endif; ?>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'asset') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/General/asset"><i class="fa fa-laptop"></i> <span>资产管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'document') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/General/document"><i class="fa fa-file-text"></i> <span>文档管理</span></a>
</li>
<?php endif; ?>
<?php if ($isSuperAdmin): ?>
<li class="header">系统工具</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'database') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/database"><i class="fa fa-database"></i> <span>数据库管理</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'databaseBackup') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/databaseBackup"><i class="fa fa-save"></i> <span>备份与恢复</span></a>
</li>
<li class="<?php echo (isset($activeMenu) && $activeMenu === 'databaseUpgrade') ? 'active' : ''; ?>">
<a href="<?php echo BASE_URL; ?>/Admin/databaseUpgrade"><i class="fa fa-wrench"></i> <span>数据库升级</span></a>
</li>
<?php endif; ?>
<li class="header">账户</li>
<li>
<a href="<?php echo BASE_URL; ?>/Login/logout" class="confirm-link" data-confirm="确定要退出登录吗?">
<i class="fa fa-power-off text-red"></i> <span>退出登录</span>
</a>
</li>
</ul>
</section>
</aside>
<div class="content-wrapper">
<section class="content-header">
<h1><?php echo htmlspecialchars($title); ?><small> MES</small></h1>
<ol class="breadcrumb">
<li><a href="<?php echo BASE_URL; ?>/Admin/index"><i class="fa fa-dashboard"></i> 控制台</a></li>
<li class="active"><?php echo htmlspecialchars($title); ?></li>
</ol>
</section>
<section class="content">
<!-- 公司名称 - 所有页面居中加高显示 -->
<?php
if (!isset($sysConfig)) {
$cfgModel = new app\models\SysConfig();
$sysConfig = $cfgModel->getConfig();
}
?>
<div style="text-align:center; margin-bottom:20px;">
<h2 style="font-size:48px; font-weight:bold; color:#3c8dbc; margin:0; line-height:1.5;">
<i class="fa fa-industry"></i> <?php echo htmlspecialchars($sysConfig['company_name'] ?? 'MES'); ?>
</h2>
<?php if (!empty($sysConfig['mes_name'])): ?>
<p style="font-size:20px; color:#999; margin-top:5px;"><?php echo htmlspecialchars($sysConfig['mes_name']); ?></p>
<?php endif; ?>
</div>