Initial commit: X-Server Mobile enterprise tool system

- Frontend: React 18 + TypeScript + Vite + Ant Design Mobile
- Backend: PHP 8.5 + Webman 2.x + MySQL + Redis
- i18n support: Chinese, English, Russian, Spanish, French
- Approval workflow engine
- Docker development environment
- Feishu integration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-24 17:57:25 +08:00
commit 8d78e18267
121 changed files with 18563 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
<?php
/**
* English translation file
*/
return [
'app' => [
'name' => 'Enterprise Tool System',
'title' => 'Enterprise Internal Tool Platform',
],
'common' => [
'success' => 'Operation successful',
'error' => 'Operation failed',
'confirm' => 'Confirm',
'cancel' => 'Cancel',
'submit' => 'Submit',
'save' => 'Save',
'delete' => 'Delete',
'edit' => 'Edit',
'search' => 'Search',
'refresh' => 'Refresh',
'back' => 'Back',
'close' => 'Close',
'loading' => 'Loading...',
'no_data' => 'No data',
'operation' => 'Operation',
'status' => 'Status',
'create_time' => 'Create Time',
'update_time' => 'Update Time',
'remark' => 'Remark',
],
'auth' => [
'login_success' => 'Login successful',
'login_failed' => 'Login failed',
'username_required' => 'Username is required',
'password_required' => 'Password is required',
'invalid_credentials' => 'Invalid username or password',
'token_expired' => 'Session expired, please login again',
'unauthorized' => 'Unauthorized, please login first',
],
'user' => [
'not_found' => 'User not found',
'info_updated' => 'Profile updated successfully',
'company_switched' => 'Company switched successfully',
],
'approval' => [
'submit_success' => 'Approval submitted successfully',
'approve_success' => 'Approved successfully',
'reject_success' => 'Rejected successfully',
'cancel_success' => 'Cancelled successfully',
'not_found' => 'Approval not found',
'cannot_approve' => 'Cannot approve in current status',
'cannot_cancel' => 'Cannot cancel in current status',
'not_owner' => 'Only the applicant can cancel',
'status' => [
'pending' => 'Pending',
'approved' => 'Approved',
'rejected' => 'Rejected',
'cancelled' => 'Cancelled',
],
],
'business_trip' => [
'submit_success' => 'Business trip submitted successfully',
'update_success' => 'Business trip updated successfully',
'not_found' => 'Business trip not found',
],
'error' => [
'network_error' => 'Network error, please try again later',
'server_error' => 'Server error',
'not_found' => 'Page not found',
'unknown_error' => 'Unknown error',
'params_error' => 'Parameter error',
'validation_error' => 'Validation failed',
],
];
+75
View File
@@ -0,0 +1,75 @@
<?php
/**
* Traducción al español (Spanish translation)
*/
return [
'app' => [
'name' => 'Sistema Empresarial',
'title' => 'Plataforma de Herramientas Empresariales',
],
'common' => [
'success' => 'Operación exitosa',
'error' => 'Operación fallida',
'confirm' => 'Confirmar',
'cancel' => 'Cancelar',
'submit' => 'Enviar',
'save' => 'Guardar',
'delete' => 'Eliminar',
'edit' => 'Editar',
'search' => 'Buscar',
'refresh' => 'Actualizar',
'back' => 'Atrás',
'close' => 'Cerrar',
'loading' => 'Cargando...',
'no_data' => 'Sin datos',
'operation' => 'Operación',
'status' => 'Estado',
'create_time' => 'Fecha de creación',
'update_time' => 'Fecha de actualización',
'remark' => 'Observación',
],
'auth' => [
'login_success' => 'Inicio de sesión exitoso',
'login_failed' => 'Error de inicio de sesión',
'username_required' => 'Se requiere usuario',
'password_required' => 'Se requiere contraseña',
'invalid_credentials' => 'Usuario o contraseña inválidos',
'token_expired' => 'Sesión expirada, inicie sesión nuevamente',
'unauthorized' => 'No autorizado, inicie sesión primero',
],
'user' => [
'not_found' => 'Usuario no encontrado',
'info_updated' => 'Perfil actualizado exitosamente',
'company_switched' => 'Empresa cambiada exitosamente',
],
'approval' => [
'submit_success' => 'Aprobación enviada exitosamente',
'approve_success' => 'Aprobado exitosamente',
'reject_success' => 'Rechazado exitosamente',
'cancel_success' => 'Cancelado exitosamente',
'not_found' => 'Aprobación no encontrada',
'cannot_approve' => 'No se puede aprobar en estado actual',
'cannot_cancel' => 'No se puede cancelar en estado actual',
'not_owner' => 'Solo el solicitante puede cancelar',
'status' => [
'pending' => 'Pendiente',
'approved' => 'Aprobado',
'rejected' => 'Rechazado',
'cancelled' => 'Cancelado',
],
],
'business_trip' => [
'submit_success' => 'Viaje enviado exitosamente',
'update_success' => 'Viaje actualizado exitosamente',
'not_found' => 'Viaje no encontrado',
],
'error' => [
'network_error' => 'Error de red, inténtelo más tarde',
'server_error' => 'Error del servidor',
'not_found' => 'Página no encontrada',
'unknown_error' => 'Error desconocido',
'params_error' => 'Error de parámetros',
'validation_error' => 'Validación fallida',
],
];
+75
View File
@@ -0,0 +1,75 @@
<?php
/**
* Traduction française (French translation)
*/
return [
'app' => [
'name' => 'Système d\'Entreprise',
'title' => 'Plateforme d\'Outils Entreprise',
],
'common' => [
'success' => 'Opération réussie',
'error' => 'Opération échouée',
'confirm' => 'Confirmer',
'cancel' => 'Annuler',
'submit' => 'Soumettre',
'save' => 'Enregistrer',
'delete' => 'Supprimer',
'edit' => 'Modifier',
'search' => 'Rechercher',
'refresh' => 'Actualiser',
'back' => 'Retour',
'close' => 'Fermer',
'loading' => 'Chargement...',
'no_data' => 'Aucune donnée',
'operation' => 'Opération',
'status' => 'Statut',
'create_time' => 'Date de création',
'update_time' => 'Date de mise à jour',
'remark' => 'Remarque',
],
'auth' => [
'login_success' => 'Connexion réussie',
'login_failed' => 'Échec de la connexion',
'username_required' => 'Nom d\'utilisateur requis',
'password_required' => 'Mot de passe requis',
'invalid_credentials' => 'Nom d\'utilisateur ou mot de passe invalide',
'token_expired' => 'Session expirée, veuillez vous reconnecter',
'unauthorized' => 'Non autorisé, veuillez vous connecter d\'abord',
],
'user' => [
'not_found' => 'Utilisateur introuvable',
'info_updated' => 'Profil mis à jour avec succès',
'company_switched' => 'Entreprise changée avec succès',
],
'approval' => [
'submit_success' => 'Approbation soumise avec succès',
'approve_success' => 'Approuvé avec succès',
'reject_success' => 'Rejeté avec succès',
'cancel_success' => 'Annulé avec succès',
'not_found' => 'Approbation introuvable',
'cannot_approve' => 'Impossible d\'approuver dans cet état',
'cannot_cancel' => 'Impossible d\'annuler dans cet état',
'not_owner' => 'Seul le demandeur peut annuler',
'status' => [
'pending' => 'En attente',
'approved' => 'Approuvé',
'rejected' => 'Rejeté',
'cancelled' => 'Annulé',
],
],
'business_trip' => [
'submit_success' => 'Déplacement soumis avec succès',
'update_success' => 'Déplacement mis à jour avec succès',
'not_found' => 'Déplacement introuvable',
],
'error' => [
'network_error' => 'Erreur réseau, veuillez réessayer plus tard',
'server_error' => 'Erreur du serveur',
'not_found' => 'Page introuvable',
'unknown_error' => 'Erreur inconnue',
'params_error' => 'Erreur de paramètres',
'validation_error' => 'Validation échouée',
],
];
+75
View File
@@ -0,0 +1,75 @@
<?php
/**
* Русский перевод (Russian translation)
*/
return [
'app' => [
'name' => 'Корпоративная система',
'title' => 'Корпоративная платформа инструментов',
],
'common' => [
'success' => 'Операция выполнена успешно',
'error' => 'Операция не удалась',
'confirm' => 'Подтвердить',
'cancel' => 'Отмена',
'submit' => 'Отправить',
'save' => 'Сохранить',
'delete' => 'Удалить',
'edit' => 'Редактировать',
'search' => 'Поиск',
'refresh' => 'Обновить',
'back' => 'Назад',
'close' => 'Закрыть',
'loading' => 'Загрузка...',
'no_data' => 'Нет данных',
'operation' => 'Операция',
'status' => 'Статус',
'create_time' => 'Время создания',
'update_time' => 'Время обновления',
'remark' => 'Примечание',
],
'auth' => [
'login_success' => 'Вход выполнен успешно',
'login_failed' => 'Ошибка входа',
'username_required' => 'Имя пользователя обязательно',
'password_required' => 'Пароль обязателен',
'invalid_credentials' => 'Неверное имя пользователя или пароль',
'token_expired' => 'Сессия истекла, войдите снова',
'unauthorized' => 'Не авторизован, войдите сначала',
],
'user' => [
'not_found' => 'Пользователь не найден',
'info_updated' => 'Профиль обновлен успешно',
'company_switched' => 'Компания изменена успешно',
],
'approval' => [
'submit_success' => 'Согласование отправлено успешно',
'approve_success' => 'Согласовано успешно',
'reject_success' => 'Отклонено успешно',
'cancel_success' => 'Отменено успешно',
'not_found' => 'Согласование не найдено',
'cannot_approve' => 'Невозможно согласовать в текущем статусе',
'cannot_cancel' => 'Невозможно отменить в текущем статусе',
'not_owner' => 'Только заявитель может отменить',
'status' => [
'pending' => 'Ожидает',
'approved' => 'Согласовано',
'rejected' => 'Отклонено',
'cancelled' => 'Отменено',
],
],
'business_trip' => [
'submit_success' => 'Командировка отправлена успешно',
'update_success' => 'Командировка обновлена успешно',
'not_found' => 'Командировка не найдена',
],
'error' => [
'network_error' => 'Ошибка сети, попробуйте позже',
'server_error' => 'Ошибка сервера',
'not_found' => 'Страница не найдена',
'unknown_error' => 'Неизвестная ошибка',
'params_error' => 'Ошибка параметров',
'validation_error' => 'Ошибка проверки данных',
],
];
+75
View File
@@ -0,0 +1,75 @@
<?php
/**
* 中文翻译文件
*/
return [
'app' => [
'name' => '企业工具系统',
'title' => '企业内部工具平台',
],
'common' => [
'success' => '操作成功',
'error' => '操作失败',
'confirm' => '确认',
'cancel' => '取消',
'submit' => '提交',
'save' => '保存',
'delete' => '删除',
'edit' => '编辑',
'search' => '搜索',
'refresh' => '刷新',
'back' => '返回',
'close' => '关闭',
'loading' => '加载中...',
'no_data' => '暂无数据',
'operation' => '操作',
'status' => '状态',
'create_time' => '创建时间',
'update_time' => '更新时间',
'remark' => '备注',
],
'auth' => [
'login_success' => '登录成功',
'login_failed' => '登录失败',
'username_required' => '用户名不能为空',
'password_required' => '密码不能为空',
'invalid_credentials' => '用户名或密码错误',
'token_expired' => '登录已过期,请重新登录',
'unauthorized' => '未授权,请先登录',
],
'user' => [
'not_found' => '用户不存在',
'info_updated' => '个人信息更新成功',
'company_switched' => '公司切换成功',
],
'approval' => [
'submit_success' => '审批提交成功',
'approve_success' => '审批通过',
'reject_success' => '已拒绝',
'cancel_success' => '已撤销',
'not_found' => '审批单不存在',
'cannot_approve' => '当前状态无法审批',
'cannot_cancel' => '当前状态无法撤销',
'not_owner' => '只有申请人可以撤销',
'status' => [
'pending' => '待审批',
'approved' => '已通过',
'rejected' => '已拒绝',
'cancelled' => '已撤销',
],
],
'business_trip' => [
'submit_success' => '出差申请提交成功',
'update_success' => '出差申请更新成功',
'not_found' => '出差申请不存在',
],
'error' => [
'network_error' => '网络错误,请稍后重试',
'server_error' => '服务器错误',
'not_found' => '页面不存在',
'unknown_error' => '未知错误',
'params_error' => '参数错误',
'validation_error' => '数据验证失败',
],
];