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.

206 lines
4.4 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view>
<view>
<view class="chart_wrapper" id="line"></view>
<view class="huakuai_k">
<view class="huakuai_value">
<view>{{rang0}}</view>
<view>{{rang1}}</view>
</view>
<view class="slider-container">
<slider @change="huakuai0SendValue" @changing="huakuai0_change" activeColor="#5ab6b8" block-color="#5ab6b8" block-size="18" backgroundColor="#5ab6b8" class="huakuai0" :step="step" :max="rangMax" :value="rang0" />
</view>
<view class="huakuai1">
<slider @change="huakuai1SendValue" @changing="huakuai1_change" block-size="18" block-color="#5ab6b8" activeColor="#5ab6b8" backgroundColor="#5ab6b8" :step="step" :max="rangMax" :value="rang1" />
</view>
</view>
</view>
</view>
</template>
<script setup>
import {
ref,
onMounted,defineEmits,watch
} from 'vue'
import * as echarts from 'echarts';
const props = defineProps({
dataInfo: {
type: Object,
required: true
} ,
rangDate: {
type: Array,
required: true
},
step: {
type: Number,
required: true
},
rangMax: {
type: Number,
required: true
}
})
let rang0=ref(0);
let rang1=ref(0);
let rangMax=ref(0);
rangMax.value=Number(props.rangMax);
rang0.value=Number(props.rangDate[0])
rang1.value=Number(props.rangDate[1])
watch(() => props.rangDate, (newrangDate) => {
console.log(props.rangDate);
rang0.value=newrangDate[0]
rang1.value=newrangDate[1]
}, { immediate: false });
const emit = defineEmits(['huakuaiValue']);
const huakuai0SendValue=(e)=> {
rang0.value= rang0.value=e.detail.value
if(rang0.value>rang1.value){
let temp=0
temp=rang0.value
rang0.value=rang1.value
rang1.value=temp
}
emit('huakuaiValue', [rang0.value,rang1.value]);
}
const huakuai1SendValue=(e)=>{
rang1.value= rang1.value=e.detail.value
if(rang0.value>rang1.value){
let temp=0
temp=rang0.value
rang0.value=rang1.value
rang1.value=temp
}
emit('huakuaiValue', [rang0.value,rang1.value]);
}
onMounted(() => {
drawChart()
})
const huakuai0_change=(e)=>{
rang0.value=e.detail.value
if(rang0.value>rang1.value){
let temp=0
temp=rang0.value
rang0.value=rang1.value
rang1.value=temp
}
}
const huakuai1_change=(e)=>{
rang1.value=e.detail.value
if(rang0.value>rang1.value){
let temp=0
temp=rang0.value
rang0.value=rang1.value
rang1.value=temp
}
}
const drawChart = () => {
let chartDom = document.getElementById('line');
let myChart = echarts.init(chartDom);
let xdata=[];
let ydata=[];
props.dataInfo.forEach((v,i)=>{
xdata.push(v.i)
ydata.push(v.count)
})
let option = {
grid: {
left: '10%',
right: '10%',
top: '0%',
bottom: '0%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data:xdata,
axisLine: { show: false }, // 隐藏X轴线
axisTick: { show: false }, // 隐藏X轴刻度
axisLabel: { show: false } // 隐藏X轴标签
},
yAxis: {
type: 'value',
axisLine: { show: false }, // 隐藏Y轴线
axisTick: { show: false }, // 隐藏Y轴刻度
axisLabel: { show: false } ,// 隐藏Y轴标签
splitLine: { show: false } // 隐藏Y轴的分割线
},
series: [
{
data: ydata,
type: 'line',
lineStyle: {
width: 0 ,// 隐藏线条设置线条宽度为0
},
smooth: true, // 这里设置线条平滑
symbol: 'none', // 隐藏所有数据点的标记符号
areaStyle: {
color: {
colorStops: [{
offset: 0, color: '#e5f5f6' // 区域顶部颜色,半透明红色
}, {
offset: 1, color: '#e5f5f6' // 区域底部颜色,更浅的半透明红色
}]
}
}
}
]
};
option && myChart.setOption(option);
}
</script>
<style scoped>
.chart_wrapper{
height: 100rpx;
width: 100% !important;
/* border:1px solid #ccc; */
}
.huakuai_k{
position: relative;
width: 100%;
top:-40rpx;
}
.huakuai0{
position: relative;
}
.huakuai1{
position: relative;
width: 100%;
top:-54rpx;
}
.huakuai_value{
position: absolute;
display: flex;
width: calc(100% - 40rpx);
justify-content: space-between;
top: -40rpx;
padding: 0rpx 20rpx 0rpx 20rpx;
font-size:26rpx;
color:#5ab6b8;
}
</style>
<style>
</style>