Browse Source

Merge branch 'donghaolin' into dev

donghaolin
donghaolin 4 months ago
parent
commit
d08e904852
  1. 325
      gold-system/src/views/workspace/index.vue

325
gold-system/src/views/workspace/index.vue

@ -6,7 +6,7 @@ import * as bs from "vue-icons-plus/bs";
import axios, { all } from "axios";
import API from "../../api/index";
import moment from "moment";
import * as math from 'mathjs';
import * as math from "mathjs";
import { getTime } from "element-plus/es/components/countdown/src/utils.mjs";
//
@ -89,22 +89,10 @@ const get = async function () {
getAreaRank();
getMiddleBar();
// POST
const result1 = await API.post(
"/hwjb/statistics/getSumCoin",
{}
);
const result2 = await API.post(
"/hwjb/statistics/a",
{}
);
const result3 = await API.post(
"/hwjb/statistics/getYearConsumeCoin",
{}
);
const result4 = await API.post(
"/hwjb/statistics/getDayConsumeCoin",
{}
);
const result1 = await API.post("/hwjb/statistics/getSumCoin", {});
const result2 = await API.post("/hwjb/statistics/a", {});
const result3 = await API.post("/hwjb/statistics/getYearConsumeCoin", {});
const result4 = await API.post("/hwjb/statistics/getDayConsumeCoin", {});
// const result5 = await API.post(
// "/hwjb/statistics/getMediumAreaPay",
// {}
@ -122,10 +110,7 @@ const get = async function () {
// "/hwjb/statistics/getMediuConsumeCoin",
// {}
// );
const result9 = await API.post(
"/hwjb/statistics/b",
{}
);
const result9 = await API.post("/hwjb/statistics/b", {});
//
getSumCoin.value = result1.data;
@ -214,13 +199,13 @@ const get = async function () {
ERPData.value.forEach((item, index) =>
item == ""
? (ERPData.value[index] = {
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
: (ERPData.value[index] = {
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
);
console.log("ERPData", ERPData.value);
HCData.value = [
@ -240,13 +225,13 @@ const get = async function () {
HCData.value.forEach((item, index) =>
item == ""
? (HCData.value[index] = {
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
: (HCData.value[index] = {
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
);
console.log("HCData", HCData.value);
LinkData.value = [
@ -266,13 +251,13 @@ const get = async function () {
LinkData.value.forEach((item, index) =>
item == ""
? (LinkData.value[index] = {
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
: (LinkData.value[index] = {
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
);
console.log("LinkData", LinkData.value);
goldData.value = [
@ -292,13 +277,13 @@ const get = async function () {
goldData.value.forEach((item, index) =>
item == ""
? (goldData.value[index] = {
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
value: 0,
name: "第" + (index + 1) + "学科" + 0,
})
: (goldData.value[index] = {
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
value: item[0],
name: "第" + (index + 1) + "学科" + item[0],
})
);
console.log("goldData", goldData.value);
allData.value = [
@ -368,7 +353,7 @@ const get = async function () {
//
const getMiddleBar = async function () {
const result = await API.post(
"/hwjb/statistics/getCoinTime",
"hwjb/statistics/getCoinTime",
getMiddleBarObj.value
);
@ -393,13 +378,22 @@ const getMiddleBar = async function () {
middleTotalFree.value = 0;
middleTotalTask.value = 0;
middleRecharge.value.forEach((number) => {
middleTotalRecharge.value = math.add(math.bignumber(middleTotalRecharge.value), math.bignumber(number));
middleTotalRecharge.value = math.add(
math.bignumber(middleTotalRecharge.value),
math.bignumber(number)
);
});
middleFree.value.forEach((number) => {
middleTotalFree.value = math.add(math.bignumber(middleTotalFree.value), math.bignumber(number));
middleTotalFree.value = math.add(
math.bignumber(middleTotalFree.value),
math.bignumber(number)
);
});
middleTask.value.forEach((number) => {
middleTotalTask.value = math.add(math.bignumber(middleTotalTask.value), math.bignumber(number));
middleTotalTask.value = math.add(
math.bignumber(middleTotalTask.value),
math.bignumber(number)
);
});
console.log("middleCategory", middleCategory.value);
@ -696,7 +690,8 @@ const thisYear = function () {
const current = new Date();
const startDate = new Date(current.getFullYear(), 0, 1);
const endDate = new Date(current.getFullYear(), current.getMonth() + 1, 0);
searchTime.value = [startDate, endDate];
const year = 1;
searchTime.value = [startDate, endDate, year];
search();
// console.log("searchTime", moment(searchTime.value[0]).format("YYYY-MM-DD") + "" + moment(searchTime.value[1]).format("YYYY-MM-DD"))
};
@ -726,8 +721,8 @@ const search = function () {
console.log(
"searchTime",
moment(searchTime.value[0]).format("YYYY-MM-DD") +
"至" +
moment(searchTime.value[1]).format("YYYY-MM-DD")
"至" +
moment(searchTime.value[1]).format("YYYY-MM-DD")
);
getMiddleBarObj.value.searchStartTime = moment(searchTime.value[0]).format(
@ -758,6 +753,11 @@ const search = function () {
}
console.log("getAreaRankObj", getAreaRankObj.value);
if (searchTime.value[2] == 1) {
getMiddleBarObj.value.year = searchTime.value[2];
} else {
delete getMiddleBarObj.value.year;
}
getMiddleBar();
areaRankLoading.value = true;
getAreaRank();
@ -956,8 +956,8 @@ onMounted(async function () {
trigger: "item",
position: ["15%", "-3%"],
formatter: function (params) {
return params.seriesName + '<br/>' + params.name;
}
return params.seriesName + "<br/>" + params.name;
},
},
legend: {
bottom: "-1%",
@ -995,8 +995,8 @@ onMounted(async function () {
trigger: "item",
position: ["15%", "-3%"],
formatter: function (params) {
return params.seriesName + '<br/>' + params.name;
}
return params.seriesName + "<br/>" + params.name;
},
},
legend: {
bottom: "-1%",
@ -1039,8 +1039,18 @@ onMounted(async function () {
trigger: "item",
position: ["15%", "-3%"],
formatter: function (params) {
return params.seriesName + '<br/>' + params.name + (params.value == getSumCoin.value.todayFree ? '</br>6月到期 | ' + statistics.value.free6SumCoin + ' ; 12月到期 | ' + statistics.value.free12SumCoin : '');
}
return (
params.seriesName +
"<br/>" +
params.name +
(params.value == getSumCoin.value.todayFree
? "</br>6月到期 | " +
statistics.value.free6SumCoin +
" ; 12月到期 | " +
statistics.value.free12SumCoin
: "")
);
},
},
legend: {
bottom: "-1%",
@ -1099,7 +1109,7 @@ onMounted(async function () {
<div v-loading="loading">
<el-row :gutter="20">
<el-col :span="6">
<el-card style="height: 260px;">
<el-card style="height: 260px">
<p>当前金币余量</p>
<p class="head-mid-font">
{{ formatNum(getSumCoin.todayTotalCoin) }}
@ -1108,33 +1118,47 @@ onMounted(async function () {
<span v-if="getSumCoin.coinDifference > 0">
<div class="comparedWithYesterday">
<span>较前一天 {{ formatNum(getSumCoin.coinDifference) }}</span>
<span class="red-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="red-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
<span v-if="getSumCoin.coinDifference < 0">
<div class="comparedWithYesterday">
<span>较前一天 {{ formatNum(getSumCoin.coinDifference) }}</span>
<span class="green-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="green-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
<span v-if="getSumCoin.coinDifference == 0">
<div class="comparedWithYesterday">
<span>较前一天 {{ formatNum(getSumCoin.coinDifference) }}</span>
<span class="grey-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="grey-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
</p>
<template #footer>
<span>永久{{ formatNum(getSumCoin.todayRecharge) }}
免费{{ formatNum(getSumCoin.todayFree) }}
<span
>永久{{ formatNum(getSumCoin.todayRecharge) }} 免费{{
formatNum(getSumCoin.todayFree)
}}
任务{{ formatNum(getSumCoin.todayTask) }}
</span>
<p style="font-size: 12px;">免费金币6月到期 | {{ formatNum(statistics.free6SumCoin) }} ; 12月到期 | {{ formatNum(statistics.free12SumCoin) }}</p>
<p style="font-size: 12px">
免费金币6月到期 | {{ formatNum(statistics.free6SumCoin) }} ;
12月到期 | {{ formatNum(statistics.free12SumCoin) }}
</p>
</template>
</el-card>
</el-col>
<el-col :span="6">
<el-card style="height: 260px;">
<el-card style="height: 260px">
<p>全年累计金币数</p>
<p class="head-mid-font">
{{ formatNum(Math.abs(statistics.totalSumCoin)) }}
@ -1143,7 +1167,8 @@ onMounted(async function () {
折合新币累计金额
{{ formatNum(Math.abs(statistics.rechargeSumCoin)) }}
</p>
<template #footer>昨日新增
<template #footer
>昨日新增
{{ formatNum(Math.abs(statistics.totalYesterdaySumCoin)) }}
其中充值
{{ formatNum(Math.abs(statistics.rechargeYesterdaySumCoin)) }}
@ -1151,7 +1176,7 @@ onMounted(async function () {
</el-card>
</el-col>
<el-col :span="6">
<el-card style="height: 260px;">
<el-card style="height: 260px">
<p>全年累计消耗金币数</p>
<p class="head-mid-font">
{{ formatNum(Math.abs(getYearConsumeCoin.yearsumCoin)) }}
@ -1160,14 +1185,16 @@ onMounted(async function () {
消费 {{ formatNum(Math.abs(getYearConsumeCoin.yearConsumeCoin)) }};
退款 {{ formatNum(Math.abs(getYearConsumeCoin.yearRefundCoin)) }}
</p>
<template #footer>昨日新增消耗
<template #footer
>昨日新增消耗
{{ formatNum(Math.abs(getDayConsumeCoin.daysumCoin)) }} ; 消费
{{ formatNum(Math.abs(getDayConsumeCoin.dayConsumeCoin)) }} ; 退款
{{ formatNum(Math.abs(getDayConsumeCoin.dayRefundCoin)) }}</template>
{{ formatNum(Math.abs(getDayConsumeCoin.dayRefundCoin)) }}</template
>
</el-card>
</el-col>
<el-col :span="6">
<el-card style="height: 260px;">
<el-card style="height: 260px">
<p>全年累计充值人数</p>
<p class="head-mid-font">
{{ formatNum(Math.abs(statistics.rechargeCount)) }}
@ -1176,46 +1203,66 @@ onMounted(async function () {
<span v-if="statistics.weekOverWeekRate > 0">
<div class="comparedWithYesterday">
<span>周同比 {{ statistics.weekOverWeekRate }}%</span>
<span class="red-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="red-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
<span v-if="statistics.weekOverWeekRate < 0">
<div class="comparedWithYesterday">
<span>周同比 {{ statistics.weekOverWeekRate }}%</span>
<span class="green-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="green-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
<span v-if="statistics.weekOverWeekRate == 0">
<div class="comparedWithYesterday">
<span>周同比 {{ statistics.weekOverWeekRate }}%</span>
<span class="grey-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="grey-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span v-if="statistics.dayOverDayRate > 0">
<div class="comparedWithYesterday">
<span> 日环比{{ statistics.dayOverDayRate }}%</span>
<span class="red-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="red-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
<span v-if="statistics.dayOverDayRate < 0">
<div class="comparedWithYesterday">
<span> 日环比{{ statistics.dayOverDayRate }}%</span>
<span class="green-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="green-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
<span v-if="statistics.dayOverDayRate == 0">
<div class="comparedWithYesterday">
<span> 日环比{{ statistics.dayOverDayRate }}%</span>
<span class="grey-triangle" style="margin: 6px 0px 0px 7px"></span>
<span
class="grey-triangle"
style="margin: 6px 0px 0px 7px"
></span>
</div>
</span>
</p>
<template #footer>昨日充值人数
<template #footer
>昨日充值人数
{{ formatNum(Math.abs(statistics.rechargeCountYesterday)) }}
其中首充
{{ formatNum(Math.abs(statistics.firstRechargeCountYesterday)) }}
</template>
</template
>
</el-card>
</el-col>
</el-row>
@ -1223,23 +1270,59 @@ onMounted(async function () {
<el-col>
<el-card>
<div style="margin-right: auto; text-align: right">
<el-radio-group v-model="changeTimeRatio" style="margin-right: 10px" @change="changeTime()">
<el-radio-button label="全部" value="allDays" style="border-color: white" />
<el-radio-button label="本日" value="day" style="border-color: white" />
<el-radio-button label="本周" value="week" style="border-color: white" />
<el-radio-button label="本月" value="month" style="border-color: white" />
<el-radio-button label="本年" value="year" style="border-color: white" />
<el-radio-group
v-model="changeTimeRatio"
style="margin-right: 10px"
@change="changeTime()"
>
<el-radio-button
label="全部"
value="allDays"
style="border-color: white"
/>
<el-radio-button
label="本日"
value="day"
style="border-color: white"
/>
<el-radio-button
label="本周"
value="week"
style="border-color: white"
/>
<el-radio-button
label="本月"
value="month"
style="border-color: white"
/>
<el-radio-button
label="本年"
value="year"
style="border-color: white"
/>
</el-radio-group>
<!-- <el-button text @click="allTime()" dark=true>全部</el-button>
<el-button text @click="today()">今日</el-button>
<el-button text @click="thisWeek()">本周</el-button>
<el-button text @click="thisMonth()">本月</el-button>
<el-button text @click="thisYear()">本年</el-button> -->
<el-date-picker v-model="searchTime" type="daterange" range-separator="" start-placeholder="开始时间"
end-placeholder="结束时间" style="width: 200px" :disabled-date="disabledDate" @change="search" />
<el-date-picker
v-model="searchTime"
type="daterange"
range-separator="→"
start-placeholder="开始时间"
end-placeholder="结束时间"
style="width: 200px"
:disabled-date="disabledDate"
@change="search"
/>
</div>
<el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleChange">
<el-tabs
v-model="activeName"
class="demo-tabs"
@tab-change="handleChange"
>
<el-tab-pane label="金币充值" name="recharge">
<div>
合计永久金币
@ -1270,21 +1353,37 @@ onMounted(async function () {
</div>
<div style="width: 310px">
<div class="ranking-header">
<span style="margin-right: 90px; width: 150px">地区金币充值排名</span>
<el-select v-model="goldType" placeholder="请选择金币类型" size="small" style="width: 90px"
@change="changeGoldType">
<el-option v-for="item in gold" :key="item.value" :label="item.label" :value="item.value" />
<span style="margin-right: 90px; width: 150px"
>地区金币充值排名</span
>
<el-select
v-model="goldType"
placeholder="请选择金币类型"
size="small"
style="width: 90px"
@change="changeGoldType"
>
<el-option
v-for="item in gold"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div v-loading="areaRankLoading">
<el-scrollbar height="360px">
<div v-for="(item, index) in areaRank" :key="item" class="ranking-item">
<div
v-for="(item, index) in areaRank"
:key="item"
class="ranking-item"
>
<!-- <component :is="findBsComponent(index)" /> -->
<span style="width: 15px; text-align: center">{{
index + 1
}}</span>
<span style="margin-left: 10px">{{ item.name }}</span>
<span style="margin-left: auto;margin-right: 10px">{{
<span style="margin-left: auto; margin-right: 10px">{{
formatNum(item.value)
}}</span>
</div>
@ -1323,21 +1422,37 @@ onMounted(async function () {
</div>
<div style="width: 310px">
<div class="ranking-header">
<span style="margin-right: 90px; width: 150px">地区金币消费排名</span>
<el-select v-model="goldType" placeholder="请选择金币类型" size="small" style="width: 90px"
@change="changeGoldType">
<el-option v-for="item in gold" :key="item.value" :label="item.label" :value="item.value" />
<span style="margin-right: 90px; width: 150px"
>地区金币消费排名</span
>
<el-select
v-model="goldType"
placeholder="请选择金币类型"
size="small"
style="width: 90px"
@change="changeGoldType"
>
<el-option
v-for="item in gold"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div v-loading="areaRankLoading">
<el-scrollbar height="360px">
<div v-for="(item, index) in areaRank" :key="item" class="ranking-item">
<div
v-for="(item, index) in areaRank"
:key="item"
class="ranking-item"
>
<!-- <component :is="findBsComponent(index)" /> -->
<span style="width: 15px; text-align: center">{{
index + 1
}}</span>
<span style="margin-left: 10px">{{ item.name }}</span>
<span style="margin-left: auto;margin-right: 10px">{{
<span style="margin-left: auto; margin-right: 10px">{{
formatNum(item.value)
}}</span>
</div>
@ -1370,8 +1485,14 @@ onMounted(async function () {
<template #header>
<div class="card-header" style="display: flex">
<span class="tail-head">四大学科类别占比</span>
<el-radio-group v-model="platform" fill="#ffffff" text-color="#409eff" size="small"
@change="changePlatform" style="margin-left: auto">
<el-radio-group
v-model="platform"
fill="#ffffff"
text-color="#409eff"
size="small"
@change="changePlatform"
style="margin-left: auto"
>
<el-radio-button label="全部平台" value="全部平台" />
<el-radio-button label="ERP" value="ERP" />
<el-radio-button label="HC" value="HC" />

Loading…
Cancel
Save