初始上传
This commit is contained in:
95
app/shop/view/notice/add_notice.html
Executable file
95
app/shop/view/notice/add_notice.html
Executable 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>
|
||||
13
app/shop/view/notice/detail.html
Executable file
13
app/shop/view/notice/detail.html
Executable 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>
|
||||
102
app/shop/view/notice/edit_notice.html
Executable file
102
app/shop/view/notice/edit_notice.html
Executable 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
227
app/shop/view/notice/index.html
Executable 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"></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>
|
||||
129
app/shop/view/notice/notice_select.html
Executable file
129
app/shop/view/notice/notice_select.html
Executable 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>
|
||||
Reference in New Issue
Block a user