first commit

This commit is contained in:
2026-07-23 09:40:36 +08:00
commit 090abf48fa
989 changed files with 145728 additions and 0 deletions
+131
View File
@@ -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}
<!-- /脚本 -->
+74
View File
@@ -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}
<!-- /脚本 -->
+108
View File
@@ -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}
<!-- /脚本 -->
+267
View File
@@ -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}
<!-- /脚本 -->
+37
View File
@@ -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>
+35
View File
@@ -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>
+122
View File
@@ -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>
+86
View File
@@ -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>
+19
View File
@@ -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>
+16
View File
@@ -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>
+39
View File
@@ -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>
+72
View File
@@ -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>
+37
View File
@@ -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>
+25
View File
@@ -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>
+33
View File
@@ -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>
+62
View File
@@ -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>
+68
View File
@@ -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>
+42
View File
@@ -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>
+88
View File
@@ -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}
<!-- /脚本 -->
+226
View File
@@ -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}
<!-- /脚本 -->
+47
View File
@@ -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>
+70
View File
@@ -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>