index.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. <!-- eslint-disable vue/multi-word-component-names -->
  2. <template>
  3. <div class="spray-wrapper">
  4. <MonitorComponent
  5. main-title="凝胶防灭火材料自动喷洒系统"
  6. :main-config="{
  7. configs: defaultConfigs,
  8. }"
  9. :monitor-history-config="{}"
  10. :handler-history-config="{}"
  11. :alarm-history-config="{}"
  12. strtype="sys_surface_juejin"
  13. >
  14. <template #default="{ monitorData }">
  15. <div id="spray3D" class="w-full h-full">
  16. <a-spin :spinning="loading" />
  17. <div id="sprayCSS3D" v-show="!loading" style="width: 100%; height: 100%; position: absolute; overflow: hidden">
  18. <FourBorderBg id="sprayCSS3DEnvA">
  19. <div>送料电机</div>
  20. <div>电压US:{{ monitorData.slus }}</div>
  21. <div>电流LA:{{ monitorData.slla }}</div>
  22. <div>电流LB:{{ monitorData.sllb }}</div>
  23. <div>电流LC:{{ monitorData.sllc }}</div>
  24. </FourBorderBg>
  25. <FourBorderBg id="sprayCSS3DEnvB">
  26. <div>输送电机</div>
  27. <div>电压US:{{ monitorData.ssus }}</div>
  28. <div>电流LA:{{ monitorData.ssla }}</div>
  29. <div>电流LB:{{ monitorData.sslb }}</div>
  30. <div>电流LC:{{ monitorData.sslc }}</div>
  31. </FourBorderBg>
  32. </div>
  33. </div>
  34. </template>
  35. </MonitorComponent>
  36. </div>
  37. </template>
  38. <script setup lang="ts">
  39. import { onMounted, ref } from 'vue';
  40. import FourBorderBg from '/@/views/vent/comment/components/fourBorderBg.vue';
  41. import MonitorComponent from './component.vue';
  42. import { Config } from '../../deviceManager/configurationTable/types';
  43. import { useInitConfigs } from '../../home/configurable/hooks/useInit';
  44. import { mountedThree, setModelType } from './spray.three';
  45. const loading = ref(false);
  46. const defaultConfigs: Config[] = [
  47. {
  48. deviceType: '',
  49. moduleName: '压力传感器',
  50. pageType: 'spray',
  51. moduleData: {
  52. header: {
  53. show: false,
  54. readFrom: '',
  55. selector: {
  56. show: false,
  57. value: '',
  58. },
  59. slot: {
  60. show: false,
  61. value: '',
  62. },
  63. },
  64. background: {
  65. show: false,
  66. type: 'video',
  67. link: '',
  68. },
  69. layout: {
  70. direction: 'row',
  71. items: [
  72. {
  73. name: 'board',
  74. basis: '100%',
  75. },
  76. ],
  77. },
  78. board: [
  79. {
  80. type: 'P',
  81. layout: 'label-top',
  82. items: [
  83. {
  84. label: '在线数量',
  85. value: '99',
  86. },
  87. {
  88. label: '异常数量',
  89. value: '0',
  90. },
  91. ],
  92. readFrom: '',
  93. },
  94. ],
  95. },
  96. showStyle: {
  97. size: 'width:440px;height:250px;',
  98. version: '保德',
  99. position: 'top:80px;left:10px;',
  100. },
  101. },
  102. {
  103. deviceType: '',
  104. moduleName: '喷洒实况',
  105. pageType: 'spray',
  106. moduleData: {
  107. header: {
  108. show: false,
  109. readFrom: '',
  110. selector: {
  111. show: false,
  112. value: '',
  113. },
  114. slot: {
  115. show: false,
  116. value: '',
  117. },
  118. },
  119. background: {
  120. show: false,
  121. type: 'video',
  122. link: '',
  123. },
  124. layout: {
  125. direction: 'row',
  126. items: [
  127. {
  128. name: 'table',
  129. basis: '100%',
  130. },
  131. ],
  132. },
  133. table: [
  134. {
  135. type: 'A',
  136. columns: [
  137. {
  138. name: '支架',
  139. prop: 'strinstallpos',
  140. },
  141. {
  142. name: '工作状态',
  143. prop: 'airStatus_str',
  144. },
  145. ],
  146. readFrom: '',
  147. },
  148. ],
  149. preset: [],
  150. },
  151. showStyle: {
  152. size: 'width:440px;height:430px;',
  153. version: '保德',
  154. position: 'top:350px;left:10px;',
  155. },
  156. },
  157. {
  158. deviceType: '',
  159. moduleName: '场景信息总览',
  160. pageType: 'spray',
  161. moduleData: {
  162. header: { show: false, readFrom: '', selector: { show: false, value: '' }, slot: { show: false, value: '' } },
  163. background: { show: false, type: 'video', link: '' },
  164. layout: {
  165. direction: 'column',
  166. items: [
  167. {
  168. name: 'list',
  169. basis: '50%',
  170. overflow: false,
  171. },
  172. {
  173. name: 'partition',
  174. basis: 'auto',
  175. overflow: false,
  176. },
  177. {
  178. name: 'list',
  179. basis: 'auto',
  180. overflow: false,
  181. },
  182. {
  183. name: 'partition',
  184. basis: 'auto',
  185. overflow: false,
  186. },
  187. {
  188. name: 'list',
  189. basis: 'auto',
  190. overflow: false,
  191. },
  192. ],
  193. },
  194. list: [
  195. {
  196. type: 'L',
  197. readFrom: '',
  198. items: [
  199. {
  200. label: '绑定控制箱名称',
  201. value: '${cumulativeFlow}',
  202. },
  203. {
  204. label: '控制箱地址',
  205. value: '${heaterTemperature}',
  206. },
  207. {
  208. label: '控制箱在线状态',
  209. value: '${nitrogen}',
  210. },
  211. {
  212. label: '故障从机',
  213. value: '${nitrogenContent}',
  214. },
  215. {
  216. label: '浮球液位报警',
  217. value: '${nitrogenContent}',
  218. },
  219. {
  220. label: '输送管道压力',
  221. value: '${nitrogenContent}',
  222. },
  223. ],
  224. },
  225. {
  226. type: 'N',
  227. readFrom: '',
  228. items: [
  229. {
  230. label: '启动状态',
  231. value: '0.97',
  232. color: 'blue',
  233. },
  234. {
  235. label: '报警状态',
  236. value: '84.4',
  237. },
  238. ],
  239. },
  240. {
  241. type: 'N',
  242. readFrom: '',
  243. items: [
  244. {
  245. label: '启动状态',
  246. value: '0.97',
  247. color: 'blue',
  248. },
  249. {
  250. label: '故障状态',
  251. value: '84.4',
  252. },
  253. ],
  254. },
  255. ],
  256. partition: [
  257. {
  258. type: 'A',
  259. readFrom: '',
  260. layout: 'icon-pre',
  261. label: '送料电机',
  262. icon: '/src/assets/images/home-container/configurable/tashanhome/partition-icon-1.png',
  263. },
  264. {
  265. type: 'A',
  266. readFrom: '',
  267. layout: 'icon-pre',
  268. label: '输送电机',
  269. icon: '/src/assets/images/home-container/configurable/tashanhome/partition-icon-2.png',
  270. },
  271. ],
  272. mock: {},
  273. },
  274. showStyle: {
  275. size: 'width:440px;height:700px;',
  276. version: '原版',
  277. position: 'top:80px;right:10px;',
  278. },
  279. },
  280. ];
  281. const { configs, fetchConfigs } = useInitConfigs();
  282. onMounted(() => {
  283. fetchConfigs('spray');
  284. // loading.value = true;
  285. // mountedThree('#spray3D', ['#sprayCSS3D', '#sprayCSS3DEnvA', '#sprayCSS3DEnvB']).then(() => {
  286. // setModelType('spray').finally(() => {
  287. // loading.value = false;
  288. // });
  289. // });
  290. });
  291. </script>
  292. <style lang="less" scoped>
  293. .spray-wrapper {
  294. width: 100%;
  295. height: 100%;
  296. }
  297. .spray-wrapper :deep(.list-item_L .list-item__icon_L) {
  298. background-image: url('/@/assets/images/home-container/configurable/minehome/list-icon-file.png');
  299. }
  300. .spray-wrapper :deep(.list-item_N:nth-child(1)) {
  301. background-image: url('/@/assets/images/home-container/configurable/minehome/list-bg-n5.png');
  302. }
  303. .spray-wrapper :deep(.list-item_N:nth-child(2)) {
  304. background-image: url('/@/assets/images/home-container/configurable/minehome/list-bg-n6.png');
  305. }
  306. </style>