group-list.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import DeviceCard from '../DeviceCard.vue'
  2. import VolumeDialog from '../VolumeDialog.vue'
  3. export default {
  4. props: {
  5. status: {
  6. type: String,
  7. default: ''
  8. }
  9. },
  10. components: {
  11. DeviceCard,
  12. VolumeDialog
  13. },
  14. computed: {
  15. groupItems () {
  16. return []
  17. },
  18. list () {
  19. return [...this.groupItems].sort(this.sort)
  20. },
  21. filterList () {
  22. if (!this.status) {
  23. return this.list
  24. }
  25. if (this.status === 'offline') {
  26. return this.list.filter(({ onlineStatus }) => onlineStatus !== 1)
  27. }
  28. return this.list.filter(({ onlineStatus }) => onlineStatus === 1)
  29. },
  30. hasData () {
  31. return this.filterList.length > 0
  32. }
  33. },
  34. methods: {
  35. sort (a, b) {
  36. if (a.onlineStatus === b.onlineStatus) {
  37. if (!b.lastOnline) {
  38. return -1
  39. }
  40. if (!a.lastOnline) {
  41. return 1
  42. }
  43. return a.lastOnline < b.lastOnline ? 1 : -1
  44. }
  45. return a.onlineStatus === 1 ? -1 : 1
  46. },
  47. onVolume ({ value, device }) {
  48. this.$refs.volumeDialog.show(value, device)
  49. }
  50. }
  51. }