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

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

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

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

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

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

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

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

@ -396,6 +396,7 @@ class MeetingDetailsController extends GetxController
String tolanguage, String tolanguage,
bool isdistinguishspeaker, bool isdistinguishspeaker,
int templateid, int templateid,
String tid,
) async { ) async {
EasyLoading.show(); EasyLoading.show();
_everType = 2; _everType = 2;
@ -407,16 +408,17 @@ class MeetingDetailsController extends GetxController
tolanguage, tolanguage,
isdistinguishspeaker, isdistinguishspeaker,
templateid, templateid,
tid,
); );
meetingDetails.value.tasktype = 1; meetingDetails.value.tasktype = 1;
meetingDetails.refresh(); meetingDetails.refresh();
EasyLoading.dismiss(); EasyLoading.dismiss();
} }
void refreshSummary(int templateid) async { void refreshSummary(int templateid, String tid, String tolanguage) async {
EasyLoading.show(); EasyLoading.show();
_everType = 4; _everType = 4;
await _meetingTaskService.refreshTask(id, templateid); await _meetingTaskService.refreshTask(id, templateid, tid, tolanguage);
meetingDetails.value.tasktype = 3; meetingDetails.value.tasktype = 3;
meetingDetails.refresh(); meetingDetails.refresh();
EasyLoading.dismiss(); 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), margin: EdgeInsets.symmetric(horizontal: 12.w),
decoration: BoxDecoration( decoration: BoxDecoration(
color: isDarkMode ? const Color(0xFF2D2D2D) : Colors.white, color: isDarkMode ? const Color(0xFF2D2D2D) : Colors.white,
@ -264,47 +263,49 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
), ),
child: Column( child: Column(
children: [ children: [
_row( if (!widget.isSummarizeAgain)
'speakerIdentification'.tr, // 对应中文:区分说话人 _row(
isDarkMode: isDarkMode, 'speakerIdentification'.tr, // 对应中文:区分说话人
widget: Transform.scale( isDarkMode: isDarkMode,
scale: 0.8, widget: Transform.scale(
alignment: Alignment.centerRight, scale: 0.8,
child: Switch( alignment: Alignment.centerRight,
value: _isSpeaker, child: Switch(
onChanged: (bool value) { value: _isSpeaker,
setState(() { onChanged: (bool value) {
_isSpeaker = value; setState(() {
}); _isSpeaker = value;
}, });
},
),
), ),
), ),
), if (!widget.isSummarizeAgain)
_row( _row(
'recordingLanguage'.tr, // 对应中文:录音语言 'recordingLanguage'.tr, // 对应中文:录音语言
value: _formlanguageText, value: _formlanguageText,
isDarkMode: isDarkMode, isDarkMode: isDarkMode,
onTap: () { onTap: () {
Get.bottomSheet( Get.bottomSheet(
RecordLanguageBottomSheet(_formlanguage), RecordLanguageBottomSheet(_formlanguage),
isScrollControlled: true, isScrollControlled: true,
backgroundColor: backgroundColor:
isDarkMode ? Colors.grey[850] : Colors.grey[100], isDarkMode ? Colors.grey[850] : Colors.grey[100],
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical( borderRadius: BorderRadius.vertical(
top: Radius.circular(12.r), top: Radius.circular(12.r),
),
), ),
), ).then((value) {
).then((value) { if (value != null) {
if (value != null) { setState(() {
setState(() { _formlanguageText = value['name'];
_formlanguageText = value['name']; _formlanguage = value['value'];
_formlanguage = value['value']; });
}); }
} });
}); },
}, ),
),
_row( _row(
'targetLanguage'.tr, // 对应中文:目标语言 'targetLanguage'.tr, // 对应中文:目标语言
value: _tolanguageText, value: _tolanguageText,
@ -354,13 +355,18 @@ class _GenerateBottomSheetState extends State<GenerateBottomSheet> {
_storage.write("meeting_template_list", _templateList); _storage.write("meeting_template_list", _templateList);
Get.back(); Get.back();
if (widget.isSummarizeAgain) { if (widget.isSummarizeAgain) {
_controller.refreshSummary(_templateData['id']); _controller.refreshSummary(
_templateData['id'],
_templateData['tid'] ?? '',
_tolanguage,
);
} else { } else {
_controller.summaryCreate( _controller.summaryCreate(
_formlanguage, _formlanguage,
_tolanguage, _tolanguage,
_isSpeaker, _isSpeaker,
_templateData['id'], _templateData['id'],
_templateData['tid'] ?? '',
); );
} }
}, },

Loading…
Cancel
Save