86 lines
1.8 KiB
Vue
86 lines
1.8 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="order-analysis-dashboard">
|
|||
|
|
<!-- 顶部:3 张summary卡片 -->
|
|||
|
|
<el-row :gutter="20" class="top-row">
|
|||
|
|
<el-col :span="24">
|
|||
|
|
<OrderSummary :data-info="orderSummaryData" />
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
|
|||
|
|
<!-- 第二行:3 个图表 -->
|
|||
|
|
<el-row :gutter="20" class="chart-row">
|
|||
|
|
<el-col :span="8">
|
|||
|
|
<OrderCompletion :completion-rate="orderSummaryData.completionRate" />
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="8">
|
|||
|
|
<ProductSales :product-sales="productSalesData" />
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="8">
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import OrderSummary from './components/OrderSummary.vue'
|
|||
|
|
import OrderCompletion from './components/OrderCompletion.vue'
|
|||
|
|
import ProductSales from './components/ProductSales.vue'
|
|||
|
|
import { getDashboardData } from '@/api/wms/order'
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
name: 'OrderAnalysisDashboard',
|
|||
|
|
components: {
|
|||
|
|
OrderSummary,
|
|||
|
|
OrderCompletion,
|
|||
|
|
ProductSales,
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
orderSummaryData: {
|
|||
|
|
totalOrders: 0,
|
|||
|
|
completedThisMonth: 0,
|
|||
|
|
completionRate: 0
|
|||
|
|
},
|
|||
|
|
productSalesData: [],
|
|||
|
|
materialAnalysisData: {
|
|||
|
|
categories: [],
|
|||
|
|
usageFrequency: [],
|
|||
|
|
stockQuantity: [],
|
|||
|
|
bundleRate: [],
|
|||
|
|
purchaseCycle: [],
|
|||
|
|
yAxisUsageMax: 0
|
|||
|
|
},
|
|||
|
|
customerClusterData: []
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
created() {
|
|||
|
|
this.fetchAllData()
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
async fetchAllData() {
|
|||
|
|
const res = await getDashboardData()
|
|||
|
|
console.log(res)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
.order-analysis-dashboard {
|
|||
|
|
padding: 24px;
|
|||
|
|
background-color: #f7f8fa;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.top-row,
|
|||
|
|
.chart-row {
|
|||
|
|
margin-bottom: 20px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.chart-row > .el-col {
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: column;
|
|||
|
|
justify-content: stretch;
|
|||
|
|
}
|
|||
|
|
</style>
|