Running.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <div class="l-flex--col o-device-grid-item has-border radius">
  3. <div class="l-flex__none l-flex--row">
  4. <i class="l-flex__none o-device-grid-item__icon o-icon medium has-bg" />
  5. <span class="l-flex__fill u-color--info u-ellipsis">状态</span>
  6. <template v-if="online">
  7. <i
  8. v-if="asking"
  9. class="l-flex__none el-icon-loading u-color--black"
  10. />
  11. <i
  12. v-else
  13. class="l-flex__none o-icon mini has-bg u-pointer"
  14. @click="invoke"
  15. />
  16. </template>
  17. </div>
  18. <div
  19. v-if="!asking"
  20. class="l-flex__fill l-flex--row center o-device-grid-item__large has-bottom-padding u-color--black u-bold"
  21. >
  22. {{ online ? status : '离线' }}
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. import {
  28. addListener,
  29. removeListener,
  30. send
  31. } from '../../monitor'
  32. export default {
  33. name: 'DeviceRunning',
  34. props: {
  35. online: {
  36. type: [Boolean, String],
  37. default: false
  38. }
  39. },
  40. data () {
  41. return {
  42. asking: false,
  43. status: ''
  44. }
  45. },
  46. created () {
  47. addListener('status', this.onUpdate)
  48. if (this.online && !this.asking) {
  49. this.ask()
  50. }
  51. },
  52. beforeDestroy () {
  53. removeListener('status', this.onUpdate)
  54. },
  55. methods: {
  56. onUpdate (status, { loading }) {
  57. this.asking = loading
  58. switch (status) {
  59. case 1:
  60. this.status = '未播放节目,处于默认状态'
  61. break
  62. case 2:
  63. this.status = '正在播放节目'
  64. break
  65. case 3:
  66. this.status = '解析节目异常,请重新发布'
  67. break
  68. case -1:
  69. this.status = '解析异常,请重试'
  70. break
  71. default:
  72. this.status = '未知'
  73. break
  74. }
  75. },
  76. ask () {
  77. return send('/status/ask')
  78. },
  79. invoke () {
  80. this.ask().catch(() => {
  81. this.$message({
  82. type: 'warning',
  83. message: '正在连接,请稍后再试'
  84. })
  85. })
  86. }
  87. }
  88. }
  89. </script>
  90. <style lang="scss" scoped>
  91. .o-icon {
  92. background-image: url("~@/assets/icon_screenshot.png");
  93. &.o-device-grid-item__icon {
  94. background-image: url("~@/assets/icon_condition.png");
  95. }
  96. }
  97. </style>