Browse Source

feat(会议): 添加模板TID支持并优化UI逻辑

- 在会议任务提交和刷新时新增tid参数传递
- 数据库表结构增加tid字段存储模板ID
- 调整生成底部弹窗的UI条件渲染逻辑
- 修改数据库文件命名以避免冲突
newdev_shunjiawei
lxm 7 months ago
parent
commit
6c0512fab1
  1. 3
      lib/data/services/db/database_helper.dart
  2. 2
      lib/data/services/db/sqflite_api.dart
  3. 10
      lib/data/services/meeting/meeting_task_service.dart
  4. 1
      lib/data/services/meeting/meeting_upload_service.dart
  5. 6
      lib/modules/meeting/controllers/meeting_details_controller.dart
  6. 88
      lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart

3
lib/data/services/db/database_helper.dart

@ -27,7 +27,7 @@ class DatabaseHelper {
}
String path = join(
await getDatabasesPath(),
_userId.isNotEmpty ? '${_userId}database.db' : 'database.db',
_userId.isNotEmpty ? '${_userId}database1.db' : 'database1.db',
);
return await openDatabase(path, version: 1, onCreate: _createDB);
}
@ -102,6 +102,7 @@ class DatabaseHelper {
batch.execute('''
CREATE TABLE IF NOT EXISTS meetingtemplate (
id INTEGER PRIMARY KEY,
tid TEXT,
categoryid INTEGER,
name TEXT,
icon TEXT,

2
lib/data/services/db/sqflite_api.dart

@ -254,6 +254,7 @@ class SqfliteApi {
);
Map template = {
"id": item['id'],
'tid': item['tid'],
'name': item['title'],
'icon': item['icon'],
'tag': item['tags'] ?? '',
@ -297,6 +298,7 @@ class SqfliteApi {
Map template = item['templates'][j];
await txn.insert('meetingtemplate', {
"id": template['id'],
'tid': template['tid'],
'categoryid': categoryId,
'name': template['name'],
'icon': template['icon'],

10
lib/data/services/meeting/meeting_task_service.dart

@ -60,6 +60,7 @@ class MeetingTaskService extends GetxService {
String tolanguage,
bool isdistinguishspeaker,
int templateid,
String tid,
) async {
if (audiourl.isEmpty) {
Map uploadData = _uploadService.uploadList.firstWhere(
@ -73,6 +74,7 @@ class MeetingTaskService extends GetxService {
uploadData['tolanguage'] = tolanguage;
uploadData['isdistinguishspeaker'] = isdistinguishspeaker;
uploadData['templateid'] = templateid;
uploadData['tid'] = tid;
} else {
await submitTask(
id,
@ -80,6 +82,7 @@ class MeetingTaskService extends GetxService {
tolanguage,
isdistinguishspeaker,
templateid,
tid,
);
}
}
@ -90,6 +93,7 @@ class MeetingTaskService extends GetxService {
tolanguage,
isdistinguishspeaker,
templateid,
tid,
);
}
}
@ -100,6 +104,7 @@ class MeetingTaskService extends GetxService {
String tolanguage,
bool isdistinguishspeaker,
int templateid,
String tid,
) async {
await Api.startTaskEchomeet({
'id': id,
@ -107,6 +112,7 @@ class MeetingTaskService extends GetxService {
'tolanguage': tolanguage,
'isdistinguishspeaker': isdistinguishspeaker,
'templateid': templateid,
'tid': tid,
});
final seconds = await _getMeetingSeconds(id);
_decrementMeetingIntegral(cost: seconds);
@ -122,11 +128,13 @@ class MeetingTaskService extends GetxService {
_executeTask();
}
Future<void> refreshTask(int id, int templateid) async {
Future<void> refreshTask(int id, int templateid, String tid, String tolanguage) async {
tasktype.value = 3;
await Api.refreshTaskEchomeet({
'id': id,
'templateid': templateid,
'tid': tid,
'tolanguage': tolanguage,
});
_taskList.add({
'id': id,

1
lib/data/services/meeting/meeting_upload_service.dart

@ -147,6 +147,7 @@ class MeetingUploadService extends GetxService {
element['tolanguage'],
element['isdistinguishspeaker'],
element['templateid'],
element['tid'] ?? '',
);
}
element['audiourl'] = audiourl;

6
lib/modules/meeting/controllers/meeting_details_controller.dart

@ -396,6 +396,7 @@ class MeetingDetailsController extends GetxController
String tolanguage,
bool isdistinguishspeaker,
int templateid,
String tid,
) async {
EasyLoading.show();
_everType = 2;
@ -407,16 +408,17 @@ class MeetingDetailsController extends GetxController
tolanguage,
isdistinguishspeaker,
templateid,
tid,
);
meetingDetails.value.tasktype = 1;
meetingDetails.refresh();
EasyLoading.dismiss();
}
void refreshSummary(int templateid) async {
void refreshSummary(int templateid, String tid, String tolanguage) async {
EasyLoading.show();
_everType = 4;
await _meetingTaskService.refreshTask(id, templateid);
await _meetingTaskService.refreshTask(id, templateid, tid, tolanguage);
meetingDetails.value.tasktype = 3;
meetingDetails.refresh();
EasyLoading.dismiss();

88
lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart

@ -255,8 +255,7 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
},
),
),
if (!widget.isSummarizeAgain)
Container(
Container(
margin: EdgeInsets.symmetric(horizontal: 12.w),
decoration: BoxDecoration(
color: isDarkMode ? const Color(0xFF2D2D2D) : Colors.white,
@ -264,47 +263,49 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
),
child: Column(
children: [
_row(
'speakerIdentification'.tr, // 对应中文:区分说话人
isDarkMode: isDarkMode,
widget: Transform.scale(
scale: 0.8,
alignment: Alignment.centerRight,
child: Switch(
value: _isSpeaker,
onChanged: (bool value) {
setState(() {
_isSpeaker = value;
});
},
if (!widget.isSummarizeAgain)
_row(
'speakerIdentification'.tr, // 对应中文:区分说话人
isDarkMode: isDarkMode,
widget: Transform.scale(
scale: 0.8,
alignment: Alignment.centerRight,
child: Switch(
value: _isSpeaker,
onChanged: (bool value) {
setState(() {
_isSpeaker = value;
});
},
),
),
),
),
_row(
'recordingLanguage'.tr, // 对应中文:录音语言
value: _formlanguageText,
isDarkMode: isDarkMode,
onTap: () {
Get.bottomSheet(
RecordLanguageBottomSheet(_formlanguage),
isScrollControlled: true,
backgroundColor:
isDarkMode ? Colors.grey[850] : Colors.grey[100],
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r),
if (!widget.isSummarizeAgain)
_row(
'recordingLanguage'.tr, // 对应中文:录音语言
value: _formlanguageText,
isDarkMode: isDarkMode,
onTap: () {
Get.bottomSheet(
RecordLanguageBottomSheet(_formlanguage),
isScrollControlled: true,
backgroundColor:
isDarkMode ? Colors.grey[850] : Colors.grey[100],
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r),
),
),
),
).then((value) {
if (value != null) {
setState(() {
_formlanguageText = value['name'];
_formlanguage = value['value'];
});
}
});
},
),
).then((value) {
if (value != null) {
setState(() {
_formlanguageText = value['name'];
_formlanguage = value['value'];
});
}
});
},
),
_row(
'targetLanguage'.tr, // 对应中文:目标语言
value: _tolanguageText,
@ -354,13 +355,18 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
_storage.write("meeting_template_list", _templateList);
Get.back();
if (widget.isSummarizeAgain) {
_controller.refreshSummary(_templateData['id']);
_controller.refreshSummary(
_templateData['id'],
_templateData['tid'] ?? '',
_tolanguage,
);
} else {
_controller.summaryCreate(
_formlanguage,
_tolanguage,
_isSpeaker,
_templateData['id'],
_templateData['tid'] ?? '',
);
}
},

Loading…
Cancel
Save