task_wrok.jsp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. <%@ page language="java" contentType="text/html;charset=GBK"
  2. pageEncoding="GBK"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <link rel="stylesheet" href="/shares/fullcalendar/jquery/themes/base/jquery.ui.all.css">
  8. <link rel="stylesheet" href="/shares/fullcalendar/fullcalendar/cupertino/theme.css">
  9. <link href="${ pageContext.request.contextPath}/main.css" rel="stylesheet" type="text/css" />
  10. <link href="${pageContext.request.contextPath }/liger/lib/ligerUI/skins/${sessionScope.css}/css/ligerui-all.css" rel="stylesheet" type="text/css" />
  11. <link href="${pageContext.request.contextPath }/liger/lib/ligerUI/skins/ligerui-icons.css" rel="stylesheet" type="text/css" />
  12. <link href='/shares/fullcalendar/fullcalendar/fullcalendar.css' rel='stylesheet' />
  13. <link href='/shares/fullcalendar/fullcalendar/fullcalendar.print.css' rel='stylesheet' media='print' />
  14. <script type="text/javascript" src="/shares/js/jquery-1.3.2.min.js"></script>
  15. <script src='/shares/fullcalendar/fullcalendar/fullcalendar.min.js'></script>
  16. <script src='${pageContext.request.contextPath }/liger/lib/ligerUI/js/core/base.js'></script>
  17. <script src='${pageContext.request.contextPath }/liger/lib/ligerUI/js/plugins/ligerDialog.js'></script>
  18. <script src='${pageContext.request.contextPath }/liger/lib/ligerUI/js/plugins/ligerGrid.js'></script>
  19. <script type="text/javascript" src="/shares/js/common.js"></script>
  20. <script src="/shares/jquery.progressbar/js/jquery.progressbar.js" type="text/javascript"></script>
  21. <script type="text/javascript">
  22. var infoDialog = null;
  23. var today_worktime = "";
  24. $(function (){
  25. $("#procFinishPer").progressBar(this.innerHTML,{width:100,increment:5,speed:1});
  26. loadCalendar();
  27. $("#maingrid").ligerGrid({
  28. columns: [
  29. { display: '办理时间', name: 'submitdate', width: 200},
  30. { display: '报工时间(报哪天的工)', name: 'start', width: 150},
  31. { display: '报工内容', name: 'logdtaile', width: 910}
  32. ],
  33. pageSize:10,
  34. url:"mtTaskCenterMgr.do?task=listWorkLog&taskId=${taskInfo.taskid }"+"&time=" + new Date().getTime(),
  35. pageParmName: 'p', //页索引参数名,(提交给服务器)
  36. pagesizeParmName: 'pSize', //页记录数参数名,(提交给服务器)
  37. width: '99.8%',
  38. height: '300px'
  39. });
  40. });
  41. function loadTaskInfo(taskId){
  42. $.ajax({
  43. type:"POST",
  44. url:"mtTaskCenterMgr.do?task=loadTaskInfo&taskId=" + taskId + "&time=" + new Date().getTime(),
  45. dataType:"json",
  46. success:function(data){
  47. $("#tasktitle").html(data[0].tasktitle);
  48. $("#procFinishPer").html(data[0].progress);
  49. $("#createstaffer").html(data[0].createstaffer);
  50. $("#receiveid").html(data[0].receiveid);
  51. $("#createDate").html(data[0].createDate);
  52. $("#planjobtime").html(data[0].planjobtime);
  53. $("#worktime_count").html(data[0].worktime_count);
  54. $("#startDate").html(data[0].startDate);
  55. $("#prac_start_date").html(data[0].prac_start_date);
  56. $("#endDate").html(data[0].endDate);
  57. $("#prac_end_date").html(data[0].prac_end_date);
  58. }
  59. });
  60. }
  61. function loadCalendar(){
  62. $(document).ready(function() {
  63. var calendar = $('#calendar').fullCalendar({
  64. header: {
  65. left: '',
  66. center: 'prev, title, next, today',
  67. right: ''
  68. },
  69. theme: true,
  70. timeFormat:{agenda: 'HH:mm { - HH:mm }','': 'HH:mm { - HH:mm }' },
  71. columnFormat:{//每种视图每列显示的时间格式
  72. month: 'ddd',
  73. week: 'M/d(ddd)',
  74. day: 'M/d(ddd)'
  75. },
  76. titleFormat:{//视图标题时间显示的格式
  77. month: 'yyyy年 MMMM ',
  78. week: "yyyy年 MMM d{ '&#8212;'[ MMM] d日 }",
  79. day: 'dddd, MMM d, yyyy'
  80. },
  81. axisFormat:'HH:mm',//日视图左侧时间显示的格式
  82. allDaySlot:false,
  83. allDayText:'今天的任务',
  84. //contentHeight: 10000,
  85. //weekMode: "liquid",
  86. aspectRatio:1.9,
  87. minTime:'8:00',//在日视图和周视图显示起始时间的设置
  88. maxTime:'22:00',//在日视图和周视图显示结束时间的设置
  89. slotMinutes:30,//在日视图和周视图每一行间隔的分钟,目前设为30分钟
  90. defaultView: 'month',
  91. monthNames: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
  92. monthNamesShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
  93. dayNames: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
  94. dayNamesShort: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
  95. today: ["今天"],
  96. firstDay: 1,
  97. buttonText: {
  98. today: '今天',
  99. month: '月视图',
  100. week: '周视图',
  101. day: '日视图',
  102. prev: '<<',
  103. next: '>>'
  104. },
  105. eventSources: [
  106. {
  107. url: 'mtTaskCenterMgr.do?task=listUncompleteWorkLog&taskId=${taskInfo.taskid }' ,// 把从后台取出未完成的工作日志以fullCalendar的方式进行显示
  108. startParam:'start' ,
  109. endParam:'end',
  110. color:'green'
  111. },
  112. {
  113. url: 'mtTaskCenterMgr.do?task=listcompleteWorkLog&taskId=${taskInfo.taskid }', //把从后台取出已经完成的工作日志以fullCalendar的方式进行显示
  114. startParam:'start' ,
  115. endParam:'end',
  116. color:'green'
  117. }
  118. ],
  119. eventMouseover: function (event, jsEvent, view) {
  120. var logdate = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd");
  121. var worktime = event.worktime;
  122. var progress = event.progress_;
  123. var tasktitle = event.tasktitle;
  124. var logdtaile = event.logdtaile;
  125. $(this).attr('title', "任务进度:" + progress + "%\n" + "用时:" + worktime + "小时\n工作内容:" + logdtaile );
  126. $(this).css('font-weight', 'normal');
  127. },
  128. eventClick: function (event, jsEvent, view ) {
  129. var status = "${taskInfo.status }";
  130. if(status == "4"){
  131. $.ligerDialog.warn('报工已完成,不能再报工!');
  132. }else if(status == "5"){
  133. $.ligerDialog.warn('任务审核已通过,不能再报工!');
  134. }else if(status == "0"){
  135. $.ligerDialog.confirm('您还没有接收该任务,是否现在接收?', function (boo) {
  136. if(boo){
  137. $.ajax({
  138. type: "POST", //使用post方法访问后台
  139. url: "mtTaskCenterMgr.do?task=operateTask&universalid=${taskInfo.taskid }" + "&status=1", //要访问的后台地址
  140. success: function (data) {
  141. $.ligerDialog.open({content:"任务已接收!", "title":"任务已接收!", "type":"success",allowClose:false,
  142. buttons: [ { text: '确定', onclick: function (item, dialog) { location.href='mtTaskCenterMgr.do?task=taskWrok&universalid=${taskInfo.taskid }'; dialog.hidden(); } } ]
  143. });
  144. },
  145. error : function() {
  146. alert("任务接收失败!");
  147. }
  148. });
  149. }
  150. });
  151. } else{
  152. var progress = event.progress_;
  153. var id = event.id;
  154. var logdate = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd");
  155. var worktime = event.worktime;
  156. var tasktitle = event.tasktitle;
  157. var logdtaile = event.logdtaile;
  158. var remark = event.remark;
  159. getTodayWorkTime(logdate);
  160. var s = "&taskid=${taskInfo.taskid }" + "&worktime="+worktime + "&logdate="+encodeURI(encodeURI(logdate)) + "&progress="+progress
  161. +"&tasktitle="+encodeURI(encodeURI(tasktitle)) + "&logdtaile="+encodeURI(encodeURI(logdtaile)) + "&remark="+encodeURI(encodeURI(remark)) + "&id="+id + "&today_worktime="+today_worktime ;
  162. infoDialog = $.ligerDialog.open({ url : 'mtTaskCenterMgr.do?task=toEditWorkLog'+s, height: 430,width:700, title: '修改任务日志(非项目任务)'});
  163. }
  164. },
  165. selectable: true,
  166. selectHelper: true,
  167. select: function(start, end, allDay) {
  168. if(new Date(Date.parse($.fullCalendar.formatDate(start, "yyyy/MM/dd"))) > new Date()){
  169. $.ligerDialog.warn('报工时间不能早于今天!');
  170. } else{
  171. var status = "${taskInfo.status }";
  172. $.ajax({
  173. type:"POST",
  174. url:"mtTaskCenterMgr.do?task=checkLog&taskId=${taskInfo.taskid }&receiveid=${taskInfo.receiveid_ }&dateTime=" + $.fullCalendar.formatDate(start, "yyyy-MM-dd")+"&time=" + new Date().getTime(),
  175. dataType:"json",
  176. success:function(data){
  177. var id = data[0].id;
  178. if(id == "-1"){ // 如果点击该日期格子没有日志
  179. if (status == "4"){ // 如果该任务处于待审核状态
  180. $.ligerDialog.warn('报工完成,不能再报工!');
  181. }else if(status == "5"){
  182. $.ligerDialog.warn('任务审核已通过,不能再报工!');
  183. }else if(status == "0"){
  184. $.ligerDialog.confirm('您还没有接收该任务,是否现在接收?', function (boo) {
  185. if(boo){
  186. $.ajax({
  187. type: "POST", //使用post方法访问后台
  188. url: "mtTaskCenterMgr.do?task=operateTask&universalid=${taskInfo.taskid }" + "&status=1", //要访问的后台地址
  189. success: function (data) {
  190. $.ligerDialog.open({content:"任务已接收!", "title":"任务已接收!", "type":"success",allowClose:false,
  191. buttons: [ { text: '确定', onclick: function (item, dialog) { location.href='mtTaskCenterMgr.do?task=taskWrok&universalid=${taskInfo.taskid }'; dialog.hidden(); } } ]
  192. });
  193. },
  194. error : function() {
  195. alert("任务接收失败!");
  196. }
  197. });
  198. }
  199. });
  200. } else {
  201. var s = "";
  202. var tasktitle = '${taskInfo.tasktitle }';
  203. if(tasktitle != "" && typeof(tasktitle) != "undefined" ){
  204. s += "&tasktitle=" + encodeURI(encodeURI(tasktitle));
  205. }
  206. getTodayWorkTime($.fullCalendar.formatDate(start, "yyyy-MM-dd"));
  207. s += "&today_worktime=" + today_worktime;
  208. infoDialog = $.ligerDialog.open({url : 'mtTaskCenterMgr.do?task=toCreateWorkLog&taskId=${taskInfo.taskid }&dateTime=' + $.fullCalendar.formatDate(start, "yyyy-MM-dd") + s/* target: $("#reservebox3") */ ,
  209. height: 430,width:700, title: '新增任务日志(非项目任务) ' });
  210. }
  211. } else { // 如果点击该日期格子有日志
  212. if(status == "4"){ // 如果该任务处于待审核状态
  213. $.ligerDialog.warn('报工完成,不能再报工!');
  214. }else if(status == "5"){
  215. $.ligerDialog.warn('任务审核已通过,不能再报工!');
  216. }else if(status == "0"){
  217. $.ligerDialog.confirm('您还没有接收该任务,是否现在接收?', function (boo) {
  218. if(boo){
  219. $.ajax({
  220. type: "POST", //使用post方法访问后台
  221. url: "mtTaskCenterMgr.do?task=operateTask&universalid=${taskInfo.taskid }" + "&status=1", //要访问的后台地址
  222. success: function (data) {
  223. $.ligerDialog.open({content:"任务已接收!", "title":"任务已接收!", "type":"success",allowClose:false,
  224. buttons: [ { text: '确定', onclick: function (item, dialog) { location.href='mtTaskCenterMgr.do?task=taskWrok&universalid=${taskInfo.taskid }'; dialog.hidden(); } } ]
  225. });
  226. },
  227. error : function() {
  228. alert("任务接收失败!");
  229. }
  230. });
  231. }
  232. });
  233. } else {
  234. var progress = data[0].progress_;
  235. var taskid = data[0].taskid;
  236. var logdate = data[0].logdate;
  237. var worktime = data[0].worktime;
  238. var tasktitle = data[0].tasktitle;
  239. var logdtaile = data[0].logdtaile;
  240. var remark = data[0].remark;
  241. getTodayWorkTime($.fullCalendar.formatDate(start, "yyyy-MM-dd"));
  242. var s = "&taskid="+taskid + "&worktime="+worktime + "&logdate="+encodeURI(encodeURI(logdate)) + "&progress="+progress
  243. +"&tasktitle="+encodeURI(encodeURI(tasktitle)) + "&logdtaile="+encodeURI(encodeURI(logdtaile)) + "&remark="+encodeURI(encodeURI(remark)) + "&id="+id + "&today_worktime="+today_worktime ;
  244. infoDialog = $.ligerDialog.open({ url : 'mtTaskCenterMgr.do?task=toEditWorkLog'+s, height: 430,width:700, title: '修改任务日志(非项目任务)'});
  245. }
  246. }
  247. }
  248. });
  249. }
  250. }
  251. });
  252. });
  253. }
  254. function getTodayWorkTime (date_time){
  255. $.ajax({
  256. type:"POST",
  257. url:"mtDiaryMgr.do?task=getTodayWorkTime&time=" + new Date().getTime(),
  258. data : {"date_time":date_time},
  259. cache:false,
  260. async:false,
  261. dataType:"text",
  262. success:function(data){
  263. today_worktime = data;
  264. },
  265. error:showAjaxError
  266. });
  267. }
  268. function operateTask (status){
  269. var msg_q = '';
  270. var msg_r = '';
  271. if (status == '1'){
  272. msg_q = '您确定要接收该任务吗?';
  273. msg_r = '任务已接收!';
  274. } else if (status == '2'){
  275. msg_q = '您确定要退回该任务吗?';
  276. msg_r = '任务已退回!';
  277. }
  278. $.ligerDialog.confirm(msg_q, function (boo) {
  279. if(boo){
  280. $.ajax({
  281. type: "POST", //使用post方法访问后台
  282. url: "mtTaskCenterMgr.do?task=operateTask&universalid=${taskInfo.taskid }" + "&status=" + status, //要访问的后台地址
  283. success: function (data) {
  284. $.ligerDialog.open({content:msg_r, "title":msg_r, "type":"success",allowClose:false,
  285. buttons: [ { text: '确定', onclick: function (item, dialog) {
  286. if(status == '2'){
  287. location.href='mtTaskCenterMgr.do?task=taskcenter&type=2';
  288. } else if (status == '1'){
  289. location.href='mtTaskCenterMgr.do?task=taskWrok&universalid=${taskInfo.taskid }';
  290. }
  291. dialog.hidden(); } } ]
  292. });
  293. },
  294. error : function() {
  295. alert("任务接收失败!");
  296. }
  297. });
  298. }
  299. });
  300. }
  301. </script>
  302. </head>
  303. <body>
  304. <div id="wrap">
  305. <div class="container-layout">
  306. <div id="title" class="form-button" >
  307. <input type="button" id="back" class="l-button" value="返回" onclick="history.back(-1);" />
  308. <c:if test="${taskInfo.status == '0' }">
  309. <input type="button" id="back" class="l-button" value="接收" onclick="operateTask('1');" />
  310. </c:if>
  311. <c:if test="${taskInfo.status == '1' }">
  312. <input type="button" id="back" class="l-button" value="退回" onclick="operateTask('2');" />
  313. </c:if>
  314. </div>
  315. </div>
  316. <div class="forum-container-2">
  317. <div class="l-title-bar">任务基本信息</div>
  318. <div style="padding-left: 10px;">
  319. <table class="l-default-panel">
  320. <tr>
  321. <td class="l-table-head" colspan="4" id="tasktitle">任务名称:${taskInfo.tasktitle }
  322. </td>
  323. </tr>
  324. <tr>
  325. <td class="l-table-edit-text ">任务状态:</td>
  326. <td class="l-table-edit-content">
  327. <c:if test="${taskInfo.status == '0' }"><font color="red" style="font-size: 14px; font-weight: bold;">待接收</font></c:if>
  328. <c:if test="${taskInfo.status == '1' }"><font color="blue" style="font-size: 14px; font-weight: bold;">进行中</font></c:if>
  329. <c:if test="${taskInfo.status == '4' }"><font color="green" style="font-size: 14px; font-weight: bold;">待审核</font></c:if>
  330. <c:if test="${taskInfo.status == '5' }"><font color="gray" style="font-size: 14px; font-weight: bold;">已完成</font></c:if>
  331. <c:if test="${taskInfo.status == '-1' }"><font color="purple" style="font-size: 14px; font-weight: bold;">被驳回</font></c:if>
  332. </td>
  333. <td class="l-table-edit-text ">任务进度:</td>
  334. <td class="l-table-edit-content"><label id="procFinishPer">${taskInfo.progress }</label></td>
  335. </tr>
  336. <tr>
  337. <td class="l-table-edit-text ">任务类型:</td>
  338. <td class="">${taskInfo.tasktype }</td>
  339. <td class="l-table-edit-text ">指派人:</td>
  340. <td class="l-table-edit-content" id="createstaffer">${taskInfo.createstaffer }</td>
  341. </tr>
  342. <tr>
  343. <td class="l-table-edit-text ">负责人:</td>
  344. <td class="l-table-edit-content" id="receiveid">${taskInfo.receiveid }</td>
  345. <td class="l-table-edit-text ">创建时间:</td>
  346. <td class="l-table-edit-content" id="createDate">
  347. ${taskInfo.createDate }
  348. </td>
  349. </tr>
  350. <tr>
  351. <td colspan="4">&nbsp;</td>
  352. </tr>
  353. <tr>
  354. <td class="l-table-edit-text ">计划用时:</td>
  355. <td class="l-table-edit-content" id="planjobtime">${taskInfo.planjobtime }&nbsp;h</td>
  356. <td class="l-table-edit-text ">已用时:</td>
  357. <td class="" id="worktime_count">${taskInfo.worktime_count }&nbsp;h</td>
  358. </tr>
  359. <tr>
  360. <td class="l-table-edit-text ">计划开始时间:</td>
  361. <td class="l-table-edit-content" id="startDate">
  362. ${taskInfo.startDate }
  363. </td>
  364. <td class="l-table-edit-text ">实际开始时间:</td>
  365. <td class="" id="prac_start_date">
  366. ${taskInfo.prac_start_date }
  367. </td>
  368. </tr>
  369. <tr>
  370. <td class="l-table-edit-text ">计划完成时间:</td>
  371. <td class="l-table-edit-content" id="endDate">
  372. ${taskInfo.endDate }
  373. </td>
  374. <td class="l-table-edit-text ">实际完成时间:</td>
  375. <td class="" id="prac_end_date">
  376. ${taskInfo.prac_end_date }
  377. </td>
  378. </tr>
  379. </table>
  380. </div>
  381. <div class="l-title-bar">任务描述</div>
  382. <div class="l-default-panel" style="margin-top: 10px;margin-bottom: 20px;padding: 10px;" id="taskDetail">${taskInfo.taskDetail }</div>
  383. <div class="l-default-panel" style="margin-top: 10px;margin-bottom: 20px;padding: 10px;" id="taskFile">
  384. </div>
  385. <div class="l-title-bar" id="diaryPanel" >
  386. <a name="workDiaryPos" id="workDiaryPos" href="#"></a>
  387. <div class="text_left">工作日志</div>
  388. <!-- <div class="text_right"><a href="#" id="recordBtn">收缩</a></div> -->
  389. </div>
  390. </div>
  391. <div style="margin-bottom: 10px;"></div>
  392. <div id='calendar'></div>
  393. <div class="forum-container-2">
  394. <div class="l-title-bar" >
  395. <div class="text_left">办理过程</div>
  396. </div>
  397. </div>
  398. </div>
  399. <div id="maingrid" style="margin:0 auto "></div>
  400. </body>
  401. </html>