Code Detail
Prompt
اريد برنامج بالغة العربية يتكون من اربع ازرار الاولى باسم الفنيين والعمال والثاني المشاريع والثالث العمل اليومي والرابع التقارير
عند الضغط على زر الفنيين والعمال تفتح نافذة اسم الفني ورقم الهاتف ونوع العمل والاجور المستحقة والاجور المستلمة والمبلغ المتبقي وتاريخ التعيين وفي الاسفل حفظ وتعديل وحذف
وعند فتح نافذة المشاريع تفتح نافذة اسم المشروع
اسم صاحب المشروع
رقم الهاتف
المبلغ المتفق عليه
المبالغ المستلمة
المبلغ المتبقي
والتاريخ
وفي الاسفل حفظ وتعديل وحذف
وعند فتح نافذة العمل اليوم تفتح نافذة اسم الفني
اسم المشروع
التاريخ
الحضور على شكل ساعة دائرية
الانصراف على شكل ساعة دائرية
عدد ساعات العمل يكتب تلقائيا بحقل ويكون ناتج طرح وقت الانصراف من وقت الحضور
وحقل سعر معدل الساعة
الاجر اليومي يكون ناتج من ضرب عدد ساعات العمل في سعر معدل الساعة
وحقل اجور اخرى
والمبلغ الكلي ناتج من جمع الاجر اليومي مع الاجور الاخرى
وبالنهاية ملاحظات
وفي الاسفل حفظ وتعديل وحذف
وعند الضغط على حفظ تحفظ المعلومات في الزر الرابع التقارير ويمكن طباعتها
كما تذهب المعلومات حسب اسم الفني واسم المشروع
Generated Result
import React, { useState } from 'react'; import './App.css'; const App = () => { const [activeTab, setActiveTab] = useState('technicians'); const [technicians, setTechnicians] = useState([]); const [projects, setProjects] = useState([]); const [dailyWork, setDailyWork] = useState([]); const [reports, setReports] = useState([]); const handleTabChange = (tab) => { setActiveTab(tab); }; const addTechnician = (technician) => { setTechnicians([...technicians, technician]); }; const addProject = (project) => { setProjects([...projects, project]); }; const addDailyWork = (work) => { setDailyWork([...dailyWork, work]); }; const addReport = (report) => { setReports([...reports, report]); }; return ( <div className="App"> <div className="bg-blue-900 text-white p-4"> <h1 className="text-2xl font-bold">برنامج الإدارة</h1> </div> <div className="flex mt-4"> <button onClick={() => handleTabChange('technicians')} className={`flex-1 p-2 ${activeTab === 'technicians' ? 'bg-blue-500' : 'bg-blue-300'}`} > الفنيين والعمال </button> <button onClick={() => handleTabChange('projects')} className={`flex-1 p-2 ${activeTab === 'projects' ? 'bg-blue-500' : 'bg-blue-300'}`} > المشاريع </button> <button onClick={() => handleTabChange('dailyWork')} className={`flex-1 p-2 ${activeTab === 'dailyWork' ? 'bg-blue-500' : 'bg-blue-300'}`} > العمل اليومي </button> <button onClick={() => handleTabChange('reports')} className={`flex-1 p-2 ${activeTab === 'reports' ? 'bg-blue-500' : 'bg-blue-300'}`} > التقارير </button> </div> <div className="p-4"> {activeTab === 'technicians' && ( <TechniciansForm addTechnician={addTechnician} /> )} {activeTab === 'projects' && ( <ProjectsForm addProject={addProject} /> )} {activeTab === 'dailyWork' && ( <DailyWorkForm addDailyWork={addDailyWork} /> )} {activeTab === 'reports' && ( <Reports reports={reports} /> )} </div> </div> ); }; const TechniciansForm = ({ addTechnician }) => { const [technician, setTechnician] = useState({ name: '', phone: '', jobType: '', dueAmount: '', receivedAmount: '', remainingAmount: '', hireDate: '' }); const handleChange = (e) => { setTechnician({ ...technician, [e.target.name]: e.target.value }); }; const handleSubmit = (e) => { e.preventDefault(); addTechnician(technician); }; return ( <form onSubmit={handleSubmit} className="space-y-4"> <input type="text" name="name" placeholder="اسم الفني" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="text" name="phone" placeholder="رقم الهاتف" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="text" name="jobType" placeholder="نوع العمل" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="dueAmount" placeholder="الاجور المستحقة" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="receivedAmount" placeholder="الاجور المستلمة" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="remainingAmount" placeholder="المبلغ المتبقي" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="date" name="hireDate" placeholder="تاريخ التعيين" onChange={handleChange} className="w-full p-2 border rounded" /> <button type="submit" className="w-full p-2 bg-blue-500 text-white rounded">حفظ</button> </form> ); }; const ProjectsForm = ({ addProject }) => { const [project, setProject] = useState({ projectName: '', clientName: '', phone: '', agreedAmount: '', receivedAmount: '', remainingAmount: '', date: '' }); const handleChange = (e) => { setProject({ ...project, [e.target.name]: e.target.value }); }; const handleSubmit = (e) => { e.preventDefault(); addProject(project); }; return ( <form onSubmit={handleSubmit} className="space-y-4"> <input type="text" name="projectName" placeholder="اسم المشروع" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="text" name="clientName" placeholder="اسم صاحب المشروع" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="text" name="phone" placeholder="رقم الهاتف" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="agreedAmount" placeholder="المبلغ المتفق عليه" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="receivedAmount" placeholder="المبالغ المستلمة" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="remainingAmount" placeholder="المبلغ المتبقي" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="date" name="date" placeholder="التاريخ" onChange={handleChange} className="w-full p-2 border rounded" /> <button type="submit" className="w-full p-2 bg-blue-500 text-white rounded">حفظ</button> </form> ); }; const DailyWorkForm = ({ addDailyWork }) => { const [work, setWork] = useState({ technicianName: '', projectName: '', date: '', attendanceTime: '', departureTime: '', hourlyRate: '', dailyWage: '', otherFees: '', totalAmount: '', notes: '' }); const handleChange = (e) => { setWork({ ...work, [e.target.name]: e.target.value }); }; const handleSubmit = (e) => { e.preventDefault(); const hoursWorked = (new Date(work.departureTime) - new Date(work.attendanceTime)) / (1000 * 60 * 60); const dailyWage = hoursWorked * work.hourlyRate; const totalAmount = dailyWage + parseFloat(work.otherFees); addDailyWork({ ...work, dailyWage, totalAmount }); }; return ( <form onSubmit={handleSubmit} className="space-y-4"> <input type="text" name="technicianName" placeholder="اسم الفني" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="text" name="projectName" placeholder="اسم المشروع" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="date" name="date" placeholder="التاريخ" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="time" name="attendanceTime" placeholder="وقت الحضور" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="time" name="departureTime" placeholder="وقت الانصراف" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="hourlyRate" placeholder="سعر معدل الساعة" onChange={handleChange} className="w-full p-2 border rounded" /> <input type="number" name="otherFees" placeholder="اجور اخرى" onChange={handleChange} className="w-full p-2 border rounded" /> <textarea name="notes" placeholder="ملاحظات" onChange={handleChange} className="w-full p-2 border rounded" /> <button type="submit" className="w-full p-2 bg-blue-500 text-white rounded">حفظ</button> </form> ); }; const Reports = ({ reports }) => { return ( <div className="space-y-4"> {reports.map((report, index) => ( <div key={index} className="p-4 border rounded"> <h3 className="text-lg font-bold">التقرير {index + 1}</h3> <p>اسم الفني: {report.technicianName}</p> <p>اسم المشروع: {report.projectName}</p> <p>التاريخ: {report.date}</p> <p>عدد ساعات العمل: {report.hoursWorked}</p> <p>الاجر اليومي: {report.dailyWage}</p> <p>اجور اخرى: {report.otherFees}</p> <p>المبلغ الكلي: {report.totalAmount}</p> <p>ملاحظات: {report.notes}</p> </div> ))} </div> ); }; export default App;