fix(ui): [UI7-2] 统一全局 Design Tokens,移除冗余字体,修复异常色值引用
这个提交包含在:
+18
-18
@@ -118,7 +118,7 @@ export function BudgetsPage() {
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<PageHeader title="预算管理" subtitle="你当前没有预算权限,请联系管理员开通。" />
|
||||
<Card className="p-6 text-sm text-slate-600">所需权限:budget.view 或 budget.manage</Card>
|
||||
<Card className="p-6 text-sm text-zinc-600">所需权限:budget.view 或 budget.manage</Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -139,10 +139,10 @@ export function BudgetsPage() {
|
||||
) : null}
|
||||
|
||||
<Card className="space-y-3 p-6">
|
||||
<h3 className="text-base font-semibold text-slate-900">筛选条件</h3>
|
||||
<h3 className="text-base font-semibold text-zinc-900">筛选条件</h3>
|
||||
<div className="grid gap-3 md:grid-cols-3">
|
||||
<select
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
value={status}
|
||||
onChange={(event) => {
|
||||
setStatus(event.target.value as "active" | "archived" | "");
|
||||
@@ -155,7 +155,7 @@ export function BudgetsPage() {
|
||||
</select>
|
||||
|
||||
<select
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
value={departmentId}
|
||||
onChange={(event) => {
|
||||
setDepartmentId(event.target.value);
|
||||
@@ -182,22 +182,22 @@ export function BudgetsPage() {
|
||||
|
||||
{canManageBudget ? (
|
||||
<Card className="space-y-3 p-6">
|
||||
<h3 className="text-base font-semibold text-slate-900">新建预算池</h3>
|
||||
<h3 className="text-base font-semibold text-zinc-900">新建预算池</h3>
|
||||
<div className="grid gap-3 md:grid-cols-3">
|
||||
<input
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
placeholder="编码(例如 BGT-2026-RD)"
|
||||
value={code}
|
||||
onChange={(event) => setCode(event.target.value)}
|
||||
/>
|
||||
<input
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
placeholder="名称"
|
||||
value={name}
|
||||
onChange={(event) => setName(event.target.value)}
|
||||
/>
|
||||
<select
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
value={formDepartmentId}
|
||||
onChange={(event) => setFormDepartmentId(event.target.value)}
|
||||
>
|
||||
@@ -209,25 +209,25 @@ export function BudgetsPage() {
|
||||
))}
|
||||
</select>
|
||||
<input
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
type="date"
|
||||
value={periodStart}
|
||||
onChange={(event) => setPeriodStart(event.target.value)}
|
||||
/>
|
||||
<input
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
type="date"
|
||||
value={periodEnd}
|
||||
onChange={(event) => setPeriodEnd(event.target.value)}
|
||||
/>
|
||||
<input
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
placeholder="预算总额(例如 100000.00)"
|
||||
value={allocatedAmount}
|
||||
onChange={(event) => setAllocatedAmount(event.target.value)}
|
||||
/>
|
||||
<input
|
||||
className="h-11 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm"
|
||||
className="h-11 rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm"
|
||||
type="number"
|
||||
min={1}
|
||||
max={100}
|
||||
@@ -254,13 +254,13 @@ export function BudgetsPage() {
|
||||
) : null}
|
||||
|
||||
<Card className="space-y-3 p-6">
|
||||
<h3 className="text-base font-semibold text-slate-900">预算池列表</h3>
|
||||
<h3 className="text-base font-semibold text-zinc-900">预算池列表</h3>
|
||||
|
||||
{budgetsQuery.isLoading ? <TableSkeleton columns={7} rows={4} /> : null}
|
||||
|
||||
{!budgetsQuery.isLoading ? (
|
||||
<>
|
||||
<div className="rounded-lg border border-slate-200">
|
||||
<div className="rounded-lg border border-zinc-200">
|
||||
<Table>
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
@@ -277,7 +277,7 @@ export function BudgetsPage() {
|
||||
{(budgetsQuery.data?.items ?? []).length ? (
|
||||
(budgetsQuery.data?.items ?? []).map((item) => (
|
||||
<TableRow key={item.id}>
|
||||
<TableCell className="font-medium text-slate-900">{item.code}</TableCell>
|
||||
<TableCell className="font-medium text-zinc-900">{item.code}</TableCell>
|
||||
<TableCell>{item.name}</TableCell>
|
||||
<TableCell><StatusBadge status={item.status} /></TableCell>
|
||||
<TableCell>
|
||||
@@ -285,7 +285,7 @@ export function BudgetsPage() {
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
{item.usedAmount} / {item.allocatedAmount}
|
||||
<div className="text-xs text-slate-500">剩余 {item.remainingAmount}</div>
|
||||
<div className="text-xs text-zinc-500">剩余 {item.remainingAmount}</div>
|
||||
</TableCell>
|
||||
<TableCell>{item.warningThresholdPercent}%</TableCell>
|
||||
<TableCell>
|
||||
@@ -300,14 +300,14 @@ export function BudgetsPage() {
|
||||
归档
|
||||
</Button>
|
||||
) : (
|
||||
<span className="text-xs text-slate-400">-</span>
|
||||
<span className="text-xs text-zinc-400">-</span>
|
||||
)}
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
))
|
||||
) : (
|
||||
<TableRow>
|
||||
<TableCell className="py-3 text-slate-500" colSpan={7}>
|
||||
<TableCell className="py-3 text-zinc-500" colSpan={7}>
|
||||
暂无预算池
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
|
||||
在新工单中引用
屏蔽一个用户