消毒机设备
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.

198 lines
5.6 KiB

2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
2 months ago
2 months ago
4 weeks ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 weeks ago
2 months ago
2 months ago
2 months ago
3 weeks ago
4 weeks ago
2 months ago
2 months ago
4 weeks ago
2 months ago
2 months ago
  1. <script lang="ts" setup>
  2. import homeLiquid from 'assets/images/home/home-liquid.svg'
  3. import Environment from 'components/home/Environment.vue'
  4. import HomeFormula from 'components/home/HomeFormula.vue'
  5. import HomeLogLevel from 'components/home/HomeLogLevel.vue'
  6. import HomeOperation from 'components/home/HomeOperation.vue'
  7. import HomeSetting from 'components/home/HomeSetting.vue'
  8. import { useHomeStore } from 'stores/homeStore'
  9. import { useLiquidStore } from 'stores/liquidStore'
  10. import { computed, ref, watchEffect } from 'vue'
  11. import { useRoute } from 'vue-router'
  12. import { roundNumber } from '@/libs/utils'
  13. import { useFormulaStore } from '@/stores/formulaStore'
  14. import { useSystemStore } from '@/stores/systemStore'
  15. const route = useRoute()
  16. const homeStore = useHomeStore()
  17. const liquidStore = useLiquidStore()
  18. const formulaStore = useFormulaStore()
  19. const systemStore = useSystemStore()
  20. const environmentParams = ref<Home.DisplayrelyMgrParams>(homeStore.h2O2SensorData[0])
  21. const initEnv1 = {
  22. type: 'env1',
  23. title: '探头1',
  24. }
  25. const initEnv2 = {
  26. type: 'env2',
  27. title: '探头2',
  28. }
  29. const probe1Params = ref<Home.DisplayrelyMgrParams>(homeStore.h2O2SensorData[1] || initEnv1)
  30. const probe2Params = ref<Home.DisplayrelyMgrParams>(homeStore.h2O2SensorData[2] || initEnv2)
  31. const liquidInfo = ref<Liquid.LiquidData>(liquidStore.liquidStateData)
  32. const liquidTotal = ref<number>(liquidStore.liquidTotal)
  33. const formulaInfo = ref()
  34. const loading = ref(false)
  35. watchEffect(() => {
  36. formulaInfo.value = formulaStore.currentSelectedFormulaInfo
  37. liquidTotal.value = liquidStore.liquidTotal
  38. liquidInfo.value = liquidStore.liquidStateData
  39. loading.value = systemStore.loading
  40. if (homeStore.h2O2SensorData && homeStore.h2O2SensorData.length) {
  41. environmentParams.value = {
  42. ...homeStore.h2O2SensorData[0],
  43. title: '仓内',
  44. type: 'inside',
  45. }
  46. if (homeStore.h2O2SensorData.length === 2) {
  47. probe1Params.value = {
  48. ...homeStore.h2O2SensorData[1],
  49. title: '探头1',
  50. type: 'env1',
  51. }
  52. }
  53. if (homeStore.h2O2SensorData.length === 3) {
  54. probe1Params.value = {
  55. ...homeStore.h2O2SensorData[2],
  56. title: '探头2',
  57. type: 'env2',
  58. }
  59. }
  60. }
  61. })
  62. // 当前消毒液余量百分比
  63. const nowLiquidProgress = computed(() => {
  64. if (!liquidInfo.value.nowLiquid) {
  65. return 0
  66. }
  67. const nl = roundNumber(Number(((liquidInfo.value.nowLiquid / liquidTotal.value) * 100)), 0)
  68. return nl
  69. })
  70. // 当前消毒液余量
  71. const nowLiquid = computed(() => {
  72. return roundNumber(liquidInfo.value.nowLiquid, 0)
  73. })
  74. </script>
  75. <template>
  76. <div v-loading="loading" class="home">
  77. <div v-if="route.path === '/home'" class="home-grid-container">
  78. <div class="home-grid-item merged-cell">
  79. <div class="home-left">
  80. <el-card class="card">
  81. <template #default>
  82. <!-- <div class="title-line" /> -->
  83. <div class="card-title-name">
  84. <img :src="homeLiquid"> {{ $t('message.disinfectant') }}
  85. </div>
  86. <div class="card-progress">
  87. <div class="card-progress-content">
  88. <el-progress :text-inside="true" :stroke-width="35" :percentage="nowLiquidProgress" />
  89. </div>
  90. </div>
  91. <div class="card-num-g">
  92. {{ nowLiquid }}g
  93. </div>
  94. </template>
  95. </el-card>
  96. <el-card class="card">
  97. <Environment :env-params="environmentParams" line-color="#ffb380" />
  98. </el-card>
  99. <el-card class="card">
  100. <Environment :env-params="probe1Params" line-color="#80ffb3" />
  101. </el-card>
  102. <el-card class="card">
  103. <Environment :env-params="probe2Params" line-color="#cc99ff" />
  104. </el-card>
  105. </div>
  106. </div>
  107. <div class="home-grid-item home-right">
  108. <!-- 正在进行的配方 -->
  109. <HomeFormula />
  110. <!-- 选择消毒的等级 -->
  111. <HomeLogLevel />
  112. <!-- 开始消毒停止消毒及状态区 -->
  113. <HomeOperation />
  114. <!-- 消毒设置 -->
  115. <HomeSetting />
  116. </div>
  117. </div>
  118. <div v-else>
  119. <router-view />
  120. </div>
  121. </div>
  122. </template>
  123. <style lang="scss" scoped>
  124. $input-height: 3rem;
  125. .home{
  126. min-height: $main-container-height;
  127. }
  128. .home-grid-container {
  129. display: grid;
  130. grid-template-columns: repeat(3, 1fr);
  131. gap: 1rem;
  132. }
  133. .home-merged-cell {
  134. grid-column: 1 / 2;
  135. background-color: #ff6b6b;
  136. }
  137. .home-left {
  138. display: grid;
  139. grid-template-columns: repeat(2, 1fr);
  140. grid-template-rows: repeat(2, auto);
  141. gap:1rem;
  142. .card {
  143. text-align: center;
  144. height: 40.5vh;
  145. width: 30.5vw;
  146. border: 1px solid rgb(225, 225, 225);
  147. position: relative;
  148. border-radius: 10px 10px 10px 10px;
  149. background: #FFFFFF;
  150. background: $gradient-color;
  151. .title-line{
  152. height: 1vw;
  153. background-color: #b3d9ff;
  154. position: absolute;
  155. width: 100%;
  156. border-radius: 10px 10px 0 0;
  157. margin: -2.12rem;
  158. }
  159. .card-title-name{
  160. display: flex;
  161. align-items: center;
  162. gap: 10px;
  163. font-size: 26px;
  164. padding: 1rem;
  165. }
  166. .card-progress{
  167. display: flex;
  168. justify-content: center;
  169. margin-top: 3rem;
  170. .card-progress-content{
  171. width: 92%;
  172. }
  173. }
  174. .card-num-g{
  175. margin-top: 3.5vw;
  176. font-size: 26px;
  177. font-weight: bold;
  178. }
  179. }
  180. }
  181. .home-right{
  182. width: 34.5vw;
  183. background: $gradient-color;
  184. position: relative;
  185. }
  186. .el-button {
  187. background-color: #2892F3 !important;
  188. }
  189. </style>