You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
213 lines
4.4 KiB
TypeScript
213 lines
4.4 KiB
TypeScript
import Taro from "@tarojs/taro";
|
|
import classnames from "classnames";
|
|
import { Block, View, Image, Text, Input } from "@tarojs/components";
|
|
import { Popup, Progress, Slider } from "@antmjs/vantui";
|
|
import { useEffect, useRef, useState, useCallback } from "react";
|
|
import Echarts, { EChartOption, EchartsHandle } from "taro-react-echarts";
|
|
import echarts from "@/utils/echarts.min.js";
|
|
|
|
import "./index.less";
|
|
|
|
interface Props {
|
|
series: any,
|
|
full: any
|
|
}
|
|
|
|
|
|
|
|
function Index({ series, full }: Props) {
|
|
const echartsRef = useRef<EchartsHandle>(null);
|
|
const [options, setOptions] = useState({
|
|
animation: false,
|
|
grid: {
|
|
// 让图表占满容器
|
|
// containLabel: true,
|
|
top: "32rpx",
|
|
left: "48rpx",
|
|
right: "86rpx",
|
|
bottom: "68rpx",
|
|
},
|
|
// legend: {
|
|
// itemStyle: {
|
|
// decal: {
|
|
// rotation: 90
|
|
// }
|
|
// }
|
|
// },
|
|
yAxis: {
|
|
// name: '',
|
|
// nameGap: 5,
|
|
// nameTextStyle: {
|
|
// color: '#e4e4e4',
|
|
// fontSize:7
|
|
// },
|
|
type: "category",
|
|
inverse: true,
|
|
axisLine: {
|
|
//坐标轴轴线相关设置。数学上的x轴
|
|
show: true,
|
|
lineStyle: {
|
|
color: "#cccccc",
|
|
},
|
|
},
|
|
axisLabel: {
|
|
//坐标轴刻度标签的相关设置
|
|
color: "#cccccc",
|
|
fontSize: 14,
|
|
rotate: -90,
|
|
margin: 18
|
|
},
|
|
axisTick: {
|
|
show: false,
|
|
},
|
|
data: [
|
|
"00:01",
|
|
"00:02",
|
|
"00:03",
|
|
"00:04",
|
|
"00:05",
|
|
"00:06",
|
|
"00:07",
|
|
"00:08",
|
|
"00:09",
|
|
"00:10",
|
|
],
|
|
},
|
|
xAxis: {
|
|
type: "value",
|
|
min: 0,
|
|
max: 8,
|
|
splitNumber: 8,
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "#cccccc",
|
|
type: [4, 2],
|
|
dashOffset: 4,
|
|
},
|
|
},
|
|
axisLine: {
|
|
show: false,
|
|
},
|
|
axisLabel: {
|
|
show: false,
|
|
},
|
|
axisTick: {
|
|
show: false,
|
|
},
|
|
},
|
|
visualMap: {
|
|
z: 1,
|
|
top: 0,
|
|
right: 0,
|
|
seriesIndex: 0,
|
|
show: false,
|
|
dimension: 0,
|
|
pieces: [
|
|
{
|
|
gt: 0,
|
|
lte: 1,
|
|
color: "#fff8c9",
|
|
},
|
|
{
|
|
gt: 1,
|
|
lte: 2,
|
|
color: "#fff0c6",
|
|
},
|
|
{
|
|
gt: 2,
|
|
lte: 3,
|
|
color: "#ffe5c3",
|
|
},
|
|
{
|
|
gt: 3,
|
|
lte: 4,
|
|
color: "#ffdbbf",
|
|
},
|
|
{
|
|
gt: 4,
|
|
lte: 5,
|
|
color: "#ffcfbb",
|
|
},
|
|
{
|
|
gt: 5,
|
|
lte: 6,
|
|
color: "#ffbab5",
|
|
},
|
|
{
|
|
gt: 6,
|
|
lte: 7,
|
|
color: "#ffb4b3",
|
|
},
|
|
{
|
|
gt: 7,
|
|
lte: 8,
|
|
color: "#ffb4b3",
|
|
},
|
|
],
|
|
outOfRange: {
|
|
color: "#ff8410",
|
|
},
|
|
},
|
|
series: []
|
|
})
|
|
|
|
const level = [8, 7, 6, 5, 4, 3, 2];
|
|
const [newOptions, setNewOptions] = useState(options)
|
|
const updata = useCallback((res) => {
|
|
let option = JSON.parse(JSON.stringify(options))
|
|
option.series = JSON.parse(JSON.stringify(res))
|
|
// 更新图表数据
|
|
setNewOptions(option)
|
|
}, [])
|
|
|
|
const cancelFull = useCallback((res) => {
|
|
console.log(1111);
|
|
|
|
full()
|
|
}, [])
|
|
|
|
|
|
useEffect(() => {
|
|
setOptions(newOptions)
|
|
}, [newOptions]);
|
|
|
|
|
|
useEffect(() => {
|
|
updata(series)
|
|
}, [series])
|
|
|
|
|
|
return (
|
|
<Block>
|
|
<View id='box' className='box_full'>
|
|
<Echarts
|
|
force-use-old-canvas='false'
|
|
echarts={echarts}
|
|
option={options}
|
|
ref={echartsRef}
|
|
// isPage={false}
|
|
// style自定义设置echarts宽高
|
|
style={{ width: "620rpx", height: "80vh", zIndex: 1 }}
|
|
/>
|
|
<View className='box_background1'>
|
|
<Image className='part' src={require("@/img/part-scran.png")} onClick={cancelFull}></Image>
|
|
<View className='power'>实时能量</View>
|
|
{level.map((item) => (
|
|
<View className='line' key={item}>
|
|
<View className='number'>{item}</View>
|
|
<View className='bottom_line'></View>
|
|
</View>
|
|
))}
|
|
<View className='line'>
|
|
<View className='number'>1</View>
|
|
</View>
|
|
<View className='time'>时间</View>
|
|
</View>
|
|
</View>
|
|
</Block >
|
|
);
|
|
}
|
|
|
|
export default Index;
|