Files
backend/storage/view/keywords/index.blade.php
toom1996 09d199167e update
2025-06-23 11:48:04 +08:00

353 lines
12 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<title>关键词监控</title>
<link rel="stylesheet" href="/component/pear/css/pear.css"/>
<link rel="stylesheet" href="/admin/css/reset.css"/>
<link rel="stylesheet" href="/admin/css/reset.css"/>
</head>
<body class="pear-container">
<!-- 顶部查询表单 -->
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form top-search-from">
<div class="layui-form-item">
<label class="layui-form-label">文章标题</label>
<div class="layui-input-block">
<input type="text" name="mobile" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-block">
<div class="layui-input-block" id="created_at">
<input type="text" autocomplete="off" value="<?= date('Y-m-d', strtotime('-1 month')) ?>"
name="created_at[]" id="created_at-date-start" class="layui-input inline-block"
placeholder="开始时间">
-
<input type="text" autocomplete="off" value="<?= date('Y-m-d') ?>" name="created_at[]"
id="created_at-date-end" class="layui-input inline-block" placeholder="结束时间">
</div>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label"></label>
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="table-query">
<i class="layui-icon layui-icon-search"></i>查询
</button>
<button type="reset" class="pear-btn pear-btn-md" lay-submit lay-filter="table-reset">
<i class="layui-icon layui-icon-refresh"></i>重置
</button>
</div>
<div class="toggle-btn">
<a class="layui-hide">展开<i class="layui-icon layui-icon-down"></i></a>
<a class="layui-hide">收起<i class="layui-icon layui-icon-up"></i></a>
</div>
</form>
</div>
</div>
<!-- 数据表格 -->
<div class="layui-card">
<div class="layui-card-body">
<table id="data-table" lay-filter="data-table"></table>
</div>
</div>
<!-- 表格顶部工具栏 -->
<script type="text/html" id="table-toolbar">
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
<i class="layui-icon layui-icon-add-1"></i>新增
</button>
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="batchExport">
<i class="layui-icon layui-icon-export"></i>导出所有关键词
</button>
</script>
<!-- 表格行工具栏 -->
<script type="text/html" id="table-bar">
<button class="pear-btn pear-btn-xs tool-btn" lay-event="research">重查</button>
<button class="pear-btn pear-btn-xs tool-btn" lay-event="edit">编辑</button>
<button class="pear-btn pear-btn-xs tool-btn" lay-event="delete">删除</button>
</script>
<script src="/component/layui/layui.js?v=2.8.12"></script>
<script src="/component/pear/pear.js"></script>
<script src="/admin/js/permission.js"></script>
<script src="/admin/js/common.js"></script>
<script>
// 相关常量
const PRIMARY_KEY = "id";
const RESEARCH_API = '/admin/api/keywords/monitor/research' // 重查关键词
const DELETE_API = '/admin/api/keywords/monitor/delete' // 删除监控词
const INDEX_API = '/admin/api/keywords/monitor'; // 表格数据
const VIEW_API = "/admin/api/keywords/monitor/view"; // 编辑按钮 - 查看
const VIEW_URL = "/admin/keywords/monitor/view"; // 编辑按钮 - 查看
const INSERT_API = "/admin/api/news/insert"; // insert 接口
const INSERT_URL = "/admin/keywords/monitor/insert"; // insert 页面
// 字段 创建时间 created_at
layui.use(["laydate"], function () {
layui.laydate.render({
elem: "#created_at",
range: ["#created_at-date-start", "#created_at-date-end"],
});
})
// 表格渲染
layui.use(["table", "form", "common", "popup", "util"], function () {
let table = layui.table;
let form = layui.form;
let $ = layui.$;
let common = layui.common;
let util = layui.util;
// 表头参数
let cols = [
{
type: "checkbox"
}, {
title: "关键词",
field: "keyword",
},{
title: "最后查询时间",
field: "queried_at",
}, {
title: "操作",
toolbar: "#table-bar",
align: "center",
fixed: "right",
width: 230,
}
];
// 渲染表格
function render() {
table.render({
elem: "#data-table",
url: INDEX_API,
page: true,
cols: [cols],
skin: "line",
size: "lg",
toolbar: "#table-toolbar",
autoSort: false,
defaultToolbar: [{
title: "刷新",
layEvent: "refresh",
icon: "layui-icon-refresh",
}, "filter", "print", "exports"],
done: function () {
layer.photos({photos: 'div[lay-id="data-table"]', anim: 5});
}
});
}
render();
// 编辑或删除行事件
table.on("tool(data-table)", function (obj) {
if (obj.event === "edit") {
edit(obj);
}
if (obj.event === "delete") {
layer.confirm('确定删除吗?', function (index) {
// obj.del(); // 删除对应行tr的 DOM 结构,并更新缓存
// layer.close(index);
let loading = layer.load();
$.ajax({
url: DELETE_API,
data: {
id: obj.data.id
},
dataType: "json",
type: "post",
success: (res) => {
layer.close(index);
if (res.code) {
return layui.popup.failure(res.msg);
}
return layui.popup.success("操作成功", refreshTable);
},
error: function () {
return layui.popup.failure("操作失败");
},
complete: function () {
layer.close(loading);
}
})
// 向后端发送删除请求,执行完毕后,可通过 reloadData 方法完成数据重载
/*
table.reloadData(id, {
scrollPos: 'fixed' // 保持滚动条位置不变 - v2.7.3 新增
});
*/
});
}
if (obj.event === 'research') {
research(obj)
}
});
// 表格顶部工具栏事件
table.on("toolbar(data-table)", function (obj) {
if (obj.event === "add") {
add();
} else if (obj.event === "batchExport") {
batchExport();
}
});
// 表格顶部搜索事件
form.on("submit(table-query)", function (data) {
table.reload("data-table", {
page: {
curr: 1
},
where: data.field
})
return false;
});
// 表格顶部搜索重置事件
form.on("submit(table-reset)", function (data) {
table.reload("data-table", {
where: []
})
});
// 表格排序事件
table.on("sort(data-table)", function (obj) {
table.reload("data-table", {
initSort: obj,
scrollPos: "fixed",
where: {
field: obj.field,
order: obj.type
}
});
});
// 表格新增数据
let add = function () {
layer.open({
type: 2,
title: "新增",
shade: 0.1,
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
content: INSERT_URL
});
}
// 下载所有关键词数据
let batchExport = function () {
window.open('/admin/api/keywords/monitor/export-all', '_blank');
}
// 表格编辑数据
let edit = function (obj) {
let value = obj.data['id'];
layer.open({
type: 2,
title: "修改",
shade: 0.1,
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
content: VIEW_URL + "?" + PRIMARY_KEY + "=" + value
});
}
let research = function (obj) {
layer.confirm("确定重查?", {
icon: 3,
title: "提示"
}, function (index) {
layer.close(index);
let loading = layer.load();
layui.$.ajax({
url: RESEARCH_API,
type: "POST",
dateType: "json",
data: {
id: obj.data.id
},
success: function (res) {
layer.close(loading);
if (res.code) {
return layui.popup.failure(res.msg);
}
return layui.popup.success("操作成功", refreshTable);
}
})
});
}
// 删除一行
let remove = function (obj) {
return doRemove(obj.data[PRIMARY_KEY]);
}
// 删除多行
let batchRemove = function (obj) {
let checkIds = common.checkField(obj, PRIMARY_KEY);
if (checkIds === "") {
layui.popup.warning("未选中数据");
return false;
}
doRemove(checkIds.split(","));
}
// 执行删除
let doRemove = function (ids) {
let data = {};
data[PRIMARY_KEY] = ids;
layer.confirm("确定删除?", {
icon: 3,
title: "提示"
}, function (index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: DELETE_API,
data: data,
dataType: "json",
type: "post",
success: function (res) {
layer.close(loading);
if (res.code) {
return layui.popup.failure(res.msg);
}
return layui.popup.success("操作成功", refreshTable);
}
})
});
}
// 刷新表格数据
window.refreshTable = function () {
table.reloadData("data-table", {
scrollPos: "fixed",
done: function (res, curr) {
if (curr > 1 && res.data && !res.data.length) {
curr = curr - 1;
table.reloadData("data-table", {
page: {
curr: curr
},
})
}
}
});
}
})
</script>
</body>
</html>