Bez popisu

dealMaintainOrder.js 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. /**
  2. * 处理保养工单
  3. * */
  4. var maintainpiclist = []; //保存附件的数组
  5. var limitNum = 6; //限制数量
  6. var uploader; //上传实例
  7. $(function() {
  8. autosize($('textarea'));
  9. var pro_Id = helper.request.queryString("edit_id");
  10. //本次保养时间
  11. if(pro_Id) {
  12. getProjectDetail(pro_Id);
  13. //保养类别
  14. helper.getDropList.getlistDropCheckboxByDic($('#maintaintype'), 'BYLB');
  15. uploaderImages(); //附件上传
  16. $('#pro_save').on('click', saveProject);
  17. }
  18. $('#equipstate').find('input[type="radio"]').on('change', function() {
  19. if($(this).val() === '0') {
  20. $('#checkcontents').show();
  21. } else {
  22. $('#checkcontents').hide();
  23. }
  24. });
  25. });
  26. //获取详情
  27. function getProjectDetail(ids) {
  28. $.getJSON(huayi.config.callcenter_url + "equipmentapi/api/womaintainbase/getsingle", {
  29. id: ids,
  30. }, function(data) {
  31. if(data.state == "success") {
  32. var res = data.data;
  33. $('#lastmaintaintime').text(formatterMaintainTime(res.lastmaintaintime));//上次保养时间
  34. //上次保养结果 0正常 1异常
  35. if(res.lastmaintainresult === 0) {
  36. $('#lastmaintainresult').text('正常');
  37. $('#lastmaintainresult').addClass('state_audit state_audit_done');
  38. } else if(res.lastmaintainresult === 1) {
  39. $('#lastmaintainresult').text('异常');
  40. $('#lastmaintainresult').addClass('state_audit state_audit_refuse');
  41. } else {
  42. $('#lastmaintainresult').text('——');
  43. }
  44. //上次保养类别
  45. if(res.lastmaintaintype){
  46. res.lastmaintaintype = res.lastmaintaintype.length == 0 ? '无' : res.lastmaintaintype.join(',');
  47. $('#lastmaintaintype').text(res.lastmaintaintype);
  48. }else{
  49. $('#lastmaintaintype').text('无');
  50. }
  51. //本次保养类别
  52. if(res.timemaintaintype){
  53. res.timemaintaintype = res.timemaintaintype.length == 0 ? '无' : res.timemaintaintype.join(',');
  54. $('#timemaintaintype').text(res.timemaintaintype);
  55. }else{
  56. $('#timemaintaintype').text('无');
  57. }
  58. //本次保养内容
  59. $('#maintaincontent').html(helper.filter.content(res.maintaincontent)); //本次保养内容
  60. //自定义字段
  61. if(res.extensionlist && res.extensionlist.length > 0) {
  62. $('#customLists').show();
  63. var shtml = '';
  64. for(var i = 0, len = res.extensionlist.length; i < len; i++) {
  65. if(res.systemid && res.systemid === '5ab3773e157ac914fb139fbb'){//日常类
  66. shtml = '<li class="form-group custom_item_radio">'+
  67. '<label for="fieldOptionValue_' + i + '" class="col-md-12"><b class="text_require">*</b><span id="fieldname_'+ i +'">' + res.extensionlist[i].name + '</span></label>'+
  68. '<div class="col-md-12" id="fieldOptionValue_' + i + '">'+
  69. '<label class="radio-inline">'+
  70. '<input type="radio" name="fieldvalueOptions_'+ i +'" value="正常" checked="checked"> 正常'+
  71. '</label>'+
  72. '<label class="radio-inline">'+
  73. '<input type="radio" name="fieldvalueOptions_'+ i +'" value="异常"> 异常'+
  74. '</label>'+
  75. '</div>'+
  76. '</li>';
  77. }else{
  78. shtml = '<li class="form-group custom_item_input">'+
  79. '<label for="fieldvalue_' + i + '" class="col-md-12 deal_label"><span id="fieldname_'+ i +'">' + res.extensionlist[i].name + '</span></label>'+
  80. '<div class="col-md-12">'+
  81. '<input value="'+ (res.extensionlist[i].value === null ? '' : res.extensionlist[i].value) +'" id="fieldvalue_' + i + '" class="form-control" type="text" placeholder="请输入' + res.extensionlist[i].name + '的值" />'+
  82. '</div>'+
  83. '</li>';
  84. }
  85. $('#customLists').append(shtml);
  86. }
  87. }
  88. }
  89. });
  90. }
  91. //保存
  92. function saveProject() {
  93. var pro_Id = helper.request.queryString("edit_id");
  94. //获取保养类别
  95. var maintaintypes = getCheckboxData($('#maintaintype'));
  96. // if(!regexs.proTitle.test($.trim($('#maintaintime').val()))) {
  97. // if(!$.trim($('#maintaincontent').val())) {
  98. // layer.confirm('本次保养内容不能为空!', {
  99. // icon: 2,
  100. // btn: ['确定'] //按钮
  101. // });
  102. // return;
  103. // }
  104. if(maintaintypes.length == 0) {
  105. layer.confirm('保养类别不能为空!', {
  106. icon: 2,
  107. btn: ['确定'] //按钮
  108. });
  109. return;
  110. }
  111. if(!$.trim($('#replacedes').val())) {
  112. layer.confirm('更换说明内容不能为空!', {
  113. icon: 2,
  114. btn: ['确定'] //按钮
  115. });
  116. return;
  117. }
  118. if($('#equipstate').find('input[type="radio"]:checked').val() === '0') {
  119. if(!$.trim($('#exceptiondes').val())) {
  120. layer.confirm('异常说明不能为空!', {
  121. icon: 2,
  122. btn: ['确定'] //按钮
  123. });
  124. return;
  125. }
  126. } else {
  127. $('#exceptiondes').val('');
  128. }
  129. if(maintainpiclist.length <= 0) {
  130. layer.confirm('保养图片不能为空!', {
  131. icon: 2,
  132. btn: ['确定'] //按钮
  133. });
  134. return;
  135. }
  136. $.post(huayi.config.callcenter_url + "equipmentapi/api/womaintainbase/deal", {
  137. id: pro_Id, //
  138. //maintaintime: $('#maintaintime').val(), //datetime 本次保养时间
  139. //maintaincontent: $('#maintaincontent').val(), //string 本次保养内容
  140. //maintainunit: $('#maintainunit').val(), //string 保养单位
  141. //maintainman: $('#maintainman').val(), //string 保养人
  142. extensionlist: getFields(), //自定义字段的数组[{“name”:”字段名”,”value”:”字段值”}]
  143. maintaintype: maintaintypes, //List 保养类别
  144. replacedes: $('#replacedes').val(), //string 更换说明
  145. maintainpic: maintainpiclist, //list 保养图片
  146. equipstate: $('#equipstate').find('input[type="radio"]:checked').val(), //int 设备状态 0正常,1异常
  147. exceptiondes: $('#exceptiondes').val(), // string 异常说明
  148. wostate: 3, //int 工单状态:3已处理,6挂起,
  149. }, function(data) {
  150. data = JSON.parse(data);
  151. if(data.state == "success") {
  152. var index = parent.layer.getFrameIndex(window.name);
  153. parent.layer.close(index);
  154. parent.$('#table_all').bootstrapTable('refresh');
  155. parent.layer.msg("保存成功");
  156. }
  157. });
  158. }
  159. //上传图片
  160. function uploaderImages() {
  161. if(uploader) {
  162. uploader.destroy();
  163. }
  164. uploader = WebUploader.create({
  165. auto: true, // 选完文件后,是否自动上传
  166. swf: '../plugins/webuploader/Uploader.swf', // swf文件路径
  167. server: huayi.config.callcenter_url + "fileserverapi/Api/Upload", // 文件接收服务端
  168. pick: '#imgPicker', // 选择文件的按钮。可选
  169. formData: {
  170. uploadtype: 'dealRunOrder'
  171. },
  172. // 只允许选择图片文件。
  173. accept: {
  174. title: 'Images',
  175. extensions: 'gif,jpg,jpeg,bmp,png',
  176. mimeTypes: 'image/*'
  177. },
  178. compress: false, //webuploader默认压缩图片,设置compress:false,可以按照原始比例上传图片
  179. //fileVal: "upFile",//设置文件上传域的name。
  180. threads: limitNum, //上传并发数。允许同时最大上传进程数,为了保证文件上传顺序
  181. fileNumLimit: limitNum,
  182. fileSizeLimit: 30 * 1024 * 1024, // 30 M
  183. fileSingleSizeLimit: 5 * 1024 * 1024 // 5 M
  184. });
  185. uploader.on('fileQueued', function(file) {
  186. var $list = $("#fileList"),
  187. $li = $(
  188. '<li id="' + file.id + '"><span class="img_mask"><i class="img_del"></i></span>' +
  189. '<img/>' +
  190. '<span class="img_state"><i></i></span>' +
  191. '<span class="file_name">' + file.name + '</span>' +
  192. '</li>'
  193. ),
  194. $img = $li.find('img');
  195. // $list为容器jQuery实例
  196. $list.append($li);
  197. // 创建缩略图
  198. uploader.makeThumb(file, function(error, src) {
  199. if(error) {
  200. $img.replaceWith('<div class="noThumb"><i class="glyphicon glyphicon-paperclip"></i><p>无法预览</p></div>');
  201. return;
  202. }
  203. $img.attr('src', src);
  204. }, 109, 109); //109*109为缩略图尺寸
  205. //绑定删除
  206. $('#' + file.id).on('click', '.img_del', function() {
  207. uploader.removeFile(file);
  208. var $fileLi = $('#' + file.id);
  209. $fileLi.off().find('.img_del').off().end().remove();
  210. var itemFileName = $(this).parent().parent().find('.file_name').text();
  211. $.each(maintainpiclist, function(i, v) {
  212. if(v && v.filename == itemFileName) {
  213. maintainpiclist.splice(i, 1);
  214. }
  215. });
  216. $('#fileNum').text(maintainpiclist.length);
  217. });
  218. });
  219. // 文件上传过程中创建进度条实时显示。
  220. uploader.on('uploadProgress', function(file, percentage) {
  221. var $li = $('#' + file.id),
  222. $percent = $li.find('.progress span');
  223. // 避免重复创建
  224. if(!$percent.length) {
  225. $percent = $('<div class="progress" style="">' +
  226. '<span class="text">0%</span>' +
  227. '<span class="percentage"></span>' +
  228. '</div>')
  229. .appendTo($li)
  230. .find('span');
  231. }
  232. $percent.eq(0).text(Math.round(percentage * 100) + '%');
  233. $percent.eq(1).css('width', Math.round(percentage * 100) + '%');
  234. });
  235. // 文件上传成功,给item添加成功class, 用样式标记上传成功。
  236. uploader.on('uploadSuccess', function(file, res) {
  237. maintainpiclist.push(res.data[0]);
  238. $('#fileNum').text(maintainpiclist.length);
  239. $('#' + file.id).addClass('upload-state-done');
  240. });
  241. // 文件上传失败,显示上传出错。
  242. uploader.on('uploadError', function(file) {
  243. var $li = $('#' + file.id),
  244. $error = $li.find('div.error');
  245. // 避免重复创建
  246. if(!$error.length) {
  247. $error = $('<div class="error"></div>').appendTo($li);
  248. }
  249. $error.text('上传失败');
  250. });
  251. // 完成上传完了,成功或者失败,先删除进度条。
  252. uploader.on('uploadComplete', function(file) {
  253. $('#' + file.id).find('.progress').remove();
  254. });
  255. uploader.onError = function(code) {
  256. //console.log('Error:' + code);
  257. switch(code) {
  258. case "Q_EXCEED_NUM_LIMIT":
  259. layer.msg('只能上传六张图片。');
  260. break;
  261. case "Q_TYPE_DENIED":
  262. layer.msg('图片类型不正确。');
  263. break;
  264. case "F_DUPLICATE":
  265. layer.msg('该文件已上传,请选择其它文件。');
  266. break;
  267. default:
  268. break;
  269. }
  270. };
  271. }
  272. //获取自定义字段的值
  273. function getFields() {
  274. var extensionlist = []; //自定义字段的数组[{“name”:”字段名”,”value”:”字段值”}]
  275. var custom_items_input = $('#customLists').find('.custom_item_input');
  276. var custom_items_radio = $('#customLists').find('.custom_item_radio');
  277. if(custom_items_input.length > 0){
  278. $.each(custom_items_input, function(i, v) {
  279. var inObj = {};
  280. var fieldname = $(v).find('span[id*="fieldname_"]').text();
  281. var fieldvalue = $(v).find('input[id*="fieldvalue_"]').val();
  282. inObj.name = fieldname;
  283. inObj.value = fieldvalue;
  284. extensionlist.push(inObj);
  285. });
  286. }
  287. if(custom_items_radio.length > 0){
  288. $.each(custom_items_radio, function(i, v) {
  289. extensionlist.push({
  290. "name": $(v).find('span[id*="fieldname_"]').text(),
  291. "value": $(v).find('div[id*="fieldOptionValue_"]').find('input[type=radio]:checked').val()
  292. });
  293. });
  294. }
  295. return extensionlist;
  296. }
  297. //获取保养类别、更换说明的数据
  298. function getCheckboxData(el) {
  299. var maintainTypeData = [];
  300. var checkEl = el.find(':checkbox:checked');
  301. if(checkEl.length > 0) {
  302. for(var i = 0; i < checkEl.length; i++) {
  303. maintainTypeData.push($(checkEl[i]).attr('data-text'));
  304. }
  305. }
  306. return maintainTypeData;
  307. }
  308. //格式化保养时间
  309. function formatterMaintainTime(val) {
  310. if(val == "0001-01-01 00:00:00" || val == "" || val == null || val == undefined) {
  311. return "无";
  312. } else {
  313. return val;
  314. }
  315. }