/** 任务系统(OPC 端):任务广场(待接单) / 我的接单 / 抢单。走平台 /opc 端点,需登录(opc_member)。 */ import { getToken } from '@/services/auth'; import { API_BASE } from './base'; function authHeaders() { const t = getToken(); return { 'Content-Type': 'application/json', ...(t ? { Authorization: `Bearer ${t}` } : {}) }; } /** 任务广场(已发布待接单任务,公开可见,无需登录) */ export async function listTasks() { try { const res = await fetch(`${API_BASE}/opc/tasks`); if (!res.ok) return { ok: false, status: res.status }; const d = await res.json().catch(() => ({})); return { ok: true, items: Array.isArray(d.items) ? d.items : [] }; } catch { return { ok: false, status: 0 }; } } /** 任务详情(公开可见) */ export async function getTask(id) { try { const res = await fetch(`${API_BASE}/opc/tasks/${encodeURIComponent(id)}`); if (!res.ok) return null; return await res.json().catch(() => null); } catch { return null; } } /** 我的任务看板 */ export async function myTasks() { try { const res = await fetch(`${API_BASE}/opc/my-tasks`, { headers: authHeaders() }); if (!res.ok) return { ok: false, status: res.status }; const d = await res.json().catch(() => ({})); return { ok: true, items: Array.isArray(d.items) ? d.items : [] }; } catch { return { ok: false, status: 0 }; } } /** 抢单 */ export async function grabTask(id) { try { const res = await fetch(`${API_BASE}/opc/tasks/${encodeURIComponent(id)}/grab`, { method: 'POST', headers: authHeaders(), }); const d = await res.json().catch(() => ({})); if (!res.ok) return { ok: false, error: d.detail || d.message || '抢单失败' }; return { ok: true, task: d }; } catch { return { ok: false, error: '网络异常' }; } }