Quellcode durchsuchen

fix bug 0009184 - review by Baka

melon.yin vor 2 Jahren
Ursprung
Commit
825e3f1eac

+ 12 - 0
lib/process/workspace/measure_controller.dart

@@ -1,6 +1,7 @@
 import 'dart:async';
 import 'dart:async';
 
 
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_i18n/i18n.dart';
+import 'package:fis_jsonrpc/rpc.dart';
 import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
 import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
 import 'package:fis_measure/interfaces/process/workspace/measure_3d_view_controller.dart';
 import 'package:fis_measure/interfaces/process/workspace/measure_3d_view_controller.dart';
 import 'package:fis_measure/interfaces/process/workspace/measure_controller.dart';
 import 'package:fis_measure/interfaces/process/workspace/measure_controller.dart';
@@ -213,4 +214,15 @@ class MeasureController implements IMeasureController {
       }
       }
     } catch (e) {}
     } catch (e) {}
   }
   }
+
+  /// 选择Vid图像Url
+  String chooseImageUrl(TerminalImageDTO dto) {
+    // 按Server推荐选择CDN/源站
+    final useOrigin =
+        dto.recommendedDownloadMode == RecommendedDownloadModeEnum.Origin &&
+            dto.originImageUrl != null &&
+            dto.originImageUrl!.isNotEmpty;
+    final imageUrl = useOrigin ? dto.originImageUrl! : dto.imageUrl!;
+    return imageUrl;
+  }
 }
 }

+ 25 - 27
lib/view/measure/measure_images_bar.dart

@@ -215,9 +215,6 @@ class _ScrollableImageListState extends State<ScrollableImageList> {
   /// 图像数据列表
   /// 图像数据列表
   List<RemedicalInfoDTO> remedicalList = [];
   List<RemedicalInfoDTO> remedicalList = [];
 
 
-  /// 当前选中的图像下标
-  int selectedImageIndex = -1;
-
   /// 获取图片地址
   /// 获取图片地址
   void onChangeImage(
   void onChangeImage(
     String imageUrl,
     String imageUrl,
@@ -226,24 +223,27 @@ class _ScrollableImageListState extends State<ScrollableImageList> {
     if (measureData.itemCurrentImage == imageUrl) {
     if (measureData.itemCurrentImage == imageUrl) {
       return;
       return;
     }
     }
+    final selectedIndex = measureController.examInfo.images.indexWhere(
+      (element) => element.url == imageUrl,
+    );
+    if (selectedIndex < 0) {
+      return;
+    }
+
     measureHandler.changeImageLoaded = true;
     measureHandler.changeImageLoaded = true;
     measureHandler.imageChanged = ChangeImageInfo(
     measureHandler.imageChanged = ChangeImageInfo(
       imageUrl,
       imageUrl,
       remedicalCode,
       remedicalCode,
     );
     );
-    ExamImageInfo selectedImage = measureController.examInfo.images.firstWhere(
-      (element) => element.url == imageUrl,
-    );
-    selectedImageIndex =
-        measureController.examInfo.images.indexOf(selectedImage);
-    measureData.itemCurrentImage = imageUrl;
-    measureController.examInfo.selectedImageIndex = selectedImageIndex;
+
+    measureController.examInfo.selectedImageIndex = selectedIndex;
     setState(() {});
     setState(() {});
   }
   }
 
 
   /// 获取图像Code来更新图像
   /// 获取图像Code来更新图像
-  void onChangeImageByRemedicalCode(_, e) {
-    onChangeImage(findImageUrlByRemedicalCode(e), e);
+  void onChangeImageByRemedicalCode(_, String e) {
+    final url = findImageUrlByRemedicalCode(e);
+    onChangeImage(url, e);
   }
   }
 
 
   /// 更新图像集合
   /// 更新图像集合
@@ -255,14 +255,10 @@ class _ScrollableImageListState extends State<ScrollableImageList> {
   }
   }
 
 
   String findImageUrlByRemedicalCode(String remedicalCode) {
   String findImageUrlByRemedicalCode(String remedicalCode) {
-    String imageUrl = '';
-    for (var i = 0; i < measureController.examInfo.images.length; i++) {
-      if (remedicalList[i].remedicalCode! == remedicalCode) {
-        imageUrl = remedicalList[i].terminalImages!.imageUrl!;
-        break;
-      }
-    }
-    return imageUrl;
+    final item =
+        remedicalList.firstWhere((e) => e.remedicalCode == remedicalCode);
+    final imgInfo = item.terminalImages!;
+    return measureController.chooseImageUrl(imgInfo);
   }
   }
 
 
   @override
   @override
@@ -347,15 +343,17 @@ class _ScrollableImageListState extends State<ScrollableImageList> {
         controller: widget.scrollController,
         controller: widget.scrollController,
         itemCount: remedicalItemList.toList().length,
         itemCount: remedicalItemList.toList().length,
         itemBuilder: (BuildContext context, int index) {
         itemBuilder: (BuildContext context, int index) {
+          final item = remedicalItemList[index];
           FWidget image = FContentImage(
           FWidget image = FContentImage(
-            remedicalInfo: remedicalItemList[index],
+            remedicalInfo: item,
             isMeasure: true,
             isMeasure: true,
-            onTap: () => onChangeImage(
-              remedicalItemList[index].terminalImages!.imageUrl!,
-              remedicalItemList[index].remedicalCode!,
-            ),
+            onTap: () {
+              final code = item.remedicalCode!;
+              final url = findImageUrlByRemedicalCode(code);
+              onChangeImage(url, code);
+            },
             serialNo: index + 1,
             serialNo: index + 1,
-            description: _translateDescription(remedicalItemList[index]),
+            description: _translateDescription(item),
           );
           );
           return FContainer(
           return FContainer(
             key: ValueKey(measureData.itemCurrentImage),
             key: ValueKey(measureData.itemCurrentImage),
@@ -364,7 +362,7 @@ class _ScrollableImageListState extends State<ScrollableImageList> {
             decoration: BoxDecoration(
             decoration: BoxDecoration(
               border: Border.all(
               border: Border.all(
                 width: 3,
                 width: 3,
-                color: remedicalItemList[index].terminalImages!.imageUrl! !=
+                color: item.terminalImages!.imageUrl! !=
                         measureData.itemCurrentImage
                         measureData.itemCurrentImage
                     ? Colors.grey
                     ? Colors.grey
                     : Colors.blue,
                     : Colors.blue,

+ 17 - 19
lib/view/measure/measure_view.dart

@@ -116,7 +116,7 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
         if (remedicalInfo.terminalImages != null) {
         if (remedicalInfo.terminalImages != null) {
           _hideFullScreenLoading = true;
           _hideFullScreenLoading = true;
           measureData.itemCurrentImage =
           measureData.itemCurrentImage =
-              remedicalInfo.terminalImages!.imageUrl ?? '';
+              measureController.chooseImageUrl(remedicalInfo.terminalImages!);
           getExamImageInfoList(remedicals);
           getExamImageInfoList(remedicals);
           measureHandler.changeImageList.emit(this, remedicals);
           measureHandler.changeImageList.emit(this, remedicals);
         }
         }
@@ -318,8 +318,9 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
 
 
       if (remedicalInfo.terminalImages != null) {
       if (remedicalInfo.terminalImages != null) {
         _hideFullScreenLoading = true;
         _hideFullScreenLoading = true;
+        final imgInfo = remedicalInfo.terminalImages!;
         measureData.itemCurrentImage =
         measureData.itemCurrentImage =
-            remedicalInfo.terminalImages!.imageUrl ?? '';
+            measureController.chooseImageUrl(imgInfo);
         getExamImageInfoList(remedicals);
         getExamImageInfoList(remedicals);
       }
       }
     }
     }
@@ -331,15 +332,11 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
   /// 获取测量图片所需的图片组 并且写入控制器中 加载
   /// 获取测量图片所需的图片组 并且写入控制器中 加载
   void getExamImageInfoList(List<RemedicalInfoDTO> remedicals) async {
   void getExamImageInfoList(List<RemedicalInfoDTO> remedicals) async {
     /// 检查中图片信息表
     /// 检查中图片信息表
-    List<ExamImageInfo> examImageInfoList = [];
-    for (var element in remedicals) {
-      examImageInfoList.add(
-        ExamImageInfo(
-          element.terminalImages!.imageUrl!,
-          element.terminalImages!.previewUrl!,
-        ),
-      );
-    }
+    List<ExamImageInfo> examImageInfoList = remedicals.map((e) {
+      final imgInfo = e.terminalImages!;
+      final vidUrl = measureController.chooseImageUrl(imgInfo);
+      return ExamImageInfo(vidUrl, imgInfo.previewUrl!);
+    }).toList();
 
 
     Get.delete<MeasureController>();
     Get.delete<MeasureController>();
     measureController = Get.put(MeasureController(
     measureController = Get.put(MeasureController(
@@ -350,13 +347,12 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
     ));
     ));
 
 
     await measureController.load();
     await measureController.load();
-    int selectedImageIndex = -1;
-    if (examImageInfoList
-        .any((element) => element.url == measureData.itemCurrentImage)) {
-      ExamImageInfo selectedImage = examImageInfoList.firstWhere(
-        (element) => element.url == measureData.itemCurrentImage,
-      );
-      selectedImageIndex = examImageInfoList.indexOf(selectedImage);
+
+    final selectedImageIndex = examImageInfoList.indexWhere(
+      (element) => element.url == measureData.itemCurrentImage,
+    );
+    if (selectedImageIndex > -1) {
+      // 命中当前选择图像
       measureController.examInfo.selectedImageIndex = selectedImageIndex;
       measureController.examInfo.selectedImageIndex = selectedImageIndex;
     }
     }
     // MeasureLanguage.load(measureData.measureLanguage);
     // MeasureLanguage.load(measureData.measureLanguage);
@@ -367,7 +363,9 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
     // measureHandler.changeImageLoaded = true;
     // measureHandler.changeImageLoaded = true;
     if (!mounted) return;
     if (!mounted) return;
     final currentImage = measureData.remedicalList.firstWhereOrNull(
     final currentImage = measureData.remedicalList.firstWhereOrNull(
-      (element) => element.terminalImages!.imageUrl == e!.url,
+      (element) =>
+          element.terminalImages!.imageUrl == e!.url ||
+          element.terminalImages!.originImageUrl == e.url,
     );
     );
     if (currentImage != null) {
     if (currentImage != null) {
       /// 获取图片详细信息
       /// 获取图片详细信息

+ 16 - 17
lib/view/mobile_view/mobile_measure_view.dart

@@ -57,14 +57,11 @@ class _MobileMeasureMainPageState extends State<MobileMeasureMainPage> {
 
 
   /// 获取测量图片所需的图片组 并且写入控制器中 加载
   /// 获取测量图片所需的图片组 并且写入控制器中 加载
   void getExamImageInfoList(List<RemedicalInfoDTO> remedicals) async {
   void getExamImageInfoList(List<RemedicalInfoDTO> remedicals) async {
-    for (var element in remedicals) {
-      examImageInfoList.add(
-        ExamImageInfo(
-          element.terminalImages!.imageUrl!,
-          element.terminalImages!.previewUrl!,
-        ),
-      );
-    }
+    examImageInfoList = remedicals.map((e) {
+      final imgInfo = e.terminalImages!;
+      final vidUrl = measureController.chooseImageUrl(imgInfo);
+      return ExamImageInfo(vidUrl, imgInfo.previewUrl!);
+    }).toList();
 
 
     measureController = Get.put(MeasureController(
     measureController = Get.put(MeasureController(
       "",
       "",
@@ -74,13 +71,12 @@ class _MobileMeasureMainPageState extends State<MobileMeasureMainPage> {
     ));
     ));
 
 
     await measureController.load();
     await measureController.load();
-    int selectedImageIndex = -1;
-    if (examImageInfoList
-        .any((element) => element.url == measureData.itemCurrentImage)) {
-      ExamImageInfo selectedImage = examImageInfoList.firstWhere(
-        (element) => element.url == measureData.itemCurrentImage,
-      );
-      selectedImageIndex = examImageInfoList.indexOf(selectedImage);
+
+    final selectedImageIndex = examImageInfoList.indexWhere(
+      (element) => element.url == measureData.itemCurrentImage,
+    );
+    if (selectedImageIndex > -1) {
+      // 命中当前选择图像
       measureController.examInfo.selectedImageIndex = selectedImageIndex;
       measureController.examInfo.selectedImageIndex = selectedImageIndex;
     }
     }
   }
   }
@@ -145,7 +141,9 @@ class _MobileMeasureMainPageState extends State<MobileMeasureMainPage> {
     // measureHandler.changeImageLoaded = true;
     // measureHandler.changeImageLoaded = true;
     if (!mounted) return;
     if (!mounted) return;
     final currentImage = measureData.remedicalList.firstWhereOrNull(
     final currentImage = measureData.remedicalList.firstWhereOrNull(
-      (element) => element.terminalImages!.imageUrl == e!.url,
+      (element) =>
+          element.terminalImages!.imageUrl == e!.url ||
+          element.terminalImages!.originImageUrl == e.url,
     );
     );
     if (currentImage != null) {
     if (currentImage != null) {
       /// 获取图片详细信息
       /// 获取图片详细信息
@@ -262,8 +260,9 @@ class _MobileMeasureMainPageState extends State<MobileMeasureMainPage> {
 
 
       if (remedicalInfo.terminalImages != null) {
       if (remedicalInfo.terminalImages != null) {
         loaded = true;
         loaded = true;
+        final imgInfo = remedicalInfo.terminalImages!;
         measureData.itemCurrentImage =
         measureData.itemCurrentImage =
-            remedicalInfo.terminalImages!.imageUrl ?? '';
+            measureController.chooseImageUrl(imgInfo);
         getExamImageInfoList(remedicals);
         getExamImageInfoList(remedicals);
       }
       }
     }
     }

+ 10 - 18
pubspec.lock

@@ -166,8 +166,8 @@ packages:
     dependency: "direct main"
     dependency: "direct main"
     description:
     description:
       path: "."
       path: "."
-      ref: "0e26570"
-      resolved-ref: "0e26570e509098925bdde61f364a6d4f0795f66d"
+      ref: f670aee
+      resolved-ref: f670aee54b0aaa23350b0bdd1a47d92f5f50e43a
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git"
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git"
     source: git
     source: git
     version: "0.0.1"
     version: "0.0.1"
@@ -175,8 +175,8 @@ packages:
     dependency: "direct main"
     dependency: "direct main"
     description:
     description:
       path: "."
       path: "."
-      ref: a5257c2
-      resolved-ref: a5257c2fd655599d028714a7ac6d768c014689e1
+      ref: "09cc16b"
+      resolved-ref: "09cc16bd6bdc6aadcb77e156bc52c29f608d1128"
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git"
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git"
     source: git
     source: git
     version: "0.0.1"
     version: "0.0.1"
@@ -186,7 +186,7 @@ packages:
       path: "."
       path: "."
       ref: "33166353fb"
       ref: "33166353fb"
       resolved-ref: "33166353fb2c4a50346d416ca2488150a0d61fba"
       resolved-ref: "33166353fb2c4a50346d416ca2488150a0d61fba"
-      url: "http://git.ius.plus/bakamaka.guan/fis_lib_business_components.git"
+      url: "http://git.ius.plus/Project-Wing/fis_lib_business_components.git"
     source: git
     source: git
     version: "0.0.1"
     version: "0.0.1"
   fis_lib_qrcode:
   fis_lib_qrcode:
@@ -195,7 +195,7 @@ packages:
       path: "."
       path: "."
       ref: edbc68b4f5
       ref: edbc68b4f5
       resolved-ref: edbc68b4f598bda7cd55a667bab04dd5338c0857
       resolved-ref: edbc68b4f598bda7cd55a667bab04dd5338c0857
-      url: "http://git.ius.plus/jimmy.jiang/fis_lib_qrcode.git"
+      url: "http://git.ius.plus/Project-Wing/fis_lib_qrcode.git"
     source: git
     source: git
     version: "4.0.1"
     version: "4.0.1"
   fis_theme:
   fis_theme:
@@ -211,8 +211,8 @@ packages:
     dependency: "direct main"
     dependency: "direct main"
     description:
     description:
       path: "."
       path: "."
-      ref: "168a553"
-      resolved-ref: "168a5535d304bd33646bc08da0bd1cceb36ffb34"
+      ref: "9dbe5e5"
+      resolved-ref: "9dbe5e54811a95d389f49a3baa22e3946f07fa25"
       url: "http://git.ius.plus/Project-Wing/fis_lib_ui.git"
       url: "http://git.ius.plus/Project-Wing/fis_lib_ui.git"
     source: git
     source: git
     version: "0.0.1"
     version: "0.0.1"
@@ -222,7 +222,7 @@ packages:
       path: "."
       path: "."
       ref: c71ca8880b
       ref: c71ca8880b
       resolved-ref: c71ca8880beb43c2fadd0727d3e7d5266244c394
       resolved-ref: c71ca8880beb43c2fadd0727d3e7d5266244c394
-      url: "http://git.ius.plus:88/melon.yin/fis_lib_vid.git"
+      url: "http://git.ius.plus:88/Project-Wing/fis_lib_vid.git"
     source: git
     source: git
     version: "0.0.1"
     version: "0.0.1"
   fis_vid_ext:
   fis_vid_ext:
@@ -231,7 +231,7 @@ packages:
       path: "."
       path: "."
       ref: d5e2597
       ref: d5e2597
       resolved-ref: d5e2597101528864deb5db49a7a3bb1b146f03f0
       resolved-ref: d5e2597101528864deb5db49a7a3bb1b146f03f0
-      url: "http://git.ius.plus/melon.yin/fis_lib_vid_ext.git"
+      url: "http://git.ius.plus/Project-Wing/fis_lib_vid_ext.git"
     source: git
     source: git
     version: "0.0.1"
     version: "0.0.1"
   flutter:
   flutter:
@@ -324,14 +324,6 @@ packages:
     description: flutter
     description: flutter
     source: sdk
     source: sdk
     version: "0.0.0"
     version: "0.0.0"
-  flutter_treeview:
-    dependency: transitive
-    description:
-      name: flutter_treeview
-      sha256: ce7a66452e02877700890cb674773ea0af28d914192acfb5bf55a50ce35b5819
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "1.0.7+1"
   flutter_typeahead:
   flutter_typeahead:
     dependency: "direct overridden"
     dependency: "direct overridden"
     description:
     description:

+ 6 - 6
pubspec.yaml

@@ -57,11 +57,11 @@ dependencies:
       ref: ^1.0.5
       ref: ^1.0.5
   fis_vid:
   fis_vid:
     git:
     git:
-      url: http://git.ius.plus:88/melon.yin/fis_lib_vid.git
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_vid.git
       ref: ^1.0.4
       ref: ^1.0.4
   fis_vid_ext:
   fis_vid_ext:
     git:
     git:
-      url: http://git.ius.plus/melon.yin/fis_lib_vid_ext.git
+      url: http://git.ius.plus/Project-Wing/fis_lib_vid_ext.git
       ref: d5e2597
       ref: d5e2597
   fis_i18n:
   fis_i18n:
     git:
     git:
@@ -69,7 +69,7 @@ dependencies:
       ref: bcce140
       ref: bcce140
   fis_lib_qrcode:
   fis_lib_qrcode:
     git:
     git:
-      url: http://git.ius.plus/jimmy.jiang/fis_lib_qrcode.git
+      url: http://git.ius.plus/Project-Wing/fis_lib_qrcode.git
       ref: edbc68b4f5
       ref: edbc68b4f5
 
 
 dependency_overrides:
 dependency_overrides:
@@ -90,7 +90,7 @@ dependency_overrides:
       ref: b38bb1b5a4
       ref: b38bb1b5a4
   fis_vid:
   fis_vid:
     git:
     git:
-      url: http://git.ius.plus:88/melon.yin/fis_lib_vid.git
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_vid.git
       ref: c71ca8880b
       ref: c71ca8880b
     # path: ../fis_lib_vid
     # path: ../fis_lib_vid
   fis_i18n:
   fis_i18n:
@@ -100,10 +100,10 @@ dependency_overrides:
   fis_jsonrpc:
   fis_jsonrpc:
     git:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git
       url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git
-      ref: a5257c2
+      ref: 09cc16b
   fis_lib_business_components:
   fis_lib_business_components:
     git:
     git:
-      url: http://git.ius.plus/bakamaka.guan/fis_lib_business_components.git
+      url: http://git.ius.plus/Project-Wing/fis_lib_business_components.git
       ref: 33166353fb
       ref: 33166353fb
     # path: ../fis_lib_business_components
     # path: ../fis_lib_business_components
 dev_dependencies:
 dev_dependencies: