Browse Source

1、新增注释

bakamaka.guan 2 years ago
parent
commit
84e5b2cb1e

+ 12 - 0
lib/measure_page_test.dart

@@ -63,6 +63,16 @@ class MeasureDataTester {
   static Future<String> shareImage(String vid) async {
     return '';
   }
+
+  static Future<CommentItemResultDTO?> getCommentsByApplicationAsync(
+      String applicationName, String categoryName) async {
+    return null;
+  }
+
+  static Future<bool?> saveUserDefinedCommentsAsync(String applicationName,
+      String categoryName, List<CommentItemDTO> commentItems) async {
+    return null;
+  }
 }
 
 class MeasureTestPage extends StatefulWidget {
@@ -97,6 +107,8 @@ class _MeasureTestPageState extends State<MeasureTestPage> {
     MeasureDataTester.saveMeasureSystemSettingAsync,
     MeasureDataTester.getMeasureSystemSettingAsync,
     MeasureDataTester.shareImage,
+    MeasureDataTester.getCommentsByApplicationAsync,
+    MeasureDataTester.saveUserDefinedCommentsAsync,
   ));
   final controller = Get.put<IMeasureController>(MeasureController(
     "12345",

+ 72 - 1
lib/process/workspace/measure_data_controller.dart

@@ -68,6 +68,22 @@ abstract class IMeasureDataController {
   List<ItemMeta> get getItemMetaList;
   set getItemMetaList(List<ItemMeta> value);
 
+  /// 上层测量项
+  List<ItemMeta> get getTopItemMetaList;
+  set getTopItemMetaList(List<ItemMeta> value);
+
+  /// 下层测量项
+  List<ItemMeta> get getBottomItemMetaList;
+  set getBottomItemMetaList(List<ItemMeta> value);
+
+  /// 注释工具list
+  List<String> get getCommentsList;
+  set getCommentsList(List<String> value);
+
+  /// 注释List
+  List<CommentItemDTO> get measureCommentItemResult;
+  set measureCommentItemResult(List<CommentItemDTO> value);
+
   /// 测量图片数据
   MeasureImageData get measureImageData;
   set measureImageData(MeasureImageData value);
@@ -104,7 +120,10 @@ class MeasureDataController implements IMeasureDataController {
   List<VidUsMode> _applicationModes = [];
   List<MeasureModeDTO> _availableModes = [];
   List<ItemMeta> _getItemMetaList = [];
-
+  List<ItemMeta> _getTopItemMetaList = [];
+  List<ItemMeta> _getBottomItemMetaList = [];
+  List<String> _getCommentsList = [];
+  List<CommentItemDTO> _measureCommentItemResult = [];
   @override
   var remedicalListResultChanged = FEventHandler<List<RemedicalInfoDTO>>();
 
@@ -143,6 +162,7 @@ class MeasureDataController implements IMeasureDataController {
 
   @override
   List<ItemMeta> get getItemMetaList => _getItemMetaList;
+
   @override
   set getItemMetaList(List<ItemMeta> value) {
     if (value != _getItemMetaList) {
@@ -151,6 +171,43 @@ class MeasureDataController implements IMeasureDataController {
     }
   }
 
+  @override
+  List<ItemMeta> get getTopItemMetaList => _getTopItemMetaList;
+  @override
+  set getTopItemMetaList(List<ItemMeta> value) {
+    if (value != _getTopItemMetaList) {
+      _getTopItemMetaList = value;
+    }
+  }
+
+  @override
+  List<ItemMeta> get getBottomItemMetaList => _getBottomItemMetaList;
+  @override
+  set getBottomItemMetaList(List<ItemMeta> value) {
+    if (value != _getBottomItemMetaList) {
+      _getBottomItemMetaList = value;
+    }
+  }
+
+  @override
+  List<String> get getCommentsList => _getCommentsList;
+  @override
+  set getCommentsList(List<String> value) {
+    if (value != _getCommentsList) {
+      _getCommentsList = value;
+    }
+  }
+
+  @override
+  List<CommentItemDTO> get measureCommentItemResult =>
+      _measureCommentItemResult;
+  @override
+  set measureCommentItemResult(List<CommentItemDTO> value) {
+    if (value != _measureCommentItemResult) {
+      _measureCommentItemResult = value;
+    }
+  }
+
   @override
   List<MeasureModeDTO> get availableModes => _availableModes;
   @override
@@ -288,6 +345,8 @@ class MeasureDataController implements IMeasureDataController {
     this.saveMeasureSystemSettingAsync,
     this.getMeasureSystemSettingAsync,
     this.shareImage,
+    this.getCommentsByApplicationAsync,
+    this.saveUserDefinedCommentsAsync,
   );
 
   ///参数1:patientCode,参数2:recordCode,参数3:token
@@ -304,14 +363,26 @@ class MeasureDataController implements IMeasureDataController {
   ///参数1:imageBytes 图片字节, 参数2: patientCode 病人code,参数3:recordCode 检查code, 参数4:remedicalCode 检查code,参数5: measuredData 测量值
   Future<bool?> Function(Uint8List, String, String, String, String) saveImage;
 
+  /// 分享vid
   Future<String> Function(String) shareImage;
 
+  /// 保存测量项
   Future<void> Function(MeasureModeSubmit)
       saveUserDefinedMeasureApplicationAsync;
+
+  /// 保存卡尺样式
   Future<void> Function(MeasureSystemSettingDTO) saveMeasureSystemSettingAsync;
 
+  /// 获取卡尺样式
   Future<MeasureSystemSettingDTO?> Function() getMeasureSystemSettingAsync;
 
+  ///  参数1: ApplicationName 应用名称,参数2:CategoryName /分类名称,
+  Future<CommentItemResultDTO?> Function(String, String)
+      getCommentsByApplicationAsync;
+
+  Future<bool?> Function(String, String, List<CommentItemDTO>)
+      saveUserDefinedCommentsAsync;
+
   void _onRemedicalListChanged() {
     remedicalListResultChanged.emit(this, remedicalList);
   }

+ 2 - 5
lib/view/button_group/button_group.dart

@@ -75,13 +75,10 @@ class _ButtonGroupState extends State<ButtonGroup> {
         FIcons.fis_share,
         i18nBook.remedical.share.t,
         () async {
-          print('分享');
-          var a = await measureData.shareImage.call(
+          var itemCurrentImage = await measureData.shareImage.call(
             measureData.itemCurrentImage,
           );
-
-          print(a);
-          Get.dialog(_buildShareQr(measureData.itemCurrentImage));
+          Get.dialog(_buildShareQr(itemCurrentImage));
         },
       ),
       if (application.isThirdPart) ...[

+ 9 - 12
lib/view/measure/measure_left_annotation.dart

@@ -1,5 +1,6 @@
 import 'package:fis_measure/interfaces/enums/annotation.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_ui/index.dart';
 import 'package:flutter/material.dart';
@@ -16,25 +17,21 @@ class MeasureLeftAnnotation extends StatefulWidget implements FWidget {
 
 class _MeasureLeftAnnotationState extends State<MeasureLeftAnnotation> {
   // ignore: non_constant_identifier_names
-  static final C_SUPPORTED_TEXTS = <String>[
-    "肝左叶",
-    "胆囊",
-    "脾脏",
-    "结石",
-    "积液",
-  ];
+  // static final C_SUPPORTED_TEXTS = measureData.getCommentsList;
 
   final scrollController = ScrollController();
   final application = Get.find<IApplication>();
   late final measureHandler = Get.find<MeasureHandler>();
 
+  /// 数据
+  late final measureData = Get.find<MeasureDataController>();
+
   @override
   void initState() {
     Future.delayed(const Duration(milliseconds: 1000), () {
-      application.switchAnnotation(AnnotationType.label, C_SUPPORTED_TEXTS[0]);
+      application.switchAnnotation(
+          AnnotationType.label, measureData.getCommentsList[0]);
     });
-    // application.switchAnnotation(AnnotationType.arrow);
-    // application.switchAnnotation(AnnotationType.input);
     super.initState();
   }
 
@@ -54,7 +51,7 @@ class _MeasureLeftAnnotationState extends State<MeasureLeftAnnotation> {
           controller: scrollController,
           crossAxisCount: 2,
           childAspectRatio: 3,
-          children: C_SUPPORTED_TEXTS.map((e) {
+          children: measureData.getCommentsList.map((e) {
             return _buildNoteTools(e);
           }).toList(),
         ),
@@ -63,7 +60,7 @@ class _MeasureLeftAnnotationState extends State<MeasureLeftAnnotation> {
   }
 
   Widget _buildNoteTools(String tools) {
-    const style = TextStyle(color: Colors.white, fontSize: 16);
+    const style = TextStyle(color: Colors.white, fontSize: 14);
     const dragStyle = TextStyle(color: Colors.amber, fontSize: 18);
     return Row(
       mainAxisSize: MainAxisSize.max,

+ 98 - 0
lib/view/measure/measure_search_input.dart

@@ -0,0 +1,98 @@
+import 'package:fis_jsonrpc/rpc.dart';
+import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/workspace/measure_data_controller.dart';
+import 'package:fis_measure/process/workspace/measure_handler.dart';
+import 'package:fis_measure/utils/prompt_box.dart';
+import 'package:fis_measure/view/measure/tool_chest_title.dart';
+import 'package:fis_ui/index.dart';
+import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+
+class LeftSelectInput extends StatelessWidget implements FWidget {
+  late final application = Get.find<IApplication>();
+
+  /// 数据
+  late final measureData = Get.find<MeasureDataController>();
+  late final measureHandler = Get.find<MeasureHandler>();
+
+  String commentItem = '';
+
+  /// 注释获取
+  void getNoteCommentsList() async {
+    List<String> commentsList = [];
+    var measureCommentItemResult =
+        await measureData.getCommentsByApplicationAsync(
+      application.applicationName,
+      application.categoryName,
+    );
+    measureData.measureCommentItemResult =
+        measureCommentItemResult?.commentItems ?? [];
+
+    measureCommentItemResult?.commentItems?.forEach((element) {
+      commentsList.add(element.text ?? '');
+    });
+    measureData.getCommentsList = commentsList;
+  }
+
+  @override
+  FWidget build(BuildContext context) {
+    return FContainer(
+      padding: const EdgeInsets.only(
+        left: 15,
+        right: 15,
+        bottom: 5,
+      ),
+      child: FRow(
+        crossAxisAlignment: CrossAxisAlignment.center,
+        children: [
+          FBorderInput(
+            height: 38,
+            hintSize: 16,
+            contentSize: 16,
+            maxLength: 20,
+            fillColor: Colors.white,
+            borderColor: const Color.fromARGB(255, 187, 180, 180),
+            suffixIcon: FMaterial(
+              color: Colors.transparent,
+              child: FIconButton(
+                onPressed: () async {
+                  /// TODO 翻译
+                  List<CommentItemDTO> measureCommentItemList =
+                      measureData.measureCommentItemResult;
+                  if (commentItem.isEmpty) {
+                    PromptBox.toast("请添加新注释");
+                  } else {
+                    measureCommentItemList.add(
+                      CommentItemDTO(text: commentItem),
+                    );
+                    var result = await measureData.saveUserDefinedCommentsAsync(
+                      application.applicationName,
+                      application.categoryName,
+                      measureCommentItemList,
+                    );
+                    if (result ?? false) {
+                      getNoteCommentsList();
+                      measureHandler.changedTab = TagEnum.MeasureTool;
+                      measureHandler.changedTab = TagEnum.NodesTool;
+                    } else {
+                      PromptBox.toast("添加注释失败");
+                    }
+                  }
+                },
+                icon: const FIcon(
+                  Icons.add,
+                ),
+              ),
+            ),
+
+            /// TODO 翻译
+            hintText: "请添加新注释",
+            onChanged: (value) {
+              commentItem = value;
+            },
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 28 - 14
lib/view/measure/measure_tool.dart

@@ -34,12 +34,6 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
   /// 当前选中的测量项目
   String activeName = '';
 
-  /// 当前组合测量项之前的列表
-  List<ItemMeta> topList = [];
-
-  /// 当前组合测量项之后的列表
-  List<ItemMeta> bottomList = [];
-
   /// 当前组合测量项
   ItemMeta? comboItemMeta;
 
@@ -129,7 +123,7 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
       }
     }
     measureData.getItemMetaList = itemMetaList;
-    topList = measureData.getItemMetaList;
+    measureData.getTopItemMetaList = measureData.getItemMetaList;
   }
 
   void currentFrameHandler(Object sender, VidUsImage e) async {
@@ -176,10 +170,28 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
         }
       }
     }
+    getNoteCommentsList();
+  }
+
+  /// 注释获取
+  void getNoteCommentsList() async {
+    List<String> commentsList = [];
+    var measureCommentItemResult =
+        await measureData.getCommentsByApplicationAsync(
+      application.applicationName,
+      application.categoryName,
+    );
+    measureData.measureCommentItemResult =
+        measureCommentItemResult?.commentItems ?? [];
+
+    measureCommentItemResult?.commentItems?.forEach((element) {
+      commentsList.add(element.text ?? '');
+    });
+    measureData.getCommentsList = commentsList;
   }
 
   void getItemMetaListChanged(sender, e) {
-    topList = measureData.getItemMetaList;
+    measureData.getTopItemMetaList = measureData.getItemMetaList;
     setState(() {});
   }
 
@@ -190,6 +202,7 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
     );
     measureData.getItemMetaListChanged.addListener(getItemMetaListChanged);
     measureData.itemMetaListChanged.addListener(itemMetaList);
+
     super.initState();
   }
 
@@ -201,6 +214,7 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
     );
     measureData.getItemMetaListChanged.removeListener(getItemMetaListChanged);
     measureData.itemMetaListChanged.removeListener(itemMetaList);
+
     final item = application.activeMeasureItem!;
     if (item is ITopMeasureItem) {
       item.workingChildChanged.removeListener(workingChildChanged);
@@ -215,9 +229,9 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
         isAlwaysShown: true,
         child: FColumn(
           children: [
-            _buildFGridView(topList),
+            _buildFGridView(measureData.getTopItemMetaList),
             if (isCombo) _buildCombo(),
-            _buildFGridView(bottomList),
+            _buildFGridView(measureData.getBottomItemMetaList),
           ],
         ),
       ),
@@ -228,8 +242,8 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
   void chooseMeasure(ItemMeta itemMeta) {
     isCombo = false;
     changeItem(itemMeta);
-    topList = measureData.getItemMetaList;
-    bottomList = [];
+    measureData.getTopItemMetaList = measureData.getItemMetaList;
+    measureData.getBottomItemMetaList = [];
   }
 
   void chooseComboMeasure(ItemMeta itemMeta) {
@@ -244,8 +258,8 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
       } else {
         bottom.add(getItemMetaList[i]);
       }
-      topList = top;
-      bottomList = bottom;
+      measureData.getTopItemMetaList = top;
+      measureData.getBottomItemMetaList = bottom;
       if (i == getItemMetaList.indexOf(itemMeta)) {
         comboItemMeta = getItemMetaList[i];
         comboItemMetaActivedIndex = 0;

+ 194 - 0
lib/view/measure/measure_tools_title.dart

@@ -0,0 +1,194 @@
+import 'package:fis_jsonrpc/rpc.dart';
+import 'package:fis_measure/interfaces/process/items/item_metas.dart';
+import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
+import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/workspace/measure_data_controller.dart';
+import 'package:fis_measure/process/workspace/measure_handler.dart';
+import 'package:fis_ui/index.dart';
+import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+import 'package:fis_theme/theme.dart';
+import 'package:vid/us/vid_us_mode.dart';
+import 'package:vid/us/vid_us_unit.dart';
+
+/// 测量方法 Har
+class LeftMeasureTools extends StatefulWidget implements FWidget {
+  const LeftMeasureTools();
+
+  @override
+  State<LeftMeasureTools> createState() => _LeftMeasureToolsState();
+}
+
+class _LeftMeasureToolsState extends State<LeftMeasureTools> {
+  late final application = Get.find<IApplication>();
+  late final measureHandler = Get.find<MeasureHandler>();
+
+  /// 数据
+  late final measureData = Get.find<MeasureDataController>();
+
+  void changeItem(ItemMeta itemMeta) {
+    application.switchItem(itemMeta);
+    if (mounted) {
+      setState(() {});
+    }
+  }
+
+  void applicationModesChanged(sender, List<VidUsMode> e) {
+    if (mounted) {
+      setState(() {});
+    }
+  }
+
+  void visualAreaChanged(sender, IVisualArea e) {
+    if (mounted) {
+      setAvailableModes(e.mode.modeType.toString().split('.')[1]);
+    }
+  }
+
+  /// 获取组合测量项
+  void comboList() {
+    List<ItemMeta> itemMetaList = [];
+
+    for (var element in measureData.itemMetaList) {
+      if (measureData.getMeasureApplicationList.contains(element.name)) {
+        List<ItemOutputMeta> itemOutputMeta = [];
+        String? multiMethod;
+        List<OutputItemMetaDTO> availableOutputs =
+            element.calculator?.availableOutputs ?? [];
+        for (var element in availableOutputs) {
+          itemOutputMeta.add(
+            ItemOutputMeta(
+              element.name ?? '',
+              element.description ?? '',
+              VidUsUnitMap.getUnit(element.unit),
+            ),
+          );
+        }
+        List<ItemMeta> childItemMetas = [];
+
+        if (element.multiMethodItems?.isNotEmpty ?? false) {
+          ChildItemMetaDTO? itemMeta = element.multiMethodItems!
+              .firstWhereOrNull((element) => element.isWorking == true);
+          multiMethod = itemMeta?.name ?? '';
+          List<ChildItemMetaDTO> childItems = itemMeta?.childItems ?? [];
+
+          /// 组合测量项部分
+          for (var element in childItems) {
+            childItemMetas.add(
+              ItemMeta(
+                element.name ?? '',
+                description: element.description ?? '',
+                outputs: itemOutputMeta,
+                childItems: childItemMetas,
+                multiMethod: multiMethod,
+              ),
+            );
+          }
+        }
+        itemMetaList.add(
+          ItemMeta(
+            element.name ?? '',
+            description: element.description ?? '',
+            outputs: itemOutputMeta,
+            childItems: childItemMetas,
+            multiMethod: multiMethod,
+          ),
+        );
+      }
+    }
+    measureData.getItemMetaList = itemMetaList;
+  }
+
+  void setAvailableModes(String name) {
+    var models = measureData.availableModes;
+    measureData.currentMode = name;
+    if (models.isNotEmpty) {
+      ///群组列表
+      var groups = models
+          .firstWhereOrNull(
+              (element) => element.modeName == measureData.currentMode)
+          ?.availableGroups;
+
+      if (groups != null && groups.isNotEmpty) {
+        ///项目列表
+        var folders = groups[0].availableFolders;
+        if (folders != null && folders.isNotEmpty) {
+          measureData.getMeasureApplicationList =
+              folders[0].workingItemNames ?? [];
+          if (folders[0].availableItems != null) {
+            measureData.itemMetaList = folders[0].availableItems!.toList();
+            comboList();
+          }
+          if (measureData.getMeasureApplicationList.isNotEmpty) {
+            changeItem(measureData.getItemMetaList[0]);
+          }
+        }
+      }
+    }
+    setState(() {});
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    measureData.applicationModesChanged.addListener(applicationModesChanged);
+    application.visualAreaChanged.addListener(visualAreaChanged);
+  }
+
+  @override
+  void dispose() {
+    super.dispose();
+    measureData.applicationModesChanged.removeListener(applicationModesChanged);
+    application.visualAreaChanged.removeListener(visualAreaChanged);
+  }
+
+  @override
+  FWidget build(BuildContext context) {
+    return FContainer(
+      width: 300,
+      height: 50,
+      alignment: Alignment.topCenter,
+      padding: const EdgeInsets.symmetric(horizontal: 15),
+      child: FGridView.count(
+        shrinkWrap: true,
+        crossAxisCount: 4,
+        crossAxisSpacing: 10,
+        mainAxisSpacing: 10,
+        childAspectRatio: 1 / 0.5,
+        children: measureData.applicationModes.asMap().entries.map((e) {
+          final bool isACtiveModes =
+              measureData.currentMode == e.value.type.name;
+
+          return FInkWell(
+            onTap: () {
+              setAvailableModes(e.value.type.name);
+              setState(() {});
+            },
+            child: FContainer(
+              alignment: Alignment.center,
+              decoration: BoxDecoration(
+                border: isACtiveModes
+                    ? Border.all(
+                        color: FTheme.ins.colorScheme.primary,
+                      )
+                    : Border.all(
+                        color: Colors.grey,
+                      ),
+                borderRadius: BorderRadius.circular(4),
+                color: isACtiveModes
+                    ? FTheme.ins.colorScheme.primary
+                    : Colors.grey,
+              ),
+              child: FText(
+                e.value.displayName,
+                style: const TextStyle(
+                  color: Colors.white,
+                ),
+              ),
+            ),
+          );
+        }).toList(),
+      ),
+    );
+  }
+}

+ 13 - 0
lib/view/measure/measure_view.dart

@@ -16,11 +16,14 @@ import 'package:fis_measure/view/gesture/positioned_cursor.dart';
 import 'package:fis_measure/view/measure/measure_images_bar.dart';
 import 'package:fis_measure/view/measure/measure_left_annotation.dart';
 import 'package:fis_measure/view/measure/measure_player.dart';
+import 'package:fis_measure/view/measure/measure_search_input.dart';
 import 'package:fis_measure/view/measure/measure_tool.dart';
 import 'package:fis_measure/view/measure/carotid_measure_tool.dart';
+import 'package:fis_measure/view/measure/measure_tools_title.dart';
 import 'package:fis_measure/view/measure/tool_chest_title.dart';
 import 'package:fis_measure/view/player/control_board/operate_bar.dart';
 import 'package:fis_ui/index.dart';
+
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 
@@ -327,6 +330,10 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
   late final application = Get.find<IApplication>();
   final playerController = Get.find<IPlayerController>();
   final measure3DViewController = Get.find<Measure3DViewController>();
+
+  /// 数据
+  late final measureData = Get.find<MeasureDataController>();
+
   bool get exist3DData => measure3DViewController.exist3DData;
   bool get isShell => measure3DViewController.isShell;
 
@@ -393,6 +400,11 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
       children: [
         const LeftSiderHold(),
         if (!isMeasureTool) ...[
+          FContainer(
+            width: 300,
+            key: UniqueKey(),
+            child: LeftSelectInput(),
+          ),
           FExpanded(
             child: FContainer(
               width: 300,
@@ -402,6 +414,7 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
           ),
           _MeasureArrow(),
         ] else ...[
+          const LeftMeasureTools(),
           FExpanded(
             child: showMeasureItems
                 ? FContainer(

+ 1 - 231
lib/view/measure/tool_chest_title.dart

@@ -1,20 +1,11 @@
 import 'package:fis_i18n/i18n.dart';
-import 'package:fis_jsonrpc/rpc.dart';
-import 'package:fis_measure/interfaces/process/items/item_metas.dart';
-import 'package:fis_measure/interfaces/process/player/play_controller.dart';
-import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
-import 'package:fis_measure/interfaces/process/workspace/application.dart';
-import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
 import 'package:fis_measure/view/measure/measure_config/widgets/measure_configuration_style.dart';
-import 'package:fis_measure/view/player/controller.dart';
 import 'package:fis_theme/theme.dart';
 import 'package:fis_ui/index.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
-import 'package:vid/us/vid_us_mode.dart';
-import 'package:vid/us/vid_us_unit.dart';
 
 /// 下拉选择的类
 class MeasureSelectModel {
@@ -59,7 +50,7 @@ class LeftSiderHold extends StatelessWidget implements FWidget {
             ],
           ),
           _LeftSiderTabBar(),
-          const _LeftMeasureTools(),
+
           // _LeftSelectInput(),
           // _LeftPulldown(),
         ],
@@ -156,227 +147,6 @@ class _LeftSiderTabBarState extends State<_LeftSiderTabBar> {
   }
 }
 
-/// 测量方法 Har
-class _LeftMeasureTools extends StatefulWidget implements FWidget {
-  const _LeftMeasureTools();
-
-  @override
-  State<_LeftMeasureTools> createState() => _LeftMeasureToolsState();
-}
-
-class _LeftMeasureToolsState extends State<_LeftMeasureTools> {
-  late final application = Get.find<IApplication>();
-  late final measureHandler = Get.find<MeasureHandler>();
-  final playerController = Get.find<IPlayerController>() as VidPlayerController;
-
-  /// 数据
-  late final measureData = Get.find<MeasureDataController>();
-
-  void changeItem(ItemMeta itemMeta) {
-    application.switchItem(itemMeta);
-    if (mounted) {
-      setState(() {});
-    }
-  }
-
-  void applicationModesChanged(sender, List<VidUsMode> e) {
-    if (mounted) {
-      setState(() {});
-    }
-  }
-
-  void visualAreaChanged(sender, IVisualArea e) {
-    if (mounted) {
-      setAvailableModes(e.mode.modeType.toString().split('.')[1]);
-    }
-  }
-
-  /// 获取组合测量项
-  void comboList() {
-    List<ItemMeta> itemMetaList = [];
-
-    for (var element in measureData.itemMetaList) {
-      if (measureData.getMeasureApplicationList.contains(element.name)) {
-        List<ItemOutputMeta> itemOutputMeta = [];
-        String? multiMethod;
-        List<OutputItemMetaDTO> availableOutputs =
-            element.calculator?.availableOutputs ?? [];
-        for (var element in availableOutputs) {
-          itemOutputMeta.add(
-            ItemOutputMeta(
-              element.name ?? '',
-              element.description ?? '',
-              VidUsUnitMap.getUnit(element.unit),
-            ),
-          );
-        }
-        List<ItemMeta> childItemMetas = [];
-
-        if (element.multiMethodItems?.isNotEmpty ?? false) {
-          ChildItemMetaDTO? itemMeta = element.multiMethodItems!
-              .firstWhereOrNull((element) => element.isWorking == true);
-          multiMethod = itemMeta?.name ?? '';
-          List<ChildItemMetaDTO> childItems = itemMeta?.childItems ?? [];
-
-          /// 组合测量项部分
-          for (var element in childItems) {
-            childItemMetas.add(
-              ItemMeta(
-                element.name ?? '',
-                description: element.description ?? '',
-                outputs: itemOutputMeta,
-                childItems: childItemMetas,
-                multiMethod: multiMethod,
-              ),
-            );
-          }
-        }
-        itemMetaList.add(
-          ItemMeta(
-            element.name ?? '',
-            description: element.description ?? '',
-            outputs: itemOutputMeta,
-            childItems: childItemMetas,
-            multiMethod: multiMethod,
-          ),
-        );
-      }
-    }
-    measureData.getItemMetaList = itemMetaList;
-  }
-
-  void setAvailableModes(String name) {
-    var models = measureData.availableModes;
-    measureData.currentMode = name;
-    if (models.isNotEmpty) {
-      ///群组列表
-      var groups = models
-          .firstWhereOrNull(
-              (element) => element.modeName == measureData.currentMode)
-          ?.availableGroups;
-
-      if (groups != null && groups.isNotEmpty) {
-        ///项目列表
-        var folders = groups[0].availableFolders;
-        if (folders != null && folders.isNotEmpty) {
-          measureData.getMeasureApplicationList =
-              folders[0].workingItemNames ?? [];
-          if (folders[0].availableItems != null) {
-            measureData.itemMetaList = folders[0].availableItems!.toList();
-            comboList();
-          }
-          if (measureData.getMeasureApplicationList.isNotEmpty) {
-            changeItem(measureData.getItemMetaList[0]);
-          }
-        }
-      }
-    }
-    setState(() {});
-  }
-
-  @override
-  void initState() {
-    super.initState();
-    measureData.applicationModesChanged.addListener(applicationModesChanged);
-    application.visualAreaChanged.addListener(visualAreaChanged);
-  }
-
-  @override
-  void dispose() {
-    super.dispose();
-    measureData.applicationModesChanged.removeListener(applicationModesChanged);
-    application.visualAreaChanged.removeListener(visualAreaChanged);
-  }
-
-  @override
-  FWidget build(BuildContext context) {
-    return FContainer(
-      width: 300,
-      height: 50,
-      alignment: Alignment.topCenter,
-      padding: const EdgeInsets.symmetric(vertical: 8),
-      child: FGridView.count(
-        shrinkWrap: true,
-        crossAxisCount: 4,
-        crossAxisSpacing: 10,
-        mainAxisSpacing: 10,
-        childAspectRatio: 1 / 0.5,
-        children: measureData.applicationModes.asMap().entries.map((e) {
-          final bool isACtiveModes =
-              measureData.currentMode == e.value.type.name;
-
-          return FInkWell(
-            onTap: () {
-              setAvailableModes(e.value.type.name);
-              setState(() {});
-            },
-            child: FContainer(
-              alignment: Alignment.center,
-              decoration: BoxDecoration(
-                border: isACtiveModes
-                    ? Border.all(
-                        color: FTheme.ins.colorScheme.primary,
-                      )
-                    : Border.all(
-                        color: Colors.grey,
-                      ),
-                borderRadius: BorderRadius.circular(4),
-                color: isACtiveModes
-                    ? FTheme.ins.colorScheme.primary
-                    : Colors.grey,
-              ),
-              child: FText(
-                e.value.displayName,
-                style: const TextStyle(
-                  color: Colors.white,
-                ),
-              ),
-            ),
-          );
-        }).toList(),
-      ),
-    );
-  }
-}
-
-class _LeftSelectInput extends StatelessWidget implements FWidget {
-  @override
-  FWidget build(BuildContext context) {
-    return FContainer(
-      child: FRow(
-        children: [
-          FExpanded(
-            child: FContainer(
-              child: FRow(
-                crossAxisAlignment: CrossAxisAlignment.center,
-                children: [
-                  FBorderInput(
-                    hintSize: 16,
-                    contentSize: 16,
-                    maxLength: 20,
-                    borderColor: const Color.fromARGB(255, 187, 180, 180),
-                    suffixIcon: FMaterial(
-                      color: Colors.transparent,
-                      child: FIconButton(
-                        onPressed: () {},
-                        icon: const FIcon(
-                          Icons.search,
-                        ),
-                      ),
-                    ),
-                    hintText: i18nBook.common.search.t,
-                    onChanged: (value) {},
-                  ),
-                ],
-              ),
-            ),
-          ),
-        ],
-      ),
-    );
-  }
-}
-
 class _LeftPulldown extends StatelessWidget implements FWidget {
   @override
   FWidget build(BuildContext context) {