Kaynağa Gözat

feat: 完成数据看板,接口

million 1 yıl önce
ebeveyn
işleme
d03c9e6055

+ 36 - 0
front/admin-front/src/api/statistics.js

@@ -0,0 +1,36 @@
+import request from '@/utils/request'
+
+export function expectedInput() {
+  return request({
+    url: '/ams/statistics/predict-cost',
+    method: 'get',
+  })
+}
+
+export function countFee() {
+  return request({
+    url: '/ams/statistics/count-fee',
+    method: 'get',
+  })
+}
+
+export function dailyCost() {
+  return request({
+    url: '/ams/statistics/daily-cost',
+    method: 'get',
+  })
+}
+
+export function taskProgress() {
+  return request({
+    url: '/ams/statistics/task-progress',
+    method: 'get',
+  })
+}
+
+export function addressGroup() {
+  return request({
+    url: '/ams/statistics/address-group',
+    method: 'get',
+  })
+}

+ 16 - 2
front/admin-front/src/views/autoplay/index.vue

@@ -53,7 +53,7 @@
                {{item.executeTimes}}/{{item.planTimes}}
              </div>
            </div>
-           <div class="progressBar" @click="progressBarDetails">
+           <div class="progressBar" @click="progressBarDetails(item)">
              <div class="progressBar-blue">
                <img src="../../assets/autoplay/airplanemode_active.svg" alt="airplanemode_active">
                进行中
@@ -674,9 +674,22 @@ export default {
     this.getWalletAddress()
   },
   methods: {
-    progressBarDetails() {
+    progressBarDetails(item) {
       this.drawerRecord = true
       this.drawerRecordStatus = 1
+      this.currentTaskInfo = JSON.parse(JSON.stringify(item))
+      this.currentRecordData.groupName = item.groupName
+      this.currentRecordData.intervalMax = item.intervalMax
+      this.currentRecordData.intervalMin = item.intervalMin
+      this.currentRecordData.maxGas = item.maxGas
+      let params = {
+        page:1,
+        pageSize:10,
+        executeId:item.executeId
+      }
+      getInteractionRecord(params).then(res=>{
+        this.ongoingData = res.records
+      })
     },
     getTaskList() {
       taskPage().then(res=>{
@@ -905,6 +918,7 @@ export default {
           display: flex;
           justify-content: space-between;
           padding-right: 6px;
+          cursor: pointer;
           .progressBar-blue{
             width: 147px;
             height: 28px;

+ 93 - 57
front/admin-front/src/views/dashboard/index.vue

@@ -4,7 +4,7 @@
       <div class="left">
         <div class="item">
           <div class="number">
-            85
+            {{ countFee.expendGas }}
           </div>
           <div class="title">
             支出/气体
@@ -13,7 +13,7 @@
         <div class="verticalLine"/>
         <div class="item">
           <div class="number">
-            8.811k
+            {{countFee.principalBalance}}
           </div>
           <div class="title">
             剩余本金
@@ -22,21 +22,21 @@
         <div class="verticalLine"/>
         <div class="item">
           <div class="number">
-            85
+            {{countFee.predictTotalCost}}
           </div>
           <div class="title">
             预计支出总费用
           </div>
         </div>
-        <div class="verticalLine"/>
-        <div class="item">
-          <div class="number">
-            88222
-          </div>
-          <div class="title">
-            预计空投价值
-          </div>
-        </div>
+<!--        <div class="verticalLine"/>-->
+<!--        <div class="item">-->
+<!--          <div class="number">-->
+<!--            88222-->
+<!--          </div>-->
+<!--          <div class="title">-->
+<!--            预计空投价值-->
+<!--          </div>-->
+<!--        </div>-->
       </div>
       <div class="right" @click="drawerFinance = true">
         <img src="../../assets/dashboard/upload.svg" alt="upload">
@@ -94,10 +94,10 @@
               </div>
             </div>
             <div class="info">
-              共7
+              共{{echartsInputData.totalCount}}
             </div>
             <div class="info">
-              总支出:234112
+              总支出:{{echartsInputData.totalCost}}
             </div>
             <div class="progress">
               <div class="progress">
@@ -114,10 +114,10 @@
             <div class="progressBox">
               <div class="item" v-for="(item,index) in progressData">
                 <div class="name">
-                  {{ item.name }}
+                  {{ item.taskName }}
                 </div>
                 <div class="progress">
-                  <div class="progress" :style="{width:item.progress}"></div>
+                  <div class="progress" :style="{width:(item.finishCount/item.totalCount*100)+'%'}"></div>
                 </div>
               </div>
             </div>
@@ -278,33 +278,13 @@
 
 <script>
 import * as echarts from 'echarts';
+import {addressGroup, countFee, dailyCost, expectedInput, taskProgress} from "@/api/statistics";
 
 export default {
   name: "Dashboard",
   data() {
     return {
-      progressData: [
-        {
-          name: '任务名称',
-          progress: '30%',
-        },
-        {
-          name: '任务名称',
-          progress: '20%',
-        },
-        {
-          name: '任务名称',
-          progress: '0',
-        },
-        {
-          name: '任务名称',
-          progress: '0',
-        },
-        {
-          name: '任务名称',
-          progress: '0',
-        },
-      ],
+      progressData: [],
       isActive: 0,
       day: ['7D', '30D', 'All'],
       visible: false,
@@ -344,13 +324,34 @@ export default {
           }
         }]
       },
-      time:''
+      time:'',
+      countFee:{
+        expendGas:0,
+        predictTotalCost:0,
+        principalBalance:0,
+      },
+      echartsInputData:{
+        totalCost:0,
+        totalCount:0,
+        predicts:[]
+      },
+      echartsExpenseData:{
+        timeData:[],
+        seriesDataGas:[],
+        seriesDataP:[]
+      },
+      echartsAddressData:{
+        xAxisData:[],
+        seriesData:[]
+      }
     };
   },
   mounted() {
-    this.initEchartsAddress()
-    this.initEchartsInput()
-    this.initEchartsExpense()
+    this.getExpectedInput()
+    this.getCountFee()
+    this.getDailyCost()
+    this.getTaskProgress()
+    this.getAddressGroup()
   },
   methods: {
     initEchartsAddress() {
@@ -370,7 +371,7 @@ export default {
         xAxis: {
           offset: 20,
           type: 'category',
-          data: ['钱包名称', '钱包名称', '钱包名称', '钱包名称', '钱包名称', '钱包名称'],
+          data: this.echartsAddressData.xAxisData,
           axisLabel: {
             color: '#ABABAB'
           },
@@ -395,7 +396,7 @@ export default {
         ],
         series: [
           {
-            data: [30, 25, 18, 40, 26, 40],
+            data: this.echartsAddressData.seriesData,
             type: 'bar',
             barWidth: '15%',
             itemStyle: {
@@ -419,7 +420,6 @@ export default {
         },
         series: [
           {
-            name: 'Access From',
             type: 'pie',
             radius: ['40%', '70%'],
             avoidLabelOverlap: false,
@@ -430,15 +430,7 @@ export default {
             labelLine: {
               show: false
             },
-            data: [
-              {value: 1048, name: '1'},
-              {value: 735, name: '2'},
-              {value: 580, name: '3'},
-              {value: 484, name: '4'},
-              {value: 300, name: '5'},
-              {value: 300, name: '6'},
-              {value: 300, name: '7'},
-            ]
+            data: this.echartsInputData.predicts
           }
         ]
       };
@@ -479,7 +471,7 @@ export default {
             axisTick: {
               show: false
             },
-            data: ['08-05','08-06','08-07','08-08','08-09','08-10']
+            data: this.echartsExpenseData.timeData
           }
         ],
         yAxis: [
@@ -501,7 +493,7 @@ export default {
             emphasis: {
               focus: 'series'
             },
-            data: [12,9,6,12,10,12]
+            data: this.echartsExpenseData.seriesDataGas
           },
           {
             name: '本金',
@@ -515,7 +507,7 @@ export default {
             emphasis: {
               focus: 'series'
             },
-            data: [12,9,6,12,10,12]
+            data: this.echartsExpenseData.seriesDataP
           },
         ]
       };
@@ -544,6 +536,50 @@ export default {
     },
     exportingReports(){
 
+    },
+    getExpectedInput(){
+      expectedInput().then(res=>{
+        this.echartsInputData = res
+        this.echartsInputData.predicts.forEach(item=>{
+          item.value = item.estimatedCost
+          item.name = item.projectName
+        })
+        this.initEchartsInput()
+      })
+    },
+    getCountFee(){
+      countFee().then(res=>{
+        this.countFee = res
+      })
+    },
+    getDailyCost(){
+      dailyCost().then(res=>{
+        this.echartsExpenseData = {
+          timeData:[],
+          seriesDataGas:[],
+          seriesDataP:[]
+        }
+        res.forEach(item=>{
+          this.echartsExpenseData.timeData.push(item.date)
+          this.echartsExpenseData.seriesDataGas.push(item.gas)
+          this.echartsExpenseData.seriesDataP.push(item.principal)
+        })
+        this.initEchartsExpense()
+      })
+    },
+    getTaskProgress(){
+      taskProgress().then(res=>{
+        this.progressData = res
+      })
+    },
+    getAddressGroup(){
+      addressGroup().then(res=>{
+        res.forEach(item=>{
+          this.echartsAddressData.xAxisData.push(item.groupName)
+          this.echartsAddressData.seriesData.push(item.addressCount)
+        })
+        this.initEchartsAddress()
+      })
     }
   },
 };