diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 9f1113c..4507522 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,9 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:icon="@mipmap/ic_launcher"
+ android:usesCleartextTraffic="true"
+ android:networkSecurityConfig="@xml/network_security_config">
+
-
-
+
+
+
+
diff --git a/android/app/src/main/res/xml/network_security_config.xml b/android/app/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..da41a20
--- /dev/null
+++ b/android/app/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+ api.jjsos.cn
+ api.test.jjsos.cn
+ pic.jjsos.cn
+
+
diff --git a/lib/api/_api_client.dart b/lib/api/_api_client.dart
new file mode 100644
index 0000000..40fd3a2
--- /dev/null
+++ b/lib/api/_api_client.dart
@@ -0,0 +1,24 @@
+import 'package:autosos_flutter/util/sp_util.dart';
+import 'package:autosos_flutter/util/xhttp.dart';
+
+/// 提供已注入 token 的 XHttp(保证所有业务 API 自动带 token)
+class ApiClient {
+ ApiClient._();
+ static final ApiClient instance = ApiClient._();
+
+ XHttp get http => XHttp.getInstance();
+
+ /// 登录态写入后调用,刷新后续请求头
+ void setToken(String token) {
+ XHttp.setHeader('Authorization', 'Bearer $token');
+ }
+
+ void clearToken() {
+ XHttp.removeHeader('Authorization');
+ }
+
+ String? get token {
+ final v = SPUtil().get('accessToken');
+ return v is String ? v : null;
+ }
+}
\ No newline at end of file
diff --git a/lib/api/login_api.dart b/lib/api/login_api.dart
index 91ee81e..32b0410 100644
--- a/lib/api/login_api.dart
+++ b/lib/api/login_api.dart
@@ -1,5 +1,3 @@
-import 'dart:convert';
-
import 'package:autosos_flutter/pages/home/home_page.dart';
import 'package:autosos_flutter/util/sp_util.dart';
import 'package:autosos_flutter/util/xhttp.dart';
diff --git a/lib/api/order_api.dart b/lib/api/order_api.dart
new file mode 100644
index 0000000..81f5ca2
--- /dev/null
+++ b/lib/api/order_api.dart
@@ -0,0 +1,188 @@
+import 'package:autosos_flutter/api/_api_client.dart';
+import 'package:autosos_flutter/model/base_response.dart';
+import 'package:autosos_flutter/model/misc.dart';
+import 'package:autosos_flutter/model/order.dart';
+import 'package:autosos_flutter/model/payment.dart';
+
+/// 订单 API(对应 Android AppApiService 中 order/* 相关)
+class OrderApi {
+ static final OrderApi instance = OrderApi._();
+ OrderApi._();
+
+ final _http = ApiClient.instance.http;
+
+ // ===== 核单 =====
+
+ /// 核单列表
+ Future>> checkList({int page = 1, int size = 20}) async {
+ final r = await _http.get(
+ '/v2/order/check-list',
+ {'page': page, 'size': size},
+ );
+ return BaseResponse.fromJson(r as Map,
+ (d) => (d as List).map((e) => CheckItem.fromJson(e as Map)).toList());
+ }
+
+ /// 提交核单
+ Future> submitCheck({
+ required int orderId,
+ required String remark,
+ }) async {
+ final r = await _http.post('/v2/order/check', {
+ 'order_id': orderId,
+ 'remark': remark,
+ });
+ return BaseResponse.fromJson(r as Map,
+ (d) => d as bool);
+ }
+
+ // ===== 等待接单 =====
+
+ /// 当前可接订单列表
+ Future>> waitingList() async {
+ final r = await _http.get('/v2/order/waiting-list');
+ return BaseResponse.fromJson(r as Map,
+ (d) => (d as List).map((e) => WaitingOrder.fromJson(e as Map)).toList());
+ }
+
+ /// 抢单
+ Future> grabOrder(int orderId) async {
+ final r = await _http.post('/v2/order/grab', {'order_id': orderId});
+ return BaseResponse.fromJson(r as Map,
+ (d) => Order.fromJson(d as Map));
+ }
+
+ // ===== 救援中 =====
+
+ /// 到达现场
+ Future> arriveScene(int orderId, {double? lat, double? lng}) async {
+ final r = await _http.post('/v2/order/arrive', {
+ 'order_id': orderId,
+ 'lat': lat,
+ 'lng': lng,
+ });
+ return BaseResponse.fromJson(r as Map,
+ (d) => d as bool);
+ }
+
+ /// 开始轨迹录制
+ Future> startTrack(int orderId) async {
+ final r = await _http.post('/v2/order/track/start', {'order_id': orderId});
+ return BaseResponse.fromJson(r as Map,
+ (d) => d as String);
+ }
+
+ /// 上传轨迹点
+ Future> uploadTrackPoints(int orderId, List