index.vue 9.1 KB

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