excel.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <div class="upload">
  3. <el-row>
  4. <el-col :span="2">
  5. <el-upload
  6. :action="`${path}/excel/importExcel`"
  7. :headers="{'x-token':token}"
  8. :on-success="loadExcel"
  9. :show-file-list="false"
  10. >
  11. <el-button size="small" type="primary" icon="el-icon-upload2">导入</el-button>
  12. </el-upload>
  13. </el-col>
  14. <el-col :span="2">
  15. <el-button size="small" type="primary" icon="el-icon-download" @click="handleExcelExport('ExcelExport.xlsx')">导出</el-button>
  16. </el-col>
  17. <el-col :span="2">
  18. <el-button size="small" type="success" icon="el-icon-download" @click="downloadExcelTemplate()">下载模板</el-button>
  19. </el-col>
  20. </el-row>
  21. <el-table :data="tableData" border row-key="ID" stripe>
  22. <el-table-column label="ID" min-width="100" prop="ID" />
  23. <el-table-column label="路由Name" min-width="160" prop="name" />
  24. <el-table-column label="路由Path" min-width="160" prop="path" />
  25. <el-table-column label="是否隐藏" min-width="100" prop="hidden">
  26. <template slot-scope="scope">
  27. <span>{{ scope.row.hidden?"隐藏":"显示" }}</span>
  28. </template>
  29. </el-table-column>
  30. <el-table-column label="父节点" min-width="90" prop="parentId" />
  31. <el-table-column label="排序" min-width="70" prop="sort" />
  32. <el-table-column label="文件路径" min-width="360" prop="component" />
  33. </el-table>
  34. </div>
  35. </template>
  36. <script>
  37. const path = process.env.VUE_APP_BASE_API
  38. import { mapGetters } from 'vuex'
  39. import infoList from '@/mixins/infoList'
  40. import { exportExcel, loadExcelData, downloadTemplate } from '@/api/excel'
  41. import { getMenuList } from '@/api/menu'
  42. export default {
  43. name: 'Excel',
  44. mixins: [infoList],
  45. data() {
  46. return {
  47. listApi: getMenuList,
  48. path: path
  49. }
  50. },
  51. computed: {
  52. ...mapGetters('user', ['userInfo', 'token'])
  53. },
  54. created() {
  55. this.pageSize = 999
  56. this.getTableData()
  57. },
  58. methods: {
  59. handleExcelExport(fileName) {
  60. if (!fileName || typeof fileName !== 'string') {
  61. fileName = 'ExcelExport.xlsx'
  62. }
  63. exportExcel(this.tableData, fileName)
  64. },
  65. loadExcel() {
  66. this.listApi = loadExcelData
  67. this.getTableData()
  68. },
  69. downloadExcelTemplate() {
  70. downloadTemplate('ExcelTemplate.xlsx')
  71. }
  72. }
  73. }
  74. </script>