import React, { useState } from "react"; import AuthenticatedLayout from "@/Layouts/AuthenticatedLayout"; import { Head, useForm, router } from "@inertiajs/react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/Components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/Components/ui/tabs"; import { Input } from "@/Components/ui/input"; import { Label } from "@/Components/ui/label"; import { Button } from "@/Components/ui/button"; import { Coins, Package, RefreshCcw, Monitor, Bell, Save, Settings, Send } from "lucide-react"; import { toast } from "sonner"; interface Setting { key: string; value: string; description: string; } interface PageProps { settings: Record; } export default function SettingIndex({ settings }: PageProps) { const [isTesting, setIsTesting] = useState(false); const { data, setData, post, processing } = useForm({ settings: Object.values(settings).flat().map(s => ({ key: s.key, value: s.value })) }); const [activeTab, setActiveTab] = useState("finance"); const handleValueChange = (key: string, value: string) => { const newSettings = data.settings.map(s => s.key === key ? { ...s, value } : s ); setData('settings', newSettings); }; const submit = (e: React.FormEvent) => { e.preventDefault(); post(route('settings.update'), { onSuccess: () => toast.success("系統設定已更新"), }); }; const handleTestNotification = () => { setIsTesting(true); router.post(route('settings.test-notification'), { settings: data.settings }, { preserveScroll: true, onFinish: () => setIsTesting(false) }); }; const renderSettingRow = (setting: Setting) => { const currentVal = data.settings.find(s => s.key === setting.key)?.value || ''; return (

{setting.key}

handleValueChange(setting.key, e.target.value)} className="max-w-xs" /> {setting.key === 'notification.utility_fee_recipient_emails' && (

請以半形逗點「,」分隔多個 Email,例如:a@test.com,b@test.com

)}
); }; return (

系統設定

管理全系統的預設值與業務規則。

財務設定 庫存管理 周轉率分析 顯示設定 通知設定 財務設定 管理應付帳款與稅務相關的預設規則。 {settings.finance?.map(renderSettingRow)} 庫存管理 管理商品效期、預警等庫存核心設定。 {settings.inventory?.map(renderSettingRow)} 周轉率分析 調整商品周轉率計算與滯銷判定的天數標準。 {settings.turnover?.map(renderSettingRow)} 顯示設定 設定全系統清單頁面的顯示偏好。 {settings.display?.map(renderSettingRow)} 通知設定 管理系統發送 Email 提醒信函(如:公共事業費逾期通知)的寄件帳號與預設收件群組。 {settings.notification?.map(renderSettingRow)}
{activeTab === 'notification' && ( )}
); }