AdminStoreObject.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <template>
  2. <el-container>
  3. <el-header height="220">
  4. <h3>对象列表</h3>
  5. <el-row style="margin-top: 10px">
  6. <el-button type="plain" icon="el-icon-files">存储节点</el-button>
  7. <el-select
  8. v-model="selectedValue"
  9. style="margin-left: 5px"
  10. @change="onSelectChange"
  11. >
  12. <el-option v-for="(item, index) in tableList" :key="index" :label="item.label" :value="item.value" />
  13. </el-select>
  14. </el-row>
  15. </el-header>
  16. <el-main>
  17. <el-table
  18. :data="dataList"
  19. border
  20. height="480"
  21. style="width: 100%"
  22. >
  23. <el-table-column
  24. fixed="left"
  25. label="No"
  26. type="index"
  27. />
  28. <el-table-column
  29. prop="nodeAddr"
  30. label="文件名"
  31. />
  32. <el-table-column
  33. prop="httpPort"
  34. label="修改时间"
  35. />
  36. <el-table-column
  37. prop="rpcPort"
  38. label="大小"
  39. />
  40. <el-table-column
  41. prop="status"
  42. label="文件类型"
  43. />
  44. <el-table-column
  45. fixed="right"
  46. label="操作"
  47. width="280"
  48. >
  49. <template slot-scope="scope">
  50. <el-button
  51. size="mini"
  52. @click="handleEdit(scope.$index, scope.row)"
  53. >磁盘详情</el-button>
  54. <el-button
  55. size="mini"
  56. @click="handleEdit(scope.$index, scope.row)"
  57. >禁用</el-button>
  58. <el-button
  59. size="mini"
  60. type="danger"
  61. @click="handleDelete(scope.$index, scope.row)"
  62. >删除</el-button>
  63. </template>
  64. </el-table-column>
  65. </el-table>
  66. </el-main>
  67. <!-- 修改视频可见范围对话框 -->
  68. <el-dialog
  69. append-to-body
  70. :visible.sync="showEditScopeDialog"
  71. center
  72. >
  73. <div>
  74. <h3>存储节点磁盘详情</h3>
  75. <el-table
  76. :data="tableList"
  77. border
  78. height="480"
  79. style="width: 100%"
  80. >
  81. <el-table-column
  82. fixed="left"
  83. label="No"
  84. type="index"
  85. />
  86. <el-table-column
  87. prop="fsType"
  88. label="文件系统"
  89. />
  90. <el-table-column
  91. prop="volume"
  92. label="磁盘分区"
  93. />
  94. <el-table-column
  95. prop="storeDir"
  96. label="存储目录"
  97. />
  98. <el-table-column
  99. prop="total"
  100. label="分区容量"
  101. >
  102. <template slot-scope="scope">
  103. <el-progress :percentage="scope.row.percent"></el-progress>
  104. </template>
  105. </el-table-column>
  106. <el-table-column
  107. prop="totalInode"
  108. label="inode 容量"
  109. >
  110. <template slot-scope="scope">
  111. <el-progress :percentage="scope.row.percentInode"></el-progress>
  112. </template>
  113. </el-table-column>
  114. </el-table>
  115. </div>
  116. </el-dialog>
  117. </el-container>
  118. </template>
  119. <script>
  120. import { getUserNodeKeyValue } from '@/api/oss'
  121. export default {
  122. name: 'AdminStoreObject',
  123. data() {
  124. return {
  125. queryInfo: {
  126. path: null
  127. },
  128. // 屏幕宽度, 为了控制分页条的大小
  129. screenWidth: document.body.clientWidth,
  130. currentPage: 1,
  131. pageSize: 12,
  132. totalSize: 0,
  133. dataList: [],
  134. tableList: [],
  135. nextId: 0,
  136. // **********************************************************************
  137. showEditScopeDialog: false,
  138. form: {
  139. videoId: null,
  140. scope: 1
  141. }
  142. }
  143. },
  144. created() {
  145. document.title = '存储节点'
  146. this.getData()
  147. },
  148. methods: {
  149. getData() {
  150. this.tableList = []
  151. getUserNodeKeyValue().then(resp => {
  152. if (resp.code === 0) {
  153. this.tableList = resp.data
  154. this.selectedValue = this.tableList[0].value
  155. this.dataList = []
  156. } else {
  157. this.$message.error(resp.msg)
  158. }
  159. })
  160. },
  161. onRefresh() {
  162. this.getData()
  163. },
  164. handleCurrentChange(pageNumber) {
  165. this.currentPage = pageNumber
  166. this.getData()
  167. // 回到顶部
  168. scrollTo(0, 0)
  169. },
  170. handleEdit(index, row) {
  171. this.showEditScopeDialog = true
  172. },
  173. handleDelete(index, row) {
  174. this.$confirm('确定要删除 ' + row.title + '?', '提示', {
  175. confirmButtonText: '确定',
  176. cancelButtonText: '取消',
  177. type: 'warning'
  178. }).then(() => {
  179. this.$message.info('handleDelete')
  180. }).catch(() => {
  181. this.$message({
  182. type: 'info',
  183. message: '已取消'
  184. })
  185. })
  186. },
  187. onAddChannel() {
  188. this.showEditScopeDialog = false
  189. },
  190. onSelectChange() {
  191. this.dataList = []
  192. },
  193. handleClose() {
  194. }
  195. }
  196. }
  197. </script>
  198. <style>
  199. </style>