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.
194 lines
5.8 KiB
TypeScript
194 lines
5.8 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 { useRef } from "react";
|
|
import Echarts, { EChartOption, EchartsHandle } from "taro-react-echarts";
|
|
import echarts from "@/utils/echarts.min.js";
|
|
|
|
import "./index.less";
|
|
|
|
interface Props {
|
|
Electricity: any;
|
|
matrixElectricity: any;
|
|
facialMaskConnectStatus: any;
|
|
}
|
|
|
|
function Index() {
|
|
|
|
const echartsRef = useRef<EchartsHandle>(null);
|
|
function generateColorArray(startColor, endColor, steps) {
|
|
var startRGB = hexToRgb(startColor);
|
|
var endRGB = hexToRgb(endColor);
|
|
var colors = [];
|
|
for (var i = 0; i < steps; i++) {
|
|
var r = interpolate(startRGB.r, endRGB.r, steps, i);
|
|
var g = interpolate(startRGB.g, endRGB.g, steps, i);
|
|
var b = interpolate(startRGB.b, endRGB.b, steps, i);
|
|
colors.push(rgbToHex(r, g, b));
|
|
}
|
|
return colors;
|
|
}
|
|
|
|
function hexToRgb(hex) {
|
|
var bigint = parseInt(hex.slice(1), 16);
|
|
var r = (bigint >> 16) & 255;
|
|
var g = (bigint >> 8) & 255;
|
|
var b = bigint & 255;
|
|
return { r: r, g: g, b: b };
|
|
}
|
|
|
|
function rgbToHex(r, g, b) {
|
|
return (
|
|
"#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)
|
|
);
|
|
}
|
|
|
|
function interpolate(start, end, steps, count) {
|
|
return start + ((end - start) / steps) * count;
|
|
}
|
|
|
|
const startColor = "#FFFF00"; // 黄色
|
|
const endColor = "#FF0000"; // 红色
|
|
const steps = 80; // 80个颜色
|
|
|
|
|
|
const colors = generateColorArray(startColor, endColor, steps);
|
|
const xList = [...new Array(37).fill(0).map((item, key) => key)];
|
|
const seriesData = [
|
|
...xList.map((item) => {
|
|
return Math.random() * 80;
|
|
}),
|
|
];
|
|
// let seriesData=[
|
|
// 1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3,
|
|
// 1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3,
|
|
// 1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,8,5,1,2,3,
|
|
// 1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ,1,2,2,3,3,4,5,1,2,3,4,2,3,5,1,2,3
|
|
// ]
|
|
// console.log(seriesData,'seriesData',xList);
|
|
|
|
const option: EChartOption ={
|
|
grid: {
|
|
// 让图表占满容器
|
|
top: "10rpx",
|
|
left: "45rpx",
|
|
right: "28rpx",
|
|
bottom: "17rpx",
|
|
},
|
|
xAxis: {
|
|
type: "category",
|
|
data: [...xList],
|
|
axisLabel: {
|
|
interval: 5,
|
|
formatter: function (value, index) {
|
|
console.log(value,'查看');
|
|
|
|
return value * 10 + 's';
|
|
},
|
|
textStyle: {
|
|
color: '#999999', // 文字颜色
|
|
fontSize: 8 // 文字大小
|
|
},
|
|
},
|
|
axisTick: {
|
|
// alignWithLabel: true,
|
|
show: false,
|
|
interval: 9,
|
|
},
|
|
// axisLine: {
|
|
// show: false,
|
|
// },
|
|
},
|
|
yAxis: [
|
|
{
|
|
min: 0,
|
|
max: 80,
|
|
splitNumber: 10,
|
|
axisLabel: {
|
|
formatter: function (value, index) {
|
|
const num = value / 10 + 1
|
|
return num === 9 ? '' : num + '级';
|
|
},
|
|
textStyle: {
|
|
color: '#999999', // 文字颜色
|
|
fontSize: 8 // 文字大小
|
|
},
|
|
},
|
|
type: "value",
|
|
splitLine: {
|
|
lineStyle: {
|
|
color: ["#ccc", "#ccc", "#ccc", "#ccc", "#ccc", "#ccc", "#ccc", "#ccc", "#fff"],
|
|
type: 'dashed'
|
|
},
|
|
}
|
|
},
|
|
],
|
|
series: [
|
|
|
|
{
|
|
barCategoryGap: '0%',
|
|
data: seriesData,
|
|
type: "bar",
|
|
// barWidth: 15,
|
|
gapWidth: "0%",
|
|
itemStyle: {
|
|
normal: {
|
|
color: function (params) {
|
|
var value = params.data;
|
|
return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
{
|
|
offset: 0,
|
|
color: colors[parseInt(value)], // 红色
|
|
},
|
|
{
|
|
offset: 1,
|
|
color: colors[0], // 黄色
|
|
},
|
|
]);;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
};
|
|
let arr = [2, 3, 4, 5, 6, 7]
|
|
return (
|
|
<Block>
|
|
<Echarts
|
|
echarts={echarts}
|
|
option={option}
|
|
ref={echartsRef}
|
|
// isPage={false}
|
|
// style自定义设置echarts宽高
|
|
// style={{ width: "100%", height: "100%" }}
|
|
style={{ width: "630rpx", height: "260rpx" }}
|
|
/>
|
|
|
|
{/* <View className="box">
|
|
<Echarts
|
|
echarts={echarts}
|
|
option={option}
|
|
ref={echartsRef}
|
|
// isPage={false}
|
|
// style自定义设置echarts宽高
|
|
style={{ width: "630rpx", height: "240rpx" }}
|
|
/>
|
|
|
|
</View> */}
|
|
|
|
|
|
</Block>
|
|
);
|
|
}
|
|
|
|
export default Index;
|