'use client'; import { useState, useEffect } from 'react'; import Header from '@/components/Header'; import { Save, EyeOff, ShieldCheck, Check, AlertCircle, XCircle } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; export default function SettingsPage() { const [settings, setSettings] = useState({ blind_counting: false, correction_roles: ['ADMIN', 'SUPERVISOR'], uncounted_shelf_days: 10 }); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [toast, setToast] = useState({ show: false, message: '', isError: false }); const availableRoles = [ { id: 'ADMIN', label: 'مدیر کل' }, { id: 'SUPERVISOR', label: 'سرپرست انبار' }, { id: 'ACCOUNTANT', label: 'حسابدار' }, { id: 'COUNTER', label: 'انبارگردان' } ]; const showToast = (message, isError = false) => { setToast({ show: true, message, isError }); setTimeout(() => setToast({ show: false, message: '', isError: false }), 3000); }; useEffect(() => { fetchSettings(); }, []); const fetchSettings = async () => { try { const res = await fetch('/api/settings'); if (res.ok) { const data = await res.json(); setSettings(prev => ({ ...prev, ...data })); } } catch (error) { console.error(error); } finally { setLoading(false); } }; const handleSave = async () => { setSaving(true); try { const res = await fetch('/api/settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(settings) }); if (res.ok) { showToast('تنظیمات با موفقیت ذخیره شد'); } else { showToast('خطا در ذخیره تنظیمات', true); } } catch (error) { console.error(error); showToast('خطای شبکه', true); } finally { setSaving(false); } }; const toggleRole = (roleId) => { setSettings(prev => { const roles = prev.correction_roles || []; if (roles.includes(roleId)) { return { ...prev, correction_roles: roles.filter(r => r !== roleId) }; } else { return { ...prev, correction_roles: [...roles, roleId] }; } }); }; if (loading) { return (
در صورت فعال بودن، انبارگردانها موجودی فعلی سیستم را نمیبینند و مجبورند به جای تایید کورکورانه، کالاها را به صورت واقعی بشمارند.
در صورت فعال بودن، در صفحه داشبورد لیستی از قفسههایی که مدتی شمارش نشدهاند به کاربر پیشنهاد داده میشود.
انبارگردانی قفسهای
انبارگردانی کالایی
وقتی انبارگردانی یک قفسه بسته میشود، چه نقشهایی اجازه دارند درخواست اصلاحیه ثبت کنند؟
قفسههایی که بیشتر از این تعداد روز از آخرین انبارگردانیشان گذشته باشد، در صفحه اصلی برای شمارش مجدد پیشنهاد میشوند.