Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/maintenance/maintenanceView.jsp
2026-01-16 14:13:44 +08:00

523 lines
25 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ page language="java" pageEncoding="UTF-8"%>
<%@page import="com.sipai.entity.maintenance.Maintenance"%>
<%@page import="com.sipai.entity.maintenance.MaintenanceDetail"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%request.setAttribute("Status_Finish",Maintenance.Status_Finish);%>
<!-- 补录状态 -->
<%request.setAttribute("TYPE_SUPPLEMENT",Maintenance.TYPE_SUPPLEMENT);%>
<!-- 运维主流程状态 -->
<%request.setAttribute("TYPE_MAINTENANCE",Maintenance.TYPE_MAINTENANCE);%>
<%request.setAttribute("Status_Detail_Start",MaintenanceDetail.Status_Start);%>
<%request.setAttribute("Status_Detail_Finish",MaintenanceDetail.Status_Finish);%>
<!-- bootstrap-star-rating -->
<link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/bootstrap-star-rating/css/star-rating.min.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-star-rating/js/star-rating.min.js" charset="utf-8"></script>
<!-- 语音js -->
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/recorder/recorder.js" charset="utf-8"></script>
<!-- 时间js -->
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/moment.min.js" charset="utf-8"></script>
<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=$('#maintenanceId').val();
var tbName_problem='tb_maintenance_problem_fille'; //数据表
var tbName_maintenance='tb_maintenance_file'; //数据表
var nameSpace='MaintenanceProblem';//保存文件夹
var previews = new Array();
var previewConfigs = new Array();
/* var student = {
"caption":"lilei",
}
previewConfigs[0]=student; */
//初始化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:'',
actionDelete:''
},
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_problem} , function(data) {
//console.info(data)
previews=new Array();
for(var i=0;i<data.length;i++){
var path = data[i].abspath;
path=path.substring(path.indexOf('webapps')+7,path.length);
path =ext.basePath.replace(ext.contextPath,'')+ path.replace(/\\/g,"\/");;
if(data[i].type.indexOf("audio")!=-1){
var id=data[i].id;
var blob=path;
//console.info(blob)
if($("#"+id).length>0){
continue;
}
recblob[id]={blob:blob,rec:rec};
reclog('<div class="form-group" id='+id+'> '+data[i].insdt.substring(0,16)+'录制 '+
'<div class="btn-group">'+
'<button class="btn btn-primary btn-sm" onclick="recplay(\''+id+'\')" type="button"><i class="fa fa-play " ></i></button>'+
'</div>'+
'</div>');
}else{
var previewConfig = new Object();
previews.push(path);
previewConfig['width']= '80px';
previewConfig['caption']= data[i].filename;
previewConfig['key']= data[i].id;
previewConfigs.push(previewConfig);
}
}
if(previews.length>0){
$('#problemfile').show();
showFileInput("problemfile");
}else{
$('#problemfile').hide();
}
},'json');
$.post(ext.contextPath + '/base/getInputFileList.do', {masterId:masterId,tbName:tbName_maintenance} , 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']= '80px';
previewConfig['caption']= data[i].filename;
previewConfig['key']= data[i].id;
previewConfigs.push(previewConfig);
}
showFileInput("maintenancefile");
}else{
$('#maintenancefile').hide();
$('#label_maintenancefile').hide();
}
},'json');
};
var rec
function reclog(s){
$(".reclog").prepend(s);
};
function recopen(){
var bit=16;//比特率
rec=Recorder({bitRate:bit,onProcess:function(a,level,time){
$(".recpowerx").css("width",level+"%");
$(".recpowert").html(time+"/"+level);
}});
rec.open(function(){
},function(e){
$('#btn_record_start').hide();
});
};
function recclose(){
if(rec){
rec.close(function(){
});
}
};
var recblob={};
var filelist={};
function recplay(key){
var o=recblob[key];
if(o){
var audio=$(".recPlay")[0];
if(!(audio.ended || audio.paused)){
audio.pause();
};
//blob类型或者网络图片路径类型
if(typeof o.blob =="string"){
audio.src=o.blob;
}else{
audio.src=URL.createObjectURL(o.blob);
}
audio.play();
};
};
var viewDetailFun = function(id) {
$.post(ext.contextPath + '/maintenance/showMaintenanceDetailViewOnlyHandleRecords.do', {id:id} , function(data) {
$("#maintenanceDetailDiv").html(data);
openModal('maintenanceDetailModal');
});
};
var exportPDF= function() {
$.post(ext.contextPath + '/maintenance/getMaintenancePDFTempletHTML.do', {maintenanceId:'${maintenance.id}'}, function(data) {
doExportPDF(data);
});
}
$(function() {
getFileList();
$("#judgemaintainer").rating('refresh',{showClear:false,showCaption:false,readonly:true});
$("#judgemaintainerstaff").rating('refresh',{showClear:false,showCaption:false,readonly:true});
$("#judgeresult").rating('refresh',{showClear:false,showCaption:false,readonly:true});
$("#table_detail").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: 50, // 页面数据条数
pageNumber: 1, // 首页页码
sidePagination: 'server', // 设置为服务器端分页
paginationDetailHAlign:"right",
queryParams: function (params) { // 请求服务器数据时发送的参数可以在这里添加额外的查询参数返回false则终止请求
return {
rows: params.limit, // 每页要显示的数据条数
page: params.offset/params.limit+1, // 每页显示数据的开始页码
sort: params.sort, // 要排序的字段
order: params.order,
search_pid: '${maintenance.id}'
}
},
sortName: 'id', // 要排序的字段
sortOrder: 'desc', // 排序规则
columns: [
{
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 '${TYPE_MAINTENANCE}':
return '运维';
case '${TYPE_SUPPLEMENT}':
return '补录';
default:
return '';
}
}
},{
field: 'status', // 返回json数据中的name
title: '问题状态', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
formatter:function(value,row,index){
switch (value) {
case '${Status_Detail_Start}':
return '已下发';
case '${Status_Detail_Finish}':
return '已完成';
default:
return value;
}
}
},{
title: "操作",
align: 'center',
valign: 'middle',
width: 60, // 定义列的宽度单位为像素px
formatter: function (value, row, index) {
var str="";
str+='<button type ="button" class="btn btn-default btn-sm" onclick="viewDetailFun(\'' + row.id + '\')" data-toggle="tooltip" title="编辑"><i class="fa fa-eye "></i><span class="hidden-md hidden-lg"> 查看详情</span></button>'
str='<div class="btn-group" >'+str+'</div>';
return str;
}
}
],
onLoadSuccess: function(){ //加载成功时执行
adjustBootstrapTableView("table_detail");
},
onLoadError: function(){ //加载失败时执行
console.info("加载数据失败");
}
})
})
</script>
<div class="modal fade" id="subModal">
<div class="modal-dialog">
<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">问题详情</h4>
</div>
<div class="modal-body">
<div class="nav-tabs-custom">
<!-- Tabs within a box -->
<ul class="nav nav-tabs pull-right">
<li class="active"><a href="#tab_detail" data-toggle="tab">详细</a></li>
<c:if test="${maintenance.type == TYPE_MAINTENANCE}">
<li><a href="#tab_record" data-toggle="tab">记录</a></li>
</c:if>
</ul>
<div class="tab-content ">
<!-- Morris chart - Sales -->
<div class="chart tab-pane active" id="tab_detail" style="position: relative; ">
<!-- 新增界面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 ="maintenanceId" name ="id" value="${maintenance.id}">
<input type="hidden" class="form-control" id ="status" name ="status" >
<div class="form-group " >
<label class="control-label col-sm-2">问题厂区</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="company" name ="company" placeholder="问题厂区" value='${maintenance.company.name}' disabled="disabled" style="width: 220px;"/>
</div>
</div>
<!-- 运维单显示 -->
<c:if test="${maintenance.type == TYPE_MAINTENANCE}">
<div class="form-group">
<label class="col-sm-2 control-label">问题描述</label>
<div class="col-sm-10">
<textarea class="form-control" rows="3" id="problem" name ="problem" placeholder="问题描述..." disabled="disabled">${maintenance.problem}</textarea>
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.cancelreason}'>
<div class="form-group">
<label class="col-sm-2 control-label">退回/作废原因</label>
<div class="col-sm-10">
<textarea class="form-control" rows="3" id="cancelreason" name ="cancelreason" placeholder="驳回理由..." disabled="disabled">${maintenance.cancelreason}</textarea>
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.maintainertypeid}'>
<div class="form-group " >
<label class="control-label col-sm-2">发布类型</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="maintainertypeid" name ="maintainertypeid" style="width: 220px;" disabled="disabled" value='${maintainerType.name}'/>
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.maintainerid}'>
<div class="form-group " >
<label class="control-label col-sm-2">运维商</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="maintainerid" name ="maintainerid" style="width: 220px;" disabled="disabled" value='${maintainer.shortName}'/>
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.maintenancemethod}'>
<div class="form-group " >
<label class="control-label col-sm-2">维护方式</label>
<div class="col-sm-10">
<input class="form-control " id="maintenancemethod" name ="maintenancemethod" value='${maintenance.maintenancemethod}' style="width: 220px;" disabled="disabled">
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.maintenancedt}'>
<div class="form-group " >
<label class="control-label col-sm-2">计划维护日期</label>
<div class="col-sm-10">
<div class="input-group date">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control" id="maintenancedt" name="maintenancedt" value='${maintenance.maintenancedt.substring(0, 10)}' disabled="disabled" style="width: 182px;">
</div>
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.result}'>
<div class="form-group">
<label class="col-sm-2 control-label">完成描述</label>
<div class="col-sm-10">
<textarea class="form-control" rows="2" placeholder="" disabled="disabled">${maintenance.result}</textarea>
</div>
</div>
</c:if>
<c:if test="${maintenance.type == TYPE_MAINTENANCE}">
<table id="table_detail"></table>
</c:if>
<c:if test='${not empty maintenance.remark}'>
<div class="form-group">
<label class="col-sm-2 control-label">完成评价</label>
<div class="col-sm-10">
<textarea class="form-control" rows="2" id="remark" name ="remark" placeholder="" disabled="disabled">${maintenance.remark}</textarea>
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.contractno}'>
<div class="form-group">
<label class="col-sm-2 control-label">合同号</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="contractno" name ="contractno" placeholder="合同号" value='${maintenance.contractno}' disabled="disabled"></input>
</div>
</div>
</c:if>
<c:if test='${not empty equipmentName}'>
<div class="form-group">
<label class="col-sm-2 control-label">相关设备</label>
<div class="col-sm-10">
<textarea class="form-control" rows="2" id="equipmentName" name ="equipmentName" placeholder="相关设备..." disabled="disabled">${equipmentName}</textarea>
</div>
</div>
</c:if>
<c:if test='${not empty maintenance.judgemaintainer}'>
<div class="form-group" >
<label class="col-sm-4 control-label">对运维商服务评价:</label>
<div class="col-sm-8">
<input id="judgemaintainer" name='judgemaintainer' type="number" class="rating" min=0 max=5 step=0.5 data-size="xs" value='${maintenance.judgemaintainer}'>
</div>
</div>
<div class="form-group" >
<label class="col-sm-4 control-label">对运维人员服务评价:</label>
<div class="col-sm-8">
<input id="judgemaintainerstaff" name='judgemaintainerstaff' type="number" class="rating" min=0 max=5 step=0.5 data-size="xs" value='${maintenance.judgemaintainerstaff}'>
</div>
</div>
<div class="form-group" >
<label class="col-sm-4 control-label">对运维结果评价:</label>
<div class="col-sm-8">
<input id="judgeresult" name='judgeresult' type="number" class="rating" min=0 max=5 step=0.5 data-size="xs" value='${maintenance.judgeresult}'>
</div>
</div>
</c:if>
<div class="form-group" style="margin:8px;">
<label class=" control-label">问题录音</label>
<div class="">
<div class="reclog form-group" style="margin-left:14px;margin-top:7px;"></div>
<audio class="recPlay"></audio>
</div>
</div>
<div class="form-group" style="margin:8px;">
<label class=" control-label">问题图片</label>
<div class="">
<input type="file" name="problemfile" id="problemfile" multiple class="file-loading" />
</div>
</div>
<div class="form-group" style="margin:8px;">
<label class="control-label" id='label_maintenancefile'>维护认证</label>
<div class="">
<input type="file" name="maintenancefile" id="maintenancefile" multiple class="file-loading" />
</div>
</div>
</form>
</div>
<div class="chart tab-pane" id="tab_record" style="position: relative;">
<div class="row">
<div class="col-md-12">
<!-- The time line -->
<ul class="timeline">
<c:forEach items="${maintenanceRecords}" var="item" varStatus="status">
<li>
<c:choose>
<c:when test='${maintenance.status==Status_Finish && status.last}'>
<i class="fa fa-check bg-blue"></i>
</c:when>
<c:otherwise >
<i class="fa fa-clock-o bg-grey"></i>
</c:otherwise>
</c:choose>
<div class="timeline-item">
<span class="time"><i class="fa fa-clock-o"></i> ${item.insdt.substring(0,16)}</span>
<h3 class="timeline-header"><a >${item.unit.name}</a> ${item.user.caption}(${item.user.mobile})</h3>
<div class="timeline-body">
${item.record}
</div>
</div>
</li>
</c:forEach>
<!-- timeline time label -->
<!-- <li class="time-label">
<span class="bg-red">
10 Feb. 2014
</span>
</li> -->
<!-- /.timeline-label -->
<!-- timeline item -->
</ul>
</div>
<!-- /.col -->
</div>
<!-- END timeline item -->
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<c:if test="${maintenance.status==Status_Finish }">
<button type="button" class="btn btn-primary" data-dismiss="modal" onclick="exportPDF()"><i class="fa fa-download"></i> 导出PDF</button>
</c:if>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>