初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>公告标题:</label>
<div class="layui-input-block">
<input type="text" name="title" lay-verify="required" placeholder="请输入公告标题" class="layui-input len-long" maxlength="30">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否置顶:</label>
<div class="layui-input-block">
<input id="is_top" type="checkbox" name="is_top" lay-skin="switch" value="0" lay-filter="isTop">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>公告内容:</label>
<div class="layui-input-block special-length">
<script id="container" name="content" type="text/plain" style="width: 800px; height: 300px;"></script>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backNoticeIndex()">返回</button>
</div>
</div>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.config.js?time=20240614"></script>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.all.js?time=20240614"></script>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
//实例化富文本
var ue = UE.getEditor('container');
layui.use('form', function() {
var form = layui.form;
var repeat_flag = false; //防重复标识
form.render();
form.on('switch(isTop)', function(data) {
if (data.elem.checked) {
$("#is_top").val(1);
} else {
$("#is_top").val(0);
}
});
form.on('submit(save)', function(data) {
var html;
ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
html = ue.getContent(); //获取html内容返回: <p>hello</p>
});
data.field.content = html;
if (data.field.content == "") {
layer.msg('请输入公告内容', {
icon: 5
});
return;
}
data.field.is_top = $("#is_top").val();
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/notice/addNotice"),
data: data.field,
type: "POST",
dataType: "JSON",
success: function(res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('添加成功', {
title:'操作提示',
btn: ['返回列表', '继续添加'],
closeBtn: 0,
yes: function(index, layero) {
location.hash = ns.hash("shop/notice/index")
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
});
});
});
function backNoticeIndex() {
location.hash = ns.hash("shop/notice/index");
}
</script>

View File

@@ -0,0 +1,13 @@
<style>
.guide-title, .guide-time {text-align: center;}
.guide-title {font-size: 25px; font-weight: 600; height: 50px; line-height: 50px;}
.guide-time {line-height: 24px;}
.guide-time {color: #999999;}
.guide-content {padding: 10px 80px 0; }
</style>
<div class="layui-form form-wrap">
<p class="guide-title">{$info.title}</p>
<p class="guide-time"> {$info.create_time|date='Y-m-d H:i:s'}</p>
<div class="guide-content">{:html_entity_decode($info.content)}</div>
</div>

View File

@@ -0,0 +1,102 @@
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>公告标题:</label>
<div class="layui-input-block">
<input type="text" name="title" value="{$info.title}" lay-verify="require|title" class="layui-input len-long" placeholder="请输入公告标题" maxlength="30">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否置顶:</label>
<div class="layui-input-block">
<input type="checkbox" name="is_top" lay-skin="switch" value="1" {if $info.is_top} checked {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>公告内容:</label>
<div class="layui-input-block special-length">
<script id="container" name="content" type="text/plain" style="width: 800px; height: 300px;"></script>
</div>
</div>
<input type="hidden" name="id" value="{$info.id}">
<input type="hidden" value="{$info.content}" id="content" />
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="formSave">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backNoticeIndex()">返回</button>
</div>
</div>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.config.js?time=20240614"></script>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/ueditor.all.js?time=20240614"></script>
<script type="text/javascript" charset="utf-8" src="STATIC_EXT/ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript">
var ue = UE.getEditor('container');
ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
var con = $("#content").val();
ue.setContent(con); //获取html内容返回: <p>hello</p>
});
layui.use('form', function() {
var form = layui.form,
repeat_flag = false; //防重复标识
form.render();
form.verify({
title: function(value) {
if (value.length < 1) {
return '请输入公告标题';
}
}
});
form.on('submit(formSave)', function(data) {
var html;
ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
html = ue.getContent(); //获取html内容返回: <p>hello</p>
});
data.field.content = html;
if (data.field.content == "") {
layer.msg('请输入公告内容', {
icon: 5
});
return;
}
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/notice/editNotice"),
data: data.field,
type: "POST",
dataType: "JSON",
success: function(res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续操作'],
yes: function(index, layero) {
location.hash = ns.hash("shop/notice/index")
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
});
});
});
function backNoticeIndex() {
location.hash = ns.hash("shop/notice/index");
}
</script>

227
app/shop/view/notice/index.html Executable file
View File

@@ -0,0 +1,227 @@
<!-- 搜索框 -->
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加公告</button>
<div class="layui-form">
<div class="layui-input-inline">
<input type="text" name="search_text" placeholder="请输入公告名称" autocomplete="off" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="notice_list" lay-filter="notice_list"></table>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" lay-event="promote">推广</a>
<a class="layui-btn" lay-event="basic">查看</a>
<a class="layui-btn" lay-event="edit">编辑</a>
{{# if(!d.is_top){ }}
<a class="layui-btn" lay-event="setTop">置顶</a>
{{# } }}
<a class="layui-btn" lay-event="del">删除</a>
</div>
</script>
<!-- 编辑排序 -->
<script type="text/html" id="editSort">
<input name="sort" type="number" onchange="editSort({{d.id}}, this)" value="{{d.sort}}" class="layui-input edit-sort len-short">
</script>
<!-- 推广 -->
{include file="app/shop/view/component/promote_show.html"}
<script type="text/javascript">
var form,laytpl,table,repeat_flag = false; //防重复标识
layui.use(['form','laytpl'], function() {
form = layui.form;
laytpl = layui.laytpl;
form.render();
table = new Table({
elem: '#notice_list',
url: ns.url("shop/notice/index"),
cols: [
[{
width: '35%',
title: '公告标题',
unresize: 'false',
templet: function(data) {
var html = data.is_top ? '<span class="required">[ 置顶 ] </span>' : '';
html += data.title;
return html;
}
},
// {
// field:'receiving_name',
// width: '20%',
// title: '接收范围',
// unresize: 'false',
// },
{
width: '25%',
title: '创建时间',
unresize: 'false',
templet: function(data) {
return ns.time_to_date(data.create_time);
}
}, {
field: 'sort',
unresize:'false',
title: '排序',
sort : true,
width: '20%',
templet: '#editSort'
}, {
title: '操作',
unresize: 'false',
templet: '#operation',
align : 'right'
}
]]
});
table.tool(function(obj) {
var data = obj.data;
var event = obj.event;
switch (obj.event) {
case 'promote': // 推广
promote(data);
break;
case 'edit': //编辑
location.hash = ns.hash("shop/notice/editNotice?id=" + data.id);
break;
case 'del': //删除
deleteNotice(data.id);
break;
case 'setTop': // 置顶
modifySiteNoticeTop(data.id);
break;
case 'basic':
location.hash = ns.hash("shop/notice/detail?id=" + data.id);
break;
}
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
function deleteNotice(id) {
if (repeat_flag) return;
repeat_flag = true;
layer.confirm('确定要删除该公告吗?', function(index) {
layer.close(index);
$.ajax({
type: "post",
async: false,
url: ns.url("shop/notice/deleteNotice"),
data: {
'id': id
},
dataType: "JSON",
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function() {
repeat_flag = false;
layer.close();
}
);
}
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
function modifySiteNoticeTop(id) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
type: "POST",
dataType: "JSON",
async: false,
url: ns.url("shop/notice/modifyNoticeTop"),
data: {id},
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}
});
function add() {
location.hash = ns.hash("shop/notice/addNotice");
}
// 监听单元格编辑
function editSort(id, event){
var data = $(event).val();
if (data == '') {
$(event).val(0);
data = 0;
}
if(!new RegExp("^-?[0-9]\\d*$").test(data)){
layer.msg("排序号只能是整数");
return ;
}
if(data<0){
layer.msg("排序号必须大于0");
return ;
}
$.ajax({
type: 'POST',
url: ns.url("shop/notice/modifySort"),
data: {
sort: data,
id: id
},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
if(res.code==0){
table.reload();
}
}
});
}
function promote(data){
new PromoteShow({
url:ns.url("shop/notice/promote"),
param:{notice_id:data.id},
})
}
</script>

View File

@@ -0,0 +1,129 @@
<style>
.notice-list {
padding: 0 20px;
}
</style>
<div class="notice-list">
<!-- 列表 -->
<table id="notice_list" lay-filter="notice_list"></table>
</div>
<script type="text/html" id="checkbox">
{{# if($.inArray(d.id.toString(), selected_id_arr) != -1){ }}
<input type="checkbox" data-notice-id="{{d.id}}" name="notice_checkbox" lay-skin="primary" lay-filter="notice_checkbox" checked>
{{# }else{ }}
<input type="checkbox" data-notice-id="{{d.id}}" name="notice_checkbox" lay-skin="primary" lay-filter="notice_checkbox">
{{# } }}
<input type="hidden" data-notice-id="{{d.id}}" name="notice_json" value='{{ JSON.stringify(d) }}' />
</script>
<script>
var table, form, laytpl,
select_id = "{$select_id}", //选中商品id
selected_id_arr = select_id.length ? select_id.split(',') : [],
select_list = []; //选中商品所有数据
$(function () {
layui.use(['form', 'laytpl'], function () {
form = layui.form;
laytpl = layui.laytpl;
table = new Table({
elem: '#notice_list',
url: ns.url("shop/notice/index"),
cols: [
[
{
unresize: 'false',
width: '10%',
templet: '#checkbox'
}, {
width: '55%',
title: '公告标题',
unresize: 'false',
templet: function(data) {
var html = data.is_top ? '<span class="required">[ 置顶 ] </span>' : '';
html += data.title;
return html;
}
}, {
width: '35%',
title: '创建时间',
unresize: 'false',
templet: function(data) {
return ns.time_to_date(data.create_time);
}
}
]
],
callback : function () {
// 更新商品复选框状态
for (var i=0;i<selected_id_arr.length;i++) {
var selected_notices = $("input[name='notice_checkbox'][data-notice-id='" + selected_id_arr[i] + "']");
if (selected_notices.length) {
$("input[name='notice_checkbox'][data-notice-id='" + selected_id_arr[i] + "']").prop("checked", true);
}
}
form.render();
initData();
}
});
// 勾选商品
form.on('checkbox(notice_checkbox)', function(data) {
var notice_id = $(data.elem).attr("data-notice-id"), json = {};
form.render();
var noticeLen = $("input[name='notice_checkbox'][data-notice-id="+ notice_id +"]:checked").length;
if (noticeLen){
json = JSON.parse($("input[name='notice_json'][data-notice-id="+ notice_id +"]").val());
delete json.LAY_INDEX;
delete json.LAY_TABLE_INDEX;
delete json.create_time;
select_list.push(json);
} else{
for (var i = 0; i < select_list.length; i++) {
if (select_list[i].id == notice_id) {
select_list.splice(i, 1);
break;
}
}
}
$.unique(select_list);
});
//初始化数据
function initData(){
var noticeLen = $("input[name='notice_checkbox'][data-notice-id]:checked").length;
for (var i = 0; i < noticeLen; i++){
var noticeId = $("input[name='notice_checkbox'][data-notice-id]:checked").eq(i).attr("data-notice-id");
var ident = false;
for (var k = 0; k < select_list.length; k++){
if(select_list[k].id == noticeId){
ident = true;
break;
}
}
if (ident) return;
json = JSON.parse($("input[name='notice_json'][data-notice-id="+ noticeId +"]").val());
delete json.LAY_INDEX;
delete json.LAY_TABLE_INDEX;
delete json.create_time;
select_list.push(json);
}
}
});
});
function selectNoticeListener(callback) {
var res = select_list;
callback(res);
}
</script>