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