102 lines
2.5 KiB
Vue
102 lines
2.5 KiB
Vue
<template>
|
||
<view class="charts-box">
|
||
<qiun-data-charts
|
||
type="column"
|
||
:chartData="chartData"
|
||
:opts="chartOpts"
|
||
/>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { monthDataAnalysis } from "@/api/oa/wms/oaWarehouse";
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
// 图表数据(符合uCharts格式)
|
||
chartData: {
|
||
categories: [], // 月份
|
||
series: [] // 入库量、出库量数据
|
||
},
|
||
// 图表配置项
|
||
chartOpts: {
|
||
legend: true, // 显示图例
|
||
dataLabel: false, // 不显示数据标签
|
||
column: {
|
||
type: "group" // 分组柱状图
|
||
},
|
||
xAxis: {
|
||
fontColor: "#666",
|
||
fontSize: 12
|
||
},
|
||
yAxis: {
|
||
fontColor: "#666",
|
||
fontSize: 12,
|
||
gridColor: "#eee"
|
||
},
|
||
color: ["#007aff", "#ff9500"] // 入库、出库颜色
|
||
}
|
||
};
|
||
},
|
||
mounted() {
|
||
// 页面就绪后获取数据
|
||
this.getServerData();
|
||
},
|
||
methods: {
|
||
getServerData() {
|
||
// 显示加载提示
|
||
uni.showLoading({
|
||
title: '加载数据中...',
|
||
mask: true
|
||
});
|
||
|
||
// 调用接口获取数据(当前年份作为参数)
|
||
const currentYear = new Date().getFullYear() + '-01';
|
||
monthDataAnalysis({ month: currentYear }).then(res => {
|
||
// 隐藏加载提示
|
||
uni.hideLoading();
|
||
|
||
// 格式化接口数据为uCharts所需格式
|
||
this.chartData = {
|
||
categories: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
|
||
series: [
|
||
{
|
||
name: "入库量",
|
||
data: res.data.inData["月"] || [] // 从接口取入库数据
|
||
},
|
||
{
|
||
name: "出库量",
|
||
data: res.data.outData["月"] || [] // 从接口取出库数据
|
||
}
|
||
]
|
||
};
|
||
}).catch(err => {
|
||
// 隐藏加载提示
|
||
uni.hideLoading();
|
||
|
||
// 错误处理
|
||
uni.showToast({
|
||
title: '数据加载失败',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
console.error('获取出入库数据失败:', err);
|
||
});
|
||
}
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
.charts-box {
|
||
width: 100%;
|
||
height: 300px; /* 固定图表高度,适配手机屏幕 */
|
||
padding: 16rpx;
|
||
box-sizing: border-box;
|
||
background-color: #fff;
|
||
border-radius: 12rpx;
|
||
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
|
||
margin-bottom: 20rpx;
|
||
}
|
||
</style> |