feat platform dashboard and organization management

This commit is contained in:
david
2026-07-29 14:51:13 +08:00
parent 35a52c4b06
commit 5c5bc49e86
13 changed files with 466 additions and 94 deletions

View File

@@ -2,11 +2,36 @@ import { request } from './http';
import { resourceApi } from './resource';
/** 平台角色、菜单、账号和工作台接口。 */
export interface DashboardMetric {
name: string;
value: number;
}
export interface DashboardDailyMetric {
date: string;
order_count: number;
order_amount: number;
}
export interface DashboardOverview {
gas_basic_count: number;
delivery_basic_count: number;
staff_count: number;
user_count: number;
product_count: number;
active_contract_count: number;
today_order_count: number;
today_order_amount: number;
pending_ticket_count: number;
paid_amount: number;
order_statuses: DashboardMetric[];
product_statuses: DashboardMetric[];
payment_channels: DashboardMetric[];
recent_orders: DashboardDailyMetric[];
}
export type PlatformRole = { identity: string; role_code: string; name: string; location_scope: string; is_system: boolean; status: number };
export type PlatformMenu = { identity: string; parent_identity?: string; group_code: string; name: string; icon: string; path: string; sort_no: number };
export const platformApi = {
overview: () => request<Record<string, number>>('/dashboard/overview'),
overview: () => request<DashboardOverview>('/dashboard/overview'),
listAccount: () => request<{ total: number; list: Record<string, unknown>[] }>('/platform_account'),
listRole: () => resourceApi.list<PlatformRole>('/platform_role'),
createRole: (data: Record<string, unknown>) => resourceApi.create<PlatformRole>('/platform_role', data),

View File

@@ -48,6 +48,11 @@ export type ResourceUiDefinition = {
canEdit: boolean;
canChangeStatus: boolean;
canArchive: boolean;
accountManagement?: {
resource: `/${string}`;
relationKey: string;
title: string;
};
};
const fieldLabels: Record<string, string> = {
@@ -276,9 +281,9 @@ function define(
const reason = [f('reason', { required: true })];
export const resources: ResourceUiDefinition[] = [
define('gas_basic', '气站', 'writable', [f('code', { required: true }), f('name', { required: true }), f('credit_code'), f('principal'), f('address'), f('longitude'), f('latitude')]),
{ ...define('gas_basic', '气站管理', 'writable', [f('code', { required: true }), f('name', { required: true }), f('credit_code'), f('principal'), f('address'), f('longitude'), f('latitude')]), accountManagement: { resource: '/gas_account', relationKey: 'gas_basic_identity', title: '气站账户' } },
define('gas_account', '气站账户', 'writable', [f('username', { required: true }), f('password', { required: true }), f('display_name'), f('role_code'), relation('gas_basic_identity', '/gas_basic', true)]),
define('delivery_basic', '配送', 'writable', [f('delivery_code', { required: true }), f('name', { required: true }), relation('gas_basic_identity', '/gas_basic'), f('principal'), f('address')]),
{ ...define('delivery_basic', '配送点管理', 'writable', [f('delivery_code', { required: true }), f('name', { required: true }), relation('gas_basic_identity', '/gas_basic'), f('principal'), f('address')]), accountManagement: { resource: '/delivery_account', relationKey: 'delivery_basic_identity', title: '配送点账户' } },
define('delivery_account', '配送站账户', 'writable', [f('username', { required: true }), f('password', { required: true }), f('display_name'), f('role_code'), relation('delivery_basic_identity', '/delivery_basic', true)]),
define('staff_account', '工作人员', 'writable', [f('username', { required: true }), f('password', { required: true }), f('name', { required: true }), f('phone'), f('avatar'), f('role_code'), relation('gas_basic_identity', '/gas_basic'), relation('delivery_basic_identity', '/delivery_basic'), f('work_status')]),
define('staff_credential', '工作人员资质', 'writable', [relation('staff_account_identity', '/staff_account', true), f('credential_type', { required: true }), f('credential_no'), f('expired_at')]),