add graphBase & update 能耗分析
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								src/assets/long-middle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/long-middle.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 63 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/long-short.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/long-short.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 44 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/middle-middle-2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/middle-middle-2.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 57 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/middle-middle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/middle-middle.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 68 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/middle-short.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/middle-short.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 44 KiB  | 
@@ -1,47 +1,15 @@
 | 
				
			|||||||
import { useEffect, useRef } from 'react';
 | 
					import { useEffect, useRef } from 'react';
 | 
				
			||||||
 | 
					import useIcon from '../hooks/useIcon';
 | 
				
			||||||
import cls from './container.module.less';
 | 
					import cls from './container.module.less';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import IconStack from '../assets/Icon/icon-stack.png';
 | 
					 | 
				
			||||||
import IconGood from '../assets/Icon/icon-good.png';
 | 
					 | 
				
			||||||
import IconCharger from '../assets/Icon/icon-charge.png';
 | 
					 | 
				
			||||||
import IconSmoke from '../assets/Icon/icon-taiji.png';
 | 
					 | 
				
			||||||
import IconChart from '../assets/Icon/icon-chart.png';
 | 
					 | 
				
			||||||
import IconPuzzle from '../assets/Icon/icon-puzzle.png';
 | 
					 | 
				
			||||||
import IconPause from '../assets/Icon/icon-pause.png';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Container = (props) => {
 | 
					const Container = (props) => {
 | 
				
			||||||
	let icon = useRef(null);
 | 
						let icon = useIcon(props.icon);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	switch (props.icon) {
 | 
					 | 
				
			||||||
		case 'kiln':
 | 
					 | 
				
			||||||
			icon.current = IconStack;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case 'good': // 良品率
 | 
					 | 
				
			||||||
			icon.current = IconGood;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case 'charger':
 | 
					 | 
				
			||||||
			icon.current = IconCharger;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case 'smoke':
 | 
					 | 
				
			||||||
			icon.current = IconSmoke;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case 'chart':
 | 
					 | 
				
			||||||
			icon.current = IconChart;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case 'puzzle':
 | 
					 | 
				
			||||||
			icon.current = IconPuzzle;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case 'pause':
 | 
					 | 
				
			||||||
			icon.current = IconPause;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (
 | 
						return (
 | 
				
			||||||
		<div className={`${cls.container} ${props.className}`} style={props.style}>
 | 
							<div className={`${cls.container} ${props.className}`} style={props.style}>
 | 
				
			||||||
			<div className={cls.container__head}>
 | 
								<div className={cls.container__head}>
 | 
				
			||||||
				<img
 | 
									<img
 | 
				
			||||||
					src={icon.current}
 | 
										src={icon}
 | 
				
			||||||
					alt="#"
 | 
										alt="#"
 | 
				
			||||||
					className={props.icon == 'kiln' ? cls.bigger : ''}
 | 
										className={props.icon == 'kiln' ? cls.bigger : ''}
 | 
				
			||||||
				/>
 | 
									/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1,53 @@
 | 
				
			|||||||
// TODO: 通用组件 - 按钮 菜单控制层
 | 
					// TODO: 通用组件 - 按钮 菜单控制层
 | 
				
			||||||
 | 
					import useIcon from '../../../../hooks/useIcon';
 | 
				
			||||||
 | 
					import cls from './index.module.css';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function choseBg(size) {
 | 
				
			||||||
 | 
						const [width, height] = size;
 | 
				
			||||||
 | 
						return width === 'long' && height === 'middle'
 | 
				
			||||||
 | 
							? 'long-middle'
 | 
				
			||||||
 | 
							: width === 'long' && height === 'short'
 | 
				
			||||||
 | 
							? 'long-short'
 | 
				
			||||||
 | 
							: width === 'short' && height === 'middle'
 | 
				
			||||||
 | 
							? 'short-middle'
 | 
				
			||||||
 | 
							: width === 'short' && height === 'short'
 | 
				
			||||||
 | 
							? 'short-short'
 | 
				
			||||||
 | 
							: width === 'short' && height === 'long'
 | 
				
			||||||
 | 
							? 'short-long'
 | 
				
			||||||
 | 
							: width === 'middle' && height === 'middle'
 | 
				
			||||||
 | 
							? 'middle-middle'
 | 
				
			||||||
 | 
							: width === 'middle' && height === 'short'
 | 
				
			||||||
 | 
							? 'middle-short'
 | 
				
			||||||
 | 
							: width === 'middle' && height === 'long'
 | 
				
			||||||
 | 
							? 'middle-long'
 | 
				
			||||||
 | 
							: 'middle-middle';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function GraphBase(props) {
 | 
				
			||||||
 | 
						const size = props.size || ['middle', 'middle'];
 | 
				
			||||||
 | 
						const bgClass = choseBg(size);
 | 
				
			||||||
 | 
						const { icon, title, desc, switcher, onSwitch, dateOptions, onDateChange } =
 | 
				
			||||||
 | 
							props;
 | 
				
			||||||
 | 
						const iconSrc = useIcon(icon);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return (
 | 
				
			||||||
 | 
							<div
 | 
				
			||||||
 | 
								className={
 | 
				
			||||||
 | 
									'graph-base ' +
 | 
				
			||||||
 | 
									cls[bgClass] +
 | 
				
			||||||
 | 
									' ' +
 | 
				
			||||||
 | 
									cls.graphBase +
 | 
				
			||||||
 | 
									' ' +
 | 
				
			||||||
 | 
									props.className
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							>
 | 
				
			||||||
 | 
								<div className={cls.graphBaseTitle}>
 | 
				
			||||||
 | 
									<img src={iconSrc} alt="#" />
 | 
				
			||||||
 | 
									<h2>{title}</h2>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div className={cls.graphBaseContent}>{props.children}</div>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default GraphBase;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					/* .long-long {
 | 
				
			||||||
 | 
					    background: url('../../../../assets/long-long.png') no-repeat;
 | 
				
			||||||
 | 
					    background-size: 100% 100%;
 | 
				
			||||||
 | 
					    background-position: 0 0;
 | 
				
			||||||
 | 
					} */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.long-middle {
 | 
				
			||||||
 | 
						background: url('../../../../assets/long-middle.png') no-repeat;
 | 
				
			||||||
 | 
						background-size: 100% 100%;
 | 
				
			||||||
 | 
						background-position: 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.long-short {
 | 
				
			||||||
 | 
						background: url('../../../../assets/long-short.png') no-repeat;
 | 
				
			||||||
 | 
						background-size: 100% 100%;
 | 
				
			||||||
 | 
						background-position: 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.middle-long {
 | 
				
			||||||
 | 
						background: url('../../../../assets/middle-middle.png') no-repeat;
 | 
				
			||||||
 | 
						background-size: 100% 100%;
 | 
				
			||||||
 | 
						background-position: 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.middle-middle {
 | 
				
			||||||
 | 
						background: url('../../../../assets/middle-middle-2.png') no-repeat;
 | 
				
			||||||
 | 
						background-size: 100% 100%;
 | 
				
			||||||
 | 
						background-position: 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.middle-short {
 | 
				
			||||||
 | 
						background: url('../../../../assets/middle-short.png') no-repeat;
 | 
				
			||||||
 | 
						background-size: 100% 100%;
 | 
				
			||||||
 | 
						background-position: 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * more...
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.graphBase {
 | 
				
			||||||
 | 
						width: 100%;
 | 
				
			||||||
 | 
						height: 100%;
 | 
				
			||||||
 | 
						display: flex;
 | 
				
			||||||
 | 
						flex-direction: column;
 | 
				
			||||||
 | 
						/* justify-content: flex-end;
 | 
				
			||||||
 | 
					    align-items: center; */
 | 
				
			||||||
 | 
						position: relative;
 | 
				
			||||||
 | 
						padding: 24px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.graphBaseTitle {
 | 
				
			||||||
 | 
						display: flex;
 | 
				
			||||||
 | 
						align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.graphBaseTitle > img {
 | 
				
			||||||
 | 
						width: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.graphBaseTitle > h2 {
 | 
				
			||||||
 | 
						font-family: '微软雅黑', 'Microsoft YaHei UI', -apple-system,
 | 
				
			||||||
 | 
							BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei',
 | 
				
			||||||
 | 
							'Source Han Sans SC', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', sans-serif;
 | 
				
			||||||
 | 
						margin: 0;
 | 
				
			||||||
 | 
						margin-left: 6px;
 | 
				
			||||||
 | 
						font-size: 18px;
 | 
				
			||||||
 | 
						color: #fff;
 | 
				
			||||||
 | 
						letter-spacing: 2px;
 | 
				
			||||||
 | 
						font-weight: 500;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.graphBaseContent {
 | 
				
			||||||
 | 
						height: 1px;
 | 
				
			||||||
 | 
						flex: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					import GraphBase from '../GraphBase';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function NO(props) {
 | 
				
			||||||
 | 
						function handleSwitch() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						function handleDateChange() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return (
 | 
				
			||||||
 | 
							<GraphBase
 | 
				
			||||||
 | 
								icon="battery"
 | 
				
			||||||
 | 
								title="一氧化氮"
 | 
				
			||||||
 | 
								desc="能耗趋势图"
 | 
				
			||||||
 | 
								switcher={true}
 | 
				
			||||||
 | 
								onSwitch={handleSwitch}
 | 
				
			||||||
 | 
								dateOptions={['日', '周', '月', '年']}
 | 
				
			||||||
 | 
								onDateChange={handleDateChange}
 | 
				
			||||||
 | 
								size={['long', 'middle']}
 | 
				
			||||||
 | 
							>
 | 
				
			||||||
 | 
								{/* real echarts here */}
 | 
				
			||||||
 | 
								{/* real table data here  */}
 | 
				
			||||||
 | 
							</GraphBase>
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default NO;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								src/hooks/useIcon.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/hooks/useIcon.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					import IconStack from '../assets/Icon/icon-stack.png';
 | 
				
			||||||
 | 
					import IconGood from '../assets/Icon/icon-good.png';
 | 
				
			||||||
 | 
					import IconCharger from '../assets/Icon/icon-charge.png';
 | 
				
			||||||
 | 
					import IconSmoke from '../assets/Icon/icon-taiji.png';
 | 
				
			||||||
 | 
					import IconChart from '../assets/Icon/icon-chart.png';
 | 
				
			||||||
 | 
					import IconPuzzle from '../assets/Icon/icon-puzzle.png';
 | 
				
			||||||
 | 
					import IconPause from '../assets/Icon/icon-pause.png';
 | 
				
			||||||
 | 
					import IconDefault from '../assets/Icon/icon-puzzle.png';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function useIcon(iconName) {
 | 
				
			||||||
 | 
						// const icon = require(`../assets/icons/${iconName}.svg`).default;
 | 
				
			||||||
 | 
						// return icon;
 | 
				
			||||||
 | 
						return iconName == 'kiln'
 | 
				
			||||||
 | 
							? IconStack
 | 
				
			||||||
 | 
							: iconName == 'goods'
 | 
				
			||||||
 | 
							? IconGood
 | 
				
			||||||
 | 
							: iconName == 'battery'
 | 
				
			||||||
 | 
							? IconCharger
 | 
				
			||||||
 | 
							: iconName == 'smoke'
 | 
				
			||||||
 | 
							? IconSmoke
 | 
				
			||||||
 | 
							: iconName == 'chart'
 | 
				
			||||||
 | 
							? IconChart
 | 
				
			||||||
 | 
							: iconName == 'puzzle'
 | 
				
			||||||
 | 
							? IconPuzzle
 | 
				
			||||||
 | 
							: iconName == 'pause'
 | 
				
			||||||
 | 
							? IconPause
 | 
				
			||||||
 | 
							: IconDefault;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default useIcon;
 | 
				
			||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
import cls from './index.module.css';
 | 
					import cls from './index.module.css';
 | 
				
			||||||
import SmokeHandle from '../../components/模块组件/能耗分析/烟气处理';
 | 
					import SmokeHandle from '../../components/模块组件/能耗分析/烟气处理';
 | 
				
			||||||
import Energy from '../../components/模块组件/能耗分析/能源';
 | 
					import Energy from '../../components/模块组件/能耗分析/能源';
 | 
				
			||||||
 | 
					import NO from '../../components/模块组件/能耗分析/一氧化氮';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function EnergyAnalysis(props) {
 | 
					function EnergyAnalysis(props) {
 | 
				
			||||||
	console.log('[rendering...] 加载 能耗分析页面');
 | 
						console.log('[rendering...] 加载 能耗分析页面');
 | 
				
			||||||
@@ -9,7 +10,8 @@ function EnergyAnalysis(props) {
 | 
				
			|||||||
			<div className={cls.vgrid + ' col-1'}>
 | 
								<div className={cls.vgrid + ' col-1'}>
 | 
				
			||||||
				<SmokeHandle />
 | 
									<SmokeHandle />
 | 
				
			||||||
				<div className={'bgray ' + cls.oxygen}></div>
 | 
									<div className={'bgray ' + cls.oxygen}></div>
 | 
				
			||||||
				<div className={'bgray ' + cls.no}></div>
 | 
									{/* <div className={'bgray ' + cls.no}></div> */}
 | 
				
			||||||
 | 
									<NO />
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div className={cls.vgrid + ' col-2'}>
 | 
								<div className={cls.vgrid + ' col-2'}>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user