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

534 lines
24 KiB
Plaintext
Raw 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"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%request.setAttribute("Status_Submit_Problem",Maintenance.Status_Submit_Problem);%>
<%request.setAttribute("Status_Launch",Maintenance.Status_Launch);%>
<%request.setAttribute("Status_Cancel",Maintenance.Status_Cancel);%>
<style type="text/css">
.select2-container .select2-selection--single{
height:34px;
line-height: 34px;
}
.select2-selection__arrow{
margin-top:3px;
}
</style>
<!-- 语音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>
<script type="text/javascript">
function dosubmit() {
$('#status').val('${Status_Submit_Problem}')
$('#cancelreason').val('');//清空驳回原因
$("#subForm").bootstrapValidator('validate');//提交验证
if ($("#subForm").data('bootstrapValidator').isValid()) {//获取验证结果,如果成功,执行下面代码
$.post(ext.contextPath + "/maintenance/doCheckCancel.do", $("#subForm").serialize(), function(data) {
if (data.res == true) {
$.post(ext.contextPath + "/maintenance/update.do", $("#subForm").serialize(), function(data) {
if (data.res == 1) {
$(".modal").modal("hide");
$("#table").bootstrapTable('refresh');
}else if(data.res == 0){
showAlert('d','保存失败');
}else{
showAlert('d',data.res);
}
},'json');
}else if(data.res == false){
showAlert('d','检测到当前任务单已选择运维商发布过,若想发布给其它运维商,请先作废此运维单!');
}else{
showAlert('d',data.res);
}
},'json');
}
}
$("#subForm").bootstrapValidator({
live: 'disabled',//验证时机enabled是内容有变化就验证默认disabled和submitted是提交再验证
fields: {
maintainertypeid: {
validators: {
notEmpty: {
message: '未选择发布类型'
}
}
},
maintainerid: {
validators: {
notEmpty: {
message: '未选择运维商'
}
}
},
}
});
function doupdate() {
$('#status').val('${Status_Launch}')
$("#subForm").bootstrapValidator('validate');//提交验证
if ($("#subForm").data('bootstrapValidator').isValid()) {//获取验证结果,如果成功,执行下面代码
$.post(ext.contextPath + "/maintenance/doCheckCancel.do", $("#subForm").serialize(), function(data) {
if (data.res == true) {
$.post(ext.contextPath + "/maintenance/updateData.do", $("#subForm").serialize(), function(data) {
if (data.res == 1) {
$(".modal").modal("hide");
$("#table").bootstrapTable('refresh');
}else if(data.res == 0){
showAlert('d','保存失败');
}else{
showAlert('d',data.res);
}
},'json');
}else if(data.res == false){
showAlert('d','检测到当前任务单已选择运维商发布过,若想发布给其它运维商,请先作废此运维单!');
}else{
showAlert('d',data.res);
}
},'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');
});
};
var masterId=$('#maintenanceId').val();
var tbName='tb_maintenance_problem_fille'; //数据表
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:''
},
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)
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>'+
'<button class="btn btn-danger btn-sm" onclick="deleteFIleInput(\''+id+'\')" type="button"><i class="fa fa-remove "></i></button>'+
'</div>'+
'</div>');
}else{
var previewConfig = new Object();
previews.push(path);
previewConfig['width']= '50px';
previewConfig['caption']= data[i].filename;
previewConfig['key']= data[i].id;
previewConfigs.push(previewConfig);
}
}
if(previews.length>0){
$('#maintenancefile').show();
showFileInput("maintenancefile");
}else{
$('#maintenancefile').hide();
}
},'json');
};
var deleteFIleInput = 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-danger btn-sm",
closeModal: true
}
}
})
.then(function(willDelete) {
if (willDelete) {
$.post(ext.contextPath + '/base/deleteInputFile.do', {tbName:tbName,key:id} , function(data) {
if(data.suc==false){
showAlert('d','删除失败,请重试!');
}else{
showAlert('s','删除成功!');
$("div#"+id).remove();
}
},'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(){
});
}
};
function recstart(){
if(rec){
$('.recpower').show();
$('#btn_record_stop').show();
$('#btn_record_start').hide();
rec.start();
};
};
var recblob={};
var filelist={};
function recstop(){
if(rec){
var t1=Date.now();
$('.recpower').hide();
$('#btn_record_stop').hide();
$('#btn_record_start').show();
rec.stop(function(blob,time){
var fd = new FormData();
fd.append('masterId', masterId);
fd.append('tbName', tbName);
fd.append('nameSpace', nameSpace);
fd.append('filelist', blob);
$.ajax({
type: 'POST',
url: ext.contextPath + "/base/inputFile.do",
data: fd,
processData: false, // 不会将 data 参数序列化字符串
contentType: false, // 根据表单 input 提交的数据使用其默认的 contentType
xhr: function() {
var xhr = new window.XMLHttpRequest();
/* xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
console.log('进度', percentComplete);
}
}, false); */
return xhr;
}
}).success(function (resp) { // 拿到提交的结果
var res = JSON.parse(resp);
if(res.suc==true){
var id=res.msg;
recblob[id]={blob:blob,rec:rec};
var now=moment().format('YYYY-MM-DD HH:mm');
reclog('<div class="form-group" id='+id+'> '+now+'录制 '+
'<div class="btn-group">'+
'<button class="btn btn-primary btn-sm" onclick="recplay(\''+id+'\')" type="button"><i class="fa fa-play "></i></button>'+
'<button class="btn btn-danger btn-sm" onclick="deleteFIleInput(\''+id+'\')" type="button"><i class="fa fa-remove "></i></button>'+
'</div>'+
'</div>');
}
}).error(function (err) {
console.error(err);
});
},function(e){
showAlert('d',"失败:"+e);
});
};
};
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 doCancelFun = function(id) {
swal({
title: "作废维护单!",
text: "请填写作废原因。",
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
}
},
content: {
element: "input",
attributes: {
placeholder: "驳回理由...",
},
},
})
.then((value) => {
if(value){
$.post(ext.contextPath + "/maintenance/updateStatus.do", {id:id,status:'${Status_Cancel}',cancelreason:value}, function(data) {
if (data.res == 1) {
$(".modal").modal("hide");
$("#table").bootstrapTable('refresh');
}else if(data.res == 0){
showAlert('d','作废失败');
}else{
showAlert('d',data.res);
}
},'json');
}
});;
};
$(function() {
//modal关闭时关闭录音功能
$('#subModal').on("hidden.bs.modal", function() {
recclose();
$(this).removeData("bs.modal");
//modal重复打开会导致前面的滚动条失去作用
$('.modal').css("overflow","auto");
});
$.post(ext.contextPath + "/user/getBizsByUserId4Select.do", {}, function(data) {
var selelct =$("#companyid").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('${maintenance.companyid}').trigger("change");
},'json');
$.post(ext.contextPath + "/maintenance/maintainerType/geList4Select.do", {}, function(data) {
var selelct =$("#maintainertypeid").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.on("change",function(e){
var type= $(this).val();
var unitId='${maintenance.companyid}';
$.post(ext.contextPath + "/maintenance/maintainer/getManageList4Select.do", {type:type,unitId:unitId}, function(data) {
$("#maintainerid").empty();
var selelct_ =$("#maintainerid").select2({
data: data,
cache : false,
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;} // 函数用于呈现当前的选择
});
if(${maintenance.maintainerid==null}){
if(data.length>0){
selelct_.val(data[0].id).trigger("change");
}
}else{
selelct_.val('${maintenance.maintainerid}').trigger("change");
}
},'json');
});
selelct.val('${maintenance.maintainertypeid}').trigger("change");
},'json');
recopen();
getFileList();
})
</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">
<!-- 新增界面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" value="${maintenance.status}">
<input type="hidden" class="form-control" id ="cancelreason" name ="cancelreason" value="${maintenance.cancelreason}">
<div class="form-group " >
<label class="control-label col-sm-2">*发布类型</label>
<div class="col-sm-10">
<select class="form-control select2" id="maintainertypeid" name ="maintainertypeid" style="width: 220px;"></select>
</div>
</div>
<div class="form-group " >
<label class="control-label col-sm-2">*运维商</label>
<div class="col-sm-10">
<select class="form-control select2" id="maintainerid" name ="maintainerid" style="width: 220px;"></select>
</div>
</div>
<div class="form-group " >
<label class="control-label col-sm-2">选择厂区</label>
<div class="col-sm-10">
<select class="form-control select2" id="companyid" name ="companyid" style="width: 220px;" disabled="disabled"></select>
</div>
</div>
<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="问题描述..." >${maintenance.problem}</textarea>
</div>
</div>
<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>
<div class="form-group" style="margin:8px">
<button type="button" class="btn btn-default btn-file btn-sm" onclick="fileinput()" id="btn_save"><i class="fa fa-paperclip"></i> 上传图片</button>
<button type="button" class="btn btn-default btn-file btn-sm" onclick="recstart();" id="btn_record_start"><i class="fa fa-microphone"></i> 录音</button>
<button type="button" class="btn btn-default btn-file btn-sm" onclick="recstop();" id="btn_record_stop" style="display:none;"><i class="fa fa-stop"></i> 停止</button>
</div>
<div class="form-group" style="margin:8px;">
<div class="recpower" style="display:none;" ><!-- style="display:none;" -->
<div style="height:40px;width:300px;background:#999;position:relative;">
<div class="recpowerx" style="height:40px;background:#0B1;position:absolute;"></div>
<div class="recpowert" style="padding-left:50px; line-height:40px; position: relative;"></div>
</div>
</div>
<div class="reclog form-group" style="margin-left:14px;margin-top:7px;"></div>
<audio class="recPlay"></audio>
</div>
<div class="form-group" style="margin:8px;">
<input type="file" name="maintenancefile" id="maintenancefile" multiple class="file-loading" />
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-danger" onclick="doCancelFun('${maintenance.id}')" >作废</button>
<button type="button" class="btn btn-primary" onclick="doupdate()" >保存</button>
<button type="button" class="btn btn-primary" onclick="dosubmit()" >发布</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>