推送更新

This commit is contained in:
2025-05-29 17:33:17 +08:00
parent 46e5333864
commit 47cfb7dcaf
5 changed files with 517 additions and 0 deletions
+135
View File
@@ -0,0 +1,135 @@
{include file="public/header" /}
<div class="config-container">
<!-- 页面头部样式 -->
<div class="config-header" style="display: flex;flex-direction: column;flex-wrap: wrap;align-items: flex-start;">
<div class="maintitle">
<i class="layui-icon layui-icon-notice"></i>
<span>内容推送列表</span>
</div>
<div style="display: flex;align-items: flex-start;flex-direction: column;gap: 15px;margin-bottom: 10px;">
<div>
<button class="layui-btn layui-bg-blue" onclick="add()">
<i class="layui-icon layui-icon-add-1"></i>添加推送
</button>
<button type="button" class="layui-btn layui-btn-primary layui-border-blue" onclick="refresh()">
<i class="layui-icon layui-icon-refresh"></i>刷新
</button>
</div>
</div>
</div>
<table id="contentPushTable" lay-filter="contentPushTable"></table>
</div>
<script type="text/javascript">
layui.use(['table', 'layer'], function () {
var table = layui.table;
var layer = layui.layer;
var $ = layui.jquery;
// 初始化表格
table.render({
elem: '#contentPushTable',
url: '{$config["admin_route"]}yunzeradmin/contentpushlist',
page: true,
cols: [[
{field: 'id', title: 'ID', width: 80, sort: true},
{field: 'title', title: '标题', width: 200},
{field: 'type', title: '类型', width: 100, templet: function(d){
return d.type == 1 ? '普通推送' : '重要推送';
}},
{field: 'status', title: '状态', width: 100, templet: function(d){
return d.status == 1 ?
'<span class="layui-badge layui-bg-green">启用</span>' :
'<span class="layui-badge">禁用</span>';
}},
{field: 'sort', title: '排序', width: 100, sort: true},
{field: 'create_time', title: '创建时间', width: 180},
{title: '操作', width: 200, toolbar: '#tableBar', fixed: 'right'}
]],
limit: 10,
limits: [10, 20, 30, 50]
});
// 监听工具条
table.on('tool(contentPushTable)', function(obj){
var data = obj.data;
if(obj.event === 'edit'){
edit(data.id);
} else if(obj.event === 'del'){
del(data.id);
} else if(obj.event === 'status'){
changeStatus(data.id, data.status);
}
});
});
// 添加
function add() {
layer.open({
type: 2,
title: '添加内容推送',
shade: 0.3,
area: ['800px', '600px'],
content: "{$config['admin_route']}yunzeradmin/contentpushadd"
});
}
// 编辑
function edit(id) {
layer.open({
type: 2,
title: '编辑内容推送',
shade: 0.3,
area: ['800px', '600px'],
content: "{$config['admin_route']}yunzeradmin/contentpushedit?id=" + id
});
}
// 删除
function del(id) {
layer.confirm('确定要删除这条推送吗?', {
icon: 3,
btn: ['确定', '取消']
}, function () {
$.post("{$config['admin_route']}yunzeradmin/contentpushdel", { 'id': id }, function (res) {
if (res.code > 0) {
layer.msg(res.msg, { icon: 2 });
} else {
layer.msg(res.msg, { icon: 1 });
layui.table.reload('contentPushTable');
}
}, 'json');
});
}
// 修改状态
function changeStatus(id, status) {
var newStatus = status == 1 ? 0 : 1;
$.post("{$config['admin_route']}yunzeradmin/contentpushstatus", {
'id': id,
'status': newStatus
}, function (res) {
if (res.code > 0) {
layer.msg(res.msg, { icon: 2 });
} else {
layer.msg(res.msg, { icon: 1 });
layui.table.reload('contentPushTable');
}
}, 'json');
}
// 刷新列表
function refresh() {
layui.table.reload('contentPushTable');
}
</script>
<!-- 表格操作列模板 -->
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="status">状态</a>
</script>
{include file="public/tail" /}
@@ -0,0 +1,113 @@
{include file="public/header" /}
<div class="config-container">
<form class="layui-form" action="{$config['admin_route']}yunzeradmin/contentpushsave" method="post" lay-filter="contentPushForm">
<div class="layui-form-item">
<label class="layui-form-label">推送标题</label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" placeholder="请输入推送标题" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">推送内容</label>
<div class="layui-input-block">
<textarea name="content" placeholder="请输入推送内容" class="layui-textarea" required lay-verify="required"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">推送图片</label>
<div class="layui-input-block">
<input type="text" name="image" id="image" placeholder="请上传推送图片" autocomplete="off" class="layui-input">
<button type="button" class="layui-btn" id="uploadImage">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转链接</label>
<div class="layui-input-block">
<input type="text" name="url" placeholder="请输入跳转链接" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">推送类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="1" title="普通推送" checked>
<input type="radio" name="type" value="2" title="重要推送">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="启用" checked>
<input type="radio" name="status" value="0" title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="number" name="sort" value="0" placeholder="请输入排序值" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="contentPushForm">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script type="text/javascript">
layui.use(['form', 'upload', 'layer'], function(){
var form = layui.form;
var upload = layui.upload;
var layer = layui.layer;
var $ = layui.jquery;
// 图片上传
upload.render({
elem: '#uploadImage',
url: '{$config["admin_route"]}yunzeradmin/upload',
accept: 'images',
acceptMime: 'image/*',
done: function(res){
if(res.code == 0){
$('#image').val(res.data.src);
layer.msg('上传成功');
} else {
layer.msg('上传失败');
}
}
});
// 表单提交
form.on('submit(contentPushForm)', function(data){
$.ajax({
url: data.form.action,
type: 'POST',
data: data.field,
success: function(res){
if(res.code == 0){
layer.msg(res.msg, {icon: 1}, function(){
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.layui.table.reload('contentPushTable');
});
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
return false;
});
});
</script>
{include file="public/tail" /}
@@ -0,0 +1,108 @@
{include file="public/header" /}
<div class="config-container">
<form class="layui-form" action="{$config['admin_route']}yunzeradmin/contentpushsave" method="post" lay-filter="contentPushForm">
<input type="hidden" name="id" value="{$info.id}">
<div class="layui-form-item">
<label class="layui-form-label">推送标题</label>
<div class="layui-input-block">
<input type="text" name="title" value="{$info.title}" required lay-verify="required" placeholder="请输入推送标题" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">推送内容</label>
<div class="layui-input-block">
<textarea name="content" placeholder="请输入推送内容" class="layui-textarea" required lay-verify="required">{$info.content}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">推送图片</label>
<div class="layui-input-block">
<input type="text" name="image" id="image" value="{$info.image}" placeholder="请上传推送图片" autocomplete="off" class="layui-input">
<button type="button" class="layui-btn" id="uploadImage">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转链接</label>
<div class="layui-input-block">
<input type="text" name="url" value="{$info.url}" placeholder="请输入跳转链接" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">推送类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="1" title="普通推送" {if $info.type==1}checked{/if}>
<input type="radio" name="type" value="2" title="重要推送" {if $info.type==2}checked{/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="启用" {if $info.status==1}checked{/if}>
<input type="radio" name="status" value="0" title="禁用" {if $info.status==0}checked{/if}>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="contentPushForm">保存</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<script type="text/javascript">
layui.use(['form', 'upload', 'layer'], function(){
var form = layui.form;
var upload = layui.upload;
var layer = layui.layer;
var $ = layui.jquery;
// 图片上传
upload.render({
elem: '#uploadImage',
url: '{$config["admin_route"]}yunzeradmin/upload',
accept: 'images',
acceptMime: 'image/*',
done: function(res){
if(res.code == 0){
$('#image').val(res.data.src);
layer.msg('上传成功');
} else {
layer.msg('上传失败');
}
}
});
// 表单提交
form.on('submit(contentPushForm)', function(data){
$.ajax({
url: data.form.action,
type: 'POST',
data: data.field,
success: function(res){
if(res.code == 0){
layer.msg(res.msg, {icon: 1}, function(){
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.layui.table.reload('contentPushTable');
});
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
return false;
});
});
</script>
{include file="public/tail" /}