|
|
/** 资产维修记录查看 */
|
|
|
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('assetsrepair', 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 resTypeChart = echarts.init(document.getElementById('chart-restype-report'));
|
|
|
|
|
|
var dateLimit = ""
|
|
|
var createTime = ""
|
|
|
var currentResourceTypeTreeNodeId = ""
|
|
|
var resTypeSelect;
|
|
|
|
|
|
|
|
|
//日期范围选择
|
|
|
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();
|
|
|
loadCompanyReport();
|
|
|
loadResTypeReport();
|
|
|
loadWorkReportTable();
|
|
|
loadConditionSelect();
|
|
|
|
|
|
|
|
|
//监听Esc事件
|
|
|
$(document).keyup(function(event){
|
|
|
if(event.keyCode === 27 || event.keyCode === 96){
|
|
|
layer.closeAll();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
// 日期方式选择
|
|
|
$('#btns-repair-time button').click(function () {
|
|
|
$.each($("button.date"),function (i,e) {
|
|
|
var $dom = $(e);
|
|
|
if($dom.hasClass("active")){
|
|
|
$dom.removeClass("active")
|
|
|
}
|
|
|
})
|
|
|
$("#dateLimit").val('')
|
|
|
dateLimit = ''
|
|
|
$("#btns-repair-time button").removeClass("active");
|
|
|
$(this).addClass("active");
|
|
|
createTime = ($(this).data("period"))
|
|
|
reloadAllChange();
|
|
|
});
|
|
|
|
|
|
// 回车搜索
|
|
|
$('[lay-filter="form-repair-condition"] input').keydown(function (e) {
|
|
|
if (e.keyCode === 13) {
|
|
|
reloadAllChange();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 下拉框改变搜索
|
|
|
form.on('select(slt-repair-group)', reloadAllChange);
|
|
|
form.on('select(slt-repair-user)', reloadAllChange);
|
|
|
form.on('select(slt-repair-org)', reloadAllChange);
|
|
|
|
|
|
|
|
|
// 加载工作汇报表格
|
|
|
function loadWorkReportTable() {
|
|
|
var conditions = form.val('form-repair-condition');
|
|
|
|
|
|
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: 'true',dateLimit:dateLimit});
|
|
|
table.render({
|
|
|
elem: '#table-repair-view',
|
|
|
url: domainName + '/api-web/bResource/getAssetsRepairForPage',
|
|
|
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: 'title', title: '标题', align: 'center', minWidth: 200,event: 'serRead',
|
|
|
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-repair-title" >{{d.title}}</span></div>'
|
|
|
}, {
|
|
|
field: 'resTypeName', title: '资产类型', align: 'center',
|
|
|
}, {
|
|
|
field: 'resourceSN', title: '设备序列号', align: 'center',
|
|
|
},{
|
|
|
field: 'ip', title: 'ip段', align: 'center',
|
|
|
},{
|
|
|
field: 'orgName', title: '归属单位', align: 'center',
|
|
|
},{
|
|
|
field: 'attachmentList', title: '附件数量', align: 'center',
|
|
|
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-repair-attachment">{{d.attachmentList.length}}</span></div>'
|
|
|
},{
|
|
|
field: 'groupName', title: '上报人', align: 'center',
|
|
|
}, {
|
|
|
field: 'manufacturerName', title: '厂商', align: 'center',
|
|
|
},{
|
|
|
field: 'hitchtime', title: '故障时间', align: 'center',
|
|
|
},{
|
|
|
field: 'createtime', title: '维修时间', align: 'center',
|
|
|
}]],
|
|
|
done: function () {
|
|
|
//点击标题编辑表单
|
|
|
$('.view-repair-title').on('click', function () {
|
|
|
openWorkReportForm( $(this).data('id'))
|
|
|
})
|
|
|
|
|
|
//获取附件列表
|
|
|
$('.view-repair-attachment').on('click', function () {
|
|
|
openWorkReportList('attachment', $(this).data('id'))
|
|
|
})
|
|
|
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
//新增日报
|
|
|
$('#repair_create').on('click', function () {
|
|
|
openWorkReportForm()
|
|
|
})
|
|
|
|
|
|
//新增/编辑表单
|
|
|
function openWorkReportForm(id) {
|
|
|
var title = id ? '编辑' : '新增'
|
|
|
common.openWin('assets/add', title, {id: id}, ['保存', '取消'], function f() {
|
|
|
$("#repair-form-save-id").trigger("click");
|
|
|
})
|
|
|
}
|
|
|
|
|
|
//查看附件/接收人列表
|
|
|
function openWorkReportList(type, id) {
|
|
|
|
|
|
var title = '附件'
|
|
|
|
|
|
common.openWin('assets/repairlist', title, {id: id, type: type}, ['确定', '取消'])
|
|
|
}
|
|
|
|
|
|
// 加载查询条件下拉框
|
|
|
function loadConditionSelect() {
|
|
|
admin.req({
|
|
|
url: domainName + '/api-web/bResource/findAssetsRepairList'
|
|
|
}).done(function (response) {
|
|
|
var options = "<option value=''>=归属单位=</option>";
|
|
|
console.log(response.data)
|
|
|
$.each(response.data, function (i, v) {
|
|
|
|
|
|
options += "<option value='" + v.orgCode + "'>" + v.orgName + "</option>"
|
|
|
});
|
|
|
$('#slt-repair-org').html(options);
|
|
|
form.render();
|
|
|
});
|
|
|
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-repair-group').html(options);
|
|
|
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-repair-user').html(options);
|
|
|
form.render();
|
|
|
}
|
|
|
});
|
|
|
admin.req({
|
|
|
url:common.domainName + '/api-web/home/resType/getTree?hardwareFlag=Y',
|
|
|
}).done(function (res) {
|
|
|
resTypeSelect = xmSelect.render({
|
|
|
el: '#hardware-layui-select',
|
|
|
name: "resType",
|
|
|
tips: '==资产类型==',
|
|
|
filterable: true,
|
|
|
radio: true,
|
|
|
clickClose: false,
|
|
|
layVerify: 'required',
|
|
|
height: '20px',
|
|
|
tree: {
|
|
|
show: true,
|
|
|
showFolderIcon: true,
|
|
|
showLine: true,
|
|
|
strict: true,
|
|
|
indent: 20
|
|
|
},
|
|
|
model: {
|
|
|
label: {
|
|
|
type: 'text'
|
|
|
}
|
|
|
},
|
|
|
height: 'auto',
|
|
|
data: res.data,
|
|
|
hide:function () {
|
|
|
var str = resTypeSelect.getValue('valueStr');
|
|
|
if(!str){
|
|
|
str = 'all';
|
|
|
}
|
|
|
currentResourceTypeTreeNodeId=str;
|
|
|
reloadAllChange();
|
|
|
}
|
|
|
});
|
|
|
form.render();
|
|
|
})
|
|
|
}
|
|
|
|
|
|
|
|
|
// 各单位维修情况
|
|
|
function loadCompanyReport() {
|
|
|
var conditions = form.val('form-repair-condition');
|
|
|
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: '',dateLimit:dateLimit,groupBy: 'orgName'});
|
|
|
admin.req({
|
|
|
url: domainName + '/api-web/bResource/getAssetsRepairForGroup',
|
|
|
data: conditions
|
|
|
}).done(function (response) {
|
|
|
var chartData = response.map;
|
|
|
var groupList = chartData.groupList;
|
|
|
var countList = chartData.countList;
|
|
|
var xData = [];
|
|
|
var groupData = [];
|
|
|
$.each(groupList, function (i, v) {
|
|
|
xData.push(v);
|
|
|
groupData.push({
|
|
|
name: v,
|
|
|
value: 1
|
|
|
});
|
|
|
});
|
|
|
var series = [{
|
|
|
name: '维修数',
|
|
|
data: countList,
|
|
|
barWidth: 20,
|
|
|
type: 'bar',
|
|
|
label: {
|
|
|
show: true,
|
|
|
position: 'top',
|
|
|
textStyle: {
|
|
|
color: '#555'
|
|
|
},
|
|
|
formatter:function (data) {
|
|
|
return countList[data.dataIndex]
|
|
|
}
|
|
|
},
|
|
|
itemStyle: {
|
|
|
normal: {
|
|
|
color: (params) => {
|
|
|
var colors = ['#b6c2ff', '#96edc1', '#fcb75b'];
|
|
|
return colors[params.dataIndex % 3]
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
xAxisIndex: 0,
|
|
|
yAxisIndex: 0
|
|
|
}];
|
|
|
/**
|
|
|
双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)
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 按资源类型统计
|
|
|
function loadResTypeReport() {
|
|
|
var conditions = form.val('form-repair-condition');
|
|
|
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: '',dateLimit:dateLimit,groupBy: 'resTypeName'});
|
|
|
admin.req({
|
|
|
url: domainName + '/api-web/bResource/getAssetsRepairForGroup',
|
|
|
data: conditions
|
|
|
}).done(function (response) {
|
|
|
var chartData = response.map;
|
|
|
var groupList = chartData.groupList;
|
|
|
var countList = chartData.countList;
|
|
|
var xData = [];
|
|
|
var groupData = [];
|
|
|
$.each(groupList, function (i, v) {
|
|
|
xData.push(v);
|
|
|
groupData.push({
|
|
|
name: v,
|
|
|
value: 1
|
|
|
});
|
|
|
});
|
|
|
var series = [{
|
|
|
name: '维修数',
|
|
|
data: countList,
|
|
|
barWidth: 20,
|
|
|
type: 'bar',
|
|
|
label: {
|
|
|
show: true,
|
|
|
position: 'top',
|
|
|
textStyle: {
|
|
|
color: '#555'
|
|
|
},
|
|
|
formatter:function (data) {
|
|
|
return countList[data.dataIndex]
|
|
|
}
|
|
|
},
|
|
|
itemStyle: {
|
|
|
normal: {
|
|
|
color: (params) => {
|
|
|
var colors = ['#b6c2ff', '#96edc1', '#fcb75b'];
|
|
|
return colors[params.dataIndex % 3]
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
xAxisIndex: 0,
|
|
|
yAxisIndex: 0
|
|
|
}];
|
|
|
/**
|
|
|
双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
|
|
|
};
|
|
|
resTypeChart.setOption(option)
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 图表,表格重新加载
|
|
|
function reloadAllChange() {
|
|
|
loadWorkReportTable();
|
|
|
loadCompanyReport();
|
|
|
loadResTypeReport();
|
|
|
|
|
|
}
|
|
|
});
|
|
|
}); |
|
|
\ No newline at end of file |
...
|
...
|
|