index.html 52 KB

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