From 0a27546e1491fcaee616683349218d0c35805947 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 27 一月 2026 10:33:00 +0800
Subject: [PATCH] 经销商管理
---
admin/src/views/index.vue | 135 ++++++++++++++++++++++++++++++++++++++------
1 files changed, 115 insertions(+), 20 deletions(-)
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 34ad636..2cd5e29 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -56,7 +56,7 @@
<div class="change-style">
<div class="count-left">
<div class="item-title" style="display: flex;">
- <span style="flex: 1">缁忛攢鍟咺OP10</span>
+ <span style="flex: 1">缁忛攢鍟員OP10</span>
<div class="tab-item" style="text-align: right;flex: 1.5; ">
<span v-for="(item,index) in tabs1" :key="'tab'+index" :class="item.index==tabIndex1?'active-tab tab-btn':'tab-btn'" @click="changeTab1(item)">{{item.name}}</span>
</div>
@@ -98,7 +98,7 @@
<div class="tab-title" style="display: flex;align-items: center; ">
<span style="">钀ラ攢鏁版嵁鍒嗘瀽</span>
<div class="tab-item" style="margin-left: 20px;" >
- <el-date-picker style="width: 110px;height: 22px;margin-right: 10px;" v-model="searchForm.topYear2" type="year"
+ <el-date-picker style="width: 110px;height: 22px;margin-right: 10px;" v-model="searchForm.topYear2" type="year" @change="changeYear"
clearable value-format="yyyy" format="yyyy'骞�'" placeholder="骞翠唤" ></el-date-picker>
</div>
</div>
@@ -106,25 +106,26 @@
<div class="change-style">
<div class="count-left">
<div class="item-title">绉垎鍙戞斁绫诲瀷鍗犳瘮</div>
- <div class="bottom2" style="display: flex">
- <div ref="integralCount" style="flex: 1"></div>
- <div style="flex: 1;font-size: 14px;font-weight: 500;">
- <div>绱娑堣�楋細{{10000}}</div>
- <div>绱浼樻儬閲戦锛氾骏{{10000 }}</div>
+ <div class="bottom2" style="display: flex;align-items: center">
+ <div ref="integralCount" style="flex: 1;min-height: 200px;"></div>
+ <div style="flex: 1;font-size: 14px;font-weight: 500;margin-left: 20px;">
+ <div>绱鍙戞斁鏁伴噺锛歿{( dataList4.num || 0 ) +( dataList4.num1 || 0 )+( dataList4.num2 || 0 )+( dataList4.num3 || 0 )}}</div>
+ <div>绱娑堣�楋細{{ dataList4.useNum || 0 }}</div>
+ <div>绱浼樻儬閲戦锛氾骏{{(dataList4.price || 0 ).toFixed(2) }}</div>
</div>
</div>
</div>
<div class="count-right">
<div class="item-title">浼樻儬鍒稿彂鏀剧被鍨嬪崰姣�</div>
- <div class="bottom2">
- <div class="bottom2" style="display: flex">
- <div ref="couponCount" style="flex: 1"></div>
- <div style="flex: 1;font-size: 14px;font-weight: 500;">
- <div>宸蹭娇鐢ㄤ紭鎯犲埜锛歿{10000}}</div>
- <div>绱浼樻儬閲戦锛氾骏{{10000 }}</div>
+ <div class="bottom2" style="display: flex;align-items: center">
+ <div ref="couponCount" style="flex: 1;min-height: 200px;"></div>
+ <div style="flex: 1;font-size: 14px;font-weight: 500;margin-left: 20px;">
+ <div>绱鍙戞斁鏁伴噺锛歿{( dataList3.num || 0 ) +( dataList3.num1 || 0 )}}</div>
+ <div>宸蹭娇鐢ㄤ紭鎯犲埜锛歿{ dataList3.useNum || 0 }}</div>
+ <div>绱浼樻儬閲戦锛氾骏{{(dataList3.price || 0 ).toFixed(2) }}</div>
+ <div>淇冩垚浜ゆ槗閲戦锛氾骏{{(dataList3.orderPrice || 0 ).toFixed(2) }}</div>
</div>
</div>
- </div>
</div>
</div>
<div class="change-style" v-if="1==2">
@@ -150,6 +151,8 @@
loading1: false,
loading2: false,
loading3: false,
+ loading4: false,
+ loading5: false,
tabs2: [{ index: 0, name: '鎸夐攢閲�' }, { index: 1, name: '鎸夐攢鍞' }],
tabs1: [{ index: 0, name: '鎸夎鍗曢噺' }, { index: 1, name: '鎸夐攢鍞' }, { index: 2, name: '鎸変細鍛樻暟' }],
tabs: [{ index: 0, name: '浠婃棩' }, { index: 1, name: '杩�7鏃�' }, { index: 2, name: '杩�30鏃�' }, { index: 3, name: '杩�12鏈�' }],
@@ -181,8 +184,12 @@
},
dataList1: [],
dataList2: [],
+ dataList4: [],
+ dataList3: [],
myChart0: null,
- myChart1: null
+ myChart1: null,
+ myChart2: null,
+ myChart3: null
}
},
created () {
@@ -197,11 +204,37 @@
this.initTopData()
this.initShopRankData()
this.initGoodsRankData()
+ this.initIntegralData()
+ this.initCouponData()
},
methods: {
changeYearMonth(){
this.initGoodsRankData()
this.initShopRankData()
+ },
+ changeYear(){
+ this.initIntegralData()
+ this.initCouponData()
+ },
+ initCouponData () {
+ this.loading4 = true
+ this.api.couponData({year: this.searchForm.topYear2}).then(res => {
+ res = res || {}
+ this.dataList3 = res
+ this.renderEchartOption3()
+ }).finally(() => {
+ this.loading4 = false
+ })
+ },
+ initIntegralData () {
+ this.loading5 = true
+ this.api.integralData({ year: this.searchForm.topYear2}).then(res => {
+ res = res || {}
+ this.dataList4 = res
+ this.renderEchartOption2()
+ }).finally(() => {
+ this.loading5 = false
+ })
},
initShopRankData () {
this.loading2 = true
@@ -236,7 +269,7 @@
res.cateList = res.cateList || []
this.topData = res
this.renderEchartOption0()
- this.renderEchartOption2()
+ this.renderEchartOption1()
}).finally(() => {
this.loading1 = false
})
@@ -250,8 +283,18 @@
window.addEventListener('resize', () => {
this.myChart1.resize()
})
+ this.myChart2 = echarts.init(this.$refs.integralCount)
+ window.addEventListener('resize', () => {
+ this.myChart2.resize()
+ })
+ this.myChart3 = echarts.init(this.$refs.couponCount)
+ window.addEventListener('resize', () => {
+ this.myChart3.resize()
+ })
this.renderEchartOption0()
+ this.renderEchartOption1()
this.renderEchartOption2()
+ this.renderEchartOption3()
},
changeTab (item) {
if (this.loading1) {
@@ -336,7 +379,7 @@
]
})
},
- renderEchartOption2 () {
+ renderEchartOption1 () {
const series = []
this.topData.cateList.forEach((item, index) => {
series.push( {
@@ -347,7 +390,7 @@
label: {
// show: true
},
- data: item.data||[]
+ data: item.data || []
})
})
this.myChart1.setOption({
@@ -375,10 +418,62 @@
boundaryGap: false,
data: this.topData.dateStrList || []
},
- yAxis: { type: 'value' } ,
+ yAxis: { type: 'value' },
series
})
- }
+ },
+ renderEchartOption2() {
+ this.myChart2.setOption({
+ tooltip: {
+ trigger: 'item'
+ },
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: this.dataList4.num || 0, name: '鎵嬪姩澧炲姞' },
+ { value: this.dataList4.num1 || 0, name: '閭�璇峰ソ鍙�' },
+ { value: this.dataList4.num2 || 0, name: '娑堣垂杩斿埄' },
+ { value: this.dataList4.num3 || 0, name: '娉ㄥ唽璧犻��' }
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ })
+ },
+ renderEchartOption3() {
+ this.myChart3.setOption({
+ tooltip: {
+ trigger: 'item'
+ },
+ series: [
+ {
+ name: '浼樻儬鍒稿彂鏀�',
+ type: 'pie',
+ radius: '50%',
+ data: [
+ { value: this.dataList3.num1 || 0, name: '鎶樻墸鍒�' },
+ { value: this.dataList3.num || 0, name: '婊″噺鍒�' }
+ ],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ })
+ },
}
}
</script>
--
Gitblit v1.9.3