serverDetail.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <el-descriptions :column="2" border>
  3. <el-descriptions-item>
  4. <template #label>
  5. <div class="cell-item">名称</div>
  6. </template>
  7. {{detail.name}}
  8. </el-descriptions-item>
  9. <el-descriptions-item>
  10. <template #label>
  11. <div class="cell-item">类型</div>
  12. </template>
  13. {{detail.types}}
  14. </el-descriptions-item>
  15. <el-descriptions-item>
  16. <template #label>
  17. <div class="cell-item">地址</div>
  18. </template>
  19. {{detail.addr}}
  20. </el-descriptions-item>
  21. <el-descriptions-item>
  22. <template #label>
  23. <div class="cell-item">状态</div>
  24. </template>
  25. {{ detail.status ? '启动' : '未启动' }}
  26. </el-descriptions-item>
  27. <el-descriptions-item>
  28. <template #label>
  29. <div class="cell-item">禁用</div>
  30. </template>
  31. <el-switch :loading="loading" :before-change="onChangeStatus" :disabled="!detail.status" :active-value="0" :inactive-value="1" size="small" v-model="detail.status" />
  32. </el-descriptions-item>
  33. <el-descriptions-item>
  34. <template #label>
  35. <div class="cell-item">创建时间</div>
  36. </template>
  37. {{ detail.createdAt }}
  38. </el-descriptions-item>
  39. </el-descriptions>
  40. </template>
  41. <script lang="ts">
  42. import { toRefs, reactive, onMounted, defineComponent } from 'vue';
  43. import { ElMessage } from 'element-plus';
  44. import api from '/@/api/network';
  45. interface TableDataState {
  46. loading: boolean
  47. }
  48. export default defineComponent({
  49. name: 'serverDetail',
  50. props: {
  51. detail: {
  52. type: Object,
  53. default: ''
  54. }
  55. },
  56. setup(props) {
  57. const state = reactive<TableDataState>({
  58. loading: false
  59. });
  60. onMounted(() => {
  61. });
  62. // 禁用状态
  63. const onChangeStatus = () => {
  64. state.loading = true
  65. return new Promise(() => {
  66. api.tunnel.changeTunnelStatus({ id: props.detail.id, status: 0 }).then(() => {
  67. state.loading = false
  68. ElMessage.success('已关闭');
  69. props.detail.status = 0
  70. })
  71. })
  72. };
  73. return {
  74. onChangeStatus,
  75. ...toRefs(props),
  76. ...toRefs(state),
  77. };
  78. }
  79. });
  80. </script>