承接 manuxi/sulu-appointment-bundle 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

manuxi/sulu-appointment-bundle

Composer 安装命令:

composer require manuxi/sulu-appointment-bundle

包简介

Sulu Appointment Bundle

README 文档

README

License: MIT Supports Sulu 3.0 or later

A Sulu CMS bundle for appointment management with an integrated calendar view (FullCalendar) instead of the traditional list view.

English | 🇩🇪 Deutsch

Overview

Features

  • 📅 Calendar Overview with month, week and day views (FullCalendar TimeGrid & DayGrid)
  • 🕒 Split Business Hours: Configurable morning/afternoon slots per weekday
  • 📋 Day View with appointment list on day click
  • 🔒 Collision Detection for resources (doctor/room/device)
  • 🌍 Multilingual (Sulu DimensionContent)
  • Appointment Status: scheduled, confirmed, arrived, cancelled, completed
  • 🎨 Configurable Status Colors per status
  • 📝 Status Audit Log: Every status change is tracked with timestamp and user
  • 🏥 Flexible Resources: Doctor, room, device with JSON metadata
  • 💡 View Persistence: Calendar remembers last view and date (localStorage)
  • 🖱️ Rich Tooltips: Detailed appointment info on hover
  • 🗂️ Sub-Appointments: Break appointments into multiple time slots with individual resources, statuses, and drag-and-drop reordering via a side drawer UI
  • ⏱️ Appointment Search (Availability Wizard): Smart time suggestions respecting business hours, preventing collisions, and automatically detecting the next available slot
  • Bulk Actions: Update multiple appointments in the list view simultaneously (e.g., mark as "Arrived")

Installation

Requirement: Sulu CMS 3.0+

1. Add Bundle as Local Path

In your project composer.json:

{
    "repositories": [
        {
            "type": "path",
            "url": "../SuluAppointmentBundle"
        }
    ],
    "require": {
        "manuxi/sulu-appointment-bundle": "*"
    }
}

Then:

composer update manuxi/sulu-appointment-bundle

2. Register Bundle

In config/bundles.php:

return [
    // ...
    Manuxi\SuluAppointmentBundle\SuluAppointmentBundle::class => ['all' => true],
];

3. Import Routes

Create config/routes/sulu_appointment.yaml:

sulu_appointment:
    resource: "@SuluAppointmentBundle/Resources/config/routes.yaml"

4. Create Database Schema

php bin/console doctrine:schema:update --force

Or with migrations:

php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate

5. Admin Assets

Add the bundle to assets/admin/package.json:

{
    "dependencies": {
        "sulu-appointment-bundle": "../../vendor/manuxi/sulu-appointment-bundle/src/Resources"
    }
}

Important: Add the import to assets/admin/app.js:

import 'sulu-appointment-bundle';

Install FullCalendar dependencies and build:

cd assets/admin
npm install @fullcalendar/react @fullcalendar/core @fullcalendar/daygrid @fullcalendar/interaction @fullcalendar/timegrid @fullcalendar/multimonth
npm install
npm run build

6. Clear Cache

php bin/console cache:clear

Security Context

For permissions in the admin area:

sulu.appointments.appointments

Assign permissions under Settings → Roles.

Database Tables

The bundle creates the following tables:

Table Description
app_appointments Main entity (UUID)
app_appointment_dimension_contents Multilingual content (title, start/end, status)
app_appointment_resources Resources (doctor, room, device with color + locale-independent fields)
app_appointment_resource_dimension_contents Multilingual resource content (title, description, image)
app_appointment_settings Calendar and display settings
app_appointment_status_log Status change audit trail
app_sub_appointments Sub-appointments with resource assignment and status

Usage

After installation, a new "Appointments" entry (calendar icon) appears in the admin menu.

  • Month View: Overview of all appointments with configurable display (dots, blocks, borders)
  • Week View: Detailed view with time slots and business hours
  • Day Click: Opens day view with list of all appointments
  • Create Appointment: Via "+" button in the toolbar

Appointment Status Flow

scheduled → confirmed → arrived → completed
                ↘ cancelled

Each status change is automatically logged with timestamp and user for full traceability.

Configuration

Calendar Settings

Access via Admin → Appointments → Settings

See Settings Documentation for detailed configuration options.

Resources

Resources represent entities that appointments are assigned to (doctors, rooms, devices). Each resource uses Sulu DimensionContent for multilingual title, description, and image, plus locale-independent fields like type, color, and capacity.

See Resources Documentation for details.

Sub-Appointments

Appointments can be broken down into individual time slots (sub-appointments), each assigned to a specific resource with its own status and time range. A side drawer provides a visual management interface with drag-and-drop reordering and progress tracking.

See Sub-Appointments Documentation for details.

Troubleshooting

Calendar Not Showing

  1. Check that FullCalendar dependencies are installed
  2. Check browser console for JS errors
  3. Verify the import exists in assets/admin/app.js
  4. Rebuild: npm run build in assets/admin folder

API Error 404

Check that routes are loaded correctly:

php bin/console debug:router | grep appointment

No Appointments Visible

Appointments must be in LIVE stage. The calendar only shows published appointments.

Documentation

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固