index.html 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090
  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. <link rel="stylesheet" href="../../../assets/module/uParas.css?v=312"/>
  11. <link rel="stylesheet" href="../../../assets/module/formSelects/formSelects-v4.css"/>
  12. <style>
  13. .layui-table-cell {
  14. overflow: visible !important;
  15. height: auto;
  16. /*line-height: 20px;*/
  17. text-overflow: inherit;
  18. white-space: normal;
  19. word-break: break-all;
  20. }
  21. .layui-table-box {
  22. overflow: visible;
  23. }
  24. .layui-table-body {
  25. overflow: visible;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <!-- 页面加载loading -->
  31. <div class="page-loading">
  32. <div class="ball-loader">
  33. <span></span><span></span><span></span><span></span>
  34. </div>
  35. </div>
  36. <!-- 正文开始 -->
  37. <div class="layui-fluid">
  38. <div class="layui-card">
  39. <div class="layui-card-body">
  40. <div class="layui-card-body">
  41. <div class="layui-tab layui-tab-brief" lay-filter="tab_ds">
  42. <ul class="layui-tab-title">
  43. <li class="layui-this" lay-id="index" id="index"></li>
  44. <li lay-id="risk">风险库</li>
  45. </ul>
  46. <div class="layui-tab-content" style="height: auto;">
  47. <div class="layui-tab-item layui-show">
  48. <div class="layui-form toolbar">
  49. <div class="layui-form-item">
  50. <div class="layui-inline">
  51. <label class="layui-form-label w-auto w-padding">等级:</label>
  52. <div class="layui-input-inline mr0">
  53. <select name="dangerSourceLevel" lay-verType="dangerSourceLevel">
  54. <option value="-1">全部</option>
  55. <option value="1">重大</option>
  56. <option value="2">较大</option>
  57. <option value="3">一般</option>
  58. <option value="4">低</option>
  59. </select>
  60. </div>
  61. </div>
  62. <div class="layui-inline">
  63. <label class="layui-form-label w-auto w-padding">搜索:</label>
  64. <div class="layui-input-inline mr0">
  65. <input name="keyword" class="layui-input" type="text" placeholder="输入关键字"/>
  66. </div>
  67. </div>
  68. <div class="layui-inline">
  69. <button class="layui-btn icon-btn" lay-filter="formSubSearch" lay-submit>
  70. <i class="layui-icon">&#xe615;</i>搜索
  71. </button>
  72. </div>
  73. <div class="layui-inline pull-right">
  74. <button id="addDangerSource"
  75. class="layui-btn layui-btn-sm layui-btn-radius layui-btn-normal"><i
  76. class="layui-icon">&#xe654;</i>新增危险源
  77. </button>
  78. <a href="javascript:;" id="downXls"
  79. class="layui-btn layui-btn-sm layui-btn-radius layui-btn-normal"><i
  80. class="layui-icon">&#xe654;</i>下载Excel模版</a>
  81. <button id="importXls"
  82. class="layui-btn layui-btn-sm layui-btn-radius layui-btn-normal"><i
  83. class="layui-icon">&#xe654;</i>Excel导入
  84. </button>
  85. <a href="javascript:;" id="exportXls"
  86. class="layui-btn layui-btn-sm layui-btn-radius layui-btn-normal"><i
  87. class="layui-icon">&#xe654;</i>Excel导出</a>
  88. </div>
  89. </div>
  90. </div>
  91. <table class="layui-table" id="datatable" lay-filter="datatable"></table>
  92. </div>
  93. <div class="layui-tab-item">
  94. <div class="layui-form toolbar" lay-filter="layuiForm">
  95. <div class="layui-form-item">
  96. <div class="layui-inline">
  97. <label class="layui-form-label w-auto w-padding">等级:</label>
  98. <div class="layui-input-inline mr0">
  99. <select name="dangerSourceLevel" lay-verType="dangerSourceLevel">
  100. <option value="-1">全部</option>
  101. <option value="1">重大</option>
  102. <option value="2">较大</option>
  103. <option value="3">一般</option>
  104. <option value="4">低</option>
  105. </select>
  106. </div>
  107. </div>
  108. <div class="layui-inline">
  109. <label class="layui-form-label w-auto w-padding">危险源:</label>
  110. <div class="layui-input-inline mr0">
  111. <input type="text" id="dangerSrcName" class="layui-input"
  112. name="dangerSrcName"
  113. placeholder="点击选择危险源"
  114. class="form-control" readonly required>
  115. <input type="hidden" id="dangerSrcId" name="dangerSrcId" readonly>
  116. <div id="menuContent" class="menuContent">
  117. <ul id="wzTree" class="ztree" style="margin-top:0;"></ul>
  118. </div>
  119. </div>
  120. </div>
  121. <div class="layui-inline">
  122. <label class="layui-form-label w-auto w-padding">管控层级:</label>
  123. <div class="layui-input-inline mr0">
  124. <select name="riskCtrlLevelId" id="riskCtrlLevelId"
  125. lay-filter="riskCtrlLevelId" lay-search="" required></select>
  126. </div>
  127. </div>
  128. <!-- <div class="layui-inline">-->
  129. <!-- <label class="layui-form-label w-auto w-padding">管控岗位:</label>-->
  130. <!-- <div class="layui-input-inline mr0">-->
  131. <!-- <select name="riskCtrlPositionId" id="riskCtrlPositionId" lay-filter="searchRiskCtrlPositionId" lay-search="" required></select>-->
  132. <!-- </div>-->
  133. <!-- </div>-->
  134. <div class="layui-inline">
  135. <label class="layui-form-label w-auto w-padding">搜索:</label>
  136. <div class="layui-input-inline mr0">
  137. <input name="keyword" class="layui-input" type="text" placeholder="输入关键字"/>
  138. </div>
  139. </div>
  140. <div class="layui-inline">
  141. <button class="layui-btn icon-btn" lay-filter="riskSearch" lay-submit>
  142. <i class="layui-icon">&#xe615;</i>搜索
  143. </button>
  144. </div>
  145. <div class="layui-inline pull-right">
  146. <button id="addRisk"
  147. class="layui-btn layui-btn-sm layui-btn-radius layui-btn-normal"><i
  148. class="layui-icon">&#xe654;</i>新增风险
  149. </button>
  150. </div>
  151. </div>
  152. </div>
  153. <table class="layui-table" id="risk" lay-filter="risk"></table>
  154. </div>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. <input type="hidden" name="riskJudgeMethod" id="riskJudgeMethod">
  162. <input type="hidden" name="riskCtrlLevelId_" id="riskCtrlLevelId_">
  163. <script type="text/html" id="modelTpl">
  164. <form id="modelForm" lay-filter="modelForm" class="layui-form model-form">
  165. <input name="riskPointType" id="riskPointType" class="layui-input" type="hidden"/>
  166. <input name="dangerSrcId" class="layui-input" type="hidden"/>
  167. <div class="layui-form-item" id="parentDangerSrc" style="display: none">
  168. <label class="layui-form-label">父级危险源</label>
  169. <div class="layui-input-block">
  170. <input name="parentDangerSrcId" id="parentDangerSrcId" class="layui-input" type="hidden"/>
  171. <input name="parentDangerSrcName" id="parentDangerSrcName" readonly placeholder="请输入父级危险源" type="text"
  172. class="layui-input" maxlength="20"/>
  173. </div>
  174. </div>
  175. <div class="layui-form-item">
  176. <label class="layui-form-label">危险源名称</label>
  177. <div class="layui-input-block">
  178. <input name="dangerSrcName" placeholder="请输入危险源名称" type="text" class="layui-input" maxlength="20"
  179. lay-verType="tips" lay-verify="required" required/>
  180. </div>
  181. </div>
  182. <div class="layui-form-item">
  183. <label class="layui-form-label">编码</label>
  184. <div class="layui-input-block">
  185. <input name="dangerSrcCode" id="dangerSrcCode" placeholder="输入编码名称,只允许字母数字加下划线" type="text"
  186. class="layui-input" maxlength="20"
  187. lay-verType="tips" lay-verify="required" required/>
  188. </div>
  189. </div>
  190. <div class="layui-form-item">
  191. <label class="layui-form-label">固定/移动</label>
  192. <div class="layui-input-block">
  193. <input type="radio" name="isMoveable" value="0" title="固定" checked="">
  194. <input type="radio" name="isMoveable" value="1" title="移动">
  195. </div>
  196. </div>
  197. <div class="layui-form-item" id="uploadImg">
  198. <label class="layui-form-label">图标:</label>
  199. <div class="layui-input-block" style="display: flex;align-items: center;">
  200. <div class="layui-upload-drag">
  201. <i class="layui-icon"></i>
  202. <p>点击上传,或将文件拖拽到此处</p>
  203. </div>
  204. <img src="" id="vDangerImg" width="100px" style="padding-left: 10px">
  205. </div>
  206. <input name="dangerImg" id="dangerImg" type="hidden" class="layui-input">
  207. </div>
  208. <div class="layui-form-item text-right">
  209. <button class="layui-btn layui-btn-primary" type="button" ew-event="closePageDialog">取消</button>
  210. <button class="layui-btn" lay-filter="modelSubmit" lay-submit>保存</button>
  211. </div>
  212. </form>
  213. </script>
  214. <script type="text/html" id="xlsTpl">
  215. <form id="xlsForm" lay-filter="xlsForm" enctype="multipart/form-data" class="layui-form model-form">
  216. <div class="layui-form-item">
  217. <label class="layui-form-label">选择文件:</label>
  218. <div class="layui-input-block" style="display: flex;align-items: center;">
  219. <input name="file" id="file" type="file"/>
  220. </div>
  221. </div>
  222. <div class="layui-form-item text-right">
  223. <button class="layui-btn layui-btn-primary" type="button" ew-event="closePageDialog">取消</button>
  224. <button class="layui-btn" id="xlsSubmit" lay-filter="xlsSubmit" lay-submit>保存</button>
  225. </div>
  226. </form>
  227. </script>
  228. <!-- 表格操作列 -->
  229. <script type="text/html" id="optionTpl">
  230. <div class="layui-btn-group">
  231. {{# if(d.parentDangerSrcId==-1){ }}
  232. <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="add">+子危险源</a>
  233. {{# } }}
  234. <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">编辑</a>
  235. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
  236. </div>
  237. </script>
  238. <script type="text/html" id="riskOptionTpl">
  239. <div class="layui-btn-group">
  240. <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">编辑</a>
  241. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
  242. {{ leca(d.riskLevel) }}
  243. </div>
  244. </script>
  245. <script type="text/html" id="imgTpl">
  246. {{# var imgs=d.dangerImg;}}
  247. {{# if(d.riskPointType==2){ imgs="../../../assets/images/icon/job.png"} }}
  248. {{# if(d.riskPointType==1){ imgs="../../../assets/images/icon/facility.png"} }}
  249. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>
  250. </script>
  251. <script type="text/html" id="lvTpl">
  252. {{# var imgs="",title=""; var lv=d.dangerSourceLevel;}}
  253. {{# if(lv==1){ imgs="../../../assets/images/lv/red.png" ;title="重大" } }}
  254. {{# if(lv==2){ imgs="../../../assets/images/lv/orange.png";title="较大"} }}
  255. {{# if(lv==3){ imgs="../../../assets/images/lv/yellow.png";title="一般"} }}
  256. {{# if(lv==4){ imgs="../../../assets/images/lv/blue.png";title="较低"} }}
  257. {{# if(lv==1){ }}
  258. <div class='notify'><span class='heartbit'></span><span>
  259. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  260. </span>
  261. </div>
  262. {{# }else{ }}
  263. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  264. {{# } }}
  265. </script>
  266. <script type="text/html" id="riskLvTpl">
  267. {{# var imgs="",title=""; var lv=d.riskLevel;}}
  268. {{# if(lv==1){ imgs="../../../assets/images/lv/red.png" ;title="重大" } }}
  269. {{# if(lv==2){ imgs="../../../assets/images/lv/orange.png";title="较大"} }}
  270. {{# if(lv==3){ imgs="../../../assets/images/lv/yellow.png";title="一般"} }}
  271. {{# if(lv==4){ imgs="../../../assets/images/lv/blue.png";title="较低"} }}
  272. {{# if(lv==1){ }}
  273. <a lay-event="lv" href="javascript:;">
  274. <div class='notify'><span class='heartbit'></span><span>
  275. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  276. </span>
  277. </div>
  278. </a>
  279. {{# }else{ }}
  280. <a lay-event="lv" href="javascript:;">
  281. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  282. </a>
  283. {{# } }}
  284. </script>
  285. <script type="text/html" id="positionTpl">
  286. <form id="modelUserForm" lay-filter="modelUserForm" class="layui-form model-form">
  287. <div class="layui-form-item">
  288. <label class="layui-form-label">管控岗位:</label>
  289. <div class="layui-input-block">
  290. <select name="riskCtrlPositionId" lay-verType="tips" class="layui-input-block"
  291. xm-select="riskCtrlPositionId" xm-select-search>
  292. <option value="">直接管控岗位或搜索选择管控岗位</option>
  293. </select>
  294. </div>
  295. </div>
  296. </form>
  297. </script>
  298. <!-- js部分 -->
  299. <script type="text/javascript" src="../../../assets/libs/jquery/jquery-3.2.1.min.js"></script>
  300. <script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>
  301. <script type="text/javascript" src="../../../assets/js/common.js?v=312"></script>
  302. <script type="text/javascript" src="../../../assets/js/lec.js?v=312"></script>
  303. <script>
  304. layui.use(['layer', 'form', 'table', 'util', 'admin', 'zTree', 'uParas', 'upload', 'treetable', 'element', '_zTree', 'formSelects'], function () {
  305. var $ = layui.jquery;
  306. var layer = layui.layer;
  307. var form = layui.form;
  308. var table = layui.table;
  309. var util = layui.util;
  310. var admin = layui.admin;
  311. var uParas = layui.uParas;
  312. var element = layui.element;
  313. var _zTree = layui._zTree;
  314. var formSelects = layui.formSelects;
  315. var cacheData = layui.data(uParas.tableName);
  316. // 渲染表格
  317. var riskPointType = uParas.getUrlParam("riskPointType");
  318. if (riskPointType == 1) {
  319. $("#index").html("设备危险源");
  320. }
  321. if (riskPointType == 2) {
  322. $("#index").html("作业危险源");
  323. }
  324. if (riskPointType == 3) {
  325. $("#index").html("环境危险源");
  326. }
  327. if (riskPointType == 4) {
  328. $("#index").html("设施危险源");
  329. }
  330. if (riskPointType == 5) {
  331. $("#index").html("其他危险源");
  332. }
  333. var tab = uParas.getUrlParam("tab");
  334. if (tab != null) {
  335. element.tabChange('tab_ds', tab);
  336. }
  337. element.on('tab(tab_ds)', function () {
  338. location.hash = 'tab=' + this.getAttribute('lay-id');
  339. });
  340. var treetable = layui.treetable;
  341. laodTreetable();
  342. $("#downXls").attr("href", uParas.staticUrl + "/excel/sysRiskNew.xlsx");
  343. function laodTreetable(data) {
  344. var insTb = treetable.render({
  345. url: uParas.baseUrl + '/gent/ds/list?riskPointType=' + riskPointType + "&limit=1000",
  346. treeColIndex: 1,
  347. treeSpid: "-1",
  348. treeIdName: 'dangerSrcId',
  349. treePidName: 'parentDangerSrcId',
  350. elem: '#datatable',
  351. cellMinWidth: 100,
  352. // height: 'full-200',
  353. where: data,
  354. cols: [[
  355. {type: 'numbers'},
  356. {field: 'dangerSrcName', sort: false, title: '名称'},
  357. {field: 'dangerImg', sort: false, title: '标识', templet: "#imgTpl", minWidth: 60},
  358. {field: 'dangerSourceLevel', sort: false, title: '危险源等级', templet: "#lvTpl", minWidth: 100},
  359. {
  360. field: 'riskCount', sort: false, title: '风险数目', templet: function (d) {
  361. if (d.parentDangerSrcId == -1) {
  362. return '<a href="#" lay-event="details">' + d.riskCount + '</a>';
  363. } else {
  364. return '<a href="#" lay-event="details">' + d.riskCountParent + '</a>';
  365. }
  366. }, minWidth: 100
  367. },
  368. {
  369. field: 'roleDesc', sort: false, title: '检查表', templet: function (d) {
  370. return '<a href="#" lay-event="details" class="layui-btn layui-btn-xs layui-btn-normal" ><i class="layui-icon">&#xe60a;</i> 查看</a>';
  371. }, minWidth: 100
  372. },
  373. {align: 'center', title: '操作', toolbar: '#optionTpl', minWidth: 200}
  374. ]]
  375. });
  376. }
  377. form.on('submit(formSubSearch)', function (data) {
  378. laodTreetable(data.field);
  379. });
  380. table.on('tool(datatable)', function (obj) {
  381. var data = obj.data;
  382. var layEvent = obj.event;
  383. if (layEvent == 'add') {
  384. addOpen(data.dangerSrcId, data.dangerSrcName);
  385. } else if (layEvent == 'del') {
  386. doDel(data);
  387. } else if (layEvent == 'edit') {
  388. editOpen(data);
  389. } else if (layEvent == 'details') {
  390. if (obj.data.parentDangerSrcId == -1) {
  391. location.href = "./viewRisk.html?riskPointType=" + riskPointType + "&tab=index&dangerSrcId=" + obj.data.dangerSrcId + "&vtype=nd";
  392. } else {
  393. location.href = "./viewRisk.html?riskPointType=" + riskPointType + "&tab=index&dangerSrcId=" + obj.data.dangerSrcId + "&vtype=pd";
  394. }
  395. }
  396. });
  397. /**
  398. * 新增危险源
  399. */
  400. $('#addDangerSource').click(function () {
  401. addOpen();
  402. });
  403. var url = uParas.baseUrl + '/gent/ds/exportAll';
  404. url = url + "?riskPointType=" + riskPointType + "&cId=" + cacheData.user.cId;
  405. $("#exportXls").attr("href", url);
  406. $('#importXls').click(function () {
  407. admin.open({
  408. type: 1,
  409. title: '导入EXCEL文件(参照模板,填写EXCEL数据并导入)',
  410. content: $('#xlsTpl').html(),
  411. success: function (layero, dIndex) {
  412. var url = uParas.baseUrl + '/gent/ds/uploadAll';
  413. url = url + "?riskPointType=" + riskPointType + "&cId=" + cacheData.user.cId + "&aId=" + cacheData.user.aId;
  414. form.on('submit(xlsSubmit)', function (data) {
  415. var fd = new FormData();
  416. var formData = new FormData($("#xlsForm")[0]);
  417. formData.append("riskPointType", riskPointType);
  418. admin.closeDialog('#xlsSubmit');
  419. uploadAll(url, formData);
  420. return false;
  421. });
  422. }
  423. });
  424. function uploadAll(url, formData) {
  425. $.ajax({
  426. cache: true,
  427. type: "post",
  428. url: url,
  429. async: false,
  430. data: formData,
  431. contentType: false,
  432. processData: false,
  433. error: function (request) {
  434. layer.alert('操作失败', {
  435. icon: 2,
  436. title: "提示"
  437. });
  438. },
  439. success: function (resp) {
  440. if (resp.code == 1) {
  441. layer.msg(resp.msg);
  442. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  443. } else {
  444. layer.msg(resp.msg);
  445. }
  446. }
  447. })
  448. }
  449. });
  450. function addOpen(pId, pName) {
  451. admin.open({
  452. type: 1,
  453. title: '新增危险源',
  454. area: ["600px", "500px"],
  455. content: $('#modelTpl').html(),
  456. success: function (layero, dIndex) {
  457. form.render();
  458. uParas.uploadRender("uploadImg", "vDangerImg", "dangerImg");
  459. $("#riskPointType").val(riskPointType);
  460. if (pId != undefined) {
  461. $("#parentDangerSrc").show();
  462. $("#parentDangerSrcId").val(pId);
  463. $("#parentDangerSrcName").val(pName);
  464. }
  465. var url = uParas.baseUrl + '/gent/ds/save';
  466. // 保存处理
  467. form.on('submit(modelSubmit)', function (data) {
  468. layer.load();
  469. admin.req(url, data.field, function (resp) {
  470. layer.closeAll('loading');
  471. if (resp.code == 1) {
  472. layer.close(dIndex);
  473. layer.msg(resp.msg);
  474. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  475. } else {
  476. layer.msg(resp.msg);
  477. }
  478. }, 'POST');
  479. return false;
  480. });
  481. }
  482. });
  483. }
  484. function editOpen(obj) {
  485. admin.open({
  486. type: 1,
  487. title: '修改危险源',
  488. area: ["600px", "500px"],
  489. content: $('#modelTpl').html(),
  490. success: function (layero, dIndex) {
  491. form.render();
  492. uParas.uploadRender("uploadImg", "vDangerImg", "dangerImg", obj.dangerImg);
  493. form.val('modelForm', obj);
  494. $("#riskPointType").val(riskPointType);
  495. $("#dangerSrcCode").attr("readonly", "readonly");
  496. var url = uParas.baseUrl + '/gent/ds/update';
  497. // 保存处理
  498. form.on('submit(modelSubmit)', function (data) {
  499. layer.load();
  500. admin.req(url, data.field, function (resp) {
  501. layer.closeAll('loading');
  502. if (resp.code == 1) {
  503. layer.close(dIndex);
  504. layer.msg(resp.msg);
  505. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  506. } else {
  507. layer.msg(resp.msg);
  508. }
  509. }, 'POST');
  510. return false;
  511. });
  512. }
  513. });
  514. }
  515. function doDel(obj) {
  516. layer.confirm('确定要删除“' + obj.dangerSrcName + '”吗?', {
  517. skin: 'layui-layer-admin',
  518. shade: .1
  519. }, function (i) {
  520. layer.close(i);
  521. layer.load();
  522. var url = uParas.baseUrl + '/gent/ds/delete/' + obj.dangerSrcId;
  523. admin.req(url, {}, function (resp) {
  524. layer.closeAll('loading');
  525. if (resp.code == 1) {
  526. layer.msg(resp.msg);
  527. // insTb.reload({}, 'data');
  528. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  529. } else {
  530. layer.msg(resp.msg);
  531. }
  532. }, 'post');
  533. });
  534. }
  535. //风险
  536. $.ajaxSetup({async: false});
  537. var url = uParas.baseUrl + "/ent/sysInfo/getInfo";
  538. admin.req(url, {}, function (resp) {
  539. $("#riskJudgeMethod").val(resp.data.riskJudgeMethod);
  540. });
  541. function getCtrlName(levelValue) {
  542. var url = uParas.baseUrl + "/admin/common/getCtrlList";
  543. admin.req(url, {}, function (resp) {
  544. $.each(resp.data, function (i, item) {
  545. if (item.riskCtrlLevelValue == levelValue) {
  546. $("#riskCtrlLevelName").val(item.riskCtrlLevelTitle);
  547. $("#riskCtrlLevelId_").val(item.riskCtrlLevelId);
  548. }
  549. });
  550. });
  551. }
  552. var getCtrlList = uParas.getSendData("/admin/common/getCtrlList");
  553. var getPositionList = uParas.getSendData("/admin/common/getPositionList");
  554. /**
  555. * 风险div数据
  556. **/
  557. uParas.initSimpleSelectX("riskCtrlLevelId", "layuiForm", getCtrlList, "riskCtrlLevelTitle", "riskCtrlLevelId");
  558. uParas.initSimpleSelectX("riskCtrlPositionId", "layuiForm", getPositionList, "positionTitle", "pId");
  559. _zTree._init('/ent/dangerSource/query?riskPointType=' + riskPointType + '&limit=1000', 'dangerSrcId', 'parentDangerSrcId', 'dangerSrcName', 'dangerSrcId', 0);
  560. $.extend(window, {
  561. //根据系统配置是否打开lec 和 选择是lec 判断
  562. leca: function (lv) {
  563. var method = $("#riskJudgeMethod").val();
  564. if (method == 1) {
  565. if (cacheData.user.lecOpen == "1" && lv != 1) {
  566. return "<a class=\"layui-btn layui-btn-xs\" lay-event=\"editLEC\">LEC法取值范围</a>";
  567. }
  568. }
  569. }
  570. });
  571. var colsAll = [[
  572. {type: 'numbers'},
  573. {field: 'riskId', sort: false, title: 'ID', hide: true},
  574. {field: 'riskCode', sort: false, title: '风险编号'},
  575. {field: 'rootName', sort: false, title: '根危险源'},
  576. {field: 'parentDangerSrcName', sort: false, title: '危险源'},
  577. {field: 'riskReason', sort: false, title: '危害因素', hide: true},
  578. {field: 'riskConsequence', sort: false, title: '后果', hide: true},
  579. {field: 'riskLevel', sort: false, title: '风险等级', templet: "#riskLvTpl"},
  580. {
  581. field: 'L', sort: false, title: 'L', templet: function (d) {
  582. var l = uParas.setValueDef(d.lLeft, '') + "~" + uParas.setValueDef(d.lRight, '');
  583. return l == "~" ? "" : l == "0~0" ? "" : l;
  584. }
  585. },
  586. {
  587. field: 'E', sort: false, title: 'E', templet: function (d) {
  588. var e = uParas.setValueDef(d.eLeft, '') + "~" + uParas.setValueDef(d.eRight, '');
  589. return e == "~" ? "" : e == "0~0" ? "" : e;
  590. }
  591. },
  592. {
  593. field: 'C', sort: false, title: 'C', templet: function (d) {
  594. var c = uParas.setValueDef(d.cLeft, '') + "~" + uParas.setValueDef(d.cRight, '');
  595. return c == "~" ? "" : c == "0~0" ? "" : c;
  596. }
  597. },
  598. {
  599. field: 'D', sort: false, title: 'D', templet: function (d) {
  600. var dLeft = '', dRight = '';
  601. if (d.lLeft != null && d.eLeft != null && d.cLeft != null) {
  602. dLeft = parseFloat(d.lLeft) * 10 * parseFloat(d.eLeft) * 10 * parseFloat(d.cLeft) * 10;
  603. }
  604. if (d.lRight != null && d.eRight != null && d.cRight != null) {
  605. dRight = parseFloat(d.lRight) * 10 * parseFloat(d.eRight) * 10 * parseFloat(d.cRight) * 10;
  606. }
  607. var d = dLeft / 1000 + "~" + dRight / 1000;
  608. return d == "0~0" ? "" : d;
  609. }
  610. },
  611. {
  612. field: '', sort: false, title: '风险等级范围', templet: function (d) {
  613. var dLeft = '', dRight = '';
  614. if (d.lLeft != null && d.eLeft != null && d.cLeft != null) {
  615. dLeft = parseFloat(d.lLeft) * 10 * parseFloat(d.eLeft) * 10 * parseFloat(d.cLeft) * 10;
  616. }
  617. if (d.lRight != null && d.eRight != null && d.cRight != null) {
  618. dRight = parseFloat(d.lRight) * 10 * parseFloat(d.eRight) * 10 * parseFloat(d.cRight) * 10;
  619. }
  620. var dl = dLeft / 1000;
  621. var dr = dRight / 1000;
  622. if (dl == 0 || dr == 0) {
  623. return "";
  624. }
  625. var d = lecFunctionStr(dl) + "~" + lecFunctionStr(dr);
  626. return d == "~" ? "" : d;
  627. }
  628. },
  629. // {
  630. // field: 'riskCtrlLevelTitle', sort: false, title: '管控层级', minWidth: 100
  631. // },
  632. // {
  633. // field: 'sPositionTitle', sort: false, title: '管控岗位', templet: function (d) {
  634. // var sPositionTitle = uParas.setValueDef(d.sPositionTitle, '选择管控岗位');
  635. // return '<a lay-event="riskCtrlPositionId" style="text-shadow: none;color: #5b9bd1;" href="javascript:;"><i class="layui-icon">&#xe642;</i> ' + sPositionTitle + '</a>';
  636. // }
  637. // },
  638. {align: 'center', title: '操作', toolbar: '#riskOptionTpl', minWidth: 100}
  639. ]];
  640. function lecFunctionStr(d) {
  641. if (d > 320) {
  642. return "重大风险";
  643. } else if (d > 160) {
  644. return "较大风险";
  645. } else if (d > 70) {
  646. return "一般风险";
  647. } else {
  648. return "低风险";
  649. }
  650. }
  651. var method = $("#riskJudgeMethod").val();
  652. if (method != 1) {
  653. colsAll[0].splice(8, 4);
  654. console.log(colsAll)
  655. }
  656. var insTb = table.render({
  657. url: uParas.baseUrl + '/gent/risk/query?riskPointType=' + riskPointType,
  658. elem: '#risk',
  659. cellMinWidth: 100,
  660. page: true,
  661. toolbar: true,
  662. cols: colsAll
  663. });
  664. form.on('submit(riskSearch)', function (data) {
  665. var obj = data.field;
  666. obj.riskPointType = riskPointType;
  667. insTb.reload({where: obj}, 'data');
  668. });
  669. form.on('select(riskCtrlLevelId)', function (data) {
  670. var obj = {};
  671. obj.riskCtrlLevelId = data.value;
  672. insTb.reload({where: obj}, 'data');
  673. });
  674. form.on('select(searchRiskCtrlPositionId)', function (data) {
  675. var obj = {};
  676. obj.riskCtrlPositionId = data.value;
  677. insTb.reload({where: obj}, 'data');
  678. });
  679. table.on('tool(risk)', function (obj) {
  680. var data = obj.data;
  681. var layEvent = obj.event;
  682. if (layEvent == 'del') {
  683. doDelRisk(data);
  684. } else if (layEvent == 'edit') {
  685. location.href = "./editRisk.html?riskPointType=" + riskPointType + "&riskId=" + data.riskId + "&tab=risk";
  686. } else if (layEvent == 'lv') {
  687. admin.open({
  688. type: 1,
  689. title: '风险等级',
  690. area: ["600px", "500px"],
  691. content: $('#lvCTpl').html(),
  692. btn: ['确定', '取消']
  693. , yes: function () {
  694. var riskLevel_ = $("#riskLevel_").val();
  695. getCtrlName(riskLevel_);
  696. var url = uParas.baseUrl + '/ent/risk/updateRiskLevel';
  697. admin.req(url, {
  698. riskId: obj.data.riskId,
  699. riskLevel: riskLevel_,
  700. riskCtrlLevelId: $("#riskCtrlLevelId_").val()
  701. }, function (resp) {
  702. if (resp.code == 1) {
  703. layer.msg(resp.msg);
  704. layer.close(index);
  705. insTb.reload({}, 'data');
  706. } else {
  707. layer.msg(resp.msg);
  708. }
  709. }, 'post');
  710. }, btn2: function () {
  711. layer.closeAll();
  712. },
  713. zIndex: layer.zIndex,
  714. success: function (layero, dIndex) {
  715. var method = $("#riskJudgeMethod").val();
  716. radioMethod(method);
  717. form.render();
  718. form.on('radio(methods)', function (data) {
  719. radioMethod(data.value);
  720. });
  721. $("#riskLevelText_").val(getLvText(obj.data.riskLevel));
  722. $("#riskLevel_").val(obj.data.riskLevel);
  723. }
  724. });
  725. } else if (layEvent == 'riskCtrlPositionId') {
  726. admin.open({
  727. type: 1,
  728. title: '管控岗位',
  729. area: ["600px", "300px"],
  730. content: $('#positionTpl').html(),
  731. btn: ['确定', '取消']
  732. , yes: function () {
  733. var riskCtrlPositionId = formSelects.value('riskCtrlPositionId', 'valStr');
  734. var url = uParas.baseUrl + '/ent/risk/updateRiskPosition';
  735. admin.req(url, {
  736. riskId: obj.data.riskId,
  737. riskCtrlPositionId: riskCtrlPositionId,
  738. riskCtrlLevelId: obj.data.riskCtrlLevelId
  739. }, function (resp) {
  740. layer.closeAll();
  741. if (resp.code == 1) {
  742. layer.msg(resp.msg);
  743. insTb.reload({}, 'data');
  744. } else {
  745. layer.msg(resp.msg);
  746. }
  747. }, 'post');
  748. }, btn2: function () {
  749. layer.closeAll();
  750. },
  751. zIndex: layer.zIndex,
  752. success: function (layero, dIndex) {
  753. uParas.initFormSelects("riskCtrlPositionId", "/admin/common/getPositionList", "positionTitle", "pId", obj.data.riskCtrlPositionId);
  754. }
  755. });
  756. } else if (layEvent == 'editLEC') {
  757. admin.open({
  758. type: 1,
  759. title: 'LEC法取值范围',
  760. area: ["600px", "300px"],
  761. content: $('#riskLECTpl').html(),
  762. success: function (layero, dIndex) {
  763. var _LHtml = LHtmlAll();
  764. var _EHtml = EHtmlAll();
  765. var _CHtml = CHtmlAll();
  766. $("#lLeft").html(_LHtml);
  767. $("#lRight").html(_LHtml);
  768. $("#eLeft").html(_EHtml);
  769. $("#eRight").html(_EHtml);
  770. $("#cLeft").html(_CHtml);
  771. $("#cRight").html(_CHtml);
  772. var url = uParas.baseUrl + '/ent/riskLec/getById?id=' + obj.data.riskId;
  773. $.getJSON(url, {}, function (res) {
  774. if (res.data == null) {
  775. form.val('riskLECForm', obj.data);
  776. } else {
  777. form.val('riskLECForm', res.data);
  778. }
  779. form.render();
  780. });
  781. var url = uParas.baseUrl + '/ent/riskLec/update';
  782. form.on('submit(modelSubmit)', function (data) {
  783. layer.load();
  784. admin.req(url, data.field, function (resp) {
  785. layer.closeAll('loading');
  786. if (resp.code == 1) {
  787. layer.close(dIndex);
  788. layer.msg(resp.msg, {offset: ['50%'], time: 2000}, function () {
  789. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=risk"
  790. });
  791. } else {
  792. layer.msg(resp.msg);
  793. }
  794. }, 'POST');
  795. return false;
  796. });
  797. }
  798. });
  799. }
  800. });
  801. /**
  802. * 新增危险源
  803. */
  804. $('#addRisk').click(function () {
  805. location.href = "./addRisk.html?riskPointType=" + riskPointType + "&tab=risk";
  806. });
  807. function doDelRisk(obj) {
  808. layer.confirm('确定要删除“' + obj.riskName + '”吗?', {
  809. skin: 'layui-layer-admin',
  810. shade: .1
  811. }, function (i) {
  812. layer.close(i);
  813. layer.load();
  814. var url = uParas.baseUrl + '/ent/risk/delete';
  815. admin.req(url, {id: obj.riskId}, function (resp) {
  816. layer.closeAll('loading');
  817. if (resp.code == 1) {
  818. layer.msg(resp.msg);
  819. insTb.reload({}, 'data');
  820. } else {
  821. layer.msg(resp.msg);
  822. }
  823. }, 'post');
  824. });
  825. }
  826. form.on('select(LEC)', function (data) {
  827. sLecFunction();
  828. });
  829. form.on('select(LSR)', function (data) {
  830. sLsrFunction();
  831. });
  832. function getLvText(level) {
  833. var lvText = "";
  834. if (level === 1) {
  835. lvText = "重大";
  836. } else if (level === 2) {
  837. lvText = "较大";
  838. } else if (level === 3) {
  839. lvText = "一般";
  840. } else {
  841. lvText = "较低";
  842. }
  843. return lvText;
  844. }
  845. function sLsrFunction() {
  846. var level = 4;
  847. level = lsrFunction($("#riskLSL").val(), $("#riskLSS").val());
  848. $("#riskLevel").val(level);
  849. $("#riskLevel_").val(level);
  850. let lvText = getLvText(level);
  851. $("#riskLevelText").val(lvText);
  852. $("#riskLevelText_").val(lvText);
  853. }
  854. function sLecFunction() {
  855. var level = 4;
  856. level = lecFunction($("#riskLECL").val(), $("#riskLECE").val(), $("#riskLECC").val());
  857. $("#riskLevel").val(level);
  858. $("#riskLevel_").val(level);
  859. let lvText = getLvText(level);
  860. $("#riskLevelText").val(lvText);
  861. $("#riskLevelText_").val(lvText);
  862. }
  863. function radioMethod(val) {
  864. if (val == 1) {
  865. sLecFunction();
  866. $(".lec").attr("hidden", false);
  867. $(".ls").attr("hidden", true);
  868. $("#rLS").attr("type", "hidden");
  869. $("#rLEC").attr("checked", "checked");
  870. } else {
  871. sLsrFunction();
  872. $(".lec").attr("hidden", true);
  873. $(".ls").attr("hidden", false);
  874. $("#rLEC").attr("type", "hidden");
  875. $("#rLS").attr("checked", "checked");
  876. }
  877. }
  878. function lecFunction(l, e, c) {
  879. var d = l * e * c;
  880. if (d > 320) {
  881. return 1;
  882. } else if (d > 160) {
  883. return 2;
  884. } else if (d > 70) {
  885. return 3;
  886. } else {
  887. return 4;
  888. }
  889. }
  890. function lsrFunction(l, s) {
  891. var r = l * s;
  892. if (r <= 25 && r >= 21) {
  893. return 1;
  894. } else if (r <= 16 && r >= 15) {
  895. return 2;
  896. } else if (r <= 12 && r >= 6) {
  897. return 3;
  898. } else if (r <= 5 && r >= 1) {
  899. return 4;
  900. } else {
  901. return 0;
  902. }
  903. }
  904. });
  905. </script>
  906. <script type="text/html" id="lvCTpl">
  907. <form id="lvCForm" lay-filter="modelForm" class="layui-form model-form">
  908. <input name="riskLevel_" id="riskLevel_" class="layui-input" type="hidden"/>
  909. <div class="layui-form-item">
  910. <label class="layui-form-label">风险等级:</label>
  911. <div class="layui-input-block">
  912. <input type="text" id="riskLevelText_" name="riskLevelText_" class="layui-input" readonly="readonly">
  913. </div>
  914. </div>
  915. <div class="layui-form-item">
  916. <label class="layui-form-label">评价方法:</label>
  917. <div class="layui-input-block">
  918. <input type="radio" name="method" lay-filter="methods" value="1" title="LEC" id="rLEC">
  919. <input type="radio" name="method" lay-filter="methods" value="2" title="LS" id="rLS">
  920. </div>
  921. </div>
  922. <div class="layui-form-item lec">
  923. <label class="layui-form-label">L:</label>
  924. <div class="layui-input-block">
  925. <select id="riskLECL" name="riskLECL" lay-filter="LEC">
  926. <option value="0.1">实际不可能</option>
  927. <option value="0.2">极不可能</option>
  928. <option value="0.5">很不可能,可以设想</option>
  929. <option value="1">可能性小,完全意外</option>
  930. <option value="3">可能,但不经常</option>
  931. <option value="6">相当可能</option>
  932. <option value="10">完全可以预料</option>
  933. </select>
  934. <span class="help-inline">提示:事故发生的可能性</span>
  935. </div>
  936. </div>
  937. <div class="layui-form-item lec">
  938. <label class="layui-form-label">E:</label>
  939. <div class="layui-input-block">
  940. <select id="riskLECE" name="riskLECE" lay-filter="LEC">
  941. <option value="0.5">非常罕见暴露</option>
  942. <option value="1">每年几次暴露</option>
  943. <option value="2">每月一次暴露</option>
  944. <option value="3">每周一次或偶然暴露</option>
  945. <option value="6">每天工作时间内暴露</option>
  946. <option value="10">连续暴露</option>
  947. </select>
  948. <span class="help-inline">提示:人员暴露于危险环境中的频繁程度</span>
  949. </div>
  950. </div>
  951. <div class="layui-form-item lec">
  952. <label class="layui-form-label">C:</label>
  953. <div class="layui-input-block">
  954. <select id="riskLECC" name="riskLECC" lay-filter="LEC">
  955. <option value="1">引人注意</option>
  956. <option value="2">重大,伤残</option>
  957. <option value="7">严重</option>
  958. <option value="15">1~2人死亡</option>
  959. <option value="40">3~9人死亡</option>
  960. <option value="100">10人以上死亡</option>
  961. </select>
  962. <span class="help-inline">提示:一旦发生事故可能造成的后果</span>
  963. </div>
  964. </div>
  965. <div class="layui-form-item ls">
  966. <label class="layui-form-label">L:</label>
  967. <div class="layui-input-block">
  968. <select id="riskLSL" name="riskLSL" lay-filter="LSR">
  969. <option value="1">极不可能</option>
  970. <option value="2">偶尔</option>
  971. <option value="3">重复发生</option>
  972. <option value="4">预期情况下经常</option>
  973. <option value="5">正常情况下经常</option>
  974. </select>
  975. <span class="help-inline">提示:事故发生的可能性</span>
  976. </div>
  977. </div>
  978. <div class="layui-form-item ls">
  979. <label class="layui-form-label">S:</label>
  980. <div class="layui-input-block">
  981. <select id="riskLSS" name="riskLSS" lay-filter="LSR">
  982. <option value="1">无伤亡、无损失</option>
  983. <option value="2">轻伤、损失<10万</option>
  984. <option value="3">伤残、损失>10万</option>
  985. <option value="4">丧失劳动力、损失>25万</option>
  986. <option value="5">死亡、损失>50万</option>
  987. </select>
  988. <span class="help-inline">提示:一旦发生事故造成后果的严重性</span>
  989. </div>
  990. </div>
  991. </form>
  992. </script>
  993. <script type="text/html" id="riskLECTpl">
  994. <form id="riskLECForm" lay-filter="riskLECForm" class="layui-form model-form">
  995. <input name="riskId" class="layui-input" type="hidden"/>
  996. <div class="layui-form-item">
  997. <label class="layui-form-label">L:</label>
  998. <div class="layui-input-inline">
  999. <select name="lLeft" id="lLeft">
  1000. </select>
  1001. </div>
  1002. <div class="layui-input-inline">
  1003. <select name="lRight" id="lRight">
  1004. </select>
  1005. </div>
  1006. </div>
  1007. <div class="layui-form-item">
  1008. <label class="layui-form-label">E:</label>
  1009. <div class="layui-input-inline">
  1010. <select name="eLeft" id="eLeft">
  1011. </select>
  1012. </div>
  1013. <div class="layui-input-inline">
  1014. <select name="eRight" id="eRight">
  1015. </select>
  1016. </div>
  1017. </div>
  1018. <div class="layui-form-item">
  1019. <label class="layui-form-label">C:</label>
  1020. <div class="layui-input-inline">
  1021. <select name="cLeft" id="cLeft">
  1022. </select>
  1023. </div>
  1024. <div class="layui-input-inline">
  1025. <select name="cRight" id="cRight">
  1026. </select>
  1027. </div>
  1028. </div>
  1029. <div class="layui-form-item text-right">
  1030. <button class="layui-btn layui-btn-primary" type="button" ew-event="closePageDialog">取消</button>
  1031. <button class="layui-btn" lay-filter="modelSubmit" lay-submit>保存</button>
  1032. </div>
  1033. </form>
  1034. </script>
  1035. </body>
  1036. </html>