Browse Source

[new]增加待办事项点击完成功能

zk 1 year ago
parent
commit
7f74527e72

+ 1 - 1
lib/base/base_request.dart

@@ -114,6 +114,6 @@ class BaseRequest {
   }
 
   void initDeviceInfo() {
-    androidId = "testtesttest";
+    androidId = "1123123qweqw1";
   }
 }

+ 4 - 0
lib/data/api/atmob_api.dart

@@ -3,6 +3,7 @@ import 'package:electronic_assistant/base/app_base_request.dart';
 import 'package:electronic_assistant/base/base_response.dart';
 import 'package:electronic_assistant/data/api/network_module.dart';
 import 'package:electronic_assistant/data/api/request/agenda_request.dart';
+import 'package:electronic_assistant/data/api/request/agenda_status_request.dart';
 import 'package:electronic_assistant/data/api/request/login_request.dart';
 import 'package:electronic_assistant/data/api/request/talk_delete_request.dart';
 import 'package:electronic_assistant/data/api/request/talk_rename_request.dart';
@@ -43,6 +44,9 @@ abstract class AtmobApi {
 
   @POST("/project/secretary/v1/talk/delete")
   Future<BaseResponse> talkDelete(@Body() TalkDeleteRequest request);
+
+  @POST("/project/secretary/v1/agenda/complete")
+  Future<BaseResponse> agendaFinish(@Body() AgendaStatusRequest request);
 }
 
 final atmobApi = AtmobApi(defaultDio, baseUrl: Constants.baseUrl);

+ 18 - 0
lib/data/api/request/agenda_status_request.dart

@@ -0,0 +1,18 @@
+import 'package:electronic_assistant/base/app_base_request.dart';
+import 'package:json_annotation/json_annotation.dart';
+
+part 'agenda_status_request.g.dart';
+
+@JsonSerializable()
+class AgendaStatusRequest extends AppBaseRequest {
+  @JsonKey(name: 'id')
+  int? id;
+
+  @JsonKey(name: 'complete')
+  late bool complete;
+
+  AgendaStatusRequest(this.id, this.complete);
+
+  @override
+  Map<String, dynamic> toJson() => _$AgendaStatusRequestToJson(this);
+}

+ 15 - 0
lib/data/repositories/agenda_repository.dart

@@ -0,0 +1,15 @@
+import '../../utils/http_handler.dart';
+import '../api/atmob_api.dart';
+import '../api/request/agenda_status_request.dart';
+
+class AgendaRepository {
+  AgendaRepository._();
+
+  Future<void> agendaFinish(int? id, bool complete) {
+    return atmobApi
+        .agendaFinish(AgendaStatusRequest(id, complete))
+        .then(HttpHandler.handle(true));
+  }
+}
+
+final agendaRepository = AgendaRepository._();

+ 13 - 0
lib/module/home/controller.dart

@@ -1,5 +1,6 @@
 import 'package:electronic_assistant/base/base_controller.dart';
 import 'package:electronic_assistant/data/bean/talks.dart';
+import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
 import 'package:electronic_assistant/data/repositories/task_repository.dart';
 import 'package:electronic_assistant/module/home/view.dart';
 import 'package:electronic_assistant/module/main/controller.dart';
@@ -71,4 +72,16 @@ class HomePageController extends BaseController {
       ErrorHandler.toastError(error, message: StringName.talkDeleteFail.tr);
     });
   }
+
+  void agendaComplete(Agenda item) {
+    agendaRepository.agendaFinish(item.id, true).then((data) {
+      item.isDone = true;
+      agendaList.removeItem(
+          item,
+          (context, animation, item) =>
+              buildRemoveTodoItem(context, animation, item));
+    }).catchError((error) {
+      ErrorHandler.toastError(error);
+    });
+  }
 }

+ 6 - 10
lib/module/home/view.dart

@@ -402,21 +402,12 @@ class HomePage extends BasePage<HomePageController> {
       child: taskItemView(
         item,
         onCheckClick: () {
-          controller.agendaList.remove(
-              index,
-              (context, animation, item) =>
-                  _buildRemoveTodoItem(context, index, animation, item));
+          controller.agendaComplete(item);
         },
       ),
     );
   }
 
-  Widget _buildRemoveTodoItem(BuildContext context, int index,
-      Animation<double> animation, Agenda item) {
-    item.isDone = true;
-    return SizeTransition(sizeFactor: animation, child: taskItemView(item));
-  }
-
   Widget buildTitle(String titleName, VoidCallback? onTap) {
     return Padding(
       padding: const EdgeInsets.symmetric(horizontal: 12).w,
@@ -500,3 +491,8 @@ class HomePage extends BasePage<HomePageController> {
     });
   }
 }
+
+Widget buildRemoveTodoItem(
+    BuildContext context, Animation<double> animation, Agenda item) {
+  return SizeTransition(sizeFactor: animation, child: taskItemView(item));
+}