plan.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. var page = 1;
  2. var totalPages = 0;
  3. var param1 = '';
  4. var param2 = '';
  5. //列表渲染
  6. getListDataAjax();
  7. //获取列表ajax请求
  8. function getListDataAjax(queryParam = {}, page = 1) {
  9. queryParam.page = page;
  10. queryParam.limit = 20; //每页显示条数
  11. queryParam.start = (queryParam.page - 1) * queryParam.limit;
  12. ajaxRequest(PLAN_LIST, "POST", queryParam, function(result) {
  13. let data = result.RESULT;
  14. let items = '';
  15. if (result.totalCount > 0) {
  16. data.forEach(function(item, key) {
  17. items += "<tr>" +
  18. "<td class='status' data-user='" + JSON.stringify(item) + "' data-id='" + item.id + "'></td>" +
  19. "<td>" + item.xh + "</td>" +
  20. "<td>" + item.plan_name + "</td>" +
  21. "<td>" + item.cycle_name + "</td>" +
  22. "<td>" + item.zxsj + "</td>" +
  23. "<td>" + item.team_name + "</td>" +
  24. "<td>" + item.name + "</td>" +
  25. "</tr>"
  26. })
  27. $('#dataList').html(items);
  28. } else {
  29. $('#dataList').html('');
  30. }
  31. totalPages = result.totalCount / result.limit;
  32. totalPages = Math.ceil(totalPages);
  33. $('#totalPage').html(totalPages); //总共多少页
  34. $('#dataTotal').html(result.totalCount); //总共多少条数据
  35. $('#currentPage').val(page); //当前页面
  36. let pageFrom = (page - 1) * result.limit + 1; //开始
  37. let pageTo = result.page * result.limit; //结束
  38. pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
  39. $('#pageFrom').html(pageFrom);
  40. $('#pageTo').html(pageTo);
  41. // 无数据时
  42. if (!result.totalCount) {
  43. $('.pager.has-data').hide()
  44. $('.pager.no-data').show()
  45. } else {
  46. $('.pager.has-data').show()
  47. $('.pager.no-data').hide()
  48. }
  49. if (page < totalPages) {
  50. $('#nextPageButton,#lastPageButton').removeClass('disabled');
  51. } else {
  52. $('#nextPageButton,#lastPageButton').addClass('disabled');
  53. }
  54. if (page === 1) {
  55. $('#firstPageButton,#prevPageButton').addClass('disabled');
  56. } else {
  57. $('#firstPageButton,#prevPageButton').removeClass('disabled');
  58. }
  59. }, function(errorMsg) {
  60. alert("请求数据失败!");
  61. }, 3)
  62. }
  63. // 责任人下拉 start
  64. getStaticAndSelectAjax({ "pd": "no" });
  65. function getStaticAndSelectAjax(queryParam = {}) {
  66. ajaxRequest(TEAM_PERSON, "POST", queryParam, function(result) {
  67. queryParam.pd = 'no';
  68. let data = result.RESULT;
  69. let items = '';
  70. data.forEach(function(item, key) {
  71. items += `<option value="${item.username}">${item.username}</option>`
  72. })
  73. $('#person_liable_id').append(items);
  74. $('#person_liable_id2').append(items);
  75. $('#person_liable_id3').append(items);
  76. }, function(errorMsg) {
  77. alert("请求数据失败!");
  78. }, 3)
  79. }
  80. // 责任人下拉end
  81. //单位下拉
  82. getNameList()
  83. //单位下拉 ajax请求
  84. function getNameList() {
  85. ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
  86. let data = result.RESULT;
  87. let items = '';
  88. data.forEach(function(item, key) {
  89. items += `<option value="${item.owner_id}">${item.owner_name}</option>`
  90. })
  91. $('#getNameList').append(items);
  92. $('#getNameList3').append(items);
  93. }, function(errorMsg) {
  94. alert("请求数据失败!");
  95. })
  96. }
  97. //执行团队下拉
  98. getTeamList()
  99. //执行团队下拉 ajax请求
  100. function getTeamList() {
  101. ajaxRequest(TEAM_SELECT, "POST", {}, function(result) {
  102. let data = result.RESULT;
  103. let items = '';
  104. data.forEach(function(item, key) {
  105. items += `<option value="${item.id}">${item.team_name}</option>`
  106. })
  107. $('#getTeamList').append(items);
  108. $('#getTeamList3').append(items);
  109. }, function(errorMsg) {
  110. alert("请求数据失败!");
  111. })
  112. }
  113. //按钮搜索
  114. $('#buttonSearch').on('click', function() {
  115. page = 1;
  116. getListDataAjax(getSearchParamObj());
  117. param1 = $('#plan_name').val()
  118. param2 = $('#person_liable_id').val()
  119. })
  120. //拼接搜索条件
  121. function getSearchParamObj() {
  122. let queryParam = {};
  123. let plan_name = $('#plan_name').val();
  124. let person_liable_id = $('#person_liable_id').val();
  125. queryParam.plan_name = plan_name;
  126. queryParam.person_liable_id = person_liable_id;
  127. return queryParam;
  128. }
  129. //重置表单
  130. $('.reset').click(resetForm);
  131. //分页刷新按钮
  132. $('.pg-refresh').click(resetForm);
  133. //重置表单
  134. function resetForm() {
  135. page = 1;
  136. $("#plan_name").val("");
  137. $("#person_liable_id").val("");
  138. getListDataAjax(getSearchParamObj());
  139. param1 = $('#plan_name').val()
  140. param5 = $('#person_liable_id').val()
  141. }
  142. //分页操作
  143. $('#firstPageButton').on('click', function() {
  144. page = 1;
  145. getListDataAjax(getSearchParamObj(), 1);
  146. })
  147. $('#lastPageButton').on('click', function() {
  148. page = totalPages;
  149. getListDataAjax({}, page);
  150. })
  151. $('#prevPageButton').on('click', function() {
  152. page -= 1;
  153. getListDataAjax(getSearchParamObj(), page);
  154. })
  155. $('#nextPageButton').on('click', function() {
  156. page += 1;
  157. getListDataAjax(getSearchParamObj(), page);
  158. })
  159. /*新增 修改 关闭 弹框*/
  160. layui.use('layer', function() {
  161. // 新增弹框
  162. $(document).on('click', '.add', function() {
  163. arr99 = [];
  164. layerCreateIndex = layer.open({
  165. type: 1,
  166. title: false,
  167. closeBtn: 0,
  168. shadeClose: false,
  169. skin: 'yourclass',
  170. area: ['800px', '600px'],
  171. content: $(".addDataOut"),
  172. success: function() {
  173. getTeamInnerList();
  174. $('.clsBtn,.cancel').click(function() {
  175. innerPage = 1;
  176. layer.close(layerCreateIndex);
  177. })
  178. }
  179. })
  180. })
  181. //修改弹框信息
  182. $('.edit').click(function() {
  183. arr99 = [];
  184. arrDelPd = [];
  185. filterAll();
  186. let dataId = $('.pure-table #dataList tr').find('.checked').data('id');
  187. if (!$('.pure-table tr').has('.checked').length) {
  188. layer.msg('请选择一条需要修改的信息!', { icon: 5 });
  189. } else {
  190. let userInfo = $('.pure-table tr').find('.checked').data('user');
  191. $('.editDataOut input[name=plan_name]').val(userInfo.plan_name)
  192. $('.editDataOut select[name=team_id]').val(userInfo.team_id)
  193. $('.editDataOut select[name=company_code]').val(userInfo.company_code)
  194. $("input[name='cycle']").each(function() {
  195. if ($(this).val() != userInfo.cycle) {
  196. $(this).removeAttr("checked");
  197. } else {
  198. $(this).prop("checked", "checked");
  199. }
  200. });
  201. layui.use(['form'], function() {
  202. var form = layui.form;
  203. form.render('radio');
  204. })
  205. $('.editDataOut select[name=start_inspect_time]').val(userInfo.start_inspect_time)
  206. $('.editDataOut select[name=end_inspect_time]').val(userInfo.end_inspect_time)
  207. $('.editDataOut input[name=start_date]').val(userInfo.start_date)
  208. $('.editDataOut input[name=end_date]').val(userInfo.end_date)
  209. layerUpdateIndex = layer.open({
  210. type: 1,
  211. title: false,
  212. closeBtn: 0,
  213. shadeClose: false,
  214. skin: 'yourclass',
  215. area: ['800px', '600px'],
  216. content: $(".editDataOut"),
  217. success: function() {
  218. getTeamInnerList({ "dwid": dataId });
  219. $('.clsBtn,.cancel').click(function() {
  220. innerPage = 1;
  221. layer.close(layerUpdateIndex);
  222. })
  223. }
  224. });
  225. }
  226. })
  227. //删除信息
  228. $('.delete').click(function() {
  229. if (!$('.pure-table tr').has('.checked').length) {
  230. //layer.msg('请选择一条需要修改的信息');
  231. layer.msg('请选择一条需要删除的信息!', { icon: 5 });
  232. } else {
  233. let dataId = $('.pure-table #dataList tr').find('.checked').data('id');
  234. ajaxRequest(PLAN_DELETE, "POST", { "ID_LIST": [{ "id": dataId }] }, function(result) {
  235. $(".pure-table tbody tr.selected").remove()
  236. layer.close(layer.layerCreateIndex);
  237. layer.msg('删除成功!', { icon: 6 });
  238. getListDataAjax()
  239. }, function(errorMsg) {
  240. alert("用户删除失败!");
  241. }, 2)
  242. }
  243. })
  244. })
  245. /* 新增发送请求 */
  246. $('#addData').click(function() {
  247. //获取表单的值 并转换成对象
  248. let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
  249. //验证数据是否为空
  250. let res = validParamIsEmpty(allParam, {
  251. "plan_name": "请输入任务名称",
  252. "team_id": "请选择执行团队",
  253. "company_code": "请选择单位",
  254. "cycle": "请选择周期",
  255. "start_inspect_time": "请选择维保开始时间",
  256. "end_inspect_time": "请选择维保结束时间",
  257. "start_date": "请选择执行开始日期",
  258. "end_date": "请选择执行结束日期",
  259. });
  260. if (res.code == -1) {
  261. alert(res.msg);
  262. return;
  263. }
  264. //验证组织人员
  265. // if (!$('.pure-table.pure-table-inner #dataList2 tr').has('.checked').length) {
  266. if (!arr99.length) {
  267. layer.msg('请至少选择一条维保点位!', { icon: 5 });
  268. return
  269. } else {
  270. let spot_id = [];
  271. spot_id = arr99;
  272. // alert(spot_id)
  273. spot_id = spot_id.join(',')
  274. allParam.spot_id = spot_id;
  275. }
  276. // 验证通过 请求ajax
  277. ajaxRequest(PLAN_ADD, "POST", allParam, function(result) {
  278. layer.close(layerCreateIndex);
  279. layer.msg('添加成功!', { icon: 6 });
  280. getListDataAjax();
  281. $('#addDataForm')[0].reset();
  282. }, function(errorMsg) {
  283. alert("异常错误!");
  284. }, 3)
  285. })
  286. /* 修改发送请求 */
  287. $('#updateData').click(function() {
  288. //获取表单的值 并转换成对象
  289. let allParam = serializeArrayToObj($("#editDataForm").serializeArray());
  290. //验证数据是否为空
  291. let res = validParamIsEmpty(allParam, {
  292. "plan_name": "请输入任务名称",
  293. "team_id": "请选择执行团队",
  294. "company_code": "请选择单位",
  295. "cycle": "请选择周期",
  296. "start_inspect_time": "请选择维保开始时间",
  297. "end_inspect_time": "请选择维保结束时间",
  298. "start_date": "请选择执行开始日期",
  299. "end_date": "请选择执行结束日期",
  300. });
  301. if (res.code == -1) {
  302. alert(res.msg);
  303. return;
  304. }
  305. let spot_id = [];
  306. spot_id = arr99;
  307. spot_id = spot_id.join(',');
  308. allParam.spot_id = spot_id;
  309. // alert(spot_id);
  310. let delete_id = [];
  311. delete_id = arrDelPd;
  312. delete_id = delete_id.join(',');
  313. allParam.delete_id = delete_id;
  314. // alert(delete_id);
  315. let dataId = $('.pure-table #dataList tr').find('.checked').data('id');
  316. allParam.id = dataId;
  317. ajaxRequest(PLAN_EDIT, "POST", allParam, function(result) {
  318. if (result.success == false) {
  319. //服务端返回报错
  320. alert(result.MSG);
  321. } else {
  322. innerPage = 1;
  323. layer.close(layerUpdateIndex);
  324. layer.msg('修改成功!', { icon: 6 });
  325. getListDataAjax();
  326. }
  327. }, function(errorMsg) {
  328. alert("数据修改失败!");
  329. }, 2)
  330. })
  331. // 导出 start
  332. $('.export').click(function() {
  333. getDataExport({ "plan_name": param1, "person_liable_id": param2 })
  334. })
  335. function getDataExport(queryParam = {}) {
  336. // 输出base64编码
  337. const base64 = s => window.btoa(unescape(encodeURIComponent(s)));
  338. ajaxRequest(PLAN_EXPORT, "POST", queryParam, function(result) {
  339. let data = result.RESULT;
  340. let newData = [];
  341. if (data) {
  342. data.forEach(function(item, index) {
  343. newData.push({ xh: item.xh, plan_name: item.plan_name, cycle_name: item.cycle_name, zxsj: item.zxsj, team_name: item.team_name, name: item.name })
  344. });
  345. }
  346. let str = '<tr style="text-align:center"><th>序号</th><th>任务名称</th><th>周期</th><th>执行日期</th><th>执行团队</th><th>责任人</th></tr>';
  347. // 循环遍历,每行加入tr标签,每个单元格加td标签
  348. for (let i = 0; i < newData.length; i++) {
  349. str += '<tr style="text-align:center">';
  350. for (const key in newData[i]) {
  351. // 增加\t为了不让表格显示科学计数法或者其他格式
  352. str += `<td x:str>${ newData[i][key] + '\t'}</td>`;
  353. }
  354. str += '</tr>';
  355. }
  356. // Worksheet名
  357. const worksheet = 'Sheet1'
  358. const uri = 'data:application/vnd.ms-excel;base64,';
  359. // 下载的表格模板数据
  360. const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"
  361. xmlns:x="urn:schemas-microsoft-com:office:excel"
  362. xmlns="http://www.w3.org/TR/REC-html40">
  363. <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
  364. <x:Name>${worksheet}</x:Name>
  365. <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
  366. </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
  367. </head><body><table>${str}</table></body></html>`;
  368. // 通过创建a标签实现
  369. const link = document.createElement("a");
  370. link.href = uri + base64(template);
  371. // 对下载的文件命名
  372. link.download = "维保计划数据表.xls";
  373. link.click();
  374. }, function(errorMsg) {
  375. alert("请求数据失败!");
  376. }, 3)
  377. }
  378. // 导出 end