diff --git a/src/pages.json b/src/pages.json index ba16222..74de8fa 100644 --- a/src/pages.json +++ b/src/pages.json @@ -16,7 +16,6 @@ "navigationBarTitleText": "Road-Roller" }, "pages": [ - // GENERATED BY UNI-PAGES, PLATFORM: APP { "path": "pages/Ahome/index", "type": "home", @@ -121,7 +120,6 @@ "color": "@tabFontColor", "selectedColor": "@tabSelectedColor", "list": [ - // GENERATED BY UNI-PAGES, PLATFORM: APP { "pagePath": "pages/Ahome/index", "text": "首页", diff --git a/src/service/seed.ts b/src/service/seed.ts index d3e493d..386be68 100644 --- a/src/service/seed.ts +++ b/src/service/seed.ts @@ -2,29 +2,50 @@ import DB from '@/utils/sqlite' import { insert as insertWorkRecord } from './workRecord' /** - * 插入项目假数据(3条) - * 字段:project_name / stake_range / total_area / status(0未完成 1已完成 2进行中) + * 项目假数据 (6个) + * status: 0=未完成, 1=已完成, 2=作业中 */ async function seedProject() { const data = [ + // 作业中 (1个) { project_name: '京雄高速河北段', stake_range: 'K1+000 ~ K5+500', - total_area: 12500.0, + total_area: 25000.0, status: 2, }, + // 未完成 (1个) { project_name: '雄安新区市政道路', stake_range: 'A区 ~ C区', - total_area: 8600.5, + total_area: 18600.5, status: 0, }, + // 已完成 (4个) { project_name: '白沟产业园场地', stake_range: '1号地块', total_area: 5200.0, status: 1, }, + { + project_name: '大兴机场配套道路', + stake_range: '北侧路段', + total_area: 8800.0, + status: 1, + }, + { + project_name: '保定城区改造工程', + stake_range: '朝阳路 ~ 裕华路', + total_area: 12000.0, + status: 1, + }, + { + project_name: '沧州港区道路', + stake_range: 'B区 ~ D区', + total_area: 9500.0, + status: 1, + }, ] for (const item of data) { @@ -33,36 +54,61 @@ async function seedProject() { } /** - * 插入作业记录假数据(3条) - * 走 workRecord.insert,事务同步累加 project 汇总字段 - * 字段:project_id / start_time / end_time / duration / compaction_area / pass_count + * 当日工作记录假数据 + * 仅作业中(1)和未完成(2)的项目各有3条 */ async function seedWorkRecord() { const data = [ + // 项目1 (作业中) - 3条工作记录 { project_id: 1, - start_time: '2026-09-10 08:00:00', - end_time: '2026-09-10 12:00:00', - duration: 4, - compaction_area: 1250.5, - pass_count: 6, - }, - { - project_id: 1, - start_time: '2026-09-10 13:00:00', - end_time: '2026-09-10 17:30:00', + start_time: '2026-09-15 07:30:00', + end_time: '2026-09-15 12:00:00', duration: 4.5, - compaction_area: 1680.0, + compaction_area: 1850.0, pass_count: 8, }, + { + project_id: 1, + start_time: '2026-09-15 13:00:00', + end_time: '2026-09-15 17:30:00', + duration: 4.5, + compaction_area: 1680.0, + pass_count: 7, + }, + { + project_id: 1, + start_time: '2026-09-14 08:00:00', + end_time: '2026-09-14 12:00:00', + duration: 4.0, + compaction_area: 1520.0, + pass_count: 6, + }, + // 项目2 (未完成) - 3条工作记录 { project_id: 2, - start_time: '2026-09-09 07:30:00', - end_time: '2026-09-09 11:30:00', - duration: 4, - compaction_area: 980.3, + start_time: '2026-09-15 08:00:00', + end_time: '2026-09-15 11:30:00', + duration: 3.5, + compaction_area: 1200.0, pass_count: 5, }, + { + project_id: 2, + start_time: '2026-09-15 13:30:00', + end_time: '2026-09-15 17:00:00', + duration: 3.5, + compaction_area: 1100.0, + pass_count: 5, + }, + { + project_id: 2, + start_time: '2026-09-14 07:30:00', + end_time: '2026-09-14 12:00:00', + duration: 4.5, + compaction_area: 1450.0, + pass_count: 6, + }, ] for (const item of data) { @@ -71,95 +117,87 @@ async function seedWorkRecord() { } /** - * 插入 RTK 轨迹假数据(3条) - * 字段:work_record_id / latitude / longitude / speed / heading / steel_wheel_temp / compaction_value / pass_count / qualified_rate + * RTK 轨迹假数据 + * 仅作业中和未完成项目的每个工作记录 120 条 */ async function seedRtkTrack() { - const data = [ - { - work_record_id: 1, - latitude: 38.9697, - longitude: 115.9697, - speed: 5.1, - heading: 90.0, - steel_wheel_temp: 65.2, - compaction_value: 92.3, - pass_count: 3, - qualified_rate: 92.3, - }, - { - work_record_id: 1, - latitude: 38.9698, - longitude: 115.9699, - speed: 5.2, - heading: 92.5, - steel_wheel_temp: 66.0, - compaction_value: 93.1, - pass_count: 4, - qualified_rate: 93.1, - }, - { - work_record_id: 2, - latitude: 38.9712, - longitude: 115.9712, - speed: 4.7, - heading: 180.0, - steel_wheel_temp: 68.5, - compaction_value: 95.0, - pass_count: 5, - qualified_rate: 95.0, - }, - ] + const data: any[] = [] + // 项目1 的工作记录 (id: 1, 2, 3) - 各120条 + for (let wrId = 1; wrId <= 3; wrId++) { + const baseLat = 38.9697 + (wrId - 1) * 0.001 + const baseLng = 115.9697 + (wrId - 1) * 0.001 + for (let i = 0; i < 120; i++) { + data.push({ + work_record_id: wrId, + latitude: baseLat + (i * 0.00001), + longitude: baseLng + (i * 0.00001), + speed: 4.5 + Math.random() * 2, + heading: (i * 3) % 360, + steel_wheel_temp: 60 + Math.random() * 20, + compaction_value: 85 + Math.random() * 15, + pass_count: Math.floor(1 + Math.random() * 8), + qualified_rate: 88 + Math.random() * 12, + }) + } + } + + // 项目2 的工作记录 (id: 4, 5, 6) - 各120条 + for (let wrId = 4; wrId <= 6; wrId++) { + const baseLat = 38.9750 + (wrId - 4) * 0.001 + const baseLng = 115.9750 + (wrId - 4) * 0.001 + for (let i = 0; i < 120; i++) { + data.push({ + work_record_id: wrId, + latitude: baseLat + (i * 0.00001), + longitude: baseLng + (i * 0.00001), + speed: 4.0 + Math.random() * 2.5, + heading: (i * 3) % 360, + steel_wheel_temp: 55 + Math.random() * 25, + compaction_value: 82 + Math.random() * 18, + pass_count: Math.floor(1 + Math.random() * 7), + qualified_rate: 85 + Math.random() * 15, + }) + } + } + + // 批量插入 for (const item of data) { await DB.insert('rtk_track', item) } } /** - * 插入告警记录假数据(3条) - * 字段:project_id / device_name - * exception_type(0数据中断 1高温异常 2定位异常) - * exception_level(0提醒 1警告 2严重) - * occurred_at / site_description / disposal_record - * disposal_type(0未处理 1现场恢复 2需要保修) / is_read + * 告警记录假数据 + * 每个项目 3 条,分别对应 3 种异常类型 */ async function seedWarningRecord() { - const data = [ - { - project_id: 1, - device_name: 'XS-65H', - exception_type: 0, - exception_level: 1, - occurred_at: '2026-09-10 09:15:00', - site_description: '设备上报数据中断超过 30 秒', - disposal_record: '', - disposal_type: 0, - is_read: 0, - }, - { - project_id: 2, - device_name: 'XS-65H', - exception_type: 1, - exception_level: 2, - occurred_at: '2026-09-09 10:20:00', - site_description: '钢轮温度超过安全阈值', - disposal_record: '现场降温后恢复作业', - disposal_type: 1, - is_read: 0, - }, - { - project_id: 1, - device_name: 'RTK-01', - exception_type: 2, - exception_level: 0, - occurred_at: '2026-09-10 14:05:00', - site_description: 'RTK 定位信号丢失,无法获取有效坐标', - disposal_record: '设备故障,已登记报修', - disposal_type: 2, - is_read: 1, - }, - ] + const devices = ['XS-65H-01', 'XS-65H-02', 'RTK-01', 'RTK-02'] + + const data: any[] = [] + const baseTime = new Date('2026-09-15T08:00:00') + + // 每个项目 3 条告警 + for (let projectId = 1; projectId <= 6; projectId++) { + for (let excType = 0; excType <= 2; excType++) { + const occurTime = new Date(baseTime.getTime() + projectId * 3600000 + excType * 1800000) + data.push({ + project_id: projectId, + device_name: devices[excType], + exception_type: excType, + exception_level: excType === 2 ? 2 : excType === 1 ? 1 : 0, + occurred_at: occurTime.toISOString().replace('T', ' ').slice(0, 19), + site_description: excType === 0 + ? '设备上报数据中断超过 30 秒' + : excType === 1 + ? '钢轮温度超过安全阈值 (85°C)' + : 'RTK 定位信号丢失,无法获取有效坐标', + disposal_record: excType === 2 ? '设备故障,已登记报修' : '', + disposal_type: excType === 2 ? 2 : 0, + is_read: 0, + }) + } + } for (const item of data) { await DB.insert('warning_record', item) @@ -167,60 +205,74 @@ async function seedWarningRecord() { } /** - * 插入历史报告假数据(3条) - * 字段:project_id / report_name / device_id / construction_area - * start_time / end_time / duration / compaction_area / pass_count - * qualified_rate / avg_speed / avg_paving_temp / avg_compaction / exception_count + * 历史报告假数据 + * 每个已完成项目 (id: 3, 4, 5, 6) 各生成 1 份最终报告 */ async function seedHistoryReport() { const data = [ { - project_id: 1, - report_name: '京雄高速K1段碾压报告', - device_id: 'XS-65H-001', - construction_area: 'K1+000 ~ K1+500', - start_time: '2026-09-10 08:00:00', - end_time: '2026-09-10 12:00:00', - duration: 4, - compaction_area: 1250.5, + project_id: 3, + report_name: '白沟产业园场地 碾压报告', + device_id: 'XS-65H-01', + construction_area: '1号地块', + start_time: '2026-09-12 07:30:00', + end_time: '2026-09-12 17:00:00', + duration: 9.5, + compaction_area: 5200.0, pass_count: 6, - qualified_rate: 96.5, - avg_speed: 5.2, - avg_paving_temp: 145.0, - avg_compaction: 92.3, + qualified_rate: 96.8, + avg_speed: 5.1, + avg_paving_temp: 148.0, + avg_compaction: 93.2, + exception_count: 2, + }, + { + project_id: 4, + report_name: '大兴机场配套道路 碾压报告', + device_id: 'XS-65H-02', + construction_area: '北侧路段', + start_time: '2026-09-11 07:30:00', + end_time: '2026-09-11 17:30:00', + duration: 10.0, + compaction_area: 8800.0, + pass_count: 7, + qualified_rate: 97.5, + avg_speed: 4.9, + avg_paving_temp: 152.0, + avg_compaction: 94.1, exception_count: 1, }, { - project_id: 1, - report_name: '京雄高速K2段碾压报告', - device_id: 'XS-65H-001', - construction_area: 'K2+000 ~ K2+350', - start_time: '2026-09-10 13:00:00', - end_time: '2026-09-10 17:30:00', - duration: 4.5, - compaction_area: 1680.0, + project_id: 5, + report_name: '保定城区改造工程 碾压报告', + device_id: 'XS-65H-03', + construction_area: '朝阳路 ~ 裕华路', + start_time: '2026-09-10 07:30:00', + end_time: '2026-09-10 17:00:00', + duration: 9.5, + compaction_area: 12000.0, pass_count: 8, - qualified_rate: 98.2, - avg_speed: 4.8, - avg_paving_temp: 150.0, - avg_compaction: 95.1, - exception_count: 0, + qualified_rate: 95.2, + avg_speed: 5.3, + avg_paving_temp: 145.0, + avg_compaction: 91.8, + exception_count: 3, }, { - project_id: 2, - report_name: '雄安市政道路碾压报告', - device_id: 'XS-65H-002', - construction_area: 'A区施工段', - start_time: '2026-09-09 07:30:00', - end_time: '2026-09-09 11:30:00', - duration: 4, - compaction_area: 980.3, - pass_count: 5, - qualified_rate: 94.0, - avg_speed: 6.0, - avg_paving_temp: 138.5, - avg_compaction: 88.7, - exception_count: 2, + project_id: 6, + report_name: '沧州港区道路 碾压报告', + device_id: 'XS-65H-04', + construction_area: 'B区 ~ D区', + start_time: '2026-09-09 08:00:00', + end_time: '2026-09-09 17:30:00', + duration: 9.5, + compaction_area: 9500.0, + pass_count: 6, + qualified_rate: 98.1, + avg_speed: 4.7, + avg_paving_temp: 150.0, + avg_compaction: 95.3, + exception_count: 0, }, ]