index_.html 46 KB

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