index.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <script setup lang="ts" name="Device">
  2. import apis from "@a"
  3. import Gateway from "./_gateway.vue"
  4. import Meter from "./_meter.vue"
  5. import appStore from "@s"
  6. const orgTreeRef = ref()
  7. const gatewayRef = ref()
  8. const meterRef = ref()
  9. const orgOptions = ref<any[]>([])
  10. const orgId = ref(0)
  11. const id = ref(0)
  12. function handleQueryGateway() {
  13. if (orgId.value) {
  14. id.value = 0
  15. gatewayRef.value?.query(orgId.value)
  16. }
  17. }
  18. function handleQueryMeter(v: number) {
  19. id.value = v
  20. }
  21. function handleCreateMeter(v: number) {
  22. meterRef.value?.createMeter(v)
  23. }
  24. function init() {
  25. apis.sysApi.orgTreeSelect(appStore.authStore.user.orgId).then((res) => {
  26. orgOptions.value = res.data
  27. })
  28. }
  29. onMounted(init)
  30. </script>
  31. <template>
  32. <div class="app-container d-flex flex-column">
  33. <el-row :gutter="10">
  34. <el-col v-if="orgOptions.length > 0 && orgOptions[0]?.children?.length" :span="4">
  35. <OrgTree
  36. ref="orgTreeRef"
  37. v-model="orgId"
  38. :data="orgOptions"
  39. @node-click="handleQueryGateway"></OrgTree>
  40. </el-col>
  41. <el-col :span="orgOptions.length > 0 && orgOptions[0]?.children?.length ? 20 : 24">
  42. <div class="w-100" style="height: calc(100vh - 140px)">
  43. <div class="w-100" style="height: 65%">
  44. <Gateway
  45. ref="gatewayRef"
  46. @create-meter="handleCreateMeter"
  47. @query-meter="handleQueryMeter" />
  48. </div>
  49. <div class="w-100" style="height: 35%">
  50. <Meter ref="meterRef" :id="id"></Meter>
  51. </div>
  52. </div>
  53. </el-col>
  54. </el-row>
  55. </div>
  56. </template>