parent
ded31e5320
commit
7d3681fcb3
@ -0,0 +1,48 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
function response_with_click($message, $class, $script) |
||||||
|
{ |
||||||
|
echo <<<EOF |
||||||
|
<script> |
||||||
|
function doClick() { |
||||||
|
$script |
||||||
|
} |
||||||
|
</script> |
||||||
|
<div class="container py-5"> |
||||||
|
<div class="alert $class alert-dismissible fade show col-5 m-auto text-center" role="alert"> |
||||||
|
<strong>$message</strong> |
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close" onclick="doClick()"> |
||||||
|
<span aria-hidden="true">×</span> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
EOF; |
||||||
|
} |
||||||
|
|
||||||
|
function response_with_href($message, $class, $href) |
||||||
|
{ |
||||||
|
response_with_click($message, $class, <<<EOF |
||||||
|
location.href='$href' |
||||||
|
EOF |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
function error_res($err, $href) |
||||||
|
{ |
||||||
|
response_with_href($err, "alert-danger", $href); |
||||||
|
} |
||||||
|
|
||||||
|
function info_res($info, $href) |
||||||
|
{ |
||||||
|
response_with_href($info, "alert-info", $href); |
||||||
|
} |
||||||
|
|
||||||
|
function warn_res($warn, $href) |
||||||
|
{ |
||||||
|
response_with_href($warn, "alert-warning", $href); |
||||||
|
} |
||||||
|
|
||||||
|
function warn_res_with_click($warn, $click) |
||||||
|
{ |
||||||
|
response_with_click($warn, "alert-warning", $click); |
||||||
|
} |
@ -0,0 +1,246 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
require_once "../config.php"; |
||||||
|
require_once __ROOT__ . "/head.php"; |
||||||
|
require_once __ROOT__ . "/database/DbUtil.php"; |
||||||
|
require_once __ROOT__ . "/database/Query.php"; |
||||||
|
require_once __ROOT__ . "/Log.php"; |
||||||
|
require_once __ROOT__ . "/admin/Alert.php"; |
||||||
|
|
||||||
|
getMenu("题目管理"); |
||||||
|
|
||||||
|
if (empty($_POST) && empty($_GET)) { |
||||||
|
echo <<<EOF |
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="zh"> |
||||||
|
<script> |
||||||
|
$(function() { |
||||||
|
$('[data-toggle="tooltip"]').tooltip(); |
||||||
|
|
||||||
|
Array.prototype.filter.call($("form.needs-validation"), function(form) { |
||||||
|
form.addEventListener('submit', function(event) { |
||||||
|
if (form.checkValidity() === false) { |
||||||
|
event.preventDefault(); |
||||||
|
event.stopPropagation(); |
||||||
|
} |
||||||
|
form.classList.add('was-validated'); |
||||||
|
}, false); |
||||||
|
}); |
||||||
|
}); |
||||||
|
function doList() { |
||||||
|
console.info("查看垃圾数据") |
||||||
|
} |
||||||
|
</script> |
||||||
|
<body> |
||||||
|
<ul class="nav nav-pills nav-justified"> |
||||||
|
<li class="nav-item"> |
||||||
|
<a class="nav-link active" data-toggle="tab" href="#list" role="tab">垃圾列表</a> |
||||||
|
</li> |
||||||
|
<li class="nav-item"> |
||||||
|
<a class="nav-link" data-toggle="tab" href="#add" role="tab">添加垃圾</a> |
||||||
|
</li> |
||||||
|
<li class="nav-item"> |
||||||
|
<a class="nav-link" data-toggle="tab" href="#" onclick="location.href='/'" role="tab">返回首页</a> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
|
||||||
|
<div class="container py-5"> |
||||||
|
<div class="tab-content" id="v-pills-tabContent"> |
||||||
|
<div class="tab-pane fade show active" id="list" role="tabpanel" aria-labelledby="v-pills-home-tab"> |
||||||
|
<div class="list-group d-flex justify-content-center align-items-center w-100"> |
||||||
|
EOF; |
||||||
|
$count_query = new CountGrabage(); |
||||||
|
// 查询垃圾分类数据量 |
||||||
|
DbUtil::query("select category,count(*) from garbage group by category order by category", $count_query); |
||||||
|
if (empty($count_query->getResult())) { |
||||||
|
warn_res_with_click("暂无垃圾分类数据,请添加", <<<EOF |
||||||
|
$('a[href="#add"]').click() |
||||||
|
EOF |
||||||
|
); |
||||||
|
} else { |
||||||
|
foreach ($count_query->getResult() as $item) { |
||||||
|
$category = $item["category"]; |
||||||
|
$category_name = $item["category_name"]; |
||||||
|
$count = $item["count"]; |
||||||
|
echo <<<EOF |
||||||
|
<a class="list-group-item list-group-item-action d-flex align-items-center col-6 m-auto justify-content-between" href="/admin/WasteSorting.php?action=list&category=$category" |
||||||
|
data-toggle="tooltip" data-placement="right" title="查看垃圾数据" onclick="doList($category;)"> |
||||||
|
$category_name |
||||||
|
<span class="badge badge-info badge-pill" >$count 条</span> |
||||||
|
</a> |
||||||
|
EOF; |
||||||
|
} |
||||||
|
} |
||||||
|
echo <<<EOF |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div id="add" class="tab-pane fade"> |
||||||
|
<div class="d-flex justify-content-center align-items-center w-100"> |
||||||
|
<form class="col-6 needs-validation" novalidate method="post" action="WasteSorting.php"> |
||||||
|
<input type="hidden" name="action" value="add"> |
||||||
|
<div class="input-group mb-3"> |
||||||
|
<div class="input-group-prepend"> |
||||||
|
<span class="input-group-text">垃圾名</span> |
||||||
|
</div> |
||||||
|
<input type="text" class="form-control" placeholder="垃圾名" name="name" required> |
||||||
|
<div class="invalid-feedback"> |
||||||
|
垃圾名不为空 |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="input-group mb-3"> |
||||||
|
<div class="input-group-prepend"> |
||||||
|
<span class="input-group-text">垃圾分类</span> |
||||||
|
</div> |
||||||
|
<select class="custom-select custom-select" name="category" required> |
||||||
|
<option value="1">可回收垃圾</option> |
||||||
|
<option value="2">有害垃圾</option> |
||||||
|
<option value="4">湿垃圾</option> |
||||||
|
<option value="8">干垃圾</option> |
||||||
|
<option value="16">大件垃圾</option> |
||||||
|
</select> |
||||||
|
<div class="invalid-feedback"> |
||||||
|
请选择垃圾分类 |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<button class="btn btn-block btn-info">提交</button> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
||||||
|
EOF; |
||||||
|
|
||||||
|
} else if (isset($_POST["action"]) && $_POST["action"] == "add") { |
||||||
|
if (empty($_POST["name"])) { |
||||||
|
error_res("垃圾名不能为空!", "/admin/WasteSorting.php"); |
||||||
|
} else if (empty($_POST["category"])) { |
||||||
|
error_res("垃圾分类不能为空!", "/admin/WasteSorting.php"); |
||||||
|
} else if (array_search((int)$_POST["category"], array(1, 2, 4, 8, 16)) === false) { |
||||||
|
error_res("垃圾分类参数不合法", "/admin/WasteSorting.php"); |
||||||
|
} else { |
||||||
|
try { |
||||||
|
DbUtil::insert("insert into garbage (name, category, create_at, update_at) values (?,?,?,?)", "siss", $_POST["name"], $_POST["category"], date(default_format), date(default_format)); |
||||||
|
info_res("保存成功", "/admin/WasteSorting.php"); |
||||||
|
} catch (Exception $e) { |
||||||
|
error($e); |
||||||
|
error_res("保存操作异常,请联系管理员", "/admin/WasteSorting.php"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} else if (isset($_GET["action"]) && $_GET["action"] == "list") { |
||||||
|
if (empty($_GET["category"])) { |
||||||
|
error_res("垃圾分类不能为空!", "/admin/WasteSorting.php"); |
||||||
|
} else if (array_search((int)$_GET["category"], array(1, 2, 4, 8, 16)) === false) { |
||||||
|
error_res("垃圾分类参数不合法", "/admin/WasteSorting.php"); |
||||||
|
} else { |
||||||
|
// 分页查询 |
||||||
|
$page = (int)($_GET["page"] ?? 1); |
||||||
|
$category_param = (int)$_GET["category"]; |
||||||
|
$count_query = new QueryGarbageCount(); |
||||||
|
// 获取记录数 |
||||||
|
DbUtil::query("select count(*) from garbage where category=?", $count_query, array($category_param)); |
||||||
|
$count_result = $count_query->getCount(); |
||||||
|
$garbage_query = new QueryGarbageWithCategory(); |
||||||
|
// 分页大小 |
||||||
|
$page_size = 10; |
||||||
|
// 计算分页数 |
||||||
|
if ($count_result < $page_size) { |
||||||
|
$max_page = 1; |
||||||
|
} else if ($count_result % $page_size == 0) { |
||||||
|
$max_page = $count_result / $page_size; |
||||||
|
} else { |
||||||
|
$max_page = (int)floor($count_result / $page_size) + 1; |
||||||
|
} |
||||||
|
DbUtil::query("select * from garbage where category=? limit ?,?", $garbage_query, array($category_param, ($page - 1) * $page_size, $page_size)); |
||||||
|
if (empty($garbage_query->getResultList())) { |
||||||
|
error("无法查询分类" . get_category($category_param) . "的第" . $page . "数据"); |
||||||
|
error_res("非法查询,请联系管理员", "/admin/WasteSorting.php"); |
||||||
|
} else { |
||||||
|
echo <<<EOF |
||||||
|
<div class="container py-5"> |
||||||
|
<table class="table col-8 m-auto"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th scope="col">垃圾名</th> |
||||||
|
<th scope="col">垃圾分类</th> |
||||||
|
<th scope="col">创建时间</th> |
||||||
|
<th scope="col">修改时间</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
EOF; |
||||||
|
|
||||||
|
foreach ($garbage_query->getResultList() as $garbage) { |
||||||
|
if ($garbage instanceof Garbage) { |
||||||
|
$name = $garbage->getName(); |
||||||
|
$category = get_category($garbage->getCategory()); |
||||||
|
$create_at = $garbage->getCreateAt(); |
||||||
|
$update_at = $garbage->getUpdateAt(); |
||||||
|
echo <<<EOF |
||||||
|
<tr> |
||||||
|
<th>$name</th> |
||||||
|
<td>$category</td> |
||||||
|
<td>$create_at</td> |
||||||
|
<td>$update_at</td> |
||||||
|
</tr> |
||||||
|
EOF; |
||||||
|
} |
||||||
|
} |
||||||
|
echo <<<EOF |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
|
||||||
|
<nav aria-label="..." > |
||||||
|
<ul class="pagination justify-content-center"> |
||||||
|
EOF; |
||||||
|
|
||||||
|
if ($page === 1) { |
||||||
|
echo <<<EOF |
||||||
|
<li class="page-item disabled"> |
||||||
|
<span class="page-link">上一页</span> |
||||||
|
</li> |
||||||
|
EOF; |
||||||
|
} else { |
||||||
|
$prev = $page - 1; |
||||||
|
echo <<<EOF |
||||||
|
<li class="page-item"> |
||||||
|
<a class="page-link" href="/admin/WasteSorting.php?action=list&category=$category_param&page=$prev">上一页</a> |
||||||
|
</li> |
||||||
|
EOF; |
||||||
|
} |
||||||
|
|
||||||
|
for ($start_page = $page; $start_page <= $max_page and $start_page < $page + 3; $start_page++) { |
||||||
|
echo '<li class="page-item ' . ($start_page == $page ? "active" : "") . '"><a class="page-link" href="/admin/WasteSorting.php?action=list&category=' . $category_param . '&page=' . $start_page . '">' . $start_page . '</a></li>'; |
||||||
|
} |
||||||
|
if ($page != $max_page) { |
||||||
|
$next = $page + 1; |
||||||
|
echo <<<EOF |
||||||
|
<li class="page-item"> |
||||||
|
<a class="page-link" href="/admin/WasteSorting.php?action=list&category=$category_param&page=$next">下一页</a> |
||||||
|
</li> |
||||||
|
EOF; |
||||||
|
} else { |
||||||
|
echo <<<EOF |
||||||
|
<li class="page-item disabled"> |
||||||
|
<span class="page-link">下一页</span> |
||||||
|
</li> |
||||||
|
EOF; |
||||||
|
} |
||||||
|
echo <<<EOF |
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
<div class="row justify-content-center"> |
||||||
|
<a class="btn btn-info col-4" href="/admin/WasteSorting.php">返回</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
EOF; |
||||||
|
} |
||||||
|
} |
||||||
|
} else { |
||||||
|
error("非法操作"); |
||||||
|
error_res("非法操作", "/"); |
||||||
|
} |
Loading…
Reference in new issue