12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import 'dart:convert';
- import 'package:fis_common/logger/logger.dart';
- import 'package:fis_i18n/i18n.dart';
- import 'package:fis_jsonrpc/rpc.dart';
- import 'package:fis_lib_report/report_info/report_info.dart';
- import 'package:flutter/foundation.dart';
- import 'package:get/get.dart';
- import 'package:vitalapp/architecture/services/default_entry_configuration.dart';
- import 'package:vitalapp/architecture/services/default_entry_setting.dart';
- import 'package:vitalapp/architecture/utils/prompt_box.dart';
- import 'package:vitalapp/managers/interfaces/entry.dart';
- import 'package:vitalapp/pages/report_edit/controller.dart';
- import 'package:vitalapp/pages/report_edit/state.dart';
- import 'package:vitalapp/rpc.dart';
- import 'package:vitalapp/store/store.dart';
- class ThesaurusController {
- late final ReportEditController controller;
- late final ReportEditState state;
- final entryManager = Get.find<IEntryManager>();
- ThesaurusController(ReportEditController controller) {
- this.controller = controller;
- this.state = controller.state;
- initAllThesaurus();
- }
- DefaultEntrySetting defaultEntrySetting = DefaultEntrySetting.ins;
- final DefaultEntryService defaultEntryService =
- Get.find<DefaultEntryService>();
- /// 初始化词条数据
- Future<void> getDefaultThesaurus(String thesaurusCode) async {
- final allThesaurusItems =
- await entryManager.getThesaurusItems(thesaurusCode: thesaurusCode);
- if (allThesaurusItems.isEmpty) {
- return;
- } else {
- controller.state.allThesaurusList = allThesaurusItems;
- }
- }
- ///初始化默认词条
- Future<void> initDefaultThesaurus() async {
- ThesaurusAllDTO? defaultThesaurus;
- try {
- defaultThesaurus =
- await rpc.ultrasoundReport.vitalGetDefaultThesaurusContentAsync(
- GetDefaultThesaurusContentRequest(
- token: Store.user.token,
- languageCode: i18nBook.locale.toCodeString('-'),
- ),
- );
- var thesaurusCode = defaultThesaurus.baseInfo!.thesaurusCode ?? '';
- if (thesaurusCode.isNotEmpty) {
- state.selectedEntryCode = thesaurusCode;
- await getDefaultThesaurus(thesaurusCode);
- }
- } catch (e) {
- print(e);
- logger.e('ReportEditController _initData ex:', e);
- }
- //对选择词条监听
- FReportInfo.instance.onDiagnosticTap.dispose();
- FReportInfo.instance.onDiagnosticTap.addListener((sender, e) {
- if (defaultThesaurus == null) {
- PromptBox.toast(i18nBook.remedical.noEntrys.t);
- } else {
- state.isEntryDisplayed = true;
- }
- });
- }
- Future<void> initAllThesaurus() async {
- if (Store.user.token?.isEmpty ?? true) {
- return;
- }
- var allEntrys = await entryManager.getThesaurusPage();
- var userDefaultEnty =
- allEntrys.firstWhereOrNull((element) => element.isUserDefault);
- if (userDefaultEnty != null) {
- state.entryInfos = [userDefaultEnty];
- var normalEntrys = allEntrys.where((element) => !element.isUserDefault);
- state.entryInfos.addAll(normalEntrys);
- } else {
- state.entryInfos = allEntrys;
- }
- }
- ///切换词条
- void changeEntry() {
- getDefaultThesaurus(state.selectedEntryCode);
- }
- }
|