dingdanquanliucheng/frontend/mini-manager/pages/dashboard.js

71 lines
2.0 KiB
JavaScript
Raw Normal View History

2026-05-14 10:15:51 +08:00
const app = getApp()
function request(options) {
return new Promise((resolve) => {
wx.request({
url: `${app.globalData.apiBase}${options.url}`,
method: options.method || 'GET',
data: options.data || {},
header: options.header || {},
success: resolve,
fail: (error) => resolve({ statusCode: 500, data: { code: 500, message: error.errMsg } }),
})
})
}
Page({
data: {
token: '',
user: {},
stats: [],
orders: [],
audits: [],
loading: false,
error: '',
},
onShow() {
const token = wx.getStorageSync('mini-manager-token')
const user = wx.getStorageSync('mini-manager-user') || {}
if (!token) {
wx.redirectTo({ url: '/pages/login' })
return
}
this.setData({ token, user })
this.bootstrap()
},
async bootstrap() {
this.setData({ loading: true, error: '' })
const header = { Authorization: `Bearer ${this.data.token}` }
const [ordersRes, reportRes, auditRes] = await Promise.all([
request({ url: '/orders', header }),
request({ url: '/reports/performance', header }),
request({ url: '/audit-logs', header }),
])
const orders = ordersRes.data?.data?.list || []
const report = reportRes.data?.data || {}
const audits = auditRes.data?.data?.list || []
this.setData({
orders,
audits,
stats: [
{ label: '待审订单', value: orders.filter((item) => item.order_status === 'pending_approve').length },
{ label: '订单总数', value: report.order_count || orders.length },
{ label: '利润总额', value: Number(report.profit_total || 0).toFixed(2) },
],
loading: false,
})
},
gotoApprove(e) {
const { orderId } = e.currentTarget.dataset
wx.navigateTo({ url: `/pages/approve-detail?orderId=${orderId}` })
},
copyText() {
wx.showToast({ title: '已复制(示意)', icon: 'none' })
},
logout() {
wx.removeStorageSync('mini-manager-token')
wx.removeStorageSync('mini-manager-user')
wx.redirectTo({ url: '/pages/login' })
},
})