web_printscreen_export.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. openerp.web_printscreen_zb = function(instance, m) {
  2. var _t = instance.web._t;
  3. var QWeb = instance.web.qweb;
  4. instance.web.ListView.include({
  5. load_list: function () {
  6. var self = this;
  7. this._super.apply(this, arguments);
  8. self.$pager.find(".oe_list_button_import_excel").unbind('click').click(function(event){self.export_to_excel("excel")})
  9. self.$pager.find(".oe_list_button_import_pdf").unbind('click').click(function(event){self.export_to_excel("pdf")})
  10. },
  11. export_to_excel: function(export_type) {
  12. var self = this
  13. var export_type = export_type
  14. view = this.getParent()
  15. // Find Header Element
  16. header_eles = self.$el.find('.oe_list_header_columns')
  17. header_name_list = []
  18. $.each(header_eles,function(){
  19. $header_ele = $(this)
  20. header_td_elements = $header_ele.find('th')
  21. $.each(header_td_elements,function(){
  22. $header_td = $(this)
  23. text = $header_td.text().trim() || ""
  24. data_id = $header_td.attr('data-id')
  25. if (text && !data_id){
  26. data_id = 'group_name'
  27. }
  28. header_name_list.push({'header_name': text.trim(), 'header_data_id': data_id})
  29. // }
  30. });
  31. });
  32. //Find Data Element
  33. data_eles = self.$el.find('.oe_list_content > tbody > tr')
  34. export_data = []
  35. $.each(data_eles,function(){
  36. data = []
  37. $data_ele = $(this)
  38. is_analysis = false
  39. if ($data_ele.text().trim()){
  40. //Find group name
  41. group_th_eles = $data_ele.find('th')
  42. $.each(group_th_eles,function(){
  43. $group_th_ele = $(this)
  44. text = $group_th_ele.text().trim() || ""
  45. is_analysis = true
  46. data.push({'data': text, 'bold': true})
  47. });
  48. data_td_eles = $data_ele.find('td')
  49. $.each(data_td_eles,function(){
  50. $data_td_ele = $(this)
  51. text = $data_td_ele.text().trim() || ""
  52. if ($data_td_ele && $data_td_ele[0].classList.contains('oe_number') && !$data_td_ele[0].classList.contains('oe_list_field_float_time')){
  53. text = text.replace('%', '')
  54. text = instance.web.parse_value(text, { type:"float" })
  55. data.push({'data': text || "", 'number': true})
  56. }
  57. else{
  58. data.push({'data': text})
  59. }
  60. });
  61. export_data.push(data)
  62. }
  63. });
  64. //Find Footer Element
  65. footer_eles = self.$el.find('.oe_list_content > tfoot> tr')
  66. $.each(footer_eles,function(){
  67. data = []
  68. $footer_ele = $(this)
  69. footer_td_eles = $footer_ele.find('td')
  70. $.each(footer_td_eles,function(){
  71. $footer_td_ele = $(this)
  72. text = $footer_td_ele.text().trim() || ""
  73. if ($footer_td_ele && $footer_td_ele[0].classList.contains('oe_number')){
  74. text = instance.web.parse_value(text, { type:"float" })
  75. data.push({'data': text || "", 'bold': true, 'number': true})
  76. }
  77. else{
  78. data.push({'data': text, 'bold': true})
  79. }
  80. });
  81. export_data.push(data)
  82. });
  83. //Export to excel
  84. $.blockUI();
  85. if (export_type === 'excel'){
  86. view.session.get_file({
  87. url: '/web/export/zb_excel_export',
  88. data: {data: JSON.stringify({
  89. model : view.model,
  90. headers : header_name_list,
  91. rows : export_data,
  92. })},
  93. complete: $.unblockUI
  94. });
  95. }
  96. else{
  97. console.log(view)
  98. new instance.web.Model("res.users").get_func("read")(this.session.uid, ["company_id"]).then(function(res) {
  99. new instance.web.Model("res.company").get_func("read")(res['company_id'][0], ["name"]).then(function(result) {
  100. view.session.get_file({
  101. url: '/web/export/zb_pdf_export',
  102. data: {data: JSON.stringify({
  103. uid: view.session.uid,
  104. model : view.model,
  105. headers : header_name_list,
  106. rows : export_data,
  107. company_name: result['name']
  108. })},
  109. complete: $.unblockUI
  110. });
  111. });
  112. });
  113. }
  114. },
  115. });
  116. };