|
|
@@ -6,6 +6,7 @@ import 'package:electronic_assistant/data/repositories/task_repository.dart';
|
|
|
import 'package:electronic_assistant/module/chat/view.dart';
|
|
|
import 'package:electronic_assistant/module/home/controller.dart';
|
|
|
import 'package:electronic_assistant/module/talk/summary/view.dart';
|
|
|
+import 'package:electronic_assistant/module/talk/todo/controller.dart';
|
|
|
import 'package:electronic_assistant/module/talk/todo/view.dart';
|
|
|
import 'package:electronic_assistant/resource/assets.gen.dart';
|
|
|
import 'package:electronic_assistant/resource/colors.gen.dart';
|
|
|
@@ -18,12 +19,16 @@ import 'package:flutter/material.dart';
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'package:connectivity_plus/connectivity_plus.dart';
|
|
|
+import '../../data/api/request/agenda_update_bean.dart';
|
|
|
+import '../../data/bean/agenda.dart';
|
|
|
import '../../data/bean/agenda_list_all_bean.dart';
|
|
|
import '../../data/bean/talks.dart';
|
|
|
import '../../data/repositories/agenda_repository.dart';
|
|
|
import '../../data/repositories/talk_repository.dart';
|
|
|
+import '../../dialog/add_agenda_dialog.dart';
|
|
|
import '../../dialog/alert_dialog.dart';
|
|
|
import '../../router/app_pages.dart';
|
|
|
+import '../../utils/event_bus.dart';
|
|
|
import '../../utils/toast_util.dart';
|
|
|
import '../record/controller.dart';
|
|
|
import 'original/view.dart';
|
|
|
@@ -58,6 +63,8 @@ class TalkController extends BaseController {
|
|
|
|
|
|
final _isEditModel = false.obs;
|
|
|
|
|
|
+ final TextEditingController editTalkNameController = TextEditingController();
|
|
|
+
|
|
|
final tabIndex = 0.obs;
|
|
|
|
|
|
final List<String> tabBeans = [
|
|
|
@@ -76,6 +83,19 @@ class TalkController extends BaseController {
|
|
|
|
|
|
final pages = [const SummaryView(), const TodoView(), const OriginalView()];
|
|
|
|
|
|
+ TextEditingController? _agendaContentController;
|
|
|
+ TextEditingController? _agendaNameController;
|
|
|
+
|
|
|
+ TextEditingController get agendaContentController {
|
|
|
+ _agendaContentController ??= TextEditingController();
|
|
|
+ return _agendaContentController!;
|
|
|
+ }
|
|
|
+
|
|
|
+ TextEditingController get agendaNameController {
|
|
|
+ _agendaNameController ??= TextEditingController();
|
|
|
+ return _agendaNameController!;
|
|
|
+ }
|
|
|
+
|
|
|
@override
|
|
|
void onReady() {
|
|
|
super.onReady();
|
|
|
@@ -322,8 +342,9 @@ class TalkController extends BaseController {
|
|
|
agendaAllList.clear();
|
|
|
agendaOriginalAllList.clear();
|
|
|
if (agenda.list != null) {
|
|
|
- agendaOriginalAllList.addAll(agenda.list!);
|
|
|
- agendaAllList.value = agenda.list!;
|
|
|
+ agendaOriginalAllList.addAll(
|
|
|
+ agenda.list!.map((item) => AgendaListAllBean.from(item)).toList());
|
|
|
+ agendaAllList.addAll(agenda.list!);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
@@ -334,13 +355,6 @@ class TalkController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @override
|
|
|
- void onClose() {
|
|
|
- super.onClose();
|
|
|
- _talkBeanListener?.cancel();
|
|
|
- _audioPlayer.dispose();
|
|
|
- }
|
|
|
-
|
|
|
void onGoElectricStore() {
|
|
|
Get.toNamed(RoutePath.store);
|
|
|
Future.delayed(const Duration(milliseconds: 250), () {
|
|
|
@@ -350,6 +364,11 @@ class TalkController extends BaseController {
|
|
|
|
|
|
void onEditModelClick() {
|
|
|
_isEditModel.value = true;
|
|
|
+ if (_audioPlayer.playing) {
|
|
|
+ _audioPlayer.pause();
|
|
|
+ isAudioPlaying.value = false;
|
|
|
+ }
|
|
|
+ editTalkNameController.text = talkBean.value?.title.value ?? '';
|
|
|
}
|
|
|
|
|
|
void updateTabIndex(int index) {
|
|
|
@@ -358,10 +377,93 @@ class TalkController extends BaseController {
|
|
|
|
|
|
void onEditCancel() {
|
|
|
_isEditModel.value = false;
|
|
|
- agendaAllList.assignAll(agendaOriginalAllList);
|
|
|
+ agendaAllList.assignAll(agendaOriginalAllList
|
|
|
+ .map((item) => AgendaListAllBean.from(item))
|
|
|
+ .toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ void onEditDoneClick() {
|
|
|
+ if (talkBean.value == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<AgendaUpdateBean> list = [];
|
|
|
+ for (AgendaListAllBean item in agendaAllList) {
|
|
|
+ if (item.list != null) {
|
|
|
+ for (Agenda agenda in item.list!) {
|
|
|
+ list.add(AgendaUpdateBean(agenda.id, agenda.name, agenda.content));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agendaRepository.agendaUpdate(talkBean.value!.id, list).then((data) {
|
|
|
+ refreshAgendaAllData(isForceRefresh: true);
|
|
|
+ eventBus.emit(TodoController.refreshTalkMineTask);
|
|
|
+ isEditModelRx.value = false;
|
|
|
+ }).catchError((error) {
|
|
|
+ ErrorHandler.toastError(error);
|
|
|
+ });
|
|
|
+ if (tabIndex.value == 0) {
|
|
|
+ String updateName = editTalkNameController.text;
|
|
|
+ talkRepository.talkRename(talkBean.value!.id, updateName).then((data) {
|
|
|
+ talkBean.value?.title.value = updateName;
|
|
|
+ }).catchError((error) {
|
|
|
+ ErrorHandler.toastError(error);
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- void onEditDoneClick() {}
|
|
|
+ void removeTalkAgenda(List<Agenda>? list, Agenda agenda) {
|
|
|
+ list?.remove(agenda);
|
|
|
+ agendaAllList.refresh();
|
|
|
+ }
|
|
|
+
|
|
|
+ void showSingleAddAgendaDialog(BuildContext context) {
|
|
|
+ showAddAgendaDialog(context, agendaContentController, agendaNameController,
|
|
|
+ list: agendaAllList.map((e) => e.name ?? "").toList(), callback: () {
|
|
|
+ if (agendaContentController.text.isEmpty) {
|
|
|
+ ToastUtil.showToast(StringName.talkAddAgendaContentHint.tr);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (agendaNameController.text.isEmpty) {
|
|
|
+ ToastUtil.showToast(StringName.talkAddAgendaNameHint.tr);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Get.back();
|
|
|
+ _dealAddProcedureList();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ void _dealAddProcedureList() {
|
|
|
+ String name = agendaNameController.text;
|
|
|
+ final addItem = Agenda(
|
|
|
+ id: "",
|
|
|
+ talkId: "",
|
|
|
+ name: name,
|
|
|
+ );
|
|
|
+ addItem.content = agendaContentController.text;
|
|
|
+ for (AgendaListAllBean item in agendaAllList) {
|
|
|
+ if (item.name == name) {
|
|
|
+ List<Agenda> list = item.list ?? [];
|
|
|
+ list.add(addItem);
|
|
|
+ item.list = list;
|
|
|
+ agendaAllList.refresh();
|
|
|
+ agendaContentController.clear();
|
|
|
+ agendaNameController.clear();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agendaAllList.add(AgendaListAllBean(name: name, list: [addItem]));
|
|
|
+ agendaContentController.clear();
|
|
|
+ agendaNameController.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ @override
|
|
|
+ void onClose() {
|
|
|
+ super.onClose();
|
|
|
+ _talkBeanListener?.cancel();
|
|
|
+ _audioPlayer.dispose();
|
|
|
+ _agendaContentController?.dispose();
|
|
|
+ _agendaNameController?.dispose();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Future<File?> getFileByTalk(String? talkId, int? uploadType) async {
|