feat(h5): add api.js with 11 mock API functions
This commit is contained in:
154
h5/js/api.js
Normal file
154
h5/js/api.js
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
// ============================
|
||||||
|
// API 基础封装 — Mock 模式
|
||||||
|
// ============================
|
||||||
|
|
||||||
|
const API_BASE = '/v1';
|
||||||
|
|
||||||
|
// 登录
|
||||||
|
function apiLogin(username, password) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
resolve({
|
||||||
|
code: 0,
|
||||||
|
data: {
|
||||||
|
token: 'mock-token-' + Date.now(),
|
||||||
|
expiresAt: new Date(Date.now() + 7 * 24 * 3600 * 1000).toISOString(),
|
||||||
|
user: MOCK_USER,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 500);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取设备列表
|
||||||
|
function apiGetDevices(params = {}) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
let items = [...MOCK_DEVICES];
|
||||||
|
if (params.type === 'tower_crane') {
|
||||||
|
items = items.filter(d => d.type === 'tower_crane');
|
||||||
|
} else if (params.type === 'elevator') {
|
||||||
|
items = items.filter(d => d.type === 'elevator');
|
||||||
|
}
|
||||||
|
resolve({ code: 0, data: { total: items.length, items } });
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取设备实时数据
|
||||||
|
function apiGetDeviceRealtime(deviceId) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const data = getRealtimeById(deviceId);
|
||||||
|
resolve({ code: 0, data });
|
||||||
|
}, 200);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取预警列表
|
||||||
|
function apiGetAlerts(params = {}) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
let items = [...MOCK_ALERTS];
|
||||||
|
if (params.level === 'danger') {
|
||||||
|
items = items.filter(a => a.level === 'danger');
|
||||||
|
} else if (params.level === 'warning') {
|
||||||
|
items = items.filter(a => a.level === 'warning');
|
||||||
|
} else if (params.status === 'handled') {
|
||||||
|
items = items.filter(a => a.status === 'handled' || a.status === 'ignored');
|
||||||
|
} else if (params.status === 'unread') {
|
||||||
|
items = items.filter(a => a.status === 'unread');
|
||||||
|
}
|
||||||
|
const unreadCount = MOCK_ALERTS.filter(a => a.status === 'unread').length;
|
||||||
|
resolve({ code: 0, data: { total: items.length, unreadCount, items } });
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取预警详情
|
||||||
|
function apiGetAlertDetail(alertId) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const alert = getAlertById(alertId);
|
||||||
|
resolve({ code: 0, data: alert });
|
||||||
|
}, 200);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理预警
|
||||||
|
function apiHandleAlert(alertId, action, note) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const alert = MOCK_ALERTS.find(a => a.id === alertId);
|
||||||
|
if (alert) {
|
||||||
|
alert.status = action === 'handled' ? 'handled' : 'ignored';
|
||||||
|
if (note) alert.handleNote = note;
|
||||||
|
}
|
||||||
|
resolve({ code: 0, message: '操作成功' });
|
||||||
|
}, 500);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交隐患随手拍
|
||||||
|
function apiSubmitReport(formData) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const newReport = {
|
||||||
|
id: 'rep' + Date.now(),
|
||||||
|
...formData,
|
||||||
|
createdAt: new Date().toLocaleString('zh-CN'),
|
||||||
|
};
|
||||||
|
MOCK_REPORTS.unshift(newReport);
|
||||||
|
resolve({ code: 0, data: newReport });
|
||||||
|
}, 800);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取随手拍记录
|
||||||
|
function apiGetReports() {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
resolve({ code: 0, data: { total: MOCK_REPORTS.length, items: MOCK_REPORTS } });
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取施工日志列表
|
||||||
|
function apiGetLogs() {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
resolve({ code: 0, data: { total: MOCK_LOGS.length, items: MOCK_LOGS } });
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交施工日志
|
||||||
|
function apiSubmitLog(formData) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const newLog = {
|
||||||
|
id: 'log' + Date.now(),
|
||||||
|
...formData,
|
||||||
|
createdAt: new Date().toLocaleString('zh-CN'),
|
||||||
|
};
|
||||||
|
MOCK_LOGS.unshift(newLog);
|
||||||
|
resolve({ code: 0, data: newLog });
|
||||||
|
}, 800);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// OSS 预签名 URL(Mock)
|
||||||
|
function apiGetUploadToken(filename, contentType) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
resolve({
|
||||||
|
code: 0,
|
||||||
|
data: {
|
||||||
|
uploadUrl: 'https://jesxion-ai-studio.oss-cn-beijing.aliyuncs.com/mock/' + filename,
|
||||||
|
objectKey: 'mock/' + filename,
|
||||||
|
expiresAt: new Date(Date.now() + 3600 * 1000).toISOString(),
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user