|
@@ -18,14 +18,14 @@
|
|
|
<div class="overview-card">
|
|
<div class="overview-card">
|
|
|
<div class="overview-icon"><i class="fas fa-paper-plane"></i></div>
|
|
<div class="overview-icon"><i class="fas fa-paper-plane"></i></div>
|
|
|
<div class="overview-info">
|
|
<div class="overview-info">
|
|
|
- <div class="overview-value">{{ emailAccounts.reduce((sum, a) => sum + a.sendToday, 0) }}</div>
|
|
|
|
|
- <div class="overview-label">今日发送</div>
|
|
|
|
|
|
|
+ <div class="overview-value">{{ total.sendTotal }}</div>
|
|
|
|
|
+ <div class="overview-label">总发送</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="overview-card">
|
|
<div class="overview-card">
|
|
|
<div class="overview-icon"><i class="fas fa-reply"></i></div>
|
|
<div class="overview-icon"><i class="fas fa-reply"></i></div>
|
|
|
<div class="overview-info">
|
|
<div class="overview-info">
|
|
|
- <div class="overview-value">{{ Math.round(emailAccounts.reduce((sum, a) => sum + a.replyRate, 0) / emailAccounts.length) }}%</div>
|
|
|
|
|
|
|
+ <div class="overview-value">{{ Math.round(total.replyRate) }}%</div>
|
|
|
<div class="overview-label">平均回复率</div>
|
|
<div class="overview-label">平均回复率</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -51,9 +51,9 @@
|
|
|
<div class="account-email">{{ account.emailAddress }}</div>
|
|
<div class="account-email">{{ account.emailAddress }}</div>
|
|
|
<div class="account-name">销售邮箱</div>
|
|
<div class="account-name">销售邮箱</div>
|
|
|
<div class="account-stats">
|
|
<div class="account-stats">
|
|
|
- <span><i class="fas fa-paper-plane"></i> 总发送: 45</span>
|
|
|
|
|
- <span><i class="fas fa-reply"></i> 回复率: 32%</span>
|
|
|
|
|
- <span><i class="fas fa-sync"></i> 2026-03-24 09:00</span>
|
|
|
|
|
|
|
+ <span><i class="fas fa-paper-plane"></i> 总发送: {{ account.accountTotal.sendCount }}</span>
|
|
|
|
|
+ <span><i class="fas fa-reply"></i> 回复率: {{ account.accountTotal.replyRate * 100 }}%</span>
|
|
|
|
|
+ <span v-if="account.accountTotal.lastSendTime"><i class="fas fa-sync"></i> {{ account.accountTotal.lastSendTime }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- <div class="account-auth">
|
|
<!-- <div class="account-auth">
|
|
@@ -255,7 +255,7 @@
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { ref } from 'vue'
|
|
import { ref } from 'vue'
|
|
|
import AddEmailModal from './addEmail.vue'
|
|
import AddEmailModal from './addEmail.vue'
|
|
|
- import { getMailsPort } from '@/api/emails'
|
|
|
|
|
|
|
+ import { getMailsPort, getAccountTotal } from '@/api/emails'
|
|
|
|
|
|
|
|
const showEmailModal = ref(false)
|
|
const showEmailModal = ref(false)
|
|
|
// 企业邮箱列表
|
|
// 企业邮箱列表
|
|
@@ -265,9 +265,25 @@
|
|
|
])
|
|
])
|
|
|
|
|
|
|
|
const emailList = ref([])
|
|
const emailList = ref([])
|
|
|
|
|
+ const total = ref({
|
|
|
|
|
+ sendTotal: 0,
|
|
|
|
|
+ replyRate: 0
|
|
|
|
|
+ })
|
|
|
const open = (list) => {
|
|
const open = (list) => {
|
|
|
showEmailModal.value = true
|
|
showEmailModal.value = true
|
|
|
emailList.value = list || []
|
|
emailList.value = list || []
|
|
|
|
|
+ let params = {
|
|
|
|
|
+ outboxIds: emailList.value.map(item => item.id).join(',')
|
|
|
|
|
+ }
|
|
|
|
|
+ if(emailList.value.length != 0) {
|
|
|
|
|
+ getAccountTotal(params).then(res => {
|
|
|
|
|
+ emailList.value.map(item => {
|
|
|
|
|
+ item.accountTotal = res.result.find(acc => acc.outboxId === item.id) || {}
|
|
|
|
|
+ })
|
|
|
|
|
+ total.value.sendTotal = emailList.value.reduce((sum, a) => sum + (a.accountTotal.sendCount || 0), 0)
|
|
|
|
|
+ total.value.replyRate = emailList.value.reduce((sum, a) => sum + (a.accountTotal.replyRate * 100 || 0), 0) / emailList.value.length
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const tabTyps = ref('email')
|
|
const tabTyps = ref('email')
|