|
|
/** 资产维修记录查看 */
|
|
|
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('enterDevice', function () {
|
|
|
var sessions = layui.sessions;
|
|
|
var accessToken = sessions.getToken().access_token;
|
|
|
var domainName = common.domainName;
|
|
|
var timeChart = echarts.init(document.getElementById('device-chart-time-record'));
|
|
|
var inspIsLoad = false;
|
|
|
var businessIsLoad = false;
|
|
|
var currSelect = 0;
|
|
|
var dateLimit = ""
|
|
|
var createTime = "month"
|
|
|
|
|
|
|
|
|
//日期范围选择
|
|
|
laydate.render({
|
|
|
elem: '#dateLimit'
|
|
|
, range: '~',
|
|
|
done: function (value) {
|
|
|
dateLimit = value
|
|
|
if (dateLimit == '') {
|
|
|
$('[data-period="month"]').click()
|
|
|
} else {
|
|
|
$.each($("button.date"), function (i, e) {
|
|
|
var $dom = $(e);
|
|
|
if ($dom.hasClass("active")) {
|
|
|
$dom.removeClass("active")
|
|
|
}
|
|
|
})
|
|
|
reloadAllChange()
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
form.render();
|
|
|
renderEnterDeviceListTable();
|
|
|
renderFittingFixListTable()
|
|
|
loadEnterDeviceChart();
|
|
|
loadConditionSelect();
|
|
|
|
|
|
|
|
|
//监听Esc事件
|
|
|
$(document).keyup(function (event) {
|
|
|
if (event.keyCode === 27) {
|
|
|
layer.closeAll();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
// 日期方式选择
|
|
|
$('#btns-staff-time button').click(function () {
|
|
|
$.each($("button.date"), function (i, e) {
|
|
|
var $dom = $(e);
|
|
|
if ($dom.hasClass("active")) {
|
|
|
$dom.removeClass("active")
|
|
|
}
|
|
|
})
|
|
|
$("#dateLimit").val('')
|
|
|
dateLimit = ''
|
|
|
$("#btns-staff-time button").removeClass("active");
|
|
|
$(this).addClass("active");
|
|
|
createTime = ($(this).data("period"))
|
|
|
reloadAllChange();
|
|
|
});
|
|
|
|
|
|
// 回车搜索
|
|
|
$('[lay-filter="form-enterStaff-condition"] input').keydown(function (e) {
|
|
|
if (e.keyCode === 13) {
|
|
|
reloadAllChange();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 下拉框改变搜索
|
|
|
form.on('select(slt-staff-group)', reloadAllChange);
|
|
|
|
|
|
// tab页切换事件
|
|
|
element.on('tab(enterdevice-tab)', function (data) {
|
|
|
if (data.index == 0) {
|
|
|
if (!inspIsLoad) {
|
|
|
renderEnterDeviceListTable();
|
|
|
inspIsLoad = true;
|
|
|
}
|
|
|
} else if (data.index == 1) {
|
|
|
if (!businessIsLoad) {
|
|
|
renderFittingFixListTable();
|
|
|
businessIsLoad = true;
|
|
|
}
|
|
|
}
|
|
|
currSelect = data.index;
|
|
|
});
|
|
|
// 加载配件更换表格
|
|
|
function renderEnterDeviceListTable() {
|
|
|
var conditions = form.val('form-enterStaff-condition');
|
|
|
|
|
|
Object.assign(conditions, {
|
|
|
access_token: accessToken,
|
|
|
createtime: createTime,
|
|
|
viewMode: 'true',
|
|
|
dateLimit: dateLimit
|
|
|
});
|
|
|
table.render({
|
|
|
elem: '#enterdevice_table_id',
|
|
|
url: domainName + '/api-room/machineRoom/findMachineRoomEnterDeviceRecords?docType=1',
|
|
|
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: [[{
|
|
|
field: 'machineRoomName', title: '机房', align: 'center',
|
|
|
}, {
|
|
|
field: 'manufacturerName', title: '工作单位', align: 'center',templet: function (d) {
|
|
|
if(d.manufacturerId == '0'){
|
|
|
return d.manufacturerOther;
|
|
|
}else {
|
|
|
return d.manufacturerName;
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
field: 'applyUser', title: '申请人', align: 'center',
|
|
|
}, {
|
|
|
field: 'phone', title: '联系方式', align: 'center',
|
|
|
}, {
|
|
|
field: 'actionType', title: '设备出入类型', align: 'center',
|
|
|
templet: `
|
|
|
<div>
|
|
|
{{#
|
|
|
var actionTypeEnum = {
|
|
|
'1': '迁入',
|
|
|
'2': '迁出',
|
|
|
'3': '转移',
|
|
|
'4': '更换',
|
|
|
'5': '新增',
|
|
|
'6': '带走维修'
|
|
|
};
|
|
|
var actionTypeStr = actionTypeEnum[d.actionType];
|
|
|
actionTypeStr = actionTypeStr ? actionTypeStr : d.actionType;
|
|
|
}}
|
|
|
{{actionTypeStr}}
|
|
|
</div>
|
|
|
`
|
|
|
}, {
|
|
|
field: 'enterDevices', title: '设备数量', align: 'center',
|
|
|
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-device">{{d.enterDevices.length}}</span></div>'
|
|
|
}, {
|
|
|
field: 'reason', title: '进入事由', align: 'center',
|
|
|
}, {
|
|
|
field: 'lastPlace', title: '原物理位置', align: 'center',
|
|
|
}, {
|
|
|
field: 'localPlace', title: '现物理位置', align: 'center',
|
|
|
}, {
|
|
|
field: 'enterTime', title: '进入时间', align: 'center',
|
|
|
}, {
|
|
|
field: 'outTime', title: '出来时间', align: 'center',
|
|
|
}, {
|
|
|
field: 'machineRoomLeader', title: '设备负责人', align: 'center',
|
|
|
}, {
|
|
|
field: 'integration', title: '总集成', align: 'center',
|
|
|
}, {
|
|
|
field: 'operationUser', title: '运维负责人', align: 'center',
|
|
|
}, {
|
|
|
field: 'watchkeeper', title: '机房值班人', align: 'center',
|
|
|
}
|
|
|
]],
|
|
|
done: function () {
|
|
|
//获取人员列表
|
|
|
$('.view-device').on('click', function () {
|
|
|
openDeviceList($(this).data('id'))
|
|
|
})
|
|
|
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
// 加载设备出入表格
|
|
|
function renderFittingFixListTable() {
|
|
|
var conditions = form.val('form-enterStaff-condition');
|
|
|
|
|
|
Object.assign(conditions, {
|
|
|
access_token: accessToken,
|
|
|
createtime: createTime,
|
|
|
viewMode: 'true',
|
|
|
dateLimit: dateLimit
|
|
|
});
|
|
|
table.render({
|
|
|
elem: '#fitting-table',
|
|
|
url: domainName + '/api-room/machineRoom/findMachineRoomEnterDeviceRecords?docType=2',
|
|
|
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: [[{
|
|
|
field: 'machineRoomName', title: '机房', align: 'center',
|
|
|
}, {
|
|
|
field: 'manufacturerName', title: '工作单位', align: 'center',templet: function (d) {
|
|
|
if(d.manufacturerId == '0'){
|
|
|
return d.manufacturerOther;
|
|
|
}else {
|
|
|
return d.manufacturerName;
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
field: 'applyUser', title: '申请人', align: 'center',
|
|
|
}, {
|
|
|
field: 'phone', title: '联系方式', align: 'center',
|
|
|
}, {
|
|
|
field: 'actionType', title: '更换配件类型', align: 'center',
|
|
|
templet: `
|
|
|
<div>
|
|
|
{{#
|
|
|
var actionTypeEnum = {
|
|
|
'1': '迁入',
|
|
|
'2': '迁出',
|
|
|
'3': '转移',
|
|
|
'4': '更换',
|
|
|
'5': '新增',
|
|
|
'6': '带走维修'
|
|
|
};
|
|
|
var actionTypeStr = actionTypeEnum[d.actionType];
|
|
|
actionTypeStr = actionTypeStr ? actionTypeStr : d.actionType;
|
|
|
}}
|
|
|
{{actionTypeStr}}
|
|
|
</div>
|
|
|
`
|
|
|
}, {
|
|
|
field: 'deviceModel', title: '设备型号', align: 'center',
|
|
|
}, {
|
|
|
field: 'localPlace', title: '设备物理位置', align: 'center',
|
|
|
}, {
|
|
|
field: 'fixFittings', title: '配件数量', align: 'center',
|
|
|
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-fitting">{{d.enterFittings.length}}</span></div>'
|
|
|
}, {
|
|
|
field: 'reason', title: '更换事由', align: 'center',
|
|
|
}, {
|
|
|
field: 'enterTime', title: '进入时间', align: 'center',
|
|
|
}, {
|
|
|
field: 'outTime', title: '出来时间', align: 'center',
|
|
|
}, {
|
|
|
field: 'machineRoomLeader', title: '设备负责人', align: 'center',
|
|
|
}, {
|
|
|
field: 'integration', title: '总集成', align: 'center',
|
|
|
}, {
|
|
|
field: 'operationUser', title: '运维负责人', align: 'center',
|
|
|
}, {
|
|
|
field: 'watchkeeper', title: '机房值班人', align: 'center',
|
|
|
}
|
|
|
]],
|
|
|
done: function () {
|
|
|
//获取人员列表
|
|
|
$('.view-fitting').on('click', function () {
|
|
|
openFittingList($(this).data('id'))
|
|
|
})
|
|
|
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
//新增日报
|
|
|
$('#device_create').on('click', function () {
|
|
|
openDeviceForm()
|
|
|
})
|
|
|
|
|
|
//新增/编辑表单
|
|
|
function openDeviceForm(id) {
|
|
|
var title = id ? '编辑' : '新增'
|
|
|
common.openWin('machineroom/deviceAdd', title, {id: id}, ['保存', '取消'], function f() {
|
|
|
$("#device-form-save-id").trigger("click");
|
|
|
},null,null,function done() {
|
|
|
reloadAllChange();
|
|
|
})
|
|
|
}
|
|
|
|
|
|
//查看更换配件列表
|
|
|
function openFittingList(id) {
|
|
|
|
|
|
var title = '更换配件列表'
|
|
|
|
|
|
common.openWin('machineroom/fittingList', title, {id: id}, ['确定', '取消'])
|
|
|
}
|
|
|
//查看进出设备列表
|
|
|
function openDeviceList(id) {
|
|
|
|
|
|
var title = '出入设备列表'
|
|
|
|
|
|
common.openWin('machineroom/deviceList', title, {id: id}, ['确定', '取消'])
|
|
|
}
|
|
|
|
|
|
// 加载查询条件下拉框
|
|
|
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>"
|
|
|
});
|
|
|
options += "<option value='0'>其他</option>";
|
|
|
$('#slt-staff-group').html(options);
|
|
|
form.render();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
// 各单位维修情况
|
|
|
function loadEnterDeviceChart() {
|
|
|
var conditions = {};
|
|
|
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: ''});
|
|
|
admin.req({
|
|
|
url: domainName + '/api-room/machineRoom/findMachineRoomEnterDeviceRecordsForGroup',
|
|
|
data: conditions
|
|
|
}).done(function (response) {
|
|
|
var chartData = response.map;
|
|
|
var groupList = chartData.groupList;
|
|
|
var deviceList = chartData.deviceList;
|
|
|
var fittingList = chartData.fittingList;
|
|
|
var totalList = chartData.totalList;
|
|
|
var xData = [];
|
|
|
var groupData = [];
|
|
|
$.each(groupList, function (i, v) {
|
|
|
xData.push(v);
|
|
|
groupData.push({
|
|
|
name: v,
|
|
|
value: 1
|
|
|
});
|
|
|
});
|
|
|
var series = [{
|
|
|
|
|
|
name: '设备进出',
|
|
|
data: deviceList,
|
|
|
barWidth: 20,
|
|
|
type: 'bar',
|
|
|
stack: 'alarm',
|
|
|
emphasis: {
|
|
|
focus: 'series'
|
|
|
},
|
|
|
itemStyle: {
|
|
|
color: "#1e9fff"
|
|
|
}
|
|
|
},{
|
|
|
name: '配件更换',
|
|
|
data: fittingList,
|
|
|
barWidth: 20,
|
|
|
type: 'bar',
|
|
|
stack: 'alarm',
|
|
|
emphasis: {
|
|
|
focus: 'series'
|
|
|
},
|
|
|
itemStyle: {
|
|
|
color: "#FF7E00"
|
|
|
},
|
|
|
label: {
|
|
|
show: true,
|
|
|
position: 'top',
|
|
|
textStyle: {
|
|
|
color: '#555'
|
|
|
},
|
|
|
formatter: function (data) {
|
|
|
return totalList[data.dataIndex]
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}];
|
|
|
/**
|
|
|
双X轴标签对应,伪实现思路:
|
|
|
底部的标签也是柱状图,对应包含的区域为上方X轴条数占总数的比例,设为宽度即可
|
|
|
*/
|
|
|
var option = {
|
|
|
title: {
|
|
|
text: '设备出入和配件更换图示',
|
|
|
textStyle: {
|
|
|
color: '#00D81E06',
|
|
|
fontSize: 5
|
|
|
}
|
|
|
},
|
|
|
tooltip: {
|
|
|
trigger: 'axis',
|
|
|
axisPointer: {
|
|
|
type: 'shadow'
|
|
|
}
|
|
|
},
|
|
|
toolbox: {
|
|
|
show: true,
|
|
|
feature: {
|
|
|
saveAsImage: {}
|
|
|
},
|
|
|
right: 10
|
|
|
},
|
|
|
legend: {
|
|
|
data: ['设备进出', '配件更换'],
|
|
|
selectedMode: false
|
|
|
},
|
|
|
grid: [{
|
|
|
top: 40,
|
|
|
bottom: 70,
|
|
|
left: 50,
|
|
|
right: 5
|
|
|
}],
|
|
|
xAxis: [{
|
|
|
type: 'category',
|
|
|
data: xData,
|
|
|
axisLabel: {
|
|
|
color: '#333',
|
|
|
show: true,
|
|
|
interval:0,
|
|
|
rotate:15
|
|
|
},
|
|
|
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
|
|
|
};
|
|
|
timeChart.setOption(option)
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
// 图表,表格重新加载
|
|
|
function reloadAllChange() {
|
|
|
renderEnterDeviceListTable();
|
|
|
renderFittingFixListTable()
|
|
|
loadEnterDeviceChart();
|
|
|
}
|
|
|
});
|
|
|
}); |
|
|
\ No newline at end of file |
...
|
...
|
|