diff --git a/app/(dashboard)/dashboard/shop/income/page.tsx b/app/(dashboard)/dashboard/shop/income/page.tsx
new file mode 100644
index 0000000..e0f33f0
--- /dev/null
+++ b/app/(dashboard)/dashboard/shop/income/page.tsx
@@ -0,0 +1,112 @@
+import { ArrowDownLeft, ArrowUpRight, CreditCard, DollarSign } from "lucide-react"
+import { Badge } from "@/components/ui/badge"
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableHeader,
+ TableRow,
+} from "@/components/ui/table"
+import { mockOrders, mockTransactions } from "@/lib/mock-data"
+
+export default function ShopIncomePage() {
+ const completedOrders = mockOrders.filter((o) => o.status === "completed")
+ const totalIncome = completedOrders.reduce((acc, order) => acc + order.totalPrice, 0)
+
+ const currentMonth = new Date().getMonth()
+ const thisMonthIncome = completedOrders
+ .filter((o) => new Date(o.completedAt || "").getMonth() === currentMonth)
+ .reduce((acc, order) => acc + order.totalPrice, 0)
+
+ const pendingSettlement = mockOrders
+ .filter((o) => ["in_progress", "pending_close", "pending_review"].includes(o.status))
+ .reduce((acc, order) => acc + order.totalPrice, 0)
+
+ return (
+
+
收入统计
+
+
+
+
+ 总收入
+
+
+
+ ¥{totalIncome.toFixed(2)}
+
+
+
+
+ 本月收入
+
+
+
+ ¥{thisMonthIncome.toFixed(2)}
+
+
+
+
+ 待结算
+
+
+
+ ¥{pendingSettlement.toFixed(2)}
+
+
+
+
+
+
+ 交易明细
+
+
+
+
+
+ 类型
+ 描述
+ 金额
+ 时间
+
+
+
+ {mockTransactions.map((transaction) => (
+
+
+
+ {transaction.amount > 0 ? (
+
+ ) : (
+
+ )}
+
0 ? "default" : "secondary"}>
+ {transaction.type === "topup"
+ ? "充值"
+ : transaction.type === "payment"
+ ? "支付"
+ : transaction.type === "income"
+ ? "收入"
+ : transaction.type === "withdrawal"
+ ? "提现"
+ : "退款"}
+
+
+
+ {transaction.description}
+ 0 ? "text-green-600" : "text-red-600"}>
+ {transaction.amount > 0 ? "+" : ""}
+ {transaction.amount}
+
+ {new Date(transaction.createdAt).toLocaleString()}
+
+ ))}
+
+
+
+
+
+ )
+}
diff --git a/app/(dashboard)/dashboard/shop/orders/page.tsx b/app/(dashboard)/dashboard/shop/orders/page.tsx
new file mode 100644
index 0000000..c637423
--- /dev/null
+++ b/app/(dashboard)/dashboard/shop/orders/page.tsx
@@ -0,0 +1,117 @@
+import { AlertCircle, CheckCircle, Clock, ListOrdered } from "lucide-react"
+import Link from "next/link"
+import { Badge } from "@/components/ui/badge"
+import { Button } from "@/components/ui/button"
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableHeader,
+ TableRow,
+} from "@/components/ui/table"
+import { statusLabels } from "@/lib/constants"
+import { mockOrders } from "@/lib/mock-data"
+
+export default function ShopOrdersPage() {
+ const totalOrders = mockOrders.length
+ const activeOrders = mockOrders.filter((o) =>
+ [
+ "pending_payment",
+ "pending_accept",
+ "in_progress",
+ "pending_close",
+ "pending_review",
+ ].includes(o.status),
+ ).length
+ const completedOrders = mockOrders.filter((o) => o.status === "completed").length
+ const disputedOrders = mockOrders.filter((o) => o.status === "disputed").length
+
+ return (
+
+
+
订单总览
+
+
+
+
+
+ 总订单
+
+
+
+ {totalOrders}
+
+
+
+
+ 进行中
+
+
+
+ {activeOrders}
+
+
+
+
+ 已完成
+
+
+
+ {completedOrders}
+
+
+
+
+ 争议订单
+
+
+
+ {disputedOrders}
+
+
+
+
+
+
+ 订单列表
+
+
+
+
+
+ 服务名称
+ 客户
+ 打手
+ 状态
+ 金额
+ 创建时间
+ 操作
+
+
+
+ {mockOrders.map((order) => (
+
+ {order.service.title}
+ {order.consumerName}
+ {order.playerName}
+
+ {statusLabels[order.status]}
+
+ ¥{order.totalPrice}
+ {new Date(order.createdAt).toLocaleDateString()}
+
+
+
+
+ ))}
+
+
+
+
+
+ )
+}
diff --git a/app/(dashboard)/dashboard/shop/rules/page.tsx b/app/(dashboard)/dashboard/shop/rules/page.tsx
new file mode 100644
index 0000000..c365a1a
--- /dev/null
+++ b/app/(dashboard)/dashboard/shop/rules/page.tsx
@@ -0,0 +1,143 @@
+"use client"
+
+import { Save } from "lucide-react"
+import { useState } from "react"
+import { Button } from "@/components/ui/button"
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
+import { Input } from "@/components/ui/input"
+import { Label } from "@/components/ui/label"
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@/components/ui/select"
+import { Switch } from "@/components/ui/switch"
+import { mockShops } from "@/lib/mock-data"
+
+export default function ShopRulesPage() {
+ const shop = mockShops[0]
+
+ const [allowMultiShop, setAllowMultiShop] = useState(shop.allowMultiShop)
+ const [allowIndependentOrders, setAllowIndependentOrders] = useState(shop.allowIndependentOrders)
+ const [dispatchMode, setDispatchMode] = useState(shop.dispatchMode)
+ const [commissionType, setCommissionType] = useState(shop.commissionType)
+ const [commissionValue, setCommissionValue] = useState(shop.commissionValue.toString())
+
+ const handleSave = () => {
+ alert("设置已保存")
+ }
+
+ return (
+
+
+
规则设置
+
+
+
+
+
+
+ 员工权限
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 派单设置
+
+
+
+
+
+
+ 手动指派需要店主确认分配;自动匹配将根据打手状态自动分单
+
+
+
+
+
+
+
+ 抽成设置
+
+
+
+
+
+
+
+
+
+
+
setCommissionValue(e.target.value)}
+ />
+
+ {commissionType === "percentage" ? "%" : "元"}
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/components/dashboard-sidebar.tsx b/components/dashboard-sidebar.tsx
index 8f3172b..1cf025e 100644
--- a/components/dashboard-sidebar.tsx
+++ b/components/dashboard-sidebar.tsx
@@ -1,6 +1,16 @@
"use client"
-import { Gamepad2, LayoutDashboard, ListOrdered, Palette, Store, Users } from "lucide-react"
+import {
+ ClipboardList,
+ Gamepad2,
+ LayoutDashboard,
+ ListOrdered,
+ Palette,
+ Settings,
+ Store,
+ TrendingUp,
+ Users,
+} from "lucide-react"
import Link from "next/link"
import { usePathname } from "next/navigation"
import { cn } from "@/lib/utils"
@@ -15,6 +25,9 @@ const ownerLinks = [
{ href: "/dashboard", label: "概览", icon: LayoutDashboard },
{ href: "/dashboard/services", label: "服务管理", icon: ListOrdered },
{ href: "/dashboard/shop", label: "店铺管理", icon: Store },
+ { href: "/dashboard/shop/orders", label: "订单总览", icon: ClipboardList },
+ { href: "/dashboard/shop/income", label: "收入统计", icon: TrendingUp },
+ { href: "/dashboard/shop/rules", label: "规则设置", icon: Settings },
{ href: "/dashboard/shop/employees", label: "员工管理", icon: Users },
{ href: "/dashboard/shop/templates", label: "模板编辑", icon: Palette },
]