detail.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  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. </head>
  12. <body>
  13. <style type="text/css">
  14. .divClass {
  15. padding-top: 10px;
  16. }
  17. .videoClass {
  18. width: 400px;
  19. height: 200px;
  20. border-radius: 6px !important;
  21. margin: -1px;
  22. }
  23. .videoDiv video {
  24. width: 200px;
  25. height: 100px;
  26. border-radius: 6px !important;
  27. margin: -1px;
  28. }
  29. </style>
  30. <!-- 加载动画 -->
  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-header">
  41. 反馈详情
  42. <div class="layui-inline pull-right">
  43. <button onclick="history.back()" class="layui-btn layui-btn-sm layui-btn-normal">返回</button>
  44. </div>
  45. <div class="layui-inline pull-right" style="padding-right: 15px;display: none" id="handleDiv">
  46. <button id="closeQuestion" class="layui-btn layui-btn-sm layui-btn-warm">关闭反馈</button>
  47. <button id="addHiddenDanger" class="layui-btn layui-btn-sm layui-btn-danger">下发为隐患</button>
  48. </div>
  49. </div>
  50. <div class="layui-card-body">
  51. <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
  52. <div class="layui-tab-content" style="height: auto;">
  53. <div class="layui-tab-item layui-show">
  54. <fieldset class="layui-elem-field layui-field-title">
  55. <legend>基本信息</legend>
  56. </fieldset>
  57. <div class="layui-row">
  58. <div class="layui-col-xs12">
  59. <div class="layui-form">
  60. <table class="layui-table">
  61. <!--<colgroup>-->
  62. <!--<col width="150">-->
  63. <!--<col width="150">-->
  64. <!--<col width="200">-->
  65. <!--<col>-->
  66. <!--</colgroup>-->
  67. <thead>
  68. </thead>
  69. <tbody>
  70. <tr>
  71. <th width="150">问题/隐患 所在部门</th>
  72. <td id="executorGroupName" colspan="3"></td>
  73. </tr>
  74. <tr>
  75. <th width="150">反馈人员</th>
  76. <td id="executorName"></td>
  77. <th width="150">提交时间</th>
  78. <td id="createdTime"></td>
  79. </tr>
  80. <tr>
  81. <th width="150">处理人员</th>
  82. <td id="disposeName"></td>
  83. <th width="150">处理时间</th>
  84. <td id="updatedTime"></td>
  85. </tr>
  86. <tr>
  87. <th width="150">处理结果</th>
  88. <td id="resultValue"></td>
  89. <th width="150">处理结果描述</th>
  90. <td id="resultRemark"></td>
  91. </tr>
  92. <tr>
  93. <th width="150">反馈描述</th>
  94. <td colspan="3" id="spotRemark">
  95. </td>
  96. </tr>
  97. <tr>
  98. <th width="150">现场照片</th>
  99. <td id="spotImg" colspan="3"></td>
  100. </tr>
  101. <tr>
  102. <th width="150">现场视频</th>
  103. <td id="spotVideo" colspan="3"></td>
  104. </tr>
  105. </tbody>
  106. </table>
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. <!-- 表单弹窗 -->
  118. <script type="text/html" id="modelTpl">
  119. <form id="modelForm" lay-filter="modelForm" class="layui-form model-form">
  120. <input type="hidden" class="layui-input" id="hdangerId" name="hdangerId"/>
  121. <input type="hidden" class="layui-input" id="hdangerReviewOn" name="hdangerReviewOn"/>
  122. <div class="divClass layui-col-md6">
  123. <label class="layui-form-label"><span class="layui-badge-dot"></span> 隐患名称</label>
  124. <div class="layui-input-block">
  125. <input type="text" class="layui-input" id="hdangerTitle" name="hdangerTitle" placeholder="请输入标题"
  126. maxlength="64"
  127. lay-verType="tips" lay-verify="required" required/>
  128. </div>
  129. </div>
  130. <div class="divClass layui-col-md6">
  131. <label class="layui-form-label"><span class="layui-badge-dot"></span> 隐患类型</label>
  132. <div class="layui-input-block">
  133. <select name="hdangerCatId" id="hdangerCatId" lay-verType="tips" lay-verify="required" required
  134. class="layui-input-block ">
  135. </select>
  136. </div>
  137. </div>
  138. <div class="divClass layui-col-md6">
  139. <label class="layui-form-label"><span class="layui-badge-dot"></span> 隐患等级</label>
  140. <div class="layui-input-block">
  141. <select id="hdangerLevel" name="hdangerLevel" lay-filter="layuiForm" lay-verType="tips"
  142. lay-verify="required"
  143. class="layui-input-block ">
  144. <option value="">点击选择</option>
  145. </select>
  146. </div>
  147. </div>
  148. <div class="divClass layui-col-md6">
  149. <label class="layui-form-label"><span class="layui-badge-dot"></span> 整改期限</label>
  150. <div class="layui-input-block">
  151. <input type="text" name="hdangerRetifyDeadline" id="hdangerRetifyDeadline"
  152. lay-verType="tips" lay-verify="required" class="layui-input" readonly>
  153. </div>
  154. </div>
  155. <div class="divClass layui-col-md6" id="hdangerReviewGroupDiv" style="display: none">
  156. <label class="layui-form-label"><span class="layui-badge-dot"></span> 评审部门</label>
  157. <div class="layui-input-block">
  158. <input type="text" id="hdangerReviewGroupName" class="layui-input" name="hdangerReviewGroupName"
  159. value=""
  160. placeholder="点击选择部门"
  161. class="form-control" readonly>
  162. <input type="hidden" id="hdangerReviewGroup" name="hdangerReviewGroup" readonly>
  163. <div id="menuContentReview" class="menuContent">
  164. <ul id="threeLevelGroupReview" class="ztree" style="margin-top:0;"></ul>
  165. </div>
  166. </div>
  167. </div>
  168. <div class="divClass layui-col-md6" id="hdangerReviewByDiv" style="display: none">
  169. <label class="layui-form-label"><span class="layui-badge-dot"></span> 评审人员</label>
  170. <div class="layui-input-block">
  171. <select id="hdangerReviewBy" name="hdangerReviewBy" lay-verType="tips" class="layui-input-block">
  172. <option value="">点击选择人员</option>
  173. </select>
  174. </div>
  175. </div>
  176. <div class="divClass layui-col-md6" id="hdangerRetifyGroupDiv" style="display: none">
  177. <label class="layui-form-label"><span class="layui-badge-dot"></span> 整改部门</label>
  178. <div class="layui-input-block">
  179. <input type="text" id="hdangerRetifyGroupName" class="layui-input" name="hdangerRetifyGroupName"
  180. value=""
  181. placeholder="点击选择部门"
  182. class="form-control" readonly>
  183. <input type="hidden" id="hdangerRetifyGroup" name="hdangerRetifyGroup" readonly>
  184. <div id="menuContentRetify" class="menuContent">
  185. <ul id="threeLevelGroupRetify" class="ztree" style="margin-top:0;"></ul>
  186. </div>
  187. </div>
  188. </div>
  189. <div class="divClass layui-col-md6" id="hdangerRetifyByDiv" style="display: none">
  190. <label class="layui-form-label "><span class="layui-badge-dot"></span> 整改人员</label>
  191. <div class="layui-input-block">
  192. <select id="hdangerRetifyBy" name="hdangerRetifyBy" class="layui-input-block"
  193. lay-filter="layuiFormRetify">
  194. <option value="">点击选择人员</option>
  195. </select>
  196. </div>
  197. </div>
  198. <div class="divClass layui-col-md6" id="hdangerAcceptedGroupDiv" style="display: none">
  199. <label class="layui-form-label"><span class="layui-badge-dot"></span> 验收部门</label>
  200. <div class="layui-input-block">
  201. <input type="text" id="hdangerAcceptedGroupName" class="layui-input" name="hdangerAcceptedGroupName"
  202. value=""
  203. placeholder="点击选择部门"
  204. class="form-control" readonly>
  205. <input type="hidden" id="hdangerAcceptedGroup" name="hdangerAcceptedGroup" readonly>
  206. <div id="menuContentAccepted" class="menuContent">
  207. <ul id="threeLevelGroupAccepted" class="ztree" style="margin-top:0;"></ul>
  208. </div>
  209. </div>
  210. </div>
  211. <div class="divClass layui-col-md6" id="hdangerAcceptedByDiv" style="display: none">
  212. <label class="layui-form-label"><span class="layui-badge-dot"></span> 验收人员</label>
  213. <div class="layui-input-block">
  214. <select id="hdangerAcceptedBy" name="hdangerAcceptedBy" class="layui-input-block"
  215. lay-verType="tips">
  216. <option value="">点击选择人员</option>
  217. </select>
  218. </div>
  219. </div>
  220. <div class="divClass layui-col-md12">
  221. <label class="layui-form-label">现场描述</label>
  222. <div class="layui-input-block">
  223. <textarea class="layui-textarea" lay-verType="tips" lay-verify="required" placeholder="请输入描述"
  224. id="hdangerDesc" name="hdangerDesc" maxlength="500"></textarea>
  225. </div>
  226. </div>
  227. <!--附件-->
  228. <div class="divClass layui-col-md12">
  229. <label class="layui-form-label">现场照片</label>
  230. <div class="layui-input-block text-left">
  231. <div id="imageDiv" style="padding-top: 10px;"></div>
  232. </div>
  233. </div>
  234. <div class="divClass layui-col-md12">
  235. <label class="layui-form-label">现场视频</label>
  236. <div class="layui-input-block text-left">
  237. <div id="videoDiv" class="videoDiv" style="padding-top: 10px;"></div>
  238. </div>
  239. </div>
  240. <div class="layui-col-md12 text-center" style="padding-bottom: 10px;padding-top: 20px;">
  241. <button type="button" class="layui-btn" lay-filter="formSubmit" lay-submit>&emsp;提交&emsp;</button>
  242. <button type="button" class="layui-btn layui-btn-normal" ew-event="closePageDialog">&emsp;取消&emsp;</button>
  243. </div>
  244. </form>
  245. </script>
  246. <!-- js部分 -->
  247. <script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>
  248. <script type="text/javascript" src="../../../assets/libs/jquery/jquery-3.2.1.min.js"></script>
  249. <script type="text/javascript" src="../../../assets/js/common.js?v=312"></script>
  250. <script>
  251. var layer;
  252. layui.use(['layer', 'form', 'table', 'util', 'admin', 'uParas', 'laydate', '_groupTree'], function () {
  253. var $ = layui.jquery;
  254. layer = layui.layer;
  255. var form = layui.form;
  256. var util = layui.util;
  257. var admin = layui.admin;
  258. var uParas = layui.uParas;
  259. var laydate = layui.laydate;
  260. var _groupTree = layui._groupTree;
  261. //debugger;
  262. var feedbackId = uParas.getUrlParam("feedbackId");
  263. var imghtml = "";
  264. var videohtml = "";
  265. var hdangerDesc = ""
  266. admin.req(uParas.baseUrl + '/ent/feedback/getDetail', {"feedbackId": feedbackId}, function (res) {
  267. if (res.code == 1) {
  268. var feedback = res.data;
  269. if (feedback != null) {
  270. hdangerDesc = feedback.spotRemark;
  271. $("#spotRemark").text(feedback.spotRemark);
  272. $("#executorName").text(feedback.executorName);
  273. $("#createdTime").text(feedback.createdTime);
  274. $("#disposeName").text(feedback.disposeName);
  275. $("#updatedTime").text(feedback.updatedTime);
  276. $("#resultRemark").text(feedback.resultRemark);
  277. $("#executorGroupName").text(feedback.executorGroupName);
  278. if (feedback.resultValue == 0) {
  279. $("#resultValue").text("未处理");
  280. $("#handleDiv").show();
  281. } else {
  282. $("#resultValue").text("已处理");
  283. }
  284. var subList = feedback.attachList;
  285. if (subList != null && subList.length > 0) {
  286. $.each(subList, function (i, item) {
  287. if (item.attachType == 'image') {
  288. imghtml += '<img onclick="openImage(\'' + item.attachPath + '\')" style="width: 150px;height: 100px;border-radius: 6px !important;padding-right: 10px;" src="' + item.attachPath + '"/>';
  289. } else if (item.attachType == 'video') {
  290. videohtml += '<video class="videoClass" src="' + item.attachPath + '" controls="controls"></video>';
  291. }
  292. });
  293. $('#spotImg').html(imghtml);
  294. $('#spotVideo').html(videohtml);
  295. }
  296. }
  297. }
  298. }, 'get');
  299. //关闭反馈
  300. $("#closeQuestion").click(function () {
  301. layer.confirm('确定要关闭反馈吗?', {
  302. skin: 'layui-layer-admin',
  303. shade: .1
  304. }
  305. , function (i) {
  306. layer.close(i);
  307. layer.load();
  308. admin.req(uParas.baseUrl + '/ent/feedback/close', {"feedbackId": feedbackId}, function (res) {
  309. layer.closeAll('loading');
  310. if (res.code == 1) {
  311. layer.msg(res.msg);
  312. history.go(-1);
  313. } else {
  314. layer.msg(res.msg);
  315. }
  316. }, 'POST');
  317. });
  318. });
  319. $("#addHiddenDanger").click(function () {
  320. admin.req(uParas.baseUrl + '/ent/sysInfo/getInfo', null, function (resp) {
  321. if (resp.code == 1) {
  322. //1评审,0不评审
  323. showAddModel(resp.data.hdangerReviewOn);
  324. } else {
  325. layer.msg(res.msg);
  326. }
  327. });
  328. });
  329. function showAddModel(hdangerReviewOn) {
  330. admin.open({
  331. type: 1,
  332. title: "填写隐患信息并提交",
  333. offset: 'auto',
  334. area: '800px',
  335. content: $('#modelTpl').html(),
  336. success: function (layero, dIndex) {
  337. //debugger
  338. form.render();
  339. $("#hdangerId").val(feedbackId);
  340. $("#hdangerReviewOn").val(hdangerReviewOn);
  341. /*隐患等级*/
  342. uParas.initSimpleSelect("hdangerLevel", "modelForm", "/admin/common/getHdangerLevelList", "keyName", "keyValue");
  343. /*隐患类型*/
  344. uParas.initSimpleSelect("hdangerCatId", "modelForm", "/admin/common/getCommonClassifyesByCatType?catType=1", "catName", "catId");
  345. var groupUrl = '/admin/common/getFindGroupLists';
  346. //1评审,0不评审
  347. if (hdangerReviewOn == 1) {
  348. $("#hdangerReviewGroupDiv").show();
  349. $("#hdangerReviewByDiv").show();
  350. /*评审部门and人员*/
  351. _groupTree.initgroupTreeAndUsers(groupUrl, "threeLevelGroupReview", "hdangerReviewGroupName",
  352. "hdangerReviewGroup", "menuContentReview", "hdangerReviewBy", "modelForm");
  353. } else {
  354. $("#hdangerRetifyGroupDiv").show();
  355. $("#hdangerRetifyByDiv").show();
  356. $("#hdangerAcceptedGroupDiv").show();
  357. $("#hdangerAcceptedByDiv").show();
  358. /*整改部门and人员*/
  359. _groupTree.initgroupTreeAndUsers(groupUrl, "threeLevelGroupRetify", "hdangerRetifyGroupName",
  360. "hdangerRetifyGroup", "menuContentRetify", "hdangerRetifyBy", "modelForm");
  361. /*验收部门and人员*/
  362. _groupTree.initgroupTreeAndUsers(groupUrl, "threeLevelGroupAccepted", "hdangerAcceptedGroupName",
  363. "hdangerAcceptedGroup", "menuContentAccepted", "hdangerAcceptedBy", "modelForm");
  364. }
  365. $("#hdangerDesc").val(hdangerDesc);
  366. $("#imageDiv").html(imghtml);
  367. $("#videoDiv").html(videohtml);
  368. //时间选择
  369. laydate.render({
  370. elem: '#hdangerRetifyDeadline',
  371. min: new Date().valueOf(),
  372. format: 'yyyy-MM-dd HH:mm:ss',
  373. type: 'datetime'
  374. });
  375. //保存处理
  376. form.on('submit(formSubmit)', function (data) {
  377. //debugger
  378. //1评审,0不评审
  379. if (hdangerReviewOn == 1) {
  380. if (data.field.hdangerReviewGroup == null || data.field.hdangerReviewGroup == "" || data.field.hdangerReviewGroup == "-1") {
  381. layer.msg("请选择评审部门");
  382. return false;
  383. }
  384. if (data.field.hdangerReviewBy == null || data.field.hdangerReviewBy == "" || data.field.hdangerReviewBy == "-1") {
  385. layer.msg("请选择评审人员");
  386. return false;
  387. }
  388. } else {
  389. if (data.field.hdangerRetifyGroup == null || data.field.hdangerRetifyGroup == "" || data.field.hdangerRetifyGroup == "-1") {
  390. layer.msg("请选择整改部门");
  391. return false;
  392. }
  393. if (data.field.hdangerRetifyBy == null || data.field.hdangerRetifyBy == "" || data.field.hdangerRetifyBy == "-1") {
  394. layer.msg("请选择整改人员");
  395. return false;
  396. }
  397. if (data.field.hdangerAcceptedGroup == null || data.field.hdangerAcceptedGroup == "" || data.field.hdangerAcceptedGroup == "-1") {
  398. layer.msg("请选择验收部门");
  399. return false;
  400. }
  401. if (data.field.hdangerAcceptedBy == null || data.field.hdangerAcceptedBy == "" || data.field.hdangerAcceptedBy == "-1") {
  402. layer.msg("请选择验收人员");
  403. return false;
  404. }
  405. }
  406. layer.load();
  407. var saveUrl = uParas.baseUrl + "/ent/hiddenDanger/saveFeedbackHiddenDanger";
  408. admin.req(saveUrl, data.field, function (resp) {
  409. layer.closeAll('loading');
  410. if (resp.code == 1) {
  411. layer.close(dIndex);
  412. layer.msg(resp.msg);
  413. location.reload();
  414. } else {
  415. layer.msg(resp.msg);
  416. }
  417. }, 'POST');
  418. return false;
  419. });
  420. }
  421. });
  422. }
  423. });
  424. // function showImg(src) {
  425. // var imgHtml = "<img src='" + src + "' width='1000px' height='650'/>";
  426. // layer.open({
  427. // type: 1,
  428. // shade: 0.1,
  429. // offset: 'auto',
  430. // area: [1000 + 'px',650+'px'], // area: [width + 'px',height+'px'] //原图显示
  431. // shadeClose:true,
  432. // scrollbar: false,
  433. // title: "图片附件预览", //不显示标题
  434. // content: imgHtml, //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
  435. // // cancel: function () {
  436. // // layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构', { time: 5000, icon: 6 });
  437. // // }
  438. // });
  439. // }
  440. </script>
  441. </body>
  442. </html>