Browse Source

设备管理的修改

zhaojijng 3 years ago
parent
commit
0073c35813

+ 123 - 0
src/assets/icons/iconfont.css

@@ -0,0 +1,123 @@
+@font-face {
+  font-family: 'iconfont'; /* Project id 3184967 */
+  src: url('iconfont.woff2?t=1648018199055') format('woff2'),
+    url('iconfont.woff?t=1648018199055') format('woff'),
+    url('iconfont.ttf?t=1648018199055') format('truetype');
+}
+
+.iconfont {
+  color: #140050;
+  font-size: 16px;
+  font-family: 'iconfont' !important;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-managedevice:before {
+  content: '\e620';
+}
+
+.icon-managelift:before {
+  content: '\e61f';
+}
+
+.icon-managedining:before {
+  content: '\e61e';
+}
+
+.icon-managewashroom:before {
+  content: '\e61c';
+}
+
+.icon-managereduce:before {
+  content: '\e61b';
+}
+
+.icon-managezoom:before {
+  content: '\e61a';
+}
+
+.icon-manageenvironment:before {
+  content: '\e619';
+}
+
+.icon-manageequipment:before {
+  content: '\e618';
+}
+
+.icon-manageruntime:before {
+  content: '\e617';
+}
+
+.icon-managenotify:before {
+  content: '\e615';
+}
+
+.icon-managework:before {
+  content: '\e614';
+}
+
+.icon-managehover:before {
+  content: '\e613';
+}
+
+.icon-managelight:before {
+  content: '\e611';
+}
+
+.icon-managecurtain:before {
+  content: '\e610';
+}
+
+.icon-manageairConditioner:before {
+  content: '\e60f';
+}
+
+.icon-managewalk:before {
+  content: '\e60e';
+}
+
+.icon-managestair:before {
+  content: '\e60d';
+}
+
+.icon-managerest:before {
+  content: '\e60c';
+}
+
+.icon-manageoffice:before {
+  content: '\e60b';
+}
+
+.icon-managemeeting:before {
+  content: '\e60a';
+}
+
+.icon-manageletter:before {
+  content: '\e609';
+}
+
+.icon-managedocument:before {
+  content: '\e608';
+}
+
+.icon-managewarning:before {
+  content: '\ea51';
+}
+
+.icon-managecloseall:before {
+  content: '\e607';
+}
+
+.icon-managesearch:before {
+  content: '\e606';
+}
+
+.icon-manageclose:before {
+  content: '\e605';
+}
+
+.icon-managebackward:before {
+  content: '\e604';
+}

+ 198 - 0
src/assets/icons/iconfont.json

@@ -0,0 +1,198 @@
+{
+  "id": "3184967",
+  "name": "managecontrol",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-manage",
+  "description": "行政管理所用图片",
+  "glyphs": [
+    {
+      "icon_id": "28254404",
+      "name": "类型=repair, 线条=400device",
+      "font_class": "device",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "28254396",
+      "name": "类型=lift, 线条=400elevator",
+      "font_class": "lift",
+      "unicode": "e61f",
+      "unicode_decimal": 58911
+    },
+    {
+      "icon_id": "28254360",
+      "name": "类型=cutlery, 线条=400dining",
+      "font_class": "dining",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "28253957",
+      "name": "类型=restroom, 线条=400washroom",
+      "font_class": "washroom",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "28037752",
+      "name": "TUI-iconfontreduce",
+      "font_class": "reduce",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "28037745",
+      "name": "TUI-iconfontzoom",
+      "font_class": "zoom",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "27977233",
+      "name": "TUI-iconfontenviroment",
+      "font_class": "environment",
+      "unicode": "e619",
+      "unicode_decimal": 58905
+    },
+    {
+      "icon_id": "27977222",
+      "name": "TUI-iconfontdevice",
+      "font_class": "equipment",
+      "unicode": "e618",
+      "unicode_decimal": 58904
+    },
+    {
+      "icon_id": "27977163",
+      "name": "TUI-iconfonttime",
+      "font_class": "runtime",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "27960522",
+      "name": "TUI-iconfontnotify",
+      "font_class": "notify",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "27790782",
+      "name": "work",
+      "font_class": "work",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "27710574",
+      "name": "TUI-iconfonthover",
+      "font_class": "hover",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    },
+    {
+      "icon_id": "27693456",
+      "name": "light",
+      "font_class": "light",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "27693440",
+      "name": "curtain",
+      "font_class": "curtain",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "27693407",
+      "name": "air",
+      "font_class": "airConditioner",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "27693388",
+      "name": "walk",
+      "font_class": "walk",
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "27693355",
+      "name": "stair",
+      "font_class": "stair",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
+    },
+    {
+      "icon_id": "27693304",
+      "name": "Iconrest",
+      "font_class": "rest",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "27693282",
+      "name": "office",
+      "font_class": "office",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "27693270",
+      "name": "Iconmeeting",
+      "font_class": "meeting",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
+    },
+    {
+      "icon_id": "27693217",
+      "name": "letter",
+      "font_class": "letter",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "27645303",
+      "name": "document",
+      "font_class": "document",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "27093212",
+      "name": "类型=warning, 线条=400",
+      "font_class": "warning",
+      "unicode": "ea51",
+      "unicode_decimal": 59985
+    },
+    {
+      "icon_id": "27639602",
+      "name": "closeall",
+      "font_class": "closeall",
+      "unicode": "e607",
+      "unicode_decimal": 58887
+    },
+    {
+      "icon_id": "27635623",
+      "name": "search",
+      "font_class": "search",
+      "unicode": "e606",
+      "unicode_decimal": 58886
+    },
+    {
+      "icon_id": "27635605",
+      "name": "close",
+      "font_class": "close",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "27635439",
+      "name": "backward",
+      "font_class": "backward",
+      "unicode": "e604",
+      "unicode_decimal": 58884
+    }
+  ]
+}

BIN
src/assets/icons/iconfont.ttf


BIN
src/assets/icons/iconfont.woff


BIN
src/assets/icons/iconfont.woff2


+ 10 - 10
src/config/image.js

@@ -1,8 +1,8 @@
 export const equipImageMap = {
-  temperMapTop: require('@/assets/images/page-enviroment/temperMapTop.png'),
-  co2MapTop: require('@/assets/images/page-enviroment/co2MapTop.png'),
-  maptemp1: require('@/assets/images/page-enviroment/maptemp1.png'),
-  maptemp2: require('@/assets/images/page-enviroment/maptemp2.png'),
+//   temperMapTop: require('@/assets/images/page-enviroment/temperMapTop.png'),
+//   co2MapTop: require('@/assets/images/page-enviroment/co2MapTop.png'),
+//   maptemp1: require('@/assets/images/page-enviroment/maptemp1.png'),
+//   maptemp2: require('@/assets/images/page-enviroment/maptemp2.png'),
   envir_temperature: require('@/assets/images/page-enviroment/temperature.svg'),
   envir_wet: require('@/assets/images/page-enviroment/wet.svg'),
   envir_co2: require('@/assets/images/page-enviroment/co2.svg'),
@@ -11,11 +11,11 @@ export const equipImageMap = {
   envir_tvoc: require('@/assets/images/page-enviroment/tvoc.svg'),
 
   officeImg: require('@/assets/images/page-enviroment/office.svg'),
-  airMapTop: require('@/assets/images/page-enviroment/airMapTop.svg'),
-  lampMapTop: require('@/assets/images/page-enviroment/lampMapTop.svg'),
-  maptemp3: require('@/assets/images/page-enviroment/maptemp3.png'),
-  maptemp4: require('@/assets/images/page-enviroment/maptemp4.png'),
-  maptemp5: require('@/assets/images/page-enviroment/maptemp5.png'),
+//   airMapTop: require('@/assets/images/page-enviroment/airMapTop.svg'),
+//   lampMapTop: require('@/assets/images/page-enviroment/lampMapTop.svg'),
+//   maptemp3: require('@/assets/images/page-enviroment/maptemp3.png'),
+//   maptemp4: require('@/assets/images/page-enviroment/maptemp4.png'),
+//   maptemp5: require('@/assets/images/page-enviroment/maptemp5.png'),
 
   envir_all: require('@/assets/images/page-enviroment/all.svg'),
   equip_air: require('@/assets/images/page-enviroment/air.svg'),
@@ -24,7 +24,7 @@ export const equipImageMap = {
   envir_curtain: require('@/assets/images/page-enviroment/curtain.svg'),
   envir_humidification: require('@/assets/images/page-enviroment/humidification.svg'),
 
-  maptemp6: require('@/assets/images/page-enviroment/maptemp6.png'),
+//   maptemp6: require('@/assets/images/page-enviroment/maptemp6.png'),
 
 // 环境指数说明
 ruleCo2: require('@/assets/images/page-enviroment/rule-co2.png'),

+ 2 - 0
src/global.less

@@ -3,6 +3,8 @@
 @import './assets/css/antd-tenants.less';
 @import './assets/css/antd-reset.less';
 
+@import './assets/icons/iconfont.css';
+
 html,
 body,
 #root {

+ 2 - 1
src/layouts/index.jsx

@@ -64,9 +64,10 @@ export default (props) => {
         <div className={styles.right}>
           <div className={styles.picture}></div>
           <div
+            className={styles.notify}
             onClick={(event) => {
               event.stopPropagation();
-              // openNotification(); //todo
+              openNotification();
             }}
           >
             <Icon className={styles.notify} type="notify" style={{ fontSize: 21 }}></Icon>

+ 13 - 1
src/pages/Environment/index.tsx

@@ -33,6 +33,7 @@ const Environment: React.FC = () => {
   const [showChart, setShowChart] = useState(false);
   const [selFloorId, setSelFloorId] = useState<string>();
   const [selBuildId, setSelBuildId] = useState<string>();
+  const [showSpace, setShowSpace] = useState<API.MapInfo>({}); //当前弹框选中的空间
   const [navigatorList] = useState<navigatorItem[]>([
     {
       name: '温度',
@@ -41,7 +42,7 @@ const Environment: React.FC = () => {
       unit: '℃',
       color: '#E5574F',
       colorStr: '229,87,79,',
-      opacity: 0.2,
+      opacity: 0.2, //透明度基数
       indicator: [18, 21, 24, 27, 30],
       fixed: 1,
     },
@@ -195,6 +196,12 @@ const Environment: React.FC = () => {
     });
     setMapCombineList(combineList);
   }, [envirMapList, mapList]);
+
+  const showChartModal = (item) => {
+    setShowChart(true);
+    setShowSpace(item);
+    debugger;
+  };
   return (
     <>
       <PageHeader
@@ -267,6 +274,9 @@ const Environment: React.FC = () => {
                       ')'
                     : 'repeating-linear-gradient(45deg, rgb(226 226 226), #ffffff 8px)',
                 }}
+                onClick={() => {
+                  showChartModal(item);
+                }}
               >
                 <div className={mapstyles.content}>
                   <Icon
@@ -308,6 +318,8 @@ const Environment: React.FC = () => {
 
       {showChart && (
         <ChartModal
+          showSpace={showSpace}
+          selNav={selNav}
           onClose={() => {
             setShowChart(false);
           }}

+ 0 - 1
src/pages/Equipment/components/topNavRight/index.tsx

@@ -13,7 +13,6 @@ export type topNavRightProps = {
 };
 
 const TopNavRight: React.FC<topNavRightProps> = ({ selNavObj, navigatorList }) => {
-  // const { equip_air, equip_lamp, equip_water } = equipImageMap;
   const [modalvisible, setModalvisible] = useState<boolean>(false);
   //去掉全部设备的 设备列表
   const [deviceList, setDeviceList] = useState<navigatorItem[]>([]);

+ 37 - 6
src/pages/Equipment/index.tsx

@@ -11,11 +11,16 @@ import DeviceModal from './components/deviceModal';
 import styles from './index.less';
 import mapstyles from '@/assets/css/map.less';
 import { Spin } from 'antd';
+import moment from 'moment';
 
 import { equipImageMap } from '@/config/image.js';
 import Icon from '@/tenants-ui/Icon';
 import type { navigatorItem } from '@/pages/Environment/index';
-import { getMapList, queryEquipStatistics } from '@/services/ant-design-pro/environment';
+import {
+  getMapList,
+  queryEquipStatistics,
+  queryDeviceTimeManage,
+} from '@/services/ant-design-pro/environment';
 
 //设备状态
 type equipStatus = {
@@ -33,7 +38,7 @@ const Environment: React.FC = () => {
 
   const [searchText, setSearchText] = useState<{ text: any }>();
   const [showModal, setShowModal] = useState<boolean>(false);
-  const [showSpace, setShowSpace] = useState<API.MapInfo>({});
+  const [showSpace, setShowSpace] = useState<API.MapInfo>({}); //当前弹框选中的空间
   const [navigatorList, setNavigatorList] = useState<navigatorItem[]>([
     {
       name: '全部设备',
@@ -70,6 +75,7 @@ const Environment: React.FC = () => {
   ]);
   const [mapList, setMapList] = useState<API.MapInfo[]>([]);
   const [equipMapList, setEquipMapList] = useState<any[]>([]);
+  const [timeMapList, setTimeMapList] = useState<any[]>([]);
   const [selNav, setSelNav] = useState<navigatorItem>(navigatorList[0]);
   const [selFloorId, setSelFloorId] = useState<string>();
   const [mapCombineList, setMapCombineList] = useState<any[]>([]);
@@ -126,6 +132,7 @@ const Environment: React.FC = () => {
       });
     }
   }, [selFloorId]);
+  //获取设备状态 设备种类
   useEffect(() => {
     if (selFloorId) {
       setLoading(true);
@@ -161,20 +168,44 @@ const Environment: React.FC = () => {
         });
     }
   }, [selFloorId]);
+
+  //获取时间列表 spaceTimeList
+  useEffect(() => {
+    if (selFloorId) {
+      setLoading(true);
+      queryDeviceTimeManage({
+        //floorId: selFloorId,
+        floorId: 'Fl11010802593241ec348ecb4148806b9034c8957454',
+        date: moment().format('YYYYMMDD'),
+      })
+        .then(function (res) {
+          setLoading(false);
+          var resList = res.content || [];
+          setTimeMapList(resList);
+        })
+        .catch(() => {
+          setLoading(false);
+        });
+    }
+  }, [selFloorId]);
+
   //合并空间环境数据 和 空间数据
   useEffect(() => {
     var combineList: any = [];
     mapList.map(function (mitem) {
       var spaceId = mitem.spaceId;
-      var filterSpace = equipMapList.filter((ele) => {
+      var filterSpace1 = equipMapList.filter((ele) => {
+        return ele.id == spaceId;
+      });
+      var filterSpace2 = timeMapList.filter((ele) => {
         return ele.id == spaceId;
       });
+      var combine = Object.assign({}, mitem, filterSpace1[0], filterSpace2[0]);
 
-      var combine = Object.assign({}, mitem, filterSpace[0]);
       combineList.push(combine);
     });
     setMapCombineList(combineList);
-  }, [equipMapList, mapList]);
+  }, [equipMapList, mapList, timeMapList]);
   return (
     <>
       <PageHeader
@@ -260,7 +291,7 @@ const Environment: React.FC = () => {
                           <Icon
                             className=""
                             type={ditem.equipType}
-                            style={{ color: '#ffffff' }}
+                            style={{ color: '#ffffff', fontWeight: 'bold' }}
                           ></Icon>
                         </div>
                       );

+ 1 - 1
src/pages/Runtime/components/topNavRight/index.tsx

@@ -29,7 +29,7 @@ const TopNavRight: React.FC<TopNavRightProps> = ({ runtimeNav, changeTime }) =>
           <div className={styles.item}>
             <div className={cx(styles.overtimeBook, styles.circle)}></div>
             <div className={styles.title}>会议预约</div>
-            <div className={styles.num}>{runtimeNav.overtimeBook}</div>
+            <div className={styles.num}>{runtimeNav.meetingBook}</div>
           </div>
         </div>
         <div className={styles.date}>

+ 7 - 7
src/pages/Runtime/index.tsx

@@ -18,7 +18,7 @@ import { getMapList, queryDeviceTimeManage } from '@/services/ant-design-pro/env
 type runtimeNavType = {
   normalRun: any;
   overtimeWork: number;
-  overtimeBook: number;
+  meetingBook: number;
 };
 
 const Runtime: React.FC = () => {
@@ -77,18 +77,18 @@ const Runtime: React.FC = () => {
           setRuntimeNav({
             normalRun: resdata.workTimeNum,
             overtimeWork: resdata.overTimeNum,
-            overtimeBook: resdata.meetTimeNum,
+            meetingBook: resdata.meetTimeNum,
           });
           var resList = res.content || [];
           resList.forEach((ritem) => {
-            ritem.runTimeStatus = 'normalRun';
+            ritem.runTimeStatus = 'normalRun'; //正常工作
             var timeList = [];
             if (ritem.hasOwnProperty('workTimeStartTime')) {
               var timeStrArr = [ritem.workTimeStartTime, ritem.workTimeEndTime];
               timeList.push(timeStrArr);
             }
             if (ritem.hasOwnProperty('meetTime')) {
-              ritem.runTimeStatus = 'overtimeBook';
+              ritem.runTimeStatus = 'meetingBook'; //会议预约
               ritem.meetTime.forEach((meetitem) => {
                 var timeStrArr = [meetitem.meetTimeStartTime, meetitem.meetTimeEndTime];
                 timeList.push(timeStrArr);
@@ -97,7 +97,7 @@ const Runtime: React.FC = () => {
             if (ritem.hasOwnProperty('overTimeStartTime')) {
               var timeStrArr = [ritem.overTimeStartTime, ritem.overTimeEndTime];
               timeList.push(timeStrArr);
-              ritem.runTimeStatus = 'overtimeWork';
+              ritem.runTimeStatus = 'overtimeWork'; //加班
             }
             ritem.showTimeList = timeList;
             ritem.showTimeStr =
@@ -190,7 +190,7 @@ const Runtime: React.FC = () => {
                   width: item.width,
                   height: item.height,
                   background: item.roomFuncType
-                    ? item.runTimeStatus == 'overtimeBook'
+                    ? item.runTimeStatus == 'meetingBook'
                       ? 'rgba(0, 220, 35, 0.2)'
                       : item.runTimeStatus == 'overtimeWork'
                       ? 'rgba(94, 139, 207, 0.2)'
@@ -217,7 +217,7 @@ const Runtime: React.FC = () => {
                       <span
                         className={cx({
                           [mapstyles.overworkTime]: item.runTimeStatus == 'overtimeWork',
-                          [mapstyles.meetTime]: item.runTimeStatus == 'overtimeBook',
+                          [mapstyles.meetTime]: item.runTimeStatus == 'meetingBook',
                         })}
                       >
                         {item.showTimeStr}

+ 8 - 5
src/tenants-ui/Icon/index.jsx

@@ -1,9 +1,12 @@
 import { createFromIconfontCN } from '@ant-design/icons';
+import cx from 'classnames';
+// const Icon = createFromIconfontCN({
+//   scriptUrl: '//at.alicdn.com/t/font_3184967_zvedollr9ti.js',
+// });
 
-const Icon = createFromIconfontCN({
-  scriptUrl: '//at.alicdn.com/t/font_3184967_zvedollr9ti.js',
-});
-
+// export default ({ type, className, style = {} }) => {
+//   return <Icon style={style} className={className} type={`icon-manage${type}`} />;
+// };
 export default ({ type, className, style = {} }) => {
-  return <Icon style={style} className={className} type={`icon-manage${type}`} />;
+  return <span className={cx('icon', 'iconfont', 'icon-manage' + type)} style={style}></span>;
 };