serverDetail.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <!--
  2. * @Author: vera_min vera_min@163.com
  3. * @Date: 2022-09-05 08:41:57
  4. * @LastEditors: vera_min vera_min@163.com
  5. * @LastEditTime: 2022-09-06 17:18:49
  6. * @FilePath: /sagoo-admin-ui/src/views/network/tunnel/component/serverDetail.vue
  7. * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  8. -->
  9. <!-- 服务器详情页 -->
  10. <template>
  11. <div class="server-detail-wrap">
  12. <div class="server-detail-item-wrap">
  13. <div class="label">名称</div>
  14. <div class="value">{{ detail.name }}</div>
  15. </div>
  16. <div class="server-detail-item-wrap">
  17. <div class="label">类型</div>
  18. <div class="value">{{ detail.types }}</div>
  19. </div>
  20. <div class="server-detail-item-wrap">
  21. <div class="label">地址</div>
  22. <div class="value">{{ detail.addr }}</div>
  23. </div>
  24. <div class="server-detail-item-wrap">
  25. <div class="label">状态</div>
  26. <div class="value">{{ detail.status ? '启动' : '未启动' }}</div>
  27. </div>
  28. <div class="server-detail-item-wrap">
  29. <div class="label">禁用</div>
  30. <div class="value">
  31. <el-switch :loading="loading" :before-change="onChangeStatus" :disabled="!detail.status" :active-value="0" :inactive-value="1" size="small" v-model="detail.status" />
  32. </div>
  33. </div>
  34. <div class="server-detail-item-wrap">
  35. <div class="label">创建时间</div>
  36. <div class="value">{{ detail.createdAt }}</div>
  37. </div>
  38. </div>
  39. </template>
  40. <script lang="ts">
  41. import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
  42. import { ElMessage } from 'element-plus';
  43. import api from '/@/api/network';
  44. interface TableDataState {
  45. loading: boolean
  46. }
  47. export default defineComponent({
  48. name: 'serverDetail',
  49. props: {
  50. detail: {
  51. type: Object,
  52. default: ''
  53. }
  54. },
  55. setup(props, context) {
  56. const state = reactive<TableDataState>({
  57. loading: false
  58. });
  59. onMounted(() => {
  60. });
  61. // 禁用状态
  62. const onChangeStatus = () => {
  63. state.loading = true
  64. return new Promise((resolve) => {
  65. api.tunnel.changeTunnelStatus({ id: props.detail.id, status: 0 }).then((res: any) => {
  66. state.loading = false
  67. ElMessage.success('已关闭');
  68. props.detail.status = 0
  69. })
  70. })
  71. };
  72. return {
  73. onChangeStatus,
  74. ...toRefs(props),
  75. ...toRefs(state),
  76. };
  77. }
  78. });
  79. </script>
  80. <style lang="scss" scoped>
  81. .server-detail-wrap {
  82. .server-detail-item-wrap {
  83. display: flex;
  84. justify-content: space-between;
  85. padding: 10px;
  86. border-left: 1px solid var(--el-border-color-light);
  87. border-top: 1px solid var(--el-border-color-light);
  88. border-right: 1px solid var(--el-border-color-light);
  89. }
  90. .server-detail-item-wrap:last-child {
  91. border-bottom: 1px solid var(--el-border-color-light);
  92. }
  93. }
  94. </style>