ソースを参照

Merge branch 'dev-rmd' into dev_ALlen

allen 10 ヶ月 前
コミット
1a51edbf29
41 ファイル変更1757 行追加1182 行削除
  1. 8 0
      meas_web/src/api/meas/angle.js
  2. 7 0
      meas_web/src/api/meas/dataResults.js
  3. 7 0
      meas_web/src/api/meas/engineModel.js
  4. 7 0
      meas_web/src/api/meas/radiation.js
  5. 8 0
      meas_web/src/api/meas/status.js
  6. 7 0
      meas_web/src/api/meas/thermalImagerTesDdata.js
  7. 7 0
      meas_web/src/api/meas/transmissionRate.js
  8. 6 2
      meas_web/src/components/FileUpload/index.vue
  9. 1 1
      meas_web/src/components/ImageUpload/index.vue
  10. 1 1
      meas_web/src/components/RightToolbar/index.vue
  11. 1 1
      meas_web/src/utils/generator/html.js
  12. 1 1
      meas_web/src/views/meas/angle/index.vue
  13. 850 0
      meas_web/src/views/meas/components/dialogContent.vue
  14. 189 151
      meas_web/src/views/meas/dataResults/index.vue
  15. 18 13
      meas_web/src/views/meas/engineModel/index.vue
  16. 27 19
      meas_web/src/views/meas/envData/ECharts.vue
  17. 272 613
      meas_web/src/views/meas/envData/index.vue
  18. 39 14
      meas_web/src/views/meas/measBatch/index.vue
  19. 100 118
      meas_web/src/views/meas/radiation/index.vue
  20. 1 1
      meas_web/src/views/meas/status/index.vue
  21. 87 118
      meas_web/src/views/meas/thermalImagerTesDdata/index.vue
  22. 90 105
      meas_web/src/views/meas/transmissionRate/index.vue
  23. 3 3
      meas_web/src/views/monitor/job/index.vue
  24. 1 1
      meas_web/src/views/monitor/job/log.vue
  25. 1 1
      meas_web/src/views/monitor/operlog/index.vue
  26. 1 1
      meas_web/src/views/system/config/index.vue
  27. 1 1
      meas_web/src/views/system/dept/index.vue
  28. 1 1
      meas_web/src/views/system/dict/data.vue
  29. 1 1
      meas_web/src/views/system/dict/index.vue
  30. 1 1
      meas_web/src/views/system/menu/index.vue
  31. 1 1
      meas_web/src/views/system/notice/index.vue
  32. 1 1
      meas_web/src/views/system/post/index.vue
  33. 2 2
      meas_web/src/views/system/role/index.vue
  34. 1 1
      meas_web/src/views/system/role/selectUser.vue
  35. 2 2
      meas_web/src/views/system/user/index.vue
  36. 1 1
      meas_web/src/views/system/user/profile/userAvatar.vue
  37. 1 2
      meas_web/src/views/tool/build/CodeTypeDialog.vue
  38. 1 1
      meas_web/src/views/tool/build/IconsDialog.vue
  39. 1 1
      meas_web/src/views/tool/gen/createTable.vue
  40. 1 1
      meas_web/src/views/tool/gen/importTable.vue
  41. 1 1
      meas_web/src/views/tool/gen/index.vue

+ 8 - 0
meas_web/src/api/meas/angle.js

@@ -9,6 +9,14 @@ export function listAngle(query) {
   });
 }
 
+// 查询角度下拉框
+export function angleOption() {
+  return request({
+    url: "/meas/angle/getOption",
+    method: "get"
+  });
+}
+
 // 查询角度详细
 export function getAngle(id) {
   return request({

+ 7 - 0
meas_web/src/api/meas/dataResults.js

@@ -17,6 +17,13 @@ export function getDataResults(id) {
   })
 }
 
+export function getResultByEnvData(envDataId) {
+  return request({
+    url: '/meas/dataResults/getInfoByEnvDataId/' + envDataId,
+    method: 'get'
+  })
+}
+
 // 新增数据结果
 export function addDataResults(data) {
   return request({

+ 7 - 0
meas_web/src/api/meas/engineModel.js

@@ -17,6 +17,13 @@ export function getEngineModel(id) {
   })
 }
 
+export function getEngineModelByEnvData(envDataId) {
+  return request({
+    url: '/meas/engineModel/getInfoByEnvDataId/' + envDataId,
+    method: 'get'
+  })
+}
+
 // 新增发动机型号
 export function addEngineModel(data) {
   return request({

+ 7 - 0
meas_web/src/api/meas/radiation.js

@@ -17,6 +17,13 @@ export function getRadiation(id) {
   })
 }
 
+export function getRadiationByEnvData(envDataId) {
+  return request({
+    url: '/meas/radiation/getInfoByEnvDataId/' + envDataId,
+    method: 'get'
+  })
+}
+
 // 新增光谱辐射
 export function addRadiation(data) {
   return request({

+ 8 - 0
meas_web/src/api/meas/status.js

@@ -9,6 +9,14 @@ export function listStatus(query) {
   });
 }
 
+// 查询状态Option
+export function statusOption() {
+  return request({
+    url: "/meas/status/getOption",
+    method: "get",
+  });
+}
+
 // 查询状态详细
 export function getStatus(id) {
   return request({

+ 7 - 0
meas_web/src/api/meas/thermalImagerTesDdata.js

@@ -17,6 +17,13 @@ export function getThermalImagerTesDdata(id) {
   })
 }
 
+export function getTIDataByEnvData(envDataId) {
+  return request({
+    url: '/meas/thermalImagerTesDdata/getInfoByEnvDataId/' + envDataId,
+    method: 'get'
+  })
+}
+
 // 新增热像仪测试数据
 export function addThermalImagerTesDdata(data) {
   return request({

+ 7 - 0
meas_web/src/api/meas/transmissionRate.js

@@ -26,6 +26,13 @@ export function addTransmissionRate(data) {
   })
 }
 
+export function getTRateByEnvData(envDataId) {
+  return request({
+    url: '/meas/transmissionRate/getInfoByEnvDataId/' + envDataId,
+    method: 'get'
+  })
+}
+
 // 修改透过率
 export function updateTransmissionRate(data) {
   return request({

+ 6 - 2
meas_web/src/components/FileUpload/index.vue

@@ -32,8 +32,8 @@
           <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
         </el-link>
         <div class="ele-upload-list__item-content-action">
-          <el-link :underline="false" v-if=isShowViev  @click="handleView(file.name)" type="success">可视化</el-link>
-          <el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
+          <el-link style="width: 45px;":underline="false" v-if=isShowViev  @click="handleView(file.name)" type="success">可视化</el-link>
+          <el-link :underline="false"  v-if="!isCheck" @click="handleDelete(index)" type="danger">删除</el-link>
         </div>
       </li>
     </transition-group>
@@ -73,6 +73,10 @@ export default {
       type: Boolean,
       default: false
     },
+    isCheck: {
+      type: Boolean,
+      default: false
+    },
   },
   data() {
     return {

+ 1 - 1
meas_web/src/components/ImageUpload/index.vue

@@ -28,7 +28,7 @@
       的文件
     </div>
 
-    <el-dialog
+    <el-dialog :close-on-click-modal="false"
       :visible.sync="dialogVisible"
       title="预览"
       width="800"

+ 1 - 1
meas_web/src/components/RightToolbar/index.vue

@@ -21,7 +21,7 @@
         </el-dropdown>
       </el-tooltip>
     </el-row>
-    <el-dialog :title="title" :visible.sync="open" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" append-to-body>
       <el-transfer
         :titles="['显示', '隐藏']"
         v-model="value"

+ 1 - 1
meas_web/src/utils/generator/html.js

@@ -5,7 +5,7 @@ let confGlobal
 let someSpanIsNot24
 
 export function dialogWrapper(str) {
-  return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Title">
+  return `<el-dialog  v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Title">
     ${str}
     <div slot="footer">
       <el-button @click="close">取消</el-button>

+ 1 - 1
meas_web/src/views/meas/angle/index.vue

@@ -126,7 +126,7 @@
     />
 
     <!-- 添加或修改角度对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="角度" prop="angle">
           <el-input v-model="form.angle" placeholder="请输入角度" />

+ 850 - 0
meas_web/src/views/meas/components/dialogContent.vue

@@ -0,0 +1,850 @@
+<template>
+  <div>
+    <el-form ref="formData" :rules="formRules" :model="formData" size="mini" :disabled="checkShow" label-width="80px">
+      <el-row type="flex" justify="space-around">
+        <el-form-item label="发动机型号" prop="model" label-width="95px">
+          <el-select v-model="formData.model" placeholder="请选择发动机型号" @change="changeEngine">
+            <el-option v-for="item in engineModelOption" :key="item.id" :label="item.model" :value="item.id">
+            </el-option>
+            <el-option :value="undefined" style="cursor: pointer">
+              <el-button type="text" @click="onClickBtn('engine')"><i class="el-icon-plus"></i> 增加发动机型号</el-button>
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="几何模型" prop="geometryFiles">
+          <div style="width: 200px;">
+            <el-link :disabled="formData.geometryFiles ? false : true"
+              :type="formData.geometryFiles ? 'primary' : 'warning'" :href="`${baseUrl}${formData.geometryFiles}`"
+              target="_blank">{{
+      formData.geometryFiles ? getFileName(formData.geometryFiles) : '暂无几何模型文件' }}</el-link>
+          </div>
+        </el-form-item>
+        <el-form-item label="几何图片" prop="geometryImage">
+          <div style="width: 200px;">
+            <ImagePreview :src="formData.geometryImage" :width="80" :height="80" />
+          </div>
+        </el-form-item>
+      </el-row>
+    </el-form>
+    <el-form ref="formData" :disabled="checkShow" :model="formData" :rules="formRules" size="mini" label-width="80px">
+      <el-form-item label="测量批次" prop="measurementBatch" style="margin-left: 5%">
+        <el-select v-model="formData.measurementBatchId" placeholder="请选择测量批次">
+          <el-option v-for="item in batchOption" :key="item.id" :label="item.measurementBatch" :value="item.id">
+            <span style="float: left">{{ item.id }}</span>
+            <span style="float: right; color: #8492a6; font-size: 13px">{{ item.measurementBatch }}</span>
+          </el-option>
+          <el-option :value="undefined" disabled style="cursor: pointer">
+            <el-button type="text" @click="onClickBtn('measBatch')"><i class="el-icon-plus"></i> 增加测量批次</el-button>
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+    <div class="box">
+      <span class="title">环境参数</span>
+      <el-form :disabled="checkShow" :rules="formRules" ref="formData" :model="formData" size="mini" label-width="80px">
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="发动机状态" label-width="100px" prop="engineStatus">
+            <el-select v-model="formData.engineStatus" placeholder="请选择发动机状态">
+              <el-option v-for="item in engineStatusOption" :key="item" :label="item" :value="item">
+              </el-option>
+              <el-option :value="undefined" disabled style="cursor: pointer">
+                <el-button type="text" @click="onClickBtn('engineStatus')"><i class="el-icon-plus"></i>
+                  增加发动机状态</el-button>
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="角度" prop="angle">
+            <el-select v-model="formData.angle" placeholder="请输入角度">
+              <el-option v-for="item in angleOption" :key="item" :label="item" :value="item">
+              </el-option>
+              <el-option :value="undefined" disabled style="cursor: pointer">
+                <el-button type="text" @click="onClickBtn('engineAngle')"><i class="el-icon-plus"></i>
+                  增加发动机角度</el-button>
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="涡轮后温度" prop="turbinePostTemp" label-width="90px">
+            <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']"
+              v-model="formData.turbinePostTemp" />
+          </el-form-item>
+        </el-row>
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="测试距离" prop="testDistance">
+            <el-input v-model.number="formData.testDistance" placeholder="请输入测试距离" />
+          </el-form-item>
+          <el-form-item label="时间" prop="time">
+            <el-date-picker clearable v-model="formData.time" type="datetime" value-format="yyyy-MM-dd HH:mm"
+              format="yyyy-MM-dd HH:mm" placeholder="请选择时间">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="地点" prop="location">
+            <el-input v-model="formData.location" placeholder="请输入地点" />
+          </el-form-item>
+        </el-row>
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="大气压" prop="atmosPress">
+            <el-input v-model="formData.atmosPress" placeholder="请输入大气压(单位:pa)" />
+          </el-form-item>
+          <el-form-item label="温度" prop="temperature">
+            <el-input v-model="formData.temperature" placeholder="请输入温度(单位:K)" />
+          </el-form-item>
+          <el-form-item label="风速" prop="windSpeed">
+            <el-input v-model="formData.windSpeed" placeholder="请输入风速(单位:m/s)" />
+          </el-form-item>
+        </el-row>
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="湿度" prop="humidity">
+            <el-input v-model="formData.humidity" placeholder="请输入湿度(单位:%)" />
+          </el-form-item>
+          <el-form-item label="CO₂浓度" prop="concentration">
+            <el-input v-model="formData.concentration" placeholder="请输入浓度(单位:mol)" />
+          </el-form-item>
+          <el-col :span="7">
+            <el-button v-if="addBtn" type="primary" size="mini" @click="envDataSave">保 存</el-button>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <div class="box" v-if="radiationData && Object.keys(radiationData).length > 0">
+      <span class="title">光谱辐射测量数据</span>
+      <el-form :rules="radiationRules" :key="radiationData.createTime" :disabled="checkShow || addBtn"
+        ref="radiationData" size="mini" :model="radiationData" label-width="80px">
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="型号" prop="model">
+            <el-input v-model="radiationData.model" placeholder="请输入型号" />
+          </el-form-item>
+          <el-form-item label="镜头视场角" prop="lensFView" label-width="95px">
+            <el-input v-model="radiationData.lensFView" placeholder="请输入镜头视场角(单位:mrad)" />
+          </el-form-item>
+          <el-form-item label="增益" prop="gain">
+            <el-input v-model.number="radiationData.gain" placeholder="请输入增益(单位:x)" />
+          </el-form-item>
+        </el-row>
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="背景数据" prop="backgroundData">
+            <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['lgm']"
+              v-model="radiationData.backgroundData" />
+          </el-form-item>
+          <el-form-item label="标定曲线" prop="calCurve">
+            <file-upload :isCheck="isCheck" :fileSize="0" :limit="5" :fileType="['txt']" :isShowViev="true"
+              v-model="radiationData.calCurve" v-on:fileView="fileView" />
+          </el-form-item>
+          <el-col :span="7"></el-col>
+        </el-row>
+        <el-row style="margin-left: 2%;" type="flex">
+          <el-form-item label="标定温度" prop="calTemp">
+            <el-table :data="calTempData" size="mini" border style="width: 600px">
+              <el-table-column prop="temp" label="温度" width="100px" align="center">
+              </el-table-column>
+              <el-table-column prop="calTempFile" label="文件" align="center">
+              </el-table-column>
+              <el-table-column label="操作" width="100px" align="center" class-name="small-padding fixed-width">
+                <template slot-scope="scope">
+                  <el-button size="mini" type="text" icon="el-icon-delete" @click="delCalTemp(scope.row)">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-form-item>
+          <el-form-item label="" label-width="10px">
+            <i style="font-size: 1.5rem;margin-top: 10px;" class="el-icon-circle-plus-outline" @click="addCalTemp"
+              v-if="!(checkShow || addBtn)"></i>
+          </el-form-item>
+        </el-row>
+      </el-form>
+      <div class="box" style="margin-bottom: 15px">
+        <span class="title">目标数据</span>
+        <el-form ref="radiationData" :disabled="checkShow || addBtn" size="mini" :rules="radiationRules"
+          :model="radiationData" label-width="80px">
+          <el-row type="flex" justify="space-around">
+            <el-form-item label="原始数据" prop="rawData">
+              <file-upload :isCheck="isCheck" :fileSize="0" :limit="5" :fileType="['txt']"
+                v-model="radiationData.rawData" />
+            </el-form-item>
+            <el-form-item label="辐射亮度3~5μm" label-width="130px" prop="radiance1">
+              <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']"
+                v-model="radiationData.radiance1" :isShowViev="true" v-on:fileView="fileView" />
+            </el-form-item>
+            <el-form-item label="辐射亮度8~14μm" label-width="130px" prop="radiance2">
+              <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']"
+                v-model="radiationData.radiance2" />
+            </el-form-item>
+          </el-row>
+        </el-form>
+      </div>
+    </div>
+    <div class="box" v-if="TIData && Object.keys(TIData).length > 0">
+      <span class="title">热像仪测量数据</span>
+      <el-form ref="TIData" :disabled="checkShow || addBtn" :rules="TIRules" :key="TIData.createTime" :model="TIData"
+        size="mini" label-width="80px">
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="型号" prop="model">
+            <el-input v-model="TIData.model" placeholder="请输入型号" />
+          </el-form-item>
+          <el-form-item label="镜头视场角" label-width="95px" prop="lensFView">
+            <el-select v-model="TIData.lensFView" placeholder="请选择镜头视场角">
+              <el-option v-for="item in lensFViewOptions" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="滤镜编号" prop="filterNo">
+            <el-select v-model="TIData.filterNo" placeholder="请选择滤镜编号">
+              <el-option v-for="item in filterNoOptions" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-row>
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="帧率" prop="fps">
+            <el-select v-model="TIData.fps" placeholder="请选择帧率">
+              <el-option v-for="item in fpsOptions" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select> </el-form-item><el-form-item label="波段" prop="spectralBand">
+            <el-select v-model="TIData.spectralBand" placeholder="请选择波段">
+              <el-option v-for="item in spectralBandOptions" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="积分时间" prop="integrationTime">
+            <el-input v-model.number="TIData.integrationTime" placeholder="请输入积分时间(单位:s)" />
+          </el-form-item>
+        </el-row>
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="温度标定" prop="tempCal">
+            <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIData.tempCal" />
+          </el-form-item>
+          <el-form-item label="辐射亮度" prop="radiance">
+            <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIData.radiance"
+              :isShowViev="true" v-on:fileView="fileView2" />
+          </el-form-item>
+          <el-form-item label="辐射照度" prop="radIllumination">
+            <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']"
+              v-model="TIData.radIllumination" :isShowViev="true" v-on:fileView="fileView" />
+          </el-form-item>
+        </el-row>
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="辐射温度" prop="radTemp">
+            <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIData.radTemp"
+              :isShowViev="true" v-on:fileView="fileView" />
+          </el-form-item>
+          <el-col :span="7"></el-col>
+          <el-col :span="7"></el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <div class="box" v-if="TransmittanceData">
+      <span class="title">透过率数据</span>
+      <el-form :disabled="checkShow || addBtn" ref="TransmittanceData" :model="TransmittanceData" label-width="80px">
+        <el-row type="flex" justify="space-around">
+          <el-form-item label="原始数据" prop="rawData">
+            <file-upload :fileSize="0" :limit="1" :isCheck="isCheck" :fileType="['txt']"
+              v-model="TransmittanceData.rawData" />
+          </el-form-item>
+          <el-form-item label="透过率曲线3~5μm" label-width="130px" prop="curve1">
+            <file-upload :fileSize="0" :limit="1" :isCheck="isCheck" :fileType="['txt']" :isShowViev="true"
+              v-on:fileView="fileView" v-model="TransmittanceData.curve1" />
+          </el-form-item>
+          <el-form-item label="透过率曲线8~14μm" label-width="135px" prop="curve2">
+            <file-upload :fileSize="0" :isCheck="isCheck" :limit="1" :fileType="['txt']"
+              v-model="TransmittanceData.curve2" :isShowViev="true" v-on:fileView="fileView" />
+          </el-form-item>
+        </el-row>
+      </el-form>
+    </div>
+    <div v-if="!isCheck" slot="footer" class="footerBtn">
+      <el-button type="primary" @click="submitForm">确 定</el-button>
+      <el-button @click="cancel" style="margin-left: 40px;">取 消</el-button>
+    </div>
+    <el-dialog :close-on-click-modal="false" title="增加标定温度" :visible.sync="addCalTempVisible" width="500px"
+      append-to-body>
+      <el-form ref="calTempForm" :model="calTempForm" label-width="60px">
+        <el-form-item label="温度" prop="temp">
+          <el-input v-model="calTempForm.temp" placeholder="请输入温度" />
+        </el-form-item>
+        <el-form-item label="文件" prop="calTempFile">
+          <file-upload :fileSize="0" :limit="1" :isCheck="isCheck" :fileType="['txt']"
+            v-model="calTempForm.calTempFile" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitCalTemp">确 定</el-button>
+        <el-button @click="cancelCalTemp">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" title="数据可视化" :visible.sync="fileVisible" width="70%" append-to-body>
+      <ECharts class="chartShow" :chartData="chartData" :width="chartType === 'heatmap' ? '400px' :'100%'" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listEngineModel } from "@/api/meas/engineModel";
+import { angleOption } from "@/api/meas/angle";
+import { statusOption } from "@/api/meas/status";
+import { listMeasBatch } from "@/api/meas/measBatch";
+import ECharts from "@/views/meas/envData/ECharts.vue";
+export default {
+  name: "dialogContent",
+  components: { ECharts },
+  props: {
+    form: {
+      type: Object,
+      default: null,
+    },
+    radiationForm: {
+      type: Object,
+      default: null,
+    },
+    TIForm: {
+      type: Object,
+      default: null,
+    },
+    TransmittanceForm: {
+      type: Object,
+      default: null,
+    },
+    envSaveBtn: {
+      type: Boolean,
+      default: false,
+    },
+    isCheck: {
+      type: Boolean,
+      default: false,
+    },
+    addFlag: {
+      type: Boolean,
+      default: false,
+    },
+    engineModelList: {
+      type: Array,
+      default: null,
+    },
+    angleList: {
+      type: Array,
+      default: null,
+    },
+    measureBatchList: {
+      type: Array,
+      default: null,
+    },
+    engineStatusList: {
+      type: Array,
+      default: null,
+    }
+  },
+  data() {
+    return {
+      baseUrl: process.env.VUE_APP_BASE_API,
+      addDialogVisible: false,
+      addMeasVisible: false,
+      engineModelOption: this.engineModelList,
+      measureBatchOption: this.measureBatchList,
+      angleOption: this.angleList,
+      engineStatusOption: this.engineStatusList,
+      // 热像仪测试
+      lensFViewOptions: [],
+      filterNoOptions: [],
+      fpsOptions: [],
+      spectralBandOptions: [],
+      // 表单校验和验证
+      formRules: {
+        model: [
+          { required: true, message: "发动机型号不能为空", trigger: "change" },
+        ],
+        measurementBatchId: [
+          { required: true, message: "测量批次id不能为空", trigger: "blur" },
+        ],
+        engineStatus: [
+          { required: true, message: "发动机状态不能为空", trigger: "change" },
+        ],
+        angle: [{ required: true, message: "角度不能为空", trigger: "change" }],
+        testDistance: [
+          {
+            pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{0,2})?|1000(\.00?)?)$/,
+            message: "请输入0.00-1000.00之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
+        ],
+        time: [{ required: true, message: "时间不能为空", trigger: "change" }],
+        location: [
+          { required: true, message: "地点不能为空", trigger: "blur" },
+          {
+            min: 0,
+            max: 50,
+            message: "长度在 0 到 50 个字符",
+            trigger: "blur",
+          },
+        ],
+        atmosPress: [
+          {
+            pattern:
+              /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{1,2})?|1[0-4]\d{2}(\.\d{0,2})?|1500(\.00?)?)$/,
+            message: "请输入0.00-1500.00pa之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
+        ],
+        temperature: [
+          {
+            pattern: /^(230|2[3-9]\d|30\d|31\d|320)(\.\d{0,2})?$/,
+            message: "请输入230.00-320.00K之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
+        ],
+        windSpeed: [
+          {
+            pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{0,2})?|1000(\.00?)?)$/,
+            message: "请输入0.00-1000.00m/s之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
+        ],
+        humidity: [
+          {
+            pattern: /(^(\d|[1-9]\d)(\.\d{0,2})?$)|(^100$)/,
+            message: "请输入0.00-100.00%之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
+        ],
+        concentration: [
+          {
+            pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{0,2})?|1000(\.00?)?)$/,
+            message: "请输入0.00-1000.00mol之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
+        ],
+      },
+      radiationRules: {
+        model: [
+          { required: true, message: "型号不能为空", trigger: "blur" },
+          { min: 0, max: 50, message: '长度在 0 到 50 个字符', trigger: 'blur' }
+        ],
+        lensFView: [
+          { required: true, message: "镜头视场角不能为空" },
+          { required: true, pattern: /^(0|[1-8]?[0-9]|90)(\.\d{0,2})?$/, message: '请输入0.00-90.00mard之间的数字,最多可保留两位小数', trigger: 'blur' }
+        ],
+        gain: [
+          { required: true, message: '增益不能为空' },
+          { type: 'number', min: 1, max: 10, message: '请输入1-10x之间的数字', trigger: 'blur' }
+        ],
+
+      },
+      TIRules: {
+        model: [
+          { required: true, message: "型号不能为空", trigger: "blur" },
+          { min: 0, max: 50, message: '长度在 0 到 50 个字符', trigger: 'blur' }
+        ],
+        // lensFView:[
+        //   { required: true, message: "镜头视场角不能为空", trigger: "change" },
+        // ],
+        integrationTime: [
+          { type: 'number', min: 1, max: 100, message: '请输入1-100s之间的数字', trigger: 'blur' }
+        ]
+      },
+      formData: this.form,
+      radiationData: this.radiationForm,
+      TIData: this.TIForm,
+      TransmittanceData: this.TransmittanceForm,
+      formFlag: JSON.parse(JSON.stringify(this.form)),
+      radiationFlag: JSON.parse(JSON.stringify(this.radiationForm)),
+      TIFlag: JSON.parse(JSON.stringify(this.TIForm)),
+      TransmittanceFlag: JSON.parse(JSON.stringify(this.TransmittanceForm)),
+      checkShow: this.isCheck,
+      addBtn: this.addFlag,
+      // 过滤后的measureBatchOption
+      batchOption: [],
+      addCalTempVisible: false,
+      calTempData: [],
+      calTempForm: {
+        temp: null,
+        calTempFile: null,
+      },
+      changeFlag: [],
+      chartType: "",
+      fileVisible: false,
+      chartData: {},
+    };
+  },
+  created() {
+  },
+  watch: {
+    form: {
+      handler(newVal) {
+        this.formData = newVal;
+      },
+      immediate: true
+    },
+    radiationForm: {
+      handler(newVal) {
+        this.radiationData = newVal;
+      },
+      immediate: true
+    },
+    TIForm: {
+      handler(newVal) {
+        this.TIData = newVal;
+      },
+      immediate: true
+    },
+    TransmittanceForm: {
+      handler(newVal) {
+        this.TransmittanceData = newVal;
+      },
+      immediate: true
+    },
+    isCheck: {
+      handler(newVal) {
+        this.checkShow = newVal;
+      },
+    },
+    addFlag: {
+      handler(newVal) {
+        this.addBtn = newVal;
+      },
+    },
+    engineModelList: {
+      handler(newVal) {
+        this.engineModelOption = newVal;
+      },
+    },
+    measureBatchList: {
+      handler(newVal) {
+        this.measureBatchOption = newVal;
+      },
+    },
+    angleList: {
+      handler(newVal) {
+        this.angleOption = newVal;
+      },
+    },
+    engineStatusList: {
+      handler(newVal) {
+        this.engineStatusOption = newVal;
+      },
+    },
+    calTempData: {
+      handler(newVal) {
+        this.radiationForm.calTemp = JSON.stringify(newVal);
+      },
+    }
+  },
+  methods: {
+    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 "";
+      }
+    },
+    // 清除验证表单
+    // clearcheck(formName){
+    //   if(this.$refs[formName]){
+    //     this.$refs[formName].clearValidate()
+    //   } 
+    // },
+    // 点击增加按钮
+    onClickBtn(type) {
+      this.$emit('on-click-btn', type)
+    },
+    changeEngine(val) {
+      let obj = {};
+      obj = this.engineModelOption.find((item) => {
+        return item.id === val;
+      });
+      this.form.geometryFiles = obj.geometryFiles
+      this.form.geometryImage = obj.geometryImage
+      this.batchOption = this.measureBatchOption.filter(item => { return item.engineId === val })
+    },
+    addCalTemp() {
+      this.resetCalTempForm()
+      this.addCalTempVisible = true
+    },
+    submitCalTemp() {
+      this.calTempData.push(this.calTempForm)
+      this.addCalTempVisible = false
+      this.resetCalTempForm()
+    },
+    cancelCalTemp() {
+      this.addCalTempVisible = false
+      this.resetCalTempForm()
+    },
+    resetCalTempForm() {
+      this.calTempForm = {
+        temp: null,
+        calTempFile: null,
+      }
+    },
+    delCalTemp(row) {
+      this.calTempData = this.calTempData.filter(item => {
+        return item !== row
+      });
+    },
+    // 环境参数保存
+    envDataSave() {
+      if (this.$refs.formData.validate()) {
+        this.$emit('env-data-save', this.$refs["form"])
+      }
+
+    },
+    validateAll() {
+      return Promise.all([
+        this.$refs.formData.validate(),
+        this.$refs.radiationData.validate(),
+        this.$refs.TIData.validate(),
+        this.$refs.TransmittanceData.validate()
+      ]);
+    },
+    submitForm() {
+      this.validateAll()
+        .then(() => {
+          // console.log("11", this.TransmittanceForm, this.TransmittanceFlag);
+          if (!this.isObjectEqual(this.formFlag, this.form)) {
+            this.changeFlag.push(1)
+          }
+          if (!this.isObjectEqual(this.radiationFlag, this.radiationForm)) {
+            this.changeFlag.push(2)
+          }
+          if (!this.isObjectEqual(this.TIFlag, this.TIForm)) {
+            this.changeFlag.push(3)
+          }
+          if (!this.isObjectEqual(this.TransmittanceFlag, this.TransmittanceForm)) {
+            this.changeFlag.push(4)
+          }
+          this.$emit('submit-form', this.$refs, this.changeFlag);
+        })
+        .catch((err) => {
+          console.log('出现错误', err);
+        });
+    },
+    isObjectEqual(obj1, obj2) {
+      if (obj1 === obj2) return true;
+      if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {
+        return false;
+      }
+      const keys1 = Object.keys(obj1);
+      for (let key of keys1) {
+        if (obj1[key] && typeof obj1[key] === 'object') {
+          // 如果 obj1 的属性是对象,则递归比较
+          if (!partialEqual(obj1[key], obj2[key])) {
+            return false;
+          }
+        } else {
+          // 否则,直接比较属性值
+          if (obj1[key] !== obj2[key]) {
+            return false;
+          }
+        }
+      }
+      return true;
+    },
+    cancel() {
+      this.$emit('cancel')
+    },
+    // 查看文件可视化
+    fileView(url1) {
+      const url = `${process.env.VUE_APP_BASE_API}${url1}`;
+      this.fetchLogFile(url)
+        .then((text) => {
+          this.fileShowData = text.split("\r\n");
+          this.handleLineChart(this.fileShowData);
+          this.fileVisible = true;
+        })
+        .catch((error) => {
+          console.error("Failed to fetch the log file:", error);
+          this.$modal.msgSuccess("文件读取错误");
+        });
+    },
+    fileView2(url1) {
+      const url = `${process.env.VUE_APP_BASE_API}${url1}`;
+      this.fetchLogFile(url)
+        .then((text) => {
+          this.fileShowData = text.split("\r\n");
+          this.handleHeatmapChart(this.fileShowData);
+          this.fileVisible = true;
+        })
+        .catch((error) => {
+          console.error("Failed to fetch the log file:", error);
+          this.$modal.msgSuccess("文件读取错误");
+        });
+    },
+    // 读取文件内容
+    async fetchLogFile(url) {
+      try {
+        const response = await fetch(url, { method: "GET" });
+        if (!response.ok) {
+          throw new Error(`HTTP error! status: ${response.status}`);
+        }
+        return await response.text();
+      } catch (error) {
+        throw error;
+      }
+    },
+    // echarts数据
+    handleLineChart(data) {
+      this.chartType = "line";
+      const data1 = data[0].replace(/\s+/g, " ").split(" ");
+      const customName = data1.map(label => ({ [label + 'Data']: [] }))
+      let yAxis = [], series = []
+      for (let i = 1; i < data.length; i++) {
+        let row = data[i].split("\t");
+        customName.forEach((item, index) => {
+          for (let key in item) {
+            item[key].push(parseFloat(row[index]))
+          }
+        })
+      }
+      console.log("customName", customName);
+      // delete data1[Object.keys(data1)[0]]
+      customName.forEach((item, index) => {
+        if (index === 0) return
+        else {
+          yAxis.push({
+            type: "value",
+            name: data1[index],
+            position: index === 1 ? 'left' : 'right',
+            alignTicks: true,
+            axisLine: {
+              show: true,
+            },
+          })
+          series.push({
+            name: data1[index],
+            type: "line",
+            data: item[Object.keys(item)[0]],
+          },)
+        }
+      })
+      console.log("11", Object.values(customName[0]));
+      const chartData = {
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "cross",
+          },
+        },
+        xAxis: [
+          {
+            type: "category",
+            name: data1[0],
+            axisTick: {
+              alignWithLabel: true,
+            },
+            axisLine: {
+              show: true,
+            },
+
+            data: Object.values(customName[0])[0],
+          },
+        ],
+        yAxis: yAxis,
+        series: series,
+      };
+      this.chartData = JSON.parse(JSON.stringify(chartData))
+    },
+    handleHeatmapChart(data) {
+      this.chartType = "heatmap";
+      // console.log("data",data);
+      let dataSet = [],
+        xData = [],
+        yData = [];
+      let min = Infinity; // 初始化最小值为无穷大
+      let max = -Infinity; // 初始化最大值为负无穷大
+      const num = Math.ceil(Math.sqrt(data.length));
+      for (let i = 0; i < num; i++) {
+        xData.push(i);
+      }
+      let x = 0,
+        y = 0;
+      for (let i = 15; i < data.length; i++) {
+        let row = parseFloat(data[i].split(","));
+        dataSet.push([y++, x, parseFloat(row)]);
+        if (row > max) max = row;
+        if (row < min) min = row;
+        if (y === num) {
+          yData.push(x);
+          x++;
+          y = 0;
+        }
+      }
+      console.log("dataSet", dataSet);
+      const chartData = {
+        tooltip: {},
+        xAxis: {
+          type: "category",
+          data: xData,
+        },
+        yAxis: {
+          type: "category",
+          data: yData,
+        },
+        visualMap: {
+          min: min,
+          max: max,
+          calculable: true,
+          precision: 4,
+          inRange: {
+            color: ["#FFFFFF", "#000000"],
+          },
+        },
+        series: [
+          {
+            name: "辐射亮度",
+            type: "heatmap",
+            data: dataSet,
+            emphasis: {
+              itemStyle: {
+                borderColor: "#333",
+                borderWidth: 1,
+              },
+            },
+            progressive: 1000,
+            animation: false,
+          },
+        ],
+      };
+      this.chartData = JSON.parse(JSON.stringify(chartData))
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.box {
+  border: 1px solid #dcdfe6;
+  border-radius: 10px;
+  padding: 20px 15px 0px 15px;
+  margin-top: 20px;
+  position: relative;
+
+  .title {
+    padding: 10px;
+    background-color: white;
+    position: absolute;
+    top: -20px;
+    font-weight: 700;
+    font-size: 1rem;
+  }
+}
+
+::v-deep .el-upload--picture-card {
+  width: 80px;
+  height: 80px;
+  line-height: 86px
+}
+
+::v-deep .el-upload-list--picture-card .el-upload-list__item {
+  width: 80px;
+  height: 80px;
+}
+
+.chartShow {
+  margin: 0 auto;
+}
+
+.footerBtn {
+  transform: translateX(40%);
+  margin-top: 20px;
+}
+</style>

+ 189 - 151
meas_web/src/views/meas/dataResults/index.vue

@@ -1,29 +1,22 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="150px">
-      <el-form-item label="测量批次id" label-width="90px" prop="measurementBatchId">
-        <el-input
-          v-model="queryParams.measurementBatchId"
-          placeholder="请输入测量批次id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+      <el-form-item label="测量批次" prop="measurementBatch">
+        <el-input v-model="queryParams.measurementBatch" placeholder="请输入测量批次" clearable
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="波段辐射强度3~5μm" prop="specBandIrr1">
-        <el-input
-          v-model="queryParams.specBandIrr1"
-          placeholder="请输入波段辐射强度3~5μm"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="发动机型号" prop="model">
+        <el-input v-model="queryParams.model" placeholder="请输入发动机型号" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="波段辐射强度8~14μm" prop="specBandIrr2">
-        <el-input
-          v-model="queryParams.specBandIrr2"
-          placeholder="请输入波段辐射强度8~14μm"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="发动机状态" prop="engineStatus">
+        <el-select v-model="queryParams.engineStatus" placeholder="请选择发动机状态" clearable>
+          <el-option v-for="(item, index) in engineStatusOptions" :key="index" :label="item" :value="item" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="角度" prop="angle">
+        <el-select v-model="queryParams.angle" placeholder="请选择角度" clearable>
+          <el-option v-for="item in angleOptions" :key="item" :label="item" :value="item" />
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -33,107 +26,81 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['meas:dataResults:add']"
-        >新增</el-button>
+        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+          v-hasPermi="['meas:dataResults:edit']">修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+          v-hasPermi="['meas:dataResults:remove']">删除</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['meas:dataResults:edit']"
-        >修改</el-button>
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['meas:dataResults:export']">导出</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['meas:dataResults:remove']"
-        >删除</el-button>
+        <el-tooltip style="margin: 4px;" effect="dark" content="正在开发中..." placement="bottom">
+          <el-button type="primary" plain icon="el-icon-view" size="mini" :disabled="single" v-hasPermi="['meas:dataResults:edit']">光谱可视化</el-button>
+        </el-tooltip>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['meas:dataResults:export']"
-        >导出</el-button>
+        <el-tooltip style="margin: 4px;" effect="dark" content="正在开发中..." placement="bottom">
+          <el-button type="danger" plain icon="el-icon-view" size="mini" :disabled="single" v-hasPermi="['meas:dataResults:edit']">波段可视化</el-button>
+        </el-tooltip>
+        
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="dataResultsList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="测量环境id" align="center" prop="measurementBatchId" />
-      <el-table-column label="光谱辐射强度3~5μm" align="center" prop="specIrr1" />
-      <el-table-column label="光谱辐射强度8~14μm" align="center" prop="specIrr2" />
-      <el-table-column label="波段辐射强度3~5μm" align="center" prop="specBandIrr1" />
-      <el-table-column label="波段辐射强度8~14μm" align="center" prop="specBandIrr2" />
-      <el-table-column label="创建人" align="center" prop="createBy" />
-      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="测量批次" align="center" prop="measurementBatch" />
+      <el-table-column label="发动机型号" align="center" prop="model" />
+      <el-table-column label="发动机状态" align="center" prop="engineStatus">
+      </el-table-column>
+      <el-table-column label="发动机角度" align="center" prop="angle">
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['meas:dataResults:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['meas:dataResults:remove']"
-          >删除</el-button>
+          <el-button size="mini" type="text" icon="el-icon-view" v-hasPermi="['meas:envData:edit']"
+            @click="checkView(scope.row)">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['meas:dataResults:edit']">修改</el-button>
+          <el-button size="mini" type="text" icon="el-icon-document">计算</el-button>
         </template>
       </el-table-column>
     </el-table>
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
 
     <!-- 添加或修改数据结果对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="150px">
-        <el-form-item label="测量环境id" label-width="90px" prop="measurementBatchId">
-          <el-input v-model="form.measurementBatchId" placeholder="请输入测量环境id" />
-        </el-form-item>
-        <el-form-item label="光谱辐射强度3~5μm" prop="specIrr1">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.specIrr1"/>
-        </el-form-item>
-        <el-form-item label="光谱辐射强度8~14μm" prop="specIrr2">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.specIrr2"/>
-        </el-form-item>
-        <el-form-item label="波段辐射强度3~5μm" prop="specBandIrr1">
-          <el-input v-model="form.specBandIrr1" placeholder="请输入波段辐射强度3~5μm" />
-        </el-form-item>
-        <el-form-item label="波段辐射强度8~14μm" prop="specBandIrr2">
-          <el-input v-model="form.specBandIrr2" placeholder="请输入波段辐射强度8~14μm" />
-        </el-form-item>
-      </el-form>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="70%" append-to-body>
+      <dialogContent :form="form" :isCheck="isCheck" />
+      <el-row type="flex" justify="space-around">
+        <el-button size="mini" type="success" style="margin-top: 20px">计算数据</el-button>
+      </el-row>
+
+      <div class="box">
+        <span class="title">计算结果</span>
+        <el-form ref="resultForm" :model="resultForm" size="mini" :rules="rules" label-width="150px">
+          <el-row type="flex" justify="space-around">
+            <el-form-item label="光谱辐射强度3~5μm" prop="specIrr1">
+              <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="resultForm.specIrr1" />
+            </el-form-item>
+            <el-form-item label="光谱辐射强度8~14μm" prop="specIrr2">
+              <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="resultForm.specIrr2" />
+            </el-form-item>
+          </el-row>
+          <el-row type="flex" justify="space-around">
+            <el-form-item label="波段辐射强度3~5μm" prop="specBandIrr1">
+              <el-input v-model="resultForm.specBandIrr1" placeholder="请输入波段辐射强度3~5μm" />
+            </el-form-item>
+            <el-form-item label="波段辐射强度8~14μm" prop="specBandIrr2">
+              <el-input v-model="resultForm.specBandIrr2" placeholder="请输入波段辐射强度8~14μm" />
+            </el-form-item>
+          </el-row>
+        </el-form>
+      </div>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
@@ -143,16 +110,27 @@
 </template>
 
 <script>
-import { listDataResults, getDataResults, delDataResults, addDataResults, updateDataResults } from "@/api/meas/dataResults";
+import {
+  listDataResults,
+  getDataResults,
+  delDataResults,
+  updateDataResults,
+  getResultByEnvData
+} from "@/api/meas/dataResults";
+import { angleOption } from "@/api/meas/angle";
+import { statusOption } from "@/api/meas/status";
+import dialogContent from "@/views/meas/components/dialogContent";
+import { getEnvData } from "@/api/meas/envData";
 
 export default {
   name: "DataResults",
+  components: { dialogContent },
   data() {
     return {
       // 遮罩层
       loading: true,
       // 选中数组
-      ids: [],
+      measurementBatchIds: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -179,34 +157,66 @@ export default {
       },
       // 表单参数
       form: {},
+      resultForm: {},
       // 表单校验
       rules: {
-        measurementBatchId:[
-          { required: true, message: "测量环境id不能为空"},
-          {type: 'number', message: '测量环境id必须为数字',trigger: 'blur'}
+        measurementBatchId: [
+          { required: true, message: "测量环境id不能为空" },
+          { type: "number", message: "测量环境id必须为数字", trigger: "blur" },
         ],
         specBandIrr1: [
-          { pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{1,2})?|1000(\.00?)?)$/, message: '请输入0.00-1000.00之间的数字,最多可保留两位小数',trigger: 'blur'}
+          {
+            pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{1,2})?|1000(\.00?)?)$/,
+            message: "请输入0.00-1000.00之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
         ],
         specBandIrr2: [
-          { pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{1,2})?|1000(\.00?)?)$/, message: '请输入0.00-1000.00之间的数字,最多可保留两位小数',trigger: 'blur'}
+          {
+            pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{1,2})?|1000(\.00?)?)$/,
+            message: "请输入0.00-1000.00之间的数字,最多可保留两位小数",
+            trigger: "blur",
+          },
         ],
-      }
+      },
+      // 发动机状态
+      engineStatusOptions: [],
+      // 发动机角度
+      angleOptions: [],
+      isCheck: true,
     };
   },
   created() {
     this.getList();
+    this.getAngleOption();
+    this.getStatusOption();
   },
   methods: {
     /** 查询数据结果列表 */
     getList() {
       this.loading = true;
-      listDataResults(this.queryParams).then(response => {
+      listDataResults(this.queryParams).then((response) => {
         this.dataResultsList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
     },
+    // 获取角度Option
+    getAngleOption() {
+      this.loading = true;
+      angleOption().then((response) => {
+        this.angleOptions = response.data;
+        this.loading = false;
+      });
+    },
+    // 获取状态Option
+    getStatusOption() {
+      this.loading = true;
+      statusOption().then((response) => {
+        this.engineStatusOptions = response.data;
+        this.loading = false;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -214,19 +224,26 @@ export default {
     },
     // 表单重置
     reset() {
-      this.form = {
+      this.resultForm = {
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null,
         id: null,
         measurementBatchId: null,
+        model: null,
+        geometryFiles: null,
+        geometryImage: null,
+        measurementBatch: null,
+        engineStatus: null,
+        angle: null,
         specIrr1: null,
         specIrr2: null,
         specBandIrr1: null,
-        specBandIrr2: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null
+        specBandIrr2: null
       };
-      this.resetForm("form");
+      this.resetForm("resultForm");
     },
     /** 搜索按钮操作 */
     handleQuery() {
@@ -240,62 +257,83 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.measurementBatchIds = selection.map((item) => item.measurementBatchId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加数据结果";
+    checkView(row) {
+      this.handleUpdate(row)
+      this.isCheck = true
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getDataResults(id).then(response => {
+      const id = row.measurementBatchId || this.measurementBatchIds;
+      getEnvData(id).then((response) => {
         this.form = response.data;
+      });
+      getResultByEnvData(id).then((response) => {
+        this.resultForm = response.data;
         this.open = true;
-        this.title = "修改数据结果";
+        this.title = this.isCheck?'查看数据结果':"修改数据结果";
       });
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["resultForm"].validate((valid) => {
         if (valid) {
-          if (this.form.id != null) {
-            updateDataResults(this.form).then(response => {
+          if (this.resultForm.measurementBatchId != null) {
+            updateDataResults(this.resultForm).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
-          } else {
-            addDataResults(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
           }
         }
       });
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除数据结果编号为"' + ids + '"的数据项?').then(function() {
-        return delDataResults(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      const ids = row.measurementBatchId || this.measurementBatchIds;
+      this.$modal
+        .confirm('是否确认删除数据结果编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delDataResults(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => { });
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('meas/dataResults/export', {
-        ...this.queryParams
-      }, `dataResults_${new Date().getTime()}.xlsx`)
-    }
-  }
+      this.download(
+        "meas/dataResults/export",
+        {
+          ...this.queryParams,
+        },
+        `dataResults_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
 };
 </script>
+<style scoped lang="scss">
+.box {
+  border: 1px solid #dcdfe6;
+  border-radius: 10px;
+  padding: 20px 15px 0px 15px;
+  margin-top: 20px;
+  position: relative;
+
+  .title {
+    padding: 10px;
+    background-color: white;
+    position: absolute;
+    top: -20px;
+    font-weight: 700;
+    font-size: 1rem;
+  }
+}
+</style>

+ 18 - 13
meas_web/src/views/meas/engineModel/index.vue

@@ -63,22 +63,21 @@
 
     <el-table v-loading="loading" :data="engineModelList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="发动机型号" align="center" prop="model" />
-      <el-table-column label="几何模型文件" align="center" prop="geometryFiles" />
-      <el-table-column label="几何模型图片" align="center" prop="geometryImage">
+      <!-- <el-table-column label="几何模型图片" align="center" prop="geometryImage">
         <template slot-scope="scope">
           <image-preview :src="scope.row.geometryImage" :width="50" :height="50"/>
         </template>
-      </el-table-column>
-      <!-- <el-table-column label="创建人" align="center" prop="createBy" />
-      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
-        </template>
       </el-table-column> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="checkView(scope.row)"
+            v-hasPermi="['meas:engineModel:edit']"
+          >查看</el-button>
           <el-button
             size="mini"
             type="text"
@@ -106,8 +105,8 @@
     />
 
     <!-- 添加或修改发动机型号对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open"  width="500px" append-to-body>
+      <el-form ref="form" :model="form" :disabled="isCheck" :rules="rules" label-width="100px">
         <el-form-item label="发动机型号" prop="model">
           <el-input v-model="form.model" placeholder="请输入发动机型号" />
         </el-form-item>
@@ -118,7 +117,7 @@
           <image-upload  :fileSize="0" :limit="1" :fileType="['jpg']" v-model="form.geometryImage"/>
         </el-form-item>
       </el-form>
-      <div slot="footer" class="dialog-footer">
+      <div v-if="!isCheck" slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
@@ -161,6 +160,7 @@ export default {
       },
       // 表单参数
       form: {},
+      isCheck:false,
       // 表单校验
       rules: {
         model: [
@@ -224,6 +224,11 @@ export default {
       this.open = true;
       this.title = "添加发动机型号";
     },
+    // 查看
+    checkView(row){
+      this.isCheck=true
+      this.handleUpdate(row)
+    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
@@ -231,7 +236,7 @@ export default {
       getEngineModel(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改发动机型号";
+        this.title = this.isCheck?'查看发动机型号':"修改发动机型号";
       });
     },
     /** 提交按钮 */

+ 27 - 19
meas_web/src/views/meas/envData/ECharts.vue

@@ -6,7 +6,8 @@
   import * as echarts from 'echarts'
   require('echarts/theme/macarons') // echarts theme
   import resize from '../../dashboard/mixins/resize'
-  
+  var chart
+
   export default {
     name: "ECharts",
     mixins: [resize],
@@ -29,46 +30,53 @@
       },
       chartData: {
         type: Object,
-        required: true
+        required: true,
+        default: null
       }
     },
     data() {
       return {
-        chart: null
+        // chart: null
       }
     },
+    mounted() {
+      this.$nextTick(() => {
+        this.initChart()
+      })
+    },
     watch: {
       chartData: {
-        deep: true,
         handler(val) {
-          this.chart.dispose()
-          this.chart = null
+          if (chart) { 
+            chart.dispose();
+            chart = null;
+          }
           this.$nextTick(() => {
             this.initChart()
+            console.log("width",this.width);
+            // this.setOptions(val)
           })
-          this.setOptions(val)
-        }
+        },
+        deep: true,
+        immediate: true
       }
     },
-    mounted() {
-      this.$nextTick(() => {
-        this.initChart()
-      })
-    },
     beforeDestroy() {
-      if (!this.chart) {
-        return
+      if (chart) {
+        chart.dispose()
+        chart = null
       }
-      this.chart.dispose()
-      this.chart = null
     },
     methods: {
       initChart() {
-        this.chart = echarts.init(this.$el, 'macarons')
+        if(chart != null && chart != "" && chart != undefined){
+        	chart.dispose();//解决echarts dom已经加载的报错
+        }
+        chart = echarts.init(this.$el, 'macarons')
         this.setOptions(this.chartData)
       },
       setOptions(chartData) {
-        this.chart.setOption(chartData)
+        chart.setOption(chartData)
       }
     }
   }

ファイルの差分が大きいため隠しています
+ 272 - 613
meas_web/src/views/meas/envData/index.vue


+ 39 - 14
meas_web/src/views/meas/measBatch/index.vue

@@ -1,18 +1,19 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="发动机型号ID" label-width="100px" prop="engineId">
+      
+      <el-form-item label="测量批次" prop="measurementBatch">
         <el-input
-          v-model="queryParams.engineId"
-          placeholder="请输入发动机型号ID"
+          v-model="queryParams.measurementBatch"
+          placeholder="请输入测量批次"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="测量批次" prop="measurementBatch">
+      <el-form-item label="发动机型号" label-width="100px" prop="engineModel">
         <el-input
-          v-model="queryParams.measurementBatch"
-          placeholder="请输入测量批次"
+          v-model="queryParams.engineModel"
+          placeholder="请输入发动机型号"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -71,12 +72,19 @@
 
     <el-table v-loading="loading" :data="measBatchList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="发动机型号ID" align="center" prop="engineId" />
+      
       <el-table-column label="测量批次" align="center" prop="measurementBatch" />
+      <el-table-column label="发动机型号" align="center" prop="engineModel" />
       <!-- <el-table-column label="创建人" align="center" prop="createBy" /> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['meas:measBatch:edit']"
+          >查看</el-button>
           <el-button
             size="mini"
             type="text"
@@ -104,11 +112,11 @@
     />
 
     <!-- 添加或修改测量批次对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="发动机型号ID" label-width="110px" prop="engineId">
+        <el-form-item label="发动机型号" label-width="110px" prop="engineId">
           <!-- <el-input v-model.number="form.engineId" placeholder="请输入发动机型号ID" /> -->
-          <el-select v-model="form.engineId" placeholder="请选择发动机型号ID">
+          <el-select v-model="form.engineId" placeholder="请选择发动机型号" @change="engineChange">
             <el-option v-for="item in engineOptions" :key="item.id" :label="item.model"
               :value="item.id">
               <span style="float: left">{{ item.id }}</span>
@@ -166,7 +174,7 @@ export default {
       // 表单校验
       rules: {
         engineId: [
-          { required: true,type:'number', message: "发动机型号ID不能为空,且必须为数字", trigger: "blur" }
+          { required: true,type:'number', message: "发动机型号不能为空,且必须为数字", trigger: "blur" }
         ],
         measurementBatch: [
           { required: true, message: "测量批次不能为空", trigger: "blur" }
@@ -192,6 +200,24 @@ export default {
         this.loading = false;
       });
     },
+    engineChange(val){
+      let obj = {};
+      obj = this.engineOptions.find((item)=>{
+          return item.id === val;
+      });
+      this.form.measurementBatch=this.getTime()+'-'+obj.model
+    },
+    getTime() {
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = ('0' + (now.getMonth() + 1)).slice(-2);
+      const day = ('0' + now.getDate()).slice(-2);
+      const hour = ('0' + now.getHours()).slice(-2);
+      const minute = ('0' + now.getMinutes()).slice(-2);
+      const second = ('0' + now.getSeconds()).slice(-2);
+      const time = year + month + day + hour + minute + second;
+      return time;
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -230,7 +256,6 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加测量批次";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -239,7 +264,7 @@ export default {
       getMeasBatch(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改测量批次";
+        this.title = this.isCheck?'查看测量批次数据':"修改测量批次数据";
       });
     },
     /** 提交按钮 */

+ 100 - 118
meas_web/src/views/meas/radiation/index.vue

@@ -1,21 +1,22 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="测量环境id" label-width="90px" prop="measurementBatchId">
-        <el-input v-model="queryParams.measurementBatchId" placeholder="请输入测量环境id" clearable
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+      <el-form-item label="测量批次" prop="measurementBatch">
+        <el-input v-model="queryParams.measurementBatch" placeholder="请输入测量批次" clearable
           @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="型号" prop="model">
-        <el-input v-model="queryParams.model" placeholder="请输入型号" clearable @keyup.enter.native="handleQuery" />
+      <el-form-item label="发动机型号" prop="model">
+        <el-input v-model="queryParams.model" placeholder="请输入发动机型号" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label-width="90px" label="镜头视场角" prop="lensFView">
-        <el-input v-model="queryParams.lensFView" placeholder="请输入镜头视场角" clearable @keyup.enter.native="handleQuery" />
+      <el-form-item label="发动机状态" prop="engineStatus">
+        <el-select v-model="queryParams.engineStatus" placeholder="请选择发动机状态" clearable>
+          <el-option v-for="(item, index) in engineStatusOptions" :key="index" :label="item" :value="item" />
+        </el-select>
       </el-form-item>
-      <el-form-item label="增益" prop="gain">
-        <el-input v-model="queryParams.gain" placeholder="请输入增益" clearable @keyup.enter.native="handleQuery" />
-      </el-form-item>
-      <el-form-item label="标定温度" prop="calTemp">
-        <el-input v-model="queryParams.calTemp" placeholder="请输入标定温度" clearable @keyup.enter.native="handleQuery" />
+      <el-form-item label="角度" prop="angle">
+        <el-select v-model="queryParams.angle" placeholder="请选择角度" clearable>
+          <el-option v-for="item in angleOptions" :key="item" :label="item" :value="item" />
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -24,10 +25,6 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-          v-hasPermi="['meas:radiation:add']">新增</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
           v-hasPermi="['meas:radiation:edit']">修改</el-button>
@@ -45,25 +42,17 @@
 
     <el-table v-loading="loading" :data="radiationList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="测量环境id" align="center" prop="measurementBatchId" />
+      <el-table-column label="测量批次" align="center" prop="measurementBatch" />
+      <el-table-column label="发动机型号" align="center" prop="engineModel" />
+      <el-table-column label="发动机状态" align="center" prop="engineStatus"/>
+      <el-table-column label="发动机角度" align="center" prop="angle"/>
       <el-table-column label="型号" align="center" prop="model" />
       <el-table-column label="镜头视场角" align="center" prop="lensFView" />
       <el-table-column label="增益" align="center" prop="gain" />
-      <el-table-column label="背景数据" align="center" prop="backgroundData" />
-      <el-table-column label="标定温度" align="center" prop="calTemp" />
-      <el-table-column label="标定曲线" align="center" prop="calCurve" />
-      <el-table-column label="原始数据" align="center" prop="rawData" />
-      <el-table-column label="辐射亮度(3~5μm)" align="center" prop="radiance1" />
-      <el-table-column label="辐射亮度(8~14μm)" align="center" prop="radiance2" />
-      <!-- <el-table-column label="创建人" align="center" prop="createBy" />
-      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-</el-table-column> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" v-hasPermi="['meas:envData:edit']"
+            @click="checkView(scope.row)">查看</el-button>
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
             v-hasPermi="['meas:radiation:edit']">修改</el-button>
           <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
@@ -76,65 +65,28 @@
       @pagination="getList" />
 
     <!-- 添加或修改光谱辐射对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="测量环境id" label-width="100px" prop="measurementBatchId">
-          <el-select v-model="form.measurementBatchId" placeholder="请选择测量环境id">
-            <el-option v-for="item in measureBatchOptions" :key="item.id" :label="item.measurementBatch"
-              :value="item.id">
-              <span style="float: left">{{ item.id }}</span>
-              <span style="float: right; color: #8492a6; font-size: 13px">{{ item.measurementBatch }}</span>
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="型号" prop="model">
-          <el-input v-model="form.model" placeholder="请输入型号" />
-        </el-form-item>
-        <el-form-item label="镜头视场角" prop="lensFView" label-width="100px">
-          <el-input v-model="form.lensFView" placeholder="请输入镜头视场角(单位:mrad)" />
-        </el-form-item>
-        <el-form-item label="增益" prop="gain">
-          <el-input v-model.number="form.gain" placeholder="请输入增益(单位:x)" />
-        </el-form-item>
-        <el-form-item label="背景数据" prop="backgroundData">
-          <file-upload :fileSize="0" :limit="1" :fileType="['lgm']" v-model="form.backgroundData" />
-        </el-form-item>
-        <el-form-item label="标定温度" prop="calTemp">
-          <el-input v-model="form.calTemp" placeholder="请输入标定温度" />
-        </el-form-item>
-        <el-form-item label="标定曲线" prop="calCurve">
-          <file-upload :fileSize="0" :limit="5" :fileType="['txt']" v-model="form.calCurve" />
-        </el-form-item>
-        <el-form-item label="原始数据" prop="rawData">
-          <file-upload :fileSize="0" :limit="5" :fileType="['txt']" v-model="form.rawData" />
-        </el-form-item>
-        <el-form-item label="辐射亮度" prop="radiance1">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.radiance1" />
-        </el-form-item>
-        <el-form-item label="辐射亮度" prop="radiance2">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.radiance2" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="70%" append-to-body >
+      <dialogContent :radiationForm="radiationForm" @submit-form="submitForm" :form="form" @cancel="cancel" :isCheck="isCheck"/>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { listRadiation, getRadiation, delRadiation, addRadiation, updateRadiation } from "@/api/meas/radiation";
-import { listMeasBatch } from "@/api/meas/measBatch";
+import { listRadiation, getRadiation, delRadiation,updateRadiation,addRadiation,getRadiationByEnvData } from "@/api/meas/radiation";
+import { angleOption } from "@/api/meas/angle";
+import { statusOption } from "@/api/meas/status";
+import dialogContent from "@/views/meas/components/dialogContent";
+import { getEnvData, updateEnvData } from "@/api/meas/envData";
 
 export default {
   name: "Radiation",
+  components: { dialogContent },
   data() {
     return {
       // 遮罩层
       loading: true,
       // 选中数组
-      ids: [],
+      measurementBatchIds: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -165,31 +117,19 @@ export default {
         radiance2: null,
       },
       // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        measurementBatchId: [
-          { required: true, message: "测量环境id不能为空" },
-          { type: 'number', message: '测量环境id必须为数字', trigger: 'blur' }
-        ],
-        model: [
-          { required: true, message: "型号不能为空", trigger: "blur" },
-          { min: 0, max: 50, message: '长度在 0 到 50 个字符', trigger: 'blur' }
-        ],
-        lensFView: [
-          { required: true, message: "镜头视场角不能为空" },
-          { required: true, pattern: /^(0|[1-8]?[0-9]|90)(\.\d{1,2})?$/, message: '请输入0.00-90.00mard之间的数字,最多可保留两位小数', trigger: 'blur' }
-        ],
-        gain: [
-          { required: true, message: '增益不能为空' },
-          { type: 'number', min: 1, max: 10, message: '请输入1-10x之间的数字', trigger: 'blur' }
-        ],
-      },
-      measureBatchOptions: []
+      form:{},
+      radiationForm: {},
+      // 发动机状态
+      engineStatusOptions: [],
+      // 发动机角度
+      angleOptions: [],
+      isCheck:false,
     };
   },
   created() {
     this.getList();
+    this.getAngleOption();
+    this.getStatusOption();
   },
   methods: {
     /** 查询光谱辐射列表 */
@@ -200,9 +140,19 @@ export default {
         this.total = response.total;
         this.loading = false;
       });
-      const data = {}
-      listMeasBatch(data).then(response => {
-        this.measureBatchOptions = response.rows;
+    },
+    getAngleOption() {
+      this.loading = true;
+      angleOption().then((response) => {
+        this.angleOptions = response.data;
+        this.loading = false;
+      });
+    },
+    getStatusOption() {
+      this.loading = true;
+      statusOption().then((response) => {
+        this.engineStatusOptions = response.data;
+        this.loading = false;
       });
     },
     // 取消按钮
@@ -212,7 +162,7 @@ export default {
     },
     // 表单重置
     reset() {
-      this.form = {
+      this.radiationForm = {
         id: null,
         measurementBatchId: null,
         model: null,
@@ -229,7 +179,11 @@ export default {
         updateBy: null,
         updateTime: null
       };
-      this.resetForm("form");
+      this.resetForm("radiationForm");
+    },
+    checkView(row){
+      this.handleUpdate(row)
+      this.isCheck=true
     },
     /** 搜索按钮操作 */
     handleQuery() {
@@ -243,38 +197,53 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
+      this.measurementBatchIds = selection.map(item => item.measurementBatchId)
       this.single = selection.length !== 1
       this.multiple = !selection.length
     },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加光谱辐射";
-    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getRadiation(id).then(response => {
+      this.isCheck = false
+      const id = row.measurementBatchId || this.measurementBatchIds
+      getEnvData(id).then((response) => {
         this.form = response.data;
+      });
+      getRadiationByEnvData(id).then(response => {
+        this.radiationForm = response.data;
         this.open = true;
-        this.title = "修改光谱辐射";
+        this.title = this.isCheck?'查看光谱辐射数据':"修改光谱辐射数据";
       });
     },
     /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
+    submitForm(value,changeFlag) {
+      value['formData'].validate((valid) => {
+        if (valid && changeFlag.includes(1)) {
+          if (this.form.id!= null) {
+            updateEnvData(this.form).then((response) => {
+              this.$modal.msgSuccess("修改测量环境数据成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addEnvData(this.form).then((response) => {
+              this.$modal.msgSuccess("新增测量环境数据成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+      value["radiationData"].validate(valid => {
         if (valid) {
-          if (this.form.id != null) {
-            updateRadiation(this.form).then(response => {
+          if (this.radiationForm.id != null) {
+            updateRadiation(this.radiationForm).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addRadiation(this.form).then(response => {
+            addRadiation(this.radiationForm).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -285,7 +254,7 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
+      const ids = row.measurementBatchId || this.measurementBatchIds;
       this.$modal.confirm('是否确认删除光谱辐射编号为"' + ids + '"的数据项?').then(function () {
         return delRadiation(ids);
       }).then(() => {
@@ -302,3 +271,16 @@ export default {
   }
 };
 </script>
+<style scoped lang="scss">
+::v-deep .el-form-item .el-select {
+  width: 200px;
+}
+
+::v-deep .el-form-item .el-input {
+  width: 200px;
+}
+
+::v-deep .el-form-item .upload-file {
+  width: 200px;
+}
+</style>

+ 1 - 1
meas_web/src/views/meas/status/index.vue

@@ -132,7 +132,7 @@
     />
 
     <!-- 添加或修改状态对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="状态" prop="status">
           <el-input v-model="form.status" placeholder="请输入状态" />

+ 87 - 118
meas_web/src/views/meas/thermalImagerTesDdata/index.vue

@@ -1,29 +1,22 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="测量环境id" label-width="90px" prop="measurementBatchId">
-        <el-input
-          v-model="queryParams.measurementBatchId"
-          placeholder="请输入测量环境id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+      <el-form-item label="测量批次" prop="measurementBatch">
+        <el-input v-model="queryParams.measurementBatch" placeholder="请输入测量批次" clearable
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="型号" prop="model">
-        <el-input
-          v-model="queryParams.model"
-          placeholder="请输入型号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="发动机型号" prop="model">
+        <el-input v-model="queryParams.model" placeholder="请输入发动机型号" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="积分时间" prop="integrationTime">
-        <el-input
-          v-model="queryParams.integrationTime"
-          placeholder="请输入积分时间"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="发动机状态" prop="engineStatus">
+        <el-select v-model="queryParams.engineStatus" placeholder="请选择发动机状态" clearable>
+          <el-option v-for="(item, index) in engineStatusOptions" :key="index" :label="item" :value="item" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="角度" prop="angle">
+        <el-select v-model="queryParams.angle" placeholder="请选择角度" clearable>
+          <el-option v-for="item in angleOptions" :key="item" :label="item" :value="item" />
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -32,16 +25,6 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['meas:thermalImagerTesDdata:add']"
-        >新增</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="success"
@@ -79,26 +62,19 @@
 
     <el-table v-loading="loading" :data="thermalImagerTesDdataList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="测量环境id" align="center" prop="measurementBatchId" />
+      <el-table-column label="测量批次" align="center" prop="measurementBatch" />
+      <el-table-column label="发动机型号" align="center" prop="engineModel" />
+      <el-table-column label="发动机状态" align="center" prop="engineStatus"/>
+      <el-table-column label="发动机角度" align="center" prop="angle"/>
       <el-table-column label="型号" align="center" prop="model" />
       <el-table-column label="镜头视场角" align="center" prop="lensFView" />
       <el-table-column label="滤镜编号" align="center" prop="filterNo" />
       <el-table-column label="帧率" align="center" prop="fps" />
       <el-table-column label="波段" align="center" prop="spectralBand" />
-      <el-table-column label="积分时间" align="center" prop="integrationTime" />
-      <el-table-column label="温度标定" align="center" prop="tempCal" />
-      <el-table-column label="辐射亮度" align="center" prop="radiance" />
-      <el-table-column label="辐射照度" align="center" prop="radIllumination" />
-      <el-table-column label="辐射温度" align="center" prop="radTemp" />
-      <!-- <el-table-column label="创建人" align="center" prop="createBy" />
-      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column> -->
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width" >
         <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" v-hasPermi="['meas:envData:edit']"
+            @click="checkView(scope.row)">查看</el-button>
           <el-button
             size="mini"
             type="text"
@@ -126,56 +102,28 @@
     />
 
     <!-- 添加或修改热像仪测试数据对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="测量环境id" prop="measurementBatchId">
-          <el-select v-model="form.measurementBatchId" placeholder="请选择测量环境id">
-            <el-option v-for="item in measureBatchOptions" :key="item.id" :label="item.measurementBatch"
-              :value="item.id">
-              <span style="float: left">{{ item.id }}</span>
-              <span style="float: right; color: #8492a6; font-size: 13px">{{ item.measurementBatch }}</span>
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="型号" prop="model">
-          <el-input v-model="form.model" placeholder="请输入型号" />
-        </el-form-item>
-        <el-form-item label="积分时间" prop="integrationTime">
-          <el-input v-model.number="form.integrationTime" placeholder="请输入积分时间(单位:s)" />
-        </el-form-item>
-        <el-form-item label="温度标定" prop="tempCal">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.tempCal"/>
-        </el-form-item>
-        <el-form-item label="辐射亮度" prop="radiance">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.radiance"/>
-        </el-form-item>
-        <el-form-item label="辐射照度" prop="radIllumination">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.radIllumination"/>
-        </el-form-item>
-        <el-form-item label="辐射温度" prop="radTemp">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.radTemp"/>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="70%" append-to-body>
+      <dialogContent :TIForm="TIForm" :form="form" @submit-form="submitForm" :isCheck="isCheck" @cancel="cancel"/>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { listThermalImagerTesDdata, getThermalImagerTesDdata, delThermalImagerTesDdata, addThermalImagerTesDdata, updateThermalImagerTesDdata } from "@/api/meas/thermalImagerTesDdata";
-import { listMeasBatch } from "@/api/meas/measBatch";
+import { listThermalImagerTesDdata, getThermalImagerTesDdata, delThermalImagerTesDdata, updateThermalImagerTesDdata,getTIDataByEnvData } from "@/api/meas/thermalImagerTesDdata";
+import { angleOption } from "@/api/meas/angle";
+import { statusOption } from "@/api/meas/status";
+import dialogContent from "@/views/meas/components/dialogContent";
+import { getEnvData } from "@/api/meas/envData";
 
 export default {
   name: "ThermalImagerTesDdata",
+  components: { dialogContent },
   data() {
     return {
       // 遮罩层
       loading: true,
       // 选中数组
-      ids: [],
+      measurementBatchIds: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -208,43 +156,43 @@ export default {
       },
       // 表单参数
       form: {},
-      // 表单校验
-      rules: {
-        measurementBatchId:[
-          { required: true, message: "测量环境id不能为空"},
-          {type: 'number', message: '测量环境id必须为数字',trigger: 'blur'}
-        ],
-        model: [
-          { required: true, message: "型号不能为空", trigger: "blur" },
-          { min: 0, max: 50, message: '长度在 0 到 50 个字符', trigger: 'blur' }
-        ],
-        lensFView:[
-          { required: true, message: "镜头视场角不能为空", trigger: "change" },
-        ],
-        integrationTime:[
-          { type: 'number',min:1,max:100, message: '请输入1-100s之间的数字',trigger: 'blur'}
-        ]
-      },
-      measureBatchOptions: []
+      TIForm: {},
+      // 发动机状态
+      engineStatusOptions: [],
+      // 发动机角度
+      angleOptions: [],
+      isCheck:false,
     };
   },
   created() {
     this.getList();
+    this.getAngleOption();
+    this.getStatusOption();
   },
   methods: {
     /** 查询热像仪测试数据列表 */
     getList() {
       this.loading = true;
-      const data = {}
-      listMeasBatch(data).then(response => {
-        this.measureBatchOptions = response.rows;
-      });
       listThermalImagerTesDdata(this.queryParams).then(response => {
         this.thermalImagerTesDdataList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
     },
+    getAngleOption() {
+      this.loading = true;
+      angleOption().then((response) => {
+        this.angleOptions = response.data;
+        this.loading = false;
+      });
+    },
+    getStatusOption() {
+      this.loading = true;
+      statusOption().then((response) => {
+        this.engineStatusOptions = response.data;
+        this.loading = false;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -252,7 +200,7 @@ export default {
     },
     // 表单重置
     reset() {
-      this.form = {
+      this.TIForm = {
         id: null,
         measurementBatchId: null,
         model: null,
@@ -270,7 +218,7 @@ export default {
         updateBy: null,
         updateTime: null
       };
-      this.resetForm("form");
+      this.resetForm("TIForm");
     },
     /** 搜索按钮操作 */
     handleQuery() {
@@ -284,7 +232,7 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
+      this.measurementBatchIds = selection.map(item => item.measurementBatchId)
       this.single = selection.length!==1
       this.multiple = !selection.length
     },
@@ -294,28 +242,36 @@ export default {
       this.open = true;
       this.title = "添加热像仪测试数据";
     },
+    checkView(row){
+      this.handleUpdate(row)
+      this.isCheck=true
+    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getThermalImagerTesDdata(id).then(response => {
+      this.isCheck = false
+      const id = row.measurementBatchId || this.measurementBatchIds
+      getEnvData(id).then((response) => {
         this.form = response.data;
+      });
+      getTIDataByEnvData(id).then(response => {
+        this.TIForm = response.data;
         this.open = true;
-        this.title = "修改热像仪测试数据";
+        this.title = this.isCheck?'查看热像仪测试数据':"修改热像仪测试数据";
       });
     },
     /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
+    submitForm(value) {
+      value["TIData"].validate(valid => {
         if (valid) {
-          if (this.form.id != null) {
-            updateThermalImagerTesDdata(this.form).then(response => {
+          if (this.TIForm.id != null) {
+            updateThermalImagerTesDdata(this.TIForm).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
-          } else {
-            addThermalImagerTesDdata(this.form).then(response => {
+          }else {
+            addThermalImagerTesDdata(this.TIForm).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -326,7 +282,7 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
+      const ids = row.measurementBatchId || this.measurementBatchIds;
       this.$modal.confirm('是否确认删除热像仪测试数据编号为"' + ids + '"的数据项?').then(function() {
         return delThermalImagerTesDdata(ids);
       }).then(() => {
@@ -343,3 +299,16 @@ export default {
   }
 };
 </script>
+<style scoped lang="scss">
+::v-deep .el-form-item .el-select {
+  width: 200px;
+}
+
+::v-deep .el-form-item .el-input {
+  width: 200px;
+}
+
+::v-deep .el-form-item .upload-file {
+  width: 200px;
+}
+</style>

+ 90 - 105
meas_web/src/views/meas/transmissionRate/index.vue

@@ -1,13 +1,22 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="测量环境id" label-width="90px" prop="measurementBatchId">
-        <el-input
-          v-model="queryParams.measurementBatchId"
-          placeholder="请输入测量环境id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+      <el-form-item label="测量批次" prop="measurementBatch">
+        <el-input v-model="queryParams.measurementBatch" placeholder="请输入测量批次" clearable
+          @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="发动机型号" prop="model">
+        <el-input v-model="queryParams.model" placeholder="请输入发动机型号" clearable @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="发动机状态" prop="engineStatus">
+        <el-select v-model="queryParams.engineStatus" placeholder="请选择发动机状态" clearable>
+          <el-option v-for="(item, index) in engineStatusOptions" :key="index" :label="item" :value="item" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="角度" prop="angle">
+        <el-select v-model="queryParams.angle" placeholder="请选择角度" clearable>
+          <el-option v-for="item in angleOptions" :key="item" :label="item" :value="item" />
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -16,16 +25,6 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['meas:transmissionRate:add']"
-        >新增</el-button>
-      </el-col>
       <el-col :span="1.5">
         <el-button
           type="success"
@@ -35,7 +34,7 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['meas:transmissionRate:edit']"
-        >修改</el-button>
+        >维护</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -48,41 +47,27 @@
           v-hasPermi="['meas:transmissionRate:remove']"
         >删除</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['meas:transmissionRate:export']"
-        >导出</el-button>
-      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="transmissionRateList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="测量环境id" align="center" prop="measurementBatchId" />
-      <el-table-column label="原始数据" align="center" prop="rawData" />
-      <el-table-column label="透过率曲线3~5μm" align="center" prop="curve1" />
-      <el-table-column label="透过率曲线8~14μm" align="center" prop="curve2" />
-      <!-- <el-table-column label="创建人" align="center" prop="createBy" />
-      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column> -->
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="测量批次" align="center" prop="measurementBatch" />
+      <el-table-column label="发动机型号" align="center" prop="engineModel" />
+      <el-table-column label="发动机状态" align="center" prop="engineStatus"/>
+      <el-table-column label="发动机角度" align="center" prop="angle"/>
+      <el-table-column label="记录条数" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
         <template slot-scope="scope">
+          <el-button size="mini" type="text" icon="el-icon-view" v-hasPermi="['meas:envData:edit']"
+            @click="checkView(scope.row)">查看</el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['meas:transmissionRate:edit']"
-          >修改</el-button>
+          >维护</el-button>
           <el-button
             size="mini"
             type="text"
@@ -103,47 +88,28 @@
     />
 
     <!-- 添加或修改透过率对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="90px">
-        <el-form-item label="测量环境id" prop="measurementBatchId">
-          <el-select v-model="form.measurementBatchId" placeholder="请选择测量环境id">
-            <el-option v-for="item in measureBatchOptions" :key="item.id" :label="item.measurementBatch"
-              :value="item.id">
-              <span style="float: left">{{ item.id }}</span>
-              <span style="float: right; color: #8492a6; font-size: 13px">{{ item.measurementBatch }}</span>
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="原始数据" prop="rawData">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.rawData"/>
-        </el-form-item>
-        <el-form-item label="透过率曲线3~5μm" label-width="130px" prop="curve1">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']"  v-model="form.curve1"/>
-        </el-form-item>
-        <el-form-item label="透过率曲线8~14μm" label-width="135px" prop="curve2">
-          <file-upload :fileSize="0" :limit="1" :fileType="['txt']"  v-model="form.curve2"/>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="70%" append-to-body>
+      <dialogContent :TransmittanceForm="TransmittanceForm" :form="form" @submit-form="submitForm" @cancel="cancel" :isCheck="isCheck"/>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { listTransmissionRate, getTransmissionRate, delTransmissionRate, addTransmissionRate, updateTransmissionRate } from "@/api/meas/transmissionRate";
-import { listMeasBatch } from "@/api/meas/measBatch";
+import { listTransmissionRate, getTransmissionRate, delTransmissionRate, addTransmissionRate, getTRateByEnvData,updateTransmissionRate } from "@/api/meas/transmissionRate";
+import { angleOption } from "@/api/meas/angle";
+import { statusOption } from "@/api/meas/status";
+import dialogContent from "@/views/meas/components/dialogContent";
+import { getEnvData } from "@/api/meas/envData";
 
 export default {
   name: "TransmissionRate",
+  components: { dialogContent },
   data() {
     return {
       // 遮罩层
       loading: true,
       // 选中数组
-      ids: [],
+      measurementBatchIds: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -169,33 +135,43 @@ export default {
       },
       // 表单参数
       form: {},
-      // 表单校验
-      rules: {
-        measurementBatchId:[
-          { required: true, message: "测量环境id不能为空"},
-          {type: 'number', message: '测量环境id必须为数字',trigger: 'blur'}
-        ],
-      },
-      measureBatchOptions: []
+      TransmittanceForm: {},
+      // 发动机状态
+      engineStatusOptions: [],
+      // 发动机角度
+      angleOptions: [],
+      isCheck:false,
     };
   },
   created() {
     this.getList();
+    this.getAngleOption();
+    this.getStatusOption();
   },
   methods: {
     /** 查询透过率列表 */
     getList() {
       this.loading = true;
-      const data = {}
-      listMeasBatch(data).then(response => {
-        this.measureBatchOptions = response.rows;
-      });
       listTransmissionRate(this.queryParams).then(response => {
         this.transmissionRateList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
     },
+    getAngleOption() {
+      this.loading = true;
+      angleOption().then((response) => {
+        this.angleOptions = response.data;
+        this.loading = false;
+      });
+    },
+    getStatusOption() {
+      this.loading = true;
+      statusOption().then((response) => {
+        this.engineStatusOptions = response.data;
+        this.loading = false;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -203,7 +179,7 @@ export default {
     },
     // 表单重置
     reset() {
-      this.form = {
+      this.TransmittanceForm = {
         id: null,
         measurementBatchId: null,
         rawData: null,
@@ -214,7 +190,7 @@ export default {
         updateBy: null,
         updateTime: null
       };
-      this.resetForm("form");
+      this.resetForm("TransmittanceForm");
     },
     /** 搜索按钮操作 */
     handleQuery() {
@@ -228,38 +204,40 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
+      this.measurementBatchIds = selection.map(item => item.measurementBatchId)
       this.single = selection.length!==1
       this.multiple = !selection.length
     },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加透过率";
+    checkView(row){
+      this.handleUpdate(row)
+      this.isCheck=true
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getTransmissionRate(id).then(response => {
+      this.isCheck = false
+      const id = row.measurementBatchId || this.measurementBatchIds
+      getEnvData(id).then((response) => {
         this.form = response.data;
+      });
+      getTRateByEnvData(id).then(response => {
+        this.TransmittanceForm = response.data;
         this.open = true;
-        this.title = "修改透过率";
+        this.title = this.isCheck?'查看透过率数据':"修改透过率数据";
       });
     },
     /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
+    submitForm(value) {
+      value["TransmittanceData"].validate(valid => {
         if (valid) {
-          if (this.form.id != null) {
-            updateTransmissionRate(this.form).then(response => {
+          if (this.TransmittanceForm.id != null) {
+            updateTransmissionRate(this.TransmittanceForm).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addTransmissionRate(this.form).then(response => {
+            addRadiation(this.TransmittanceForm).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -270,7 +248,7 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
+      const ids = row.measurementBatchId || this.measurementBatchIds;
       this.$modal.confirm('是否确认删除透过率编号为"' + ids + '"的数据项?').then(function() {
         return delTransmissionRate(ids);
       }).then(() => {
@@ -278,12 +256,19 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('meas/transmissionRate/export', {
-        ...this.queryParams
-      }, `transmissionRate_${new Date().getTime()}.xlsx`)
-    }
   }
 };
 </script>
+<style scoped lang="scss">
+::v-deep .el-form-item .el-select {
+  width: 200px;
+}
+
+::v-deep .el-form-item .el-input {
+  width: 200px;
+}
+
+::v-deep .el-form-item .upload-file {
+  width: 200px;
+}
+</style>

+ 3 - 3
meas_web/src/views/monitor/job/index.vue

@@ -152,7 +152,7 @@
     />
 
     <!-- 添加或修改定时任务对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="12">
@@ -236,12 +236,12 @@
       </div>
     </el-dialog>
 
-    <el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
+    <el-dialog :close-on-click-modal="false" title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
       <crontab @hide="openCron=false" @fill="crontabFill" :expression="expression"></crontab>
     </el-dialog>
 
     <!-- 任务日志详细 -->
-    <el-dialog title="任务详细" :visible.sync="openView" width="700px" append-to-body>
+    <el-dialog :close-on-click-modal="false" title="任务详细" :visible.sync="openView" width="700px" append-to-body>
       <el-form ref="form" :model="form" label-width="120px" size="mini">
         <el-row>
           <el-col :span="12">

+ 1 - 1
meas_web/src/views/monitor/job/log.vue

@@ -144,7 +144,7 @@
     />
 
     <!-- 调度日志详细 -->
-    <el-dialog title="调度日志详细" :visible.sync="open" width="700px" append-to-body>
+    <el-dialog :close-on-click-modal="false" title="调度日志详细" :visible.sync="open" width="700px" append-to-body>
       <el-form ref="form" :model="form" label-width="100px" size="mini">
         <el-row>
           <el-col :span="12">

+ 1 - 1
meas_web/src/views/monitor/operlog/index.vue

@@ -160,7 +160,7 @@
     />
 
     <!-- 操作日志详细 -->
-    <el-dialog title="操作日志详细" :visible.sync="open" width="800px" append-to-body>
+    <el-dialog :close-on-click-modal="false" title="操作日志详细" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" label-width="100px" size="mini">
         <el-row>
           <el-col :span="12">

+ 1 - 1
meas_web/src/views/system/config/index.vue

@@ -148,7 +148,7 @@
     />
 
     <!-- 添加或修改参数配置对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="参数名称" prop="configName">
           <el-input v-model="form.configName" placeholder="请输入参数名称" />

+ 1 - 1
meas_web/src/views/system/dept/index.vue

@@ -97,7 +97,7 @@
     </el-table>
 
     <!-- 添加或修改部门对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="24" v-if="form.parentId !== 0">

+ 1 - 1
meas_web/src/views/system/dict/data.vue

@@ -141,7 +141,7 @@
     />
 
     <!-- 添加或修改参数配置对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="字典类型">
           <el-input v-model="form.dictType" :disabled="true" />

+ 1 - 1
meas_web/src/views/system/dict/index.vue

@@ -158,7 +158,7 @@
     />
 
     <!-- 添加或修改参数配置对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="字典名称" prop="dictName">
           <el-input v-model="form.dictName" placeholder="请输入字典名称" />

+ 1 - 1
meas_web/src/views/system/menu/index.vue

@@ -103,7 +103,7 @@
     </el-table>
 
     <!-- 添加或修改菜单对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="680px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="680px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row>
           <el-col :span="24">

+ 1 - 1
meas_web/src/views/system/notice/index.vue

@@ -123,7 +123,7 @@
     />
 
     <!-- 添加或修改公告对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="780px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="12">

+ 1 - 1
meas_web/src/views/system/post/index.vue

@@ -124,7 +124,7 @@
     />
 
     <!-- 添加或修改岗位对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="岗位名称" prop="postName">
           <el-input v-model="form.postName" placeholder="请输入岗位名称" />

+ 2 - 2
meas_web/src/views/system/role/index.vue

@@ -156,7 +156,7 @@
     />
 
     <!-- 添加或修改角色配置对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-form-item label="角色名称" prop="roleName">
           <el-input v-model="form.roleName" placeholder="请输入角色名称" />
@@ -208,7 +208,7 @@
     </el-dialog>
 
     <!-- 分配角色数据权限对话框 -->
-    <el-dialog :title="title" :visible.sync="openDataScope" width="500px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="openDataScope" width="500px" append-to-body>
       <el-form :model="form" label-width="80px">
         <el-form-item label="角色名称">
           <el-input v-model="form.roleName" :disabled="true" />

+ 1 - 1
meas_web/src/views/system/role/selectUser.vue

@@ -1,6 +1,6 @@
 <template>
   <!-- 授权用户 -->
-  <el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
+  <el-dialog :close-on-click-modal="false" title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
       <el-form-item label="用户名称" prop="userName">
         <el-input

+ 2 - 2
meas_web/src/views/system/user/index.vue

@@ -203,7 +203,7 @@
     </el-row>
 
     <!-- 添加或修改用户配置对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="12">
@@ -309,7 +309,7 @@
     </el-dialog>
 
     <!-- 用户导入对话框 -->
-    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+    <el-dialog :close-on-click-modal="false" :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
       <el-upload
         ref="upload"
         :limit="1"

+ 1 - 1
meas_web/src/views/system/user/profile/userAvatar.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div>
-    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened"  @close="closeDialog">
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened"  @close="closeDialog">
       <el-row>
         <el-col :xs="24" :md="12" :style="{height: '350px'}">
           <vue-cropper

+ 1 - 2
meas_web/src/views/tool/build/CodeTypeDialog.vue

@@ -1,9 +1,8 @@
 <template>
   <div>
-    <el-dialog
+    <el-dialog :close-on-click-modal="false"
       v-bind="$attrs"
       width="500px"
-      :close-on-click-modal="false"
       :modal-append-to-body="false"
       v-on="$listeners"
       @open="onOpen"

+ 1 - 1
meas_web/src/views/tool/build/IconsDialog.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="icon-dialog">
-    <el-dialog
+    <el-dialog :close-on-click-modal="false"
       v-bind="$attrs"
       width="980px"
       :modal-append-to-body="false"

+ 1 - 1
meas_web/src/views/tool/gen/createTable.vue

@@ -1,6 +1,6 @@
 <template>
   <!-- 创建表 -->
-  <el-dialog title="创建表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
+  <el-dialog :close-on-click-modal="false" title="创建表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
     <span>创建表语句(支持多个建表语句):</span>
     <el-input type="textarea" :rows="10" placeholder="请输入文本" v-model="content"></el-input>
     <div slot="footer" class="dialog-footer">

+ 1 - 1
meas_web/src/views/tool/gen/importTable.vue

@@ -1,6 +1,6 @@
 <template>
   <!-- 导入表 -->
-  <el-dialog title="导入表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
+  <el-dialog :close-on-click-modal="false" title="导入表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
       <el-form-item label="表名称" prop="tableName">
         <el-input

+ 1 - 1
meas_web/src/views/tool/gen/index.vue

@@ -169,7 +169,7 @@
       @pagination="getList"
     />
     <!-- 预览界面 -->
-    <el-dialog :title="preview.title" :visible.sync="preview.open" width="80%" top="5vh" append-to-body class="scrollbar">
+    <el-dialog :close-on-click-modal="false" :title="preview.title" :visible.sync="preview.open" width="80%" top="5vh" append-to-body class="scrollbar">
       <el-tabs v-model="preview.activeName">
         <el-tab-pane
           v-for="(value, key) in preview.data"

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません