StrategyExplorerPrint.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. MWF.xApplication.Report.StrategyExplorer.Print = new Class({
  2. Implements: [Options, Events],
  3. options: {
  4. "style": "default",
  5. "isEdited" : false,
  6. "status" : ""
  7. },
  8. initialize: function (container, explorer, data, options){
  9. this.setOptions( options );
  10. this.container = container;
  11. this.explorer = explorer;
  12. this.app = this.explorer.app;
  13. this.lp = this.app.lp;
  14. this.css = this.explorer.css;
  15. this.actions = this.app.restActions;
  16. this.data = data;
  17. this.path = "/x_component_Report/$StrategyExplorer/";
  18. },
  19. load: function(){
  20. if( this.data.detail.opinions ){
  21. var opinions = JSON.parse( this.data.detail.opinions );
  22. if( typeOf(opinions) == "array" ){
  23. this.loadOpinion();
  24. }
  25. }
  26. this._load();
  27. },
  28. loadOpinion : function(){
  29. var table = new Element( "table", {
  30. "width":"96%",
  31. "border":"0",
  32. "cellpadding":"5",
  33. "cellspacing":"0",
  34. "styles" : this.css.formTable
  35. }).inject( this.explorer.ideaContainer );
  36. var tr = new Element("tr").inject( table );
  37. var td = new Element("td", {
  38. "styles": this.css.formTableTitle,
  39. "text" : "领导意见"
  40. }).inject( tr );
  41. td.setStyle("width","14%");
  42. var td = new Element("td", {
  43. "styles": this.css.formTableValue
  44. }).inject( tr );
  45. var opin = this.data.detail.opinions;
  46. if( opin ){
  47. var opinions = JSON.parse( opin );
  48. if( typeOf(opinions) == "array" ){
  49. var div = new Element("div").inject(td);
  50. opinions.each( function(o){
  51. var table1 = new Element( "table", {
  52. "width":"100%",
  53. "border":"0",
  54. "cellpadding":"0",
  55. "cellspacing":"0"
  56. }).inject( div );
  57. var tr1 = new Element("tr").inject( table1 );
  58. var td1 = new Element("td", {
  59. "text" : o.identity.split("@")[0] + ":"
  60. }).inject( tr1 );
  61. td1.setStyle("width","50px");
  62. td1 = new Element("td", {
  63. "text" : ( o.content ? this.app.common.replaceWithBr(o.content) : "已阅" ) + " (" + o.datetime + ")"
  64. }).inject( tr1 );
  65. }.bind(this));
  66. }
  67. }
  68. },
  69. _load: function () {
  70. //this.node = new Element("div", {
  71. // styles : this.css.deplymentNode
  72. //}).inject( this.container );
  73. this.month = parseInt(this.data.month);
  74. var table = this.table = new Element( "table", {
  75. "width":"100%",
  76. "border":"0",
  77. "cellpadding":"5",
  78. "cellspacing":"0",
  79. "styles" : this.css.formTable
  80. }).inject( this.explorer.totalContainer );
  81. var tr = new Element("tr").inject( table );
  82. new Element("td", { rowspan : 2, "width" : "30", "styles": this.css.formTableTitle, text : "序号" }).inject( tr );
  83. new Element("td", {
  84. "colspan" : 3,
  85. "text" : this.data.year + "年" + parseInt( this.data.month ) + "月工作总结",
  86. "styles": this.css.formTableTitle
  87. }).inject( tr );
  88. //var nextMonth = new Date( this.data.year, this.data.month, 1 ).increment("month", 1);
  89. //var text = nextMonth.getFullYear() + "年" + (nextMonth.getMonth()) + "月工作计划";
  90. var nextMonth = new Date( this.data.year, parseInt( this.data.month ) - 1, 1 ).increment("month", 1);
  91. var text = nextMonth.getFullYear() + "年" + (nextMonth.getMonth() + 1) + "月工作计划";
  92. new Element("td", {
  93. "colspan" : 2,
  94. "text" : text,
  95. "styles": this.css.formTableTitle
  96. }).inject( tr );
  97. new Element("td", {
  98. rowspan : 2,
  99. "width" : "200",
  100. "text" : "服务客户",
  101. "styles": this.css.formTableTitle
  102. }).inject( tr );
  103. new Element("td", {
  104. rowspan : 2,
  105. "width" : "200",
  106. "text" : "关爱员工",
  107. "styles": this.css.formTableTitle
  108. }).inject( tr );
  109. new Element("td", {
  110. rowspan : 2,
  111. "width" : "200",
  112. "text" : "意见建议",
  113. "styles": this.css.formTableTitle
  114. }).inject( tr );
  115. var tr = new Element("tr").inject( table );
  116. new Element("td", {
  117. "text" : "部门重点工作",
  118. "width" : "200",
  119. "styles": this.css.formTableTitle
  120. }).inject( tr );
  121. new Element("td", {
  122. "text" : "计划",
  123. "width" : "200",
  124. "styles": this.css.formTableTitle
  125. }).inject( tr );
  126. new Element("td", {
  127. "text" : "总结",
  128. "width" : "200",
  129. "styles": this.css.formTableTitle
  130. }).inject( tr );
  131. new Element("td", {
  132. "text" : "部门重点工作",
  133. "width" : "200",
  134. "styles": this.css.formTableTitle
  135. }).inject( tr );
  136. new Element("td", {
  137. "text" : "计划",
  138. "width" : "200",
  139. "styles": this.css.formTableTitle
  140. }).inject( tr );
  141. this.loadContent()
  142. },
  143. loadContent : function(){
  144. var arr = this.getTableData();
  145. arr.each( function( d, i ){
  146. var tr = new Element("tr").inject( this.table );
  147. new Element("td", {
  148. "text" : d.sequence,
  149. "align" : "center",
  150. "styles": this.css.formTableValue
  151. }).inject( tr );
  152. var td = new Element("td", {
  153. "valign" : "top",
  154. "html" : this.app.common.replaceWithBr(d.thisMonth.title),
  155. "styles": this.css.formTableValue
  156. }).inject( tr );
  157. if( d.thisMonth.measuresList.length ){
  158. var showMeasureNode = new Element("input",{
  159. "type" : "button",
  160. "styles" : this.css.showMeasureNode2,
  161. "value" : "查看举措"
  162. }).inject( td );
  163. var tooltip = new MWF.xApplication.Report.ShowMeasureTooltip( this.app.content, showMeasureNode, this.app, this.data, {
  164. style : "report",
  165. position : { x : "auto", y : "auto" },
  166. event : "click"
  167. });
  168. tooltip.measuresList = d.thisMonth.measuresList;
  169. }
  170. new Element("td", {
  171. "valign" : "top",
  172. "html" : this.app.common.replaceWithBr(d.thisMonth.plan),
  173. "styles": this.css.formTableValue
  174. }).inject( tr );
  175. td = new Element("td", {
  176. "valign" : "top",
  177. "styles": this.css.formTableValue
  178. }).inject( tr );
  179. if( this.options.status == "deployment" ){
  180. }else if( this.options.status == "write" ){
  181. var div = new Element("div").inject(td);
  182. this.loadThisMontWorkProg( div, i, false );
  183. }else if( this.options.status == "confirm" ){
  184. //var div = new Element("div").inject(td);
  185. //this.loadThisMontWorkProg( div, i, true );
  186. td.set("html" , this.app.common.replaceWithBr(d.thisMonth.prog))
  187. }else if( this.options.status == "audit" ){
  188. td.set("html" , this.app.common.replaceWithBr(d.thisMonth.prog))
  189. }else if( this.options.status == "summary" ){
  190. td.set("html" , this.app.common.replaceWithBr(d.thisMonth.prog))
  191. }
  192. td = new Element("td", {
  193. "valign" : "top",
  194. "styles": this.css.formTableValue
  195. }).inject( tr );
  196. if( this.options.status == "deployment" ){
  197. }else if( this.options.status == "write" ){
  198. var div = new Element("div").inject(td);
  199. this.loadNextMontWorkTitle( div, i, false );
  200. }else if( this.options.status == "confirm" ){
  201. //var div = new Element("div").inject(td);
  202. //this.loadNextMontWorkTitle( div, i, true );
  203. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.title))
  204. }else if( this.options.status == "audit" ){
  205. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.title))
  206. }else if( this.options.status == "summary" ){
  207. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.title))
  208. }
  209. if( this.options.status == "confirm" || this.options.status == "audit" ){
  210. if( d.nextMonth.measuresList.length ){
  211. var showMeasureNode = new Element("input",{
  212. "type" : "button",
  213. "styles" : this.css.showMeasureNode2,
  214. "value" : "查看举措"
  215. }).inject( td );
  216. var tooltip = new MWF.xApplication.Report.ShowMeasureTooltip( this.app.content, showMeasureNode, this.app, this.data, {
  217. style : "report",
  218. nextMonth : true,
  219. position : { x : "auto", y : "auto" },
  220. event : "click"
  221. });
  222. tooltip.measuresList = d.nextMonth.measuresList;
  223. }
  224. }
  225. td = new Element("td", {
  226. "valign" : "top",
  227. "styles": this.css.formTableValue
  228. }).inject( tr );
  229. if( this.options.status == "deployment" ){
  230. }else if( this.options.status == "write" ){
  231. var div = new Element("div").inject(td);
  232. this.loadNextMontWorkPlan( div, i, false );
  233. }else if( this.options.status == "confirm" ){
  234. //var div = new Element("div").inject(td);
  235. //this.loadNextMontWorkPlan( div, i, true );
  236. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.plan))
  237. }else if( this.options.status == "audit" ){
  238. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.plan))
  239. }else if( this.options.status == "summary" ){
  240. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.plan))
  241. }
  242. this.loadExtTd( d, tr, i, "fuwu" );
  243. this.loadExtTd( d, tr, i, "guanai" );
  244. this.loadExtTd( d, tr, i, "yijian" );
  245. }.bind(this))
  246. },
  247. loadExtTd : function( d, tr, i, type ){
  248. var td;
  249. if( this.options.status == "deployment" ){
  250. td = new Element("td", {
  251. "valign" : "top",
  252. "styles": this.css.formTableValue
  253. }).inject( tr );
  254. }else if( this.options.status == "write" ){
  255. //if( i == 0 ){
  256. // td = new Element("td", {
  257. // "valign" : "top",
  258. // "styles": this.css.formTableValue,
  259. // "rowspan" : "5"
  260. // }).inject( tr );
  261. // var div = new Element("div").inject(td);
  262. // this.loadExtWork( div, false, type );
  263. //}
  264. td = new Element("td", {
  265. "valign" : "top",
  266. "styles": this.css.formTableValue
  267. }).inject( tr );
  268. this.loadExtWork_write( td, false, type, i );
  269. }else if( this.options.status == "confirm" ){
  270. //if( i == 0 ){
  271. // td = new Element("td", {
  272. // "valign" : "top",
  273. // "styles": this.css.formTableValue,
  274. // "rowspan" : "5"
  275. // }).inject( tr );
  276. // var div = new Element("div").inject(td);
  277. // this.loadExtWork( div, true, type );
  278. //}
  279. td = new Element("td", {
  280. "valign" : "top",
  281. "styles": this.css.formTableValue
  282. }).inject( tr );
  283. td.set("html" , this.app.common.replaceWithBr(d.extWork[type]))
  284. }else if( this.options.status == "audit" ){
  285. td = new Element("td", {
  286. "valign" : "top",
  287. "styles": this.css.formTableValue
  288. }).inject( tr );
  289. td.set("html" , this.app.common.replaceWithBr(d.extWork[type]))
  290. }else if( this.options.status == "summary" ){
  291. td = new Element("td", {
  292. "valign" : "top",
  293. "styles": this.css.formTableValue
  294. }).inject( tr );
  295. td.set("html" , this.app.common.replaceWithBr(d.extWork[type]))
  296. }
  297. },
  298. loadExtWork_write : function( container, hasSummary, type, i ){
  299. var table;
  300. if( !this.ExtWorkData ){
  301. var work = this.ExtWorkData = this.data.WoReport_I_Ext_Contents || [];
  302. this.ExtWorkObject = {};
  303. work.sort( function( a, b ){
  304. var flag = a.targetPerson.localeCompare(b.targetPerson);
  305. if( flag == 0 ){ //相等
  306. return a.orderNumber - b.orderNumber;
  307. }else{
  308. return flag;
  309. }
  310. });
  311. work.each( function( w ){
  312. if( ! this.ExtWorkObject[ w.orderNumber ] ) {
  313. this.ExtWorkObject[ w.orderNumber ] = [];
  314. }
  315. this.ExtWorkObject[ w.orderNumber].push( w );
  316. }.bind(this))
  317. }
  318. table = new Element( "table", {
  319. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0"
  320. }).inject( container );
  321. if( this.ExtWorkObject[ i + 1] ){
  322. this.ExtWorkObject[ i + 1].each( function(d){
  323. if( d[type] ){
  324. var tr = new Element("tr").inject( table );
  325. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0] + ":" }).inject( tr );
  326. var td = new Element("td", { }).inject( tr );
  327. td.set("html" , this.app.common.replaceWithBr( d[type] ))
  328. }
  329. }.bind(this))
  330. }
  331. //this.ExtWorkData.each( function( d ){
  332. // if( d[type] ){
  333. // var tr = new Element("tr").inject( table );
  334. // new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0] + ":" }).inject( tr );
  335. // var td = new Element("td", { }).inject( tr );
  336. // td.set("html" , this.app.common.replaceWithBr( d[type] ))
  337. // }
  338. //}.bind(this));
  339. if( hasSummary && table ){
  340. var table = new Element( "table", {
  341. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  342. }).inject( container );
  343. this.data.WoReport_I_Ext_Contents_sumamry.each( function( d ){
  344. if( d[type] ){
  345. var tr = new Element("tr").inject( table );
  346. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  347. var td = new Element("td", { }).inject( tr );
  348. td.set("html" , this.app.common.replaceWithBr( d[type] ))
  349. }
  350. }.bind(this));
  351. }
  352. },
  353. //loadExtWork : function( container, hasSummary, type ){
  354. // var table;
  355. // if( !this.ExtWorkData ){
  356. // var work = this.ExtWorkData = this.data.WoReport_I_Ext_Contents || [];
  357. // work.sort( function( a, b ){
  358. // var flag = a.targetPerson.localeCompare(b.targetPerson);
  359. // if( flag == 0 ){ //相等
  360. // return a.orderNumber - b.orderNumber;
  361. // }else{
  362. // return flag;
  363. // }
  364. // });
  365. // }
  366. // table = new Element( "table", {
  367. // "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0"
  368. // }).inject( container );
  369. // this.ExtWorkData.each( function( d ){
  370. // if( d[type] ){
  371. // var tr = new Element("tr").inject( table );
  372. // new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0] + ":" }).inject( tr );
  373. // var td = new Element("td", { }).inject( tr );
  374. // td.set("html" , this.app.common.replaceWithBr( d[type] ))
  375. // }
  376. // }.bind(this));
  377. // if( hasSummary && table ){
  378. // var table = new Element( "table", {
  379. // "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  380. // }).inject( container );
  381. // this.data.WoReport_I_Ext_Contents_sumamry.each( function( d ){
  382. // if( d[type] ){
  383. // var tr = new Element("tr").inject( table );
  384. // new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  385. // var td = new Element("td", { }).inject( tr );
  386. // td.set("html" , this.app.common.replaceWithBr( d[type] ))
  387. // }
  388. // }.bind(this));
  389. // }
  390. //},
  391. loadThisMontWorkProg : function( container, idx, hasSummary ){
  392. var table;
  393. var work = this.data.thisMonth_workList[idx];
  394. if( work && work.progList && work.progList.length > 0 ){
  395. table = new Element( "table", {
  396. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0"
  397. }).inject( container );
  398. work.progList.each( function( d ){
  399. if( d.progressContent ){
  400. var tr = new Element("tr").inject( table );
  401. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0]+ ":" }).inject( tr );
  402. var td = new Element("td", { }).inject( tr );
  403. td.set("html" , this.app.common.replaceWithBr(d.progressContent))
  404. }
  405. }.bind(this));
  406. }
  407. if( hasSummary && table){
  408. var tr = new Element("tr").inject( table );
  409. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  410. var td = new Element("td", { }).inject( tr );
  411. td.set("html" , this.app.common.replaceWithBr( work.workProgSummary))
  412. }
  413. },
  414. loadNextMontWorkTitle : function( container, idx, hasSummary ){
  415. var work = this.data.nextMonth_workList[idx];
  416. var table;
  417. if( work && work.planNextList && work.planNextList.length > 0 ){
  418. table = new Element( "table", {
  419. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  420. }).inject( container );
  421. work.planNextList.each( function( d ){
  422. if( d.title ){
  423. var tr = new Element("tr").inject( table );
  424. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0]+ ":" }).inject( tr );
  425. var td = new Element("td", { }).inject( tr );
  426. td.set("html" , this.app.common.replaceWithBr(d.title))
  427. }
  428. }.bind(this));
  429. }
  430. if( hasSummary && table){
  431. var tr = new Element("tr").inject( table );
  432. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  433. var td = new Element("td", { }).inject( tr );
  434. td.set("html" , this.app.common.replaceWithBr( work.workTitle ))
  435. }
  436. },
  437. loadNextMontWorkPlan : function( container, idx, hasSummary ){
  438. var work = this.data.nextMonth_workList[idx];
  439. var table;
  440. if( work && work.planNextList && work.planNextList.length > 0 ){
  441. table = new Element( "table", {
  442. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  443. }).inject( container );
  444. work.planNextList.each( function( d ){
  445. if( d.planContent ){
  446. var tr = new Element("tr").inject( table );
  447. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0]+ ":" }).inject( tr );
  448. var td = new Element("td", { }).inject( tr );
  449. td.set("html" , this.app.common.replaceWithBr(d.planContent))
  450. }
  451. }.bind(this));
  452. }
  453. if( hasSummary && table){
  454. var tr = new Element("tr").inject( table );
  455. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  456. var td = new Element("td", { }).inject( tr );
  457. td.set("html" , this.app.common.replaceWithBr( work.workPlanSummary))
  458. }
  459. },
  460. getTableData : function(){
  461. this.tableData = [];
  462. for( var i=0; i<5; i++ ){
  463. var extWorkData = this.data.WoReport_I_Ext_Contents_sumamry ? this.data.WoReport_I_Ext_Contents_sumamry[i] : null;
  464. var thisMonthData = this.data.thisMonth_workList ? this.data.thisMonth_workList[i] : null;
  465. var nextMonthData = this.data.nextMonth_workList ? this.data.nextMonth_workList[i] : null;
  466. var object = {
  467. sequence : i+1,
  468. thisMonth : {
  469. title : thisMonthData ? thisMonthData.workTitle : "",
  470. plan : thisMonthData ? thisMonthData.workPlanSummary : "",
  471. prog : thisMonthData ? thisMonthData.workProgSummary : "",
  472. measuresList : thisMonthData ? thisMonthData.measuresList : []
  473. },
  474. nextMonth : {
  475. title : nextMonthData ? nextMonthData.workTitle : "",
  476. plan : nextMonthData ? nextMonthData.workPlanSummary : "",
  477. measuresList : nextMonthData ? nextMonthData.measuresList : []
  478. },
  479. extWork : {
  480. fuwu : extWorkData ? extWorkData.fuwu : "",
  481. guanai : extWorkData ? extWorkData.guanai : "",
  482. yijian : extWorkData ? extWorkData.yijian : ""
  483. }
  484. };
  485. this.tableData.push( object );
  486. }
  487. return this.tableData;
  488. }
  489. });