index_.html 46 KB

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