소스 검색

4.10 项目需求修改提交

fuyanting 1 년 전
부모
커밋
0d92e00610
43개의 변경된 파일2484개의 추가작업 그리고 432개의 파일을 삭제
  1. 1 0
      fidms
  2. 2 3
      fidms-admin/src/main/java/com/fidms/web/controller/FlowFieldInputController.java
  3. 2 3
      fidms-admin/src/main/java/com/fidms/web/controller/FlowFieldOutputController.java
  4. 2 3
      fidms-admin/src/main/java/com/fidms/web/controller/InfraredInputController.java
  5. 2 3
      fidms-admin/src/main/java/com/fidms/web/controller/InfraredOutputController.java
  6. 2 7
      fidms-admin/src/main/java/com/fidms/web/domain/ExportAll.java
  7. 235 37
      fidms-admin/src/main/java/com/fidms/web/domain/ExportAllinfo.java
  8. 115 25
      fidms-admin/src/main/java/com/fidms/web/domain/FlowFieldInput.java
  9. 77 10
      fidms-admin/src/main/java/com/fidms/web/domain/FlowFieldOutput.java
  10. 19 5
      fidms-admin/src/main/java/com/fidms/web/domain/InfraredInput.java
  11. 42 0
      fidms-admin/src/main/java/com/fidms/web/domain/InfraredOutput.java
  12. 14 0
      fidms-admin/src/main/java/com/fidms/web/domain/Model3d.java
  13. 1 1
      fidms-admin/src/main/java/com/fidms/web/mapper/FlowFieldInputMapper.java
  14. 2 1
      fidms-admin/src/main/java/com/fidms/web/mapper/FlowFieldOutputMapper.java
  15. 1 1
      fidms-admin/src/main/java/com/fidms/web/mapper/InfraredInputMapper.java
  16. 1 1
      fidms-admin/src/main/java/com/fidms/web/mapper/InfraredOutputMapper.java
  17. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/IFlowFieldInputService.java
  18. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/IFlowFieldOutputService.java
  19. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/IInfraredInputService.java
  20. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/IInfraredOutputService.java
  21. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/impl/FlowFieldInputServiceImpl.java
  22. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/impl/FlowFieldOutputServiceImpl.java
  23. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/impl/InfraredInputServiceImpl.java
  24. 1 1
      fidms-admin/src/main/java/com/fidms/web/service/impl/InfraredOutputServiceImpl.java
  25. 56 6
      fidms-admin/src/main/resources/mapper/data/ExportAllinfoMapper.xml
  26. 54 11
      fidms-admin/src/main/resources/mapper/data/FlowFieldInputMapper.xml
  27. 48 5
      fidms-admin/src/main/resources/mapper/data/FlowFieldOutputMapper.xml
  28. 16 5
      fidms-admin/src/main/resources/mapper/data/InfraredInputMapper.xml
  29. 37 5
      fidms-admin/src/main/resources/mapper/data/InfraredOutputMapper.xml
  30. 6 1
      fidms-admin/src/main/resources/mapper/data/Model3dMapper.xml
  31. 9 1
      fidms-common/src/main/java/com/fidms/common/utils/file/FileUploadUtils.java
  32. 4 2
      fidms-common/src/main/java/com/fidms/common/utils/file/MimeTypeUtils.java
  33. 223 0
      fidms-ui/src/components/FileUpload3D/index.vue
  34. 212 0
      fidms-ui/src/components/FileUploadEdit/index.vue
  35. 228 0
      fidms-ui/src/components/FileUploadH5/index.vue
  36. 8 0
      fidms-ui/src/main.js
  37. 295 114
      fidms-ui/src/views/data/allinfo/index.vue
  38. 223 74
      fidms-ui/src/views/data/flowIn/index.vue
  39. 250 50
      fidms-ui/src/views/data/flowOut/index.vue
  40. 52 21
      fidms-ui/src/views/data/infraredIn/index.vue
  41. 105 19
      fidms-ui/src/views/data/infraredOut/index.vue
  42. 77 10
      fidms-ui/src/views/data/model/index.vue
  43. 55 0
      sql/ry_20230223.sql

+ 1 - 0
fidms

@@ -0,0 +1 @@
+Subproject commit 49af0dadfeca8365122cfb7229d5441d6474b219

+ 2 - 3
fidms-admin/src/main/java/com/fidms/web/controller/FlowFieldInputController.java

@@ -106,9 +106,8 @@ public class FlowFieldInputController extends BaseController
 
 
     @GetMapping(value = "/FlowFieldexist/{id}")
-    public boolean checktsExistence(@PathVariable("id") Long id)
+    public AjaxResult checktsExistence(@PathVariable("id") Long[] id)
     {
-        int count = flowFieldInputService.getflowfieldinputOption(id);
-        return count>0;
+        return success(flowFieldInputService.getflowfieldinputOption(id));
     }
 }

+ 2 - 3
fidms-admin/src/main/java/com/fidms/web/controller/FlowFieldOutputController.java

@@ -105,10 +105,9 @@ public class FlowFieldOutputController extends BaseController
     {return success(flowFieldOutputService.getFlowFieldOutputOption());}
 
     @GetMapping(value = "/FlowFieldoutexist/{id}")
-    public boolean checktsExistence(@PathVariable("id") Long id)
+    public AjaxResult checktsExistence(@PathVariable("id") Long[] id)
     {
-        int count = flowFieldOutputService.getflowfieldoutputOption(id);
-        return count>0;
+        return success(flowFieldOutputService.getflowfieldoutputOption(id));
     }
 
 }

+ 2 - 3
fidms-admin/src/main/java/com/fidms/web/controller/InfraredInputController.java

@@ -106,9 +106,8 @@ public class InfraredInputController extends BaseController
 
 
     @GetMapping(value = "/InfraredInputexist/{id}")
-    public boolean checktsExistence(@PathVariable("id") Long id)
+    public AjaxResult checktsExistence(@PathVariable("id") Long[] id)
     {
-        int count = infraredInputService.getinfraredinputOption(id);
-        return count>0;
+        return success(infraredInputService.getinfraredinputOption(id));
     }
 }

+ 2 - 3
fidms-admin/src/main/java/com/fidms/web/controller/InfraredOutputController.java

@@ -130,10 +130,9 @@ public class InfraredOutputController extends BaseController
     }
 
     @GetMapping(value = "/Infraredoutputexist/{id}")
-    public boolean checktsExistence(@PathVariable("id") Long id)
+    public AjaxResult checktsExistence(@PathVariable("id") Long[] id)
     {
-        int count = infraredOutputService.getinfraredoutputOption(id);
-        return count>0;
+        return success(infraredOutputService.getinfraredoutputOption(id));
     }
 
 

+ 2 - 7
fidms-admin/src/main/java/com/fidms/web/domain/ExportAll.java

@@ -73,9 +73,6 @@ public class ExportAll extends BaseEntity {
     @Excel(name = "探测方位角")
     public BigDecimal DetectAngle;
 
-    /** 红外波段 */
-    @Excel(name = "红外波段")
-    public BigDecimal InfraredBand;
 
     public void getinfraredinData(InfraredInput infraredin)
     {
@@ -87,7 +84,6 @@ public class ExportAll extends BaseEntity {
         SurfaceDescription = infraredin.getSurfaceDescription();
         DetectDistance=infraredin.getDetectDistance();
         DetectAngle=infraredin.getDetectAngle();
-        InfraredBand=infraredin.getInfraredBand();
     }
 
     /**对应流场输入编号*/
@@ -100,11 +96,11 @@ public class ExportAll extends BaseEntity {
 
     /** 网格数 */
     @Excel(name = "网格数")
-    public BigDecimal gridNumber;
+    public Long gridNumber;
 
     /** 迭代步数*/
     @Excel(name = "迭代步数")
-    public BigDecimal iterationSteps;
+    public String iterationSteps;
 
     /** cas文件输出路径 */
     @Excel(name = "cas文件输出")
@@ -232,7 +228,6 @@ public class ExportAll extends BaseEntity {
         flowVelocityX = flowfieldin.getFlowVelocityX();
         flowVelocityY = flowfieldin.getFlowVelocityY();
         flowVelocityZ = flowfieldin.getFlowVelocityZ();
-        infraredBand = flowfieldin.getInfraredBand();
         flowTemperature = flowfieldin.getFlowTemperature();
         flowPressure = flowfieldin.getFlowPressure();
         flowDensity = flowfieldin.getFlowDensity();

+ 235 - 37
fidms-admin/src/main/java/com/fidms/web/domain/ExportAllinfo.java

@@ -38,6 +38,11 @@ public class ExportAllinfo extends BaseEntity
     @Excel(name = "飞机类型")
     private String aircraftType;
 
+    /** 3d模型文件名称路径 */
+    @Excel(name = "可编辑模型文件名称")
+    private String  editablemodelpath;
+
+
 
 
     /** 编号 */
@@ -77,9 +82,6 @@ public class ExportAllinfo extends BaseEntity
     @Excel(name = "流速z")
     public BigDecimal flowVelocityZ;
 
-    /**红外波段*/
-    @Excel(name = "红外波段")
-    public BigDecimal ffiinfraredBand;
 
     /** 来流温度 */
     @Excel(name = "来流温度")
@@ -134,6 +136,29 @@ public class ExportAllinfo extends BaseEntity
     private String fluentDatFilePath;
 
 
+    /** 排气系统外涵温度[T] */
+    @Excel(name = "排气系统外涵温度")
+    private BigDecimal exhaustSystemConnotationTemperature;
+    /** 排气系统内涵温度[ */
+    @Excel(name = "排气系统内涵温度")
+    private BigDecimal exhaustSystemIntrinsicTemperature;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统外涵静压")
+    private BigDecimal exhaustSystemConnotationPressure;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统内涵静压")
+    private BigDecimal exhaustSystemIntrinsicPressure;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统外涵流量")
+    private BigDecimal exhaustSystemConnotationFlow;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统内涵流量")
+    private BigDecimal exhaustSystemIntrinsicFlow;
+    /** Fluent dat文件 */
+    @Excel(name = "备注")
+    private String remark;
+
+
     /** 编号 */
     @Excel(name = "流场输出编号")
     private Long ffoid;
@@ -157,11 +182,11 @@ public class ExportAllinfo extends BaseEntity
     }
     /** 网格数 */
     @Excel(name = "网格数")
-    private BigDecimal gridNumber;
+    private Long gridNumber;
 
     /** 迭代步数*/
-    @Excel(name = "迭代步数")
-    private BigDecimal iterationSteps;
+    @Excel(name = "迭代步数/时间")
+    private String iterationSteps;
 
     /** cas文件输出 */
     //@Excel(name = "cas文件输出")
@@ -211,6 +236,23 @@ public class ExportAllinfo extends BaseEntity
     @Excel(name="表面压力分布图",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
     private String pressureImagePath;
 
+    /**表面压力分布图路径*/
+    @Excel(name="侧向温度分布图",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String lateralTemperatureDistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="侧向H2O分布图",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String lateralH2ODistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="轴向温度分布曲线",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String axialTemperatureDistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="轴向H2O分布曲线",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String axialH2OdistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="轴向速度分布曲线",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String axialVelocityDistributionPath;
+
+
 
     /** 编号 */
     @Excel(name = "红外输入编号")
@@ -247,9 +289,14 @@ public class ExportAllinfo extends BaseEntity
     @Excel(name = "探测方位角")
     private BigDecimal DetectAngle;
 
+    /** 探测方位角 */
+    @Excel(name = "探测竖直角")
+    private BigDecimal DetectVerticalAngle;
+
     /** 红外波段 */
     @Excel(name = "红外波段")
-    private BigDecimal ifiinfraredBand;
+    private String ifiinfraredBand;
+
 
     /** 编号 */
     @Excel(name = "红外输出编号")
@@ -275,11 +322,24 @@ public class ExportAllinfo extends BaseEntity
     //@Excel(name = "红外图像")
     private String infraredImage;
 
+    /** 红外辐射强度 */
+    @Excel(name = "固体红外辐射强度")
+    private BigDecimal solidinfraredradiation;
+    /** 红外辐射强度 */
+    @Excel(name = "气体红外辐射强度")
+    private BigDecimal gasinfraredradiation;
+
+
     /** 红外图像路径 */
     @Excel(name = "红外图像",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
     private String infraredImagePath;
 
 
+    /** 红外图像路径 */
+    @Excel(name = "红外光谱辐射强度分布图",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String infraredspectrumdistribution;
+
+
     public Long getM3id() {
         return m3id;
     }
@@ -397,13 +457,6 @@ public class ExportAllinfo extends BaseEntity
         this.flowVelocityZ = flowVelocityZ;
     }
 
-    public BigDecimal getFfiinfraredBand() {
-        return ffiinfraredBand;
-    }
-
-    public void setFfiinfraredBand(BigDecimal ffiinfraredBand) {
-        this.ffiinfraredBand = ffiinfraredBand;
-    }
 
     public BigDecimal getFlowTemperature() {
         return flowTemperature;
@@ -497,22 +550,6 @@ public class ExportAllinfo extends BaseEntity
         this.ffoid = ffoid;
     }
 
-    public BigDecimal getGridNumber() {
-        return gridNumber;
-    }
-
-    public void setGridNumber(BigDecimal gridNumber) {
-        this.gridNumber = gridNumber;
-    }
-
-    public BigDecimal getIterationSteps() {
-        return iterationSteps;
-    }
-
-    public void setIterationSteps(BigDecimal iterationSteps) {
-        this.iterationSteps = iterationSteps;
-    }
-
     public String getCasOutputFile() {
         return casOutputFile;
     }
@@ -698,13 +735,6 @@ public class ExportAllinfo extends BaseEntity
         SurfaceDescription = surfaceDescription;
     }
 
-    public BigDecimal getIfiinfraredBand() {
-        return ifiinfraredBand;
-    }
-
-    public void setIfiinfraredBand(BigDecimal ifiinfraredBand) {
-        this.ifiinfraredBand = ifiinfraredBand;
-    }
 
     public Long getInfraredInputID() {
         return infraredInputID;
@@ -778,5 +808,173 @@ public class ExportAllinfo extends BaseEntity
         this.fluentDatFile = fluentDatFile;
     }
 
+    public BigDecimal getExhaustSystemConnotationTemperature() {
+        return exhaustSystemConnotationTemperature;
+    }
+
+    public void setExhaustSystemConnotationTemperature(BigDecimal exhaustSystemConnotationTemperature) {
+        this.exhaustSystemConnotationTemperature = exhaustSystemConnotationTemperature;
+    }
+
+    public BigDecimal getExhaustSystemIntrinsicTemperature() {
+        return exhaustSystemIntrinsicTemperature;
+    }
+
+    public void setExhaustSystemIntrinsicTemperature(BigDecimal exhaustSystemIntrinsicTemperature) {
+        this.exhaustSystemIntrinsicTemperature = exhaustSystemIntrinsicTemperature;
+    }
+
+    public BigDecimal getExhaustSystemConnotationPressure() {
+        return exhaustSystemConnotationPressure;
+    }
+
+    public void setExhaustSystemConnotationPressure(BigDecimal exhaustSystemConnotationPressure) {
+        this.exhaustSystemConnotationPressure = exhaustSystemConnotationPressure;
+    }
+
+    public BigDecimal getExhaustSystemIntrinsicPressure() {
+        return exhaustSystemIntrinsicPressure;
+    }
+
+    public void setExhaustSystemIntrinsicPressure(BigDecimal exhaustSystemIntrinsicPressure) {
+        this.exhaustSystemIntrinsicPressure = exhaustSystemIntrinsicPressure;
+    }
+
+    public BigDecimal getExhaustSystemConnotationFlow() {
+        return exhaustSystemConnotationFlow;
+    }
+
+    public void setExhaustSystemConnotationFlow(BigDecimal exhaustSystemConnotationFlow) {
+        this.exhaustSystemConnotationFlow = exhaustSystemConnotationFlow;
+    }
+
+    public BigDecimal getExhaustSystemIntrinsicFlow() {
+        return exhaustSystemIntrinsicFlow;
+    }
 
+    public void setExhaustSystemIntrinsicFlow(BigDecimal exhaustSystemIntrinsicFlow) {
+        this.exhaustSystemIntrinsicFlow = exhaustSystemIntrinsicFlow;
+    }
+
+    public String getEditablemodelpath() {
+        return editablemodelpath;
+    }
+
+    public void setEditablemodelpath(String editablemodelpath) {
+        this.editablemodelpath = editablemodelpath;
+    }
+
+    @Override
+    public String getRemark() {
+        return remark;
+    }
+
+    @Override
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Boolean getStructureGrid() {
+        return isStructureGrid;
+    }
+
+    public void setStructureGrid(Boolean structureGrid) {
+        isStructureGrid = structureGrid;
+    }
+
+    public Long getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(Long gridNumber) {
+        this.gridNumber = gridNumber;
+    }
+
+    public String getIterationSteps() {
+        return iterationSteps;
+    }
+
+    public void setIterationSteps(String iterationSteps) {
+        this.iterationSteps = iterationSteps;
+    }
+
+    public String getLateralTemperatureDistributionPath() {
+        return lateralTemperatureDistributionPath;
+    }
+
+    public void setLateralTemperatureDistributionPath(String lateralTemperatureDistributionPath) {
+        this.lateralTemperatureDistributionPath = lateralTemperatureDistributionPath;
+    }
+
+    public String getLateralH2ODistributionPath() {
+        return lateralH2ODistributionPath;
+    }
+
+    public void setLateralH2ODistributionPath(String lateralH2ODistributionPath) {
+        this.lateralH2ODistributionPath = lateralH2ODistributionPath;
+    }
+
+    public String getAxialTemperatureDistributionPath() {
+        return axialTemperatureDistributionPath;
+    }
+
+    public void setAxialTemperatureDistributionPath(String axialTemperatureDistributionPath) {
+        this.axialTemperatureDistributionPath = axialTemperatureDistributionPath;
+    }
+
+    public String getAxialH2OdistributionPath() {
+        return axialH2OdistributionPath;
+    }
+
+    public void setAxialH2OdistributionPath(String axialH2OdistributionPath) {
+        this.axialH2OdistributionPath = axialH2OdistributionPath;
+    }
+
+    public String getAxialVelocityDistributionPath() {
+        return axialVelocityDistributionPath;
+    }
+
+    public void setAxialVelocityDistributionPath(String axialVelocityDistributionPath) {
+        this.axialVelocityDistributionPath = axialVelocityDistributionPath;
+    }
+
+    public BigDecimal getDetectVerticalAngle() {
+        return DetectVerticalAngle;
+    }
+
+    public void setDetectVerticalAngle(BigDecimal detectVerticalAngle) {
+        DetectVerticalAngle = detectVerticalAngle;
+    }
+
+    public String getIfiinfraredBand() {
+        return ifiinfraredBand;
+    }
+
+    public void setIfiinfraredBand(String ifiinfraredBand) {
+        this.ifiinfraredBand = ifiinfraredBand;
+    }
+
+    public BigDecimal getSolidinfraredradiation() {
+        return solidinfraredradiation;
+    }
+
+    public void setSolidinfraredradiation(BigDecimal solidinfraredradiation) {
+        this.solidinfraredradiation = solidinfraredradiation;
+    }
+
+    public BigDecimal getGasinfraredradiation() {
+        return gasinfraredradiation;
+    }
+
+    public void setGasinfraredradiation(BigDecimal gasinfraredradiation) {
+        this.gasinfraredradiation = gasinfraredradiation;
+    }
+
+    public String getInfraredspectrumdistribution() {
+        return infraredspectrumdistribution;
+    }
+
+    public void setInfraredspectrumdistribution(String infraredspectrumdistribution) {
+        this.infraredspectrumdistribution = infraredspectrumdistribution;
+    }
 }

+ 115 - 25
fidms-admin/src/main/java/com/fidms/web/domain/FlowFieldInput.java

@@ -6,6 +6,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 
 import static java.lang.Math.pow;
 import static java.lang.Math.sqrt;
@@ -58,9 +59,6 @@ public class FlowFieldInput extends BaseEntity
     @Excel(name = "流速z")
     private BigDecimal flowVelocityZ;
 
-    /**红外波段*/
-    @Excel(name = "红外波段")
-    private BigDecimal infraredBand;
 
     /** 来流温度 */
     @Excel(name = "来流温度")
@@ -113,6 +111,28 @@ public class FlowFieldInput extends BaseEntity
     /** Fluent dat文件 */
     @Excel(name = "Fluent dat文件")
     private String fluentDatFilePath;
+    /** 排气系统外涵温度[T] */
+    @Excel(name = "排气系统外涵温度")
+    private BigDecimal exhaustSystemConnotationTemperature;
+    /** 排气系统内涵温度[ */
+    @Excel(name = "排气系统内涵温度")
+    private BigDecimal exhaustSystemIntrinsicTemperature;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统外涵静压")
+    private BigDecimal exhaustSystemConnotationPressure;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统内涵静压")
+    private BigDecimal exhaustSystemIntrinsicPressure;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统外涵流量")
+    private BigDecimal exhaustSystemConnotationFlow;
+    /** Fluent dat文件 */
+    @Excel(name = "排气系统内涵流量")
+    private BigDecimal exhaustSystemIntrinsicFlow;
+    /** Fluent dat文件 */
+    @Excel(name = "备注")
+    private String remark;
+
 
     public void setId(Long id)
     {
@@ -187,12 +207,6 @@ public class FlowFieldInput extends BaseEntity
         return flowVelocityZ;
     }
 
-    public void setInfraredBand(BigDecimal infraredBand){this.infraredBand=infraredBand;}
-
-    public BigDecimal getInfraredBand() {
-        return infraredBand;
-    }
-
     public void setFlowTemperature(BigDecimal flowTemperature){this.flowTemperature=flowTemperature;}
     public BigDecimal getFlowTemperature(){return flowTemperature;}
 
@@ -293,6 +307,65 @@ public class FlowFieldInput extends BaseEntity
         return fluentDatFilePath;
     }
 
+
+    public BigDecimal getExhaustSystemConnotationTemperature() {
+        return exhaustSystemConnotationTemperature;
+    }
+
+    public void setExhaustSystemConnotationTemperature(BigDecimal exhaustSystemConnotationTemperature) {
+        this.exhaustSystemConnotationTemperature = exhaustSystemConnotationTemperature;
+    }
+
+    public BigDecimal getExhaustSystemIntrinsicTemperature() {
+        return exhaustSystemIntrinsicTemperature;
+    }
+
+    public void setExhaustSystemIntrinsicTemperature(BigDecimal exhaustSystemIntrinsicTemperature) {
+        this.exhaustSystemIntrinsicTemperature = exhaustSystemIntrinsicTemperature;
+    }
+
+    public BigDecimal getExhaustSystemConnotationPressure() {
+        return exhaustSystemConnotationPressure;
+    }
+
+    public void setExhaustSystemConnotationPressure(BigDecimal exhaustSystemConnotationPressure) {
+        this.exhaustSystemConnotationPressure = exhaustSystemConnotationPressure;
+    }
+
+    public BigDecimal getExhaustSystemIntrinsicPressure() {
+        return exhaustSystemIntrinsicPressure;
+    }
+
+    public void setExhaustSystemIntrinsicPressure(BigDecimal exhaustSystemIntrinsicPressure) {
+        this.exhaustSystemIntrinsicPressure = exhaustSystemIntrinsicPressure;
+    }
+
+    public BigDecimal getExhaustSystemConnotationFlow() {
+        return exhaustSystemConnotationFlow;
+    }
+
+    public void setExhaustSystemConnotationFlow(BigDecimal exhaustSystemConnotationFlow) {
+        this.exhaustSystemConnotationFlow = exhaustSystemConnotationFlow;
+    }
+
+    public BigDecimal getExhaustSystemIntrinsicFlow() {
+        return exhaustSystemIntrinsicFlow;
+    }
+
+    public void setExhaustSystemIntrinsicFlow(BigDecimal exhaustSystemIntrinsicFlow) {
+        this.exhaustSystemIntrinsicFlow = exhaustSystemIntrinsicFlow;
+    }
+
+    @Override
+    public String getRemark() {
+        return remark;
+    }
+
+    @Override
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
     public void getFlowVelocity()
     {
         double directionx=0,directiony=0,directionz=0,machnum=0,temperature=0;
@@ -321,20 +394,29 @@ public class FlowFieldInput extends BaseEntity
         else
             temperature = 0;
 
-        if(directionx != 0 && directiony!=0 && directionz!=0 && machnum!=0 && temperature!=0)
-        {
-            double flowVelocity  = machnum*(sqrt(temperature*1.4 * 287.06));
-            final double a = pow(directionx, 2) + pow(directiony, 2) + pow(directionz, 2);
+        double flowVelocity  = machnum*(sqrt(temperature*1.4 * 287.06));
+        final double a = pow(directionx, 2) + pow(directiony, 2) + pow(directionz, 2);
+
+        double flowVelocityX = flowVelocity*directionx/(sqrt(a));
+        if (!Double.isNaN(flowVelocityX) && !Double.isInfinite(flowVelocityX)) {
+            BigDecimal flowVelocityXBigDecimal = BigDecimal.valueOf(flowVelocityX).setScale(3, RoundingMode.HALF_UP);
+            setFlowVelocityX(flowVelocityXBigDecimal);
+        }
 
-            double flowVelocityX = flowVelocity*directionx/(sqrt(a));
-            this.setFlowVelocityX(BigDecimal.valueOf(flowVelocityX));
 
-            double flowVelocityY = flowVelocity*directiony/(sqrt(a));
-            this.setFlowVelocityY(BigDecimal.valueOf(flowVelocityY));
+        double flowVelocityY = flowVelocity*directiony/(sqrt(a));
+        if (!Double.isNaN(flowVelocityY) && !Double.isInfinite(flowVelocityY)) {
+            BigDecimal flowVelocityYBigDecimal = BigDecimal.valueOf(flowVelocityY).setScale(3, RoundingMode.HALF_UP);
+            setFlowVelocityY(flowVelocityYBigDecimal);
+        }
 
-            double flowVelocityZ = flowVelocity*directionz/(sqrt(a));
-            this.setFlowVelocityZ(BigDecimal.valueOf(flowVelocityZ));
+        double flowVelocityZ = flowVelocity*directionz/(sqrt(a));
+        if (!Double.isNaN(flowVelocityZ) && !Double.isInfinite(flowVelocityZ)) {
+            BigDecimal flowVelocityZBigDecimal = BigDecimal.valueOf(flowVelocityZ).setScale(3, RoundingMode.HALF_UP);
+            setFlowVelocityZ(flowVelocityZBigDecimal);
         }
+
+
     }
 
     public void setTemperatureAndPressureAndDensityByFlightAltitude()
@@ -361,8 +443,7 @@ public class FlowFieldInput extends BaseEntity
             altitude=0;
         //公式中,单位的换算;
         double R=287,T0=288.15,P0=1.01325*pow(10,5),D0=1.225,g=9.8;
-        if(altitude!=0 /*&& temperature!=0 && density!=0 && pressure!=0*/)
-        {
+
             if(altitude>0 && altitude<=11000 )
             {
                 temperature = T0 - 0.0065*altitude;
@@ -392,10 +473,12 @@ public class FlowFieldInput extends BaseEntity
                 double density20 = density11*pow(Math.E,(-g*(20000-11000/temperature11/R)));
                 density = density20*pow((1+0.001*(altitude-20000)/temperature20),(-g/0.001/R-1));
             }
-            setFlowTemperature(BigDecimal.valueOf(temperature));
-            setFlowPressure(BigDecimal.valueOf(pressure));
+            BigDecimal temperatureBigDecimal = BigDecimal.valueOf(temperature).setScale(3, RoundingMode.HALF_UP);
+            setFlowTemperature(temperatureBigDecimal);
+
+            BigDecimal pressureBigDecimal = BigDecimal.valueOf(pressure).setScale(3, RoundingMode.HALF_UP);
+            setFlowPressure(pressureBigDecimal);
             setFlowDensity(BigDecimal.valueOf(density));
-        }
 
 
     }
@@ -413,7 +496,6 @@ public class FlowFieldInput extends BaseEntity
             .append("flowVelocityX", getFlowVelocityX())
             .append("flowVelocityY", getFlowVelocityY())
             .append("flowVelocityZ", getFlowVelocityZ())
-            .append("infraredBand",getInfraredBand())
             .append("flowTemperature", getFlowTemperature())
             .append("flowPressure",getFlowPressure())
             .append("flowDensity", getFlowDensity())
@@ -427,6 +509,14 @@ public class FlowFieldInput extends BaseEntity
             .append("fluentCasFilePath", getFluentCasFilePath())
             .append("fluentDatFile", getFluentDatFile())
             .append("fluentDatFilePath", getFluentDatFilePath())
+            .append("exhaustSystemConnotationTemperature", getExhaustSystemConnotationTemperature())
+            .append("exhaustSystemIntrinsicTemperature", getExhaustSystemIntrinsicTemperature())
+            .append("exhaustSystemConnotationPressure",getExhaustSystemConnotationPressure())
+            .append("exhaustSystemIntrinsicPressure", getExhaustSystemIntrinsicPressure())
+            .append("exhaustSystemConnotationFlow", getExhaustSystemConnotationFlow())
+            .append("exhaustSystemIntrinsicFlow", getExhaustSystemIntrinsicFlow())
+            .append("remark", getRemark())
+
             .append("createBy", getCreateBy())
             .append("createTime", getCreateTime())
             .append("updateBy", getUpdateBy())

+ 77 - 10
fidms-admin/src/main/java/com/fidms/web/domain/FlowFieldOutput.java

@@ -30,11 +30,11 @@ public class FlowFieldOutput extends BaseEntity
 
     /** 网格数 */
     @Excel(name = "网格数")
-    private BigDecimal gridNumber;
+    private Long gridNumber;
 
     /** 迭代步数*/
-    @Excel(name = "迭代步数")
-    private BigDecimal iterationSteps;
+    @Excel(name = "迭代步数/时间")
+    private String iterationSteps;
 
     /** cas文件输出 */
     @Excel(name = "cas文件输出")
@@ -85,6 +85,23 @@ public class FlowFieldOutput extends BaseEntity
     private String pressureImagePath;
 
 
+    /**表面压力分布图路径*/
+    @Excel(name="侧向温度分布图",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String lateralTemperatureDistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="侧向H2O分布图",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String lateralH2ODistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="轴向温度分布曲线",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String axialTemperatureDistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="轴向H2O分布曲线",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String axialH2OdistributionPath;
+    /**表面压力分布图路径*/
+    @Excel(name="轴向速度分布曲线",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String axialVelocityDistributionPath;
+
+
     public void setId(Long id) 
     {
         this.id = id;
@@ -107,18 +124,23 @@ public class FlowFieldOutput extends BaseEntity
         return isStructureGrid;
     }
 
-    public void setGridNumber(BigDecimal gridNumber)
-    {
+
+    public Long getGridNumber() {
+        return gridNumber;
+    }
+
+    public void setGridNumber(Long gridNumber) {
         this.gridNumber = gridNumber;
     }
 
-    public BigDecimal getGridNumber()
-    {
-        return gridNumber;
+    public String getIterationSteps() {
+        return iterationSteps;
+    }
+
+    public void setIterationSteps(String iterationSteps) {
+        this.iterationSteps = iterationSteps;
     }
 
-    public void setIterationSteps(BigDecimal iterationSteps){this.iterationSteps=iterationSteps;}
-    public BigDecimal getIterationSteps(){return iterationSteps;}
     public void setCasOutputFile(String casOutputFile)
     {
         this.casOutputFile = casOutputFile;
@@ -179,6 +201,46 @@ public class FlowFieldOutput extends BaseEntity
     public void setPressureImagePath(String pressureImgPath){this.pressureImagePath=pressureImgPath;}
     public String getPressureImagePath(){return pressureImagePath;}
 
+    public String getLateralTemperatureDistributionPath() {
+        return lateralTemperatureDistributionPath;
+    }
+
+    public void setLateralTemperatureDistributionPath(String lateralTemperatureDistributionPath) {
+        this.lateralTemperatureDistributionPath = lateralTemperatureDistributionPath;
+    }
+
+    public String getLateralH2ODistributionPath() {
+        return lateralH2ODistributionPath;
+    }
+
+    public void setLateralH2ODistributionPath(String lateralH2ODistributionPath) {
+        this.lateralH2ODistributionPath = lateralH2ODistributionPath;
+    }
+
+    public String getAxialTemperatureDistributionPath() {
+        return axialTemperatureDistributionPath;
+    }
+
+    public void setAxialTemperatureDistributionPath(String axialTemperatureDistributionPath) {
+        this.axialTemperatureDistributionPath = axialTemperatureDistributionPath;
+    }
+
+    public String getAxialH2OdistributionPath() {
+        return axialH2OdistributionPath;
+    }
+
+    public void setAxialH2OdistributionPath(String axialH2OdistributionPath) {
+        this.axialH2OdistributionPath = axialH2OdistributionPath;
+    }
+
+    public String getAxialVelocityDistributionPath() {
+        return axialVelocityDistributionPath;
+    }
+
+    public void setAxialVelocityDistributionPath(String axialVelocityDistributionPath) {
+        this.axialVelocityDistributionPath = axialVelocityDistributionPath;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -199,6 +261,11 @@ public class FlowFieldOutput extends BaseEntity
             .append("velocityImagePath",getVelocityImagePath())
             .append("pressureImage",getPressureImage())
             .append("pressureImagePath",getPressureImagePath())
+                .append("lateralTemperatureDistributionPath",getLateralTemperatureDistributionPath())
+                .append("lateralH2ODistributionPath",getLateralH2ODistributionPath())
+                .append("axialTemperatureDistributionPath",getAxialTemperatureDistributionPath())
+                .append("axialH2OdistributionPath",getAxialH2OdistributionPath())
+                .append("axialVelocityDistributionPath",getAxialVelocityDistributionPath())
             .append("createBy", getCreateBy())
             .append("createTime", getCreateTime())
             .append("updateBy", getUpdateBy())

+ 19 - 5
fidms-admin/src/main/java/com/fidms/web/domain/InfraredInput.java

@@ -52,9 +52,13 @@ public class InfraredInput extends BaseEntity
     @Excel(name = "探测方位角")
     private BigDecimal DetectAngle;
 
+    /** 探测方位角 */
+    @Excel(name = "探测竖直角")
+    private BigDecimal detectVerticalAngle;
+
     /** 红外波段 */
     @Excel(name = "红外波段")
-    private BigDecimal InfraredBand;
+    private String InfraredBand;
 
     public void setId(Long id) 
     {
@@ -128,15 +132,24 @@ public class InfraredInput extends BaseEntity
         return DetectAngle;
     }
 
-    public void setInfraredBand(BigDecimal infraredBand)
-    {
-        this.InfraredBand = infraredBand;
+    public BigDecimal getDetectVerticalAngle() {
+        return detectVerticalAngle;
+    }
+
+    public void setDetectVerticalAngle(BigDecimal detectVerticalAngle) {
+        this.detectVerticalAngle = detectVerticalAngle;
     }
 
-    public BigDecimal getInfraredBand() {
+    public String getInfraredBand() {
         return InfraredBand;
     }
 
+    public void setInfraredBand(String infraredBand) {
+        InfraredBand = infraredBand;
+    }
+
+
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -149,6 +162,7 @@ public class InfraredInput extends BaseEntity
             .append("SurfaceDescription", getSurfaceDescription())
             .append("DetectDistance", getDetectDistance())
             .append("DetectAngle", getDetectAngle())
+            .append("detectVerticalAngle", getDetectVerticalAngle())
             .append("InfraredBand", getInfraredBand())
             .append("createBy", getCreateBy())
             .append("createTime", getCreateTime())

+ 42 - 0
fidms-admin/src/main/java/com/fidms/web/domain/InfraredOutput.java

@@ -36,6 +36,14 @@ public class InfraredOutput extends BaseEntity
     @Excel(name = "红外辐射强度")
     private BigDecimal radiationIntensity;
 
+    /** 红外辐射强度 */
+    @Excel(name = "固体红外辐射强度")
+    private BigDecimal solidinfraredradiation;
+    /** 红外辐射强度 */
+    @Excel(name = "气体红外辐射强度")
+    private BigDecimal gasinfraredradiation;
+
+
     /** 红外图像 */
     //@Excel(name = "红外图像")
     private String infraredImage;
@@ -44,6 +52,11 @@ public class InfraredOutput extends BaseEntity
     @Excel(name = "红外图像",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
     private String infraredImagePath;
 
+
+    /** 红外图像路径 */
+    @Excel(name = "红外光谱辐射强度分布图",width = 25,height = 125,cellType= Excel.ColumnType.IMAGE)
+    private String infraredspectrumdistribution;
+
     public void setId(Long id) 
     {
         this.id = id;
@@ -92,6 +105,32 @@ public class InfraredOutput extends BaseEntity
 
     public String getInfraredImagePath(){return infraredImagePath;}
     public void setInfraredImagePath(String infraredImagePath){this.infraredImagePath = infraredImagePath;}
+
+
+    public BigDecimal getSolidinfraredradiation() {
+        return solidinfraredradiation;
+    }
+
+    public void setSolidinfraredradiation(BigDecimal solidinfraredradiation) {
+        this.solidinfraredradiation = solidinfraredradiation;
+    }
+
+    public BigDecimal getGasinfraredradiation() {
+        return gasinfraredradiation;
+    }
+
+    public void setGasinfraredradiation(BigDecimal gasinfraredradiation) {
+        this.gasinfraredradiation = gasinfraredradiation;
+    }
+
+    public String getInfraredspectrumdistribution() {
+        return infraredspectrumdistribution;
+    }
+
+    public void setInfraredspectrumdistribution(String infraredspectrumdistribution) {
+        this.infraredspectrumdistribution = infraredspectrumdistribution;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -102,6 +141,9 @@ public class InfraredOutput extends BaseEntity
             .append("radiationIntensity", getRadiationIntensity())
             .append("infraredImage",getInfraredImage())
             .append("infraredImagePath",getInfraredImagePath())
+                .append("solidinfraredradiation",getSolidinfraredradiation())
+                .append("gasinfraredradiation",getGasinfraredradiation())
+                .append("infraredspectrumdistribution",getInfraredspectrumdistribution())
             .append("createBy", getCreateBy())
             .append("createTime", getCreateTime())
             .append("updateBy", getUpdateBy())

+ 14 - 0
fidms-admin/src/main/java/com/fidms/web/domain/Model3d.java

@@ -35,6 +35,12 @@ public class Model3d extends BaseEntity
     @Excel(name = "3D模型文件名称")
     private String model3dFilePath;
 
+    /** 3d模型文件名称路径 */
+    @Excel(name = "可编辑模型文件名称")
+    private String  editablemodelpath;
+
+
+
     public void setId(Long id) 
     {
         this.id = id;
@@ -74,6 +80,14 @@ public class Model3d extends BaseEntity
         return model3dFilePath;
     }
 
+    public String getEditablemodelpath() {
+        return editablemodelpath;
+    }
+
+    public void setEditablemodelpath(String editablemodelpath) {
+        this.editablemodelpath = editablemodelpath;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/mapper/FlowFieldInputMapper.java

@@ -66,7 +66,7 @@ public interface FlowFieldInputMapper
      * @param id
      * @return
      */
-    public int getflowfieldinputOption(Long id);
+    public List getflowfieldinputOption(Long[] id);
 
 
 }

+ 2 - 1
fidms-admin/src/main/java/com/fidms/web/mapper/FlowFieldOutputMapper.java

@@ -66,5 +66,6 @@ public interface FlowFieldOutputMapper
      * @param id
      * @return
      */
-    public int  getflowfieldoutputOption(Long id);
+    public List  getflowfieldoutputOption(Long[] id);
+
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/mapper/InfraredInputMapper.java

@@ -66,5 +66,5 @@ public interface InfraredInputMapper
      * @param id
      * @return
      */
-    public int  getinfraredinputOption(Long id);
+    public List  getinfraredinputOption(Long[] id);
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/mapper/InfraredOutputMapper.java

@@ -64,5 +64,5 @@ public interface InfraredOutputMapper
      * @param id
      * @return
      */
-    public int  getinfraredoutputOption(Long id);
+    public List  getinfraredoutputOption(Long[] id);
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/IFlowFieldInputService.java

@@ -61,5 +61,5 @@ public interface IFlowFieldInputService
 
     public List getFlowFieldInputList();
 
-    public int  getflowfieldinputOption(Long id);
+    public List  getflowfieldinputOption(Long[] id);
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/IFlowFieldOutputService.java

@@ -62,5 +62,5 @@ public interface IFlowFieldOutputService
     public List getFlowFieldOutputOption();
 
 
-    public int getflowfieldoutputOption(Long id);
+    public List getflowfieldoutputOption(Long[] id);
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/IInfraredInputService.java

@@ -62,5 +62,5 @@ public interface IInfraredInputService
     public List getInfraredInputOption();
 
 
-    public int  getinfraredinputOption(Long id);
+    public List  getinfraredinputOption(Long[] id);
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/IInfraredOutputService.java

@@ -60,5 +60,5 @@ public interface IInfraredOutputService
     public int deleteInfraredOutputById(Long id);
 
 
-    public int getinfraredoutputOption(Long id);
+    public List getinfraredoutputOption(Long[] id);
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/impl/FlowFieldInputServiceImpl.java

@@ -111,7 +111,7 @@ public class FlowFieldInputServiceImpl implements IFlowFieldInputService
     }
 
     @Override
-    public int  getflowfieldinputOption(Long id) {
+    public List getflowfieldinputOption(Long[] id) {
         return flowFieldInputMapper.getflowfieldinputOption(id);
     }
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/impl/FlowFieldOutputServiceImpl.java

@@ -99,7 +99,7 @@ public class FlowFieldOutputServiceImpl implements IFlowFieldOutputService
     public List getFlowFieldOutputOption(){return flowFieldOutputMapper.getFlowOutputOption();}
 
     @Override
-    public int getflowfieldoutputOption(Long id) {
+    public List getflowfieldoutputOption(Long[] id) {
         return flowFieldOutputMapper.getflowfieldoutputOption(id);
     }
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/impl/InfraredInputServiceImpl.java

@@ -103,7 +103,7 @@ public class InfraredInputServiceImpl implements IInfraredInputService
     }
 
     @Override
-    public int getinfraredinputOption(Long id) {
+    public List getinfraredinputOption(Long[] id) {
         return infraredInputMapper.getinfraredinputOption(id);
     }
 }

+ 1 - 1
fidms-admin/src/main/java/com/fidms/web/service/impl/InfraredOutputServiceImpl.java

@@ -96,7 +96,7 @@ public class InfraredOutputServiceImpl implements IInfraredOutputService
     }
 
     @Override
-    public int  getinfraredoutputOption(Long id) {
+    public List  getinfraredoutputOption(Long[] id) {
         return infraredOutputMapper.getinfraredoutputOption(id);
     }
 }

+ 56 - 6
fidms-admin/src/main/resources/mapper/data/ExportAllinfoMapper.xml

@@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="model3dFile"    column="model_3d_file"    />
         <result property="model3dFilePath"    column="model_3d_file_path"    />
         <result property="aircraftType"    column="aircraft_type"    />
+        <result property="editablemodelpath"    column="editable_model_path"    />
 
         <result property="ffiid"    column="ffiid"    />
         <result property="model3dId"    column="model_3d_id"    />
@@ -20,7 +21,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="flowVelocityX"    column="flow_velocity_x"    />
         <result property="flowVelocityY"    column="flow_velocity_y"    />
         <result property="flowVelocityZ"    column="flow_velocity_z"    />
-        <result property="ffiinfraredBand" column="ffiib" />
         <result property="flowTemperature" column="flow_temperature" />
         <result property="flowPressure"    column="flow_pressure"    />
         <result property="flowDensity"    column="flow_density"    />
@@ -34,7 +34,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="fluentCasFilePath"    column="fluent_cas_file_path"    />
         <result property="fluentDatFile"    column="fluent_dat_file"    />
         <result property="fluentDatFilePath"    column="fluent_dat_file_path"    />
-
+        <result property="exhaustSystemConnotationTemperature"    column="exhaust_system_connotation_temperature"    />
+        <result property="exhaustSystemIntrinsicTemperature"    column="exhaust_system_intrinsic_temperature"    />
+        <result property="exhaustSystemConnotationPressure"    column="exhaust_system_connotation_pressure"    />
+        <result property="exhaustSystemIntrinsicPressure"    column="exhaust_system_intrinsic_pressure"    />
+        <result property="exhaustSystemConnotationFlow"    column="exhaust_system_connotation_flow"    />
+        <result property="exhaustSystemIntrinsicFlow"    column="exhaust_system_intrinsic_flow"    />
+        <result property="remark"    column="remark"    />
 
 
         <result property="ffoid"    column="ffoid"    />
@@ -54,6 +60,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="velocityImagePath" column="velocity_image_path"/>
         <result property="pressureImage" column="pressure_image"/>
         <result property="pressureImagePath" column="pressure_image_path"/>
+        <result property="lateralTemperatureDistributionPath" column="lateral_temperature_distribution_path"/>
+        <result property="lateralH2ODistributionPath" column="lateral_H2O_distribution_path"/>
+        <result property="axialTemperatureDistributionPath" column="axial_temperature_distribution_path"/>
+        <result property="axialH2OdistributionPath" column="axial_H2O_distribution_path"/>
+        <result property="axialVelocityDistributionPath" column="axial_velocity_distribution_path"/>
 
 
         <result property="ifiid"    column="ifiid"    />
@@ -66,6 +77,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="DetectDistance"    column="detect_distance"    />
         <result property="DetectAngle"    column="detect_angle"    />
         <result property="ifiinfraredBand"    column="ifiib"    />
+        <result property="DetectVerticalAngle"    column="detect_vertical_angle"    />
 
 
         <result property="ifoid"    column="ifoid"    />
@@ -75,6 +87,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="radiationIntensity"    column="radiation_intensity"    />
         <result property="infraredImage"    column="infrared_image"    />
         <result property="infraredImagePath"    column="infrared_image_path"    />
+        <result property="solidinfraredradiation"    column="solid_infrared_radiation"    />
+        <result property="gasinfraredradiation"    column="gas_infrared_radiation"    />
+        <result property="infraredspectrumdistribution"    column="infrared_spectrum_distribution"    />
+
     </resultMap>
 
     <sql id="selectExportAllinfoVo">
@@ -83,6 +99,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                m3.aircraft_type,
                m3.model_3d_file,
                m3.model_3d_file_path,
+               m3.editable_model_path,
 
                ffi.id "ffiid",
                ffi.model_3d_id,
@@ -93,7 +110,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                ffi.flow_direction_x,
                ffi.flow_direction_y,
                ffi.flow_direction_z,
-               ffi.infrared_band "ffiib",
                ffi.flow_temperature,
                ffi.flow_pressure,
                ffi.flow_density,
@@ -107,6 +123,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                ffi.fluent_cas_file_path,
                ffi.fluent_dat_file,
                ffi.fluent_dat_file_path,
+               ffi.exhaust_system_connotation_temperature,
+               ffi.exhaust_system_intrinsic_temperature,
+               ffi.exhaust_system_connotation_pressure,
+               ffi.exhaust_system_intrinsic_pressure,
+               ffi.exhaust_system_connotation_flow,
+               ffi.exhaust_system_intrinsic_flow,
+               ffi.remark,
 
                ffo.id "ffoid",
                ffo.flow_field_input_id,
@@ -125,6 +148,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                ffo.velocity_image_path,
                ffo.pressure_image,
                ffo.pressure_image_path,
+               ffo.lateral_temperature_distribution_path,
+               ffo.lateral_H2O_distribution_path,
+               ffo.axial_temperature_distribution_path,
+               ffo.axial_H2O_distribution_path,
+               ffo.axial_velocity_distribution_path,
+
 
                ifi.id "ifiid",
                ifi.flow_field_output_id,
@@ -136,7 +165,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                ifi.detect_distance,
                ifi.detect_angle,
                ifi.infrared_band "ifiib",
-
+               ifi.detect_vertical_angle,
 
                ifo.id "ifoid",
                ifo.infrared_input_id,
@@ -144,7 +173,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                ifo.output_file_path,
                ifo.radiation_intensity,
                ifo.infrared_image,
-               ifo.infrared_image_path
+               ifo.infrared_image_path,
+               ifo.solid_infrared_radiation,
+               ifo.gas_infrared_radiation,
+               ifo.infrared_spectrum_distribution
 
         FROM
             bz_model_3d_t m3
@@ -161,6 +193,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="model3dFile != null  and model3dFile != ''"> and model_3d_file = #{model3dFile}</if>
             <if test="model3dFilePath != null  and model3dFilePath != ''"> and model_3d_file_path = #{model3dFilePath}</if>
             <if test="aircraftType != null  and aircraftType != ''"> and aircraft_type = #{aircraftType}</if>
+            <if test="editablemodelpath != null  and editablemodelpath != ''"> and editable_model_path = #{editablemodelpath}</if>
+
 
             <if test="model3dId != null "> and model_3d_id = #{model3dId}</if>
             <if test="machNumber != null "> and mach_number = #{machNumber}</if>
@@ -170,7 +204,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="flowVelocityX != null "> and flow_velocity_x = #{flowVelocityX}</if>
             <if test="flowVelocityY != null "> and flow_velocity_y = #{flowVelocityY}</if>
             <if test="flowVelocityZ != null "> and flow_velocity_z = #{flowVelocityZ}</if>
-            <if test="ffiinfraredBand != null">and ffi.infrared_band = #{ffiinfraredBand}</if>
             <if test="flowTemperature != null"> and flow_temperature = #{flowTemperaure}</if>
             <if test="flowPressure != null" > and flow_pressure = #{flowPressure}</if>
             <if test="flowDensity != null"> and flow_density = #{flowDensity}</if>
@@ -184,6 +217,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fluentCasFilePath != null  and fluentCasFilePath != ''"> and fluent_cas_file_path = #{fluentCasFilePath}</if>
             <if test="fluentDatFile != null  and fluentDatFile != ''"> and fluent_dat_file = #{fluentDatFile}</if>
             <if test="fluentDatFilePath != null  and fluentDatFilePath != ''"> and fluent_dat_file_path = #{fluentDatFilePath}</if>
+            <if test="exhaustSystemConnotationTemperature != null  and exhaustSystemConnotationTemperature != ''"> and exhaust_system_connotation_temperature = #{exhaustSystemConnotationTemperature}</if>
+            <if test="exhaustSystemIntrinsicTemperature != null  and exhaustSystemIntrinsicTemperature != ''"> and exhaust_system_intrinsic_temperature = #{exhaustSystemIntrinsicTemperature}</if>
+            <if test="exhaustSystemConnotationPressure != null  and exhaustSystemConnotationPressure != ''"> and exhaust_system_connotation_pressure = #{exhaustSystemConnotationPressure}</if>
+            <if test="exhaustSystemIntrinsicPressure != null  and exhaustSystemIntrinsicPressure != ''"> and exhaust_system_intrinsic_pressure = #{exhaustSystemIntrinsicPressure}</if>
+            <if test="exhaustSystemConnotationFlow != null  and exhaustSystemConnotationFlow != ''"> and exhaust_system_connotation_flow = #{exhaustSystemConnotationFlow}</if>
+            <if test="exhaustSystemIntrinsicFlow != null  and exhaustSystemIntrinsicFlow != ''"> and exhaust_system_intrinsic_flow = #{exhaustSystemIntrinsicFlow}</if>
+            <if test="remark != null  and remark != ''"> and remark = #{remark}</if>
 
 
             <if test="flowFieldInputID != null">and flow_field_input_id=#{flowFieldInputID}</if>
@@ -202,6 +242,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="velocityImagePath != null and velocityImagePath !=''"> and velocity_image_path = #{velocityImagePath}</if>
             <if test="pressureImage != null and pressureImage !=''"> and pressure_image = #{pressureImage}</if>
             <if test="pressureImagePath != null and pressureImagePath !=''"> and pressure_image_path = #{pressureImagePath}</if>
+            <if test="lateralTemperatureDistributionPath != null and lateralTemperatureDistributionPath != ''"> and lateral_temperature_distribution_path = #{lateralTemperatureDistributionPath}</if>
+            <if test="lateralH2ODistributionPath != null and lateralH2ODistributionPath !=''"> and lateral_H2O_distribution_path = #{lateralH2ODistributionPath}</if>
+            <if test="axialTemperatureDistributionPath != null and axialTemperatureDistributionPath !=''"> and axial_temperature_distribution_path = #{axialTemperatureDistributionPath}</if>
+            <if test="axialH2OdistributionPath != null and axialH2OdistributionPath !=''"> and axial_H2O_distribution_path = #{axialH2OdistributionPath}</if>
+            <if test="axialVelocityDistributionPath != null and axialVelocityDistributionPath !=''"> and axial_velocity_distribution_path = #{axialVelocityDistributionPath}</if>
+
 
             <if test="flowFieldOutputID != null">and flow_field_output_id=#{flowFieldOutputID},</if>
             <if test="FullLaunchRate != null "> and full_launch_rate = #{FullLaunchRate}</if>
@@ -212,6 +258,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="DetectDistance != null "> and detect_distance = #{DetectDistance}</if>
             <if test="DetectAngle != null "> and detect_angle = #{DetectAngle}</if>
             <if test="ifiinfraredBand != null "> and ifi.infrared_band = #{ifiinfraredBand}</if>
+            <if test="DetectVerticalAngle != null "> and detect_vertical_angle = #{DetectVerticalAngle}</if>
 
 
             <if test="infraredInputID != null">and infrared_input_id=#{infraredInputID},</if>
@@ -220,6 +267,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="radiationIntensity != null "> and radiation_intensity = #{radiationIntensity}</if>
             <if test="infraredImage != null  and infraredImage != ''"> and infrared_image = #{infraredImage}</if>
             <if test="infraredImagePath != null  and infraredImagePath != ''"> and infrared_image_path = #{infraredImagePath}</if>
+            <if test="solidinfraredradiation != null "> and solid_infrared_radiation = #{solidinfraredradiation}</if>
+            <if test="gasinfraredradiation != null "> and gas_infrared_radiation = #{gasinfraredradiation}</if>
+            <if test="infraredspectrumdistribution != null "> and infrared_spectrum_distribution = #{infraredspectrumdistribution}</if>
         </where>
     </select>
     

+ 54 - 11
fidms-admin/src/main/resources/mapper/data/FlowFieldInputMapper.xml

@@ -14,7 +14,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="flowVelocityX"    column="flow_velocity_x"    />
         <result property="flowVelocityY"    column="flow_velocity_y"    />
         <result property="flowVelocityZ"    column="flow_velocity_z"    />
-        <result property="infraredBand" column="infrared_band" />
         <result property="flowTemperature" column="flow_temperature" />
         <result property="flowPressure"    column="flow_pressure"    />
         <result property="flowDensity"    column="flow_density"    />
@@ -28,6 +27,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="fluentCasFilePath"    column="fluent_cas_file_path"    />
         <result property="fluentDatFile"    column="fluent_dat_file"    />
         <result property="fluentDatFilePath"    column="fluent_dat_file_path"    />
+
+        <result property="exhaustSystemConnotationTemperature"    column="exhaust_system_connotation_temperature"    />
+        <result property="exhaustSystemIntrinsicTemperature"    column="exhaust_system_intrinsic_temperature"    />
+        <result property="exhaustSystemConnotationPressure"    column="exhaust_system_connotation_pressure"    />
+        <result property="exhaustSystemIntrinsicPressure"    column="exhaust_system_intrinsic_pressure"    />
+        <result property="exhaustSystemConnotationFlow"    column="exhaust_system_connotation_flow"    />
+        <result property="exhaustSystemIntrinsicFlow"    column="exhaust_system_intrinsic_flow"    />
+        <result property="remark"    column="remark"    />
+
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -46,7 +54,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ffi.flow_direction_x,
             ffi.flow_direction_y,
             ffi.flow_direction_z,
-            ffi.infrared_band,
             ffi.flow_temperature,
             ffi.flow_pressure,
             ffi.flow_density,
@@ -60,6 +67,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ffi.fluent_cas_file_path,
             ffi.fluent_dat_file,
             ffi.fluent_dat_file_path,
+            ffi.exhaust_system_connotation_temperature,
+            ffi.exhaust_system_intrinsic_temperature,
+               ffi.exhaust_system_connotation_pressure,
+               ffi.exhaust_system_intrinsic_pressure,
+               ffi.exhaust_system_connotation_flow,
+               ffi.exhaust_system_intrinsic_flow,
+               ffi.remark,
             ffi.create_by,
             ffi.create_time,
             ffi.update_by,
@@ -80,7 +94,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="flowVelocityX != null "> and flow_velocity_x = #{flowVelocityX}</if>
             <if test="flowVelocityY != null "> and flow_velocity_y = #{flowVelocityY}</if>
             <if test="flowVelocityZ != null "> and flow_velocity_z = #{flowVelocityZ}</if>
-            <if test="infraredBand != null">and infrared_band = #{infraredBand}</if>
             <if test="flowTemperature != null"> and flow_temperature = #{flowTemperaure}</if>
             <if test="flowPressure != null" > and flow_pressure = #{flowPressure}</if>
             <if test="flowDensity != null"> and flow_density = #{flowDensity}</if>
@@ -94,6 +107,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fluentCasFilePath != null  and fluentCasFilePath != ''"> and fluent_cas_file_path = #{fluentCasFilePath}</if>
             <if test="fluentDatFile != null  and fluentDatFile != ''"> and fluent_dat_file = #{fluentDatFile}</if>
             <if test="fluentDatFilePath != null  and fluentDatFilePath != ''"> and fluent_dat_file_path = #{fluentDatFilePath}</if>
+            <if test="exhaustSystemConnotationTemperature != null  and exhaustSystemConnotationTemperature != ''"> and exhaust_system_connotation_temperature = #{exhaustSystemConnotationTemperature}</if>
+            <if test="exhaustSystemIntrinsicTemperature != null  and exhaustSystemIntrinsicTemperature != ''"> and exhaust_system_intrinsic_temperature = #{exhaustSystemIntrinsicTemperature}</if>
+            <if test="exhaustSystemConnotationPressure != null  and exhaustSystemConnotationPressure != ''"> and exhaust_system_connotation_pressure = #{exhaustSystemConnotationPressure}</if>
+            <if test="exhaustSystemIntrinsicPressure != null  and exhaustSystemIntrinsicPressure != ''"> and exhaust_system_intrinsic_pressure = #{exhaustSystemIntrinsicPressure}</if>
+            <if test="exhaustSystemConnotationFlow != null  and exhaustSystemConnotationFlow != ''"> and exhaust_system_connotation_flow = #{exhaustSystemConnotationFlow}</if>
+            <if test="exhaustSystemIntrinsicFlow != null  and exhaustSystemIntrinsicFlow != ''"> and exhaust_system_intrinsic_flow = #{exhaustSystemIntrinsicFlow}</if>
+            <if test="remark != null  and remark != ''"> and remark = #{remark}</if>
+
         </where>
     </select>
     
@@ -113,7 +134,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="flowVelocityX != null">flow_velocity_x,</if>
             <if test="flowVelocityY != null">flow_velocity_y,</if>
             <if test="flowVelocityZ != null">flow_velocity_z,</if>
-            <if test="infraredBand != null">infrared_band,</if>
             <if test="flowTemperature != null">flow_temperature,</if>
             <if test="flowPressure != null">flow_pressure,</if>
             <if test="flowDensity != null">flow_density,</if>
@@ -127,6 +147,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fluentCasFilePath != null and fluentCasFilePath != ''">fluent_cas_file_path,</if>
             <if test="fluentDatFile != null and fluentDatFile != ''">fluent_dat_file,</if>
             <if test="fluentDatFilePath != null and fluentDatFilePath != ''">fluent_dat_file_path,</if>
+            <if test="exhaustSystemConnotationTemperature != null and exhaustSystemConnotationTemperature != ''">exhaust_system_connotation_temperature,</if>
+            <if test="exhaustSystemIntrinsicTemperature != null and exhaustSystemIntrinsicTemperature != ''">exhaust_system_intrinsic_temperature,</if>
+            <if test="exhaustSystemConnotationPressure != null and exhaustSystemConnotationPressure != ''">exhaust_system_connotation_pressure,</if>
+            <if test="exhaustSystemIntrinsicPressure != null and exhaustSystemIntrinsicPressure != ''">exhaust_system_intrinsic_pressure,</if>
+            <if test="exhaustSystemConnotationFlow != null and exhaustSystemConnotationFlow != ''">exhaust_system_connotation_flow,</if>
+            <if test="exhaustSystemIntrinsicFlow != null and exhaustSystemIntrinsicFlow != ''">exhaust_system_intrinsic_flow,</if>
+            <if test="remark != null and remark != ''">remark,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
@@ -141,7 +168,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="flowVelocityX != null">#{flowVelocityX},</if>
             <if test="flowVelocityY != null">#{flowVelocityY},</if>
             <if test="flowVelocityZ != null">#{flowVelocityZ},</if>
-            <if test="infraredBand != null">#{infraredBand},</if>
             <if test="flowTemperature != null">#{flowTemperature},</if>
             <if test="flowPressure != null">#{flowPressure},</if>
             <if test="flowDensity!= null">#{flowDensity},</if>
@@ -155,6 +181,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fluentCasFilePath != null and fluentCasFilePath != ''">#{fluentCasFilePath},</if>
             <if test="fluentDatFile != null and fluentDatFile != ''">#{fluentDatFile},</if>
             <if test="fluentDatFilePath != null and fluentDatFilePath != ''">#{fluentDatFilePath},</if>
+            <if test="exhaustSystemConnotationTemperature != null and exhaustSystemConnotationTemperature != ''">#{exhaustSystemConnotationTemperature},</if>
+            <if test="exhaustSystemIntrinsicTemperature != null and exhaustSystemIntrinsicTemperature != ''">#{exhaustSystemIntrinsicTemperature},</if>
+            <if test="exhaustSystemConnotationPressure != null and exhaustSystemConnotationPressure != ''">#{exhaustSystemConnotationPressure},</if>
+            <if test="exhaustSystemIntrinsicPressure != null and exhaustSystemIntrinsicPressure != ''">#{exhaustSystemIntrinsicPressure},</if>
+            <if test="exhaustSystemConnotationFlow != null and exhaustSystemConnotationFlow != ''">#{exhaustSystemConnotationFlow},</if>
+            <if test="exhaustSystemIntrinsicFlow != null and exhaustSystemIntrinsicFlow != ''">#{exhaustSystemIntrinsicFlow},</if>
+            <if test="remark != null and remark != ''">#{remark},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -173,7 +206,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="flowVelocityX != null">flow_velocity_x = #{flowVelocityX},</if>
             <if test="flowVelocityY != null">flow_velocity_y = #{flowVelocityY},</if>
             <if test="flowVelocityZ != null">flow_velocity_z = #{flowVelocityZ},</if>
-            <if test="infraredBand != null">infrared_band = #{infraredBand},</if>
             <if test="flowTemperature != null">flow_temperature = #{flowTemperature},</if>
             <if test="flowPressure != null">flow_pressure =#{flowPressure},</if>
             <if test="flowDensity != null">flow_density =#{flowDensity},</if>
@@ -187,6 +219,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fluentCasFilePath != null and fluentCasFilePath != ''">fluent_cas_file_path = #{fluentCasFilePath},</if>
             <if test="fluentDatFile != null and fluentDatFile != ''">fluent_dat_file = #{fluentDatFile},</if>
             <if test="fluentDatFilePath != null and fluentDatFilePath != ''">fluent_dat_file_path = #{fluentDatFilePath},</if>
+            <if test="exhaustSystemConnotationTemperature != null and exhaustSystemConnotationTemperature != ''">exhaust_system_connotation_temperature = #{exhaustSystemConnotationTemperature},</if>
+            <if test="exhaustSystemIntrinsicTemperature != null and exhaustSystemIntrinsicTemperature != ''">exhaust_system_intrinsic_temperature= #{exhaustSystemIntrinsicTemperature},</if>
+            <if test="exhaustSystemConnotationPressure != null and exhaustSystemConnotationPressure != ''">exhaust_system_connotation_pressure= #{exhaustSystemConnotationPressure},</if>
+            <if test="exhaustSystemIntrinsicPressure != null and exhaustSystemIntrinsicPressure != ''">exhaust_system_intrinsic_pressure= #{exhaustSystemIntrinsicPressure},</if>
+            <if test="exhaustSystemConnotationFlow != null and exhaustSystemConnotationFlow != ''">exhaust_system_connotation_flow= #{exhaustSystemConnotationFlow},</if>
+            <if test="exhaustSystemIntrinsicFlow != null and exhaustSystemIntrinsicFlow != ''">exhaust_system_intrinsic_flow= #{exhaustSystemIntrinsicFlow},</if>
+            <if test="remark != null and remark != ''">remark= #{remark},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
@@ -210,10 +249,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select id from bz_flow_field_input_t order by id desc
     </select>
 
-    <select id="getflowfieldinputOption" parameterType="Long" resultType="int">
-        select count(*)
-        from
-            bz_flow_field_input_t
-        where bz_flow_field_input_t.model_3d_id = #{id}
+    <select id="getflowfieldinputOption" parameterType="String" resultType="Map">
+        select distinct model_3d_id
+        from bz_flow_field_input_t
+        where bz_flow_field_input_t.model_3d_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        group by model_3d_id
+        having count(0) > 0
     </select>
 </mapper>

+ 48 - 5
fidms-admin/src/main/resources/mapper/data/FlowFieldOutputMapper.xml

@@ -22,6 +22,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="velocityImagePath" column="velocity_image_path"/>
         <result property="pressureImage" column="pressure_image"/>
         <result property="pressureImagePath" column="pressure_image_path"/>
+
+        <result property="lateralTemperatureDistributionPath" column="lateral_temperature_distribution_path"/>
+        <result property="lateralH2ODistributionPath" column="lateral_H2O_distribution_path"/>
+        <result property="axialTemperatureDistributionPath" column="axial_temperature_distribution_path"/>
+        <result property="axialH2OdistributionPath" column="axial_H2O_distribution_path"/>
+        <result property="axialVelocityDistributionPath" column="axial_velocity_distribution_path"/>
+
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -29,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectFlowFieldOutputVo">
-        select id, flow_field_input_id,is_structure_grid, grid_number, iteration_steps,cas_output_file, cas_output_file_path,dat_output_file, dat_output_file_path,other_output_file, other_output_file_path, temperature_image,temperature_image_path,velocity_image,velocity_image_path,pressure_image,pressure_image_path,create_by, create_time, update_by, update_time from bz_flow_field_output_t
+        select id, flow_field_input_id,is_structure_grid, grid_number, iteration_steps,cas_output_file, cas_output_file_path,dat_output_file, dat_output_file_path,other_output_file, other_output_file_path, temperature_image,temperature_image_path,velocity_image,velocity_image_path,pressure_image,pressure_image_path,lateral_temperature_distribution_path,lateral_H2O_distribution_path,axial_temperature_distribution_path,axial_H2O_distribution_path,axial_velocity_distribution_path,create_by, create_time, update_by, update_time from bz_flow_field_output_t
     </sql>
 
     <select id="selectFlowFieldOutputList" parameterType="FlowFieldOutput" resultMap="FlowFieldOutputResult">
@@ -51,6 +58,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="velocityImagePath != null and velocityImagePath !=''"> and velocity_image_path = #{velocityImagePath}</if>
             <if test="pressureImage != null and pressureImage !=''"> and pressure_image = #{pressureImage}</if>
             <if test="pressureImagePath != null and pressureImagePath !=''"> and pressure_image_path = #{pressureImagePath}</if>
+
+
+
+            <if test="lateralTemperatureDistributionPath != null and lateralTemperatureDistributionPath != ''"> and lateral_temperature_distribution_path = #{lateralTemperatureDistributionPath}</if>
+            <if test="lateralH2ODistributionPath != null and lateralH2ODistributionPath !=''"> and lateral_H2O_distribution_path = #{lateralH2ODistributionPath}</if>
+            <if test="axialTemperatureDistributionPath != null and axialTemperatureDistributionPath !=''"> and axial_temperature_distribution_path = #{axialTemperatureDistributionPath}</if>
+            <if test="axialH2OdistributionPath != null and axialH2OdistributionPath !=''"> and axial_H2O_distribution_path = #{axialH2OdistributionPath}</if>
+            <if test="axialVelocityDistributionPath != null and axialVelocityDistributionPath !=''"> and axial_velocity_distribution_path = #{axialVelocityDistributionPath}</if>
+
         </where>
     </select>
     
@@ -76,6 +92,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="otherOutputFilePath != null">other_output_file_path,</if>
             <if test="temperatureImage != null">temperature_image,</if>
             <if test="temperatureImagePath != null">temperature_image_path,</if>
+
+            <if test="lateralTemperatureDistributionPath != null">lateral_temperature_distribution_path,</if>
+            <if test="lateralH2ODistributionPath != null">lateral_H2O_distribution_path,</if>
+            <if test="axialTemperatureDistributionPath != null">axial_temperature_distribution_path,</if>
+            <if test="axialH2OdistributionPath != null">axial_H2O_distribution_path,</if>
+            <if test="axialVelocityDistributionPath != null">axial_velocity_distribution_path,</if>
+
+
             <if test="velocityImage != null">velocity_image,</if>
             <if test="velocityImagePath != null">velocity_image_path,</if>
             <if test="pressureImage!= null">pressure_image,</if>
@@ -102,6 +126,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="velocityImagePath != null">#{velocityImagePath},</if>
             <if test="pressureImage != null">#{pressureImage},</if>
             <if test="pressureImagePath !=null">#{pressureImagePath},</if>
+
+            <if test="lateralTemperatureDistributionPath != null">#{lateralTemperatureDistributionPath},</if>
+            <if test="lateralH2ODistributionPath != null">#{lateralH2ODistributionPath},</if>
+            <if test="axialTemperatureDistributionPath != null">#{axialTemperatureDistributionPath},</if>
+            <if test="axialH2OdistributionPath != null">#{axialH2OdistributionPath},</if>
+            <if test="axialVelocityDistributionPath != null">#{axialVelocityDistributionPath},</if>
+
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -124,6 +155,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="otherOutputFilePath != null">other_output_file_path = #{otherOutputFilePath},</if>
             <if test="temperatureImage!= null">temperature_image = #{temperatureImage},</if>
             <if test="temperatureImagePath !=null">temperature_image_path = #{temperatureImagePath},</if>
+
+
+            <if test="lateralTemperatureDistributionPath !=null">lateral_temperature_distribution_path = #{lateralTemperatureDistributionPath},</if>
+            <if test="lateralH2ODistributionPath !=null">lateral_H2O_distribution_path = #{lateralH2ODistributionPath},</if>
+            <if test="axialTemperatureDistributionPath !=null">axial_temperature_distribution_path = #{axialTemperatureDistributionPath},</if>
+            <if test="axialH2OdistributionPath !=null">axial_H2O_distribution_path = #{axialH2OdistributionPath},</if>
+            <if test="axialVelocityDistributionPath !=null">axial_velocity_distribution_path = #{axialVelocityDistributionPath},</if>
+
             <if test="velocityImage != null">velocity_image =#{velocityImage},</if>
             <if test="velocityImagePath !=null">velocity_image_path =#{velocityImagePath},</if>
             <if test="pressureImage != null">pressure_image = #{pressureImage},</if>
@@ -152,12 +191,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
 
-    <select id="getflowfieldoutputOption" parameterType="Long" resultType="int">
-        select
-            count(*)
+    <select id="getflowfieldoutputOption" parameterType="String" resultType="Map">
+        select distinct flow_field_input_id
         from
             bz_flow_field_output_t
         where
-              bz_flow_field_output_t.flow_field_input_id = #{id}
+              bz_flow_field_output_t.flow_field_input_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        group by flow_field_input_id
+        having count(0) > 0
     </select>
 </mapper>

+ 16 - 5
fidms-admin/src/main/resources/mapper/data/InfraredInputMapper.xml

@@ -15,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="DetectDistance"    column="detect_distance"    />
         <result property="DetectAngle"    column="detect_angle"    />
         <result property="InfraredBand"    column="infrared_band"    />
+        <result property="detectVerticalAngle"    column="detect_vertical_angle"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -22,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectInfraredInputVo">
-        select id, flow_field_output_id,full_launch_rate, damage_launch_rate, damage_area, damage_area_ratio, surface_description, detect_distance, detect_angle,infrared_band, create_by, create_time, update_by, update_time from bz_infrared_input_t
+        select id, flow_field_output_id,full_launch_rate, damage_launch_rate, damage_area, damage_area_ratio, surface_description, detect_distance, detect_angle,detect_vertical_angle,infrared_band, create_by, create_time, update_by, update_time from bz_infrared_input_t
     </sql>
 
     <select id="selectInfraredInputList" parameterType="InfraredInput" resultMap="InfraredInputResult">
@@ -36,6 +37,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="SurfaceDescription != null "> and surface_description = #{SurfaceDescription}</if>
             <if test="DetectDistance != null "> and detect_distance = #{DetectDistance}</if>
             <if test="DetectAngle != null "> and detect_angle = #{DetectAngle}</if>
+
+            <if test="detectVerticalAngle != null "> and detect_vertical_angle = #{detectVerticalAngle}</if>
+
             <if test="InfraredBand != null "> and infrared_band = #{InfraredBand}</if>
         </where>
     </select>
@@ -56,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="SurfaceDescription != null">surface_description,</if>
             <if test="DetectDistance != null">detect_distance,</if>
             <if test="DetectAngle != null">detect_angle,</if>
+            <if test="detectVerticalAngle != null">detect_vertical_angle,</if>
             <if test="InfraredBand != null">infrared_band,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
@@ -71,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="SurfaceDescription != null">#{SurfaceDescription},</if>
             <if test="DetectDistance != null">#{DetectDistance},</if>
             <if test="DetectAngle != null">#{DetectAngle},</if>
+            <if test="detectVerticalAngle != null">#{detectVerticalAngle},</if>
             <if test="InfraredBand != null">#{InfraredBand},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
@@ -90,6 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="SurfaceDescription != null">surface_description = #{SurfaceDescription},</if>
             <if test="DetectDistance != null">detect_distance = #{DetectDistance},</if>
             <if test="DetectAngle != null">detect_angle = #{DetectAngle},</if>
+            <if test="detectVerticalAngle != null">detect_vertical_angle = #{detectVerticalAngle},</if>
             <if test="InfraredBand != null">infrared_band = #{InfraredBand},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
@@ -114,13 +121,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select id from bz_infrared_input_t order by id desc
     </select>
 
-    <select id="getinfraredinputOption" parameterType="Long" resultType="int">
-        select
-            count(*)
+    <select id="getinfraredinputOption" parameterType="String" resultType="Map">
+        select distinct flow_field_output_id
         from
             bz_infrared_input_t
         where
-            bz_infrared_input_t.flow_field_output_id = #{id}
+            bz_infrared_input_t.flow_field_output_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        group by flow_field_output_id
+        having count(0) > 0
     </select>
 
 </mapper>

+ 37 - 5
fidms-admin/src/main/resources/mapper/data/InfraredOutputMapper.xml

@@ -12,6 +12,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="radiationIntensity"    column="radiation_intensity"    />
         <result property="infraredImage"    column="infrared_image"    />
         <result property="infraredImagePath"    column="infrared_image_path"    />
+
+        <result property="solidinfraredradiation"    column="solid_infrared_radiation"    />
+        <result property="gasinfraredradiation"    column="gas_infrared_radiation"    />
+        <result property="infraredspectrumdistribution"    column="infrared_spectrum_distribution"    />
+
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -19,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectInfraredOutputVo">
-        select id, infrared_input_id,output_file, output_file_path, radiation_intensity, infrared_image,infrared_image_path,create_by, create_time, update_by, update_time from bz_infrared_output_t
+        select id, infrared_input_id,output_file, output_file_path, radiation_intensity, solid_infrared_radiation,gas_infrared_radiation,infrared_spectrum_distribution,infrared_image,infrared_image_path,create_by, create_time, update_by, update_time from bz_infrared_output_t
     </sql>
 
     <select id="selectInfraredOutputList" parameterType="InfraredOutput" resultMap="InfraredOutputResult">
@@ -29,6 +34,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="outputFile != null  and outputFile != ''"> and output_file = #{outputFile}</if>
             <if test="outputFilePath != null  and outputFilePath != ''"> and output_file_path = #{outputFilePath}</if>
             <if test="radiationIntensity != null "> and radiation_intensity = #{radiationIntensity}</if>
+
+            <if test="solidinfraredradiation != null "> and solid_infrared_radiation = #{solidinfraredradiation}</if>
+            <if test="gasinfraredradiation != null "> and gas_infrared_radiation = #{gasinfraredradiation}</if>
+            <if test="infraredspectrumdistribution != null "> and infrared_spectrum_distribution = #{infraredspectrumdistribution}</if>
+
+
             <if test="infraredImage != null  and infraredImage != ''"> and infrared_image = #{infraredImage}</if>
             <if test="infraredImagePath != null  and infraredImagePath != ''"> and infrared_image_path = #{infraredImagePath}</if>
         </where>
@@ -45,6 +56,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="outputFile != null">output_file,</if>
             <if test="outputFilePath != null">output_file_path,</if>
             <if test="radiationIntensity != null">radiation_intensity,</if>
+
+            <if test="solidinfraredradiation != null">solid_infrared_radiation,</if>
+            <if test="gasinfraredradiation != null">gas_infrared_radiation,</if>
+            <if test="infraredspectrumdistribution != null">infrared_spectrum_distribution,</if>
+
             <if test="infraredImage != null">infrared_image,</if>
             <if test="infraredImagePath != null">infrared_image_path,</if>
             <if test="createBy != null">create_by,</if>
@@ -57,6 +73,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="outputFile != null">#{outputFile},</if>
             <if test="outputFilePath != null">#{outputFilePath},</if>
             <if test="radiationIntensity != null">#{radiationIntensity},</if>
+
+            <if test="solidinfraredradiation != null">#{solidinfraredradiation},</if>
+            <if test="gasinfraredradiation != null">#{gasinfraredradiation},</if>
+            <if test="infraredspectrumdistribution != null">#{infraredspectrumdistribution},</if>
+
             <if test="infraredImage != null">#{infraredImage},</if>
             <if test="infraredImagePath != null">#{infraredImagePath},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -73,6 +94,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="outputFile != null">output_file = #{outputFile},</if>
             <if test="outputFilePath != null">output_file_path = #{outputFilePath},</if>
             <if test="radiationIntensity != null">radiation_intensity = #{radiationIntensity},</if>
+
+            <if test="solidinfraredradiation != null "> and solid_infrared_radiation = #{solidinfraredradiation}</if>
+            <if test="gasinfraredradiation != null "> and gas_infrared_radiation = #{gasinfraredradiation}</if>
+            <if test="infraredspectrumdistribution != null "> and infrared_spectrum_distribution = #{infraredspectrumdistribution}</if>
+
             <if test="infraredImage != null">infrared_image = #{infraredImage},</if>
             <if test="infraredImagePath != null">infrared_image_path = #{infraredImagePath},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
@@ -95,12 +121,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
 
-    <select id="getinfraredoutputOption" parameterType="Long"  resultType="int">
-        select
-            count(*)
+    <select id="getinfraredoutputOption" parameterType="String" resultType="Map">
+        select distinct infrared_input_id
         from
             bz_infrared_output_t
         where
-            bz_infrared_output_t.infrared_input_id = #{id}
+            bz_infrared_output_t.infrared_input_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        group by infrared_input_id
+        having count(0) > 0
     </select>
+
+
 </mapper>

+ 6 - 1
fidms-admin/src/main/resources/mapper/data/Model3dMapper.xml

@@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="aircraftType" column="aircraft_type"/>
         <result property="model3dFile"    column="model_3d_file"    />
         <result property="model3dFilePath"    column="model_3d_file_path"    />
+        <result property="editablemodelpath"    column="editable_model_path"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -17,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectModel3dVo">
-        select id, name, aircraft_type,model_3d_file, model_3d_file_path, create_by, create_time, update_by, update_time from bz_model_3d_t
+        select id, name, aircraft_type,model_3d_file, model_3d_file_path, editable_model_path,create_by, create_time, update_by, update_time from bz_model_3d_t
     </sql>
 
     <select id="selectModel3dList" parameterType="Model3d" resultMap="Model3dResult">
@@ -27,6 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="aircraftType!= null and aircraftType!=''">and aircraft_type = #{aircraftType}</if>
             <if test="model3dFile != null  and model3dFile != ''"> and model_3d_file = #{model3dFile}</if>
             <if test="model3dFilePath != null  and model3dFilePath != ''"> and model_3d_file_path = #{model3dFilePath}</if>
+            <if test="editablemodelpath != null  and editablemodelpath != ''"> and editable_model_path = #{editablemodelpath}</if>
         </where>
     </select>
     
@@ -42,6 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="aircraftType != null and aircraftType!=''">aircraft_type,</if>
             <if test="model3dFile != null and model3dFile != ''">model_3d_file,</if>
             <if test="model3dFilePath != null and model3dFilePath != ''">model_3d_file_path,</if>
+            <if test="editablemodelpath != null and editablemodelpath != ''">editable_model_path,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
@@ -52,6 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="aircraftType!=null and aircraftType!=''">#{aircraftType},</if>
             <if test="model3dFile != null and model3dFile != ''">#{model3dFile},</if>
             <if test="model3dFilePath != null and model3dFilePath != ''">#{model3dFilePath},</if>
+            <if test="editablemodelpath != null and editablemodelpath != ''">#{editablemodelpath},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -66,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="aircraftType!=null and aircraftType!=''">aircraft_type=#{aircraftType},</if>
             <if test="model3dFile != null and model3dFile != ''">model_3d_file = #{model3dFile},</if>
             <if test="model3dFilePath != null and model3dFilePath != ''">model_3d_file_path = #{model3dFilePath},</if>
+            <if test="editablemodelpath != null and editablemodelpath != ''">editable_model_path = #{editablemodelpath},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>

+ 9 - 1
fidms-common/src/main/java/com/fidms/common/utils/file/FileUploadUtils.java

@@ -122,8 +122,16 @@ public class FileUploadUtils
      */
     public static final String extractFilename(MultipartFile file)
     {
+        String originalFilename = file.getOriginalFilename();
+        // 从第一个点进行分割
+        int firstDotIndex = originalFilename.indexOf(".");
+        String prefix = (firstDotIndex != -1) ? originalFilename.substring(0, firstDotIndex) : originalFilename;
+        String suffix = (firstDotIndex != -1) ? originalFilename.substring(firstDotIndex + 1) : "";
+
         return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
-                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file));
+                prefix, Seq.getId(Seq.uploadSeqType), suffix);
+//        return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
+//                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file));
     }
 
     public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException

+ 4 - 2
fidms-common/src/main/java/com/fidms/common/utils/file/MimeTypeUtils.java

@@ -38,9 +38,11 @@ public class MimeTypeUtils
             // pdf
             "pdf",
             // 3dmodel
-            "x_t", "IGS",
+            "x_t", "igs",
             // fluent
-            "mesh", "cas", "dat"
+            "mesh", "cas", "dat",
+            "h5","cas.h5","dat.h5",
+
             };
 
     public static String getExtension(String prefix)

+ 223 - 0
fidms-ui/src/components/FileUpload3D/index.vue

@@ -0,0 +1,223 @@
+<template>
+    <div class="upload-file">
+      <el-upload
+        multiple
+        :action="uploadFileUrl"
+        :before-upload="handleBeforeUpload"
+        :file-list="fileList"
+        :limit="limit"
+        :on-error="handleUploadError"
+        :on-exceed="handleExceed"
+        :on-success="handleUploadSuccess"
+        :show-file-list="false"
+        :headers="headers"
+        class="upload-file-uploader"
+        ref="fileUpload"
+      >
+        <!-- 上传按钮 -->
+        <el-button size="mini" type="primary">选取文件</el-button>
+        <!-- 上传提示 -->
+        <div class="el-upload__tip" slot="tip" v-if="showTip">
+          请上传
+          <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
+          <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+          的文件
+        </div>
+      </el-upload>
+  
+      <!-- 文件列表 -->
+      <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
+        <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
+          <el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
+            <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
+          </el-link>
+          <div class="ele-upload-list__item-content-action">
+            <el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
+          </div>
+        </li>
+      </transition-group>
+    </div>
+  </template>
+  
+  <script>
+  import { getToken } from "@/utils/auth";
+  
+  export default {
+    name: "FileUpload",
+    props: {
+      // 值
+      value: [String, Object, Array],
+      // 数量限制
+      limit: {
+        type: Number,
+        default: 5,
+      },
+      // 大小限制(MB)
+      fileSize: {
+        type: Number,
+        default: 5,
+      },
+      // 文件类型, 例如['png', 'jpg', 'jpeg']
+      fileType: {
+        type: Array,
+        default: () => ["doc", "xls", "ppt", "txt", "pdf"],
+      },
+      // 是否显示提示
+      isShowTip: {
+        type: Boolean,
+        default: true
+      }
+    },
+    data() {
+      return {
+        number: 0,
+        uploadList: [],
+        baseUrl: process.env.VUE_APP_BASE_API,
+        uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传文件服务器地址
+        headers: {
+          Authorization: "Bearer " + getToken(),
+        },
+        fileList: [],
+      };
+    },
+    watch: {
+      value: {
+        handler(val) {
+          if (val) {
+            let temp = 1;
+            // 首先将值转为数组
+            const list = Array.isArray(val) ? val : this.value.split(',');
+            // 然后将数组转为对象数组
+            this.fileList = list.map(item => {
+              if (typeof item === "string") {
+                item = { name: item, url: item };
+              }
+              item.uid = item.uid || new Date().getTime() + temp++;
+              return item;
+            });
+          } else {
+            this.fileList = [];
+            return [];
+          }
+        },
+        deep: true,
+        immediate: true
+      }
+    },
+    computed: {
+      // 是否显示提示
+      showTip() {
+        return this.isShowTip && (this.fileType || this.fileSize);
+      },
+    },
+    methods: {
+      // 上传前校检格式和大小
+      handleBeforeUpload(file) {
+        // 校检文件类型
+        if (this.fileType) {
+            const fileName = file.name.split('.');
+            const fileExt = fileName[fileName.length - 1].toLowerCase(); // 将文件扩展名转换为小写
+            const fileTypeLower = this.fileType.map(type => type.toLowerCase()); // 将允许的文件类型转换为小写
+            const isTypeOk = fileTypeLower.includes(fileExt); // 使用 includes() 方法检查文件类型是否在允许的文件类型中
+            if (!isTypeOk) {
+                this.$modal.msgError(`文件格式不正确,请上传${this.fileType.join("/")}格式文件!`);
+                return false;
+            }
+            }
+        // 校检文件大小
+        if (this.fileSize) {
+          const isLt = file.size / 1024 / 1024 < this.fileSize;
+          if (!isLt) {
+            this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
+            return false;
+          }
+        }
+        this.$modal.loading("正在上传文件,请稍候...");
+        this.number++;
+        return true;
+      },
+      // 文件个数超出
+      handleExceed() {
+        this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
+      },
+      // 上传失败
+      handleUploadError(err) {
+        this.$modal.msgError("上传文件失败,请重试");
+        this.$modal.closeLoading()
+      },
+      // 上传成功回调
+      handleUploadSuccess(res, file) {
+        if (res.code === 200) {
+          this.uploadList.push({ name: res.fileName, url: res.fileName });
+          this.uploadedSuccessfully();
+        } else {
+          this.number--;
+          this.$modal.closeLoading();
+          this.$modal.msgError(res.msg);
+          this.$refs.fileUpload.handleRemove(file);
+          this.uploadedSuccessfully();
+        }
+      },
+      // 删除文件
+      handleDelete(index) {
+        this.fileList.splice(index, 1);
+        this.$emit("input", this.listToString(this.fileList));
+      },
+      // 上传结束处理
+      uploadedSuccessfully() {
+        if (this.number > 0 && this.uploadList.length === this.number) {
+          this.fileList = this.fileList.concat(this.uploadList);
+          this.uploadList = [];
+          this.number = 0;
+          this.$emit("input", this.listToString(this.fileList));
+          this.$modal.closeLoading();
+        }
+      },
+      // 获取文件名称
+      getFileName(name) {
+        if (name.lastIndexOf("/") > -1) {
+          const newName = name.slice(name.lastIndexOf("/") + 1)
+          const names = newName.split(".")
+          if ((names.size = 2) && (names[0].length > 19)) {
+            return newName.substring(0, names[0].length - 19) + '.' + names[1]
+          } else {
+            return newName
+          }
+        } else {
+          return "";
+        }
+      },
+      // 对象转成指定字符串分隔
+      listToString(list, separator) {
+        let strs = "";
+        separator = separator || ",";
+        for (let i in list) {
+          strs += list[i].url + separator;
+        }
+        return strs != '' ? strs.substring(0, strs.length - 1) : '';
+      }
+    }
+  };
+  </script>
+  
+  <style scoped lang="scss">
+  .upload-file-uploader {
+    margin-bottom: 5px;
+  }
+  .upload-file-list .el-upload-list__item {
+    border: 1px solid #e4e7ed;
+    line-height: 2;
+    margin-bottom: 10px;
+    position: relative;
+  }
+  .upload-file-list .ele-upload-list__item-content {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    color: inherit;
+  }
+  .ele-upload-list__item-content-action .el-link {
+    margin-right: 10px;
+  }
+  </style>
+  

+ 212 - 0
fidms-ui/src/components/FileUploadEdit/index.vue

@@ -0,0 +1,212 @@
+<template>
+    <div class="upload-file">
+      <el-upload
+        multiple
+        :action="uploadFileUrl"
+        :before-upload="handleBeforeUpload"
+        :file-list="fileList"
+        :limit="limit"
+        :on-error="handleUploadError"
+        :on-exceed="handleExceed"
+        :on-success="handleUploadSuccess"
+        :show-file-list="false"
+        :headers="headers"
+        class="upload-file-uploader"
+        ref="fileUpload"
+      >
+        <!-- 上传按钮 -->
+        <el-button size="mini" type="primary">选取文件</el-button>
+        <!-- 上传提示 -->
+        <div class="el-upload__tip" slot="tip" v-if="showTip">
+          请上传
+          <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
+          <!-- <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template> -->
+          的文件
+        </div>
+      </el-upload>
+  
+      <!-- 文件列表 -->
+      <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
+        <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
+          <el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
+            <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
+          </el-link>
+          <div class="ele-upload-list__item-content-action">
+            <el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
+          </div>
+        </li>
+      </transition-group>
+    </div>
+  </template>
+  
+  <script>
+  import { getToken } from "@/utils/auth";
+  
+  export default {
+    name: "FileUpload",
+    props: {
+      // 值
+      value: [String, Object, Array],
+      // 数量限制
+      limit: {
+        type: Number,
+        default: 5,
+      },
+      // 大小限制(MB)
+      fileSize: {
+        type: Number,
+        default: 5,
+      },
+      // 文件类型, 例如['png', 'jpg', 'jpeg']
+      fileType: {
+        type: Array,
+        default: () => ["doc", "xls", "ppt", "txt", "pdf"],
+      },
+      // 是否显示提示
+      isShowTip: {
+        type: Boolean,
+        default: true
+      }
+    },
+    data() {
+      return {
+        number: 0,
+        uploadList: [],
+        baseUrl: process.env.VUE_APP_BASE_API,
+        uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传文件服务器地址
+        headers: {
+          Authorization: "Bearer " + getToken(),
+        },
+        fileList: [],
+      };
+    },
+    watch: {
+      value: {
+        handler(val) {
+          if (val) {
+            let temp = 1;
+            // 首先将值转为数组
+            const list = Array.isArray(val) ? val : this.value.split(',');
+            // 然后将数组转为对象数组
+            this.fileList = list.map(item => {
+              if (typeof item === "string") {
+                item = { name: item, url: item };
+              }
+              item.uid = item.uid || new Date().getTime() + temp++;
+              return item;
+            });
+          } else {
+            this.fileList = [];
+            return [];
+          }
+        },
+        deep: true,
+        immediate: true
+      }
+    },
+    computed: {
+      // 是否显示提示
+      showTip() {
+        return this.isShowTip && (this.fileType || this.fileSize);
+      },
+    },
+    methods: {
+      // 上传前校检格式和大小
+      handleBeforeUpload(file) {
+        // 校检文件大小
+        if (this.fileSize) {
+          const isLt = file.size / 1024 / 1024 < this.fileSize;
+          if (!isLt) {
+            this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
+            return false;
+          }
+        }
+        this.$modal.loading("正在上传文件,请稍候...");
+        this.number++;
+        return true;
+      },
+      // 文件个数超出
+      handleExceed() {
+        this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
+      },
+      // 上传失败
+      handleUploadError(err) {
+        this.$modal.msgError("上传文件失败,请重试");
+        this.$modal.closeLoading()
+      },
+      // 上传成功回调
+      handleUploadSuccess(res, file) {
+        if (res.code === 200) {
+          this.uploadList.push({ name: res.fileName, url: res.fileName });
+          this.uploadedSuccessfully();
+        } else {
+          this.number--;
+          this.$modal.closeLoading();
+          this.$modal.msgError(res.msg);
+          this.$refs.fileUpload.handleRemove(file);
+          this.uploadedSuccessfully();
+        }
+      },
+      // 删除文件
+      handleDelete(index) {
+        this.fileList.splice(index, 1);
+        this.$emit("input", this.listToString(this.fileList));
+      },
+      // 上传结束处理
+      uploadedSuccessfully() {
+        if (this.number > 0 && this.uploadList.length === this.number) {
+          this.fileList = this.fileList.concat(this.uploadList);
+          this.uploadList = [];
+          this.number = 0;
+          this.$emit("input", this.listToString(this.fileList));
+          this.$modal.closeLoading();
+        }
+      },
+      // 获取文件名称
+      getFileName(name) {
+        if (name.lastIndexOf("/") > -1) {
+          const newName = name.slice(name.lastIndexOf("/") + 1)
+          const names = newName.split(".")
+          if ((names.size = 2) && (names[0].length > 19)) {
+            return newName.substring(0, names[0].length - 19) + '.' + names[1]
+          } else {
+            return newName
+          }
+        } else {
+          return "";
+        }
+      },
+      // 对象转成指定字符串分隔
+      listToString(list, separator) {
+        let strs = "";
+        separator = separator || ",";
+        for (let i in list) {
+          strs += list[i].url + separator;
+        }
+        return strs != '' ? strs.substring(0, strs.length - 1) : '';
+      }
+    }
+  };
+  </script>
+  
+  <style scoped lang="scss">
+  .upload-file-uploader {
+    margin-bottom: 5px;
+  }
+  .upload-file-list .el-upload-list__item {
+    border: 1px solid #e4e7ed;
+    line-height: 2;
+    margin-bottom: 10px;
+    position: relative;
+  }
+  .upload-file-list .ele-upload-list__item-content {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    color: inherit;
+  }
+  .ele-upload-list__item-content-action .el-link {
+    margin-right: 10px;
+  }
+  </style>
+  

+ 228 - 0
fidms-ui/src/components/FileUploadH5/index.vue

@@ -0,0 +1,228 @@
+<template>
+    <div class="upload-file">
+      <el-upload
+        multiple
+        :action="uploadFileUrl"
+        :before-upload="handleBeforeUpload"
+        :file-list="fileList"
+        :limit="limit"
+        :on-error="handleUploadError"
+        :on-exceed="handleExceed"
+        :on-success="handleUploadSuccess"
+        :show-file-list="false"
+        :headers="headers"
+        class="upload-file-uploader"
+        ref="fileUpload"
+      >
+        <!-- 上传按钮 -->
+        <el-button size="mini" type="primary">选取文件</el-button>
+        <!-- 上传提示 -->
+        <div class="el-upload__tip" slot="tip" v-if="showTip">
+          请上传
+          <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
+          <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+          的文件
+        </div>
+      </el-upload>
+  
+      <!-- 文件列表 -->
+      <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
+        <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
+          <el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
+            <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
+          </el-link>
+          <div class="ele-upload-list__item-content-action">
+            <el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
+          </div>
+        </li>
+      </transition-group>
+    </div>
+  </template>
+  
+  <script>
+  import { getToken } from "@/utils/auth";
+  
+  export default {
+    name: "FileUpload",
+    props: {
+      // 值
+      value: [String, Object, Array],
+      // 数量限制
+      limit: {
+        type: Number,
+        default: 5,
+      },
+      // 大小限制(MB)
+      fileSize: {
+        type: Number,
+        default: 5,
+      },
+      // 文件类型, 例如['png', 'jpg', 'jpeg']
+      fileType: {
+        type: Array,
+        default: () => ["doc", "xls", "ppt", "txt", "pdf"],
+      },
+      // 是否显示提示
+      isShowTip: {
+        type: Boolean,
+        default: true
+      }
+    },
+    data() {
+      return {
+        number: 0,
+        uploadList: [],
+        baseUrl: process.env.VUE_APP_BASE_API,
+        uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传文件服务器地址
+        headers: {
+          Authorization: "Bearer " + getToken(),
+        },
+        fileList: [],
+      };
+    },
+    watch: {
+      value: {
+        handler(val) {
+          if (val) {
+            let temp = 1;
+            // 首先将值转为数组
+            const list = Array.isArray(val) ? val : this.value.split(',');
+            // 然后将数组转为对象数组
+            this.fileList = list.map(item => {
+              if (typeof item === "string") {
+                item = { name: item, url: item };
+              }
+              item.uid = item.uid || new Date().getTime() + temp++;
+              return item;
+            });
+          } else {
+            this.fileList = [];
+            return [];
+          }
+        },
+        deep: true,
+        immediate: true
+      }
+    },
+    computed: {
+      // 是否显示提示
+      showTip() {
+        return this.isShowTip && (this.fileType || this.fileSize);
+      },
+    },
+    methods: {
+      // 上传前校检格式和大小
+      handleBeforeUpload(file) {
+        // 校检文件类型
+        if (this.fileType) {
+        const firstDotIndex = file.name.indexOf('.'); // 获取第一个点的索引
+        const fileName = file.name.substring(0, firstDotIndex); // 获取文件名(第一个点之前的内容)
+        const fileExt = file.name.substring(firstDotIndex + 1); // 获取文件后缀(第一个点及其后的内容)
+
+        const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
+          if (!isTypeOk) {
+            this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
+            return false;
+          }
+        }
+        // 校检文件大小
+        if (this.fileSize) {
+          const isLt = file.size / 1024 / 1024 < this.fileSize;
+          if (!isLt) {
+            this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
+            return false;
+          }
+        }
+        this.$modal.loading("正在上传文件,请稍候...");
+        this.number++;
+        return true;
+      },
+      // 文件个数超出
+      handleExceed() {
+        this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
+      },
+      // 上传失败
+      handleUploadError(err) {
+        this.$modal.msgError("上传文件失败,请重试");
+        this.$modal.closeLoading()
+      },
+      // 上传成功回调
+      handleUploadSuccess(res, file) {
+        if (res.code === 200) {
+          this.uploadList.push({ name: res.fileName, url: res.fileName });
+          this.uploadedSuccessfully();
+        } else {
+          this.number--;
+          this.$modal.closeLoading();
+          this.$modal.msgError(res.msg);
+          this.$refs.fileUpload.handleRemove(file);
+          this.uploadedSuccessfully();
+        }
+      },
+      // 删除文件
+      handleDelete(index) {
+        this.fileList.splice(index, 1);
+        this.$emit("input", this.listToString(this.fileList));
+      },
+      // 上传结束处理
+      uploadedSuccessfully() {
+        if (this.number > 0 && this.uploadList.length === this.number) {
+          this.fileList = this.fileList.concat(this.uploadList);
+          this.uploadList = [];
+          this.number = 0;
+          this.$emit("input", this.listToString(this.fileList));
+          this.$modal.closeLoading();
+        }
+      },
+      // 获取文件名称
+getFileName(name) {
+  if (name.lastIndexOf("/") > -1) {
+    const newName = name.slice(name.lastIndexOf("/") + 1);
+    const names = newName.split(".");
+    if (names.length >= 2 && names[0].length > 19) {
+      let fileName = names[0].substring(0, names[0].length - 19);
+      for (let i = 1; i < names.length; i++) {
+        fileName += "." + names[i];
+      }
+      return fileName;
+    } else {
+      return newName;
+    }
+  } else {
+    return "";
+  }
+},
+      // 对象转成指定字符串分隔
+      listToString(list, separator) {
+        let strs = "";
+        separator = separator || ",";
+        for (let i in list) {
+          strs += list[i].url + separator;
+        }
+        return strs != '' ? strs.substring(0, strs.length - 1) : '';
+      }
+    }
+  };
+  </script>
+  
+  <style scoped lang="scss">
+  .upload-file-uploader {
+    margin-bottom: 5px;
+  }
+  .upload-file-list .el-upload-list__item {
+    border: 1px solid #e4e7ed;
+    line-height: 2;
+    margin-bottom: 10px;
+    position: relative;
+  }
+  .upload-file-list .ele-upload-list__item-content {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    color: inherit;
+  }
+  .ele-upload-list__item-content-action .el-link {
+    margin-right: 10px;
+  }
+  </style>
+  

+ 8 - 0
fidms-ui/src/main.js

@@ -27,6 +27,11 @@ import RightToolbar from "@/components/RightToolbar"
 import Editor from "@/components/Editor"
 // 文件上传组件
 import FileUpload from "@/components/FileUpload"
+// 文件上传组件
+import FileUpload3D from "@/components/FileUpload3D"
+// 文件上传组件
+import FileUploadEdit from "@/components/FileUploadEdit"
+import FileUploadH5 from "@/components/FileUploadH5"
 // 图片上传组件
 import ImageUpload from "@/components/ImageUpload"
 // 图片预览组件
@@ -55,6 +60,9 @@ Vue.component('Pagination', Pagination)
 Vue.component('RightToolbar', RightToolbar)
 Vue.component('Editor', Editor)
 Vue.component('FileUpload', FileUpload)
+Vue.component('file-upload3D', FileUpload3D)
+Vue.component('file-uploadedit', FileUploadEdit)
+Vue.component('file-uploadh5', FileUploadH5)
 Vue.component('ImageUpload', ImageUpload)
 Vue.component('ImagePreview', ImagePreview)
 

+ 295 - 114
fidms-ui/src/views/data/allinfo/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="130px">
 
       <el-form-item label="飞机类型" prop="aircraftType">
         <el-input
@@ -19,76 +19,20 @@
         />
       </el-form-item>
 
-      <el-form-item label="来流方向x" prop="flowDirectionX" >
-        <el-input
-          v-model="queryParams.flowDirectionX"
-          placeholder="请输入来流方向x"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="来流方向y" prop="flowDirectionY">
-        <el-input
-          v-model="queryParams.flowDirectionY"
-          placeholder="请输入来流方向y"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="来流方向z" prop="flowDirectionZ">
-        <el-input
-          v-model="queryParams.flowDirectionZ"
-          placeholder="请输入来流方向z"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="流速x" prop="flowVelocityX">
-        <el-input
-          v-model="queryParams.flowVelocityX"
-          placeholder="请输入流速x"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="流速y" prop="flowVelocityY">
-        <el-input
-          v-model="queryParams.flowVelocityY"
-          placeholder="请输入流速y"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="流速z" prop="flowVelocityZ">
-        <el-input
-          v-model="queryParams.flowVelocityZ"
-          placeholder="请输入流速z"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <!-- <el-form-item label="3d模型名称" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入3d模型名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
-      
-      <el-form-item label="飞行高度" prop="flightAltitude">
+   
+      <el-form-item label="飞行高度[km]" prop="flightAltitude">
         <el-input
         v-model="queryParams.flightAltitude"
-        placeholder="请输入飞行高度"
+        placeholder="请输入飞行高度[km]"
         clearable
         @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
-      <el-form-item label="红外波段" prop="ffiinfraredBand">
+      <el-form-item label="红外波段[μm]" prop="ifiinfraredBand">
         <el-input
-        v-model="queryParams.ffiinfraredBand"
-        placeholder="请输入红外波段"
+        v-model="queryParams.ifiinfraredBand"
+        placeholder="请输入红外波段[μm]"
         clearable
         @keyup.enter.native="handleQuery"
         />
@@ -105,41 +49,17 @@
       </el-form-item>
 
 
-
-
-      <!-- <el-form-item label="损伤区域" prop="damageArea">
-        <el-input
-          v-model="queryParams.damageArea"
-          placeholder="请输入损伤区域"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="探测距离" prop="detectDistance">
+      
+      <el-form-item label="探测垂直角" prop="detectVerticalAngle">
         <el-input
-          v-model="queryParams.detectDistance"
-          placeholder="请输入探测距离"
+          v-model="queryParams.detectVerticalAngle"
+          placeholder="请输入探测垂直角"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
 
-      <el-form-item label="红外波段" prop="ifiinfraredBand">
-        <el-input
-          v-model="queryParams.ifiinfraredBand"
-          placeholder="请输入红外波段(红外输入)"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-    <el-form-item label="红外辐射强度" prop="radiationIntensity">
-        <el-input
-          v-model="queryParams.radiationIntensity"
-          placeholder="请输入红外辐射强度"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item> -->
+
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -179,8 +99,38 @@
             v-hasPermi="['data:model:edit']"
           >{{ getFileName(scope.row.model3dFilePath) }}
           </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.model3dFilePath)"
+            v-hasPermi="['data:model:edit']"
+          >{{ getFileName(scope.row.model3dFilePath) }}
+          </el-button>
         </template>
       </el-table-column>
+      <el-table-column label="可编辑模型文件" align="center" prop="editablemodelpath">
+        <template slot-scope="scope">
+          <el-button  v-if="scope.row.editablemodelpath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-folder-opened"
+            @click="openFolder(scope.row.editablemodelpath)"
+            v-hasPermi="['data:model:edit']"
+          >{{ getFileName(scope.row.editablemodelpath) }}
+          </el-button>
+          <el-button v-if="scope.row.editablemodelpath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.editablemodelpath)"
+            v-hasPermi="['data:model:edit']"
+          >{{ getFileName(scope.row.editablemodelpath) }}
+          </el-button>
+        </template>
+      </el-table-column>
+
+
 
 
       <el-table-column label="流场输入编号" align="center" prop="ffiid" />
@@ -191,7 +141,6 @@
       <el-table-column label="流速x" align="center" prop="flowVelocityX" />
       <el-table-column label="流速y" align="center" prop="flowVelocityY" />
       <el-table-column label="流速z" align="center" prop="flowVelocityZ" />
-      <el-table-column label="红外波段" align="center" prop="ffiinfraredBand"/>
       <el-table-column label="来流温度" align="center" prop="flowTemperature" />
       <el-table-column label="来流静压" align="center" prop="flowPressure" />
       <el-table-column label="来流密度" align="center" prop="flowDensity" />
@@ -199,7 +148,14 @@
       <el-table-column label="二氧化碳质量分数" align="center" prop="co2MassFraction" />
       <el-table-column label="一氧化碳质量分数" align="center" prop="coMassFraction" />
       <el-table-column label="水蒸气质量分数" align="center" prop="h2oMassFraction" />
-
+      <el-table-column label="排气系统外涵温度[T]" width="170" align="center" prop="exhaustSystemConnotationTemperature" />
+      <el-table-column label="排气系统内涵温度[T]" width="170" align="center" prop="exhaustSystemIntrinsicTemperature" />
+      <el-table-column label="排气系统外涵静压[Pa]" width="170" align="center" prop="exhaustSystemConnotationPressure" />
+      <el-table-column label="排气系统内涵静压[Pa]" width="170" align="center" prop="exhaustSystemIntrinsicPressure" />
+      <el-table-column label="排气系统外涵流量[kg/s]" width="170" align="center" prop="exhaustSystemConnotationFlow" />
+      <el-table-column label="排气系统内涵流量[kg/s]" width="170" align="center" prop="exhaustSystemIntrinsicFlow" />
+      <el-table-column label="备注" width="200" align="center" prop="remark" />
+    
 
       <el-table-column label="流场输出编号" align="center" prop="ffoid" />
 
@@ -222,6 +178,14 @@
             v-hasPermi="['data:model:edit']"
           >{{ getFileName(scope.row.casOutputFilePath) }}
           </el-button>
+          <el-button v-if="scope.row.casOutputFilePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.casOutputFilePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.casOutputFilePath) }}
+          </el-button>
         </template>
       </el-table-column>
       <el-table-column label="dat文件输出" align="center" prop="datOutputFile">
@@ -234,6 +198,14 @@
             v-hasPermi="['data:model:edit']"
           >{{ getFileName(scope.row.datOutputFilePath) }}
           </el-button>
+          <el-button v-if="scope.row.datOutputFilePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.datOutputFilePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.datOutputFilePath) }}
+          </el-button>
         </template>
       </el-table-column>
       <el-table-column label="其它文件输出" align="center" prop="otherOutputFile">
@@ -246,6 +218,14 @@
             v-hasPermi="['data:model:edit']"
           >{{ getFileName(scope.row.otherOutputFilePath) }}
           </el-button>
+          <el-button v-if="scope.row.otherOutputFilePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.otherOutputFilePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.otherOutputFilePath) }}
+          </el-button>
         </template>
       </el-table-column>
       <el-table-column label="表面温度分布图" align="center" prop="temperatureImage">
@@ -258,6 +238,14 @@
           v-haspermi="['data:model:edit']">
             {{getFileName(scope.row.temperatureImagePath)}}
           </el-button>
+          <el-button v-if="scope.row.temperatureImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.temperatureImagePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.temperatureImagePath) }}
+          </el-button>
           <image-preview v-if="scope.row.temperatureImagePath !== null" :src="scope.row.temperatureImagePath" :width="30" :height="30" ></image-preview>
         </template>
       </el-table-column>
@@ -271,6 +259,14 @@
               v-haspermi="['data:model:edit']">
             {{getFileName(scope.row.velocityImagePath)}}
           </el-button>
+          <el-button v-if="scope.row.velocityImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.velocityImagePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.velocityImagePath) }}
+          </el-button>
           <image-preview v-if="scope.row.velocityImagePath !== null" :src="scope.row.velocityImagePath" :width="30" :height="30" ></image-preview>
         </template>
       </el-table-column>
@@ -284,9 +280,128 @@
               v-haspermi="['data:model:edit']">
             {{getFileName(scope.row.pressureImagePath)}}
           </el-button>
+          <el-button v-if="scope.row.pressureImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.pressureImagePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.pressureImagePath) }}
+          </el-button>
           <image-preview v-if="scope.row.pressureImagePath !== null" :src="scope.row.pressureImagePath" :width="30" :height="30" ></image-preview>
         </template>
       </el-table-column>
+      <el-table-column label="侧向温度分布图" align="center" prop="lateralTemperatureDistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.lateralTemperatureDistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.lateralTemperatureDistributionPath)"
+              v-haspermi="['data:model:edit']">
+            {{getFileName(scope.row.lateralTemperatureDistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.lateralTemperatureDistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.lateralTemperatureDistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.lateralTemperatureDistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.lateralTemperatureDistributionPath !== null" :src="scope.row.lateralTemperatureDistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="侧向H2O分布图" align="center" prop="lateralH2ODistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.lateralH2ODistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.lateralH2ODistributionPath)"
+              v-haspermi="['data:model:edit']">
+            {{getFileName(scope.row.lateralH2ODistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.lateralH2ODistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.lateralH2ODistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.lateralH2ODistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.lateralH2ODistributionPath !== null" :src="scope.row.lateralH2ODistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="轴向温度分布图" align="center" prop="axialTemperatureDistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.axialTemperatureDistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.axialTemperatureDistributionPath)"
+              v-haspermi="['data:model:edit']">
+            {{getFileName(scope.row.axialTemperatureDistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.axialTemperatureDistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.axialTemperatureDistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.axialTemperatureDistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.axialTemperatureDistributionPath !== null" :src="scope.row.axialTemperatureDistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="轴向H2O分布图" align="center" prop="axialH2OdistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.axialH2OdistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.axialH2OdistributionPath)"
+              v-haspermi="['data:model:edit']">
+            {{getFileName(scope.row.axialH2OdistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.axialH2OdistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.axialH2OdistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.axialH2OdistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.axialH2OdistributionPath !== null" :src="scope.row.axialH2OdistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="轴向速度分布图" align="center" prop="axialVelocityDistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.axialVelocityDistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.axialVelocityDistributionPath)"
+              v-haspermi="['data:model:edit']">
+            {{getFileName(scope.row.axialVelocityDistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.axialVelocityDistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.axialVelocityDistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.axialVelocityDistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.axialVelocityDistributionPath !== null" :src="scope.row.axialVelocityDistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+
       <el-table-column label="红外输入编号" align="center" prop="ifiid" />
       <!-- <el-table-column label="对应流场输出编号" align="center" prop="flowFieldOutputID" /> -->
       <el-table-column label="完好发射率" align="center" prop="fullLaunchRate"/>
@@ -296,6 +411,7 @@
       <el-table-column label="表面状态说明" align="center" prop="surfaceDescription" />
       <el-table-column label="探测距离" align="center" prop="detectDistance" />
       <el-table-column label="探测方位角" align="center" prop="detectAngle" />
+      <el-table-column label="探测竖直角" align="center" prop="detectVerticalAngle" />
       <el-table-column label="红外波段" align="center" prop="ifiinfraredBand" />
       
 
@@ -311,6 +427,14 @@
             v-hasPermi="['data:model:edit']"
           >{{ getFileName(scope.row.outputFilePath) }}
           </el-button>
+          <el-button v-if="scope.row.outputFilePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.outputFilePath)"
+            v-hasPermi="['data:infraredOut:edit']"
+          >{{ getFileName(scope.row.outputFilePath) }}
+          </el-button>
         </template>
       </el-table-column>
       <el-table-column label="红外辐射强度" align="center" prop="radiationIntensity" />
@@ -324,9 +448,42 @@
             v-hasPermi="['data:infraredOut:edit']">
           {{getFileName(scope.row.infraredImagePath)}}
         </el-button>
+        <el-button v-if="scope.row.infraredImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.infraredImagePath)"
+            v-hasPermi="['data:infraredOut:edit']"
+          >{{ getFileName(scope.row.infraredImagePath) }}
+          </el-button>
           <image-preview v-if="scope.row.infraredImagePath !== null" :src="scope.row.infraredImagePath" :width="30" :height="30" ></image-preview>
       </template>
       </el-table-column>
+      <el-table-column label="固体红外辐射强度[W/Sr]" align="center" prop="solidinfraredradiation" />
+      <el-table-column label="气体红外辐射强度[W/Sr]" align="center" prop="gasinfraredradiation" />
+
+
+      <el-table-column label="红外光谱辐射强度分布图" align="center" prop="infraredspectrumdistribution">
+        <template slot-scope="scope">
+        <el-button v-if="scope.row.infraredspectrumdistribution !== null"
+            size="mini"
+            type="text"
+            @click="openFolder(scope.row.infraredspectrumdistribution)"
+            icon="el-icon-folder-opened"
+            v-hasPermi="['data:infraredOut:edit']">
+          {{getFileName(scope.row.infraredspectrumdistribution)}}
+        </el-button>
+        <el-button v-if="scope.row.infraredspectrumdistribution !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.infraredspectrumdistribution)"
+            v-hasPermi="['data:infraredOut:edit']"
+          >{{ getFileName(scope.row.infraredspectrumdistribution) }}
+          </el-button>
+          <image-preview v-if="scope.row.infraredspectrumdistribution !== null" :src="scope.row.infraredspectrumdistribution" :width="30" :height="30" ></image-preview>
+      </template>
+      </el-table-column>
     
     </el-table>
     
@@ -379,6 +536,7 @@ export default {
         updateBy: null,
         updateTime: null,
         aircraftType: null,
+        editablemodelpath:null,
 
         model3dId: null,
         machNumber: null,
@@ -388,7 +546,6 @@ export default {
         flowVelocityX: null,
         flowVelocityY: null,
         flowVelocityZ: null,
-        ffiinfraredBand:null,
         flowTemperature:null,
         flowPressure:null,
         flowDensity: null,
@@ -402,6 +559,14 @@ export default {
         fluentCasFilePath: null,
         fluentDatFile: null,
         fluentDatFilePath: null,
+        exhaustSystemConnotationTemperature:null,
+        exhaustSystemIntrinsicTemperature:null,
+        exhaustSystemConnotationPressure:null,
+        exhaustSystemIntrinsicPressure:null,
+        exhaustSystemConnotationFlow:null,
+        exhaustSystemIntrinsicFlow:null,
+        remark:null,
+
 
 
         flowFieldInputID:null,
@@ -420,11 +585,18 @@ export default {
         velocityImagePath:null,
         pressureImage:null,
         pressureImagePath:null,
+        lateralTemperatureDistributionPath:null,
+        lateralH2ODistributionPath:null,
+        axialTemperatureDistributionPath:null,
+        axialH2OdistributionPath:null,
+        axialVelocityDistributionPath:null,
+
 
         flowFieldOutputID:null,
         damageArea: null,
         detectDistance: null,
         detectAngle: null,
+        detectVerticalAngle:null,
         ifiinfraredBand: null,
 
         infraredInputID:null,
@@ -433,6 +605,10 @@ export default {
         radiationIntensity: null,
         infraredImage:null,
         infraredImagePath:null,
+        solidinfraredradiation:null,
+        gasinfraredradiation:null,
+        infraredspectrumdistribution:null,
+
       },
       // 表单参数
       form: {},
@@ -504,8 +680,8 @@ export default {
         this.$modal.msgError("流速Z数据格式不正确,请输入DECIMAL(16,6)格式数据");
         return;
       }
-      if (this.queryParams.ifiinfraredBand &&!this.isDecimalFormat(this.queryParams.ifiinfraredBand)) {
-        this.$modal.msgError("红外波段数据格式不正确,请输入DECIMAL(16,6)格式数据");
+      if (this.queryParams.ifiinfraredBand &&!this.isifiinfraredBand(this.queryParams.ifiinfraredBand)) {
+        this.$modal.msgError("红外波段数据格式不正确,应为数据-数据格式");
         return;
       }
       if (this.queryParams.flightAltitude &&!this.isDecimalFormat(this.queryParams.flightAltitude)) {
@@ -520,12 +696,8 @@ export default {
         this.$modal.msgError("探测方位角格式不正确,请输入DECIMAL(16,6)格式数据");
         return;
       }
-      if (this.queryParams.ffiinfraredBand &&!this.isDecimalFormat(this.queryParams.ffiinfraredBand)) {
-        this.$modal.msgError("红外波段格式不正确,请输入DECIMAL(16,6)格式数据");
-        return;
-      }
-      if (this.queryParams.radiationIntensity &&!this.isDecimalFormat(this.queryParams.radiationIntensity)) {
-        this.$modal.msgError("红外辐射强度格式不正确,请输入DECIMAL(16,6)格式数据");
+      if (this.queryParams.detectVerticalAngle &&!this.isDecimalFormat(this.queryParams.detectVerticalAngle)) {
+        this.$modal.msgError("探测垂直角格式不正确,请输入DECIMAL(16,6)格式数据");
         return;
       }
       this.queryParams.pageNum = 1;
@@ -594,20 +766,25 @@ export default {
         ...this.queryParams
       }, `allinfo_${new Date().getTime()}.xlsx`)
     },
-      getFileName(path) {
+    getFileName(path) {
       if (!path) {
         return ''
       } else if (path.lastIndexOf("/") > -1) {
-        const newName = path.slice(path.lastIndexOf("/") + 1)
-        const names = newName.split(".")
-        if ((names.size = 2) && (names[0].length > 19)) {
-          return newName.substring(0, names[0].length - 19) + '.' + names[1]
-        } else {
-          return newName
-        }
-      } else {
-        return '';
+    
+      const newName = path.slice(path.lastIndexOf("/") + 1)
+    const names = newName.split(".");
+    if (names.length >= 2 && names[0].length > 19) {
+      let fileName = names[0].substring(0, names[0].length - 19);
+      for (let i = 1; i < names.length; i++) {
+        fileName += "." + names[i];
       }
+      return fileName;
+    } else {
+      return newName;
+    }
+  } else {
+    return "";
+  }
     },
     downloadfile(path) {
       this.$download.resource(path);
@@ -619,7 +796,11 @@ export default {
     isDecimalFormat(value) {
       const decimalRegex = /^\d{1,16}(\.\d{1,6})?$/;
       return value === '' || decimalRegex.test(value);
-    }
+    },
+    isifiinfraredBand(value) {
+      const decimalRegex = /^\d{1,10}(\.\d{1,6})?-\d{1,10}(\.\d{1,6})?$/;
+      return value === '' || decimalRegex.test(value);
+    },
   }
 };
 </script>

+ 223 - 74
fidms-ui/src/views/data/flowIn/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="3D模型" prop="model3dId">
         <el-select v-model="queryParams.model3dId" placeholder="请选择3D模型">
           <el-option
@@ -67,14 +67,6 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>-->
-      <el-form-item label="红外波段" prop="infraredBand">
-        <el-input
-        v-model="queryParams.infraredBand"
-        placeholder="请输入红外波段"
-        clearable
-        @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <!--
       <el-form-item label="来流温度" prop="flowTemperature">
         <el-input
@@ -100,10 +92,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>-->
-      <el-form-item label="飞行高度" prop="flightAltitude">
+      <el-form-item label="飞行高度[km]" prop="flightAltitude">
         <el-input
         v-model="queryParams.flightAltitude"
-        placeholder="请输入飞行高度"
+        placeholder="请输入飞行高度[km]"
         clearable
         @keyup.enter.native="handleQuery"
         />
@@ -188,22 +180,28 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="3D模型" align="center" prop="model3dName" />
-      <el-table-column label="来流马赫数" align="center" prop="machNumber" />
-      <el-table-column label="来流方向x" align="center" prop="flowDirectionX"/>
-      <el-table-column label="来流方向y" align="center" prop="flowDirectionY"/>
-      <el-table-column label="来流方向z" align="center" prop="flowDirectionZ"/>
-      <el-table-column label="流速x" align="center" prop="flowVelocityX" />
-      <el-table-column label="流速y" align="center" prop="flowVelocityY" />
-      <el-table-column label="流速z" align="center" prop="flowVelocityZ" />
-      <el-table-column label="红外波段" align="center" prop="infraredBand"/>
-      <el-table-column label="来流温度" align="center" prop="flowTemperature" />
-      <el-table-column label="来流静压" align="center" prop="flowPressure" />
+      <el-table-column label="来流马赫数" width="95" align="center" prop="machNumber" />
+      <el-table-column label="来流方向x" width="95" align="center" prop="flowDirectionX"/>
+      <el-table-column label="来流方向y" width="95" align="center" prop="flowDirectionY"/>
+      <el-table-column label="来流方向z" width="95" align="center" prop="flowDirectionZ"/>
+      <el-table-column label="流速x[m/s]" width="95" align="center" prop="flowVelocityX" />
+      <el-table-column label="流速y[m/s]" width="95" align="center" prop="flowVelocityY" />
+      <el-table-column label="流速z[m/s]" width="95" align="center" prop="flowVelocityZ" />
+      <el-table-column label="来流温度[T]" width="95" align="center" prop="flowTemperature" />
+      <el-table-column label="来流静压[Pa]" width="105" align="center" prop="flowPressure" />
       <el-table-column label="来流密度" align="center" prop="flowDensity" />
-      <el-table-column label="飞行高度" align="center" prop="flightAltitude"/>
-      <el-table-column label="二氧化碳质量分数" align="center" prop="co2MassFraction" />
-      <el-table-column label="一氧化碳质量分数" align="center" prop="coMassFraction" />
-      <el-table-column label="水蒸气质量分数" align="center" prop="h2oMassFraction" />
+      <el-table-column label="飞行高度[km]" width="105" align="center" prop="flightAltitude"/>
+      <el-table-column label="二氧化碳质量分数" width="130" align="center" prop="co2MassFraction" />
+      <el-table-column label="一氧化碳质量分数" width="130" align="center" prop="coMassFraction" />
+      <el-table-column label="水蒸气质量分数" width="130" align="center" prop="h2oMassFraction" />
 
+      <el-table-column label="排气系统外涵温度[T]" width="170" align="center" prop="exhaustSystemConnotationTemperature" />
+      <el-table-column label="排气系统内涵温度[T]" width="170" align="center" prop="exhaustSystemIntrinsicTemperature" />
+      <el-table-column label="排气系统外涵静压[Pa]" width="170" align="center" prop="exhaustSystemConnotationPressure" />
+      <el-table-column label="排气系统内涵静压[Pa]" width="170" align="center" prop="exhaustSystemIntrinsicPressure" />
+      <el-table-column label="排气系统外涵流量[kg/s]" width="170" align="center" prop="exhaustSystemConnotationFlow" />
+      <el-table-column label="排气系统内涵流量[kg/s]" width="170" align="center" prop="exhaustSystemIntrinsicFlow" />
+      <el-table-column label="备注" width="200" align="center" prop="remark" />
       <!-- <el-table-column label="Fluent网格文件" align="center" prop="fluentGridFile" />
       <el-table-column label="Fluent网格文件路径" align="center" prop="fluentGridFilePath" />
       <el-table-column label="Fluent cas文件" align="center" prop="fluentCasFile" />
@@ -240,7 +238,7 @@
 
     <!-- 添加或修改流场输入对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="130px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="170px">
         <el-row>
           <el-form-item label="3D模型" prop="model3dId">
           <el-select v-model="form.model3dId" placeholder="请选择3D模型">
@@ -277,34 +275,29 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="流速x" prop="flowVelocityX">
+            <el-form-item label="流速x[m/s]" prop="flowVelocityX">
               <el-input v-model="form.flowVelocityX" placeholder="计算获取" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="流速y" prop="flowVelocityY">
+            <el-form-item label="流速y[m/s]" prop="flowVelocityY">
               <el-input v-model="form.flowVelocityY" placeholder="计算获取" :disabled="true" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="流速z" prop="flowVelocityZ">
+            <el-form-item label="流速z[m/s]" prop="flowVelocityZ">
               <el-input v-model="form.flowVelocityZ" placeholder="计算获取" :disabled="true" />
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-form-item label="红外波段" prop="infraredBand">
-            <el-input v-model="form.infraredBand" placeholder="请输入红外波段"/>
-          </el-form-item>
-        </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="来流温度" prop="flowTemperature">
+            <el-form-item label="来流温度[T]" prop="flowTemperature">
               <el-input v-model="form.flowTemperature" placeholder="计算获取" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="来流静压" prop="flowPressure">
+            <el-form-item label="来流静压[Pa]" prop="flowPressure">
               <el-input v-model="form.flowPressure" placeholder="计算获取" :disabled="true" />
             </el-form-item>
           </el-col>
@@ -315,8 +308,8 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-form-item label="飞行高度" prop="flightAltitude">
-            <el-input v-model="form.flightAltitude" placeholder="请输入飞行高度"/>
+          <el-form-item label="飞行高度[km]" prop="flightAltitude">
+            <el-input v-model="form.flightAltitude" placeholder="请输入飞行高度[km]"/>
           </el-form-item>
         </el-row>
         <el-row>
@@ -330,6 +323,33 @@
             <el-input v-model="form.h2oMassFraction" placeholder="请输入水蒸气质量分数" :controls="false" precision="2"/>
           </el-form-item>
         </el-row>
+        <el-row>
+          <el-form-item label="排气系统外涵温度[T]" prop="exhaustSystemConnotationTemperature">
+            <el-input v-model="form.exhaustSystemConnotationTemperature" placeholder="请输入排气系统外涵温度[T]" :controls="false" precision="2"/>
+          </el-form-item>
+          <el-form-item label="排气系统内涵温度[T]" prop="exhaustSystemIntrinsicTemperature">
+            <el-input v-model="form.exhaustSystemIntrinsicTemperature" placeholder="请输入排气系统内涵温度[T]" :controls="false" precision="2"/>
+          </el-form-item>
+          <el-form-item label="排气系统外涵静压[Pa]" prop="exhaustSystemConnotationPressure">
+            <el-input v-model="form.exhaustSystemConnotationPressure" placeholder="请输入排气系统外涵静压[Pa]" :controls="false" precision="2"/>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item label="排气系统内涵静压[Pa]" prop="exhaustSystemIntrinsicPressure">
+            <el-input v-model="form.exhaustSystemIntrinsicPressure" placeholder="请输入排气系统内涵静压[Pa]" :controls="false" precision="2"/>
+          </el-form-item>
+          <el-form-item label="排气系统外涵流量[kg/s]" prop="exhaustSystemConnotationFlow">
+            <el-input v-model="form.exhaustSystemConnotationFlow" placeholder="请输入排气系统外涵流量[kg/s]" :controls="false" precision="2"/>
+          </el-form-item>
+          <el-form-item label="排气系统内涵流量[kg/s]" prop="exhaustSystemIntrinsicFlow">
+            <el-input v-model="form.exhaustSystemIntrinsicFlow" placeholder="请输入排气系统内涵流量[kg/s]" :controls="false" precision="2"/>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item label="备注" prop="remark">
+            <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" :controls="false" precision="2"/>
+          </el-form-item>
+        </el-row>
         <!-- <el-form-item label="Fluent网格文件" prop="fluentGridFile">
           <file-upload v-model="form.fluentGridFile"/>
         </el-form-item>
@@ -395,7 +415,6 @@ export default {
         flowVelocityX: null,
         flowVelocityY: null,
         flowVelocityZ: null,
-        infraredBand:null,
         flowTemperature:null,
         flowPressure:null,
         flowDensity: null,
@@ -409,9 +428,18 @@ export default {
         fluentCasFilePath: null,
         fluentDatFile: null,
         fluentDatFilePath: null,
+        exhaustSystemConnotationTemperature:null,
+        exhaustSystemIntrinsicTemperature:null,
+        exhaustSystemConnotationPressure:null,
+        exhaustSystemIntrinsicPressure:null,
+        exhaustSystemConnotationFlow:null,
+        exhaustSystemIntrinsicFlow:null,
+        remark:null,
+
       },
       // 表单参数
-      form: {},
+      form: {
+      },
       // 表单校验
       rules: {
         model3dId: [
@@ -549,7 +577,93 @@ export default {
             trigger: 'change'
           }
         ],
-        infraredBand:[
+        exhaustSystemConnotationTemperature: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('排气系统外涵温度格式不正确,应为DECIMAL(16,6)格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+        exhaustSystemIntrinsicTemperature: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('排气系统内涵温度格式不正确,应为DECIMAL(16,6)格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+        exhaustSystemConnotationPressure: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('排气系统外涵静压格式不正确,应为DECIMAL(16,6)格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+        exhaustSystemIntrinsicPressure: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('排气系统内涵静压格式不正确,应为DECIMAL(16,6)格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+        
+        exhaustSystemConnotationFlow: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('排气系统外涵流量格式不正确,应为DECIMAL(16,6)格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+        exhaustSystemIntrinsicFlow: [
           {
             validator: (rule, value, callback) => {
               if (value === '' || value === null) { // 允许空值通过验证
@@ -557,7 +671,7 @@ export default {
               } else {
                 const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
                 if (!machNumberRegex.test(value)) {
-                  callback(new Error('红外波段数据格式不正确,应为DECIMAL(16,6)格式'));
+                  callback(new Error('排气系统内涵流量格式不正确,应为DECIMAL(16,6)格式'));
                 } else {
                   callback();
                 }
@@ -565,7 +679,7 @@ export default {
             },
             trigger: 'change'
           }
-        ]
+        ],
         // fluentGridFilePath: [
         //   { required: true, message: "Fluent网格文件路径不能为空", trigger: "blur" }
         // ],
@@ -618,7 +732,6 @@ export default {
         flowVelocityX: null,
         flowVelocityY: null,
         flowVelocityZ: null,
-        infraredBand:null,
         flowTemperature:null,
         flowPressure:null,
         flowDensity: null,
@@ -635,7 +748,14 @@ export default {
         createBy: null,
         createTime: null,
         updateBy: null,
-        updateTime: null
+        updateTime: null,
+        exhaustSystemConnotationTemperature:null,
+        exhaustSystemIntrinsicTemperature:null,
+        exhaustSystemConnotationPressure:null,
+        exhaustSystemIntrinsicPressure:null,
+        exhaustSystemConnotationFlow:null,
+        exhaustSystemIntrinsicFlow:null,
+        remark:null,
       };
       this.resetForm("form");
     },
@@ -645,10 +765,6 @@ export default {
         this.$modal.msgError("来流马赫数格式不正确,请输入DECIMAL(16,6)格式数据");
         return;
       }
-      if (this.queryParams.infraredBand &&!this.isDecimalFormat(this.queryParams.infraredBand)) {
-        this.$modal.msgError("红外波段数据格式不正确,请输入DECIMAL(16,6)格式数据");
-        return;
-      }
       if (this.queryParams.flightAltitude &&!this.isDecimalFormat(this.queryParams.flightAltitude)) {
         this.$modal.msgError("飞行高度格式不正确,请输入DECIMAL(16,6)格式数据");
         return;
@@ -685,45 +801,67 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
+
+       // 保留小数点后五位
+      this.form.co2MassFraction = this.keepDecimal(this.form.co2MassFraction);
+      this.form.coMassFraction = this.keepDecimal(this.form.coMassFraction);
+      this.form.h2oMassFraction = this.keepDecimal(this.form.h2oMassFraction);
+
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
-            updateFlowIn(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addFlowIn(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
+
+            if ((this.form.flowDirectionX !== null && this.form.flowDirectionX !== '') ||
+                (this.form.flowDirectionY !== null && this.form.flowDirectionY !== '') ||
+                (this.form.flowDirectionZ !== null && this.form.flowDirectionZ !== '')){
+                  updateFlowIn(this.form).then(response => {
+                  this.$modal.msgSuccess("修改成功");
+                  this.open = false;
+                  this.getList();
+                });
+                   
+              } else {
+                this.$message.error('请保证来流方向X,Y,Z数据至少一项有效且取值不为0');
+          } 
+          }else {
+           if ((this.form.flowDirectionX !== null && this.form.flowDirectionX !== '') ||
+                (this.form.flowDirectionY !== null && this.form.flowDirectionY !== '') ||
+                (this.form.flowDirectionZ !== null && this.form.flowDirectionZ !== '')) {
+              addFlowIn(this.form).then(response => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              this.$message.error('请保证来流方向X,Y,Z数据至少一项有效且取值不为0');
+            }
+            }
         }
       });
     },
-    // /** 删除按钮操作 */
-    // handleDelete(row) {
-    //   const ids = row.id || this.ids;
-    //   this.$modal.confirm('是否确认删除流场输入编号为"' + ids + '"的数据项?').then(function() {
-    //     return delFlowIn(ids);
-    //   }).then(() => {
-    //     this.getList();
-    //     this.$modal.msgSuccess("删除成功");
-    //   }).catch(() => {});
-    // },
 
     handleDelete(row) {
       const ids = row.id || this.ids;
       checktsExistence(ids).then(resp => {
-        if(resp){
-          this.$modal.confirm('编号为"' + ids + '"的流场输入关联了流场输出,确定是否删除?').then(function(){
+        if(resp.data && resp.data.length > 0){
+          let deid = resp.data.map(item => item.flow_field_input_id).join(',');
+          if(resp.data.length > 0 && resp.data.length != ids.length && ids.length != undefined){
+            this.$modal.confirm('编号为"' + deid + '"的流场输入关联了流场输出,确定是否删除编号为"' + ids + '"的数据项?').then(() => {
+              return delFlowIn(ids);
+            }).then(() => {
+                this.getList();
+                this.$modal.msgSuccess("删除成功");
+            }).catch(() => {});
+          }
+          else{
+            this.$modal.confirm('编号为"' + ids + '"的流场输入关联了流场输出,确定是否删除?').then(function(){
               return delFlowIn(ids);
             }).then(() => {
               this.getList();
               this.$modal.msgSuccess("删除成功");
             }).catch(() => {});
+          }
+       
             }
             else{
               this.$modal.confirm('是否确认删除流场输入编号为"' + ids + '"的数据项?').then(function() {
@@ -768,7 +906,18 @@ export default {
     isDecimalFormat(value) {
       const decimalRegex = /^\d{1,16}(\.\d{1,6})?$/;
       return value === '' || decimalRegex.test(value);
-    }
+    },
+    /** 保留小数点后五位 */
+    keepDecimal(value) {
+      if (value === null || value === undefined) {
+        return null;
+      }
+      // 将字符串转换为浮点数
+      const floatValue = parseFloat(value);
+      // 将浮点数转换为保留五位小数的字符串
+      const fixedValue = floatValue.toFixed(5);
+      return fixedValue;
+    },
   }
 };
 </script>

+ 250 - 50
fidms-ui/src/views/data/flowOut/index.vue

@@ -80,80 +80,238 @@
         </template>
       </el-table-column>
       <el-table-column label="网格数" align="center" prop="gridNumber" />
-      <el-table-column label="迭代步数" align="center" prop="iterationSteps" />
-      <el-table-column label="cas文件输出" align="center" prop="casOutputFile">
+      <el-table-column label="迭代步数/时间" align="center" prop="iterationSteps" />
+      <el-table-column label="cas文件" align="center" prop="casOutputFile">
         <template slot-scope="scope">
-          <el-button
+          <el-button v-if="scope.row.casOutputFilePath !== null"
             size="mini"
             type="text"
             icon="el-icon-folder-opened"
             @click="openFolder(scope.row.casOutputFilePath)"
-            v-hasPermi="['data:model:edit']"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.casOutputFilePath) }}
+          </el-button>
+          <el-button v-if="scope.row.casOutputFilePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.casOutputFilePath)"
+            v-hasPermi="['data:flowOut:edit']"
           >{{ getFileName(scope.row.casOutputFilePath) }}
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="dat文件输出" align="center" prop="datOutputFile">
+      <el-table-column label="dat文件" align="center" prop="datOutputFile">
         <template slot-scope="scope">
-          <el-button
+          <el-button v-if="scope.row.datOutputFilePath !== null"
             size="mini"
             type="text"
             icon="el-icon-folder-opened"
             @click="openFolder(scope.row.datOutputFilePath)"
-            v-hasPermi="['data:model:edit']"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.datOutputFilePath) }}
+          </el-button>
+          <el-button v-if="scope.row.datOutputFilePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.datOutputFilePath)"
+            v-hasPermi="['data:flowOut:edit']"
           >{{ getFileName(scope.row.datOutputFilePath) }}
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="其它文件输出" align="center" prop="otherOutputFile">
+      <el-table-column label="其它文件" align="center" prop="otherOutputFile">
         <template slot-scope="scope">
-          <el-button
+          <el-button v-if="scope.row.otherOutputFilePath !== null"
             size="mini"
             type="text"
             icon="el-icon-folder-opened"
             @click="openFolder(scope.row.otherOutputFilePath)"
-            v-hasPermi="['data:model:edit']"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.otherOutputFilePath) }}
+          </el-button>
+          <el-button v-if="scope.row.otherOutputFilePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.otherOutputFilePath)"
+            v-hasPermi="['data:flowOut:edit']"
           >{{ getFileName(scope.row.otherOutputFilePath) }}
           </el-button>
         </template>
       </el-table-column>
       <el-table-column label="表面温度分布图" align="center" prop="temperatureImage">
         <template slot-scope="scope">
-          <el-button
+          <el-button v-if="scope.row.temperatureImagePath !== null"
           size ="mini"
           type="text"
           icon="el-icon-folder-opened"
           @click="openFolder(scope.row.temperatureImagePath)"
-          v-haspermi="['data:model:edit']">
+          v-haspermi="['data:flowOut:edit']">
             {{getFileName(scope.row.temperatureImagePath)}}
           </el-button>
-          <image-preview :src="scope.row.temperatureImagePath" :width="30" :height="30" ></image-preview>
+          <el-button v-if="scope.row.temperatureImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.temperatureImagePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.temperatureImagePath) }}
+          </el-button>
+          <image-preview v-if="scope.row.temperatureImagePath !== null" :src="scope.row.temperatureImagePath" :width="30" :height="30" ></image-preview>
         </template>
       </el-table-column>
       <el-table-column label="表面速度分布图" align="center" prop="velocityImage">
         <template slot-scope="scope">
-          <el-button
+          <el-button v-if="scope.row.velocityImagePath !== null"
               size ="mini"
               type="text"
               icon="el-icon-folder-opened"
               @click="openFolder(scope.row.velocityImagePath)"
-              v-haspermi="['data:model:edit']">
+              v-haspermi="['data:flowOut:edit']">
             {{getFileName(scope.row.velocityImagePath)}}
           </el-button>
-          <image-preview :src="scope.row.velocityImagePath" :width="30" :height="30" ></image-preview>
+          <el-button v-if="scope.row.velocityImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.velocityImagePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.velocityImagePath) }}
+          </el-button>
+          <image-preview v-if="scope.row.velocityImagePath !== null" :src="scope.row.velocityImagePath" :width="30" :height="30" ></image-preview>
         </template>
       </el-table-column>
       <el-table-column label="表面压力分布图" align="center" prop="pressureImage">
         <template slot-scope="scope">
-          <el-button
+          <el-button v-if="scope.row.pressureImagePath !== null"
               size ="mini"
               type="text"
               icon="el-icon-folder-opened"
               @click="openFolder(scope.row.pressureImagePath)"
-              v-haspermi="['data:model:edit']">
+              v-haspermi="['data:flowOut:edit']">
             {{getFileName(scope.row.pressureImagePath)}}
           </el-button>
-          <image-preview :src="scope.row.pressureImagePath" :width="30" :height="30" ></image-preview>
+          <el-button v-if="scope.row.pressureImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.pressureImagePath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.pressureImagePath) }}
+          </el-button>
+          <image-preview v-if="scope.row.pressureImagePath !== null" :src="scope.row.pressureImagePath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="侧向温度分布图" align="center" prop="lateralTemperatureDistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.lateralTemperatureDistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.lateralTemperatureDistributionPath)"
+              v-haspermi="['data:flowOut:edit']">
+            {{getFileName(scope.row.lateralTemperatureDistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.lateralTemperatureDistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.lateralTemperatureDistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.lateralTemperatureDistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.lateralTemperatureDistributionPath !== null" :src="scope.row.lateralTemperatureDistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="侧向H2O分布图" align="center" prop="lateralH2ODistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.lateralH2ODistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.lateralH2ODistributionPath)"
+              v-haspermi="['data:flowOut:edit']">
+            {{getFileName(scope.row.lateralH2ODistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.lateralH2ODistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.lateralH2ODistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.lateralH2ODistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.lateralH2ODistributionPath !== null" :src="scope.row.lateralH2ODistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="轴向温度分布图" align="center" prop="axialTemperatureDistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.axialTemperatureDistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.axialTemperatureDistributionPath)"
+              v-haspermi="['data:flowOut:edit']">
+            {{getFileName(scope.row.axialTemperatureDistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.axialTemperatureDistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.axialTemperatureDistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.axialTemperatureDistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.axialTemperatureDistributionPath !== null" :src="scope.row.axialTemperatureDistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="轴向H2O分布图" align="center" prop="axialH2OdistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.axialH2OdistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.axialH2OdistributionPath)"
+              v-haspermi="['data:flowOut:edit']">
+            {{getFileName(scope.row.axialH2OdistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.axialH2OdistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.axialH2OdistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.axialH2OdistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.axialH2OdistributionPath !== null" :src="scope.row.axialH2OdistributionPath" :width="30" :height="30" ></image-preview>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="轴向速度分布图" align="center" prop="axialVelocityDistributionPath">
+        <template slot-scope="scope">
+          <el-button v-if="scope.row.axialVelocityDistributionPath !== null"
+              size ="mini"
+              type="text"
+              icon="el-icon-folder-opened"
+              @click="openFolder(scope.row.axialVelocityDistributionPath)"
+              v-haspermi="['data:flowOut:edit']">
+            {{getFileName(scope.row.axialVelocityDistributionPath)}}
+          </el-button>
+          <el-button v-if="scope.row.axialVelocityDistributionPath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.axialVelocityDistributionPath)"
+            v-hasPermi="['data:flowOut:edit']"
+          >{{ getFileName(scope.row.axialVelocityDistributionPath) }}
+          </el-button>
+          <image-preview v-if="scope.row.axialVelocityDistributionPath !== null" :src="scope.row.axialVelocityDistributionPath" :width="30" :height="30" ></image-preview>
         </template>
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -202,33 +360,51 @@
         <el-form-item label="网格数" prop="gridNumber">
           <el-input v-model="form.gridNumber" placeholder="请输入网格数" />
         </el-form-item>
-        <el-form-item label="迭代步数" prop="iterationSteps">
-          <el-input v-model="form.iterationSteps" placeholder="请输入迭代步数" />
+        <el-form-item label="迭代步数/时间" prop="iterationSteps">
+          <el-input v-model="form.iterationSteps" placeholder="请输入迭代步数/时间" />
         </el-form-item>
 
 
         <!-- <el-form-item label="文件输出" prop="outputFile">
           <file-upload v-model="form.outputFile"/>
         </el-form-item> -->
-        <el-form-item label="cas文件输出路径" prop="casOutputFilePath">
-          <file-upload v-model="form.casOutputFilePath" :fileType="casfileType" :fileSize="2048" :limit="1"/>
+        <el-form-item label="cas文件" prop="casOutputFilePath">
+          <file-uploadh5 v-model="form.casOutputFilePath" :fileType="casfileType" :fileSize="2048" :limit="1"/>
         </el-form-item>
-        <el-form-item label="dat文件输出路径" prop="datOutputFilePath">
-          <file-upload v-model="form.datOutputFilePath" :fileType="datfileType" :fileSize="2048" :limit="1"/>
+        <el-form-item label="dat文件" prop="datOutputFilePath">
+          <file-uploadh5 v-model="form.datOutputFilePath" :fileType="datfileType" :fileSize="2048" :limit="1"/>
         </el-form-item>
-        <el-form-item label="other文件输出路径" prop="otherOutputFilePath">
+        <el-form-item label="other文件" prop="otherOutputFilePath">
           <file-upload v-model="form.otherOutputFilePath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
         </el-form-item>
         <el-form-item label="表面温度分布图" prop="temperatureImagePath">
           <file-upload v-model="form.temperatureImagePath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
         </el-form-item>
-        <el-form-item label="表面速度分布图输出路径" prop="velocityImagePath">
+        <el-form-item label="表面速度分布图" prop="velocityImagePath">
           <file-upload v-model="form.velocityImagePath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
         </el-form-item>
-        <el-form-item label="表面压力分布图输出路径" prop="pressureImagePath">
+        <el-form-item label="表面压力分布图" prop="pressureImagePath">
           <file-upload v-model="form.pressureImagePath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
         </el-form-item>
 
+        
+        <el-form-item label="侧向温度分布图" prop="lateralTemperatureDistributionPath">
+          <file-upload v-model="form.lateralTemperatureDistributionPath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
+        </el-form-item>
+        <el-form-item label="侧向H2O分布图" prop="lateralH2ODistributionPath">
+          <file-upload v-model="form.lateralH2ODistributionPath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
+        </el-form-item>
+        <el-form-item label="轴向温度分布曲线" prop="axialTemperatureDistributionPath">
+          <file-upload v-model="form.axialTemperatureDistributionPath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
+        </el-form-item>
+        <el-form-item label="轴向H2O分布曲线" prop="axialH2OdistributionPath">
+          <file-upload v-model="form.axialH2OdistributionPath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
+        </el-form-item>
+        <el-form-item label="轴向速度分布曲线" prop="axialVelocityDistributionPath">
+          <file-upload v-model="form.axialVelocityDistributionPath" :fileType="imgfileType" :fileSize="2048" :limit="1"/>
+        </el-form-item>
+
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -284,7 +460,12 @@ export default {
         velocityImage:null,
         velocityImagePath:null,
         pressureImage:null,
-        pressureImagePath:null
+        pressureImagePath:null,
+        lateralTemperatureDistributionPath:null,
+        lateralH2ODistributionPath:null,
+        axialTemperatureDistributionPath:null,
+        axialH2OdistributionPath:null,
+        axialVelocityDistributionPath:null,
       },
       // 表单参数
       form: {
@@ -298,9 +479,6 @@ export default {
         datOutputFilePath: [
           { required: true, message: "dat文件不能为空", trigger: "change" }
         ],
-        otherOutputFilePath: [
-          { required: true, message: "其他文件不能为空", trigger: "change" }
-        ],
         flowFieldInputID: [
           { required: true, message: "对应流场输入不能为空", trigger: "change" }
         ],
@@ -311,9 +489,9 @@ export default {
               if (value === '' || value === null) { // 允许空值通过验证
                 callback();
               } else {
-                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                const machNumberRegex = /^\d+$/; // 匹配DECIMAL(16,6)格式的正则表达式
                 if (!machNumberRegex.test(value)) {
-                  callback(new Error('网格数格式不正确,应为DECIMAL(16,6)格式'));
+                  callback(new Error('网格数格式不正确,应为整型数据'));
                 } else {
                   callback();
                 }
@@ -328,9 +506,9 @@ export default {
               if (value === '' || value === null || value === undefined)  { // 允许空值通过验证
                 callback();
               } else {
-                const x = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                const x = /^\d+(\.\d+)?s?$/; // 匹配DECIMAL(16,6)格式的正则表达式
                 if (!x.test(value)) {
-                  callback(new Error('迭代步数格式不正确,应为DECIMAL(16,6)格式'));
+                  callback(new Error('迭代步数/时间格式不正确,应为数字或数字+s格式'));
                 } else {
                   callback();
                 }
@@ -342,8 +520,8 @@ export default {
 
       },
       fileType: ['dat','cas','xlsx','jpg','png'],
-      casfileType: ['cas'],
-      datfileType: ['dat'],
+      casfileType: ['cas','cas.h5','h5'],
+      datfileType: ['dat','dat.h5','h5'],
       imgfileType: ['jpg','png'],
       flowFieldInputOption:[],
     };
@@ -389,6 +567,11 @@ export default {
         velocityImagePath:null,
         pressureImage:null,
         pressureImagePath:null,
+        lateralTemperatureDistributionPath:null,
+        lateralH2ODistributionPath:null,
+        axialTemperatureDistributionPath:null,
+        axialH2OdistributionPath:null,
+        axialVelocityDistributionPath:null,
         createBy: null,
         createTime: null,
         updateBy: null,
@@ -462,14 +645,26 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       checktsExistence(ids).then(resp => {
-        if(resp){
-          this.$modal.confirm('编号为"' + ids + '"的流场输出关联了红外输入,确定是否删除?').then(function(){
+        if (resp.data && resp.data.length > 0){
+          let deid = resp.data.map(item => item.flow_field_output_id).join(',');
+          if(resp.data.length > 0 && resp.data.length != ids.length && ids.length != undefined){
+            this.$modal.confirm('编号为"' + deid + '"的流场输出关联了红外输入,确定是否删除编号为"' + ids + '"的数据项?').then(() => {
+              return delFlowOut(ids);
+            }).then(() => {
+                this.getList();
+                this.$modal.msgSuccess("删除成功");
+            }).catch(() => {});
+          }
+          else{
+            this.$modal.confirm('编号为"' + ids + '"的流场输出关联了红外输入,确定是否删除?').then(function(){
               return delFlowOut(ids);
             }).then(() => {
               this.getList();
               this.$modal.msgSuccess("删除成功");
             }).catch(() => {});
-            }
+          }
+          
+        }
             else{
               this.$modal.confirm('是否确认删除流场输出编号为"' + ids + '"的数据项?').then(function() {
                   return delFlowOut(ids);
@@ -491,16 +686,21 @@ export default {
       if (!path) {
         return ''
       } else if (path.lastIndexOf("/") > -1) {
-        const newName = path.slice(path.lastIndexOf("/") + 1)
-        const names = newName.split(".")
-        if ((names.size = 2) && (names[0].length > 19)) {
-          return newName.substring(0, names[0].length - 19) + '.' + names[1]
-        } else {
-          return newName
-        }
-      } else {
-        return '';
+    
+      const newName = path.slice(path.lastIndexOf("/") + 1)
+    const names = newName.split(".");
+    if (names.length >= 2 && names[0].length > 19) {
+      let fileName = names[0].substring(0, names[0].length - 19);
+      for (let i = 1; i < names.length; i++) {
+        fileName += "." + names[i];
       }
+      return fileName;
+    } else {
+      return newName;
+    }
+  } else {
+    return "";
+  }
     },
     downloadfile(path) {
       this.$download.resource(path);

+ 52 - 21
fidms-ui/src/views/data/infraredIn/index.vue

@@ -9,10 +9,10 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="探测距离" prop="detectDistance">
+      <el-form-item label="探测距离[km]" prop="detectDistance">
         <el-input
           v-model="queryParams.detectDistance"
-          placeholder="请输入探测距离"
+          placeholder="请输入探测距离[km]"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -25,14 +25,14 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="红外波段" prop="infraredBand">
+      <!-- <el-form-item label="红外波段[μm]" prop="infraredBand">
         <el-input
           v-model="queryParams.infraredBand"
-          placeholder="请输入红外波段"
+          placeholder="请输入红外波段[μm]"
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -94,9 +94,10 @@
       <el-table-column label="损伤区域" align="center" prop="damageArea" />
       <el-table-column label="损伤面积比" align="center" prop="damageAreaRatio" />
       <el-table-column label="表面状态说明" align="center" prop="surfaceDescription" />
-      <el-table-column label="探测距离" align="center" prop="detectDistance" />
+      <el-table-column label="探测距离[km]" align="center" prop="detectDistance" />
       <el-table-column label="探测方位角" align="center" prop="detectAngle" />
-      <el-table-column label="红外波段" align="center" prop="infraredBand" />
+      <el-table-column label="探测竖直角" align="center" prop="detectVerticalAngle" />
+      <el-table-column label="红外波段[μm]" align="center" prop="infraredBand" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -151,14 +152,17 @@
         <el-form-item label="表面状态说明" prop="surfaceDescription">
           <el-input v-model="form.surfaceDescription" placeholder="请输入表面状态说明" :controls="false" precision="6" />
         </el-form-item>
-        <el-form-item label="探测距离" prop="detectDistance">
-          <el-input v-model="form.detectDistance" placeholder="请输入探测距离" :controls="false" precision="6" />
+        <el-form-item label="探测距离[km]" prop="detectDistance">
+          <el-input v-model="form.detectDistance" placeholder="请输入探测距离[km]" :controls="false" precision="6" />
         </el-form-item>
         <el-form-item label="探测方位角" prop="detectAngle">
           <el-input v-model="form.detectAngle" placeholder="请输入探测方位角" :controls="false" precision="6" />
         </el-form-item>
-        <el-form-item label="红外波段" prop="infraredBand">
-          <el-input v-model="form.infraredBand" placeholder="请输入红外波段" :controls="false" precision="6" />
+        <el-form-item label="探测竖直角" prop="detectVerticalAngle">
+          <el-input v-model="form.detectVerticalAngle" placeholder="请输入探测竖直角" :controls="false" precision="6" />
+        </el-form-item>
+        <el-form-item label="红外波段[μm]" prop="infraredBand">
+          <el-input v-model="form.infraredBand" placeholder="请输入红外波段[μm],格式为数据-数据" :controls="false" precision="6" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -205,6 +209,7 @@ export default {
         damageArea: null,
         detectDistance: null,
         detectAngle: null,
+        detectVerticalAngle:null,
         infraredBand: null,
       },
       // 表单参数
@@ -302,15 +307,15 @@ export default {
             trigger: 'change'
           }
         ],
-        infraredBand: [
+        detectVerticalAngle: [
           {
             validator: (rule, value, callback) => {
-              if (value === '' || value === null) { // 允许空值通过验证
+              if (value === '' || value === null || value===undefined) { // 允许空值通过验证
                 callback();
               } else {
                 const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
                 if (!machNumberRegex.test(value)) {
-                  callback(new Error('红外波段格式不正确,应为DECIMAL(16,6)格式'));
+                  callback(new Error('探测竖直角格式不正确,应为DECIMAL(16,6)格式'));
                 } else {
                   callback();
                 }
@@ -318,6 +323,23 @@ export default {
             },
             trigger: 'change'
           }
+        ],
+        infraredBand: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex =  /^\d{1,10}(\.\d{1,6})?-\d{1,10}(\.\d{1,6})?$/;  // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('红外波段格式不正确,应为数据-数据格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'blur'
+          }
         ],   
        
       },
@@ -356,6 +378,7 @@ export default {
         surfaceDescription: null,
         detectDistance: null,
         detectAngle: null,
+        detectVerticalAngle:null,
         infraredBand:null
       };
       this.resetForm("form");
@@ -370,10 +393,6 @@ export default {
         this.$modal.msgError("探测方位角格式不正确,请输入DECIMAL(16,6)格式数据");
         return;
       }
-      if (this.queryParams.infraredBand &&!this.isDecimalFormat(this.queryParams.infraredBand)) {
-        this.$modal.msgError("红外波段格式不正确,请输入DECIMAL(16,6)格式数据");
-        return;
-      }
       this.queryParams.pageNum = 1;
       this.getList();
     },
@@ -439,13 +458,25 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       checktsExistence(ids).then(resp => {
-        if(resp){
-          this.$modal.confirm('编号为"' + ids + '"的红外输入关联了红外输出,确定是否删除?').then(function(){
-              return delInfraredIn(ids);;
+        if (resp.data && resp.data.length > 0){
+          let deid = resp.data.map(item => item.infrared_input_id).join(',');
+          if(resp.data.length > 0 && resp.data.length != ids.length && ids.length != undefined){
+            this.$modal.confirm('编号为"' + deid + '"的红外输入关联了红外输出,确定是否删除编号为"' + ids + '"的数据项?').then(() => {
+              return delInfraredIn(ids);
+            }).then(() => {
+                this.getList();
+                this.$modal.msgSuccess("删除成功");
+            }).catch(() => {});
+          }
+          else{
+            this.$modal.confirm('编号为"' + ids + '"的红外输入关联了红外输出,确定是否删除?').then(function(){
+              return delInfraredIn(ids);
             }).then(() => {
               this.getList();
               this.$modal.msgSuccess("删除成功");
             }).catch(() => {});
+          }
+          
             }
             else{
               this.$modal.confirm('是否确认删除红外输入编号为"' + ids + '"的数据项?').then(function() {

+ 105 - 19
fidms-ui/src/views/data/infraredOut/index.vue

@@ -1,10 +1,10 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
-      <el-form-item label="红外辐射强度" prop="radiationIntensity">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="150px">
+      <el-form-item label="红外辐射强度[W/Sr]" prop="radiationIntensity">
         <el-input
           v-model="queryParams.radiationIntensity"
-          placeholder="请输入红外辐射强度"
+          placeholder="请输入红外辐射强度[W/Sr]"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -72,24 +72,21 @@
             type="text"
             icon="el-icon-folder-opened"
             @click="openFolder(scope.row.outputFilePath)"
-            v-hasPermi="['data:model:edit']"
+            v-hasPermi="['data:infraredOut:edit']"
           >{{ getFileName(scope.row.outputFilePath) }}
           </el-button>
-        </template>
-      </el-table-column>
-      <el-table-column label="红外辐射强度" align="center" prop="radiationIntensity" />
-      <!--<el-table-column label="红外图像" align="center" prop="infraredImagePath">
-        <template slot-scope="scope">
-          <el-button
+          <el-button v-if="scope.row.outputFilePath !== null"
             size="mini"
             type="text"
             icon="el-icon-download"
-            @click="downloadfile(scope.row.infraredImagePath)"
-            v-hasPermi="['data:model:edit']">
-            {{getFileName(scope.row.infraredImagePath)}}
+            @click="downloadfile(scope.row.outputFilePath)"
+            v-hasPermi="['data:infraredOut:edit']"
+          >{{ getFileName(scope.row.outputFilePath) }}
           </el-button>
         </template>
-      </el-table-column>-->
+      </el-table-column>
+      <el-table-column label="红外辐射强度[W/Sr]" align="center" prop="radiationIntensity" />
+
       <el-table-column label="红外图像" align="center" prop="infraredImagePath">
         <template slot-scope="scope">
         <el-button
@@ -100,9 +97,44 @@
             v-hasPermi="['data:infraredOut:edit']">
           {{getFileName(scope.row.infraredImagePath)}}
         </el-button>
+        <el-button v-if="scope.row.infraredImagePath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.infraredImagePath)"
+            v-hasPermi="['data:infraredOut:edit']"
+          >{{ getFileName(scope.row.infraredImagePath) }}
+          </el-button>
           <image-preview :src="scope.row.infraredImagePath" :width="30" :height="30" ></image-preview>
       </template>
       </el-table-column>
+
+      <el-table-column label="固体红外辐射强度[W/Sr]" align="center" prop="solidinfraredradiation" />
+      <el-table-column label="气体红外辐射强度[W/Sr]" align="center" prop="gasinfraredradiation" />
+
+
+      <el-table-column label="红外光谱辐射强度分布图" align="center" prop="infraredspectrumdistribution">
+        <template slot-scope="scope">
+        <el-button v-if="scope.row.infraredspectrumdistribution !== null"
+            size="mini"
+            type="text"
+            @click="openFolder(scope.row.infraredspectrumdistribution)"
+            icon="el-icon-folder-opened"
+            v-hasPermi="['data:infraredOut:edit']">
+          {{getFileName(scope.row.infraredspectrumdistribution)}}
+        </el-button>
+        <el-button v-if="scope.row.infraredspectrumdistribution !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.infraredspectrumdistribution)"
+            v-hasPermi="['data:infraredOut:edit']"
+          >{{ getFileName(scope.row.infraredspectrumdistribution) }}
+          </el-button>
+          <image-preview v-if="scope.row.infraredspectrumdistribution !== null" :src="scope.row.infraredspectrumdistribution" :width="30" :height="30" ></image-preview>
+      </template>
+      </el-table-column>
+
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -131,8 +163,8 @@
     />
 
     <!-- 添加或修改红外输出对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+    <el-dialog :title="title" :visible.sync="open" width="580px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="170px">
         <el-form-item label="红外输入编号"  prop="infraredInputID">
           <el-select v-model="form.infraredInputID" placeholder="请输入对应红外输入编号">
             <el-option v-for="item in infraredInputOption"
@@ -145,12 +177,21 @@
         <el-form-item label="文件输出" prop="outputFilePath">
           <file-upload v-model="form.outputFilePath" :fileType="fileType" :fileSize="2048" :limit="1" />
         </el-form-item>
-        <el-form-item label="红外辐射强度" prop="radiationIntensity">
-          <el-input v-model="form.radiationIntensity" placeholder="请输入红外辐射强度" />
+        <el-form-item label="红外辐射强度[W/Sr]" prop="radiationIntensity">
+          <el-input v-model="form.radiationIntensity" placeholder="请输入红外辐射强度[W/Sr]" />
         </el-form-item>
         <el-form-item label="红外图像" prop="infraredImagePath">
           <file-upload v-model="form.infraredImagePath" :fileType="imageType" :fileSize="2048" :limit="1"/>
         </el-form-item>
+        <el-form-item label="固体红外辐射强度[W/Sr]" prop="solidinfraredradiation">
+          <el-input v-model="form.solidinfraredradiation" placeholder="请输入固体红外辐射强度[W/Sr]" />
+        </el-form-item>
+        <el-form-item label="气体红外辐射强度[W/Sr]" prop="gasinfraredradiation">
+          <el-input v-model="form.gasinfraredradiation" placeholder="请输入气体红外辐射强度[W/Sr]" />
+        </el-form-item>
+        <el-form-item label="红外图像" prop="infraredspectrumdistribution">
+          <file-upload v-model="form.infraredspectrumdistribution" :fileType="imageType" :fileSize="2048" :limit="1"/>
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -196,6 +237,10 @@ export default {
         radiationIntensity: null,
         infraredImage:null,
         infraredImagePath:null,
+        solidinfraredradiation:null,
+        gasinfraredradiation:null,
+        infraredspectrumdistribution:null,
+
       },
       // 表单参数
       form: {},
@@ -227,6 +272,43 @@ export default {
             trigger: 'change'
           }
         ],
+
+        solidinfraredradiation: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('固体红外辐射强度格式不正确,应为DECIMAL(16,6)格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+
+        gasinfraredradiation: [
+          {
+            validator: (rule, value, callback) => {
+              if (value === '' || value === null) { // 允许空值通过验证
+                callback();
+              } else {
+                const machNumberRegex = /^\d{1,10}(\.\d{1,6})?$/; // 匹配DECIMAL(16,6)格式的正则表达式
+                if (!machNumberRegex.test(value)) {
+                  callback(new Error('气体红外辐射强度格式不正确,应为DECIMAL(16,6)格式'));
+                } else {
+                  callback();
+                }
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+
       },
       infraredInputOption:[],
       fileType: ['dat', 'xls', 'jpg', 'png'],
@@ -265,7 +347,11 @@ export default {
         createBy: null,
         createTime: null,
         updateBy: null,
-        updateTime: null
+        updateTime: null,
+        solidinfraredradiation:null,
+        gasinfraredradiation:null,
+        infraredspectrumdistribution:null,
+
       };
       this.resetForm("form");
     },

+ 77 - 10
fidms-ui/src/views/data/model/index.vue

@@ -76,6 +76,34 @@
             v-hasPermi="['data:model:edit']"
           >{{ getFileName(scope.row.model3dFilePath) }}
           </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.model3dFilePath)"
+            v-hasPermi="['data:model:edit']"
+          >{{ getFileName(scope.row.model3dFilePath) }}
+          </el-button>
+        </template>
+      </el-table-column>
+      <el-table-column label="可编辑模型文件" align="center" prop="editablemodelpath">
+        <template slot-scope="scope">
+          <el-button  v-if="scope.row.editablemodelpath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-folder-opened"
+            @click="openFolder(scope.row.editablemodelpath)"
+            v-hasPermi="['data:model:edit']"
+          >{{ getFileName(scope.row.editablemodelpath) }}
+          </el-button>
+          <el-button v-if="scope.row.editablemodelpath !== null"
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="downloadfile(scope.row.editablemodelpath)"
+            v-hasPermi="['data:model:edit']"
+          >{{ getFileName(scope.row.editablemodelpath) }}
+          </el-button>
         </template>
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -114,11 +142,11 @@
         <el-form-item label="飞机类型" prop="aircraftType">
           <el-input v-model="form.aircraftType" placeholder="请输入飞机类型"/>
         </el-form-item>
-        <!-- <el-form-item label="3d模型文件名称" prop="model3dFile">
-          <file-upload v-model="form.model3dFile"/>
-        </el-form-item> -->
         <el-form-item label="3D模型" prop="model3dFilePath">
-          <file-upload v-model="form.model3dFilePath" :fileType="fileType" :fileSize="2048" :limit="1"/>
+          <file-upload3D v-model="form.model3dFilePath" :fileType="fileType"  :fileSize="2048" :limit="1"/>
+        </el-form-item>
+        <el-form-item label="可编辑模型" prop="editablemodelpath">
+          <file-uploadedit v-model="form.editablemodelpath"  :fileSize="2048" :limit="1"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -163,6 +191,7 @@ export default {
         aircraftType:null,
         model3dFile: null,
         model3dFilePath: null,
+        editablemodelpath:null,
       },
       // 表单参数
       form: {},
@@ -175,7 +204,8 @@ export default {
           { required: true, message: "3D模型不能为空", trigger: "blur" }
         ],
       },
-      fileType: ['x_t', 'IGS'],
+      fileType: ['x_t', 'igs'],
+
     };
   },
   created() {
@@ -183,6 +213,30 @@ export default {
 
   },
   methods: {
+   generateFileTypes(types) {
+    const result = [];
+    for (const type of types) {
+      result.push(type.toLowerCase()); // 原始的小写
+      result.push(type.toUpperCase()); // 大写
+      // 添加其他可能的大小写组合
+      for (let i = 0; i < type.length; i++) {
+        const char = type.charAt(i);
+        const charUpper = char.toUpperCase();
+        const charLower = char.toLowerCase();
+        if (charUpper !== charLower) {
+          const newType = type.substring(0, i) + charUpper + type.substring(i + 1);
+          result.push(newType);
+        }
+      }
+    }
+    return result;
+  },
+
+  beforeUpload(file) {
+    const ext = file.name.split('.').pop().toLowerCase();
+    const allowedExts = this.fileType.map(ext => ext.toLowerCase());
+    return allowedExts.includes(ext);
+  },
     /** 查询3d模型列表 */
     getList() {
       this.loading = true;
@@ -207,6 +261,7 @@ export default {
         aircraftType:null,
         model3dFile: null,
         model3dFilePath: null,
+        editablemodelpath:null,
         createBy: null,
         createTime: null,
         updateBy: null,
@@ -279,14 +334,25 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       checktsExistence(ids).then(resp => {
-        if(resp){
-          this.$modal.confirm('编号为"' + ids + '"的3D模型关联了流场输入,确定是否删除?').then(function(){
-              return delModel(ids);
+        if (resp.data && resp.data.length > 0) {
+            let deid = resp.data.map(item => item.model_3d_id).join(',');
+            if(resp.data.length > 0 && resp.data.length != ids.length && ids.length != undefined){
+              this.$modal.confirm('编号为"' + deid + '"的3D模型关联了流场输入,确定是否删除编号为"' + ids + '"的数据项?').then(() => {
+                return delModel(ids);
             }).then(() => {
-              this.getList();
-              this.$modal.msgSuccess("删除成功");
+                this.getList();
+                this.$modal.msgSuccess("删除成功");
+            }).catch(() => {});
+            }else{
+              this.$modal.confirm('编号为"' + ids + '"的3D模型关联了流场输入,确定是否删除?').then(() => {
+                return delModel(ids);
+            }).then(() => {
+                this.getList();
+                this.$modal.msgSuccess("删除成功");
             }).catch(() => {});
             }
+            
+        } 
             else{
               this.$modal.confirm('是否确认删除3D模型编号为"' + ids + '"的数据项?').then(function() {
                   return delModel(ids);
@@ -320,6 +386,7 @@ export default {
       }
     },
     downloadfile(path) {
+      
       this.$download.resource(path);
     },
     openFolder(path){

+ 55 - 0
sql/ry_20230223.sql

@@ -1130,3 +1130,58 @@ values('报表管理删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'dat
 
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
 values('报表管理导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'data:allinfo:export',       '#', 'admin', sysdate(), '', null, '');
+
+
+-- 2024/04/10 数据库需求修改
+-- 具体的SQL
+
+ALTER TABLE bz_model_3d_t
+    ADD COLUMN editable_model_path VARCHAR(511) COMMENT '可编辑模型文件';
+
+
+ALTER TABLE bz_flow_field_input_t MODIFY COLUMN co2_mass_fraction DECIMAL(16,5);
+ALTER TABLE bz_flow_field_input_t MODIFY COLUMN co_mass_fraction DECIMAL(16,5);
+ALTER TABLE bz_flow_field_input_t MODIFY COLUMN h2o_mass_fraction DECIMAL(16,5);
+
+ALTER TABLE bz_flow_field_input_t
+DROP COLUMN infrared_band;
+
+
+ALTER TABLE bz_flow_field_input_t ADD COLUMN exhaust_system_connotation_temperature DECIMAL(16,6) COMMENT '排气系统外涵温度[T]';
+ALTER TABLE bz_flow_field_input_t ADD COLUMN exhaust_system_intrinsic_temperature DECIMAL(16,6) COMMENT '排气系统内涵温度[T]';
+ALTER TABLE bz_flow_field_input_t ADD COLUMN exhaust_system_connotation_pressure DECIMAL(16,6) COMMENT '排气系统外涵静压[Pa]';
+ALTER TABLE bz_flow_field_input_t ADD COLUMN exhaust_system_intrinsic_pressure DECIMAL(16,6) COMMENT '排气系统内涵静压[Pa]';
+ALTER TABLE bz_flow_field_input_t ADD COLUMN exhaust_system_connotation_flow DECIMAL(16,6) COMMENT '排气系统外涵流量[kg/s]';
+ALTER TABLE bz_flow_field_input_t ADD COLUMN exhaust_system_intrinsic_flow DECIMAL(16,6) COMMENT '排气系统内涵流量[kg/s]';
+ALTER TABLE bz_flow_field_input_t ADD COLUMN remark varchar(500) DEFAULT NULL COMMENT '备注';
+
+
+ALTER TABLE bz_flow_field_output_t MODIFY COLUMN grid_number BIGINT (20);
+ALTER TABLE bz_flow_field_output_t MODIFY COLUMN iteration_steps VARCHAR (64) COMMENT '迭代步数/时间';
+
+
+ALTER TABLE bz_flow_field_output_t
+    ADD COLUMN lateral_temperature_distribution_path VARCHAR ( 511 ) COMMENT '侧向温度分布图';
+ALTER TABLE bz_flow_field_output_t
+    ADD COLUMN lateral_H2O_distribution_path VARCHAR ( 511 ) COMMENT '侧向H2O分布图';
+ALTER TABLE bz_flow_field_output_t
+    ADD COLUMN axial_temperature_distribution_path VARCHAR ( 511 ) COMMENT '轴向温度分布图';
+ALTER TABLE bz_flow_field_output_t
+    ADD COLUMN axial_H2O_distribution_path VARCHAR ( 511 ) COMMENT '轴向H2O分布图';
+ALTER TABLE bz_flow_field_output_t
+    ADD COLUMN axial_velocity_distribution_path VARCHAR ( 511 ) COMMENT '轴向速度分布图';
+
+
+ALTER TABLE bz_infrared_input_t ADD COLUMN detect_vertical_angle DECIMAL(16,6) COMMENT '探测垂直角';
+
+ALTER TABLE bz_infrared_input_t MODIFY COLUMN infrared_band VARCHAR (64);
+
+
+ALTER TABLE bz_infrared_output_t
+    ADD COLUMN solid_infrared_radiation DECIMAL ( 20, 6 ) COMMENT '固体红外辐射强度[W/Sr]';
+
+ALTER TABLE bz_infrared_output_t
+    ADD COLUMN gas_infrared_radiation DECIMAL ( 20, 6 ) COMMENT '气体红外辐射强度[W/Sr]';
+
+ALTER TABLE bz_infrared_output_t
+    ADD COLUMN infrared_spectrum_distribution VARCHAR ( 511 ) COMMENT '红外光谱辐射强度分布图';