diff --git a/admin/src/views/admin/Dashboard.vue b/admin/src/views/admin/Dashboard.vue
index a36094b..a5494a3 100644
--- a/admin/src/views/admin/Dashboard.vue
+++ b/admin/src/views/admin/Dashboard.vue
@@ -17,11 +17,13 @@
-
企业余额
-
-
- 企业充值
-
+
+
企业余额
+
+ {{ enterpriseBalanceDisplay }}
+ 充值
+
+
@@ -190,6 +192,13 @@ const stats = reactive({
activeToday: 0
})
+/** 企业余额(分),来自 /admin/finance/overview,与财务页一致 */
+const balanceFen = ref(0)
+
+const fenToYuan = (fen: number) => (Number(fen || 0) / 100).toFixed(2)
+
+const enterpriseBalanceDisplay = computed(() => `¥${fenToYuan(balanceFen.value)}`)
+
const testTrends = ref<
Array<{ date: string; face: number; mbti: number; pdp: number; disc: number; total: number }>
>([])
@@ -377,10 +386,19 @@ function summarizeTypes(row: TopUserRow) {
return parts.length ? parts.join(' · ') : '—'
}
+async function loadFinanceBalance() {
+ try {
+ const res: any = await request.get('/admin/finance/overview')
+ balanceFen.value = Number(res?.data?.balanceFen ?? 0)
+ } catch {
+ balanceFen.value = 0
+ }
+}
+
const loadData = async () => {
loading.value = true
try {
- const response: any = await request.get('/admin/dashboard')
+ const [response] = await Promise.all([request.get('/admin/dashboard'), loadFinanceBalance()])
if (response.code === 200 && response.data) {
stats.totalUsers = response.data.totalUsers || 0
stats.testsCompleted = response.data.testsCompleted || 0
@@ -605,20 +623,38 @@ const loadInviteQrcode = async () => {
.stat-card-recharge {
.stat-card-recharge-inner {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- gap: 8px;
+ flex: 1;
min-width: 0;
}
- .recharge-btn {
- flex-shrink: 0;
+ .stat-info--recharge {
+ text-align: left;
+
+ .stat-value-row {
+ display: flex;
+ flex-direction: row;
+ align-items: baseline;
+ flex-wrap: wrap;
+ gap: 2px 8px;
+ }
+
+ .stat-value {
+ font-size: 22px;
+ font-weight: 700;
+ color: #111827;
+ line-height: 1.15;
+ font-variant-numeric: tabular-nums;
+ }
}
- .recharge-btn-icon {
- margin-right: 4px;
- vertical-align: middle;
+ .recharge-btn-inline {
+ flex-shrink: 0;
+ padding: 0 4px;
+ height: auto;
+ margin-bottom: -2px;
+ font-weight: 600;
+ font-size: 14px;
+ vertical-align: baseline;
}
.stat-icon.amber {
diff --git a/douyin-miniprogram/pages/index/result.js b/douyin-miniprogram/pages/index/result.js
index ce0f6df..033bfeb 100644
--- a/douyin-miniprogram/pages/index/result.js
+++ b/douyin-miniprogram/pages/index/result.js
@@ -562,6 +562,10 @@ Page({
tt.showShareMenu({ withShareTicket: true, menus: ['shareAppMessage'] })
},
+ goToQuestionnaireTest() {
+ tt.navigateTo({ url: '/pages/test-select/index' })
+ },
+
retake() {
// camera 是 tabBar 页面,必须用 switchTab
tt.switchTab({ url: '/pages/index/camera' })
diff --git a/douyin-miniprogram/pages/index/result.ttml b/douyin-miniprogram/pages/index/result.ttml
index 299c42d..3e2311a 100644
--- a/douyin-miniprogram/pages/index/result.ttml
+++ b/douyin-miniprogram/pages/index/result.ttml
@@ -106,6 +106,15 @@
+
+
+ 去做详细性格测试
+
diff --git a/douyin-miniprogram/pages/index/result.ttss b/douyin-miniprogram/pages/index/result.ttss
index e1d4579..ffe7faa 100644
--- a/douyin-miniprogram/pages/index/result.ttss
+++ b/douyin-miniprogram/pages/index/result.ttss
@@ -491,7 +491,32 @@
.type-details {
display: flex;
gap: 24rpx;
- margin-bottom: 24rpx;
+ margin-bottom: 8rpx;
+}
+
+.result-cta-questionnaire {
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 100%;
+ margin: 20rpx 0 32rpx;
+ padding: 24rpx 36rpx;
+ text-align: center;
+ background: linear-gradient(135deg, #e63946 0%, #e85d75 50%, #ff6b9d 100%);
+ border: none;
+ border-radius: 999rpx;
+ box-shadow: 0 6rpx 22rpx rgba(230, 57, 70, 0.35);
+}
+
+.result-cta-questionnaire--pressed {
+ opacity: 0.92;
+ transform: scale(0.985);
+}
+
+.result-cta-questionnaire-text {
+ font-size: 28rpx;
+ font-weight: 600;
+ color: #fff;
+ letter-spacing: 1rpx;
}
.type-box {
diff --git a/miniprogram/app.js b/miniprogram/app.js
index 4012a1c..89b1015 100644
--- a/miniprogram/app.js
+++ b/miniprogram/app.js
@@ -47,8 +47,8 @@ App({
// 超管配置的默认企业 ID(无 scene/eid 等入口参数时回落)
defaultEnterpriseId: null,
// API基础地址(开发时用本地,生产环境替换为实际域名)
- //apiBase: 'https://mbtiapi.quwanzhi.com',
- apiBase: 'http://mbti.com',
+ apiBase: 'https://mbtiapi.quwanzhi.com',
+ //apiBase: 'http://mbti.com',
// VIP信息
vipInfo: null,
// 测试次数
diff --git a/miniprogram/pages/index/result.js b/miniprogram/pages/index/result.js
index 9c80fa4..3249adb 100644
--- a/miniprogram/pages/index/result.js
+++ b/miniprogram/pages/index/result.js
@@ -586,6 +586,11 @@ Page({
wx.showShareMenu({ withShareTicket: true, menus: ['shareAppMessage', 'shareTimeline'] })
},
+ /** 跳转 MBTI / PDP / DISC 题目测试选择页 */
+ goToQuestionnaireTest() {
+ wx.navigateTo({ url: '/pages/test-select/index' })
+ },
+
retake() {
// camera 是 tabBar 页面,必须用 switchTab
wx.switchTab({ url: '/pages/index/camera' })
diff --git a/miniprogram/pages/index/result.wxml b/miniprogram/pages/index/result.wxml
index a162429..f4aa202 100644
--- a/miniprogram/pages/index/result.wxml
+++ b/miniprogram/pages/index/result.wxml
@@ -105,6 +105,15 @@
+
+
+ 去做详细性格测试
+