Authored by 王涛

Merge branch 'master-500-dev' of http://192.168.1.136:82/monitor_v3/hg-monitor-w…

…eb into master-500-dev
... ... @@ -143,7 +143,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'commonDetail','sessi
// 初始化下拉框
function loadSelect() {
admin.req({
url: domainName + '/api-web/machineRoom/getMachineRoomInfo'
url: domainName + '/api-room/machineRoom/getMachineRoomInfo'
}).done(function (response) {
var options = "<option value=''>=归属机房=</option>";
$.each(response.data, function (i, v) {
... ...
//工作汇报表单
layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'laydate', 'upload'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
var admin = layui.admin;
var table = layui.table;
var common = layui.common;
var session = layui.sessions;
var laydate = layui.laydate;
var upload = layui.upload;
var domainName = common.domainName;
var xmSelect = layui.xmSelect;
//对外暴露的接口
exports('workReportAdd', function (data) {
var accessToken = session.getToken()['access_token']
var userSelect = {}
var currentDate = {}
var uploadInst = {}
var defaultUser = []
var attachmentIds = []
var id = data.id
var cols = []
var where = {}
var url = ''
var historywarningTable = {}
var viewType = data && data.viewType ? data.viewType : '';
init()
$('#workReport_type').val(data.repType)
//渲染表单
form.render(null, 'add-workReport-form')
form.on('select(workReport_type)', function (dom) {
initFromType(dom.value)
})
//保存
form.on('submit(workReport-form-save-id)', function (res) {
var value = $('#attachmentInput').val()
if (value != '') {
$('#upload_btn').click()
} else {
saveForm()
}
})
//表单验证
form.verify({
checkReportIsExist: function(value, item){ //value:表单的值、item:表单的DOM对象
var repType = $('#add-workReport-form').find("select[name='repType']").val()
var count = 0
var createTime = $('#add-workReport-form').find("input[name='createTime']").val()
var date = new Date()
var month = date.getMonth() > 9 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)
var currentDate = date.getFullYear() + '-' + month + '-' + date.getDate()
var createDate = createTime.split(' ')[0]
if (repType == 'day' && createDate == currentDate) {
if (new Date(createTime) < new Date(currentDate + ' ' + '16:30:00')) {
return "请于北京时间下午16:30分后添加当天日报!"
}
}
admin.req({
url: domainName + '/api-web/workreport/checkIsExist?repType=' + repType + '&createTime=' + createDate,
async: false,
success: function (res) {
if (res.success) {
count = res.count
}
}
})
if (count !=0 && id == undefined && repType == 'day') {
return "日报不能重复添加!"
}
}
});
//保存
function saveForm() {
layer.load(2)
var data = form.val('add-workReport-form')
var params = {}
params.user = data.select
params.attachmentIds = attachmentIds.toString()
delete data['file']
delete data['select']
params.workReport = JSON.stringify(data)
admin.req({
url: domainName + '/api-web/workreport/save?access_token=' + accessToken,
data: JSON.stringify(params),
type: 'post',
contentType: "application/json; charset=utf-8",
done: function (res) {
if (res.success) {
layer.msg(res.msg, {
offset: '15px',
icon: 1,
time: 1000,
}, function () {
layer.closeAll()
table.reload('workReportTable', {
where: {
access_token: accessToken,
repTitle: '',
isRead: '',
repType: '',
createTime: ''
},
});
})
} else {
layer.msg(res.msg, {
offset: '15px',
icon: 7,
time: 1000,
})
}
}
})
return false
}
//页面初始化
function init() {
initFromType(data.repType)
initUserSelect()
initDatePlus()
initUploadPlus()
if (viewType == 'view') {
initViewMode();
}
}
cols = [
{type: 'numbers',title:'序号'}
, {
field: 'alarmLevel', title: '级别', align: 'center', width: 120,
templet: function (d) {
if (d.alarmLevel == 3) {
return '<span class="layui-table-warn" style="width: 100%;">严重</span>';
} else if (d.alarmLevel == 2) {
return '<span class="layui-table-close" style="width: 100%;">重要</span>';
} else if (d.alarmLevel == 1) {
return '<span class="layui-table-normal" style="width: 100%;">一般告警</span>';
}
}
}
, {
field: 'resName', title: '资源名称', align: 'center', width: 230,
templet: '<div><span data-warn-zymc="{{d.id}}" data-resid="{{d.resId}}" data-restype="{{d.resType}}" data-ip="{{d.ip}}" data-resname="{{d.resName}}">{{d.resName}}</span></div>'
}
, {
field: 'kpiName', title: '指标名称', align: 'center', width: 150,
templet: function (d) {
var kpiName = d.kpiName == 'TYPE' ? 'ERRPT' : d.kpiName;
if (d.kpiIdent != 1 && d.isWarning != 1) {
return '<div>' + kpiName + '</div>';
}
return '<div><span data-ident="' + d.kpiIdent + '" data-trend="' + d.isTrend + '" data-warning="' + d.isWarning + '" data-warn-zbmc="' + d.id + '" class="layui-table-link" data-resid="' + d.resId + '" data-flag="' + d.flag + '" data-kpi="' + d.kpiId + '" data-name="' + kpiName + '" >' + kpiName + '</span></div>';
}
}
, {field: 'alarmContent', title: '告警内容', align: 'center', width: 500}
, {
field: 'alarmResource', title: '告警来源', align: 'center', minWidth: 100, templet: function (d) {
if (d.alarmResource == 1) {
return '<div>华为告警</div>';
} else {
return '<div>监控系统</div>';
}
}
}
, {field: 'updateTime', title: '告警时间', align: 'center', minWidth: 180}
, {field: 'alarmTime', title: '首次告警时间', align: 'center', minWidth: 180}
]
where = {
access_token: accessToken,
dateTime: $('#add-workReport-form').find("input[name='createTime']").val()
}
url = domainName + '/api-web/home/alarm/getAlarm'
getAlarmInfo(where,cols,url)
//表单赋值
function fromAssignment() {
if (data && data.id) {
$('#add-workReport-form-atta').show()
//编辑表单时禁用日志类型修改和时间选择
$('#add-workReport-form').find("select[name='repType']").attr("disabled", "disabled")
$('#add-workReport-form').find("input[name='createTime']").attr("disabled", "disabled")
//编辑表单时取消显示默认值
currentDate.config.isInitValue = false
initDatePlus()
//切换相应的类型表单
initFromType(data.repType)
var time = ''
admin.req({
url: domainName + `/api-web/workreport/getById/${data.id}`,
async: false,
done: function (res) {
form.val('add-workReport-form', res.object)
time = res.object.createTime
var userArr = []
$.each(res.object.reportUserList, function (i, v) {
userArr.push(v.userName)
})
userSelect.setValue(userArr)
if (res.object.attachmentList.length != 0) {
$.each(res.object.attachmentList,function (i,v) {
writeTagsInfo(v.id,v.originalName)
})
}
}
})
cols.push({field: 'alarmStatus', title: '告警状态', align: 'center', minWidth: 100,
templet: function (d) {
var str = ''
if (d.alarmStatus == '0') {
str = '告警'
} else if (d.alarmStatus == '1') {
str = '关闭'
}
return `<div><span>${str}</span></div>`
}
}
, {field: 'clearType', title: '消除类型', align: 'center', minWidth: 100,
templet:function (d) {
var str = ''
if (d.clearType == '0'){
str = '自动消除'
} else if(d.clearType == '1') {
str = '手动消除'
}
return `<div><span>${str}</span></div>`
}}
, {field: 'clearUserId', title: '消除人', align: 'center', minWidth: 100,}
, {field: 'clearTime', title: '消除时间', align: 'center', minWidth: 180,}
, {field: 'clearReason', title: '消除原因', align: 'center', minWidth: 250})
where = {access_token: accessToken,reportId:data.id,time:time}
url = domainName + '/api-web/workreport/getAlarmListByReportId'
getAlarmInfo(where,cols,url)
}
}
//获取当前用户的告警信息
function getAlarmInfo(where,cols,url) {
if (data && data.repType != 'day') {
return false
}
historywarningTable = table.render({
elem: '#table-report-alarm'
, url: url
, where: where
, parseData: function (res) {
if (data && !data.id) {
var str = `共有${res.map.totalCount}条告警,手动处理${res.map.manualCount}条,自动处理${res.map.autoCount}条,` +
`未处理${res.map.alarmCount}条`;
$('#add-workReport-form').find("input[name='alarmStatic']").val(str);
}
}
, height: 'auto'
, cellMinWidth: 80
, text: {
none: '无告警'
}
, page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'
}
,limit: common.limit
,limits: common.limits
, even: true
, cols: [cols]
,done: function (res, curr, count) {
}
})
}
//初始化日期插件
function initDatePlus() {
currentDate = laydate.render({
elem: '#createTime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
max:0,
change: function(value) {
if (data && data.repType != 'day') {
return false
}
historywarningTable.reload({
where: {
access_token: accessToken,
dateTime: value
},
})
}
});
}
//初始化上传插件
function initUploadPlus() {
var param = {"access_token": accessToken}
var fileName = []
uploadInst = upload.render({
elem: '#attachment', //绑定元素
url: common.domainName + '/api-web/workreport/upload',
data: param,
multiple: true,
auto: false, //选择文件后不自动上传
bindAction: '#upload_btn',//指定按钮触发上传
accept: 'file',
exts: 'xls|doc|pdf|docx|xlsx|jpg|png',
choose: function (obj) {
//选择文件后回调
var files = this.files = obj.pushFile();
obj.preview(function (index, file, result) {
fileName.push(file.name)
$('#attachmentInput').val(fileName.toString())
})
},
done: function (res) {
//单次上传成功
attachmentIds.push(res.str)
},
allDone: function (obj) {
//全部上传成功后
saveForm()
},
error: function (index, upload) {
// 上传失败
layer.msg('文件上传时发生故障,请稍后再试!', {
icon: 7, time: 3000
});
}
});
}
//初始化用户下拉列表框
function initUserSelect() {
$.ajax({
url: domainName + '/api-user/users/getAll?access_token=' + accessToken,
success: function (res) {
userSelect = xmSelect.render({
el: '.reportUser',
disabled: viewType == 'view' ? true : false,
template({ item, sels, name, value }){
return item.nickname + '(' + value + ')'
},
prop: {
name: 'nickname',
value: 'username'
},
filterable: true,
layVerify: 'required',
layVerType: 'msg',
data: res,
})
initGroupUserDefault()
//赋值
fromAssignment()
}
})
}
//初始化组负责人对应的组员
function initGroupUserDefault() {
$.ajax({
url: domainName + '/api-web/workreport/getUserByAdmin?theirType=1&access_token=' + accessToken,
success: function (res) {
if (!res.str) {
return;
}
defaultUser = res.str.split(",");
//默认接收人
if (!data.id && defaultUser.length != 0) {
userSelect.setValue(defaultUser)
}
}
})
}
//根据传入类型动态渲染表单
function initFromType(repType) {
switch (repType) {
case 'day':
$('.work_finish').text('今日完成工作')
$('.work_conclusion').text('未完成工作')
$('.work_help').text('需要协调工作')
$('.plan').hide()
$('.reportAlarm').show()
$('.report_alarmStatic').show()
getAlarmInfo(where,cols,url)
break
case 'week':
$('.work_finish').text('本周完成工作')
$('.work_conclusion').text('本周工作总结')
$('.plan').show()
$('.work_plan').text('下周工作计划')
$('.work_help').text('需要协调与帮助')
$('.reportAlarm').hide()
$('.report_alarmStatic').hide()
break
case 'month':
$('.work_finish').text('本月完成工作')
$('.work_conclusion').text('本月工作总结')
$('.plan').show()
$('.work_plan').text('下月工作计划')
$('.work_help').text('需要协调与帮助')
$('.reportAlarm').hide()
$('.report_alarmStatic').hide()
break
}
}
// 初始化查看模式
function initViewMode() {
$('form[lay-filter="add-workReport-form"]').find('input, textarea').attr('readonly', true);
$('form[lay-filter="add-workReport-form"]').find('select').attr('disabled', true);
$.each(xmSelect.get(), function (i, v) {
v.update({disabled: true});
});
$('#attachmentInput').parent().parent().parent().addClass('hide');
$('#table-report-add-attachment').removeClass('hide');
$('#form-item-repTitle').removeClass('hide');
//渲染附件表格
var attachmentTable = table.render({
elem: '#table-report-add-attachment',
url: domainName + '/api-web/workreport/getAttaById',
where: {
access_token: accessToken,
id: data.id
},
height: 'full',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'//自定义分页主题颜色
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'name', title: '文件名称', align: 'center', minWith: 200,
},
{
field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
},
{
field: 'size', title: '文件大小', align: 'center', minWith: 150,
templet: function (d) {
var str = (d.size / 1000).toFixed(2)
return `<div><span>${str}KB</span></div>`
}
},
{
title: '操作', align: "center", width: 120,
templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link preview-attachment-btn">预览</span></div>'
}
]],
done: function () {
$('.preview-attachment-btn').on('click', function () {
var id = $(this).data('id')
var suffix = $(this).data('suffix')
if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?access_token=` + accessToken
layer.open({
type: 1,
content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
title: '图片预览',
area: ['60%', '90%']
})
} else {
//附件为文档类型
common.openReport(id)
}
})
}
})
form.render();
}
//写入标签内容
function writeTagsInfo(id,name) {
var tags = '<span id="tags_span_'+id+'" data-id="'+id+'"><em>'+name+'</em>' +
'<button type="button" value="'+id+'" class="tagsclose close">×</button></span>';
if($("#tags_span_"+id).length == 0){
//拼接标签
$("#selecte_content_id").append(tags);
//绑定标签的删除事件
bindTagesDelEvent();
}
}
//删除标签事件
function bindTagesDelEvent() {
//删除已选主体的页签
$("button.tagsclose").on("click",function () {
var attachId = $(this).attr("value");
//确认提示框
layer.confirm('附件删除后将无法恢复,您确定要删除吗?', {
btn: ['确定', '取消'] //按钮
}, function () {
$.ajax({
url: domainName + `/api-web/workreport/deleteAttachment/${id}/${attachId}?access_token=` + accessToken,
type: "get",
}).done(function (res) {
layer.msg('删除成功', {
offset: '15px'
, icon: 1
, time: 1000
}, function () {
$("#tags_span_"+attachId).remove();
});
}).error(function (error) {
console.log(error);
});
});
});
}
})
})
\ No newline at end of file
... ...
//工作汇报
layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
var admin = layui.admin;
var table = layui.table;
var common = layui.common;
var session = layui.sessions
var domainName = common.domainName;
//对外暴露的接口
exports("workReportIndex", function () {
var accessToken = session.getToken()['access_token']
var createTime = ''
var isRead = ''
var repType = ''
//回车搜索
$('#workReport_title').keydown(function (e) {
if (e.keyCode === 13) {
reloadWorkReportTable()
}
})
//绑定是否阅读
form.on('radio(workReport_isRead)', function () {
isRead = $('input[name="isRead"]:checked').val()
reloadWorkReportTable()
})
//绑定类型
form.on('radio(workReport_type)', function () {
repType = $('input[name="repType"]:checked').val()
reloadWorkReportTable()
})
//时间周期切换事件
$("#createTimeBtn button").on("click", function () {
$("#createTimeBtn button").removeClass("active");
$(this).addClass("active");
createTime = ($(this).data("period"))
reloadWorkReportTable()
});
//渲染表单元素
form.render(null, 'workReport-form')
//新增日报
$('#workReport_create_day').on('click', function () {
openWorkReportForm('day')
})
//新增周报
$('#workReport_create_week').on('click', function () {
openWorkReportForm('week')
})
//新增月报
$('#workReport_create_month').on('click', function () {
openWorkReportForm('month')
})
//渲染表格
var workReportTable = table.render({
elem: '#workReportTable',
url: domainName + '/api-web/workreport/page',
where: {
access_token: accessToken,
repTitle: $('#workReport_title').val(),
isRead: isRead,
repType: repType,
createTime: createTime,
dateLimit: '',
viewMode:false
},
height: 'full-300',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'//自定义分页主题颜色
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[
{type: 'checkbox'},
{
field: 'repType', title: '汇报类型', align: 'center', width: 150,
templet: function (d) {
var typeName = ''
switch (d.repType) {
case 'day':
typeName = '日报'
break;
case 'week':
typeName = '周报'
break;
case 'month':
typeName = '月报'
break;
}
return `<div><span>${typeName}</span></div>`
}
},
{
field: 'repTitle', title: '标题', align: 'center', minWith: 300,
templet: '<div><span data-id="{{d.id}}" data-rep="{{d.repType}}" class="layui-table-link view-workReport-title">{{d.repTitle}}</span></div>'
},
{
field: 'attachmentList', title: '附件数量', align: 'center', width: 120,
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-workReport-attachment">{{d.attachmentList.length}}</span></div>'
},
{
field: 'reportUserList', title: '已读/接收人数', align: 'center', minWith: 150,
templet: function (d) {
var str = ''
var count = 0
$.each(d.reportUserList, function (i, v) {
if (v.isRead == 1) {
count++
}
})
str = count + '/' + d.reportUserList.length
return `<div><span data-id="${d.id}" class="layui-table-link view-workReport-reportUser">${str}</span></div>`
}
},
{
field: 'reportUserList', title: '已读人员', align: 'center', minWith: 400,
templet: function (d) {
var userName = []
var str = ''
$.each(d.reportUserList, function (i, v) {
if (v.isRead == 1) {
userName.push(v.nickName)
}
})
if(userName.length === 0){
userName = ['无']
}
str = userName.toString()
if (str.length == 0) str = '无'
return `<div><span>${str}</span></div>`
}
},
{
field: 'createUserNickName', title: '创建人', align: 'center', minWith: 150,
},
{
field: 'createTime', title: '上报时间', align: 'center', minWith: 150,
},
{
title: '操作', align: "center", width: 120,
templet: '<div><span data-id="{{d.id}}" class="layui-table-link delete-workReport-btn">删除</span></div>'
}
]],
done: function () {
//点击标题编辑表单
$('.view-workReport-title').on('click', function () {
openWorkReportForm($(this).data('rep'), $(this).data('id'))
})
//点击已读/未读获取接收人列表
$('.view-workReport-reportUser').on('click', function () {
openWorkReportList('reportUser', $(this).data('id'))
})
//获取附件列表
$('.view-workReport-attachment').on('click', function () {
openWorkReportList('attachment', $(this).data('id'))
})
//删除事件
$('.delete-workReport-btn').on('click', function () {
deleteWorkRepord($(this).data("id"))
})
}
})
//刷新表格
function reloadWorkReportTable() {
workReportTable.reload({
where: {
access_token: accessToken,
repTitle: $('#workReport_title').val(),
isRead: isRead,
repType: repType,
dateLimit: '',
createTime: createTime
},
})
}
//删除数据
function deleteWorkRepord(id) {
//确认提示框
layer.confirm('数据删除后将无法恢复,您确定要删除吗?', {
btn: ['确定', '取消'] //按钮
}, function () {
admin.req({
url: domainName + '/api-web/workreport/delete',
type: 'delete',
data: {id: id}
}).done(function (res) {
layer.msg('删除成功', {
offset: '15px',
icon: 1,
time: 1000
}, function () {
reloadWorkReportTable()
})
}).error(function (error) {
console.log(error)
})
})
}
//新增/编辑表单
function openWorkReportForm(repType, id) {
var title = id ? '编辑' : '新增'
common.openWin('workreport/add', title, {id: id, repType: repType}, ['保存', '取消'], function f() {
$("#workReport-form-save-id").trigger("click");
})
}
//查看附件/接收人列表
function openWorkReportList(type, id) {
var title = ''
if (type == 'attachment') {
title = '附件'
} else {
title = '接收人'
}
common.openWin('workreport/list', title, {id: id, type: type}, ['确定', '取消'])
}
//获取页面选中数据
function getCheckStatusData() {
return table.checkStatus('workReportTable').data
}
return {reloadWorkReportTable, getCheckStatusData}
})
})
\ No newline at end of file
... ...
//工作汇报
layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
var admin = layui.admin;
var table = layui.table;
var common = layui.common;
var session = layui.sessions
var domainName = common.domainName;
//对外暴露的接口
exports("workReportList", function (d) {
var accessToken = session.getToken()['access_token']
if (d.type == 'attachment') {
$('#attachmentTable').show()
$('#reportUserTable').hide()
createAttachmentTable()
} else {
$('#attachmentTable').hide()
$('#reportUserTable').show()
createReportUserTable()
}
//渲染收件人表格
function createReportUserTable() {
var reportUserTable = table.render({
elem: '#reportUserTable',
url: domainName + '/api-web/workreport/getUserById',
where: {
access_token: accessToken,
id: d.id
},
height: 'full',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'//自定义分页主题颜色
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'nickName', title: '姓名', align: 'center', minWith: 200,
},
{
field: 'department', title: '所属部门', align: 'center', minWith: 150,
},
{
field: 'isRead', title: '阅读状态', align: 'center', minWith: 150,
templet: function (d) {
var str = ''
if (d.isRead == 0) {
str = '未读'
return `<div><span style="color: red">${str}</span></div>`
} else {
str = '已读'
return `<div><span>${str}</span></div>`
}
}
},
{
field: 'readingTime', title: '阅读时间', align: 'center', minWith: 150,
}
]],
done: function () {
}
})
}
//渲染附件表格
function createAttachmentTable() {
var attachmentTable = table.render({
elem: '#attachmentTable',
url: domainName + '/api-web/workreport/getAttaById',
where: {
access_token: accessToken,
id: d.id
},
height: 'full',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'//自定义分页主题颜色
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'name', title: '文件名称', align: 'center', minWith: 200,
}, {
field: 'originalName', title: '原始名称', align: 'center', minWith: 200,
}, {
field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
},
{
field: 'size', title: '文件大小', align: 'center', minWith: 150,
templet: function (d) {
var str = (d.size / 1000).toFixed(2)
return `<div><span>${str}KB</span></div>`
}
},
{
title: '操作', align: "center", width: 120,
templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link preview-attachment-btn">预览</span>' +
'<span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link attachment-download-btn" style="margin-left: 10px">下载</span></div>'
}
]],
done: function () {
$('.preview-attachment-btn').on('click', function () {
var id = $(this).data('id')
var suffix = $(this).data('suffix')
if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?access_token=` + accessToken
layer.open({
type: 1,
content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
title: '图片预览',
area: ['60%', '90%']
})
} else {
//附件为文档类型
common.openReport(id)
}
})
$('.attachment-download-btn').on('click',function () {
var id = $(this).data('id')
var suffix = $(this).data('suffix')
var url = domainName + `/api-web/openoffice/download/${id}?access_token=` + accessToken
window.open(url)
})
}
})
}
})
})
\ No newline at end of file
... ...
/** 工作汇报查看 */
layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate','element'], function (exports) {
var $ = layui.$;
var form = layui.form;
var table = layui.table;
var admin = layui.admin;
var common = layui.common;
var laydate = layui.laydate;
var element = layui.element;
exports('workReportView', function () {
var sessions = layui.sessions;
var accessToken = sessions.getToken().access_token;
var domainName = common.domainName;
var companyChart = echarts.init(document.getElementById('chart-company-report'));
var noReadChart = echarts.init(document.getElementById('chart-noRead-report'));
var dateLimit = ""
var createTime = ""
var type = ''
var urlRepType = ''
var manufacturerId = ''
var reportDetailTable;
getUrlType()
if (type != '1') {
createTime = 'thisWeek';
} else {
$.each($("button.date"),function (i,e) {
var $dom = $(e);
if($dom.hasClass("active")){
$dom.removeClass("active")
}
})
$.each($("button.isRead"),function (i,e) {
var $dom = $(e);
if($dom.data("type") == '0'){
$dom.addClass("active")
}
})
$.each($('input[name="repType"]'),function (i,e) {
var $dom = $(e);
if($dom.val() == urlRepType){
$dom.attr('checked','checked');
}
})
}
//日期范围选择
laydate.render({
elem: '#dateLimit'
,range: '~',
done: function (value) {
dateLimit = value
if (dateLimit == '') {
$('[data-period="thisWeek"]').click()
} else {
$.each($("button.date"),function (i,e) {
var $dom = $(e);
if($dom.hasClass("active")){
$dom.removeClass("active")
}
})
reloadAllChange()
}
}
});
form.render();
// loadDailyChart();
// loadReportableChart();
loadCompanyReport();
loadReadReport();
loadWorkReportTable();
loadConditionSelect();
var url = domainName + '/api-web/workreport/chart/noRead';
loadNoReadChart(noReadChart,url,'未读');
// tab页切换事件
element.on('tab(report-tab)', function (data) {
var name = '';
if (data.index == 0) {
url = domainName + '/api-web/workreport/chart/noRead'
name = '未读';
loadNoReadChart(noReadChart,url,name);
} else if (data.index == 1) {
url = domainName + '/api-web/workreport/chart/noReport?createTime=' + createTime + '&dateLimit=' + dateLimit;
name = '未报';
var noReportChat = echarts.init(document.getElementById('chart-noReport-report'));
loadNoReadChart(noReportChat,url,name);
} else if (data.index == 2) {
url = domainName + '/api-web/workreport/chart/noHandlingAlarmsChart'
name = '未处理';
var noAlarmChart = echarts.init(document.getElementById('chart-noAlarm-report'));
loadNoReadChart(noAlarmChart,url,name);
}
});
//监听Esc事件
$(document).keyup(function(event){
if(event.keyCode === 27 || event.keyCode === 96){
layer.closeAll();
}
});
$("button.isRead").unbind().on("click",function () {
var $dom = $(this);
$("button.isRead").removeClass("active")
$dom.addClass("active")
loadWorkReportTable();
});
// 日期方式选择
$('#btns-workreport-time button').click(function () {
$.each($("button.date"),function (i,e) {
var $dom = $(e);
if($dom.hasClass("active")){
$dom.removeClass("active")
}
})
$("#dateLimit").val('')
dateLimit = ''
$("#btns-workreport-time button").removeClass("active");
$(this).addClass("active");
createTime = ($(this).data("period"))
reloadAllChange();
});
// 回车搜索
$('[lay-filter="form-workreport-condition"] input').keydown(function (e) {
if (e.keyCode === 13) {
reloadAllChange();
}
});
// 单选框改变搜索
form.on('radio(workReport-currIsRead)', reloadAllChange);
form.on('radio(workReport-repType)', reloadAllChange);
// 下拉框改变搜索
form.on('select(slt-workreport-group)', reloadAllChange);
form.on('select(slt-workreport-user)', reloadAllChange);
// 勾选标记为已读事件
$('#btn-workreport-set-read').click(function () {
var checks = table.checkStatus('table-workreport-view').data;
checks = $.grep(checks, item => item.currIsRead == '0');
checks = $.map(checks, item => item.id);
setRead(checks);
});
// 标记全部为已读事件
$('#btn-workreport-set-all-read').click(function () {
admin.req({
url: domainName + '/api-web/workreport/setRead/all'
}).done(function (response) {
if (response.success) {
layer.msg('执行操作成功!', {icon: 1, time: 3000});
loadReadReport();
loadWorkReportTable();
} else {
layer.msg('执行操作失败!', {icon: 2, time: 3000});
}
});
});
// 加载工作汇报表格
function loadWorkReportTable() {
var conditions = form.val('form-workreport-condition');
$.each($("button.isRead"),function (i,e) {
var $dom = $(e);
if($dom.hasClass("active")){
conditions["currIsRead"] = $dom.data("type")
}
})
if(manufacturerId!=''){
conditions.manufacturerName = manufacturerId;
}
Object.assign(conditions, {access_token: accessToken, createTime: createTime, viewMode: 'true',dateLimit:dateLimit});
table.render({
elem: '#table-workreport-view',
url: domainName + '/api-web/workreport/page',
where: conditions,
height: 'full-360',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
theme: '#1E9FFF'
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[{
type: 'checkbox'
}, {
type: 'numbers', title: '序号'
}, {
field: 'repType', title: '汇报类型', align: 'center',
templet: function (d) {
var typeName = ''
switch (d.repType) {
case 'day':
typeName = '日报'
break;
case 'week':
typeName = '周报'
break;
case 'month':
typeName = '月报'
break;
}
return typeName
}
}, {
field: 'repTitle', title: '标题', align: 'center', minWidth: 200,event: 'serRead',
templet: '<div><span data-id="{{d.id}}" data-rep="{{d.repType}}" class="layui-table-link view-workReport-title" >{{d.repTitle}}</span></div>'
}, {
field: 'attachmentList', title: '附件数量', align: 'center',
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-workReport-attachment">{{d.attachmentList.length}}</span></div>'
}, {
field: 'currIsRead', title: '状态', align: 'center',
templet: function (d) {
if (d.currIsRead == '1') {
return '<span class="green">已读</span>';
} else {
return '<span class="red">未读</span>';
}
}
}, {
field: 'reportUserList', title: '未读人员', align: 'center',minWidth:'200',
templet: function (d) {
var userName = [];
$.each(d.reportUserList, function (i, v) {
if (v.isRead == 0) {
userName.push(v.nickName)
}
});
if(userName.length === 0){
userName = ['无']
}
return userName.toString();
}
}, {
field: 'reportUserList', title: '已读人员', align: 'center',minWidth:'200',
templet: function (d) {
var userName = [];
$.each(d.reportUserList, function (i, v) {
if (v.isRead == 1) {
userName.push(v.nickName)
}
});
if(userName.length === 0){
userName = ['无']
}
return userName.toString();
}
}, {
field: 'createUserNickName', title: '上报人', align: 'center',
}, {
field: 'manufacturerName', title: '厂商', align: 'center',
}, {
field: 'createTime', title: '上报时间', align: 'center',
}]],
done: function () {
//获取附件列表
$('.view-workReport-attachment').on('click', function () {
common.openWin('workreport/list', '附件', {id: $(this).data('id'), type: 'attachment'}, ['确定', '取消']);
});
}
});
}
//监听单元格事件
table.on('tool(table-workreport-view)', function(obj){
var data = obj.data;
if(obj.event === 'serRead'){
var id = data['id'];
var repType = data['repType'];
admin.req({
url: domainName + '/api-web/workreport/setRead',
data: {workReportIds: [id]}
}).done(function (response) {
if (response.success) {
obj.update({
currIsRead: "1"
});
loadReadReport();
}
});
common.openWin('workreport/add', '查看', {id: id, repType: repType, viewType: 'view'}, ['关闭'], function f() {
return true;
}, null, null, {
success: function () {
form.render();
}
})
}
});
// 加载查询条件下拉框
function loadConditionSelect() {
admin.req({
url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
}).done(function (response) {
var options = "<option value=''>=选择厂商=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
});
$('#slt-workreport-group').html(options);
if(manufacturerId!=''){
$('#slt-workreport-group').val(manufacturerId)
}
form.render();
});
$.ajax({
url: domainName + '/api-user/users/getAll',
data: {
access_token: accessToken
},
success: function (response) {
var options = "<option value=''>=选择汇报人=</option>";
$.each(response, function (i, v) {
options += "<option value='" + v.username + "'>" + v.nickname + "</option>"
});
$('#slt-workreport-user').html(options);
form.render();
}
});
}
// 加载最近日报汇报统计图表
function loadDailyChart() {
var conditions = form.val('form-workreport-condition');
Object.assign(conditions, {access_token: accessToken, createTime: createTime, viewMode: 'true',dateLimit:dateLimit});
admin.req({
url: domainName + '/api-web/workreport/chart/daily',
data: conditions
}).done(function (response) {
var chartData = response.map;
var needReportList = chartData.needReportList;
var reportedList = chartData.reportedList;
var xAxisData = chartData.xAxisData;
var option = {
backgroundColor: 'rgba(255, 255, 255, 1)',
tooltip: {
trigger: 'axis',
extraCssText: 'background: #fff; border-radius: 0;box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);color: #333;',
axisPointer: {
type: 'shadow',
shadowStyle: {
color: '#ffffff',
shadowColor: 'rgba(225,225,225,1)',
shadowBlur: 5
}
}
},
grid: {
top: 10,
right: 5
},
xAxis: {
type: 'category',
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
margin: 20,
},
data: xAxisData
},
yAxis: {
axisLine: {
show: false
},
axisTick: {
show: false
}
},
series: [{
name: '应报',
data: needReportList,
type: 'bar',
barWidth: 20,
zlevel: 9,
itemStyle: {
borderWidth: 1,
zlevel: 99,
borderColor: '#a8d4ff', //同背景色一样
color: '#e3f2ff'
},
emphasis: {
itemStyle: {
borderWidth: 1,
zlevel: 99,
borderColor: '#a8d4ff', //同背景色一样
color: '#e3f2ff'
}
}
}, {
name: '已报',
data: reportedList,
type: 'bar',
barWidth: 20,
barGap: '-100%',
zlevel: 9,
color: '#2094ff'
}]
};
var lastWeekChart = echarts.init(document.getElementById('chart-daily-report'));
lastWeekChart.setOption(option);
});
}
// 日报/周报/月报 应报已报统计
function loadReportableChart() {
var conditions = form.val('form-workreport-condition');
Object.assign(conditions, {access_token: accessToken, createTime: createTime, viewMode: 'true',dateLimit:dateLimit});
admin.req({
url: domainName + '/api-web/workreport/chart/reptype',
data: conditions
}).done(function (response) {
var chartData = response.map;
var needReportList = chartData.needReportList;
var reportedList = chartData.reportedList;
var xAxisData = ['日报', '周报', '月报'];
var option = {
backgroundColor: 'rgba(255, 255, 255, 1)',
tooltip: {
trigger: 'axis',
extraCssText: 'background: #fff; border-radius: 0;box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);color: #333;',
axisPointer: {
type: 'shadow',
shadowStyle: {
color: '#ffffff',
shadowColor: 'rgba(225,225,225,1)',
shadowBlur: 5
}
}
},
grid: {
top: 10,
right: 5
},
xAxis: {
type: 'category',
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
margin: 20,
},
data: xAxisData
},
yAxis: {
axisLine: {
show: false
},
axisTick: {
show: false
}
},
series: [{
name: '应报',
data: needReportList,
type: 'bar',
barWidth: 20,
zlevel: 9,
itemStyle: {
borderWidth: 1,
zlevel: 99,
borderColor: '#a8d4ff', //同背景色一样
color: '#e3f2ff'
},
emphasis: {
itemStyle: {
borderWidth: 1,
zlevel: 99,
borderColor: '#a8d4ff', //同背景色一样
color: '#e3f2ff'
}
}
}, {
name: '已报',
data: reportedList,
type: 'bar',
barWidth: 20,
barGap: '-100%',
zlevel: 9,
color: '#2094ff'
}]
};
var lastFiveTimesChart = echarts.init(document.getElementById('chart-reportable-report'));
lastFiveTimesChart.setOption(option);
});
}
// 各厂商应报已报情况
function loadCompanyReport() {
var conditions = form.val('form-workreport-condition');
Object.assign(conditions, {access_token: accessToken, createTime: createTime, viewMode: '',dateLimit:dateLimit});
admin.req({
url: domainName + '/api-web/workreport/chart/group',
data: conditions
}).done(function (response) {
var chartData = response.map;
var groupList = chartData.groupList;
var needReportList = chartData.needReportList;
var reportedList = chartData.reportedList;
var xData = [];
var groupData = [];
$.each(groupList, function (i, v) {
xData.push(v);
groupData.push({
name: v,
value: 1
});
});
var series = [{
name: '应报',
data: needReportList,
barWidth: 20,
type: 'bar',
label: {
show: true,
position: 'top',
textStyle: {
color: '#555'
},
formatter:function (data) {
return reportedList[data.dataIndex] +'/'+ data.value
}
},
itemStyle: {
normal: {
color: (params) => {
var colors = ['#b6c2ff', '#96edc1', '#fcb75b'];
return colors[params.dataIndex % 3]
}/*,
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'black',
fontSize: 16
}
}*/
}
},
xAxisIndex: 0,
yAxisIndex: 0
}, {
name: '已报',
data: reportedList,
barWidth: 20,
type: 'bar',
barGap: '-100%',
label: {
show: false,
position: 'top',
textStyle: {
color: '#555'
}
},
itemStyle: {
normal: {
color: (params) => {
var colors = ['#4150d8', '#28bf7e', '#ed7c2f'];
return colors[params.dataIndex % 3]
},
/*label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'black',
fontSize: 16
}
}*/
}
},
xAxisIndex: 0,
yAxisIndex: 0
}/*, {
data: groupData,
label: {
show: true,
position: 'inside',
formatter: '{b}',
textStyle: {
color: '#777'
}
},
type: 'bar',
barGap: 0,
barWidth: 100. / groupList.length + '%',
itemStyle: {
normal: {
color: '#fff'
}
},
xAxisIndex: 1,
yAxisIndex: 1
}*/];
/**
双X轴标签对应,伪实现思路:
底部的标签也是柱状图,对应包含的区域为上方X轴条数占总数的比例,设为宽度即可
*/
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: [{
top: 20,
bottom: 70,
right: 5
}, {
height: 30,
bottom: 30,
right: 5
}],
xAxis: [{
type: 'category',
data: xData,
gridIndex: 0,
axisLabel: {
color: '#333',
show: true,
interval:0,
rotate:25
},
axisLine: {
lineStyle: {
color: '#e7e7e7'
}
},
axisTick: {
lineStyle: {
color: '#e7e7e7'
}
},
zlevel: 2
}, {
type: 'category',
gridIndex: 1,
axisLine: {
show: false
},
zlevel: 1
}],
yAxis: [{
type: 'value',
gridIndex: 0,
axisLabel: {
color: '#333'
},
splitLine: {
lineStyle: {
type: 'dashed'
}
},
axisLine: {
lineStyle: {
color: '#ccc'
}
},
axisTick: {
lineStyle: {
color: '#ccc'
}
}
}, {
type: 'value',
gridIndex: 1,
axisLabel: {
show: false
},
axisLine: {
show: false
},
splitLine: {
show: false
},
axisTick: {
show: false
}
}],
series: series
};
companyChart.setOption(option)
});
}
//点击弹出详情
companyChart.on('click',function (params) {
reportDetails(params.name)
})
//未读人员
function loadNoReadChart(echartObject,url,name) {
var xData = ""
var yData = ""
echartObject.showLoading({
text: 'loading',
color: '#cbc6c6',
textColor: '#cbc6c6',
maskColor: 'rgba(255, 255, 255, 0.2)',
zlevel: 0,
});
admin.req({
url: url
}).done(function (response) {
if (response && response.map) {
xData = response.map.userList;
yData = response.map.valueList;
var series = [{
name: name,
data: yData,
barWidth: 20,
type: 'bar',
label: {
show: true,
position: 'top',
textStyle: {
color: '#555'
},
},
itemStyle: {
normal: {
color: (params) => {
var colors = ['#b6c2ff', '#96edc1', '#fcb75b'];
return colors[params.dataIndex % 3]
}
}
},
}]
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: [{
top: 20,
bottom: 35,
left: 30,
right: 5
}],
xAxis: [{
type: 'category',
data: xData,
axisLabel: {
color: '#333',
show: true,
interval:0,
rotate:19,
fontSize : 10 //更改坐标轴文字大小
},
axisLine: {
lineStyle: {
color: '#e7e7e7'
}
},
axisTick: {
lineStyle: {
color: '#e7e7e7'
}
},
zlevel: 1
}],
yAxis: [{
type: 'value',
gridIndex: 0,
axisLabel: {
color: '#333'
},
splitLine: {
lineStyle: {
type: 'dashed'
}
},
axisLine: {
lineStyle: {
color: '#ccc'
}
},
axisTick: {
lineStyle: {
color: '#ccc'
}
}
}],
series: series
}
echartObject.hideLoading();
echartObject.setOption(option)
}
})
}
//弹窗显示汇报详情
function reportDetails(name) {
layer.open({
title: ['汇报详细', 'font-size:18px;'],
type: 1,
area: ['70%', '60%'],
content: '<div class="layui-card" style="margin-top: 30px;box-shadow:none"><div class="layui-card-body"><table id="reportDetails" lay-filter="reportDetails"></table></div></div>',
btn: ['关闭'],
success: function(index, layero) {
reportDetailsTable(name)
},
yes: function (index, layero) {
layer.close(index)
}
});
}
$("#notReportCountBtn").unbind().on("click",function () {
layer.open({
title: ['汇报详细', 'font-size:18px;'],
type: 1,
area: ['70%', '60%'],
content: '<div class="layui-card" style="margin-top: 30px;box-shadow:none"><div class="layui-card-body"><table id="reportDetails" lay-filter="reportDetails"></table></div></div>',
btn: ['关闭'],
success: function(index, layero) {
reportDetailsTable();
},
yes: function (index, layero) {
layer.close(index)
}
});
})
function reportDetailsTable(name) {
var conditions = form.val('form-workreport-condition');
if (name) conditions["name"] = name
conditions["access_token"] = accessToken
conditions["createTime"] = createTime
conditions["viewMode"] = 'true'
conditions["dateLimit"] = dateLimit
reportDetailTable = table.render({
elem: '#reportDetails',
url: domainName + '/api-web/workreport/group/reportDetails',
where: conditions,
end: function (e) {
form.render()
},
even: true,
cols: [[{
type: 'checkbox'
}, {
type: 'numbers', title: '序号'
}, {
field: 'createBy', title: '组负责人', align: 'center'
}, {
field: 'needReport', title: '应报数量', align: 'center'
}, {
field: 'readCount', title: '已报数量', align: 'center'
}, {
field: 'needReport', title: '未报数量', align: 'center',style:'color:red',templet:function (d) {
return d.needReport-d.readCount
}
}]],
})
}
//未读统计报表导出
$('#notReportExportBtn').unbind().on('click',function () {
var conditions = form.val('form-workreport-condition');
var url = common.domainName + '/api-web/workreport/group/exportReportDetails?access_token=' + accessToken + '&createTime=' + createTime + '&viewMode=' + 'true' + '&dateLimit=' + dateLimit + '&repType=' + conditions.repType + '&createBy=' + conditions.createBy;
window.open(url)
})
// 已读未读报表
function loadReadReport() {
var conditions = form.val('form-workreport-condition');
Object.assign(conditions, {access_token: accessToken, createTime: createTime, viewMode: 'true',dateLimit:dateLimit});
admin.req({
url: domainName + '/api-web/workreport/chart/read',
data: conditions
}).done(function (response) {
var chartData = response.map;
var readCount = chartData.readCount;
var unReadCount = chartData.unReadCount;
var readPercent = (readCount / (readCount + unReadCount) * 100).toFixed(0);
readPercent = isNaN(readPercent) ? '0%' : readPercent + '%';
let echartData = [{
name: "已读",
value: readCount
}, {
name: "未读",
value: unReadCount
}];
var formatNumber = function (num) {
let reg = /(?=(\B)(\d{3})+$)/g;
return num.toString().replace(reg, ',');
};
var option = {
color: ['#367bec', '#00cefc'],
title: [{
text: '{val|' + readPercent + '}',
top: 'center',
left: 'center',
textStyle: {
rich: {
name: {
fontSize: 14,
fontWeight: 'normal',
color: '#666666',
padding: [10, 0]
},
val: {
fontSize: 32,
fontWeight: 'bold',
color: '#333333',
}
}
}
}],
series: [{
type: 'pie',
radius: ['45%', '60%'],
center: ['50%', '50%'],
data: echartData,
hoverAnimation: false,
itemStyle: {
normal: {
borderWidth: 2
}
},
labelLine: {
normal: {
length: 20,
length2: 120,
lineStyle: {
color: '#e6e6e6'
}
}
},
label: {
normal: {
formatter: params => {
return (
'{icon|●}{name|' + params.name + '}{value|' +
formatNumber(params.value) + '}'
);
},
padding: [0, -100, 25, -100],
rich: {
icon: {
fontSize: 16
},
name: {
fontSize: 14,
padding: [0, 10, 0, 4],
color: '#666666'
},
value: {
fontSize: 18,
fontWeight: 'bold',
color: '#333333'
}
}
}
},
}]
};
var readChart = echarts.init(document.getElementById('chart-read-report'));
readChart.setOption(option);
});
}
function setRead(workReportIds) {
if (workReportIds.length == 0) {
layer.msg('请至少选择一项未读的数据。', {icon: 0, time: 3000});
return false;
}
admin.req({
url: domainName + '/api-web/workreport/setRead',
data: {workReportIds: workReportIds}
}).done(function (response) {
if (response.success) {
// layer.msg('执行操作成功!', {icon: 1, time: 3000});
loadReadReport();
} else {
// layer.msg('执行操作失败!', {icon: 2, time: 3000});
}
});
}
//获取url中的type值
function getUrlType() {
var href = window.location.href;
href = href.substr(href.indexOf("#"),href.length);
var url = href.split("/");
if (url.length <= 1) {
return "";
}
for (var i = 0; i < url.length; i++) {
if (url[i].indexOf("type") > -1) {
type = url[i].split("=")[1]
}
if (url[i].indexOf("repType") > -1) {
urlRepType = url[i].split("=")[1]
}
if (url[i].indexOf("manufacturerId") > -1) {
manufacturerId = url[i].split("=")[1]
}
}
}
// 图表,表格重新加载
function reloadAllChange() {
loadWorkReportTable();
// loadDailyChart();
loadCompanyReport();
loadReadReport();
var url = domainName + '/api-web/workreport/chart/noReport?createTime=' + createTime + '&dateLimit=' + dateLimit;
var name = '未报';
var noReportChat = echarts.init(document.getElementById('chart-noReport-report'));
loadNoReadChart(noReportChat,url,name);
// loadNoReadChart()
// loadReportableChart();
}
});
});
\ No newline at end of file
... ...
... ... @@ -5550,6 +5550,17 @@ form.form-edit .layui-form-item .layui-input-inline {
margin-right: 0;
float: left;
}
.layui-form-item .inline-onethird {
display: flex;
width: 33%;
margin-right: 0;
float: left;
}
.layui-form-item .inline-onethird .layui-input-inline {
margin-right: 2px;
flex: 1;
}
.layui-form-item .inline-half .layui-input-inline {
margin-right: 2px;
... ...
<!--工作汇报表单-->
<article>
<div class="layui-card-body">
<fieldset class="layui-elem-field layui-field-title">
<legend>日志信息</legend>
</fieldset>
<form class="layui-form layui-form-pane" lay-filter="add-workReport-form"
id="add-workReport-form" onsubmit="return false;">
<input hidden name="id" id="id" lay-verify="checkReportIsExist">
<div class="layui-form-item">
<div class="layui-inline inline-half">
<label class="layui-form-label">汇报类型</label>
<div class="layui-input-inline">
<select name="repType" id="workReport_type" lay-filter="workReport_type">
<option value="day">日报</option>
<option value="week">周报</option>
<option value="month">月报</option>
</select>
</div>
</div>
<div class="layui-inline inline-half">
<label class="layui-form-label">日期</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="createTime" id="createTime">
</div>
</div>
</div>
<div class="layui-form-item hide" id="form-item-repTitle">
<div class="layui-inline inline-half">
<label class="layui-form-label">标题</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="repTitle">
</div>
</div>
<div class="layui-inline inline-half">
<label class="layui-form-label">汇报人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="createUserNickName" readonly="readonly">
</div>
</div>
</div>
<div class="layui-form-item report_alarmStatic">
<label class="layui-form-label">告警信息</label>
<div class="layui-input-block">
<input type="text" class="layui-input" name="alarmStatic" id="alarmStatic" readonly>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label work_finish" style="height: 400px"></label>
<div class="layui-input-block">
<textarea style="height: 400px" class="layui-textarea" name="workAccomplish"
lay-verify="required" cols="30" rows="20"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label work_conclusion"></label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="workSummary" lay-verify="required"></textarea>
</div>
</div>
<div class="layui-form-item plan">
<label class="layui-form-label textarea-label work_plan"></label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="workPlan"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label work_help"></label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="workHelp" lay-verify="required"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline" style="width: 90%">
<label class="layui-form-label">选择附件</label>
<div class="layui-input-block attachment">
<input type="text" class="layui-input" readonly id="attachmentInput">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-normal" id="attachment">附件</button>
<button id="upload_btn" hidden>附件</button>
</div>
</div>
<div class="layui-form-item" style="display: none" id="add-workReport-form-atta">
<label class="layui-form-label">已存附件</label>
<div class="layui-input-inline"
style="width: 90% !important;max-height: 130px;overflow-y: auto;margin-left: 10px;">
<div class="tags" id="selecte_content_id"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">接收人</label>
<div class="layui-input-block reportUser">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label">备注</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="remark"></textarea>
</div>
</div>
<button type="submit" lay-submit lay-filter="workReport-form-save-id" class="layui-btn hide"
id="workReport-form-save-id">保存
</button>
<table id="table-report-add-attachment" class="hide"></table>
</form>
</div>
<div class="layui-card-body reportAlarm">
<fieldset class="layui-elem-field layui-field-title">
<legend>告警信息</legend>
</fieldset>
<table id="table-report-alarm"></table>
</div>
</article>
<script>
layui.use('workReportAdd', function (fn) {
fn({{d}})
})
</script>
<style>
#add-workReport-form .layui-form-label {
width: 120px;
/* padding: 8px 12px; */
text-align: left !important;
}
#add-workReport-form .layui-input-block{
margin-left: 120px !important;
}
.tags{
margin-top:5px;
}
.tags span {
height: 20px;
margin-right: 10px;
margin-bottom: 3px;
padding: 5px 10px 5px 10px;
float: left;
white-space: nowrap;
color:#fff;
background-color:#009688;
text-shadow: 1px 1px 1px rgba(0, 0, 0, .15);
}
.tags .close {
font-weight: bold;
line-height: 20px;
margin-left:10px;
cursor: pointer;
text-align: center;
color: #fff;
border: 0 none;
background: transparent none repeat scroll 0 0;
}
</style>
... ...
<title>工作汇报配置</title>
<article class="page-container">
<div class="page-panel">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-status search_panel">
<form class="layui-form layui-card-header layuiadmin-card-header-auto"
lay-filter="workReportConfig-form" onsubmit="return false;">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id="adminName" class="layui-input" autocomplete="off"
placeholder="汇报人">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id="userName" class="layui-input" autocomplete="off"
placeholder="接收人">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="groupName" id="groupName" lay-filter="groupName">
<option value="">=配置名称=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="theirType" id="theirType" lay-filter="theirType">
<option value="">全部</option>
<option value="1">日志类型</option>
<option value="2">文档类型</option>
</select>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card-body">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="workReport_config_add">
新增
</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="workReport_config_delete">
删除
</button>
</div>
<table id="workReportConfigTable" lay-filter="workReportConfigTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('reportConfigIndex', function (fn) {
fn();
});
</script>
\ No newline at end of file
... ...
<form class="layui-form layui-form-pane" lay-filter="add-config-form"
name="add-config-form" onsubmit="return false;">
<input hidden name="id" id="id">
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input type="text" id="name" name="name" lay-verify="required|groupName" lay-reqtext="请输入名称"
class="layui-input" autocomplete="off" placeholder="请输入名称">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所属厂商</label>
<div class="layui-input-block">
<select name="manufacturerId" class="layui-select"></select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所属类型</label>
<div class="layui-input-block">
<select name="theirType" id="config_theirType" lay-filter="config_theirType" lay-verify="required">
<option value="1">日志类型</option>
<option value="2">文档类型</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">汇报人</label>
<div class="layui-input-block admin">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" id="config_receive_user">接收人</label>
<div class="layui-input-block user">
</div>
</div>
<!-- <div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">汇报类型</label>
<div class="layui-input-inline">
<input type="radio" name="reportType" value="day" title="日报" lay-filter="config_repType">
<input type="radio" name="reportType" value="week" title="周报" lay-filter="config_repType">
<input type="radio" name="reportType" value="month" title="月报" lay-filter="config_repType">
</div>
</div>
</div>-->
<div class="layui-form-item">
<label class="layui-form-label textarea-label">描述</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="remark"></textarea>
</div>
</div>
<button type="submit" lay-submit class="layui-btn hide" lay-filter="config-form-save-id" id="config-form-save-id">保存</button>
</form>
<script>
layui.use('reportConfigAdd',function (fn) {
fn({{d}})
})
</script>
... ...
<article class="page-container">
<div class="page-panel">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
</div>
<div class="layui-card-body">
<table id="reportUserTable" lay-filter="reportUserTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('reportConfigList', function (fn) {
fn({{d}})
});
</script>
\ No newline at end of file
... ...
<title>工作汇报</title>
<article class="page-container">
<div class="page-panel">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-status search_panel">
<form class="layui-form layui-card-header layuiadmin-card-header-auto"
lay-filter="workReport-form" onsubmit="return false;">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline" style="width: 300px">
<input type="text" name="repTitle" id="workReport_title"
placeholder="标题搜索,支持内容模糊匹配" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline auto-width">
<input type="radio" name="isRead" value="" title="全部" checked
lay-filter="workReport_isRead">
<input type="radio" name="isRead" value="0" title="无人阅读"
lay-filter="workReport_isRead">
<input type="radio" name="isRead" value="1" title="有人阅读"
lay-filter="workReport_isRead">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline auto-width">
<input type="radio" name="repType" value="" title="全部" checked
lay-filter="workReport_type">
<input type="radio" name="repType" value="day" title="日报"
lay-filter="workReport_type">
<input type="radio" name="repType" value="week" title="周报"
lay-filter="workReport_type">
<input type="radio" name="repType" value="month" title="月报"
lay-filter="workReport_type">
</div>
</div>
<div class="layui-inline layui-btn-group time-group" id="createTimeBtn">
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm active"
data-period="today">今天
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
data-period="lastWeek">上周
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
data-period="thisWeek">本周
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
data-period="lastMonth">上月
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
data-period="thisMonth">本月
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
data-period="thisQuarter">本季度
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
data-period="all">全部
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card-body">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="workReport_create_day">
新增日报
</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="workReport_create_week">
新增周报
</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="workReport_create_month">
新增月报
</button>
</div>
<table id="workReportTable" lay-filter="workReportTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('workReportIndex', function (fn) {
fn();
});
</script>
<style>
.layui-btn-timeTag {
background-color: #999999;
border-radius: 5px;
}
</style>
\ No newline at end of file
... ...
<article class="page-container">
<div class="page-panel">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
</div>
<div class="layui-card-body">
<table id="attachmentTable" lay-filter="attachmentTable"></table>
<table id="reportUserTable" lay-filter="reportUserTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('workReportList', function (fn) {
fn({{d}})
});
</script>
\ No newline at end of file
... ...
<title>工作日志查看</title>
<article>
<div class="page-panel workview">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-status">
<form class="layui-form layui-card-header" onsubmit="return false" lay-filter="form-workreport-condition">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input type="text" id="monitor_keyword" name="repTitle" placeholder="标题搜索,支持内容模糊匹配" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="manufacturerName" id="slt-workreport-group" lay-filter="slt-workreport-group" lay-search>
<option value="">=选择厂商=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="createBy" id="slt-workreport-user" lay-filter="slt-workreport-user" lay-search>
<option value="">=选择汇报人=</option>
</select>
</div>
</div>
<!-- <div class="layui-inline">
<div class="layui-input-inline">
<input type="radio" name="currIsRead" value="0" title="未读" lay-filter="workReport-currIsRead">
<input type="radio" name="currIsRead" value="1" title="已读" lay-filter="workReport-currIsRead">
</div>
</div>-->
<div class="layui-inline">
<div class="layui-input-inline" style="width: auto">
<input type="radio" name="repType" value="day" title="日报" checked="checked" lay-filter="workReport-repType">
<input type="radio" name="repType" value="week" title="周报" lay-filter="workReport-repType">
<input type="radio" name="repType" value="month" title="月报" lay-filter="workReport-repType">
</div>
</div>
<div class="layui-btn-group time-group" id="btns-workreport-time" style="padding: 0">
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs active date" data-period="today">今天</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date" data-period="lastWeek">上周</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date" data-period="thisWeek">本周</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date" data-period="lastMonth">上月</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date" data-period="thisMonth">本月</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date" data-period="thisQuarter">本季度</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date" data-period="">全部</button>
</div>
<div class="layui-inline" style="margin-left: 10px">
<div class="layui-input-inline" style="width: auto">
<input type="text" name="dateLimit" id="dateLimit" autocomplete="off" class="layui-input" readonly placeholder="其他日期范围">
</div>
</div>
</div>
</form>
</div>
</div>
<div style="display: flex" class="layui-card-echart">
<!--<div style="flex-grow: 1">
<h5 class="lay-row-title">日报统计</h5>
<div class="pie-chart" id="chart-daily-report"></div>
</div>
<div style="flex-grow: 1">
<h5 class="lay-row-title">应报已报统计</h5>
<div class="pie-chart" id="chart-reportable-report"></div>
</div>-->
<div style="flex-grow: 3;width: 60%!important;">
<h5 class="lay-row-title">厂商统计
<button class="layui-btn layui-btn-primary layui-btn-sm" style="float:right;" id="notReportCountBtn">未报统计</button>
<button class="layui-btn layui-btn-primary layui-btn-sm" style="float:right; margin-right: 10px" id="notReportExportBtn">统计报表</button>
</h5>
<div class="pie-chart" id="chart-company-report" style="min-height: 240px"></div>
</div>
<div style="flex-grow: 1">
<h5 class="lay-row-title">已读未读占比</h5>
<div class="pie-chart" id="chart-read-report" style="min-height: 240px"></div>
</div>
<div style="flex-grow: 1">
<div class="layui-tab layui-tab-card" lay-filter="report-tab" style="height: 250px;">
<ul class="layui-tab-title">
<li class="layui-this">未读</li>
<li>未报</li>
<li>未处理告警</li>
</ul>
<div class="layui-tab-content tab-content">
<div class="layui-tab-item layui-show">
<div class="pie-chart-clone" id="chart-noRead-report" style="height: 200px"></div>
</div>
<div class="layui-tab-item">
<div class="pie-chart-clone" id="chart-noReport-report" style="height: 200px"></div>
</div>
<div class="layui-tab-item">
<div class="pie-chart-clone" id="chart-noAlarm-report" style="height: 200px"></div>
</div>
</div>
</div>
<!-- <h5 class="lay-row-title">未读信息</h5>-->
<!-- <div class="pie-chart" id="chart-noRead-report"></div>-->
</div>
</div>
<div class="layui-card-body" style="margin-top: 10px;">
<div class="warn-btns">
<!--<button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-workreport-set-read">
<i class="layui-icon">&#xe605;</i>勾选标记为已读
</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-workreport-set-all-read">
<i class="layui-icon">&#xe605;</i>全部标记为已读
</button>-->
<button class="layui-btn layui-btn-sm layui-btn-normal isRead active" data-type="">
全部
</button>
<button class="layui-btn layui-btn-sm layui-btn-normal isRead" data-type="1">
已读
</button>
<button class="layui-btn layui-btn-sm layui-btn-normal isRead" data-type="0">
未读
</button>
</div>
<table id="table-workreport-view" lay-filter="table-workreport-view"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('workReportView', function (fn) {
fn();
});
</script>
\ No newline at end of file
... ...