dev_oa/app/home/view/index/main.html

511 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{extend name="../../base/view/common/base" /}
{block name="style"}
<style type="text/css">
.table-title {
font-size: 18px;
font-weight: 800;
padding: 15px 15px 0;
}
.panel-num table {
width: 100%;
}
.panel-num td {
text-align: center;
padding: 20px 0;
width: 20%;
border-left: 1px solid #eee
}
.panel-num .num-title {
padding-bottom: 10px;
color: #999;
}
.panel-num .num-num {
font-size: 28px;
font-weight: 300;
color: #009688;
}
.layui-timeline-title {
padding-bottom: 0;
}
.layui-timeline-item {
padding-bottom: 1px;
}
.layui-timeline-title span {
color: #999
}
.layui-timeline{
padding-bottom: 30px;
}
.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="layui-row layui-col-space15">
<div class="layui-col-md8">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card panel-num">
<table>
<tr>
<td>
<div class="num-title">员工</div>
<div class="num-num">{$adminCount}</div>
</td>
<td>
<div class="num-title">知识</div>
<div class="num-num">{$articleCount}</div>
</td>
<td>
<div class="num-title">审批</div>
<div class="num-num">{$approveCount}</div>
</td>
<td>
<div class="num-title">报销</div>
<div class="num-num">{$expenseCount}</div>
</td>
<td>
<div class="num-title">发票</div>
<div class="num-num">{$invoiceCount}</div>
</td>
</tr>
</table>
</div>
<div class="layui-card">
<div class="table-title">企业公告</div>
<div style="padding: 15px;">
<table id="Note" lay-filter="Note" class="layui-hide" style="margin-top:0"></table>
</div>
</div>
<div class="layui-card">
<div class="table-title">知识列表</div>
<div style="padding: 15px;">
<table id="Article" lay-filter="Article" class="layui-hide" style="margin-top:0"></table>
</div>
</div>
<div class="layui-card">
<div id="chartView" style="width: 100%;height:300px;"></div>
</div>
<div class="layui-card">
<div id="chartYear" style="width: 100%;height:240px;"></div>
</div>
</div>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-card">
<div class="table-title">系统信息</div>
<div class="layui-card-body">
<table class="layui-table" lay-skin="" lay-size="sm">
{if condition="($install == true)"}
<tr>
<td colspan="4" style="color: #E94335; background-color:#f5f5f5">提醒发现app目录下的install文件夹没删除为了系统的安全,请手动去删除。</td>
</tr>
{/if}
<tr>
<td class="layui-td-gray">服务器系统</td>
<td>{:get_system_info('os')}</td>
<td class="layui-td-gray">PHP版本</td>
<td>{:get_system_info('php')}</td>
</tr>
<tr>
<td class="layui-td-gray">上传限制</td>
<td>{:get_system_info('upload_max_filesize')}</td>
<td class="layui-td-gray">执行限制</td>
<td>{:get_system_info('max_execution_time')}</td>
</tr>
<tr>
<td class="layui-td-gray">ThinkPHP</td>
<td colspan="3">{:TP_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:10px"
href="https://www.kancloud.cn/manual/thinkphp6_0" target="_blank">TP6文档</a></td>
</tr>
<tr>
<td class="layui-td-gray">Layui</td>
<td colspan="3">{:LAYUI_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:10px"
href="https://www.layui.site/doc/" target="_blank">Layui文档</a></td>
</tr>
<tr>
<td class="layui-td-gray">勾股OA</td>
<td colspan="3">{:CMS_VERSION}<a class="layui-badge layui-bg-blue" style="margin-left:10px"
href="https://oa.gougucms.com/" target="_blank">勾股OA</a></td>
</tr>
<tr>
<td class="layui-td-gray">BUG反馈</td>
<td><a href="mailto:hdm58@qq.com" target="_blank">hdm58@qq.com</a></td>
<td class="layui-td-gray">QQ交流群</td>
<td><a href="https://qm.qq.com/cgi-bin/qm/qr?k=verenlO-kEIhi6yi4mvD_Goye2KF50sa&authKey=NsYa9Dcx6R5EYzKYScW1XT8RfQskT/wtsVxtDNOyuMBRRkTpBpO5bmCVNbozQYFi&noverify=0" target="_blank">24641076</a></td>
</tr>
</table>
</div>
</div>
<div class="layui-card">
<div class="table-title">员工动态</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>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.2/echarts.min.js"></script>
<script>
function init(layui) {
var TAB = parent.layui.tab,
layer = layui.layer,
table = layui.table;
//公告
table.render({
elem: '#Note'
, url: "/api/index/get_note_list" //数据接口
, page: false //开启分页
, cols: [[ //表头
{ field: 'cate_title', title: '公告分类', align: 'center','width': 90 },
{ field: 'title', title: '公告标题'},
{ field: 'view', title: '操作','width': 60 , align: 'center', templet:function(d){
var html='<button class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">详情</button>';
return html;
}},
{ field: 'create_time', title: '发布时间', align: 'center','width': 136}
]]
});
//文章
table.render({
elem: '#Article'
, url: "/api/index/get_article_list" //数据接口
, page: false //开启分页
, cols: [[ //表头
{ field: 'cate_title', title: '知识分类', align: 'center','width': 90 },
{ field: 'title', title: '知识标题'},
{ field: 'read', title: '访问量', align: 'center','width': 80 },
{ field: 'view', title: '操作','width': 60 , align: 'center', templet:function(d){
var html='<button class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">详情</button>';
return html;
}},
{ field: 'create_time', title: '发布时间', align: 'center','width': 136}
]]
});
$('.panel-more').on('click', function () {
TAB.sonAdd('/api/index/log_list','员工动态');
return;
});
//监听行工具事件
table.on('tool(Note)', function (obj) {
var data = obj.data;
if (obj.event === 'view') {
TAB.sonAdd('/note/index/view?id='+data.id,'公告详情');
return;
}
});
table.on('tool(Article)', function (obj) {
var data = obj.data;
if (obj.event === 'view') {
TAB.sonAdd('/article/index/view?id='+data.id,'知识文章详情');
return;
}
});
get_logs();
get_view_data();
}
function get_logs() {
$.ajax({
url: "/api/index/log_list",
type: 'post',
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);
}
}
})
}
function setHour(num) {
var str = num + ':00';
if (num < 10) {
str = '0' + num + ':00';
}
return str;
}
var chartView = echarts.init(document.getElementById('chartView'));
function get_view_data() {
$.ajax({
url: "/api/index/get_view_data",
type: 'post',
data: {},
success: function (e) {
if (e.code == 0) {
var data_first = e.data.data_first;
var data_second = e.data.data_second;
archiveCalendar = e.data.data_three;
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: '15px',
text: '今日与昨日员工活跃度',
left: '12px',
textStyle: {
fontSize: '18',
color: '#333',
}
},
color: ["#1AAD19", "#1890FF"],
grid: {
left: '20px',
right: '30px',
bottom: '15px',
top: '60px',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
toolbox: {
show: true,
},
legend: {
data: ["今日", "昨日"],
top: '18px',
},
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);
let myChart = echarts.init(document.getElementById('chartYear'));
let option = {
title: {
top: '15px',
text: '近一年员工活跃度',
left: '12px',
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()
}]
};
myChart.setOption(option);
setTimeout(function () {
window.onresize = function () {
chartView.resize();
myChart.resize();
}
})
console.log(e.data);
}
}
})
var archiveCalendar = {};
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() {
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));
}
return dayArray;
}
function retunDay(day) {
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;
}
}
</script>
{include file="../../base/view/common/layui" base='base' extend="[]" callback="init" /}
{/block}
<!-- /脚本 -->