StrategyExplorerPrint.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  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. new Element("td", {
  91. "colspan" : 2,
  92. "text" : text,
  93. "styles": this.css.formTableTitle
  94. }).inject( tr );
  95. new Element("td", {
  96. rowspan : 2,
  97. "width" : "200",
  98. "text" : "服务客户",
  99. "styles": this.css.formTableTitle
  100. }).inject( tr );
  101. new Element("td", {
  102. rowspan : 2,
  103. "width" : "200",
  104. "text" : "关爱员工",
  105. "styles": this.css.formTableTitle
  106. }).inject( tr );
  107. new Element("td", {
  108. rowspan : 2,
  109. "width" : "200",
  110. "text" : "意见建议",
  111. "styles": this.css.formTableTitle
  112. }).inject( tr );
  113. var tr = new Element("tr").inject( table );
  114. new Element("td", {
  115. "text" : "部门重点工作",
  116. "width" : "200",
  117. "styles": this.css.formTableTitle
  118. }).inject( tr );
  119. new Element("td", {
  120. "text" : "计划",
  121. "width" : "200",
  122. "styles": this.css.formTableTitle
  123. }).inject( tr );
  124. new Element("td", {
  125. "text" : "总结",
  126. "width" : "200",
  127. "styles": this.css.formTableTitle
  128. }).inject( tr );
  129. new Element("td", {
  130. "text" : "部门重点工作",
  131. "width" : "200",
  132. "styles": this.css.formTableTitle
  133. }).inject( tr );
  134. new Element("td", {
  135. "text" : "计划",
  136. "width" : "200",
  137. "styles": this.css.formTableTitle
  138. }).inject( tr );
  139. this.loadContent()
  140. },
  141. loadContent : function(){
  142. var arr = this.getTableData();
  143. arr.each( function( d, i ){
  144. var tr = new Element("tr").inject( this.table );
  145. new Element("td", {
  146. "text" : d.sequence,
  147. "align" : "center",
  148. "styles": this.css.formTableValue
  149. }).inject( tr );
  150. var td = new Element("td", {
  151. "valign" : "top",
  152. "html" : this.app.common.replaceWithBr(d.thisMonth.title),
  153. "styles": this.css.formTableValue
  154. }).inject( tr );
  155. if( d.thisMonth.measuresList.length ){
  156. var showMeasureNode = new Element("input",{
  157. "type" : "button",
  158. "styles" : this.css.showMeasureNode2,
  159. "value" : "查看举措"
  160. }).inject( td );
  161. var tooltip = new MWF.xApplication.Report.ShowMeasureTooltip( this.app.content, showMeasureNode, this.app, this.data, {
  162. style : "report",
  163. position : { x : "auto", y : "auto" },
  164. event : "click"
  165. });
  166. tooltip.measuresList = d.thisMonth.measuresList;
  167. }
  168. new Element("td", {
  169. "valign" : "top",
  170. "html" : this.app.common.replaceWithBr(d.thisMonth.plan),
  171. "styles": this.css.formTableValue
  172. }).inject( tr );
  173. td = new Element("td", {
  174. "valign" : "top",
  175. "styles": this.css.formTableValue
  176. }).inject( tr );
  177. if( this.options.status == "deployment" ){
  178. }else if( this.options.status == "write" ){
  179. var div = new Element("div").inject(td);
  180. this.loadThisMontWorkProg( div, i, false );
  181. }else if( this.options.status == "confirm" ){
  182. //var div = new Element("div").inject(td);
  183. //this.loadThisMontWorkProg( div, i, true );
  184. td.set("html" , this.app.common.replaceWithBr(d.thisMonth.prog))
  185. }else if( this.options.status == "audit" ){
  186. td.set("html" , this.app.common.replaceWithBr(d.thisMonth.prog))
  187. }else if( this.options.status == "summary" ){
  188. td.set("html" , this.app.common.replaceWithBr(d.thisMonth.prog))
  189. }
  190. if( this.options.status == "confirm" || this.options.status == "audit" ){
  191. if( d.nextMonth.measuresList.length ){
  192. var showMeasureNode = new Element("input",{
  193. "type" : "button",
  194. "styles" : this.css.showMeasureNode2,
  195. "value" : "查看举措"
  196. }).inject( td );
  197. var tooltip = new MWF.xApplication.Report.ShowMeasureTooltip( this.app.content, showMeasureNode, this.app, this.data, {
  198. style : "report",
  199. position : { x : "auto", y : "auto" },
  200. event : "click"
  201. });
  202. tooltip.measuresList = d.nextMonth.measuresList;
  203. }
  204. }
  205. td = new Element("td", {
  206. "valign" : "top",
  207. "styles": this.css.formTableValue
  208. }).inject( tr );
  209. if( this.options.status == "deployment" ){
  210. }else if( this.options.status == "write" ){
  211. var div = new Element("div").inject(td);
  212. this.loadNextMontWorkTitle( div, i, false );
  213. }else if( this.options.status == "confirm" ){
  214. //var div = new Element("div").inject(td);
  215. //this.loadNextMontWorkTitle( div, i, true );
  216. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.title))
  217. }else if( this.options.status == "audit" ){
  218. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.title))
  219. }else if( this.options.status == "summary" ){
  220. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.title))
  221. }
  222. td = new Element("td", {
  223. "valign" : "top",
  224. "styles": this.css.formTableValue
  225. }).inject( tr );
  226. if( this.options.status == "deployment" ){
  227. }else if( this.options.status == "write" ){
  228. var div = new Element("div").inject(td);
  229. this.loadNextMontWorkPlan( div, i, false );
  230. }else if( this.options.status == "confirm" ){
  231. //var div = new Element("div").inject(td);
  232. //this.loadNextMontWorkPlan( div, i, true );
  233. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.plan))
  234. }else if( this.options.status == "audit" ){
  235. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.plan))
  236. }else if( this.options.status == "summary" ){
  237. td.set("html" , this.app.common.replaceWithBr(d.nextMonth.plan))
  238. }
  239. this.loadExtTd( d, tr, i, "fuwu" );
  240. this.loadExtTd( d, tr, i, "guanai" );
  241. this.loadExtTd( d, tr, i, "yijian" );
  242. }.bind(this))
  243. },
  244. loadExtTd : function( d, tr, i, type ){
  245. var td;
  246. if( this.options.status == "deployment" ){
  247. td = new Element("td", {
  248. "valign" : "top",
  249. "styles": this.css.formTableValue
  250. }).inject( tr );
  251. }else if( this.options.status == "write" ){
  252. //if( i == 0 ){
  253. // td = new Element("td", {
  254. // "valign" : "top",
  255. // "styles": this.css.formTableValue,
  256. // "rowspan" : "5"
  257. // }).inject( tr );
  258. // var div = new Element("div").inject(td);
  259. // this.loadExtWork( div, false, type );
  260. //}
  261. td = new Element("td", {
  262. "valign" : "top",
  263. "styles": this.css.formTableValue
  264. }).inject( tr );
  265. this.loadExtWork_write( td, false, type, i );
  266. }else if( this.options.status == "confirm" ){
  267. //if( i == 0 ){
  268. // td = new Element("td", {
  269. // "valign" : "top",
  270. // "styles": this.css.formTableValue,
  271. // "rowspan" : "5"
  272. // }).inject( tr );
  273. // var div = new Element("div").inject(td);
  274. // this.loadExtWork( div, true, type );
  275. //}
  276. td = new Element("td", {
  277. "valign" : "top",
  278. "styles": this.css.formTableValue
  279. }).inject( tr );
  280. td.set("html" , this.app.common.replaceWithBr(d.extWork[type]))
  281. }else if( this.options.status == "audit" ){
  282. td = new Element("td", {
  283. "valign" : "top",
  284. "styles": this.css.formTableValue
  285. }).inject( tr );
  286. td.set("html" , this.app.common.replaceWithBr(d.extWork[type]))
  287. }else if( this.options.status == "summary" ){
  288. td = new Element("td", {
  289. "valign" : "top",
  290. "styles": this.css.formTableValue
  291. }).inject( tr );
  292. td.set("html" , this.app.common.replaceWithBr(d.extWork[type]))
  293. }
  294. },
  295. loadExtWork_write : function( container, hasSummary, type, i ){
  296. var table;
  297. if( !this.ExtWorkData ){
  298. var work = this.ExtWorkData = this.data.WoReport_I_Ext_Contents || [];
  299. this.ExtWorkObject = {};
  300. work.sort( function( a, b ){
  301. var flag = a.targetPerson.localeCompare(b.targetPerson);
  302. if( flag == 0 ){ //相等
  303. return a.orderNumber - b.orderNumber;
  304. }else{
  305. return flag;
  306. }
  307. });
  308. work.each( function( w ){
  309. if( ! this.ExtWorkObject[ w.orderNumber ] ) {
  310. this.ExtWorkObject[ w.orderNumber ] = [];
  311. }
  312. this.ExtWorkObject[ w.orderNumber].push( w );
  313. }.bind(this))
  314. }
  315. table = new Element( "table", {
  316. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0"
  317. }).inject( container );
  318. if( this.ExtWorkObject[ i + 1] ){
  319. this.ExtWorkObject[ i + 1].each( function(d){
  320. if( d[type] ){
  321. var tr = new Element("tr").inject( table );
  322. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0] + ":" }).inject( tr );
  323. var td = new Element("td", { }).inject( tr );
  324. td.set("html" , this.app.common.replaceWithBr( d[type] ))
  325. }
  326. }.bind(this))
  327. }
  328. //this.ExtWorkData.each( function( d ){
  329. // if( d[type] ){
  330. // var tr = new Element("tr").inject( table );
  331. // new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0] + ":" }).inject( tr );
  332. // var td = new Element("td", { }).inject( tr );
  333. // td.set("html" , this.app.common.replaceWithBr( d[type] ))
  334. // }
  335. //}.bind(this));
  336. if( hasSummary && table ){
  337. var table = new Element( "table", {
  338. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  339. }).inject( container );
  340. this.data.WoReport_I_Ext_Contents_sumamry.each( function( d ){
  341. if( d[type] ){
  342. var tr = new Element("tr").inject( table );
  343. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  344. var td = new Element("td", { }).inject( tr );
  345. td.set("html" , this.app.common.replaceWithBr( d[type] ))
  346. }
  347. }.bind(this));
  348. }
  349. },
  350. //loadExtWork : function( container, hasSummary, type ){
  351. // var table;
  352. // if( !this.ExtWorkData ){
  353. // var work = this.ExtWorkData = this.data.WoReport_I_Ext_Contents || [];
  354. // work.sort( function( a, b ){
  355. // var flag = a.targetPerson.localeCompare(b.targetPerson);
  356. // if( flag == 0 ){ //相等
  357. // return a.orderNumber - b.orderNumber;
  358. // }else{
  359. // return flag;
  360. // }
  361. // });
  362. // }
  363. // table = new Element( "table", {
  364. // "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0"
  365. // }).inject( container );
  366. // this.ExtWorkData.each( function( d ){
  367. // if( d[type] ){
  368. // var tr = new Element("tr").inject( table );
  369. // new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0] + ":" }).inject( tr );
  370. // var td = new Element("td", { }).inject( tr );
  371. // td.set("html" , this.app.common.replaceWithBr( d[type] ))
  372. // }
  373. // }.bind(this));
  374. // if( hasSummary && table ){
  375. // var table = new Element( "table", {
  376. // "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  377. // }).inject( container );
  378. // this.data.WoReport_I_Ext_Contents_sumamry.each( function( d ){
  379. // if( d[type] ){
  380. // var tr = new Element("tr").inject( table );
  381. // new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  382. // var td = new Element("td", { }).inject( tr );
  383. // td.set("html" , this.app.common.replaceWithBr( d[type] ))
  384. // }
  385. // }.bind(this));
  386. // }
  387. //},
  388. loadThisMontWorkProg : function( container, idx, hasSummary ){
  389. var table;
  390. debugger;
  391. var work = this.data.thisMonth_workList[idx];
  392. if( work && work.progList && work.progList.length > 0 ){
  393. table = new Element( "table", {
  394. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0"
  395. }).inject( container );
  396. work.progList.each( function( d ){
  397. if( d.progressContent ){
  398. var tr = new Element("tr").inject( table );
  399. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0]+ ":" }).inject( tr );
  400. var td = new Element("td", { }).inject( tr );
  401. td.set("html" , this.app.common.replaceWithBr(d.progressContent))
  402. }
  403. }.bind(this));
  404. }
  405. if( hasSummary && table){
  406. var tr = new Element("tr").inject( table );
  407. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  408. var td = new Element("td", { }).inject( tr );
  409. td.set("html" , this.app.common.replaceWithBr( work.workProgSummary))
  410. }
  411. },
  412. loadNextMontWorkTitle : function( container, idx, hasSummary ){
  413. var work = this.data.nextMonth_workList[idx];
  414. var table;
  415. if( work && work.planNextList && work.planNextList.length > 0 ){
  416. table = new Element( "table", {
  417. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  418. }).inject( container );
  419. work.planNextList.each( function( d ){
  420. if( d.title ){
  421. var tr = new Element("tr").inject( table );
  422. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0]+ ":" }).inject( tr );
  423. var td = new Element("td", { }).inject( tr );
  424. td.set("html" , this.app.common.replaceWithBr(d.title))
  425. }
  426. }.bind(this));
  427. }
  428. if( hasSummary && table){
  429. var tr = new Element("tr").inject( table );
  430. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  431. var td = new Element("td", { }).inject( tr );
  432. td.set("html" , this.app.common.replaceWithBr( work.workTitle ))
  433. }
  434. },
  435. loadNextMontWorkPlan : function( container, idx, hasSummary ){
  436. var work = this.data.nextMonth_workList[idx];
  437. var table;
  438. if( work && work.planNextList && work.planNextList.length > 0 ){
  439. table = new Element( "table", {
  440. "width":"100%", "border":"0", "cellpadding":"3", "cellspacing":"0", "styles" : this.css.formTable
  441. }).inject( container );
  442. work.planNextList.each( function( d ){
  443. if( d.planContent ){
  444. var tr = new Element("tr").inject( table );
  445. new Element("td", { "width" : "40", text : d.targetPerson.split("@")[0]+ ":" }).inject( tr );
  446. var td = new Element("td", { }).inject( tr );
  447. td.set("html" , this.app.common.replaceWithBr(d.planContent))
  448. }
  449. }.bind(this));
  450. }
  451. if( hasSummary && table){
  452. var tr = new Element("tr").inject( table );
  453. new Element("td", { "width" : "40", text : "汇总:" }).inject( tr );
  454. var td = new Element("td", { }).inject( tr );
  455. td.set("html" , this.app.common.replaceWithBr( work.workPlanSummary))
  456. }
  457. },
  458. getTableData : function(){
  459. this.tableData = [];
  460. for( var i=0; i<5; i++ ){
  461. var extWorkData = this.data.WoReport_I_Ext_Contents_sumamry ? this.data.WoReport_I_Ext_Contents_sumamry[i] : null;
  462. var thisMonthData = this.data.thisMonth_workList ? this.data.thisMonth_workList[i] : null;
  463. var nextMonthData = this.data.nextMonth_workList ? this.data.nextMonth_workList[i] : null;
  464. var object = {
  465. sequence : i+1,
  466. thisMonth : {
  467. title : thisMonthData ? thisMonthData.workTitle : "",
  468. plan : thisMonthData ? thisMonthData.workPlanSummary : "",
  469. prog : thisMonthData ? thisMonthData.workProgSummary : "",
  470. measuresList : thisMonthData ? thisMonthData.measuresList : []
  471. },
  472. nextMonth : {
  473. title : nextMonthData ? nextMonthData.workTitle : "",
  474. plan : nextMonthData ? nextMonthData.workPlanSummary : "",
  475. measuresList : nextMonthData ? nextMonthData.measuresList : []
  476. },
  477. extWork : {
  478. fuwu : extWorkData ? extWorkData.fuwu : "",
  479. guanai : extWorkData ? extWorkData.guanai : "",
  480. yijian : extWorkData ? extWorkData.yijian : ""
  481. }
  482. };
  483. this.tableData.push( object );
  484. }
  485. return this.tableData;
  486. }
  487. });