refactor: switch to free-trial/private-deploy/buyout pricing, fix feature gaps, add SEO landing + deploy config

This commit is contained in:
TradeMate Dev
2026-07-12 08:09:28 +08:00
parent 9ca5d79d8a
commit 04924e3bc4
36 changed files with 1026 additions and 975 deletions
+4 -1
View File
@@ -29,8 +29,11 @@ export function searchUsers(query) { return http.post('/admin/users/search', { q
export function listUsers(page = 1, size = 20) { return http.get('/admin/users', { params: { page, size } }) }
export function getUserDetail(id) { return http.get(`/admin/users/${id}`) }
export function updateUser(id, data) { return http.put(`/admin/users/${id}`, data) }
export function updateUserTier(id, tier) { return http.patch(`/admin/users/${id}/tier`, { tier }) }
export function toggleUserActive(id) { return http.post(`/admin/users/${id}/toggle-active`) }
export function updateUserRole(id, role) { return http.patch(`/admin/users/${id}/role`, { role }) }
export function getUsageStats() { return http.get('/admin/stats/usage') }
export function getUsageStats() { return http.get('/admin/usage-stats') }
export function listLogs(params) { return http.get('/admin/logs', { params }) }
+4 -4
View File
@@ -65,7 +65,7 @@
<script setup>
import { ref, onMounted } from 'vue'
import { ElMessage } from 'element-plus'
import { listUsers, searchUsers, updateUser } from '@/api'
import { listUsers, searchUsers, updateUserTier, toggleUserActive, updateUserRole } from '@/api'
const loading = ref(false)
const searching = ref(false)
@@ -97,16 +97,16 @@ async function doSearch() {
}
async function changeTier(row, tier) {
try { await updateUser(row.id, { tier }); row.tier = tier; ElMessage.success('已更新') }
try { await updateUserTier(row.id, tier); row.tier = tier; ElMessage.success('已更新') }
catch (e) { ElMessage.error(e?.detail || '操作失败') }
}
async function toggleActive(row) {
try { await updateUser(row.id, { is_active: !row.is_active }); row.is_active = !row.is_active; ElMessage.success('已更新') }
try { await toggleUserActive(row.id); row.is_active = !row.is_active; ElMessage.success('已更新') }
catch (e) { ElMessage.error(e?.detail || '操作失败') }
}
async function toggleRole(row) {
const role = row.role === 'admin' ? 'user' : 'admin'
try { await updateUser(row.id, { role }); row.role = role; ElMessage.success('已更新') }
try { await updateUserRole(row.id, role); row.role = role; ElMessage.success('已更新') }
catch (e) { ElMessage.error(e?.detail || '操作失败') }
}