A8000
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.2 KiB

8 months ago
8 months ago
8 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
  1. import { defineStore } from 'pinia'
  2. import { ref } from 'vue'
  3. import * as R from 'ramda'
  4. import type {
  5. DeviceWorkStateMessage,
  6. FooterMessageState,
  7. SensorStateMessage,
  8. } from '../../websocket/socket'
  9. export const useDeviceStore = defineStore('device', () => {
  10. const deviceState = ref<DeviceWorkStateMessage['data']>({
  11. workState: 'IDLE',
  12. pending: false,
  13. } as DeviceWorkStateMessage['data'])
  14. function setDeviceState(data: DeviceWorkStateMessage['data']) {
  15. if (!R.equals(data, deviceState.value)) {
  16. deviceState.value = data
  17. }
  18. }
  19. const sensorState = ref<SensorStateMessage['data']>({
  20. pboxTemperature: 20,
  21. incubateBoxTemperature: 20,
  22. wasteBinFullFlag: false,
  23. })
  24. const setSensorState = (data: SensorStateMessage['data']) => {
  25. if (!R.equals(data, sensorState.value)) {
  26. sensorState.value = data
  27. }
  28. }
  29. const messageState = ref<FooterMessageState['data']>({
  30. topMessage: {
  31. time: 0,
  32. messageLevel: 'Info',
  33. message: '空闲',
  34. },
  35. messageBoxList: [],
  36. })
  37. const setMessageState = (data: FooterMessageState['data']) => {
  38. messageState.value = data
  39. }
  40. return {
  41. deviceState,
  42. setDeviceState,
  43. sensorState,
  44. setSensorState,
  45. messageState,
  46. setMessageState,
  47. }
  48. })