Authored by 袁晋鹏

山西机房管理功能迁移

Showing 26 changed files with 3228 additions and 19 deletions
... ... @@ -54,7 +54,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
delete data['select']
params.workReport = JSON.stringify(data)
admin.req({
url: domainName + '/api-web/bResource/assetsrepair/save?access_token=' + accessToken,
url: domainName + '/api-room/assetsrepair/save?access_token=' + accessToken,
data: JSON.stringify(params),
type: 'post',
contentType: "application/json; charset=utf-8",
... ... @@ -94,7 +94,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
// 初始化下拉框
function loadSelect() {
admin.req({
url: domainName + '/api-web/bResource/findAssetsRepairList'
url: domainName + '/api-room/assetsrepair/findAssetsRepairList'
}).done(function (response) {
var options = "<option value=''>=归属单位=</option>";
$.each(response.data, function (i, v) {
... ... @@ -114,7 +114,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
form.render();
});
admin.req({
url: domainName + '/api-web/bResource/getInfoByAssetsType',
url: domainName + '/api-room/assetsrepair/getInfoByAssetsType',
}).done(function (response) {
var options = "<option value=''>=设备类型=</option>";
$.each(response.data, function (i, v) {
... ... @@ -124,7 +124,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
form.render();
})
$.ajax({
url: domainName + '/api-web/bResource/getGroupByAdmin?theirType=1&access_token=' + accessToken,
url: domainName + '/api-web/workreport/getGroupByAdmin?theirType=1&access_token=' + accessToken,
success: function (res) {
if (!res.map) {
layer.msg("没有上传权限,请去添加权限")
... ... @@ -148,14 +148,12 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
value: new Date(),
type: 'datetime',
isInitValue: true,
max: 0,
});
hitDate = laydate.render({
elem: '#hitchtime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
max: 0,
});
}
... ... @@ -165,7 +163,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
var fileName = []
uploadInst = upload.render({
elem: '#attachment', //绑定元素
url: common.domainName + '/api-web/bResource/assetsrepair/upload',
url: common.domainName + '/api-room/assetsrepair/upload',
data: param,
multiple: true,
auto: false, //选择文件后不自动上传
... ... @@ -274,14 +272,14 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
if (data && data.id) {
$('#add-repair-form-atta').show()
//编辑表单时禁用日志类型修改和时间选择
$('#add-repair-form').find("select[name='hitchtime']").attr("disabled", "disabled")
$('#add-repair-form').find("input[name='createtime']").attr("disabled", "disabled")
// $('#add-repair-form').find("select[name='hitchtime']").attr("disabled", "disabled")
// $('#add-repair-form').find("input[name='createtime']").attr("disabled", "disabled")
//编辑表单时取消显示默认值
currentDate.config.isInitValue = false
hitDate.config.isInitValue = false
initDatePlus()
admin.req({
url: domainName + `/api-web/bResource/assetsrepair/getById`,
url: domainName + `/api-room/assetsrepair/getById`,
data: {id: data.id},
async: false,
}).done(function (res) {
... ...
... ... @@ -16,7 +16,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate
var resTypeChart = echarts.init(document.getElementById('chart-restype-report'));
var dateLimit = ""
var createTime = ""
var createTime = "thisMonth"
var currentResourceTypeTreeNodeId = ""
var resTypeSelect;
... ... @@ -28,7 +28,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate
done: function (value) {
dateLimit = value
if (dateLimit == '') {
$('[data-period="thisWeek"]').click()
$('[data-period="thisMonth"]').click()
} else {
$.each($("button.date"),function (i,e) {
var $dom = $(e);
... ... @@ -50,7 +50,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate
//监听Esc事件
$(document).keyup(function(event){
if(event.keyCode === 27 || event.keyCode === 96){
if(event.keyCode === 27){
layer.closeAll();
}
});
... ... @@ -92,7 +92,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: 'true',dateLimit:dateLimit});
table.render({
elem: '#table-repair-view',
url: domainName + '/api-web/bResource/getAssetsRepairForPage',
url: domainName + '/api-room/assetsrepair/getAssetsRepairForPage',
where: conditions,
height: 'full-360',
page: {
... ... @@ -166,11 +166,25 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate
common.openWin('assets/repairlist', title, {id: id, type: type}, ['确定', '取消'])
}
//监听单元格事件
// table.on('tool(table-repair-view)', function(obj){
// var data = obj.data;
// if(obj.event === 'serRead'){
//
// var id = data['id'];
// common.openWin('assets/add', '查看', {id: id, viewType: 'view'}, ['关闭'], function f() {
// return true;
// }, null, null, {
// success: function () {
// form.render();
// }
// })
// }
// });
// 加载查询条件下拉框
function loadConditionSelect() {
admin.req({
url: domainName + '/api-web/bResource/findAssetsRepairList'
url: domainName + '/api-room/assetsrepair/findAssetsRepairList'
}).done(function (response) {
var options = "<option value=''>=归属单位=</option>";
console.log(response.data)
... ... @@ -250,7 +264,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate
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',
url: domainName + '/api-room/assetsrepair/getAssetsRepairForGroup',
data: conditions
}).done(function (response) {
var chartData = response.map;
... ... @@ -388,7 +402,7 @@ layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate
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',
url: domainName + '/api-room/assetsrepair/getAssetsRepairForGroup',
data: conditions
}).done(function (response) {
var chartData = response.map;
... ...
... ... @@ -3410,6 +3410,68 @@ debugger
});
});
},
validatorPhone: function (phone) {
if (/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])d{8}$/.test(phone)) {
return {
code: 1,
msg: "验证通过"
}
}else if(/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(phone)){
return {
code: 1,
msg: "验证通过"
}
}else{
return {
code: -1,
msg: "手机或者座机号码格式错误"
}
}
},
//身份证号码验证
validatorIDCard: function (idcode) {
if (typeof idcode !== 'string') {
return {
code: -1,
msg: "为了避免javascript数值范围误差,idcode 必须是字符串"
}
}
const idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
// 判断格式是否正确
const format = idcard_patter.test(idcode);
if (!format) {
return {
code: -1,
msg: "身份证号码格式错误"
}
}
// 加权因子
const weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
// 校验码
const check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
const last = idcode[17];//最后一位
const seventeen = idcode.substring(0, 17);
// ISO 7064:1983.MOD 11-2
// 判断最后一位校验码是否正确
const arr = seventeen.split("");
const len = arr.length;
let num = 0;
for (let i = 0; i < len; i++) {
num += arr[i] * weight_factor[i];
}
// 获取余数
const resisue = num % 11;
const last_no = check_code[resisue];
// 返回验证结果,校验码和格式同时正确才算是合法的身份证号码
const result = last === last_no ? true : false;
return {
code: result ? 1 : -1,
msg: !result ? "身份证号码格式错误" : ""
}
},
//获取维保信息
renderMaintenanceInfo: function (targetId, resId, resType, fn) {
var flag = false; //默认没有父级
... ...
//工作汇报表单
layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laydate'], 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 domainName = common.domainName;
//对外暴露的接口
exports('deviceAdd', function (data) {
var accessToken = session.getToken()['access_token']
var enterTime = {};
var outTime = {};
var devicesBak = [];
var fittingsBak = [];
//渲染表单
form.render(null, 'add-device-form')
searchEvent();//检索条件事件
init()
//检索事件
function searchEvent() {
//发送状态
form.on('select(slt-docType)', function (data) {
var html ="";
if(data.value==1){
html+= "<option value='1'>迁入</option><option value='2'>迁出</option><option value='3'>转移</option>"
$("#device_card").css("display","block");
$("#fiting_card").css("display","none");
devicesBak = [];
fittingsBak = [];
}else{
html+= "<option value='4'>更换</option><option value='5'>新增</option><option value='6'>带走维修</option>"
$("#device_card").css("display","none");
$("#fiting_card").css("display","block");
devicesBak = [];
fittingsBak = [];
}
$("#slt-actionType").html(html);
form.render();
});
}
//发送状态
form.on('select(slt-docType)', function (data) {
var html ="";
if(data.value==1){
html+= "<option value='1'>迁入</option><option value='2'>迁出</option><option value='3'>转移</option>"
$("#device_card").css("display","block");
$("#fiting_card").css("display","none");
}else{
html+= "<option value='4'>更换</option><option value='5'>新增</option><option value='6'>带走维修</option>"
$("#device_card").css("display","none");
$("#fiting_card").css("display","block");
}
$("#slt-actionType").html(html);
form.render();
});
form.on('select(slt-actionType)', function (data) {
if(data.value=="3"){
$("#lastPlace").removeAttribute("readOnly");
}else {
$("#lastPlace").attr("readOnly","readOnly");
}
})
//保存
form.on('submit(device-form-save-id)', function (res) {
if (devicesBak.length == 0 && fittingsBak.length == 0) {
layer.msg("请先添加设备信息")
} else {
saveForm()
}
})
//保存
function saveForm() {
layer.load(2)
var data = form.val('add-device-form')
var params = {}
params.deviceList = devicesBak;
params.fittingList = fittingsBak;
params.deviceRecord = JSON.stringify(data);
console.log(params)
admin.req({
url: domainName + '/api-room/machineRoom/machineRoomEnterDevice/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()
})
} else {
layer.msg(res.msg, {
offset: '15px',
icon: 7,
time: 1000,
})
}
}
})
return false
};
$("#device_card :button#device_create").on("click",function () {
var html = "<tr><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='text' class='layui-input' width='40px' lay-verify = 'required'/></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'/></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>"
$("#device-table").append(html);
$("#table-device :button.edit").click(function () {
var toEdit = this.value == '保存';
this.value = toEdit ? '删除' : '保存';
var tdArr = []
$(this).closest('tr').find('td').not(':last').each(function (t, index) {
if (toEdit) {
this.innerHTML = this.firstChild.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
if(this.innerHTML=='' || this.innerHTML == undefined){
layer.msg("请注意填写完整")
tdArr = [];
$(this).closest('tr').remove();
return;
}
tdArr.push(this.innerHTML);
}
})
if(!toEdit){
var snCode = $(this).closest('tr').find('td')[0].innerHTML;
if(snCode!=''&& snCode!=undefined){
for (let i = 0; i < devicesBak.length; i++) {
if(devicesBak[i].snCode == snCode){
devicesBak.pop(devicesBak[i]);
}
}
}
$(this).closest('tr').remove();
}else {
if(tdArr.length>0) {
var deviceObj = {
'id': '',
'snCode': tdArr[0],
'deviceType': tdArr[1],
'deviceModel': tdArr[2],
'brand': tdArr[3]
}
devicesBak.push(deviceObj)
}
}
});
});
$("#fiting_card :button#fiting_create").on("click",function () {
var html = "<tr><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='40px' class='layui-input' lay-verify = 'required'></td><td><input type='text' class='layui-input' width='50px' lay-verify = 'required'></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 18px'/></td></tr>"
$("#fiting-table").append(html);
$("#table-fiting :button.edit").click(function () {
var toEdit = this.value == '保存';
this.value = toEdit ? '删除' : '保存';
var tdArr = []
$(this).closest('tr').find('td').not(':last').each(function (t, index) {
if (toEdit) {
this.innerHTML = this.firstChild.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
if(this.innerHTML=='' || this.innerHTML == undefined){
layer.msg("请注意填写完整")
tdArr = [];
$(this).closest('tr').remove();
return;
}
tdArr.push(this.innerHTML);
}
})
if(!toEdit){
var fittingSN = $(this).closest('tr').find('td')[0].innerHTML;
if(fittingSN!=''&& fittingSN!=undefined){
for (let i = 0; i < fittingsBak.length; i++) {
if(fittingsBak[i].fittingSN == fittingSN){
fittingsBak.pop(fittingsBak[i]);
}
}
}
$(this).closest('tr').remove();
}else {
if(tdArr.length>0) {
var fittingObj = {
'id': '',
'fittingSN': tdArr[0],
'newfittingSN': tdArr[1],
'fittingName': tdArr[2],
'deviceModel': tdArr[3]
}
fittingsBak.push(fittingObj)
}
}
});
});
//页面初始化
function init() {
loadSelect()
initDatePlus()
}
// 初始化下拉框
function loadSelect() {
admin.req({
url: domainName + '/api-room/machineRoom/getMachineRoomInfo'
}).done(function (response) {
var options = "<option value=''>=归属机房=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.machineRoomId + "'>" + v.machineRoomName + "</option>"
});
$('#slt-staffadd-machine').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>"
});
options += "<option value='0'>其他</option>";
$('#slt-staffadd-group').html(options);
form.render();
});
}
form.on('select(slt-staffadd-group)', function (data) {
if(data.value== '0'){
$("#slt-staffadd-group").css("display","none");
$("#manufacturerOther").css("display","block");
}else {
$("#manufacturerOther").css("display","none");
}
});
//初始化日期插件
function initDatePlus() {
enterTime = laydate.render({
elem: '#enterTime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
});
outTime = laydate.render({
elem: '#outTime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
});
}
})
})
\ 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("deviceList", function (d) {
var accessToken = session.getToken()['access_token']
createDeviceTable()
function dateForm(time) {
var unixTimestamp = new Date(time);
var commonTime = unixTimestamp.toLocaleString();
return commonTime
}
//渲染附件表格
function createDeviceTable() {
var deviceTable = table.render({
elem: '#deviceTable',
url: domainName + '/api-room/machineRoom/findDeviceByRecordId',
where: {
access_token: accessToken,
recordId: d.id
},
height: 'full',
end: function (e) {
form.render()
},
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'deviceType', title: '设备类型', align: 'center',
}, {
field: 'deviceModel', title: '设备型号', align: 'center',
}, {
field: 'brand', title: '品牌', align: 'center',
}, {
field: 'snCode', title: '设备sn码', align: 'center',
}
]],
done: function () {
}
})
}
})
})
\ 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('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
... ...
/** 资产维修记录查看 */
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('enterStaff', function () {
var sessions = layui.sessions;
var accessToken = sessions.getToken().access_token;
var domainName = common.domainName;
var timeChart = echarts.init(document.getElementById('chart-time-record'));
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();
loadEnterStaffChart();
loadWorkReportTable();
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);
// 加载工作汇报表格
function loadWorkReportTable() {
var conditions = form.val('form-enterStaff-condition');
Object.assign(conditions, {
access_token: accessToken,
createtime: createTime,
viewMode: 'true',
dateLimit: dateLimit
});
table.render({
elem: '#table-staff-view',
url: domainName + '/api-room/machineRoom/findMachineRoomEnterRecords',
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: 'enterStaffs', title: '进入人数', align: 'center',
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-staff">{{d.enterStaffs.length}}</span></div>'
}, {
field: 'reason', title: '进入事由', align: 'center',
}, {
field: 'belongings', title: '携带物品', align: 'center',
}, {
field: 'enterTime', title: '进入时间', align: 'center',
}, {
field: 'outTime', title: '出来时间', align: 'center',
}, {
field: 'machineRoomLeader', title: '机房负责人', align: 'center',
}
, {
field: 'projectLeader', title: '项目管理员', align: 'center',
}, {
field: 'operationUser', title: '运维负责人', align: 'center',
}, {
field: 'watchkeeper', title: '值班人', align: 'center',
}
]],
done: function () {
//获取人员列表
$('.view-staff').on('click', function () {
openStaffList($(this).data('id'))
})
}
});
}
//新增日报
$('#staff_create').on('click', function () {
openWorkReportForm()
})
//新增/编辑表单
function openWorkReportForm(id) {
var title = id ? '编辑' : '新增'
common.openWin('machineroom/staffAdd', title, {id: id}, ['保存', '取消'], function f() {
$("#staff-form-save-id").trigger("click");
},null,null,function done() {
reloadAllChange();
})
}
//查看附件/接收人列表
function openStaffList(id) {
var title = '进入人员列表'
common.openWin('machineroom/staffList', 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 loadEnterStaffChart() {
var conditions = {};
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: ''});
admin.req({
url: domainName + '/api-room/machineRoom/findMachineRoomEnterRecordsForGroup',
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]
}
}
}
}];
/**
双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() {
loadWorkReportTable();
loadEnterStaffChart();
}
});
});
\ 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("fittingList", function (d) {
var accessToken = session.getToken()['access_token']
createFittingTable()
function dateForm(time) {
var unixTimestamp = new Date(time);
var commonTime = unixTimestamp.toLocaleString();
return commonTime
}
//渲染附件表格
function createFittingTable() {
var fittingTable = table.render({
elem: '#fittingTable',
url: domainName + '/api-room/machineRoom/findFittingByRecordId',
where: {
access_token: accessToken,
recordId: d.id
},
height: 'full',
end: function (e) {
form.render()
},
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'fittingName', title: '配件名称', align: 'center',
}, {
field: 'fittingSN', title: '配件snCode', align: 'center',
}, {
field: 'newfittingSN', title: '新配件snCode', align: 'center',
}, {
field: 'deviceModel', title: '所属设备型号', align: 'center',
}
]],
done: function () {
}
})
}
})
})
\ No newline at end of file
... ...
... ... @@ -23,7 +23,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function
function createAttachmentTable() {
var attachmentTable = table.render({
elem: '#attachmentTable',
url: domainName + '/api-web/bResource/assetsrepair/getAttaById',
url: domainName + '/api-room/assetsrepair/getAttaById',
where: {
access_token: accessToken,
id: d.id
... ...
/** 线路调整记录查看 */
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('routeAdjust', 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 adjustTypeChart = echarts.init(document.getElementById('chart-adjustType-report'));
var dateLimit = "";
var createTime = "";
//日期范围选择
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();
loadOrgRouteAdjustmentChart();
loadRouteAdjustTypeChart();
loadWorkReportTable();
loadConditionSelect();
//监听Esc事件
$(document).keyup(function (event) {
if (event.keyCode === 27) {
layer.closeAll();
}
});
// 日期方式选择
$('#btns-routeAdjust-time button').click(function () {
$.each($("button.date"), function (i, e) {
var $dom = $(e);
if ($dom.hasClass("active")) {
$dom.removeClass("active")
}
})
$("#dateLimit").val('')
dateLimit = ''
$("#btns-routeAdjust-time button").removeClass("active");
$(this).addClass("active");
createTime = ($(this).data("period"))
reloadAllChange();
});
// 回车搜索
$('[lay-filter="form-routeAdjust-condition"] input').keydown(function (e) {
if (e.keyCode === 13) {
reloadAllChange();
}
});
// 下拉框改变搜索
form.on('select(slt-route-group)', reloadAllChange);
form.on('select(slt-route-org)', reloadAllChange);
// 加载工作汇报表格
function loadWorkReportTable() {
var conditions = form.val('form-routeAdjust-condition');
Object.assign(conditions, {
access_token: accessToken,
createtime: createTime,
viewMode: 'true',
dateLimit: dateLimit
});
table.render({
elem: '#table-routeAdjust-view',
url: domainName + '/api-room/machineRoom/findMachineRoomRouteAdjustmentRecords',
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: 'numbers', title: '序号'
}, {
field: 'contractId', title: '合同编号', align: 'center'
}, {
field: 'adjustTypeName', title: '调整要求', align: 'center'
}, {
field: 'localCityName', title: '城市A', align: 'center'
}, {
field: 'targetCityName', title: '城市Z', align: 'center'
},{
field: 'applyCity', title: '申请单位', align: 'center'
}, {
field: 'attachmentList', title: '附件', align: 'center',
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-attachment">{{d.attachmentList.length}}</span></div>'
}, {
field: 'busyType', title: '业务类型', align: 'center'
}, {
field: 'portSpeed', title: '端口速率', align: 'center'
}, {
field: 'electricSpeed', title: '线路速率', align: 'center'
}, {
field: 'routeAdjustList', title: '线路数量', align: 'center',
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-routeAdjust">{{d.routeAdjustList.length}}</span></div>'
}, {
field: 'portCount', title: '端口数量', align: 'center',
templet: '<div><span data-id="{{d.id}}">{{d.routeAdjustList.length*2}}</span></div>'
}, {
field: 'adjustTime', title: '时间', align: 'center'
}
]],
done: function () {
//获取线路列表
$('.view-routeAdjust').on('click', function () {
openRouteAdjustList("",$(this).data('id'))
})
//获取线路列表
$('.view-attachment').on('click', function () {
openRouteAdjustList("attachment",$(this).data('id'))
})
}
});
}
//新增日报
$('#routeAdjust_create').on('click', function () {
openWorkReportForm()
})
//新增/编辑表单
function openWorkReportForm(id) {
var title = id ? '编辑' : '新增'
common.openWin('machineroom/routeAdjustAdd', title, {id: id}, ['保存', '取消'], function f() {
$("#routeAdjust-form-save-id").trigger("click");
},null,null,function done() {
reloadAllChange();
})
}
//查看附件/调整信息列表
function openRouteAdjustList(type,id) {
var title = '线路调整信息列表';
if(type!='') {
title = "附件";
common.openWin('machineroom/routeAttachmentList', title, {id: id,type:type}, ['确定', '取消'])
}else {
common.openWin('machineroom/routeAdjustDetailList', title, {id: id}, ['确定', '取消'])
}
}
// 加载查询条件下拉框
function loadConditionSelect() {
admin.req({
url: domainName + '/api-room/machineRoom/findRouteAjustType'
}).done(function (response) {
var options = "<option value=''>=调整要求=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.adjustCode + "'>" + v.adjustType + "</option>"
});
$('#slt-route-group').html(options);
form.render();
});
admin.req({
url: domainName + '/api-room/assetsrepair/findAssetsRepairList'
}).done(function (response) {
var options = "<option value=''>=城市A选择=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.orgCode + "'>" + v.orgName + "</option>"
});
$('#slt-route-org').html(options);
form.render();
});
}
function loadRouteAdjustTypeChart(){
var conditions = {};
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: '',groupBy:'adjustTypeName'});
admin.req({
url: domainName + '/api-room/machineRoom/findMachineRoomRouteAdjustmentRecordsForGroup',
data: conditions
}).done(function (response) {
var chartData = response.map;
let echartData = [];
let total = 0
if(chartData){
$.map(chartData, function (v, i) {
total+=v;
echartData.push({
name: i,
value: v
});
});
}
var formatNumber = function (num) {
let reg = /(?=(\B)(\d{3})+$)/g;
return num.toString().replace(reg, ',');
};
var option = {
color: ['#367bec', '#00cefc'],
title: [{
text: '{val|' + total + '}',
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'
}
}
}
},
}]
};
adjustTypeChart.setOption(option)
});
}
// 各单位维修情况
function loadOrgRouteAdjustmentChart() {
var conditions = {};
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: '',groupBy:'orgName'});
admin.req({
url: domainName + '/api-room/machineRoom/findMachineRoomRouteAdjustmentRecordsForGroup',
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]
}
}
}
}];
/**
双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
};
companyChart.setOption(option)
});
}
// 图表,表格重新加载
function reloadAllChange() {
loadWorkReportTable();
loadOrgRouteAdjustmentChart();
loadRouteAdjustTypeChart();
}
});
});
\ No newline at end of file
... ...
//工作汇报表单
layui.define(['table', 'form', 'admin', 'layer', 'common','commonDetail', '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;
var commonDetail =layui.commonDetail;
//对外暴露的接口
exports('routeAdjustAdd', function (data) {
var accessToken = session.getToken()['access_token']
var adjustDate = {}
var uploadInst = {}
var attachmentIds = []
var adjustBak = []
var routeAdjustDetailId = 0;
//渲染表单
form.render(null, 'add-routeAdjust-form')
init()
//保存
form.on('submit(routeAdjust-form-save-id)', function (res) {
var value = $('#attachmentInput').val();
var adjustArr = adjustBak;
if (value != '') {
$('#upload_btn').click();
}
console.log(adjustArr);
if(adjustArr.length == 0){
layer.msg("请先添加线路详细信息");
return;
}else{
saveForm()
}
})
//保存
function saveForm() {
layer.load(2)
var data = form.val('add-routeAdjust-form')
var params = {}
params.attachmentIds = attachmentIds.toString()
delete data['file']
delete data['select']
params.routeAdjust = JSON.stringify(data)
params.routeDetailList = adjustBak
admin.req({
url: domainName + '/api-room/machineRoom/routeAdjust/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()
})
} else {
layer.msg(res.msg, {
offset: '15px',
icon: 7,
time: 1000,
})
}
}
})
return false
}
$("#routeAdjustDetail_create").on("click",function () {
routeAdjustDetailId+=1;
var html = "<tr><td id='"+routeAdjustDetailId+"'><input type='text' width='50px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='50px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='50px' class='layui-input' lay-verify = 'required'></td><td><input type='text' class='layui-input' width='50px' lay-verify = 'required|phone'></td><td><input type='text' width='50px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='50px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='50px' class='layui-input' lay-verify = 'required'></td><td><input type='text' width='50px' class='layui-input' lay-verify = 'required|phone'></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 16px'/></td></tr>"
$("#routeAdjustDetail-table").append(html);
$("#table-routeAdjustDetail :button.edit").click(function () {
var toEdit = this.value == '保存';
this.value = toEdit ? '删除' : '保存';
var tdArr = []
tdArr.push(routeAdjustDetailId);
$(this).closest('tr').find('td').not(':last').each(function (t, index) {
if (toEdit) {
this.innerHTML = this.firstChild.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
if(this.innerHTML=='' || this.innerHTML == undefined){
layer.msg("请注意填写完整")
tdArr = [];
$(this).closest('tr').remove();
return;
}
tdArr.push(this.innerHTML);
}
})
if(!toEdit){
// console.log($(this).closest('tr').find('td')[0])
var id = $(this).closest('tr').find('td')[0].getAttribute("id");
// console.log(id)
if(id>0&& id!=undefined){
for (let i = 0; i < adjustBak.length; i++) {
if(adjustBak[i].id == id){
adjustBak.pop(adjustBak[i]);
}
}
}else {
console.log(id)
}
$(this).closest('tr').remove();
}else {
if(tdArr.length>0) {
var adjustObj = {
'id': routeAdjustDetailId,
'localPort': tdArr[1],
'localInterface': tdArr[2],
'localContact': tdArr[3],
// 'localPhone': tdArr[4],
'targetPort': tdArr[5],
'targetInterface': tdArr[6],
'targetContact': tdArr[7],
// 'targetPhone': tdArr[8]
}
if(tdArr[4]!=''&& tdArr[4]!=undefined){
var resdata = commonDetail.validatorPhone(tdArr[4]);
if(resdata.code==-1){
layer.msg(resdata.msg)
tdArr = [];
$(this).closest('tr').remove();
return;
}else {
adjustObj.localPhone = tdArr[4]
}
}
if(tdArr[8]!=''&& tdArr[8]!=undefined){
var resdata = commonDetail.validatorPhone(tdArr[8]);
if(resdata.code==-1){
layer.msg(resdata.msg)
tdArr = [];
$(this).closest('tr').remove();
return;
}else {
adjustObj.targetPhone = tdArr[8]
}
}
adjustBak.push(adjustObj)
}
}
});
});
//页面初始化
function init() {
loadSelect()
initDatePlus()
initUploadPlus()
}
// 初始化下拉框
function loadSelect() {
admin.req({
url: domainName + '/api-room/assetsrepair/findAssetsRepairList'
}).done(function (response) {
var options = "<option value=''>=城市选择=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.orgCode + "'>" + v.orgName + "</option>"
});
$('#slt-localCity-group').html(options);
$('#slt-targetCity-group').html(options);
form.render();
});
admin.req({
url: domainName + '/api-room/machineRoom/findRouteAjustType'
}).done(function (response) {
var options = "<option value=''>=调整要求=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.adjustCode + "'>" + v.adjustType + "</option>"
});
$('#slt-adjustType-group').html(options);
form.render();
});
}
//初始化日期插件
function initDatePlus() {
adjustDate = laydate.render({
elem: '#adjustTime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
});
}
//初始化上传插件
function initUploadPlus() {
var param = {"access_token": accessToken}
var fileName = []
uploadInst = upload.render({
elem: '#attachment', //绑定元素
url: common.domainName + '/api-room/machineRoom/routeAdjust/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
});
}
});
}
})
})
\ 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("routeAdjustDetailList", function (d) {
var accessToken = session.getToken()['access_token']
createStaffTable()
function dateForm(time) {
var unixTimestamp = new Date(time);
var commonTime = unixTimestamp.toLocaleString();
return commonTime
}
//渲染附件表格
function createStaffTable() {
var staffTable = table.render({
elem: '#routeAdjustDetailTable',
url: domainName + '/api-room/machineRoom/getRouteAdjustDetailsByRecordId',
where: {
access_token: accessToken,
recordId: d.id
},
height: 'full',
end: function (e) {
form.render()
},
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'localPort', title: '端点A', align: 'center',
}, {
field: 'localInterface', title: '接口类型', align: 'center',
}, {
field: 'localContact', title: '联系人', align: 'center',
},
{
field: 'localPhone', title: '电话', align: 'center',
}, {
field: 'targetPort', title: '端点Z', align: 'center',
},
{
field: 'targetInterface', title: '接口类型', align: 'center',
},{
field: 'targetContact', title: '联系人', align: 'center',
},{
field: 'targetPhone', title: '电话', align: 'center',
}
]],
done: function () {
}
})
}
})
})
\ 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("routeAttachmentList", function (d) {
var accessToken = session.getToken()['access_token']
if (d.type == 'attachment') {
$('#routeAttachmentTable').show()
createAttachmentTable()
}
//渲染附件表格
function createAttachmentTable() {
var attachmentTable = table.render({
elem: '#routeAttachmentTable',
url: domainName + '/api-room/machineRoom/routeAdjust/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', 'admin', 'layer', 'common', 'commonDetail','sessions', 'laydate'], 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 commonDetail = layui.commonDetail;
var domainName = common.domainName;
//对外暴露的接口
exports('staffAdd', function (data) {
var accessToken = session.getToken()['access_token']
var enterTime = {}
var outTime = {}
var staffsBak = []
// var tableBak = table.cache.identifying-table;
//渲染表单
form.render(null, 'add-staff-form')
init()
// for (var i=0;i<tableBak.length;i++) {
// staffsBak.push(tableBak[i])
// }
//保存
form.on('submit(staff-form-save-id)', function (res) {
var value = staffsBak
if (value.length == 0) {
layer.msg("请先添加实名信息")
} else {
saveForm()
}
})
//保存
function saveForm() {
layer.load(2)
var data = form.val('add-staff-form')
var params = {}
params.staffList = staffsBak
params.staffRecord = JSON.stringify(data)
console.log(params)
admin.req({
url: domainName + '/api-room/machineRoom/machineRoomEnterStaff/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()
})
} else {
layer.msg(res.msg, {
offset: '15px',
icon: 7,
time: 1000,
})
}
}
})
return false
}
$("#identifying_create").on("click",function () {
var html = "<tr><td><input type='text' width='50px' class='layui-input' lay-verify = 'required'></td><td><input type='text' class='layui-input' width='50px' lay-verify = 'required|phone'></td><td><input type='text' width='50px' class='layui-input' lay-verify = 'required|identify'></td><td><input type='button' value='保存' class='edit' style='background-color: #b71010;line-height: 16px'/></td></tr>"
$("#identifying-table").append(html);
$("#table-identifying :button.edit").click(function () {
var toEdit = this.value == '保存';
this.value = toEdit ? '删除' : '保存';
var tdArr = []
$(this).closest('tr').find('td').not(':last').each(function (t, index) {
if (toEdit) {
this.innerHTML = this.firstChild.value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
if(this.innerHTML=='' || this.innerHTML == undefined){
layer.msg("请注意填写完整")
tdArr = [];
$(this).closest('tr').remove();
return;
}
tdArr.push(this.innerHTML);
}
})
if(!toEdit){
var name = $(this).closest('tr').find('td')[0].innerHTML;
if(name!=''&& name!=undefined){
for (let i = 0; i < staffsBak.length; i++) {
if(staffsBak[i].name == name){
staffsBak.pop(staffsBak[i]);
}
}
}
$(this).closest('tr').remove();
}else {
if(tdArr.length>0) {
var staffObj = {
'id': '',
'userName': tdArr[0]
}
if(tdArr[1]!=''&& tdArr[1]!=undefined){
var resdata = commonDetail.validatorPhone(tdArr[1]);
if(resdata.code==-1){
layer.msg(resdata.msg)
tdArr = [];
$(this).closest('tr').remove();
return;
}else {
staffObj.phone = tdArr[1]
}
}
if(tdArr[2]!=''&& tdArr[2]!=undefined){
var res = commonDetail.validatorIDCard(tdArr[2]);
if(res.code==-1){
layer.msg(res.msg)
tdArr = [];
$(this).closest('tr').remove();
return;
}else {
staffObj.idCard = tdArr[2]
}
}
console.log(staffObj)
staffsBak.push(staffObj)
}
}
});
});
//页面初始化
function init() {
loadSelect()
initDatePlus()
}
// 初始化下拉框
function loadSelect() {
admin.req({
url: domainName + '/api-web/machineRoom/getMachineRoomInfo'
}).done(function (response) {
var options = "<option value=''>=归属机房=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.machineRoomId + "'>" + v.machineRoomName + "</option>"
});
$('#slt-staffadd-machine').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>"
});
options += "<option value='0'>其他</option>";
$('#slt-staffadd-group').html(options);
form.render();
});
}
form.on('select(slt-staffadd-group)', function (data) {
if(data.value== '0'){
$("#slt-staffadd-group").css("display","none");
$("#manufacturerOther").css("display","block");
}else {
$("#manufacturerOther").css("display","none");
}
});
//初始化日期插件
function initDatePlus() {
enterTime = laydate.render({
elem: '#enterTime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
});
outTime = laydate.render({
elem: '#outTime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
});
}
})
})
\ 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("staffList", function (d) {
var accessToken = session.getToken()['access_token']
createStaffTable()
function dateForm(time) {
var unixTimestamp = new Date(time);
var commonTime = unixTimestamp.toLocaleString();
return commonTime
}
//渲染附件表格
function createStaffTable() {
var staffTable = table.render({
elem: '#staffTable',
url: domainName + '/api-room/machineRoom/findStaffByRecordId',
where: {
access_token: accessToken,
recordId: d.id
},
height: 'full',
end: function (e) {
form.render()
},
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'userName', title: '姓名', align: 'center',
}, {
field: 'phone', title: '联系方式', align: 'center',
}, {
field: 'idCard', title: '身份证号', align: 'center',
}
]],
done: function () {
}
})
}
})
})
\ No newline at end of file
... ...
<!--工作汇报表单-->
<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-device-form"
id="add-device-form" onsubmit="return false;">
<input hidden name="id" id="id" lay-verify="checkReportIsExist">
<div class="layui-form-item" >
<div class="layui-inline inline-onethird">
<label class="layui-form-label">报表类型</label>
<div class="layui-input-inline">
<select name="docType" id="slt-docType"
lay-filter="slt-docType" >
<option value="1">设备出入</option>
<option value="2">配件更换</option>
</select>
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">操作类型</label>
<div class="layui-input-inline">
<select name="actionType" id="slt-actionType"
lay-filter="slt-actionType" >
<option value="1">迁入</option>
<option value="2">迁出</option>
<option value="3">转移</option>
</select>
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">设备型号</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="deviceModel" id="deviceModel" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">机房</label>
<div class="layui-input-inline">
<select name="machineRoomId" id="slt-staffadd-machine"
lay-filter="slt-staffadd-machine">
<option value="">=选择机房=</option>
</select>
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">选择单位</label>
<div class="layui-input-inline">
<select name="manufacturerId" id="slt-staffadd-group"
lay-filter="slt-staffadd-group" >
<option value="">=工作单位=</option>
</select>
<input type="text" name="manufacturerOther" id="manufacturerOther" lay-filter="manufacturerOther" class="layui-input" style="display: none">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">申请人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="applyUser" id="applyUser" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">联系方式</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="phone" id="phone" lay-verify="required|phone">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">进入时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="enterTime" id="enterTime" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">出来时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="outTime" id="outTime" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item" >
<div class="layui-inline inline-onethird">
<label class="layui-form-label">现物理位置</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="localPlace" id= "localPlace" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">原物理位置</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="lastPlace" id= "lastPlace" readonly="readonly" value="" placeholder="只有设备转移需要填写,默认只读">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">值班人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="watchkeeper" id= "watchkeeper" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">设备负责人(甲方)</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="machineRoomLeader" id="machineRoomLeader" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">总集成</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="integration" id="integration" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">运维负责人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="operationUser" id="operationUser" lay-verify="required">
</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="reason" id="reason" lay-verify="required"></textarea>
</div>
</div>
<button type="submit" lay-submit lay-filter="device-form-save-id" class="layui-btn hide"
id="device-form-save-id">保存
</button>
</form>
</div>
<div class="layui-card-body" id="device_card" style="display: block">
<fieldset class="layui-elem-field layui-field-title">
<legend>设备信息</legend>
</fieldset>
<div style="display: flex;float: right">
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="device_create" style="float: right">
添加
</button>
</div>
<table id="table-device" class="layui-table">
<thead>
<tr>
<th>设备sn码</th>
<th>设备类型</th>
<th>设备型号</th>
<th>品牌</th>
<th>操作</th>
</tr>
</thead>
<tbody id="device-table">
</tbody>
</table>
</div>
<div class="layui-card-body" id="fiting_card" style="display: none">
<fieldset class="layui-elem-field layui-field-title">
<legend>配件信息</legend>
</fieldset>
<div style="display: flex;float: right">
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="fiting_create" style="float: right">
添加
</button>
</div>
<table id="table-fiting" class="layui-table">
<thead>
<tr>
<th>配件snCode</th>
<th>新配件snCode</th>
<th>配件名称</th>
<th>所属设备</th>
<th>操作</th>
</tr>
</thead>
<tbody id="fiting-table">
</tbody>
</table>
</div>
</article>
<script>
layui.use('deviceAdd', function (fn) {
fn({{d}})
})
</script>
<style>
#add-repair-form .layui-form-label {
width: 120px;
/* padding: 8px 12px; */
text-align: left !important;
}
#add-repair-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>
... ...
<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="deviceTable" lay-filter="deviceTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('deviceList', 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-btn-group time-group" id="btns-staff-time" style="float: right;">
<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 active date"
data-period="month">本月
</button>
</div>
</div>
<div style="display: flex" class="layui-card-echart">
<div style="flex-grow: 1">
<div class="pie-chart" id="device-chart-time-record"></div>
</div>
</div>
<div class="layui-card-body" style="margin-top: 10px;">
<div style="display: flex">
<form class="layui-form layui-card-header" onsubmit="return false"
lay-filter="form-enterStaff-condition">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input type="text" id="applyUser" name="applyUser"
placeholder="申请人" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="manufacturerId" id="slt-staff-group"
lay-filter="slt-staff-group" lay-search>
<option value="">=工作单位=</option>
</select>
</div>
</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>
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="device_create" style="float: right">
新增
</button>
</div>
<div class="layui-tab layui-tab-card" lay-filter="enterdevice-tab">
<ul class="layui-tab-title">
<li class="layui-this">设备出入记录</li>
<li>配件更换记录</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div id="enterdevice-head-info" class="statistics-top-head"></div>
<table id="enterdevice_table_id" class="layui-table" lay-filter = "enterdevice_table_id"></table>
</div>
<div class="layui-tab-item">
<div id="fitting-head-info" class="statistics-top-head"></div>
<table id="fitting-table" class="layui-table" lay-filter="fitting-table"></table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('enterDevice', function (fn) {
fn();
});
</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-btn-group time-group" id="btns-staff-time" style="float: right;">
<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 active date"
data-period="month">本月
</button>
</div>
</div>
<div style="display: flex" class="layui-card-echart">
<div style="flex-grow: 1">
<div class="pie-chart" id="chart-time-record"></div>
</div>
</div>
<div class="layui-card-body" style="margin-top: 10px;">
<div style="display: flex">
<form class="layui-form layui-card-header" onsubmit="return false"
lay-filter="form-enterStaff-condition">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input type="text" id="applyUser" name="applyUser"
placeholder="申请人" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="manufacturerId" id="slt-staff-group"
lay-filter="slt-staff-group" lay-search>
<option value="">=工作单位=</option>
</select>
</div>
</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>
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="staff_create" style="float: right">
新增
</button>
</div>
<table id="table-staff-view" lay-filter="table-staff-view"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('enterStaff', function (fn) {
fn();
});
</script>
\ 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="fittingTable" lay-filter="fittingTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('fittingList', 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-btn-group time-group" id="btns-routeAdjust-time" style="float: right;">
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs active date"
data-period="month">本月
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date"
data-period="querter">本季度
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date"
data-period="year">今年
</button>
</div>
</div>
<div style="display: flex" class="layui-card-echart">
<div style="flex-grow: 3;width: 65%!important;">
<h5 class="lay-row-title">按城市A统计</h5>
<div class="pie-chart" id="chart-company-report" style="min-height: 240px"></div>
</div>
<div style="flex-grow: 3;width: 35%!important;">
<h5 class="lay-row-title">按调整要求统计</h5>
<div class="pie-chart" id="chart-adjustType-report" style="min-height: 240px"></div>
</div>
</div>
<div class="layui-card-body" style="margin-top: 10px;">
<div style="display: flex">
<form class="layui-form layui-card-header" onsubmit="return false"
lay-filter="form-routeAdjust-condition">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input type="text" id="contractId" name="contractId"
placeholder="合同编号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="adjustType" id="slt-route-group"
lay-filter="slt-route-group" lay-search>
<option value="">=调整要求=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="localCity" id="slt-route-org"
lay-filter="slt-route-org" lay-search>
<option value="">=城市A=</option>
</select>
</div>
</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>
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="routeAdjust_create" style="float: right">
新增
</button>
</div>
<table id="table-routeAdjust-view" lay-filter="table-routeAdjust-view"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('routeAdjust', function (fn) {
fn();
});
</script>
\ No newline at end of file
... ...
<!--工作汇报表单-->
<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-routeAdjust-form"
id="add-routeAdjust-form" onsubmit="return false;">
<input hidden name="id" id="id" lay-verify="checkReportIsExist">
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">合同编号</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="contractId" id="contractId" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">调整要求</label>
<div class="layui-input-inline">
<select name="adjustType" id="slt-adjustType-group"
lay-filter="slt-adjustType-group" >
<option value="">=调整要求=</option>
</select>
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">城市A</label>
<div class="layui-input-inline">
<select name="localCity" id="slt-localCity-group"
lay-filter="slt-localCity-group">
<option value="">=城市选择=</option>
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">城市Z</label>
<div class="layui-input-inline">
<select name="targetCity" id="slt-targetCity-group"
lay-filter="slt-targetCity-group">
<option value="">=城市选择=</option>
</select>
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">申请单位</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="applyCity" id="applyCity" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">业务类型</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="busyType" id="busyType" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">端口速率</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="portSpeed" id="portSpeed" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">线路速率</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="electricSpeed" id="electricSpeed" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">调整时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="adjustTime" id="adjustTime" lay-verify="required">
</div>
</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-repair-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>
<button type="submit" lay-submit lay-filter="routeAdjust-form-save-id" class="layui-btn hide"
id="routeAdjust-form-save-id">保存
</button>
</form>
</div>
<div class="layui-card-body" style="margin-top: 10px;">
<fieldset class="layui-elem-field layui-field-title">
<legend>线路调整详细信息</legend>
</fieldset>
<div style="display: flex;float: right">
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="routeAdjustDetail_create" style="float: right">
添加
</button>
</div>
<table id="table-routeAdjustDetail" class="layui-table">
<thead>
<tr>
<th>端点A</th>
<th>接口类型</th>
<th>联系人</th>
<th>电话</th>
<th>端点Z</th>
<th>接口类型</th>
<th>联系人</th>
<th>电话</th>
<th>操作</th>
</tr>
</thead>
<tbody id="routeAdjustDetail-table">
</tbody>
</table>
</div>
</article>
<script>
layui.use('routeAdjustAdd', function (fn) {
fn({{d}})
})
</script>
<style>
#add-repair-form .layui-form-label {
width: 120px;
/* padding: 8px 12px; */
text-align: left !important;
}
#add-repair-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>
... ...
<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="routeAdjustDetailTable" lay-filter="routeAdjustDetailTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('routeAdjustDetailList', function (fn) {
fn({{d}})
});
</script>
\ 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="routeAttachmentTable" lay-filter="routeAttachmentTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('routeAttachmentList', function (fn) {
fn({{d}})
});
</script>
\ No newline at end of file
... ...
<!--工作汇报表单-->
<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-staff-form"
id="add-staff-form" onsubmit="return false;">
<input hidden name="id" id="id" lay-verify="checkReportIsExist">
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">机房</label>
<div class="layui-input-inline">
<select name="machineRoomId" id="slt-staffadd-machine"
lay-filter="slt-staffadd-machine">
<option value="">=选择机房=</option>
</select>
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">选择单位</label>
<div class="layui-input-inline">
<select name="manufacturerId" id="slt-staffadd-group"
lay-filter="slt-staffadd-group" >
<option value="">=工作单位=</option>
</select>
<input type="text" name="manufacturerOther" id="manufacturerOther" lay-filter="manufacturerOther" class="layui-input" style="display: none">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">申请人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="applyUser" id="applyUser" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">联系方式</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="phone" id="phone" lay-verify="required|phone">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">进入时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="enterTime" id="enterTime" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">出来时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="outTime" id="outTime" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-onethird">
<label class="layui-form-label">机房负责人(甲方)</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="machineRoomLeader" id="machineRoomLeader" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">项目管理员(甲方)</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="projectLeader" id="projectLeader" lay-verify="required">
</div>
</div>
<div class="layui-inline inline-onethird">
<label class="layui-form-label">运维负责人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="operationUser" id="operationUser" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item" >
<div class="layui-inline inline-half">
<label class="layui-form-label">携带物品</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="belongings" id="belongings" lay-verify="required">
</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="watchkeeper" id= "watchkeeper" lay-verify="required">
</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="reason" id="reason" lay-verify="required"></textarea>
</div>
</div>
<button type="submit" lay-submit lay-filter="staff-form-save-id" class="layui-btn hide"
id="staff-form-save-id">保存
</button>
</form>
</div>
<div class="layui-card-body" style="margin-top: 10px;">
<fieldset class="layui-elem-field layui-field-title">
<legend>实名登记</legend>
</fieldset>
<div style="display: flex;float: right">
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="identifying_create" style="float: right">
添加
</button>
</div>
<table id="table-identifying" class="layui-table">
<thead>
<tr>
<th>姓名</th>
<th>联系方式</th>
<th>身份证号</th>
<th>操作</th>
</tr>
</thead>
<tbody id="identifying-table">
</tbody>
</table>
</div>
</article>
<script>
layui.use('staffAdd', function (fn) {
fn({{d}})
})
</script>
<style>
#add-repair-form .layui-form-label {
width: 120px;
/* padding: 8px 12px; */
text-align: left !important;
}
#add-repair-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>
... ...
<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="staffTable" lay-filter="staffTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('staffList', function (fn) {
fn({{d}})
});
</script>
\ No newline at end of file
... ...