seeTaskDecomposition.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. $(function(){
  2. leftAutoHeight();
  3. $("#layout").ligerLayout({ leftWidth: 300,
  4. onHeightChanged:function(){
  5. leftAutoHeight();
  6. },
  7. onLeftCollapse : function(isHidden){
  8. $(window).resize();
  9. }
  10. });
  11. showProjeNodeListTab();
  12. $("#pageloading").hide();
  13. });
  14. var isGettingData = false; // 获取数据时,需要控制重复发请求时使用
  15. function showProjeNodeListTab(){
  16. var curProjNodeId; // 项目当前阶段id
  17. var projNodeListTabManager = $("#projNodeListTab").ligerTab({height:""});
  18. $("#projNodeList").find("option").each(function(index, opt){
  19. var jqueryOpt = $(opt);
  20. var projNodeId = jqueryOpt.val();
  21. var projNodeName = jqueryOpt.text();
  22. projNodeListTabManager.addTabItem({
  23. tabid : "projNode_" + projNodeId,
  24. text: projNodeName,
  25. showClose:false
  26. });
  27. if(jqueryOpt.attr("selected")){
  28. curProjNodeId = projNodeId;
  29. }
  30. });
  31. // 绑定选择事件必须在创建好tab以后,否则将出现重复调用列表查询
  32. projNodeListTabManager.set("onAfterSelectTabItem",showTaskDecompositionNodeList2Table);
  33. // 自动显示项目当前阶段的任务分解情况
  34. projNodeListTabManager.selectTabItem("projNode" + "_" + curProjNodeId);
  35. }
  36. function showTaskDecompositionNodeList2Table(){
  37. var projNodeListTabManager = $("#projNodeListTab").ligerGetTabManager();
  38. var projNodeId = projNodeListTabManager.getSelectedTabItemID().split("_")[1];
  39. var taskDecompositionNodeListTableId = "decompositionNodeList_" + projNodeId;
  40. buildTaskDecompositionNodeListTable(taskDecompositionNodeListTableId);
  41. }
  42. // 当修改、新增任务分解节点时调用
  43. function refreshTaskDecompositionNodeTable(projNodeId){
  44. $("#projNodeListTab").ligerGetTabManager().selectTabItem("projNode" + "_" + projNodeId);
  45. }
  46. function buildTaskDecompositionNodeListTable(taskDecompositionNodeListTableId){
  47. var projNodeListTabManager = $("#projNodeListTab").ligerGetTabManager();
  48. var projNodeId = taskDecompositionNodeListTableId.split("_")[1];
  49. var viewUnprovTask = $("#viewUnprovTask").attr("checked");
  50. var taskDecompositionNodeListTable = $("#" + taskDecompositionNodeListTableId);
  51. var param = {"taskDecompositionId" : taskDecompositionId, "projNodeId" : projNodeId, "viewUnprovTask" : viewUnprovTask};
  52. if(taskDecompositionNodeListTable.size() == 0){
  53. // 等于0时,表示该列表尚未创建
  54. $("div[tabid='" + projNodeListTabManager.getSelectedTabItemID() + "']").append("<div id='"+taskDecompositionNodeListTableId+"'></div>");
  55. // 创建表格
  56. $("#" + taskDecompositionNodeListTableId).ligerGrid({
  57. columns: [
  58. { display: '任务名称', name: 'task_name', align: 'left', minWidth:160, width: 160
  59. ,render: function (row){
  60. var html = '<span title="'+row.task_name+'">' + row.task_name + '</span>';
  61. return html;
  62. }
  63. },
  64. { display: '负责人', name: 'develop_user', minWidth:80, width:80, align: 'center'
  65. ,render: function (row){
  66. var html = '<a href="#" onclick="seeUser(' + row.develop_user_id + ')">' + row.develop_user + '</a>';
  67. return html;
  68. }
  69. },
  70. { display: '工期', name: 'plan_proj_time', minWidth:50, width:50,align: 'center' },
  71. { display: '计划开始时间', name: 'plan_start_date', minWidth:100, width:100,align: 'center' , format:'yyyy-MM-dd hh:mm:ss'},
  72. { display: '计划完成时间', name: 'plan_fin_date', minWidth:100, width:100,align: 'center' , format:'yyyy-MM-dd hh:mm:ss' },
  73. { display: '任务派发', name: 'prov_task_state_text', minWidth:80, width:80,align: 'center'
  74. ,render: function (row)
  75. {
  76. var html = "";
  77. if(row.prov_task_state){
  78. if(row.prov_task_lose_flag == 0){
  79. html = "已派发(" + displayTaskState4User(row, false) + ")";
  80. }else{
  81. html = "已派发(已撤销)";
  82. }
  83. }else{
  84. html = "未派发";
  85. }
  86. return html;
  87. }
  88. },
  89. { display: '操作', name: '', minWidth:80, width:80,align: 'center'
  90. ,render: function (row, index)
  91. {
  92. var html = '<a href="javascript:;" onclick="seeTaskDecompositionNode('+row.universalid+')">查看</a>';
  93. return html;
  94. }
  95. }
  96. ],
  97. pageSize:20,
  98. parms : param,
  99. url: "TaskDecompositionAction.do?task=getTaskDecompositionNodeList" ,
  100. pageParmName: 'curPage',
  101. pagesizeParmName: 'pageSize',
  102. width: '99.5%',
  103. height: '99%',
  104. checkbox: false,
  105. rownumbers:true,
  106. enabledSort:true,
  107. method:"post",
  108. frozenRownumbers:true,
  109. onAfterShowData:function(){
  110. },
  111. onError:function(err){
  112. alert("获取数据失败,请刷新页面后重试!");
  113. }
  114. });
  115. }else{
  116. // 已经创建的情况下只刷新列表
  117. $("#" + taskDecompositionNodeListTableId).ligerGetGridManager().set("parms", param);
  118. $("#" + taskDecompositionNodeListTableId).ligerGetGridManager().loadData();
  119. }
  120. }
  121. function seeTaskDecompositionNode(taskDecompositionNodeId){
  122. if(isGettingData == true){
  123. return;
  124. }
  125. $.ajax({
  126. type:"POST",
  127. url:"TaskDecompositionAction.do?task=editTaskDecompositionNode&time=" + new Date().getTime(),
  128. timeout:30000,
  129. cache:false,
  130. dataType:"json",
  131. data:{"taskDecompositionNodeId":taskDecompositionNodeId},
  132. beforeSend:function(){
  133. $(":button").attr("disabled", true);
  134. $("#layout").ligerGetLayoutManager().setLeftCollapse(false);
  135. $("#noticeMsg").html("正在获取数据,请稍后……").show();
  136. isGettingData = true;
  137. },
  138. success:function(data){
  139. var error = data.error;
  140. if(error){
  141. showAjaxError(null, error);
  142. $("#noticeMsg").html("").hide();
  143. }else{
  144. $("#noticeMsg").fadeOut("slow");
  145. fillTaskForm(data.success);
  146. }
  147. },
  148. error:function(err){
  149. $("#noticeMsg").html("").hide();
  150. showAjaxError(err);
  151. },
  152. complete:function(){
  153. $(":button").attr("disabled", false);
  154. isGettingData = false;
  155. }
  156. });
  157. }
  158. function fillTaskForm(taskDecompositionNode){
  159. if(taskDecompositionNode){
  160. var projNodeName = $("#projNodeList").find("option[value='"+taskDecompositionNode.proj_node_id+"']").text();
  161. var taskContent = "";
  162. if(taskDecompositionNode.task_content.length > 100){
  163. taskContent = taskDecompositionNode.task_content.substring(0, 100)
  164. + '……<br/><a href="javascript:;" onclick=" $.ligerDialog.open({content:\''+taskDecompositionNode.task_content+'\', width:480, height:300, modal:false}); ">查看全部内容</a>';
  165. }else{
  166. taskContent = taskDecompositionNode.task_content;
  167. }
  168. var taskDoc = "";
  169. var taskDocList = taskDecompositionNode.taskDocList;
  170. // for(var i = 0; i < taskDocList.length; i++){
  171. // taskDoc += '<div>'+(i+1)+'. <a href="downloadFile.do?documentId='+taskDocList[i].file_id+'" target="_blank">'+taskDocList[i].srcFile+'</a></div>';
  172. // }
  173. for(var i = 0; i < taskDocList.length; i++){
  174. taskDoc += ','+taskDocList[i].file_id;
  175. }
  176. if(taskDoc.length > 0){
  177. taskDoc = taskDoc.substring(1, taskDoc.length);
  178. }
  179. $("#taskDecompositionNodeId").html(taskDecompositionNode.universalid);
  180. $("#taskName").html(taskDecompositionNode.task_name);
  181. $("#projNodeName").html(projNodeName);
  182. $("#taskType").html(taskDecompositionNode.task_type_text);
  183. $("#taskContent").html(taskContent);
  184. $("#taskPriority").html(taskDecompositionNode.task_priority_text);
  185. $("#taskLevel").html(taskDecompositionNode.task_level_text);
  186. $("#planManHour").html(taskDecompositionNode.plan_man_hour);
  187. $("#developUserName").html(taskDecompositionNode.develop_user);
  188. $("#planStartDate").html(taskDecompositionNode.plan_start_date);
  189. $("#planFinDate").html(taskDecompositionNode.plan_fin_date);
  190. viewFileHtml(taskDoc, "taskDoc");
  191. // $("#taskDoc").html(taskDoc);
  192. }
  193. }
  194. /**
  195. * 获取当前任务分解节点列表表格对象(ligerUi)
  196. */
  197. function getCurTaskDecompositionNodeListTable(){
  198. var projNodeListTabManager = $("#projNodeListTab").ligerGetTabManager();
  199. var projNodeId = projNodeListTabManager.getSelectedTabItemID().split("_")[1];
  200. var taskDecompositionNodeListTableId = "decompositionNodeList_" + projNodeId;
  201. return $("#" + taskDecompositionNodeListTableId).ligerGetGridManager();
  202. }
  203. var verifyDialogContent = '<div id="verifyDialog" class="forum-container2">'
  204. + '<table class="dialogTable">'
  205. + '<tr><td class="left-text">审核意见<font color="red">*</font>:</td>'
  206. + '<td><textarea rows="6" cols="45" id="verifyRemark"></textarea>'
  207. + '<div id="verifyRemarkMsg" ></div></td></tr>'
  208. + '<tr><td class="l-table-edit-text" style="font-weight: bold">提醒方式:</td>'
  209. + '<td class="l-table-edit-td" nowrap="nowrap" id="verifyDialogMsg"></tr>'
  210. + '<tr><td colspan="2" style="text-align: center"><br/>'
  211. + '<input type="button" id="verifySubmitBtn" value="提交" class="l-button" />&nbsp;&nbsp;&nbsp;&nbsp;'
  212. + '<input type="button" id="verifyCancelBtn" value="取消" class="l-button" />'
  213. + '</td></tr>'
  214. + '</table></div>';
  215. var verifyDialog;
  216. function openVerifyDialog(action){
  217. var title = (action == "agree")?"同意,请填写审核意见" : "驳回,请填写审核意见";
  218. if(verifyDialog == undefined){
  219. verifyDialog = $.ligerDialog.open({
  220. content: verifyDialogContent,
  221. width: 450,
  222. modal: true,
  223. title: title,
  224. allowClose: true,
  225. isHidden: false,
  226. onClose: function(dialog, options){
  227. verifyDialog = undefined;
  228. return true;
  229. }
  230. });
  231. // 创建提醒方式
  232. tmsMsgRemindUtil.createPanel({id:"verifyDialogMsg", panelId:"verifyDialogMsgPanel"});
  233. $("#verifySubmitBtn").bind("click", function(){submitVerify(action);});
  234. $("#verifyCancelBtn").bind("click", function(){verifyDialog.close();});
  235. }else{
  236. verifyDialog.show();
  237. }
  238. }
  239. function submitVerify(action){
  240. var rs = $.validate({
  241. name : "verifyRemark",
  242. model : [ {
  243. type : "require",
  244. msg : "请填写审核意见!",
  245. msgBox: "verifyRemarkMsg"
  246. } , {
  247. type : "len",
  248. min : 1,
  249. max : 100,
  250. msg : "审核意见须少于100个字符,一个汉字占2个字符!",
  251. msgBox: "verifyRemarkMsg"
  252. }]
  253. });
  254. if(rs){
  255. var verifyRemark = encodeURI($("#verifyRemark").html());
  256. var msgType = tmsMsgRemindUtil.getSelectResult("verifyDialogMsgPanel");
  257. var task = (action == "agree") ? "agree" : "reject";
  258. $.ajax({
  259. type:"POST",
  260. url:"TaskDecompositionVerifyAction.do?task="+task+"&time=" + new Date().getTime(),
  261. timeout:30000,
  262. cache:false,
  263. dataType:"json",
  264. data:{"taskDecompositionId":taskDecompositionId, verifyRemark:verifyRemark, msgType:msgType},
  265. beforeSend:function(){
  266. $(":button").attr("disabled", true);
  267. verifyDialog.hidden();
  268. $.ligerDialog.waitting("正在提交中,请稍候...");
  269. },
  270. success:function(data){
  271. var error = data.error;
  272. if(error){
  273. verifyDialog.show();
  274. showAjaxError(null, error);
  275. }else{
  276. $.ligerDialog.open({content:"提交成功!", "title":"提交成功", "type":"success",allowClose:false,
  277. buttons: [{text: '确定',
  278. onclick: function(item, dialog){
  279. var targetTabId = "TaskDecompositionVerifyAction.do?task=toList";
  280. refreshWindow();
  281. }
  282. }]
  283. });
  284. }
  285. },
  286. error:function(err){
  287. verifyDialog.show();
  288. showAjaxError(err);
  289. },
  290. complete:function(){
  291. $.ligerDialog.closeWaitting();
  292. $(":button").attr("disabled", false);
  293. }
  294. });
  295. }
  296. }
  297. function showVerifyResult(){
  298. var html = "<br/><span style='font-weight: bold; font-size: 14px;color:blue'>审核结果:" + verifyResultText + "</span>"
  299. + "<br/>=====================================<br/><font color='blue'>友情提示:</font><br/>"
  300. + "1. 如果还未审核,需要等待审核后才可以继续编辑;<br/>"
  301. + "2. 如果您是审核者,可以在该项目任务分解未审核时进行“同意”或“驳回”操作;";
  302. $.ligerDialog.alert(html);
  303. }
  304. function taskDecomposition(){
  305. var uri = "TaskDecompositionAction.do?task=editTaskDecomposition&taskDecompositionId="+taskDecompositionId;
  306. addTab(uri, "继续任务分解", uri, true);
  307. // closeWindow();
  308. }
  309. ///////////////////////////////////
  310. //////////// 页面控制//////////////
  311. ///////////////////////////////////
  312. function leftAutoHeight(){
  313. $("#taskForm").css("height", $(window).height()-40 + "px");
  314. }
  315. function displayTaskState4User(row, isDevelopUser){
  316. var taskState = row.prov_task_state;
  317. var colorRGB = getTaskStateColor(taskState);
  318. return "<span style='color:" + colorRGB +"'>" + getTaskStateText(taskState, isDevelopUser) + "</span>";
  319. }