import React, { useState, useMemo, useEffect, useRef } from 'react'; import { Plus, Search, MoreVertical, FileText, Users, ShoppingCart, DollarSign, BarChart2, Briefcase, Settings, HardHat, Package, Warehouse, ListChecks, GanttChart, UserCheck, ChevronDown, CheckCircle, Clock, XCircle, Building, Wrench, Users2, BrainCircuit, Share2, SlidersHorizontal, Database, BotMessageSquare, PlayCircle, Factory, Droplets, Zap, ShieldCheck, Route, CalendarClock, Fuel, Anchor, Truck, Sun, Wind, BatteryCharging, ChevronsRight, GitBranchPlus, Network, Cpu, ShieldAlert, KeyRound, UserPlus, Fingerprint, HelpCircle, Activity, Copy, Lightbulb, TrendingUp, AlertTriangle, Server } from 'lucide-react'; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend, LineElement, PointElement, DoughnutController, ArcElement } from 'chart.js'; ChartJS.register(CategoryScale, LinearScale, BarElement, LineElement, PointElement, Title, Tooltip, Legend, DoughnutController, ArcElement); // --- I18N (Internationalization) Data --- const translations = { zh: { // General "app_title": "新一代ERP", "search_placeholder": "全局搜索...", "active": "已激活", "inactive": "未激活", "details": "详情", "create": "创建", "read": "读取", "update": "更新", "delete": "删除", // Sidebar "dashboard": "仪表盘", "core_modules": "核心业务模块", "platform_modules": "平台服务模块", "industry_solutions": "行业解决方案", "system_security": "系统与安全", "user_management": "用户管理", "mm": "物料管理 (MM)", "fico": "财务会计 (FI/CO)", "pp": "生产计划 (PP)", "ps": "项目系统 (PS)", "hr": "人力资源 (HR)", "pm": "工厂维护 (PM)", "mdm": "主数据管理 (MDM)", "bi": "数据分析 (BI)", "workflow": "工作流引擎", "apihub": "API中心", "oil_gas": "石油与天然气", "utilities": "电力行业", // MM Module "po": "采购订单", "inventory": "库存管理", "material_master": "物料主数据", "vendors": "供应商管理", "new_order": "新建订单", "inventory_movement": "库存移动", "create_material": "创建物料", "add_vendor": "新增供应商", "po_number": "订单号", "vendor_name": "供应商", "total_amount": "总金额", "status": "状态", "action": "操作", "material": "物料", "unrestricted_stock": "非限制库存", "qi_stock": "质检库存", "blocked_stock": "冻结库存", "total": "总计", "material_number": "物料号", "description": "描述", "material_type": "类型", "uom": "单位", "material_group": "物料组", "contact_person": "联系人", "rating": "评级", // FICO Module "gl_accounting": "总账会计", "ap": "应付账款", "ar": "应收账款", "cost_center": "成本中心会计", "account_number": "科目号", "account_name": "科目名称", "account_type": "科目类型", "balance": "余额", "invoice_number": "发票号", "due_date": "到期日", "amount": "金额", // PP Module "production_orders": "生产订单", "bom": "物料清单 (BOM)", "work_centers": "工作中心", "order_id": "订单ID", "quantity": "数量", "start_date": "开始日期", "end_date": "结束日期", // PS Module "project_name": "项目名称", "project_manager": "项目经理", "budget": "预算", "spent": "已花费", "progress": "进度", // HR Module "employee_master": "员工主数据", "payroll": "薪资管理", "recruiting": "招聘管理", "employee_id": "员工ID", "employee_name": "姓名", "department": "部门", "position": "职位", // PM Module "maintenance_orders": "维护订单", "equipment_master": "设备主数据", "equipment": "设备", "order_type": "订单类型", "priority": "优先级", "scheduled_date": "计划日期", // MDM Module "customers": "客户", // BI Module "ask_bi": "向智能分析模块提问... (例如:分析一下我们近期的供应链瓶颈)", "get_analysis": "获取分析", "analysis_result": "分析结果", "llm_summary": "大模型总结", "key_findings": "关键发现", "quarterly_sales_trend": "季度销售额趋势", "vendor_performance_issue": "供应商绩效问题", "supply_chain_bottleneck": "供应链瓶颈分析", "employee_turnover_analysis": "员工流动率分析", // Workflow Module "definitions": "流程定义", "monitoring": "实例监控", "process_mining": "流程挖掘", "workflow_name": "流程名称", "instance_id": "实例ID", "start_time": "开始时间", "discovered_model": "挖掘出的流程模型", "performance_analysis": "绩效分析", "avg_lead_time": "平均处理时长", "bottleneck": "瓶颈环节", "improvement_suggestions": "改进建议 (AI生成)", // API Hub Module "api_catalog": "API目录", "version": "版本", "monitoring_api": "API监控", "docs": "文档", // Industry Solutions "oil_gas_solution": "石油与天然气行业解决方案", "utilities_solution": "电力行业解决方案", "hcm": "碳氢化合物管理", "td": "调运管理", "ps_og": "计划与调度", "nuclear_om": "核电运维", "safety_mgmt": "安全管理", "retail_side": "售电侧管理", "vpp": "虚拟电厂", // System & Security "performance_monitoring": "性能监控", "security_monitoring": "安全监控", "adaptive_deployment": "自适应部署", "cpu_usage": "CPU使用率", "memory_usage": "内存使用率", "network_io": "网络 I/O", "container_status": "容器状态", "running": "运行中", "stopped": "已停止", "security_events": "安全事件", "event_time": "事件时间", "event_type": "事件类型", "source_ip": "源IP", "severity": "严重性", "critical": "严重", "high": "高", "medium": "中", "low": "低", "compliance_status": "合规状态", "passed": "通过", "failed": "失败", "server_cluster": "服务器集群", "scale_up_event": "扩容事件", "scale_down_event": "缩容事件", // User Management "user_list": "用户列表", "role_management": "角色管理", "audit_log": "审计日志", "add_user": "新增用户", "username": "用户名", "email": "邮箱", "role": "角色", "last_login": "上次登录", "permissions": "权限", "save_permissions": "保存权限", "timestamp": "时间戳", "user": "用户", // Statuses "status_pending_approval": "待批准", "status_approved": "已批准", "status_invoiced": "已开票", "status_completed": "已完成", "status_pending_payment": "待支付", "status_paid": "已支付", "status_active": "有效", "status_inactive": "无效", "status_released": "已下达", "status_created": "已创建", "status_in_progress": "进行中", "status_on_duty": "在职", "status_planned": "已计划", "status_high": "高", "status_urgent": "紧急", }, en: { "app_title": "Next-Gen ERP", "search_placeholder": "Global Search...", "active": "Active", "inactive": "Inactive", "details": "Details", "create": "Create", "read": "Read", "update": "Update", "delete": "Delete", "dashboard": "Dashboard", "core_modules": "Core Business Modules", "platform_modules": "Platform Services", "industry_solutions": "Industry Solutions", "system_security": "System & Security", "user_management": "User Management", "mm": "Materials Mgmt (MM)", "fico": "Finance (FI/CO)", "pp": "Production (PP)", "ps": "Project System (PS)", "hr": "Human Resources (HR)", "pm": "Plant Maintenance (PM)", "mdm": "Master Data (MDM)", "bi": "Data Analytics (BI)", "workflow": "Workflow Engine", "apihub": "API Hub", "oil_gas": "Oil & Gas", "utilities": "Utilities", "po": "Purchase Orders", "inventory": "Inventory Mgmt", "material_master": "Material Master", "vendors": "Vendor Mgmt", "new_order": "New Order", "inventory_movement": "Inventory Mvmt", "create_material": "Create Material", "add_vendor": "Add Vendor", "po_number": "PO Number", "vendor_name": "Vendor", "total_amount": "Total Amount", "status": "Status", "action": "Action", "material": "Material", "unrestricted_stock": "Unrestricted", "qi_stock": "Quality Insp.", "blocked_stock": "Blocked", "total": "Total", "material_number": "Material No.", "description": "Description", "material_type": "Type", "uom": "UoM", "material_group": "Material Group", "contact_person": "Contact", "rating": "Rating", "gl_accounting": "General Ledger", "ap": "Accounts Payable", "ar": "Accounts Receivable", "cost_center": "Cost Center Acct.", "account_number": "Account No.", "account_name": "Account Name", "account_type": "Account Type", "balance": "Balance", "invoice_number": "Invoice No.", "due_date": "Due Date", "amount": "Amount", "production_orders": "Production Orders", "bom": "Bill of Materials (BOM)", "work_centers": "Work Centers", "order_id": "Order ID", "quantity": "Quantity", "start_date": "Start Date", "end_date": "End Date", "project_name": "Project Name", "project_manager": "Project Manager", "budget": "Budget", "spent": "Spent", "progress": "Progress", "employee_master": "Employee Master", "payroll": "Payroll", "recruiting": "Recruiting", "employee_id": "Employee ID", "employee_name": "Name", "department": "Department", "position": "Position", "maintenance_orders": "Maintenance Orders", "equipment_master": "Equipment Master", "equipment": "Equipment", "order_type": "Order Type", "priority": "Priority", "scheduled_date": "Scheduled Date", "customers": "Customers", "ask_bi": "Ask the analytics module... (e.g., Analyze our recent supply chain bottlenecks)", "get_analysis": "Get Analysis", "analysis_result": "Analysis Result", "llm_summary": "LLM Summary", "key_findings": "Key Findings", "quarterly_sales_trend": "Quarterly Sales Trend", "vendor_performance_issue": "Vendor Performance Issue", "supply_chain_bottleneck": "Supply Chain Bottleneck Analysis", "employee_turnover_analysis": "Employee Turnover Analysis", "definitions": "Definitions", "monitoring": "Monitoring", "process_mining": "Process Mining", "workflow_name": "Workflow Name", "instance_id": "Instance ID", "start_time": "Start Time", "discovered_model": "Discovered Process Model", "performance_analysis": "Performance Analysis", "avg_lead_time": "Avg. Lead Time", "bottleneck": "Bottleneck", "improvement_suggestions": "Improvement Suggestions (AI-Generated)", "api_catalog": "API Catalog", "version": "Version", "monitoring_api": "API Monitoring", "docs": "Docs", "oil_gas_solution": "Oil & Gas Industry Solution", "utilities_solution": "Utilities Industry Solution", "hcm": "Hydrocarbon Mgmt", "td": "Transportation & Dist.", "ps_og": "Planning & Scheduling", "nuclear_om": "Nuclear O&M", "safety_mgmt": "Safety Management", "retail_side": "Retail Side Mgmt", "vpp": "Virtual Power Plant", "performance_monitoring": "Performance Monitoring", "security_monitoring": "Security Monitoring", "adaptive_deployment": "Adaptive Deployment", "cpu_usage": "CPU Usage", "memory_usage": "Memory Usage", "network_io": "Network I/O", "container_status": "Container Status", "running": "Running", "stopped": "Stopped", "security_events": "Security Events", "event_time": "Event Time", "event_type": "Event Type", "source_ip": "Source IP", "severity": "Severity", "critical": "Critical", "high": "High", "medium": "Medium", "low": "Low", "compliance_status": "Compliance Status", "passed": "Passed", "failed": "Failed", "server_cluster": "Server Cluster", "scale_up_event": "Scale-Up Event", "scale_down_event": "Scale-Down Event", "user_list": "User List", "role_management": "Role Management", "audit_log": "Audit Log", "add_user": "Add User", "username": "Username", "email": "Email", "role": "Role", "last_login": "Last Login", "permissions": "Permissions", "save_permissions": "Save Permissions", "timestamp": "Timestamp", "user": "User", "status_pending_approval": "Pending Approval", "status_approved": "Approved", "status_invoiced": "Invoiced", "status_completed": "Completed", "status_pending_payment": "Pending Payment", "status_paid": "Paid", "status_active": "Active", "status_inactive": "Inactive", "status_released": "Released", "status_created": "Created", "status_in_progress": "In Progress", "status_on_duty": "Active", "status_planned": "Planned", "status_high": "High", "status_urgent": "Urgent", }, fr: { "app_title": "ERP Prochaine Gén.", "search_placeholder": "Recherche globale...", "active": "Activé", "inactive": "Désactivé", "details": "Détails", "create": "Créer", "read": "Lire", "update": "Mettre à jour", "delete": "Supprimer", "dashboard": "Tableau de bord", "core_modules": "Modules Métiers", "platform_modules": "Services Plateforme", "industry_solutions": "Solutions Industrielles", "system_security": "Système et Sécurité", "user_management": "Gestion Utilisateurs", "mm": "Gestion Articles (MM)", "fico": "Finance (FI/CO)", "pp": "Production (PP)", "ps": "Gestion Projets (PS)", "hr": "Ressources Hum. (RH)", "pm": "Maintenance (PM)", "mdm": "Données de base (MDM)", "bi": "Analyse de données (BI)", "workflow": "Moteur de workflow", "apihub": "API Hub", "oil_gas": "Pétrole et Gaz", "utilities": "Services Publics", "po": "Commandes d'achat", "inventory": "Gestion de stock", "material_master": "Données articles", "vendors": "Gestion fournisseurs", "new_order": "Nouvelle commande", "inventory_movement": "Mouvement de stock", "create_material": "Créer article", "add_vendor": "Ajouter fournisseur", "po_number": "N° Commande", "vendor_name": "Fournisseur", "total_amount": "Montant total", "status": "Statut", "action": "Action", "material": "Article", "unrestricted_stock": "Utilisable", "qi_stock": "Contrôle Qualité", "blocked_stock": "Bloqué", "total": "Total", "material_number": "N° Article", "description": "Description", "material_type": "Type", "uom": "Unité", "material_group": "Groupe d'articles", "contact_person": "Contact", "rating": "Note", "gl_accounting": "Grand Livre", "ap": "Comptes fournisseurs", "ar": "Comptes clients", "cost_center": "Compt. analytique", "account_number": "N° Compte", "account_name": "Nom du compte", "account_type": "Type de compte", "balance": "Solde", "invoice_number": "N° Facture", "due_date": "Échéance", "amount": "Montant", "production_orders": "Ordres de fabrication", "bom": "Nomenclature (BOM)", "work_centers": "Postes de travail", "order_id": "ID Ordre", "quantity": "Quantité", "start_date": "Date début", "end_date": "Date fin", "project_name": "Nom du projet", "project_manager": "Chef de projet", "budget": "Budget", "spent": "Dépensé", "progress": "Progression", "employee_master": "Fiche employé", "payroll": "Paie", "recruiting": "Recrutement", "employee_id": "ID Employé", "employee_name": "Nom", "department": "Département", "position": "Poste", "maintenance_orders": "Ordres de maintenance", "equipment_master": "Données équipement", "equipment": "Équipement", "order_type": "Type d'ordre", "priority": "Priorité", "scheduled_date": "Date planifiée", "customers": "Clients", "ask_bi": "Posez une question... (ex: Analyser nos goulots d'étranglement logistiques)", "get_analysis": "Analyser", "analysis_result": "Résultat de l'analyse", "llm_summary": "Résumé LLM", "key_findings": "Points Clés", "quarterly_sales_trend": "Tendance des ventes trimestrielles", "vendor_performance_issue": "Problème de performance fournisseur", "supply_chain_bottleneck": "Analyse des goulots d'étranglement", "employee_turnover_analysis": "Analyse du turnover des employés", "definitions": "Définitions", "monitoring": "Suivi", "process_mining": "Exploration de processus", "workflow_name": "Nom du workflow", "instance_id": "ID Instance", "start_time": "Date de début", "discovered_model": "Modèle de processus découvert", "performance_analysis": "Analyse de performance", "avg_lead_time": "Délai moyen", "bottleneck": "Goulot d'étranglement", "improvement_suggestions": "Suggestions d'amélioration (par IA)", "api_catalog": "Catalogue d'API", "version": "Version", "monitoring_api": "Suivi d'API", "docs": "Docs", "oil_gas_solution": "Solution Industrie Pétrole & Gaz", "utilities_solution": "Solution Industrie Services Publics", "hcm": "Gestion des Hydrocarbures", "td": "Transport & Dist.", "ps_og": "Planification", "nuclear_om": "O&M Nucléaire", "safety_mgmt": "Gestion de la Sécurité", "retail_side": "Gestion Vente au Détail", "vpp": "Centrale Électrique Virtuelle", "performance_monitoring": "Suivi de performance", "security_monitoring": "Suivi de sécurité", "adaptive_deployment": "Déploiement adaptatif", "cpu_usage": "Usage CPU", "memory_usage": "Usage Mémoire", "network_io": "E/S Réseau", "container_status": "Statut Conteneur", "running": "En cours", "stopped": "Arrêté", "security_events": "Événements de sécurité", "event_time": "Heure", "event_type": "Type", "source_ip": "IP Source", "severity": "Sévérité", "critical": "Critique", "high": "Haute", "medium": "Moyenne", "low": "Basse", "compliance_status": "État de conformité", "passed": "Conforme", "failed": "Non conforme", "server_cluster": "Cluster de serveurs", "scale_up_event": "Événement d'ajout", "scale_down_event": "Événement de retrait", "user_list": "Liste des utilisateurs", "role_management": "Gestion des rôles", "audit_log": "Journal d'audit", "add_user": "Ajouter un utilisateur", "username": "Nom d'utilisateur", "email": "E-mail", "role": "Rôle", "last_login": "Dernière connexion", "permissions": "Permissions", "save_permissions": "Sauvegarder", "timestamp": "Horodatage", "user": "Utilisateur", "status_pending_approval": "En attente d'appro.", "status_approved": "Approuvé", "status_invoiced": "Facturé", "status_completed": "Terminé", "status_pending_payment": "En attente de paiement", "status_paid": "Payé", "status_active": "Actif", "status_inactive": "Inactif", "status_released": "Lancé", "status_created": "Créé", "status_in_progress": "En cours", "status_on_duty": "Actif", "status_planned": "Planifié", "status_high": "Haute", "status_urgent": "Urgent", }, es: { "app_title": "ERP Nueva Gen.", "search_placeholder": "Búsqueda global...", "active": "Activado", "inactive": "Desactivado", "details": "Detalles", "create": "Crear", "read": "Leer", "update": "Actualizar", "delete": "Borrar", "dashboard": "Panel de control", "core_modules": "Módulos de Negocio", "platform_modules": "Servicios de Plataforma", "industry_solutions": "Soluciones de Industria", "system_security": "Sistema y Seguridad", "user_management": "Gestión de Usuarios", "mm": "Gestión Materiales (MM)", "fico": "Finanzas (FI/CO)", "pp": "Producción (PP)", "ps": "Sistema Proyectos (PS)", "hr": "Recursos Humanos (RRHH)", "pm": "Mantenimiento (PM)", "mdm": "Datos Maestros (MDM)", "bi": "Análisis de Datos (BI)", "workflow": "Motor de Flujo", "apihub": "API Hub", "oil_gas": "Petróleo y Gas", "utilities": "Servicios Públicos", "po": "Pedidos de compra", "inventory": "Gestión de stock", "material_master": "Maestro de materiales", "vendors": "Gestión de proveedores", "new_order": "Nuevo pedido", "inventory_movement": "Movimiento de stock", "create_material": "Crear material", "add_vendor": "Añadir proveedor", "po_number": "Nº Pedido", "vendor_name": "Proveedor", "total_amount": "Importe total", "status": "Estado", "action": "Acción", "material": "Material", "unrestricted_stock": "Libre utilización", "qi_stock": "Control calidad", "blocked_stock": "Bloqueado", "total": "Total", "material_number": "Nº Material", "description": "Descripción", "material_type": "Tipo", "uom": "Unidad", "material_group": "Grupo de artículos", "contact_person": "Contacto", "rating": "Calificación", "gl_accounting": "Libro Mayor", "ap": "Cuentas por pagar", "ar": "Cuentas por cobrar", "cost_center": "Cont. de costes", "account_number": "Nº Cuenta", "account_name": "Nombre de cuenta", "account_type": "Tipo de cuenta", "balance": "Saldo", "invoice_number": "Nº Factura", "due_date": "Vencimiento", "amount": "Importe", "production_orders": "Órdenes de producción", "bom": "Lista de materiales (BOM)", "work_centers": "Puestos de trabajo", "order_id": "ID Orden", "quantity": "Cantidad", "start_date": "Fecha de inicio", "end_date": "Fecha de fin", "project_name": "Nombre del proyecto", "project_manager": "Jefe de proyecto", "budget": "Presupuesto", "spent": "Gastado", "progress": "Progreso", "employee_master": "Maestro de empleados", "payroll": "Nómina", "recruiting": "Reclutamiento", "employee_id": "ID Empleado", "employee_name": "Nombre", "department": "Departamento", "position": "Puesto", "maintenance_orders": "Órdenes de mantenimiento", "equipment_master": "Maestro de equipos", "equipment": "Equipo", "order_type": "Tipo de orden", "priority": "Prioridad", "scheduled_date": "Fecha planificada", "customers": "Clientes", "ask_bi": "Pregunte al módulo de análisis... (ej: Analizar nuestros cuellos de botella en la cadena de suministro)", "get_analysis": "Analizar", "analysis_result": "Resultado del Análisis", "llm_summary": "Resumen del LLM", "key_findings": "Hallazgos Clave", "quarterly_sales_trend": "Tendencia de ventas trimestrales", "vendor_performance_issue": "Problema de rendimiento de proveedores", "supply_chain_bottleneck": "Análisis de Cuello de Botella", "employee_turnover_analysis": "Análisis de Rotación de Empleados", "definitions": "Definiciones", "monitoring": "Monitoreo", "process_mining": "Minería de Procesos", "workflow_name": "Nombre del Flujo", "instance_id": "ID Instancia", "start_time": "Hora de inicio", "discovered_model": "Modelo de Proceso Descubierto", "performance_analysis": "Análisis de Rendimiento", "avg_lead_time": "Tiempo Promedio", "bottleneck": "Cuello de Botella", "improvement_suggestions": "Sugerencias de Mejora (por IA)", "api_catalog": "Catálogo de API", "version": "Versión", "monitoring_api": "Monitoreo de API", "docs": "Docs", "oil_gas_solution": "Solución para Petróleo y Gas", "utilities_solution": "Solución para Servicios Públicos", "hcm": "Gestión de Hidrocarburos", "td": "Transporte y Dist.", "ps_og": "Planificación", "nuclear_om": "O&M Nuclear", "safety_mgmt": "Gestión de Seguridad", "retail_side": "Gestión Minorista", "vpp": "Central Eléctrica Virtual", "performance_monitoring": "Monitoreo de Rendimiento", "security_monitoring": "Monitoreo de Seguridad", "adaptive_deployment": "Despliegue Adaptativo", "cpu_usage": "Uso de CPU", "memory_usage": "Uso de Memoria", "network_io": "E/S de Red", "container_status": "Estado del Contenedor", "running": "En ejecución", "stopped": "Detenido", "security_events": "Eventos de Seguridad", "event_time": "Hora del Evento", "event_type": "Tipo de Evento", "source_ip": "IP de Origen", "severity": "Gravedad", "critical": "Crítico", "high": "Alto", "medium": "Medio", "low": "Bajo", "compliance_status": "Estado de Cumplimiento", "passed": "Aprobado", "failed": "Fallido", "server_cluster": "Clúster de Servidores", "scale_up_event": "Evento de Escalado Positivo", "scale_down_event": "Evento de Escalado Negativo", "user_list": "Lista de Usuarios", "role_management": "Gestión de Roles", "audit_log": "Registro de Auditoría", "add_user": "Añadir Usuario", "username": "Usuario", "email": "Email", "role": "Rol", "last_login": "Último Acceso", "permissions": "Permisos", "save_permissions": "Guardar Permisos", "timestamp": "Marca de Tiempo", "user": "Usuario", "status_pending_approval": "Pendiente aprobación", "status_approved": "Aprobado", "status_invoiced": "Facturado", "status_completed": "Completado", "status_pending_payment": "Pendiente de pago", "status_paid": "Pagado", "status_active": "Activo", "status_inactive": "Inactivo", "status_released": "Liberado", "status_created": "Creado", "status_in_progress": "En curso", "status_on_duty": "Activo", "status_planned": "Planificado", "status_high": "Alta", "status_urgent": "Urgente", }, }; // --- Mock Data with I18N --- const initialVendors = [ { id: 'V001', name: {zh: '环球电子元件供应商', en: 'Global Electronics Supplier', fr: 'Fournisseur Global Électronique', es: 'Proveedor Global de Electrónica'}, contact: '李经理', rating: 4.5, status: 'status_active' }, { id: 'V002', name: {zh: '精密机械配件有限公司', en: 'Precision Parts Ltd.', fr: 'Pièces de Précision Ltée', es: 'Piezas de Precisión S.L.'}, contact: '王工', rating: 4.8, status: 'status_active' }, { id: 'V003', name: {zh: '企业级软件解决方案', en: 'Enterprise Software Solutions', fr: 'Solutions Logicielles d\'Entreprise', es: 'Soluciones de Software Empresarial'}, contact: '陈顾问', rating: 4.2, status: 'status_active' }, { id: 'V004', name: {zh: '办公用品直供中心', en: 'Office Supply Direct', fr: 'Fournitures de Bureau Direct', es: 'Suministros de Oficina Directo'}, contact: '赵小姐', rating: 3.9, status: 'status_inactive' }, ]; const initialMaterials = [ { id: 'MAT-001', description: {zh: '高性能微处理器 A1', en: 'High-Performance Microprocessor A1', fr: 'Microprocesseur Haute Performance A1', es: 'Microprocesador de Alto Rendimiento A1'}, type: {zh: '成品 (FERT)', en: 'Finished Good (FERT)', fr: 'Produit Fini (FERT)', es: 'Producto Terminado (FERT)'}, uom: 'PC', group: {zh: '电子元件', en: 'Electronics', fr: 'Électronique', es: 'Electrónica'} }, { id: 'MAT-002', description: {zh: '内存条 16GB', en: 'Memory Module 16GB', fr: 'Module Mémoire 16Go', es: 'Módulo de Memoria 16GB'}, type: {zh: '成品 (FERT)', en: 'Finished Good (FERT)', fr: 'Produit Fini (FERT)', es: 'Producto Terminado (FERT)'}, uom: 'PC', group: {zh: '电子元件', en: 'Electronics', fr: 'Électronique', es: 'Electrónica'} }, { id: 'MAT-003', description: {zh: 'CNC精密轴承', en: 'CNC Precision Bearing', fr: 'Roulement de Précision CNC', es: 'Rodamiento de Precisión CNC'}, type: {zh: '原材料 (ROH)', en: 'Raw Material (ROH)', fr: 'Matière Première (ROH)', es: 'Materia Prima (ROH)'}, uom: 'PC', group: {zh: '机械配件', en: 'Mechanical Parts', fr: 'Pièces Mécaniques', es: 'Piezas Mecánicas'} }, ]; const initialInventory = [ { materialId: 'MAT-001', location: 'A-01-01', unrestricted: 1250, inQualityInspection: 50, blocked: 10 }, { materialId: 'MAT-002', location: 'A-01-02', unrestricted: 3400, inQualityInspection: 0, blocked: 0 }, { materialId: 'MAT-003', location: 'B-05-03', unrestricted: 800, inQualityInspection: 200, blocked: 0 }, ]; const initialPurchaseOrders = [ { id: 'PO2025-07-001', vendorId: 'V001', date: '2025-07-10', total: 15800.00, status: 'status_approved', items: [{ id: 1, materialId: 'MAT-001', qty: 100, price: 150 }, { id: 2, materialId: 'MAT-002', qty: 20, price: 40 }] }, { id: 'PO2025-07-002', vendorId: 'V002', date: '2025-07-09', total: 8200.00, status: 'status_pending_approval', items: [{ id: 1, materialId: 'MAT-003', qty: 50, price: 120 }] }, ]; const initialInvoices = [ { id: 'INV-001', poId: 'PO2025-06-015', vendorId: 'V001', amount: 3250.00, issueDate: '2025-06-20', dueDate: '2025-07-20', status: 'status_pending_payment' }, { id: 'INV-002', poId: 'PO2025-07-003', vendorId: 'V003', amount: 25000.00, issueDate: '2025-07-09', dueDate: '2025-08-08', status: 'status_paid' }, ]; const initialGLAccounts = [ { id: '100101', name: {zh: '现金', en: 'Cash', fr: 'Caisse', es: 'Caja'}, type: {zh: '资产', en: 'Asset', fr: 'Actif', es: 'Activo'}, balance: 1250000.00 }, { id: '200101', name: {zh: '应付账款-国内', en: 'A/P - Domestic', fr: 'Comptes Fournisseurs - Dom.', es: 'Cuentas por Pagar - Dom.'}, type: {zh: '负债', en: 'Liability', fr: 'Passif', es: 'Pasivo'}, balance: -345000.00 }, ]; const initialProductionOrders = [ { id: 'PROD-001', materialId: 'MAT-001', quantity: 500, startDate: '2025-07-15', endDate: '2025-07-20', status: 'status_released' }, { id: 'PROD-002', materialId: 'MAT-005', quantity: 1000, startDate: '2025-07-18', endDate: '2025-07-25', status: 'status_created' }, ]; const initialProjects = [ { id: 'PROJ-A1', name: {zh: '新生产线建设', en: 'New Production Line Construction', fr: 'Construction Nouvelle Ligne de Prod.', es: 'Construcción Nueva Línea de Prod.'}, manager: '项目经理A', budget: 5000000, spent: 1200000, progress: 25, status: 'status_in_progress' }, { id: 'PROJ-B2', name: {zh: 'ERP系统升级', en: 'ERP System Upgrade', fr: 'Mise à Niveau Système ERP', es: 'Actualización del Sistema ERP'}, manager: '项目经理B', budget: 800000, spent: 850000, progress: 100, status: 'status_completed' }, ]; const initialEmployees = [ { id: 'E1001', name: '张伟', department: {zh: '研发部', en: 'R&D', fr: 'R&D', es: 'I+D'}, position: {zh: '软件工程师', en: 'Software Engineer', fr: 'Ingénieur Logiciel', es: 'Ingeniero de Software'}, status: 'status_on_duty' }, { id: 'E1002', name: '李静', department: {zh: '人力资源部', en: 'Human Resources', fr: 'Ressources Humaines', es: 'Recursos Humanos'}, position: {zh: '招聘专员', en: 'Recruiter', fr: 'Recruteur', es: 'Reclutador'}, status: 'status_on_duty' }, ]; const initialMaintenanceOrders = [ { id: 'MAINT-001', equipment: {zh: '数控机床 #3', en: 'CNC Machine #3', fr: 'Machine CNC #3', es: 'Máquina CNC #3'}, type: {zh: '预防性维护', en: 'Preventive Maintenance', fr: 'Maintenance préventive', es: 'Mantenimiento preventivo'}, priority: 'status_high', scheduledDate: '2025-07-20', status: 'status_planned' }, { id: 'MAINT-002', equipment: {zh: '中央空调系统', en: 'Central A/C System', fr: 'Système de CVC central', es: 'Sistema de A/C Central'}, type: {zh: '故障维修', en: 'Breakdown Maintenance', fr: 'Maintenance corrective', es: 'Mantenimiento correctivo'}, priority: 'status_urgent', scheduledDate: '2025-07-10', status: 'status_completed' }, ]; // --- Helper Components --- const Card = ({ children, className = '' }) =>
采购申请
采购订单
收货
发票校验
付款
{t('po_number')} | {t('vendor_name')} | {t('status')} | {t('action')} |
---|---|---|---|
{po.id} | {t_data(data.vendors.find(v => v.id === po.vendorId), 'name')} |
{t('vendor_name')}: {t_data(data.vendors.find(v => v.id === selectedPO.vendorId), 'name')}
{t('material')} | {t('quantity')} | {t('amount')} |
---|---|---|
{t_data(data.materials.find(m => m.id === item.materialId), 'description')} | {item.qty} | ¥{(item.qty * item.price).toLocaleString()} |
{t('total')} | ¥{selectedPO.total.toLocaleString()} |
{t('material')} | {t('unrestricted_stock')} | {t('qi_stock')} | {t('blocked_stock')} | {t('total')} |
---|---|---|---|---|
{t_data(data.materials.find(m => m.id === i.materialId), 'description')} | {i.unrestricted} | {i.inQualityInspection} | {i.blocked} | {i.unrestricted + i.inQualityInspection + i.blocked} |
{t('material_number')} | {t('description')} | {t('material_type')} | {t('uom')} | {t('material_group')} |
---|---|---|---|---|
{m.id} | {t_data(m, 'description')} | {t_data(m, 'type')} | {m.uom} | {t_data(m, 'group')} |
{t('vendor_name')} | {t('contact_person')} | {t('rating')} | {t('status')} | {t('action')} |
---|---|---|---|---|
{t_data(v, 'name')} | {v.contact} | ★ {v.rating} |
{t('account_number')} | {t('account_name')} | {t('account_type')} | {t('balance')} |
---|---|---|---|
{acc.id} | {t_data(acc, 'name')} | {t_data(acc, 'type')} | ¥{acc.balance.toLocaleString(undefined, {minimumFractionDigits: 2})} |
{t('invoice_number')} | {t('vendor_name')} | {t('amount')} | {t('due_date')} | {t('status')} |
---|---|---|---|---|
{inv.id} | {t_data(data.vendors.find(v => v.id === inv.vendorId), 'name')} | ¥{inv.amount.toLocaleString(undefined, {minimumFractionDigits: 2})} | {inv.dueDate} |
{t('order_id')} | {t('material')} | {t('quantity')} | {t('start_date')} | {t('end_date')} | {t('status')} |
---|---|---|---|---|---|
{po.id} | {t_data(data.materials.find(m => m.id === po.materialId), 'description')} | {po.quantity} | {po.startDate} | {po.endDate} |
{t('project_manager')}: {p.manager}
{t('employee_id')} | {t('employee_name')} | {t('department')} | {t('position')} | {t('status')} |
---|---|---|---|---|
{e.id} | {e.name} | {t_data(e, 'department')} | {t_data(e, 'position')} |
{t('order_id')} | {t('equipment')} | {t('order_type')} | {t('priority')} | {t('scheduled_date')} | {t('status')} |
---|---|---|---|---|---|
{mo.id} | {t_data(mo, 'equipment')} | {t_data(mo, 'type')} | {mo.scheduledDate} |
{t('material_number')} | {t('description')} | {t('material_type')} | {t('uom')} | {t('material_group')} |
---|---|---|---|---|
{m.id} | {t_data(m, 'description')} | {t_data(m, 'type')} | {m.uom} | {t_data(m, 'group')} |
{t('vendor_name')} | {t('contact_person')} | {t('rating')} | {t('status')} |
---|---|---|---|
{t_data(v, 'name')} | {v.contact} | ★ {v.rating} |
{t('employee_id')} | {t('employee_name')} | {t('department')} | {t('position')} |
---|---|---|---|
{e.id} | {e.name} | {t_data(e, 'department')} | {t_data(e, 'position')} |
{analysis.summary}
{analysis.summary}
{t('instance_id')} | {t('workflow_name')} | {t('start_time')} | {t('status')} |
---|---|---|---|
WF-00123 | 采购订单审批 | 2025-07-10 09:15 | |
WF-00122 | 采购订单审批 | 2025-07-09 14:30 |
1. 为低于特定金额的订单设置财务自动审批规则。
2. 引入移动审批,减少财务人员的等待时间。
{t_data(api, 'desc')}
Endpoint:
POST /api/{selectedApi.domain.toLowerCase()}/{selectedApi.name.split(' ')[0].toLowerCase()}
Sample Request:
{`{\n "id": "PO12345",\n "vendor": "V001"\n}`}
激活碳氢化合物管理、调运管理和计划调度功能。
激活核电运维、行业安全管理、售电侧和虚拟电厂功能。
原油 | 10,000 BBL | 进行中 | |
汽油 | 30 m³ | 已完成 | |
LNG | 50,000 m³ | 已计划 |
#12345 - 电气工作票 | 3号发电机 | 已签发 |
#12346 - 操作票 | 主变压器 | 已签发 |
光伏电站
2.5 MW
风力电场
5.1 MW
储能电站
1.2 MW (放电中)