Jelajahi Sumber

[new]谈话总结增加模板显示

zk 1 tahun lalu
induk
melakukan
cd2d2ee1c9

TEMPAT SAMPAH
assets/images/icon_talk_add_template.webp


+ 1 - 0
assets/string/base/string.xml

@@ -147,4 +147,5 @@
     <string name="talk_mind_map">思维导图</string>
     <string name="talk_update_txt">编辑</string>
     <string name="talk_uploading_file_tip">录音上传中,请勿关闭小听</string>
+    <string name="talk_add_template">新建模板</string>
 </resources>

+ 6 - 1
lib/data/bean/talks.dart

@@ -38,6 +38,9 @@ class TalkBean {
   @JsonKey(name: 'createTime')
   String? createTime;
 
+  @JsonKey(name: 'templateId')
+  int? templateId;
+
   @JsonKey(name: 'example')
   bool? isExample;
 
@@ -60,6 +63,7 @@ class TalkBean {
     this.ssid,
     this.audioUrl,
     this.duration,
+    this.templateId,
     this.characters,
     required this.status,
     required this.title,
@@ -89,6 +93,7 @@ class TalkBean {
     status.value = talkBean.status.value;
     title.value = talkBean.title.value;
     summary.value = talkBean.summary.value;
+    templateId = talkBean.templateId;
     createTime = talkBean.createTime;
     isExample = talkBean.isExample;
     oversizeFile = talkBean.oversizeFile;
@@ -100,7 +105,7 @@ class TalkBean {
 
   @override
   String toString() {
-    return 'TalkBean{id: $id, taskId: $taskId, ssid: $ssid, audioUrl: $audioUrl, duration: $duration, characters: $characters, localAudioUrl: $localAudioUrl, status: $status, title: $title, summary: $summary, createTime: $createTime, isExample: $isExample, oversizeFile: $oversizeFile, uploadType: $uploadType, progress: $progress, progressContent: $progressContent}';
+    return 'TalkBean{id: $id, taskId: $taskId, ssid: $ssid, audioUrl: $audioUrl, duration: $duration, characters: $characters, localAudioUrl: $localAudioUrl, status: $status, title: $title, summary: $summary, createTime: $createTime, templateId: $templateId, isExample: $isExample, oversizeFile: $oversizeFile, uploadType: $uploadType, progress: $progress, progressContent: $progressContent}';
   }
 }
 

+ 2 - 2
lib/data/bean/template_bean.dart

@@ -5,12 +5,12 @@ part 'template_bean.g.dart';
 @JsonSerializable()
 class TemplateBean {
   @JsonKey(name: 'id')
-  int? id;
+  int id;
 
   @JsonKey(name: 'name')
   String? name;
 
-  TemplateBean({this.id, this.name});
+  TemplateBean(this.id, {this.name});
 
   factory TemplateBean.fromJson(Map<String, dynamic> json) =>
       _$TemplateBeanFromJson(json);

+ 67 - 0
lib/module/talk/common_view.dart

@@ -7,6 +7,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 
 import '../../data/bean/agenda.dart';
+import '../../data/bean/template_bean.dart';
 import '../../resource/assets.gen.dart';
 import '../../resource/colors.gen.dart';
 import '../../resource/string.gen.dart';
@@ -366,3 +367,69 @@ List<Widget> getTalkAgendaNormalList(List<Agenda>? list) {
       }).toList() ??
       [];
 }
+
+Widget buildTemplateView(List<TemplateBean>? templateList, int? id,
+    {bool? isShowAdd, VoidCallback? addCallback}) {
+  return SizedBox(
+    height: 28.h,
+    child: ListView(
+      scrollDirection: Axis.horizontal,
+      shrinkWrap: true,
+      children: [
+        SizedBox(width: 12.w),
+        for (var item in templateList ?? <TemplateBean>[])
+          Container(
+            height: double.infinity,
+            decoration: item.id == id
+                ? BoxDecoration(
+                    color: ColorName.colorPrimary,
+                    borderRadius: BorderRadius.circular(6.w),
+                  )
+                : BoxDecoration(
+                    borderRadius: BorderRadius.circular(6.w),
+                    color: "#FAF9FB".toColor(),
+                    border: Border.all(color: '#F2EFF5'.toColor(), width: 1.w),
+                  ),
+            margin: EdgeInsets.only(right: 8.w),
+            padding: EdgeInsets.symmetric(horizontal: 8.w),
+            child: Center(
+              child: Text(item.name ?? '',
+                  style: TextStyle(
+                      height: 1,
+                      fontSize: 13.sp,
+                      color: item.id == id
+                          ? ColorName.white
+                          : ColorName.secondaryTextColor)),
+            ),
+          ),
+        _buildAddTemplateView(isShowAdd, addCallback)
+      ],
+    ),
+  );
+}
+
+Widget _buildAddTemplateView(bool? isShowAdd, VoidCallback? addCallback) {
+  return Container(
+    height: double.infinity,
+    decoration: BoxDecoration(
+      color: "#FAF9FB".toColor(),
+      borderRadius: BorderRadius.circular(6.w),
+      border: Border.all(color: '#F2EFF5'.toColor(), width: 1.w),
+    ),
+    padding: EdgeInsets.symmetric(horizontal: 8.w),
+    child: Center(
+      child: IntrinsicWidth(
+        child: Row(
+          children: [
+            Assets.images.iconTalkAddTemplate.image(width: 16.w, height: 16.w),
+            Text(StringName.talkAddTemplate.tr,
+                style: TextStyle(
+                    height: 1,
+                    fontSize: 13.sp,
+                    color: ColorName.tertiaryTextColor))
+          ],
+        ),
+      ),
+    ),
+  );
+}

+ 17 - 10
lib/module/talk/controller.dart

@@ -33,6 +33,7 @@ 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/bean/template_bean.dart';
 import '../../data/repositories/agenda_repository.dart';
 import '../../data/repositories/talk_repository.dart';
 import '../../dialog/add_agenda_dialog.dart';
@@ -122,6 +123,11 @@ class TalkController extends BaseController {
 
   bool isFirstRequestTask = true;
 
+  //模板
+  Rxn<List<TemplateBean>?> templateList = Rxn();
+
+  Rxn<int> templateSelectId = Rxn();
+
   @override
   void onInit() {
     super.onInit();
@@ -634,22 +640,23 @@ class TalkController extends BaseController {
     _audioPlayer.seek(Duration(milliseconds: startMs));
   }
 
-  Future<TalkBean?> refreshSummaryData() async {
+  Future<TalkBean?> refreshTalkDetail() async {
     String? id = talkBean.value?.id;
     if (id == null) {
       return null;
     }
     return talkRepository.talkInfo(id).then((data) {
-      final bean = data.talkInfo;
-      if (bean == null) {
-        return null;
-      }
-      if (talkBean.value == null) {
-        talkBean.value = data.talkInfo;
-      } else {
-        talkBean.value?.updateBean(bean);
+      var bean = data.talkInfo;
+      if (bean != null) {
+        if (talkBean.value == null) {
+          talkBean.value = data.talkInfo;
+        } else {
+          talkBean.value?.updateBean(bean);
+        }
+        templateSelectId.value = bean.templateId;
       }
-      return data.talkInfo;
+      templateList.value = data.templateList;
+      return bean;
     });
   }
 

+ 8 - 1
lib/module/talk/summary/controller.dart

@@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart';
 import 'package:get/get.dart';
 import '../../../data/bean/agenda_list_all_bean.dart';
 import '../../../data/bean/talks.dart';
+import '../../../data/bean/template_bean.dart';
 import '../../../data/consts/event_report_id.dart';
 
 class SummaryController extends BaseController {
@@ -27,6 +28,10 @@ class SummaryController extends BaseController {
 
   Rxn<TalkBean> get summaryBean => talkController.talkBean;
 
+  List<TemplateBean>? get templateList => talkController.templateList.value;
+
+  int? get templateSelectId => talkController.templateSelectId.value;
+
   @override
   void onReady() {
     super.onReady();
@@ -44,7 +49,7 @@ class SummaryController extends BaseController {
   }
 
   void _dealTalkUpdate() {
-    talkController.refreshSummaryData().then((data) {
+    talkController.refreshTalkDetail().then((data) {
       if (data?.status.value == TalkStatus.analysisSuccess) {
         eventReport(EventId.event_101100);
       } else if (data?.status.value == TalkStatus.analysisFail) {
@@ -66,6 +71,8 @@ class SummaryController extends BaseController {
     talkController.showSingleAddAgendaDialog(context);
   }
 
+  void addTemplateClick() {}
+
   @override
   void onClose() {
     super.onClose();

+ 9 - 5
lib/module/talk/summary/view.dart

@@ -9,6 +9,7 @@ import 'package:get/get.dart';
 import 'package:markdown/markdown.dart' as md;
 
 import '../../../data/bean/talks.dart';
+import '../../../data/bean/template_bean.dart';
 import '../../browser/view.dart';
 import '../../home/view.dart';
 import '../common_view.dart';
@@ -63,10 +64,6 @@ class SummaryView extends BasePage<SummaryController> {
         }));
   }
 
-  Widget buildTemplateView() {
-    return Container();
-  }
-
   buildAllTaskView() {
     return Padding(
       padding:
@@ -122,7 +119,14 @@ class SummaryView extends BasePage<SummaryController> {
       } else if (controller.summaryBean.value?.status.value ==
           TalkStatus.analysisSuccess) {
         return ListView(padding: EdgeInsets.only(bottom: 150.h), children: [
-          // buildTemplateView(),
+          SizedBox(height: 14.h),
+          Obx(() {
+            return buildTemplateView(
+                controller.templateList, controller.templateSelectId,
+                isShowAdd: true, addCallback: () {
+              controller.addTemplateClick();
+            });
+          }),
           buildSummaryView(),
           Container(
             height: 6.h,