frequencyPanel.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <div class="">
  3. <div class="grid-content bg-purple frequencyPanel">
  4. <div class="blanceChartTit">
  5. <span>频率</span>
  6. </div>
  7. <div style="padding: 30px">
  8. <div class="frequencyTit">当前频率 {{watchData.f?watchData.f:50.03}}hZ</div>
  9. <div class="frequencyTit2">
  10. 频率偏差
  11. <span> {{watchData.fdeviation?watchData.fdeviation:0.06}}%</span>
  12. </div>
  13. <el-row class="mt-40 frequencyBox">
  14. <el-col :span="2"><div class="grid-content bg-purple"></div></el-col>
  15. <el-col :span="5">
  16. <div class="grid-content bg-purple-light"></div>
  17. </el-col>
  18. <el-col class="rightSplitRed" :span="5">
  19. <div class="grid-content bg-purple">
  20. <el-tooltip
  21. class="item"
  22. effect="dark"
  23. content="50.02 Hz"
  24. placement="right"
  25. >
  26. <div class="rightSplitRedInner"></div>
  27. </el-tooltip>
  28. </div>
  29. <i class="el-icon-caret-top"></i>
  30. <div class="greenShadow"></div>
  31. </el-col>
  32. <el-col :span="5">
  33. <div class="grid-content bg-purple-light"></div>
  34. </el-col>
  35. <el-col :span="5">
  36. <div class="grid-content bg-purple-light"></div>
  37. </el-col>
  38. <el-col :span="2"><div class="grid-content bg-purple"></div></el-col>
  39. </el-row>
  40. <el-row class="mt-20" style="text-align: right">
  41. <el-col :span="2">49</el-col>
  42. <el-col :span="5">49.5</el-col>
  43. <el-col :span="5">50</el-col>
  44. <el-col :span="5">50.5</el-col>
  45. <el-col :span="5">51</el-col>
  46. </el-row>
  47. </div>
  48. </div>
  49. </div>
  50. </template>
  51. <script>
  52. import { ref, watch } from 'vue'
  53. export default {
  54. name: 'FrenquencyPanel',
  55. props: {
  56. getData: Object,
  57. },
  58. setup(props) {
  59. props
  60. const watchData = ref({})
  61. const getData = async () => {
  62. watchData.value = props.getData
  63. }
  64. const writeValue = (val) => {
  65. val
  66. getData()
  67. }
  68. //监听变化
  69. watch(
  70. () => props.getData,
  71. (newVal, oldVal, clear) => {
  72. // 执行异步任务,并得到关闭异步任务的 id
  73. newVal
  74. let id = writeValue(newVal, oldVal)
  75. // 如果 watch 监听被重复执行了,则会先清除上次未完成的异步任务
  76. clear(() => clearTimeout(id))
  77. },
  78. { lazy: true }
  79. )
  80. return {
  81. watchData,
  82. }
  83. },
  84. }
  85. </script>
  86. <style scoped lang="scss">
  87. .el-row {
  88. margin-bottom: 20px;
  89. &:last-child {
  90. margin-bottom: 0;
  91. }
  92. }
  93. .el-col {
  94. border-radius: 4px;
  95. }
  96. .bg-purple-dark {
  97. border: 1px solid #99a9bf;
  98. }
  99. .bg-purple {
  100. border: 1px solid #d3dce6;
  101. }
  102. .bg-purple-light {
  103. border: 1px solid #e5e9f2;
  104. }
  105. .grid-content {
  106. border-radius: 4px;
  107. min-height: 36px;
  108. }
  109. .row-bg {
  110. padding: 10px 0;
  111. border: 1px solid #f9fafc;
  112. }
  113. </style>