95 lines
2.9 KiB
Vue
Raw Normal View History

<template>
<div class="sales-top">
<el-card>
2025-06-07 15:51:05 +08:00
<template v-slot:header>
<div class="clearfix">
<el-row>
<el-col :span="6">
<div style="font-size: large">
<el-radio-group v-model="params.statType" size="small" @change="getData">
<el-radio-button label="2">商品销量榜</el-radio-button>
<el-radio-button label="1">规格销量榜</el-radio-button>
</el-radio-group>
</div>
</el-col>
<el-col :span="18">
<div style="text-align: right">
<el-radio-group v-model="params.type" size="small" @change="getData">
<el-radio-button label="0">今日</el-radio-button>
<el-radio-button label="7">近七日</el-radio-button>
<el-radio-button label="30">近三十日</el-radio-button>
</el-radio-group>
</div>
</el-col>
</el-row>
</div>
</template>
<el-table v-loading="loading" :data="salesTopData" :border="false">
<el-table-column type="index" width="80"></el-table-column>
<el-table-column prop="productName" label="商品名称"></el-table-column>
<el-table-column prop="spData" label="规格" v-if="params.statType == 1">
<template v-slot="scope">
<div v-for="(value, key) in JSON.parse(scope.row.spData)">{{ key }}{{ value }}&nbsp;</div>
</template>
</el-table-column>
<el-table-column label="主图" align="center" prop="pic">
2025-06-07 15:51:05 +08:00
<template v-slot="{ row }">
<el-image v-if="row.pic" :src="row.pic" :preview-src-list="[row.pic]" class="small-img circle-img" />
</template>
</el-table-column>
<el-table-column prop="totalSales" label="销量" width="120">
2025-06-07 15:51:05 +08:00
<template #default="{ row }"> {{ row.totalSales }} </template>
</el-table-column>
</el-table>
</el-card>
</div>
</template>
<script>
2025-06-07 15:51:05 +08:00
import { goodsStatistics } from '@/api/statistics';
import dateUtil from '@/utils/DateUtil';
export default {
name: 'TopProduct',
data() {
return {
salesTopData: [],
params: {
statType: 1,
2025-06-07 15:51:05 +08:00
type: 0,
size: 10,
startDate: '2023-02-01',
endDate: '2023-06-01'
},
loading: false
};
},
created() {
2025-06-07 15:51:05 +08:00
this.getData();
},
methods: {
2025-06-07 15:51:05 +08:00
getData() {
this.loading = true;
const range = Number(this.params.type);
this.params.startDate = dateUtil.getAfterDate(-range);
this.params.endDate = dateUtil.getAfterDate(0);
goodsStatistics(this.params).then((res) => {
this.salesTopData = res;
this.loading = false;
});
}
}
};
</script>
<style>
.sales-top {
margin: 20px;
}
.export-btn {
float: right;
margin-right: 20px;
}
</style>