taskDetail.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  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="/fwq/view/appeal_management/appealDetail.html?__inline">
  76. </div>
  77. <div id="chooseCheckman-div" style="display:none;text-align:center;">
  78. <link rel="import" href="/fwq/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("/fwq/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. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_2", ["#submitBtn"]);
  130. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_3", ["#submitBtn"]);
  131. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_7", ["#submitBtn"]);
  132. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_12", ["#submitAppealBtn"]);
  133. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_13", ["#submitAppealBtn"]);
  134. $.zui.store.set("task_detail_btn_" + ROLE_JICHA + "_17", ["#submitAppealBtn"]);
  135. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_4", ["#backBtn"]);
  136. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_6", ["#backConfirmBtn"]);
  137. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_14", ["#backAppealBtn"]);
  138. $.zui.store.set("task_detail_btn_" + ROLE_JICHA_ADMIN + "_11", ["#assignBtn"]);
  139. $.zui.store.set("task_detail_btn_" + ROLE_FWQ_ADMIN + "_5", ["#confirmBtn", "#appealBtn"]);
  140. $.zui.store.set("task_detail_btn_" + ROLE_FWQ_ADMIN + "_15", ["#confirmAppealBtn"]);
  141. }
  142. function checkAuth() {
  143. initBtns();
  144. showBtn(ROLE_JICHA, $.checkTask.check_status);
  145. showBtn(ROLE_JICHA_ADMIN, $.checkTask.check_status);
  146. showBtn(ROLE_FWQ_ADMIN, $.checkTask.check_status);
  147. }
  148. function showBtn(role, status) {
  149. if (hasRole(role)) {
  150. var btnArr = $.zui.store.get("task_detail_btn_" + role + "_" + status);
  151. if (btnArr) {
  152. for (var i in btnArr) {
  153. $(btnArr[i]).show();
  154. }
  155. }
  156. }
  157. }
  158. function queryScores() {
  159. // 使用data参数更新数据:
  160. var data = {
  161. "task_id": $.checkTask.id
  162. }
  163. var cols = [{
  164. width: 80,
  165. text: '序号',
  166. type: 'number',
  167. flex: true,
  168. colClass: 'text-center',
  169. field: 'num'
  170. }, {
  171. width: 60,
  172. text: '评分记录',
  173. type: 'string',
  174. flex: true,
  175. sort: 'down',
  176. field: 'content'
  177. }, {
  178. width: 80,
  179. text: '分数',
  180. type: 'string',
  181. flex: true,
  182. colClass: '',
  183. field: 'check_item_score'
  184. }, {
  185. width: 80,
  186. text: '区域',
  187. type: 'string',
  188. flex: true,
  189. colClass: '',
  190. field: 'checked_area_name'
  191. }, {
  192. width: 80,
  193. text: '备注',
  194. type: 'string',
  195. flex: true,
  196. colClass: '',
  197. field: 'remark'
  198. }, {
  199. width: 280,
  200. text: '图片',
  201. type: 'imagedd',
  202. flex: true,
  203. colClass: '',
  204. field: 'pics'
  205. }];
  206. if (hasRole(ROLE_JICHA) && ($.checkTask.check_status == 2 || $.checkTask.check_status == 2 || $.checkTask.check_status == 12 ||
  207. $.checkTask.check_status == 13)) {
  208. var oper = {
  209. width: 160,
  210. text: '操作',
  211. type: 'string',
  212. flex: true,
  213. field: 'id',
  214. oper: [{
  215. func: 'showEditScore',
  216. text: '修改',
  217. icon_class: 'icon-edit'
  218. }, {
  219. func: 'deleteScore',
  220. text: '删除',
  221. icon_class: 'icon-remove-circle'
  222. }]
  223. }
  224. cols.push(oper);
  225. }
  226. $('#score_datatable').mytable({
  227. 'cols': cols,
  228. 'url': "/f/score/getScoreList/",
  229. 'param': data
  230. });
  231. $('a.lightbox-toggle').lightbox();
  232. }
  233. var curScoreId;
  234. function showEditScore(id) {
  235. var rowData = getItemByIdFromArr(id, $('#score_datatable').mytable('getTableData'));
  236. // alert(rowData.pics);
  237. curScoreId = rowData.id;
  238. scoreImageLayer = showPopup4Common('修改图片', updateImg, '600px');
  239. showTaskDetailPics(rowData.pics);
  240. }
  241. function showTaskDetailPics(pics, divId) {
  242. var picStr = '';
  243. if (!divId) divId = '#img_container';
  244. $(divId).html(picStr);
  245. if (pics) {
  246. var picArr = pics.split(',');
  247. for (var i in picArr) {
  248. var ispic = true;
  249. var src = picArr[i];
  250. if (!src.startWith("http"))
  251. src = base_image_server_url + src;
  252. var videosrc = src;
  253. if (src.indexOf('.avi') != -1) {
  254. src = src.split('.avi')[0] + "_screen_0.png"
  255. ispic = false;
  256. }
  257. if (src.indexOf('.mov') != -1) {
  258. src = src.split('.mov')[0] + "_screen_0.png"
  259. ispic = false;
  260. }
  261. if (src.indexOf('.mp4') != -1) {
  262. src = src.split('.mp4')[0] + "_screen_0.png"
  263. ispic = false;
  264. }
  265. var pic = '<div id="img_item_' + i + '" class="col-md-4 col-sm-6 col-lg-3">' +
  266. '<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>' +
  267. (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="videoCkplayer(\'' + videosrc + '\')" href="javascript:void(0)" style="position:absolute">') +
  268. '<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>') +
  269. '</a>' +
  270. '</div>';
  271. picStr += pic;
  272. }
  273. $(divId).html(picStr);
  274. $('a.lightbox-toggle').lightbox();
  275. }
  276. }
  277. function updateImg() {
  278. var imgArr = $("#img_container .pic-class");
  279. var picsStr = "";
  280. if (imgArr && imgArr.length > 0) {
  281. for (var i = 0; i < imgArr.length; i++) {
  282. picsStr += imgArr[i].src + ","
  283. }
  284. picsStr = picsStr.substr(0, picsStr.length - 1);
  285. }
  286. var param = {
  287. 'id': curScoreId,
  288. 'pics': picsStr
  289. }
  290. // alert("dddd");
  291. addOrUpdateItem4Common(param, "/f/score/update", queryScores);
  292. curScoreId = "";
  293. }
  294. function deleteScore(id) {
  295. deleteItem4Common(id, "/f/score/delete/", queryScores);
  296. }
  297. function genFlow() {
  298. var data = {
  299. "id": $.checkTask.id
  300. };
  301. post_common_service("/f/task/getStatusById/", data, function(data) {
  302. if (data) {
  303. // console.log(data)
  304. var flowStr = "";
  305. var color_t = new $.zui.Color("#63B8FF");
  306. for (var i in data) {
  307. var color = new $.zui.Color(color_t.r - i * 10, color_t.g - i * 10, color_t.b - i * 10);
  308. var startcolor = new $.zui.Color(color_t.r - i * 10 + 5, color_t.g - i * 10 + 5, color_t.b - i * 10 + 5);
  309. var endcolor = new $.zui.Color(color_t.r - i * 10 - 5, color_t.g - i * 10 - 5, color_t.b - i * 10 - 5);
  310. var background = "background:-webkit-gradient(linear, 0 % 0 % , 0 % 100 % , from(" + startcolor.hexStr() + "), to(" + endcolor.hexStr() + "));" +
  311. "background:-webkit-linear-gradient(top, " + startcolor.hexStr() + ", " + endcolor.hexStr() + ");" + "background:-moz-linear-gradient(top," + startcolor.hexStr() + "," + endcolor.hexStr() + ");"
  312. var str = "";
  313. if (i == 0) {
  314. str = '<div class="col-sm-2" style="text-align:center;padding:0px;width: 87px;margin-left:-60px;">' +
  315. '<img src="/images/start.png" style="width: 28px;right:-1px; position: absolute; top:16px;">' +
  316. '</div>'
  317. }
  318. str +=
  319. // '<div class="col-sm-2" style="text-align:center;padding:0px;width: 87px;margin-left:-88px;">' +
  320. // ' <img src="/images/end.png" style="width: 35px;margin-left: 36px;margin-top: 25px;">' +
  321. // '</div>' +
  322. '<div class="col-sm-2" style="text-align:center;padding:0px;width: 140px;margin-bottom: 33px;">' +
  323. '<div class="row">' +
  324. ' <label>' + data[i].check_status_name + '</label>' +
  325. '</div>' +
  326. '<div class="row line" style="margin-top: 3px;' + background + '">' +
  327. ' <div class="timeline_item_station" style="background:' + color.hexStr() + '"></div>' +
  328. '</div>' +
  329. '<div class="row" style="margin-top: -5px;">' +
  330. ' <label style=" font-weight: 400;">' + data[i].update_time + '</label>' +
  331. '</div>' +
  332. (i == data.length - 1 ? (
  333. '<i class="icon icon-angle-right" style="font-size: 45px;right: -5px;position: absolute;top: 6px;color:' + endcolor.hexStr() + '"></i>'
  334. // ' <img src="/images/end.png" style="width: 28px;right:-10px; position: absolute; top:16px;">'
  335. ) : "") +
  336. '</div>';
  337. flowStr += str;
  338. }
  339. $("#flow_div").html(flowStr);
  340. }
  341. })
  342. }
  343. function submitCheck() {
  344. var param = {
  345. "id": $.checkTask.id,
  346. "check_status": 4
  347. }
  348. no_return_common_service("/f/task/taskEnd/", param, function(data) {
  349. layer.msg("提交成功", {
  350. time: 2000 //20s后自动关闭
  351. });
  352. redirectLastPage();
  353. });
  354. }
  355. function submitCheck4Appeal() {
  356. var appeal_result = 1;
  357. //询问框
  358. layer.confirm('该申诉是否成功?', {
  359. btn: ['成功', '失败'] //按钮
  360. }, function() {
  361. appeal_result = 1;
  362. submitAppealResult(appeal_result);
  363. }, function() {
  364. appeal_result = 2;
  365. submitAppealResult(appeal_result);
  366. });
  367. }
  368. function submitAppealResult(appeal_result) {
  369. var param = {
  370. "id": $.checkTask.id,
  371. "check_status": 14,
  372. "appeal_id": $.checkTask.appeal.id,
  373. "appeal_result": appeal_result
  374. }
  375. no_return_common_service("/f/task/update/", param, function(data) {
  376. layer.msg("提交成功", {
  377. time: 2000 //20s后自动关闭
  378. });
  379. redirectLastPage();
  380. });
  381. }
  382. var appealLayer;
  383. function showAppeal() {
  384. // appealLayer = showPopup4Common('申诉',saveAppeal,'600px','#appealDetail-div');
  385. layer.open({
  386. type: 1,
  387. area: '600px',
  388. title: '申诉',
  389. closeBtn: 1,
  390. shadeClose: true,
  391. skin: 'layui-layer-lan',
  392. content: $('#appealDetail-div'),
  393. btn: '保存',
  394. btnAlign: 'c', //按钮居中
  395. shade: 0, //不显示遮罩
  396. yes: function(index) {
  397. saveAppeal();
  398. }
  399. });
  400. }
  401. function confirmCheck() {
  402. layer.confirm('是否确认该稽查结果?', {
  403. btn: ['确认', '取消'], //按钮
  404. offset: 'auto'
  405. }, function() {
  406. var param = {
  407. "id": $.checkTask.id,
  408. "check_status": 6
  409. }
  410. no_return_common_service("/f/task/update/", param, function(data) {
  411. layer.msg("确认成功", {
  412. time: 2000 //20s后自动关闭
  413. });
  414. redirectLastPage();
  415. });
  416. }, function(index) {
  417. layer.close(index);
  418. });
  419. }
  420. function confirmCheck4Appeal() {
  421. layer.confirm('是否确认该申诉结果?', {
  422. btn: ['确认', '取消'], //按钮
  423. offset: 'auto'
  424. }, function() {
  425. var param = {
  426. "id": $.checkTask.id,
  427. "check_status": 16
  428. }
  429. no_return_common_service("/f/task/update/", param, function(data) {
  430. layer.msg("确认成功", {
  431. time: 2000 //20s后自动关闭
  432. });
  433. redirectLastPage();
  434. });
  435. }, function(index) {
  436. layer.close(index);
  437. });
  438. }
  439. function showAssign() {
  440. showPopup4Common('分配稽查员', function() {
  441. saveAssign();
  442. }, '400px', '#chooseCheckman-div');
  443. setCheckmanSelect('#choseCheckmanList', null, $.checkTask.checkman,
  444. function() {
  445. $('#choseCheckmanList').chosen({
  446. // width:'200px',
  447. height: '100px',
  448. no_results_text: '没有找到', // 当检索时没有找到匹配项时显示的提示文本
  449. disable_search_threshold: 10, // 10 个以下的选择项则不显示检索框
  450. search_contains: true // 从任意位置开始检索
  451. });
  452. });
  453. }
  454. function saveAssign() {
  455. var param = {
  456. "id": $.checkTask.id,
  457. "recheckman": $('#choseCheckmanList').val(),
  458. "check_status": 12
  459. }
  460. no_return_common_service("/f/task/update/", param, function(data) {
  461. layer.msg("分配成功", {
  462. time: 2000 //20s后自动关闭
  463. });
  464. redirectLastPage();
  465. });
  466. }
  467. function back2Check() {
  468. //退回到待提交页面
  469. var param = {
  470. "id": $.checkTask.id,
  471. "check_status": 3,
  472. "check_status_name": "退回"
  473. }
  474. no_return_common_service("/f/task/update/", param, function(data) {
  475. layer.msg("退回成功", {
  476. time: 2000 //20s后自动关闭
  477. });
  478. redirectLastPage();
  479. });
  480. }
  481. function back2Confirm() {
  482. //退回到待提交页面
  483. var param = {
  484. "id": $.checkTask.id,
  485. "check_status": 5,
  486. "check_status_name": "退回重新确认"
  487. }
  488. no_return_common_service("/f/task/update/", param, function(data) {
  489. layer.msg("退回成功", {
  490. time: 2000 //20s后自动关闭
  491. });
  492. redirectLastPage();
  493. });
  494. }
  495. function back2AppealCheck() {
  496. //退回到待提交页面
  497. var param = {
  498. "id": $.checkTask.id,
  499. "check_status": 13,
  500. "check_status_name": "退回"
  501. }
  502. no_return_common_service("/f/task/update/", param, function(data) {
  503. layer.msg("退回成功", {
  504. time: 2000 //20s后自动关闭
  505. });
  506. redirectLastPage();
  507. });
  508. }
  509. </script>