first commit

This commit is contained in:
2025-06-25 10:53:11 +08:00
commit 9f374011ae
1240 changed files with 181139 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">配置项</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray">配置名称<font>*</font>
</td>
<td>
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入配置名称" lay-reqText="请输入配置名称" class="layui-input" {notempty name="$config.title"} value="{$config.title}" {/notempty}>
</td>
<td class="layui-td-gray">状态<font>*</font></td>
<td>{if condition="$id eq 0"}
<input type="radio" name="status" value="1" title="正常" checked>
<input type="radio" name="status" value="0" title="禁用">
{else/}
<input type="radio" name="status" value="1" title="正常" {eq name="$config.status" value="1"
}checked{/eq}>
<input type="radio" name="status" value="0" title="禁用" {eq name="$config.status" value="0"
}checked{/eq}>
{/if}
</td>
</tr>
<tr>
<td class="layui-td-gray">
配置标识<font>*</font>
</td>
<td colspan="3">
<input type="text" name="name" lay-verify="required" placeholder="请输入配置标识" lay-reqText="请输入配置标识" autocomplete="off" class="layui-input" {notempty name="$config.name"} value="{$config.name}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align: top;">
注意
</td>
<td colspan="3">
<span style ="color: red; font-size: 12px;">(注意:新增配置项以后,需要对应新增模板文件,模板文件名称需与标识名称一致,建议复制现有的配置模板文件,然后根据需求修改对应的表单即可)</span>
</td>
</tr>
</table>
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}" />
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/conf/add",data.field,callback);
return false;
});
}
</script>
+121
View File
@@ -0,0 +1,121 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">邮箱配置</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray-2">SMTP地址<font>*</font>
</td>
<td>
<input type="text" name="smtp" lay-verify="required" autocomplete="off" placeholder="请输入SMTP服务器地址" lay-reqText="请输入SMTP服务器地址" class="layui-input" {notempty name="$config.smtp"} value="{$config.smtp}" {/notempty} style="width:240px;display: inline-block;">
<span style="color:#999; font-size:12px;">如:QQ邮箱的SMTP服务器地址是smtp.qq.com163邮箱的SMTP服务器地址是smtp.163.com</span>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">协议端口号<font>*</font>
</td>
<td>
<input type="text" name="smtp_port" lay-verify="required" autocomplete="off" placeholder="请输入端口" lay-reqText="请输入端口" class="layui-input" {notempty name="$config.smtp_port"} value="{$config.smtp_port}" {/notempty} style="width:240px;display: inline-block;">
<span style="color:#999; font-size:12px;">如:QQ邮箱的ssl协议方式端口号是465/587,163邮箱的ssl协议方式端口号是465/994</span>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">邮箱账户<font>*</font>
</td>
<td>
<input type="text" name="smtp_user" autocomplete="off" lay-verify="required" placeholder="请输入邮箱用户名" lay-reqText="请输入邮箱用户名" class="layui-input" {notempty name="$config.smtp_user"} value="{$config.smtp_user}" {/notempty} style="width:240px;display: inline-block;">
<span style="color:#999; font-size:12px;">如:gougucms@qq.com</span>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">邮箱密码<font>*</font>
</td>
<td>
<input type="password" name="smtp_pwd" lay-verify="required" autocomplete="off" placeholder="请输入邮箱密码"
class="layui-input" {notempty name="$config.smtp_pwd"} value="{$config.smtp_pwd}" {/notempty} style="width:240px;display: inline-block;">
<span style="color:#999; font-size:12px;">
不一定是登录密码,如QQ邮箱的是第三方授权登录码,要自己去开启,在邮箱的设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务</span>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">发送人<font>*</font>
</td>
<td>
<input type="text" name="from" autocomplete="off" lay-verify="required" placeholder="请输入要显示的发送者" lay-reqText="请输入要显示的发送者"
class="layui-input" {notempty name="$config.from"} value="{$config.from}" {/notempty} style="width:240px; display: inline-block;">
<span style="color:#999; font-size:12px;">用于展示给发送方,如:勾股CMS系统管理员</span>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">显示的邮箱<font>*</font>
</td>
<td>
<input type="text" name="email" lay-verify="required" autocomplete="off" placeholder="请输入要显示的发送者邮箱" lay-reqText="请输入要显示的发送者邮箱"
class="layui-input" {notempty name="$config.email"} value="{$config.email}" {/notempty} style="width:240px;display: inline-block;">
<span style="color:#999;font-size:12px;">可以不同于上面的账户,用于展示给发送方的邮箱,如:admin@gougucms.com</span>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">邮件内容</td>
<td>
<textarea class="layui-textarea" name="template">{notempty name="$config.template"}{$config.template}{/notempty}</textarea>
</td>
</tr>
</table>
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button lay-event="email" class="layui-btn">发送测试</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/conf/edit",data.field,callback);
return false;
});
$('.page-content').on('click', '[lay-event="email"]', function () {
layer.prompt({
formType: 0,
value: '',
title: '输入接收测试邮件的邮箱',
id: 'email_to'
}, function (value, index, elem) {
var isEmail = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
if (value.length < 6 || !(isEmail.test(value))) {
layer.tips('请正确输入邮箱', elem);
return false;
}
$.ajax({
url: "/admin/api/email_test",
data: { email: value },
type: "post",
beforeSend: function () {
// 禁用按钮防止重复提交
$("#email_to input").val('');
},
success: function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layer.close(index);
}
}
})
});
return false;
})
}
</script>
+106
View File
@@ -0,0 +1,106 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>系统配置</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-conf">+ 添加配置项</button>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="status">
<i class="layui-icon {{# if(d.status == 1){ }}layui-icon-ok{{# } else { }}layui-icon-close{{# } }}"></i>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table,
tool = layui.tool,
form = layui.form;
layui.pageTable = table.render({
elem: '#test',
title: '配置列表',
url: "/admin/conf/index",
page: true, //开启分页
limit: 20,
cols: [
[{
field: 'id',
width: 80,
title: 'ID编号',
align: 'center'
},{
field: 'title',
width: 200,
title: '配置名称'
}, {
field: 'name',
title: '配置标识(新增的模板文件名称需与标识名称一致)'
},{
field: 'status',
width: 80,
title: '状态',
templet: '#status',
align: 'center'
}, {
width: 160,
title: '操作',
align: 'center',
templet: function (d) {
var html = '<div class="layui-btn-group"><button class="layui-btn layui-btn-xs" lay-event="add">修改</button><button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit" >编辑配置</button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
return html;
}
}]
]
});
//表头工具栏事件
$('.add-conf').on('click', function(){
tool.open('/admin/conf/add');
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'add'){
tool.open('/admin/conf/add?id='+data.id);
}
if(obj.event === 'edit'){
tool.open('/admin/conf/edit?id='+data.id);
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete('/admin/conf/delete',{ id: obj.data.id },callback);
layer.close(index);
});
}
return;
});
}
</script>
{/block}
<!-- /脚本 -->
+41
View File
@@ -0,0 +1,41 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">其他配置</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray">开发者</td>
<td>
<input type="text" name="author" autocomplete="off" placeholder="请输入开发者" lay-reqText="请输入开发者" class="layui-input"{notempty name="$config.author"} value="{$config.author}" {/notempty}>
</td>
<td class="layui-td-gray-2">开发版本号
</td>
<td>
<input type="text" name="version" autocomplete="off" placeholder="请输入版本号" lay-reqText="请输入版本号" class="layui-input" {notempty name="$config.version"} value="{$config.version}" {/notempty}>
</td>
</tr>
</table>
<div style="padding: 10px 0">
<input type="hidden" value="{$id}" name="id">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/conf/edit",data.field,callback);
return false;
});
}
</script>
+121
View File
@@ -0,0 +1,121 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">Token配置</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray-2">Token签发组织</td>
<td>
<input type="text" name="iss" autocomplete="off" placeholder="请输入签发组织" lay-reqText="请输入签发组织" class="layui-input"{notempty name="$config.iss"} value="{$config.iss}" {/notempty}>
</td>
<td class="layui-td-gray-2">Token签发作者
</td>
<td>
<input type="text" name="aud" autocomplete="off" placeholder="请输入签发作者" lay-reqText="请输入签发作者" class="layui-input" {notempty name="$config.aud"} value="{$config.aud}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">Token Secrect</td>
<td>
<input type="text" name="secrect" autocomplete="off" placeholder="请输入secrect" lay-reqText="请输入secrect" class="layui-input"{notempty name="$config.secrect"} value="{$config.secrect}" {/notempty}>
</td>
<td class="layui-td-gray-2">Token过期时间
</td>
<td>
<input type="text" name="exptime" autocomplete="off" placeholder="请输入过期时间" lay-reqText="请输入过期时间" class="layui-input" {notempty name="$config.exptime"} value="{$config.exptime}" {/notempty}>
</td>
</tr>
</table>
<div style="padding:20px 0;">
<span class="layui-btn layui-btn-sm" onclick="testLogin();">Api测试登录</span>
<span class="layui-btn layui-btn-sm" onclick="testToken();">Token测试</span>
</div>
<div style="padding:20px; background-color:#f2f2f2;word-wrap:break-word">
测试结果:
<div id="res"></div>
</div>
<div style="padding: 20px 0">
<input type="hidden" value="{$id}" name="id">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/conf/edit",data.field,callback);
return false;
});
}
var token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuZ291Z3VjbXMuY29tIiwiYXVkIjoiZ291Z3VjbXMiLCJpYXQiOjE2MjczMTY1MTgsImV4cCI6MTYyNzMyMDExOCwidWlkIjoxfQ.3soLDbwrEqn4EZtpD4h05FmvmMtJEh1LtE1vZ_ANcnI';
function testToken(){
$.ajax({
headers: {
Token: token
},
url: "/admin/api/index/demo",
type: "get",
success: function (res) {
$('#res').html(JSON.stringify(res));
if(res.code == 111){
layer.msg(res.msg);
}
}
});
}
function testLogin(){
var content='<form class="layui-form" style="width:400px"><div style="padding:10px 15px">\
<p style="padding:10px 0">用户名:</p>\
<p><input name="username" type="text" class="layui-input" value="hdm58"/></p>\
<p style="padding:10px 0">密 码:</p>\
<p><input name="password" type="password" class="layui-input" value="123456"/></p>\
</div>\
</form>';
layer.open({
type:1,
title:'API测试用户登录',
area:['432px','300px'],
content:content,
btnAlign: 'c',
btn: ['登录'],
yes: function(idx){
var username = $('[name="username"]').val();
var password = $('[name="password"]').val();
if(username==''){
layer.msg('请填写用户名');
return;
}
if(password==''){
layer.msg('请填写密码');
return;
}
$.ajax({
url: "/admin/api/index/login",
type:'post',
data:{username:username,password:password},
success:function(res){
$('#res').html(JSON.stringify(res));
layer.msg(res.msg);
if(res.code==1){
token = res.data.token;
layer.close(idx);
}
}
})
}
})
}
</script>
+122
View File
@@ -0,0 +1,122 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">系统配置</h3>
<table class="layui-table">
<tr>
<td class="layui-td-gray-2">系统名称<font>*</font>
</td>
<td>
<input type="text" name="admin_title" lay-verify="required" autocomplete="off" placeholder="请输入系统名称" lay-reqText="请输入系统名称" class="layui-input" {notempty name="$config.admin_title"} value="{$config.admin_title}" {/notempty}>
</td>
<td rowspan="3" class="layui-td-gray-2">公司LOGO</td>
<td rowspan="3" style="width: 240px;">
<div class="layui-upload" style="width: 240px;">
<div class="layui-upload-list" id="demo1" style="width: 100%; height:100px; overflow: hidden;">
<img src='{notempty name="$config.logo"}{$config.logo}{/notempty}' style="max-width: 100%; width: 100%;" />
<input type="hidden" name="logo" {notempty name="$config.logo"} value="{$config.logo}" {/notempty}>
</div>
<button type="button" class="layui-btn layui-btn-normal" style="width: 100%;"
id="test1">上传LOGO</button>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">网络域名<font>*</font>
</td>
<td>
<input type="text" name="domain" lay-verify="required" autocomplete="off" placeholder="请输入网络域名" lay-reqText="请输入网络域名" class="layui-input" {notempty name="$config.domain"} value="{$config.domain}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">平台名称<font>*</font>
</td>
<td>
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入网站平台名称" lay-reqText="请输入平台名称" class="layui-input" {notempty name="$config.title"} value="{$config.title}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">ICP备案号</td>
<td>
<input type="text" name="icp" autocomplete="off" placeholder="请输入ICP备案号" class="layui-input" {notempty name="$config.icp"} value="{$config.icp}" {/notempty}>
</td>
<td class="layui-td-gray-2">公安备案号</td>
<td>
<input type="text" name="beian" autocomplete="off" placeholder="请输入公安备案号" class="layui-input" {notempty name="$config.beian"} value="{$config.beian}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">版权信息</td>
<td>
<input type="text" name="copyright" autocomplete="off" placeholder="请输入版权信息" lay-reqText="请输入版权信息" class="layui-input"{notempty name="$config.copyright"} value="{$config.copyright}" {/notempty}>
</td>
<td class="layui-td-gray-2">代码版本号<font>*</font>
</td>
<td>
<input type="text" lay-verify="required" name="version" autocomplete="off" placeholder="请输入版本号" lay-reqText="请输入版本号" class="layui-input" {notempty name="$config.version"} value="{$config.version}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">SEO关键词<font>*</font>
</td>
<td colspan="3">
<input type="text" name="keywords" lay-verify="required" autocomplete="off" placeholder="多个关键词用“,”隔开" lay-reqText="请输入SEO关键字" class="layui-input" {notempty name="$config.keywords"} value="{$config.keywords}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">平台描述<font>*</font>
</td>
<td colspan="3">
<textarea name="desc" lay-verify="required" placeholder="请输入平台描述" lay-reqText="请输入平台描述" class="layui-textarea">{notempty name="$config.desc"}{$config.desc} {/notempty}</textarea>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">统计代码</td>
<td colspan="5">
<textarea name="code" placeholder="请输入完整的统计代码" class="layui-textarea">{notempty name="$config.code"} value={$config.code}{/notempty}</textarea>
</td>
</tr>
</table>
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool,
upload = layui.upload;
form.render();
//logo上传
var uploadInst = upload.render({
elem: '#test1',
url: "/api/index/upload",
done: function (res) {
//如果上传失败
if (res.code == 1) {
return layer.msg('上传失败');
}
//上传成功
layer.msg('上传成功');
$('#demo1 input').attr('value', res.data.filepath);
$('#demo1 img').attr('src', res.data.filepath);
}
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/conf/edit",data.field,callback);
return false;
});
}
</script>
+166
View File
@@ -0,0 +1,166 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>数据还原</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-tab layui-tab-brief layui-tab-big">
<ul class="layui-tab-title">
<li><a href="/admin/database/database">数据备份</a></li>
<li class="layui-this"><a href="/admin/database/backuplist">数据还原</a></li>
</ul>
</div>
<table cellspacing="0" cellpadding="0" border="0" class="layui-table">
<tr style="background-color: #f5f5f5; text-align: center;">
<th style=" text-align: center; font-weight: 800;"><span>文件名称</span></th>
<th style=" text-align: center; font-weight: 800;"><span>文件格式</span></th>
<th style=" text-align: center; font-weight: 800;"><span>分隔符</span></th>
<th style=" text-align: center; font-weight: 800;"><span>文件总大小</span></th>
<th style=" text-align: center; font-weight: 800;"><span>分卷总数</span></th>
<th style=" text-align: center; font-weight: 800; width:200px"><span>操作</span></th>
</tr>
{empty name="list"}
<tr>
<td colspan="6" align="center">暂无备份数据</td>
</tr>
{/empty}
{volist name="list" id="vo" key="k"}
<tr style="background-color: #fafafa;">
<td><strong>备份时间:{$vo.time}</strong>{if $vo.timespan == $lock_time}<span style="color:red; margin-left:20px;">该备份不是完整备份,请删除重新备份</span>{/if}</td>
<td align="center"><span>.sql</span></td>
<td align="center"><span>{$vo.data.compress}</span></td>
<td align="center"><span>{:format_bytes($vo.data.size)}</span></td>
<td align="center"><span>{$vo.data.part}</span></td>
<td align="center">
<div class="layui-btn-group" data-time='{$vo.timespan}'>
{if $vo.timespan == $lock_time}
<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="reset">清除不完整的备份</a>
{else/}
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="import">数据还原</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">备份删除</a>
{/if}
</div>
</td>
</tr>
{for start="0" end="$vo.data.part" step="1"}
<tr>
<td colspan="5">
{:date("Ymd",$vo.timespan)}{$vo.data.compress}{:date("His",$vo.timespan)}{$vo.data.compress}{$i+1}.sql
</td>
<td align="center">
<a class="layui-btn layui-btn-xs" href='/admin/database/downfile?time={$vo.data.time}&part={$i+1}'>下载备份(分卷{$i+1})</a>
</td>
</tr>
{/for}
{/volist}
</table>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
function importData(data){
if(data.code==0){
console.log(data.msg);
layer.closeAll();
layer.msg(data.msg,{time: 200000});
if($.isPlainObject(data.data)){
$.ajax({
url: "/admin/database/import",
type:'get',
data:{"part" : data.data.part, "start" : data.data.start,time:data.data.time},
success: function (res) {
importData(res);
}
})
}else {
layer.msg(data.msg);
window.onbeforeunload = function(){ return null; }
}
} else {
layer.msg(data.msg);
}
}
//监听行工具事件
$('[lay-event="import"]').on('click',function(){
var time=$(this).parent().data('time');
layer.confirm('确认要还原该备份吗?', {
icon: 3,
title: '提示'
}, function (index) {
layer.msg("数据还原中...",{time: 200000});
$.ajax({
url: "/admin/database/import?time="+time,
type:'get',
success: function (res) {
importData(res);
}
})
window.onbeforeunload = function(){ return "正在还原数据库,请不要关闭!" }
layer.close(index);
});
return false;
})
$('[lay-event="del"]').on('click',function(){
var time=$(this).parent().data('time');
layer.confirm('确认要删除该备份吗?', {
icon: 3,
title: '提示'
}, function (index) {
$.ajax({
url: "/admin/database/del",
data: {'time':time},
success: function (res) {
layer.msg(res.msg);
if (res.code == 0) {
setTimeout(function(){
location.reload();
},2000)
}
}
})
layer.close(index);
});
return false;
})
$('[lay-event="reset"]').on('click',function(){
var time=$(this).parent().data('time');
layer.confirm('确认要清除该备份吗?', {
icon: 3,
title: '提示'
}, function (index) {
$.ajax({
url: "/admin/database/del",
data: {'time':time,'lock':1},
success: function (res) {
layer.msg(res.msg);
if (res.code == 0) {
setTimeout(function(){
location.reload();
},2000)
}
}
})
layer.close(index);
});
return false;
})
}
</script>
{/block}
<!-- /脚本 -->
+220
View File
@@ -0,0 +1,220 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>数据备份</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-tab layui-tab-brief layui-tab-big">
<ul class="layui-tab-title">
<li class="layui-this"><a href="/admin/database/database">数据备份</a></li>
<li><a href="/admin/database/backuplist">数据还原</a></li>
</ul>
</div>
<table class="layui-hide" id="backup" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-group">
<span class="layui-btn layui-btn-sm layui-btn-normal" lay-event="backup">数据备份</span><span class="layui-btn layui-btn-sm" lay-event="optimize"></span><span class="layui-btn layui-btn-danger layui-btn-sm" lay-event="repair"></span>
</div>
<span id="dataTips" style="font-size:12px; margin-left:10px"></span>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table,
form = layui.form;
var tableIns = table.render({
elem: '#backup',
title: '数据备份',
toolbar: '#toolbarDemo',
url: "/admin/database/database", //数据接口
page: false,
defaultToolbar: false,
cols: [
[ //表头
{ type: 'checkbox' },
{
field: 'name',
title: '数据表',
width: 220
},
{
field: 'status',
title: '状态',
width: 120,
templet: function (d) {
return '<span id="table_' + d.name + '">-</span>';
}
},
{
field: 'engine',
title: '存储引擎',
align: 'center',
width: 90
}, {
field: 'row_format',
title: '行格式',
align: 'center',
width: 90
}, {
field: 'rows',
title: '行数',
align: 'center',
width: 100,
}, {
field: 'data_size',
title: '字节数',
align: 'center',
width: 120
}, {
field: 'data_length',
title: '数据大小',
align: 'center',
width: 120
}, {
field: 'comment',
title: '数据表注释'
}, {
field: 'create_time',
title: '创建时间',
width: 160,
align: 'center'
}
]
],
done: function (res, curr, count) {
$('#dataTips').html(res.msg);
}
});
//递归备份表
function backup(tab, status, table) {
layer.closeAll();
layer.msg("备份中...,请勿关闭本页面", { time: 200000 });
$.get("/admin/database/backup", tab, function (data) {
// console.log(data)
if (data.code == 0) {
showmsg(data.data.tab.table, data.msg);
if (data.data.tab.start == 'ok') {
layer.msg('备份完成');
window.onbeforeunload = function () { return null }
return;
}
backup(data.data.tab, tab.id != data.data.tab.id);
} else {
layer.msg('立即备份');
}
}, "json");
}
//修改备份状态
function showmsg(table, msg) {
console.log(table);
$("#table_" + table).addClass('span-color-2').html(msg);
}
//监听行工具事件
table.on('toolbar(test)', function (obj) {
var checkData = table.checkStatus(obj.config.id).data;
var len = checkData.length;
var tables = [];
if (len == 0) {
layer.msg('请先选择表');
return false;
}
for (var i = 0; i < len; i++) {
tables.push(checkData[i].name);
}
if (obj.event === 'backup') {
layer.confirm('确认要备份选中的' + len + '个数据表吗?', {
icon: 3,
title: '提示'
}, function (index) {
$.ajax({
url: "/admin/database/backup",
type: 'post',
data: { 'tables': tables },
success: function (res) {
if (res.code == 0) {
layer.msg("开始备份,请不要关闭本页面!");
window.onbeforeunload = function () { return "正在备份数据库,请不要关闭!" }
backup(res.data.tab);
}
if (res.code == 2) {
layer.confirm('检测到有一个备份任务未完成,请先清除未完成的备份', {
icon: 3,
title: '提示'
}, function (index) {
$.ajax({
url: "/admin/database/del",
data: { 'lock': 1 },
success: function (res) {
layer.msg(res.msg);
}
})
})
}
else {
layer.msg(res.msg);
}
}
})
layer.close(index);
});
} else if (obj.event === 'optimize') {
layer.confirm('确认要优化选中的' + len + '个数据表吗?', {
icon: 3,
title: '提示'
}, function (index) {
$.ajax({
url: "/admin/database/optimize",
data: { 'tables': tables },
success: function (res) {
layer.msg(res.msg);
if (res.code == 0) {
setTimeout(function () {
location.reload();
}, 2000)
}
}
})
layer.close(index);
});
} else if (obj.event === 'repair') {
layer.confirm('确认要修复选中的' + len + '个数据表吗?', {
icon: 3,
title: '提示'
}, function (index) {
$.ajax({
url: "/admin/database/repair",
data: { 'tables': tables },
success: function (res) {
layer.msg(res.msg);
if (res.code == 0) {
setTimeout(function () {
location.reload();
}, 2000)
}
}
})
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+86
View File
@@ -0,0 +1,86 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">部门架构</h3>
{eq name="$id" value="0"}
<table class="layui-table">
<tr>
<td class="layui-td-gray-2">部门名称<font>*</font></td>
<td>
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入部门名称" lay-reqText="请输入部门名称" class="layui-input">
</td>
<td class="layui-td-gray-2">上级部门<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择上级部门">
<option value="0">作为顶级部门</option>
{volist name="department" id="v"}
<option value="{$v.id}" {eq name="$pid" value="$v.id"} selected{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">部门联系电话</td>
<td colspan="3">
<input type="text" name="phone" placeholder="请输入部门联系电话,可空" autocomplete="off" class="layui-input">
</td>
</tr>
</table>
{else/}
<table class="layui-table">
<tr>
<td class="layui-td-gray-2">部门名称<font>*</font></td>
<td>
<input type="text" name="title" value="{$detail.title}" lay-verify="required" autocomplete="off" placeholder="请输入部门名称" lay-reqText="请输入部门名称" class="layui-input">
</td>
<td class="layui-td-gray-2">上级部门<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择上级部门">
<option value="0">作为顶级部门</option>
{volist name="department" id="v"}
<option value="{$v.id}" {eq name="$detail.pid" value="$v.id"} selected{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">部门负责人</td>
<td>
<select name="leader_id">
<option value="0">请选择部门负责人</option>
{volist name="users" id="v"}
<option value="{$v.id}" {eq name="detail.leader_id" value="$v.id"} selected{/eq}>{$v.name}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray-2">部门联系电话</td>
<td>
<input type="text" name="phone" value="{$detail.phone}" placeholder="请输入部门联系电话,可空" autocomplete="off" class="layui-input">
</td>
</tr>
</table>
{/eq}
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function(data){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
location.reload();
}
}
tool.post("/admin/department/add",data.field,callback);
return false;
});
}
</script>
+93
View File
@@ -0,0 +1,93 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>部门架构</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-menu">+ 添加部门</button>
</div>
<div>
<table class="layui-hide" id="treeTable" lay-filter="treeTable"></table>
</div>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','treeGrid'];
function gouguInit() {
var treeGrid = layui.treeGrid,
layer = layui.layer,
tool = layui.tool,
ptable = treeGrid.render({
id: 'treeTable'
, elem: '#treeTable'
, idField: 'id'
, url: "/admin/department/index"
, method :"get"
, cellMinWidth: 80
, treeId: 'id'//树形id字段名称
, treeUpId: 'pid'//树形父id字段名称
, treeShowName: 'title'//以树形式显示的字段
, height: 'full-0'
,isOpenDefault:true
,heightRemove:[".dHead",24]//不计算的高度,表格设定的是固定高度,此项不生效
, cols: [[
{ field: 'id', width: 100, title: 'ID号', align: 'center' }
, { field: 'pid', title: '上级部门ID',width: 120, align: 'center'}
, { field: 'title', title: '部门名称'}
, { field: 'leader', title: '部门负责人',width: 120, align: 'center'}
, { field: 'phone', title: '部门电话',width: 160,}
, { width:180, title: '操作', align: 'center', templet: function (d) {
var html = '<span class="layui-btn-group"><button class="layui-btn layui-btn-xs" lay-event="add">添加下级部门</button><button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></span>';
return html;
}
}
]]
, page: false
});
//表头工具栏事件
$('.main-page-content').on('click','.add-menu', function(){
tool.open('/admin/department/add');
return;
});
//操作按钮
treeGrid.on('tool(treeTable)', function (obj) {
if (obj.event === 'add') {
tool.open('/admin/department/add?pid='+obj.data.id);
return;
}
if (obj.event === 'edit') {
tool.open('/admin/department/add?id='+obj.data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/department/delete",{ id: obj.data.id },callback);
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+81
View File
@@ -0,0 +1,81 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">知识分类</h3>
{eq name="$id" value="0"}
<table class="layui-table">
<tr>
<td class="layui-td-gray">父级分类<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择父级分类">
<option value="0">作为顶级分类</option>
{volist name="$cates" id="v"}
<option value="{$v.id}" {eq name="$pid" value="$v.id"}selected=""{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">分类名称<font>*</font></td>
<td>
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入分类名称" lay-reqText="请输入分类名称" class="layui-input">
</td>
<td class="layui-td-gray">排序</td>
<td>
<input type="text" name="sort" placeholder="请输入排序,数字" value="0" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">描述</td>
<td colspan="5"><textarea name="desc" placeholder="请输入描述,可空" class="layui-textarea"></textarea></td>
</tr>
</table>
{else/}
<table class="layui-table">
<tr>
<td class="layui-td-gray">父级分类<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择父级分类">
<option value="0">作为顶级分类</option>
{volist name="$cates" id="v"}
<option value="{$v.id}" {eq name="$detail.pid" value="$v.id"}selected=""{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">分类名称<font>*</font></td>
<td>
<input type="text" name="title" value="{$detail.title}" lay-verify="required" autocomplete="off" placeholder="请输入分类名称" lay-reqText="请输入分类名称" class="layui-input">
</td>
<td class="layui-td-gray">排序</td>
<td>
<input type="text" name="sort" value="{$detail.sort}" placeholder="请输入排序,数字" value="0" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">描述</td>
<td colspan="5"><textarea name="desc" placeholder="请输入描述,可空" class="layui-textarea">{$detail.desc}</textarea></td>
</tr>
</table>
{/eq}
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function(data){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
location.reload();
}
}
tool.post("/admin/kcate/add",data.field,callback);
return false;
});
}
</script>
+95
View File
@@ -0,0 +1,95 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>知识类型</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-menu">+ 添加分类</button>
</div>
<div>
<table class="layui-hide" id="treeTable" lay-filter="treeTable"></table>
</div>
</div>
</div>
<script type="text/html" id="switchStatus">
<input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="status" {{ d.status == 1 ? 'checked' : '' }}>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','treeGrid'];
function gouguInit() {
var treeGrid = layui.treeGrid,
layer = layui.layer,
tool = layui.tool,
ptable = treeGrid.render({
id:'treeTable'
,elem: '#treeTable'
,idField:'id'
,url: "/admin/kcate/index"
,method :"get"
,cellMinWidth: 100
,treeId:'id'//树形id字段名称
,treeUpId:'pid'//树形父id字段名称
,treeShowName:'title'//以树形式显示的字段
,heightRemove:[".dHead",24]//不计算的高度,表格设定的是固定高度,此项不生效
,cols: [[
{field:'id',width:80, title: 'ID号', align:'center'}
,{field: 'sort', title: '排序',align:'center', width:80}
,{field:'title', edit:'text',width:240, title: '分类名称'}
,{field:'pid', title: '父级ID', width:80, align:'center'}
,{field:'desc', title: '描述', }
,{width:160,title: '操作', align:'center',templet: function(d){
var html = '<span class="layui-btn-group"><button class="layui-btn layui-btn-xs" lay-event="add">添加子分类</button><button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></span>';
return html;
}
}
]]
,page:false
//,skin:'line'
});
//表头工具栏事件
$('.add-menu').on('click', function(){
tool.open('/admin/kcate/add','900px');
return;
});
//操作按钮
treeGrid.on('tool(treeTable)', function (obj) {
if (obj.event === 'add') {
tool.open('/admin/kcate/add?pid='+obj.data.id);
return;
}
if (obj.event === 'edit') {
tool.open('/admin/kcate/add?id='+obj.data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/kcate/delete",{ id: obj.data.id },callback);
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+95
View File
@@ -0,0 +1,95 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>知识类型</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-menu">+ 添加分类</button>
</div>
<div>
<table class="layui-hide" id="treeTable" lay-filter="treeTable"></table>
</div>
</div>
</div>
<script type="text/html" id="switchStatus">
<input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="status" {{ d.status == 1 ? 'checked' : '' }}>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','treeGrid'];
function gouguInit() {
var treeGrid = layui.treeGrid,
layer = layui.layer,
tool = layui.tool,
ptable = treeGrid.render({
id:'treeTable'
,elem: '#treeTable'
,idField:'id'
,url: "/admin/kcate/index"
,method :"get"
,cellMinWidth: 100
,treeId:'id'//树形id字段名称
,treeUpId:'pid'//树形父id字段名称
,treeShowName:'title'//以树形式显示的字段
,heightRemove:[".dHead",24]//不计算的高度,表格设定的是固定高度,此项不生效
,cols: [[
{field:'id',width:80, title: 'ID号', align:'center'}
,{field: 'sort', title: '排序',align:'center', width:80}
,{field:'title', edit:'text',width:240, title: '分类名称'}
,{field:'pid', title: '父级ID', width:80, align:'center'}
,{field:'desc', title: '描述', }
,{width:160,title: '操作', align:'center',templet: function(d){
var html = '<span class="layui-btn-group"><button class="layui-btn layui-btn-xs" lay-event="add">添加子分类</button><button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></span>';
return html;
}
}
]]
,page:false
//,skin:'line'
});
//表头工具栏事件
$('.add-menu').on('click', function(){
tool.open('/admin/kcate/add','900px');
return;
});
//操作按钮
treeGrid.on('tool(treeTable)', function (obj) {
if (obj.event === 'add') {
tool.open('/admin/kcate/add?pid='+obj.data.id);
return;
}
if (obj.event === 'edit') {
tool.open('/admin/kcate/add?id='+obj.data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/kcate/delete",{ id: obj.data.id },callback);
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+108
View File
@@ -0,0 +1,108 @@
{extend name="../../base/view/common/base"/}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>操作日志</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<form class="layui-form layui-form-bar">
<div class="layui-input-inline" style="width:300px;">
<input type="text" name="keywords" placeholder="昵称/操作节点名称/操作数据ID" class="layui-input" autocomplete="off" />
</div>
<div class="layui-input-inline">
<select name="action">
<option value="">请选择类型</option>
{volist name="$type_action" id="vo"}
<option value="{$vo}">{$vo}</option>
{/volist}
</select>
</div>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交搜索</button>
</form>
<div style="width:100%;">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table,
form = layui.form;
layui.pageTable = table.render({
elem: '#test',
title: '操作日志列表',
url: "/admin/log/index", //数据接口
page: true, //开启分页
limit: 20,
height: 'full-112',
cols: [
[ //表头
{
field: 'id',
title: 'ID号',
align: 'center',
width: 90
}, {
field: 'action',
title: '操作',
align: 'center',
width: 80
}, {
field: 'content',
title: '操作描述'
}, {
field: 'param_id',
title: '操作数据ID',
align: 'center',
width: 100
},{
field: 'name',
title: '操作用户',
align: 'center',
width: 100
}, {
field: 'ip',
title: 'IP地址',
align: 'center',
width: 150
}, {
field: 'create_time',
title: '操作时间',
fixed: 'right',
align: 'center',
width: 160
}
]
]
});
//监听搜索提交
form.on('submit(webform)', function (data) {
layui.pageTable.reload({
where: {
keywords: data.field.keywords,
action: data.field.action
},
page: {
curr: 1
}
});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+72
View File
@@ -0,0 +1,72 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">公告分类</h3>
{eq name="$id" value="0"}
<table class="layui-table">
<tr>
<td class="layui-td-gray">父级分类<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择父级分类">
<option value="0">作为顶级分类</option>
{volist name="$cates" id="v"}
<option value="{$v.id}" {eq name="$pid" value="$v.id"}selected=""{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">分类名称<font>*</font></td>
<td>
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入分类名称" lay-reqText="请输入分类名称" class="layui-input">
</td>
<td class="layui-td-gray">排序</td>
<td>
<input type="text" name="sort" placeholder="请输入排序,数字" value="0" autocomplete="off" class="layui-input">
</td>
</tr>
</table>
{else/}
<table class="layui-table">
<tr>
<td class="layui-td-gray">父级分类<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择父级分类">
<option value="0">作为顶级分类</option>
{volist name="$cates" id="v"}
<option value="{$v.id}" {eq name="$detail.pid" value="$v.id"}selected=""{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">分类名称<font>*</font></td>
<td>
<input type="text" name="title" value="{$detail.title}" lay-verify="required" autocomplete="off" placeholder="请输入分类名称" lay-reqText="请输入分类名称" class="layui-input">
</td>
<td class="layui-td-gray">排序</td>
<td>
<input type="text" name="sort" value="{$detail.sort}" placeholder="请输入排序,数字" autocomplete="off" class="layui-input">
</td>
</tr>
</table>
{/eq}
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
location.reload();
}
}
tool.post("/admin/ncate/add",data.field,callback);
return false;
});
}
</script>
+96
View File
@@ -0,0 +1,96 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>公告类型</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-menu">+ 添加分类</button>
</div>
<div>
<table class="layui-hide" id="treeTable" lay-filter="treeTable"></table>
</div>
</div>
</div>
<script type="text/html" id="switchStatus">
<input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="status" {{ d.status == 1 ? 'checked' : '' }}>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','treeGrid'];
function gouguInit() {
var treeGrid = layui.treeGrid,
layer = layui.layer,
tool = layui.tool,
ptable = treeGrid.render({
id:'treeTable'
,elem: '#treeTable'
,idField:'id'
,url: "/admin/ncate/index"
,method :"get"
,cellMinWidth: 100
,treeId:'id'//树形id字段名称
,treeUpId:'pid'//树形父id字段名称
,treeShowName:'title'//以树形式显示的字段
,isOpenDefault:true
,heightRemove:[".dHead",24]//不计算的高度,表格设定的是固定高度,此项不生效
,cols: [[
{field:'id',width:80, title: 'ID号', align:'center'}
,{field: 'sort', title: '排序', align:'center', style:'cursor: pointer;', width:80}
,{field:'title', title: '分类名称'}
,{field:'pid', title: '父级ID', width:80, align:'center'}
,{width:160,title: '操作', align:'center',templet: function(d){
var html = '<span class="layui-btn-group"><button class="layui-btn layui-btn-xs" lay-event="add">添加子分类</button><button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></span>';
return html;
}
}
]]
,page:false
//,skin:'line'
});
//表头工具栏事件
$('.add-menu').on('click', function(){
tool.open('/admin/ncate/add');
return;
});
//操作按钮
treeGrid.on('tool(treeTable)', function (obj) {
if (obj.event === 'add') {
tool.open('/admin/ncate/add?pid='+obj.data.id);
return;
}
if (obj.event === 'edit') {
tool.open('/admin/ncate/add?id='+obj.data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/ncate/delete",{ id: obj.data.id },callback);
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+113
View File
@@ -0,0 +1,113 @@
<form class="layui-form page-content p-4">
{eq name="$id" value="0"}
<h3 class="h3-title">新增公告</h3>
{else/}
<h3 class="h3-title">编辑公告</h3>
{/eq}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">公告标题<font>*</font></td>
<td>
<input type="text" name="title" lay-verify="required" lay-reqText="请输入公告标题" placeholder="请输入公告标题" class="layui-input"
{notempty name="$note.title" }value="{$note.title}" {/notempty}>
</td>
<td class="layui-td-gray">公告分类<span style="color: red">*</span></td>
<td>
<select name="cate_id" lay-verify="required" lay-reqText="请选择分类">
<option value="">请选择分类</option>
{notempty name="$note.cate_id"}
{volist name=":set_recursion(admin_note_cate())" id="v"}
<option value="{$v.id}" {eq name="$note.cate_id" value="$v.id" }selected{/eq}>{$v.title}</option>
{/volist}
{else/}
{volist name=":set_recursion(admin_note_cate())" id="v"}
<option value="{$v.id}">{$v.title}</option>
{/volist}
{/notempty}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">展示期间<span style="color: red">*</span></td>
<td id="date">
<div class="layui-input-inline">
<input type="text" id="start_time" name="start_time" readonly lay-verify="required" lay-reqText="请选择公告展示开始时间" placeholder="请选择时间" class="layui-input" {notempty name="$note.start_time" }value="{$note.start_time | date='Y-m-d'}" {/notempty}>
</div>
-
<div class="layui-input-inline">
<input type="text" id="end_time" name="end_time" readonly lay-verify="required" lay-reqText="请选择公告展示结束时间" placeholder="请选择时间" class="layui-input" {notempty name="$note.end_time" }value="{$note.end_time | date='Y-m-d'}" {/notempty}>
</div>
</td>
<td class="layui-td-gray">排序</td>
<td>
<input type="text" name="sort" placeholder="请输入排序,数字" class="layui-input" {notempty
name="$note.sort" }value="{$note.sort}" {/notempty}>
</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top; text-align:left;" colspan="4">公告内容<span style="color: red">*</span></td>
</tr>
<tr>
<td colspan="4">
<div style="margin-top:-2px; margin-right:2px">
<textarea id="mdContent" style="display:none;">{notempty name="$note.md_content" }{$note.md_content|raw}{/notempty}</textarea>
<div id="docContent"></div>
</div>
</td>
<tr>
<td class="layui-td-gray">关联链接</td>
<td colspan="3">
<input type="text" name="src" placeholder="请输入链接" class="layui-input" {notempty
name="$note.src" }value="{$note.src}" {/notempty}>
</td>
</tr>
</table>
<div class="pt-3">
<input type="hidden" name="id" value="{$id}" />
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool,
editor = layui.editormd,
laydate = layui.laydate;
form.render();
var edit = editor.render('docContent', {
markdown: $('#mdContent').val(),
imageUploadURL: "/api/index/md_upload",
lineNumbers: false,
toolbarIcons: function () {
return [
"undo", "redo","bold", "del", "italic", "quote","h1", "h2", "h3", "h4", "h5",
"list-ul", "list-ol", "hr","link", "reference-link", "image", "code", "code-block", "table","watch", "fullscreen"
];
},
height:window.innerHeight - 350
});
//日期范围
laydate.render({
elem: '#date',
range: ['#start_time', '#end_time']
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/note/add",data.field,callback);
return false;
});
}
</script>
+121
View File
@@ -0,0 +1,121 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>企业公告</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add">+ 添加公告</button>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">查看</span><span class="layui-btn layui-btn-xs" lay-event="edit"></span><span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"></span></div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','editormd'];
function gouguInit() {
var table = layui.table,
tool = layui.tool,
form = layui.form;
layui.pageTable = table.render({
elem: '#test',
title: '公告列表',
url: "/admin/note/index", //数据接口
page: true, //开启分页
limit: 20,
height: 'full-104',
cols: [
[
{
field: 'id',
title: '编号ID',
align: 'center',
width: 80,
templet: function (d) {
var html = 'N' + d.id;
return html;
}
}, {
field: 'sort',
title: '排序',
align: 'center',
width: 80
}, {
field: 'cate_title',
title: '公告分类',
align: 'center',
width: 100
}, {
field: 'title',
title: '公告标题'
}, {
field: 'cate_title',
title: '公告展示期间',
align: 'center',
width: 200,
templet: function (d) {
var html = d.start_time + ' ~ ' + d.end_time;
return html;
}
}, {
field: 'right',
title: '操作',
toolbar: '#barDemo',
width: 136,
align: 'center'
}
]
]
});
//表头工具栏事件
$('.add').on('click', function () {
tool.open('/admin/note/add');
});
//监听行工具事件
table.on('tool(test)', function (obj) {
var data = obj.data;
if (obj.event === 'view') {
tool.open('/admin/note/view?id=' + data.id);
return;
}
if (obj.event === 'edit') {
tool.open('/admin/note/add?id=' + data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定删除该公告吗?', {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/note/delete", { id: obj.data.id }, callback);
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+33
View File
@@ -0,0 +1,33 @@
<div class="page-content p-4">
<h3 class="h3-title">公告详情</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">公告标题</td>
<td colspan="3">{$note.title}</td>
<td class="layui-td-gray">公告分类</td>
<td>
{volist name=":set_recursion(get_note_cate())" id="v"}
{eq name="$note.cate_id" value="$v.id" }{$v.title}{/eq}
{/volist}
</td>
</tr>
<tr>
<td class="layui-td-gray">展示期间</td>
<td>{$note.start_time | date='Y-m-d'} - {$note.end_time | date='Y-m-d'}</td>
<td class="layui-td-gray">关联链接</td>
<td>{$note.src}</td>
<td class="layui-td-gray">排序</td>
<td>{$note.sort}</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top;">公告内容</td>
<td colspan="5"><div class="md-content-content">{$note.content|raw}</div></td>
</tr>
</table>
</div>
<script>
function openInit(layui) {
}
</script>
+98
View File
@@ -0,0 +1,98 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">岗位职称</h3>
{if condition="$id eq 0"}
<table class="layui-table">
<tr>
<td class="layui-td-gray">岗位名称<font>*</font></td>
<td>
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入岗位名称" lay-reqText="请输入岗位名称" class="layui-input">
</td>
<td class="layui-td-gray-3">岗位工时单价(元)<font>*</font></td>
<td>
<input type="text" name="work_price" lay-verify="required|number" placeholder="请输入岗位工时单价" lay-reqText="请输入岗位工时单价" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">状态<font>*</font></td>
<td colspan="3">
<input type="radio" name="status" value="1" title="正常" checked>
<input type="radio" name="status" value="0" title="禁用">
</td>
</tr>
<tr>
<td class="layui-td-gray">权限角色<font>*</font></td>
<td colspan="3">
{volist name="$group" id="v"}
<input type="checkbox" name="group_id[]" title="{$v.title}" value="{$v.id}" lay-skin="primary">
{/volist}
</td>
</tr>
<tr>
<td class="layui-td-gray">岗位备注</td>
<td colspan="3">
<textarea name="remark" placeholder="请输入岗位备注" class="layui-textarea"></textarea>
</td>
</tr>
</table>
{else/}
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">岗位名称<font>*</font></td>
<td>
<input type="text" name="title" value="{$detail.title}" lay-verify="required" autocomplete="off" placeholder="请输入岗位名称" lay-reqText="请输入岗位名称" class="layui-input">
</td>
<td class="layui-td-gray-3">岗位工时单价(元)<font>*</font></td>
<td>
<input type="text" name="work_price" value="{$detail.work_price}" lay-verify="required|number" placeholder="请输入岗位工时单价" lay-reqText="请输入岗位工时单价" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">状态<font>*</font></td>
<td colspan="3">
<input type="radio" name="status" value="1" title="正常" {eq name="$detail.status" value="1"}checked{/eq}>
<input type="radio" name="status" value="0" title="禁止" {eq name="$detail.status" value="0"}checked{/eq}>
</td>
</tr>
<tr>
<td class="layui-td-gray">权限角色<font>*</font></td>
<td colspan="3">
{volist name="$group" id="v"}
<input type="checkbox" name="group_id[]" title="{$v.title}" value="{$v.id}" {eq name="$v.checked" value="1" }checked{/eq} lay-skin="primary">
{/volist}
</td>
</tr>
<tr>
<td class="layui-td-gray">岗位备注</td>
<td colspan="3">
<textarea name="remark" placeholder="请输入岗位备注" class="layui-textarea">{$detail.remark}</textarea>
</td>
</tr>
</table>
{/if}
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/position/add",data.field,callback);
return false;
});
}
</script>
+122
View File
@@ -0,0 +1,122 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>岗位职称</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add">+ 添加岗位</button>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="status">
<i class="layui-icon {{# if(d.status == 1){ }}layui-icon-ok{{# } else { }}layui-icon-close{{# } }}"></i>
</script>
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><button class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">详情</button><button class="layui-btn layui-btn-xs" lay-event="edit"></button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"></button></div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var layer = layui.layer,
tool = layui.tool,
table = layui.table;
layui.pageTable = table.render({
elem: '#test',
title: '岗位列表',
url: "/admin/position/index", //数据接口
page: false, //开启分页
cols: [
[
{
field: 'id',
title: 'ID号',
align: 'center',
width: 80
}, {
field: 'title',
title: '岗位名称',
align: 'center',
width: 120
}, {
field: 'groupName',
title: '权限角色',
width: 200
}, {
field: 'remark',
title: '备注'
}, {
field: 'work_price',
title: '岗位工时单价(元)',
align: 'center',
width: 132
}, {
field: 'status',
title: '状态',
toolbar: '#status',
align: 'center',
width: 60
}, {
field: 'right',
title: '操作',
toolbar: '#barDemo',
width: 132,
align: 'center'
}
]
]
});
//表头工具栏事件
$('.add').on('click', function () {
tool.open('/admin/position/add');
});
//监听行工具事件
table.on('tool(test)', function (obj) {
var data = obj.data;
if (obj.event === 'view') {
tool.open('/admin/position/view?id=' + data.id);
return;
}
if (obj.event === 'edit') {
tool.open('/admin/position/add?id=' + data.id);
return;
}
if (obj.event === 'del') {
if (data.id == 1) {
layer.msg('超级岗位不能删除');
return;
}
layer.confirm('您确定要删除该岗位', {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/position/delete", { id: obj.data.id }, callback);
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+80
View File
@@ -0,0 +1,80 @@
<style>
.left-note{font-weight:800; vertical-align:top; padding-top:28px!important; text-align:center}
.left-note .layui-form-checkbox span{background-color: #bbbbbb!important;}
.left-note .layui-form-checkbox:hover span{background-color: #808080;}
.layui-form-checked.layui-checkbox-disabled i{background-color:#ababab!important;color: #ffffff!important;border-color:#ababab!important;}
.layui-form-checked.layui-checkbox-disabled[lay-skin=primary] i{background-color:#ababab!important;}
.right-note .layui-checkbox-disabled span {color: #808080!important;}
</style>
<form class="layui-form page-content p-4">
<h3 class="h3-title">岗位信息</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">岗位名称</td>
<td>
{$detail.title}
</td>
<td class="layui-td-gray-2">岗位工时单价</td>
<td>
{$detail.work_price}
</td>
<td class="layui-td-gray">状态</td>
<td>
{eq name="$detail.status" value="1" }正常{/eq}
{eq name="$detail.status" value="0" }禁止登录{/eq}
</td>
</tr>
<tr>
<td class="layui-td-gray">用户角色</td>
<td colspan="5">
{volist name="$group" id="v"}
{eq name="$v.checked" value="1" }{$v.title},{/eq}
{/volist}
</td>
</tr>
<tr>
<td class="layui-td-gray">岗位备注</td>
<td colspan="5">
{$detail.remark}
</td>
</tr>
</table>
<h3 class="h3-title" style="padding-top:15px;">岗位权限</h3>
<table class="layui-table layui-table-form">
{volist name="role_rule" id="vo"}
<tr>
<td style="font-weight:800; text-align:center;">
<input type="checkbox" disabled value="{$vo.id}" title="{$vo.title}" {eq name="$vo.checked" value="true" }checked{/eq}>
</td>
{notempty name="vo.children"}
<td>
<div style="padding:0 0 0 10px;">
{volist name="vo.children" key="k" id="voo"}
<div class="checkbox16" style="padding:10px 0;">
<input type="checkbox" disabled lay-filter="rule" name="rule[]" value="{$voo.id}" lay-skin="primary" title="{$voo.title}" {eq name="$voo.checked" value="true" }checked{/eq}>
</div>
{notempty name="voo.children"}
<div style="padding:0 0 3px; {if condition='$k != count($vo.children)'}margin-bottom:3px; padding-bottom:16px; border-bottom:1px solid #eee;{/if}">
{volist name="voo.children" id="vooo"}
<div class="layui-input-inline" style="margin-right:10px;">
<input type="checkbox" disabled data-rule="{$voo.id}" name="rule[]" value="{$vooo.id}" lay-skin="primary" title="{$vooo.title}" {eq name="$vooo.checked" value="true" }checked{/eq}>
</div>
{/volist}
</div>
{/notempty}
{/volist}
</div>
</td>
{/notempty}
</tr>
{/volist}
</table>
</form>
<script>
function openInit() {
var form = layui.form;
form.render();
}
</script>
+143
View File
@@ -0,0 +1,143 @@
<style>
.left-note{font-weight:800; vertical-align:top; padding-top:28px!important; text-align:center}
.left-note .layui-form-checkbox span{background-color: #969696;}
.left-note .layui-form-checkbox:hover span{background-color: #808080;}
.left-note .layui-form-checked span, .left-note .layui-form-checked:hover span { background-color: #5fb878;}
.checkbox14 .layui-form-checkbox span{font-size:15px;font-weight:800;}
.right-note .layui-checkbox-disabled span {color: #666666!important;}
</style>
<form class="layui-form page-content p-4">
<h3 class="h3-title">权限角色</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">角色名称<font>*</font>
</td>
<td>
<input class="layui-input" type="text" name="title" lay-verify="required" lay-reqText="请输入角色名称" {notempty name="$role.title"
}value="{$role.title}" {/notempty} placeholder="请输入角色名称" autocomplete="off" />
</td>
<td class="layui-td-gray">状态<font>*</font>
</td>
<td>
{if condition="$id eq 0"}
<input type="radio" name="status" value="1" title="正常" checked>
<input type="radio" name="status" value="-1" title="禁用">
{else/}
<input type="radio" name="status" value="1" title="正常" {eq name="$role.status" value="1" }checked{/eq}>
<input type="radio" name="status" value="-1" title="禁用" {eq name="$role.status" value="-1" }checked{/eq}>
{/if}
</td>
</tr>
<tr>
<td class="layui-td-gray-2">权限配置说明<font>*</font></td>
<td colspan="3"><strong class="red">注意:如果右侧子级权限有节点被勾选了,左侧的顶级权限就必须勾选,否则无法查看右侧的子级菜单。</strong></td>
</tr>
<tr>
<td colspan="4">
<table style="width:100%" id="rule">
<tr>
<td style="text-align:center; background-color:#f8f8f8; width:160px;">选择可操作的顶级权限 <font style="color:red"></font></td>
<td style="text-align:left; background-color:#f8f8f8;">选择可操作的子级权限 <font style="color:red"></font></td>
</tr>
{volist name="role_rule" id="vo"}
<tr>
<td class="left-note">
<input type="checkbox" name="rule[]" value="{$vo.id}" title="{$vo.title}" class="aaa" {eq name="$vo.checked" value="true" }checked{/eq}>
</td>
{notempty name="vo.children"}
<td class="right-note">
<div style="padding:0 0 0 10px;">
{volist name="vo.children" key="k" id="voo"}
<div class="checkbox15" style="padding:10px 0;">
<input type="checkbox" lay-filter="rule" name="rule[]" value="{$voo.id}" lay-skin="primary" title="{$voo.title}" {eq name="$voo.checked" value="true" }checked{/eq}>
</div>
{notempty name="voo.children"}
<div style="padding:0 0 3px; {if condition='$k != count($vo.children)'}margin-bottom:3px; padding-bottom:16px; border-bottom:1px solid #eee;{/if}">
{volist name="voo.children" id="vooo"}
<div class="layui-input-inline" style="margin-right:10px;">
<input type="checkbox" data-rule="{$voo.id}" name="rule[]" value="{$vooo.id}" lay-skin="primary" title="{$vooo.title}" {eq name="$vooo.checked" value="true" }checked{/eq}>
</div>
{notempty name="vooo.children"}
<div style="padding:0 0 3px; {if condition='$k != count($vo.children)'}margin-bottom:3px; padding-bottom:16px; border-bottom:1px solid #eee;{/if}">
{volist name="vooo.children" id="voooo"}
<div class="layui-input-inline" style="margin-right:10px;">
<input type="checkbox" data-rule="{$vooo.id}" name="rule[]" value="{$voooo.id}" lay-skin="primary" title="{$voooo.title}" {eq name="$voooo.checked" value="true" }checked{/eq}>
</div>
{/volist}
</div>
{/notempty}
{/volist}
</div>
{/notempty}
{/volist}
</div>
</td>
{/notempty}
</tr>
{/volist}
</table>
</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align: top;">备注内容
</td>
<td colspan="3">
<textarea name="desc" placeholder="请输入备注" class="layui-textarea">{notempty name="$role.desc" }{$role.desc}{/notempty}</textarea>
</td>
</tr>
</table>
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}" />
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
setTimeout(function(){
tool.close();
},500);
}
}
tool.post("/admin/role/add",data.field,callback);
return false;
});
//监听多选框点击事件 通过 lay-filter="menu"来监听
form.on('checkbox(menu)', function (data) {
  let val = data.value;
if(data.elem.checked){
//判断当前多选框是选中还是取消选中
$("input[data-menu='"+val+"']").prop("checked", true);//true:选中 false:不选中
}
else{
$("input[data-menu='"+val+"']").prop("checked", false);
}
form.render();//实时渲染选中和不选中的样式
});
//监听多选框点击事件 通过 lay-filter="rule"来监听
form.on('checkbox(rule)', function (data) {
  let val = data.value;
if(data.elem.checked){
//判断当前多选框是选中还是取消选中
$("input[data-rule='"+val+"']").prop("checked", true);//true:选中 false:不选中
}
else{
$("input[data-rule='"+val+"']").prop("checked", false);
}
form.render();//实时渲染选中和不选中的样式
});
}
</script>
+104
View File
@@ -0,0 +1,104 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>权限角色</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<form class="layui-form layui-form-bar">
<div class="layui-input-inline" style="width:300px;">
<input type="text" name="keywords" placeholder="名称/备注" class="layui-input" autocomplete="off" />
</div>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交搜索</button>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="status">
<i class="layui-icon {{# if(d.status == 1){ }}layui-icon-ok{{# } else { }}layui-icon-close{{# } }}"></i>
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="add">+ 添加权限组</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table,
tool = layui.tool;
form = layui.form;
layui.pageTable = table.render({
elem: '#test',
toolbar: '#toolbarDemo',
url: "/admin/role/index", //数据接口
page: true, //开启分页
limit: 20,
defaultToolbar: false,
cols: [[ //表头
{ field: 'id', title: 'ID号', align: 'center', width: 80 }
, { field: 'title', title: '权限组名称', width: 200 }
, { field: 'desc', title: '备注' }
, { field: 'status', title: '状态', toolbar: '#status', align: 'center', width: 80 }
, {
width: 100, title: '操作', align: 'center', templet: function (d) {
var html = '<div class="layui-btn-group"><button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
return html;
}
}
]]
});
//表头工具栏事件
table.on('toolbar(test)', function (obj) {
if (obj.event === "add") {
tool.open("/admin/role/add");
return;
}
});
//监听行工具事件
table.on('tool(test)', function (obj) {
var data = obj.data;
if (obj.event === "edit") {
tool.open("/admin/role/add?id=" + obj.data.id);
return;
}
if (obj.event === 'del') {
layer.confirm("确定要删除该权限角色吗?", { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/role/delete", { id: obj.data.id }, callback);
layer.close(index);
});
}
});
//监听搜索提交
form.on('submit(webform)', function (data) {
layui.pageTable.reload({
where: { keywords: data.field.keywords },
page: { curr: 1 }
});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+121
View File
@@ -0,0 +1,121 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">功能菜单/节点</h3>
{if condition="$id eq 0"}
<table class="layui-table">
<tr>
<td class="layui-td-gray-3">父级菜单/节点<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择父级菜单/节点">
<option value="0">作为顶级菜单/节点</option>
{volist name=":set_recursion(admin_rule())" id="v"}
<option value="{$v.id}" {eq name="pid" value="$v.id" }selected="" {/eq}>{$v.title} </option>
{/volist}
</select>
</td>
<td class="layui-td-gray-3">菜单排序</td>
<td>
<input type="text" name="sort" value="0" placeholder="请输入数字,越小越靠前" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray-3">菜单/节点名称<font>*</font></td>
<td>
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入菜单/节点名称" lay-reqText="请输入菜单/节点名称" class="layui-input">
</td>
<td class="layui-td-gray-3">菜单/节点URL</td>
<td>
<input type="text" name="src" placeholder="请输入菜单/节点URL,可空" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray-3">操作日志名称<font>*</font></td>
<td>
<input type="text" name="name" lay-verify="required" placeholder="请输入操作日志名称" lay-reqText="请输入操作日志名称" autocomplete="off" class="layui-input">
</td>
<td class="layui-td-gray-3">是否左侧菜单<font>*</font></td>
<td>
<input type="radio" name="menu" value="1" title="是">
<input type="radio" name="menu" value="2" title="不是">
</td>
</tr>
<tr>
<td class="layui-td-gray-3">左侧图标</td>
<td colspan="3">
<input type="text" name="icon" style="width:150px; display:inline" placeholder="请输入图标,可空" autocomplete="off" class="layui-input">
如:icon-jichuguanli<a href="{__METE__}/icon/index.html" target="_blank" style="margin-left:10px; color:#007AFF">[查看图标]</a>
</td>
</tr>
</table>
{else/}
<table class="layui-table">
<tr>
<td class="layui-td-gray-3">父级菜单/节点<font>*</font></td>
<td>
<select name="pid" lay-verify="required" lay-reqText="请选择父级菜单/节点">
<option value="0">作为顶级节点</option>
{volist name=":set_recursion(admin_rule())" id="v"}
<option value="{$v.id}" {eq name="$detail.pid" value="$v.id" }selected="" {/eq}>{$v.title} </option>
{/volist}
</select>
</td>
<td class="layui-td-gray-3">菜单排序</td>
<td>
<input type="text" name="sort" value="{$detail.sort}" placeholder="请输入数字,越小越靠前" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray-3">菜单/节点名称<font>*</font></td>
<td>
<input type="text" name="title" value="{$detail.title}" lay-verify="required" autocomplete="off" placeholder="请输入菜单/节点名称" lay-reqText="请输入菜单/节点名称" class="layui-input">
</td>
<td class="layui-td-gray-3">菜单/节点URL</td>
<td>
<input type="text" name="src" value="{$detail.src}" placeholder="请输入菜单/节点URL,可空" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray-3">操作日志名称<font>*</font></td>
<td>
<input type="text" name="name" value="{$detail.name}" lay-verify="required" placeholder="请输入操作日志名称" lay-reqText="请输入操作日志名称" autocomplete="off" class="layui-input">
</td>
<td class="layui-td-gray-3">是否左侧菜单<font>*</font></td>
<td>
<input type="radio" name="menu" value="1" title="是" {eq name="$detail.menu" value="1"} checked{/eq}>
<input type="radio" name="menu" value="2" title="不是" {eq name="$detail.menu" value="2"} checked{/eq}>
</td>
</tr>
<tr>
<td class="layui-td-gray-3">左侧图标</td>
<td colspan="3">
<input style="width:150px; display:inline" type="text" name="icon" value="{$detail.icon}" placeholder="请输入图标,可空" autocomplete="off" class="layui-input">
如:icon-jichuguanli<a href="{__METE__}/icon/index.html" target="_blank" style="margin-left:10px; color:#007AFF">[查看图标]</a>
</td>
</tr>
</table>
{/if}
<div style="padding: 10px 0">
<input type="hidden" name="id" value="{$id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<!-- /主体 -->
<script>
function openInit() {
let form = layui.form,
layer = layui.layer,
tool = layui.tool;
form.render();
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
location.reload();
}
}
tool.post("/admin/rule/add",data.field,callback);
return false;
});
}
</script>
+105
View File
@@ -0,0 +1,105 @@
{extend name="../../base/view/common/base"/}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>菜单节点</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-menu">+ 添加菜单/节点</button>
</div>
<div>
<table class="layui-hide" id="treeTable" lay-filter="treeTable"></table>
</div>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var ptable = null, treeGrid = null,rightpage=null, layer = null, tableId = "treeTable";
const moduleInit = ['tool','treeGrid'];
function gouguInit() {
treeGrid = layui.treeGrid;
tool = layui.tool;
layer = layui.layer;
ptable = treeGrid.render({
id: tableId
, elem: '#' + tableId
, idField: 'id'
, url: "/admin/rule/index"
, method :"get"
, cellMinWidth: 180
, treeId: 'id'//树形id字段名称
, treeUpId: 'pid'//树形父id字段名称
, treeShowName: 'title'//以树形式显示的字段
,heightRemove:[".dHead",24]//不计算的高度,表格设定的是固定高度,此项不生效
,height:'100%'
, cols: [[
{ field: 'id', width: 80, title: 'ID号', align: 'center'}
, { field: 'sort', width: 60, title: '排序',align: 'center'}
,{field:'icon',title: '菜单图标',width: 80, align: 'center' ,templet: function(d){
var html='<strong class="iconfont '+d.icon+'"></strong>';
return html;
}}
, { field: 'title', width: 150, title: '菜单/节点名称'}
, { field: 'pid', title: '父ID', width: 80, align: 'center' }
, { field: 'src', title: 'URL链接'}
, { field: 'menu', width: 90, title: '是否菜单',align: 'center', templet: function (d) {
var html = '<span style="color:#fbbc05">否</span>';
if(d.menu=='1'){
html = '<span style="color:#12bb37">是</span>';
}
return html;
}
}
, {field: 'name', width: 90, title: '日志名称',align: 'center'}
, {width: 200, title: '操作', align: 'center'
, templet: function (d) {
var html = '<span class="layui-btn-group"><button class="layui-btn layui-btn-xs" lay-event="add">添加子菜单/节点</button><button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button><button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></span>';
return html;
}
}
]]
, page: false
});
//表头工具栏事件
$('.add-menu').on('click',function(){
tool.open('/admin/rule/add');
return;
});
//操作按钮
treeGrid.on('tool(' + tableId + ')', function (obj) {
if (obj.event === 'add') {
tool.open('/admin/rule/add?pid='+obj.data.id);
}
if (obj.event === 'edit') {
tool.open('/admin/rule/add?id='+obj.data.id);
}
if (obj.event === 'del') {
layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/rule/delete",{ id: obj.data.id },callback);
layer.close(index);
});
}
return;
});
}
</script>
{/block}
<!-- /脚本 -->
+131
View File
@@ -0,0 +1,131 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a><cite>系统设置</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
<div class="sub-menu" style="width: 200px;">
{include file="../../base/view/common/submenu" /}
<div class="menu-bar">
<div class="menu-bar-content">
<div class="line"></div>
</div>
</div>
</div>
<div class="main-bg-content">
<div class="layui-card">
<div class="table-title">系统信息</div>
<div class="layui-card-body">
<table class="layui-table">
<tr>
<td class="layui-td-gray">系统名称</td>
<td>
{notempty name="$config.admin_title"}{$config.admin_title}{/notempty}
</td>
<td rowspan="3" class="layui-td-gray-2">LOGO</td>
<td rowspan="3" style="width: 240px;">
<div class="layui-upload" style="width: 240px;">
<img src='{notempty name="$config.logo"}{$config.logo}{/notempty}' style="max-width: 100%; width: 100%;" />
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">网站域名</td>
<td>
{notempty name="$config.domain"}{$config.domain}{/notempty}
</td>
</tr>
<tr>
<td class="layui-td-gray">网站名称</td>
<td>
{notempty name="$config.title"}{$config.title}{/notempty}
</td>
</tr>
<tr>
<td class="layui-td-gray">ICP备案号</td>
<td>
{notempty name="$config.icp"}{$config.icp}{/notempty}
</td>
<td class="layui-td-gray">公安备案号</td>
<td>
{notempty name="$config.beian"}{$config.beian}{/notempty}
</td>
</tr>
<tr>
<td class="layui-td-gray">版权信息</td>
<td>
{notempty name="$config.copyright"}{$config.copyright}{/notempty}
</td>
<td class="layui-td-gray">代码版本号
</td>
<td>
{notempty name="$config.version"}{$config.version}{/notempty}
</td>
</tr>
<tr>
<td class="layui-td-gray">简介</td>
<td colspan="3">
{notempty name="$config.desc"}{$config.desc} {/notempty}
</td>
</tr>
</table>
</div>
</div>
<div class="layui-card">
<div class="table-title">服务器信息</div>
<div class="layui-card-body">
<table class="layui-table" lay-skin="" lay-size="sm">
{if condition="($install == true)"}
<tr>
<td colspan="4" style="color: #E94335; background-color:#f5f5f5">提醒:发现app目录下的install文件夹没删除,为了系统的安全,请手动去删除。</td>
</tr>
{/if}
<tr>
<td class="layui-td-gray-2">服务器系统</td>
<td>{:get_system_info('os')}</td>
<td class="layui-td-gray-2">PHP版本</td>
<td>{:get_system_info('php')}</td>
</tr>
<tr>
<td class="layui-td-gray-2">上传限制</td>
<td>{:get_system_info('upload_max_filesize')}</td>
<td class="layui-td-gray-2">执行限制</td>
<td>{:get_system_info('max_execution_time')}</td>
</tr>
<tr>
<td class="layui-td-gray-2">ThinkPHP</td>
<td colspan="3">{$TP_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:10px"
href="https://www.kancloud.cn/manual/thinkphp6_0" target="_blank">TP6文档</a></td>
</tr>
<tr>
<td class="layui-td-gray-2">Layui</td>
<td colspan="3">{:LAYUI_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:10px"
href="https://www.layui.site/doc/" target="_blank">Layui文档</a></td>
</tr>
<tr>
<td class="layui-td-gray-2">江苏美天科技</td>
<td colspan="3">{:CMS_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:10px"
href="https://blog.gougucms.com/home/book/detail/bid/7.html" target="_blank">江苏美天科技文档</a></td>
</tr>
<tr>
<td class="layui-td-gray-2">BUG反馈</td>
<td colspan="3"><a href="mailto:hdm58@qq.com" target="_blank">hdm58@qq.com</a></td>
</tr>
<tr>
<td class="layui-td-gray-2">QQ交流群</td>
<td colspan="3">搜Q群:24641076,或点击 <a href="https://jq.qq.com/?_wv=1027&k=pxshRv6I" target="_blank" rel="nofollow"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="gougucms交流群" title="gougucms交流群" style="vertical-align:middle"></a></td>
</tr>
<tr>
<td class="layui-td-gray-2">同系开源软件</td>
<td colspan="3"><a class="layui-badge layui-bg-blue" style="margin-right:16px" href="https://gitee.com/gougucms/gougucms" target="_blank">勾股CMS</a><a class="layui-badge layui-bg-blue" style="margin-right:16px" href="https://gitee.com/gougucms/blog" target="_blank">勾股BLOG</a><a class="layui-badge layui-bg-blue" style="margin-right:16px" href="https://gitee.com/gougucms/office" target="_blank">勾股OA</a></td>
</tr>
</table>
</div>
</div>
</div>
</div>
{/block}
+133
View File
@@ -0,0 +1,133 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>任务类型</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-new">+ 添加类别</button>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table=layui.table,
tool=layui.tool,
layer=layui.layer;
layui.pageTable = table.render({
elem: '#test'
,title:'任务类型列表'
,url: "/admin/tcate/index"
,method :"get"
,page: false //开启分页
,limit: 20
,cellMinWidth: 200
,cols: [[
{field:'id',width:80, title: 'ID号', align:'center'}
,{field:'title',title: '类别名称'}
,{field:'sort',title: '排序'}
,{field:'status', title: '状态',width:80,align:'center',templet: function(d){
var html1='<span>正常</span>';
var html2='<span style="color:#FF5722">禁用</span>';
if(d.status==1){
return html1;
}
else{
return html2;
}
}}
,{width:100,title: '操作', align:'center',templet: function(d){
var html='';
var btn='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</a>';
var btn1='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="disable">禁用</a>';
var btn2='<a class="layui-btn layui-btn-xs" lay-event="open">启用</a>';
if(d.status==1){
html = '<div class="layui-btn-group">'+btn+btn1+'</div>';
}
else{
html = '<div class="layui-btn-group">'+btn+btn2+'</div>';
}
return html;
}}
]]
});
table.on('tool(test)',function (obj) {
if(obj.event === 'edit'){
addExpense(obj.data.id,obj.data.title);
}
if(obj.event === 'disable'){
layer.confirm('确定要禁用该类别吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/admin/tcate/check",{ id: obj.data.id, status: 0 },callback);
layer.close(index);
});
}
if(obj.event === 'open'){
layer.confirm('确定要启用该类别吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/admin/tcate/check",{ id: obj.data.id, status: 1 },callback);
layer.close(index);
});
}
});
$('.main-page-content').on('click','.add-new',function(){
addExpense(0,'');
});
function addExpense(id,val){
var title = '新增类别';
if(id>0){
title = '编辑类别';
}
layer.prompt({
title: title,
value: val,
yes: function(index, layero) {
// 获取文本框输入的值
var value = layero.find(".layui-layer-input").val();
if (value) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
layer.close(index);
}
tool.post("/admin/tcate/add",{id: id, title: value,},callback);
} else {
layer.msg('请填写类别标题');
}
}
})
}
}
</script>
{/block}
<!-- /脚本 -->
+259
View File
@@ -0,0 +1,259 @@
<form class="layui-form page-content p-4">
{if condition="$id eq 0"}
<h3 class="h3-title">添加员工信息</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">员工姓名<font>*</font>
</td>
<td>
<input type="text" name="name" lay-verify="required" placeholder="请输入员工姓名" lay-reqText="请输入员工姓名"
autocomplete="off" class="layui-input">
</td>
<td class="layui-td-gray">手机号码<font>*</font>
</td>
<td>
<input type="text" name="mobile" lay-verify="required" placeholder="可使用手机号码登录" lay-reqText="请输入手机"
autocomplete="off" class="layui-input">
</td>
<td class="layui-td-gray">初始密码</td>
<td>
{$reg_pwd}
<input type="hidden" name="reg_pwd" value="{$reg_pwd}" lay-verify="required">
</td>
</tr>
<tr>
<td class="layui-td-gray">所在部门<font>*</font>
</td>
<td>
<select name="did" lay-verify="required" lay-reqText="请选择所属部门">
<option value="">请选择所属部门</option>
{volist name="department" id="v"}
<option value="{$v.id}">{$v.title}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">岗位职称<font>*</font>
</td>
<td>
<select name="position_id" lay-verify="required" lay-reqText="请选择岗位职称">
<option value="">请选择岗位职称</option>
{volist name="position" id="v"}
<option value="{$v.id}">{$v.title}</option>
{/volist}
</select>
</td>
<td rowspan="3" class="layui-td-gray-2">头像<br /><span style="font-size: 12px;">(如若不上传<br />系统将自动生成)</span>
</td>
<td rowspan="3" valign="top" style="width: 100px;">
<div class="layui-upload" style="width: 100px;">
<div class="layui-upload-list" id="demo1" style="width: 100%; height:100px; overflow: hidden;">
<img src="/static/home/images/nonepic600x600.jpg" height="100"
style="max-width: 100%; width: 100%;" />
<input type="hidden" name="thumb" value="">
</div>
<button type="button" class="layui-btn layui-btn-normal" style="width: 100%;"
id="test1">上传头像</button>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">入职日期<font>*</font>
</td>
<td>
<input type="text" id="entry_time" name="entry_time" readonly lay-verify="required"
placeholder="请选择入职日期" lay-reqText="请选择入职日期" autocomplete="off" class="layui-input">
</td>
<td class="layui-td-gray">员工性别<font>*</font>
</td>
<td>
<input type="radio" name="sex" value="1" title="男">
<input type="radio" name="sex" value="2" title="女">
</td>
</tr>
<tr>
<td class="layui-td-gray">员工类型<font>*</font>
</td>
<td>
<input type="radio" name="type" value="3" title="实习">
<input type="radio" name="type" value="2" title="试用">
<input type="radio" name="type" value="1" title="正式">
</td>
<td class="layui-td-gray">电子邮箱<font>*</font>
</td>
<td>
<input type="text" name="email" value="" lay-verify="required" placeholder="请输入电子邮箱" lay-reqText="请输入电子邮箱" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">账号状态</td>
<td colspan="5">
<input type="radio" name="status" value="0" title="禁止登录">
<input type="radio" name="status" value="1" title="正常" checked>
<input type="radio" name="status" value="2" title="离职">
</td>
</tr>
<tr>
<td class="layui-td-gray">员工简介</td>
<td colspan="7">
<textarea name="desc" placeholder="请输入员工简介" class="layui-textarea"></textarea>
</td>
</tr>
</table>
{else/}
<h3 class="h3-title">编辑员工信息</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">登录账号</td>
<td>
{$detail.username}
</td>
<td class="layui-td-gray">初始密码</td>
<td>
{empty name="$detail.reg_pwd"}
密码已重置
{else/}
{$detail.reg_pwd}
{/empty}
</td>
<td class="layui-td-gray">账号状态</td>
<td>
{eq name="$detail.status" value="0"}<span style="color:#FF5722">禁止登录</span>{/eq}
{eq name="$detail.status" value="1"}<span style="color:#009688">正常</span>{/eq}
{eq name="$detail.status" value="2"}<span style="color:#FFB800">已离职</span>{/eq}
</td>
</tr>
<tr>
<td class="layui-td-gray">员工姓名<font>*</font>
</td>
<td>
<input type="text" name="name" value="{$detail.name}" lay-verify="required" placeholder="请输入员工姓名"
lay-reqText="请输入员工姓名" autocomplete="off" class="layui-input">
</td>
<td class="layui-td-gray">手机号码<font>*</font>
</td>
<td>
<input type="text" name="mobile" value="{$detail.mobile}" lay-verify="required" placeholder="可使用手机号码登录"
lay-reqText="请输入手机" autocomplete="off" class="layui-input">
</td>
<td rowspan="3" class="layui-td-gray">头像<br /><span style="font-size: 12px;">(如若不上传<br />系统自动生成)</span></td>
<td rowspan="3" valign="top" style="width: 100px;">
<div class="layui-upload" style="width: 100px;">
<div class="layui-upload-list" id="demo1" style="width: 100%; height:100px; overflow: hidden;">
<img src="{$detail.thumb}" height="100" style="max-width: 100%; width: 100%;" />
<input type="hidden" name="thumb" value="{$detail.thumb}">
</div>
<button type="button" class="layui-btn layui-btn-normal" style="width: 100%;"
id="test1">上传头像</button>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">所在部门<font>*</font>
</td>
<td>
<select name="did" lay-verify="required" lay-reqText="请选择所属部门">
<option value="">请选择所属部门</option>
{volist name="department" id="v"}
<option value="{$v.id}" {eq name="$v.id" value="$detail.did" }selected{/eq}>{$v.title}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">岗位职称<font>*</font>
</td>
<td>
<select name="position_id" lay-verify="required" lay-reqText="请选择岗位职称">
<option value="">请选择岗位职称</option>
{volist name="position" id="v"}
<option value="{$v.id}" {eq name="$v.id" value="$detail.position_id" }selected{/eq}>{$v.title}
</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">入职日期<font>*</font>
</td>
<td>
<input type="text" id="entry_time" value="{$detail.entry_time|time_format=###,'Y-m-d'}"
name="entry_time" readonly lay-verify="required" placeholder="请选择入职日期" lay-reqText="请选择入职日期"
autocomplete="off" class="layui-input">
</td>
<td class="layui-td-gray">员工性别<font>*</font>
</td>
<td>
<input type="radio" name="sex" value="1" title="男" {eq name="$detail.sex" value="1" }checked{/eq}>
<input type="radio" name="sex" value="2" title="女" {eq name="$detail.sex" value="2" }checked{/eq}>
</td>
</tr>
<tr>
<td class="layui-td-gray">员工类型<font>*</font>
</td>
<td>
<input type="radio" name="type" value="3" title="实习" {eq name="$detail.type" value="3" }checked{/eq}>
<input type="radio" name="type" value="2" title="试用" {eq name="$detail.type" value="2" }checked{/eq}>
<input type="radio" name="type" value="1" title="正式" {eq name="$detail.type" value="1" }checked{/eq}>
</td>
<td class="layui-td-gray">电子邮箱<font>*</font>
</td>
<td colspan="3">
<input type="text" name="email" value="{$detail.email}" lay-verify="required" placeholder="请输入电子邮箱" lay-reqText="请输入电子邮箱" autocomplete="off" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">员工简介</td>
<td colspan="7">
<textarea name="desc" placeholder="请输入员工简介" class="layui-textarea">{$detail.desc}</textarea>
</td>
</tr>
</table>
{/if}
<div style="padding: 10px 0">
<input type="hidden" value="{$id}" name="id">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
<script>
function openInit() {
var form = layui.form,
layer = layui.layer,
tool = layui.tool,
laydate = layui.laydate,
upload = layui.upload;
form.render();
//日期选择
laydate.render({
elem: '#entry_time',
max: 7,
showBottom: false
});
//头像上传
var uploadInst = upload.render({
elem: "#test1",
url: "/api/index/upload",
done: function (e) {
//如果上传失败
if (e.code == 1) {
return layer.msg('上传失败');
}
//上传成功
$('#demo1 input').attr('value', e.data.filepath);
$('#demo1 img').attr('src', e.data.filepath);
}
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.close(1000);
}
}
tool.post("/admin/user/add", data.field, callback);
return false;
});
}
</script>
+338
View File
@@ -0,0 +1,338 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>企业员工</cite></a>
</span>
{/block}
{block name="style"}
<style>
.layui-tree-entry{font-size:14px;}
.layui-tree-set{padding:2px 0}
.layui-tree-iconClick .layui-icon{color:#1E9FFF}
.layui-tree-icon {height: 13px;line-height: 13px; width: 13px; text-align: center; border: 1px solid #1E9FFF; color:#1E9FFF}
.layui-tree-line .layui-tree-set .layui-tree-set:after{top:18px;}
.tree-left{width:200px; position:absolute; height:100%; top:0; left:0; border-right:1px solid #eeeeee; padding:0 10px;}
.tree-left h3{font-size:16px; height:30px; margin-top:20px; padding-left:10px; font-weight:800}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="tree-left">
<h3>企业组织架构</h3>
<div id="depament"></div>
</div>
<div class="body-table" style="margin-left:220px;">
<form class="layui-form layui-form-bar">
<div class="layui-input-inline" style="width:136px">
<select name="status">
<option value="">选择员工状态</option>
<option value="1">正常状态</option>
<option value="0">禁止登录</option>
</select>
</div>
<div class="layui-input-inline" style="width:136px">
<select name="type">
<option value="">选择员工类型</option>
<option value="1">正式员工</option>
<option value="2">试用员工</option>
<option value="3">实习员工</option>
</select>
</div>
<div class="layui-input-inline" style="width:240px">
<input type="text" name="keywords" placeholder="输入关键字,如:ID/姓名/手机号码" class="layui-input" autocomplete="off" />
</div>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交搜索</button>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
</div>
<script type="text/html" id="thumb">
<img src="{{d.thumb}}" width="30" height="30" />
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add"><i class="layui-icon">&#xe61f;</i></button>
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="disable"><i class="layui-icon">&#x1006;</i></button>
<button class="layui-btn layui-btn-sm" lay-event="recovery"><i class="layui-icon">&#xe605;</i></button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var tree = layui.tree,
table = layui.table,
tool = layui.tool,
form = layui.form;
var treeRender = function(res){
//仅节点左侧图标控制收缩
tree.render({
elem: '#depament',
data: res.trees,
onlyIconControl: true, //是否仅允许节点左侧图标控制展开收缩
click: function(obj){
//layer.msg(JSON.stringify(obj.data));
layui.pageTable.reload({
where: {did: obj.data.id}
,page:{curr:1}
});
$('[name="keywords"]').val('');
$('[name="status"]').val('');
$('[name="type"]').val('');
layui.form.render('select');
}
});
}
tool.get("/api/index/get_department_tree",{},treeRender);
layui.pageTable = table.render({
elem: '#test',
title: '员工列表',
toolbar: '#toolbarDemo',
url: "/admin/user/index", //数据接口
page: true, //开启分页
limit: 20,
defaultToolbar: false,
height: 'full-112',
cols: [
[
{type:'checkbox',fixed:'left'},
{
field: 'id',
title: '员工号',
align: 'center',
width: 80
}, {
field: 'status',
title: '状态',
align: 'center',
width: 80,
templet: function (d) {
var html = '<span class="layui-badge layui-bg-green">正常</span>';
if(d.status == 2){
html = '<span class="layui-badge layui-bg-orange">已离职</span>'
}
else if(d.status == 0){
html = '<span class="layui-badge">被禁用</span>'
}
return html;
}
},{
field: 'type',
title: '员工类型',
align: 'center',
width: 80,
templet: function (d) {
var html = '<span style="color:#393D49">正式员工</span>';
if(d.type == 2){
html = '<span style="color:#01AAED">试用员工</span>'
}
else if(d.type == 3){
html = '<span style="color:#5FB878">实 习 生</span>'
}
return html;
}
}, {
field: 'username',
title: '登录账号',
width: 120
}, {
field: 'thumb',
title: '头像',
toolbar: '#thumb',
align: 'center',
width: 60
}, {
field: 'name',
title: '用户姓名',
align: 'center',
width: 80
},{
field: 'mobile',
title: '手机号码',
align: 'center',
width: 120
},{
field: 'sex',
title: '性别',
align: 'center',
width: 50,
templet: function (d) {
var html = '未知';
if(d.sex == 1){
html = '男'
}
else if(d.sex == 2){
html = '女'
}
return html;
}
},{
field: 'department',
title: '所在部门',
align: 'center',
width: 110
}, {
field: 'position',
title: '岗位职称',
align: 'center',
width: 110
}, {
field: 'entry_time',
title: '入职日期',
align: 'center',
width: 100
}, {
field: 'login_num',
title: '累计登录',
align: 'center',
width: 80
}, {
field: 'last_login_time',
title: '最后登录时间',
align: 'center',
minWidth: 136
},{
field: 'right',
fixed:'right',
title: '操作',
width: 160,
align: 'center',
templet: function (d) {
var html = '';
var btn1 = '<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">详情</span>';
var btn2 = '<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
var btn3 = '<span class="layui-btn layui-btn-xs layui-btn-warm" lay-event="copy">复制密码</span>';
var btn4 = '<span class="layui-btn layui-btn-xs layui-btn-danger" lay-event="psw">重置密码</span>';
if(d.reg_pwd == ''){
html = '<div class="layui-btn-group">'+btn1+btn2+btn4+'</div>';
}
else{
html = '<div class="layui-btn-group">'+btn1+btn2+btn3+'</div>';
}
return html;
}
}
]
]
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
tool.open("/admin/user/add");
return;
}
if(data.length==0){
layer.msg('请选择要操作的员工');
return false;
}
var uidArray=[],msg='是否执行该操作?',type=0;
for(var i=0;i<data.length;i++){
uidArray.push(data[i].id);
}
switch(obj.event){
case 'disable':
msg = '您确定要把选中的员工设为禁止登录?';
type = 0;
break;
case 'recovery':
msg = '您确定要把选中的员工恢复正常?';
type = 1;
break;
};
layer.confirm(msg, {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/admin/user/set",{ ids: uidArray.join(','), type: type },callback);
layer.close(index);
});
});
//监听行工具事件
table.on('tool(test)', function (obj) {
var data = obj.data;
if (obj.event === 'view') {
tool.open('/admin/user/view?id='+data.id);
return;
}
if(obj.event === 'edit'){
tool.open('/admin/user/add?id='+data.id);
}
else if (obj.event === 'copy') {
copyToClip(data.reg_pwd);
return;
}
else if (obj.event === 'psw') {
layer.confirm('确定要重设该用户的密码?', {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/admin/user/reset",{id: data.id},callback);
layer.close(index);
});
return;
}
});
//监听搜索提交
form.on('submit(webform)', function (data) {
layui.pageTable.reload({
where: {
keywords: data.field.keywords,
status: data.field.status,
type: data.field.type
},
page: {
curr: 1
}
});
return false;
});
}
//拷贝密码
function copyToClip(content) {
var save = function(e){
e.clipboardData.setData('text/plain', content);
e.preventDefault();
}
document.addEventListener('copy', save);
document.execCommand('copy');
document.removeEventListener('copy',save);
if (content != '') {
layer.msg('复制成功');
}
}
</script>
{/block}
<!-- /脚本 -->
+161
View File
@@ -0,0 +1,161 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">员工信息</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">登录账号</td>
<td>
{$detail.username}
</td>
<td class="layui-td-gray">员工状态</td>
<td>
{eq name="$detail.status" value="0"}<span style="color:#FF5722">禁止登录</span>{/eq}
{eq name="$detail.status" value="1"}<span style="color:#009688">正常</span>{/eq}
{eq name="$detail.status" value="2"}<span style="color:#FFB800">已离职</span>{/eq}
{empty name="$detail.reg_pwd"}
,密码已重置
<span class="layui-btn layui-btn-normal layui-btn-xs" data-note="rest" data-val="{$detail.id}">重设新密码</span>
{else/}
,默认密码:{$detail.reg_pwd}
<span class="layui-btn layui-btn-normal layui-btn-xs" data-note="copy" data-val="{$detail.reg_pwd}">复制初始密码</span>
{/empty}
</td>
<td rowspan="3" class="layui-td-gray">头像</td>
<td rowspan="3" valign="top" style="width: 100px;">
<div class="layui-upload">
<img src="{$detail.thumb}" style="width:100px; height:100px; max-width:100%" />
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">员工姓名</td>
<td>
{$detail.name}
</td>
<td class="layui-td-gray">性别</td>
<td>
{eq name="$detail.sex" value="0"}未知{/eq}
{eq name="$detail.sex" value="1"}男{/eq}
{eq name="$detail.sex" value="2"}女{/eq}
</td>
</tr>
<tr>
<td class="layui-td-gray">手机号码</td>
<td>
{$detail.mobile}
</td>
<td class="layui-td-gray">电子邮箱</td>
<td>
{$detail.email}
</td>
</tr>
<tr>
<td class="layui-td-gray">所在部门</td>
<td>{$detail.department}</td>
<td class="layui-td-gray">岗位职称</td>
<td>{$detail.position}</td>
<td class="layui-td-gray">入职日期</td>
<td>
{$detail.entry_time | date='Y-m-d'}
</td>
</tr>
<tr>
<td class="layui-td-gray">员工类型</td>
<td>
{eq name="$detail.type" value="3"}<span style="color:#5FB878">实 习 生</span>{/eq}
{eq name="$detail.type" value="2"}<span style="color:#01AAED">试用员工</span>{/eq}
{eq name="$detail.type" value="1"}<span style="color:#393D49">正式员工</span>{/eq}
</td>
<td class="layui-td-gray-2">最后登录时间</td>
<td>
{$detail.last_login_time}
</td>
<td class="layui-td-gray-2">累计登录次数</td>
<td>
{$detail.login_num}
</td>
</tr>
<tr>
<td class="layui-td-gray">员工简介</td>
<td colspan="7">
{$detail.desc}
</td>
</tr>
</table>
<h3 class="h3-title" style="padding-top:15px;">用户权限</h3>
<table class="layui-table layui-table-form">
{volist name="role_rule" id="vo"}
<tr>
<td style="font-weight:800; text-align:center;">
<input type="checkbox" disabled value="{$vo.id}" title="{$vo.title}" {eq name="$vo.checked" value="true" }checked{/eq}>
</td>
{notempty name="vo.children"}
<td>
<div style="padding:0 0 0 10px;">
{volist name="vo.children" key="k" id="voo"}
<div class="checkbox16" style="padding:10px 0;">
<input type="checkbox" disabled lay-filter="rule" name="rule[]" value="{$voo.id}" lay-skin="primary" title="{$voo.title}" {eq name="$voo.checked" value="true" }checked{/eq}>
</div>
{notempty name="voo.children"}
<div style="padding:0 0 3px; {if condition='$k != count($vo.children)'}margin-bottom:3px; padding-bottom:16px; border-bottom:1px solid #eee;{/if}">
{volist name="voo.children" id="vooo"}
<div class="layui-input-inline" style="margin-right:10px;">
<input type="checkbox" disabled data-rule="{$voo.id}" name="rule[]" value="{$vooo.id}" lay-skin="primary" title="{$vooo.title}" {eq name="$vooo.checked" value="true" }checked{/eq}>
</div>
{/volist}
</div>
{/notempty}
{/volist}
</div>
</td>
{/notempty}
</tr>
{/volist}
</table>
</form>
<script>
function openInit() {
var form = layui.form,layer = layui.layer,tool=layui.tool;
form.render();
//重设密码
$('[data-note="rest"]').on('click',function(){
let id = $(this).data('id');
layer.confirm('确定要重设该用户的密码?', {
icon: 3,
title: '提示'
}, function (index) {
let callback = function(e){
layer.msg(e.msg);
if(e.code==0){
setTimeout(function(){
location.reload();
},2000);
}
}
tool.post('/admin/admin/reset_psw',{id: id},callback);
layer.close(index);
});
})
//拷贝密码
$('[data-note="copy"]').on('click',function(){
let val = $(this).data('val');
if (navigator.clipboard) {
navigator.clipboard.writeText(content);
} else {
var copy_textarea = document.createElement('textarea');
copy_textarea.style.position = 'fixed';
copy_textarea.style.clip = 'rect(0 0 0 0)';
copy_textarea.style.top = '10px';
copy_textarea.value = content;
document.body.appendChild(copy_textarea);
copy_textarea.select();
document.execCommand('copy', true);
document.body.removeChild(copy_textarea);
}
if (content != '') {
layer.msg('复制成功');
}
})
}
</script>
+132
View File
@@ -0,0 +1,132 @@
{extend name="../../base/view/common/base" /}
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/home/user/setting">信息设置</a>
<a><cite>工作类型</cite></a>
</span>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="main-content">
{include file="../../base/view/common/submenu" /}
<div class="main-page-content">
<div class="layui-form-bar">
<button class="layui-btn layui-btn-sm add-new">+ 添加类别</button>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table=layui.table,
tool=layui.tool,
layer=layui.layer;
layui.pageTable = table.render({
elem: '#test'
,title:'工作类别列表'
,url: "/admin/wcate/index"
,method :"get"
,page: false //开启分页
,limit: 20
,cellMinWidth: 200
,cols: [[
{field:'id',width:80, title: 'ID号', align:'center'}
,{field:'title',title: '类别名称'}
,{field:'status', title: '状态',width:80,align:'center',templet: function(d){
var html1='<span>正常</span>';
var html2='<span style="color:#FF5722">禁用</span>';
if(d.status==1){
return html1;
}
else{
return html2;
}
}}
,{width:100,title: '操作', align:'center',templet: function(d){
var html='';
var btn='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</a>';
var btn1='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="disable">禁用</a>';
var btn2='<a class="layui-btn layui-btn-xs" lay-event="open">启用</a>';
if(d.status==1){
html = '<div class="layui-btn-group">'+btn+btn1+'</div>';
}
else{
html = '<div class="layui-btn-group">'+btn+btn2+'</div>';
}
return html;
}}
]]
});
table.on('tool(test)',function (obj) {
if(obj.event === 'edit'){
addExpense(obj.data.id,obj.data.title);
}
if(obj.event === 'disable'){
layer.confirm('确定要禁用该类别吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/admin/wcate/check",{ id: obj.data.id, status: 0 },callback);
layer.close(index);
});
}
if(obj.event === 'open'){
layer.confirm('确定要启用该类别吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/admin/wcate/check",{ id: obj.data.id, status: 1 },callback);
layer.close(index);
});
}
});
$('.main-page-content').on('click','.add-new',function(){
addExpense(0,'');
});
function addExpense(id,val){
var title = '新增类别';
if(id>0){
title = '编辑类别';
}
layer.prompt({
title: title,
value: val,
yes: function(index, layero) {
// 获取文本框输入的值
var value = layero.find(".layui-layer-input").val();
if (value) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
layer.close(index);
}
tool.post("/admin/wcate/add",{id: id, title: value,},callback);
} else {
layer.msg('请填写类别标题');
}
}
})
}
}
</script>
{/block}
<!-- /脚本 -->