{"is_fixed_template": false, "template_name": "dataTable", "template_doc": "## dataTable.html — 数据表格通用模板\n\n### 适用场景\n用于展示任何需要表格形式呈现的列表数据，如企业列表、设备列表、能耗记录、用户列表等。\n**表头列数完全动态**，根据 `TABLE_COLUMNS` 自动生成；分页、每页条数切换、页码跳转均由 JS 自动处理，无需手动生成 HTML。\n\n### 所需 JSON 数据格式\n\n```json\n{\n  \"page_title\": \"企业列表\",\n  \"data\": {\n    \"js_variables\": {\n      \"TABLE_TITLE\": \"企业列表\",\n      \"TABLE_COLUMNS\": [\n        { \"label\": \"企业名称\",   \"key\": \"enterprise_name\" },\n        { \"label\": \"行业类型\",   \"key\": \"industry_type\" },\n        { \"label\": \"法定代表人\", \"key\": \"legal_person\" },\n        { \"label\": \"联系电话\",   \"key\": \"contact_phone\" },\n        { \"label\": \"智能管理设备数\", \"key\": \"device_count\" },\n        { \"label\": \"在线设备数\", \"key\": \"online_device_count\" },\n        { \"label\": \"企业状态\",   \"key\": \"status\" }\n      ],\n      \"TABLE_ROWS_DATA\": [\n        {\n          \"enterprise_name\": \"测试企业A\",\n          \"industry_type\": \"制造业\",\n          \"legal_person\": \"张三\",\n          \"contact_phone\": \"13800000001\",\n          \"device_count\": 18,\n          \"online_device_count\": 18,\n          \"status\": \"正常\"\n        },\n        {\n          \"enterprise_name\": \"测试企业B\",\n          \"industry_type\": \"采矿业\",\n          \"legal_person\": \"李四\",\n          \"contact_phone\": \"13800000002\",\n          \"device_count\": 4,\n          \"online_device_count\": 4,\n          \"status\": \"正常\"\n        }\n      ],\n      \"DEFAULT_PAGE_SIZE\": 10\n    }\n  }\n}\n```\n\n### 字段说明\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| TABLE_TITLE | 字符串 | 表格卡片标题 |\n| TABLE_COLUMNS | 数组 | 列定义，每个元素包含 `label`（表头显示文字）和 `key`（对应 TABLE_ROWS_DATA 中的字段名） |\n| TABLE_ROWS_DATA | 数组 | 所有数据行，每个元素是一个对象，字段名与 TABLE_COLUMNS 中的 key 对应 |\n| DEFAULT_PAGE_SIZE | 整数 | 默认每页显示条数，建议值：10、20、50、100 |\n\n### 关键规则\n\n1. **TABLE_COLUMNS 的 key 必须与 TABLE_ROWS_DATA 中的字段名完全一致**（区分大小写）\n2. **TABLE_ROWS_DATA 包含全部数据行**，分页由前端 JS 自动处理，无需手动截断\n3. **不需要**填写 TABLE_HEADERS、TABLE_ROWS、PAGE_BUTTONS 等 HTML 字符串，模板完全由 JS 动态生成\n4. 列数不限，JS 会根据 TABLE_COLUMNS 的长度自动生成对应数量的表头和单元格\n5. 如果某行某字段值为 null 或 undefined，自动显示为 `-`\n\n### 分页功能说明\n\n模板内置完整分页功能，无需额外配置：\n- 支持每页 10 / 20 / 50 / 100 条切换（下拉选择器）\n- 自动生成页码按钮（超过 7 页时显示省略号）\n- 支持输入页码直接跳转（按 Enter 确认）\n- 显示\"共 N 条，显示第 X–Y 条\"信息\n\n---\n", "rows": [{"年": 2026, "日": 9, "时": 0, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 0, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 1, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 1, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 2, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 2, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 3, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 3, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 4, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 4, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 5, "发电量(kW)": 0.02, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 5, "发电量(kW)": 0.01, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 6, "发电量(kW)": 0.06, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 6, "发电量(kW)": 0.03, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 7, "发电量(kW)": 0.05, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 7, "发电量(kW)": 0.1, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 8, "发电量(kW)": 0.06, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 8, "发电量(kW)": 0.12, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 9, "发电量(kW)": 0.11, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 9, "发电量(kW)": 0.22, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 10, "发电量(kW)": 0.11, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 10, "发电量(kW)": 0.22, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 11, "发电量(kW)": 0.13, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 11, "发电量(kW)": 0.26, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 12, "发电量(kW)": 0.42, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 12, "发电量(kW)": 0.21, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 13, "发电量(kW)": 0.58, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 13, "发电量(kW)": 0.29, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 14, "发电量(kW)": 0.58, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 14, "发电量(kW)": 0.29, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 15, "发电量(kW)": 0.21, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 15, "发电量(kW)": 0.42, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 16, "发电量(kW)": 0.32, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 16, "发电量(kW)": 0.16, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 17, "发电量(kW)": 0.26, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 17, "发电量(kW)": 0.13, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 18, "发电量(kW)": 0.08, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 18, "发电量(kW)": 0.04, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 19, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 19, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 20, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 20, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 21, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 21, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 22, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}, {"年": 2026, "日": 9, "时": 22, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 23, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云铜光伏站点"}, {"年": 2026, "日": 9, "时": 23, "发电量(kW)": 0.0, "月": 4, "所属站点": "赤峰云钢-光伏站点"}], "sql": "SELECT `所属站点`, `年`, `月`, `日`, `时`, SUM(`发电量(kW)`) AS `发电量(kW)` FROM `光伏面板小时级发电数据` WHERE `年` = 2026 AND `月` = 4 AND `日` = 9 GROUP BY `所属站点`, `年`, `月`, `日`, `时` ORDER BY `年`, `月`, `日`, `时` LIMIT 500"}