admin模块接入数据库
This commit is contained in:
@@ -5,10 +5,12 @@
|
||||
<view class="filter-card">
|
||||
<view class="filter-item">
|
||||
<text class="filter-label">时间选择:</text>
|
||||
<view class="date-picker-mock">
|
||||
<image class="calendar-icon" src="/static/icons/calendar.png" mode="aspectFit" />
|
||||
<text class="date-range">2026/01/04 - 2026/02/02</text>
|
||||
</view>
|
||||
<AnalyticsDateRangePicker
|
||||
:initialStartDate="startDate"
|
||||
:initialEndDate="endDate"
|
||||
@apply="onApplyRange"
|
||||
@clear="onClearRange"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -123,7 +125,9 @@
|
||||
import { ref, onMounted } from 'vue'
|
||||
import AdminLayout from '@/layouts/admin/AdminLayout.uvue'
|
||||
import EChartsView from '@/uni_modules/charts/EChartsView.vue'
|
||||
import AnalyticsDateRangePicker from '@/components/analytics/AnalyticsDateRangePicker.uvue'
|
||||
import { fetchOrderStats, fetchOrderTrend, fetchOrderSourceStats, fetchOrderTypeStats } from '@/services/orderService.uts'
|
||||
import AkReq from '@/uni_modules/ak-req/ak-req.uts'
|
||||
|
||||
const currentPage = ref<string>('order_statistic')
|
||||
|
||||
@@ -132,32 +136,57 @@ const trendOption = ref<any>({})
|
||||
const sourceOption = ref<any>({})
|
||||
const orderStats = ref<any>(null)
|
||||
|
||||
const startDate = ref<string>('')
|
||||
const endDate = ref<string>('')
|
||||
|
||||
const orderTypeData = ref([
|
||||
{ name: '普通订单', amount: '0.00', rate: '0.00' }
|
||||
])
|
||||
|
||||
onMounted(() => {
|
||||
if (AkReq.getToken() == null || AkReq.getToken() === '') {
|
||||
return
|
||||
}
|
||||
|
||||
// 默认最近 30 天
|
||||
const end = new Date()
|
||||
const start = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)
|
||||
startDate.value = start.toISOString().substring(0, 10)
|
||||
endDate.value = end.toISOString().substring(0, 10)
|
||||
|
||||
loadAllData()
|
||||
})
|
||||
|
||||
function onApplyRange(payload: any) {
|
||||
startDate.value = payload?.start ?? ''
|
||||
endDate.value = payload?.end ?? ''
|
||||
loadAllData()
|
||||
}
|
||||
|
||||
function onClearRange() {
|
||||
startDate.value = ''
|
||||
endDate.value = ''
|
||||
loadAllData()
|
||||
}
|
||||
|
||||
async function loadAllData() {
|
||||
const endTime = new Date().toISOString()
|
||||
const startTime = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString()
|
||||
const st = startDate.value ? (startDate.value + ' 00:00:00') : new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString()
|
||||
const et = endDate.value ? (endDate.value + ' 23:59:59') : new Date().toISOString()
|
||||
|
||||
try {
|
||||
// 1. 加载汇总数据
|
||||
orderStats.value = await fetchOrderStats(startTime, endTime)
|
||||
orderStats.value = await fetchOrderStats(st, et)
|
||||
|
||||
// 2. 加载趋势数据
|
||||
const trendData = await fetchOrderTrend(startTime, endTime)
|
||||
const trendData = await fetchOrderTrend(st, et)
|
||||
initTrendChart(trendData)
|
||||
|
||||
// 3. 加载来源数据
|
||||
const sourceData = await fetchOrderSourceStats(startTime, endTime)
|
||||
const sourceData = await fetchOrderSourceStats(st, et)
|
||||
initSourceChart(sourceData)
|
||||
|
||||
// 4. 加载订单类型数据
|
||||
const typeData = await fetchOrderTypeStats(startTime, endTime)
|
||||
const typeData = await fetchOrderTypeStats(st, et)
|
||||
orderTypeData.value = typeData
|
||||
} catch (e) {
|
||||
uni.showToast({ title: '加载统计数据失败', icon: 'none' })
|
||||
|
||||
Reference in New Issue
Block a user