Browse Source

全部关 全部开

zhaojijng 2 years ago
parent
commit
6c2ea6bd81

+ 8 - 0
config/proxy.ts

@@ -33,6 +33,14 @@ export default {
       changeOrigin: true,
       pathRewrite: { '^/api2': '' },
     },
+    '/duoduo-service': {
+      target: 'https://duoduoenv.sagacloud.cn/',
+      // target: 'http://192.168.12.13:52011/',
+      changeOrigin: true,
+      pathRewrite: {
+        // "^/apis": ""
+      },
+    },
     // '/api3/': {
     //   // 要代理的地址
     //   //target: 'http://api.sagacloud.cn/',

+ 1 - 0
src/components/SearchInput/index.tsx

@@ -81,6 +81,7 @@ const SearchInput: React.FC<SearchInputProps> = ({ callbackSearch, mapList }) =>
       //}
     }
   };
+
   return (
     <div className={styles.headerSearch}>
       <SearchOutlined style={{ fontSize: 16 }} />

+ 8 - 8
src/components/map/index.tsx

@@ -91,14 +91,14 @@ const Map: React.FC<MapProps> = ({ type, searchText, selFloorId, render, mapList
         return item.localName == (searchText && searchText.text);
       });
 
-      if (filterItem.length == 0) {
-        return;
-      } else {
-        left = -(filterItem[0].left || 0);
-        top = -(filterItem[0].top || 0);
-        setTranslateX(left);
-        setTranslateY(top);
-      }
+      //   if (filterItem.length == 0) {
+      //     return;
+      //   } else {
+      left = -((filterItem[0] || {}).left || 0);
+      top = -((filterItem[0] || {}).top || 0);
+      setTranslateX(left);
+      setTranslateY(top);
+      // }
     }
   }, [searchText, mapList]);
 

+ 1 - 3
src/components/topNavigator/index.tsx

@@ -1,4 +1,4 @@
-import React, { useState, useEffect, useCallback } from 'react';
+import React, { useState, useEffect, useCallback, useRef } from 'react';
 import styles from './index.less';
 import cx from 'classnames';
 import { Select } from 'antd';
@@ -177,8 +177,6 @@ const TopNavigator: React.FC<topNavigatorProps> = ({
     navigatorChange && navigatorChange(item);
   };
 
-  //console.log('top渲染');
-
   return (
     <div className={styles.topnavigator}>
       <div className={styles.floor}>

+ 50 - 49
src/pages/Equipment/checLampStatus.js

@@ -3,67 +3,68 @@ import { setallLampHttp, getStatusHttp } from '@/services/ant-design-pro/equipme
 
 // 定时调用 查询指令接口
 export const checkChangeLightStatusSuccess = (paramsArr, resultArr, fn) => {
-  let checkParams = paramsArr;
-  checkParams.forEach((item) => {
-    for (let i = 0; i < resultArr.length; i++) {
-      if ((item.id = resultArr[i].id)) {
-        item.orderSeqNum = resultArr[i].orderSeqNum;
-      }
-    }
-  });
-  getStatusHttp(checkParams).then((res) => {
-    judgeChangeResponeseSuccess(res, paramsArr, fn);
-  });
+    let checkParams = paramsArr;
+    checkParams.forEach((item) => {
+        for (let i = 0; i < resultArr.length; i++) {
+            if ((item.id = resultArr[i].id)) {
+                item.orderSeqNum = resultArr[i].orderSeqNum;
+            }
+        }
+    });
+    getStatusHttp(checkParams).then((res) => {
+        judgeChangeResponeseSuccess(res, paramsArr, fn);
+    });
 };
 
 //   检查开关指令下发状态
 export const judgeChangeResponeseSuccess = (response, paramsArr, fn) => {
-  let resFlag = false;
-  let resultArr = JSON.parse(JSON.stringify(response.content));
-  resultArr &&
-    resultArr.forEach((item) => {
-      if (
-        (item.state === 200 && item.exeResult === 'processing:rcvd') ||
-        (item.state === 202 && !item.exeResult)
+    let resFlag = false;
+    let resultArr = JSON.parse(JSON.stringify(response.content));
+    resultArr &&
+        resultArr.forEach((item) => {
+            if (
+                (item.state === 200 && item.exeResult === 'processing:rcvd') ||
+                (item.state === 202 && !item.exeResult)
+            ) {
+                resFlag = true;
+            } else {
+                resultArr.splice(item, 1);
+            }
+        });
+    if (resFlag) {
+        setTimeout(() => {
+            checkChangeLightStatusSuccess(paramsArr, resultArr, fn);
+        }, 500);
+    } else {
+        fn(); // 查询灯设备
+    }
+    /*
+    if (result.result === 'success') {
+      if (!resFlag && result.state === 200 && result.exeResult === 'success') {
+        console.log('成功了');
+        fn(); // 查询灯设备
+      } else if (
+        (resFlag && result.state === 200 && result.exeResult === 'processing:rcvd') ||
+        (resFlag && result.state === 202 && !result.exeResult)
       ) {
-        resFlag = true;
+        setTimeout(() => {
+          checkChangeLightStatusSuccess(paramsArr, resultArr, fn);
+        }, 500);
+      } else if (result.state === 200 && result.exeResult === 'fail:timeout') {
+        message.error('网络超时,请重试');
       } else {
-        resultArr.splice(item, 1);
+        message.error('操作失败,请重试');
       }
-    });
-  if (resFlag) {
-    setTimeout(() => {
-      checkChangeLightStatusSuccess(paramsArr, resultArr, fn);
-    }, 500);
-  } else {
-    fn(); // 查询灯设备
-  }
-  /*
-  if (result.result === 'success') {
-    if (!resFlag && result.state === 200 && result.exeResult === 'success') {
-      console.log('成功了');
-      fn(); // 查询灯设备
-    } else if (
-      (resFlag && result.state === 200 && result.exeResult === 'processing:rcvd') ||
-      (resFlag && result.state === 202 && !result.exeResult)
-    ) {
-      setTimeout(() => {
-        checkChangeLightStatusSuccess(paramsArr, resultArr, fn);
-      }, 500);
-    } else if (result.state === 200 && result.exeResult === 'fail:timeout') {
-      message.error('网络超时,请重试');
     } else {
       message.error('操作失败,请重试');
     }
-  } else {
-    message.error('操作失败,请重试');
-  }
-  */
+    */
 };
 
 //  开关
 export const setallLamps = (paramsArr, fn) => {
-  setallLampHttp(paramsArr).then((res) => {
-    judgeChangeResponeseSuccess(res, paramsArr, fn);
-  });
+    setallLampHttp(paramsArr).then((res) => {
+        judgeChangeResponeseSuccess(res, paramsArr, fn);
+    });
 };
+

+ 19 - 31
src/pages/Equipment/components/topNavRight/index.tsx

@@ -6,8 +6,9 @@ import { EllipsisOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
 import styles from './index.less';
 //import { equipImageMap } from '@/config/image.js';
 import type { navigatorItem } from '@/pages/Environment/index';
-import { changeAllAirHttp } from '@/services/ant-design-pro/equipment';
+
 import { useModel } from 'umi';
+import { changeCurtain, changeAllAir, changeLight } from '@/pages/Equipment/equipmentControl.js';
 
 export type topNavRightProps = {
   selNavObj: navigatorItem;
@@ -23,6 +24,7 @@ const TopNavRight: React.FC<topNavRightProps> = ({ selNavObj, navigatorList, map
   useEffect(() => {
     setDeviceList(navigatorList.slice(1));
   }, []);
+
   const allOpenClick = (key) => {
     //debugger;
     console.log('key', key);
@@ -33,13 +35,21 @@ const TopNavRight: React.FC<topNavRightProps> = ({ selNavObj, navigatorList, map
       okText: '确认',
       cancelText: '取消',
       onOk() {
+        console.log('mapListmapList', mapList);
+        //筛选 没有开启的空间
+        var filterSpaceArr = mapList.filter((item) => {
+          return item[selNavObj.id] !== 1;
+        });
+        return;
         //如果是空调
         if (selNavObj.id == 'airConditioner') {
-          changeAllAir('open');
+          changeAllAir(filterSpaceArr, () => {}, '打开');
         }
         if (selNavObj.id == 'light') {
+          changeLight('all', filterSpaceArr, () => {}, '打开');
         }
         if (selNavObj.id == 'curtain') {
+          changeCurtain('all', filterSpaceArr, () => {}, '打开'); // '关闭' : '打开';
         }
       },
       onCancel() {
@@ -58,13 +68,19 @@ const TopNavRight: React.FC<topNavRightProps> = ({ selNavObj, navigatorList, map
       okText: '确认',
       cancelText: '取消',
       onOk() {
+        var filterSpaceArr = mapList.filter((item) => {
+          return item[selNavObj.id] !== 0;
+        });
+        return;
         //如果是空调
         if (selNavObj.id == 'airConditioner') {
-          changeAllAir('close');
+          changeAllAir(filterSpaceArr, () => {}, '打开');
         }
         if (selNavObj.id == 'light') {
+          changeLight('all', filterSpaceArr, () => {}, '关闭');
         }
         if (selNavObj.id == 'curtain') {
+          changeCurtain('all', filterSpaceArr, () => {}, '关闭');
         }
       },
       onCancel() {
@@ -73,34 +89,6 @@ const TopNavRight: React.FC<topNavRightProps> = ({ selNavObj, navigatorList, map
     });
   };
 
-  const changeAllAir = (type: string) => {
-    let paramsArr: any[] = [];
-    debugger;
-    mapList.forEach((sitem) => {
-      const itemId = type === 'close' ? 10 : 12; // 10关闭 12开启
-      paramsArr.push({
-        projectId: projectId,
-        objectId: sitem.id, // 空间id
-        valueType: 1, // 固定为1 1
-        itemId: itemId,
-      });
-    });
-
-    changeAllAirHttp(paramsArr).then((res) => {
-      debugger;
-      if (res.result == 'success') {
-        message.success('指令下发成功');
-        // sitem.airConditioner = res.isClose ? 0 : 1; //改变某空间空调的状态
-        //mapCombineList[index]['airConditioner'] = res.isClose ? 0 : 1;
-        // var mapCopy = JSON.parse(JSON.stringify(mapCombineList));
-        // mapCopy[index]['airConditioner'] = res.isClose ? 0 : 1;
-        // setMapCombineList(mapCopy);
-      } else {
-        message.error('操作失败,请重试');
-      }
-    });
-  };
-
   return (
     <>
       {/* 全部设备 */}

+ 97 - 0
src/pages/Equipment/equipmentControl.js

@@ -0,0 +1,97 @@
+import { changeAllAirHttp, changeAirHttp, setEquipeHttp, setallLampHttp, getStatusHttp } from '@/services/ant-design-pro/equipment';
+import { Spin, Modal, message } from 'antd';
+import { setallLamps } from '@/pages/Equipment/checLampStatus.js';
+
+
+export const changeLight = (type, itemarr, callback, status) => {
+    const setType = status === '打开' ? true : false; // 10关闭 12开启
+    var paramsArr = [];
+    debugger;
+    itemarr.forEach((citem) => {
+        citem.equipList.forEach((item) => {
+            if (item.equipType == 'light') {
+                paramsArr.push({
+                    id: item.id,
+                    switch: setType,
+                });
+            }
+        });
+    })
+
+
+    setallLamps(paramsArr, callback);
+};
+
+//窗帘的调节      0是关闭 1 是开启  2 是部分开启
+export const changeCurtain = (type, itemarr, callback, status) => {
+    debugger;
+    const setType = status === '打开' ? 'EquipOnSet' : 'EquipOffSet';
+    var paramsArr = [];
+    itemarr.forEach((citem) => {
+        citem.equipList.forEach((item) => {
+            if (item.equipType == 'curtain') {
+                paramsArr.push({
+                    equipmentCategory: 'CFSSES',
+                    infoCode: setType,
+                    value: 1,
+                    objectId: item.id,
+                });
+            }
+        });
+    });
+
+    console.log(citem);
+    console.log(paramsArr);
+
+    //发送指令
+    setEquipeHttp(paramsArr);
+    //这是在手动改变状态
+    callback();
+
+};
+
+//空调的调节      0是关闭 1 是开启  2 是部分开启
+export const changeAir = (sitem, index, callback) => {
+    const itemId = sitem.airConditioner === 0 ? 12 : 10; // 10关闭 12开启
+    const paramsObj = {
+        objectId: sitem.id, // 空间id
+        valueType: 1, // 固定为1 1
+        itemId: itemId,
+    };
+    changeAirHttp(paramsObj).then((res) => {
+        if (res.result == 'success') {
+            message.success('指令下发成功');
+            // // sitem.airConditioner = res.isClose ? 0 : 1; //改变某空间空调的状态
+            // //mapCombineList[index]['airConditioner'] = res.isClose ? 0 : 1;
+            // var mapCopy = JSON.parse(JSON.stringify(mapCombineList));
+            // mapCopy[index]['airConditioner'] = res.isClose ? 0 : 1;
+            // setMapCombineList(mapCopy);
+            callback();
+        } else {
+            message.error('操作失败,请重试');
+        }
+    });
+};
+export const changeAllAir = (itemarr, callback, status) => {
+    let paramsArr = [];
+    debugger;
+    itemarr.forEach((sitem) => {
+        const itemId = status === '打开' ? 12 : 10; // 10关闭 12开启
+        paramsArr.push({
+            projectId: projectId,
+            objectId: sitem.id, // 空间id
+            valueType: 1, // 固定为1 1
+            itemId: itemId,
+        });
+    });
+
+    changeAllAirHttp(paramsArr).then((res) => {
+        debugger;
+        if (res.result == 'success') {
+            message.success('指令下发成功');
+            callback();
+        } else {
+            message.error('操作失败,请重试');
+        }
+    });
+};

+ 60 - 104
src/pages/Equipment/index.tsx

@@ -22,8 +22,8 @@ import {
   queryEquipStatistics,
   queryDeviceTimeManage,
 } from '@/services/ant-design-pro/environment';
-import { changeAirHttp, setEquipeHttp } from '@/services/ant-design-pro/equipment';
-import { setallLamps } from '@/pages/Equipment/checLampStatus.js';
+
+import { changeCurtain, changeAir, changeLight } from '@/pages/Equipment/equipmentControl.js';
 
 //设备状态
 type equipStatus = {
@@ -129,72 +129,13 @@ const Environment: React.FC = () => {
     }
   };
   const { confirm } = Modal;
-  //空调的调节      0是关闭 1 是开启  2 是部分开启
-  const changeAir = (sitem, index: number) => {
-    const itemId = sitem.airConditioner === 0 ? 12 : 10; // 10关闭 12开启
-    const paramsObj = {
-      objectId: sitem.id, // 空间id
-      valueType: 1, // 固定为1 1
-      itemId: itemId,
-    };
-    changeAirHttp(paramsObj).then((res) => {
-      if (res.result == 'success') {
-        message.success('指令下发成功');
-        // sitem.airConditioner = res.isClose ? 0 : 1; //改变某空间空调的状态
-        //mapCombineList[index]['airConditioner'] = res.isClose ? 0 : 1;
-        var mapCopy = JSON.parse(JSON.stringify(mapCombineList));
-        mapCopy[index]['airConditioner'] = res.isClose ? 0 : 1;
-        setMapCombineList(mapCopy);
-      } else {
-        message.error('操作失败,请重试');
-      }
-    });
-  };
-  //窗帘的调节      0是关闭 1 是开启  2 是部分开启
-  const changeCurtain = (citem: any, index: number) => {
-    debugger;
-    const setType = citem.curtain === 1 ? 'EquipOffSet' : 'EquipOnSet'; // 10关闭 12开启
-    var paramsArr: any = [];
-    citem.equipList.forEach((item: any) => {
-      if (item.equipType == 'curtain') {
-        paramsArr.push({
-          equipmentCategory: 'CFSSES',
-          infoCode: setType,
-          value: 1,
-          objectId: item.id,
-        });
-      }
-    });
-    console.log(citem);
-    console.log(paramsArr);
 
-    //发送指令
-    setEquipeHttp(paramsArr);
-    //这是在手动改变状态
-    var mapCopy = JSON.parse(JSON.stringify(mapCombineList));
-    mapCopy[index]['curtain'] = citem.curtain === 1 ? 0 : 1;
-    setMapCombineList(mapCopy);
-  };
-  const changeSwitch = (citem: any, index: number) => {
-    const setType = citem.light === 1 ? false : true; // 10关闭 12开启
-    var paramsArr: any = [];
-    citem.equipList.forEach((item: any) => {
-      if (item.equipType == 'curtain') {
-        paramsArr.push({
-          id: item.id,
-          switch: setType,
-        });
-      }
-    });
-    function getLamp() {}
-    setallLamps(paramsArr, getLamp);
-  };
   //单个空间的点击事情
   const spaceControl = (item, index: number) => {
     //全部设备 或者没有房间类型 则不可以点击
     if (selNav.id == 'all' || !item.roomFuncType) return;
     //没有设备时
-    if (item[selNav.id] == 'not') return;
+    //if (item[selNav.id] == 'not') return;
     debugger;
     if (item[selNav.id] === 2) {
       confirm({
@@ -221,14 +162,29 @@ const Environment: React.FC = () => {
       okText: '确认',
       cancelText: '取消',
       onOk() {
+        function getLamp() {
+          var interval = setInterval(() => {
+            queryDeviceManage();
+          }, 1000);
+          setTimeout(() => {
+            console.log('setTimeout');
+            clearInterval(interval);
+          }, 60000);
+        }
         //如果是空调
         if (selNav.id == 'airConditioner') {
-          changeAir(item, index);
+          changeAir(item, index, getLamp);
         }
         if (selNav.id == 'light') {
+          changeLight('one', [item], getLamp, status);
         }
         if (selNav.id == 'curtain') {
-          changeCurtain(item, index);
+          //   function getLamp() {
+          //     var mapCopy = JSON.parse(JSON.stringify(mapCombineList));
+          //     mapCopy[index]['curtain'] = item.curtain === 1 ? 0 : 1;
+          //     setMapCombineList(mapCopy);
+          //   }
+          changeCurtain('one', [item], () => {}, status);
         }
         debugger;
       },
@@ -263,52 +219,52 @@ const Environment: React.FC = () => {
       setMapList([]);
     }
   }, [selFloorId]);
-  //获取设备状态 设备种类
-  useEffect(() => {
-    if (selFloorId) {
-      //setLoading(true);
-      queryEquipStatistics({
-        //floorId: 'Fl11010802593241ec348ecb4148806b9034c8957454',
-        floorId: selFloorId,
-        projectId: projectId,
-      })
-        .then((res) => {
-          debugger;
-          // setLoading(false);
-          var statistics = res.data.statistics || [];
-          //赋值 运行中的设备数量
-          navigatorList.forEach(function (nItem) {
-            var fres = statistics.filter((sItem: statistics) => {
-              return sItem.equipType == nItem.id;
-            });
-            nItem.num = (fres[0] || {}).runCount;
+
+  const queryDeviceManage = () => {
+    //setLoading(true);
+    queryEquipStatistics({
+      //floorId: 'Fl11010802593241ec348ecb4148806b9034c8957454',
+      floorId: selFloorId,
+      projectId: projectId,
+    })
+      .then((res) => {
+        debugger;
+        // setLoading(false);
+        var statistics = res.data.statistics || [];
+        //赋值 运行中的设备数量
+        navigatorList.forEach(function (nItem) {
+          var fres = statistics.filter((sItem: statistics) => {
+            return sItem.equipType == nItem.id;
           });
+          nItem.num = (fres[0] || {}).runCount;
+        });
 
-          setNavigatorList(navigatorList);
+        setNavigatorList(navigatorList);
 
-          //设备空间信息
-          var spaceList = res.data.spaceList || [];
-          spaceList.forEach((item: any) => {
-            // (item.equipStatusList || []).forEach((eItem: equipStatus) => {
-            //   //debugger;
-            //   item[eItem.equipType] = eItem.status;
-            // });
-            //debugger;
-            var allType = ['airConditioner', 'light', 'curtain'];
-            allType.forEach((etype) => {
-              var filterRes = (item.equipStatusList || []).filter((eItem: equipStatus) => {
-                return eItem.equipType == etype;
-              });
-              //不存时 赋值not
-              filterRes.length > 0 ? (item[etype] = filterRes[0].status) : (item[etype] = 'not');
+        //设备空间信息
+        var spaceList = res.data.spaceList || [];
+        spaceList.forEach((item: any) => {
+          var allType = ['airConditioner', 'light', 'curtain'];
+          allType.forEach((etype) => {
+            var filterRes = (item.equipStatusList || []).filter((eItem: equipStatus) => {
+              return eItem.equipType == etype;
             });
+            //不存时 赋值not
+            filterRes.length > 0 ? (item[etype] = filterRes[0].status) : (item[etype] = 'not');
           });
-          //console.log('spaceList', spaceList);
-          setEquipMapList(spaceList);
-        })
-        .catch(() => {
-          // setLoading(false);
         });
+        //console.log('spaceList', spaceList);
+        setEquipMapList(spaceList);
+      })
+      .catch(() => {
+        // setLoading(false);
+      });
+  };
+
+  //获取设备状态 设备种类
+  useEffect(() => {
+    if (selFloorId) {
+      queryDeviceManage();
     }
   }, [selFloorId]);
 

+ 12 - 9
src/services/ant-design-pro/environment.ts

@@ -74,16 +74,19 @@ export async function queryEnvironmentParam(body: any, otherParam: { [key: strin
 
 export async function queryEquipStatistics(params: any, options?: { [key: string]: any }) {
   //
-  return request<API.EnvironmentParam>(`/api2/object/equipment/queryEquipStatistics`, {
-    method: 'GET',
-    headers: {
-      'Content-Type': 'application/json',
-    },
-    ...(options || {}),
-    params: {
-      ...params,
+  return request<API.EnvironmentParam>(
+    `/duoduo-service/object-service/object/equipment/queryEquipStatistics`,
+    {
+      method: 'GET',
+      headers: {
+        'Content-Type': 'application/json',
+      },
+      ...(options || {}),
+      params: {
+        ...params,
+      },
     },
-  });
+  );
 }
 
 export async function querySpace(body: any, options?: { [key: string]: any }) {

+ 12 - 14
src/services/ant-design-pro/equipment.js

@@ -12,17 +12,18 @@ function getProjectId() {
 }
 
 //窗帘  设置设备
+//窗帘  设置设备
 export const setEquipeHttp = (params)=> {
-  return request(`/server/object/eqp/infocode/set?${commonParams()}`,{
-    method: 'POST',
-    isNotShowErrorToast: true,
-    errorSave: true,
-    data: JSON.stringify(params),
-    headers: {
-        'Content-Type': 'application/json',
-    },
-  });
-}
+    return request(`/server/object/eqp/infocode/set?${commonParams()}`,{
+      method: 'POST',
+      isNotShowErrorToast: true,
+      errorSave: true,
+      data: JSON.stringify(params),
+      headers: {
+          'Content-Type': 'application/json',
+      },
+    });
+  }
 
 //窗帘 获取设备
 export const getObjectDataEqpGroupHttp = (params) => {
@@ -31,9 +32,6 @@ export const getObjectDataEqpGroupHttp = (params) => {
     isNotShowErrorToast: true,
     errorSave: true,
     data: JSON.stringify(params),
-    headers: {
-        'Content-Type': 'application/json',
-    },
   });
 }
 
@@ -117,7 +115,7 @@ export const getSpaceAdjustList = (params) => {
         },
     });
 }
-//  空调 调节
+//  批量空调 调节
 export const changeAllAirHttp = (body) => {
     return request(`/server/custom/feedbackCreate/v2Batch?${commonParams()}`, {
         method: 'POST',