Menu.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <el-container>
  3. <el-header>
  4. <h3>资源目录树</h3>
  5. </el-header>
  6. <el-main>
  7. <el-col :md="12">
  8. <div style="height: 70vh;">
  9. <el-scrollbar ref="myScrollbar" style="width: 100%; height: 100%;">
  10. <el-card class="box-card" :body-style="{ paddingTop: '5px' }">
  11. <div class="text item">
  12. <el-tree
  13. :default-expand-all="true"
  14. :data="treeNode"
  15. :props="defaultProps"
  16. highlight-current
  17. @node-click="handleNodeClick"
  18. >
  19. <span slot-scope="{ node, data }">
  20. <span :class="data.icon">
  21. <span style="color: blue">{{ node.label }}({{ data.children.length }}) </span>
  22. <span style="color: green">{{ data.url }} </span>
  23. <span style="color: red">{{ data.type }}</span>
  24. </span>
  25. </span>
  26. </el-tree>
  27. </div>
  28. </el-card>
  29. </el-scrollbar>
  30. </div>
  31. </el-col>
  32. </el-main>
  33. <el-dialog
  34. title="编辑资源"
  35. append-to-body
  36. :visible.sync="showEditScopeDialog"
  37. center
  38. >
  39. <el-form :model="menuForm" label-width="80px">
  40. <el-input v-model="menuForm.id" type="hidden" style="width: 70%; padding-right: 2px" />
  41. <el-form-item label="名字" style="width: 70%; padding-right: 2px">
  42. <el-input v-model="menuForm.name" style="width: 70%; padding-right: 2px" readonly />
  43. </el-form-item>
  44. <el-form-item label="URL" style="width: 70%; padding-right: 2px">
  45. <el-input v-model="menuForm.url" style="width: 70%; padding-right: 2px" readonly />
  46. </el-form-item>
  47. <el-form-item label="类型" style="width: 70%; padding-right: 2px">
  48. <el-input v-model="menuForm.type" style="width: 70%; padding-right: 2px" readonly />
  49. </el-form-item>
  50. <el-form-item>
  51. <el-button type="primary" @click="onEdit">确定</el-button>
  52. </el-form-item>
  53. </el-form>
  54. </el-dialog>
  55. </el-container>
  56. </template>
  57. <script>
  58. import { getMenuList } from '@/api/devops'
  59. export default {
  60. name: 'Menu',
  61. data() {
  62. return {
  63. treeNode: [],
  64. defaultProps: {
  65. children: 'children',
  66. label: 'label',
  67. value: 'value'
  68. },
  69. // **********************************************************************
  70. showEditScopeDialog: false,
  71. menuForm: {
  72. id: '',
  73. name: ''
  74. }
  75. }
  76. },
  77. created() {
  78. document.title = '资源目录树'
  79. this.getData()
  80. },
  81. methods: {
  82. handleCurrentChange(pageNumber) {
  83. this.currentPage = pageNumber
  84. this.getData()
  85. // 回到顶部
  86. scrollTo(0, 0)
  87. },
  88. getData() {
  89. this.dataList = []
  90. getMenuList().then(resp => {
  91. if (resp.code === 0) {
  92. this.treeNode = resp.data
  93. } else {
  94. this.$message.error(resp.msg)
  95. }
  96. }).catch(error => {
  97. this.$message.error(error.message)
  98. })
  99. },
  100. handleNodeClick(data) {
  101. this.menuForm = data
  102. this.showEditScopeDialog = true
  103. },
  104. onEdit() {
  105. this.$message.info('on edit')
  106. this.showEditScopeDialog = false
  107. }
  108. }
  109. }
  110. </script>
  111. <style>
  112. </style>