index.tsx 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. // 设备管理 导航条的右侧
  2. import React, { useState, useEffect } from 'react';
  3. import { Dropdown, Menu, Modal, message } from 'antd';
  4. import Icon from '@/tenants-ui/SgIcon';
  5. import { EllipsisOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
  6. import styles from './index.less';
  7. //import { equipImageMap } from '@/config/sagacare/sagacare_image.js';
  8. import type { navigatorItem } from '@/pages/Environment/index';
  9. import { projectObj } from '@/config/api.js';
  10. import { changeCurtain, changeAllAir, changeLight } from '@/pages/Equipment/equipmentControl';
  11. export type topNavRightProps = {
  12. selNavObj: navigatorItem;
  13. navigatorList: navigatorItem[];
  14. mapList: API.MapInfo[];
  15. //queryDeviceManage: () => Promise<any>;
  16. };
  17. const TopNavRight: React.FC<topNavRightProps> = ({ selNavObj, navigatorList, mapList }) => {
  18. //const [modalvisible, setModalvisible] = useState<boolean>(false);
  19. //去掉全部设备的 设备列表
  20. const [deviceList, setDeviceList] = useState<navigatorItem[]>([]);
  21. useEffect(() => {
  22. setDeviceList(navigatorList.slice(1));
  23. }, [navigatorList]);
  24. const allOpenClick = (key) => {
  25. //debugger;
  26. console.log('key', key);
  27. confirm({
  28. title: '请确认',
  29. icon: <ExclamationCircleOutlined />,
  30. content: `确认要全部开启${selNavObj.name}吗?`,
  31. okText: '确认',
  32. cancelText: '取消',
  33. onOk() {
  34. //console.log('mapListmapList', mapList,selNavObj);
  35. //筛选 没有开启的空间
  36. var filterSpaceArr = mapList.filter((item) => {
  37. return item[selNavObj.id] == 0 || item[selNavObj.id] == 2;
  38. });
  39. var filterSpaceArr2 = mapList.filter((item) => {
  40. return item.localName == '上格云3' || item.localName == '上格云休闲区';
  41. });
  42. var flag = 1;
  43. //现在加上循环调用 所以把查询关了
  44. function getDeviceStatus() {
  45. // flag = flag + 1;
  46. // queryDeviceManage().then((res) => {
  47. // if (flag < 13) {
  48. // setTimeout(() => {
  49. // getDeviceStatus();
  50. // }, 800);
  51. // } else {
  52. // flag = 1;
  53. // }
  54. // });
  55. }
  56. //如果是空调
  57. if (filterSpaceArr.length == 0) return;
  58. if (selNavObj.id == 'airConditioner') {
  59. changeAllAir(mapList, getDeviceStatus, '打开', projectObj.projectId);
  60. }
  61. if (selNavObj.id == 'light') {
  62. changeLight('all', filterSpaceArr, getDeviceStatus, '打开');
  63. }
  64. if (selNavObj.id == 'curtain') {
  65. changeCurtain('all', filterSpaceArr, getDeviceStatus, '打开'); // '关闭' : '打开';
  66. }
  67. },
  68. onCancel() {
  69. //console.log('Cancel');
  70. },
  71. });
  72. };
  73. const { confirm } = Modal;
  74. const allCloseClick = () => {
  75. console.log('showModal');
  76. // setModalvisible(true);
  77. confirm({
  78. title: '请确认',
  79. icon: <ExclamationCircleOutlined />,
  80. content: `确认要全部关闭${selNavObj.name}吗?`,
  81. okText: '确认',
  82. cancelText: '取消',
  83. onOk() {
  84. var filterSpaceArr = mapList.filter((item) => {
  85. return item[selNavObj.id] == 1 || item[selNavObj.id] == 2;
  86. });
  87. var filterSpaceArr2 = mapList.filter((item) => {
  88. return item.localName == '上格云3' || item.localName == '上格云休闲区';
  89. });
  90. console.log('关闭filterSpaceArr', filterSpaceArr);
  91. var flag = 1;
  92. function getDeviceStatus() {
  93. // flag = flag + 1;
  94. // queryDeviceManage().then((res) => {
  95. // if (flag < 13) {
  96. // setTimeout(() => {
  97. // getDeviceStatus();
  98. // }, 800);
  99. // } else {
  100. // flag = 1;
  101. // }
  102. // });
  103. }
  104. //如果是空调
  105. if (selNavObj.id == 'airConditioner') {
  106. changeAllAir(mapList, getDeviceStatus, '关闭', projectObj.projectId);
  107. }
  108. if (selNavObj.id == 'light') {
  109. changeLight('all', filterSpaceArr, getDeviceStatus, '关闭');
  110. }
  111. if (selNavObj.id == 'curtain') {
  112. changeCurtain('all', filterSpaceArr, getDeviceStatus, '关闭');
  113. }
  114. },
  115. onCancel() {
  116. //console.log('Cancel');
  117. },
  118. });
  119. };
  120. return (
  121. <>
  122. {/* 全部设备 */}
  123. {selNavObj.id === 'all' && (
  124. <div className={styles.right}>
  125. <div className={styles.title}>运行中的设备</div>
  126. <div className={styles.allList}>
  127. {deviceList.map(function (litem, index) {
  128. return (
  129. <div className={styles.item} key={'run' + index}>
  130. <img src={litem.src} style={{ height: 20 }}></img>
  131. <div className={styles.num}>{litem.num}</div>
  132. </div>
  133. );
  134. })}
  135. </div>
  136. </div>
  137. )}
  138. {/* 设备 */}
  139. {selNavObj.id !== 'all' && (
  140. <div className={styles.right}>
  141. {selNavObj.id !== 'curtain' && <div className={styles.title}>运行中的设备</div>}
  142. {selNavObj.id !== 'curtain' && <div className={styles.onlyNum}>{selNavObj.num}</div>}
  143. <div
  144. className={styles.closeButton}
  145. onClick={allCloseClick}
  146. style={{ display: selNavObj.id == 'curtain' ? 'none' : '' }}
  147. >
  148. {/* <Button type="primary" size={'large'} icon={<Icon type="closeall" style={{color:'red',fontSize:20}} />} style={{'background':'rgba(196, 196, 196, 0.2)',border:'none'}} >
  149. 全部关闭
  150. </Button> */}
  151. <Icon className="" type="closeall" style={{ fontSize: 20 }} />
  152. <span className={styles.text}>全部关闭</span>
  153. </div>
  154. <div
  155. className={styles.moreWrap}
  156. style={{ display: selNavObj.id == 'curtain' ? 'none' : '' }}
  157. >
  158. {/* ...下拉菜单 */}
  159. <Dropdown
  160. trigger="click"
  161. placement="bottomLeft"
  162. overlay={
  163. <Menu style={{ width: 160 }} onClick={({ key }) => allOpenClick(key)}>
  164. <Menu.Item key="open">全部开启</Menu.Item>
  165. </Menu>
  166. }
  167. >
  168. <span className={styles.trigger}>
  169. <EllipsisOutlined style={{ fontSize: 20, marginTop: '4px' }} />
  170. </span>
  171. </Dropdown>
  172. </div>
  173. </div>
  174. )}
  175. {/* <Modal
  176. title="确认"
  177. visible={modalvisible}
  178. onOk={hideModal}
  179. onCancel={hideModal}
  180. okText="确认"
  181. cancelText="取消"
  182. >
  183. <p>确定全部开启吗</p>
  184. </Modal> */}
  185. </>
  186. );
  187. };
  188. export default TopNavRight;