基于vue3+antDesign2+echarts?實現雷達圖效果

右上角時間選擇器的實現
- 修改ant組件樣式
根據原型圖,該選擇器為月份時間選擇器,使用a-month-picker,但原始的月份選擇器樣式與設計圖不符,需要進行修改,修改有分為兩部分:1.選擇框;2.額外彈出的日歷
- 選擇框樣式修改
修改ant組件時應避免全局修改,如使用less語法,對ant組件的修改應在該頁面的class下
<style lang="less" >
@vw: 19.2vw;
@vh: 10.8vh;
.ping_index {
.ant-picker {
border: none;
height: 28 / @vh;
font-size: 14 / @vw;
//修改字體居中
.ant-picker-input > input {
text-align: center;
color: rgba(255, 255, 255, 0.8);
}
//修改右側下拉圖標
.anticon svg {
color: rgb(143, 135, 135);
}
}
</style>- 額外彈出的日歷
額外彈出的日歷框是在#app之外的,故無法與選擇框使用相同方法進行修改,需要利用dropdownClassName屬性來修改樣式


a-month-picker(
...
dropdownClassName="month_class"
)
<style lang="less">
.month_class {
.ant-picker-panel-container {
background-color: #010a21;
border: none;
.ant-picker-panel {
background: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(222, 60, 70, 0));
box-shadow: 0 0 10 / @vh 0 #005088 inset;
.ant-picker-header button {
color: rgba(255, 255, 255, 0.8);
}
.ant-picker-cell-in-view {
color: rgba(255, 255, 255, 0.8);
}
.ant-picker-cell-selected {
background: rgba(28, 68, 169, 0.7);
}
.ant-picker-cell-in-view:hover {
background: rgba(28, 68, 169, 0.6);
box-shadow: 0 0 18 / @vh 0 #1c44a9 inset;
}
.ant-picker-cell:hover {
background-color: transparent;
}
.ant-picker-cell-inner {
background: transparent !important;
}
}
}
}
</style>
- 數據綁定
- 默認時間
設置默認事件時需要對時間格式進行確定,根據原型圖需要的時年-月的格式,故需要將ant組件的valueFormat設置為“YYYY-MM”
綁定的值也需要利用moment.js處理得到相同是時間格式

a-month-picker.info_btn(
v-model:value="selectedMonth",
value-format="YYYY-MM"
)
let selectedMonth = ref(moment(new Date()).format("YYYY-MM"));
- 時間改變時觸發(fā)的事件
利用@change綁定事件,考慮到接口需要分別傳輸年、月,需要對selectedMonth進行切割
a-month-picker.info_btn(
v-model:value="selectedMonth",
value-format="YYYY-MM"
@change="changeMonth()"
)
let changeMonth = () => {
let year = selectedMonth.value.substring(0,4)
let month = Number(selectedMonth.value.substring(5,7))
//封裝過的接口
getSafetyIndex({
year,
month
}).then(( res ) => {
console.log(res);
})
}
五角雷達圖的繪制及數據渲染
接口返回的數據是類別名稱的縮寫,為了使得數據和類別在渲染時能夠對應,在定義雷達圖indicator時添加了index字段,用于遍歷接口數據得到與indicator中順序相同的數據數組

let indecatorList = [
{
name: "火災情況",
max: 10,
index: 'hjqk',
},
{
name: "交通安全",
max: 10,
index: 'jtaq',
},
{
name: "信訪形勢",
max: 10,
index: 'xfxs',
},
{
name: "反電詐",
max: 10,
index: 'fdz',
},
{
name: "矛盾糾紛",
max: 10,
index: 'mdjf',
},
];
let getData = ( data ) => {
let series = []
indecatorList.map(( item ) => {
series.push(data[item.index])
})
setOptions(series);
};
let setOptions = ( seriesData = [0,0,0,0,0] ) => {
let option = {
radar: {
...
indicator: indecatorList,
},
...
series: [
...
{
type: "radar",
data: [
{
value: seriesData,
},
],
},
],
};
chart.setOption(option);
};
到此這篇關于基于vue3+antDesign2+echarts 實現雷達圖的文章就介紹到這了,更多相關vue3 echarts雷達圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決element-ui?el-drawer抽屜el-dialog彈框關閉優(yōu)化demo
這篇文章主要為大家介紹了解決element-ui?el-drawer抽屜el-dialog彈框關閉優(yōu)化demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>2023-06-06

