diff --git a/.axhub/make/sidebar-tree.json b/.axhub/make/sidebar-tree.json
index b933e97..98ddeb1 100644
--- a/.axhub/make/sidebar-tree.json
+++ b/.axhub/make/sidebar-tree.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "updatedAt": "2026-07-12T17:06:54.186Z",
+ "updatedAt": "2026-07-15T00:52:00.000Z",
"prototypes": [
{
"id": "folder-1783875936186-27raza",
@@ -86,6 +86,37 @@
"title": "工作台",
"itemKey": "prototypes/oneos-web-workbench"
},
+ {
+ "id": "folder-oneos-approval",
+ "kind": "folder",
+ "title": "审批中心",
+ "children": [
+ {
+ "id": "item:prototypes:oneos-web-approval-initiated",
+ "kind": "item",
+ "title": "我发起的",
+ "itemKey": "prototypes/oneos-web-approval-initiated"
+ },
+ {
+ "id": "item:prototypes:oneos-web-approval-todo",
+ "kind": "item",
+ "title": "我的待办",
+ "itemKey": "prototypes/oneos-web-approval-todo"
+ },
+ {
+ "id": "item:prototypes:oneos-web-approval-done",
+ "kind": "item",
+ "title": "我的已办",
+ "itemKey": "prototypes/oneos-web-approval-done"
+ },
+ {
+ "id": "item:prototypes:oneos-web-approval-cc",
+ "kind": "item",
+ "title": "我的抄送",
+ "itemKey": "prototypes/oneos-web-approval-cc"
+ }
+ ]
+ },
{
"id": "folder-1782874599304-roj8fd",
"kind": "folder",
@@ -153,6 +184,12 @@
"kind": "item",
"title": "站点信息",
"itemKey": "prototypes/oneos-web-h2-station-site"
+ },
+ {
+ "id": "item:prototypes:oneos-web-h2-station-weekly",
+ "kind": "item",
+ "title": "站点周报统计",
+ "itemKey": "prototypes/oneos-web-h2-station-weekly"
}
]
},
diff --git a/scripts/sync-oneos-web-prototypes.mjs b/scripts/sync-oneos-web-prototypes.mjs
index ce65f60..f7d32e9 100644
--- a/scripts/sync-oneos-web-prototypes.mjs
+++ b/scripts/sync-oneos-web-prototypes.mjs
@@ -25,8 +25,14 @@ const STANDALONE_MODULES = [
{ slug: 'business-dept-ledger', title: '业务部台账', skipCodegen: true },
{ slug: 'vehicle-maintenance-ledger', title: '车辆维修明细', skipCodegen: true },
{ slug: 'oneos-web-h2-station-site', title: '站点信息', skipCodegen: true },
+ { slug: 'oneos-web-h2-station-weekly', title: '站点周报统计', skipCodegen: true },
{ slug: 'vehicle-return-settlement', title: '还车应结款', skipCodegen: true },
{ slug: 'vehicle-pickup-receivable', title: '提车应收款', skipCodegen: true },
+ { slug: 'oneos-web-approval', title: '审批中心', skipCodegen: true },
+ { slug: 'oneos-web-approval-initiated', title: '我发起的', skipCodegen: true },
+ { slug: 'oneos-web-approval-todo', title: '我的待办', skipCodegen: true },
+ { slug: 'oneos-web-approval-done', title: '我的已办', skipCodegen: true },
+ { slug: 'oneos-web-approval-cc', title: '我的抄送', skipCodegen: true },
];
const MODULES = [
diff --git a/src/common/oneos-web-approval/ApprovalApp.tsx b/src/common/oneos-web-approval/ApprovalApp.tsx
new file mode 100644
index 0000000..9be4328
--- /dev/null
+++ b/src/common/oneos-web-approval/ApprovalApp.tsx
@@ -0,0 +1,57 @@
+import '../oneosWebLegacy/legacyGlobals';
+import '../../prototypes/vehicle-management/style.css';import './styles/index.css';
+
+import React from 'react';
+import { ConfigProvider } from 'antd';
+import type { ApprovalTabKey } from './types';
+import { ApprovalCenterPage } from './pages/ApprovalCenterPage';
+
+const approvalTheme = {
+ token: {
+ colorPrimary: '#165dff',
+ borderRadius: 8,
+ fontFamily:
+ 'Inter, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif',
+ colorBgLayout: '#f5f7fa',
+ },
+ components: {
+ Tabs: {
+ inkBarColor: '#165dff',
+ itemSelectedColor: '#165dff',
+ itemHoverColor: '#165dff',
+ },
+ Button: {
+ controlHeight: 32,
+ },
+ Select: {
+ controlHeight: 32,
+ },
+ Input: {
+ controlHeight: 32,
+ },
+ },
+};
+
+export interface ApprovalAppProps {
+ tabKey?: ApprovalTabKey;
+ pageTitle?: string;
+ showTabs?: boolean;
+}
+
+export function ApprovalApp({
+ tabKey,
+ pageTitle = '审批中心',
+ showTabs = false,
+}: ApprovalAppProps) {
+ return (
+
+
+
+ );
+}
+
+export default ApprovalApp;
diff --git a/src/common/oneos-web-approval/components/ApprovalCard.tsx b/src/common/oneos-web-approval/components/ApprovalCard.tsx
new file mode 100644
index 0000000..9836c25
--- /dev/null
+++ b/src/common/oneos-web-approval/components/ApprovalCard.tsx
@@ -0,0 +1,96 @@
+import React from 'react';
+import { RightOutlined } from '@ant-design/icons';
+import type { ApprovalCardItem } from '../types';
+import {
+ formatStatusLabel,
+ getApprovalTypeColor,
+ getApprovalTypeLabel,
+} from '../config/approvalTypeConfig';
+
+export interface ApprovalCardProps {
+ item: ApprovalCardItem;
+ selected?: boolean;
+ onClick?: (item: ApprovalCardItem) => void;
+}
+
+function statusClassName(status: ApprovalCardItem['status']): string {
+ if (status === 'approved') return 'ap-status ap-status--approved';
+ if (status === 'rejected') return 'ap-status ap-status--rejected';
+ return 'ap-status ap-status--pending';
+}
+
+export function ApprovalCard({ item, selected = false, onClick }: ApprovalCardProps) {
+ const typeColor = getApprovalTypeColor(item.type);
+ const statusLabel = formatStatusLabel(item);
+
+ return (
+ onClick?.(item)}
+ onKeyDown={(event) => {
+ if (event.key === 'Enter' || event.key === ' ') {
+ event.preventDefault();
+ onClick?.(item);
+ }
+ }}
+ >
+
+
+ {item.typeLabel ?? getApprovalTypeLabel(item.type)}
+
+ {statusLabel}
+
+
+
+
{item.title}
+ {item.subtitle ?
{item.subtitle}
: null}
+
+ {item.keyFacts && item.keyFacts.length > 0 ? (
+
+ {item.keyFacts.map((fact) => (
+
+
- {fact.label}
+ -
+ {fact.value}
+
+
+ ))}
+
+ ) : null}
+
+ {item.risks && item.risks.length > 0 ? (
+
+ {item.risks.map((risk) => (
+
+ {risk.label}
+
+ ))}
+
+ ) : null}
+
+
+
+
+ {item.showInitiatorInFooter ? (
+ 发起人 {item.initiatedBy}
+ ) : null}
+
+ {item.footerText ?? `发起时间 ${item.initiatedAt}`}
+
+
+
+ 查看详情
+
+
+
+
+ );
+}
diff --git a/src/common/oneos-web-approval/components/ApprovalCardList.tsx b/src/common/oneos-web-approval/components/ApprovalCardList.tsx
new file mode 100644
index 0000000..a5a1b28
--- /dev/null
+++ b/src/common/oneos-web-approval/components/ApprovalCardList.tsx
@@ -0,0 +1,47 @@
+import React from 'react';
+import { Empty, Spin } from 'antd';
+import type { ApprovalCardItem } from '../types';
+import { ApprovalCard } from './ApprovalCard';
+
+export interface ApprovalCardListProps {
+ items: ApprovalCardItem[];
+ loading?: boolean;
+ selectedId?: string | null;
+ onItemClick?: (item: ApprovalCardItem) => void;
+}
+
+export function ApprovalCardList({
+ items,
+ loading = false,
+ selectedId,
+ onItemClick,
+}: ApprovalCardListProps) {
+ if (loading) {
+ return (
+
+
+
+ );
+ }
+
+ if (items.length === 0) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+ {items.map((item) => (
+
+ ))}
+
+ );
+}
diff --git a/src/common/oneos-web-approval/components/ApprovalDetailPlaceholder.tsx b/src/common/oneos-web-approval/components/ApprovalDetailPlaceholder.tsx
new file mode 100644
index 0000000..d4c700d
--- /dev/null
+++ b/src/common/oneos-web-approval/components/ApprovalDetailPlaceholder.tsx
@@ -0,0 +1,193 @@
+import React, { useState } from 'react';
+import {
+ Avatar,
+ Button,
+ Empty,
+ Space,
+ Tabs,
+ Timeline,
+ Typography,
+} from 'antd';
+import {
+ CheckCircleOutlined,
+ ClockCircleOutlined,
+ CopyOutlined,
+ ReloadOutlined,
+ UserOutlined,
+} from '@ant-design/icons';
+import type { ApprovalCardItem } from '../types';
+import {
+ formatStatusLabel,
+ getApprovalTypeLabel,
+} from '../config/approvalTypeConfig';
+import { InsuranceComparisonDetail } from './InsuranceComparisonDetail';
+
+const { Text, Title } = Typography;
+
+export interface ApprovalDetailPlaceholderProps {
+ item: ApprovalCardItem | null;
+ onRefresh?: () => void;
+}
+
+function statusBadgeClass(status: ApprovalCardItem['status']): string {
+ if (status === 'approved') return 'ap-detail__badge ap-detail__badge--approved';
+ if (status === 'rejected') return 'ap-detail__badge ap-detail__badge--rejected';
+ return 'ap-detail__badge ap-detail__badge--pending';
+}
+
+const MOCK_TIMELINE = [
+ { role: '发起人', name: '提交申请', time: '', color: 'blue' as const },
+ { role: '部门主管', name: '审批通过', time: '2026-07-08 10:30', color: 'green' as const },
+ { role: '财务审核', name: '审批中', time: '', color: 'gray' as const },
+];
+
+export function ApprovalDetailPlaceholder({ item, onRefresh }: ApprovalDetailPlaceholderProps) {
+ const [activeTab, setActiveTab] = useState('detail');
+
+ if (!item) {
+ return (
+
+
+
+ );
+ }
+
+ if (item.typeLabel === '保险比价采购') {
+ return ;
+ }
+
+ const statusLabel = formatStatusLabel(item);
+ const typeLabel = getApprovalTypeLabel(item.type);
+
+ return (
+
+
+
+ 编号:
+ , text: item.id }}>{item.id}
+
+ } onClick={onRefresh}>
+ 刷新
+
+
+
+
+
+
+ {item.title}
+
+ {statusLabel}
+
+
+
+
+ } />
+ {item.initiatedBy}
+
+
+ 流程分类
+ {typeLabel}
+
+
+
+ 提交时间
+ {item.initiatedAt}
+
+
+
+
+
+
+ {item.subtitle ? (
+ {item.subtitle}
+ ) : null}
+
+ {item.keyFacts && item.keyFacts.length > 0 ? (
+
+ {item.keyFacts.map((fact) => (
+
+
- {fact.label}
+ -
+ {fact.value}
+
+
+ ))}
+
+ ) : null}
+
+ {item.risks && item.risks.length > 0 ? (
+
+ {item.risks.map((risk) => (
+
+ {risk.label}
+
+ ))}
+
+ ) : null}
+
+
+
+ 审批进度
+
+
({
+ color: step.color,
+ dot:
+ step.color === 'green' ? (
+
+ ) : undefined,
+ children: (
+
+
+
+ {step.role}
+ {step.name ? ` · ${step.name}` : ''}
+
+ {step.time ? (
+
+ {step.time}
+
+ ) : null}
+
+ {index === 0 ? (
+
{item.initiatedBy}
+ ) : null}
+
+ ),
+ }))}
+ />
+
+
+ ),
+ },
+ {
+ key: 'flow',
+ label: '审批流程图',
+ children: (
+
+
+
+ ),
+ },
+ ]}
+ />
+
+
+
+
+
+ );
+}
diff --git a/src/common/oneos-web-approval/components/InsuranceComparisonDetail.tsx b/src/common/oneos-web-approval/components/InsuranceComparisonDetail.tsx
new file mode 100644
index 0000000..ff49360
--- /dev/null
+++ b/src/common/oneos-web-approval/components/InsuranceComparisonDetail.tsx
@@ -0,0 +1,266 @@
+import React, { useState } from 'react';
+import {
+ Avatar,
+ Button,
+ Empty,
+ Space,
+ Table,
+ Tabs,
+ Tag,
+ Typography,
+} from 'antd';
+import type { ColumnsType } from 'antd/es/table';
+import {
+ ClockCircleOutlined,
+ CopyOutlined,
+ ReloadOutlined,
+ UserOutlined,
+} from '@ant-design/icons';
+import type { ApprovalCardItem } from '../types';
+import { formatStatusLabel } from '../config/approvalTypeConfig';
+
+const { Text, Title } = Typography;
+
+export interface InsuranceComparisonDetailProps {
+ item: ApprovalCardItem;
+ onRefresh?: () => void;
+}
+
+function getFact(item: ApprovalCardItem, label: string): string {
+ return item.keyFacts?.find((fact) => fact.label === label)?.value ?? '-';
+}
+
+interface VehicleRow {
+ key: string;
+ plateNo: string;
+ vin: string;
+ insuranceType: string;
+ latestPaymentDate: string;
+ finalQuote: string;
+ status: string;
+ approver: string;
+ remark: string;
+}
+
+interface QuoteRow {
+ key: string;
+ company: string;
+ amount: string;
+ isFinal: boolean;
+ remark: string;
+}
+
+function buildComparisonNo(item: ApprovalCardItem): string {
+ const datePart = item.initiatedAt.replace(/[-: ]/g, '').slice(0, 8);
+ const seq = item.id.replace(/\D/g, '').padStart(4, '0');
+ return `BXBJ${datePart}${seq}`;
+}
+
+function buildSummaryRows(item: ApprovalCardItem, comparisonNo: string) {
+ const finalQuote = getFact(item, '最终报价').replace('¥', '');
+ const insuranceType = getFact(item, '采购险种');
+ const companyCount = getFact(item, '保险公司数量');
+
+ return [
+ { label: '比价单号', value: comparisonNo },
+ { label: '采购状态', value: 审批中 },
+ { label: '创建人', value: item.initiatedBy },
+ { label: '创建时间', value: item.initiatedAt },
+ { label: '车辆数', value: '1' },
+ { label: '险种数', value: '1' },
+ { label: '已确认报价数', value: '1' },
+ { label: '确认报价总额', value: finalQuote },
+ { label: '当前审批人', value: item.currentApprover ?? '-' },
+ { label: '保险公司数量', value: companyCount },
+ { label: '采购险种', value: insuranceType },
+ { label: '中选保险公司', value: item.subtitle?.replace(/^中选:/, '') ?? '-' },
+ ];
+}
+
+function buildVehicleRows(item: ApprovalCardItem): VehicleRow[] {
+ const finalQuote = getFact(item, '最终报价').replace('¥', '');
+
+ return [
+ {
+ key: '1',
+ plateNo: item.title,
+ vin: '-',
+ insuranceType: getFact(item, '采购险种'),
+ latestPaymentDate: getFact(item, '最晚付费日'),
+ finalQuote,
+ status: '审批中',
+ approver: item.currentApprover ?? '-',
+ remark: item.subtitle ?? '-',
+ },
+ ];
+}
+
+function buildQuoteRows(item: ApprovalCardItem): QuoteRow[] {
+ const winner = item.subtitle?.replace(/^中选:/, '') ?? '国元农业保险上海分公司';
+ const finalAmount = getFact(item, '最终报价').replace('¥', '');
+
+ return [
+ { key: '1', company: '国任财产保险股份有限公司广东分公司', amount: '111.00', isFinal: false, remark: '-' },
+ { key: '2', company: winner, amount: finalAmount, isFinal: true, remark: '-' },
+ { key: '3', company: '中国平安财产保险股份有限公司上海分公司', amount: '888.00', isFinal: false, remark: '-' },
+ ];
+}
+
+export function InsuranceComparisonDetail({ item, onRefresh }: InsuranceComparisonDetailProps) {
+ const [activeTab, setActiveTab] = useState('detail');
+ const comparisonNo = buildComparisonNo(item);
+ const statusLabel = formatStatusLabel(item);
+ const typeLabel = item.typeLabel ?? '保险比价采购';
+ const summaryRows = buildSummaryRows(item, comparisonNo);
+ const vehicleRows = buildVehicleRows(item);
+ const quoteRows = buildQuoteRows(item);
+
+ const vehicleColumns: ColumnsType = [
+ { title: '车牌号', dataIndex: 'plateNo', width: 110 },
+ { title: 'VIN', dataIndex: 'vin', width: 120 },
+ { title: '险种', dataIndex: 'insuranceType', width: 90 },
+ { title: '最晚付费日', dataIndex: 'latestPaymentDate', width: 120 },
+ { title: '最终报价', dataIndex: 'finalQuote', width: 100 },
+ {
+ title: '采购状态',
+ dataIndex: 'status',
+ width: 90,
+ render: (value: string) => {value},
+ },
+ { title: '当前审批人', dataIndex: 'approver', width: 120 },
+ { title: '备注', dataIndex: 'remark', ellipsis: true },
+ ];
+
+ const quoteColumns: ColumnsType = [
+ { title: '保险公司', dataIndex: 'company', ellipsis: true },
+ { title: '报价金额', dataIndex: 'amount', width: 110 },
+ {
+ title: '最终',
+ dataIndex: 'isFinal',
+ width: 72,
+ render: (isFinal: boolean) =>
+ isFinal ? 是 : -,
+ },
+ { title: '备注', dataIndex: 'remark', width: 80 },
+ ];
+
+ return (
+
+
+
+ 编号:
+ , text: comparisonNo }}>{comparisonNo}
+
+ } onClick={onRefresh}>
+ 刷新
+
+
+
+
+
+
+ {typeLabel}审批-{comparisonNo}
+
+ {statusLabel}
+
+
+
+
+ } />
+ {item.initiatedBy}
+
+
+ 流程分类
+ {typeLabel}
+
+
+
+ 提交时间
+ {item.initiatedAt}
+
+
+
+
+
+
+
+
+ {Array.from({ length: Math.ceil(summaryRows.length / 2) }).map((_, rowIndex) => {
+ const left = summaryRows[rowIndex * 2];
+ const right = summaryRows[rowIndex * 2 + 1];
+ return (
+
+ | {left.label} |
+ {left.value} |
+ {right ? (
+ <>
+ {right.label} |
+ {right.value} |
+ >
+ ) : (
+ <>
+ |
+ |
+ >
+ )}
+
+ );
+ })}
+
+
+
+
+
+ 车辆明细
+
+
(
+
+ ),
+ defaultExpandedRowKeys: ['1'],
+ }}
+ scroll={{ x: 900 }}
+ />
+
+
+ ),
+ },
+ {
+ key: 'flow',
+ label: '审批流程图',
+ children: (
+
+
+
+ ),
+ },
+ ]}
+ />
+
+
+
+
+
+ );
+}
diff --git a/src/common/oneos-web-approval/config/approvalTypeConfig.ts b/src/common/oneos-web-approval/config/approvalTypeConfig.ts
new file mode 100644
index 0000000..406b6f6
--- /dev/null
+++ b/src/common/oneos-web-approval/config/approvalTypeConfig.ts
@@ -0,0 +1,71 @@
+import type { ApprovalCardItem, ApprovalStatus, ApprovalTypeKey, StatusFilterValue } from '../types';
+
+export interface ApprovalTypeOption {
+ value: ApprovalTypeKey;
+ label: string;
+ shortLabel: string;
+ color: string;
+}
+
+export const APPROVAL_TYPE_CONFIG: Record = {
+ parking: { value: 'parking', label: '停车场', shortLabel: '停车场', color: '#6366f1' },
+ vehicle_procurement: { value: 'vehicle_procurement', label: '车辆采购', shortLabel: '采购', color: '#8b5cf6' },
+ lease: { value: 'lease', label: '租赁合同', shortLabel: '租赁', color: '#2563eb' },
+ charter: { value: 'charter', label: '包车合同', shortLabel: '包车', color: '#0ea5e9' },
+ transfer: { value: 'transfer', label: '调拨', shortLabel: '调拨', color: '#14b8a6' },
+ vehicle_change: { value: 'vehicle_change', label: '异动', shortLabel: '异动', color: '#f59e0b' },
+ replacement: { value: 'replacement', label: '替换车', shortLabel: '替换', color: '#f97316' },
+ delivery: { value: 'delivery', label: '交车', shortLabel: '交车', color: '#10b981' },
+ return_settlement: { value: 'return_settlement', label: '还车应结款', shortLabel: '还车结款', color: '#ef4444' },
+ pickup_receivable: { value: 'pickup_receivable', label: '提车应收款', shortLabel: '提车应收', color: '#ec4899' },
+ billing: { value: 'billing', label: '租赁账单', shortLabel: '账单', color: '#a855f7' },
+ insurance: { value: 'insurance', label: '保险采购', shortLabel: '保险', color: '#22c55e' },
+ supplier: { value: 'supplier', label: '供应商准入', shortLabel: '供应商', color: '#64748b' },
+ customer_risk: { value: 'customer_risk', label: '客户风险标签', shortLabel: '风险标签', color: '#dc2626' },
+ third_party_return: { value: 'third_party_return', label: '三方退租', shortLabel: '退租', color: '#d97706' },
+ contract_template: { value: 'contract_template', label: '合同模板', shortLabel: '模板', color: '#7c3aed' },
+ annual_inspection: { value: 'annual_inspection', label: '年审', shortLabel: '年审', color: '#0891b2' },
+ finance_payment: { value: 'finance_payment', label: '付款申请', shortLabel: '付款', color: '#be185d' },
+ clearing: { value: 'clearing', label: '清分结算', shortLabel: '清分', color: '#4f46e5' },
+ energy_account: { value: 'energy_account', label: '能源账户', shortLabel: '能源', color: '#059669' },
+};
+
+export const APPROVAL_TYPE_OPTIONS = Object.values(APPROVAL_TYPE_CONFIG);
+
+export const STATUS_OPTIONS: { value: StatusFilterValue; label: string }[] = [
+ { value: 'all', label: '全部' },
+ { value: 'pending', label: '审批中' },
+ { value: 'approved', label: '已通过' },
+ { value: 'rejected', label: '已驳回' },
+];
+
+const STATUS_LABEL_MAP: Record = {
+ pending: '审批中',
+ processing: '审批中',
+ approved: '已通过',
+ rejected: '已驳回',
+};
+
+export function getApprovalTypeLabel(type: ApprovalTypeKey): string {
+ return APPROVAL_TYPE_CONFIG[type]?.label ?? type;
+}
+
+export function getApprovalTypeColor(type: ApprovalTypeKey): string {
+ return APPROVAL_TYPE_CONFIG[type]?.color ?? '#64748b';
+}
+
+export function formatStatusLabel(item: Pick): string {
+ const base = STATUS_LABEL_MAP[item.status] ?? item.status;
+ if ((item.status === 'pending' || item.status === 'processing') && item.currentApprover) {
+ return `审批中:${item.currentApprover}`;
+ }
+ return base;
+}
+
+export function matchesStatusFilter(status: ApprovalStatus, filter: StatusFilterValue): boolean {
+ if (filter === 'all') return true;
+ if (filter === 'pending') return status === 'pending' || status === 'processing';
+ if (filter === 'approved') return status === 'approved';
+ if (filter === 'rejected') return status === 'rejected';
+ return true;
+}
diff --git a/src/common/oneos-web-approval/data/mockApprovalCases.ts b/src/common/oneos-web-approval/data/mockApprovalCases.ts
new file mode 100644
index 0000000..ffddfef
--- /dev/null
+++ b/src/common/oneos-web-approval/data/mockApprovalCases.ts
@@ -0,0 +1,50 @@
+import type { ApprovalCardItem } from '../types';
+import { CURRENT_USER } from '../types';
+
+export const MOCK_APPROVAL_CASES: ApprovalCardItem[] = [
+ {
+ id: 'ac-22',
+ type: 'lease',
+ typeLabel: '合同审批',
+ status: 'rejected',
+ listTab: 'initiated',
+ title: '杭州迅达运输有限公司',
+ subtitle: '杭州城配项目',
+ keyFacts: [
+ { label: '租赁车辆数', value: '5 辆' },
+ { label: '租金及服务费合计', value: '192000.00 元' },
+ { label: '保证金总额', value: '40000.00 元' },
+ { label: '氢气预付款金额', value: '20000.00 元' },
+ ],
+ showInitiatorInFooter: true,
+ initiatedBy: CURRENT_USER,
+ initiatedAt: '2026-06-10 14:00',
+ },
+ {
+ id: 'ac-23',
+ type: 'insurance',
+ typeLabel: '保险比价采购',
+ status: 'processing',
+ listTab: 'initiated',
+ title: '沪A51676F',
+ subtitle: '中选:国元农业保险上海分公司',
+ keyFacts: [
+ { label: '采购险种', value: '商业险' },
+ { label: '最终报价', value: '¥1000.00' },
+ { label: '保险公司数量', value: '3家' },
+ { label: '最晚付费日', value: '2026-08-09' },
+ ],
+ currentApprover: '财务部-赵总',
+ showInitiatorInFooter: true,
+ initiatedBy: CURRENT_USER,
+ initiatedAt: '2026-06-10 14:00',
+ },
+];
+
+export function filterCasesByTab(
+ cases: ApprovalCardItem[],
+ tabKey?: string,
+): ApprovalCardItem[] {
+ if (!tabKey) return cases;
+ return cases.filter((item) => item.listTab === tabKey);
+}
diff --git a/src/common/oneos-web-approval/pages/ApprovalCenterPage.tsx b/src/common/oneos-web-approval/pages/ApprovalCenterPage.tsx
new file mode 100644
index 0000000..e18972e
--- /dev/null
+++ b/src/common/oneos-web-approval/pages/ApprovalCenterPage.tsx
@@ -0,0 +1,156 @@
+import React, { useEffect, useMemo, useState } from 'react';
+import { Input, Select, Tabs } from 'antd';
+import { SearchOutlined } from '@ant-design/icons';
+import type { ApprovalCardItem, ApprovalListTab, ApprovalStatus } from '../types';
+import { ApprovalCardList } from '../components/ApprovalCardList';
+import { ApprovalDetailPlaceholder } from '../components/ApprovalDetailPlaceholder';
+import {
+ filterCasesByTab,
+ MOCK_APPROVAL_CASES,
+} from '../data/mockApprovalCases';
+import {
+ APPROVAL_TYPE_OPTIONS,
+ formatStatusLabel,
+} from '../config/approvalTypeConfig';
+
+const TAB_ITEMS: { key: ApprovalListTab; label: string }[] = [
+ { key: 'todo', label: '我的待办' },
+ { key: 'initiated', label: '我发起的' },
+ { key: 'done', label: '我的已办' },
+ { key: 'cc', label: '我的抄送' },
+];
+
+const STATUS_OPTIONS: { value: ApprovalStatus | 'all'; label: string }[] = [
+ { value: 'all', label: '全部状态' },
+ { value: 'pending', label: '审批中' },
+ { value: 'approved', label: '已通过' },
+ { value: 'rejected', label: '已驳回' },
+];
+
+export interface ApprovalCenterPageProps {
+ tabKey?: ApprovalListTab;
+ pageTitle?: string;
+ showTabs?: boolean;
+}
+
+export function ApprovalCenterPage({
+ tabKey = 'todo',
+ pageTitle,
+ showTabs = false,
+}: ApprovalCenterPageProps) {
+ const [activeTab, setActiveTab] = useState(tabKey);
+ const [statusFilter, setStatusFilter] = useState('all');
+ const [typeFilter, setTypeFilter] = useState('all');
+ const [keyword, setKeyword] = useState('');
+ const [selectedId, setSelectedId] = useState(null);
+
+ useEffect(() => {
+ setActiveTab(tabKey);
+ }, [tabKey]);
+
+ const tabItems = useMemo(() => {
+ let list = filterCasesByTab(MOCK_APPROVAL_CASES, activeTab);
+
+ if (statusFilter !== 'all') {
+ list = list.filter((item) => item.status === statusFilter);
+ }
+ if (typeFilter !== 'all') {
+ list = list.filter((item) => item.type === typeFilter);
+ }
+ if (keyword.trim()) {
+ const q = keyword.trim().toLowerCase();
+ list = list.filter(
+ (item) =>
+ item.title.toLowerCase().includes(q) ||
+ (item.subtitle?.toLowerCase().includes(q) ?? false) ||
+ item.initiatedBy.toLowerCase().includes(q) ||
+ formatStatusLabel(item).toLowerCase().includes(q),
+ );
+ }
+ return list;
+ }, [activeTab, statusFilter, typeFilter, keyword]);
+
+ useEffect(() => {
+ if (tabItems.length === 0) {
+ setSelectedId(null);
+ return;
+ }
+ if (!selectedId || !tabItems.some((item) => item.id === selectedId)) {
+ setSelectedId(tabItems[0].id);
+ }
+ }, [tabItems, selectedId]);
+
+ const selectedItem = useMemo(
+ () => tabItems.find((item) => item.id === selectedId) ?? null,
+ [tabItems, selectedId],
+ );
+
+ const handleItemClick = (item: ApprovalCardItem) => {
+ setSelectedId(item.id);
+ };
+
+ const currentTabMeta = TAB_ITEMS.find((t) => t.key === activeTab);
+ const displayTitle = pageTitle ?? currentTabMeta?.label ?? '审批中心';
+
+ return (
+
+ {showTabs ? (
+
+ setActiveTab(key as ApprovalListTab)}
+ items={TAB_ITEMS.map((t) => ({ key: t.key, label: t.label }))}
+ />
+
+ ) : null}
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/common/oneos-web-approval/styles/index.css b/src/common/oneos-web-approval/styles/index.css
new file mode 100644
index 0000000..dbb4288
--- /dev/null
+++ b/src/common/oneos-web-approval/styles/index.css
@@ -0,0 +1,603 @@
+.ap-page {
+ --ap-primary: #165dff;
+ --ap-primary-soft: rgba(22, 93, 255, 0.08);
+ --ap-border: #e5e7eb;
+ --ap-surface: #ffffff;
+ --ap-muted: #64748b;
+ --ap-text: #0f172a;
+ --ap-radius: 12px;
+ --ap-shadow: 0 1px 2px rgba(15, 23, 42, 0.06), 0 4px 16px rgba(15, 23, 42, 0.04);
+ --ap-sidebar-width: 400px;
+ display: flex;
+ flex-direction: column;
+ height: 100vh;
+ padding: 0;
+ background: var(--vm-bg, #f5f7fa);
+ overflow: hidden;
+}
+
+.ap-page__tabs-bar {
+ flex-shrink: 0;
+ padding: 12px 20px 0;
+ background: var(--ap-surface);
+ border-bottom: 1px solid var(--ap-border);
+}
+
+.ap-page__tabs-bar .ant-tabs-nav {
+ margin-bottom: 0;
+}
+
+.ap-page__shell {
+ display: flex;
+ flex: 1;
+ min-height: 0;
+ gap: 0;
+}
+
+.ap-page__sidebar {
+ display: flex;
+ flex-direction: column;
+ flex-shrink: 0;
+ width: var(--ap-sidebar-width);
+ background: var(--ap-surface);
+ border-right: 1px solid var(--ap-border);
+ min-height: 0;
+}
+
+.ap-sidebar__head {
+ flex-shrink: 0;
+ padding: 20px 16px 12px;
+ border-bottom: 1px solid #f1f5f9;
+}
+
+.ap-sidebar__title {
+ margin: 0;
+ font-size: 18px;
+ font-weight: 600;
+ color: var(--ap-text);
+ line-height: 1.4;
+}
+
+.ap-sidebar__desc {
+ margin: 4px 0 0;
+ font-size: 12px;
+ color: var(--ap-muted);
+ line-height: 1.5;
+}
+
+.ap-filter {
+ margin-bottom: 0;
+}
+
+.ap-filter--sidebar {
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ padding: 12px 16px;
+ border-bottom: 1px solid #f1f5f9;
+}
+
+.ap-filter__grid {
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ gap: 16px;
+}
+
+.ap-filter__item {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.ap-filter__label {
+ font-size: 13px;
+ color: var(--ap-muted);
+ font-weight: 500;
+}
+
+.ap-filter__control {
+ width: 100%;
+}
+
+.ap-filter__search {
+ width: 100%;
+}
+
+.ap-sidebar__list {
+ flex: 1;
+ min-height: 0;
+ overflow-y: auto;
+ padding: 12px;
+}
+
+.ap-sidebar__foot {
+ flex-shrink: 0;
+ padding: 10px 16px;
+ border-top: 1px solid #f1f5f9;
+ font-size: 12px;
+ color: var(--ap-muted);
+ text-align: center;
+ background: #fafbfc;
+}
+
+.ap-page__detail {
+ flex: 1;
+ min-width: 0;
+ min-height: 0;
+ overflow: hidden;
+ background: var(--ap-surface);
+}
+
+.ap-list {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.ap-list--loading,
+.ap-list--empty {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 200px;
+ background: transparent;
+ border: 1px dashed var(--ap-border);
+ border-radius: var(--ap-radius);
+}
+
+.ap-card {
+ display: flex;
+ flex-direction: column;
+ background: var(--ap-surface);
+ border: 1px solid var(--ap-border);
+ border-radius: var(--ap-radius);
+ box-shadow: var(--ap-shadow);
+ cursor: pointer;
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
+ overflow: hidden;
+ position: relative;
+}
+
+.ap-card:hover,
+.ap-card:focus-visible {
+ border-color: rgba(22, 93, 255, 0.35);
+ box-shadow: 0 4px 16px rgba(22, 93, 255, 0.08);
+ outline: none;
+}
+
+.ap-card--selected {
+ border-color: rgba(22, 93, 255, 0.5);
+ background: var(--ap-primary-soft);
+ box-shadow: 0 4px 16px rgba(22, 93, 255, 0.1);
+}
+
+.ap-card--selected::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 3px;
+ background: var(--ap-primary);
+ border-radius: var(--ap-radius) 0 0 var(--ap-radius);
+}
+
+.ap-card__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ padding: 14px 16px 0;
+}
+
+.ap-card__type {
+ display: inline-flex;
+ align-items: center;
+ padding: 2px 10px;
+ border-radius: 999px;
+ border: 1px solid transparent;
+ font-size: 12px;
+ font-weight: 600;
+ line-height: 20px;
+}
+
+.ap-status {
+ font-size: 12px;
+ font-weight: 600;
+ line-height: 20px;
+}
+
+.ap-status--pending {
+ color: #d97706;
+}
+
+.ap-status--approved {
+ color: #16a34a;
+}
+
+.ap-status--rejected {
+ color: #dc2626;
+}
+
+.ap-card__body {
+ flex: 1;
+ padding: 12px 16px 0;
+}
+
+.ap-card__title {
+ margin: 0;
+ font-size: 16px;
+ font-weight: 600;
+ color: var(--ap-text);
+ line-height: 1.45;
+}
+
+.ap-card__subtitle {
+ margin: 6px 0 0;
+ font-size: 13px;
+ color: var(--ap-muted);
+ line-height: 1.5;
+}
+
+.ap-card__facts {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 10px 12px;
+ margin: 14px 0 0;
+ padding: 12px;
+ border-radius: 10px;
+ background: #f8fafc;
+}
+
+.ap-card--selected .ap-card__facts {
+ background: rgba(255, 255, 255, 0.7);
+}
+
+.ap-card__fact {
+ min-width: 0;
+}
+
+.ap-card__fact dt {
+ margin: 0;
+ font-size: 12px;
+ color: var(--ap-muted);
+ line-height: 1.4;
+}
+
+.ap-card__fact dd {
+ margin: 4px 0 0;
+ font-size: 13px;
+ color: var(--ap-text);
+ font-weight: 500;
+ line-height: 1.45;
+ word-break: break-word;
+}
+
+.ap-card__fact-value--emphasis {
+ color: var(--ap-primary);
+ font-weight: 700;
+}
+
+.ap-card__risks {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ margin-top: 12px;
+}
+
+.ap-card__risk {
+ display: inline-flex;
+ align-items: center;
+ padding: 2px 10px;
+ border-radius: 999px;
+ font-size: 12px;
+ font-weight: 500;
+ background: #fff7ed;
+ color: #c2410c;
+ border: 1px solid #fed7aa;
+}
+
+.ap-card__risk--high {
+ background: #fef2f2;
+ color: #b91c1c;
+ border-color: #fecaca;
+}
+
+.ap-card__risk--medium {
+ background: #fffbeb;
+ color: #b45309;
+ border-color: #fde68a;
+}
+
+.ap-card__footer {
+ display: flex;
+ align-items: flex-end;
+ justify-content: space-between;
+ gap: 12px;
+ margin-top: 10px;
+ padding: 8px 16px 10px;
+ border-top: 1px solid #f1f5f9;
+}
+
+.ap-card__footer-meta {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+}
+
+.ap-card__footer-text {
+ font-size: 12px;
+ color: var(--ap-muted);
+ line-height: 1.4;
+}
+
+.ap-card__action {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+ font-size: 12px;
+ font-weight: 600;
+ color: var(--ap-primary);
+ line-height: 1.4;
+ flex-shrink: 0;
+}
+
+/* Detail panel */
+.ap-detail {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ min-height: 0;
+}
+
+.ap-detail--empty {
+ align-items: center;
+ justify-content: center;
+}
+
+.ap-detail__toolbar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex-shrink: 0;
+ padding: 12px 24px;
+ border-bottom: 1px solid #f1f5f9;
+}
+
+.ap-detail__header {
+ flex-shrink: 0;
+ padding: 20px 24px 0;
+}
+
+.ap-detail__header-main {
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+ flex-wrap: wrap;
+}
+
+.ap-detail__title {
+ margin: 0 !important;
+ flex: 1;
+ min-width: 0;
+}
+
+.ap-detail__badge {
+ flex-shrink: 0;
+ display: inline-flex;
+ align-items: center;
+ padding: 2px 10px;
+ border-radius: 999px;
+ font-size: 12px;
+ font-weight: 600;
+ line-height: 20px;
+}
+
+.ap-detail__badge--pending {
+ background: #fff7ed;
+ color: #d97706;
+}
+
+.ap-detail__badge--approved {
+ background: #f0fdf4;
+ color: #16a34a;
+}
+
+.ap-detail__badge--rejected {
+ background: #fef2f2;
+ color: #dc2626;
+}
+
+.ap-detail__meta {
+ margin-top: 12px;
+ padding-bottom: 4px;
+}
+
+.ap-detail__tabs {
+ flex: 1;
+ min-height: 0;
+ display: flex;
+ flex-direction: column;
+ padding: 0 24px;
+}
+
+.ap-detail__tabs .ant-tabs-content-holder {
+ flex: 1;
+ min-height: 0;
+ overflow-y: auto;
+}
+
+.ap-detail__tabs .ant-tabs-content {
+ height: 100%;
+}
+
+.ap-detail__content {
+ padding: 8px 0 24px;
+}
+
+.ap-detail__subtitle {
+ margin: 0 0 16px;
+ color: var(--ap-muted);
+ font-size: 14px;
+}
+
+.ap-detail__facts {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 12px 16px;
+ margin: 0 0 16px;
+ padding: 16px;
+ border-radius: 10px;
+ background: #f8fafc;
+}
+
+.ap-detail__fact dt {
+ margin: 0;
+ font-size: 12px;
+ color: var(--ap-muted);
+}
+
+.ap-detail__fact dd {
+ margin: 4px 0 0;
+ font-size: 14px;
+ color: var(--ap-text);
+ font-weight: 500;
+}
+
+.ap-detail__fact-value--emphasis {
+ color: var(--ap-primary);
+ font-weight: 700;
+}
+
+.ap-detail__risks {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ margin-bottom: 20px;
+}
+
+.ap-detail__timeline-section {
+ margin-top: 8px;
+}
+
+.ap-detail__section-title {
+ display: block;
+ margin-bottom: 16px;
+}
+
+.ap-detail__timeline {
+ margin-top: 8px;
+}
+
+.ap-detail__timeline-item {
+ padding-bottom: 4px;
+}
+
+.ap-detail__timeline-head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ flex-wrap: wrap;
+}
+
+.ap-detail__timeline-time {
+ font-size: 12px;
+}
+
+.ap-detail__flow-placeholder {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 280px;
+}
+
+.ap-detail__actions {
+ flex-shrink: 0;
+ display: flex;
+ justify-content: flex-end;
+ gap: 8px;
+ padding: 12px 24px 20px;
+ border-top: 1px solid #f1f5f9;
+ background: var(--ap-surface);
+}
+
+.ap-insurance-summary {
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 20px;
+ border: 1px solid var(--ap-border);
+ border-radius: 8px;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.ap-insurance-summary th,
+.ap-insurance-summary td {
+ padding: 10px 14px;
+ border: 1px solid #f1f5f9;
+ vertical-align: middle;
+}
+
+.ap-insurance-summary th {
+ width: 14%;
+ background: #fafbfc;
+ color: var(--ap-muted);
+ font-weight: 500;
+ text-align: left;
+}
+
+.ap-insurance-summary td {
+ width: 36%;
+ color: var(--ap-text);
+}
+
+.ap-insurance-table-section {
+ margin-top: 8px;
+}
+
+.ap-insurance-table .ant-table,
+.ap-insurance-quote-table .ant-table {
+ font-size: 13px;
+}
+
+.ap-insurance-quote-table {
+ margin: 0;
+ background: #fafbfc;
+}
+
+.ap-insurance-quote-table .ant-table-thead > tr > th {
+ background: #f1f5f9;
+}
+
+@media (max-width: 960px) {
+ .ap-page {
+ height: auto;
+ min-height: 100vh;
+ overflow: auto;
+ }
+
+ .ap-page__shell {
+ flex-direction: column;
+ }
+
+ .ap-page__sidebar {
+ width: 100%;
+ max-height: 50vh;
+ border-right: none;
+ border-bottom: 1px solid var(--ap-border);
+ }
+
+ .ap-page__detail {
+ min-height: 50vh;
+ }
+
+ .ap-filter__grid {
+ grid-template-columns: 1fr;
+ }
+
+ .ap-detail__facts {
+ grid-template-columns: 1fr;
+ }
+}
diff --git a/src/common/oneos-web-approval/types.ts b/src/common/oneos-web-approval/types.ts
new file mode 100644
index 0000000..6d8bbdc
--- /dev/null
+++ b/src/common/oneos-web-approval/types.ts
@@ -0,0 +1,73 @@
+export type ApprovalStatus = 'pending' | 'processing' | 'approved' | 'rejected';
+
+export type ApprovalTabKey = 'todo' | 'done' | 'initiated' | 'cc';
+
+export type ApprovalTypeKey =
+ | 'parking'
+ | 'vehicle_procurement'
+ | 'lease'
+ | 'charter'
+ | 'transfer'
+ | 'vehicle_change'
+ | 'replacement'
+ | 'delivery'
+ | 'return_settlement'
+ | 'pickup_receivable'
+ | 'billing'
+ | 'insurance'
+ | 'supplier'
+ | 'customer_risk'
+ | 'third_party_return'
+ | 'contract_template'
+ | 'annual_inspection'
+ | 'finance_payment'
+ | 'clearing'
+ | 'energy_account';
+
+export type ApprovalListTab = ApprovalTabKey;
+
+export interface ApprovalKeyFact {
+ label: string;
+ value: string;
+ emphasis?: boolean;
+}
+
+export interface ApprovalRisk {
+ label: string;
+ level?: 'high' | 'medium' | 'low';
+}
+
+export interface ApprovalCardItem {
+ id: string;
+ type: ApprovalTypeKey;
+ status: ApprovalStatus;
+ listTab: ApprovalListTab;
+ title: string;
+ subtitle?: string;
+ keyFacts?: ApprovalKeyFact[];
+ risks?: ApprovalRisk[];
+ currentApprover?: string;
+ initiatedBy: string;
+ initiatedAt: string;
+ typeLabel?: string;
+ footerText?: string;
+ showInitiatorInFooter?: boolean;
+ ccUsers?: string[];
+ handledBy?: string;
+}
+
+export const CURRENT_USER = '张明辉';
+
+export type StatusFilterValue = 'all' | 'pending' | 'approved' | 'rejected';
+
+export interface ApprovalFilters {
+ status: StatusFilterValue;
+ type: ApprovalTypeKey | 'all';
+ keyword: string;
+}
+
+export const EMPTY_APPROVAL_FILTERS: ApprovalFilters = {
+ status: 'all',
+ type: 'all',
+ keyword: '',
+};
diff --git a/src/prototypes/oneos-prototype-nav/nav-menu.json b/src/prototypes/oneos-prototype-nav/nav-menu.json
index f114a66..993cfc1 100644
--- a/src/prototypes/oneos-prototype-nav/nav-menu.json
+++ b/src/prototypes/oneos-prototype-nav/nav-menu.json
@@ -11,6 +11,37 @@
"title": "工作台",
"itemKey": "prototypes/oneos-web-workbench"
},
+ {
+ "id": "folder-oneos-approval",
+ "kind": "folder",
+ "title": "审批中心",
+ "children": [
+ {
+ "id": "item:prototypes:oneos-web-approval-initiated",
+ "kind": "item",
+ "title": "我发起的",
+ "itemKey": "prototypes/oneos-web-approval-initiated"
+ },
+ {
+ "id": "item:prototypes:oneos-web-approval-todo",
+ "kind": "item",
+ "title": "我的待办",
+ "itemKey": "prototypes/oneos-web-approval-todo"
+ },
+ {
+ "id": "item:prototypes:oneos-web-approval-done",
+ "kind": "item",
+ "title": "我的已办",
+ "itemKey": "prototypes/oneos-web-approval-done"
+ },
+ {
+ "id": "item:prototypes:oneos-web-approval-cc",
+ "kind": "item",
+ "title": "我的抄送",
+ "itemKey": "prototypes/oneos-web-approval-cc"
+ }
+ ]
+ },
{
"id": "folder-1782874599304-roj8fd",
"kind": "folder",
@@ -78,6 +109,12 @@
"kind": "item",
"title": "站点信息",
"itemKey": "prototypes/oneos-web-h2-station-site"
+ },
+ {
+ "id": "item:prototypes:oneos-web-h2-station-weekly",
+ "kind": "item",
+ "title": "站点周报统计",
+ "itemKey": "prototypes/oneos-web-h2-station-weekly"
}
]
},
@@ -161,6 +198,25 @@
"itemKey": "prototypes/vehicle-return-settlement-v2"
}
]
+ },
+ {
+ "id": "folder-1783875880945-4r6tq1",
+ "kind": "folder",
+ "title": "任务工单",
+ "children": [
+ {
+ "id": "item:prototypes:task-work-order",
+ "kind": "item",
+ "title": "任务工单",
+ "itemKey": "prototypes/task-work-order"
+ }
+ ]
+ },
+ {
+ "id": "item:prototypes:lease-business-line-overview",
+ "kind": "item",
+ "title": "业务条线说明",
+ "itemKey": "prototypes/lease-business-line-overview"
}
]
}
diff --git a/src/prototypes/oneos-prototype-nav/prototype-registry.json b/src/prototypes/oneos-prototype-nav/prototype-registry.json
index 7a742cd..8bbaebc 100644
--- a/src/prototypes/oneos-prototype-nav/prototype-registry.json
+++ b/src/prototypes/oneos-prototype-nav/prototype-registry.json
@@ -1,18 +1,38 @@
{
"version": 1,
- "updatedAt": "2026-07-13T01:31:56.619Z",
+ "updatedAt": "2026-07-15T00:51:55.977Z",
"prototypes": {
"oneos-web-workbench": {
"title": "工作台",
- "version": "v1.4",
- "revision": 4,
- "lastUpdated": "2026-07-12T14:45:00.000Z",
- "contentHash": "3d7954b2ad60057932b8a0b25e645a83ef0ff1b5fe3db37d1a25382810e29126",
+ "version": "v1.6",
+ "revision": 6,
+ "lastUpdated": "2026-07-15T00:51:55.976Z",
+ "contentHash": "278a917e174783edccc1915cfa757bdfdf8fc81e83c9e42e31e7ed99811d5b4b",
"trackedFiles": [
"index.tsx",
"pages/01-工作台.jsx"
],
"changelog": [
+ {
+ "version": "v1.6",
+ "date": "2026-07-15",
+ "time": "08:51",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "index.tsx",
+ "pages/01-工作台.jsx"
+ ]
+ },
+ {
+ "version": "v1.5",
+ "date": "2026-07-14",
+ "time": "10:58",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "index.tsx",
+ "pages/01-工作台.jsx"
+ ]
+ },
{
"version": "v1.4",
"date": "2026-07-12",
@@ -444,11 +464,13 @@
},
"supplier-management": {
"title": "供应商管理",
- "version": "v1.5",
- "revision": 5,
- "lastUpdated": "2026-07-13T01:31:56.619Z",
- "contentHash": "94e568a299b24aa7e59d17185bd2bc95e4dafb447fb521bf3ca937046a849486",
+ "version": "v1.6",
+ "revision": 6,
+ "lastUpdated": "2026-07-13T04:59:56.469Z",
+ "contentHash": "1ed2c828156b908e834d6b346e149d94e34c80eff52985fcba277c115d37cf1c",
"trackedFiles": [
+ ".spec/acp/conversations.json",
+ ".spec/prototype-comments.json",
".spec/prototype-review.md",
"components/BankAccountConfirmModal.tsx",
"components/ChangeLogDrawer.tsx",
@@ -475,6 +497,16 @@
"utils/validation.ts"
],
"changelog": [
+ {
+ "version": "v1.6",
+ "date": "2026-07-13",
+ "time": "12:59",
+ "summary": "更新 2 个文件",
+ "files": [
+ ".spec/acp/conversations.json",
+ ".spec/prototype-comments.json"
+ ]
+ },
{
"version": "v1.5",
"date": "2026-07-13",
@@ -2136,11 +2168,11 @@
]
},
"task-work-order": {
- "title": "task work order",
- "version": "v1.1",
- "revision": 1,
- "lastUpdated": "2026-07-12T14:45:00.000Z",
- "contentHash": "15f17a2d566dbe11036326fbc3727d43f23bdf8a67e3400e68052f1f0eda57e0",
+ "title": "任务工单",
+ "version": "v1.2",
+ "revision": 2,
+ "lastUpdated": "2026-07-13T01:59:13.978Z",
+ "contentHash": "a2b1853998ec7655a1ddfb705d0d39496b2544e8b21941d1ec73f17c828c038c",
"trackedFiles": [
".spec/2026-07-10-requirements.md",
"components/task-work-order-kpi.jsx",
@@ -2150,6 +2182,20 @@
"TaskWorkOrderPage.jsx"
],
"changelog": [
+ {
+ "version": "v1.2",
+ "date": "2026-07-13",
+ "time": "09:59",
+ "summary": "更新需求说明与标注",
+ "files": [
+ ".spec/2026-07-10-requirements.md",
+ "components/task-work-order-kpi.jsx",
+ "data/task-work-order-seed.js",
+ "index.tsx",
+ "styles/index.css",
+ "TaskWorkOrderPage.jsx"
+ ]
+ },
{
"version": "v1.1",
"date": "2026-07-12",
@@ -2944,79 +2990,439 @@
]
},
"oneos-web-h2-station": {
- "title": "oneos web h2 station",
- "version": "v1.5",
- "revision": 5,
- "lastUpdated": "2026-07-12T14:45:00.000Z",
- "contentHash": "ef1dc5bf2f93f80d38273976fa63752796cd9f39bddb1dced1cf779960d68ff3",
+ "title": "加氢站管理",
+ "version": "v1.46",
+ "revision": 46,
+ "lastUpdated": "2026-07-13T06:55:56.033Z",
+ "contentHash": "c7c517f3cae14adf4e84dc7cf39386331a84f144b3055882485cacdbce96978b",
"trackedFiles": [
"index.tsx",
"pages/01-加氢订单.jsx",
"pages/02-加氢记录.jsx",
"pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "shared/h2-station-view-shared.jsx",
"styles/h2-station-vm-filter.css"
],
"changelog": [
{
- "version": "v1.5",
- "date": "2026-07-12",
- "time": "22:45",
- "summary": "加氢站合包:站点信息编辑提升为主操作",
- "details": [
- "加氢订单/记录/站点信息 3 页 OperationActions;站点编辑不再藏在「更多」"
- ],
- "commit": "131b963",
- "files": [
- "index.tsx"
- ]
- },
- {
- "version": "v1.4",
- "date": "2026-07-08",
- "time": "11:44",
- "summary": "样式与布局:h2-station-vm-filter.css",
- "details": [],
- "commit": "6d14c58",
- "files": [
- "styles/h2-station-vm-filter.css"
- ]
- },
- {
- "version": "v1.3",
- "date": "2026-07-02",
- "time": "03:35",
- "summary": "页面逻辑与交互:index.tsx",
- "details": [
- "样式与布局:h2-station-vm-filter.css"
- ],
- "commit": "f5e3126",
+ "version": "v1.46",
+ "date": "2026-07-13",
+ "time": "14:55",
+ "summary": "更新需求说明与标注",
"files": [
"index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "shared/h2-station-view-shared.jsx",
"styles/h2-station-vm-filter.css"
]
},
{
- "version": "v1.2",
- "date": "2026-06-30",
- "time": "16:54",
- "summary": "页面逻辑与交互:index.tsx",
- "details": [],
- "commit": "0982837",
+ "version": "v1.45",
+ "date": "2026-07-13",
+ "time": "14:55",
+ "summary": "更新需求说明与标注",
"files": [
- "index.tsx"
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "shared/h2-station-view-shared.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "version": "v1.1",
- "date": "2026-06-30",
- "time": "16:36",
- "summary": "Import desktop web originals into dedicated prototypes with a shared legacy shell, sync script, and a new「ONE-OS Web 端」sidebar section for review alongside existing refactored pages.",
- "details": [
- "页面逻辑与交互:index.tsx"
- ],
- "commit": "d71ebc5",
+ "version": "v1.44",
+ "date": "2026-07-13",
+ "time": "14:55",
+ "summary": "更新页面逻辑与交互",
"files": [
- "index.tsx"
+ "shared/h2-station-view-shared.jsx"
+ ]
+ },
+ {
+ "version": "v1.43",
+ "date": "2026-07-13",
+ "time": "14:30",
+ "summary": "更新需求说明与标注",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.42",
+ "date": "2026-07-13",
+ "time": "14:30",
+ "summary": "更新需求说明与标注",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.41",
+ "date": "2026-07-13",
+ "time": "14:30",
+ "summary": "更新需求说明与标注",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.40",
+ "date": "2026-07-13",
+ "time": "14:30",
+ "summary": "更新需求说明与标注",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.39",
+ "date": "2026-07-13",
+ "time": "14:30",
+ "summary": "更新需求说明与标注",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.38",
+ "date": "2026-07-13",
+ "time": "14:29",
+ "summary": "更新需求说明与标注",
+ "files": [
+ "pages/站点周报统计-需求内容.js"
+ ]
+ },
+ {
+ "version": "v1.37",
+ "date": "2026-07-13",
+ "time": "13:50",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.36",
+ "date": "2026-07-13",
+ "time": "13:50",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.35",
+ "date": "2026-07-13",
+ "time": "13:50",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.34",
+ "date": "2026-07-13",
+ "time": "13:09",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.33",
+ "date": "2026-07-13",
+ "time": "13:09",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.32",
+ "date": "2026-07-13",
+ "time": "13:09",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.31",
+ "date": "2026-07-13",
+ "time": "13:09",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.30",
+ "date": "2026-07-13",
+ "time": "13:09",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.29",
+ "date": "2026-07-13",
+ "time": "13:08",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.28",
+ "date": "2026-07-13",
+ "time": "13:08",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.27",
+ "date": "2026-07-13",
+ "time": "11:32",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.26",
+ "date": "2026-07-13",
+ "time": "11:32",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.25",
+ "date": "2026-07-13",
+ "time": "11:32",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.24",
+ "date": "2026-07-13",
+ "time": "11:32",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.23",
+ "date": "2026-07-13",
+ "time": "11:27",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.22",
+ "date": "2026-07-13",
+ "time": "11:27",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.21",
+ "date": "2026-07-13",
+ "time": "11:27",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.20",
+ "date": "2026-07-13",
+ "time": "11:25",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.19",
+ "date": "2026-07-13",
+ "time": "11:25",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.18",
+ "date": "2026-07-13",
+ "time": "11:25",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
+ ]
+ },
+ {
+ "version": "v1.17",
+ "date": "2026-07-13",
+ "time": "11:17",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
}
]
@@ -3383,14 +3789,32 @@
},
"vm-shared": {
"title": "vm-shared",
- "version": "v1.4",
- "revision": 4,
- "lastUpdated": "2026-07-12T14:44:00.000Z",
- "contentHash": "4a8d78c8ffaa1ffbf48164c0a77651919681b3e89b7b5ed700a2acf9c7f00e91",
+ "version": "v1.6",
+ "revision": 6,
+ "lastUpdated": "2026-07-13T03:04:59.958Z",
+ "contentHash": "c3e7223b1958455ae3fbf88f59f3126cce94d06b5ca419057a7377d6b6887e90",
"trackedFiles": [
"DESIGN.md"
],
"changelog": [
+ {
+ "version": "v1.6",
+ "date": "2026-07-13",
+ "time": "11:04",
+ "summary": "更新 DESIGN.md",
+ "files": [
+ "DESIGN.md"
+ ]
+ },
+ {
+ "version": "v1.5",
+ "date": "2026-07-13",
+ "time": "11:04",
+ "summary": "更新 DESIGN.md",
+ "files": [
+ "DESIGN.md"
+ ]
+ },
{
"version": "v1.4",
"date": "2026-07-12",
@@ -3442,844 +3866,951 @@
]
}
]
+ },
+ "oneos-web-h2-station-weekly": {
+ "title": "oneos-web-h2-station-weekly",
+ "version": "v1.0",
+ "revision": 0,
+ "lastUpdated": "2026-07-13T03:01:39.575Z",
+ "contentHash": "68652d2c7c04dfe1dbf6a7254a1915043d509935d81db857f90464c9d1df9c6a",
+ "trackedFiles": [
+ "index.tsx"
+ ],
+ "changelog": []
+ },
+ "oneos-web-h2-station-analysis": {
+ "title": "oneos-web-h2-station-analysis",
+ "version": "v1.6",
+ "revision": 6,
+ "lastUpdated": "2026-07-13T07:20:12.550Z",
+ "contentHash": "a9a6164ccd59111309617d0c4421bd809d07d84a496ad7552bb0af57a4afa463",
+ "trackedFiles": [
+ "index.tsx",
+ "pages/01-加氢站分析.jsx",
+ "shared/h2-analysis-charts.jsx",
+ "shared/h2-analysis-mock.js"
+ ],
+ "changelog": [
+ {
+ "version": "v1.6",
+ "date": "2026-07-13",
+ "time": "15:20",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢站分析.jsx",
+ "shared/h2-analysis-charts.jsx",
+ "shared/h2-analysis-mock.js"
+ ]
+ },
+ {
+ "version": "v1.5",
+ "date": "2026-07-13",
+ "time": "15:20",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢站分析.jsx",
+ "shared/h2-analysis-charts.jsx",
+ "shared/h2-analysis-mock.js"
+ ]
+ },
+ {
+ "version": "v1.4",
+ "date": "2026-07-13",
+ "time": "15:19",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "index.tsx",
+ "pages/01-加氢站分析.jsx",
+ "shared/h2-analysis-charts.jsx",
+ "shared/h2-analysis-mock.js"
+ ]
+ },
+ {
+ "version": "v1.3",
+ "date": "2026-07-13",
+ "time": "15:18",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "index.tsx"
+ ]
+ },
+ {
+ "version": "v1.2",
+ "date": "2026-07-13",
+ "time": "15:18",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "pages/01-加氢站分析.jsx"
+ ]
+ },
+ {
+ "version": "v1.1",
+ "date": "2026-07-13",
+ "time": "15:18",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "shared/h2-analysis-charts.jsx"
+ ]
+ }
+ ]
+ },
+ "oneos-web-approval": {
+ "title": "oneos-web-approval",
+ "version": "v1.16",
+ "revision": 16,
+ "lastUpdated": "2026-07-14T06:17:46.246Z",
+ "contentHash": "36d94bc093043173cf16e2262f46f4ad753f6cacca8fbe970feed2ce020d2446",
+ "trackedFiles": [
+ ".spec/prototype-comments.json",
+ "index.tsx"
+ ],
+ "changelog": [
+ {
+ "version": "v1.16",
+ "date": "2026-07-14",
+ "time": "14:17",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ ".spec/prototype-comments.json",
+ "index.tsx"
+ ]
+ },
+ {
+ "version": "v1.15",
+ "date": "2026-07-14",
+ "time": "14:09",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "ApprovalApp.tsx"
+ ]
+ },
+ {
+ "version": "v1.14",
+ "date": "2026-07-14",
+ "time": "14:03",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.13",
+ "date": "2026-07-14",
+ "time": "14:03",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.12",
+ "date": "2026-07-14",
+ "time": "13:59",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.11",
+ "date": "2026-07-14",
+ "time": "13:55",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.10",
+ "date": "2026-07-14",
+ "time": "13:54",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.9",
+ "date": "2026-07-14",
+ "time": "13:19",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.8",
+ "date": "2026-07-14",
+ "time": "10:58",
+ "summary": "更新页面样式",
+ "files": [
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.7",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面样式",
+ "files": [
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "version": "v1.6",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css"
+ ]
+ },
+ {
+ "version": "v1.5",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "components/ApprovalDetailPlaceholder.tsx"
+ ]
+ },
+ {
+ "version": "v1.4",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "components/ApprovalCardList.tsx"
+ ]
+ },
+ {
+ "version": "v1.3",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "components/ApprovalCard.tsx"
+ ]
+ },
+ {
+ "version": "v1.2",
+ "date": "2026-07-14",
+ "time": "10:55",
+ "summary": "更新 mockApprovalCases.ts",
+ "files": [
+ "data/mockApprovalCases.ts"
+ ]
+ },
+ {
+ "version": "v1.1",
+ "date": "2026-07-14",
+ "time": "10:55",
+ "summary": "更新 approvalTypeConfig.ts",
+ "files": [
+ "config/approvalTypeConfig.ts"
+ ]
+ }
+ ]
+ },
+ "oneos-web-approval-initiated": {
+ "title": "oneos-web-approval-initiated",
+ "version": "v1.0",
+ "revision": 0,
+ "lastUpdated": "2026-07-14T06:09:13.385Z",
+ "contentHash": "196b147a8d49f4ac747ed77dc131b9d222ef91e35adfc93e68265cc8d4b1921e",
+ "trackedFiles": [
+ "index.tsx"
+ ],
+ "changelog": []
+ },
+ "oneos-web-approval-cc": {
+ "title": "我的抄送",
+ "version": "v1.0",
+ "revision": 0,
+ "lastUpdated": "2026-07-14T06:17:50.422Z",
+ "contentHash": "ec088ac4ada1abdcee6e5a2049fe96b26c63d27814699835d2b23debe9b65311",
+ "trackedFiles": [
+ "index.tsx"
+ ],
+ "changelog": []
}
},
"recentUpdates": [
{
- "prototypeId": "supplier-management",
- "title": "供应商管理",
- "version": "v1.5",
- "date": "2026-07-13",
- "time": "09:31",
- "summary": "更新需求说明与标注",
+ "prototypeId": "oneos-web-workbench",
+ "title": "工作台",
+ "version": "v1.6",
+ "date": "2026-07-15",
+ "time": "08:51",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/prototype-review.md",
- "components/BankAccountConfirmModal.tsx",
- "components/ChangeLogDrawer.tsx",
- "components/CoopStatusBadge.tsx",
- "components/DeleteConfirmModal.tsx",
- "components/FilterPanel.tsx",
- "components/KpiCards.tsx",
- "components/LeaveConfirmModal.tsx",
- "components/RoleSwitcher.tsx",
- "components/SupplierTable.tsx",
- "data/suppliers.json",
+ "index.tsx",
+ "pages/01-工作台.jsx"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.16",
+ "date": "2026-07-14",
+ "time": "14:17",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ ".spec/prototype-comments.json",
"index.tsx"
]
},
{
- "prototypeId": "customer-management",
- "title": "客户管理",
- "version": "v1.7",
- "date": "2026-07-13",
- "time": "09:31",
- "summary": "更新需求说明与标注",
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.15",
+ "date": "2026-07-14",
+ "time": "14:09",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/prototype-review.md",
- ".spec/requirements-prd-create.md",
- ".spec/requirements-prd-list.md",
- ".spec/ui-review.md",
- "components/BatchRiskTagModal.tsx",
- "components/CustomerTable.tsx",
- "components/FilterPanel.tsx",
- "components/LabelTags.tsx",
- "components/MultiSelectField.tsx",
- "components/RiskKpiCards.tsx",
- "components/RiskLabelTags.tsx",
- "components/RiskTagDrawer.tsx"
+ "ApprovalApp.tsx"
]
},
{
- "prototypeId": "customer-management",
- "title": "客户管理",
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.14",
+ "date": "2026-07-14",
+ "time": "14:03",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.13",
+ "date": "2026-07-14",
+ "time": "14:03",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.12",
+ "date": "2026-07-14",
+ "time": "13:59",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.11",
+ "date": "2026-07-14",
+ "time": "13:55",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.10",
+ "date": "2026-07-14",
+ "time": "13:54",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.9",
+ "date": "2026-07-14",
+ "time": "13:19",
+ "summary": "更新页面样式",
+ "files": [
+ ".spec/prototype-comments.json",
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "审批中心",
+ "version": "v1.8",
+ "date": "2026-07-14",
+ "time": "10:58",
+ "summary": "更新页面样式",
+ "files": [
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-workbench",
+ "title": "工作台",
+ "version": "v1.5",
+ "date": "2026-07-14",
+ "time": "10:58",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "index.tsx",
+ "pages/01-工作台.jsx"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.7",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面样式",
+ "files": [
+ "components/ApprovalCard.tsx",
+ "components/ApprovalCardList.tsx",
+ "components/ApprovalDetailPlaceholder.tsx",
+ "config/approvalTypeConfig.ts",
+ "data/mockApprovalCases.ts",
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css",
+ "types.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.6",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面样式",
+ "files": [
+ "index.tsx",
+ "pages/ApprovalCenterPage.tsx",
+ "styles/index.css"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.5",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "components/ApprovalDetailPlaceholder.tsx"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.4",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "components/ApprovalCardList.tsx"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.3",
+ "date": "2026-07-14",
+ "time": "10:56",
+ "summary": "更新页面逻辑与交互",
+ "files": [
+ "components/ApprovalCard.tsx"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.2",
+ "date": "2026-07-14",
+ "time": "10:55",
+ "summary": "更新 mockApprovalCases.ts",
+ "files": [
+ "data/mockApprovalCases.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-approval",
+ "title": "oneos-web-approval",
+ "version": "v1.1",
+ "date": "2026-07-14",
+ "time": "10:55",
+ "summary": "更新 approvalTypeConfig.ts",
+ "files": [
+ "config/approvalTypeConfig.ts"
+ ]
+ },
+ {
+ "prototypeId": "oneos-web-h2-station-analysis",
+ "title": "oneos-web-h2-station-analysis",
"version": "v1.6",
"date": "2026-07-13",
- "time": "09:31",
- "summary": "更新需求说明与标注",
+ "time": "15:20",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/prototype-review.md",
- ".spec/requirements-prd-create.md",
- ".spec/requirements-prd-list.md",
- ".spec/ui-review.md",
- "components/BatchRiskTagModal.tsx",
- "components/CustomerTable.tsx",
- "components/FilterPanel.tsx",
- "components/LabelTags.tsx",
- "components/MultiSelectField.tsx",
- "components/RiskKpiCards.tsx",
- "components/RiskLabelTags.tsx",
- "components/RiskTagDrawer.tsx"
+ "index.tsx",
+ "pages/01-加氢站分析.jsx",
+ "shared/h2-analysis-charts.jsx",
+ "shared/h2-analysis-mock.js"
]
},
{
- "prototypeId": "customer-management",
- "title": "客户管理",
+ "prototypeId": "oneos-web-h2-station-analysis",
+ "title": "oneos-web-h2-station-analysis",
"version": "v1.5",
"date": "2026-07-13",
- "time": "09:31",
- "summary": "更新需求说明与标注",
+ "time": "15:20",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/prototype-review.md",
- "components/RiskKpiCards.tsx",
- "utils/riskKpi.ts"
+ "index.tsx",
+ "pages/01-加氢站分析.jsx",
+ "shared/h2-analysis-charts.jsx",
+ "shared/h2-analysis-mock.js"
]
},
{
- "prototypeId": "supplier-management",
- "title": "供应商管理",
+ "prototypeId": "oneos-web-h2-station-analysis",
+ "title": "oneos-web-h2-station-analysis",
"version": "v1.4",
"date": "2026-07-13",
- "time": "09:31",
- "summary": "更新需求说明与标注",
+ "time": "15:19",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/prototype-review.md",
- "components/BankAccountConfirmModal.tsx",
- "components/ChangeLogDrawer.tsx",
- "components/DeleteConfirmModal.tsx",
- "components/LeaveConfirmModal.tsx",
- "components/RoleSwitcher.tsx",
- "utils/createForm.ts",
- "utils/permissions.ts",
- "utils/phone.ts",
- "utils/region.ts",
- "utils/supplierFields.ts",
- "utils/validation.ts"
+ "index.tsx",
+ "pages/01-加氢站分析.jsx",
+ "shared/h2-analysis-charts.jsx",
+ "shared/h2-analysis-mock.js"
]
},
{
- "prototypeId": "lease-business-detail",
- "title": "租赁业务明细",
+ "prototypeId": "oneos-web-h2-station-analysis",
+ "title": "oneos-web-h2-station-analysis",
"version": "v1.3",
"date": "2026-07-13",
- "time": "09:26",
- "summary": "更新需求说明与标注",
+ "time": "15:18",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/prototype-comments.json",
- ".spec/prototype-review.md",
- ".spec/requirements-prd.md",
- "columnHeaderTips.ts",
- "components/DetailChangeLogModal.tsx",
- "components/DetailDeleteConfirmModal.tsx",
- "components/DetailEditModal.tsx",
- "components/DetailImportModal.tsx",
- "components/DetailKpiRow.tsx",
- "components/DetailTable.tsx",
- "components/FieldCheckIcon.tsx",
- "components/FilterPanel.tsx"
+ "index.tsx"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.167",
+ "prototypeId": "oneos-web-h2-station-analysis",
+ "title": "oneos-web-h2-station-analysis",
+ "version": "v1.2",
"date": "2026-07-13",
- "time": "01:21",
- "summary": "更新需求说明与标注",
+ "time": "15:18",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢站分析.jsx"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.166",
+ "prototypeId": "oneos-web-h2-station-analysis",
+ "title": "oneos-web-h2-station-analysis",
+ "version": "v1.1",
"date": "2026-07-13",
- "time": "01:21",
- "summary": "更新需求说明与标注",
+ "time": "15:18",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "shared/h2-analysis-charts.jsx"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.165",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.46",
"date": "2026-07-13",
- "time": "01:21",
+ "time": "14:55",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "shared/h2-station-view-shared.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.164",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.45",
"date": "2026-07-13",
- "time": "01:21",
+ "time": "14:55",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "shared/h2-station-view-shared.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.163",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.44",
"date": "2026-07-13",
- "time": "01:21",
- "summary": "更新需求说明与标注",
+ "time": "14:55",
+ "summary": "更新页面逻辑与交互",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "shared/h2-station-view-shared.jsx"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.162",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.43",
"date": "2026-07-13",
- "time": "01:21",
+ "time": "14:30",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.161",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.42",
"date": "2026-07-13",
- "time": "01:21",
+ "time": "14:30",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.160",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.41",
"date": "2026-07-13",
- "time": "01:21",
+ "time": "14:30",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.159",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.40",
"date": "2026-07-13",
- "time": "01:16",
+ "time": "14:30",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.158",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.39",
"date": "2026-07-13",
- "time": "01:16",
+ "time": "14:30",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "pages/站点周报统计-需求内容.js",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.157",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.38",
"date": "2026-07-13",
- "time": "01:16",
+ "time": "14:29",
"summary": "更新需求说明与标注",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/站点周报统计-需求内容.js"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.156",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.37",
"date": "2026-07-13",
- "time": "01:16",
- "summary": "更新需求说明与标注",
+ "time": "13:50",
+ "summary": "更新页面样式",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.155",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.36",
"date": "2026-07-13",
- "time": "01:16",
- "summary": "更新需求说明与标注",
+ "time": "13:50",
+ "summary": "更新页面样式",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.154",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.35",
"date": "2026-07-13",
- "time": "01:04",
- "summary": "更新需求说明与标注",
+ "time": "13:50",
+ "summary": "更新页面样式",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.153",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.34",
"date": "2026-07-13",
- "time": "01:03",
- "summary": "更新需求说明与标注",
+ "time": "13:09",
+ "summary": "更新页面样式",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.152",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.33",
"date": "2026-07-13",
- "time": "01:03",
- "summary": "更新需求说明与标注",
+ "time": "13:09",
+ "summary": "更新页面样式",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.151",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.32",
"date": "2026-07-13",
- "time": "01:03",
- "summary": "更新需求说明与标注",
+ "time": "13:09",
+ "summary": "更新页面样式",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
},
{
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.150",
+ "prototypeId": "oneos-web-h2-station",
+ "title": "加氢站管理",
+ "version": "v1.31",
"date": "2026-07-13",
- "time": "01:03",
- "summary": "更新需求说明与标注",
+ "time": "13:09",
+ "summary": "更新页面样式",
"files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
"index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.149",
- "date": "2026-07-13",
- "time": "00:54",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.148",
- "date": "2026-07-13",
- "time": "00:54",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.147",
- "date": "2026-07-13",
- "time": "00:54",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.146",
- "date": "2026-07-13",
- "time": "00:54",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.145",
- "date": "2026-07-13",
- "time": "00:54",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.144",
- "date": "2026-07-13",
- "time": "00:50",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.143",
- "date": "2026-07-13",
- "time": "00:50",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.142",
- "date": "2026-07-13",
- "time": "00:49",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.141",
- "date": "2026-07-13",
- "time": "00:49",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.140",
- "date": "2026-07-13",
- "time": "00:49",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.139",
- "date": "2026-07-13",
- "time": "00:45",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.138",
- "date": "2026-07-13",
- "time": "00:45",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.137",
- "date": "2026-07-13",
- "time": "00:45",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.136",
- "date": "2026-07-13",
- "time": "00:45",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.135",
- "date": "2026-07-13",
- "time": "00:45",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
- ]
- },
- {
- "prototypeId": "vehicle-pickup-receivable",
- "title": "提车应收款",
- "version": "v1.134",
- "date": "2026-07-13",
- "time": "00:45",
- "summary": "更新需求说明与标注",
- "files": [
- ".spec/PRD.md",
- ".spec/prototype-comments.json",
- "data/pickup-receivable-list-data.js",
- "index.tsx",
- "pickup-receivable-bridge.js",
- "pickup-receivable-calc.js",
- "styles/index.css",
- "VehiclePickupReceivableApp.jsx",
- "VehiclePickupReceivableCollectPage.jsx",
- "VehiclePickupReceivableContractView.jsx",
- "VehiclePickupReceivableList.jsx"
+ "pages/01-加氢订单.jsx",
+ "pages/02-加氢记录.jsx",
+ "pages/03-站点信息.jsx",
+ "pages/04-站点周报统计.jsx",
+ "styles/h2-station-vm-filter.css"
]
}
]
diff --git a/src/prototypes/oneos-web-approval-cc/index.tsx b/src/prototypes/oneos-web-approval-cc/index.tsx
new file mode 100644
index 0000000..3e49269
--- /dev/null
+++ b/src/prototypes/oneos-web-approval-cc/index.tsx
@@ -0,0 +1,8 @@
+/**
+ * @name 我的抄送
+ */
+import { ApprovalApp } from '../../common/oneos-web-approval/ApprovalApp';
+
+export default function OneosWebApprovalCc() {
+ return ;
+}
diff --git a/src/prototypes/oneos-web-approval-done/index.tsx b/src/prototypes/oneos-web-approval-done/index.tsx
new file mode 100644
index 0000000..abf4cd8
--- /dev/null
+++ b/src/prototypes/oneos-web-approval-done/index.tsx
@@ -0,0 +1,8 @@
+/**
+ * @name 我的已办
+ */
+import { ApprovalApp } from '../../common/oneos-web-approval/ApprovalApp';
+
+export default function OneosWebApprovalDone() {
+ return ;
+}
diff --git a/src/prototypes/oneos-web-approval-initiated/index.tsx b/src/prototypes/oneos-web-approval-initiated/index.tsx
new file mode 100644
index 0000000..10cb134
--- /dev/null
+++ b/src/prototypes/oneos-web-approval-initiated/index.tsx
@@ -0,0 +1,8 @@
+/**
+ * @name 我发起的
+ */
+import { ApprovalApp } from '../../common/oneos-web-approval/ApprovalApp';
+
+export default function OneosWebApprovalInitiated() {
+ return ;
+}
diff --git a/src/prototypes/oneos-web-approval-todo/index.tsx b/src/prototypes/oneos-web-approval-todo/index.tsx
new file mode 100644
index 0000000..f9a2bc6
--- /dev/null
+++ b/src/prototypes/oneos-web-approval-todo/index.tsx
@@ -0,0 +1,8 @@
+/**
+ * @name 我的待办
+ */
+import { ApprovalApp } from '../../common/oneos-web-approval/ApprovalApp';
+
+export default function OneosWebApprovalTodo() {
+ return ;
+}
diff --git a/src/prototypes/oneos-web-approval/index.tsx b/src/prototypes/oneos-web-approval/index.tsx
new file mode 100644
index 0000000..2d4ce6a
--- /dev/null
+++ b/src/prototypes/oneos-web-approval/index.tsx
@@ -0,0 +1,8 @@
+/**
+ * @name 审批中心
+ */
+import { ApprovalApp } from '../../common/oneos-web-approval/ApprovalApp';
+
+export default function OneosWebApproval() {
+ return ;
+}