Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/maintenance/maintenanceDetailList.jsp

638 lines
26 KiB
Plaintext
Raw Permalink Normal View History

2026-01-16 14:13:44 +08:00
<%@page import="com.sipai.entity.maintenance.MaintenanceDetail"%>
<%@page import="com.sipai.entity.maintenance.MaintenanceCommString"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ page import="com.sipai.entity.base.ServerObject"%>
<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security"%>
<%request.setAttribute("Status_Start",MaintenanceDetail.Status_Start);%>
<%request.setAttribute("Status_Finish",MaintenanceDetail.Status_Finish);%>
<%request.setAttribute("MAINTENANCE_TYPE_REPAIR",MaintenanceCommString.MAINTENANCE_TYPE_REPAIR);%>
<%request.setAttribute("MAINTENANCE_TYPE_OVERHAUL",MaintenanceCommString.MAINTENANCE_TYPE_OVERHAUL);%>
<%request.setAttribute("MAINTENANCE_TYPE_MAINTAIN",MaintenanceCommString.MAINTENANCE_TYPE_MAINTAIN);%>
<!DOCTYPE html>
<!-- <html lang="zh-CN"> -->
<!-- BEGIN HEAD -->
<head>
<title><%= ServerObject.atttable.get("TOPTITLE")%></title>
<!-- 引用页头及CSS页-->
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<!-- 文件上传-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/css/fileinput.min.css" />
<script type="text/javascript"
src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js" charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js"
charset="utf-8"></script>
<style type="text/css">
.main-header {
display: none;
}
.content-header {
display: none;
}
.main-footer {
display: none;
}
.select2-container .select2-selection--single {
height: 34px;
line-height: 34px;
}
.select2-selection__arrow {
margin-top: 3px;
}
.table-hover>tbody>tr:hover {
cursor: pointer;
}
</style>
<script type="text/javascript">
//----------------------------------------------------------------------------------------------------------------------
var beginTimeStore2 = '';
var endTimeStore2 = '';
function initDate2() {
//定义locale汉化插件
beginTimeStore2 = moment().subtract(6, 'days').format('YYYY-MM-DD');
endTimeStore2 = moment().subtract(-1, 'days').format('YYYY-MM-DD');
var locale = {
"format": 'YYYY-MM-DD',
"separator": " ~ ",
"applyLabel": "确定",
"cancelLabel": "取消",
"fromLabel": "起始时间",
"toLabel": "结束时间'",
"customRangeLabel": "自定义",
"weekLabel": "W",
"daysOfWeek": ["日", "一", "二", "三", "四", "五", "六"],
"monthNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月",
"九月", "十月", "十一月", "十二月"],
"firstDay": 1
};
$('#reservationtime2').daterangepicker(
{
"timePicker": false,
"timePicker24Hour": false,
"linkedCalendars": false,
"autoUpdateInput": false,
"timePickerIncrement": 10,
"locale": locale,
//汉化按钮部分
ranges: {
'今日': [moment(), moment().subtract(-1, 'days')],
'昨日': [moment().subtract(1, 'days'), moment()],
'最近7日': [moment().subtract(6, 'days'),
moment().subtract(-1, 'days')],
'本月': [moment().startOf('month'),
moment().endOf('month').subtract(-1, 'days')],
'上月': [
moment().subtract(1, 'month').startOf('month'),
moment().subtract(1, 'month').endOf('month')
.subtract(-1, 'days')]
},
startDate: beginTimeStore2,
endDate: endTimeStore2
},
function (start, end, label) {
beginTimeStore2 = start.format(this.locale.format);
endTimeStore2 = end.format(this.locale.format);
if (!this.startDate) {
this.element.val('');
} else {
this.element.val(this.startDate
.format(this.locale.format)
+ this.locale.separator
+ this.endDate.format(this.locale.format));
}
});
$('#reservationtime2').val(
beginTimeStore2 + locale.separator + endTimeStore2);
//$('#reservationtime2').daterangepicker({autoUpdateInput:false})
};
//----------------------------------------------------------------------------
/**
新增缺陷处理(维修记录)
*/
var addFun = function () {
$.post(ext.contextPath + '/maintenance/addDetail.do', { bizId: companyId }, function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
};
/**
新增保养
*/
var addMaintainFun = function () {
$.post(ext.contextPath + '/maintenance/addMaintainDetail.do', function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
};
/**
新增历史补录
*/
var addFunOrd = function() {
$.post(ext.contextPath + '/maintenance/addDetailOrd.do',{bizId:companyId}, function(data) {
$("#subDiv").html(data);
openModal('subModal');
});
};
var editFun = function (id) {
$.post(ext.contextPath + '/maintenance/editProblem.do', { id: id }, function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
};
var viewDetailFun = function (id) {
stopBubbleDefaultEvent();
$.post(ext.contextPath + '/maintenance/showMaintenanceDetailView.do', { id: id }, function (data) {
$("#subDiv").html(data);
openModal('maintenanceDetailModal');
});
};
//维修单
var viewFun = function (id) {
$.post(ext.contextPath + '/maintenance/viewMaintain.do', { id: id }, function (data) {
$("#subDiv").html(data);
openModal('subRepairModal');
});
}
//补录详情
var viewSupplementFun = function (id) {
$.post(ext.contextPath + '/maintenance/showSupplementMaintenanceDetailView.do', { id: id }, function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
}
var launchFun = function (id) {
swal({
text: "您确定提交此问题?",
dangerMode: true,
buttons: {
cancel: {
text: "取消",
value: null,
visible: true,
className: "btn btn-default btn-sm",
closeModal: true,
},
confirm: {
text: "确定",
value: true,
visible: true,
className: "btn btn-info btn-sm",
closeModal: true
}
}
})
.then(function (willDelete) {
if (willDelete) {
$.post(ext.contextPath + '/maintenance/updateStatus.do', { id: id, status: '${Status_Launch}' }, function (data) {
if (data.res == 1) {
$("#table").bootstrapTable('refresh');
} else {
showAlert('d', '提交失败', 'mainAlertdiv');
}
}, 'json');
}
});
};
var deletesFun = function () {
var checkedItems = $("#table").bootstrapTable('getSelections');
//console.log('getSelections',checkedItems);
var datas = "";
$.each(checkedItems, function (index, item) {
datas += item.id + ",";
});
if (datas == "") {
showAlert('d', '请先选择记录', 'mainAlertdiv');
} else {
swal({
text: "您确定要删除选中记录?",
dangerMode: true,
buttons: {
cancel: {
text: "取消",
value: null,
visible: true,
className: "btn btn-default btn-sm",
closeModal: true,
},
confirm: {
text: "确定",
value: true,
visible: true,
className: "btn btn-danger btn-sm",
closeModal: true
}
}
})
.then(function (willDelete) {
if (willDelete) {
$.post(ext.contextPath + '/maintenance/deleteDetails.do', { ids: datas }, function (data) {
if (data > 0) {
$("#table").bootstrapTable('refresh');
} else {
showAlert('d', '删除失败', 'mainAlertdiv');
}
});
}
});
}
};
//刷新表格
var dosearch = function () {
$("#table").bootstrapTable('refresh');
};
//加载完厂区后,初始化工艺段和表格
function initFun() {
//选择工艺段
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", { companyId: companyId }, function (data) {
$("#processSection").empty();
var selelct_ = $("#processSection").select2({
data: data,
placeholder: '请选择',//默认文字提示
allowClear: true,//允许清空
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框
formatResult: function formatRepo(repo) { return repo.text; }, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo) { return repo.text; } // 函数用于呈现当前的选择
});
selelct_.val("").trigger("change");
selelct_.on("change", function (e) {
dosearch();
});
}, 'json');
$("#table").bootstrapTable({ // 对应table标签的id
url: ext.contextPath + '/maintenance/getMaintenanceDetailList.do', // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
pageList: [10, 20, 50], // 设置页面可以显示的数据条数
pageSize: 10, // 页面数据条数
pageNumber: 1, // 首页页码
sidePagination: 'server', // 设置为服务器端分页
queryParams: function (params) { // 请求服务器数据时发送的参数可以在这里添加额外的查询参数返回false则终止请求
return {
rows: params.limit, // 每页要显示的数据条数
page: params.offset / params.limit + 1, // 每页显示数据的开始页码
sort: params.sort, // 要排序的字段
order: params.order,
search_name: $('#search_name').val(),
search_code: companyId,
processSectionId: $('#processSection').val(),
type: '${type}',
sdt: beginTimeStore2,
edt: endTimeStore2,
}
},
sortName: 'id', // 要排序的字段
sortOrder: 'desc', // 排序规则
onClickRow: function (row) {
viewFun(row.id);
},
columns: [
{
checkbox: true, // 显示一个勾选框
}, {
field: 'company.name', // 返回json数据中的name
title: '部门名称', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle',
}, {
field: 'detailNumber', // 返回json数据中的name
title: '维修编号', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle'
}, {
field: 'problemcontent', // 返回json数据中的name
title: '问题描述', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'insdt', // 返回json数据中的name
title: '发起时间', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle',
formatter: function (value, row, index) {
return value.substring(0, 19);
}
},/* {
field: 'type', // 返回json数据中的name
title: '类型', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
formatter:function(value,row,index){
switch (value) {
case '${MAINTENANCE_TYPE_REPAIR}':
return '缺陷';
case '${MAINTENANCE_TYPE_OVERHAUL}':
return '检修';
case '${MAINTENANCE_TYPE_MAINTAIN}':
return '保养';
default:
return '';
}
}
}, */{
field: 'status', // 返回json数据中的name
title: '问题状态', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
formatter: function (value, row, index) {
if (value == '${Status_Start}' && row.type == '${TYPE_SUPPLEMENT}') {
return '处理中';
} else if (value == '${Status_Start}') {
return '已下发';
} else if (value == '${Status_Finish}') {
return '已完成';
} else {
return value;
}
}
}, {
title: "操作",
align: 'center',
valign: 'middle',
width: 120, // 定义列的宽度单位为像素px
formatter: function (value, row, index) {
var buts = '';
/* buts+= '<security:authorize buttonUrl="equipment/equipmentMaintain/edit.do">';
buts+= '<button class="btn btn-default btn-sm" title="编辑" onclick="editFun(\'' + row.id + '\')"><i class="fa fa-edit"></i><span class="hidden-md hidden-lg"> 编辑</span></button>';
buts+= '</security:authorize>';
buts+= '<security:authorize buttonUrl="equipment/maintenancePlan/delete.do">';
buts+='<button class="btn btn-default btn-sm" title="删除" onclick="deleteFun(\''+row.id+'\')"><i class="fa fa fa-trash-o"></i><span class="hidden-md hidden-lg">删除</span></button';
buts+= '</security:authorize>'; */
buts += '<button class="btn btn-default btn-sm" onclick="viewDetailFun(\'' + row.id + '\')" data-toggle="tooltip" title="查看详情"><i class="fa fa-history"></i><span class="hidden-md hidden-lg"> 查看详情</span></button>'
buts = '<div class="btn-group" >' + buts + '</div>';
return buts;
}
}
],
onLoadSuccess: function () { //加载成功时执行
adjustBootstrapTableView("table");
console.info("加载数据成功");
},
onLoadError: function () { //加载失败时执行
console.info("加载数据失败");
}
})
//设备类型tree
$.post(ext.contextPath + '/equipment/equipmentClass/getTreeJson.do', {
ng: '',
unitId: companyId
}, function (data) {
var datastr = data.result;
if (datastr.length == 1 && !datastr[0].hasOwnProperty("nodes")) {
//当登陆者的pid以下没有子节点时显示单独一个span
$("#search_pid3").val(datastr[0].id);
$("#companyselect3").hide();
//$("#companyName3").text("公司: " + data[0].text);
//companyId = data[0].id;
initMenu();
} else if ((data.length == 1 && data.nodes != "") || datastr.length > 1) {
//第一次加载时赋值
$("#search_pid3").val(datastr[0].id);
$("#cname_input3").val(datastr[0].text);
//initMenu();
$('#companytree3').treeview({
data: datastr,
showBorder: false,
levels: 3,
});
$('#companytree3').on('nodeSelected', function (event, data) {
$("#search_pid3").val(data.id);
$("#cname_input3").val(data.text);
document.getElementById('ul_tree3').style.display = "none";
//initMenu();
});
} else {
//待完善
}
;
}, 'json');
//防止点击树的+号收起下拉框
$("#ul_tree3").on("click", function (e) {
event.stopPropagation();
});
//点击空白隐藏树
$(document).click(function (e) {
var divTree = $('#ul_tree3'); // 设置目标区域
if (!divTree.is(e.target) && divTree.has(e.target).length === 0) {
divTree.hide()
}
})
}
var companyId = "";
$(function () {
companyId = unitId;
initDate2();
var flag = IsApp();
if (flag == true) {
} else {
$(".main-header").show();
$(".content-header").show();
$(".main-footer").show();
}
initFun();
});
//导出设备表,要用get请求的方式
function downloadFun() {
var allTableData = $("#table").bootstrapTable('getData');
//alert("allTableData value is "+allTableData.length);
if (allTableData.length == 0) {
showAlert('d', '没有相关数据', 'mainAlertdiv');
} else {
var selectRowIds = "";
var selectRowValue = $("#table").bootstrapTable('getSelections');
var sdt = beginTimeStore2;
var edt = endTimeStore2;
var type = '${type}';
var search_name = $('#search_name').val();
var processSectionId = $('#processSection').val();
if (selectRowValue.length > 0) {
for (var i = 0; i < selectRowValue.length; i++) {
if (i == selectRowValue.length - 1) {
selectRowIds += "'" + selectRowValue[i].id + "'";
} else {
selectRowIds += "'" + selectRowValue[i].id + "'" + ",";
}
}
window.open(ext.contextPath + "/maintenance/downloadExcel.do?ids=" + selectRowIds);
} else {
window.open(ext.contextPath + "/maintenance/downloadExcel.do?companyId=" + companyId + "&type=" + type + "&search_name=" + search_name + "&processSectionId=" + processSectionId + "&sdt=" + sdt + "&edt=" + edt);
}
}
/*
if (companyId == "") {//获取验证结果,如果成功,执行下面代码
showAlert('d','请先选择厂区','mainAlertdiv');
}else{
var type='${type}';
var search_name=$('#search_name').val();
var processSectionId=$('#processSection').val();
window.open(ext.contextPath + "/maintenance/downloadExcel.do?companyId="+companyId+"&type="+type+"&search_name="+search_name+"&processSectionId="+processSectionId);
}
*/
}
</script>
</head>
<body onload="initMenu()" class="hold-transition ${cu.themeclass} sidebar-mini">
<div class="wrapper">
<!-- 引用top -->
<%-- <jsp:include page="/jsp/top.jsp"></jsp:include> --%>
<!-- 菜单栏 -->
<%-- <jsp:include page="/jsp/left.jsp"></jsp:include> --%>
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1 id="head_title"></h1>
<ol class="breadcrumb">
<li><a id='head_firstlevel' href="#"><i class="fa fa-dashboard"></i> </a></li>
<!-- <li class="active">Here</li> -->
</ol>
</section>
<!-- Main content -->
<section class="content container-fluid">
<div id="mainAlertdiv"></div>
<div id="subDiv"></div>
<div id="user4SelectDiv"></div>
<div id="fileInputDiv"></div>
<div id="fault4SelectDiv"></div>
<div id="handleDetailDiv"></div>
<div id="maintainPlanDiv"></div>
<div id="problemTyp4SelectDiv"></div>
<div id="equ4SelectDiv"></div>
<div id="emSubDiv"></div>
<div>
<!-- <div class="form-group " style="margin-bottom:10px;">
<label class="form-label" >公司:</label>
<select class="form-control select2 " id="search_code" name ="search_code" style="width: 220px;"></select>
<span id="companyName" style="width:220px;border: none;background: transparent;" ></span>
</div> -->
<div class="form-group " style="padding:0;">
<div class="btn-group" style="width: 380px;padding-bottom:10px;">
<security:authorize buttonUrl="maintenance/addDetail.do">
<button type="button" class="btn btn-default btn-sm" onclick="addFun();"><i
class="fa fa-plus"></i>设备报修</button>
<!-- <button type="button" class="btn btn-default btn-sm" onclick="addMaintainFun();"><i class="fa fa-plus"></i> 新增保养</button> -->
<button type="button" class="btn btn-default btn-sm" onclick="deletesFun();"><i
class="fa fa-trash-o"></i> 删除</button>
<button type="button" class="btn btn-default btn-sm" onclick="downloadFun()"><i
class="fa fa-cloud-download"></i>导出报表</button>
<security:authorize buttonUrl="maintenance/addDetailOrd.do">
<button type="button" class="btn btn-default btn-sm" onclick="addFunOrd();"><i class="fa fa-plus"></i>历史补录</button>
</security:authorize>
</security:authorize>
</div>
<div class="form-group pull-right form-inline">
<div class="input-group pull-left input-group-sm">
<label style="padding-top:4px">时间范围:</label>
<input type="text" class="form-control pull-right" id="reservationtime2"
style="width:160px;height:35px;">
</div>
<div class="input-group input-group-sm pull-left">
<label class="form-label ">工艺段:</label>
<select id="processSection" class="form-control select2 " style="width: 160px;">
</select>
</div>
<div style="width:280px;height:100%;float:left;margin:3px 5px 3px 15px;">
<ul id="companyselect3" style="list-style-type:none;padding-left:0px;width:300px;">
<li class="dropdown" style="width:300px;">
<!-- Menu toggle button -->
<a href="#" class="dropdown-toggle" data-toggle="dropdown" style="width:300px;"
onclick="document.getElementById('ul_tree3').style.display = 'block';">
<div class="input-group">
<span class="input-group-addon"
style="height:31px;color:#000000;border-top-left-radius: 4px;border-bottom-left-radius: 4px;font-weight:bold">设备类型:</span>
<input class="form-control " id="cname_input3" name="cname_input3"
style="height:31px;width: 220px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;"
readonly />
</div><!-- /input-group -->
</a>
<ul id="ul_tree3" class="dropdown-menu" data-stopPropagation="true" style="overflow:auto;">
<li class="header">
<div id="companytree3" style="width: 275px;"></div>
</li>
</ul>
</li>
</ul>
</div>
<div class="input-group input-group-sm pull-left" style="width: 250px;">
<div class="input-group input-group-sm" style="width: 250px;">
<input type="text" id="search_name" name="search_name" style="height: 34px;"
class="form-control pull-right" placeholder="问题描述">
<div class="input-group-btn">
<button class="btn btn-default" style="height: 34px;" onclick="dosearch();"><i
class="fa fa-search"></i></button>
</div>
</div>
</div>
</div>
</div>
<table id="table"></table>
</div>
</section>
<!-- /.content -->
</div>
<%-- <jsp:include page="/jsp/bottom.jsp"></jsp:include> --%>
<%-- <jsp:include page="/jsp/side.jsp"></jsp:include> --%>
</div>
</body>
<!-- 文件上传-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/css/fileinput.min.css" />
<%-- <script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js"
charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js"
charset="utf-8"></script> --%>
<script type="text/javascript" src="<%=request.getContextPath()%>/JS/commonFileUpload.js" charset="utf-8"></script>
<script type="text/javascript">
document.write("<scr" + "ipt src=\"<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js\"></sc" + "ript>")
document.write("<scr" + "ipt src=\"<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js\"></sc" + "ript>")
</script>
<link rel="stylesheet"
href="<%=request.getContextPath()%>/node_modules/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css" />
<script type="text/javascript"
src="<%=request.getContextPath()%>/node_modules/bootstrap-switch/dist/js/bootstrap-switch.min.js"
charset="utf-8"></script>
<!-- 引入daterangepicker-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.css" />
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/moment.min.js"
charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.js"
charset="utf-8"></script>
</html>