Browse Source

修改表单一些功能、部分页面的新增和修改功能

Rmengdi 11 tháng trước cách đây
mục cha
commit
a62529776b

+ 227 - 124
meas_web/src/views/meas/components/dialogContent.vue

@@ -1,11 +1,10 @@
 <template>
   <div>
-    <el-form ref="form" :disabled="checkShow" :model="form" :rules="rules" size="mini"
-      label-width="80px">
+    <el-form ref="formData" :model="formData" :rules="rules" size="mini" label-width="80px">
       <el-row type="flex" justify="space-around">
         <el-form-item label="发动机型号" prop="model" label-width="90px">
-          <el-select v-model="form.model" placeholder="请选择发动机型号">
-            <el-option v-for="item in engineModelList" :key="item.id" :label="item.model" :value="item.id">
+          <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" disabled style="cursor: pointer">
               <el-button type="text" @click="onClickBtn('engine')"><i class="el-icon-plus"></i> 增加发动机型号</el-button>
@@ -13,21 +12,19 @@
           </el-select>
         </el-form-item>
         <el-form-item label="几何模型" prop="geometryFiles">
-          <file-upload :fileSize="0" :limit="1" :fileType="['x_t', 'str']" v-model="form.geometryFiles" />
+          <file-upload :fileSize="0" :limit="1" :fileType="['x_t', 'str']" v-model="formData.geometryFiles" />
         </el-form-item>
         <el-form-item label="几何图片" prop="geometryImage">
-          <image-upload :fileSize="0" :limit="1" :fileType="['jpg']" v-model="form.geometryImage"/>
+          <image-upload :fileSize="0" :limit="1" :fileType="['jpg']" v-model="formData.geometryImage" />
         </el-form-item>
       </el-row>
     </el-form>
     <el-form ref="form" :disabled="checkShow" :model="form" :rules="rules" size="mini" label-width="80px">
       <el-form-item label="测量批次" prop="measurementBatch" style="margin-left: 5%">
-        <el-select v-model="form.measurementBatchId" placeholder="请选择测量批次">
-          <el-option v-for="item in measureBatchOptions" :key="item.id" :label="item.measurementBatch" :value="item.id">
+        <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>
+            <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>
@@ -40,118 +37,147 @@
       <el-form :disabled="checkShow" ref="form" :model="form" size="mini" :rules="rules" label-width="80px">
         <el-row type="flex" justify="space-around">
           <el-form-item label="发动机状态" label-width="100px" prop="engineStatus">
-            <el-select v-model="form.engineStatus" placeholder="请选择发动机状态">
-              <el-option v-for="item in engineStatusOptions" :key="item" :label="item" :value="item">
+            <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="form.angle" placeholder="请输入角度">
-              <el-option v-for="item in angleOptions" :key="item" :label="item" :value="item">
+            <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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="form.turbinePostTemp" />
+            <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="formData.turbinePostTemp" />
+            <!-- <el-link v-if="checkShow" type="primary" :href="`${baseUrl}${form.turbinePostTemp}`" target="_blank">{{ getFileName(form.turbinePostTemp) }}</el-link> -->
           </el-form-item>
         </el-row>
         <el-row type="flex" justify="space-around">
           <el-form-item label="测试距离" prop="testDistance">
-            <el-input v-model="form.testDistance" placeholder="请输入测试距离" />
+            <el-input v-model="formData.testDistance" placeholder="请输入测试距离" />
           </el-form-item>
           <el-form-item label="时间" prop="time">
-            <el-date-picker clearable v-model="form.time" type="datetime" value-format="yyyy-MM-dd HH:mm"
+            <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="form.location" placeholder="请输入地点" />
+            <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="form.atmosPress" placeholder="请输入大气压(单位:pa)" />
+            <el-input v-model="formData.atmosPress" placeholder="请输入大气压(单位:pa)" />
           </el-form-item>
           <el-form-item label="温度" prop="temperature">
-            <el-input v-model="form.temperature" placeholder="请输入温度(单位:K)" />
+            <el-input v-model="formData.temperature" placeholder="请输入温度(单位:K)" />
           </el-form-item>
           <el-form-item label="风速" prop="windSpeed">
-            <el-input v-model="form.windSpeed" placeholder="请输入风速(单位:m/s)" />
+            <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="form.humidity" placeholder="请输入湿度(单位:%)" />
+            <el-input v-model="formData.humidity" placeholder="请输入湿度(单位:%)" />
           </el-form-item>
           <el-form-item label="CO₂浓度" prop="concentration">
-            <el-input v-model="form.concentration" placeholder="请输入浓度(单位:mol)" />
+            <el-input v-model="formData.concentration" placeholder="请输入浓度(单位:mol)" />
           </el-form-item>
           <el-col :span="7">
-            <el-button v-if="envSaveBtn" type="primary" size="mini" @click="envDataSave">保 存</el-button>
+            <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="radiationForm && Object.keys(radiationForm).length > 0">
+    <div class="box" v-if="radiationData && Object.keys(radiationData).length > 0">
       <span class="title">光谱辐射计测量数据</span>
-      <el-form ref="radiationForm" size="mini" :model="radiationForm" :rules="rules" label-width="80px">
+      <el-form :disabled="checkShow || addBtn" ref="radiationData" size="mini" :model="radiationData" :rules="rules"
+        label-width="80px">
         <el-row type="flex" justify="space-around">
           <el-form-item label="型号" prop="model">
-            <el-input v-model="radiationForm.model" placeholder="请输入型号" />
+            <el-input v-model="radiationData.model" placeholder="请输入型号" />
           </el-form-item>
           <el-form-item label="镜头视场角" prop="lensFView" label-width="90px">
-            <el-input v-model="radiationForm.lensFView" placeholder="请输入镜头视场角(单位:mrad)" />
+            <el-input v-model="radiationData.lensFView" placeholder="请输入镜头视场角(单位:mrad)" />
           </el-form-item>
           <el-form-item label="增益" prop="gain">
-            <el-input v-model.number="radiationForm.gain" placeholder="请输入增益(单位:x)" />
+            <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 :fileSize="0" :limit="1" :fileType="['lgm']" v-model="radiationForm.backgroundData" />
-          </el-form-item>
-          <el-form-item label="标定温度" prop="calTemp">
-            <el-input v-model="radiationForm.calTemp" placeholder="请输入标定温度" />
+            <file-upload :fileSize="0" :limit="1" :fileType="['lgm']" v-model="radiationData.backgroundData" />
           </el-form-item>
           <el-form-item label="标定曲线" prop="calCurve">
             <file-upload :fileSize="0" :limit="5" :fileType="['txt']" :isShowViev="true"
-              v-model="radiationForm.calCurve" v-on:fileView="fileView" />
+              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">
+          <span>{{ calTempData }}</span>
+          <el-form-item label="标定温度" prop="calTemp">
+            <el-table :data="calTempData" size="mini" border style="width: 500px">
+              <el-table-column prop="temp" label="温度" align="center">
+              </el-table-column>
+              <el-table-column prop="calTempFile" label="文件" align="center">
+              </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-delete">删除</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"></i>
           </el-form-item>
         </el-row>
       </el-form>
       <div class="box" style="margin-bottom: 15px">
         <span class="title">目标数据</span>
-        <el-form ref="radiationForm" size="mini" :model="radiationForm" :rules="rules" label-width="80px">
+        <el-form ref="radiationData" :disabled="checkShow || addBtn" size="mini" :model="radiationData" :rules="rules"
+          label-width="80px">
           <el-row type="flex" justify="space-around">
             <el-form-item label="原始数据" prop="rawData">
-              <file-upload :fileSize="0" :limit="5" :fileType="['txt']" v-model="radiationForm.rawData" />
+              <file-upload :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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="radiationForm.radiance1"
+              <file-upload :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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="radiationForm.radiance2" />
+              <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="radiationData.radiance2" />
             </el-form-item>
           </el-row>
         </el-form>
       </div>
     </div>
-    <div class="box" v-if="TIForm && Object.keys(TIForm).length > 0">
+    <div class="box" v-if="TIData && Object.keys(TIData).length > 0">
       <span class="title">热像仪测量数据</span>
-      <el-form ref="TIForm" :model="TIForm" size="mini" :rules="rules" label-width="80px">
+      <el-form ref="TIData" :disabled="checkShow || addBtn" :model="TIData" size="mini" :rules="rules"
+        label-width="80px">
         <el-row type="flex" justify="space-around">
           <el-form-item label="型号" prop="model">
-            <el-input v-model="TIForm.model" placeholder="请输入型号" />
+            <el-input v-model="TIData.model" placeholder="请输入型号" />
           </el-form-item>
           <el-form-item label="镜头视场角" label-width="90px" prop="lensFView">
-            <el-select v-model="TIForm.lensFView" placeholder="请选择镜头视场角">
+            <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="TIForm.filterNo" placeholder="请选择滤镜编号">
+            <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>
@@ -159,35 +185,35 @@
         </el-row>
         <el-row type="flex" justify="space-around">
           <el-form-item label="帧率" prop="fps">
-            <el-select v-model="TIForm.fps" placeholder="请选择帧率">
+            <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="TIForm.spectralBand" placeholder="请选择波段">
+            <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="TIForm.integrationTime" placeholder="请输入积分时间(单位:s)" />
+            <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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIForm.tempCal" />
+            <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIData.tempCal" />
           </el-form-item>
           <el-form-item label="辐射亮度" prop="radiance">
-            <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIForm.radiance" :isShowViev="true"
+            <file-upload :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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIForm.radIllumination"
+            <file-upload :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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIForm.radTemp" :isShowViev="true"
+            <file-upload :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>
@@ -195,24 +221,43 @@
         </el-row>
       </el-form>
     </div>
-    <div class="box" v-if="TransmittanceForm">
+    <div class="box" v-if="TransmittanceData">
       <span class="title">透过率数据</span>
-      <el-form ref="TransmittanceForm" :model="TransmittanceForm" :rules="rules" label-width="80px">
+      <el-form :disabled="checkShow || addBtn" ref="TransmittanceData" :model="TransmittanceData" :rules="rules"
+        label-width="80px">
         <el-row type="flex" justify="space-around">
           <el-form-item label="原始数据" prop="rawData">
-            <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="TransmittanceForm.rawData" />
+            <file-upload :fileSize="0" :limit="1" :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" :fileType="['txt']" :isShowViev="true" v-on:fileView="fileView"
-              v-model="TransmittanceForm.curve1" />
+              v-model="TransmittanceData.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="TransmittanceForm.curve2"
+            <file-upload :fileSize="0" :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="dialog-footer">
+      <el-button type="primary" @click="submitForm">确 定</el-button>
+      <el-button @click="cancel">取 消</el-button>
+    </div>
+    <el-dialog title="增加标定温度" :visible.sync="addCalTempVisible" width="500px" append-to-body>
+      <el-form ref="calTempForm" :model="calTempForm" :rules="rules" label-width="60px">
+        <el-form-item label="温度" prop="temp">
+          <el-input v-model="calTempData.temp" placeholder="请输入温度" />
+        </el-form-item>
+        <el-form-item label="文件" prop="calTempFile">
+          <file-upload :fileSize="0" :limit="1" :fileType="['txt']" v-model="calTempData.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>
   </div>
 </template>
 
@@ -244,19 +289,40 @@ export default {
       type: Boolean,
       default: false,
     },
-    isCheck:{
+    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,
-      engineModelList: [],
-      measureBatchOptions: [],
-      angleOptions: [],
-      engineStatusOptions: [],
+      engineModelOption: this.engineModelList,
+      measureBatchOption: this.measureBatchList,
+      angleOption: this.angleList,
+      engineStatusOption: this.engineStatusList,
       // 热像仪测试
       lensFViewOptions: [],
       filterNoOptions: [],
@@ -325,84 +391,81 @@ export default {
           },
         ],
       },
-      formData:this.form,
-      radiationData:this.radiationForm,
-      TIData:this.TIForm,
-      TransmittanceData:this.TransmittanceForm,
-      checkShow:this.isCheck
+      formData: this.form,
+      radiationData: this.radiationForm,
+      TIData: this.TIForm,
+      TransmittanceData: this.TransmittanceForm,
+      checkShow: this.isCheck,
+      addBtn: this.addFlag,
+      // 过滤后的measureBatchOption
+      batchOption: [],
+      addCalTempVisible: false,
+      calTempData: [],
+      calTempForm: {
+        temp: null,
+        calTempFile: null,
+      },
     };
   },
   created() {
-    this.getListEngineModel();
-    this.getAngleOption();
-    this.getStatusOption();
   },
-  watch:{
-    radiationForm:{
+  watch: {
+    radiationForm: {
       handler(newVal) {
-        this.radiationData=newVal;
+        this.radiationData = newVal;
       },
       immediate: true
     },
-    form:{
+    form: {
       handler(newVal) {
-        this.formData=newVal;
+        this.formData = newVal;
       },
       immediate: true
     },
-    TIForm:{
+    TIForm: {
       handler(newVal) {
-        this.TIData=newVal;
+        this.TIData = newVal;
       },
       immediate: true
     },
-    TransmittanceForm:{
+    TransmittanceForm: {
       handler(newVal) {
-        this.TransmittanceData=newVal;
+        this.TransmittanceData = newVal;
       },
       immediate: true
     },
-    isCheck:{
+    isCheck: {
       handler(newVal) {
-        this.checkShow=newVal;
+        this.checkShow = newVal;
       },
-    }
-  },
-  methods: {
-    // 获取发电机List
-    getListEngineModel() {
-      this.loading = true;
-      const data = {};
-      listEngineModel(data).then((response) => {
-        this.engineModelList = response.rows;
-        this.loading = false;
-      });
     },
-    // 获取测量批次List
-    getListMeasBatch() {
-      const data = {};
-      this.loading = true;
-      listMeasBatch(data).then((response) => {
-        this.measureBatchOptions = response.rows;
-        this.loading = false;
-      });
+    addFlag: {
+      handler(newVal) {
+        this.addBtn = newVal;
+      },
     },
-    // 获取角度Option
-    getAngleOption() {
-      this.loading = true;
-      angleOption().then((response) => {
-        this.angleOptions = response.data;
-        this.loading = false;
-      });
+    engineModelList: {
+      handler(newVal) {
+        this.engineModelOption = newVal;
+      },
     },
-    // 获取状态Option
-    getStatusOption() {
-      this.loading = true;
-      statusOption().then((response) => {
-        this.engineStatusOptions = response.data;
-        this.loading = false;
-      });
+    measureBatchList: {
+      handler(newVal) {
+        this.measureBatchOption = newVal;
+      },
+    },
+    angleList: {
+      handler(newVal) {
+        this.angleOption = newVal;
+      },
     },
+    engineStatusList: {
+      handler(newVal) {
+        this.engineStatusOption = newVal;
+      },
+    }
+  },
+  methods: {
     getFileName(name) {
       if (name.lastIndexOf("/") > -1) {
         const newName = name.slice(name.lastIndexOf("/") + 1)
@@ -418,19 +481,57 @@ export default {
     },
     // 点击增加按钮
     onClickBtn(type) {
-      if (type === "engine") this.addDialogVisible = true;
-      else if (type === "measBatch") this.addMeasVisible = true;
+      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() {
+      console.log("this.calTempForm",this.calTempForm);
+      this.calTempData.push(this.calTempForm)
+      console.log("this.calTempData",this.calTempData);
+      this.addCalTempVisible = false
+      this.resetCalTempForm()
+    },
+    cancelCalTemp(){
+      this.addCalTempVisible = false
+      this.resetCalTempForm()
+    },
+    resetCalTempForm(){
+      this.calTempForm = {
+        temp: null,
+        calTempFile: null,
+      }
     },
     // 环境参数保存
     envDataSave() {
-      console.log("this.$refs",this.$refs["form"]);
-      this.$emit('env-data-save',this.$refs["form"])
+      console.log("this.$refs", this.$refs["form"]);
+      this.$emit('env-data-save', this.$refs["form"])
+    },
+    submitForm() {
+      this.$emit('submit-form', this.$refs)
+    },
+    cancel() {
+      this.$emit('cancel')
     },
     fileView() {
       this.$emit('fileView')
     },
     fileView2() {
       this.$emit('fileView2')
+    },
+    checkFile(url) {
+
     }
   },
 };
@@ -452,13 +553,15 @@ export default {
     font-size: 1rem;
   }
 }
-::v-deep .el-upload--picture-card{
-  width:80px;
-  height:80px;
-  line-height:86px
+
+::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;
+
+::v-deep .el-upload-list--picture-card .el-upload-list__item {
+  width: 80px;
+  height: 80px;
 }
 </style>

+ 135 - 40
meas_web/src/views/meas/envData/index.vue

@@ -67,30 +67,39 @@
 
     <!-- 添加或修改测量环境数据对话框 -->
     <el-dialog  :title="title" :visible.sync="open" width="70%" append-to-body>
-      <dialogContent ref="dialogContent" :form="form" :TIForm="TIForm" :TransmittanceForm="TransmittanceForm" :envSaveBtn="true" :radiationForm="radiationForm" :isCheck="isCheck" @env-data-save="envDataSave"/>
-      <div v-if="!isCheck" slot="footer" class="dialog-footer">
+      <dialogContent ref="dialogContent" :form="form" :TIForm="TIForm" :TransmittanceForm="TransmittanceForm" :envSaveBtn="true" :radiationForm="radiationForm" :isCheck="isCheck" :addFlag="addFlag" :engineModelList="engineOptions" :measureBatchList="measureBatchOptions" :angleList="angleOptions" :engineStatusList="engineStatusOptions" @env-data-save="envDataSave" @on-click-btn="onClickBtn" @submit-form="submitForm" @cancel="cancel"/>
+      <!-- <div v-if="!isCheck" slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
-      </div>
+      </div> -->
     </el-dialog>
     <el-dialog title="增加发动机型号" :visible.sync="addDialogVisible" width="400px" append-to-body>
-      <el-input v-model="engineModel" placeholder="请输入发动机型号">
+      <!-- <el-input v-model="engineModel" placeholder="请输入发动机型号">
         <template slot="prepend">发动机型号</template>
-      </el-input>
+      </el-input> -->
+      <el-form ref="addEngineForm" :model="addEngineForm" :disabled="isCheck" :rules="rules" label-width="100px">
+        <el-form-item label="发动机型号" prop="model">
+          <el-input v-model="addEngineForm.model" placeholder="请输入发动机型号" />
+        </el-form-item>
+        <el-form-item label="几何模型文件" prop="geometryFiles">
+          <file-upload :fileSize="0" :limit="1" :fileType="['x_t','str']" v-model="addEngineForm.geometryFiles"/>
+        </el-form-item>
+        <el-form-item label="几何模型图片" prop="geometryImage">
+          <image-upload  :fileSize="0" :limit="1" :fileType="['jpg']" v-model="addEngineForm.geometryImage"/>
+        </el-form-item>
+      </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="addEngine()">确 定</el-button>
         <el-button @click="addDialogVisible = false">取 消</el-button>
       </div>
     </el-dialog>
     <el-dialog title="增加测量批次" :visible.sync="addMeasVisible" width="400px" append-to-body>
-      <el-form ref="form" :model="addMeasBatchForm" :rules="rules" label-width="80px">
-        <el-form-item label="发动机型号ID" label-width="110px" prop="engineId">
-          <el-select v-model="addMeasBatchForm.engineId" placeholder="请选择发动机型号ID">
-            <el-option v-for="item in engineModelList" :key="item.id" :label="item.model" :value="item.id">
+      <el-form ref="form" :model="addMeasBatchForm" :rules="rules" label-width="110px">
+        <el-form-item label="发动机型号" prop="engineId">
+          <el-select v-model="addMeasBatchForm.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>
-              <span style="float: right; color: #8492a6; font-size: 13px">{{
-      item.model
-    }}</span>
+              <span style="float: right; color: #8492a6; font-size: 13px">{{ item.model }}</span>
             </el-option>
           </el-select>
         </el-form-item>
@@ -103,6 +112,31 @@
         <el-button @click="addMeasVisible = false">取 消</el-button>
       </div>
     </el-dialog>
+    <el-dialog title="增加发动机状态" :visible.sync="addStatusVisible" width="400px" append-to-body>
+      <el-form ref="addStatusForm" :model="addStatusForm" :rules="rules" label-width="80px">
+        <el-form-item label="状态" prop="status">
+          <el-input v-model="addStatusForm.status" placeholder="请输入状态" />
+        </el-form-item>
+        <el-form-item label="排序" prop="index">
+          <el-input v-model="addStatusForm.index" placeholder="请输入排序" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="addStatus()">确 定</el-button>
+        <el-button @click="addStatusVisible = false">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="增加发动机角度" :visible.sync="addAngleVisible" width="400px" append-to-body>
+      <el-form ref="addAngleForm" :model="addAngleForm" :rules="rules" label-width="80px">
+        <el-form-item label="角度" prop="angle">
+          <el-input v-model="addAngleForm.angle" placeholder="请输入角度" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="addAngle()">确 定</el-button>
+        <el-button @click="addAngleVisible = false">取 消</el-button>
+      </div>
+    </el-dialog>
     <el-dialog title="数据可视化" :visible.sync="fileVisible" width="70%" append-to-body>
       <ECharts :class="chartType === 'heatmap'?'heatmapChart':''" :chartData="chartData" :width="chartType === 'heatmap'?'400px':'100%'" />
     </el-dialog>
@@ -144,8 +178,8 @@ import {
   updateTransmissionRate,
   getTRateByEnvData
 } from "@/api/meas/transmissionRate";
-import { angleOption } from "@/api/meas/angle";
-import { statusOption,getStatus } from "@/api/meas/status";
+import { angleOption,addAngle } from "@/api/meas/angle";
+import { statusOption,addStatus } from "@/api/meas/status";
 import ECharts from "./ECharts.vue";
 import dialogContent from "@/views/meas/components/dialogContent";
 
@@ -174,6 +208,8 @@ export default {
       open: false,
       addDialogVisible: false,
       addMeasVisible: false,
+      addStatusVisible: false,
+      addAngleVisible: false,
       fileVisible: false,
       // 查询参数
       queryParams: {
@@ -209,16 +245,29 @@ export default {
       fpsOptions: [],
       spectralBandOptions: [],
       measureBatchOptions: [],
-      engineModelList: [],
+      engineOptions: [],
       engineModel: "",
       addMeasBatchForm: {
         engineId: null,
         measurementBatch: null,
       },
+      addEngineForm: {
+        model: null,
+        geometryFiles: null,
+        geometryImage: null
+      },
+      addStatusForm: {
+        status: null,
+        index: null
+      },
+      addAngleForm: {
+        angle: null
+      },
       fileShowData: [],
       disabled: false,
       chartData: {},
       chartType: "",
+      addFlag:false
     };
   },
   created() {
@@ -243,7 +292,7 @@ export default {
       this.loading = true;
       const data = {};
       listEngineModel(data).then((response) => {
-        this.engineModelList = response.rows;
+        this.engineOptions = response.rows;
         this.loading = false;
       });
     },
@@ -291,6 +340,7 @@ export default {
           } else {
             addEnvData(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
+              this.addFlag=false
               this.getList();
             });
           }
@@ -301,18 +351,39 @@ export default {
     onClickBtn(type) {
       if (type === "engine") this.addDialogVisible = true;
       else if (type === "measBatch") this.addMeasVisible = true;
+      else if (type === "engineStatus") this.addStatusVisible = true;
+      else if (type === "engineAngle") this.addAngleVisible = true;
+    },
+    engineChange(val){
+      let obj = {};
+      obj = this.engineOptions.find((item)=>{
+          return item.id === val;
+      });
+      this.addMeasBatchForm.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;
     },
     // 增加发动机型号
     addEngine() {
       this.loading = true;
-      const form = {
-        model: this.engineModel,
-      };
-      addEngineModel(form).then((response) => {
+      addEngineModel(this.addEngineForm).then((response) => {
         this.$modal.msgSuccess("新增成功");
         this.addDialogVisible = false;
         this.getListEngineModel();
-        this.engineModel = null;
+        this.addEngineForm = {
+          model: null,
+          geometryFiles: null,
+          geometryImage: null
+        };
       });
     },
     // 增加测量批次
@@ -327,6 +398,29 @@ export default {
         };
       });
     },
+    // 增加状态
+    addStatus(){
+      addStatus(this.addStatusForm).then((response) => {
+        this.$modal.msgSuccess("新增成功");
+        this.addStatusVisible = false;
+        this.getStatusOption();
+        this.addStatusForm={
+          status: null,
+          index: null
+        }
+      });
+    },
+    // 增加角度
+    addAngle(){
+      addAngle(this.addAngleForm).then((response) => {
+        this.$modal.msgSuccess("新增成功");
+        this.getAngleOption();
+        this.addAngleVisible = false;
+        this.addAngleForm={
+          angle: null
+        }
+      });
+    },
     // 表单重置
     reset() {
       this.form = {
@@ -400,17 +494,21 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      this.isCheck = false
+      this.addFlag=true
       this.open = true;
       this.title = "添加测量环境数据";
     },
     checkView(row){
       this.handleUpdate(row)
       this.isCheck=true
+      this.addFlag=true
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      this.isCheck=false
+      this.isCheck = false
+      this.addFlag = false
       const id = row.measurementBatchId;
       getRadiationByEnvData(id).then((response) => {
         this.radiationForm = response.data;
@@ -424,36 +522,33 @@ export default {
         this.TransmittanceForm = response.data;
         console.log("this.TransmittanceForm",this.TransmittanceForm);
       });
-      getEnvData(id).then((response) => {
+      getEnvData(row.id).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改测量环境数据";
       });
     },
     /** 提交按钮 */
-    submitForm() {
-      // this.TIForm["measurementBatchId"] = this.form.measurementBatchId;
-      // this.TransmittanceForm["measurementBatchId"] =
-      //   this.form.measurementBatchId;
-      // this.radiationForm["measurementBatchId"] = this.form.measurementBatchId;
-      this.$refs["form"].validate((valid) => {
+    submitForm(value) {
+      console.log(value);
+      value['formData'].validate((valid) => {
         if (valid) {
-          if (this.form.id != null) {
-            // updateRadiation(this.radiationForm).then((response) => { });
-            // updateThermalImagerTesDdata(this.TIForm).then((response) => { });
-            // updateTransmissionRate(this.TransmittanceForm).then(
-            //   (response) => { }
-            // );
-            updateEnvData(this.form).then((response) => {
+          if (value['formData']['_props']['model']['id'] != null) {
+            updateRadiation(value['radiationData']['_props']['model']).then((response) => { });
+            updateThermalImagerTesDdata(value['TIData']['_props']['model']).then((response) => { });
+            updateTransmissionRate(value['TransmittanceData']['_props']['model']).then(
+              (response) => { }
+            );
+            updateEnvData(value['formData']['_props']['model']).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            // addRadiation(this.radiationForm).then((response) => { });
-            // addThermalImagerTesDdata(this.TIForm).then((response) => { });
-            // addTransmissionRate(this.TransmittanceForm).then((response) => { });
-            addEnvData(this.form).then((response) => {
+            addRadiation(value['radiationData']['_props']['model']).then((response) => { });
+            addThermalImagerTesDdata(value['TIData']['_props']['model']).then((response) => { });
+            addTransmissionRate(value['TransmittanceData']['_props']['model']).then((response) => { });
+            addEnvData(value['formData']['_props']['model']).then((response) => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();

+ 3 - 3
meas_web/src/views/meas/measBatch/index.vue

@@ -114,9 +114,9 @@
     <!-- 添加或修改测量批次对话框 -->
     <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="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" @change="engineChange">
+          <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>
@@ -174,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" }

+ 7 - 8
meas_web/src/views/meas/radiation/index.vue

@@ -66,11 +66,11 @@
 
     <!-- 添加或修改光谱辐射对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
-      <dialogContent :radiationForm="radiationForm" :form="form" />
-      <div slot="footer" class="dialog-footer">
+      <dialogContent :radiationForm="radiationForm" @submit-form="submitForm" :form="form" />
+      <!-- <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
-      </div>
+      </div> -->
     </el-dialog>
   </div>
 </template>
@@ -233,17 +233,16 @@ export default {
       });
     },
     /** 提交按钮 */
-    submitForm() {
-      this.$refs["radiationForm"].validate(valid => {
+    submitForm(value) {
+      console.log(value);
+      value["radiationData"].validate(valid => {
         if (valid) {
-          if (this.radiationForm.measurementBatchId != null) {
-            updateRadiation(this.radiationForm).then(response => {
+            updateRadiation(value["radiationData"]['_props']['model']).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           }
-        }
       });
     },
     /** 删除按钮操作 */