饼状图不再统计空名

This commit is contained in:
eoao
2025-06-25 11:46:34 +08:00
parent 9aa8d3a410
commit 6af78c21ea
6 changed files with 199 additions and 202 deletions

View File

@@ -125,7 +125,7 @@
<span> <span>
<Icon icon="mdi-light:email" width="20" height="20"/> <Icon icon="mdi-light:email" width="20" height="20"/>
</span> </span>
<span>{{ item.accountEmail }}</span> <span>{{ item.status === 7 ? formateReceive(item.recipient) : item.accountEmail }}</span>
</div> </div>
<div class="del-status" v-if="item.isDel"> <div class="del-status" v-if="item.isDel">
<el-tag type="info" size="small">已删除</el-tag> <el-tag type="info" size="small">已删除</el-tag>
@@ -271,6 +271,12 @@ const accountShow = computed(() => {
return uiStore.accountShow && settingStore.settings.manyEmail === 0 return uiStore.accountShow && settingStore.settings.manyEmail === 0
}) })
function formateReceive(recipient) {
recipient = JSON.parse(recipient)
return recipient.map(item => item.address).join(', ')
}
function handleScroll(e) { function handleScroll(e) {
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -6,8 +6,8 @@
<title></title> <title></title>
<link rel="icon" href="/assets/favicon-C5dAZutX.svg" type="image/svg+xml"> <link rel="icon" href="/assets/favicon-C5dAZutX.svg" type="image/svg+xml">
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script> <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<script type="module" crossorigin src="/assets/index-BgK8IB2e.js"></script> <script type="module" crossorigin src="/assets/index-BYWjgX4H.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BJW3-Q2l.css"> <link rel="stylesheet" crossorigin href="/assets/index-DIddMqZG.css">
</head> </head>
<body> <body>
<div id="loading-first"> <div id="loading-first">

View File

@@ -1,7 +1,7 @@
import analysisDao from '../dao/analysis-dao'; import analysisDao from '../dao/analysis-dao';
import orm from '../entity/orm'; import orm from '../entity/orm';
import email from '../entity/email'; import email from '../entity/email';
import { desc, count, eq } from 'drizzle-orm'; import { desc, count, eq, and, ne, isNotNull } from 'drizzle-orm';
import { emailConst } from '../const/entity-const'; import { emailConst } from '../const/entity-const';
import kvConst from '../const/kv-const'; import kvConst from '../const/kv-const';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
@@ -17,7 +17,6 @@ const analysisService = {
const [ const [
numberCount, numberCount,
nameRatio, nameRatio,
sendEmailRatio,
userDayCountRaw, userDayCountRaw,
receiveDayCountRaw, receiveDayCountRaw,
sendDayCountRaw, sendDayCountRaw,
@@ -28,18 +27,11 @@ const analysisService = {
orm(c) orm(c)
.select({ name: email.name, total: count() }) .select({ name: email.name, total: count() })
.from(email) .from(email)
.where(eq(email.type, emailConst.type.RECEIVE)) .where(and(eq(email.type, emailConst.type.RECEIVE), isNotNull(email.name), ne(email.name,'')))
.groupBy(email.name) .groupBy(email.name)
.orderBy(desc(count())) .orderBy(desc(count()))
.limit(6), .limit(6),
orm(c)
.select({ email: email.sendEmail, total: count() })
.from(email)
.where(eq(email.type, emailConst.type.RECEIVE))
.groupBy(email.sendEmail)
.orderBy(desc(count()))
.limit(6),
analysisDao.userDayCount(c), analysisDao.userDayCount(c),
analysisDao.receiveDayCount(c), analysisDao.receiveDayCount(c),
@@ -59,8 +51,7 @@ const analysisService = {
numberCount, numberCount,
userDayCount, userDayCount,
receiveRatio: { receiveRatio: {
nameRatio, nameRatio
sendEmailRatio
}, },
emailDayCount: { emailDayCount: {
receiveDayCount, receiveDayCount,