Sin descripción

addOrEditRun.js 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818
  1. /**
  2. * 设备巡检计划增加或编辑
  3. * */
  4. var EnclosureList = []; //保存附件的数组
  5. var uploader; //上传实例
  6. var limitNum = 6; //限制数量
  7. var indexNum = 0;
  8. var previous = ''; //系统名称切换前的值
  9. var planSdate = ''; //提示信息 计划开始执行的日期;
  10. $(function() {
  11. //var nowts = helper.DateFormat.getNowDateTime();//获取当前时间
  12. var pro_Id = helper.request.queryString("edit_id");
  13. autosize($('textarea'));
  14. laydate.render({
  15. elem: '#expirytime',
  16. range: '~',
  17. btns: ['now', 'confirm'],
  18. theme: '#249fea',
  19. min: helper.DateFormat.getNowDate(),
  20. done: function(value, date, endDate) {
  21. planSdate = value.split(' ~ ')[0];
  22. if($('#planinterval').val() == 1) {
  23. getMsgTips1();
  24. } else {
  25. getMsgTips();
  26. }
  27. }
  28. });
  29. laydate.render({
  30. elem: '#sstart_time',
  31. type: 'time',
  32. theme: '#249fea',
  33. btns: ['now', 'confirm'],
  34. format: 'HH:mm',
  35. done: function(value, date, endDate) {
  36. getMsgTips(value);
  37. },
  38. });
  39. laydate.render({
  40. elem: '#sstop_time',
  41. type: 'time',
  42. theme: '#249fea',
  43. btns: ['now', 'confirm'],
  44. format: 'HH:mm',
  45. done: function(value, date, endDate) {
  46. getMsgTips('', value);
  47. },
  48. });
  49. $('#sstart_time').val('00:00');
  50. $('#sstop_time').val('23:59');
  51. if(pro_Id) { //修改
  52. $.when(helper.getDropList.getProlistDrop($('#pro_title')), getMatters())
  53. .then(function() {
  54. getProject(pro_Id);
  55. });
  56. } else {
  57. uploaderImages(); //附件上传
  58. //项目名称
  59. helper.getDropList.getProlistDrop($('#pro_title'));
  60. }
  61. //添加编辑保存按钮点击
  62. $('#pro_save').on('click', saveProject);
  63. //绑定项目名称 切换
  64. $('#pro_title').parent().on('mouseup', sysTitleClick);
  65. $('#pro_title').on('change', sysTitleChange);
  66. //绑定巡检频率 执行间隔的切换
  67. $('#planinterval').on('change', planintervalChange);
  68. //绑定巡检频率 执行频率的切换
  69. $('#plantimes').on('change', plantimesChange);
  70. //绑定开始时间 第几天 的切换
  71. $('#sstart_select').on('change', getMsgTips);
  72. //绑定结束时间 第几天 的切换
  73. $('#sstop_select').on('change', getMsgTips);
  74. });
  75. //获取详情
  76. function getProject(ids) {
  77. $.getJSON(huayi.config.callcenter_url + "equipmentapi/api/WoEquipmentRunningPlan/getdetails", {
  78. id: ids,
  79. }, function(data) {
  80. if(data.state == "success") {
  81. var res = data.data;
  82. $('#pro_title').selectpicker('val', res.projectid); //项目名称
  83. $('#sys_title').selectpicker('val', res.matterids); //检查事项
  84. $('#plan_title').val(res.planname); //计划名称
  85. if(decodeURIComponent(res.plancontent) != "null") {
  86. $('#plan_content').val(decodeURIComponent(res.plancontent)); //巡检内容
  87. }
  88. EnclosureList = res.files;
  89. EnclosureList = EnclosureList == null ? [] : EnclosureList;
  90. limitNum -= EnclosureList.length;
  91. uploaderImages(); //附件上传
  92. if(EnclosureList.length > 0) {
  93. $('#fileNum').text(EnclosureList.length);
  94. var $list = $("#fileList");
  95. $.each(EnclosureList, function(i, v) {
  96. if(v.filesmallurl) {
  97. //原来的图片
  98. var $li = $(
  99. '<li><span class="img_mask"><i class="img_del"></i></span>' +
  100. '<img src="' + v.filesmallurl + '" title="原来的图片"/>' +
  101. '<span class="file_name">' + v.filename + '</span>' +
  102. '</li>'
  103. );
  104. $list.append($li);
  105. } else {
  106. var $liFile = $(
  107. '<li><span class="img_mask"><i class="img_del"></i></span>' +
  108. '<div class="noThumb" title="原来的文件"><i class="glyphicon glyphicon-paperclip"></i><p>无法预览</p></div>' +
  109. '<span class="file_name">' + v.filename + '</span>' +
  110. '</li>'
  111. );
  112. $list.append($liFile);
  113. }
  114. });
  115. $list.find('li').off('click');
  116. $list.find('li').on('click', '.img_del', function() {
  117. $(this).parent().parent().remove();
  118. var itemFileName = $(this).parent().parent().find('.file_name').text();
  119. $.each(EnclosureList, function(i, v) {
  120. if(v && v.filename == itemFileName) {
  121. EnclosureList.splice(i, 1);
  122. }
  123. });
  124. $('#fileNum').text(EnclosureList.length);
  125. limitNum = 6 - EnclosureList.length;
  126. uploaderImages();
  127. });
  128. }
  129. //自定义字段
  130. if(res.extensionlist && res.extensionlist.length > 0) {
  131. for(var i = 0, len = res.extensionlist.length; i < len; i++) {
  132. var tplstr = '<div class="custom_item col-md-12" data-ide="identifier_' + i + '">' +
  133. '<div class="form-group col-md-10 col-sm-10">' +
  134. '<input type="text" id="fieldname_' + i + '" value="'+ res.extensionlist[i].name +'" class="form-control input_matters" placeholder="请输入检查事项内容" />' +
  135. '</div>' +
  136. '<button class="form-control btn btn-default" style="width:60px;margin-left:15px" onclick="btn_delete($(this))">删除</button>' +
  137. '</div>';
  138. $('#custom').prepend(tplstr);
  139. }
  140. indexNum = res.extensionlist.length;
  141. }
  142. //起止日期
  143. $('#expirytime').val(res.startdate.split(' ')[0] + ' ~ ' + res.enddate.split(' ')[0]);
  144. planSdate = res.startdate.split(' ')[0];
  145. //巡检频率 执行间隔
  146. $('#planinterval').selectpicker('val', res.planinterval).trigger('change');
  147. //巡检频率 执行频率
  148. $('#plantimes').selectpicker('val', res.plantimes).trigger('change');
  149. if(res.planinterval === 1) {
  150. if(res.extensiontime && res.extensiontime.length > 0) {
  151. for(var j = 0, l = res.extensiontime.length; j < l; j++) {
  152. $('#executionTime_' + (j + 1)).val(res.extensiontime[j].starttime.split(' ')[1].substring(0, 5) + ' ~ ' + res.extensiontime[j].endtime.split(' ')[1].substring(0, 5));
  153. }
  154. getMsgTips1(res.plantimes, res.extensiontime[0].starttime.split(' ')[1].substring(0, 5));
  155. }
  156. } else {
  157. if(res.extensiontime && res.extensiontime.length > 0) {
  158. $('#sstart_select').selectpicker('val', res.extensiontime[0].startdate).trigger('change');
  159. $('#sstop_select').selectpicker('val', res.extensiontime[0].enddate).trigger('change');
  160. $('#sstart_time').val(res.extensiontime[0].starttime.split(' ')[1].substring(0, 5)); //开始时间
  161. $('#sstop_time').val(res.extensiontime[0].endtime.split(' ')[1].substring(0, 5)); //结束时间
  162. getMsgTips() //提示信息
  163. }
  164. }
  165. }
  166. });
  167. }
  168. //保存
  169. function saveProject() {
  170. var pro_Id = helper.request.queryString("edit_id");
  171. var wUrl, loadIndex, planinterval;
  172. //if(!regexs.proTitle.test($.trim($('#pro_title').val()))) {
  173. if(!$.trim($('#pro_title').val())) {
  174. layer.confirm('项目名称不能为空!', {
  175. icon: 2,
  176. btn: ['确定'] //按钮
  177. });
  178. return;
  179. }
  180. if(!$.trim($('#sys_title').val())) {
  181. layer.confirm('检查事项不能为空!', {
  182. icon: 2,
  183. btn: ['确定'] //按钮
  184. });
  185. return;
  186. }
  187. if(!$.trim($('#plan_title').val())) {
  188. layer.confirm('设备巡检计划名称不能为空!', {
  189. icon: 2,
  190. btn: ['确定'] //按钮
  191. });
  192. return;
  193. }
  194. if(!$.trim($('#expirytime').val())) {
  195. layer.confirm('起止日期不能为空!', {
  196. icon: 2,
  197. btn: ['确定'] //按钮
  198. });
  199. return;
  200. }
  201. if(!$.trim($('#planinterval').val())) {
  202. layer.confirm('巡检频率执行间隔不能为空!', {
  203. icon: 2,
  204. btn: ['确定'] //按钮
  205. });
  206. return;
  207. }
  208. if(!$.trim($('#plantimes').val())) {
  209. layer.confirm('巡检频率执行频率不能为空!', {
  210. icon: 2,
  211. btn: ['确定'] //按钮
  212. });
  213. return;
  214. }
  215. var timeEls = $('#plantimesCoont').find('input[id*="executionTime_"]');
  216. for(var i = 0, len = timeEls.length; i < len; i++) {
  217. var txtTime = $(timeEls[i]).parent().siblings('label').text().split('*')[1];
  218. if(!$(timeEls[i]).val()) {
  219. layer.confirm(txtTime + ' 不能为空!', {
  220. icon: 2,
  221. btn: ['确定'] //按钮
  222. });
  223. return;
  224. }
  225. // 暂时去掉(允许跨 0 点)
  226. // if(Date.parse('2018/09/10 ' + $(timeEls[i]).val().split(' ~ ')[0]) > Date.parse('2018/09/10 ' + $(timeEls[i]).val().split(' ~ ')[1])) {
  227. // layer.confirm(txtTime + ' 开始时间不能大于结束时间!', {
  228. // icon: 2,
  229. // btn: ['确定'] //按钮
  230. // });
  231. // return;
  232. // }
  233. }
  234. if(Number($('#sstart_select').val()) > Number($('#sstop_select').val())) {
  235. layer.confirm('开始时间不能大于结束时间!', {
  236. icon: 2,
  237. btn: ['确定'] //按钮
  238. });
  239. return;
  240. }
  241. var d1 = $('#sstart_time').val();
  242. var d2 = $('#sstop_time').val();
  243. if(!$.trim(d1)) {
  244. layer.confirm('开始时间不能为空!', {
  245. icon: 2,
  246. btn: ['确定'] //按钮
  247. });
  248. return;
  249. }
  250. if(!$.trim(d2)) {
  251. layer.confirm('结束时间不能为空!', {
  252. icon: 2,
  253. btn: ['确定'] //按钮
  254. });
  255. return;
  256. }
  257. if(Date.parse('2018/09/10 ' + d1) >= Date.parse('2018/09/10 ' + d2)) {
  258. layer.confirm('开始时间不能大于结束时间!', {
  259. icon: 2,
  260. btn: ['确定'] //按钮
  261. });
  262. return;
  263. }
  264. if(pro_Id) {
  265. wURL = "equipmentapi/api/WoEquipmentRunningPlan/update";
  266. } else {
  267. wURL = "equipmentapi/api/WoEquipmentRunningPlan/add";
  268. }
  269. $.ajax({
  270. type: 'post',
  271. url: huayi.config.callcenter_url + wURL,
  272. dataType: 'json',
  273. async: true,
  274. beforeSend: function() { //触发ajax请求开始时执行
  275. $('#pro_save').attr("disabled", true);
  276. $('#pro_save').text('保存中...');
  277. loadIndex = layer.load();
  278. },
  279. data: {
  280. id: pro_Id, //pro_Id为空的时候添加
  281. projectid: $('#pro_title').val(), // 是 string 项目名称id
  282. // systemid: $('#sys_title').val(), // 否 string 系统id
  283. // equipmentid: $('#eqp_title').val(), //设备名称
  284. matterids: $('#sys_title').val(), //否 string[] 检查事项id,允许多选
  285. planname: $('#plan_title').val(), //设备巡检计划名称
  286. plancontent: $('#plan_content').val(), //设备巡检计划内容
  287. files: EnclosureList, //list 附件
  288. extensionlist: getFields(), //否 List 自定义字段json,如:[{“name”:”字段名”,”value”:”字段值”}]
  289. startdate: $('#expirytime').val() && $('#expirytime').val().split(' ~ ')[0], //是 datetime 开始日期
  290. enddate: $('#expirytime').val() && $('#expirytime').val().split(' ~ ')[1], //是 datetime 结束日期
  291. isreturnmsg: $('#isreturnmsg').find('input[name="isreturnmsgOptions"]:checked').val(),//是 int 工单完成是否返回消息提醒 0不提醒,1提醒 默认为0
  292. //定时任务时启用 :—- :——- ——-
  293. plancycle: 4, //否 int 定时周期:1年,2月,3周,4日,5时,6分;巡检中只需要使用:4日,5时,6分
  294. planinterval: $('#planinterval').val(), //否 int 执行间隔,每几天
  295. plantimes: $('#plantimes').val(), // 否 int 执行频率,几次
  296. extensiontime: getExtensiontime(), // 否 list 自定义时间段json,每天是‘1’如:
  297. //[{“startdate”:”0”,”starttime”:”2018-08-27 10:00”,
  298. //”enddate”:”5”,”endtime”:”2018-08-27 15:00”}]
  299. //startdate:开始日(第几天),starttime:开始时间,enddate:结束日(第几天),endtime:结束时间
  300. },
  301. success: function(data) {
  302. layer.close(loadIndex);
  303. if(data.state == "success") {
  304. var index = parent.layer.getFrameIndex(window.name);
  305. parent.layer.close(index);
  306. parent.$('#table_all').bootstrapTable('refresh');
  307. parent.layer.msg("保存成功");
  308. } else {
  309. $('#pro_save').attr("disabled", false);
  310. $('#pro_save').text('保存');
  311. }
  312. },
  313. error: function(textStatus) {
  314. layer.close(loadIndex);
  315. layer.confirm('网络繁忙,请稍后再试...', {
  316. closeBtn: 0,
  317. btn: ['确定'] //按钮
  318. });
  319. $('#pro_save').attr("disabled", false);
  320. $('#pro_save').text('保存');
  321. },
  322. complete: function(XMLHttpRequest, textStatus) {
  323. layer.close(loadIndex);
  324. if(textStatus == 'timeout') {
  325. var xmlhttp = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");
  326. xmlhttp.abort();
  327. layer.confirm('网络超时,请稍后再试...', {
  328. closeBtn: 0,
  329. btn: ['确定'] //按钮
  330. });    
  331. }
  332. $('#pro_save').attr("disabled", false);
  333. $('#pro_save').text('保存');
  334. },
  335. });
  336. }
  337. //上传图片
  338. function uploaderImages() {
  339. if(uploader) {
  340. uploader.destroy();
  341. }
  342. uploader = WebUploader.create({
  343. auto: true, // 选完文件后,是否自动上传
  344. swf: '../plugins/webuploader/Uploader.swf', // swf文件路径
  345. server: huayi.config.callcenter_url + "fileserverapi/Api/Upload", // 文件接收服务端
  346. //server: "http://192.168.1.21:28270/api/upload", // 本地测试
  347. pick: '#imgPicker', // 选择文件的按钮。可选
  348. formData: {
  349. uploadtype: 'equipRunPlan'
  350. },
  351. // 只允许选择图片文件。
  352. accept: {
  353. // title: 'Images',
  354. // extensions: 'gif,jpg,jpeg,bmp,png',
  355. // mimeTypes: 'image/*'
  356. },
  357. compress: false, //webuploader默认压缩图片,设置compress:false,可以按照原始比例上传图片
  358. //fileVal: "upFile",//设置文件上传域的name。
  359. threads: limitNum, //上传并发数。允许同时最大上传进程数,为了保证文件上传顺序
  360. fileNumLimit: limitNum,
  361. fileSizeLimit: 30 * 1024 * 1024, // 30 M
  362. fileSingleSizeLimit: 5 * 1024 * 1024 // 5 M
  363. });
  364. uploader.on('fileQueued', function(file) {
  365. var $list = $("#fileList"),
  366. $li = $(
  367. '<li id="' + file.id + '"><span class="img_mask"><i class="img_del"></i></span>' +
  368. '<img/>' +
  369. '<span class="img_state"><i></i></span>' +
  370. '<span class="file_name">' + file.name + '</span>' +
  371. '</li>'
  372. ),
  373. $img = $li.find('img');
  374. // $list为容器jQuery实例
  375. $list.append($li);
  376. // 创建缩略图
  377. uploader.makeThumb(file, function(error, src) {
  378. if(error) {
  379. $img.replaceWith('<div class="noThumb"><i class="glyphicon glyphicon-paperclip"></i><p>无法预览</p></div>');
  380. return;
  381. }
  382. $img.attr('src', src);
  383. }, 109, 109); //109*109为缩略图尺寸
  384. //绑定删除
  385. $('#' + file.id).on('click', '.img_del', function() {
  386. uploader.removeFile(file);
  387. var $fileLi = $('#' + file.id);
  388. $fileLi.off().find('.img_del').off().end().remove();
  389. var itemFileName = $(this).parent().parent().find('.file_name').text();
  390. $.each(EnclosureList, function(i, v) {
  391. if(v && v.filename == itemFileName) {
  392. EnclosureList.splice(i, 1);
  393. helper.methods.delImgs(v.filesmallurl, v.fileurl);
  394. }
  395. });
  396. // var indexDel = $.inArray(itemFileName, EnclosureList);
  397. // if(indexDel > -1) {
  398. // EnclosureList.splice(indexDel, 1);
  399. // }
  400. $('#fileNum').text(EnclosureList.length);
  401. });
  402. });
  403. // 文件上传过程中创建进度条实时显示。
  404. uploader.on('uploadProgress', function(file, percentage) {
  405. var $li = $('#' + file.id),
  406. $percent = $li.find('.progress span');
  407. // 避免重复创建
  408. if(!$percent.length) {
  409. $percent = $('<div class="progress" style="">' +
  410. '<span class="text">0%</span>' +
  411. '<span class="percentage"></span>' +
  412. '</div>')
  413. .appendTo($li)
  414. .find('span');
  415. }
  416. $percent.eq(0).text(Math.round(percentage * 100) + '%');
  417. $percent.eq(1).css('width', Math.round(percentage * 100) + '%');
  418. });
  419. // 文件上传成功,给item添加成功class, 用样式标记上传成功。
  420. uploader.on('uploadSuccess', function(file, res) {
  421. EnclosureList.push(res.data[0]);
  422. $('#fileNum').text(EnclosureList.length);
  423. $('#' + file.id).addClass('upload-state-done');
  424. });
  425. // 文件上传失败,显示上传出错。
  426. uploader.on('uploadError', function(file) {
  427. var $li = $('#' + file.id),
  428. $error = $li.find('div.error');
  429. // 避免重复创建
  430. if(!$error.length) {
  431. $error = $('<div class="error"></div>').appendTo($li);
  432. }
  433. $error.text('上传失败');
  434. });
  435. // 完成上传完了,成功或者失败,先删除进度条。
  436. uploader.on('uploadComplete', function(file) {
  437. $('#' + file.id).find('.progress').remove();
  438. });
  439. uploader.onError = function(code) {
  440. //console.log('Error:' + code);
  441. switch(code) {
  442. case "Q_EXCEED_NUM_LIMIT":
  443. layer.msg('只能上传六个文件。');
  444. break;
  445. case "Q_TYPE_DENIED":
  446. layer.msg('图片类型不正确。');
  447. break;
  448. case "F_DUPLICATE":
  449. layer.msg('该文件已上传,请选择其它文件。');
  450. break;
  451. case "F_EXCEED_SIZE":
  452. layer.msg('单文件大小不能超过5M。');
  453. break;
  454. case "Q_EXCEED_SIZE_LIMIT":
  455. layer.msg('总文件大小不能超过30M。');
  456. break;
  457. default:
  458. break;
  459. }
  460. };
  461. }
  462. //巡检频率 执行间隔的change
  463. function planintervalChange() {
  464. //每天,每2天,每3天,每4天,每5天,每6天,每7天,
  465. var checkedVal = $(this).val();
  466. if(!checkedVal) {
  467. $('#SStimes').hide();
  468. $('#plantimesCoont').hide();
  469. $('#msg_tips').hide(); //提示信息
  470. }
  471. if(Number(checkedVal) > 1) {
  472. $('#plantimes').selectpicker('val', '1').trigger('change');
  473. $('#plantimes').prop('disabled', true);
  474. $('#plantimes').selectpicker('refresh');
  475. } else {
  476. $('#plantimes').selectpicker('val', '1').trigger('change');
  477. $('#plantimes').prop('disabled', false);
  478. $('#plantimes').selectpicker('refresh');
  479. }
  480. }
  481. //巡检频率 执行频率的change
  482. function plantimesChange() {
  483. //1-12次
  484. if(!$(this).val()) {
  485. $('#SStimes').hide();
  486. $('#plantimesCoont').hide();
  487. $('#msg_tips').hide(); //提示信息
  488. }
  489. if(Number($('#planinterval').val()) === 1) { //每天
  490. $('#SStimes').hide();
  491. if($(this).val()) {
  492. $('#plantimesCoont').show();
  493. getExecutionTime($(this).val());
  494. $('#msg_tips').show(); //提示信息
  495. getMsgTips1();
  496. }
  497. }
  498. if(Number($('#planinterval').val()) > 1) {
  499. $('#plantimesCoont').hide();
  500. $('#SStimes').show();
  501. getDaySelect(Number($('#planinterval').val()), $('#sstart_select')); //开始时间
  502. getDaySelect(Number($('#planinterval').val()), $('#sstop_select')); //结束时间
  503. $('#sstop_select').selectpicker('val', $('#planinterval').val()).trigger('change');
  504. $('#msg_tips').show(); //提示信息
  505. getMsgTips();
  506. }
  507. }
  508. /**
  509. * 获取执行时间
  510. * t 执行的次数
  511. */
  512. function getExecutionTime(t) {
  513. $('#plantimesCoont').empty();
  514. var timeArrs = setDefaultTime(Number(t));
  515. for(var i = 0; i < t; i++) {
  516. var m = i + 1;
  517. $('#plantimesCoont').append('<li class="form-group">' +
  518. '<label for="executionTime_' + m + '" class="col-md-2 text-right"><b class="text_require">*</b>执行时间(' + m + ')</label>' +
  519. '<div class="col-md-10">' +
  520. '<input id="executionTime_' + m + '" class="form-control" type="text" placeholder="请选择执行时间(' + m + ')" />' +
  521. '</div>' +
  522. '</li>');
  523. if(m === 1) {
  524. laydate.render({
  525. elem: '#executionTime_' + m,
  526. range: '~',
  527. type: 'time',
  528. btns: ['now', 'confirm'],
  529. format: 'HH:mm',
  530. theme: '#249fea',
  531. done: function(value, date, endDate) {
  532. date.hours = date.hours < 10 ? '0' + date.hours : date.hours;
  533. date.minutes = date.minutes < 10 ? '0' + date.minutes : date.minutes;
  534. getMsgTips1('', date.hours + ':' + date.minutes);
  535. // console.log(value); //得到日期生成的值,如:2017-08-18
  536. // console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
  537. // console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
  538. }
  539. });
  540. } else {
  541. laydate.render({
  542. elem: '#executionTime_' + m,
  543. range: '~',
  544. type: 'time',
  545. btns: ['now', 'confirm'],
  546. format: 'HH:mm',
  547. theme: '#249fea',
  548. });
  549. }
  550. $('#executionTime_' + m).val(timeArrs[i]);
  551. }
  552. }
  553. /**
  554. * 设置默认的执行时间
  555. * t 执行的次数
  556. * 返回一个 时间的数组如["00:00 ~ 11:59", "12:00 ~ 23:59"]
  557. */
  558. function setDefaultTime(t) {
  559. var timesArr = [];
  560. var m0, m1, m2;
  561. for(var i = 0; i < t; i++) {
  562. m0 = parseInt(24 / t) - 1;
  563. m1 = parseInt(24 / t) * i;
  564. m2 = parseInt(24 / t) * (i + 1) - 1;
  565. m0 = m0 < 10 ? '0' + m0 : m0;
  566. m1 = m1 < 10 ? '0' + m1 : m1;
  567. m2 = m2 < 10 ? '0' + m2 : m2;
  568. if(i === 0) {
  569. timesArr.push('00:00 ~ ' + m0 + ':59');
  570. } else if(i < (t - 1)) {
  571. timesArr.push(m1 + ':00 ~ ' + m2 + ':59');
  572. } else if(i === (t - 1)) {
  573. if(24 % t != 0) {
  574. timesArr.push(m1 + ':00 ~ 23:59');
  575. } else {
  576. timesArr.push(m1 + ':00 ~ ' + m2 + ':59');
  577. }
  578. }
  579. }
  580. return timesArr;
  581. }
  582. /**
  583. * 获取 第几天的下拉;
  584. * t 执行的间隔
  585. * el 元素
  586. */
  587. function getDaySelect(t, el) {
  588. var weekArrs = ['一', '二', '三', '四', '五', '六', '七','十五'];
  589. el.empty();
  590. for(var i = 0; i < t; i++) {
  591. if(i < 7){
  592. el.append('<option value="' + (i + 1) + '">第' + weekArrs[i] + '天</option>');
  593. }
  594. if(i === 7){
  595. el.append('<option value="15">第' + weekArrs[i] + '天</option>');
  596. }
  597. }
  598. el.selectpicker('refresh');
  599. }
  600. /**
  601. * 获取巡检频率 不是每天的提示信息
  602. * v1 开始时间
  603. * v2 结束时间
  604. */
  605. function getMsgTips(v1, v2) {
  606. if(v1 && v1.type === "change") {
  607. v1 = $('#sstart_time').val();
  608. }
  609. v1 = (v1 === '' || v1 === undefined) ? $('#sstart_time').val() : v1;
  610. v2 = (v2 === '' || v2 === undefined) ? $('#sstop_time').val() : v2;
  611. $('#msg_tips').find('.text-warning').text('提示:' + $('#planinterval').find('option:selected').text() +
  612. '一次,执行时间' + $('#sstart_select').find('option:selected').text() +
  613. v1 + '至' +
  614. $('#sstop_select').find('option:selected').text() +
  615. v2 + ',' + planSdate + ' ' + v1 + '开始执行计划!');
  616. }
  617. /**
  618. * 获取巡检频率 为每天的 提示信息
  619. * t 次数
  620. * s 计划开始执行的时间
  621. */
  622. function getMsgTips1(t, s) {
  623. t = (t === '' || t === undefined) ? $('#plantimes').val() : t;
  624. s = (s === '' || s === undefined) ? ($('#executionTime_1').val() && $('#executionTime_1').val().split(' ~ ')[0]) : s;
  625. $('#msg_tips').find('.text-warning').text('提示:每天执行' + t + '次,' + planSdate + ' ' + s + '开始执行计划!');
  626. }
  627. /**
  628. *获取自定义时间段
  629. */
  630. function getExtensiontime() {
  631. var arr = [];
  632. var enddate = "1";
  633. if(Number($('#planinterval').val()) === 1) {
  634. var timeEls = $('#plantimesCoont').find('input[id*="executionTime_"]');
  635. for(var i = 0, len = timeEls.length; i < len; i++) {
  636. //每天的时候 开始时间小于结束时间的时候 enddate 为 2
  637. if(Date.parse('2018/09/10 ' + ($(timeEls[i]).val() && $(timeEls[i]).val().split(' ~ ')[0])) > Date.parse('2018/09/10 ' + ($(timeEls[i]).val() && $(timeEls[i]).val().split(' ~ ')[1]))) {
  638. enddate = "2";
  639. }else{
  640. enddate = "1";
  641. }
  642. arr.push({
  643. "startdate": "1",
  644. "starttime": $(timeEls[i]).val() && $(timeEls[i]).val().split(' ~ ')[0],
  645. "enddate": enddate,
  646. "endtime": $(timeEls[i]).val() && $(timeEls[i]).val().split(' ~ ')[1]
  647. });
  648. }
  649. } else if(Number($('#planinterval').val()) > 1) {
  650. arr.push({
  651. "startdate": $('#sstart_select').val(),
  652. "starttime": $('#sstart_time').val(),
  653. "enddate": $('#sstop_select').val(),
  654. "endtime": $('#sstop_time').val()
  655. });
  656. }
  657. return arr;
  658. }
  659. //项目名称切换前
  660. function sysTitleClick() {
  661. previous = $(this).find('#pro_title').val();
  662. }
  663. //项目名称切换
  664. function sysTitleChange() {
  665. var self = this;
  666. if($('#custom').find('.custom_item').length > 0) {
  667. layer.confirm('切换项目名称将清除当前检查事项内容,您确定要切换项目名称吗?', {
  668. icon: 7,
  669. closeBtn: 0,
  670. btn: ['确定', '取消'], //按钮
  671. }, function(index) {
  672. $('#custom').html('');
  673. getMatters();
  674. layer.close(index);
  675. }, function() {
  676. $(self).selectpicker('val', previous);
  677. });
  678. }else{
  679. getMatters();
  680. }
  681. }
  682. //获取检查项下拉和事项内容数据
  683. function getMatters() {
  684. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  685. $.ajax({
  686. type: "get",
  687. url: huayi.config.callcenter_url + "equipmentapi/api/MattersMgr/getlist",
  688. dataType: 'json',
  689. async: true,
  690. data: {
  691. projectid: $('#pro_title').val(),//否 string 项目id
  692. type: 3 // 否 int 检查类型 2保养,3巡检
  693. },
  694. success: function(data) {
  695. var res = data.data.list;
  696. var contents = [];
  697. $('#sys_title').empty();
  698. $('<option value="" disabled>请选择检查事项</option>').appendTo($('#sys_title'));
  699. for(var i = 0; i < res.length; i++) {
  700. contents.push({
  701. "id": res[i].id,
  702. "lists": res[i].contents
  703. });
  704. $('<option value=' + res[i].id + '>' + res[i].matter + '</option>').appendTo($('#sys_title'));
  705. }
  706. $('#sys_title').selectpicker('refresh');
  707. $('#sys_title').on('change', function(){
  708. var self = this;
  709. $('#custom').html('');
  710. $.each(contents, function(j, v) {
  711. if($(self).val() && $(self).val().length > 0){
  712. $.each($(self).val(), function(k, m) {
  713. if(v.id === m){
  714. btn_add(v);
  715. return
  716. }
  717. });
  718. }
  719. });
  720. });
  721. dtd.resolve(); // 改变Deferred对象的执行状态
  722. }
  723. });
  724. return dtd.promise(); // 返回promise对象
  725. }
  726. //添加自定义字段
  727. function btn_add(item) {
  728. if(item.lists && item.lists.length > 0){
  729. $.each(item.lists, function(i, v) {
  730. var tplstr = '';
  731. tplstr = '<div class="custom_item col-md-12" data-ide="identifier_' + indexNum + '">' +
  732. '<div class="form-group col-md-10 col-sm-10">' +
  733. '<input type="text" value="'+ v +'" id="fieldname_' + indexNum + '" class="form-control input_matters" placeholder="请输入检查事项内容" />' +
  734. '</div>' +
  735. '<button class="form-control btn btn-default" style="width:60px;margin-left:15px" onclick="btn_delete($(this))">删除</button>' +
  736. '</div>';
  737. $('#custom').prepend(tplstr);
  738. indexNum++;
  739. });
  740. }
  741. }
  742. //删除自定义字段
  743. function btn_delete(el) {
  744. el.parent().remove();
  745. }
  746. //获取所添加字段的值
  747. function getFields() {
  748. var extensionlist = []; //自定义字段的数组[{“name”:”字段名”,”value”:”字段值”}]
  749. var custom_items = $('#custom').find('.custom_item');
  750. $.each(custom_items, function(i, v) {
  751. var fieldname = $(v).find('input[id*="fieldname_"]').val();
  752. if($.trim(fieldname)) {
  753. extensionlist.push({
  754. "name": $.trim(fieldname),
  755. "value": ""
  756. });
  757. }
  758. });
  759. //去重
  760. extensionlist = helper.methods.uniqueObjArray(extensionlist, 'name');
  761. return extensionlist;
  762. }