Rmengdi 10 місяців тому
батько
коміт
67c486467c

+ 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 {

+ 187 - 95
meas_web/src/views/meas/components/dialogContent.vue

@@ -1,25 +1,32 @@
 <template>
   <div>
-    <el-form ref="formData" :model="formData" :disabled="checkShow"   size="mini" label-width="80px">
+    <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="90px">
+        <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" disabled style="cursor: pointer">
+            <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">
-          <file-upload :fileSize="0" :limit="1" :fileType="['x_t', 'str']" v-model="formData.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">
-          <image-upload :fileSize="0" :limit="1" :fileType="['jpg']" v-model="formData.geometryImage" />
+          <div style="width: 200px;">
+            <ImagePreview :src="formData.geometryImage" :width="80" :height="80" />
+          </div>
         </el-form-item>
       </el-row>
     </el-form>
-    <el-form ref="form" :disabled="checkShow" :model="form"   size="mini" label-width="80px">
+    <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">
@@ -34,7 +41,7 @@
     </el-form>
     <div class="box">
       <span class="title">环境参数</span>
-      <el-form :disabled="checkShow" ref="form" :model="form" size="mini"   label-width="80px">
+      <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="请选择发动机状态">
@@ -57,13 +64,13 @@
             </el-select>
           </el-form-item>
           <el-form-item label="涡轮后温度" prop="turbinePostTemp" label-width="90px">
-            <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> -->
+            <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="formData.testDistance" placeholder="请输入测试距离" />
+            <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"
@@ -100,13 +107,13 @@
     </div>
     <div class="box" v-if="radiationData && Object.keys(radiationData).length > 0">
       <span class="title">光谱辐射测量数据</span>
-      <el-form :disabled="checkShow || addBtn" ref="radiationData" size="mini" :model="radiationData"  
-        label-width="80px">
+      <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="90px">
+          <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">
@@ -115,10 +122,11 @@
         </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="radiationData.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 :fileSize="0" :limit="5" :fileType="['txt']" :isShowViev="true"
+            <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>
@@ -138,24 +146,27 @@
             </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>
+            <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" :model="radiationData"  
-          label-width="80px">
+        <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 :fileSize="0" :limit="5" :fileType="['txt']" v-model="radiationData.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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="radiationData.radiance1"
-                :isShowViev="true" v-on:fileView="fileView" />
+              <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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="radiationData.radiance2" />
+              <file-upload :isCheck="isCheck" :fileSize="0" :limit="1" :fileType="['txt']"
+                v-model="radiationData.radiance2" />
             </el-form-item>
           </el-row>
         </el-form>
@@ -163,13 +174,13 @@
     </div>
     <div class="box" v-if="TIData && Object.keys(TIData).length > 0">
       <span class="title">热像仪测量数据</span>
-      <el-form ref="TIData" :disabled="checkShow || addBtn" :model="TIData" size="mini"  
-        label-width="80px">
+      <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="90px" prop="lensFView">
+          <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>
@@ -199,21 +210,21 @@
         </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="TIData.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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIData.radiance" :isShowViev="true"
-              v-on:fileView="fileView2" />
+            <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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIData.radIllumination"
-              :isShowViev="true" v-on:fileView="fileView" />
+            <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 :fileSize="0" :limit="1" :fileType="['txt']" v-model="TIData.radTemp" :isShowViev="true"
-              v-on:fileView="fileView" />
+            <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>
@@ -222,34 +233,36 @@
     </div>
     <div class="box" v-if="TransmittanceData">
       <span class="title">透过率数据</span>
-      <el-form :disabled="checkShow || addBtn" ref="TransmittanceData" :model="TransmittanceData"  
-        label-width="80px">
+      <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" :fileType="['txt']" v-model="TransmittanceData.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" :fileType="['txt']" :isShowViev="true" v-on:fileView="fileView"
-              v-model="TransmittanceData.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" :limit="1" :fileType="['txt']" v-model="TransmittanceData.curve2"
-              :isShowViev="true" v-on:fileView="fileView" />
+            <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="dialog-footer">
+    <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-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" :fileType="['txt']" v-model="calTempForm.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">
@@ -258,7 +271,7 @@
       </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%'" />
+      <ECharts class="chartShow" :chartData="chartData" :width="chartType === 'heatmap' ? '400px' :'100%'" />
     </el-dialog>
   </div>
 </template>
@@ -333,7 +346,10 @@ export default {
       fpsOptions: [],
       spectralBandOptions: [],
       // 表单校验和验证
-      rules: {
+      formRules: {
+        model: [
+          { required: true, message: "发动机型号不能为空", trigger: "change" },
+        ],
         measurementBatchId: [
           { required: true, message: "测量批次id不能为空", trigger: "blur" },
         ],
@@ -343,7 +359,7 @@ export default {
         angle: [{ required: true, message: "角度不能为空", trigger: "change" }],
         testDistance: [
           {
-            pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{1,2})?|1000(\.00?)?)$/,
+            pattern: /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{0,2})?|1000(\.00?)?)$/,
             message: "请输入0.00-1000.00之间的数字,最多可保留两位小数",
             trigger: "blur",
           },
@@ -361,44 +377,75 @@ export default {
         atmosPress: [
           {
             pattern:
-              /^(0(\.\d{1,2})?|[1-9]\d{0,2}(\.\d{1,2})?|1[0-4]\d{2}(\.\d{1,2})?|1500(\.00?)?)$/,
+              /^(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{2})?$/,
+            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{1,2})?|1000(\.00?)?)$/,
+            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{1,2})?$)|(^100$)/,
+            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{1,2})?|1000(\.00?)?)$/,
+            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
@@ -409,7 +456,7 @@ export default {
         temp: null,
         calTempFile: null,
       },
-      changeFlag:[],
+      changeFlag: [],
       chartType: "",
       fileVisible: false,
       chartData: {},
@@ -421,28 +468,24 @@ export default {
     form: {
       handler(newVal) {
         this.formData = newVal;
-        this.changeFlag.push(1)
       },
       immediate: true
     },
     radiationForm: {
       handler(newVal) {
         this.radiationData = newVal;
-        this.changeFlag.push(2)
       },
       immediate: true
     },
     TIForm: {
       handler(newVal) {
         this.TIData = newVal;
-        this.changeFlag.push(3)
       },
       immediate: true
     },
     TransmittanceForm: {
       handler(newVal) {
         this.TransmittanceData = newVal;
-        this.changeFlag.push(4)
       },
       immediate: true
     },
@@ -496,17 +539,12 @@ export default {
         return "";
       }
     },
-    validate(formName,callback){
-      this.$refs[formName].validate((valid) => {
-        callback(valid)
-      })
-    },
     // 清除验证表单
-    clearcheck(formName){
-      if(this.$refs[formName]){
-        this.$refs[formName].clearValidate()
-      } 
-    },
+    // clearcheck(formName){
+    //   if(this.$refs[formName]){
+    //     this.$refs[formName].clearValidate()
+    //   } 
+    // },
     // 点击增加按钮
     onClickBtn(type) {
       this.$emit('on-click-btn', type)
@@ -529,27 +567,78 @@ export default {
       this.addCalTempVisible = false
       this.resetCalTempForm()
     },
-    cancelCalTemp(){
+    cancelCalTemp() {
       this.addCalTempVisible = false
       this.resetCalTempForm()
     },
-    resetCalTempForm(){
+    resetCalTempForm() {
       this.calTempForm = {
         temp: null,
         calTempFile: null,
       }
     },
-    delCalTemp(row){
-      this.calTempData = this.calTempData.filter(item=> {
+    delCalTemp(row) {
+      this.calTempData = this.calTempData.filter(item => {
         return item !== row
       });
     },
     // 环境参数保存
     envDataSave() {
-      this.$emit('env-data-save', this.$refs["form"])
+      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.$emit('submit-form', this.$refs,this.changeFlag)
+      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')
@@ -597,38 +686,38 @@ export default {
     handleLineChart(data) {
       this.chartType = "line";
       const data1 = data[0].replace(/\s+/g, " ").split(" ");
-      const customName= data1.map(label => ({ [label + 'Data']: [] }))
-      let yAxis=[],series=[]
+      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){
+        customName.forEach((item, index) => {
+          for (let key in item) {
             item[key].push(parseFloat(row[index]))
           }
         })
       }
-      console.log("customName",customName);
+      console.log("customName", customName);
       // delete data1[Object.keys(data1)[0]]
-      customName.forEach((item,index)=>{
-        if(index===0) return
-        else{
+      customName.forEach((item, index) => {
+        if (index === 0) return
+        else {
           yAxis.push({
             type: "value",
             name: data1[index],
-            position: index===1?'left':'right',
+            position: index === 1 ? 'left' : 'right',
             alignTicks: true,
             axisLine: {
               show: true,
             },
           })
           series.push({
-              name: data1[index],
-              type: "line",
-              data: item[Object.keys(item)[0]],
-            },)
-          }
+            name: data1[index],
+            type: "line",
+            data: item[Object.keys(item)[0]],
+          },)
+        }
       })
-      console.log("11",Object.values(customName[0]));
+      console.log("11", Object.values(customName[0]));
       const chartData = {
         tooltip: {
           trigger: "axis",
@@ -639,21 +728,21 @@ export default {
         xAxis: [
           {
             type: "category",
-            name:data1[0],
+            name: data1[0],
             axisTick: {
               alignWithLabel: true,
             },
             axisLine: {
               show: true,
             },
-            
-            data: Object.values(customName[0])[0] ,
+
+            data: Object.values(customName[0])[0],
           },
         ],
         yAxis: yAxis,
         series: series,
       };
-      this.chartData=JSON.parse(JSON.stringify(chartData))
+      this.chartData = JSON.parse(JSON.stringify(chartData))
     },
     handleHeatmapChart(data) {
       this.chartType = "heatmap";
@@ -716,7 +805,7 @@ export default {
           },
         ],
       };
-      this.chartData=JSON.parse(JSON.stringify(chartData))
+      this.chartData = JSON.parse(JSON.stringify(chartData))
     },
   },
 };
@@ -738,6 +827,7 @@ export default {
     font-size: 1rem;
   }
 }
+
 ::v-deep .el-upload--picture-card {
   width: 80px;
   height: 80px;
@@ -748,11 +838,13 @@ export default {
   width: 80px;
   height: 80px;
 }
-.chartShow{
+
+.chartShow {
   margin: 0 auto;
 }
-.dialog-footer{
-  transform:translateX(40%);
+
+.footerBtn {
+  transform: translateX(40%);
   margin-top: 20px;
 }
 </style>

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

@@ -275,7 +275,7 @@ export default {
       getResultByEnvData(id).then((response) => {
         this.resultForm = response.data;
         this.open = true;
-        this.title = "修改数据结果";
+        this.title = this.isCheck?'查看数据结果':"修改数据结果";
       });
     },
     /** 提交按钮 */

+ 118 - 120
meas_web/src/views/meas/envData/index.vue

@@ -6,12 +6,11 @@
           @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="发动机型号" prop="model" label-width="90px">
-        <el-input v-model="queryParams.model" placeholder="请输入发动机型号" clearable
-          @keyup.enter.native="handleQuery" />
+        <el-input v-model="queryParams.model" placeholder="请输入发动机型号" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="发动机状态" prop="engineStatus" label-width="90px">
         <el-select v-model="queryParams.engineStatus" placeholder="请选择发动机状态" clearable>
-          <el-option v-for="(item,index) in engineStatusOptions" :key="index" :label="item" :value="item" />
+          <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">
@@ -53,7 +52,8 @@
       <el-table-column label="发动机角度" align="center" prop="angle" />
       <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" @click="checkView(scope.row)" v-hasPermi="['meas:envData:edit']">查看</el-button>
+          <el-button size="mini" type="text" icon="el-icon-view" @click="checkView(scope.row)"
+            v-hasPermi="['meas:envData:edit']">查看</el-button>
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
             v-hasPermi="['meas:envData:edit']">修改</el-button>
           <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
@@ -66,19 +66,24 @@
       @pagination="getList" />
 
     <!-- 添加或修改测量环境数据对话框 -->
-    <el-dialog :close-on-click-modal="false"  :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" :addFlag="addFlag" :engineModelList="engineOptions" :measureBatchList="measureBatchOptions" :angleList="angleOptions" :engineStatusList="engineStatusOptions" @env-data-save="envDataSave" @on-click-btn="onClickBtn" @submit-form="submitForm" @cancel="cancel"/>
+    <el-dialog :close-on-click-modal="false" :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" :addFlag="addFlag"
+        :engineModelList="engineOptions" :measureBatchList="measureBatchOptions" :angleList="angleOptions"
+        :engineStatusList="engineStatusOptions" @env-data-save="envDataSave" @on-click-btn="onClickBtn"
+        @submit-form="submitForm" @cancel="cancel" />
     </el-dialog>
-    <el-dialog :close-on-click-modal="false" title="增加发动机型号" :visible.sync="addDialogVisible" width="400px" append-to-body>
+    <el-dialog :close-on-click-modal="false" title="增加发动机型号" :visible.sync="addDialogVisible" width="400px"
+      append-to-body>
       <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"/>
+          <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"/>
+          <image-upload :fileSize="0" :limit="1" :fileType="['jpg']" v-model="addEngineForm.geometryImage" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -105,7 +110,8 @@
         <el-button @click="addMeasVisible = false">取 消</el-button>
       </div>
     </el-dialog>
-    <el-dialog :close-on-click-modal="false" title="增加发动机状态" :visible.sync="addStatusVisible" width="400px" append-to-body>
+    <el-dialog :close-on-click-modal="false" 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="请输入状态" />
@@ -119,7 +125,8 @@
         <el-button @click="addStatusVisible = false">取 消</el-button>
       </div>
     </el-dialog>
-    <el-dialog :close-on-click-modal="false" title="增加发动机角度" :visible.sync="addAngleVisible" width="400px" append-to-body>
+    <el-dialog :close-on-click-modal="false" 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="请输入角度" />
@@ -130,7 +137,7 @@
         <el-button @click="addAngleVisible = false">取 消</el-button>
       </div>
     </el-dialog>
-    
+
   </div>
 </template>
 
@@ -169,14 +176,14 @@ import {
   updateTransmissionRate,
   getTRateByEnvData
 } from "@/api/meas/transmissionRate";
-import { angleOption,addAngle } from "@/api/meas/angle";
-import { statusOption,addStatus } from "@/api/meas/status";
+import { angleOption, addAngle } from "@/api/meas/angle";
+import { statusOption, addStatus } from "@/api/meas/status";
 
 import dialogContent from "@/views/meas/components/dialogContent";
 
 export default {
   name: "EnvData",
-  components: { dialogContent},
+  components: { dialogContent },
   data() {
     return {
       // 遮罩层
@@ -218,11 +225,11 @@ export default {
         humidity: null,
         concentration: null,
       },
-      rules:{},
-      isCheck:false,
+      isCheck: false,
       // 表单参数
       form: {},
       radiationForm: {},
+      rules: {},
       TIForm: {},
       TransmittanceForm: {},
       // 发动机状态
@@ -255,8 +262,8 @@ export default {
       },
       fileShowData: [],
       disabled: false,
-      addFlag:false,
-      formIsChange:false
+      addFlag: false,
+      formIsChange: false
     };
   },
   created() {
@@ -317,23 +324,21 @@ export default {
     },
     // 保存环境参数
     envDataSave(val) {
-      // 保存环境参数,返回一个环境数据ID
-      val.validate((valid) => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateEnvData(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
-              this.getList();
-            });
-          } else {
-            addEnvData(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
-              this.addFlag=false
-              this.getList();
-            });
-          }
-        }
-      });
+      if (this.form.id != null) {
+        updateEnvData(this.form).then((response) => {
+          this.$modal.msgSuccess("修改成功");
+          this.getList();
+        });
+      } else {
+        addEnvData(this.form).then((response) => {
+          this.$modal.msgSuccess("新增成功");
+          this.addFlag = false
+          this.getList();
+          getEnvData(response.data.measurementBatchId).then((response) => {
+            this.form = response.data;
+          });
+        });
+      }
     },
     // 点击增加按钮
     onClickBtn(type) {
@@ -342,12 +347,12 @@ export default {
       else if (type === "engineStatus") this.addStatusVisible = true;
       else if (type === "engineAngle") this.addAngleVisible = true;
     },
-    engineChange(val){
+    engineChange(val) {
       let obj = {};
-      obj = this.engineOptions.find((item)=>{
-          return item.id === val;
+      obj = this.engineOptions.find((item) => {
+        return item.id === val;
       });
-      this.addMeasBatchForm.measurementBatch=this.getTime()+'-'+obj.model
+      this.addMeasBatchForm.measurementBatch = this.getTime() + '-' + obj.model
     },
     getTime() {
       const now = new Date();
@@ -387,24 +392,24 @@ export default {
       });
     },
     // 增加状态
-    addStatus(){
+    addStatus() {
       addStatus(this.addStatusForm).then((response) => {
         this.$modal.msgSuccess("新增成功");
         this.addStatusVisible = false;
         this.getStatusOption();
-        this.addStatusForm={
+        this.addStatusForm = {
           status: null,
           index: null
         }
       });
     },
     // 增加角度
-    addAngle(){
+    addAngle() {
       addAngle(this.addAngleForm).then((response) => {
         this.$modal.msgSuccess("新增成功");
         this.getAngleOption();
         this.addAngleVisible = false;
-        this.addAngleForm={
+        this.addAngleForm = {
           angle: null
         }
       });
@@ -483,14 +488,14 @@ export default {
     handleAdd() {
       this.reset();
       this.isCheck = false
-      this.addFlag=true
+      this.addFlag = true
       this.open = true;
       this.title = "添加测量环境数据";
     },
-    checkView(row){
+    checkView(row) {
       this.handleUpdate(row)
-      this.isCheck=true
-      this.addFlag=true
+      this.isCheck = true
+      this.addFlag = true
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -510,81 +515,73 @@ export default {
       getEnvData(row.id).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改测量环境数据";
+        this.title = this.isCheck ? '查看测量环境数据' : "修改测量环境数据";
       });
     },
     /** 提交按钮 */
-    submitForm(value,changeFlag) {
-      console.log("changeFlag",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();
-            });
-          }
+    submitForm(value, changeFlag) {
+      console.log("changeFlag", changeFlag);
+      if (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 => {
-        console.log("22",this.radiationForm);
-        if (valid && changeFlag.includes(2)) {
-          if (this.radiationForm.id != null) {
-            updateRadiation(this.radiationForm).then(response => {
-              this.$modal.msgSuccess("修改光谱辐射数据成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addRadiation(this.radiationForm).then(response => {
-              this.$modal.msgSuccess("新增光谱辐射数据成功");
-              this.open = false;
-              this.getList();
-            });
-          }
+      }
+      if (changeFlag.includes(2)) {
+        if (this.radiationForm.id != null) {
+          updateRadiation(this.radiationForm).then(response => {
+            this.$modal.msgSuccess("修改光谱辐射数据成功");
+            this.open = false;
+            this.getList();
+          });
+        } else {
+          addRadiation(this.radiationForm).then(response => {
+            this.$modal.msgSuccess("新增光谱辐射数据成功");
+            this.open = false;
+            this.getList();
+          });
         }
-      });
-      value["TIData"].validate(valid => {
-        if (valid && changeFlag.includes(3)) {
-          if (this.TIForm.id != null) {
-            updateThermalImagerTesDdata(this.TIForm).then(response => {
-              this.$modal.msgSuccess("修改热像仪数据成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addThermalImagerTesDdata(this.TIForm).then(response => {
-              this.$modal.msgSuccess("新增热像仪数据成功");
-              this.open = false;
-              this.getList();
-            });
-          }
+      }
+      if (changeFlag.includes(3)) {
+        if (this.TIForm.id != null) {
+          updateThermalImagerTesDdata(this.TIForm).then(response => {
+            this.$modal.msgSuccess("修改热像仪数据成功");
+            this.open = false;
+            this.getList();
+          });
+        } else {
+          addThermalImagerTesDdata(this.TIForm).then(response => {
+            this.$modal.msgSuccess("新增热像仪数据成功");
+            this.open = false;
+            this.getList();
+          });
         }
-      });
-      value["TransmittanceData"].validate(valid => {
-        if (valid && changeFlag.includes(4)) {
-          if (this.TransmittanceForm.id != null) {
-            updateTransmissionRate(this.TransmittanceForm).then(response => {
-              this.$modal.msgSuccess("修改透过率数据成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addTransmissionRate(this.TransmittanceForm).then(response => {
-              this.$modal.msgSuccess("新增透过率数据成功");
-              this.open = false;
-              this.getList();
-            });
-          }
+      }
+      if (changeFlag.includes(4)) {
+        if (this.TransmittanceForm.id != null) {
+          updateTransmissionRate(this.TransmittanceForm).then(response => {
+            this.$modal.msgSuccess("修改透过率数据成功");
+            this.open = false;
+            this.getList();
+          });
+        } else {
+          addTransmissionRate(this.TransmittanceForm).then(response => {
+            this.$modal.msgSuccess("新增透过率数据成功");
+            this.open = false;
+            this.getList();
+          });
         }
-      });
+      }
+
     },
     objectsAreEqual(obj1, obj2) {
       const obj1Keys = Object.keys(obj1);
@@ -594,7 +591,7 @@ export default {
       }
       for (let key of obj1Keys) {
         if (obj1[key] !== obj2[key]) {
-            return false;
+          return false;
         }
       }
       return true;
@@ -623,7 +620,7 @@ export default {
         `envData_${new Date().getTime()}.xlsx`
       );
     },
-    
+
   },
 };
 </script>
@@ -644,6 +641,7 @@ export default {
     font-size: 1rem;
   }
 }
+
 ::v-deep .el-form-item .el-select {
   width: 200px;
 }
@@ -655,9 +653,9 @@ export default {
 ::v-deep .el-form-item .upload-file {
   width: 200px;
 }
+
 // ::v-deep .el-form-item__label {
 //   position: relative; /* 设置相对定位作为星号的定位基准 */
 //   text-align: justify;
 //   text-align-last: justify; /* 确保最后一行也两端对齐 */
-// }
-</style>
+// }</style>

+ 1 - 2
meas_web/src/views/meas/measBatch/index.vue

@@ -256,7 +256,6 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加测量批次";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -265,7 +264,7 @@ export default {
       getMeasBatch(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改测量批次";
+        this.title = this.isCheck?'查看测量批次数据':"修改测量批次数据";
       });
     },
     /** 提交按钮 */

+ 1 - 20
meas_web/src/views/meas/radiation/index.vue

@@ -119,25 +119,6 @@ export default {
       // 表单参数
       form:{},
       radiationForm: {},
-      // 表单校验
-      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' }
-        ],
-      },
       // 发动机状态
       engineStatusOptions: [],
       // 发动机角度
@@ -231,7 +212,7 @@ export default {
       getRadiationByEnvData(id).then(response => {
         this.radiationForm = response.data;
         this.open = true;
-        this.title = "修改光谱辐射";
+        this.title = this.isCheck?'查看光谱辐射数据':"修改光谱辐射数据";
       });
     },
     /** 提交按钮 */

+ 1 - 18
meas_web/src/views/meas/thermalImagerTesDdata/index.vue

@@ -157,23 +157,6 @@ export default {
       // 表单参数
       form: {},
       TIForm: {},
-      // 表单校验
-      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'}
-        ]
-      },
       // 发动机状态
       engineStatusOptions: [],
       // 发动机角度
@@ -274,7 +257,7 @@ export default {
       getTIDataByEnvData(id).then(response => {
         this.TIForm = response.data;
         this.open = true;
-        this.title = "修改热像仪测试数据";
+        this.title = this.isCheck?'查看热像仪测试数据':"修改热像仪测试数据";
       });
     },
     /** 提交按钮 */

+ 1 - 8
meas_web/src/views/meas/transmissionRate/index.vue

@@ -136,13 +136,6 @@ export default {
       // 表单参数
       form: {},
       TransmittanceForm: {},
-      // 表单校验
-      rules: {
-        measurementBatchId:[
-          { required: true, message: "测量环境id不能为空"},
-          {type: 'number', message: '测量环境id必须为数字',trigger: 'blur'}
-        ],
-      },
       // 发动机状态
       engineStatusOptions: [],
       // 发动机角度
@@ -230,7 +223,7 @@ export default {
       getTRateByEnvData(id).then(response => {
         this.TransmittanceForm = response.data;
         this.open = true;
-        this.title = "修改透过率";
+        this.title = this.isCheck?'查看透过率数据':"修改透过率数据";
       });
     },
     /** 提交按钮 */