index.html 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119
  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. <!-- {{ leca() }}-->
  256. <!-- <a class="layui-btn layui-btn-xs" lay-event="editLEC">LEC法取值范围</a>-->
  257. </div>
  258. </script>
  259. <script type="text/html" id="imgTpl">
  260. {{# var imgs=d.dangerImg;}}
  261. {{# if(d.riskPointType==2){ imgs="../../../assets/images/icon/job.png"} }}
  262. {{# if(d.riskPointType==1){ imgs="../../../assets/images/icon/facility.png"} }}
  263. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>
  264. </script>
  265. <script type="text/html" id="lvTpl">
  266. {{# var imgs="",title=""; var lv=d.dangerSourceLevel;}}
  267. {{# if(lv==1){ imgs="../../../assets/images/lv/red.png" ;title="重大" } }}
  268. {{# if(lv==2){ imgs="../../../assets/images/lv/orange.png";title="较大"} }}
  269. {{# if(lv==3){ imgs="../../../assets/images/lv/yellow.png";title="一般"} }}
  270. {{# if(lv==4){ imgs="../../../assets/images/lv/blue.png";title="较低"} }}
  271. {{# if(lv==1){ }}
  272. <div class='notify'><span class='heartbit'></span><span>
  273. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  274. </span>
  275. </div>
  276. {{# }else{ }}
  277. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  278. {{# } }}
  279. </script>
  280. <script type="text/html" id="riskLvTpl">
  281. {{# var imgs="",title=""; var lv=d.riskLevel;}}
  282. {{# if(lv==1){ imgs="../../../assets/images/lv/red.png" ;title="重大" } }}
  283. {{# if(lv==2){ imgs="../../../assets/images/lv/orange.png";title="较大"} }}
  284. {{# if(lv==3){ imgs="../../../assets/images/lv/yellow.png";title="一般"} }}
  285. {{# if(lv==4){ imgs="../../../assets/images/lv/blue.png";title="较低"} }}
  286. {{# if(lv==1){ }}
  287. <a lay-event="lv" href="javascript:;">
  288. <div class='notify'><span class='heartbit'></span><span>
  289. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  290. </span>
  291. </div>
  292. </a>
  293. {{# }else{ }}
  294. <a lay-event="lv" href="javascript:;">
  295. <img style="display: inline-block; width: 28px;height: 28px;" src={{ imgs }}>&nbsp;{{ title }}
  296. </a>
  297. {{# } }}
  298. </script>
  299. <script type="text/html" id="positionTpl">
  300. <form id="modelUserForm" lay-filter="modelUserForm" class="layui-form model-form">
  301. <div class="layui-form-item">
  302. <label class="layui-form-label">管控岗位:</label>
  303. <div class="layui-input-block">
  304. <select name="riskCtrlPositionId" lay-verType="tips" class="layui-input-block"
  305. xm-select="riskCtrlPositionId" xm-select-search>
  306. <option value="">直接管控岗位或搜索选择管控岗位</option>
  307. </select>
  308. </div>
  309. </div>
  310. </form>
  311. </script>
  312. <!-- js部分 -->
  313. <script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>
  314. <script type="text/javascript" src="../../../assets/js/common.js?v=312"></script>
  315. <script>
  316. layui.use(['layer', 'form', 'table', 'util', 'admin', 'zTree', 'uParas', 'upload', 'treetable', 'element', '_zTree', 'formSelects'], function () {
  317. var $ = layui.jquery;
  318. var layer = layui.layer;
  319. var form = layui.form;
  320. var table = layui.table;
  321. var util = layui.util;
  322. var admin = layui.admin;
  323. var uParas = layui.uParas;
  324. var element = layui.element;
  325. var _zTree = layui._zTree;
  326. var formSelects = layui.formSelects;
  327. var cacheData = layui.data(uParas.tableName);
  328. // 渲染表格
  329. var riskPointType = uParas.getUrlParam("riskPointType");
  330. /*---------------------------------------------------------------------*/
  331. // 初始化导出按钮(id=exportDs)
  332. var checkUrl = uParas.baseUrl + '/gent/company/isExcelDisplay';
  333. admin.req(checkUrl, {}, function (resp) {
  334. if (resp.code == 1) {
  335. $('#exportDs').css('display', '');
  336. } else {
  337. $('#exportDs').css('display', 'none');
  338. }
  339. });
  340. $('#exportDs').on('click', function () {
  341. showExportWin();
  342. });
  343. // 打开导出窗口
  344. function showExportWin() {
  345. admin.open({
  346. title: 'Excel导出',
  347. type: 2,
  348. content: './exportDs.html?riskPointType=' + riskPointType,
  349. area: ['700px', '420px'],
  350. success: function (layerObj, index) {
  351. layer.setTop(layerObj);
  352. },
  353. end: function () {
  354. }
  355. });
  356. }
  357. /*---------------------------------------------------------------------*/
  358. if (riskPointType == 1) {
  359. $("#index").html("设备危险源");
  360. }
  361. if (riskPointType == 2) {
  362. $("#index").html("作业危险源");
  363. }
  364. if (riskPointType == 3) {
  365. $("#index").html("作业环境库");
  366. }
  367. if (riskPointType == 4) {
  368. $("#index").html("设备场所库");
  369. }
  370. if (riskPointType == 5) {
  371. $("#index").html("其他库");
  372. }
  373. var tab = uParas.getUrlParam("tab");
  374. if (tab != null) {
  375. element.tabChange('tab_ds', tab);
  376. }
  377. element.on('tab(tab_ds)', function () {
  378. location.hash = 'tab=' + this.getAttribute('lay-id');
  379. if (this.getAttribute('lay-id') == 1) {
  380. laodTreetable();
  381. } else {
  382. insTb.reload({}, 'data');
  383. }
  384. });
  385. var treetable = layui.treetable;
  386. laodTreetable();
  387. $("#downXls").attr("href", uParas.staticUrl + "/excel/sysRiskNew.xlsx");
  388. function laodTreetable(data) {
  389. var insTb = treetable.render({
  390. url: uParas.baseUrl + '/ent/dangerSource/querySlej?riskPointType=' + riskPointType + "&limit=1000",
  391. treeColIndex: 1,
  392. treeSpid: "-1",
  393. treeIdName: 'dangerSrcId',
  394. treePidName: 'parentDangerSrcId',
  395. elem: '#datatable',
  396. cellMinWidth: 100,
  397. // height:650,
  398. where: data,
  399. cols: [[
  400. {type: 'numbers'},
  401. {field: 'dangerSrcName', sort: false, title: '名称'},
  402. {field: 'dangerImg', align: 'center', sort: false, title: '标识', width: 100, templet: "#imgTpl"},
  403. {
  404. field: 'dangerSourceLevel',
  405. align: 'center',
  406. sort: false,
  407. title: '危险源等级',
  408. templet: "#lvTpl",
  409. width: 100,
  410. },
  411. {
  412. field: 'riskCount',
  413. align: 'center',
  414. sort: false,
  415. title: '风险数目',
  416. width: 100,
  417. templet: function (d) {
  418. if (d.parentDangerSrcId == -1) {
  419. return '<a href="#" class="layui-link" lay-event="details">' + d.riskCount + '</a>';
  420. } else {
  421. return '<a href="#" class="layui-link" lay-event="details">' + d.riskCountParent + '</a>';
  422. }
  423. }
  424. },
  425. {
  426. field: 'roleDesc',
  427. align: 'center',
  428. sort: false,
  429. title: '检查表',
  430. width: 100,
  431. templet: function (d) {
  432. return '<a href="#" lay-event="details" class="layui-btn layui-btn-xs layui-btn-normal" ><i class="layui-icon">&#xe60a;</i> 查看</a>';
  433. }
  434. },
  435. {align: 'right', title: '操作', width: 190, toolbar: '#optionTpl'}
  436. ]]
  437. });
  438. }
  439. form.on('submit(formSubSearch)', function (data) {
  440. laodTreetable(data.field);
  441. });
  442. form.on('select(dangerSourceLevel2)', function (data) {
  443. let a = {};
  444. a.dangerSourceLevel = data.value;
  445. laodTreetable(a);
  446. });
  447. table.on('tool(datatable)', function (obj) {
  448. var data = obj.data;
  449. var layEvent = obj.event;
  450. if (layEvent == 'add') {
  451. tabAddOpen(data.dangerSrcId, data.dangerSrcName, data.riskCount);
  452. } else if (layEvent == 'del') {
  453. doDel(data);
  454. } else if (layEvent == 'edit') {
  455. editOpen(data);
  456. } else if (layEvent == 'details') {
  457. if (obj.data.parentDangerSrcId == -1) {
  458. location.href = "./viewRisk.html?riskPointType=" + riskPointType + "&tab=index&dangerSrcId=" + obj.data.dangerSrcId + "&vtype=nd";
  459. } else {
  460. location.href = "./viewRisk.html?riskPointType=" + riskPointType + "&tab=index&dangerSrcId=" + obj.data.dangerSrcId + "&vtype=pd";
  461. }
  462. }
  463. });
  464. /**
  465. * 新增危险源
  466. */
  467. $('#addDangerSource').click(function () {
  468. addOpen();
  469. });
  470. var url = uParas.baseUrl + '/ent/dangerSource/exportAll';
  471. url = url + "?riskPointType=" + riskPointType + "&cId=" + cacheData.user.cId;
  472. $("#exportXls").attr("href", url);
  473. $('#importXls').click(function () {
  474. layer.open({
  475. type: 1,
  476. title: '导入EXCEL文件(参照模板,填写EXCEL数据并导入)',
  477. width: 500,
  478. // time: 10000,
  479. content: $('#xlsTpl').html(),
  480. success: function (layero, dIndex) {
  481. var url = uParas.baseUrl + '/ent/dangerSource/uploadAll';
  482. url = url + "?riskPointType=" + riskPointType + "&cId=" + cacheData.user.cId + "&aId=" + cacheData.user.aId;
  483. form.on('submit(xlsSubmit)', function (data) {
  484. var fd = new FormData();
  485. var formData = new FormData($("#xlsForm")[0]);
  486. formData.append("riskPointType", riskPointType);
  487. admin.btnLoading('#xlsSubmit', '处理中。。。。');
  488. //admin.closeDialog('#xlsSubmit');
  489. uploadAll(url, formData);
  490. return false;
  491. });
  492. }
  493. });
  494. function uploadAll(url, formData) {
  495. $.ajax({
  496. cache: true,
  497. type: "post",
  498. url: url,
  499. async: false,
  500. data: formData,
  501. contentType: false,
  502. processData: false,
  503. error: function (request) {
  504. layer.alert('操作失败', {
  505. icon: 2,
  506. title: "提示"
  507. });
  508. },
  509. success: function (resp) {
  510. if (resp.code == 1) {
  511. layer.msg(resp.msg);
  512. setTimeout(function () {
  513. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  514. }, 500);
  515. } else {
  516. layer.alert(resp.msg);
  517. }
  518. }
  519. })
  520. }
  521. });
  522. function tabAddOpen(pId, pName, riskCount) {
  523. if (riskCount != null && riskCount > 0) {
  524. layer.confirm('确定要添加子危险源吗?(会删除现有危险源下的风险库)', {
  525. skin: 'layui-layer-admin',
  526. shade: .1
  527. }, function (i) {
  528. layer.close(i);
  529. layer.load();
  530. layer.closeAll('loading');
  531. addOpen(pId, pName)
  532. });
  533. } else {
  534. addOpen(pId, pName)
  535. }
  536. }
  537. function addOpen(pId, pName) {
  538. admin.open({
  539. type: 1,
  540. title: '新增危险源',
  541. area: ["600px", "500px"],
  542. content: $('#modelTpl').html(),
  543. success: function (layero, dIndex) {
  544. form.render();
  545. uParas.uploadRender("uploadImg", "vDangerImg", "dangerImg");
  546. $("#riskPointType").val(riskPointType);
  547. if (pId != undefined) {
  548. $("#parentDangerSrc").show();
  549. $("#parentDangerSrcId").val(pId);
  550. $("#parentDangerSrcName").val(pName);
  551. }
  552. var url = uParas.baseUrl + '/ent/dangerSource/save';
  553. // 保存处理
  554. form.on('submit(modelSubmit)', function (data) {
  555. layer.load();
  556. admin.req(url, data.field, function (resp) {
  557. layer.closeAll('loading');
  558. if (resp.code == 1) {
  559. layer.close(dIndex);
  560. layer.msg(resp.msg);
  561. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  562. } else {
  563. layer.msg(resp.msg);
  564. }
  565. }, 'POST');
  566. return false;
  567. });
  568. }
  569. });
  570. }
  571. function editOpen(obj) {
  572. admin.open({
  573. type: 1,
  574. title: '修改危险源',
  575. area: ["600px", "500px"],
  576. content: $('#modelTpl').html(),
  577. success: function (layero, dIndex) {
  578. form.render();
  579. uParas.uploadRender("uploadImg", "vDangerImg", "dangerImg", obj.dangerImg);
  580. form.val('modelForm', obj);
  581. $("#riskPointType").val(riskPointType);
  582. $("#dangerSrcCode").attr("readonly", "readonly");
  583. var url = uParas.baseUrl + '/ent/dangerSource/update';
  584. // 保存处理
  585. form.on('submit(modelSubmit)', function (data) {
  586. layer.load();
  587. admin.req(url, data.field, function (resp) {
  588. layer.closeAll('loading');
  589. if (resp.code == 1) {
  590. layer.close(dIndex);
  591. layer.msg(resp.msg);
  592. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  593. } else {
  594. layer.msg(resp.msg);
  595. }
  596. }, 'POST');
  597. return false;
  598. });
  599. }
  600. });
  601. }
  602. function doDel(obj) {
  603. layer.confirm('确定要删除“' + obj.dangerSrcName + '”吗?', {
  604. skin: 'layui-layer-admin',
  605. shade: .1
  606. }, function (i) {
  607. layer.close(i);
  608. layer.load();
  609. var url = uParas.baseUrl + '/ent/dangerSource/delete/' + obj.dangerSrcId;
  610. admin.req(url, {}, function (resp) {
  611. layer.closeAll('loading');
  612. if (resp.code == 1) {
  613. layer.msg(resp.msg);
  614. // insTb.reload({}, 'data');
  615. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=index"
  616. } else {
  617. layer.msg(resp.msg);
  618. }
  619. }, 'post');
  620. });
  621. }
  622. //风险
  623. $.ajaxSetup({async: false});
  624. var url = uParas.baseUrl + "/ent/sysInfo/getInfo";
  625. admin.req(url, {}, function (resp) {
  626. $("#riskJudgeMethod").val(resp.data.riskJudgeMethod);
  627. });
  628. function getCtrlName(levelValue) {
  629. var url = uParas.baseUrl + "/admin/common/getCtrlList";
  630. admin.req(url, {}, function (resp) {
  631. $.each(resp.data, function (i, item) {
  632. if (item.riskCtrlLevelValue == levelValue) {
  633. $("#riskCtrlLevelName").val(item.riskCtrlLevelTitle);
  634. $("#riskCtrlLevelId_").val(item.riskCtrlLevelId);
  635. }
  636. });
  637. });
  638. }
  639. var getCtrlList = uParas.getSendData("/admin/common/getCtrlList");
  640. var getPositionList = uParas.getSendData("/admin/common/getPositionList");
  641. /**
  642. * 风险div数据
  643. **/
  644. uParas.initSimpleSelectX("riskCtrlLevelId", "layuiForm", getCtrlList, "riskCtrlLevelTitle", "riskCtrlLevelId");
  645. uParas.initSimpleSelectX("riskCtrlPositionIds", "layuiForm", getPositionList, "positionTitle", "pId");
  646. _zTree._init('/ent/dangerSource/query?riskPointType=' + riskPointType + '&limit=1000', 'dangerSrcId', 'parentDangerSrcId', 'dangerSrcName', 'dangerSrcId', 0);
  647. $.extend(window, {
  648. leca: function () {
  649. if (cacheData.user.lecOpen == "1") {
  650. return "<a class=\"layui-btn layui-btn-xs\" lay-event=\"editLEC\">LEC法取值范围</a>";
  651. }
  652. }
  653. });
  654. var insTb = table.render({
  655. url: uParas.baseUrl + '/ent/risk/query?riskPointType=' + riskPointType,
  656. elem: '#risk',
  657. cellMinWidth: 100,
  658. page: true,
  659. toolbar: true,
  660. cols: [[
  661. {type: 'numbers'},
  662. {field: 'riskId', sort: false, title: 'ID', hide: true},
  663. {field: 'riskCode', sort: false, title: '风险编号'},
  664. {field: 'rootName', sort: false, title: '根危险源'},
  665. {field: 'parentDangerSrcName', sort: false, title: '危险源'},
  666. {field: 'riskName', sort: false, title: '作业步骤'},
  667. {field: 'riskReason', sort: false, title: '危害因素'},
  668. {field: 'riskConsequence', sort: false, title: '后果'},
  669. {field: 'riskLevel', sort: false, title: '风险等级', templet: "#riskLvTpl"},
  670. {field: 'riskCtrlLevelTitle', sort: false, title: '管控层级'},
  671. {
  672. field: 'sPositionTitle', sort: false, title: '管控岗位', templet: function (d) {
  673. var sPositionTitle = uParas.setValueDef(d.sPositionTitle, '选择管控岗位');
  674. return '<a lay-event="riskCtrlPositionId" style="text-shadow: none;color: #5b9bd1;" href="javascript:;"><i class="layui-icon">&#xe642;</i> ' + sPositionTitle + '</a>';
  675. }
  676. },
  677. {align: 'center', title: '操作', toolbar: '#riskOptionTpl', width: 120}
  678. ]]
  679. });
  680. form.on('submit(riskSearch)', function (data) {
  681. var obj = data.field;
  682. obj.riskPointType = riskPointType;
  683. insTb.reload({where: obj}, 'data');
  684. return false;
  685. });
  686. form.on('select(riskCtrlLevelId)', function (data) {
  687. var obj = {};
  688. obj.riskCtrlLevelId = data.value;
  689. insTb.reload({where: obj}, 'data');
  690. return false;
  691. });
  692. $("#dangerSrcId").bind('blur change', function () {
  693. var obj = {};
  694. obj.dangerSrcId = $("#dangerSrcId").val();
  695. insTb.reload({where: obj}, 'data');
  696. return false;
  697. });
  698. form.on('select(dangerSourceLevel)', function (data) {
  699. var obj = {};
  700. obj.dangerSourceLevel = data.value;
  701. insTb.reload({where: obj}, 'data');
  702. return false;
  703. });
  704. form.on('select(searchRiskCtrlPositionId)', function (data) {
  705. var obj = {};
  706. obj.riskCtrlPositionId = data.value;
  707. insTb.reload({where: obj}, 'data');
  708. return false;
  709. });
  710. table.on('tool(risk)', function (obj) {
  711. var data = obj.data;
  712. var layEvent = obj.event;
  713. if (layEvent == 'del') {
  714. doDelRisk(data);
  715. } else if (layEvent == 'edit') {
  716. location.href = "./editRisk.html?riskPointType=" + riskPointType + "&riskId=" + data.riskId + "&tab=risk";
  717. } else if (layEvent == 'lv') {
  718. admin.open({
  719. type: 1,
  720. title: '风险等级',
  721. area: ["600px", "500px"],
  722. content: $('#lvCTpl').html(),
  723. btn: ['确定', '取消']
  724. , yes: function () {
  725. var riskLevel_ = $("#riskLevel_").val();
  726. getCtrlName(riskLevel_);
  727. var url = uParas.baseUrl + '/ent/risk/updateRiskLevel';
  728. admin.req(url, {
  729. riskId: obj.data.riskId,
  730. riskLevel: riskLevel_,
  731. riskCtrlLevelId: $("#riskCtrlLevelId_").val()
  732. }, function (resp) {
  733. if (resp.code == 1) {
  734. layer.msg(resp.msg);
  735. layer.close(index);
  736. insTb.reload({}, 'data');
  737. } else {
  738. layer.msg(resp.msg);
  739. }
  740. }, 'post');
  741. }, btn2: function () {
  742. layer.closeAll();
  743. },
  744. zIndex: layer.zIndex,
  745. success: function (layero, dIndex) {
  746. var method = $("#riskJudgeMethod").val();
  747. radioMethod(method);
  748. form.render();
  749. form.on('radio(methods)', function (data) {
  750. radioMethod(data.value);
  751. });
  752. $("#riskLevelText_").val(getLvText(obj.data.riskLevel));
  753. $("#riskLevel_").val(obj.data.riskLevel);
  754. }
  755. });
  756. } else if (layEvent == 'riskCtrlPositionId') {
  757. admin.open({
  758. type: 1,
  759. title: '管控岗位',
  760. area: ["600px", "300px"],
  761. content: $('#positionTpl').html(),
  762. btn: ['确定', '取消']
  763. , yes: function () {
  764. var riskCtrlPositionId = formSelects.value('riskCtrlPositionId', 'valStr');
  765. var url = uParas.baseUrl + '/ent/risk/updateRiskPosition';
  766. admin.req(url, {
  767. riskId: obj.data.riskId,
  768. riskCtrlPositionId: riskCtrlPositionId,
  769. riskCtrlLevelId: obj.data.riskCtrlLevelId
  770. }, function (resp) {
  771. layer.closeAll();
  772. if (resp.code == 1) {
  773. layer.msg(resp.msg);
  774. insTb.reload({}, 'data');
  775. } else {
  776. layer.msg(resp.msg);
  777. }
  778. }, 'post');
  779. }, btn2: function () {
  780. layer.closeAll();
  781. },
  782. zIndex: layer.zIndex,
  783. success: function (layero, dIndex) {
  784. uParas.initFormSelects("riskCtrlPositionId", "/admin/common/getPositionList", "positionTitle", "pId", obj.data.riskCtrlPositionId);
  785. }
  786. });
  787. } else if (layEvent == 'editLEC') {
  788. admin.open({
  789. type: 1,
  790. title: 'LEC法取值范围',
  791. area: ["600px", "300px"],
  792. content: $('#riskLECTpl').html(),
  793. success: function (layero, dIndex) {
  794. var url = uParas.baseUrl + '/ent/riskLec/getById?id=' + obj.data.riskId;
  795. $.getJSON(url, {}, function (res) {
  796. if (res.data == null) {
  797. form.val('riskLECForm', obj.data);
  798. } else {
  799. form.val('riskLECForm', res.data);
  800. }
  801. form.render();
  802. });
  803. var url = uParas.baseUrl + '/ent/riskLec/update';
  804. form.on('submit(modelSubmit)', function (data) {
  805. layer.load();
  806. admin.req(url, data.field, function (resp) {
  807. layer.closeAll('loading');
  808. if (resp.code == 1) {
  809. layer.close(dIndex);
  810. layer.msg(resp.msg, {offset: ['50%'], time: 2000}, function () {
  811. location.href = "./index.html?riskPointType=" + riskPointType + "&tab=risk"
  812. });
  813. } else {
  814. layer.msg(resp.msg);
  815. }
  816. }, 'POST');
  817. return false;
  818. });
  819. }
  820. });
  821. }
  822. });
  823. /**
  824. * 新增危险源
  825. */
  826. $('#addRisk').click(function () {
  827. location.href = "./addRisk.html?riskPointType=" + riskPointType + "&tab=risk";
  828. });
  829. function doDelRisk(obj) {
  830. layer.confirm('确定要删除“' + obj.riskName + '”吗?', {
  831. skin: 'layui-layer-admin',
  832. shade: .1
  833. }, function (i) {
  834. layer.close(i);
  835. layer.load();
  836. var url = uParas.baseUrl + '/ent/risk/delete';
  837. admin.req(url, {id: obj.riskId}, function (resp) {
  838. layer.closeAll('loading');
  839. if (resp.code == 1) {
  840. layer.msg(resp.msg);
  841. insTb.reload({}, 'data');
  842. } else {
  843. layer.msg(resp.msg);
  844. }
  845. }, 'post');
  846. });
  847. }
  848. form.on('select(LEC)', function (data) {
  849. sLecFunction();
  850. });
  851. form.on('select(LSR)', function (data) {
  852. sLsrFunction();
  853. });
  854. function getLvText(level) {
  855. var lvText = "";
  856. if (level === 1) {
  857. lvText = "重大";
  858. } else if (level === 2) {
  859. lvText = "较大";
  860. } else if (level === 3) {
  861. lvText = "一般";
  862. } else {
  863. lvText = "较低";
  864. }
  865. return lvText;
  866. }
  867. function sLsrFunction() {
  868. var level = 4;
  869. level = lsrFunction($("#riskLSL").val(), $("#riskLSS").val());
  870. $("#riskLevel").val(level);
  871. $("#riskLevel_").val(level);
  872. let lvText = getLvText(level);
  873. $("#riskLevelText").val(lvText);
  874. $("#riskLevelText_").val(lvText);
  875. }
  876. function sLecFunction() {
  877. var level = 4;
  878. level = lecFunction($("#riskLECL").val(), $("#riskLECE").val(), $("#riskLECC").val());
  879. $("#riskLevel").val(level);
  880. $("#riskLevel_").val(level);
  881. let lvText = getLvText(level);
  882. $("#riskLevelText").val(lvText);
  883. $("#riskLevelText_").val(lvText);
  884. }
  885. function radioMethod(val) {
  886. if (val == 1) {
  887. sLecFunction();
  888. $(".lec").attr("hidden", false);
  889. $(".ls").attr("hidden", true);
  890. $("#rLS").attr("type", "hidden");
  891. $("#rLEC").attr("checked", "checked");
  892. } else {
  893. sLsrFunction();
  894. $(".lec").attr("hidden", true);
  895. $(".ls").attr("hidden", false);
  896. $("#rLEC").attr("type", "hidden");
  897. $("#rLS").attr("checked", "checked");
  898. }
  899. }
  900. function lecFunction(l, e, c) {
  901. var d = l * e * c;
  902. if (d > 320) {
  903. return 1;
  904. } else if (d > 160) {
  905. return 2;
  906. } else if (d > 70) {
  907. return 3;
  908. } else {
  909. return 4;
  910. }
  911. }
  912. function lsrFunction(l, s) {
  913. var r = l * s;
  914. if (r <= 25 && r >= 21) {
  915. return 1;
  916. } else if (r <= 16 && r >= 15) {
  917. return 2;
  918. } else if (r <= 12 && r >= 6) {
  919. return 3;
  920. } else if (r <= 5 && r >= 1) {
  921. return 4;
  922. } else {
  923. return 0;
  924. }
  925. }
  926. });
  927. </script>
  928. <script type="text/html" id="lvCTpl">
  929. <form id="lvCForm" lay-filter="modelForm" class="layui-form model-form">
  930. <input name="riskLevel_" id="riskLevel_" class="layui-input" type="hidden"/>
  931. <div class="layui-form-item">
  932. <label class="layui-form-label">风险等级:</label>
  933. <div class="layui-input-block">
  934. <input type="text" id="riskLevelText_" name="riskLevelText_" class="layui-input" readonly="readonly">
  935. </div>
  936. </div>
  937. <div class="layui-form-item">
  938. <label class="layui-form-label">评价方法:</label>
  939. <div class="layui-input-block">
  940. <input type="radio" name="method" lay-filter="methods" value="1" title="LEC" id="rLEC">
  941. <input type="radio" name="method" lay-filter="methods" value="2" title="LS" id="rLS">
  942. </div>
  943. </div>
  944. <div class="layui-form-item lec">
  945. <label class="layui-form-label">L:</label>
  946. <div class="layui-input-block">
  947. <select id="riskLECL" name="riskLECL" lay-filter="LEC">
  948. <option value="0.1">实际不可能</option>
  949. <option value="0.2">极不可能</option>
  950. <option value="0.5">很不可能,可以设想</option>
  951. <option value="1">可能性小,完全意外</option>
  952. <option value="3">可能,但不经常</option>
  953. <option value="6">相当可能</option>
  954. <option value="10">完全可以预料</option>
  955. </select>
  956. <span class="help-inline">提示:事故发生的可能性</span>
  957. </div>
  958. </div>
  959. <div class="layui-form-item lec">
  960. <label class="layui-form-label">E:</label>
  961. <div class="layui-input-block">
  962. <select id="riskLECE" name="riskLECE" lay-filter="LEC">
  963. <option value="0.5">非常罕见暴露</option>
  964. <option value="1">每年几次暴露</option>
  965. <option value="2">每月一次暴露</option>
  966. <option value="3">每周一次或偶然暴露</option>
  967. <option value="6">每天工作时间内暴露</option>
  968. <option value="10">连续暴露</option>
  969. </select>
  970. <span class="help-inline">提示:人员暴露于危险环境中的频繁程度</span>
  971. </div>
  972. </div>
  973. <div class="layui-form-item lec">
  974. <label class="layui-form-label">C:</label>
  975. <div class="layui-input-block">
  976. <select id="riskLECC" name="riskLECC" lay-filter="LEC">
  977. <option value="1">引人注意</option>
  978. <option value="2">重大,伤残</option>
  979. <option value="7">严重</option>
  980. <option value="15">1~2人死亡</option>
  981. <option value="40">3~9人死亡</option>
  982. <option value="100">10人以上死亡</option>
  983. </select>
  984. <span class="help-inline">提示:一旦发生事故可能造成的后果</span>
  985. </div>
  986. </div>
  987. <div class="layui-form-item ls">
  988. <label class="layui-form-label">L:</label>
  989. <div class="layui-input-block">
  990. <select id="riskLSL" name="riskLSL" lay-filter="LSR">
  991. <option value="1">极不可能</option>
  992. <option value="2">偶尔</option>
  993. <option value="3">重复发生</option>
  994. <option value="4">预期情况下经常</option>
  995. <option value="5">正常情况下经常</option>
  996. </select>
  997. <span class="help-inline">提示:事故发生的可能性</span>
  998. </div>
  999. </div>
  1000. <div class="layui-form-item ls">
  1001. <label class="layui-form-label">S:</label>
  1002. <div class="layui-input-block">
  1003. <select id="riskLSS" name="riskLSS" lay-filter="LSR">
  1004. <option value="1">无伤亡、无损失</option>
  1005. <option value="2">轻伤、损失<10万</option>
  1006. <option value="3">伤残、损失>10万</option>
  1007. <option value="4">丧失劳动力、损失>25万</option>
  1008. <option value="5">死亡、损失>50万</option>
  1009. </select>
  1010. <span class="help-inline">提示:一旦发生事故造成后果的严重性</span>
  1011. </div>
  1012. </div>
  1013. </form>
  1014. </script>
  1015. <script type="text/html" id="riskLECTpl">
  1016. <form id="riskLECForm" lay-filter="riskLECForm" class="layui-form model-form">
  1017. <input name="riskId" class="layui-input" type="hidden"/>
  1018. <div class="layui-form-item">
  1019. <label class="layui-form-label">L</label>
  1020. <div class="layui-input-block">
  1021. <div class="layui-input-inline" style="width: 100px;">
  1022. <input type="number" name="lLeft" lay-tips="L" lay-direction="2" autocomplete="off"
  1023. class="layui-input">
  1024. </div>
  1025. <div class="layui-input-inline" style="width: 100px;">
  1026. <input type="number" name="lRight" lay-tips="L" lay-direction="2" autocomplete="off"
  1027. class="layui-input">
  1028. </div>
  1029. </div>
  1030. </div>
  1031. <div class="layui-form-item">
  1032. <label class="layui-form-label">E</label>
  1033. <div class="layui-input-block">
  1034. <div class="layui-input-inline" style="width: 100px;">
  1035. <input type="number" name="eLeft" lay-tips="E" lay-direction="2" autocomplete="off"
  1036. class="layui-input">
  1037. </div>
  1038. <div class="layui-input-inline" style="width: 100px;">
  1039. <input type="number" name="eRight" lay-tips="E" lay-direction="2" autocomplete="off"
  1040. class="layui-input">
  1041. </div>
  1042. </div>
  1043. </div>
  1044. <div class="layui-form-item">
  1045. <label class="layui-form-label">C</label>
  1046. <div class="layui-input-block">
  1047. <div class="layui-input-inline" style="width: 100px;">
  1048. <input type="number" name="cLeft" lay-tips="C" lay-direction="2" autocomplete="off"
  1049. class="layui-input">
  1050. </div>
  1051. <div class="layui-input-inline" style="width: 100px;">
  1052. <input type="number" name="cRight" lay-tips="C" lay-direction="2" autocomplete="off"
  1053. class="layui-input">
  1054. </div>
  1055. </div>
  1056. </div>
  1057. <div class="layui-form-item text-right">
  1058. <button class="layui-btn layui-btn-primary" type="button" ew-event="closePageDialog">取消</button>
  1059. <button class="layui-btn" lay-filter="modelSubmit" lay-submit>保存</button>
  1060. </div>
  1061. </form>
  1062. </script>
  1063. </body>
  1064. </html>