Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/maintenance/maintenanceDetailHandle.jsp

617 lines
30 KiB
Plaintext
Raw Normal View History

2026-01-16 14:13:44 +08:00
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@page import="com.sipai.entity.maintenance.Maintenance"%>
<%request.setAttribute("Status_Launch",Maintenance.Status_Launch);%>
<style type="text/css">
.select2-container .select2-selection--single{
height:34px;
line-height: 34px;
}
.select2-selection__arrow{
margin-top:3px;
}
</style>
<script type="text/javascript">
var masterId='${maintenanceDetail.id}';
var tbName='tb_maintenance_problem_fille'; //数据表
var nameSpace='MaintenanceProblem';//保存文件夹
var previews = new Array();
var previewConfigs = new Array();
//初始化fileinput控件第一次初始化
function showFileInput(ctrlName) {
var control = $('#' + ctrlName);
control.fileinput('destroy');
control.fileinput({
language: 'zh', //设置语言
showUpload: false, //是否显示上传按钮
showRemove:false,
showCaption: false,//是否显示标题
showBrowse:false,//选择按钮
showClose:false,//右上角关闭按钮
dropZoneEnabled: false,//是否显示拖拽区域
fileActionSettings:{
showDrag:false
},
browseClass: "btn btn-primary", //按钮样式
maxFileCount: 10, //表示允许同时上传的最大文件个数
enctype: 'multipart/form-data',
validateInitialCount:true,
previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
initialPreviewAsData: true,
initialPreview: previews,
initialPreviewConfig:previewConfigs,
layoutTemplates:{
actionUpload:''
},
deleteUrl:ext.contextPath+"/base/deleteInputFile.do",
deleteExtraData:function () { //传参
var data = {
"tbName": tbName
};
return data;
}
});
$('#kvFileinputModal').on("hidden.bs.modal", function() {
$(this).removeData("bs.modal");
//modal重复打开会导致前面的滚动条失去作用
$('.modal').css("overflow","auto");
});
}
//名称定义不可修改
var getFileList = function() {
$.post(ext.contextPath + '/base/getInputFileList.do', {masterId:masterId,tbName:tbName} , function(data) {
//console.info(data)
if(data.length>0){
previews=new Array();
$('#maintenancefile').show();
for(var i=0;i<data.length;i++){
var previewConfig = new Object();
var path = data[i].abspath;
path=path.substring(path.indexOf('webapps')+7,path.length);
path =ext.basePath.replace(ext.contextPath,'')+ path.replace(/\\/g,"\/");;
previews.push(path);
previewConfig['width']= '50px';
previewConfig['caption']= data[i].filename;
previewConfig['key']= data[i].id;
previewConfigs.push(previewConfig);
}
showFileInput("maintenanceDetailFile");
}else{
$('#maintenanceDetailFile').hide();
}
},'json');
};
var fileinput = function() {
//var url='/maintenance/updateProblemFile.do';//保存数据表方法
$.post(ext.contextPath + '/base/fileinput.do', {masterId:masterId,tbName:tbName,nameSpace:nameSpace} , function(data) {
$("#fileInputDiv").html(data);
openModal('fileInputModal');
});
};
function doupdate() {
$("#subForm").bootstrapValidator('validate');//提交验证
setTimeout(function(){
if ($("#subForm").data('bootstrapValidator').isValid()) {//获取验证结果,如果成功,执行下面代码
$.post(ext.contextPath + "/maintenance/updateDetail.do", $("#subForm").serialize(), function(data) {
if (data.res == 1){
$("#table").bootstrapTable('refresh');
closeModal("subModal");
}else if(data.res == 0){
showAlert('d','保存失败');
}else{
showAlert('d',data.res);
}
},'json');
}
}, 100);
}
//保养任务提交审核
function submitFun(){
$('#subUnitForm').data('bootstrapValidator')
.updateStatus('targetUsersName', 'NOT_VALIDATED',null)
.validateField('targetUsersName');
$("#subForm").bootstrapValidator('validate');//提交验证
$("#subUnitForm").bootstrapValidator('validate');//提交验证
setTimeout(function(){
if ($("#subForm").data('bootstrapValidator').isValid() && $("#subUnitForm").data('bootstrapValidator').isValid()) {//获取验证结果,如果成功,执行下面代码
$.post(ext.contextPath + "/maintenance/updateDetail.do", $("#subForm").serialize(), function(data) {
var routeNum = $("#routeNum").val();
if (data.res == 1){
$.post(ext.contextPath + "/maintenance/doHandleAdjust.do", $("#subUnitForm").serialize()+"&routeNum="+routeNum, function(unitdata) {
if (unitdata.res == 1) {
closeModal('subModal')
$("#table").bootstrapTable('refresh');
}else if(unitdata.res == 0){
showAlert('d','保存失败');
}else{
showAlert('d',data.res);
}
},'json');
}else if(data.res == 0){
showAlert('d','保存失败');
}else{
showAlert('d',data.res);
}
},'json');
}
}, 100);
}
//选择设备根据厂区id和工艺段id选择厂内设备可多选
var showEquipment4SelectsFun = function(formId,hiddenId,textId) {
var equipmentIds=$('#'+hiddenId).val();
var pSectionId = $("#processSectionId").val();
var companyId= '${maintenanceDetail.company.id}';
if(null == companyId || ''==companyId || null == pSectionId || ''==pSectionId){
showAlert('d',"请先选择厂区和工艺段!");
return;
}
$.post(ext.contextPath + '/equipment/showEquipmentCardForAbnormitySelects.do', {formId:formId,hiddenId:hiddenId,textId:textId,companyId:companyId,equipmentIds:equipmentIds,pSectionId:pSectionId} , function(data) {
$("#equ4SelectDiv").html(data);
openModal("equipment4SelectModal");
});
};
//选择故障类型,可多选
var showProblemType4SelectsFun = function(formId,hiddenId,textId) {
var problemTypeIds=$('#'+hiddenId).val();
$.post(ext.contextPath + '/maintenance/faultLibrary/showFaultTypeForSelects.do', {formId:formId,hiddenId:hiddenId,textId:textId,problemTypeIds:problemTypeIds} , function(data) {
$("#problemTyp4SelectDiv").html(data);
openModal("problemTyp4SelectModal");
});
};
var addDetailFun = function() {
var allTableData = $("#table_outStockDetail").bootstrapTable('getData');
var OutStockRecordDetailIds="";
$.each(allTableData,function(index,item){
if(OutStockRecordDetailIds!=""){
OutStockRecordDetailIds+=",";
}
OutStockRecordDetailIds+=item.outstockRecordDetailId;
})
$.post(ext.contextPath + '/maintenance/WorkorderConsume/selectStockForOutStockDetails.do', {OutStockRecordDetailIds:OutStockRecordDetailIds},
function(data) {
$("#consume4SelectsDiv").html(data);
openModal('subPDetailModal');
});
};
var doFinishSelects = function(data) {
$.post(ext.contextPath + '/maintenance/WorkorderConsume/saveOutStockRecordDetails.do', {maintenanceDetailId:'${maintenanceDetail.id}',
OutStockRecordDetailIds:data} , function(data) {
if(data.res){
$("#table_outStockDetail").bootstrapTable('refresh');
}
},'json');
};
var deletesDetailFun = function() {
var checkedItems = $("#table_outStockDetail").bootstrapTable('getSelections');
var datas="";
$.each(checkedItems, function(index, item){
datas+=item.id+",";
});
if(datas==""){
showAlert('d','请先选择记录','alertDiv');
}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 + '/sparepart/outStockRecord/deletesOutStockRecordDetail.do', {ids:datas} , function(data) {
if(data>0){
$("#table_outStockDetail").bootstrapTable('refresh');
}else{
showAlert('d','删除失败','alertDiv');
}
});
}
});
}
};
//流程审核文件上传所需参数
var masterId_process = '${maintenanceDetail.id}';//业务Id
var tbName_process = 'TB_Process_UploadFile'; //数据表
var nameSpace_process ='ProcessUploadFile';//保存文件夹
var status = 'delete';//有删除权限
$(function(){
//初始化选择框方法在workflow.js里
processSelectNodeForHandle("${businessUnitHandle.taskid}");
//初始化隐藏
if("${maintenanceDetail.equipmentId}" == ""){
$("#selectEqu").hide();
}else{
$("#inputEqu").hide();
}
$("#subForm").bootstrapValidator({
live: 'disabled',//验证时机enabled是内容有变化就验证默认disabled和submitted是提交再验证
fields: {
problemcontent: {
validators: {
notEmpty: {
message: '保养内容不能为空'
}
}
},
}
});
$("#subUnitForm").bootstrapValidator({
live: 'disabled',//验证时机enabled是内容有变化就验证默认disabled和submitted是提交再验证
fields: {
targetUsersName: {
validators: {
notEmpty: {
message: '审核人不能为空'
}
}
},
}
});
$('#plannedenddt').datepicker({
language: 'zh-CN',
autoclose: true,
todayHighlight: true,
format:'yyyy-mm-dd',
}).on('hide',function(e) {
$('#subForm').data('bootstrapValidator')
.updateStatus('plannedenddt', 'NOT_VALIDATED',null)
.validateField('plannedenddt');
});
//选择工艺段
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:'${maintenanceDetail.company.id}'}, function(data) {
var selelct_ =$("#processSectionId").select2({
data: data,
placeholder:'请选择',//默认文字提示
allowClear: false,//允许清空
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('${maintenanceDetail.processSectionId}').trigger("change");
selelct_.on("change",function(){
$("#equipmentIds").val("");
$("#equipname").val("");
})
},'json');
//计划保养费用保留两位小数
$("#planMoney").val(parseFloat('${maintenanceDetail.planMoney}').toFixed(2))
getFileList();
getFileList_process();
$('#table_outStockDetail').bootstrapTable({ // 对应table标签的id
url: ext.contextPath + '/maintenance/WorkorderConsume/getOutStockDetailConsumeList.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,
maintenanceDetailId:'${maintenanceDetail.id}',
}
},
sortName: 'insdt', // 要排序的字段
sortOrder: 'desc', // 排序规则
columns: [
{
checkbox: true, // 显示一个勾选框
},{
field: 'goods.name', // 返回json数据中的name
title: '物品名称', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
},{
field: 'goods.model', // 返回json数据中的name
title: '规格型号', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
},{
field: 'goods.brand', // 返回json数据中的name
title: '品牌', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
},{
field: 'goods.unit', // 返回json数据中的name
title: '单位', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
},/* {
field: 'dept.name', // 返回json数据中的name
title: '领用部门', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, */{
field: 'consumeNumber', // 返回json数据中的name
title: '消耗数量', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
editable: { //编辑列元素
type: 'text',
title: '消耗数量',
validate: function (v) {
if (!v) return '数量不能为空';
}
}
}/*,{
field: 'price', // 返回json数据中的name
title: '单价/元', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
},{
field: 'totalMoney', // 返回json数据中的name
title: '合计/元', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
},*/
],
//保存列修改后的数据
onEditableSave: function (field, row, oldValue, $el) {
$.post(ext.contextPath + "/maintenance/WorkorderConsume/updateOutStockDetailConsume.do", {id:row.id,number:row.consumeNumber}, function(data) {
if (data.res == 1){
$("#table_outStockDetail").bootstrapTable('refresh');
}else if(data.res == 0){
showAlert('d','编辑失败');
}else{
showAlert('d',data.res);
$("#table_outStockDetail").bootstrapTable('refresh');
}
},'json');
},
onLoadSuccess: function(){ //加载成功时执行
adjustBootstrapTableView("table_outStockDetail");
},
onLoadError: function(){ //加载失败时执行
console.info("加载数据失败");
}
});
//显示流程详情
var id = '${maintenanceDetail.id}';
$.post(ext.contextPath + '/maintenance/showMaintenanceDetailView.do', {id:id,inModal:'inModal'} , function(data) {
$("#showView").html(data);
});
})
var showUser4SelectsFun = function() {
var userIds= $("#targetusers").val();
var jobIds= $("#targetjobs").val();
$.post(ext.contextPath + '/user/userForSelectByCompany.do', {formId:"subUnitForm",hiddenId:"targetusers",textId:"targetUsersName",userIds:userIds,jobIds:jobIds} , function(data) {
$("#user4SelectDiv").html(data);
openModal("user4SelectModal");
});
};
var inputEquFun = function(){
$("#selectEqu").hide();
$("#inputEqu").show();
$("#equipmentIds").val("");
$("#equipname").val("");
}
var selectEquFun = function(){
$("#selectEqu").show();
$("#inputEqu").hide();
$("#manualInputEquipment").val("");
}
</script>
<div class="modal fade" id="subModal">
<div class="modal-dialog modal-xlg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">${taskName}</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-7 col-xs-12">
<!-- 新增界面formid强制为subForm -->
<form class="form-horizontal" id="subForm" enctype="multipart/form-data" >
<!-- 界面提醒div强制id为alertDiv -->
<div id="alertDiv"></div>
<input type="hidden" class="form-control" id ="id" name ="id" value="${maintenanceDetail.id}">
<div class="form-group">
<label class="col-sm-2 control-label">所属公司</label>
<div class="col-sm-4">
<input name="companyid" id="companyid" type="hidden" value="${maintenanceDetail.company.id}"/>
<p class="form-control-static" >${maintenanceDetail.company.name}</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">工艺段</label>
<div class="col-sm-6">
<select id="processSectionId" name="processSectionId" class="form-control select2" style="width: 270px;" value="">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">*维修单号</label>
<div class="col-sm-6">
<p class="form-control-static" >${maintenanceDetail.detailNumber}</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">计划费用/元</label>
<div class="col-sm-4">
<input class="form-control" id="planMoney" name ="planMoney" type="number" value="${maintenanceDetail.planMoney}" min = "0" step= "50.01" placeholder="请输入">
</div>
<label class="col-sm-2 control-label">预计完成日期</label>
<div class="col-sm-4">
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control" id="plannedenddt" name="plannedenddt" style="width: 132px;" value="${maintenanceDetail.plannedenddt.substring(0,10)}">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否委外</label>
<div class="col-sm-4">
<select id="maintenanceWay" name="maintenanceWay" class="form-control select2">
<option value="in" <c:if test="${'in' == maintenanceDetail.maintenanceWay }">selected</c:if>>自修</option>
<option value="out" <c:if test="${'out' == maintenanceDetail.maintenanceWay }">selected</c:if>>委外</option>
</select>
</div>
<label class="col-sm-2 control-label">实际费用/元</label>
<div class="col-sm-4">
<input class="form-control" id="actualMoney" name ="actualMoney" type="number" value="${maintenanceDetail.actualMoney}" min = "0" step= "50.01" placeholder="请输入">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">*工时</label>
<div class="col-sm-4">
<input class="form-control" id="workinghours" name ="workinghours" type="number" value="${maintenanceDetail.workinghours}" min = "0" step= "0.01" placeholder="请输入">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">设备编号</label>
<div class="col-sm-10">
<input class="form-control" id="equipmentCardIds" name ="equipmentCardIds" value="${maintenanceDetail.equipmentCardIds}" readonly>
</div>
</div>
<div class="form-group" id = "selectEqu">
<label class="col-sm-2 control-label">*故障设备</label>
<div class="col-sm-8">
<input id="equipmentIds" name="equipmentId" type="hidden" value="${maintenanceDetail.equipmentId}" />
<input class="form-control" id="equipname" name ="equipname" value="${maintenanceDetail.equipmentNames}" onclick="showEquipment4SelectsFun('subForm','equipmentIds','equipname');" placeholder="请先选择厂区和工艺段">
</div>
<div class="col-sm-2" style="padding-left:0;">
<button type="button" class="btn btn-primary" onclick="inputEquFun()" >手输设备</button>
</div>
</div>
<div class="form-group" id = "inputEqu">
<label class="col-sm-2 control-label">*输入设备</label>
<div class="col-sm-8">
<input class="form-control" id="manualInputEquipment" name ="manualInputEquipment" value="${maintenanceDetail.manualInputEquipment}" placeholder="只有在选择界面中找不到的设备才可以手动输入...">
</div>
<div class="col-sm-2" style="padding-left:0;">
<button type="button" class="btn btn-primary" onclick="selectEquFun()" >选择设备</button>
</div>
</div>
<!-- <div class="form-group">
<label class="col-sm-2 control-label">故障类型</label>
<div class="col-sm-10">
<input id="problemtypeid" name="problemtypeid" type="hidden" value="${maintenanceDetail.problemtypeid}" />
<input class="form-control" id="problemname" name ="problemname" value="${maintenanceDetail.problemTypeNames}" onclick="showProblemType4SelectsFun('subForm','problemtypeid','problemname');" placeholder="请点击选择">
</div>
</div> -->
<div class="form-group">
<label class="col-sm-2 control-label">*故障描述</label>
<div class="col-sm-10">
<input id="libraryId" name="libraryId" type="hidden" value="" />
<textarea class="form-control " id="problemcontent" name="problemcontent" rows="2" ondblclick="showFaultLibrary('subForm','libraryId','problemcontent');" placeholder="双击可选择故障库">${maintenanceDetail.problemcontent}</textarea>
</div>
</div>
<!-- <div class="form-group">
<label class="col-sm-2 control-label">设备专责意见:</label>
<div class="col-sm-10">
<textarea class="form-control " id="equipmentOpinion" name="equipmentOpinion" rows="2" placeholder="设备专责意见...">${maintenanceDetail.equipmentOpinion}</textarea>
</div>
</div> -->
</form>
<!--维修审核退回后显示 -->
<form class="form-horizontal" id="subUnitForm" enctype="multipart/form-data" >
<input type="hidden" class="form-control" name ="id" value="${businessUnitHandle.id}">
<input type="hidden" class="form-control" name ="processid" value="${businessUnitHandle.processid}">
<input type="hidden" class="form-control" name ="taskid" value="${businessUnitHandle.taskid}">
<input type="hidden" class="form-control" name ="businessid" value="${businessUnitHandle.businessid}">
<input type="hidden" class="form-control" name ="taskdefinitionkey" value="${businessUnitHandle.taskdefinitionkey}">
<%-- <input type="hidden" class="form-control" id= "targetusers" name ="targetusers" value="${businessUnitHandle.targetusers}"> --%>
<input type="hidden" class="form-control" name ="unitid" value="${businessUnitHandle.unitid}">
<div class="form-group">
<label class="col-sm-2 control-label">处理内容:</label>
<div class="col-sm-10">
<textarea class="form-control " id="handledetail" name="handledetail" rows="2" placeholder="处理内容" >${businessUnitHandle.handledetail}</textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">*下一节点</label>
<div class="col-sm-6">
<select class="form-control select2" id="routeNum" name ="routeNum" style="width: 270px;">
</select>
</div>
</div>
<div id = "selectUsers" class="form-group">
<label class="col-sm-2 control-label">提交至:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="targetUsersName" name ="targetUsersName" placeholder="下一级人员" onclick="showUser4SelectsFun();" >
<input id="targetusers" name="targetusers" type="hidden" value="${businessUnitHandle.targetusers}"/>
<input class="form-control" id="targetjobs" name="targetjobs" type="hidden" value=""/>
</div>
</div>
<div class="form-group" style="margin:8px">
<button type="button" class="btn btn-default btn-file" onclick="fileinput()" id="btn_save"><i class="fa fa-paperclip"></i>上传图片</button>
</div>
<div class="form-group" style="margin:8px;">
<input type="file" name="maintenanceDetailFile" id="maintenanceDetailFile" multiple class="file-loading" />
</div>
<!-- 文件上传,显示 -->
<div class="form-group" style="margin:8px">
<!-- <label class="col-sm-2 control-label"></label> -->
<button type="button" class="btn btn-default btn-file" onclick="fileinput_process()" id="btn_save"><i class="fa fa-paperclip"></i>上传文件</button>
</div>
<div class="file-border" id="fileArea">
</div>
</form>
<div class="box box-primary" >
<div class="box-header with-border">
<h3 class="box-title">消耗物品</h3>
<div class="box-tools pull-right">
<a onclick="addDetailFun()" class="btn btn-box-tool" data-toggle="tooltip" title="新增"><i class="glyphicon glyphicon-plus"></i></a>
<!-- <a onclick="deletesDetailFun()" class="btn btn-box-tool" data-toggle="tooltip" title="删除"><i class="glyphicon glyphicon-minus"></i></a> -->
</div>
</div>
<!-- /.box-header -->
<div class="box-body ">
<table id="table_outStockDetail"></table>
</div>
</div>
</div>
<div class="col-md-5 col-xs-12" id="showView"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="doupdate()" id="btn_update">保存</button>
<button type="button" class="btn btn-primary" onclick="submitFun()" id="btn_submit">提交审核</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>