first commit
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="body-table layui-tab layui-tab-brief border" lay-filter="tab" style="background-color:#fff; margin:0; border-bottom:0">
|
||||
<ul class="layui-tab-title" style="border:none;">
|
||||
<li class="layui-this">全部</li>
|
||||
<li>待审批</li>
|
||||
<li>审批通过</li>
|
||||
<li>审批拒绝</li>
|
||||
</ul>
|
||||
</div>
|
||||
<form class="layui-form gg-form-bar border-t border-x" lay-filter="barsearchform">
|
||||
<div class="layui-input-inline" style="width:200px">
|
||||
<input type="text" name="uname" value="" placeholder="请选择员工" readonly class="layui-input picker-admin" autocomplete="off" />
|
||||
<input type="text" name="uid" value="0" style="display:none" />
|
||||
<input type="hidden" name="status" value="0" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<h3 class="h3-title" style="height:28px;">我申请的审批</h3>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker','tablePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus, tool = layui.tool ,element=layui.element;
|
||||
|
||||
element.on('tab(tab)', function(data){
|
||||
$('[name="status"]').val(data.index);
|
||||
$('[lay-filter="table-search"]').click();
|
||||
return false;
|
||||
});
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: '#test'
|
||||
,toolbar: false
|
||||
,defaultToolbar: false
|
||||
,title:'全部审批列表'
|
||||
,url: "/home/approve/all"
|
||||
,page: true //开启分页
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-154'
|
||||
,cols: [[
|
||||
{field:'types_name',title: '审批类型',width:100, align:'center'}
|
||||
,{field:'check_status',title: '审核状态',width:110, align:'center',templet: function(d){
|
||||
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
|
||||
return html;
|
||||
}}
|
||||
,{field:'admin_name',title: '申请人',width:90,align:'center'}
|
||||
,{field:'create_time',title: '申请时间',width:150,align:'center'}
|
||||
,{field:'department',title: '所属部门',width:120,align:'center'}
|
||||
,{field:'check_users',title: '当前审批人'}
|
||||
,{field:'check_copy_users',title: '抄送人员',width:150}
|
||||
,{width:60,title: '操作', align:'center',templet: function(d){
|
||||
var btn='<a class="layui-btn layui-btn-xs layui-btn-normal side-a" data-href="'+d.view_url+'?id='+d.id+'">详情</a>';
|
||||
return btn;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,62 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="body-table layui-tab layui-tab-brief border" lay-filter="tab" style="background-color:#fff; margin:0; border-bottom:0">
|
||||
<ul class="layui-tab-title" style="border:none;">
|
||||
<li class="layui-this">全部</li>
|
||||
<li>待我审批</li>
|
||||
<li>我已审批</li>
|
||||
</ul>
|
||||
</div>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<h3 class="h3-title" style="height:28px;">我处理的审批</h3>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var table = layui.table, tool = layui.tool ,element=layui.element;
|
||||
|
||||
element.on('tab(tab)', function(data){
|
||||
layui.pageTable.reload({where:{status:data.index},page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: '#test'
|
||||
,toolbar: '#toolbarDemo'
|
||||
,defaultToolbar: false
|
||||
,title:'审批列表'
|
||||
,url: "/home/approve/checklist"
|
||||
,page: true //开启分页
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-92'
|
||||
,cols: [[
|
||||
{field:'types_name',title: '审批类型',width:100, align:'center'}
|
||||
,{field:'check_status',title: '审核状态',width:110, align:'center',templet: function(d){
|
||||
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
|
||||
return html;
|
||||
}}
|
||||
,{field:'admin_name',title: '申请人',width:90,align:'center'}
|
||||
,{field:'create_time',title: '申请时间',width:150,align:'center'}
|
||||
,{field:'department',title: '所属部门',width:120,align:'center'}
|
||||
,{field:'check_users',title: '当前审批人'}
|
||||
,{field:'check_copy_users',title: '抄送人员',width:150}
|
||||
,{width:60,title: '操作', align:'center',templet: function(d){
|
||||
var btn='<a class="layui-btn layui-btn-xs layui-btn-normal side-a" data-href="'+d.view_url+'?id='+d.id+'">详情</a>';
|
||||
return btn;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,63 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="body-table layui-tab layui-tab-brief border" lay-filter="tab" style="background-color:#fff; margin:0; border-bottom:0">
|
||||
<ul class="layui-tab-title" style="border:none;">
|
||||
<li class="layui-this">全部</li>
|
||||
<li>待审批</li>
|
||||
<li>审批通过</li>
|
||||
<li>审批拒绝</li>
|
||||
</ul>
|
||||
</div>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<h3 class="h3-title" style="height:28px;">抄送给我的审批</h3>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var table = layui.table, tool = layui.tool ,element=layui.element;
|
||||
|
||||
element.on('tab(tab)', function(data){
|
||||
layui.pageTable.reload({where:{status:data.index},page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: '#test'
|
||||
,toolbar: '#toolbarDemo'
|
||||
,defaultToolbar: false
|
||||
,title:'审批列表'
|
||||
,url: "/home/approve/copylist"
|
||||
,page: true //开启分页
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-92'
|
||||
,cols: [[
|
||||
{field:'types_name',title: '审批类型',width:100, align:'center'}
|
||||
,{field:'check_status',title: '审核状态',width:110, align:'center',templet: function(d){
|
||||
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
|
||||
return html;
|
||||
}}
|
||||
,{field:'admin_name',title: '申请人',width:90,align:'center'}
|
||||
,{field:'create_time',title: '申请时间',width:150,align:'center'}
|
||||
,{field:'department',title: '所属部门',width:120,align:'center'}
|
||||
,{field:'check_users',title: '当前审批人'}
|
||||
,{field:'check_copy_users',title: '抄送人员',width:150}
|
||||
,{width:60,title: '操作', align:'center',templet: function(d){
|
||||
var btn='<a class="layui-btn layui-btn-xs layui-btn-normal side-a" data-href="'+d.view_url+'?id='+d.id+'">详情</a>';
|
||||
return btn;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,89 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.body-card{background-color:#fff; border:1px solid #eee;}
|
||||
.card-header{height:44px; line-height:44px; text-indent:12px}
|
||||
.square .layui-col-md2{border: 1px solid #f5f5f5; border-left:0; cursor:pointer;}
|
||||
.square .layui-col-md2 div{padding:12px 0; height:72px; text-align:center; background-color:#fff; color:#666;}
|
||||
.square .layui-col-md2 i{font-size:28px; font-weight:800; display:block; padding-bottom:3px; color:#4285f4}
|
||||
.square .layui-col-md2:nth-child(6n){border-right:0;}
|
||||
.square .layui-col-md2:nth-child(n+7){margin-top: -1px;}
|
||||
.square .layui-col-md2 div:hover{color:#4285f4; background-color:#fafafa}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="body-card">
|
||||
<div class="card-header" style="border-bottom:1px solid #eee;"><h3 class="h3-title">审批新申请</h3></div>
|
||||
{volist name="module" id="v" offset="0"}
|
||||
{notempty name="$v.list"}
|
||||
<div class="card-header"><strong>{$v.title}</strong></div>
|
||||
<div class="square">
|
||||
<div class="layui-row">
|
||||
{volist name="$v.list" id="vo"}
|
||||
<div class="layui-col-md2 side-a" data-href="{$vo.add_url}" title="{$vo.title}"><div><i class="iconfont {$vo.icon}"></i>{$vo.title}</div></div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{/volist}
|
||||
<div style="padding:16px 0; text-align:center; color:#ffb800">
|
||||
如果是【日常办公数据管理员】,可查看全体员工的审批申请记录,去查<a href="javascript:;" data-href="/home/approve/all" class="side-a">『全部审批』</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<h3 class="h3-title" style="height:28px;">审批列表</h3>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var table = layui.table, tool = layui.tool ,element=layui.element;
|
||||
|
||||
element.on('tab(tab)', function(data){
|
||||
layui.pageTable.reload({where:{status:data.index},page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: '#test'
|
||||
,toolbar: '#toolbarDemo'
|
||||
,defaultToolbar: false
|
||||
,title:'审批列表'
|
||||
,url: "/oa/approve/index"
|
||||
,page: true //开启分页
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'types_name',title: '审批类型',width:100, align:'center'}
|
||||
,{field:'check_status',title: '审核状态',width:110, align:'center',templet: function(d){
|
||||
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
|
||||
return html;
|
||||
}}
|
||||
,{field:'admin_name',title: '申请人',width:90,align:'center'}
|
||||
,{field:'create_time',title: '申请时间',width:150,align:'center'}
|
||||
,{field:'department',title: '所属部门',width:120,align:'center'}
|
||||
,{field:'check_users',title: '当前审批人'}
|
||||
,{width:60,title: '操作', align:'center',templet: function(d){
|
||||
var btn='<a class="layui-btn layui-btn-xs" lay-event="view">详情</a>';
|
||||
return btn;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(test)',function (obj) {
|
||||
if(obj.event === 'view'){
|
||||
tool.side('/adm/'+obj.data.table_name+'/view?id='+obj.data.id);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,71 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="body-table layui-tab layui-tab-brief border" lay-filter="tab" style="background-color:#fff; margin:0; border-bottom:0">
|
||||
<ul class="layui-tab-title" style="border:none;">
|
||||
<li class="layui-this">全部</li>
|
||||
<li>待审批</li>
|
||||
<li>审批通过</li>
|
||||
<li>审批拒绝</li>
|
||||
</ul>
|
||||
</div>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<h3 class="h3-title" style="height:28px;">我申请的审批</h3>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var table = layui.table, tool = layui.tool ,element=layui.element;
|
||||
|
||||
element.on('tab(tab)', function(data){
|
||||
layui.pageTable.reload({where:{status:data.index},page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: '#test'
|
||||
,toolbar: '#toolbarDemo'
|
||||
,defaultToolbar: false
|
||||
,title:'审批列表'
|
||||
,url: "/home/approve/mylist"
|
||||
,page: true //开启分页
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-92'
|
||||
,cols: [[
|
||||
{field:'types_name',title: '审批类型',width:100, align:'center'}
|
||||
,{field:'check_status',title: '审核状态',width:110, align:'center',templet: function(d){
|
||||
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
|
||||
return html;
|
||||
}}
|
||||
,{field:'admin_name',title: '申请人',width:90,align:'center'}
|
||||
,{field:'create_time',title: '申请时间',width:150,align:'center'}
|
||||
,{field:'department',title: '所属部门',width:120,align:'center'}
|
||||
,{field:'check_users',title: '当前审批人'}
|
||||
,{field:'check_copy_users',title: '抄送人员',width:150}
|
||||
,{width:90,title: '操作', align:'center',templet: function(d){
|
||||
var btn0='<a class="layui-btn layui-btn-xs layui-btn-normal side-a" data-href="'+d.view_url+'?id='+d.id+'">详情</a>';
|
||||
var btn1='<a class="layui-btn layui-btn-xs side-a" data-href="'+d.add_url+'?id='+d.id+'">编辑</a>';
|
||||
var html='';
|
||||
if(d.check_status==0 ||d.check_status ==4){
|
||||
html='<div class="layui-btn-group">'+btn0+btn1+'</div>';
|
||||
}
|
||||
else{
|
||||
html=btn0;
|
||||
}
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,86 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">省市区</h3>
|
||||
{if condition="$id eq 0"}
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">父级省市区<font>*</font></td>
|
||||
<td>{$pname|default='顶级城市'}</td>
|
||||
<td class="layui-td-gray-2">省市区名称<font>*</font></td>
|
||||
<td><input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="请输入省市区名称" lay-reqText="请输入省市区名称" class="layui-input"></td>
|
||||
<td class="layui-td-gray-2">省市区简称<font>*</font></td>
|
||||
<td><input type="text" name="shortname" lay-verify="required" placeholder="请输入省市区简称" lay-reqText="请输入省市区简称" autocomplete="off" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">经度<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="longitude" placeholder="请输入经度" lay-verify="required" lay-reqText="请输入经度" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">纬度<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="latitude" placeholder="请输入纬度" lay-verify="required" lay-reqText="请输入纬度" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">排序</td>
|
||||
<td><input type="text" name="sort" value="0" placeholder="请输入数字,越大越靠前" autocomplete="off" class="layui-input"></td>
|
||||
</tr>
|
||||
</table>
|
||||
{else/}
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">父级菜单/节点<font>*</font></td>
|
||||
<td>{$detail.pname|default='顶级城市'}</td>
|
||||
<td class="layui-td-gray-2">省市区名称<font>*</font></td>
|
||||
<td><input type="text" name="name" value="{$detail.name}" lay-verify="required" autocomplete="off" placeholder="请输入省市区名称" lay-reqText="请输入省市区名称" class="layui-input"></td>
|
||||
<td class="layui-td-gray-2">省市区简称<font>*</font></td>
|
||||
<td><input type="text" name="shortname" value="{$detail.shortname}" lay-verify="required" placeholder="请输入省市区简称" lay-reqText="请输入省市区简称" autocomplete="off" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">经度<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="longitude" value="{$detail.longitude}" placeholder="请输入经度" lay-verify="required" lay-reqText="请输入经度" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">纬度<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="latitude" value="{$detail.latitude}" placeholder="请输入纬度" lay-verify="required" lay-reqText="请输入纬度" autocomplete="off" 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>
|
||||
{/if}
|
||||
<div class="pt-4">
|
||||
<input type="hidden" name="id" value="{$id}">
|
||||
<input type="hidden" name="pid" value="{$pid}">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function(){
|
||||
parent.location.reload();
|
||||
},1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/area/add", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,158 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
{eq name="is_area" value="0"}
|
||||
<div class="gg-form-bar border" style="padding-bottom:12px;">
|
||||
<span class="red">全国城市数据还未导入,请点击按钮导入</span> <button class="layui-btn layui-btn-sm import-area">导入省市区数据</button>
|
||||
</div>
|
||||
{else/}
|
||||
<div class="gg-form-bar border-t border-x" style="padding-bottom:0;">
|
||||
<div class="layui-input-inline" style="width: 120px;"><h3>全国省市区</h3></div>
|
||||
<div class="layui-input-inline" style="width: 360px;">
|
||||
<div class="layui-btn-group" >
|
||||
<a href="/home/api/areaJson?type=province" class="layui-btn layui-bg-blue" target="_blank">导出省</a>
|
||||
<a href="/home/api/areaJson?type=city" class="layui-btn layui-bg-blue" target="_blank">导出市</a>
|
||||
<a href="/home/api/areaJson?type=district" class="layui-btn layui-bg-blue" target="_blank">导出区</a>
|
||||
<a href="/home/api/areaJson?type=all" class="layui-btn layui-bg-blue" target="_blank">导出树形省市区</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-input-inline layui-form" id="areaSelect" style="margin:0">
|
||||
<div class="layui-input-inline" style="width: 200px;">
|
||||
<select name="province" class="province-select" data-value="440000" lay-filter="province-1">
|
||||
<option value="">请选择省</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width: 200px;">
|
||||
<select name="city" class="city-select" data-value="440100" lay-filter="city-1">
|
||||
<option value="">请选择市</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width: 200px;">
|
||||
<select name="district" class="district-select" data-value="440106" lay-filter="county-1">
|
||||
<option value="">请选择区</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<table class="layui-hide" id="treeTable" lay-filter="treeTable"></table>
|
||||
</div>
|
||||
{/eq}
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','areaSelect'];
|
||||
function gouguInit() {
|
||||
var treeTable = layui.treeTable, tool = layui.tool,areaSelect = layui.areaSelect;
|
||||
areaSelect.render({
|
||||
elem: '#areaSelect',
|
||||
change: function (res) {
|
||||
//选择结果
|
||||
console.log(res);
|
||||
}
|
||||
});
|
||||
|
||||
layui.trees = treeTable.render({
|
||||
elem: '#treeTable'
|
||||
,url: "/home/area/datalist"
|
||||
,tree: { // treeTable 特定属性集
|
||||
customName: {name:'name'},
|
||||
data: {},
|
||||
view: {showIcon:false},
|
||||
async: {},
|
||||
callback: {}
|
||||
}
|
||||
, cellMinWidth: 80
|
||||
, cols: [[
|
||||
{ field: 'id', width: 80, title: 'ID号', align: 'center' }
|
||||
, { field: 'sort', width: 60, title: '排序', align: 'center' }
|
||||
, { field: 'name', width: 200, title: '名称' }
|
||||
, { field: 'pid', title: '父ID', width: 80, align: 'center' }
|
||||
, { field: 'shortname', width: 100, title: '简称' }
|
||||
, { field: 'longitude', title: '经度' }
|
||||
, { field: 'latitude', title: '纬度' }
|
||||
, { field: 'level', title: '级别', width: 80, align: 'center'}
|
||||
, {
|
||||
field: 'status', width: 100, title: '是否开启', align: 'center', templet: function (d) {
|
||||
var html = '<span style="color:#fbbc05">禁用</span>';
|
||||
if (d.status == '1') {
|
||||
html = '<span style="color:#12bb37">开启</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
}
|
||||
, {
|
||||
width: 188, 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="disable">禁用</button>';
|
||||
if(d.status==0){
|
||||
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-xs" lay-event="recovery">启用</button>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
}
|
||||
]]
|
||||
, page: false
|
||||
});
|
||||
//表头工具栏事件
|
||||
$('.add-area').on('click', function () {
|
||||
tool.side("/home/area/add");
|
||||
return;
|
||||
});
|
||||
|
||||
//操作按钮
|
||||
treeTable.on('tool(treeTable)', function (obj) {
|
||||
console.log(obj);
|
||||
if (obj.event === 'add') {
|
||||
tool.side('/home/area/add?pid=' + obj.data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side('/home/area/add?id=' + obj.data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'disable') {
|
||||
layer.confirm('确定要禁用吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/area/set", { id: obj.data.id,status:0}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
if (obj.event === 'recovery') {
|
||||
layer.confirm('确定要禁用吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/area/set", { id: obj.data.id,status:1}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('.import-area').on('click', function () {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
//location.reload();
|
||||
}
|
||||
}
|
||||
tool.post("/home/area/set", {id:0}, callback);
|
||||
return;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,146 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加车辆类型</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'
|
||||
,defaultToolbar: false
|
||||
,title:'车辆类型列表'
|
||||
,url: "/home/cate/car_cate"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '车辆名称'}
|
||||
,{field:'name',title: '车牌号码'}
|
||||
,{field:'status', title: '状态',width:80,align:'center',templet: function(d){
|
||||
var html1='<span class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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,obj.data.name);
|
||||
}
|
||||
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("/home/cate/car_cate_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("/home/cate/car_cate_check", { id: obj.data.id,status: 1}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',function(){
|
||||
addExpense(0,'','');
|
||||
});
|
||||
|
||||
function addExpense(id,title,name){
|
||||
var biaoti = '新增车辆';
|
||||
if(id>0){
|
||||
biaoti = '编辑车辆';
|
||||
}
|
||||
|
||||
layer.open({
|
||||
type: 1
|
||||
,title: biaoti
|
||||
,area: '368px;'
|
||||
,id: 'LAY_module' //设定一个id,防止重复弹出
|
||||
,btn: ['确定', '取消']
|
||||
,btnAlign: 'c'
|
||||
,content: '<div style="padding-top:15px;">\
|
||||
<div class="layui-form-item">\
|
||||
<label class="layui-form-label">车辆名称</label>\
|
||||
<div class="layui-input-inline">\
|
||||
<input type="hidden" name="id" value="'+id+'">\
|
||||
<input type="text" name="title" autocomplete="off" value="'+title+'" placeholder="请输入车辆名称" class="layui-input">\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="layui-form-item">\
|
||||
<label class="layui-form-label">车牌号码</label>\
|
||||
<div class="layui-input-inline">\
|
||||
<input type="text" name="name" autocomplete="off" value="'+name+'" placeholder="请输入车牌号码" class="layui-input">\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>'
|
||||
,yes: function(index){
|
||||
let id = $('#LAY_module').find('[name="id"]').val();
|
||||
let title = $('#LAY_module').find('[name="title"]').val();
|
||||
let name = $('#LAY_module').find('[name="name"]').val();
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
layui.pageTable.reload();
|
||||
layer.close(index);
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/car_cate_add", {
|
||||
id: id,
|
||||
title: title,
|
||||
name: name
|
||||
}, callback);
|
||||
}
|
||||
,btn2: function(){
|
||||
layer.closeAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加费用类型</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'
|
||||
,defaultToolbar: false
|
||||
,title:'费用类型列表'
|
||||
,url: "/home/cate/cost_cate"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,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 class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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("/home/cate/cost_cate_check", { id: obj.data.id,status: 0,title: obj.data.title}, 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("/home/cate/cost_cate_check", { id: obj.data.id,status: 1,title: obj.data.title}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',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();
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/cost_cate_add", {id: id,title: value}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写类别标题');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,96 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm add-new" type="button">+ 添加企业主体</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'
|
||||
,defaultToolbar: false
|
||||
,title:'企业主体列表'
|
||||
,url: "/home/cate/enterprise"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '企业主体名称',width:300}
|
||||
,{field:'city',title: '所在城市',width:150, align:'center'}
|
||||
,{field:'address',title: '详细地址'}
|
||||
,{field:'status', title: '状态',width:80,align:'center',templet: function(d){
|
||||
var html1='<span class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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'){
|
||||
tool.side('/home/cate/enterprise_add/id/'+obj.data.id);
|
||||
}
|
||||
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("/home/cate/enterprise_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("/home/cate/enterprise_check", { id: obj.data.id,status: 1}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.add-new',function(){
|
||||
tool.side('/home/cate/enterprise_add');
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,108 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-2">企业主体</h3>
|
||||
{if condition="$id eq 0"}
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">企业名称<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="title" value="" lay-verify="required" lay-reqText="请完善企业名称" placeholder="请完善企业名称" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">所在城市<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="city" value="" lay-verify="required" lay-reqText="请完善所在城市" placeholder="请完善所在城市" class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">详细地址<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="address" value="" lay-verify="required" lay-reqText="请完善详细地址" placeholder="请完善详细地址" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">纳税人识别号<font>*</font></td>
|
||||
<td><input type="text" name="tax_num" value="" lay-verify="required" lay-reqText="请完善纳税人识别号" placeholder="请完善纳税人识别号" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">开户银行</td>
|
||||
<td>
|
||||
<input type="text" name="bank" value="" placeholder="请完善开户银行" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">银行帐号</td>
|
||||
<td><input type="text" name="bank_sn" value="" placeholder="请完善银行帐号" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">备注信息</td>
|
||||
<td colspan="3">
|
||||
<textarea name="remark" placeholder="请输入描述" class="layui-textarea" style="height: 120px;"></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" lay-reqText="请完善企业名称" placeholder="请完善企业名称" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">所在城市<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="city" value="{$detail.city}" lay-verify="required" lay-reqText="请完善所在城市" placeholder="请完善所在城市" class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">详细地址<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="address" value="{$detail.address}" lay-verify="required" lay-reqText="请完善详细地址" placeholder="请完善详细地址" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">纳税人识别号<font>*</font></td>
|
||||
<td><input type="text" name="tax_num" value="{$detail.tax_num}" lay-verify="required" lay-reqText="请完善纳税人识别号" placeholder="请完善纳税人识别号" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">开户银行</td>
|
||||
<td>
|
||||
<input type="text" name="bank" value="{$detail.bank}" placeholder="请完善开户银行" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">银行帐号</td>
|
||||
<td><input type="text" name="bank_sn" value="{$detail.bank_sn}" placeholder="请完善银行帐号" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">备注信息</td>
|
||||
<td colspan="3">
|
||||
<textarea name="remark" placeholder="请输入描述" class="layui-textarea" style="height: 120px;">{$detail.remark}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{/if}
|
||||
<div class="pt-4">
|
||||
<input type="hidden" value="{$id}" name="id">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交保存</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool;
|
||||
//监听发送
|
||||
form.on('submit(webform)', function(data){
|
||||
$.ajax({
|
||||
url: "/home/cate/enterprise_add",
|
||||
type:'post',
|
||||
data:data.field,
|
||||
success:function(e){
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加报销类别</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'
|
||||
,defaultToolbar: false
|
||||
,title:'报销类别列表'
|
||||
,url: "/home/cate/expense_cate"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,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 class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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("/home/cate/expense_cate_check", { id: obj.data.id,status: 0,title: obj.data.title}, 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("/home/cate/expense_cate_check", { id: obj.data.id,status: 1,title: obj.data.title}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',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();
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/expense_cate_add", {id: id,title: value}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写类别标题');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,102 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加审批类型</button>
|
||||
</div>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var table = layui.table, tool = layui.tool;
|
||||
layui.pageTable = table.render({
|
||||
elem: '#test'
|
||||
,toolbar: '#toolbarDemo'
|
||||
,defaultToolbar: false
|
||||
,title:'审批模块列表'
|
||||
,url: "/home/cate/flow_type"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '名称',width:120}
|
||||
,{field:'department',title: '应用部门'}
|
||||
,{field:'name',title: '标识',width:150}
|
||||
,{field:'icon',title: '图标',width:220,templet: function(d){
|
||||
var html='<strong class="iconfont '+d.icon+'"></strong> '+d.icon;
|
||||
return html;
|
||||
}}
|
||||
,{field:'type_name', title: '所属分类',width:90,align:'center'}
|
||||
,{field:'status', title: '状态',width:80,align:'center',templet: function(d){
|
||||
var html1='<span class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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'){
|
||||
tool.side("/home/cate/flow_type_add?id="+obj.data.id);
|
||||
}
|
||||
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("/home/cate/flow_type_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("/home/cate/flow_type_check", { id: obj.data.id,status: 1}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',function(){
|
||||
tool.side("/home/cate/flow_type_add");
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,123 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">审批类型</h3>
|
||||
{eq name="$id" value="0"}
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">所属分类<font>*</font></td>
|
||||
<td>
|
||||
<select name="type" lay-verify="required" lay-reqText="请选择所属分类">
|
||||
<option value="">--请选择--</option>
|
||||
{volist name="$type" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray">名称<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="title" autocomplete="off" placeholder="请输入审批类型名称" lay-verify="required" lay-reqText="请输入审批类型名称" class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">标识<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="name" placeholder="请输入审批类型标识" value="" autocomplete="off" lay-verify="required" lay-reqText="请输入审批类型标识" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">图标<font>*</font></td>
|
||||
<td>
|
||||
<input style="width:200px; display:inline" class="layui-input" type="text" name="icon" value="" placeholder="请输入审批类型图标" lay-verify="required" lay-reqText="请输入审批类型图标" >
|
||||
如:icon-jichupeizhi<a href="{__GOUGU__}/icon/index.html" target="_blank" style="margin-left:10px; color:#007AFF">[查看图标]</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">应用部门</td>
|
||||
<td colspan="3">
|
||||
<div class="layui-input-inline" style="width:360px;">
|
||||
<select id="department_ids" name="department_ids" xm-selected="" xm-select="select1" xm-select-skin="default"></select>
|
||||
</div>
|
||||
<span style="color: red; font-size: 12px;">(如果不选,默认是全公司)</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<span style="color: red; font-size: 12px;">注意:新增审批类型以后,需要对应新增模板文件,模板文件名称需与标识名称一致,建议复制现有的审批类型模板文件,然后根据需求修改对应的表单即可。</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{else/}
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">所属分类<font>*</font></td>
|
||||
<td>
|
||||
<select name="type" lay-verify="required" lay-reqText="请选择所属分类">
|
||||
<option value="">--请选择--</option>
|
||||
{volist name="$type" id="vo"}
|
||||
<option value="{$vo.id}" {eq name="$detail.type" value="$vo.id"}selected=""{/eq}>{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray">名称<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="title" value="{$detail.title}" placeholder="请输入审批类型名称" lay-verify="required" lay-reqText="请输入审批类型名称" class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">标识<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="name" placeholder="请输入审批类型标识" value="{$detail.name}" autocomplete="off" lay-verify="required" lay-reqText="请输入审批类型标识" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">图标<font>*</font></td>
|
||||
<td>
|
||||
<input style="width:200px; display:inline" class="layui-input" type="text" name="icon" value="{$detail.icon}" placeholder="请输入审批类型图标" lay-verify="required" lay-reqText="请输入审批类型图标" >
|
||||
<strong class="iconfont {$detail.icon}"></strong><a href="{__GOUGU__}/icon/index.html" target="_blank" style="margin-left:10px; color:#007AFF">[查看图标]</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">应用部门</td>
|
||||
<td colspan="3">
|
||||
<div class="layui-input-inline" style="width:360px;">
|
||||
<select id="department_ids" name="department_ids" xm-selected="{$detail.department_ids}" xm-select="select1" xm-select-skin="default"></select>
|
||||
</div>
|
||||
<span style="color: red; font-size: 12px;">(如果不选,默认是全公司)</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{/eq}
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','formSelects'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,formSelects=layui.formSelects;
|
||||
//选择应用部门
|
||||
var selcted = $('#department_ids').attr('xm-selected');
|
||||
formSelects.data('select1', 'server', {
|
||||
url: '/api/index/get_department_select',
|
||||
keyword: selcted,
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(webform)', function(data){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/flow_type_add", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加行业类型</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'
|
||||
,defaultToolbar: false
|
||||
,title:'工作类型列表'
|
||||
,url: "/home/cate/industry_cate"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,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 class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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("/home/cate/industry_cate_check", { id: obj.data.id,status: 0,title: obj.data.title}, 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("/home/cate/industry_cate_check", { id: obj.data.id,status: 1,title: obj.data.title}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',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();
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/industry_cate_add", {id: id,title: value}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写类型标题');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,78 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm add-new" type="button">+ 添加办公工具</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'
|
||||
,defaultToolbar: false
|
||||
,title:'办公工具列表'
|
||||
,url: "/home/cate/links"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '书签名称',width:300}
|
||||
,{field:'url',title: '链接地址'}
|
||||
,{field:'target', title: '是否新窗口打开',width:120,align:'center',templet: function(d){
|
||||
var html1='<span class="green">是</span>';
|
||||
var html2='<span class="yellow">否</span>';
|
||||
if(d.target==1){
|
||||
return html1;
|
||||
}
|
||||
else{
|
||||
return html2;
|
||||
}
|
||||
}}
|
||||
,{field:'sort',title: '排序',width:100,align:'center'}
|
||||
,{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="del">删除</a>';
|
||||
html = '<div class="layui-btn-group">'+btn+btn1+'</div>';
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(test)',function (obj) {
|
||||
if(obj.event === 'edit'){
|
||||
tool.side('/home/cate/links_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) {
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/links_del", { id: obj.data.id,status: 1}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.add-new',function(){
|
||||
tool.side('/home/cate/links_add');
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,59 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-2">办公工具</h3>
|
||||
<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|default=''}" lay-verify="required" lay-reqText="请完善工具名称" placeholder="请完善工具名称" class="layui-input"></td>
|
||||
<td class="layui-td-gray">链接地址<font>*</font></td>
|
||||
<td><input type="text" name="url" value="{$detail.url|default=''}" lay-verify="required" lay-reqText="请完善链接地址" placeholder="请完善链接地址" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">是否新窗口打开<font>*</font></td>
|
||||
<td>
|
||||
{empty name="$detail"}
|
||||
<input type="radio" name="target" value="1" title="是" checked>
|
||||
<input type="radio" name="target" value="0" title="否" >
|
||||
{else/}
|
||||
<input type="radio" name="target" value="1" title="是" {eq name="$detail.target" value="1"} checked{/eq}>
|
||||
<input type="radio" name="target" value="0" title="否" {eq name="$detail.target" value="0"} checked{/eq}>
|
||||
{/empty}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">排序</td>
|
||||
<td><input type="text" name="sort" value="{$detail.sort|default=''}" lay-verify="number" class="layui-input"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-3">
|
||||
<input type="hidden" value="{$detail.id|default=0}" name="id">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交保存</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool;
|
||||
//监听发送
|
||||
form.on('submit(webform)', function(data){
|
||||
$.ajax({
|
||||
url: "/home/cate/links_add",
|
||||
type:'post',
|
||||
data:data.field,
|
||||
success:function(e){
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加印章类型</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'
|
||||
,defaultToolbar: false
|
||||
,title:'印章类型列表'
|
||||
,url: "/home/cate/seal_cate"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,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 class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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("/home/cate/seal_cate_check", { id: obj.data.id,status: 0,title: obj.data.title}, 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("/home/cate/seal_cate_check", { id: obj.data.id,status: 1,title: obj.data.title}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',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();
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/seal_cate_add", {id: id,title: value}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写类别标题');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加服务类型</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'
|
||||
,defaultToolbar: false
|
||||
,title:'工作类型列表'
|
||||
,url: "/home/cate/services_cate"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,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 class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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("/home/cate/services_cate_check", { id: obj.data.id,status: 0,title: obj.data.title}, 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("/home/cate/services_cate_check", { id: obj.data.id,status: 1,title: obj.data.title}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',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();
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/services_cate_add", {id: id,title: value}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写类型标题');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm addNew" type="button">+ 添加工作类型</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'
|
||||
,defaultToolbar: false
|
||||
,title:'工作类型列表'
|
||||
,url: "/home/cate/work_cate"
|
||||
,page: false
|
||||
,cellMinWidth: 80
|
||||
,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 class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</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("/home/cate/work_cate_check", { id: obj.data.id,status: 0,title: obj.data.title}, 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("/home/cate/work_cate_check", { id: obj.data.id,status: 1,title: obj.data.title}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.addNew',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();
|
||||
}
|
||||
}
|
||||
tool.post("/home/cate/work_cate_add", {id: id,title: value}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写类别标题');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,68 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">配置项</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">配置名称<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入配置名称" lay-reqText="请输入配置名称" class="layui-input" value="{$config.title|default=''}">
|
||||
</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" value="{$config.name|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<span class="red">注意:新增配置项以后,需要对应新增模板文件,模板文件名称需与标识名称一致,建议复制现有的配置模板文件,然后根据需求修改对应的表单即可。</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/conf/add", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,118 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">邮箱配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">SMTP地址<font>*</font></td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$id}">
|
||||
<input type="text" name="smtp" lay-verify="required" autocomplete="off" placeholder="请输入SMTP服务器地址" lay-reqText="请输入SMTP服务器地址" class="layui-input" value="{$config.smtp|default=''}" style="width:240px;display: inline-block;">
|
||||
<span style="color:#999; font-size:12px; margin-left:5px">如:QQ邮箱的SMTP服务器地址是smtp.qq.com,163邮箱的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" value="{$config.smtp_port|default=''}" style="width:240px;display: inline-block;"><span style="color:#999; font-size:12px; margin-left:5px">如:QQ邮箱的ssl协议方式端口号是465/587,163邮箱的ssl协议方式端口号是465/994</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">邮箱账户<font>*</font></td>
|
||||
<td><input type="text" name="smtp_user" autocomplete="off" lay-verify="required" placeholder="请输入邮箱用户名" lay-reqText="请输入邮箱用户名" class="layui-input" value="{$config.smtp_user|default=''}"style="width:240px;display: inline-block;"><span style="color:#999; font-size:12px; margin-left:5px">如:gougucms@qq.com</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">邮箱密码<font>*</font></td>
|
||||
<td><input type="password" name="smtp_pwd" lay-verify="required" autocomplete="off" placeholder="请输入邮箱密码" class="layui-input" value="{$config.smtp_pwd|default=''}" style="width:240px;display: inline-block;"><span style="color:#999; font-size:12px; margin-left:5px">不一定是登录密码,如QQ邮箱的是第三方授权登录码,要自己去开启,在邮箱的设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="layui-td-gray">发送人<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="from" autocomplete="off" lay-verify="required" placeholder="请输入要显示的发送者" lay-reqText="请输入要显示的发送者" class="layui-input" value="{$config.from|default=''}" style="width:240px; display: inline-block;">
|
||||
<span style="color:#999; font-size:12px; margin-left:5px">用于展示给发送方,如:勾股CMS系统管理员</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">显示的邮箱<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="email" lay-verify="required" autocomplete="off" placeholder="请输入要显示的发送者邮箱" lay-reqText="请输入要显示的发送者邮箱" class="layui-input" value="{$config.email|default=''}" style="width:240px;display: inline-block;">
|
||||
<span style="color:#999; font-size:12px; margin-left:5px">可以不同于上面的账户,用于展示给发送方的邮箱,如:admin@gougucms.com</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">邮件模板</td>
|
||||
<td><textarea name="template" placeholder="" class="layui-textarea" id="container">{$config.template|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool', 'tinymce'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool, tinymce = layui.tinymce;
|
||||
|
||||
var edit = tinymce.render({
|
||||
selector: "#container",
|
||||
height: 320
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
data.field.template = tinyMCE.editors['container'].getContent();
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/conf/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('body').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: "/api/index/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>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,107 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="conf" lay-filter="conf"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="status">
|
||||
<i class="layui-icon {{# if(d.status == 1){ }}green layui-icon-ok{{# } else { }}red 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: '#conf',
|
||||
title: '配置列表',
|
||||
toolbar: '#toolbarDemo',
|
||||
defaultToolbar: false,
|
||||
url: "/home/conf/index",
|
||||
cellMinWidth: 80,
|
||||
page: false, //开启分页
|
||||
limit: 20,
|
||||
cols: [
|
||||
[{
|
||||
field: 'id',
|
||||
width: 80,
|
||||
title: 'ID编号',
|
||||
align: 'center'
|
||||
}, {
|
||||
field: 'title',
|
||||
width: 200,
|
||||
title: '配置名称'
|
||||
}, {
|
||||
field: 'name',
|
||||
title: '配置标识<span class="red">(新增的模板文件名称需与标识名称一致)</span>'
|
||||
}, {
|
||||
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;
|
||||
}
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
//表头工具栏事件
|
||||
table.on('toolbar(conf)', function (obj) {
|
||||
if (obj.event === 'add') {
|
||||
tool.side("/home/conf/add");
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(conf)', function (obj) {
|
||||
var data = obj.data;
|
||||
if (obj.event === 'add') {
|
||||
tool.side('/home/conf/add?id=' + data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side('/home/conf/edit?id=' + data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'del') {
|
||||
if(obj.data.id == 1){
|
||||
layer.msg('系统配置不支持删除');
|
||||
return false;
|
||||
}
|
||||
layer.confirm('确定要删除吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
obj.del();
|
||||
layer.close(index);
|
||||
}
|
||||
}
|
||||
tool.delete("/home/conf/delete", { id: obj.data.id }, callback);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,46 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">其他配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">开发者</td>
|
||||
<td>
|
||||
<input type="hidden" value="{$id}" name="id">
|
||||
<input type="text" name="author" autocomplete="off" placeholder="请输入开发者" lay-reqText="请输入开发者" class="layui-input" value="{$config.author|default=''}">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">开发版本号</td>
|
||||
<td><input type="text" name="version" autocomplete="off" placeholder="请输入版本号" lay-reqText="请输入版本号" class="layui-input" value="{$config.version|default=''}"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/conf/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,127 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">系统配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">左侧菜单模式</td>
|
||||
<td>
|
||||
{empty name="$config.menu_mode"}
|
||||
<input type="radio" name="menu_mode" value="classical" title="经典模式" checked>
|
||||
<input type="radio" name="menu_mode" value="expand" title="展开模式" >
|
||||
{else/}
|
||||
<input type="radio" name="menu_mode" value="classical" title="经典模式" {eq name="$config.menu_mode" value="classical"}checked{/eq}>
|
||||
<input type="radio" name="menu_mode" value="expand" title="展开模式" {eq name="$config.menu_mode" value="expand"}checked{/eq}>
|
||||
{/empty}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">上传附件限制(MB)<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" lay-verify="required|number" name="upload_max_filesize" autocomplete="off" placeholder="请输入上传附件限制" lay-reqText="请输入上传附件限制" class="layui-input" value="{$config.upload_max_filesize|default='50'}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">开启新消息声音提醒</td>
|
||||
<td>
|
||||
{empty name="$config.msg_sound"}
|
||||
<input type="radio" name="msg_sound" value="1" title="开启" checked>
|
||||
<input type="radio" name="msg_sound" value="2" title="不开启">
|
||||
{else/}
|
||||
<input type="radio" name="msg_sound" value="1" title="开启" {eq name="$config.msg_sound" value="1"}checked{/eq}>
|
||||
<input type="radio" name="msg_sound" value="2" title="不开启" {eq name="$config.msg_sound" value="2"}checked{/eq}>
|
||||
{/empty}
|
||||
</td>
|
||||
<td class="layui-td-gray-3">开启系统页面水印</td>
|
||||
<td>
|
||||
{empty name="$config.watermark"}
|
||||
<input type="radio" name="watermark" value="1" title="开启" checked>
|
||||
<input type="radio" name="watermark" value="2" title="不开启">
|
||||
{else/}
|
||||
<input type="radio" name="watermark" value="1" title="开启" {eq name="$config.watermark" value="1"}checked{/eq}>
|
||||
<input type="radio" name="watermark" value="2" title="不开启" {eq name="$config.watermark" value="2"}checked{/eq}>
|
||||
{/empty}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">隐藏工作台广告<font>*</font></td>
|
||||
<td colspan="3">
|
||||
{empty name="$config.qrcode"}
|
||||
<input type="radio" name="qrcode" value="1" title="隐藏">
|
||||
<input type="radio" name="qrcode" value="2" title="不隐藏" checked>
|
||||
{else/}
|
||||
<input type="radio" name="qrcode" value="1" title="隐藏" {eq name="$config.qrcode" value="1"}checked{/eq}>
|
||||
<input type="radio" name="qrcode" value="2" title="不隐藏" {eq name="$config.qrcode" value="2"}checked{/eq}>
|
||||
{/empty}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<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" value="{$config.version|default='1.0.0'}">
|
||||
</td>
|
||||
<td class="layui-td-gray">版权信息</td>
|
||||
<td>
|
||||
<input type="text" name="copyright" autocomplete="off" placeholder="请输入版权信息" lay-reqText="请输入版权信息" readonly class="layui-input" value="{$config.copyright|default='勾股OA'}">
|
||||
</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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool, upload = layui.upload;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function(){
|
||||
parent.parent.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
tool.post("/home/conf/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
|
||||
//logo上传
|
||||
var uploadInst = upload.render({
|
||||
elem: '#uploadBtn',
|
||||
url: "/api/index/upload",
|
||||
done: function (res) {
|
||||
layer.msg(res.msg);
|
||||
if (res.code == 0) {
|
||||
//上传成功
|
||||
$('#logo input').attr('value', res.data.filepath);
|
||||
$('#logo img').attr('src', res.data.filepath);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var uploadInst2 = upload.render({
|
||||
elem: '#uploadBtn2',
|
||||
url: "/api/index/upload",
|
||||
done: function (res) {
|
||||
layer.msg(res.msg);
|
||||
if (res.code == 0) {
|
||||
//上传成功
|
||||
$('#smalllogo input').attr('value', res.data.filepath);
|
||||
$('#smalllogo img').attr('src', res.data.filepath);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,127 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">TOKEN配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">Token签发组织</td>
|
||||
<td>
|
||||
<input type="hidden" value="{$id}" name="id">
|
||||
<input type="text" name="iss" autocomplete="off" placeholder="请输入签发组织" lay-reqText="请输入签发组织" class="layui-input" value="{$config.iss|default=''}">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">Token签发作者</td>
|
||||
<td>
|
||||
<input type="text" name="aud" autocomplete="off" placeholder="请输入签发作者" lay-reqText="请输入签发作者" class="layui-input" value="{$config.aud|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">Token Secrect</td>
|
||||
<td>
|
||||
<input type="text" name="secrect" autocomplete="off" placeholder="请输入secrect" lay-reqText="请输入secrect" class="layui-input" value="{$config.secrect|default=''}">
|
||||
</td>
|
||||
<td class="layui-td-gray">Token过期时间</td>
|
||||
<td>
|
||||
<input type="text" name="exptime" autocomplete="off" placeholder="请输入过期时间" lay-reqText="请输入过期时间" class="layui-input" value="{$config.exptime|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
|
||||
<div style="padding:30px 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:12px 0;word-wrap:break-word">
|
||||
<p class="red">先点击登录,在点击测试,会有好的结果哦!</p>
|
||||
测试结果:
|
||||
<div id="res"></div>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/conf/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
var token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuZ291Z3VjbXMuY29tIiwiYXVkIjoiZ291Z3VjbXMiLCJpYXQiOjE2MjczMTY1MTgsImV4cCI6MTYyNzMyMDExOCwidWlkIjoxfQ.3soLDbwrEqn4EZtpD4h05FmvmMtJEh1LtE1vZ_ANcnI';
|
||||
function testToken() {
|
||||
$.ajax({
|
||||
headers: {
|
||||
Token: token
|
||||
},
|
||||
url: "/api/demo/test",
|
||||
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="admin"/></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: "/api/demo/login",
|
||||
type: 'post',
|
||||
data: { username: username, password: password },
|
||||
success: function (res) {
|
||||
$('#res').html(JSON.stringify(res));
|
||||
layer.msg(res.msg);
|
||||
if (res.code == 0) {
|
||||
token = res.data.token;
|
||||
layer.close(idx);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,122 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">信息配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">系统名称<font>*</font></td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$id}">
|
||||
<input type="text" name="admin_title" lay-verify="required" autocomplete="off" placeholder="请输入系统名称" lay-reqText="请输入系统名称" class="layui-input" value="{$config.admin_title|default=''}">
|
||||
</td>
|
||||
<td class="layui-td-gray">系统域名<font>*</font></td>
|
||||
<td colspan="3">
|
||||
<input type="text" name="domain" lay-verify="required" autocomplete="off" class="layui-input" placeholder="请输入系统域名" lay-reqText="请输入系统域名" value="{$config.domain|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">ICP备案号</td>
|
||||
<td>
|
||||
<input type="text" name="icp" autocomplete="off" placeholder="请输入ICP备案号" class="layui-input" value="{$config.icp|default=''}">
|
||||
</td>
|
||||
<td class="layui-td-gray" rowspan="3">系统大LOGO</td>
|
||||
<td rowspan="3" style="width: 200px;">
|
||||
<div class="layui-upload" style="width: 200px;">
|
||||
<div class="layui-upload-list" id="logo" style="width: 100%; height:64px; overflow: hidden;">
|
||||
<img src="{$config.logo|default='/static/home/images/syslogo.png'}" style="max-width: 100%; height: 64px;" />
|
||||
<input type="hidden" name="logo" value="{$config.logo|default='/static/home/images/syslogo.png'}">
|
||||
</div>
|
||||
<button type="button" class="layui-btn" style="width: 100%;" id="uploadBtn">上传LOGO</button>
|
||||
</div>
|
||||
</td>
|
||||
<td class="layui-td-gray" rowspan="3">系统小LOGO</td>
|
||||
<td rowspan="3" style="width: 180px;">
|
||||
<div class="layui-upload" style="width: 180px;">
|
||||
<div class="layui-upload-list" id="smalllogo" style="width: 100%; height:64px; overflow: hidden; text-align:center;">
|
||||
<img src="{$config.small_logo|default='/static/home/images/syslogo_small.png'}" style="max-width: 100%; height: 64px;" />
|
||||
<input type="hidden" name="small_logo" value="{$config.small_logo|default='/static/home/images/syslogo_small.png'}">
|
||||
</div>
|
||||
<button type="button" class="layui-btn" style="width: 100%;" id="uploadBtn2">上传LOGO</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">公安备案号</td>
|
||||
<td>
|
||||
<input type="text" name="beian" autocomplete="off" placeholder="请输入公安备案号" class="layui-input" value="{$config.beian|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">系统关键词<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="keywords" lay-verify="required" autocomplete="off" placeholder="多个关键词用“,”隔开" lay-reqText="请输入系统关键字" class="layui-input" value="{$config.keywords|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">系统描述<font>*</font>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<textarea name="desc" lay-verify="required" placeholder="请输入系统描述" lay-reqText="请输入系统描述" class="layui-textarea">{$config.desc|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="pt-3">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool, upload = layui.upload;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function(){
|
||||
parent.parent.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
tool.post("/home/conf/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
|
||||
//logo上传
|
||||
var uploadInst = upload.render({
|
||||
elem: '#uploadBtn',
|
||||
url: "/api/index/upload",
|
||||
done: function (res) {
|
||||
layer.msg(res.msg);
|
||||
if (res.code == 0) {
|
||||
//上传成功
|
||||
$('#logo input').attr('value', res.data.filepath);
|
||||
$('#logo img').attr('src', res.data.filepath);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var uploadInst2 = upload.render({
|
||||
elem: '#uploadBtn2',
|
||||
url: "/api/index/upload",
|
||||
done: function (res) {
|
||||
layer.msg(res.msg);
|
||||
if (res.code == 0) {
|
||||
//上传成功
|
||||
$('#smalllogo input').attr('value', res.data.filepath);
|
||||
$('#smalllogo img').attr('src', res.data.filepath);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,120 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">模块配置及数据权限配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="8" class="red" style="line-height:1.8">
|
||||
<p><strong>模块使用说明:</strong></p>
|
||||
<p>{$detail.desc}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">权限名称</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$detail.id}" />
|
||||
{$detail.title}
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td>{$detail.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">合同管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_1_str" value="{$detail.conf_1_str|default=''}" readonly placeholder="请选择权限人员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_1" value="{$detail.conf_1}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">合同编号自动生成</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_2" value="1" title="开启" {eq name="$detail.conf_2" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_2" value="0" title="不开启" {eq name="$detail.conf_2" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">是否开启关联客户<br>[销售合同]</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_3" value="1" title="关联" {eq name="$detail.conf_3" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_3" value="0" title="不关联" {eq name="$detail.conf_3" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">是否开启关联产品<br>[销售合同]</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_4" value="1" title="关联" {eq name="$detail.conf_4" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_4" value="0" title="不关联" {eq name="$detail.conf_4" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">是否开启关联服务<br>[销售合同]</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_5" value="1" title="关联" {eq name="$detail.conf_5" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_5" value="0" title="不关联" {eq name="$detail.conf_5" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">是否开启关联供应商<br>[采购合同]</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_6" value="1" title="关联" {eq name="$detail.conf_6" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_6" value="0" title="不关联" {eq name="$detail.conf_6" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">是否开启关联采购品<br>[采购合同]</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_7" value="1" title="关联" {eq name="$detail.conf_7" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_7" value="0" title="不关联" {eq name="$detail.conf_7" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合同到期前N天提醒</td>
|
||||
<td><input type="text" name="conf_10" value="{$detail.conf_10|default='30'}" lay-verify="required|number" lay-reqText="请输入合同到期前N天提醒" class="layui-input"></td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_10</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/dataauth/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,82 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">模块配置及数据权限配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="8" class="red" style="line-height:1.8">
|
||||
<p><strong>模块使用说明:</strong></p>
|
||||
<p>{$detail.desc}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">权限名称</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$detail.id}" />
|
||||
{$detail.title}
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td>{$detail.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">客户管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_1_str" value="{$detail.conf_1_str|default=''}" readonly placeholder="请选择权限人员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_1" value="{$detail.conf_1}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">每天可获取公客数</td>
|
||||
<td><input name="conf_2" value="{$detail.conf_2}" lay-verify="required|number" lay-reqText="请输入每天获取最大公客数" placeholder="输入每天每人可获取最大公客数" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">说明</td>
|
||||
<td colspan="3" class="red">如:10,当日超过该数量,该员工就不能在抢客宝里面抢客或者从公海里领取客户,等到第二天自动恢复。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">员工客户数量限制</td>
|
||||
<td><input name="conf_3" value="{$detail.conf_3}" lay-verify="required|number" lay-reqText="请输入员工客户数量限制" placeholder="请输入员工客户数量限制" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">说明</td>
|
||||
<td colspan="3" class="red">如:100,超过该数量,该员工就不能录入或者不能从公海领取客户,必须把自已的客户移到公海里,不超过该数量才能新增。</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/dataauth/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,60 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">模块配置及数据权限配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="8" class="red" style="line-height:1.8">
|
||||
<p><strong>模块使用说明:</strong></p>
|
||||
<p>{$detail.desc}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">权限名称</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$detail.id}" />
|
||||
{$detail.title}
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td>{$detail.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">知识网盘数据管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_1_str" value="{$detail.conf_1_str|default=''}" readonly placeholder="请选择权限人员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_1" value="{$detail.conf_1}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_1</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/dataauth/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,115 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">模块配置及数据权限配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="4" class="red" style="line-height:1.8">
|
||||
<p><strong>模块使用说明:</strong></p>
|
||||
<p>{$detail.desc}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">权限名称</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$detail.id}" />
|
||||
{$detail.title}
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td>{$detail.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">报销管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_1_str" value="{$detail.conf_1_str|default=''}" readonly placeholder="请选择报销管理员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_1" value="{$detail.conf_1}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">发票管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_2_str" value="{$detail.conf_2_str|default=''}" readonly placeholder="请选择发票管理员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_2" value="{$detail.conf_2}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">回款管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_3_str" value="{$detail.conf_3_str|default=''}" readonly placeholder="请选择到回款理员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_3" value="{$detail.conf_3}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">付款管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_4_str" value="{$detail.conf_4_str|default=''}" readonly placeholder="请选择付款管理员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_4" value="{$detail.conf_4}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">借支管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_5_str" value="{$detail.conf_5_str|default=''}" readonly placeholder="请选择借支管理员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_5" value="{$detail.conf_5}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">借支编号自动生成</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_9" value="1" title="开启" {eq name="$detail.conf_9" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_9" value="0" title="不开启" {eq name="$detail.conf_9" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">报销编号自动生成</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_10" value="1" title="开启" {eq name="$detail.conf_10" value="1"}checked{/eq}>
|
||||
<input type="radio" name="conf_10" value="0" title="不开启" {eq name="$detail.conf_10" value="0"}checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_10</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/dataauth/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,72 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="conf" lay-filter="conf"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<h3>模块配置及数据权限配置</h3>
|
||||
</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: '#conf',
|
||||
title: '配置列表',
|
||||
toolbar: '#toolbarDemo',
|
||||
defaultToolbar: false,
|
||||
url: "/home/dataauth/index",
|
||||
cellMinWidth: 80,
|
||||
page: false, //开启分页
|
||||
limit: 20,
|
||||
cols: [
|
||||
[{
|
||||
field: 'id',
|
||||
width: 80,
|
||||
title: 'ID编号',
|
||||
align: 'center'
|
||||
}, {
|
||||
field: 'title',
|
||||
width: 200,
|
||||
title: '权限名称'
|
||||
}, {
|
||||
field: 'name',
|
||||
width: 200,
|
||||
title: '权限标识'
|
||||
}, {
|
||||
field: 'desc',
|
||||
minWidth: 300,
|
||||
title: '描述'
|
||||
}, {
|
||||
width: 100,
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
templet: function (d) {
|
||||
var html = '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit" >编辑配置</button>';
|
||||
return html;
|
||||
}
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(conf)', function (obj) {
|
||||
var data = obj.data;
|
||||
if (obj.event === 'edit') {
|
||||
tool.side('/home/dataauth/edit?id=' + data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,80 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">模块配置及数据权限配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="8" class="red" style="line-height:1.8">
|
||||
<p><strong>模块使用说明:</strong></p>
|
||||
<p>{$detail.desc}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">权限名称</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$detail.id}" />
|
||||
{$detail.title}
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td>{$detail.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">日常办公数据管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_1_str" value="{$detail.conf_1_str|default=''}" readonly placeholder="请选择权限人员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_1" value="{$detail.conf_1}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">工作记录工时调整、删除权限设置</td>
|
||||
<td>
|
||||
<input type="radio" name="conf_2" value="1" title="不开放" {eq name="$detail.conf_2" value="1"} checked{/eq}>
|
||||
<input type="radio" name="conf_2" value="2" title="开放给员工自己" {eq name="$detail.conf_2" value="2"} checked{/eq}>
|
||||
<input type="radio" name="conf_2" value="3" title="开放给部门负责人" {eq name="$detail.conf_2" value="3"} checked{/eq}>
|
||||
<input type="radio" name="conf_2" value="4" title="开放给日常办公数据管理员" {eq name="$detail.conf_2" value="4"} checked{/eq}>
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">人事管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_3_str" value="{$detail.conf_3_str|default=''}" readonly placeholder="请选择权限人员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_3" value="{$detail.conf_3}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_3</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/dataauth/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,66 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">模块配置及数据权限配置</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="4" class="red" style="line-height:1.8">
|
||||
<p><strong>模块使用说明:</strong></p>
|
||||
<p>{$detail.desc}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">权限名称</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$detail.id}" />
|
||||
{$detail.title}
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td>{$detail.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">项目管理员</td>
|
||||
<td>
|
||||
<input type="text" name="conf_1_str" value="{$detail.conf_1_str|default=''}" readonly placeholder="请选择权限人员" autocomplete="off" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="conf_1" value="{$detail.conf_1}">
|
||||
</td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">项目任务到期<br>前N天提醒</td>
|
||||
<td><input type="text" name="conf_10" value="{$detail.conf_10|default='3'}" lay-verify="required|number" lay-reqText="请输入合同到期前N天提醒" class="layui-input"></td>
|
||||
<td class="layui-td-gray">权限标识</td>
|
||||
<td style="width:100px;">conf_10</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/dataauth/edit", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,152 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="gg-form-bar border-t border-x">
|
||||
<h3 class="pb-3">数据还原</h3>
|
||||
</div>
|
||||
<table cellspacing="0" cellpadding="0" border="0" class="layui-table layui-table-form">
|
||||
<tr style="background-color:#FAFAFA">
|
||||
<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:222px"><span>操作</span></th>
|
||||
</tr>
|
||||
{empty name="list"}
|
||||
<tr>
|
||||
<td colspan="6" align="center" style="padding:20px 0; color:#999">暂无备份数据</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='/home/database/downfile?time={$vo.data.time}&part={$i+1}'>下载备份(分卷{$i+1})</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/for}
|
||||
{/volist}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
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: "/home/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: "/home/database/import?time=" + time,
|
||||
type: 'post',
|
||||
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: "/home/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: "/home/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}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,201 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="backup" lay-filter="backup"></table>
|
||||
</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>
|
||||
</div>
|
||||
<span id="dataTips" style="font-size:12px; margin-left:10px"></span>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
function gouguInit() {
|
||||
var table = layui.table, form = layui.form;
|
||||
var tableIns = table.render({
|
||||
elem: '#backup',
|
||||
title: '数据备份',
|
||||
toolbar: '#toolbarDemo',
|
||||
defaultToolbar: false,
|
||||
url: "/home/database/database", //数据接口
|
||||
page: false,
|
||||
cols: [
|
||||
[ //表头
|
||||
{ type: 'checkbox' },
|
||||
{
|
||||
field: 'name',
|
||||
title: '数据表',
|
||||
width: 200
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
width: 100,
|
||||
templet: function (d) {
|
||||
return '<span id="table_' + d.name + '">-</span>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'engine',
|
||||
title: '存储引擎',
|
||||
align: 'center',
|
||||
width: 80
|
||||
}, {
|
||||
field: 'row_format',
|
||||
title: '行格式',
|
||||
align: 'center',
|
||||
width: 80
|
||||
}, {
|
||||
field: 'rows',
|
||||
title: '行数',
|
||||
align: 'center',
|
||||
width: 60,
|
||||
}, {
|
||||
field: 'data_size',
|
||||
title: '字节数',
|
||||
align: 'center',
|
||||
width: 80
|
||||
}, {
|
||||
field: 'data_length',
|
||||
title: '数据大小',
|
||||
align: 'center',
|
||||
width: 80
|
||||
}, {
|
||||
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("/home/database/backup", tab, function (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(backup)', 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('系统自带的备份功能仅是辅助工具,建议使用第三方专业的工具备份更安全!<br>确认要备份选中的' + len + '个数据表吗?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function (index) {
|
||||
$.ajax({
|
||||
url: "/home/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: "/home/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: "/home/database/optimize",
|
||||
type: 'post',
|
||||
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: "/home/database/repair",
|
||||
type: 'post',
|
||||
data: { 'tables': tables },
|
||||
success: function (res) {
|
||||
layer.msg(res.msg);
|
||||
if (res.code == 0) {
|
||||
setTimeout(function () {
|
||||
location.reload();
|
||||
}, 2000)
|
||||
}
|
||||
}
|
||||
})
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,468 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
body { display: flex; overflow: hidden; height: 100vh; }
|
||||
::-webkit-scrollbar { display: none; width: 6px; height: 6px; }
|
||||
::-webkit-scrollbar-thumb { border-radius: 10px; background-color: #e1e1e1; }
|
||||
.layui-tab{margin:0;}
|
||||
.container { display: flex; flex: 1; flex-direction: column; overflow: hidden; padding:12px;}
|
||||
.file-container { display: flex; flex: 1; flex-direction: column; overflow: hidden; border-radius: 2px; background: #ffffff; box-shadow: rgba(0, 0, 0, 0.05) 0 1px 2px 0; }
|
||||
.file-item {display: flex; flex: 1; justify-content: space-between; overflow: hidden; }
|
||||
.file-header {padding-top: 4px; }
|
||||
|
||||
/** 分组 **/
|
||||
.file-item .group { position: relative; display: flex; flex-direction: column; padding-top: 8px; width: 200px; border-right: 1px solid #f6f6f6; }
|
||||
.file-item .group ul::-webkit-scrollbar { display: block; }
|
||||
.file-item .group ul { flex: 1; overflow: hidden; overflow-y: auto; }
|
||||
.file-item .group ul li {display: flex; align-items: center; justify-content: space-between; cursor:pointer; padding: 0 12px; height: 38px; font-size: 13px; color: #666666; }
|
||||
.file-item .group ul li i.iconfont{ margin-right:8px; font-size:24px; color:#E1AF1A; font-weight:800;}
|
||||
.file-item .group ul li > span { display: flex; flex: 1; overflow: hidden; margin-right: 0.5rem; text-overflow: ellipsis; white-space: nowrap; }
|
||||
.file-item .group ul li.active { background: #edefff; }
|
||||
.file-item .group ul li:hover { background: #f5f7fa; }
|
||||
.file-item .group ul li .dropdown:hover dl { display: block; }
|
||||
.file-item .group ul li .dropdown dl { position: absolute; top: 36px; right: -15px; z-index: 10000; display: none; padding: 5px 0; width: 88px; border-radius: 2px; text-align: center; background-color: #ffffff; box-shadow: #cccccc 0 0 10px; }
|
||||
.file-item .group ul li .dropdown dl dd { height: 32px; line-height: 32px; }
|
||||
.file-item .group ul li .dropdown dl dd:hover { color: #4a5dff; background-color: #edefff; }
|
||||
.file-item .group ul li .dropdown dl::before { position: absolute; top: -16px; left: 44px; z-index: 12; display: block; padding: 0; width: 0; height: 0; border-top: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 8px solid #ffffff; border-left: 8px solid transparent; content: ""; box-sizing: content-box; }
|
||||
.file-item .group .footer { display: flex; align-items: center; justify-content: center; width: 100%; height: 50px; border-top: 1px solid #f2f2f2; border-right: 1px solid #f2f2f2; }
|
||||
|
||||
/** 菜单 **/
|
||||
.file-item .attach #move:hover { position: relative; opacity: 1; }
|
||||
.file-item .attach #move:hover .dropdown { display: block; background-color: #ffffff; }
|
||||
.file-item .attach .dropdown { position: absolute; top: 38px; z-index: 100000; display: none; padding: 5px 0; width: 150px; border: 1px solid #dddddd; text-align: left; background-color: #ffffff; line-height: 1.6; }
|
||||
.file-item .attach .dropdown em { font-size: 13px; font-weight: 400; color: #333333; font-style: normal; }
|
||||
.file-item .attach .dropdown em { display: block; clear: both; padding: 6px 20px; white-space: nowrap; }
|
||||
.file-item .attach .dropdown em:hover { background: #eeeeee; }
|
||||
.file-item .attach .dropdown em:first-child { font-size: 12px; color: #999999; }
|
||||
.file-item .attach .dropdown::before { position: absolute; top: -16px; left: 21px; z-index: 12; display: block; padding: 0; width: 0; height: 0; border-top: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 8px solid #ffffff; border-left: 8px solid transparent; content: ""; box-sizing: content-box; }
|
||||
.file-item .attach .dropdown::after { position: absolute; top: -18px; left: 20px; z-index: 10; display: block; padding: 0; width: 0; height: 0; border-top: 9px solid transparent; border-right: 9px solid transparent; border-bottom: 9px solid #cccccc; border-left: 9px solid transparent; content: ""; box-sizing: content-box; }
|
||||
|
||||
/** 文件 **/
|
||||
.file-item .attach { position: relative; display: flex; flex: 1; flex-direction: column; }
|
||||
.file-item .attach .header { display: flex; align-items: center; justify-content: space-between; padding:12px 15px; margin:0;}
|
||||
.file-item .attach .header .search{ display: flex; }
|
||||
.file-item .attach .header .search input { height: 30px; border-color: #eeeeee; border-top-right-radius: 0; border-bottom-right-radius: 0; }
|
||||
.file-item .attach .header .search button { border-color: #eeeeee; background: #f5f7fa; border-top-left-radius: 0; border-bottom-left-radius: 0; }
|
||||
.file-item .attach .header .search button:hover { background-color: #eeeeef; }
|
||||
.file-item .attach .subject { flex: 1; overflow: hidden; overflow-y: auto; margin: 10px; box-sizing: border-box; }
|
||||
.file-item .attach .subject:hover::-webkit-scrollbar { display: block; }
|
||||
.file-item .attach .subject ul { display: flex; flex-wrap: wrap; }
|
||||
.file-item .attach .subject ul li { position: relative; height: 120px; margin: 8px; padding: 8px; border: 1px solid rgba(0, 0, 0, 0.05); border-radius: 3px; transition: all 0.2s ease-in-out; }
|
||||
.file-item .attach .subject ul li:hover {border: 1px solid #dddddd; background-color:#f5f5f5;}
|
||||
.file-item .attach .subject ul li.on {border: 1px solid #ff5722; }
|
||||
.file-item .attach .subject ul li img { width: 50px; height: 50px; padding:25px;}
|
||||
.file-item .attach .subject ul li img.file-image { width: 100px; height: 100px; padding:0; border-radius: 2px; }
|
||||
.file-item .attach .subject ul li video { width: 100px; height: 100px; border-radius: 3px; }
|
||||
.file-item .attach .subject ul li p {overflow: hidden; margin: 5px 0 0; width: 98px; font-size: 13px; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
|
||||
.file-item .attach .subject ul li .file-check{position: absolute; width:20px; height:20px; left: 0; top: 0; display: none; font-size: 14px; border-radius:2px 0 4px 0; text-align: center; line-height: 20px; color: #ffffff; background-color:#fff; border-right:1px solid #dddddd; border-bottom:1px solid #dddddd; cursor:pointer;}
|
||||
.file-item .attach ul li .layui-btn-ctrl{position:absolute; top:0; right:0; opacity: 0;}
|
||||
.file-item .attach ul li:hover .layui-btn-ctrl{opacity: 1;}
|
||||
.file-item .attach .subject ul li:hover .file-check{display: block;}
|
||||
.file-item .attach .subject ul li.on .file-check{ display: block; background: #ff5722; border-color:#ff5722}
|
||||
|
||||
.file-item .attach .footer { display: flex; align-items: center; justify-content: end; padding: 5px 15px 0; height: 45px; border-top: 1px solid #f2f2f2; text-align: center; background: #ffffff; }
|
||||
|
||||
/** 无数据 **/
|
||||
.file-item .empty { display: flex; flex: 1; align-items: center; flex-direction: column; justify-content: center; overflow: hidden; text-align: center; color: #cccccc; }
|
||||
.file-item .empty i { font-size: 180px; }
|
||||
.file-item .empty p { width: 180px; text-align: center; }
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="container">
|
||||
<div class="file-container">
|
||||
<div class="file-header">
|
||||
<div class="layui-tabs layui-tab-brief" id="tab">
|
||||
<ul class="layui-tabs-header">
|
||||
<li class="layui-this" data-tab="0">全部</li>
|
||||
<li data-tab="1">图片</li>
|
||||
<li data-tab="2">视频</li>
|
||||
<li data-tab="3">音频</li>
|
||||
<li data-tab="4">文档</li>
|
||||
<li data-tab="5">压缩包</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="file-item">
|
||||
<!-- 分组 -->
|
||||
<div class="group">
|
||||
<ul id="group" class="groups">
|
||||
<li data-id="" class="active"><i class="iconfont icon-xiangmuguanli"></i><span>全部</span></li>
|
||||
<li data-id="0"><i class="iconfont icon-xiangmuguanli"></i><span>未分组</span></li>
|
||||
</ul>
|
||||
<div class="footer">
|
||||
<span class="layui-btn layui-btn-primary layui-btn-sm add-new">添加分组</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文件 -->
|
||||
<div class="attach">
|
||||
<!-- 工具 -->
|
||||
<form class="layui-form" lay-filter="barsearchform" style="display:block; margin:0;padding:0;">
|
||||
<div class="header">
|
||||
<div class="layui-btn-group">
|
||||
<span class="layui-btn layui-btn-sm layui-btn-normal" id="fileUpload">上传文件</span>
|
||||
<span class="layui-btn layui-btn-sm layui-btn-danger" id="fileDelete">批量删除</span>
|
||||
<span class="layui-btn layui-btn-sm layui-btn-warm" id="fileMove">移动至 <i class="layui-icon layui-icon-triangle-d"></i></span>
|
||||
<span style="margin-left:36px;"><input type="checkbox" name="select_all" lay-filter="all" title="全选"></span>
|
||||
</div>
|
||||
|
||||
<div class="search">
|
||||
<input type="hidden" name="limit" value="44" />
|
||||
<input type="hidden" name="page" value="1" />
|
||||
<input type="hidden" name="tab" value="0" />
|
||||
<input type="hidden" name="group_id" value="" />
|
||||
<label><input type="text" name="keywords" placeholder="请输入名称" autocomplete="off" class="layui-input"></label>
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<!-- 主体 -->
|
||||
<div class="subject">
|
||||
<ul id="filesBox"></ul>
|
||||
</div>
|
||||
<!-- 页脚 -->
|
||||
<div class="footer">
|
||||
<div id="laypage"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<h3 class="h3-title" style="height:28px;">审批列表</h3>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
{block name="copyright"}{/block}
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function isValidFileName(fileName) {
|
||||
const illegalChars = /[\\\/\*\:"<>|\?]/;
|
||||
return !illegalChars.test(fileName);
|
||||
}
|
||||
function gouguInit() {
|
||||
var table = layui.table, tool = layui.tool ,form = layui.form,laypage = layui.laypage,upload = layui.upload, tabs = layui.tabs, dropdown=layui.dropdown;
|
||||
let fileGroup = [{id:0,title:'未分组'}];
|
||||
tabs.on('afterChange(tab)', function(data){
|
||||
$('[name="tab"]').val(data.index);
|
||||
$('[lay-filter="webform"]').click();
|
||||
return false;
|
||||
});
|
||||
|
||||
//监听多选框点击事件 通过 lay-filter="menu"来监听
|
||||
form.on('checkbox(all)', function (data) {
|
||||
let val = data.value;
|
||||
if(data.elem.checked){
|
||||
//判断当前多选框是选中还是取消选中
|
||||
$('#filesBox li').addClass('on');
|
||||
}
|
||||
else{
|
||||
$('#filesBox li').removeClass('on');
|
||||
}
|
||||
});
|
||||
|
||||
var uploadInst = upload.render({
|
||||
elem: '#fileUpload'
|
||||
,url: "/api/index/upload"
|
||||
, accept: 'file' //普通文件
|
||||
, exts: 'jpeg|jpg|png|gif|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z|txt|mp4|mp3|wav|psd|svg' //只允许上传文件
|
||||
, before: function (obj) {
|
||||
layer.msg('上传中...', { time: 3600000 });
|
||||
}
|
||||
,done: function (res) {
|
||||
layer.msg(res.msg);
|
||||
$('[lay-filter="webform"]').click();
|
||||
}, error: function (index, upload) {
|
||||
layer.msg('上传失败');
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('click','.add-new',function(){
|
||||
add_group(0,'');
|
||||
});
|
||||
|
||||
$('#group').on('click','li',function(){
|
||||
let id=$(this).data('id');
|
||||
$(this).siblings().removeClass('active');
|
||||
$(this).addClass('active');
|
||||
$('[name="group_id"]').val(id);
|
||||
$('[lay-filter="webform"]').click();
|
||||
});
|
||||
|
||||
$('#fileDelete').on('click',function(){
|
||||
let select_array = [];
|
||||
$('#filesBox').find('li.on').each(function(index,item){
|
||||
select_array.push($(item).data('id'));
|
||||
})
|
||||
if(select_array.length<1){
|
||||
layer.msg('请先选择文件');
|
||||
}
|
||||
else{
|
||||
layer.confirm('确定要删除这些文件吗?请慎重', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
$('[lay-filter="webform"]').click();
|
||||
}
|
||||
tool.delete("/home/files/delete", {ids:select_array.join(',')}, callback);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function add_group(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){
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
tool.post("/home/files/add_group", {id: id,title: value}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写分组名称');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
var data = form.val('barsearchform');
|
||||
get_files(data);
|
||||
get_group();
|
||||
|
||||
function get_group(param){
|
||||
$.ajax({
|
||||
url:"/home/files/get_group",
|
||||
success:function(res){
|
||||
if(res.code==0){
|
||||
var group=res.data,item='';
|
||||
if(group.length>0){
|
||||
for(var a=0;a<group.length;a++){
|
||||
item+='<li data-id="'+group[a].id+'" data-title="'+group[a].title+'"><i class="iconfont icon-xiangmuguanli"></i><span>'+group[a].title+'</span><i class="layui-icon layui-icon-more-vertical dropdown-on"></i></li>';
|
||||
}
|
||||
$('#group').append(item);
|
||||
fileGroup = fileGroup.concat(group);
|
||||
// 自定义事件
|
||||
dropdown.render({
|
||||
elem: '.dropdown-on',
|
||||
trigger: 'hover',
|
||||
align: 'right',
|
||||
data: [{
|
||||
title: '重命名分组',
|
||||
id: 100
|
||||
},{
|
||||
title: '删除该分组',
|
||||
id: 101
|
||||
}],
|
||||
click: function(data, othis){
|
||||
let id = $(this.elem).parent().data('id');
|
||||
let title = $(this.elem).parent().data('title');
|
||||
if(data.id==100){
|
||||
add_group(id,title);
|
||||
}else{
|
||||
del_group(id);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
group.push({id:0,title:'未分组'});
|
||||
dropdown.render({
|
||||
elem: '#fileMove',
|
||||
data: group,
|
||||
click: function(obj){
|
||||
let select_array = [];
|
||||
$('#filesBox').find('li.on').each(function(index,item){
|
||||
select_array.push($(item).data('id'));
|
||||
})
|
||||
if(select_array.length<1){
|
||||
layer.msg('请先选择文件');
|
||||
}
|
||||
else{
|
||||
layer.confirm('确定要把选中的文件移动到『'+obj.title+'』分组吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
$('[lay-filter="webform"]').click();
|
||||
}
|
||||
tool.delete("/home/files/move", {group_id:obj.id,ids:select_array.join(',')}, callback);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function del_group(id) {
|
||||
layer.confirm('确定要删除该分组吗?请慎重', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/files/del_group", {ids:id}, callback);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function get_files(param){
|
||||
var loadIndex = layer.load(0);
|
||||
$.ajax({
|
||||
url:"/home/files/index",
|
||||
data:param,
|
||||
complete:function(){
|
||||
setTimeout(function(){
|
||||
layer.close(loadIndex)
|
||||
}, 200);
|
||||
},
|
||||
success:function(res){
|
||||
$('[name="select_all"]').prop('checked', false);
|
||||
form.render('checkbox');
|
||||
if(res.code==0){
|
||||
laypage.render({
|
||||
elem: 'laypage',
|
||||
limit:param['limit'],
|
||||
curr:param['page'],
|
||||
count: res.count, // 数据总数
|
||||
jump: function(obj, first){
|
||||
console.log(obj.curr); // 得到当前页,以便向服务端请求对应页的数据。
|
||||
console.log(obj.limit); // 得到每页显示的条数
|
||||
// 首次不执行
|
||||
if(!first){
|
||||
var data = form.val('barsearchform');
|
||||
data['page'] = obj.curr;
|
||||
get_files(data);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var item=res.data,li='';
|
||||
if(item.length>0){
|
||||
for(var a=0;a<item.length;a++){
|
||||
let image = ['jpg','jpeg','png','gif'];
|
||||
let office = ['doc','docx','xls','xlsx','ppt','pptx'];
|
||||
let zip = ['zip','rar','7z','gz','tar'];
|
||||
let video = ['mpg','mp4','mpeg','avi','wmv','mov','flv','m4v'];
|
||||
let audio = ['mp3','wav','wma','flac','midi'];
|
||||
|
||||
let type = 0,ext="zip";
|
||||
// 判断元素是否在数组中
|
||||
let path='/static/home/images/icon/file.png';
|
||||
if (image.includes(item[a].fileext)) {
|
||||
path=item[a].thumbpath;
|
||||
type = 1;
|
||||
ext="image";
|
||||
}
|
||||
if (item[a].fileext == 'pdf'||item[a].fileext == 'txt') {
|
||||
type = 1;
|
||||
ext="pdf";
|
||||
path='/static/home/images/icon/'+item[a].fileext+'.png';
|
||||
}
|
||||
if (office.includes(item[a].fileext)) {
|
||||
type = 1;
|
||||
ext="office";
|
||||
path='/static/home/images/icon/'+item[a].fileext+'.png';
|
||||
}
|
||||
if (video.includes(item[a].fileext)) {
|
||||
type = 1;
|
||||
ext="video";
|
||||
path='/static/home/images/icon/video.png';
|
||||
}
|
||||
if (audio.includes(item[a].fileext)) {
|
||||
type = 1;
|
||||
ext="audio";
|
||||
path='/static/home/images/icon/audio.png';
|
||||
}
|
||||
if (zip.includes(item[a].fileext)) {
|
||||
type = 1;
|
||||
ext="zip";
|
||||
path='/static/home/images/icon/rar.png';
|
||||
}
|
||||
|
||||
ctrl = '<span class="layui-btn layui-btn-xs layui-btn-normal file-ctrl" data-ctrl="edit" data-id="'+item[a].id+'" data-fileid="'+item[a].id+'" data-href="'+item[a].filepath+'" data-filename="'+item[a].name+'" data-ext="'+ext+'" data-type="'+type+'">操作</span>';
|
||||
|
||||
li+='<li data-id="'+item[a].id+'" data-title="'+item[a].name+'" data-ext="'+item[a].fileext+'"><img src="'+path+'" alt="'+item[a].name+'" style="object-fit: contain;" class="file-items file-'+ext+'"><p title="'+item[a].name+'">'+item[a].name+'</p><div class="layui-btn-ctrl">'+ctrl+'<span class="name-edit green" style="display:none;" data-id="'+item[a].id+'" data-fileid="'+item[a].id+'" id="fileEdit'+item[a].id+'" title="重命名"></span><span class="file-delete red" style="display:none;" data-id="'+item[a].id+'" data-fileid="'+item[a].id+'" id="fileDel'+item[a].id+'" title="删除"></span></div><div class="file-check">✔</div></li>';
|
||||
}
|
||||
$('#filesBox').html(li);
|
||||
$('#laypage').show();
|
||||
}
|
||||
else{
|
||||
$('#filesBox').html('<div class="empty"><i class="layui-icon layui-icon-upload"></i><p>无文件文件,赶紧去上传吧!</p></div>');
|
||||
$('#laypage').hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('#filesBox').on('click','.file-check',function(){
|
||||
$(this).parent().toggleClass("on");
|
||||
})
|
||||
|
||||
$('#filesBox').on('click','.file-delete',function(){
|
||||
let id = $(this).parent().parent().data('id');
|
||||
layer.confirm('确定要删除该文件吗?请慎重', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
$('[lay-filter="webform"]').click();
|
||||
}
|
||||
tool.delete("/home/files/delete", {ids:id}, callback);
|
||||
});
|
||||
})
|
||||
|
||||
$('#filesBox').on('click','.name-edit',function(){
|
||||
let id = $(this).parent().parent().data('id');
|
||||
let title = $(this).parent().parent().data('title');
|
||||
let ext = $(this).parent().parent().data('ext');
|
||||
layer.prompt({
|
||||
title: '重命名',
|
||||
value: title.replace(/\.[^.]+$/, ""),
|
||||
yes: function(index, layero) {
|
||||
// 获取文本框输入的值
|
||||
var value = layero.find(".layui-layer-input").val();
|
||||
if (value!='') {
|
||||
if(isValidFileName(value)==false){
|
||||
layer.msg('文件名不能包含下列任何字符:\/:*?".<>|');
|
||||
return false;
|
||||
}
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
$('[lay-filter="webform"]').click();
|
||||
}
|
||||
tool.post("/home/files/edit", {id: id,title: value+'.'+ext}, callback);
|
||||
layer.close(index);
|
||||
} else {
|
||||
layer.msg('请填写文件名称');
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function(data) {
|
||||
get_files(data.field);
|
||||
return false;
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,131 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.tree-left{width:200px; float:left; height:calc(100vh - 79px); overflow-y: auto; border:1px solid #eeeeee; border-right:0; background-color:#fbfbfb; padding:12px 12px 12px 5px;}
|
||||
.tree-left::-webkit-scrollbar {width: 0;}
|
||||
.tree-left h3{font-size:16px; height:30px; padding-left:10px; font-weight:800}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="tree-left">
|
||||
<h3>企业通讯录</h3>
|
||||
<div id="depament"></div>
|
||||
</div>
|
||||
<div class="body-table" style="margin-left:200px; overflow:hidden;">
|
||||
<form class="layui-form gg-form-bar border-t border-x" lay-filter="barsearchform">
|
||||
<div class="layui-input-inline" style="width:360px">
|
||||
<input type="text" name="keywords" placeholder="关键字,如:ID号/姓名/登录账号/手机号码/电子邮箱" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="thumb">
|
||||
<img src="{{d.thumb}}" width="30" height="30" />
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus, tool = layui.tool,tree = layui.tree,form = layui.form;
|
||||
$.ajax({
|
||||
url: "/api/index/get_department_tree",
|
||||
type:'get',
|
||||
success:function(res){
|
||||
//仅节点左侧图标控制收缩
|
||||
tree.render({
|
||||
elem: '#depament',
|
||||
data: res.trees,
|
||||
onlyIconControl: true, //是否仅允许节点左侧图标控制展开收缩
|
||||
click: function(obj){
|
||||
//layer.msg(JSON.stringify(obj.data));
|
||||
$('#depament').find('.layui-tree-main').removeClass('on');
|
||||
$(obj.elem).find('.layui-tree-main').eq(0).addClass('on');
|
||||
layui.pageTable.reload({
|
||||
where: {did: obj.data.id}
|
||||
,page:{curr:1}
|
||||
});
|
||||
$('[name="keywords"]').val('');
|
||||
layui.form.render('select');
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: '#test',
|
||||
title: '通讯录',
|
||||
url: "/home/index/contacts_book", //数据接口
|
||||
height: 'full-114',
|
||||
cols: [
|
||||
[{
|
||||
field: 'thumb',
|
||||
title: '头像',
|
||||
toolbar: '#thumb',
|
||||
align: 'center',
|
||||
width: 60
|
||||
}, {
|
||||
field: 'name',
|
||||
title: '用户姓名',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'mobile',
|
||||
title: '手机号码',
|
||||
align: 'center',
|
||||
width: 120
|
||||
},{
|
||||
field: 'email',
|
||||
title: '电子邮箱'
|
||||
},{
|
||||
field: 'sex',
|
||||
title: '性别',
|
||||
align: 'center',
|
||||
width: 60,
|
||||
templet: function (d) {
|
||||
var html = '未知';
|
||||
if(d.sex == 1){
|
||||
html = '男'
|
||||
}
|
||||
else if(d.sex == 2){
|
||||
html = '女'
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'department',
|
||||
title: '所在部门',
|
||||
width: 120
|
||||
},{
|
||||
field: 'departments',
|
||||
title: '次要部门',
|
||||
width: 200
|
||||
}, {
|
||||
field: 'position',
|
||||
title: '岗位职称',
|
||||
align: 'center',
|
||||
width: 100
|
||||
}, {
|
||||
field: 'entry_time',
|
||||
title: '入职日期',
|
||||
align: 'center',
|
||||
width: 100
|
||||
}
|
||||
]
|
||||
]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,74 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
{notempty name="$admin.reg_pwd"}
|
||||
<div style="text-align:center; padding:20px 0; font-size:18px; color:#FF5722">初始化密码才能正常使用系统</div>
|
||||
{/notempty}
|
||||
<h3 class="pb-3">重置密码</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">旧密码<font>*</font></td>
|
||||
<td>
|
||||
<input type="password" lay-verify="required" name="old_pwd" placeholder="请输入旧密码" lay-reqText="请输入旧密码" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">用户名</td>
|
||||
<td>{$admin.username}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">新密码<font>*</font></td>
|
||||
<td>
|
||||
<input type="password" lay-verify="required" name="pwd" placeholder="请输入新密码" lay-reqText="请输入新密码" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">确认新密码<font>*</font></td>
|
||||
<td>
|
||||
<input type="password" lay-verify="required" name="pwd_confirm" placeholder="请再次输入新密码" lay-reqText="请再次输入新密码" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
$.ajax({
|
||||
url: "/home/index/edit_password",
|
||||
type: 'post',
|
||||
data: data.field,
|
||||
success: function (e) {
|
||||
if (e.code == 0) {
|
||||
layer.msg('修改密码成功,使用新密码登录');
|
||||
//注销
|
||||
$.ajax({
|
||||
url: "/home/login/login_out.html",
|
||||
success: function (e) {
|
||||
if (e.code == 0) {
|
||||
setTimeout(function () {
|
||||
parent.location.href = "/home/login/index.html"
|
||||
}, 2000)
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,108 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">修改个人信息</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">用户名</td>
|
||||
<td>{$admin.username}</td>
|
||||
<td class="layui-td-gray">姓名</td>
|
||||
<td>{$admin.name}</td>
|
||||
<td class="layui-td-gray" rowspan="4">头像</td>
|
||||
<td rowspan="4">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn layui-btn-normal" id="test1">上传头像</button>
|
||||
<div class="layui-upload-list" id="demo1">
|
||||
<img src="{$admin.thumb}" width="100" />
|
||||
<input type="hidden" name="thumb" value="{$admin.thumb}">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">手机号码</td>
|
||||
<td>{$admin.mobile}</td>
|
||||
<td class="layui-td-gray">性别</td>
|
||||
<td>
|
||||
<input type="radio" name="sex" value="1" title="男" {eq name="$admin.sex" value="1"} checked{/eq}>
|
||||
<input type="radio" name="sex" value="2" title="女" {eq name="$admin.sex" value="2"} checked{/eq}>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">所在部门</td>
|
||||
<td>{$admin.department}</td>
|
||||
<td class="layui-td-gray">岗位职称</td>
|
||||
<td>{$admin.position}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">员工类型</td>
|
||||
<td>
|
||||
{eq name="$admin.type" value="3"}<span style="color:#5FB878">实 习 生</span>{/eq}
|
||||
{eq name="$admin.type" value="2"}<span style="color:#01AAED">试用员工</span>{/eq}
|
||||
{eq name="$admin.type" value="1"}<span style="color:#393D49">正式员工</span>{/eq}
|
||||
</td>
|
||||
<td class="layui-td-gray">入职日期</td>
|
||||
<td>
|
||||
{$admin.entry_time | date='Y-m-d'}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">个人简介</td>
|
||||
<td colspan="5">
|
||||
<textarea name="desc" placeholder="请输入个人简介" class="layui-textarea">{$admin.desc|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,upload = layui.upload;
|
||||
//头像上传
|
||||
var uploadInst = upload.render({
|
||||
elem: '#test1',
|
||||
url: "/api/index/upload",
|
||||
done: function (res) {
|
||||
layer.msg(res.msg);
|
||||
if (res.code == 0) {
|
||||
//上传成功
|
||||
$('#demo1 input').attr('value', res.data.filepath);
|
||||
$('#demo1 img').attr('src', res.data.filepath);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
$.ajax({
|
||||
url: "/home/index/edit_personal",
|
||||
type: 'post',
|
||||
data: data.field,
|
||||
success: function (e) {
|
||||
if (e.code == 0) {
|
||||
layer.confirm('保存成功,关闭本页面吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
parent.layui.tool.tabClose();
|
||||
layer.close(index);
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,267 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="{__GOUGU__}/gougu/css/layout.css" media="all">
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="layui-layout-body">
|
||||
<div id="GouguApp">
|
||||
<div class="layui-layout gg-layout layout-menu-{$system.menu_mode|default='classical'}">
|
||||
<div class="layui-header">
|
||||
<!-- 头部区域 -->
|
||||
<div class="layui-layout-left">
|
||||
<span class="gg-head-item">
|
||||
<a href="javascript:;" gg-event="shrink" title="侧边伸缩"><i class="layui-icon layui-icon-shrink-right"></i></a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-cache">
|
||||
<a href="javascript:;" gg-event="cache" data-href="/api/index/cache_clear" title="清空缓存"><i class="layui-icon layui-icon-fonts-clear"></i></a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-home">
|
||||
<a href="https://www.gougucms.com/home/pages/detail/s/gouguoa.html" target="_blank" title="前台首页"><i class="layui-icon layui-icon-website"></i></a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-home">
|
||||
<a class="tab-a" data-href="/crud/crud/index" data-title="简单CRUD" title="简单CRUD"><i class="layui-icon layui-icon-template"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="layui-layout-right">
|
||||
<span class="gg-head-item gg-head-refresh">
|
||||
<a href="javascript:;" class="refreshThis" gg-event="refresh" title="刷新页面">
|
||||
<i class="layui-icon layui-icon-refresh"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-screen" title="切换全屏">
|
||||
<a href="javascript:;" gg-event="screen" data-screen="full">
|
||||
<i class="fullScreen layui-icon layui-icon-screen-full"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-set">
|
||||
<a href="javascript:;" id="theme" title="切换主题">
|
||||
<i class="layui-icon layui-icon-set"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-set">
|
||||
<a href="/home/login/lock.html" title="锁屏">
|
||||
<i class="iconfont icon-suozhu" style="font-size:21px; font-weight:800"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-message">
|
||||
<a href="javascript:;" data-href="/home/message/inbox" data-id="1000" data-title="消息中心" class="tab-a" title="消息中心">
|
||||
<i class="layui-icon layui-icon-notice"></i>
|
||||
<!-- 如果有新消息,则显示 -->
|
||||
<div class="gg-message-num" id="msgNum" style="display: none;"><span>0</span></div>
|
||||
</a>
|
||||
</span>
|
||||
<span class="gg-head-item gg-head-avatar">
|
||||
<ul class="layui-nav">
|
||||
<li class="layui-nav-item">
|
||||
<a href="javascript:;">
|
||||
<img src="{$login_admin.thumb}" onerror="javascript:this.src='{__IMG__}/nonepic360x360.jpg';this.onerror=null;">
|
||||
<cite>{$login_admin.nickname}</cite>
|
||||
</a>
|
||||
<dl class="layui-nav-child" style="text-align: center; cursor: pointer;">
|
||||
<dd><a data-href="/home/index/edit_personal" data-id="1001" data-title="基本资料" class="tab-a">基本资料</a></dd>
|
||||
<dd><a data-href="/home/index/edit_password" data-id="1002" data-title="修改密码" class="tab-a">修改密码</a></dd>
|
||||
<hr>
|
||||
<dd gg-event="logout"><a>退出</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 侧边菜单 -->
|
||||
{empty name="$system.menu_mode"}
|
||||
{include file="/index/menu_classical" /}
|
||||
{else/}
|
||||
{if ($system.menu_mode == 'expand') }
|
||||
{include file="/index/menu_expand" /}
|
||||
{else/}
|
||||
{include file="/index/menu_classical" /}
|
||||
{/if}
|
||||
{/empty}
|
||||
<!-- 页面标签 -->
|
||||
<div id="pageTabs" class="page-tabs">
|
||||
<div class="layui-icon gg-tabs-control layui-icon-prev" gg-event="tabRollLeft"></div>
|
||||
<div class="layui-icon gg-tabs-control layui-icon-next" gg-event="tabRollRight"></div>
|
||||
<div class="layui-icon gg-tabs-control layui-icon-down">
|
||||
<ul class="layui-nav gg-tabs-select">
|
||||
<li class="layui-nav-item">
|
||||
<a href="javascript:;"></a>
|
||||
<dl class="layui-nav-child layui-anim-fadein">
|
||||
<dd gg-event="closeThisTabs"><a href="javascript:;">关闭当前</a></dd>
|
||||
<dd gg-event="closeOtherTabs"><a href="javascript:;">关闭其它</a></dd>
|
||||
<dd gg-event="closeAllTabs"><a href="javascript:;">关闭全部</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="layui-tab gg-admin-tab" lay-unauto lay-allowClose="true" lay-filter="gg-admin-tab">
|
||||
<ul class="layui-tab-title" id="pageTabUl">
|
||||
<li lay-id="0" lay-attr="view/home/index.html" class="layui-this"><i class="iconfont icon-xueshuguanli"></i></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 主体内容 -->
|
||||
<div class="layui-body" id="GouguAppBody">
|
||||
<div class="gg-tab-page layui-show" id="tabItem0" data-id="0">
|
||||
<iframe id="0" data-frameid="0" title="勾股OA" name="myiframe" src="{:url('/home/index/main')}" frameborder="0" data-timestamp="0" align="left" width="100%" height="100%" scrolling="yes"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 辅助元素,用于移动设备下遮罩 -->
|
||||
<div class="gg-body-shade" gg-event="shade"></div>
|
||||
<!-- 新消息通知 -->
|
||||
<div class="notification" style="display:none;">
|
||||
<audio id="msgSound"><source src="{__STATIC__}/home/file/msg.mp3" type="audio/mpeg"></audio>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /主体 -->
|
||||
{/block}
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const msg_sound = {$system.msg_sound|default=1};
|
||||
const watermark = {$system.watermark|default=1};
|
||||
const watermarkTxt = '{$admin.name|default="勾股OA"} {:substr($admin.mobile, -4)}';
|
||||
const moduleInit = ['tool','admin'];
|
||||
function gouguInit() {
|
||||
let admin = layui.admin;
|
||||
let tabs = admin.getCookie('gougutab');
|
||||
if(tabs && tabs!=''){
|
||||
let tab_parse = JSON.parse(tabs);
|
||||
let tab_id = tab_parse.tab_id,tab_array = tab_parse.tab_array;
|
||||
if(tab_array.length>0){
|
||||
for(let a=0; a<tab_array.length;a++){
|
||||
admin.tabTem(tab_array[a].id, tab_array[a].url,tab_array[a].title);
|
||||
}
|
||||
if(tab_id>0){
|
||||
admin.tabChange(tab_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
admin.loading();
|
||||
menuInit();
|
||||
if(watermark==1){
|
||||
createWatermark();
|
||||
}
|
||||
$('#GouguApp').on("click",'[gg-event="logout"]',function () {
|
||||
layer.confirm('确认注销登录吗?', { icon: 7, title: '警告' }, function (index) {
|
||||
//注销
|
||||
$.ajax({
|
||||
url: "/home/login/login_out",
|
||||
success: function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function () {
|
||||
location.href = "{:url('home/login/index')}"
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
layui.dropdown.render({
|
||||
elem: '#theme',
|
||||
trigger: 'mousedown',
|
||||
align: 'center',
|
||||
data: [{
|
||||
title: '经典黑',
|
||||
theme: 'black'
|
||||
},{
|
||||
title: '简约白',
|
||||
theme: 'white'
|
||||
},{
|
||||
title: '海军蓝',
|
||||
theme: 'blue'
|
||||
}],
|
||||
click: function(data, othis){
|
||||
$.ajax({
|
||||
url: "/home/index/set_theme",
|
||||
data:{'theme':data.theme},
|
||||
success: function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function () {
|
||||
parent.location.reload();
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
//轮循获取消息
|
||||
let msg_num = 0,msg_bool=false;
|
||||
const msgSound = document.getElementById("msgSound");
|
||||
$(document).ready(function(){
|
||||
$(document).one('click',function(){
|
||||
msg_bool = true;
|
||||
//console.log("页面被点击了");
|
||||
});
|
||||
});
|
||||
|
||||
$("#GouguAppBody").find('.gg-tab-page.layui-show iframe').on("load", function() {
|
||||
var iframeDocument = $(this).contents();
|
||||
iframeDocument.one('click',function(){
|
||||
msg_bool = true;
|
||||
//console.log("子页面被点击了");
|
||||
});
|
||||
});
|
||||
|
||||
var getStatus = setInterval(function () {
|
||||
$.ajax({
|
||||
url: "/api/index/get_msg",
|
||||
type:'post',
|
||||
success:function(e){
|
||||
if(e.code==0 && e.data!==''){
|
||||
if(e.data>0){
|
||||
$('#msgNum').show().find('span').html(e.data);
|
||||
if(e.data!=msg_num && msg_bool == true && msg_sound==1){
|
||||
msgSound.play();
|
||||
msg_num = e.data;
|
||||
}
|
||||
}
|
||||
else{
|
||||
$('#msgNum').hide().find('span').html(0);
|
||||
}
|
||||
}else{
|
||||
layer.closeAll();
|
||||
}
|
||||
}
|
||||
})
|
||||
}, 10000);
|
||||
}
|
||||
|
||||
function createWatermark(){
|
||||
var canvas = document.createElement('canvas');
|
||||
canvas.width = 300;
|
||||
canvas.height = 200;
|
||||
var ctx = canvas.getContext('2d');
|
||||
ctx.font = '14px Arial';
|
||||
ctx.fillStyle = '#dddddd';
|
||||
ctx.textAlign = 'left';
|
||||
ctx.textBaseline = 'top';
|
||||
ctx.rotate(15 * Math.PI / 180);
|
||||
ctx.fillText(watermarkTxt, 20, 50);
|
||||
ctx.fillText(watermarkTxt, 180, 120);
|
||||
var dataURL = canvas.toDataURL('image/png');
|
||||
let node = document.createElement("div");
|
||||
node.style.pointerEvents = "none";
|
||||
node.style.position = "fixed";
|
||||
node.style.width = "100%";
|
||||
node.style.height = "100%";
|
||||
node.style.top = "0";
|
||||
node.style.left = "0";
|
||||
node.style.opacity = "0.36";
|
||||
node.style.zIndex = "998";
|
||||
node.style.background = 'url("' + dataURL + '") 0 0 repeat';
|
||||
// 将创建的元素插入body中,作为body的子元素
|
||||
document.body.appendChild(node);
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,37 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">员工动态<a data-title="员工动态" data-href="/home/index/log_list" class="pull-right tab-a" style="font-size:12px; margin-top:3px; float:right;">更多</a></div>
|
||||
<div class="layui-card-body">
|
||||
<ul class="layui-timeline" id="logs"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//动态
|
||||
function layoutAction() {
|
||||
$.ajax({
|
||||
url: "/home/index/log_list",
|
||||
type: 'get',
|
||||
data: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
success: function (e) {
|
||||
if (e.code == 0) {
|
||||
var html = '';
|
||||
$.each(e.data, function (key, value) {
|
||||
html += '<li class="layui-timeline-item">\
|
||||
<i class="layui-icon layui-timeline-axis"></i>\
|
||||
<div class="layui-timeline-content layui-text">\
|
||||
<div class="layui-timeline-title"><span title="'+ value.id + '">' + value.times + '</span>,' + value.content + '</div>\
|
||||
</div>\
|
||||
</li>';
|
||||
});
|
||||
$('#logs').html(html);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,35 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">办公审批<a href="javascript:;" data-href="/home/approve/index" class="side-a pull-right" style="font-size:12px; margin-top:3px; float:right;">去申请</a></div>
|
||||
<div class="layui-card-body layui-short-menu p-3">
|
||||
<ul class="layui-row layui-col-space12">
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" data-href="/home/approve/index" class="side-a">
|
||||
<i class="iconfont icon-kechengziyuanguanli"></i>
|
||||
<cite>审批申请</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" data-href="/home/approve/mylist" class="side-a">
|
||||
<i class="iconfont icon-jiaoshiguanli"></i>
|
||||
<cite>我申请的</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" data-href="/home/approve/checklist" class="side-a">
|
||||
<i class="iconfont icon-tuiguangguanli"></i>
|
||||
<cite>我处理的</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" data-href="/home/approve/copylist" class="side-a">
|
||||
<i class="iconfont icon-xueshengchengji"></i>
|
||||
<cite>抄送给我的</cite>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,122 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div id="chartView" style="width: 100%;height:300px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var chartView;
|
||||
function layoutChartView() {
|
||||
chartView = echarts.init(document.getElementById('chartView'));
|
||||
$.ajax({
|
||||
url: "/home/api/get_last_data",
|
||||
type: 'get',
|
||||
data: {},
|
||||
success: function (e) {
|
||||
if (e.code == 0) {
|
||||
var data_first = e.data.data_first;
|
||||
var data_second = e.data.data_second;
|
||||
var myDate = new Date();
|
||||
var nowHour = myDate.getHours(); //获取当前小时数(0-23)
|
||||
var xData = [];
|
||||
var yData1 = [];
|
||||
var yData2 = [];
|
||||
$.each(data_first, function (key, value) {
|
||||
if (key <= nowHour) {
|
||||
yData1.push(value);
|
||||
}
|
||||
});
|
||||
$.each(data_second, function (key, value) {
|
||||
xData.push(setHour(key));
|
||||
yData2.push(value);
|
||||
});
|
||||
var ops = {
|
||||
title: {
|
||||
top: '12px',
|
||||
text: '今日与昨日员工活跃度',
|
||||
left: '6px',
|
||||
textStyle: {
|
||||
fontSize: '18',
|
||||
color: '#333',
|
||||
}
|
||||
},
|
||||
color: ["#1AAD19", "#1890FF"],
|
||||
grid: {
|
||||
left: '16px',
|
||||
right: '30px',
|
||||
bottom: '12px',
|
||||
top: '60px',
|
||||
containLabel: true
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'cross',
|
||||
crossStyle: {
|
||||
color: '#999'
|
||||
}
|
||||
}
|
||||
},
|
||||
toolbox: {
|
||||
show: true,
|
||||
},
|
||||
legend: {
|
||||
data: ["今日", "昨日"],
|
||||
top: '16px',
|
||||
},
|
||||
xAxis: [{
|
||||
type: "category",
|
||||
boundaryGap: !1,
|
||||
data: xData,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: '#999999',
|
||||
width: 1,
|
||||
}
|
||||
},
|
||||
}],
|
||||
yAxis: [{
|
||||
type: "value",
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: '#999999',
|
||||
width: 1,
|
||||
}
|
||||
},
|
||||
}],
|
||||
series: [{
|
||||
name: "今日",
|
||||
type: "line",
|
||||
smooth: !0,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
areaStyle: {
|
||||
type: "default",
|
||||
opacity: 0.2
|
||||
}
|
||||
}
|
||||
},
|
||||
data: yData1
|
||||
}, {
|
||||
name: "昨日",
|
||||
type: "line",
|
||||
smooth: !0,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
areaStyle: {
|
||||
type: "default",
|
||||
opacity: 0.2
|
||||
}
|
||||
}
|
||||
},
|
||||
data: yData2
|
||||
}]
|
||||
}
|
||||
chartView.setOption(ops);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,86 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div id="chartYear" style="width: 100%;height:240px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var myChart;
|
||||
function layoutChartYear() {
|
||||
myChart = echarts.init(document.getElementById('chartYear'));
|
||||
$.ajax({
|
||||
url: "/home/api/get_view_data",
|
||||
type: 'get',
|
||||
data: {},
|
||||
success: function (e) {
|
||||
if (e.code == 0) {
|
||||
let archiveCalendar= e.data.data_three;
|
||||
is_log=1;
|
||||
//console.log(archiveCalendar);
|
||||
let option = {
|
||||
title: {
|
||||
top: '12px',
|
||||
text: '近一年员工活跃度',
|
||||
left: '8px',
|
||||
textStyle: {
|
||||
fontSize: '18',
|
||||
color: '#333',
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
padding: 6,
|
||||
formatter: function (obj) {
|
||||
var value = obj.value;
|
||||
return '<div style="font-size: 12px;">' + value[0] + '员工活跃度:' + value[1] + '</div>';
|
||||
}
|
||||
},
|
||||
visualMap: {
|
||||
min: 0,
|
||||
max: 300,
|
||||
show: false,
|
||||
inRange: {
|
||||
color: ['#fafafa', '#1AAD19']
|
||||
}
|
||||
},
|
||||
calendar: {
|
||||
top: 75,
|
||||
left: 52,
|
||||
right: 20,
|
||||
range: getRange(),
|
||||
cellSize: ['auto', 21],
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
color: '#aaa',
|
||||
type: 'dashed'
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
borderWidth: 0.5
|
||||
},
|
||||
yearLabel: { show: false },
|
||||
monthLabel: {
|
||||
nameMap: 'cn',
|
||||
fontSize: 12
|
||||
},
|
||||
dayLabel: {
|
||||
show: true,
|
||||
formatter: '{start} 1st',
|
||||
fontWeight: 'lighter',
|
||||
nameMap: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
type: 'heatmap',
|
||||
coordinateSystem: 'calendar',
|
||||
calendarIndex: 0,
|
||||
data: getDay(archiveCalendar)
|
||||
}]
|
||||
};
|
||||
myChart.setOption(option);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,19 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">待办事项</div>
|
||||
<div class="layui-card-body layui-matter-item p-3">
|
||||
<ul class="layui-row layui-col-space12">
|
||||
{volist name="$handle" id="vo"}
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" data-href="{$vo.url}" data-id="{$vo.id}" class="tab-a" data-title="{$vo.name}" style="background-color:#F8FAFF">
|
||||
<p>{$vo.name}</p>
|
||||
<p class="pt-3"><cite class="blue">{$vo.num}</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card panel-num">
|
||||
<table>
|
||||
<tr>
|
||||
{volist name="$total" id="vo"}
|
||||
<td>
|
||||
<div class="num-title">{$vo.name}</div>
|
||||
<div class="blue">{$vo.num}</div>
|
||||
</td>
|
||||
{/volist}
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,39 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">待办事项</div>
|
||||
<div class="layui-card-body layui-matter-item p-3">
|
||||
<ul class="layui-row layui-col-space12">
|
||||
{volist name="$handle" id="vo"}
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" data-href="{$vo.url}" data-id="{$vo.id}" class="tab-a" data-title="{$vo.name}" style="background-color:#F8FAFF">
|
||||
<p>{$vo.name}</p>
|
||||
<p class="pt-3"><cite class="blue">{$vo.num}</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">紧急事项</div>
|
||||
<div class="layui-card-body layui-matter-item p-3">
|
||||
<ul class="layui-row layui-col-space12">
|
||||
{volist name="$todue" id="vo"}
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" data-href="{$vo.url}" data-id="{$vo.id}" class="tab-a" data-title="{$vo.name}" style="background-color:#FFF9F8">
|
||||
<p>{$vo.name}</p>
|
||||
<p class="pt-3"><cite class="red">{$vo.num}</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,72 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card layui-right-bar" style="height:99px;">
|
||||
<ul class="p-3">
|
||||
<li class="layui-col-xs3" style="border-right:1px solid #eeeeee;">
|
||||
<a href="javascript:;" data-href="/home/index/contacts_book" data-id="2000" class="tab-a" data-title="通讯录">
|
||||
<i class="iconfont icon-huamingce"></i>
|
||||
<cite>通讯录</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3" style="border-right:1px solid #eeeeee;">
|
||||
<a href="javascript:;" data-href="/oa/plan/calendar" data-id="100" class="tab-a" data-title="日程安排">
|
||||
<i class="iconfont icon-kaoshijihua"></i>
|
||||
<cite>日程安排</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3" style="border-right:1px solid #eeeeee;">
|
||||
<a href="javascript:;" class="report-add">
|
||||
<i class="iconfont icon-rizhiguanli"></i>
|
||||
<cite>+工作汇报</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a href="javascript:;" class="work-add">
|
||||
<i class="iconfont icon-renwujincheng"></i>
|
||||
<cite>+工作记录</cite>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
function layoutFastentry(tool,work,table){
|
||||
$('.work-add').on('click',function(){
|
||||
work.add(0,{'id':0});
|
||||
})
|
||||
$('.report-add').on('click',function(){
|
||||
var type=[{'id':1,'title':'日报'},{'id':2,'title':'周报'},{'id':3,'title':'月报'}];
|
||||
var tablereport;
|
||||
layer.open({
|
||||
title:'选择汇报类型',
|
||||
type:1,
|
||||
area:['360px','300px'],
|
||||
content:'<div style="width:325px; padding:15px 15px 0"><div id="selectType"></div></div>',
|
||||
success:function(){
|
||||
tablereport=table.render({
|
||||
elem: '#selectType',
|
||||
cols: [[ //标题栏
|
||||
{type:'radio',title: '选择'},
|
||||
{field: 'title', title: '汇报类型'}
|
||||
]],
|
||||
data: type
|
||||
});
|
||||
},
|
||||
btn:['确定'],
|
||||
yes: function(idx){
|
||||
var checkStatus = table.checkStatus(tablereport.config.id);
|
||||
var data = checkStatus.data;
|
||||
if(data.length>0){
|
||||
tool.side('/oa/work/add?types='+data[0].id);
|
||||
layer.close(idx);
|
||||
}
|
||||
else{
|
||||
layer.msg('请选择汇报类型');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,37 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">办公工具</div>
|
||||
<div class="layui-card-body">
|
||||
<div id="website" class="website"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//办公工具
|
||||
function layoutLinks() {
|
||||
$.ajax({
|
||||
url: "/home/index/get_links",
|
||||
type: 'post',
|
||||
data: {
|
||||
page:1,
|
||||
limit: 100
|
||||
},
|
||||
success: function(e) {
|
||||
if (e.code == 0) {
|
||||
var html = '';
|
||||
$.each(e.data, function(key, value) {
|
||||
if(value.target==1){
|
||||
html += '<a class="layui-btn layui-btn-primary layui-btn-sm layui-border" href="'+value.url+'" target="_blank">'+value.title+'</a>';
|
||||
}
|
||||
else{
|
||||
html += '<a class="layui-btn layui-btn-primary layui-btn-sm layui-border tab-a" data-href="'+value.url+'" data-id="99999'+value.id+'" data-title="'+value.title+'" href="javascript:;">'+value.title+'</a>';
|
||||
}
|
||||
});
|
||||
$('#website').html(html);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,25 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">公告列表</div>
|
||||
<div style="padding: 12px;">
|
||||
<table id="Note" lay-filter="Note" class="layui-hide" style="margin-top:0"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//公告
|
||||
function layoutNote(table){
|
||||
table.render({
|
||||
elem: '#Note'
|
||||
, url: "/home/api/get_note_list" //数据接口
|
||||
, page: false //开启分页
|
||||
, cols: [[ //表头
|
||||
{ field: 'cate_title', title: '公告分类', align: 'center','width': 90},
|
||||
{ field: 'title', title: '公告标题',templet: '<div><a data-href="/oa/note/view/id/{{d.id}}.html" class="side-a">{{d.title}}</a></div>'},
|
||||
{ field: 'create_time', title: '发布时间', align: 'center','width': 150}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,33 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">项目列表</div>
|
||||
<div style="padding: 12px;">
|
||||
<table id="Project" lay-filter="Project" class="layui-hide" style="margin-top:0"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//项目
|
||||
function layoutProject(table){
|
||||
table.render({
|
||||
elem: '#Project'
|
||||
, url: "/project/api/get_project?limit=10" //数据接口
|
||||
, page: false //开启分页
|
||||
, cols: [[ //表头
|
||||
{field: 'id', title: '项目编号', align: 'center','width': 90, templet: function (d) {
|
||||
return 'P' + d.id;
|
||||
}}
|
||||
,{ field: 'status', title: '项目状态', align: 'center', width: 90, templet: function (d) {
|
||||
var html = '<span class="check-status-color-' + d.status + '">『' + d.status_name + '』</span>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
,{field: 'name', title: '项目名称',minWidth:240,templet: '<div><a data-href="/project/index/view/id/{{d.id}}.html" class="side-a">{{d.name}}</a></div>'}
|
||||
,{field:'director_name',title: '负责人',width:80,align:'center'}
|
||||
,{ field:'range_time', title: '项目计划周期', align: 'center', width: 180}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,62 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">最活跃员工<span style="color:#999; font-size:14px; font-weight:400; margin-left:5px">最近30天前十的活跃度</span></div>
|
||||
<div class="layui-card-body">
|
||||
<div id="logChart" style="width: 100%; height:268px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//动态
|
||||
var logChart;
|
||||
function layoutRaking() {
|
||||
logChart = echarts.init(document.getElementById('logChart'));
|
||||
$.ajax({
|
||||
url: "/home/api/get_view_log",
|
||||
type: 'get',
|
||||
data: {},
|
||||
success: function (e) {
|
||||
if (e.code == 0) {
|
||||
var data_logs = e.data.data_logs;
|
||||
var logItem = [];
|
||||
$.each(data_logs, function (key, value) {
|
||||
let item = {
|
||||
value: value.count,
|
||||
name: value.name
|
||||
};
|
||||
logItem.push(item);
|
||||
});
|
||||
let optC = {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{a} <br/>{b} :{d}%'
|
||||
},
|
||||
legend: {
|
||||
top: '1%',
|
||||
left: 'center'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '活跃度',
|
||||
type: 'pie',
|
||||
radius: '50%',
|
||||
center: ['50%', '60%'],
|
||||
data: logItem,
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
logChart.setOption(optC);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,68 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-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:#f8f8f8">提醒:发现app目录下的install文件夹没删除,为了系统的安全,请手动去删除。</td>
|
||||
</tr>
|
||||
{/if}
|
||||
<tr>
|
||||
<td class="info-td">服务器系统</td>
|
||||
<td>{:get_system_info('os')}</td>
|
||||
<td class="info-td">PHP版本</td>
|
||||
<td>{:get_system_info('php')}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="info-td">上传附件限制</td>
|
||||
<td>{:get_system_config('system','upload_max_filesize')}M / {:get_system_info('upload_max_filesize')}</td>
|
||||
<td class="info-td">执行时间限制</td>
|
||||
<td>{:get_system_info('max_execution_time')}</td>
|
||||
</tr>
|
||||
{eq name=":get_system_config('system','qrcode')" value="2"}
|
||||
<tr>
|
||||
<td class="info-td">勾股OA</td>
|
||||
<td colspan="3">{:CMS_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:8px"
|
||||
href="https://blog.gougucms.com/home/book/detail/bid/3.html" target="_blank">勾股OA文档</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="info-td">ThinkPHP版本</td>
|
||||
<td colspan="3">{$TP_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:8px" href="https://doc.thinkphp.cn/v8_0/preface.html" target="_blank">TP8文档</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="info-td">Layui版本</td>
|
||||
<td colspan="3">{:LAYUI_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:8px" href="https://layui.dev/docs/2/" target="_blank">Layui文档</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="info-td">合作联系</td>
|
||||
<td colspan="3"><i class="iconfont icon-weixin green"></i>微信号:hdm588,业务合作、功能定制请备注</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="info-td">QQ交流群</td>
|
||||
<td colspan="3">搜Q群:24641076(满),46924914(满),295256660<br>或点击 <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=vb-Jdu0e-7iAAxbqGczDg1xFjxbdBsip&authKey=lwlNHAZiUOK2Rua5B14KhfwoYcvpQtHnlWMAJAbQRhfg3YQOUVIFEmfxpbhcCQw%2F&noverify=0&group_code=295256660" target="_blank" rel="nofollow"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="gougucms交流群" title="点击链接加入群聊【勾股开源交流群】" style="vertical-align:middle"></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="info-td">同系列开源软件</td>
|
||||
<td colspan="3"><a class="layui-badge layui-bg-blue" style="margin-right:8px" href="https://gitee.com/gouguopen/gougucms" target="_blank">勾股CMS</a><a class="layui-badge layui-bg-blue" style="margin-right:8px" href="https://gitee.com/gouguopen/blog" target="_blank">勾股BLOG</a><a class="layui-badge layui-bg-blue" href="https://gitee.com/gouguopen/dev" target="_blank" style="margin-right:8px">勾股DEV</a><a class="layui-badge layui-bg-blue" href="https://gitee.com/gouguopen/guoguadmin" target="_blank">勾股ADMIN</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" style="color:#E94335; font-size:14px"><strong>腾讯云服务器,通过我们的代理购买低至 1 折,点击图片了解详情</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<a href="https://curl.qcloud.com/h3ibq5lX" target="_blank"><img src="https://blog.gougucms.com/storage/image/480x300.jpg" style="width:100%; max-width:100%; border-radius:6px; cursor:pointer;" align=center /></a>
|
||||
</td>
|
||||
</tr>
|
||||
{/eq}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
function layoutSystem(){
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,42 @@
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-title">任务列表</div>
|
||||
<div style="padding: 12px;">
|
||||
<table id="Task" lay-filter="Task" class="layui-hide" style="margin-top:0"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//任务
|
||||
function layoutTask(table){
|
||||
table.render({
|
||||
elem: '#Task'
|
||||
, url: "/project/api/get_task?limit=10" //数据接口
|
||||
, page: false //开启分页
|
||||
, cols: [[ //表头
|
||||
{field: 'id', title: '任务编号', width: 80, align: 'center', fixed: 'left', templet: function (d) {
|
||||
return 'T' + d.id;
|
||||
}}
|
||||
,{ field: 'status', title: '任务状态', align: 'center', width: 90, templet: function (d) {
|
||||
var html = '<span class="check-status-color-' + d.status + '">『' + d.status_name + '』</span>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
,{field:'title',title: '任务主题', minWidth: 300,templet:function(d){
|
||||
var html = '<span class="layui-badge layui-bg-'+d.priority+'">'+d.priority_name+'</span> <a data-href="/project/task/view/id/'+d.id+'.html" class="side-a">'+d.title+'</a>';
|
||||
return html;
|
||||
}}
|
||||
,{field:'director_name',title: '负责人', align:'center',width: 80}
|
||||
,{field:'end_time',title: '预计结束日期', width: 150,templet:function(d){
|
||||
var html = d.end_time;
|
||||
if(d.delay>0){
|
||||
html+= '<span class="red ml-1" style="font-size:12px;">逾期'+d.delay+'天</span>';
|
||||
}
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,88 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style type="text/css">
|
||||
.layui-card-body .layui-timeline-title {
|
||||
padding-bottom: 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.layui-card-body .layui-timeline-item {
|
||||
padding-bottom: 5px;
|
||||
color:#323232;
|
||||
}
|
||||
|
||||
.layui-timeline-title span {
|
||||
color: #999
|
||||
}
|
||||
|
||||
.panel-more {
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.panel-more a {
|
||||
color: #0088FF
|
||||
}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header"><h3>员工动态</h3></div>
|
||||
<div class="layui-card-body">
|
||||
<ul class="layui-timeline" id="logs"></ul>
|
||||
<div class="panel-more"><a href="javascript:;">查看更多员工动态</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var page=1,limit=20;
|
||||
function getLogs() {
|
||||
$.ajax({
|
||||
url: "/home/index/log_list",
|
||||
type: 'post',
|
||||
data: {
|
||||
page:page,
|
||||
limit: limit
|
||||
},
|
||||
success: function(e) {
|
||||
if (e.code == 0) {
|
||||
var html = '';
|
||||
if(e.data.length>0){
|
||||
page++;
|
||||
$.each(e.data, function(key, value) {
|
||||
html += '<li class="layui-timeline-item">\
|
||||
<i class="layui-icon layui-timeline-axis"></i>\
|
||||
<div class="layui-timeline-content layui-text">\
|
||||
<div class="layui-timeline-title"><span title="'+value.id+'">'+value.times+'</span>,'+value.content+'</div>\
|
||||
</div>\
|
||||
</li>';
|
||||
});
|
||||
$('#logs').append(html);
|
||||
}else{
|
||||
$('.panel-more').remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
function gouguInit() {
|
||||
getLogs();
|
||||
$('.panel-more').on('click',function(){
|
||||
getLogs();
|
||||
})
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,226 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
|
||||
{block name="style"}
|
||||
<style type="text/css">
|
||||
.panel-num table {width: 100%;}
|
||||
.panel-num td {text-align: center; padding: 18px 0; border-left: 1px solid #f1f1f1; position: relative;}
|
||||
.panel-num td:nth-child(1) { border-left: none}
|
||||
.panel-num .num-title {padding-bottom: 9px; color: #999;}
|
||||
.panel-num .blue {font-size: 20px; font-weight: 300;}
|
||||
.panel-num td .badge {position: absolute;top: 0; right: 0;}
|
||||
.panel-num td .badge span { padding: 2px 4px; font-size: 12px; border-radius: 0 0 0 4px;}
|
||||
.dashboard-total td {border-top: 1px solid #f1f1f1}
|
||||
.dashboard-logs .layui-timeline-item {padding-bottom: 1px;}
|
||||
.info-td { width: 90px; text-align: right;background-color: #fafafa; color: #999; padding: 5px 3px;}
|
||||
.info-td {width: 90px; text-align: right;background-color: #fafafa; color: #999; padding: 5px 3px;}
|
||||
.layui-card-body .layui-timeline-title {padding-bottom: 0;font-size: 14px; margin-bottom:4px; color:#323232}
|
||||
.layui-card-body .layui-timeline-item {padding-bottom: 5px;}
|
||||
.layui-short-menu li { text-align: center;}
|
||||
.layui-short-menu li .iconfont {display: inline-block; font-weight:600; width: 100%; height: 58px; line-height: 58px; margin-bottom:5px; text-align: center;border-radius: 3px; font-size: 28px; background-color: #F8F8F8; color: #969696; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.layui-short-menu li cite {color: #646464;}
|
||||
.layui-short-menu li:hover .iconfont{color: #1A75FF; background-color:#F2F8FF;}
|
||||
.layui-short-menu li:hover cite {color: #1A75FF;}
|
||||
.layui-matter-item li a{display: block; padding: 12px; background-color: #f8f8f8; color: #999; border-radius: 3px; transition: all .3s;-webkit-transition: all .3s;}
|
||||
.layui-matter-item li a:hover{background-color:#F2F8FF;}
|
||||
.layui-matter-item li cite {font-size: 24px;font-weight: 300;}
|
||||
|
||||
.layui-right-bar a{display: inline-block; width: 100%; height: 75px; text-align: center;border-radius: 3px; background-color: #F8F8F8; color: #969696; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.layui-right-bar a .iconfont{display: inline-block; font-weight:600; width: 100%; height: 44px; line-height: 48px; text-align: center;font-size: 28px;}
|
||||
.layui-right-bar a:hover{color: #1A75FF; background-color:#F2F8FF;}
|
||||
.layui-card-title{padding:12px 12px 0}
|
||||
.website{padding-bottom:3px;}
|
||||
.website .layui-btn,.website .layui-btn+.layui-btn{margin:6px; font-size:13px;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="layui-row layui-col-space16">
|
||||
<div class="layui-col-md8">
|
||||
{volist name="$layout_selected" id="layout"}
|
||||
|
||||
{if ( $layout.row == 1) AND ( $layout.name == 'count') }
|
||||
{include file="/index/layout_count" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 1) AND ( $layout.name == 'event') }
|
||||
{include file="/index/layout_event" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 1) AND ( $layout.name == 'note') }
|
||||
{include file="/index/layout_note" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 1) AND ( $layout.name == 'project') }
|
||||
{include file="/index/layout_project" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 1) AND ( $layout.name == 'task') }
|
||||
{include file="/index/layout_task" /}
|
||||
{/if}
|
||||
|
||||
|
||||
{if ( $layout.row == 1) AND ( $layout.name == 'chartview') }
|
||||
{include file="/index/layout_chartview" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 1) AND ( $layout.name == 'chartyear') }
|
||||
{include file="/index/layout_chartyear" /}
|
||||
{/if}
|
||||
|
||||
{/volist}
|
||||
</div>
|
||||
<div class="layui-col-md4">
|
||||
{volist name="$layout_selected" id="layout"}
|
||||
|
||||
{if ( $layout.row == 2) AND ( $layout.name == 'fastentry') }
|
||||
{include file="/index/layout_fastentry" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 2) AND ( $layout.name == 'approve') }
|
||||
{include file="/index/layout_approve" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 2) AND ( $layout.name == 'links') }
|
||||
{include file="/index/layout_links" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 2) AND ( $layout.name == 'system') }
|
||||
{include file="/index/layout_system" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 2) AND ( $layout.name == 'ranking') }
|
||||
{include file="/index/layout_ranking" /}
|
||||
{/if}
|
||||
|
||||
{if ( $layout.row == 2) AND ( $layout.name == 'action') }
|
||||
{include file="/index/layout_action" /}
|
||||
{/if}
|
||||
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script src="{__GOUGU__}/third_party/echart/echarts.min.js"></script>
|
||||
<script>
|
||||
function getRange() {
|
||||
let today = new Date();
|
||||
let tYear = today.getFullYear();
|
||||
let tMonth = today.getMonth() + 1;
|
||||
let tDate = today.getDate();
|
||||
let dateFirst = tYear + "-" + tMonth + "-" + tDate;
|
||||
let datelast = (tYear - 1) + "-" + tMonth + "-" + tDate;
|
||||
let dataRange = [];
|
||||
dataRange.push(dateFirst);
|
||||
dataRange.push(datelast);
|
||||
return dataRange;
|
||||
}
|
||||
|
||||
function getDay(archiveCalendar) {
|
||||
var today = new Date();
|
||||
var dayArray = [];
|
||||
for (var i = 0; i < 366; i++) {
|
||||
var targetday_milliseconds = today.getTime() - 1000 * 60 * 60 * 24 * i;
|
||||
var date = new Date(targetday_milliseconds);
|
||||
dayArray.push(retunDay(date,archiveCalendar));
|
||||
}
|
||||
return dayArray;
|
||||
}
|
||||
|
||||
function retunDay(day,archiveCalendar) {
|
||||
var tYear = day.getFullYear();
|
||||
var tMonth = day.getMonth();
|
||||
var tDate = day.getDate();
|
||||
tMonth = tMonth + 1;
|
||||
if (tMonth.toString().length == 1) {
|
||||
tMonth = "0" + tMonth;
|
||||
}
|
||||
if (tDate.toString().length == 1) {
|
||||
tDate = "0" + tDate;
|
||||
}
|
||||
var dateStr = tYear + "-" + tMonth + "-" + tDate;
|
||||
var dateArray = [];
|
||||
dateArray.push(dateStr);
|
||||
if (archiveCalendar[dateStr]) {
|
||||
dateArray.push(archiveCalendar[dateStr]);
|
||||
}
|
||||
else {
|
||||
dateArray.push(0);
|
||||
}
|
||||
return dateArray;
|
||||
}
|
||||
|
||||
function setHour(num) {
|
||||
var str = num + ':00';
|
||||
if (num < 10) {
|
||||
str = '0' + num + ':00';
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
const moduleInit = ['tool','oaSchedule'];
|
||||
function gouguInit() {
|
||||
var tool = layui.tool,table = layui.table,work = layui.oaSchedule;
|
||||
|
||||
if(typeof layoutNote ==='function'){
|
||||
layoutNote(table);
|
||||
}
|
||||
|
||||
if(typeof layoutProject ==='function'){
|
||||
layoutProject(table);
|
||||
}
|
||||
|
||||
if(typeof layoutTask ==='function'){
|
||||
layoutTask(table);
|
||||
}
|
||||
|
||||
if(typeof layoutChartView ==='function'){
|
||||
layoutChartView();
|
||||
}
|
||||
|
||||
if(typeof layoutChartYear ==='function'){
|
||||
layoutChartYear();
|
||||
}
|
||||
|
||||
if(typeof layoutFastentry ==='function'){
|
||||
layoutFastentry(tool,work,table)
|
||||
}
|
||||
|
||||
if(typeof layoutLinks ==='function'){
|
||||
layoutLinks()
|
||||
}
|
||||
|
||||
if(typeof layoutSystem ==='function'){
|
||||
layoutSystem()
|
||||
}
|
||||
|
||||
if(typeof layoutRaking ==='function'){
|
||||
layoutRaking()
|
||||
}
|
||||
|
||||
if(typeof layoutAction ==='function'){
|
||||
layoutAction()
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
window.onresize = function () {
|
||||
if(logChart){
|
||||
chartView.resize();
|
||||
}
|
||||
if(myChart){
|
||||
myChart.resize();
|
||||
}
|
||||
if(logChart){
|
||||
logChart.resize();
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,47 @@
|
||||
<div class="layui-side layui-side-menu layui-side-{$admin.theme}">
|
||||
<div class="layui-logo" gg-event="closeAllTabs">
|
||||
<img src="{$web.logo|default=''}" onerror="javascript:this.src='{__IMG__}/syslogo.png';this.onerror=null;" style="height: 40px;" class="syslogo">
|
||||
<img src="{$web.small_logo|default=''}" onerror="javascript:this.src='{__IMG__}/syslogo_small.png';this.onerror=null;" style="height: 40px;" class="logo">
|
||||
</div>
|
||||
|
||||
<ul id="menuList" class="layui-nav layui-nav-tree layui-inline" lay-shrink="all">
|
||||
<li class="layui-nav-item menu-li">
|
||||
<a href="javascript:;" class="side-menu-item layui-this" data-href="/home/index/main.html" data-id="0" style="padding-top:0; padding-bottom:0;"><i class="iconfont icon-xueshuguanli"></i> 工 作 台</a>
|
||||
</li>
|
||||
{foreach name="menu" item="a"}
|
||||
<li class="layui-nav-item menu-li">
|
||||
<a href="javascript:;" lay-tips="{$a.title}" lay-direction="2" data-id="{$a.id}" data-title="{$a.title}" data-href="/{$a.src}"><i class="iconfont {$a.icon}"></i> {$a.title}</a>
|
||||
{notempty name="$a.list"}
|
||||
<dl class="layui-nav-child">
|
||||
{foreach name="$a.list" item="b"}
|
||||
<dd>
|
||||
<a href="javascript:;" class="side-menu-item" data-id="{$b.id}" data-title="{$b.title}" data-href="/{$b.src}">{$b.title}</a>
|
||||
{notempty name="$b.list"}
|
||||
<dl class="layui-nav-child">
|
||||
{foreach name="$b.list" item="c"}
|
||||
<dd>
|
||||
<a href="javascript:;" class="side-menu-item" data-id="{$c.id}" data-title="{$c.title}" data-href="/{$c.src}">{$c.title}</a>
|
||||
{notempty name="$c.list"}
|
||||
<dl class="layui-nav-child">
|
||||
{foreach name="$c.list" item="d"}
|
||||
<dd><a href="javascript:;" class="side-menu-item" data-id="{$d.id}" data-title="{$d.title}" data-href="/{$d.src}">{$d.title}</a></dd>
|
||||
{/foreach}
|
||||
</dl>
|
||||
{/notempty}
|
||||
</dd>
|
||||
{/foreach}
|
||||
</dl>
|
||||
{/notempty}
|
||||
</dd>
|
||||
{/foreach}
|
||||
</dl>
|
||||
{/notempty}
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
<script>
|
||||
function menuInit() {
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,70 @@
|
||||
<div class="layui-side layui-side-expand layui-side-{$admin.theme}">
|
||||
<div class="layui-logo" gg-event="closeAllTabs">
|
||||
<img src="{$web.logo|default=''}" onerror="javascript:this.src='{__IMG__}/syslogo.png';this.onerror=null;" style="height: 38px;" class="syslogo">
|
||||
<img src="{$web.small_logo|default=''}" onerror="javascript:this.src='{__IMG__}/syslogo_small.png';this.onerror=null;" style="height: 38px;" class="logo">
|
||||
</div>
|
||||
<ul id="menuList">
|
||||
<li class="layui-nav-item menu-li">
|
||||
<a href="javascript:;" class="side-menu-item layui-this" data-href="/home/index/main.html" data-id="0" style="padding-top:0; padding-bottom:0;"><i class="iconfont icon-xueshuguanli"></i> 工 作 台</a>
|
||||
</li>
|
||||
{foreach name="menu" item="a"}
|
||||
{empty name="$a.list"}
|
||||
<li class="menu-li">
|
||||
<a href="javascript:;" lay-tips="{$a.title}" lay-direction="2" data-id="{$a.id}" data-title="{$a.title}" data-href="/{$a.src}"><i class="iconfont {$a.icon}"></i> <cite>{$a.title}</cite></a>
|
||||
</li>
|
||||
{else/}
|
||||
<li class="layui-nav-item menu-li">
|
||||
<a href="javascript:">
|
||||
<i class="iconfont {$a.icon}"></i> <cite>{$a.title}</cite>
|
||||
</a>
|
||||
<dl class="gg-second-menu">
|
||||
<dt><strong>{$a.title}</strong></dt>
|
||||
{foreach name="$a.list" item="b"}
|
||||
{empty name="$b.list"}
|
||||
<dd><a href="javascript:;" class="side-menu-item" data-id="{$b.id}" data-title="{$b.title}" data-href="/{$b.src}">{$b.title}</a></dd>
|
||||
{else/}
|
||||
<dd>
|
||||
<dl class="gg-three-menu">
|
||||
<dt><strong>{$b.title}</strong><i class="layui-icon layui-icon-up"></i><i class="layui-icon layui-icon-down"></i></dt>
|
||||
{foreach name="$b.list" id="c"}
|
||||
<dd><a href="javascript:;" class="side-menu-item" data-id="{$c.id}" data-title="{$c.title}" data-href="/{$c.src}">{$c.title}</a></dd>
|
||||
{/foreach}
|
||||
</dl>
|
||||
</dd>
|
||||
{/empty}
|
||||
{/foreach}
|
||||
</dl>
|
||||
</li>
|
||||
{/empty}
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
<script>
|
||||
function menuInit() {
|
||||
let $menuListNode = $('#menuList'); // 侧边菜单节点
|
||||
let $AppBodyNode = $('#GouguAppBody');// 主体页面节点
|
||||
|
||||
//主菜单
|
||||
$menuListNode.on('click', '.menu-li', function () {
|
||||
if (!$(this).children('a').hasClass('layui-this')) {
|
||||
$(this).siblings().find('a').removeClass('layui-this');
|
||||
$(this).children('a').addClass('layui-this');
|
||||
// 子菜单
|
||||
$(this).siblings().find('.gg-second-menu').removeClass('current');
|
||||
if ($(this).children('.gg-second-menu').length) {
|
||||
let subNode = $(this).children('.gg-second-menu').find('a');
|
||||
$(this).children('.gg-second-menu').addClass('current');
|
||||
subNode.eq(0).children('i').length ? subNode.eq(1).click() : subNode.eq(0).click();
|
||||
$AppBodyNode.addClass('sub-menu');
|
||||
} else {
|
||||
$AppBodyNode.removeClass('sub-menu');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//子菜单
|
||||
$menuListNode.on('click', '.gg-three-menu dt', function () {
|
||||
$(this).parent().toggleClass('show-up');
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,93 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page" lay-filter="form-leaves">
|
||||
<h3 class="pb-2">请假</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间<font>*</font></td>
|
||||
<td><input name="start_date" class="layui-input tool-time" value="{$detail.start_date|default=''}" readonly lay-verify="required" placeholder="请选择开始时间" lay-reqText="请选择开始时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
<td class="layui-td-gray">结束时间<font>*</font></td>
|
||||
<td><input name="end_date" class="layui-input tool-time" value="{$detail.end_date|default=''}" readonly lay-verify="required" placeholder="请选择结束时间" lay-reqText="请选择结束时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">请假天数<font>*</font></td>
|
||||
<td><input name="duration" class="layui-input" value="{$detail.duration|default=''}" lay-verify="required|number" placeholder="请输入请假天数" lay-reqText="请输入请假天数"></td>
|
||||
<td class="layui-td-gray">请假类型<font>*</font></td>
|
||||
<td>
|
||||
<select name="types" lay-verify="required" lay-reqText="请选择请假类型">
|
||||
<option value="">--请选择--</option>
|
||||
{volist name=":get_leaves_types(1)" id="vo"}
|
||||
{empty name="$detail"}
|
||||
<option value="{$vo.id}">{$vo.title}</option>
|
||||
{else/}
|
||||
<option value="{$vo.id}" {eq name="$detail.types" value="$vo.id"} selected{/eq}>{$vo.title}</option>
|
||||
{/empty}
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">请假事由<font>*</font></td>
|
||||
<td colspan="3"><textarea name="reason" placeholder="请输入请假事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入请假事由">{$detail.reason|default=''}</textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></td>
|
||||
<td colspan="3">
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids|default=''}">
|
||||
{notempty name="$detail.file_ids"}
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo)}</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
|
||||
<div class="pt-4">
|
||||
<input type="hidden" name="id" value="{$detail.id|default=0}">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','uploadPlus','oaCheck'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus,oaCheck=layui.oaCheck;
|
||||
oaCheck.init({
|
||||
check_name:'leaves',
|
||||
check_btn:0
|
||||
});
|
||||
var fileUp = new uploadPlus();
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
let checkCallback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
data.field.check_name = 'leaves';
|
||||
data.field.action_id = e.data.return_id;
|
||||
oaCheck.submit(data.field,checkCallback);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/home/leaves/add", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,86 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<form class="layui-form gg-form-bar border-t border-x" lay-filter="barsearchform">
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_leaves" lay-filter="table_leaves"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-sm tool-add" type="button" data-href="/home/leaves/add">+ 添加请假</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus, tool = layui.tool;
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_leaves"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,url: "/home/leaves/datalist"
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-114'
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '名称'}
|
||||
,{field:'admin_name',title: '创建人',width:90,align:'center'}
|
||||
,{field:'create_time', title: '创建时间',width:150,align:'center'}
|
||||
,{width:120,fixed:'right',title: '操作', align:'center',ignoreExport:true,templet: function(d){
|
||||
var html='';
|
||||
var btn1='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详细</a>';
|
||||
var btn2='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
|
||||
var btn3='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
|
||||
html = '<div class="layui-btn-group">'+btn1+btn2+btn3+'</div>';
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_leaves)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/home/leaves/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side("/home/leaves/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("/home/leaves/del", { id: data.id }, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,54 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<h3 class="pb-2">请假详情</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间</td>
|
||||
<td>{$detail.start_date} {$detail.start_span_name}</td>
|
||||
<td class="layui-td-gray">结束时间</td>
|
||||
<td>{$detail.end_date} {$detail.end_span_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">请假类型</td>
|
||||
<td>{$detail.types_name}</td>
|
||||
<td class="layui-td-gray">请假天数</td>
|
||||
<td id="days">共{$detail.duration|default=0}天</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">请假事由</td>
|
||||
<td colspan="3">{$detail.reason|default=''}</td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_ids"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">相关附件</td>
|
||||
<td colspan="3">
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}" class="pt-3"></div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var moduleInit = ['tool','oaCheck'];
|
||||
|
||||
function gouguInit() {
|
||||
var tool = layui.tool,oaCheck = layui.oaCheck;
|
||||
//审批相关
|
||||
oaCheck.init({
|
||||
check_name:'leaves',
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,93 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<form class="layui-form gg-form-bar border-t border-x">
|
||||
<div class="layui-input-inline" style="width:120px;">
|
||||
<select name="action">
|
||||
<option value="">请选择类型</option>
|
||||
{volist name="$type_action" id="vo"}
|
||||
<option value="{$vo}">{$vo}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
<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" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="log" lay-filter="log"></table>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var table = layui.table, form = layui.form;
|
||||
var tableIns = table.render({
|
||||
elem: '#log',
|
||||
title: '操作日志列表',
|
||||
url: "/home/log/index", //数据接口
|
||||
page: true, //开启分页
|
||||
limit: 20,
|
||||
height: 'full-114',
|
||||
cols: [
|
||||
[ //表头
|
||||
{
|
||||
field: 'id',
|
||||
title: 'ID号',
|
||||
align: 'center',
|
||||
width: 90
|
||||
}, {
|
||||
field: 'action',
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
width: 80
|
||||
}, {
|
||||
field: 'content',
|
||||
title: '操作描述',
|
||||
width: 200
|
||||
}, {
|
||||
field: 'param_id',
|
||||
title: '操作数据ID',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},{
|
||||
field: 'param',
|
||||
title: '操作详细数据信息',
|
||||
}, {
|
||||
field: 'ip',
|
||||
title: 'IP地址',
|
||||
align: 'center',
|
||||
width: 130
|
||||
}, {
|
||||
field: 'create_time',
|
||||
title: '操作时间',
|
||||
fixed: 'right',
|
||||
align: 'center',
|
||||
width: 160
|
||||
}
|
||||
]
|
||||
]
|
||||
});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
tableIns.reload({
|
||||
where: data.field,
|
||||
page: {
|
||||
curr: 1
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,115 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="renderer" content="webkit" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>{:get_system_config('web','admin_title')}</title>
|
||||
<link rel="stylesheet" href="{__GOUGU__}/layui/css/layui.css?v={:get_system_config('system','version')}" media="all">
|
||||
<style type="text/css">
|
||||
html,body {width: 100%;height: 100%;background: #EAF3FF;}
|
||||
canvas{display:block;width:100%;height:100%; position: fixed; top: 0;left: 0;}
|
||||
input:-webkit-autofill {
|
||||
-webkit-box-shadow: 0 0 0px 1000px white inset;
|
||||
}
|
||||
#container {width: 100%;height: 100%;position: fixed;top: 0;left: 0;z-index: 99;background: url({__IMG__}/bg.png);background-size: cover;}
|
||||
.login-wrap {position: relative;overflow: hidden; background-color:#fff; width:800px; height: 448px; position: absolute;top: 50%;left: 50%;margin-top: -240px;margin-left: -400px; border-radius: 12px; display: flex;box-shadow: 0 0 16px rgba(31, 84, 167, 0.2);}
|
||||
|
||||
.login-side {width:400px; height:440px; padding:4px}
|
||||
.login-side .side-img{border-radius: 8px; width:100%; height:100%; background: url({__IMG__}/login.jpg);background-size: cover;}
|
||||
|
||||
.login-box{width: 392px;height: 404px;}
|
||||
.login-box .top {width: 392px; padding:36px 0; text-align:center; border-bottom:1px solid #eee;}
|
||||
.login-box .bottom {padding:32px;}
|
||||
|
||||
.layui-input,.layui-textarea {height: 44px;border: 1px solid #ddd;}
|
||||
.captcha_img img{width:150px; height:44px; cursor:pointer;}
|
||||
.layui-btn {height: 45px;font-size: 16px;margin-top: 6px;background-color: #FF6347!important}
|
||||
.foot {position: absolute; font-size: 12px; bottom: 24px;text-align: center;width: 100%;color: #458BF3;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<canvas id="canvas"></canvas>
|
||||
<div class="login-wrap">
|
||||
<div class="login-side"><div class="side-img"></div></div>
|
||||
<div class="login-box">
|
||||
<div class="top">
|
||||
<img src="{:get_system_config('web','logo')}" onerror="javascript:this.src='{__IMG__}/syslogo.png';this.onerror=null;" style="height: 66px;">
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<form class="layui-form" id="gougu-login">
|
||||
<div class="layui-form-item">
|
||||
<input type="text" name="username" lay-verify="required" value="" placeholder="请输入账户或手机号码" lay-reqText="请输入账户或手机号码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<input type="password" name="password" lay-verify="required" value="" placeholder="请输入密码" lay-reqText="请输入密码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-inline" style="width:168px;">
|
||||
<input type="text" name="captcha" lay-verify="required" placeholder="验证码" lay-reqText="请输入验证码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-input-inline captcha_img" style="width:142px; height:44px; margin-right:0">
|
||||
{:captcha_img()}
|
||||
<input type="hidden" value="{:make_token()}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button id="login-submit" class="layui-btn layui-btn-fluid layui-bg-cyan" lay-submit lay-filter="login-submit">登入系统</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="foot">
|
||||
<!-- 版权标识 -->
|
||||
<!--
|
||||
+------------------------------------------------------------------------------------------
|
||||
勾股OA系统开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
|
||||
+------------------------------------------------------------------------------------------
|
||||
如需去除版权标识使用的,请微信(hdm588)联系作者去除,开源不易,请多支持!
|
||||
+------------------------------------------------------------------------------------------
|
||||
勾股工作室 <hdm58@qq.com>
|
||||
+------------------------------------------------------------------------------------------
|
||||
-->
|
||||
Copyright © 2022-2024 勾股OA - {:CMS_VERSION} ,Powered by GouguOPEN,<a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow" style="color:#458BF3">{:get_system_config('web','icp')}</a><a target="_blank" rel="nofollow" style="margin-left: 15px;color:#458BF3" href="http://www.beian.gov.cn/portal/registerSystemInfo"> {:get_system_config('web','beian')}</a>
|
||||
<!-- /版权标识 -->
|
||||
</div>
|
||||
</div>
|
||||
<script src="{__GOUGU__}/layui/layui.js?v={:get_system_config('system','version')}"></script>
|
||||
<script type="text/javascript">
|
||||
var canvas=document.querySelector("#canvas"),ctx=canvas.getContext("2d");canvas.width=window.innerWidth,canvas.height=window.innerHeight,ctx.lineWidth=.3,ctx.strokeStyle=new Color(150).style;var movePos={x:30*canvas.width/100,y:30*canvas.height/100},dots={nb:250,distance:100,d_radius:150,array:[]};function colorValue(t){return Math.floor(255*Math.random()+t)}function createColorStyle(t,o,i){return"rgba("+t+","+o+","+i+", 0.618)"}function mixComponents(t,o,i,a){return(t*o+i*a)/(o+a)}function averageColorStyles(t,o){var i=t.color,a=o.color,s=mixComponents(i.r,t.radius,a.r,o.radius),n=mixComponents(i.g,t.radius,a.g,o.radius),e=mixComponents(i.b,t.radius,a.b,o.radius);return createColorStyle(Math.floor(s),Math.floor(n),Math.floor(e))}function Color(t){t=t||0,this.r=colorValue(t),this.g=colorValue(t),this.b=colorValue(t),this.style=createColorStyle(this.r,this.g,this.b)}function Dot(){this.x=Math.random()*canvas.width,this.y=Math.random()*canvas.height,this.vx=-.5+Math.random(),this.vy=-.5+Math.random(),this.radius=3*Math.random(),this.color=new Color}function createDots(){for(i=0;i<dots.nb;i++)dots.array.push(new Dot)}function moveDots(){for(i=0;i<dots.nb;i++){var t=dots.array[i];t.y<0||t.y>canvas.height?(t.vx=t.vx,t.vy=-t.vy):(t.x<0||t.x>canvas.width)&&(t.vx=-t.vx,t.vy=t.vy),t.x+=t.vx,t.y+=t.vy}}function connectDots(){for(i=0;i<dots.nb;i++)for(j=0;j<dots.nb;j++)i_dot=dots.array[i],j_dot=dots.array[j],i_dot.x-j_dot.x<dots.distance&&i_dot.y-j_dot.y<dots.distance&&i_dot.x-j_dot.x>-dots.distance&&i_dot.y-j_dot.y>-dots.distance&&i_dot.x-movePos.x<dots.d_radius&&i_dot.y-movePos.y<dots.d_radius&&i_dot.x-movePos.x>-dots.d_radius&&i_dot.y-movePos.y>-dots.d_radius&&(ctx.beginPath(),ctx.strokeStyle=averageColorStyles(i_dot,j_dot),ctx.moveTo(i_dot.x,i_dot.y),ctx.lineTo(j_dot.x,j_dot.y),ctx.stroke(),ctx.closePath())}function drawDots(){for(i=0;i<dots.nb;i++){dots.array[i].draw()}}function runDots(){ctx.clearRect(0,0,canvas.width,canvas.height),moveDots(),connectDots(),drawDots(),requestAnimationFrame(runDots)}Dot.prototype={draw:function(){ctx.beginPath(),ctx.fillStyle=this.color.style,ctx.arc(this.x,this.y,this.radius,0,3*Math.PI,!1),ctx.fill()}};var can=document.querySelector("#canvas");can.addEventListener("mousemove",function(t){movePos.x=t.pageX,movePos.y=t.pageY}),can.addEventListener("mouseleave",function(t){movePos.x=canvas.width/2,movePos.y=canvas.height/2}),createDots(),requestAnimationFrame(runDots);
|
||||
|
||||
layui.use(['form'], function() {
|
||||
var form = layui.form,
|
||||
$ = layui.$,
|
||||
layer = layui.layer;
|
||||
// 登录过期的时候,跳出ifram框架
|
||||
if (top.location != self.location) top.location = self.location;
|
||||
form.on('submit(login-submit)', function(data) {
|
||||
$.ajax({
|
||||
url: "/home/login/login_submit",
|
||||
data: $('#gougu-login').serialize(),
|
||||
type: 'post',
|
||||
async: false,
|
||||
success: function(res) {
|
||||
layer.tips(res.msg, '#login-submit');
|
||||
if (res.code === 0) {
|
||||
var date = new Date();
|
||||
date.setTime(date.getTime() + (-1 * 24 * 60 * 60 * 1000));
|
||||
var expires = "; expires=" + date.toGMTString();
|
||||
document.cookie = "gougutab=''" + expires + "; path=/";
|
||||
setTimeout(function() {
|
||||
parent.document.location.href="/";
|
||||
}, 1200);
|
||||
} else {
|
||||
$('[alt="captcha"]').click();
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="renderer" content="webkit" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>{:get_system_config('web','admin_title')}</title>
|
||||
<link rel="stylesheet" href="{__GOUGU__}/layui/css/layui.css?v={:get_system_config('system','version')}" media="all">
|
||||
<style type="text/css">
|
||||
html,body {width: 100%;height: 100%;background: #EAF3FF;}
|
||||
canvas{display:block;width:100%;height:100%; position: fixed; top: 0;left: 0;}
|
||||
input:-webkit-autofill {
|
||||
-webkit-box-shadow: 0 0 0px 1000px white inset;
|
||||
}
|
||||
#container {width: 100%;height: 100%;position: fixed;top: 0;left: 0;z-index: 99;
|
||||
background: url({__IMG__}/bg.png);
|
||||
background-size: cover;
|
||||
}
|
||||
#container .lock{width: 100%;height: 100%; position:absolute; top:0; left:0;
|
||||
background:#000 url({__IMG__}/lock_bg.svg);
|
||||
background-size: cover;
|
||||
opacity:0.72
|
||||
}
|
||||
.login {width: 398px; text-align: center; position: absolute; top: 50%; left: 50%; margin-top: -240px; margin-left: -199px; border-radius: 12px; box-shadow: 0 2px 6px rgba(92, 110, 136, .32);}
|
||||
.login .top {width: 398px;height: 117px; background-color:#7EC54B; border-radius: 12px 12px 0 0; line-height: 117px; text-align: center; overflow: hidden;
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-ms-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
.login .top .bg1 {display: inline-block;width: 72px;height: 72px;background: #fff;opacity: .1;border-radius: 0 72px 0 0;position: absolute;left: 0;top: 42px;}
|
||||
.login .top .bg2 {display: inline-block;width: 92px;height: 92px;background: #fff;opacity: .1;border-radius: 50%;position: absolute;right: -16px;top: -16px;}
|
||||
.login .bottom {background-color: #fff;padding:26px 24px;border-radius: 0 0 12px 12px;}
|
||||
.layui-input,.layui-textarea {height: 44px;border: 1px solid #ddd;}
|
||||
.captcha_img img{width:142px; height:44px; cursor:pointer;}
|
||||
.layui-btn {height: 45px;font-size: 16px;margin-top: 6px;background-color: #FF6347!important}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div class="lock"></div>
|
||||
<canvas id="canvas"></canvas>
|
||||
<div class="login">
|
||||
<div class="top">
|
||||
<img src="{:get_system_config('web','logo')}" onerror="javascript:this.src='{__IMG__}/syslogo.png';this.onerror=null;" style="height: 66px;">
|
||||
<span class="bg1"></span>
|
||||
<span class="bg2"></span>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<form class="layui-form" id="gougu-lock">
|
||||
<div class="layui-form-item" style="font-size:32px; color:#FF6347; padding:16px 0">
|
||||
当前是锁屏状态
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<input type="password" name="lock_password" lay-verify="required" value="" placeholder="请输入登录密码解锁" lay-reqText="请输入登录密码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<button id="lock-submit" class="layui-btn layui-btn-fluid layui-bg-cyan" lay-submit lay-filter="lock-submit">解锁进入系统</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{__GOUGU__}/layui/layui.js?v={:get_system_config('system','version')}"></script>
|
||||
<script type="text/javascript">
|
||||
var canvas=document.querySelector("#canvas"),ctx=canvas.getContext("2d");canvas.width=window.innerWidth,canvas.height=window.innerHeight,ctx.lineWidth=.3,ctx.strokeStyle=new Color(150).style;var movePos={x:30*canvas.width/100,y:30*canvas.height/100},dots={nb:250,distance:100,d_radius:150,array:[]};function colorValue(t){return Math.floor(255*Math.random()+t)}function createColorStyle(t,o,i){return"rgba("+t+","+o+","+i+", 0.618)"}function mixComponents(t,o,i,a){return(t*o+i*a)/(o+a)}function averageColorStyles(t,o){var i=t.color,a=o.color,s=mixComponents(i.r,t.radius,a.r,o.radius),n=mixComponents(i.g,t.radius,a.g,o.radius),e=mixComponents(i.b,t.radius,a.b,o.radius);return createColorStyle(Math.floor(s),Math.floor(n),Math.floor(e))}function Color(t){t=t||0,this.r=colorValue(t),this.g=colorValue(t),this.b=colorValue(t),this.style=createColorStyle(this.r,this.g,this.b)}function Dot(){this.x=Math.random()*canvas.width,this.y=Math.random()*canvas.height,this.vx=-.5+Math.random(),this.vy=-.5+Math.random(),this.radius=3*Math.random(),this.color=new Color}function createDots(){for(i=0;i<dots.nb;i++)dots.array.push(new Dot)}function moveDots(){for(i=0;i<dots.nb;i++){var t=dots.array[i];t.y<0||t.y>canvas.height?(t.vx=t.vx,t.vy=-t.vy):(t.x<0||t.x>canvas.width)&&(t.vx=-t.vx,t.vy=t.vy),t.x+=t.vx,t.y+=t.vy}}function connectDots(){for(i=0;i<dots.nb;i++)for(j=0;j<dots.nb;j++)i_dot=dots.array[i],j_dot=dots.array[j],i_dot.x-j_dot.x<dots.distance&&i_dot.y-j_dot.y<dots.distance&&i_dot.x-j_dot.x>-dots.distance&&i_dot.y-j_dot.y>-dots.distance&&i_dot.x-movePos.x<dots.d_radius&&i_dot.y-movePos.y<dots.d_radius&&i_dot.x-movePos.x>-dots.d_radius&&i_dot.y-movePos.y>-dots.d_radius&&(ctx.beginPath(),ctx.strokeStyle=averageColorStyles(i_dot,j_dot),ctx.moveTo(i_dot.x,i_dot.y),ctx.lineTo(j_dot.x,j_dot.y),ctx.stroke(),ctx.closePath())}function drawDots(){for(i=0;i<dots.nb;i++){dots.array[i].draw()}}function runDots(){ctx.clearRect(0,0,canvas.width,canvas.height),moveDots(),connectDots(),drawDots(),requestAnimationFrame(runDots)}Dot.prototype={draw:function(){ctx.beginPath(),ctx.fillStyle=this.color.style,ctx.arc(this.x,this.y,this.radius,0,3*Math.PI,!1),ctx.fill()}};var can=document.querySelector("#canvas");can.addEventListener("mousemove",function(t){movePos.x=t.pageX,movePos.y=t.pageY}),can.addEventListener("mouseleave",function(t){movePos.x=canvas.width/2,movePos.y=canvas.height/2}),createDots(),requestAnimationFrame(runDots);
|
||||
|
||||
layui.use(['form'], function() {
|
||||
var form = layui.form,
|
||||
$ = layui.$,
|
||||
layer = layui.layer;
|
||||
// 登录过期的时候,跳出ifram框架
|
||||
if (top.location != self.location) top.location = self.location;
|
||||
form.on('submit(lock-submit)', function(data) {
|
||||
$.ajax({
|
||||
url: "/home/login/lock",
|
||||
data: $('#gougu-lock').serialize(),
|
||||
type: 'post',
|
||||
async: false,
|
||||
success: function(res) {
|
||||
layer.tips(res.msg, '#lock-submit');
|
||||
if (res.code === 0) {
|
||||
setTimeout(function() {
|
||||
parent.document.location.href="/";
|
||||
}, 1200);
|
||||
}
|
||||
else if (res.code === 2) {
|
||||
setTimeout(function() {
|
||||
parent.document.location.href="/home/login/index.html";
|
||||
}, 1200);
|
||||
}
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="renderer" content="webkit" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>{:get_system_config('web','admin_title')}</title>
|
||||
<link rel="stylesheet" href="{__GOUGU__}/layui/css/layui.css?v={:get_system_config('web','version')}" media="all">
|
||||
<style type="text/css">
|
||||
html,body {width: 100%;height: 100%;background: #EAF3FF;}
|
||||
canvas{display:block;width:100%;height:100%; position: fixed; top: 0;left: 0;}
|
||||
input:-webkit-autofill {
|
||||
-webkit-box-shadow: 0 0 0px 1000px white inset;
|
||||
}
|
||||
#container {width: 100%;height: 100%;position: fixed;top: 0;left: 0;z-index: 99;
|
||||
background: url({__IMG__}/bg.png);
|
||||
background-size: cover;
|
||||
}
|
||||
#container .lock{width: 100%;height: 100%; position:absolute; top:0; left:0;
|
||||
background:#000 url({__IMG__}/lock_bg.svg);
|
||||
background-size: cover;
|
||||
opacity:0.72
|
||||
}
|
||||
.login {width: 360px; text-align: center; position: absolute; top: 50%; left: 50%; margin-top: -240px; margin-left: -180px; border-radius: 12px; box-shadow: 0 2px 6px rgba(92, 110, 136, .32);}
|
||||
.login .top {width: 360px;height: 117px; background-color: #fbbc05; border-radius: 12px 12px 0 0; line-height: 117px; text-align: center; overflow: hidden;
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-ms-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
.login .top .bg1 {display: inline-block;width: 72px;height: 72px;background: #fff;opacity: .1;border-radius: 0 72px 0 0;position: absolute;left: 0;top: 42px;}
|
||||
.login .top .bg2 {display: inline-block;width: 92px;height: 92px;background: #fff;opacity: .1;border-radius: 50%;position: absolute;right: -16px;top: -16px;}
|
||||
.login .bottom {background-color: #fff;padding:26px 24px;border-radius: 0 0 12px 12px;}
|
||||
|
||||
.layui-input,.layui-textarea {height: 44px;border: 1px solid #ddd;}
|
||||
.captcha_img img{width:142px; height:44px; cursor:pointer;}
|
||||
.layui-btn {height: 45px;font-size: 16px;margin-top: 6px;background-color: #FF6347!important}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div class="lock"></div>
|
||||
<canvas id="canvas"></canvas>
|
||||
<div class="login">
|
||||
<div class="top">
|
||||
<img src="{__IMG__}/login_logo.png" height="60" width="200">
|
||||
<span class="bg1"></span>
|
||||
<span class="bg2"></span>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<form class="layui-form" id="gougu-lock">
|
||||
<div class="layui-form-item" style="font-size:32px; color:#FF6347; padding:16px 0">
|
||||
当前是锁屏状态
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<input type="password" name="lock_password" lay-verify="required" value="" placeholder="请输入登录密码解锁" lay-reqText="请输入登录密码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<button id="lock-submit" class="layui-btn layui-btn-fluid layui-bg-cyan" lay-submit lay-filter="lock-submit">解锁进入系统</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
const moduleInit = [];
|
||||
function mbuiInit() {
|
||||
let tool = mbui.tool;
|
||||
let a = tool.ucfirst('avf');
|
||||
tool.log(a);
|
||||
}
|
||||
</script>
|
||||
<script src="{__STATIC__}/jquery.min.js"></script>
|
||||
<script src="{__GOUGU__}/mbui/mbui.js?v={:get_system_config('web','version')}"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,207 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.layui-table-1 .tr-2,.layui-table-1 .tr-3{display:none;}
|
||||
.layui-table-2 .tr-1,.layui-table-2 .tr-3{display:none;}
|
||||
.layui-table-3 .tr-1,.layui-table-3 .tr-2{display:none;}
|
||||
.layui-table-4 .tr-1,.layui-table-4 .tr-2,.layui-table-4 .tr-3,.layui-table-4 .tr-4{display:none;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
{if condition="$id eq 0"}
|
||||
<h3 class="pb-3">新建消息</h3>
|
||||
<table id="messageTable" class="layui-table layui-table-form layui-table-1">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">接收人类型</td>
|
||||
<td>
|
||||
<input type="radio" name="types" lay-filter="types" value="1" title="同事" checked>
|
||||
<input type="radio" name="types" lay-filter="types" value="2" title="部门">
|
||||
<input type="radio" name="types" lay-filter="types" value="3" title="岗位">
|
||||
<input type="radio" name="types" lay-filter="types" value="4" title="全部">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-1">
|
||||
<td class="layui-td-gray">收件人<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="unames" value="" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="uids" value="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-2">
|
||||
<td class="layui-td-gray">收件部门<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="dnames" value="" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
|
||||
<input type="hidden" name="dids" value="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-3">
|
||||
<td class="layui-td-gray">收件岗位<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="pnames" value="" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
|
||||
<input type="hidden" name="pids" value="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-4">
|
||||
<td class="layui-td-gray">抄送人</td>
|
||||
<td>
|
||||
<input type="text" name="copy_names" value="" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="copy_uids" value="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息主题<font>*</font></td>
|
||||
<td><input type="text" name="title" value="" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息内容<font>*</font></td>
|
||||
<td><textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
|
||||
<td>
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input type="hidden" data-type="file" name="file_ids" value="">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{else/}
|
||||
<h3 class="pb-3">编辑消息</h3>
|
||||
<table id="messageTable" class="layui-table layui-table-form layui-table-{$detail.types}">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">接收人类型</td>
|
||||
<td>
|
||||
<input type="radio" name="types" lay-filter="types" value="1" title="同事" {eq name="$detail.types" value="1"}checked{/eq}>
|
||||
<input type="radio" name="types" lay-filter="types" value="2" title="部门" {eq name="$detail.types" value="2"}checked{/eq}>
|
||||
<input type="radio" name="types" lay-filter="types" value="3" title="岗位" {eq name="$detail.types" value="3"}checked{/eq}>
|
||||
<input type="radio" name="types" lay-filter="types" value="4" title="全部" {eq name="$detail.types" value="4"}checked{/eq}>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-1">
|
||||
<td class="layui-td-gray">收件人<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="unames" value="{$detail.unames|default=''}" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="uids" value="{$detail.uids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-2">
|
||||
<td class="layui-td-gray">收件部门<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="dnames" value="{$detail.dnames|default=''}" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
|
||||
<input type="hidden" name="dids" value="{$detail.dids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-3">
|
||||
<td class="layui-td-gray">收件岗位<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="pnames" value="{$detail.pnames|default=''}" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
|
||||
<input type="hidden" name="pids" value="{$detail.pids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-4">
|
||||
<td class="layui-td-gray">抄送人</td>
|
||||
<td>
|
||||
<input type="text" name="copy_names" value="{$detail.copy_names|default=''}" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="copy_uids" value="{$detail.copy_uids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息主题<font>*</font></td>
|
||||
<td><input type="text" name="title" value="{$detail.title|default=''}" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息内容<font>*</font></td>
|
||||
<td>
|
||||
<textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容">{$detail.content|default=''}</textarea>
|
||||
{if condition="($detail.msg_id > 0)"}
|
||||
<table class="layui-table" style="margin-top:10px">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">引用消息内容</td>
|
||||
<td>{$detail.from_content}</td>
|
||||
</tr>
|
||||
{notempty name="$detail.from_file_array"}
|
||||
<tr>
|
||||
<td class="layui-td-gray" style="vertical-align:top">引用消息附件</td>
|
||||
<td>
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.from_file_array" id="vo"}
|
||||
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}">
|
||||
{notempty name="$detail.file_ids"}
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{/if}
|
||||
<div class="pt-4">
|
||||
<input type="hidden" value="{$id}" name="id">
|
||||
<input type="hidden" value="{$msg_id}" name="msg_id">
|
||||
<button class="layui-btn" lay-submit="" lay-filter="draftform">存为草稿</button>
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker','uploadPlus'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
|
||||
let uploada = new uploadPlus();
|
||||
//监听保存到草稿并发送
|
||||
form.on('submit(webform)', function(data){
|
||||
data.field.is_draft=1;
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/home/message/save", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
|
||||
//监听保存到草稿
|
||||
form.on('submit(draftform)', function(data){
|
||||
data.field.is_draft=2;
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/home/message/save", data.field, callback),clickbtn;
|
||||
return false;
|
||||
});
|
||||
|
||||
//选择收件人类型
|
||||
form.on('radio(types)', function (data) {
|
||||
$('#messageTable').attr('class','layui-table layui-table-form layui-table-'+data.value);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,162 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
{include file="message/msgmenu" /}
|
||||
<div style="margin-left:172px;">
|
||||
<form class="layui-form gg-form-bar border-t border-x">
|
||||
<div class="layui-input-inline" style="width:200px">
|
||||
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="发送日期">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add"><i class="layui-icon"></i>新建消息</button>
|
||||
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon"></i>批量删除</button>
|
||||
</div>
|
||||
</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',
|
||||
defaultToolbar:false,
|
||||
title:'草稿箱',
|
||||
url: "/home/message/draft", //数据接口
|
||||
page: true ,//开启分页
|
||||
limit: 20,
|
||||
cellMinWidth: 80,
|
||||
height: 'full-114',
|
||||
cols: [[ //表头
|
||||
{type:'checkbox',fixed:'left'},
|
||||
{field: 'title', title: '消息主题',minWidth:240},
|
||||
{field: 'types', title: '接收人类型',width:100,align:'center',templet: function (d) {
|
||||
var html = '<span class="layui-color-' + d.types + '">『同事』</span>';
|
||||
if(d.types==2){
|
||||
html = '<span class="layui-color-' + d.types + '">『部门』</span>';
|
||||
}
|
||||
if(d.types==3){
|
||||
html = '<span class="layui-color-' + d.types + '">『职位』</span>';
|
||||
}
|
||||
if(d.types==4){
|
||||
html = '<span class="layui-color-' + d.types + '">『全部』</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{field: 'to_name', title: '接收人',width:200,templet: function (d) {
|
||||
var html = d.to_name;
|
||||
if(d.types==2){
|
||||
html = d.to_department;
|
||||
}
|
||||
if(d.types==3){
|
||||
html = d.to_position;
|
||||
}
|
||||
if(d.types==4){
|
||||
html = '全部员工';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{field: 'copy_names', title: '抄送人',width:160},
|
||||
{field: 'update_time', title: '最近保存时间', align:'center',width:160},
|
||||
{field: 'right', title: '操作',fixed:'right', width:120, align:'center',templet: function (d) {
|
||||
let html='<div class="layui-btn-group">';
|
||||
let btn1='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
|
||||
let btn2='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</span>';
|
||||
let btn3='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
|
||||
return html+btn1+btn2+btn3+'</div>'
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){
|
||||
let data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/del", {ids: data.id}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
if(obj.event === 'edit'){
|
||||
tool.side('/home/message/add?id='+data.id);
|
||||
}
|
||||
if(obj.event === 'view'){
|
||||
tool.side('/home/message/view?id='+data.id);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
//表头工具栏事件
|
||||
table.on('toolbar(test)', function(obj){
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = checkStatus.data;
|
||||
if (obj.event === 'add') {
|
||||
tool.side("/home/message/add");
|
||||
return;
|
||||
}
|
||||
if(data.length==0){
|
||||
layer.msg('请选择要操作的消息');
|
||||
return false;
|
||||
}
|
||||
var idArray=[],msg='是否执行该操作?';
|
||||
for(var i=0;i<data.length;i++){
|
||||
idArray.push(data[i].id);
|
||||
}
|
||||
switch(obj.event){
|
||||
case 'del':
|
||||
msg = '确定把选中的信息要放入垃圾箱吗?';
|
||||
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.delete("/home/message/del", {ids: idArray.join(',')}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function(data){
|
||||
layui.pageTable.reload({where:data.field,page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,226 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
{include file="message/msgmenu" /}
|
||||
<div style="margin-left:172px;">
|
||||
<form class="layui-form gg-form-bar border-t border-x">
|
||||
<div class="layui-input-inline" style="width:200px">
|
||||
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="接收日期">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:128px">
|
||||
<select name="read">
|
||||
<option value="">选择消息状态</option>
|
||||
<option value="1">未读消息</option>
|
||||
<option value="2">已读消息</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:128px">
|
||||
<select name="types">
|
||||
<option value="">选择消息类型</option>
|
||||
<option value="1">系统消息</option>
|
||||
<option value="2">个人消息</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon"></i>新建消息</button>
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="star"><i class="layui-icon"></i>设为星标</button>
|
||||
<button class="layui-btn layui-btn-warm layui-btn-sm" lay-event="read"><i class="layui-icon"></i>设为已读</button>
|
||||
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon"></i>批量删除</button>
|
||||
</div>
|
||||
</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',
|
||||
defaultToolbar:false,
|
||||
title:'收件箱',
|
||||
url: "/home/message/inbox", //数据接口
|
||||
page: true ,//开启分页
|
||||
limit: 20,
|
||||
cellMinWidth: 80,
|
||||
height: 'full-114',
|
||||
cols: [[ //表头
|
||||
{type:'checkbox',fixed:'left'},
|
||||
{field: 'msg_type', title: '消息类型',width:90,align:'center',templet: function (d) {
|
||||
var html = '<span class="yellow">系统消息</span>';
|
||||
if(d.from_uid > 0){
|
||||
html = '<span class="blue">个人消息</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{field: 'from_name', title: '发件人', width:100,align:'center'},
|
||||
{field: 'title', title: '消息主题',minWidth:240},
|
||||
{field: 'create_time', title: '发件时间', align:'center',width:160},
|
||||
{field: 'read_time', title: '是否已读',align:'center', width:80,templet:function(d){
|
||||
var html='<span style="color:#5FB878">已读</span>';
|
||||
if(d.read_time==0){
|
||||
html='<span style="color:#FF5722">未读</span>';
|
||||
}
|
||||
return html;
|
||||
}},
|
||||
{field: 'is_star', title: '是否星标',align:'center', width:80,templet:function(d){
|
||||
var html='<span class="layui-icon layui-icon-rate" style="color:#5FB878; font-size:20px; cursor:pointer" lay-event="star"> </span>';
|
||||
if(d.is_star==1){
|
||||
html='<span class="layui-icon layui-icon-rate-solid" style="color:#ffb800; font-size:20px; cursor:pointer" lay-event="unstar"> </span>';
|
||||
}
|
||||
return html;
|
||||
}},
|
||||
{field: 'right', title: '操作',fixed:'right', width:160, align:'center',templet: function (d) {
|
||||
let html='<div class="layui-btn-group">';
|
||||
let btn1='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</span>';
|
||||
let btn2='<span class="layui-btn layui-btn-xs" lay-event="reply">回复</span>';
|
||||
let btn3='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="resend">转发</span>';
|
||||
let btn4='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
|
||||
if(d.from_uid == 0){
|
||||
return html+btn1+btn4+'</div>'
|
||||
}
|
||||
else{
|
||||
return html+btn1+btn2+btn3+btn4+'</div>'
|
||||
}
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'star'){
|
||||
layer.confirm('确定该信息设为星标吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/check", {
|
||||
ids: data.id,type:5,
|
||||
}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
if(obj.event === 'unstar'){
|
||||
layer.confirm('确定该信息取消星标吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/check", {
|
||||
ids: data.id,type:6,
|
||||
}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/check", {
|
||||
ids: data.id,type:2,
|
||||
}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
if(obj.event === 'view'){
|
||||
tool.side('/home/message/read?id='+data.id);
|
||||
return;
|
||||
}
|
||||
if(obj.event === 'reply'){
|
||||
tool.side('/home/message/reply?msg_id='+data.id);
|
||||
return;
|
||||
}
|
||||
if(obj.event === 'resend'){
|
||||
tool.side('/home/message/resend?msg_id='+data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
//表头工具栏事件
|
||||
table.on('toolbar(test)', function(obj){
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = checkStatus.data;
|
||||
if (obj.event === 'add') {
|
||||
tool.side("/home/message/add");
|
||||
return;
|
||||
}
|
||||
if(data.length==0){
|
||||
layer.msg('请选择要操作的消息');
|
||||
return false;
|
||||
}
|
||||
var idArray=[],msg='是否执行该操作?',type=0;
|
||||
for(var i=0;i<data.length;i++){
|
||||
idArray.push(data[i].id);
|
||||
}
|
||||
switch(obj.event){
|
||||
case 'read':
|
||||
msg = '确定把选中的信息设为已读吗?';
|
||||
type = 1;
|
||||
break;
|
||||
case 'del':
|
||||
msg = '确定把选中的信息要放入垃圾箱吗?';
|
||||
type = 2;
|
||||
break;
|
||||
case 'star':
|
||||
msg = '确定把选中的信息设为星标吗?';
|
||||
type = 5;
|
||||
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.delete("/home/message/check", {
|
||||
ids: idArray.join(','),
|
||||
type:type,
|
||||
}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function(data){
|
||||
layui.pageTable.reload({where:data.field,page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,11 @@
|
||||
<div class="sub-menu" style="padding:15px 12px; width:160px; height: calc(100% - 14px);">
|
||||
<div class="border" style="width:100%;height:100%; background-color:#fbfbfb;">
|
||||
<ul>
|
||||
<li class="sub-menu-li {eq name='$action' value='inbox'} active{/eq}"><a href="/home/message/inbox"><i class="iconfont icon-yiyichuli"></i><span class="text">收件箱</span><span class="num">({$count.inbox})<span></a></li>
|
||||
<li class="sub-menu-li {eq name='$action' value='star'} active{/eq}"><a href="/home/message/star"><i class="iconfont icon-pingfen"></i><span class="text">星标信息</span><span class="num">({$count.star})<span></a></li>
|
||||
<li class="sub-menu-li {eq name='$action' value='sendbox'} active{/eq}"><a href="/home/message/sendbox"><i class="iconfont icon-tuiguangshezhi"></i><span class="text">发件箱</span><span class="num">({$count.sendbox})<span></a></li>
|
||||
<li class="sub-menu-li {eq name='$action' value='draft'} active{/eq}"><a href="/home/message/draft"><i class="iconfont icon-lunwenguanli"></i><span class="text">草稿箱</span><span class="num">({$count.draft})<span></a></li>
|
||||
<li class="sub-menu-li {eq name='$action' value='rubbish'} active{/eq}"><a href="/home/message/rubbish"><i class="iconfont icon-tiku"></i><span class="text">垃圾箱</span><span class="num">({$count.rubbish})<span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,105 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">消息详情</h3>
|
||||
<table id="messageTable" class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息主题</td>
|
||||
<td colspan="3">{$detail.title|default=''}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息类型</td>
|
||||
{eq name="$detail.message_id" value="0"}
|
||||
<td class="yellow">系统消息</td>
|
||||
{else/}
|
||||
<td class="blue">个人消息</td>
|
||||
{/eq}
|
||||
<td class="layui-td-gray">发送时间</td>
|
||||
<td>{$detail.create_time|default=''}</td>
|
||||
</tr>
|
||||
{gt name="$detail.message_id" value="0"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">发件人</td>
|
||||
<td>{$detail.from_uname|default=''}</td>
|
||||
<td class="layui-td-gray">收件人</td>
|
||||
<td>
|
||||
{eq name="$message.types" value="1"}
|
||||
<span class="layui-color-1">『同事』</span>{$message.unames|default=''}
|
||||
{/eq}
|
||||
{eq name="$message.types" value="2"}
|
||||
<span class="layui-color-2">『部门』</span>{$message.dnames|default=''}
|
||||
{/eq}
|
||||
{eq name="$message.types" value="3"}
|
||||
<span class="layui-color-3">『岗位』</span>{$message.pnames|default=''}
|
||||
{/eq}
|
||||
</td>
|
||||
</tr>
|
||||
{notempty name="$message.copy_names"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">抄送人</td>
|
||||
<td colspan="3">{$message.copy_names|default=''}</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
{/gt}
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息内容</td>
|
||||
<td colspan="3">
|
||||
<pre style="font-family:inherit">{$detail.content|default=''}</pre>
|
||||
{gt name="$detail.template" value="0"}
|
||||
{:get_message_link($detail.template,$detail.action_id)}
|
||||
{/gt}
|
||||
{if condition="($detail.msg_id > 0)"}
|
||||
<table class="layui-table" style="margin-top:10px">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">引用消息内容</td>
|
||||
<td>
|
||||
<pre style="font-family:inherit">{$detail.from_content}</pre>
|
||||
{gt name="$detail.from_template" value="0"}
|
||||
{:get_message_link($detail.from_template,$detail.from_action_id)}
|
||||
{/gt}
|
||||
</td>
|
||||
</tr>
|
||||
{notempty name="$detail.from_file_array"}
|
||||
<tr>
|
||||
<td class="layui-td-gray" style="vertical-align:top">引用消息附件</td>
|
||||
<td>
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.from_file_array" id="vo"}
|
||||
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_ids"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息附件</td>
|
||||
<td colspan="3">
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
parent.layui.pageTable.reload();
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,138 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.layui-table-1 .tr-2,.layui-table-1 .tr-3{display:none;}
|
||||
.layui-table-2 .tr-1,.layui-table-2 .tr-3{display:none;}
|
||||
.layui-table-3 .tr-1,.layui-table-3 .tr-2{display:none;}
|
||||
.layui-table-4 .tr-1,.layui-table-4 .tr-2,.layui-table-4 .tr-3,.layui-table-4 .tr-4{display:none;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">回复消息</h3>
|
||||
<table id="messageTable" class="layui-table layui-table-form layui-table-1">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">接收人类型</td>
|
||||
<td>
|
||||
<input type="radio" name="types" lay-filter="types" value="1" title="同事"checked>
|
||||
<input type="radio" name="types" lay-filter="types" value="2" title="部门">
|
||||
<input type="radio" name="types" lay-filter="types" value="3" title="岗位">
|
||||
<input type="radio" name="types" lay-filter="types" value="4" title="全部">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-1">
|
||||
<td class="layui-td-gray">收件人<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="unames" value="{$detail.from_name|default=''}" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="uids" value="{$detail.from_uid|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-2">
|
||||
<td class="layui-td-gray">收件部门<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="dnames" value="{$detail.dnames|default=''}" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
|
||||
<input type="hidden" name="dids" value="{$detail.dids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-3">
|
||||
<td class="layui-td-gray">收件岗位<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="pnames" value="{$detail.pnames|default=''}" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
|
||||
<input type="hidden" name="pids" value="{$detail.pids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-4">
|
||||
<td class="layui-td-gray">抄送人</td>
|
||||
<td>
|
||||
<input type="text" name="copy_names" value="{$detail.copy_names|default=''}" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="copy_uids" value="{$detail.copy_uids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息主题<font>*</font></td>
|
||||
<td><input type="text" name="title" value="回复:{$detail.title|default=''}" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息内容<font>*</font></td>
|
||||
<td>
|
||||
<textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容"></textarea>
|
||||
<table class="layui-table" style="margin-top:10px">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">回复消息内容</td>
|
||||
<td><pre style="font-family:inherit">{$detail.content|default=''}</pre></td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_array"}
|
||||
<tr>
|
||||
<td class="layui-td-gray" style="vertical-align:top">回复消息附件</td>
|
||||
<td>
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
|
||||
<td>
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input type="hidden" data-type="file" name="file_ids" value="">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<input type="hidden" value="0" name="id">
|
||||
<input type="hidden" value="{$detail.id}" name="msg_id">
|
||||
<button class="layui-btn" lay-submit="" lay-filter="draftform">存为草稿</button>
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker','uploadPlus'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
|
||||
let uploada = new uploadPlus();
|
||||
//监听保存到草稿并发送
|
||||
form.on('submit(webform)', function(data){
|
||||
data.field.is_draft=1;
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/message/save", data.field, callback);
|
||||
});
|
||||
|
||||
//监听保存到草稿
|
||||
form.on('submit(draftform)', function(data){
|
||||
data.field.is_draft=2;
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/message/save", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
|
||||
//选择收件人类型
|
||||
form.on('radio(types)', function (data) {
|
||||
$('#messageTable').attr('class','layui-table layui-table-form layui-table-'+data.value);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,138 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.layui-table-1 .tr-2,.layui-table-1 .tr-3{display:none;}
|
||||
.layui-table-2 .tr-1,.layui-table-2 .tr-3{display:none;}
|
||||
.layui-table-3 .tr-1,.layui-table-3 .tr-2{display:none;}
|
||||
.layui-table-4 .tr-1,.layui-table-4 .tr-2,.layui-table-4 .tr-3,.layui-table-4 .tr-4{display:none;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">转发消息</h3>
|
||||
<table id="messageTable" class="layui-table layui-table-form layui-table-1">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">接收人类型</td>
|
||||
<td>
|
||||
<input type="radio" name="types" lay-filter="types" value="1" title="同事"checked>
|
||||
<input type="radio" name="types" lay-filter="types" value="2" title="部门">
|
||||
<input type="radio" name="types" lay-filter="types" value="3" title="岗位">
|
||||
<input type="radio" name="types" lay-filter="types" value="4" title="全部">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-1">
|
||||
<td class="layui-td-gray">收件人<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="unames" value="{$detail.from_name|default=''}" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="uids" value="{$detail.from_uid|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-2">
|
||||
<td class="layui-td-gray">收件部门<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="dnames" value="{$detail.dnames|default=''}" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
|
||||
<input type="hidden" name="dids" value="{$detail.dids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-3">
|
||||
<td class="layui-td-gray">收件岗位<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="pnames" value="{$detail.pnames|default=''}" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
|
||||
<input type="hidden" name="pids" value="{$detail.pids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tr-4">
|
||||
<td class="layui-td-gray">抄送人</td>
|
||||
<td>
|
||||
<input type="text" name="copy_names" value="{$detail.copy_names|default=''}" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="copy_uids" value="{$detail.copy_uids|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息主题<font>*</font></td>
|
||||
<td><input type="text" name="title" value="转发:{$detail.title|default=''}" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息内容<font>*</font></td>
|
||||
<td>
|
||||
<textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容"></textarea>
|
||||
<table class="layui-table" style="margin-top:10px">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">转发消息内容</td>
|
||||
<td>{$detail.content|default=''}</td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_array"}
|
||||
<tr>
|
||||
<td class="layui-td-gray" style="vertical-align:top">转发消息附件</td>
|
||||
<td>
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
|
||||
<td>
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input type="hidden" data-type="file" name="file_ids" value="">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<input type="hidden" value="0" name="id">
|
||||
<input type="hidden" value="{$detail.id}" name="msg_id">
|
||||
<button class="layui-btn" lay-submit="" lay-filter="draftform">存为草稿</button>
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker','uploadPlus'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
|
||||
let uploada = new uploadPlus();
|
||||
//监听保存到草稿并发送
|
||||
form.on('submit(webform)', function(data){
|
||||
data.field.is_draft=1;
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/message/save", data.field, callback);
|
||||
});
|
||||
|
||||
//监听保存到草稿
|
||||
form.on('submit(draftform)', function(data){
|
||||
data.field.is_draft=2;
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/message/save", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
|
||||
//选择收件人类型
|
||||
form.on('radio(types)', function (data) {
|
||||
$('#messageTable').attr('class','layui-table layui-table-form layui-table-'+data.value);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,109 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
{include file="message/msgmenu" /}
|
||||
<div style="margin-left:172px;">
|
||||
<form class="layui-form gg-form-bar border-t border-x">
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<h3>垃圾箱信息</h3>
|
||||
</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',
|
||||
defaultToolbar:false,
|
||||
title:'垃圾箱',
|
||||
url: "/home/message/rubbish", //数据接口
|
||||
page: true ,//开启分页
|
||||
limit: 20,
|
||||
cellMinWidth: 80,
|
||||
height: 'full-114',
|
||||
cols: [[ //表头
|
||||
{type:'checkbox',fixed:'left'},
|
||||
{field: 'sourse', title: '来源',width:90,align:'center',templet: function (d) {
|
||||
return '<span class="layui-color-' + d.types + '">『'+d.sourse+'』</span>';
|
||||
}
|
||||
},
|
||||
{field: 'from_name', title: '发送人',width:100,align:'center'},
|
||||
{field: 'title', title: '消息主题',minWidth:240},
|
||||
{field: 'send_time', title: '发件时间', align:'center',width:160},
|
||||
{field: 'right', title: '操作',fixed:'right', width:120, align:'center',templet: function (d) {
|
||||
let html='<div class="layui-btn-group">';
|
||||
let btn1='<span class="layui-btn layui-btn-xs" lay-event="recovery">还原</span>';
|
||||
let btn2='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">查看</span>';
|
||||
let btn3='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clear">清除</button></div>';
|
||||
return html+btn1+btn2+btn3+'</div>'
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'clear'){
|
||||
layer.confirm('确定清除该信息吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/clear", {ids: data.id,'table':data.table_name}, callback);
|
||||
layer.close(index);
|
||||
})
|
||||
}
|
||||
if(obj.event === 'recovery'){
|
||||
layer.confirm('确定还原该信息吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/recovery", {ids: data.id,'table':data.table_name}, callback);
|
||||
layer.close(index);
|
||||
})
|
||||
}
|
||||
if(obj.event === 'view'){
|
||||
if(data.table_name=='msg'){
|
||||
tool.side('/home/message/read?id='+data.id);
|
||||
}
|
||||
else{
|
||||
tool.side('/home/message/view?id='+data.id);
|
||||
}
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function(data){
|
||||
layui.pageTable.reload({where:data.field,page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,159 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
{include file="message/msgmenu" /}
|
||||
<div style="margin-left:172px;">
|
||||
<form class="layui-form gg-form-bar border-t border-x">
|
||||
<div class="layui-input-inline" style="width:200px">
|
||||
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="发送日期">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add"><i class="layui-icon"></i>新建消息</button>
|
||||
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon"></i>批量删除</button>
|
||||
</div>
|
||||
</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',
|
||||
defaultToolbar:false,
|
||||
title:'发件箱',
|
||||
url: "/home/message/sendbox", //数据接口
|
||||
page: true ,//开启分页
|
||||
limit: 20,
|
||||
cellMinWidth: 80,
|
||||
height: 'full-114',
|
||||
cols: [[ //表头
|
||||
{type:'checkbox',fixed:'left'},
|
||||
{field: 'title', title: '消息主题',minWidth:240},
|
||||
{field: 'types', title: '接收人类型',width:100,align:'center',templet: function (d) {
|
||||
var html = '<span class="layui-color-' + d.types + '">『同事』</span>';
|
||||
if(d.types==2){
|
||||
html = '<span class="layui-color-' + d.types + '">『部门』</span>';
|
||||
}
|
||||
if(d.types==3){
|
||||
html = '<span class="layui-color-' + d.types + '">『职位』</span>';
|
||||
}
|
||||
if(d.types==4){
|
||||
html = '<span class="layui-color-' + d.types + '">『全部』</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{field: 'to_name', title: '接收人',width:200,templet: function (d) {
|
||||
var html = d.to_name;
|
||||
if(d.types==2){
|
||||
html = d.to_department;
|
||||
}
|
||||
if(d.types==3){
|
||||
html = d.to_position;
|
||||
}
|
||||
if(d.types==4){
|
||||
html = '全部员工';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{field: 'copy_names', title: '抄送人', width:160},
|
||||
{field: 'send_time_str', title: '发件时间', align:'center',width:160},
|
||||
{field: 'right', title: '操作',fixed:'right', width:90, align:'center',templet: function (d) {
|
||||
let html='<div class="layui-btn-group">';
|
||||
let btn1='<span class="layui-btn layui-btn-xs" lay-event="view">查看</span>';
|
||||
let btn2='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
|
||||
return html+btn1+btn2+'</div>'
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/del", {ids: data.id}, callback);
|
||||
layer.close(index);
|
||||
})
|
||||
}
|
||||
if(obj.event === 'view'){
|
||||
tool.side('/home/message/view?id='+data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
//表头工具栏事件
|
||||
table.on('toolbar(test)', function(obj){
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = checkStatus.data;
|
||||
if (obj.event === 'add') {
|
||||
tool.side("/home/message/add");
|
||||
return;
|
||||
}
|
||||
if(data.length==0){
|
||||
layer.msg('请选择要操作的消息');
|
||||
return false;
|
||||
}
|
||||
var idArray=[],msg='是否执行该操作?';
|
||||
for(var i=0;i<data.length;i++){
|
||||
idArray.push(data[i].id);
|
||||
}
|
||||
switch(obj.event){
|
||||
case 'del':
|
||||
msg = '确定把选中的信息要放入垃圾箱吗?';
|
||||
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.delete("/home/message/del", {ids: idArray.join(',')}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function(data){
|
||||
layui.pageTable.reload({where:data.field,page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,183 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
{include file="message/msgmenu" /}
|
||||
<div style="margin-left:172px;">
|
||||
<form class="layui-form gg-form-bar border-t border-x">
|
||||
<div class="layui-input-inline" style="width:200px">
|
||||
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="接收日期">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:128px">
|
||||
<select name="types">
|
||||
<option value="">选择消息类型</option>
|
||||
<option value="1">系统消息</option>
|
||||
<option value="2">个人消息</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon"></i>新建消息</button>
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="unstar"><i class="layui-icon"></i>取消星标</button>
|
||||
<button class="layui-btn layui-btn-warm layui-btn-sm" lay-event="read"><i class="layui-icon"></i>设为已读</button>
|
||||
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon"></i>批量删除</button>
|
||||
</div>
|
||||
</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',
|
||||
defaultToolbar:false,
|
||||
title:'标星信息',
|
||||
url: "/home/message/star", //数据接口
|
||||
page: true ,//开启分页
|
||||
limit: 20,
|
||||
cellMinWidth: 80,
|
||||
height: 'full-114',
|
||||
cols: [[ //表头
|
||||
{type:'checkbox',fixed:'left'},
|
||||
{field: 'msg_type', title: '消息类型',width:90,align:'center',templet: function (d) {
|
||||
var html = '<span class="yellow">系统消息</span>';
|
||||
if(d.from_uid > 0){
|
||||
html = '<span class="blue">个人消息</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{field: 'from_name', title: '发件人', width:100,align:'center'},
|
||||
{field: 'title', title: '消息主题',minWidth:240},
|
||||
{field: 'create_time', title: '发件时间', align:'center',width:160},
|
||||
{field: 'read_time', title: '是否已读',align:'center', width:90,templet:function(d){
|
||||
var html='<span style="color:#5FB878">已读</span>';
|
||||
if(d.read_time==0){
|
||||
html='<span style="color:#FF5722">未读</span>';
|
||||
}
|
||||
return html;
|
||||
}},
|
||||
{field: 'right', title: '操作',fixed:'right', width:160, align:'center',templet: function (d) {
|
||||
let html='<div class="layui-btn-group">';
|
||||
let btn1='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</span>';
|
||||
let btn2='<span class="layui-btn layui-btn-xs" lay-event="reply">回复</span>';
|
||||
let btn3='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="resend">转发</span>';
|
||||
let btn4='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
|
||||
if(d.from_uid == 0){
|
||||
return html+btn1+btn4+'</div>'
|
||||
}
|
||||
else{
|
||||
return html+btn1+btn2+btn3+btn4+'</div>'
|
||||
}
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if(e.code==0){
|
||||
layui.pageTable.reload();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/message/check", {
|
||||
ids: data.id,type:2,
|
||||
}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
if(obj.event === 'view'){
|
||||
tool.side('/home/message/read?id='+data.id);
|
||||
return;
|
||||
}
|
||||
if(obj.event === 'reply'){
|
||||
tool.side('/home/message/reply?msg_id='+data.id);
|
||||
return;
|
||||
}
|
||||
if(obj.event === 'resend'){
|
||||
tool.side('/home/message/resend?msg_id='+data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
//表头工具栏事件
|
||||
table.on('toolbar(test)', function(obj){
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = checkStatus.data;
|
||||
if (obj.event === 'add') {
|
||||
tool.side("/home/message/add");
|
||||
return;
|
||||
}
|
||||
if(data.length==0){
|
||||
layer.msg('请选择要操作的消息');
|
||||
return false;
|
||||
}
|
||||
var idArray=[],msg='是否执行该操作?',type=0;
|
||||
for(var i=0;i<data.length;i++){
|
||||
idArray.push(data[i].id);
|
||||
}
|
||||
switch(obj.event){
|
||||
case 'read':
|
||||
msg = '确定把选中的信息设为已读吗?';
|
||||
type = 1;
|
||||
break;
|
||||
case 'del':
|
||||
msg = '确定把选中的信息要放入垃圾箱吗?';
|
||||
type = 2;
|
||||
break;
|
||||
case 'unstar':
|
||||
msg = '确定把选中的信息取消星标吗?';
|
||||
type = 6;
|
||||
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.delete("/home/message/check", {
|
||||
ids: idArray.join(','),
|
||||
type:type,
|
||||
}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(webform)', function(data){
|
||||
layui.pageTable.reload({where:data.field,page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,121 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">消息详情</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息主题</td>
|
||||
<td colspan="3">{$detail.title|default=''}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">收件人</td>
|
||||
<td>
|
||||
{eq name="$detail.types" value="1"}
|
||||
<span class="layui-color-1">『同事』</span>{$detail.unames|default=''}
|
||||
{/eq}
|
||||
{eq name="$detail.types" value="2"}
|
||||
<span class="layui-color-2">『部门』</span>{$detail.dnames|default=''}
|
||||
{/eq}
|
||||
{eq name="$detail.types" value="3"}
|
||||
<span class="layui-color-3">『岗位』</span>{$detail.pnames|default=''}
|
||||
{/eq}
|
||||
</td>
|
||||
{eq name="$detail.send_time" value="0"}
|
||||
<td class="layui-td-gray">发送状态</td>
|
||||
<td class="red">草稿,未发送</td>
|
||||
{else/}
|
||||
<td class="layui-td-gray">发送时间</td>
|
||||
<td>{$detail.send_time|date='Y-m-d H:i:s'}</td>
|
||||
{/eq}
|
||||
</tr>
|
||||
{notempty name="$detail.copy_names"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">抄送人</td>
|
||||
<td colspan="3">{$detail.copy_names|default=''}</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息内容</td>
|
||||
<td colspan="3">
|
||||
<pre style="font-family:inherit">{$detail.content|default=''}</pre>
|
||||
{gt name="$detail.template" value="0"}
|
||||
{:get_message_link($detail.template,$detail.action_id)}
|
||||
{/gt}
|
||||
{if condition="($detail.msg_id > 0)"}
|
||||
<table class="layui-table" style="margin-top:10px">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">引用消息内容</td>
|
||||
<td>
|
||||
<pre style="font-family:inherit">{$detail.from_content}</pre>
|
||||
{gt name="$detail.from_template" value="0"}
|
||||
{:get_message_link($detail.from_template,$detail.from_action_id)}
|
||||
{/gt}
|
||||
</td>
|
||||
</tr>
|
||||
{notempty name="$detail.from_file_array"}
|
||||
<tr>
|
||||
<td class="layui-td-gray" style="vertical-align:top">引用消息附件</td>
|
||||
<td>
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.from_file_array" id="vo"}
|
||||
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_ids"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息附件</td>
|
||||
<td colspan="3">
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
{notempty name="$detail.read_user_names"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">已读回执</td>
|
||||
<td colspan="3">{$detail.read_user_names}</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
{eq name="$detail.send_time" value="0"}
|
||||
<div class="pt-4">
|
||||
<input type="hidden" value="{$detail.id}" name="id">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
|
||||
</div>
|
||||
{/eq}
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var tool = layui.tool,form = layui.form;
|
||||
//监听发送
|
||||
form.on('submit(webform)', function(data){
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/message/send_message", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,60 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">自定义模块</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="4"><strong class="red">注意:自定义模块目录不能和已有的模块目录相同,尽量使用个性化的目录,防止后期可能与官网新推出模块的目录相同,引起升级不必要的麻烦。</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">模块名称<font>*</font></td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="type" value="3" />
|
||||
<input type="hidden" name="sourse" value="2" />
|
||||
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入模块名称" lay-reqText="请输入模块名称" class="layui-input" value="{$module.title|default=''}">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">模块所在目录<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="请输入模块所在目录" lay-reqText="请输入模块所在目录" class="layui-input" value="{$module.name|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">模块描述</td>
|
||||
<td colspan="3">
|
||||
<textarea name="desc" placeholder="请输入模块描述,不能超过200个字" class="layui-textarea">{$module.desc|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function(){
|
||||
parent.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
tool.post("/home/module/add", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,153 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="gg-form-bar border-t border-x">
|
||||
<div class="pb-3"><button type="button" class="layui-btn layui-btn-sm side-a" data-href="/home/module/add">新增自定义模块</button>{empty name="$oa_module"}<span class="ml-3 red">温馨提示:可能是网络或其他原因未能请求到官网的模块数据,但不影响系统的正常使用。</span>{/empty}</div>
|
||||
</div>
|
||||
<table cellspacing="0" cellpadding="0" border="0" class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<th style="text-align: center; background-color:#FAFAFA">模块名称</th>
|
||||
<th style="text-align: center; background-color:#FAFAFA">模块所在目录</th>
|
||||
<th style="text-align: center; background-color:#FAFAFA">功能描述</th>
|
||||
<th style="text-align: center; background-color:#FAFAFA">类型</th>
|
||||
<th style="text-align: center; background-color:#FAFAFA">开发者</th>
|
||||
<th style="text-align: center; background-color:#FAFAFA">状态</th>
|
||||
<th style="text-align: center; background-color:#FAFAFA; width:90px">操作</th>
|
||||
</tr>
|
||||
{empty name="sys_module"}
|
||||
<tr>
|
||||
<td colspan="7" align="center">暂无数据</td>
|
||||
</tr>
|
||||
{/empty}
|
||||
{volist name="sys_module" id="vo" key="k"}
|
||||
<tr>
|
||||
<td align="center">{$vo.title}</td>
|
||||
<td>app/{$vo.name}</td>
|
||||
<td>{$vo.desc}</td>
|
||||
<td align="center">
|
||||
{eq name="$vo.type" value="1"}<span class="red">系统模块</span>{/eq}
|
||||
{eq name="$vo.type" value="2"}<span class="blue">普通模块</span>{/eq}
|
||||
{eq name="$vo.type" value="3"}<span class="green">自定义模块</span>{/eq}
|
||||
</td>
|
||||
<td align="center">
|
||||
{eq name="$vo.sourse" value="1"}勾股OA{/eq}
|
||||
{eq name="$vo.sourse" value="2"}第三方{/eq}
|
||||
</td>
|
||||
{eq name="$vo.status" value="-1"}
|
||||
<td align="center">
|
||||
<span class="red">未安装</span>
|
||||
</td>
|
||||
<td align="center">
|
||||
<div class="layui-btn-group">
|
||||
{eq name = "$vo.is_file" value="0"}
|
||||
<a class="layui-btn layui-btn-xs down" href="https://www.gougucms.com/home/pages/detail/s/gouguoa.html" target="_blank">下载</a>
|
||||
{/eq}
|
||||
{eq name = "$vo.is_file" value="1"}
|
||||
<a class="layui-btn layui-btn-xs install" data-name="{$vo.name}">安装</a>
|
||||
{/eq}
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs view" href="https://www.gougucms.com/home/pages/detail/s/gouguoa.html" target="_blank">演示</a>
|
||||
</div>
|
||||
</td>
|
||||
{/eq}
|
||||
{eq name="$vo.status" value="0"}
|
||||
<td align="center">
|
||||
<span class="yellow">已卸载</span>
|
||||
</td>
|
||||
<td align="center">
|
||||
<div class="layui-btn-group">
|
||||
{eq name="$vo.sourse" value="2"}<a class="layui-btn layui-bg-blue layui-btn-xs side-a" data-href="/home/module/add/id/{$vo.id}">编辑</a>{/eq}
|
||||
<a class="layui-btn layui-btn-xs add" data-name="{$vo.name}" data-type="{$vo.type}">恢复</a>
|
||||
</div>
|
||||
</td>
|
||||
{/eq}
|
||||
{eq name="$vo.status" value="1"}
|
||||
<td align="center">
|
||||
<span class="green">正常</span>
|
||||
</td>
|
||||
<td align="center">
|
||||
{eq name="$vo.type" value="3"}
|
||||
<div class="layui-btn-group">
|
||||
<a class="layui-btn layui-bg-blue layui-btn-xs side-a" data-href="/home/module/add/id/{$vo.id}">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs delete" data-name="{$vo.name}" data-id="{$vo.id}" data-type="{$vo.type}">删除</a>
|
||||
</div>
|
||||
{else/}
|
||||
-
|
||||
{/eq}
|
||||
</td>
|
||||
{/eq}
|
||||
</tr>
|
||||
{/volist}
|
||||
</table>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var tool = layui.tool;
|
||||
|
||||
$('body').on('click', '.install', function () {
|
||||
let name = $(this).data('name');
|
||||
layer.confirm('确定要安装该模块吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
//layer.msg('该功能内测中...');
|
||||
//return false;
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
layer.close(index);
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
tool.post("/home/module/install", {name: name}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
$('body').on('click', '.delete', function () {
|
||||
let id = $(this).data('id');
|
||||
let name = $(this).data('name');
|
||||
let type = $(this).data('type');
|
||||
if(type==1){
|
||||
layer.msg('系统模块,不支持卸载');
|
||||
return false;
|
||||
}
|
||||
layer.confirm('确定要删除该模块吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
layer.close(index);
|
||||
setTimeout(function(){
|
||||
parent.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
tool.post("/home/module/del",{id: id}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
$('body').on('click', '.add', function () {
|
||||
let name = $(this).data('name');
|
||||
let type = $(this).data('type');
|
||||
layer.confirm('确定要恢复使用该模块吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
layer.close(index);
|
||||
setTimeout(function(){
|
||||
parent.location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
tool.post("/home/module/recovery",{name: name}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,144 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page" lay-filter="form-outs">
|
||||
<h3 class="pb-2">外出</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间<font>*</font></td>
|
||||
<td><input name="start_date" class="layui-input tool-time" value="{$detail.start_date|default=''}" readonly lay-verify="required" placeholder="请选择开始时间" lay-reqText="请选择开始时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
<td class="layui-td-gray">结束时间<font>*</font></td>
|
||||
<td><input name="end_date" class="layui-input tool-time" value="{$detail.end_date|default=''}" readonly lay-verify="required" placeholder="请选择结束时间" lay-reqText="请选择结束时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
<td class="layui-td-gray">外出天数<font>*</font></td>
|
||||
<td><input name="duration" class="layui-input" value="{$detail.duration|default=''}" lay-verify="required|number" placeholder="请输入外出天数" lay-reqText="请输入外出天数"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">外出事由<font>*</font></td>
|
||||
<td colspan="5">
|
||||
<textarea name="reason" placeholder="请输入外出事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入外出事由">{$detail.reason|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids|default=''}">
|
||||
{notempty name="$detail.file_ids"}
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo)}</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
|
||||
<div class="pt-4">
|
||||
<input type="hidden" name="id" value="{$detail.id|default=0}">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
/*
|
||||
* 时长计算
|
||||
*/
|
||||
function daysBetweenDates(date1, date2) {
|
||||
if(date1=='' || date2==''){
|
||||
return -1;
|
||||
}
|
||||
var startDate = new Date(date1);
|
||||
var endDate = new Date(date2);
|
||||
var millisecondsPerDay = 24 * 60 * 60 * 1000;
|
||||
var differenceInMilliseconds = endDate - startDate;
|
||||
var differenceInDays = differenceInMilliseconds / millisecondsPerDay;
|
||||
return Math.round(differenceInDays);
|
||||
}
|
||||
|
||||
const moduleInit = ['tool','uploadPlus','oaCheck'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus,laydate = layui.laydate,oaCheck=layui.oaCheck;
|
||||
oaCheck.init({
|
||||
check_name:'outs',
|
||||
check_btn:0
|
||||
});
|
||||
var fileUp = new uploadPlus();
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
if(data.field.duration==0){
|
||||
layer.msg('外出时间选择有误');
|
||||
return false;
|
||||
}
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
let checkCallback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
data.field.check_name = 'outs';
|
||||
data.field.action_id = e.data.return_id;
|
||||
oaCheck.submit(data.field,checkCallback);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/home/outs/add", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
|
||||
function countDuration(){
|
||||
var date1 = $('#start_date').val();
|
||||
var date2 = $('#end_date').val();
|
||||
let days = daysBetweenDates(date1,date2);
|
||||
if(days < 0){
|
||||
$('#duration').val(0);
|
||||
$('#days').html('-');
|
||||
}
|
||||
else{
|
||||
let formData = form.val('form-outs');
|
||||
console.log(formData);
|
||||
if(formData.start_span==1){
|
||||
days=days+1;
|
||||
}
|
||||
if(formData.start_span==2){
|
||||
days=days+0.5;
|
||||
}
|
||||
if(formData.end_span==1){
|
||||
days=days-0.5;
|
||||
}
|
||||
if(days<0){
|
||||
days=0;
|
||||
}
|
||||
$('#duration').val(days);
|
||||
$('#days').html(days);
|
||||
}
|
||||
}
|
||||
|
||||
//日期时间范围
|
||||
lay('.select-time').each(function () {
|
||||
laydate.render({
|
||||
elem: this,
|
||||
trigger: 'click',
|
||||
done:function(){
|
||||
countDuration();
|
||||
}
|
||||
});
|
||||
});
|
||||
form.on('radio(start-span)',function(data){
|
||||
countDuration();
|
||||
});
|
||||
form.on('radio(end-span)',function(data){
|
||||
countDuration();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,86 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<form class="layui-form gg-form-bar border-t border-x" lay-filter="barsearchform">
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_leaves" lay-filter="table_leaves"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-sm tool-add" type="button" data-href="/home/leaves/add">+ 添加请假</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus, tool = layui.tool;
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_leaves"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,url: "/home/leaves/datalist"
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-114'
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '名称'}
|
||||
,{field:'admin_name',title: '创建人',width:90,align:'center'}
|
||||
,{field:'create_time', title: '创建时间',width:150,align:'center'}
|
||||
,{width:120,fixed:'right',title: '操作', align:'center',ignoreExport:true,templet: function(d){
|
||||
var html='';
|
||||
var btn1='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详细</a>';
|
||||
var btn2='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
|
||||
var btn3='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
|
||||
html = '<div class="layui-btn-group">'+btn1+btn2+btn3+'</div>';
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_leaves)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/home/leaves/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side("/home/leaves/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("/home/leaves/del", { id: data.id }, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,50 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<h3 class="pb-2">外出详情</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间</td>
|
||||
<td>{$detail.start_date}</td>
|
||||
<td class="layui-td-gray">结束时间</td>
|
||||
<td>{$detail.end_date}</td>
|
||||
<td class="layui-td-gray">外出天数</td>
|
||||
<td>共{$detail.duration|default=0}天</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">外出事由</td>
|
||||
<td colspan="5">{$detail.reason|default=''}</td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_ids"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">相关附件</td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}" class="pt-3"></div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var moduleInit = ['tool','oaCheck'];
|
||||
|
||||
function gouguInit() {
|
||||
var tool = layui.tool,oaCheck = layui.oaCheck;
|
||||
//审批相关
|
||||
oaCheck.init({
|
||||
check_name:'outs',
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,80 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page" lay-filter="form-overtimes">
|
||||
<h3 class="pb-2">加班</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间<font>*</font></td>
|
||||
<td><input name="start_date" class="layui-input tool-time" value="{$detail.start_date|default=''}" readonly lay-verify="required" placeholder="请选择开始时间" lay-reqText="请选择开始时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
<td class="layui-td-gray">结束时间<font>*</font></td>
|
||||
<td><input name="end_date" class="layui-input tool-time" value="{$detail.end_date|default=''}" readonly lay-verify="required" placeholder="请选择结束时间" lay-reqText="请选择结束时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
<td class="layui-td-gray">加班时长<font>*</font></td>
|
||||
<td><input name="duration" class="layui-input" value="{$detail.duration|default=''}" lay-verify="required|number" placeholder="请输入加班时长(小时)" lay-reqText="请输入加班时长(小时)"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">加班事由<font>*</font></td>
|
||||
<td colspan="5">
|
||||
<textarea name="reason" placeholder="请输入加班事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入加班事由">{$detail.reason|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids|default=''}">
|
||||
{notempty name="$detail.file_ids"}
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo)}</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
|
||||
<div class="pt-4">
|
||||
<input type="hidden" name="id" value="{$detail.id|default=0}">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','uploadPlus','oaCheck'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus,laydate = layui.laydate,oaCheck=layui.oaCheck;
|
||||
oaCheck.init({
|
||||
check_name:'overtimes',
|
||||
check_btn:0
|
||||
});
|
||||
var fileUp = new uploadPlus();
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
let checkCallback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
data.field.check_name = 'overtimes';
|
||||
data.field.action_id = e.data.return_id;
|
||||
oaCheck.submit(data.field,checkCallback);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/home/overtimes/add", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,86 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<form class="layui-form gg-form-bar border-t border-x" lay-filter="barsearchform">
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_leaves" lay-filter="table_leaves"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-sm tool-add" type="button" data-href="/home/leaves/add">+ 添加请假</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus, tool = layui.tool;
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_leaves"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,url: "/home/leaves/datalist"
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-114'
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '名称'}
|
||||
,{field:'admin_name',title: '创建人',width:90,align:'center'}
|
||||
,{field:'create_time', title: '创建时间',width:150,align:'center'}
|
||||
,{width:120,fixed:'right',title: '操作', align:'center',ignoreExport:true,templet: function(d){
|
||||
var html='';
|
||||
var btn1='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详细</a>';
|
||||
var btn2='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
|
||||
var btn3='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
|
||||
html = '<div class="layui-btn-group">'+btn1+btn2+btn3+'</div>';
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_leaves)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/home/leaves/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side("/home/leaves/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("/home/leaves/del", { id: data.id }, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,50 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<h3 class="pb-2">加班详情</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间</td>
|
||||
<td>{$detail.start_date}</td>
|
||||
<td class="layui-td-gray">结束时间</td>
|
||||
<td>{$detail.end_date}</td>
|
||||
<td class="layui-td-gray">加班时长</td>
|
||||
<td id="days">共{$detail.duration|default=0}小时</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">加班事由</td>
|
||||
<td colspan="5">{$detail.reason|default=''}</td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_ids"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">相关附件</td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}" class="pt-3"></div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var moduleInit = ['tool','oaCheck'];
|
||||
|
||||
function gouguInit() {
|
||||
var tool = layui.tool,oaCheck = layui.oaCheck;
|
||||
//审批相关
|
||||
oaCheck.init({
|
||||
check_name:'overtimes',
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,178 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.layui-form-checkbox[lay-skin=primary]{padding-left:20px;}
|
||||
.left-note{font-weight:800; vertical-align:top; padding-top:28px!important; text-align:center}
|
||||
.right-note .layui-checkbox-disabled span {color: #666666!important;}
|
||||
.note-0 {display: inline-block;vertical-align: middle;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">权限组</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">权限组名称<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<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}" {eq name="$vo.checked" value="true" }checked{/eq}>
|
||||
</td>
|
||||
{gt name="vo.len" value="0"}
|
||||
<td class="right-note">
|
||||
<div style="padding:0 0 0 10px;">
|
||||
{volist name="vo.children" key="k" id="voo"}
|
||||
<div class="note-{$voo.len}" style="padding:10px 0;">
|
||||
<input type="checkbox" lay-filter="rule" data-pid="{$vo.id}" value="{$voo.id}" name="rule[]" lay-skin="primary" title="{$voo.title}" {eq name="$voo.checked" value="true" }checked{/eq}>
|
||||
</div>
|
||||
{gt name="voo.len" value="0"}
|
||||
<div style="padding:0 0 3px 22px; {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="note-{$vooo.len}" 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>
|
||||
{gt name="vooo.len" value="0"}
|
||||
<div style="padding:6px 0 15px 22px; {if condition='$k != count($vo.children)'}margin-bottom:3px; padding-bottom:10px; margin-bottom:10px; border-bottom:1px solid #eee;{/if}">
|
||||
{volist name="vooo.children" id="voooo"}
|
||||
<div class="note-{$voooo.len}" style="margin-right:10px;">
|
||||
<input type="checkbox" data-rule="{$voo.id}" name="rule[]" value="{$voooo.id}" lay-skin="primary" title="{$voooo.title}" {eq name="$voooo.checked" value="true" }checked{/eq}>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/gt}
|
||||
{/volist}
|
||||
</div>
|
||||
{/gt}
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
{/gt}
|
||||
</tr>
|
||||
{/volist}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3" style="vertical-align: top;">PC工作台展示模块</td>
|
||||
<td colspan="3">
|
||||
{volist name="layout" id="vo"}
|
||||
<div class="layui-input-inline" style="margin-right:10px;">
|
||||
<input type="checkbox" data-rule="{$vo.id}" name="layout[]" value="{$vo.id}" lay-skin="primary" title="{$vo.title}" {eq name="$vo.checked" value="true" }checked{/eq}>
|
||||
</div>
|
||||
{/volist}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3" style="vertical-align: top;">手机工作台展示模块</td>
|
||||
<td colspan="3">
|
||||
{volist name="mobile_menu" id="v"}
|
||||
<dl>
|
||||
<dt style="padding:12px 0 6px; font-weight:600">{$v.title}</dt>
|
||||
<dd>
|
||||
{volist name="v.list" id="vo"}
|
||||
<div class="layui-input-inline" style="margin-right:10px;">
|
||||
<input type="checkbox" data-rule="{$vo.id}" name="mobile_menu[]" value="{$vo.id}" lay-skin="primary" title="{$vo.title}" {eq name="$vo.checked" value="true" }checked{/eq}>
|
||||
</div>
|
||||
{/volist}
|
||||
<dd>
|
||||
</dl>
|
||||
{/volist}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3" style="vertical-align: top;">手机底部Bar菜单</td>
|
||||
<td colspan="3">
|
||||
<p style="color:red; padding-bottom:5px;">建议勾选5个,页面效果展示效果最佳</p>
|
||||
{volist name="mobile_bar" id="vo"}
|
||||
<div class="layui-input-inline" style="margin-right:10px;">
|
||||
<input type="checkbox" data-rule="{$vo.id}" name="mobile_bar[]" value="{$vo.id}" lay-skin="primary" title="{$vo.title}" {eq name="$vo.checked" value="true" }checked{/eq}>
|
||||
</div>
|
||||
{/volist}
|
||||
</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 class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool, tree = layui.tree;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (obj) {
|
||||
$.ajax({
|
||||
url: "/home/role/add",
|
||||
data: obj.field,
|
||||
type: 'post',
|
||||
success: function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
//监听多选框点击事件 通过 lay-filter="rule"来监听
|
||||
form.on('checkbox(rule)', function (data) {
|
||||
let val = data.value;
|
||||
let pid =$(this).data('pid');
|
||||
if(data.elem.checked){
|
||||
//判断当前多选框是选中还是取消选中
|
||||
$("input[data-rule='"+val+"']").prop("checked", true);//true:选中 false:不选中
|
||||
$("input[value='"+pid+"']").prop("checked", true);//true:选中 false:不选中
|
||||
}
|
||||
else{
|
||||
$("input[data-rule='"+val+"']").prop("checked", false);
|
||||
}
|
||||
form.render();//实时渲染选中和不选中的样式
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,77 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="role" lay-filter="role"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="status">
|
||||
<i class="layui-icon {{# if(d.status == 1){ }}green layui-icon-ok{{# } else { }}red 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: '#role',
|
||||
toolbar: '#toolbarDemo',
|
||||
defaultToolbar: false,
|
||||
url: "/home/role/index", //数据接口
|
||||
page: false, //开启分页
|
||||
limit: 20,
|
||||
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(role)', function(obj){
|
||||
if (obj.event === 'add') {
|
||||
tool.side("/home/role/add");
|
||||
return;
|
||||
}
|
||||
});
|
||||
//监听行工具事件
|
||||
table.on('tool(role)', function (obj) {
|
||||
var data = obj.data;
|
||||
if (obj.event === 'edit') {
|
||||
tool.side('/home/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) {
|
||||
layer.msg(res.msg);
|
||||
obj.del();
|
||||
}
|
||||
}
|
||||
tool.delete("/home/role/delete", { id: obj.data.id }, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,204 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-4">
|
||||
<h3 class="pb-3">功能菜单/节点</h3>
|
||||
{if condition="$id eq 0"}
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">父级菜单/节点<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<select name="pid" lay-verify="required" lay-filter="pid" lay-reqText="请选择父级菜单/节点">
|
||||
<option value="0" title="0">作为顶级菜单/节点</option>
|
||||
{volist name=":set_recursion(admin_rule())" id="v"}
|
||||
<option value="{$v.id}" title="{$v.level|default='1'}" {eq name="pid" value="$v.id" }selected="" {/eq}>{$v.title} ({$v.level|default='1'}级)</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray-2">所属功能模块<font>*</font></td>
|
||||
<td>
|
||||
<select name="module" lay-verify="required" lay-reqText="请选择所属功能模块">
|
||||
<option value="">请选择</option>
|
||||
{volist name=":admin_module()" id="v"}
|
||||
<option value="{$v.name}">{$v.title} </option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<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">操作日志名称<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="name" lay-verify="required" placeholder="请输入操作日志名称" lay-reqText="请输入操作日志名称"
|
||||
autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">菜单/节点URL</td>
|
||||
<td>
|
||||
<input type="text" name="src" placeholder="请输入菜单/节点URL,可空" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
<td class="layui-td-gray">菜单排序</td>
|
||||
<td>
|
||||
<input type="text" name="sort" value="0" placeholder="请输入数字,越小越靠前" autocomplete="off"
|
||||
class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">左侧菜单显示<font>*</font></td>
|
||||
<td>
|
||||
<input type="radio" name="menu" value="1" title="是">
|
||||
<input type="radio" name="menu" value="2" title="不是">
|
||||
</td>
|
||||
<td class="layui-td-gray">菜单图标</td>
|
||||
<td colspan="3">
|
||||
<input type="text" name="icon" style="width:150px; display:inline" placeholder="请输入图标,可空"
|
||||
autocomplete="off" class="layui-input">
|
||||
如:icon-jichupeizhi<a href="{__GOUGU__}/icon/index.html" target="_blank" style="margin-left:10px; color:#007AFF">[查看图标]</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" class="red" style="line-height:1.8">
|
||||
<strong>注意:</strong>
|
||||
<p><strong>1、作为菜单显示类型时最多展示三级菜单,所以父级菜单/节点选项最大只能选择到2级,非菜单显示类型无限制;一级菜单需要填写菜单图标。</strong></p>
|
||||
<p><strong>2、节点URL的具体规则:“模块/控制器/方法”,模块只能是小写字母,控制器只能是小写字母,方法可以是小写字母,中间可以有"_",示例如下:</strong></p>
|
||||
<p class="green">『正确』user/rewardscate/datalist</p>
|
||||
<p class="green">『正确』user/rewardscate/data_list</p>
|
||||
<p class="red">『错误』user_a/rewardscate/datalist</p>
|
||||
<p class="red">『错误』user/rewards_cate/datalist</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{else/}
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">父级菜单/节点<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<select name="pid" lay-verify="required" lay-filter="pid" lay-reqText="请选择父级菜单/节点">
|
||||
<option value="0" title="0">作为顶级节点</option>
|
||||
{volist name=":set_recursion(admin_rule())" id="v"}
|
||||
<option value="{$v.id}" title="{$v.level|default='1'}" {eq name="$detail.pid" value="$v.id" }selected="" {/eq}>{$v.title} ({$v.level|default='1'}级)</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray-2">所属功能模块<font>*</font></td>
|
||||
<td>
|
||||
<select name="module" lay-verify="required" lay-reqText="请选择所属功能模块">
|
||||
<option value="">请选择</option>
|
||||
{volist name=":admin_module()" id="v"}
|
||||
<option value="{$v.name}" {eq name="$detail.module" value="$v.name" }selected="" {/eq}>{$v.title} </option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<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">操作日志名称<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="name" value="{$detail.name}" lay-verify="required" placeholder="请输入操作日志名称"
|
||||
lay-reqText="请输入操作日志名称" autocomplete="off" class="layui-input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">菜单/节点URL</td>
|
||||
<td>
|
||||
<input type="text" name="src" value="{$detail.src}" placeholder="请输入菜单/节点URL,可空" autocomplete="off"
|
||||
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>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">左侧菜单显示<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>
|
||||
<td class="layui-td-gray">菜单图标</td>
|
||||
<td colspan="3">
|
||||
<input style="width:150px; display:inline" type="text" name="icon" value="{$detail.icon}" placeholder="请输入图标,可空" autocomplete="off" class="layui-input">
|
||||
<strong class="iconfont {$detail.icon}"></strong><a href="{__GOUGU__}/icon/index.html" target="_blank" style="margin-left:10px; color:#007AFF">[查看图标]</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" class="red" style="line-height:1.8">
|
||||
<strong>注意:</strong>
|
||||
<p><strong>1、作为菜单显示类型时最多展示三级菜单,所以父级菜单/节点选项最大只能选择到2级,非菜单显示类型无限制;一级菜单需要填写菜单图标。</strong></p>
|
||||
<p><strong>2、节点URL的具体格式及规则:“模块/控制器/方法”,模块只能是小写字母,控制器只能是小写字母,方法可以是小写字母,中间可以有"_",示例如下:</strong></p>
|
||||
<p class="green">『正确』user/rewardscate/datalist</p>
|
||||
<p class="green">『正确』user/rewardscate/data_list</p>
|
||||
<p class="red">『错误』user_a/rewardscate/datalist</p>
|
||||
<p class="red">『错误』user/rewards_cate/datalist</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{/if}
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,level=0;
|
||||
level = $('[name="pid"]').find('[selected=""]').attr('title');
|
||||
if(level === undefined){
|
||||
level=0;
|
||||
}
|
||||
console.log(level);
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
form.on('select(pid)', function(data){
|
||||
level = data.elem[data.elem.selectedIndex].title;
|
||||
})
|
||||
if (!data.field.menu || data.field.menu == '') {
|
||||
layer.msg('请选择是否在左侧菜单显示');
|
||||
return false;
|
||||
}
|
||||
if (data.field.pid==0 && data.field.menu == 1 && data.field.icon == '') {
|
||||
layer.msg('请完善菜单图标');
|
||||
return false;
|
||||
}
|
||||
if (data.field.menu == 1 && level > 2) {
|
||||
layer.msg('左侧显示菜单最多只能添加三级');
|
||||
return false;
|
||||
}
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function(){
|
||||
parent.parent.location.reload();
|
||||
},1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/rule/add", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,96 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<div class="gg-form-bar border-t border-x" style="padding-bottom:12px;">
|
||||
<button class="layui-btn layui-btn-sm add-menu">+ 添加菜单/节点</button>
|
||||
</div>
|
||||
<div>
|
||||
<table class="layui-hide" id="treeTable" lay-filter="treeTable"></table>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var treeTable = layui.treeTable, tool = layui.tool;
|
||||
|
||||
layui.trees = treeTable.render({
|
||||
elem: '#treeTable'
|
||||
,url: "/home/rule/index"
|
||||
,tree: { // treeTable 特定属性集
|
||||
customName: {name:'title'},
|
||||
data: {},
|
||||
view: {showIcon:false},
|
||||
async: {},
|
||||
callback: {}
|
||||
}
|
||||
, cellMinWidth: 80
|
||||
, 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: 200, title: '菜单/节点名称' }
|
||||
, { field: 'pid', title: '父ID', width: 80, align: 'center' }
|
||||
, { field: 'src', title: 'URL链接' }
|
||||
, {
|
||||
field: 'menu', width: 100, 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: 110, title: '操作日志名称', align: 'center' }
|
||||
, {
|
||||
width: 188, 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>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
]]
|
||||
, page: false
|
||||
});
|
||||
//表头工具栏事件
|
||||
$('.add-menu').on('click', function () {
|
||||
tool.side("/home/rule/add");
|
||||
return;
|
||||
});
|
||||
|
||||
//操作按钮
|
||||
treeTable.on('tool(treeTable)', function (obj) {
|
||||
console.log(obj);
|
||||
if (obj.event === 'add') {
|
||||
tool.side('/home/rule/add?pid=' + obj.data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side('/home/rule/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("/home/rule/delete", { id: obj.data.id }, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,58 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-3">定时任务</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td colspan="4"><strong class="red">注意:定时任务目前只是记录,具体需要技术人员自行在系统服务器添加定时任务计划。</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">任务名称<font>*</font></td>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="type" value="3" />
|
||||
<input type="text" name="title" lay-verify="required" autocomplete="off" placeholder="请输入任务名称" lay-reqText="请输入任务名称" class="layui-input" value="{$task.title|default=''}">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">任务访问链接<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="link" lay-verify="required" autocomplete="off" placeholder="请输入任务访问链接" lay-reqText="请输入任务访问链接" class="layui-input" value="{$task.link|default=''}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">任务描述</td>
|
||||
<td colspan="3">
|
||||
<textarea name="desc" placeholder="请输入任务描述,不能超过200个字" class="layui-textarea">{$task.desc|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/home/task/add", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,110 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<table class="layui-hide" id="task" lay-filter="task"></table>
|
||||
</div>
|
||||
|
||||
<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: '#task',
|
||||
title: '定时任务列表',
|
||||
toolbar: '#toolbarDemo',
|
||||
defaultToolbar: false,
|
||||
url: "/home/task/index",
|
||||
cellMinWidth: 80,
|
||||
page: false, //开启分页
|
||||
limit: 20,
|
||||
cols: [
|
||||
[{
|
||||
field: 'id',
|
||||
width: 80,
|
||||
title: 'ID编号',
|
||||
align: 'center'
|
||||
}, {
|
||||
field: 'types',
|
||||
width: 90,
|
||||
title: '类型',
|
||||
align: 'center',
|
||||
templet: function (d) {
|
||||
var html = '<span class="green">自定义任务</span>';
|
||||
if(d.types==1){
|
||||
html = '<span class="red">系统任务</span>';
|
||||
}
|
||||
else if(d.types==2){
|
||||
html = '<span class="blue">普通任务</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
}, {
|
||||
field: 'title',
|
||||
width: 200,
|
||||
title: '任务名称'
|
||||
}, {
|
||||
field: 'link',
|
||||
width: 300,
|
||||
title: '任务链接'
|
||||
},{
|
||||
field: 'desc',
|
||||
title: '任务描述'
|
||||
},{
|
||||
width: 100,
|
||||
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-danger layui-btn-xs" lay-event="del">删除</button></div>';
|
||||
return html;
|
||||
}
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
//表头工具栏事件
|
||||
table.on('toolbar(task)', function (obj) {
|
||||
if (obj.event === 'add') {
|
||||
tool.side("/home/task/add");
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(task)', function (obj) {
|
||||
var data = obj.data;
|
||||
if (obj.event === 'add') {
|
||||
tool.side('/home/task/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();
|
||||
layer.close(index);
|
||||
}
|
||||
}
|
||||
tool.delete("/home/task/delete", { id: obj.data.id }, callback);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,131 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.layui-table-1 .tr_2{display:none}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-2">消息模板</h3>
|
||||
<table class="layui-table layui-table-form layui-table-{$detail.types|default=2}">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">模板名称<font>*</font></td>
|
||||
<td><input type="text" name="title" lay-verify="required" placeholder="请输入消息模板名称" lay-reqText="请输入消息模板名称" class="layui-input" value="{$detail.title|default=''}"></td>
|
||||
<td class="layui-td-gray">模板标识<font>*</font></td>
|
||||
<td><input type="text" name="name" placeholder="请输入模板标识" lay-reqText="请输入模板标识,只能是字母+数字" class="layui-input" value="{$detail.name|default=''}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息类型<font>*</font></td>
|
||||
<td>
|
||||
{empty name="$detail"}
|
||||
<select name="types" lay-filter="types">
|
||||
<option value="">选择消息类型</option>
|
||||
<option value="1">普通消息</option>
|
||||
<option value="2" selected>审批消息</option>
|
||||
</select>
|
||||
{else/}
|
||||
<select name="types" lay-filter="types">
|
||||
<option value="">选择消息类型</option>
|
||||
<option value="1" {eq name="$detail.types" value="1"} selected{/eq}>普通消息</option>
|
||||
<option value="2" {eq name="$detail.types" value="2"} selected{/eq}>审批消息</option>
|
||||
</select>
|
||||
{/empty}
|
||||
</td>
|
||||
<td class="layui-td-gray">消息链接<font>*</font></td>
|
||||
<td><input type="text" name="msg_link" placeholder="请输入消息链接" lay-reqText="请输入消息链接,只能是字母+数字" class="layui-input" value="{$detail.msg_link|default=''}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><span class="tr_2">审批中的<br></span>消息模板标题<font>*</font></td>
|
||||
<td colspan="3"><input type="text" name="msg_title_0" lay-verify="required" placeholder="请输入消息模板标题" lay-reqText="请输入消息模板标题" class="layui-input" value="{$detail.msg_title_0|default=''}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><span class="tr_2">审批中的<br></span>消息模板内容<font>*</font></td>
|
||||
<td colspan="3"><textarea name="msg_content_0" class="layui-textarea" lay-verify="required" placeholder="请输入消息模板内容" lay-reqText="请输入消息模板内容">{$detail.msg_content_0|default=''}</textarea></td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批通过的<br>消息模板标题<font>*</font></td>
|
||||
<td colspan="3"><input type="text" name="msg_title_1" placeholder="请输入审批通过的消息模板标题" class="layui-input" value="{$detail.msg_title_1|default=''}"></td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批通过的<br>消息模板内容<font>*</font></td>
|
||||
<td colspan="3"><textarea name="msg_content_1" placeholder="请输入审批通过的消息模板内容" class="layui-textarea">{$detail.msg_content_1|default=''}</textarea></td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批拒绝的<br>消息模板标题<font>*</font></td>
|
||||
<td colspan="3"><input type="text" name="msg_title_2" placeholder="请输入审批拒绝的消息模板标题" class="layui-input" value="{$detail.msg_title_2|default=''}"></td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批拒绝的<br>消息模板内容<font>*</font></td>
|
||||
<td colspan="3"><textarea name="msg_content_2" placeholder="请输入审批拒绝的消息模板内容" class="layui-textarea">{$detail.msg_content_2|default=''}</textarea></td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">通过抄送人的<br>消息模板标题<font>*</font></td>
|
||||
<td colspan="3"><input type="text" name="msg_title_3" placeholder="请输入审批通过抄送人的的消息模板标题" class="layui-input" value="{$detail.msg_title_3|default=''}"></td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">通过抄送人的<br>消息模板内容<font>*</font></td>
|
||||
<td colspan="3"><textarea name="msg_content_3" placeholder="请输入审批通过抄送人的的消息模板内容" class="layui-textarea">{$detail.msg_content_3|default=''}</textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
{eq name="$copyid" value="0"}
|
||||
<input type="hidden" name="id" value="{$detail.id|default=0}"/>
|
||||
{else/}
|
||||
<input type="hidden" name="id" value="0"/>
|
||||
{/eq}
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var moduleInit = ['tool'];
|
||||
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
form.on('select(types)', function(data){
|
||||
if(data.value==1){
|
||||
$('.layui-table-form').addClass('layui-table-1').removeClass('layui-table-2');
|
||||
}
|
||||
if(data.value==2){
|
||||
$('.layui-table-form').addClass('layui-table-2').removeClass('layui-table-1');
|
||||
}
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
if(data.field.types==2){
|
||||
if(data.field.msg_title_1==''){
|
||||
layer.msg('请输入审批通过的消息模板标题');
|
||||
return false;
|
||||
}
|
||||
if(data.field.msg_content_1==''){
|
||||
layer.msg('请输入审批通过的消息模板内容');
|
||||
return false;
|
||||
}
|
||||
if(data.field.msg_title_2==''){
|
||||
layer.msg('请输入审批拒绝的消息模板标题');
|
||||
return false;
|
||||
}
|
||||
if(data.field.msg_content_1==''){
|
||||
layer.msg('请输入审批拒绝的消息模板内容');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/home/template/add", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,120 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<form class="layui-form gg-form-bar border-t border-x" lay-filter="barsearchform">
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_template" lay-filter="table_template"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-sm tool-add" type="button" data-href="/home/template/add">+ 添加消息模板</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus, tool = layui.tool;
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_template"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,title:'消息模板列表'
|
||||
,url: "/home/template/datalist"
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-114'
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'name',title: '模板标识',width:150}
|
||||
,{field:'title',title: '模板名称'}
|
||||
,{field:'admin_name',title: '创建人',width:90,align:'center'}
|
||||
,{field:'create_time', title: '创建时间',width:150,align:'center'}
|
||||
,{field:'status', title: '状态',width:80,align:'center',templet: function(d){
|
||||
var html1='<span class="green">正常</span>';
|
||||
var html2='<span class="yellow">禁用</span>';
|
||||
if(d.status==1){
|
||||
return html1;
|
||||
}
|
||||
else{
|
||||
return html2;
|
||||
}
|
||||
}}
|
||||
,{width:160,title: '操作', align:'center',templet: function(d){
|
||||
var html='';
|
||||
var btn='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
|
||||
var btn1='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">查看</a>';
|
||||
var btn2='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="disable">禁用</a>';
|
||||
var btn3='<a class="layui-btn layui-btn-xs" lay-event="open">启用</a>';
|
||||
var btn4='<a class="layui-btn layui-btn-xs" lay-event="copy">复制</a>';
|
||||
if(d.status==1){
|
||||
html = '<div class="layui-btn-group">'+btn+btn1+btn2+btn4+'</div>';
|
||||
}
|
||||
else{
|
||||
html = '<div class="layui-btn-group">'+btn+btn1+btn3+btn4+'</div>';
|
||||
}
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_template)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
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("/home/template/set", { 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("/home/template/set", { id: obj.data.id,status: 1}, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side("/home/template/add?id="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'copy') {
|
||||
tool.side("/home/template/add?copyid="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/home/template/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,67 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.layui-table-1 .tr_2{display:none}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-2">消息模板详情</h3>
|
||||
<table class="layui-table layui-table-form layui-table-{$detail.types|default=2}">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">模板名称</td>
|
||||
<td>{$detail.title|default=''}</td>
|
||||
<td class="layui-td-gray">模板标识</td>
|
||||
<td>{$detail.name|default=''}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">消息类型</td>
|
||||
<td>
|
||||
{eq name="$detail.types" value="1"}普通消息{/eq}
|
||||
{eq name="$detail.types" value="2"}审批消息{/eq}
|
||||
</td>
|
||||
<td class="layui-td-gray">消息链接</td>
|
||||
<td>{$detail.msg_link|default=''}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><span class="tr_2">审批中的<br></span>消息模板标题</td>
|
||||
<td colspan="3">{$detail.msg_title_0|default=''}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray"><span class="tr_2">审批中的<br></span>消息模板内容</td>
|
||||
<td colspan="3">{$detail.msg_content_0|default=''}</td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批通过的<br>消息模板标题</td>
|
||||
<td colspan="3">{$detail.msg_title_1|default=''}</td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批通过的<br>消息模板内容</td>
|
||||
<td colspan="3">{$detail.msg_content_1|default=''}</td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批拒绝的<br>消息模板标题</td>
|
||||
<td colspan="3">{$detail.msg_title_2|default=''}</td>
|
||||
</tr>
|
||||
<tr class="tr_2">
|
||||
<td class="layui-td-gray">审批拒绝的<br>消息模板内容</td>
|
||||
<td colspan="3">{$detail.msg_content_2|default=''}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var moduleInit = ['tool'];
|
||||
|
||||
function gouguInit() {
|
||||
var form = layui.form, tool = layui.tool;
|
||||
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,79 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page" lay-filter="form-trips">
|
||||
<h3 class="pb-2">出差</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间<font>*</font></td>
|
||||
<td><input name="start_date" class="layui-input tool-time" value="{$detail.start_date|default=''}" readonly lay-verify="required" placeholder="请选择开始时间" lay-reqText="请选择开始时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
<td class="layui-td-gray">结束时间<font>*</font></td>
|
||||
<td><input name="end_date" class="layui-input tool-time" value="{$detail.end_date|default=''}" readonly lay-verify="required" placeholder="请选择结束时间" lay-reqText="请选择结束时间" data-type="datetime" data-format="yyyy-MM-dd HH:mm"></td>
|
||||
<td class="layui-td-gray">出差天数<font>*</font></td>
|
||||
<td><input name="duration" class="layui-input" value="{$detail.duration|default=''}" lay-verify="required|number" placeholder="请输入出差天数" lay-reqText="请输入出差天数"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">出差事由<font>*</font></td>
|
||||
<td colspan="5">
|
||||
<textarea name="reason" placeholder="请输入出差事由" class="layui-textarea" lay-verify="required" lay-reqText="请输入出差事由">{$detail.reason|default=''}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input data-type="file" type="hidden" name="file_ids" value="{$detail.file_ids|default=''}">
|
||||
{notempty name="$detail.file_ids"}
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo)}</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status|default=0}" data-id="{$detail.id|default=0}" data-checkflowid="{$detail.check_flow_id|default=0}" class="pt-3"></div>
|
||||
<div class="pt-4">
|
||||
<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>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','uploadPlus','oaCheck'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus,laydate = layui.laydate,oaCheck=layui.oaCheck;
|
||||
oaCheck.init({
|
||||
check_name:'trips',
|
||||
check_btn:0
|
||||
});
|
||||
var fileUp = new uploadPlus();
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
let checkCallback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
data.field.check_name = 'trips';
|
||||
data.field.action_id = e.data.return_id;
|
||||
oaCheck.submit(data.field,checkCallback);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/home/trips/add", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,86 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<form class="layui-form gg-form-bar border-t border-x" lay-filter="barsearchform">
|
||||
<div class="layui-input-inline" style="width:300px">
|
||||
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_leaves" lay-filter="table_leaves"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-group">
|
||||
<button class="layui-btn layui-btn-sm tool-add" type="button" data-href="/home/leaves/add">+ 添加请假</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus, tool = layui.tool;
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_leaves"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,url: "/home/leaves/datalist"
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-114'
|
||||
,cols: [[
|
||||
{field:'id',width:80, title: 'ID号', align:'center'}
|
||||
,{field:'title',title: '名称'}
|
||||
,{field:'admin_name',title: '创建人',width:90,align:'center'}
|
||||
,{field:'create_time', title: '创建时间',width:150,align:'center'}
|
||||
,{width:120,fixed:'right',title: '操作', align:'center',ignoreExport:true,templet: function(d){
|
||||
var html='';
|
||||
var btn1='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详细</a>';
|
||||
var btn2='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
|
||||
var btn3='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
|
||||
html = '<div class="layui-btn-group">'+btn1+btn2+btn3+'</div>';
|
||||
return html;
|
||||
}}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_leaves)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/home/leaves/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side("/home/leaves/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("/home/leaves/del", { id: data.id }, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,50 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<h3 class="pb-2">出差详情</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开始时间</td>
|
||||
<td>{$detail.start_date}</td>
|
||||
<td class="layui-td-gray">结束时间</td>
|
||||
<td>{$detail.end_date}</td>
|
||||
<td class="layui-td-gray">出差天数</td>
|
||||
<td>共{$detail.duration|default=0}天</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">出差事由</td>
|
||||
<td colspan="5">{$detail.reason|default=''}</td>
|
||||
</tr>
|
||||
{notempty name="$detail.file_ids"}
|
||||
<tr>
|
||||
<td class="layui-td-gray"><div class="layui-input-inline">相关附件</div></td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
</table>
|
||||
<div id="checkBox" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}" class="pt-3"></div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var moduleInit = ['tool','oaCheck'];
|
||||
|
||||
function gouguInit() {
|
||||
var tool = layui.tool,oaCheck = layui.oaCheck;
|
||||
//审批相关
|
||||
oaCheck.init({
|
||||
check_name:'trips'
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
Reference in New Issue
Block a user