taskDetail.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561
  1. <div class="container-fluid ">
  2. <div class="row">
  3. <h3 style="padding-top: 10px;padding-bottom: 15px;">考核基本信息</h3>
  4. <div>
  5. <table style="width:100%;">
  6. <tr>
  7. <td width="20%">考核任务名:<label id="name"></label></td>
  8. <td width="20%">考核时间: <label id="checktime"></label></td>
  9. <td width="20%">考核部门:<label id="checked_dept"></label></td>
  10. </tr>
  11. </table>
  12. </div>
  13. </div>
  14. <hr>
  15. <div class="row">
  16. <h3 style="padding-top: 10px;padding-bottom: 15px;">考核任务流程</h3>
  17. <div id="flow_div">
  18. </div>
  19. </div>
  20. <hr>
  21. <div class="row">
  22. <h3 style="padding-top: 10px;padding-bottom: 15px;">考核详细内容</h3>
  23. <div>
  24. <div id="score_datatable" data-checkable="true" data-sortable="true"></div>
  25. </div>
  26. </div>
  27. <hr>
  28. <div class="row" id="appeal_div">
  29. <h3 style="padding-top: 10px;padding-bottom: 15px;">申诉基本信息</h3>
  30. <div>
  31. <table style="width:100%;">
  32. <tr>
  33. <td width="20%">申诉时间:<label id="appeal_time"></label></td>
  34. <td width="20%">申诉原因:<label id="appeal_reason"></label></td>
  35. </tr>
  36. <tr>
  37. <td width="20%">附件:
  38. <div class="file-list" id="appeal_file_list">
  39. </div>
  40. </td>
  41. <td>
  42. </td>
  43. </tr>
  44. <tr>
  45. <td width="20%">复核结果:
  46. <label id="recheck_result"></label>
  47. </td>
  48. <td>
  49. </td>
  50. </tr>
  51. </table>
  52. </div>
  53. </div>
  54. <div class="row" style="margin-top:5px;text-align:center">
  55. <div>
  56. <button id="submitBtn" style="display:none" type="button" class="btn btn-warning" onclick="submitCheck()">提交</button>
  57. <button id="confirmBtn" style="display:none" type="button" class="btn btn-warning" onclick="confirmCheck()">确认</button>
  58. <button id="submitAppealBtn" style="display:none" type="button" class="btn btn-warning" onclick="submitCheck4Appeal()">复核提交</button>
  59. <button id="confirmAppealBtn" style="display:none" type="button" class="btn btn-warning" onclick="confirmCheck4Appeal()">申诉结果确认</button>
  60. <button id="appealBtn" style="display:none" type="button" class="btn btn-danger" onclick="showAppeal()">申诉</button>
  61. <button id="assignBtn" style="display:none" type="button" class="btn btn-danger" onclick="showAssign()">分配</button>
  62. <button id="backBtn" style="display:none" type="button" class="btn btn-danger" onclick="back2Check()">退回重新稽查</button>
  63. <button id="backAppealBtn" style="display:none" type="button" class="btn btn-danger" onclick="back2AppealCheck()">退回重新复查</button>
  64. <button id="backConfirmBtn" style="display:none" type="button" class="btn btn-danger" onclick="back2Confirm()">退回重新确认</button>
  65. </div>
  66. </div>
  67. </div>
  68. <div id="form-div" style="display:none;text-align:center;height:300px;padding:5px;">
  69. <div class="row">
  70. <div id="img_container" class="cards cards-borderless col-sm-12">
  71. </div>
  72. </div>
  73. </div>
  74. <div id="appealDetail-div" style="display:none;text-align:center;">
  75. <link rel="import" href="/qzd/view/appeal_management/appealDetail.html?__inline">
  76. </div>
  77. <div id="chooseCheckman-div" style="display:none;text-align:center;">
  78. <link rel="import" href="/qzd/view/task/chooseCheckman.html?__inline">
  79. </div>
  80. <style>
  81. .line {
  82. text-align: center;
  83. font-size: 20px;
  84. height: 5px;
  85. margin: 15px 0px;
  86. width: 100%;
  87. background: #1296db;
  88. overflow: hidden;
  89. }
  90. .timeline_item_station {
  91. left: 42%;
  92. /* margin-left: 55px; */
  93. margin-top: 18px;
  94. width: 25px;
  95. height: 25px;
  96. padding: 15px;
  97. border-width: 6px;
  98. background-color: rgb(50, 141, 199);
  99. position: absolute;
  100. border-radius: 50%;
  101. padding: 10px;
  102. top: 0;
  103. -webkit-transition: all .3s ease-out;
  104. transition: all .3s ease-out;
  105. }
  106. </style>
  107. <script>
  108. $(document).ready(function() {
  109. addBreadMenu("/qzd/view/task/taskDetail.html", "稽查详情");
  110. checkAuth();
  111. $("#name").html($.checkTask.name);
  112. $("#checkman").html($.checkTask.checkman_name);
  113. $("#checktime").html($.checkTask.start_time);
  114. $("#checked_dept").html($.checkTask.checked_dept_name);
  115. if ($.checkTask.appeal) {
  116. $("#appeal_div").show();
  117. $("#appeal_time").html($.checkTask.appeal.appeal_time);
  118. $("#appeal_reason").html($.checkTask.appeal.appeal_reason);
  119. $("#appeal_file_list").html(genAppeaFiles($.checkTask.appeal.file_src));
  120. $("#recheck_result").html($.checkTask.appeal.recheck_result);
  121. } else {
  122. $("#appeal_div").hide();
  123. }
  124. genFlow();
  125. queryScores();
  126. });
  127. //初始化表行按钮
  128. function initBtns() {
  129. console.log(getCurrentUser());
  130. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_2", ["#submitBtn"]);
  131. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_3", ["#submitBtn"]);
  132. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_7", ["#submitBtn"]);
  133. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_12", ["#submitAppealBtn"]);
  134. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_13", ["#submitAppealBtn"]);
  135. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_17", ["#submitAppealBtn"]);
  136. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_4", ["#backBtn"]);
  137. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_6", ["#backConfirmBtn"]);
  138. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_14", ["#backAppealBtn"]);
  139. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_11", ["#assignBtn"]);
  140. $.zui.store.set("task_detail_btn_" + ROLE_WRECKER_MANAGER + "_5", ["#confirmBtn", "#appealBtn"]);
  141. $.zui.store.set("task_detail_btn_" + ROLE_WRECKER_MANAGER + "_15", ["#confirmAppealBtn"]);
  142. }
  143. function checkAuth() {
  144. initBtns();
  145. showBtn(ROLE_JICHA, $.checkTask.check_status);
  146. showBtn(ROLE_JICHA_ADMIN, $.checkTask.check_status);
  147. showBtn(ROLE_WRECKER_MANAGER, $.checkTask.check_status);
  148. }
  149. function showBtn(role, status) {
  150. // console.log(getCurrentUser());
  151. if (hasRole(role)) {
  152. var btnArr = $.zui.store.get("task_detail_btn_" + role + "_" + status);
  153. if (btnArr) {
  154. console.log(btnArr);
  155. for (var i in btnArr) {
  156. $(btnArr[i]).show();
  157. }
  158. }
  159. }
  160. }
  161. function queryScores() {
  162. // 使用data参数更新数据:
  163. var data = {
  164. "task_id": $.checkTask.id
  165. }
  166. var cols = [{
  167. width: 80,
  168. text: '序号',
  169. type: 'number',
  170. flex: true,
  171. colClass: 'text-center',
  172. field: 'num'
  173. }, {
  174. width: 60,
  175. text: '评分记录',
  176. type: 'string',
  177. flex: true,
  178. sort: 'down',
  179. field: 'content'
  180. }, {
  181. width: 80,
  182. text: '分数',
  183. type: 'string',
  184. flex: true,
  185. colClass: '',
  186. field: 'check_item_score'
  187. }, {
  188. width: 80,
  189. text: '考核人',
  190. type: 'string',
  191. flex: true,
  192. colClass: '',
  193. field: 'checked_area_name'
  194. }, {
  195. width: 80,
  196. text: '备注',
  197. type: 'string',
  198. flex: true,
  199. colClass: '',
  200. field: 'remark'
  201. }, {
  202. width: 280,
  203. text: '图片',
  204. type: 'imagedd',
  205. flex: true,
  206. colClass: '',
  207. field: 'pics'
  208. }];
  209. if (hasRole(ROLE_JICHA) && ($.checkTask.check_status == 2 || $.checkTask.check_status == 2 || $.checkTask.check_status == 12 ||
  210. $.checkTask.check_status == 13)) {
  211. var oper = {
  212. width: 160,
  213. text: '操作',
  214. type: 'string',
  215. flex: true,
  216. field: 'id',
  217. oper: [{
  218. func: 'showEditScore',
  219. text: '修改',
  220. icon_class: 'icon-edit'
  221. }, {
  222. func: 'deleteScore',
  223. text: '删除',
  224. icon_class: 'icon-remove-circle'
  225. }]
  226. }
  227. cols.push(oper);
  228. }
  229. $('#score_datatable').mytable({
  230. 'cols': cols,
  231. 'url': "/q/score/getScoreList/",
  232. 'param': data
  233. });
  234. $('a.lightbox-toggle').lightbox();
  235. }
  236. var curScoreId;
  237. function showEditScore(id) {
  238. var rowData = getItemByIdFromArr(id, $('#score_datatable').mytable('getTableData'));
  239. // alert(rowData.pics);
  240. curScoreId = rowData.id;
  241. scoreImageLayer = showPopup4Common('修改图片', updateImg, '600px');
  242. showTaskDetailPics(rowData.pics);
  243. }
  244. function showTaskDetailPics(pics, divId) {
  245. var picStr = '';
  246. if (!divId) divId = '#img_container';
  247. $(divId).html(picStr);
  248. if (pics) {
  249. var picArr = pics.split(',');
  250. for (var i in picArr) {
  251. var ispic = true;
  252. var src = picArr[i];
  253. if (!src.startWith("http"))
  254. src = base_image_server_url + src;
  255. var videosrc = src;
  256. if (src.indexOf('.avi') != -1) {
  257. src = src.split('.avi')[0] + "_screen_0.png"
  258. ispic = false;
  259. }
  260. if (src.indexOf('.mov') != -1) {
  261. src = src.split('.mov')[0] + "_screen_0.png"
  262. ispic = false;
  263. }
  264. if (src.indexOf('.mp4') != -1) {
  265. src = src.split('.mp4')[0] + "_screen_0.png"
  266. ispic = false;
  267. }
  268. var pic = '<div id="img_item_' + i + '" class="col-md-4 col-sm-6 col-lg-3">' +
  269. '<a href="javascript:void(0)" onclick="removeImg(\'#img_item_' + i + '\')" style="float:right;position:absolute;z-index:100;"><span class="label label-danger"><i class="icon icon-remove-circle"></i> 删除</span></a>' +
  270. (ispic ? '<a class="card lightbox-toggle" data-group="image-group-1" data-lightbox-group="example-3" href="' + src + '" style="position:absolute">' : '<a class="card" onclick="video_paly(\'' + videosrc + '\')" href="javascript:void(0)" style="position:absolute">') +
  271. '<img class="pic-class img-thumbnail" style="width:200px;height:150px;" src="' + src + '" alt="">' + (ispic ? '' : '<i class="icon icon-play-circle" style=" font-size: 30px;position: absolute;top: 40px;left:80px;color: white;"></i>') +
  272. '</a>' +
  273. '</div>';
  274. picStr += pic;
  275. }
  276. $(divId).html(picStr);
  277. $('a.lightbox-toggle').lightbox();
  278. }
  279. }
  280. function updateImg() {
  281. var imgArr = $("#img_container .pic-class");
  282. var picsStr = "";
  283. if (imgArr && imgArr.length > 0) {
  284. for (var i = 0; i < imgArr.length; i++) {
  285. picsStr += imgArr[i].src + ","
  286. }
  287. picsStr = picsStr.substr(0, picsStr.length - 1);
  288. }
  289. var param = {
  290. 'id': curScoreId,
  291. 'pics': picsStr
  292. }
  293. // alert("dddd");
  294. addOrUpdateItem4Common(param, "/q/score/update", queryScores);
  295. curScoreId = "";
  296. }
  297. function deleteScore(id) {
  298. deleteItem4Common(id, "/q/score/delete/", queryScores);
  299. }
  300. function genFlow() {
  301. var data = {
  302. "id": $.checkTask.id
  303. };
  304. post_common_service("/q/task/getStatusById/", data, function(data) {
  305. if (data) {
  306. // console.log(data)
  307. var flowStr = "";
  308. var color_t = new $.zui.Color("#63B8FF");
  309. for (var i in data) {
  310. var color = new $.zui.Color(color_t.r - i * 10, color_t.g - i * 10, color_t.b - i * 10);
  311. var startcolor = new $.zui.Color(color_t.r - i * 10 + 5, color_t.g - i * 10 + 5, color_t.b - i * 10 + 5);
  312. var endcolor = new $.zui.Color(color_t.r - i * 10 - 5, color_t.g - i * 10 - 5, color_t.b - i * 10 - 5);
  313. var background = "background:-webkit-gradient(linear, 0 % 0 % , 0 % 100 % , from(" + startcolor.hexStr() + "), to(" + endcolor.hexStr() + "));" +
  314. "background:-webkit-linear-gradient(top, " + startcolor.hexStr() + ", " + endcolor.hexStr() + ");" + "background:-moz-linear-gradient(top," + startcolor.hexStr() + "," + endcolor.hexStr() + ");"
  315. var str = "";
  316. if (i == 0) {
  317. str = '<div class="col-sm-2" style="text-align:center;padding:0px;width: 87px;margin-left:-60px;">' +
  318. '<img src="/images/start.png" style="width: 28px;right:-1px; position: absolute; top:16px;">' +
  319. '</div>'
  320. }
  321. str +=
  322. // '<div class="col-sm-2" style="text-align:center;padding:0px;width: 87px;margin-left:-88px;">' +
  323. // ' <img src="/images/end.png" style="width: 35px;margin-left: 36px;margin-top: 25px;">' +
  324. // '</div>' +
  325. '<div class="col-sm-2" style="text-align:center;padding:0px;width: 140px;margin-bottom: 33px;">' +
  326. '<div class="row">' +
  327. ' <label>' + data[i].check_status_name + '</label>' +
  328. '</div>' +
  329. '<div class="row line" style="margin-top: 3px;' + background + '">' +
  330. ' <div class="timeline_item_station" style="background:' + color.hexStr() + '"></div>' +
  331. '</div>' +
  332. '<div class="row" style="margin-top: -5px;">' +
  333. ' <label style=" font-weight: 400;">' + data[i].update_time + '</label>' +
  334. '</div>' +
  335. (i == data.length - 1 ? (
  336. '<i class="icon icon-angle-right" style="font-size: 45px;right: -5px;position: absolute;top: 6px;color:' + endcolor.hexStr() + '"></i>'
  337. // ' <img src="/images/end.png" style="width: 28px;right:-10px; position: absolute; top:16px;">'
  338. ) : "") +
  339. '</div>';
  340. flowStr += str;
  341. }
  342. $("#flow_div").html(flowStr);
  343. }
  344. })
  345. }
  346. function submitCheck() {
  347. var param = {
  348. "id": $.checkTask.id,
  349. "check_status": 4
  350. }
  351. no_return_common_service("/q/task/taskEnd/", param, function(data) {
  352. layer.msg("提交成功", {
  353. time: 2000 //20s后自动关闭
  354. });
  355. redirectLastPage();
  356. });
  357. }
  358. function submitCheck4Appeal() {
  359. var appeal_result = 1;
  360. //询问框
  361. layer.confirm('该申诉是否成功?', {
  362. btn: ['成功', '失败'] //按钮
  363. }, function() {
  364. appeal_result = 1;
  365. submitAppealResult(appeal_result);
  366. }, function() {
  367. appeal_result = 2;
  368. submitAppealResult(appeal_result);
  369. });
  370. }
  371. function submitAppealResult(appeal_result) {
  372. var param = {
  373. "id": $.checkTask.id,
  374. "check_status": 14,
  375. "appeal_id": $.checkTask.appeal.id,
  376. "appeal_result": appeal_result
  377. }
  378. no_return_common_service("/q/task/update/", param, function(data) {
  379. layer.msg("提交成功", {
  380. time: 2000 //20s后自动关闭
  381. });
  382. redirectLastPage();
  383. });
  384. }
  385. var appealLayer;
  386. function showAppeal() {
  387. // appealLayer = showPopup4Common('申诉',saveAppeal,'600px','#appealDetail-div');
  388. layer.open({
  389. type: 1,
  390. area: '600px',
  391. title: '申诉',
  392. closeBtn: 1,
  393. shadeClose: true,
  394. skin: 'layui-layer-lan',
  395. content: $('#appealDetail-div'),
  396. btn: '保存',
  397. btnAlign: 'c', //按钮居中
  398. shade: 0, //不显示遮罩
  399. yes: function(index) {
  400. saveAppeal();
  401. }
  402. });
  403. }
  404. function confirmCheck() {
  405. layer.confirm('是否确认该稽查结果?', {
  406. btn: ['确认', '取消'], //按钮
  407. offset: 'auto'
  408. }, function() {
  409. var param = {
  410. "id": $.checkTask.id,
  411. "check_status": 6
  412. }
  413. no_return_common_service("/q/task/update/", param, function(data) {
  414. layer.msg("确认成功", {
  415. time: 2000 //20s后自动关闭
  416. });
  417. redirectLastPage();
  418. });
  419. }, function(index) {
  420. layer.close(index);
  421. });
  422. }
  423. function confirmCheck4Appeal() {
  424. layer.confirm('是否确认该申诉结果?', {
  425. btn: ['确认', '取消'], //按钮
  426. offset: 'auto'
  427. }, function() {
  428. var param = {
  429. "id": $.checkTask.id,
  430. "check_status": 16
  431. }
  432. no_return_common_service("/q/task/update/", param, function(data) {
  433. layer.msg("确认成功", {
  434. time: 2000 //20s后自动关闭
  435. });
  436. redirectLastPage();
  437. });
  438. }, function(index) {
  439. layer.close(index);
  440. });
  441. }
  442. function showAssign() {
  443. showPopup4Common('分配稽查员', function() {
  444. saveAssign();
  445. }, '400px', '#chooseCheckman-div');
  446. setCheckmanSelect('#choseCheckmanList', null, $.checkTask.checkman,
  447. function() {
  448. $('#choseCheckmanList').chosen({
  449. // width:'200px',
  450. height: '100px',
  451. no_results_text: '没有找到', // 当检索时没有找到匹配项时显示的提示文本
  452. disable_search_threshold: 10, // 10 个以下的选择项则不显示检索框
  453. search_contains: true // 从任意位置开始检索
  454. });
  455. });
  456. }
  457. function saveAssign() {
  458. var param = {
  459. "id": $.checkTask.id,
  460. "recheckman": $('#choseCheckmanList').val(),
  461. "check_status": 12
  462. }
  463. no_return_common_service("/q/task/update/", param, function(data) {
  464. layer.msg("分配成功", {
  465. time: 2000 //20s后自动关闭
  466. });
  467. redirectLastPage();
  468. });
  469. }
  470. function back2Check() {
  471. //退回到待提交页面
  472. var param = {
  473. "id": $.checkTask.id,
  474. "check_status": 3,
  475. "check_status_name": "退回"
  476. }
  477. no_return_common_service("/q/task/update/", param, function(data) {
  478. layer.msg("退回成功", {
  479. time: 2000 //20s后自动关闭
  480. });
  481. redirectLastPage();
  482. });
  483. }
  484. function back2Confirm() {
  485. //退回到待提交页面
  486. var param = {
  487. "id": $.checkTask.id,
  488. "check_status": 5,
  489. "check_status_name": "退回重新确认"
  490. }
  491. no_return_common_service("/q/task/update/", param, function(data) {
  492. layer.msg("退回成功", {
  493. time: 2000 //20s后自动关闭
  494. });
  495. redirectLastPage();
  496. });
  497. }
  498. function back2AppealCheck() {
  499. //退回到待提交页面
  500. var param = {
  501. "id": $.checkTask.id,
  502. "check_status": 13,
  503. "check_status_name": "退回"
  504. }
  505. no_return_common_service("/q/task/update/", param, function(data) {
  506. layer.msg("退回成功", {
  507. time: 2000 //20s后自动关闭
  508. });
  509. redirectLastPage();
  510. });
  511. }
  512. </script>