excel.vue 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <div>
  3. <el-button type="primary" size="small" @click="submit()" plain>导 出</el-button>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. props:['tablecols','param','excelTitle','total','specialKey'],
  9. data () {
  10. return {}
  11. },
  12. methods:{
  13. async submit () {
  14. let data = {}
  15. // 如果传入了total,需要赋值保证数量准确性
  16. // data = Object.assign({},data,this.param)
  17. data = JSON.parse(JSON.stringify(this.param))
  18. if (this.total) {
  19. data.content.pageSize = this.total
  20. }
  21. data.content.isAll = false
  22. const res = await this.$api.requested(data)
  23. res.data.forEach(item => {
  24. if (item.point == '订单审核') {
  25. item.oder = '是'
  26. item.oderdays = item.days
  27. } else if (item.point == '销售出库审核') {
  28. item.fahuo = '是'
  29. item.fahuodays = item.days
  30. } else if (item.point == '发票审核') {
  31. item.fapiao = '是'
  32. item.fapiaodays = item.days
  33. }
  34. item.isdefault = item.isdefault ? '是' : '否'
  35. })
  36. if (this.specialKey) {
  37. res.data.forEach(e=>{
  38. this.specialKey.forEach(s=>{
  39. e[s.key] = e[s.key]? e[s.key]:[]
  40. e[s.key] = e[s.key].map(k=>{return s.value?k[s.value]:k}).toString()
  41. })
  42. })
  43. }
  44. let table = JSON.parse(JSON.stringify(this.tablecols))
  45. console.log(table);
  46. table.forEach((e,index) => {
  47. // 由于表格数据结构问题这里需要判断一下
  48. if (e.title === '省市县') {
  49. table[index].title = '省'
  50. table.splice(index + 1,0,{title:'市',columnname:'city'},{title:'县',columnname:'county'})
  51. }else if(e.title === '标签'){
  52. res.data.forEach(e => {
  53. if (e.tag.length !== 0){
  54. e.tag = e.tag_sys + ',' + e.tag
  55. }else {
  56. e.tag = e.tag_sys
  57. }
  58. })
  59. }else if(e.title === '项目类型'){
  60. res.data.forEach(e => {
  61. e.projecttype = e.projecttype + '-' + e.projecttype_remarks
  62. })
  63. } else if (e.title === '授权角色') {
  64. res.data.forEach(e => {
  65. e.roleName = e.userrole.map(item => item.remarks).join(',')
  66. })
  67. } else if (e.title === '业务员') {
  68. res.data.forEach(e => {
  69. e.salesman = e.leader?e.leader.length !== 0?e.leader[0].name:'':''
  70. console.log(e.salesman = '111')
  71. })
  72. }
  73. });
  74. let hd = table.map(e=>{
  75. return e.title
  76. })
  77. let ft = table.map(e=>{
  78. return e.columnname
  79. })
  80. this.tool.exportExcel(hd,ft,res.data,this.excelTitle)
  81. }
  82. }
  83. }
  84. </script>
  85. <style>
  86. </style>