point.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  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(POINT_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.spot_name + "</td>" +
  21. "<td>" + item.company_name + "</td>" +
  22. "<td>" + item.spot_address + "</td>" +
  23. "<td>" + item.type_name + "</td>" +
  24. "<td>" + item.latest_change_time + "</td>" +
  25. "<td ><a class='pointLabel view-detail' data-id=" + item.id + ">查看</a></td>" +
  26. "<td ><a class='pointDetail' data-id=" + item.id + "><img src='../../images/tupianbtn.png'></a></td>"
  27. "</tr>"
  28. })
  29. $('#dataList').html(items);
  30. } else {
  31. $('#dataList').html('');
  32. }
  33. totalPages = result.totalCount / result.limit;
  34. totalPages = Math.ceil(totalPages);
  35. $('#totalPage').html(totalPages); //总共多少页
  36. $('#dataTotal').html(result.totalCount); //总共多少条数据
  37. $('#currentPage').val(page); //当前页面
  38. let pageFrom = (page - 1) * result.limit + 1; //开始
  39. let pageTo = result.page * result.limit; //结束
  40. pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;
  41. $('#pageFrom').html(pageFrom);
  42. $('#pageTo').html(pageTo);
  43. // 无数据时
  44. if (!result.totalCount) {
  45. $('.pager.has-data').hide()
  46. $('.pager.no-data').show()
  47. } else {
  48. $('.pager.has-data').show()
  49. $('.pager.no-data').hide()
  50. }
  51. if (page < totalPages) {
  52. $('#nextPageButton,#lastPageButton').removeClass('disabled');
  53. } else {
  54. $('#nextPageButton,#lastPageButton').addClass('disabled');
  55. }
  56. if (page === 1) {
  57. $('#firstPageButton,#prevPageButton').addClass('disabled');
  58. } else {
  59. $('#firstPageButton,#prevPageButton').removeClass('disabled');
  60. }
  61. }, function(errorMsg) {
  62. alert("请求数据失败!");
  63. }, 3)
  64. }
  65. //单位下拉
  66. getNameList()
  67. //单位下拉 ajax请求
  68. function getNameList() {
  69. ajaxRequest(DEVICE_TYPE_COMPANYLIST, "POST", {}, function(result) {
  70. let data = result.RESULT;
  71. let items = '';
  72. data.forEach(function(item, key) {
  73. items += `<option value="${item.owner_id}">${item.owner_name}</option>`
  74. })
  75. $('#getNameList').append(items);
  76. $('#getNameList2').append(items);
  77. }, function(errorMsg) {
  78. alert("请求数据失败!");
  79. })
  80. }
  81. //按钮搜索
  82. $('#buttonSearch').on('click', function() {
  83. page = 1;
  84. getListDataAjax(getSearchParamObj());
  85. param1 = $('#spot_name').val()
  86. param2 = $('#spot_address').val()
  87. })
  88. //拼接搜索条件
  89. function getSearchParamObj() {
  90. let queryParam = {};
  91. let spot_name = $('#spot_name').val();
  92. let spot_address = $('#spot_address').val();
  93. queryParam.spot_name = spot_name;
  94. queryParam.spot_address = spot_address;
  95. return queryParam;
  96. }
  97. //重置表单
  98. $('.reset').click(resetForm);
  99. //分页刷新按钮
  100. $('.pg-refresh').click(resetForm);
  101. //重置表单
  102. function resetForm() {
  103. page = 1;
  104. $("#spot_name").val("");
  105. $("#spot_address").val("");
  106. getListDataAjax(getSearchParamObj());
  107. param1 = $('#spot_name').val()
  108. param5 = $('#spot_address').val()
  109. }
  110. //分页操作
  111. $('#firstPageButton').on('click', function() {
  112. page = 1;
  113. getListDataAjax(getSearchParamObj(), 1);
  114. })
  115. $('#lastPageButton').on('click', function() {
  116. page = totalPages;
  117. getListDataAjax({}, page);
  118. })
  119. $('#prevPageButton').on('click', function() {
  120. page -= 1;
  121. getListDataAjax(getSearchParamObj(), page);
  122. })
  123. $('#nextPageButton').on('click', function() {
  124. page += 1;
  125. getListDataAjax(getSearchParamObj(), page);
  126. })
  127. layui.use('layer', function() {
  128. // 新增弹框
  129. $(document).on('click', '.add', function() {
  130. layerCreateIndex = layer.open({
  131. type: 1,
  132. title: false,
  133. closeBtn: 0,
  134. shadeClose: false,
  135. skin: 'yourclass',
  136. area: ['450px', '400px'],
  137. content: $(".addDataOut"),
  138. success: function() {
  139. // getTeamInnerList();
  140. $('.clsBtn,.cancel').click(function() {
  141. innerPage = 1;
  142. layer.close(layerCreateIndex);
  143. })
  144. }
  145. })
  146. })
  147. //修改弹框信息
  148. $('.edit').click(function() {
  149. let dataId = $('.pure-table #dataList tr').find('.checked').data('id');
  150. if (!$('.pure-table tr').has('.checked').length) {
  151. layer.msg('请选择一条需要修改的信息!', { icon: 5 });
  152. } else {
  153. let userInfo = $('.pure-table tr').find('.checked').data('user');
  154. $('.editDataOut input[name=spot_name]').val(userInfo.spot_name)
  155. $('.editDataOut select[name=company_code]').val(userInfo.company_code)
  156. $('.editDataOut input[name=spot_address]').val(userInfo.spot_address)
  157. $('.editDataOut input[name=equipment_code]').val(userInfo.spot_label_analysis)
  158. $("input[name='spot_type']").each(function() {
  159. if ($(this).val() != userInfo.spot_type) {
  160. $(this).removeAttr("checked");
  161. } else {
  162. $(this).prop("checked", "checked");
  163. }
  164. });
  165. layui.use(['form'], function() {
  166. var form = layui.form;
  167. form.render('radio');
  168. })
  169. if (userInfo.picture_route) {
  170. $('#pictureRouteShow').attr('src', userInfo.picture_route)
  171. $('#pictureRouteShow').css('display', 'block')
  172. }
  173. layerUpdateIndex = layer.open({
  174. type: 1,
  175. title: false,
  176. closeBtn: 0,
  177. shadeClose: false,
  178. skin: 'yourclass',
  179. area: ['450px', '400px'],
  180. content: $(".editDataOut"),
  181. success: function() {
  182. $('.clsBtn,.cancel').click(function() {
  183. innerPage = 1;
  184. layer.close(layerUpdateIndex);
  185. })
  186. }
  187. });
  188. // start
  189. $('#editDataForm input[name=picture_route]').off('change').on('change', function() {
  190. // 先获取用户上传的文件对象
  191. let fileObj = this.files[0];
  192. // 生成一个文件读取的内置对象
  193. let fileReader = new FileReader();
  194. // 将文件对象传递给内置对象
  195. fileReader.readAsDataURL(fileObj); //这是一个异步执行的过程,所以需要onload回调函数执行读取数据后的操作
  196. // 将读取出文件对象替换到img标签
  197. fileReader.onload = function() { // 等待文件阅读器读取完毕再渲染图片
  198. $('#pictureRouteShow').attr('src', fileReader.result)
  199. $('#pictureRouteShow').css('display', 'block')
  200. }
  201. uploadImg('pictureRouteEit', function(result) {
  202. result = JSON.parse(result);
  203. if (!result.flag) {
  204. alert('上传图片失败')
  205. return;
  206. }
  207. $('#picture_route').val(result.data)
  208. });
  209. });
  210. // end
  211. }
  212. })
  213. //删除信息
  214. $('.delete').click(function() {
  215. if (!$('.pure-table tr').has('.checked').length) {
  216. //layer.msg('请选择一条需要修改的信息');
  217. layer.msg('请选择一条需要删除的信息!', { icon: 5 });
  218. } else {
  219. let dataId = $('.pure-table #dataList tr').find('.checked').data('id');
  220. ajaxRequest(POINT_DELETE, "POST", { "ID_LIST": [{ "id": dataId }] }, function(result) {
  221. $(".pure-table tbody tr.selected").remove()
  222. layer.close(layer.layerCreateIndex);
  223. layer.msg('删除成功!', { icon: 6 });
  224. getListDataAjax()
  225. }, function(errorMsg) {
  226. alert("用户删除失败!");
  227. }, 2)
  228. }
  229. })
  230. })
  231. /* 新增发送请求 */
  232. $('#addData').click(function() {
  233. //获取表单的值 并转换成对象
  234. let allParam = serializeArrayToObj($("#addDataForm").serializeArray());
  235. //验证数据是否为空
  236. let res = validParamIsEmpty(allParam, {
  237. "spot_name": "请输入点位名称",
  238. "company_code": "请选择所属单位/项目",
  239. "spot_address": "请输入点位地址",
  240. "equipment_code": "请输入设备编号",
  241. "spot_type": "请选择设备类型",
  242. });
  243. if (res.code == -1) {
  244. alert(res.msg);
  245. return;
  246. }
  247. //验证文件
  248. // 判断文件是否为空
  249. var file = $("input[name='picture_route']").val(); //用户文件内容(文件)
  250. if (file == "") {
  251. alert("请选择上传的目标文件! ")
  252. return false;
  253. }
  254. //判断文件类型
  255. var fileExtension = file.substring(file.lastIndexOf(".") + 1).toLowerCase();
  256. let allowExtension = ['jpg', 'jpeg', 'png', 'gif'];
  257. if (allowExtension.indexOf(fileExtension.toLowerCase()) < 0) {
  258. alert("请选择图片文件!");
  259. return false;
  260. }
  261. //上传文件
  262. uploadImg('pictureRouteAdd', function(data) {
  263. data = JSON.parse(data); //aa json字符串转对象
  264. if (data.flag) {
  265. //将返回的路径 拼接到提交的数据对象里
  266. allParam['picture_route'] = data.data;
  267. //验证通过 请求ajax
  268. ajaxRequest(POINT_ADD, "POST", allParam, function(result) {
  269. layer.close(layerCreateIndex);
  270. layer.msg('添加成功!', { icon: 6 });
  271. getListDataAjax();
  272. $('#addDataForm')[0].reset();
  273. }, function(errorMsg) {
  274. alert("异常错误!");
  275. }, 3)
  276. } else {
  277. //这里应该弹出删除失败的 后台返回的原因
  278. alert('上传图片失败');
  279. return;
  280. }
  281. });
  282. })
  283. /* 修改发送请求 */
  284. $('#updateData').click(function() {
  285. //获取表单的值 并转换成对象
  286. let allParam = serializeArrayToObj($("#editDataForm").serializeArray());
  287. //验证数据是否为空
  288. let res = validParamIsEmpty(allParam, {
  289. "spot_name": "请输入点位名称",
  290. "company_code": "请选择所属单位/项目",
  291. "spot_address": "请输入点位地址",
  292. "equipment_code": "请输入设备编号",
  293. "spot_type": "请选择设备类型",
  294. });
  295. if (res.code == -1) {
  296. alert(res.msg);
  297. return;
  298. }
  299. //验证文件
  300. // 判断文件是否为空
  301. if ($("input[name='picture_route']").val()) {
  302. var file = $("input[name='picture_route']").val(); //用户文件内容(文件)
  303. //判断文件类型
  304. var fileExtension = file.substring(file.lastIndexOf(".") + 1).toLowerCase();
  305. let allowExtension = ['jpg', 'jpeg', 'png', 'gif'];
  306. if (allowExtension.indexOf(fileExtension.toLowerCase()) < 0) {
  307. alert("请选择图片文件!");
  308. return false;
  309. }
  310. }
  311. let dataId = $('.pure-table tr').find('.checked').data('id');
  312. allParam.id = dataId;
  313. ajaxRequest(POINT_EDIT, "POST", allParam, function(result) {
  314. layer.close(layerUpdateIndex);
  315. layer.msg('修改成功!', { icon: 6 });
  316. getListDataAjax();
  317. }, function(errorMsg) {
  318. alert("数据修改失败!");
  319. }, 2)
  320. })
  321. // 导出 start
  322. $('.export').click(function() {
  323. getDataExport({ "spot_name": param1, "spot_address": param2 })
  324. })
  325. function getDataExport(queryParam = {}) {
  326. // 输出base64编码
  327. const base64 = s => window.btoa(unescape(encodeURIComponent(s)));
  328. ajaxRequest(POINT_EXPORT, "POST", queryParam, function(result) {
  329. let data = result.RESULT;
  330. let newData = [];
  331. if (data) {
  332. data.forEach(function(item, index) {
  333. newData.push({ xh: item.xh, spot_name: item.spot_name, company_name: item.company_name, spot_address: item.spot_address, type_name: item.type_name, latest_change_time: item.latest_change_time })
  334. });
  335. }
  336. let str = '<tr style="text-align:center"><th>序号</th><th>点位名称</th><th>所属单位/项目</th><th>点位地址</th><th>设备类型</th><th>最新更改时间</th></tr>';
  337. // 循环遍历,每行加入tr标签,每个单元格加td标签
  338. for (let i = 0; i < newData.length; i++) {
  339. str += '<tr style="text-align:center">';
  340. for (const key in newData[i]) {
  341. // 增加\t为了不让表格显示科学计数法或者其他格式
  342. str += `<td x:str>${ newData[i][key] + '\t'}</td>`;
  343. }
  344. str += '</tr>';
  345. }
  346. // Worksheet名
  347. const worksheet = 'Sheet1'
  348. const uri = 'data:application/vnd.ms-excel;base64,';
  349. // 下载的表格模板数据
  350. const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"
  351. xmlns:x="urn:schemas-microsoft-com:office:excel"
  352. xmlns="http://www.w3.org/TR/REC-html40">
  353. <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
  354. <x:Name>${worksheet}</x:Name>
  355. <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
  356. </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
  357. </head><body><table>${str}</table></body></html>`;
  358. // 通过创建a标签实现
  359. const link = document.createElement("a");
  360. link.href = uri + base64(template);
  361. // 对下载的文件命名
  362. link.download = "维保点位数据表.xls";
  363. link.click();
  364. }, function(errorMsg) {
  365. alert("请求数据失败!");
  366. }, 3)
  367. }
  368. // 导出 end
  369. //点位标签弹框
  370. // var flag = true;
  371. $(document).on('click', 'a.pointLabel', function(event) {
  372. // alert(1)
  373. let dwId = $(this).data('id');
  374. layerDepartmentIndex = layer.open({
  375. type: 1,
  376. title: false,
  377. closeBtn: 0,
  378. shadeClose: false,
  379. skin: 'yourclass',
  380. area: [
  381. '450px', '430px'
  382. ],
  383. content: $(".pointLabelOut"),
  384. success: function() {
  385. ajaxRequest(POINT_LIST, "POST", { "id": dwId }, function(result) {
  386. var data = result.RESULT[0];
  387. $('#pointDetailUrl').attr('src', BASEURL + data.spot_label_route);
  388. $('#spotName').html(data.spot_name);
  389. $('#spotAddress').html(data.spot_address);
  390. $('#spotLabelAnalysis').html(data.spot_label_analysis);
  391. $('#data1').html(data.data1);
  392. }, function(errorMsg) {
  393. alert("请求数据失败!");
  394. }, 3);
  395. }
  396. })
  397. event.stopPropagation();
  398. })
  399. $('.pointLabelDownload').click(function() {
  400. cutDiv()
  401. })
  402. $('.clsBtn2,.cancel2').click(function() {
  403. innerPage = 1;
  404. layer.close(layerDepartmentIndex);
  405. })
  406. //点位详情点击
  407. $(document).on('click', 'a.pointDetail', function(event) {
  408. let id = $(this).data('id'); //单位ID
  409. layerReportIndex = layer.open({
  410. type: 1,
  411. title: false,
  412. closeBtn: 0,
  413. shadeClose: false,
  414. skin: 'yourclass',
  415. area: [
  416. '400px', '400px'
  417. ],
  418. content: $(".pointDetailOut"),
  419. success: function() {
  420. ajaxRequest(POINT_LIST, "POST", { "id": id }, function(result) {
  421. var data = result.RESULT[0];
  422. $('#weibaoReportUrl').attr('src', data.picture_route);
  423. }, function(errorMsg) {
  424. alert("请求数据失败!");
  425. }, 3);
  426. $('.clsBtn3,.cancel3').click(function() {
  427. layer.close(layerReportIndex);
  428. })
  429. }
  430. })
  431. event.stopPropagation();
  432. })
  433. // 点位标签下载 start
  434. var saveFile = function(data, filename) {
  435. var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
  436. save_link.href = data;
  437. save_link.download = filename;
  438. var event = document.createEvent('MouseEvents');
  439. event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  440. save_link.dispatchEvent(event);
  441. }
  442. var downPng = function(canvas) {
  443. console.log(canvas);
  444. var img_data1 = Canvas2Image.saveAsPNG(canvas, true).getAttribute('src');
  445. saveFile(img_data1, 'download.png');
  446. }
  447. var cutDiv = function() {
  448. var content = document.getElementById("imgOut");
  449. html2canvas(content, {
  450. onrendered: function(canvas) {
  451. downPng(canvas);
  452. }
  453. });
  454. }
  455. // 点位标签下载 end