index.html 52 KB

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