|
@@ -23,42 +23,42 @@
|
|
|
<div class="stat-card-lg">
|
|
<div class="stat-card-lg">
|
|
|
<div class="stat-icon-lg blue"><i class="fas fa-paper-plane"></i></div>
|
|
<div class="stat-icon-lg blue"><i class="fas fa-paper-plane"></i></div>
|
|
|
<div class="stat-content-lg">
|
|
<div class="stat-content-lg">
|
|
|
- <h3>{{ formatNumber(marketingStats.totalSent) }}</h3>
|
|
|
|
|
|
|
+ <h3>{{ statsData?.monthlySent }}</h3>
|
|
|
<p>本月发送</p>
|
|
<p>本月发送</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="stat-card-lg">
|
|
<div class="stat-card-lg">
|
|
|
<div class="stat-icon-lg green"><i class="fas fa-envelope-open"></i></div>
|
|
<div class="stat-icon-lg green"><i class="fas fa-envelope-open"></i></div>
|
|
|
<div class="stat-content-lg">
|
|
<div class="stat-content-lg">
|
|
|
- <h3>{{ marketingStats.openRate }}%</h3>
|
|
|
|
|
|
|
+ <h3>{{ statsData?.avgOpenRate }}</h3>
|
|
|
<p>平均打开率</p>
|
|
<p>平均打开率</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="stat-card-lg">
|
|
<div class="stat-card-lg">
|
|
|
<div class="stat-icon-lg purple"><i class="fas fa-mouse-pointer"></i></div>
|
|
<div class="stat-icon-lg purple"><i class="fas fa-mouse-pointer"></i></div>
|
|
|
<div class="stat-content-lg">
|
|
<div class="stat-content-lg">
|
|
|
- <h3>{{ marketingStats.clickRate }}%</h3>
|
|
|
|
|
|
|
+ <h3>{{ statsData?.clickRate }}</h3>
|
|
|
<p>点击率</p>
|
|
<p>点击率</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="stat-card-lg">
|
|
<div class="stat-card-lg">
|
|
|
<div class="stat-icon-lg orange"><i class="fas fa-reply"></i></div>
|
|
<div class="stat-icon-lg orange"><i class="fas fa-reply"></i></div>
|
|
|
<div class="stat-content-lg">
|
|
<div class="stat-content-lg">
|
|
|
- <h3>{{ marketingStats.replyRate }}%</h3>
|
|
|
|
|
|
|
+ <h3>{{ statsData?.replyRate }}</h3>
|
|
|
<p>回复率</p>
|
|
<p>回复率</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="stat-card-lg">
|
|
<div class="stat-card-lg">
|
|
|
<div class="stat-icon-lg success"><i class="fas fa-shield-alt"></i></div>
|
|
<div class="stat-icon-lg success"><i class="fas fa-shield-alt"></i></div>
|
|
|
<div class="stat-content-lg">
|
|
<div class="stat-content-lg">
|
|
|
- <h3>{{ marketingStats.protectedCustomers }}</h3>
|
|
|
|
|
|
|
+ <h3>{{ statsData?.protectedCustomers }}</h3>
|
|
|
<p>受保护客户</p>
|
|
<p>受保护客户</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="stat-card-lg">
|
|
<div class="stat-card-lg">
|
|
|
<div class="stat-icon-lg warning"><i class="fas fa-exclamation-circle"></i></div>
|
|
<div class="stat-icon-lg warning"><i class="fas fa-exclamation-circle"></i></div>
|
|
|
<div class="stat-content-lg">
|
|
<div class="stat-content-lg">
|
|
|
- <h3>{{ marketingStats.pendingReview }}</h3>
|
|
|
|
|
|
|
+ <h3>{{ statsData?.pendingReview }}</h3>
|
|
|
<p>待审核</p>
|
|
<p>待审核</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -1254,7 +1254,7 @@
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { ref, computed, onMounted } from 'vue'
|
|
import { ref, computed, onMounted } from 'vue'
|
|
|
import AddMarketing from '../components/addMarketing.vue'
|
|
import AddMarketing from '../components/addMarketing.vue'
|
|
|
-import { getMarketingList, getSopById } from '../api/marketing'
|
|
|
|
|
|
|
+import { getMarketingList, getSopById, marketingAnalysis } from '../api/marketing'
|
|
|
|
|
|
|
|
const filterTab = ref('all')
|
|
const filterTab = ref('all')
|
|
|
|
|
|
|
@@ -1289,6 +1289,7 @@ const openCreateModal = () => {
|
|
|
const marketingList = ref([])
|
|
const marketingList = ref([])
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
getData()
|
|
getData()
|
|
|
|
|
+ getStatsData()
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
const getData = () => {
|
|
const getData = () => {
|
|
@@ -1306,6 +1307,13 @@ const getData = () => {
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const statsData = ref()
|
|
|
|
|
+const getStatsData = () => {
|
|
|
|
|
+ marketingAnalysis().then(res => {
|
|
|
|
|
+ statsData.value = res.result
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
|
|
|
// History filters
|
|
// History filters
|
|
|
const historySearch = ref('')
|
|
const historySearch = ref('')
|