初始上传

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,82 @@
<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 name="class_name" type="text" placeholder="请输入类型名称" lay-verify="required" class="layui-input len-mid" maxlength="30">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序:</label>
<div class="layui-input-inline">
<input name="sort" type="number" value="0" placeholder="请输入排序值" lay-verify="num" class="layui-input len-short">
</div>
<span class="layui-word-aux">排序值必须为整数</span>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backHelpClassList()">返回</button>
</div>
</div>
<script>
layui.use('form', function() {
var form = layui.form,
repeat_flag = false;//防重复标识
form.render();
/**
* 监听提交
*/
form.on('submit(save)', function(data) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/help/addClass"),
data: data.field,
dataType: 'JSON',
type: 'POST',
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/help/classList")
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
num: function(value) {
if (value == '') {
return;
}
if (value%1 != 0) {
return "输入错误,请输入整数!";
}
}
});
});
function backHelpClassList() {
location.hash = ns.hash("shop/help/classList");
}
</script>

133
app/shop/view/help/add_help.html Executable file
View File

@@ -0,0 +1,133 @@
<style>
.layui-form-select dl { z-index: 9999; }
</style>
<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 name="title" type="text" placeholder="请输入帮助标题" lay-verify="required" class="layui-input len-long" maxlength="30">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>帮助类型:</label>
<div class="layui-input-block len-mid">
<select name="class_id" lay-verify="required" lay-filter="help_class_list" class="len-mid">
<option value="">请选择</option>
{foreach $help_class_list as $help_class_k => $help_class_v}
<option value="{$help_class_v.class_id}">{$help_class_v.class_name}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序:</label>
<div class="layui-input-block">
<input name="sort" type="number" value="0" placeholder="请输入排序值" lay-verify="num" class="layui-input len-short">
</div>
<div class="word-aux">排序值必须为整数</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链接地址:</label>
<div class="layui-input-block">
<input name="link_address" type="text" placeholder="请输入链接地址" lay-verify="link_address" class="layui-input len-long">
</div>
<div class="word-aux">当填写链接链接地址后点击标题将打开链接地址链接格式请以http://开头</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">帮助内容:</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="backHelpList()">返回</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>
var ue = UE.getEditor('container');
layui.use('form', function() {
var form = layui.form,
repeat_flag = false;//防重复标识
form.render();
/**
* 监听提交
*/
form.on('submit(save)', function(data) {
var html;
ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
html = ue.getContent(); //获取html内容返回: <p>hello</p>
});
data.field.content = html;
var class_name = $("option[value="+data.field.class_id+"]").text();
data.field.class_name = class_name;
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/help/addHelp"),
data: data.field,
dataType: 'JSON',
type: 'POST',
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/help/helpList")
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
num: function(value) {
if (value == '') {
return;
}
if (value%1 != 0) {
return "输入错误,请输入整数!";
}
},
link_address : function (value) {
if(value) {
if (value.indexOf("http://") === -1 && value.indexOf("https://") === -1) {
return '链接格式请以http://、https://开头';
}
}
}
});
});
function backHelpList() {
location.hash = ns.hash("shop/help/helpList");
}
</script>

View File

@@ -0,0 +1,183 @@
<style>
.prompt-block, .prompt-block .prompt {display: inline-block;}
.prompt-block .prompt {width: 18px;height: 18px;line-height: 18px;position: relative;}
.layui-table-box {overflow: inherit;}
.layui-table-header {overflow: inherit;}
.layui-table-cell, .layui-table-tool-panel li {overflow: inherit;}
</style>
<!-- 搜索框 -->
<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="type_list" lay-filter="type_list"></table>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="delete">删除</a>
</div>
</script>
<script type="text/html" id="sort">
<input name="sort" type="number" onchange="editSort({{d.class_id}},this)" value="{{d.sort}}" placeholder="请输入排序" class="layui-input edit-sort len-short">
</script>
<script>
layui.use('form', function() {
var table,
form = layui.form,
repeat_flag = false;//防重复标识
form.render();
table = new Table({
elem: '#type_list',
url: ns.url("shop/help/classList"),
cols: [
[{
field: 'class_name',
title: '分类名称',
width: '60%',
unresize: 'false'
},{
field: 'sort',
title: `<div class="prompt-block">排序
<div class="prompt">
<i class="iconfont iconwenhao1 required growth"></i>
<div class="growth-box reason-box reason-growth prompt-box">
<div class="prompt-con">
<p>默认排序号为0数字越小排序越靠前数字重复则最新添加的靠前。</p>
</div>
</div>
</div>
</div>`,
width: '20%',
unresize: 'false',
sort:true,
templet: '#sort'
},{
title: '操作',
toolbar: '#operation',
unresize: 'false',
align : 'right'
}]
],
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //编辑
location.hash = ns.hash("shop/help/editClass?class_id=" + data.class_id);
break;
case 'delete': //删除
deleteUser(data.class_id,data.child);
break;
}
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
/**
* 删除
*/
function deleteUser(class_id,child) {
if (repeat_flag) return false;
repeat_flag = true;
if(child == 1){
repeat_flag = false;
layer.msg("该分类使用中,不可删除");
return false;
}
layer.confirm('确定要删除该帮助类型吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("shop/help/deleteClass"),
data: {
class_id
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
},function() {
repeat_flag = false;
layer.close();
});
}
});
// 监听单元格编辑
function editSort(id, event) {
var data = $(event).val();
let reg = ns.getRegexp('>=0num');
if (!reg.test(data)) {
layer.msg("排序号必须是大于或等于0的整数");
return;
}
$.ajax({
type: 'POST',
url: ns.url("shop/help/modifyClassSort"),
data: {
sort: data,
class_id: id
},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
listenerHash(); // 刷新页面
}
}
});
}
function add() {
location.hash = ns.hash("shop/help/addClass");
}
</script>

View File

@@ -0,0 +1,82 @@
<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 name="class_name" type="text" placeholder="请输入类型名称" value="{$class_info.data.class_name}" lay-verify="required" class="layui-input len-mid" maxlength="30">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序:</label>
<div class="layui-input-inline">
<input name="sort" type="number" placeholder="请输入排序值" value="{$class_info.data.sort}" lay-verify="num" class="layui-input len-short">
</div>
<span class="layui-word-aux">排序值必须为整数</span>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backHelpClassList()">返回</button>
</div>
<input type="hidden" name="class_id" value="{$class_info.data.class_id}" />
</div>
<script>
layui.use('form', function() {
var form = layui.form,
repeat_flag = false;//防重复标识
form.render();
/**
* 监听提交
*/
form.on('submit(save)', function(data) {
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/help/editClass"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续操作'],
yes: function(index, layero) {
location.hash = ns.hash("shop/help/classList")
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
num: function(value) {
if (value == '') {
return;
}
if (value%1 != 0) {
return "输入错误,请输入整数!";
}
}
});
});
function backHelpClassList() {
location.hash = ns.hash("shop/help/classList");
}
</script>

138
app/shop/view/help/edit_help.html Executable file
View File

@@ -0,0 +1,138 @@
<style>
.layui-form-select dl { z-index: 9999; }
</style>
<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 name="title" type="text" value="{$help_info.title}" placeholder="请输入帮助标题" lay-verify="required" class="layui-input len-long" maxlength="30">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>帮助类型:</label>
<div class="layui-input-block len-mid">
<select name="class_id" lay-verify="required" lay-filter="help_class_list" class="len-mid">
<option value="">请选择</option>
{foreach $help_class_list as $help_class_k => $help_class_v}
<option value="{$help_class_v.class_id}" {$help_info.class_id == $help_class_v.class_id ? 'selected' : ''} >{$help_class_v.class_name}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序:</label>
<div class="layui-input-block">
<input name="sort" type="number" value="{$help_info.sort}" placeholder="请输入排序值" lay-verify="num" class="layui-input len-short">
</div>
<div class="word-aux">排序值必须为整数</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链接地址:</label>
<div class="layui-input-block">
<input name="link_address" type="text" value="{$help_info.link_address}" lay-verify="link_address" placeholder="请输入链接地址" class="layui-input len-long">
</div>
<div class="word-aux">当填写链接后点击标题将打开链接地址链接格式请以http://开头</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">帮助内容:</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" value="{$help_info.id}" name="id" />
<input type="hidden" value="{$help_info.content}" id="content" />
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backHelpList()">返回</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>
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.on('submit(save)', function(data) {
var html;
ue.ready(function() { //对编辑器的操作最好在编辑器ready之后再做
html = ue.getContent(); //获取html内容返回: <p>hello</p>
});
data.field.content = html;
var class_name = $("option[value="+data.field.class_id+"]").text();
data.field.class_name = class_name;
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/help/editHelp"),
data: data.field,
dataType: 'JSON',
type: 'POST',
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续操作'],
yes: function(index, layero) {
location.hash = ns.hash("shop/help/helpList")
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
});
});
/**
* 表单验证
*/
form.verify({
num: function(value) {
if (value == '') {
return;
}
if (value%1 != 0) {
return "输入错误,请输入整数!";
}
},
link_address : function (value) {
if(value) {
if (value.indexOf("http://") === -1 && value.indexOf("https://") === -1) {
return '链接格式请以http://、https://开头';
}
}
}
});
});
function backHelpList() {
location.hash = ns.hash("shop/help/helpList");
}
</script>

188
app/shop/view/help/help_list.html Executable file
View File

@@ -0,0 +1,188 @@
<!-- 搜索框 -->
<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="help_list" lay-filter="help_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="edit">编辑</a>
<a class="layui-btn" lay-event="delete">删除</a>
</div>
</script>
<script type="text/html" id="sort">
<input name="sort" type="number" onchange="editSort({{d.id}},this)" value="{{d.sort}}" placeholder="请输入排序" class="layui-input edit-sort len-short">
</script>
<!-- 推广 -->
{include file="app/shop/view/component/promote_show.html"}
<script>
var form,laytpl,table, repeat_flag = false;//防重复标识;
layui.use(['form','laytpl'], function() {
form = layui.form;
laytpl = layui.laytpl;
form.render();
table = new Table({
elem: '#help_list',
url: ns.url("shop/help/helpList"),
cols: [
[ {
field: 'title',
title: '帮助标题',
width: '30%',
unresize: 'false'
}, {
field: 'class_name',
title: '帮助分类',
width: '20%',
unresize: 'false'
},{
field: 'sort',
title: '排序',
width: '15%',
sort : true,
unresize: 'false',
templet: '#sort'
}, {
field: 'create_time',
title: '创建时间',
width: '20%',
unresize: 'false',
templet: function (data) {
return ns.time_to_date(data.create_time);
}
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align : 'right'
}]
],
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'promote': // 推广
promote(data);
break;
case 'edit': //编辑
location.hash = ns.hash("shop/help/editHelp?id=" + data.id);
break;
case 'delete': //删除
deleteHelp(data.id);
break;
}
});
});
/**
* 删除
*/
function deleteHelp(id) {
if (repeat_flag) return false;
repeat_flag = true;
layer.confirm('确定要删除该帮助内容吗?', function (index) {
layer.close(index);
$.ajax({
url: ns.url("shop/help/deleteHelp"),
data: {id},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
},
function () {
repeat_flag = false;
layer.close();
});
}
// 监听单元格编辑
function editSort(id, event) {
var data = $(event).val();
let reg = ns.getRegexp('>=0num');
if (!reg.test(data)) {
layer.msg("排序号必须是大于或等于0的整数");
return;
}
$.ajax({
type: 'POST',
url: ns.url("shop/help/modifySort"),
data: {
sort: data,
help_id: id
},
dataType: 'JSON',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
listenerHash(); // 刷新页面
}
}
});
}
function promote(data){
new PromoteShow({
url:ns.url("shop/help/promote"),
param:{help_id:data.id},
})
}
function add() {
location.hash = ns.hash("shop/help/addHelp");
}
</script>