parkPatrolRecord.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  7. <title>管养问题随手拍列表</title>
  8. <link rel="stylesheet" href="../../../assets/libs/layui/css/layui.css"/>
  9. <link rel="stylesheet" href="../../../assets/module/admin.css?v=312"/>
  10. <style>
  11. .layui-table-cell {
  12. height: auto;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <!-- 页面加载loading -->
  18. <div class="page-loading">
  19. <div class="ball-loader">
  20. <span></span><span></span><span></span><span></span>
  21. </div>
  22. </div>
  23. <!-- 正文开始 -->
  24. <div class="layui-fluid">
  25. <div class="layui-card">
  26. <div class="layui-card-body">
  27. <form class="layui-form m-top10px m-bottom10px" lay-filter="filterForm" id="filterForm">
  28. <div class="layui-form toolbar">
  29. <div class="layui-form-item">
  30. <div class="layui-inline">
  31. <label class="layui-form-label w-auto w-padding">网格:</label>
  32. <div class="layui-input-inline mr0">
  33. <div id="grid"></div>
  34. <input type="hidden" name="confParentId" id="confParentId">
  35. </div>
  36. </div>
  37. <div class="layui-inline">
  38. <label class="layui-form-label ">站点:</label>
  39. <div class="layui-input-inline mr0">
  40. <div id="site"></div>
  41. <input type="hidden" name="confId" id="confId">
  42. </div>
  43. </div>
  44. <div class="layui-inline ">
  45. <label class="layui-form-label">日期</label>
  46. <div class="layui-input-block">
  47. <input type="text" name="hiddenTime" id="hiddenTime" autocomplete="off"
  48. placeholder="开始日期 至 结束日期" class="layui-input">
  49. </div>
  50. </div>
  51. <button type="button" lay-filter="formSubSearch" lay-submit
  52. class="layui-btn layui-btn-normal layui-btn-sm"
  53. style="height: 36px;width:80px;margin-left:15px;margin-top: 0px;position: relative;top: -5px">
  54. <i class="layui-icon"></i>搜索
  55. </button>
  56. </div>
  57. </div>
  58. </form>
  59. <table class="layui-table" id="datatable" lay-filter="datatable"></table>
  60. </div>
  61. </div>
  62. </div>
  63. <!-- js部分 -->
  64. <script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>
  65. <script type="text/javascript" src="../../../assets/libs/jquery/jquery-3.2.1.min.js"></script>
  66. <script type="text/javascript" src="../../../assets/libs/leftTime/leftTime.js"></script>
  67. <script type="text/javascript" src="../../../assets/js/common.js?v=312"></script>
  68. <!-- 表单弹窗 -->
  69. <script type="text/html" id="distributionModelTpl">
  70. <form id="modelForm" lay-filter="modelForm" class="layui-form model-form">
  71. <input type="hidden" id="patrolId" name="patrolId">
  72. <div class="layui-form-item">
  73. <label class="layui-form-label">岗位</label>
  74. <div class="layui-input-block">
  75. <select id="patrolPId" name="patrolPId" lay-filter="patrolPId" lay-search="" lay-verify="required"
  76. required></select>
  77. </div>
  78. </div>
  79. <div class="layui-form-item">
  80. <label class="layui-form-label">责任人:</label>
  81. <div class="layui-input-block">
  82. <select id="patrolAId" name="patrolAId" lay-verType="tips" class="layui-input-block"
  83. xm-select="patrolAId"
  84. lay-verify="required" required
  85. xm-select-search>
  86. <option value="">直接选择责任人或搜索选择责任人</option>
  87. </select>
  88. </div>
  89. </div>
  90. <div class="layui-form-item text-right">
  91. <button class="layui-btn layui-btn-primary" type="button" ew-event="closePageDialog">取消</button>
  92. <button class="layui-btn" lay-filter="modelSubmit" lay-submit>保存</button>
  93. </div>
  94. </form>
  95. </script>
  96. <script>
  97. layui.use(['layer', 'form', 'table', 'admin', 'jquery', 'uParas', '_groupTree', 'util', 'laydate', 'xmSelect'], function () {
  98. var $ = layui.jquery;
  99. var layer = layui.layer;
  100. var form = layui.form;
  101. var table = layui.table;
  102. var admin = layui.admin;
  103. var laydate = layui.laydate;
  104. var uParas = layui.uParas;
  105. var util = layui.util;
  106. var _groupTree = layui._groupTree;
  107. var xmSelect = layui.xmSelect;
  108. var {cId, aId, gId, itIsAdmin} = layui.data(uParas.tableName).user;
  109. var sourceVal = uParas.getUrlParam("sourceVal");
  110. if (itIsAdmin) {
  111. console.log(itIsAdmin);
  112. }
  113. form.on('select(patrolPId)', function (data) {
  114. var patrolPIdVal = $('#patrolPId').val()
  115. // uParas.initFormSelects("patrolAId", "/admin/common/getAccountByGroupAndPId?groupId="+ gId +"&positionId=" + patrolPIdVal, "accountRealName", "aId");
  116. uParas.initSimpleSelect("patrolAId", 'modelForm', "/admin/common/getAccountByGroupAndPId?positionId=" + patrolPIdVal, "accountRealName", "aId");
  117. });
  118. var url1 = uParas.baseUrl + '/ent/plus/conf/list?sourceVal=' + sourceVal;
  119. function toTree(data) {
  120. data.forEach(function (item) {
  121. delete item.children
  122. item.name = item.name
  123. item.value = item.confId
  124. })
  125. var map = {}
  126. data.forEach(function (item) {
  127. map[item.confId] = item
  128. })
  129. var val = []
  130. data.forEach(function (item) {
  131. var parent = map[item.parentId]
  132. if (parent) {
  133. (parent.children || (parent.children = [])).push(item)
  134. } else {
  135. val.push(item)
  136. }
  137. })
  138. return val
  139. }
  140. var gridSelect, siteSelect;
  141. var treeData = [];
  142. admin.req(url1, {}, function (resp) {
  143. if (resp.code == 1) {
  144. resp.data.forEach(function (item) {
  145. item.name = item.name
  146. item.value = item.confId
  147. })
  148. var temp = JSON.parse(JSON.stringify(resp.data))
  149. var tempData = resp.data.filter(function (item) {
  150. return item.type === 1;
  151. })
  152. var treeData = toTree(temp);
  153. gridSelect = xmSelect.render({
  154. el: '#grid',
  155. radio: true,
  156. toolbar: {show: true},
  157. on: function (data) {
  158. //arr: 当前多选已选中的数据
  159. var arr = data.arr;
  160. if (arr.length > 0) {
  161. $('#confParentId').val(arr[0].value);
  162. var childrenData = [];
  163. for (var i = 0; i < treeData.length; i++) {
  164. if (treeData[i].value === arr[0].value) {
  165. childrenData = treeData[i].children;
  166. }
  167. }
  168. initSiteSelect(childrenData);
  169. } else {
  170. $('#confParentId').val("");
  171. initSiteSelect();
  172. }
  173. },
  174. data: tempData
  175. })
  176. }
  177. }, 'GET');
  178. function initSiteSelect(data = []) {
  179. siteSelect = xmSelect.render({
  180. el: '#site',
  181. radio: true,
  182. toolbar: {show: true},
  183. on: function (data) {
  184. //arr: 当前多选已选中的数据
  185. var arr = data.arr;
  186. if (arr.length > 0) {
  187. $('#confId').val(arr[0].value);
  188. } else {
  189. $('#confId').val("");
  190. }
  191. },
  192. data: data
  193. })
  194. }
  195. initSiteSelect();
  196. /*日期*/
  197. laydate.render({
  198. elem: '#hiddenTime',
  199. format: 'yyyy-MM-dd',
  200. range: '至',
  201. type: 'date',
  202. });
  203. // 搜索
  204. form.on('submit(formSubSearch)', function (data) {
  205. /*更新数据表*/
  206. // var data = {"hiddenTime":$("#hiddenTime").val(),"groupId":$("#selectedGroup").val()};
  207. var {field} = data;
  208. var timeArr = null;
  209. var timeArr = field.hiddenTime != "" ? field.hiddenTime.split("至") : null;
  210. var reqData = {
  211. confParentId: field.confParentId,
  212. startTime: timeArr ? timeArr[0].trim() : "",
  213. endTime: timeArr ? timeArr[1].trim() : "",
  214. confId: field.confId,
  215. sourceVal: sourceVal,
  216. }
  217. insTb.reload({where: reqData}, 'data');
  218. });
  219. // 渲染表格数据
  220. var insTb = table.render({
  221. elem: '#datatable',
  222. url: uParas.baseUrl + '/ent/plus/patrolRecord/queryUp',
  223. where: {
  224. sourceVal: sourceVal
  225. },
  226. height: 687,
  227. even: true,
  228. page: true,
  229. toolbar: true,
  230. title: '隐患治理',
  231. cellMinWidth: 100,
  232. cols: [[
  233. {type: 'numbers', title: '序号'},
  234. {
  235. field: 'hiddenDangerImg', align: 'center', sort: false, title: '图片', width: 70,
  236. templet: function (d) {
  237. return setHdangerImg(d.hiddenDangerImg);
  238. }
  239. },
  240. {field: 'confParentName', sort: false, title: '网格'},
  241. {field: 'confName', sort: false, title: '站点'},
  242. {field: 'createdTime', sort: false, title: '管养问题发现时间'},
  243. {field: 'hiddenDangerName', sort: false, title: '管养问题名称'},
  244. {field: 'address', sort: false, title: '管养问题地址'},
  245. {field: 'hdType', sort: false, title: '问题类型'},
  246. // {field: 'hiddenDangerDesc' , sort:false , title:'隐患描述'},
  247. // {
  248. // field: 'patrolSource', sort: false, title: '隐患来源', templet: function (d) {
  249. // var result = "";
  250. // // 1 自己发现 2 上报 3 分发 4不合格
  251. // if (d.patrolSource === 1) {
  252. // result = "自行巡检"
  253. // } else if (d.patrolSource === 2) {
  254. // result = "上报"
  255. // } else if (d.patrolSource === 3) {
  256. // result = "分发"
  257. // } else if (d.patrolSource === 4) {
  258. // result = "不合格"
  259. // }
  260. // return result;
  261. // }
  262. // },
  263. {field: 'positionName', align: 'left', sort: false, title: '巡查岗位'},
  264. {field: 'accountName', align: 'left', sort: false, title: '巡查人'},
  265. {field: 'positionUpName', align: 'left', sort: false, title: '上报岗位'},
  266. {field: 'accountUpName', align: 'left', sort: false, title: '上报处理人'},
  267. // {
  268. // field: 'solveType', sort: false, title: '处理类型', templet: function (d) {
  269. // var result = "";
  270. // // 1 自行解决 2 上报
  271. // if(d.solveType === 1){
  272. // result = "自行解决"
  273. // }else if(d.solveType === 2){
  274. // result = "上报"
  275. // }
  276. // return result;
  277. // }
  278. // },
  279. //
  280. // {field: 'solveDesc' , sort:false , title:'解决办法'},
  281. // {field: 'solveImg' , align: 'center',sort:false , title:'解决完成拍照' , width:70,
  282. // templet: function (d) {
  283. // return setHdangerImg(d.solveImg);
  284. // }
  285. // },
  286. {
  287. field: 'status', sort: false, title: '状态', templet: function (d) {
  288. var result = "";
  289. // 1 未解决 2 撤销 3上报 4 解决
  290. if (d.status === 1) {
  291. result = "未解决"
  292. } else if (d.status === 2) {
  293. result = "已撤销"
  294. } else if (d.status === 3) {
  295. result = "已上报"
  296. } else if (d.status === 4) {
  297. result = "已解决"
  298. } else if (d.status === 6) {
  299. result = "合格"
  300. }
  301. return result;
  302. }
  303. },
  304. {
  305. align: 'left', title: '操作', width: 170,
  306. templet: function (d) {
  307. return setOperation(d);
  308. }
  309. }
  310. ]]
  311. });
  312. /*隐患附件*/
  313. function setHdangerImg(imgUrl) {
  314. var imgSrc = '/assets/images/error.jpg';
  315. if (imgUrl != null && imgUrl != '') {
  316. var hdImg = imgUrl.split(',');
  317. imgSrc = hdImg[0];
  318. }
  319. return '<a lay-event="showImg"><img style="display: inline-block;width: 40px;height: 40px;" src="' + imgSrc + '" ></a>'
  320. }
  321. /*操作*/
  322. function setOperation(data) {
  323. var html = '';
  324. var {status} = data;
  325. if (data.patrolPosition == null) {
  326. html += '<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="distribution">分配</a>';
  327. }
  328. html += `
  329. <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail" >详情</a>
  330. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
  331. `;
  332. return html;
  333. }
  334. // 工具条点击事件
  335. table.on('tool(datatable)', function (obj) {
  336. //debugger
  337. var data = obj.data;
  338. var layEvent = obj.event;
  339. if (layEvent == 'del') { // 删除
  340. doDel(data);
  341. } else if (layEvent == 'distribution') { // 分配
  342. showDistributionModel(data);
  343. } else if (layEvent == 'detail') { // 详情
  344. detail(data);
  345. } else if (layEvent == 'showImg') { // 展示附件
  346. var hdImg = data.hiddenDangerImg.split(',');
  347. showImg(hdImg[0]);
  348. }
  349. });
  350. // 显示分配隐患弹窗
  351. function showDistributionModel(data) {
  352. admin.open({
  353. type: 1,
  354. title: '分配问题',
  355. content: $('#distributionModelTpl').html(),
  356. success: function (layero, dIndex) {
  357. // admin/common/getAccountByGroupAndPId?groupId=20001418&positionId=
  358. //admin/common/getPositionByGroup?groupId=20001418
  359. //admin/common/getAccountByGroupAndPId?groupId=20001418&positionId=20000053
  360. if (itIsAdmin) {
  361. uParas.initSimpleSelect("patrolPId", 'modelForm', "/ent/position/getList", "positionTitle", "pId");
  362. } else {
  363. uParas.initSimpleSelect("patrolPId", 'modelForm', "/api/plus/getDownPosition", "positionTitle", "pId");
  364. }
  365. // uParas.initSimpleSelect("patrolAId",'modelForm', "/ent/groupAccount/queryAccounts", "accountRealName", "aId");
  366. form.val('modelForm', {
  367. patrolId: data.patrolId,
  368. });
  369. var url = uParas.baseUrl + '/ent/plus/patrolRecord/distributeHd';
  370. // 保存处理
  371. form.on('submit(modelSubmit)', function (data) {
  372. layer.load();
  373. data.field.sourceVal = sourceVal;
  374. admin.req(url, data.field, function (resp) {
  375. layer.closeAll('loading');
  376. if (resp.code == 1) {
  377. layer.close(dIndex);
  378. layer.msg(resp.msg);
  379. insTb.reload({}, 'data');
  380. } else {
  381. layer.msg(resp.msg);
  382. }
  383. }, 'POST');
  384. return false;
  385. });
  386. }
  387. });
  388. }
  389. // 删除
  390. function doDel(data) {
  391. layer.confirm('确定要删除“' + data.hiddenDangerName + '”吗?', {
  392. skin: 'layui-layer-admin',
  393. shade: .1
  394. }
  395. , function (i) {
  396. layer.close(i);
  397. layer.load();
  398. admin.req(uParas.baseUrl + '/ent/parkPatrolRecord/delById', {
  399. id: data.patrolId
  400. }, function (res) {
  401. layer.closeAll('loading');
  402. if (res.code == 1) {
  403. layer.msg(res.msg);
  404. insTb.reload({}, 'data');
  405. } else {
  406. layer.msg(res.msg);
  407. }
  408. }, 'GET');
  409. });
  410. }
  411. // 编辑页面
  412. function goEditPage(data) {
  413. location.href = "./editHdanger.html?hdangerId=" + data.hdangerId;
  414. }
  415. //详情
  416. function detail(data) {
  417. location.href = "./details.html?patrolId=" + data.patrolId;
  418. }
  419. function showImg(src) {
  420. openImage(src);
  421. }
  422. });
  423. </script>
  424. </body>
  425. </html>