You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webix Scheduler UNIT视图无法加载显示事件问题排查

问题分析与修复方案

以下是导致Webix Scheduler UNIT视图无法显示事件的核心问题及对应修复:


1. 未处理嵌套的事件数据结构

API返回的事件数组嵌套在response.events中,但Scheduler默认无法直接识别这种嵌套结构,需要通过数据提取规则获取事件列表。

2. 日期格式解析错误

事件中的日期字符串包含AM/PM标识(如2023/09/28 09:45:00 AM),但当前解析格式%Y/%m/%d %H:%i未适配12小时制的时段标识,导致日期转换失败。

3. 仅在月视图加载事件

当前代码仅在切换到月视图时才加载数据,UNIT视图无法触发数据加载逻辑。

4. 缺少UNIT视图必需的单元配置

UNIT视图需要预先定义分组单元(如诊室、人员),且每个事件需关联对应单元ID,否则无法在视图中渲染。


修复后的完整代码

var data = {
  "response": "success",
  "events": [
    {
      "id": 46,
      "url": "",
      "title": "Jeremy Madison",
      "start": "2023/09/28 09:45:00 AM",
      "end": "2023/09/28 09:45:00 AM",
      "unit": 1, // 关联到下面定义的单元ID
      "extendedProps": {
        "calendar": "business",
        "model": {
          "id": 46,
          "appointment_type": "medical",
          "user_id": 1,
          "service_id": 1,
          "patient_id": 20,
          "location_id": 1,
          "start": "2023-09-28 09:30:00",
          "end": "2023-09-28 09:45:00",
          "time": "9:30 AM",
          "duration": "15",
          "allDay": 0,
          "status": 0,
          "location": "peshawar",
          "mobile_no": "+1 (907) 769-9091\n",
          "clinician_name": "Sudais Khan",
          "patient_name": "Jeremy Madison"
        }
      }
    }
  ]
}

webix.ready(function () {
    webix.CustomScroll.init();
    var id = 1;
    var apiUrl = "schedules?nid=" + id;

    var scheduler = webix.ui({
       view: "scheduler",
       container: "my_schedules",
       id: "myScheduler",
       width: 1000,
       height: 1000,
       save: "rest->"+ apiUrl,
       // 配置UNIT视图所需的单元
       units: [
         { id: 1, value: "诊室1" },
         { id: 2, value: "诊室2" }
       ],
       // 默认视图设置为UNIT(可选)
       defaultView: "unit",
       monthSelect: true,
       weekHeader: true,
       // 数据处理规则
       scheme: {
          // 提取嵌套的事件数组
          $init: function(obj){
             // 适配带AM/PM的日期格式
             obj.start_date = webix.Date.isDate(obj.start)
                ? obj.start
                : webix.Date.strToDate("%Y/%m/%d %h:%i:%s %A")(obj.start);
             obj.end_date = webix.Date.isDate(obj.end)
                ? obj.end
                : webix.Date.strToDate("%Y/%m/%d %h:%i:%s %A")(obj.end);
          },
          $parse: function(data){
             // 从响应中提取事件列表
             return data.events || data;
          }
       },
       on: {
          onBeforeEventSave: function (id, data, update) {
             // 保存时转换回原日期格式
             data.start = webix.Date.dateToStr("%Y/%m/%d %h:%i:%s %A")(data.start_date);
             data.end = webix.Date.dateToStr("%Y/%m/%d %h:%i:%s %A")(data.end_date);
          },
       },
    });

    // 初始化时直接加载数据,无需等待视图切换
    scheduler.load(apiUrl, "json");
 });

内容的提问来源于stack exchange,提问作者Eniol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:44:53