index.html 50 KB

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