|
|
@@ -0,0 +1,554 @@
|
|
|
+<template>
|
|
|
+ <div class="XFpdding" style="height: 470px;">
|
|
|
+ <ul>
|
|
|
+ <li class="item" v-for="(tab, index) in tabslist1" :key="index" :class="{ active: currentTab1 === index }"
|
|
|
+ @click="selectTab1(index)">
|
|
|
+ <img :src="tab.imgSrc" style="width: 22px;" />
|
|
|
+ {{ tab.name }}
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div v-show="currentTab1 == '0'" class="eldesign classtable" style="margin-top: 10px">
|
|
|
+ <el-form :label-width="formLabelWidth1">
|
|
|
+ <el-form-item label="整机构型:">
|
|
|
+ <el-radio-group v-model="afnoise.selected_configs">
|
|
|
+ <el-radio label="T">常规构型</el-radio>
|
|
|
+ <el-radio label="F">干净构型</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="机翼类型:">
|
|
|
+ <el-radio-group v-model="afnoise.selected_wing">
|
|
|
+ <el-radio label="T">三角翼</el-radio>
|
|
|
+ <el-radio label="F">矩形翼</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="襟翼类型:">
|
|
|
+ <el-radio-group v-model="afnoise.selected_flaps">
|
|
|
+ <el-radio label="T">三缝襟翼</el-radio>
|
|
|
+ <el-radio label="F">单/双缝襟翼</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="计算部件:">
|
|
|
+ <el-row style="width: 90%;" justify="space-between">
|
|
|
+ <el-checkbox v-model="afnoise.wing" label="机翼" true-label="T" false-label="F" />
|
|
|
+ <el-checkbox v-model="afnoise.horizontal_tail" label="平尾" true-label="T" false-label="F" />
|
|
|
+ <el-checkbox v-model="afnoise.vertical_tail" label="垂尾" true-label="T" false-label="F" />
|
|
|
+ <el-checkbox v-model="afnoise.flap" label="襟翼" true-label="T" false-label="F" />
|
|
|
+ </el-row>
|
|
|
+ <el-row style="width: 90%;" justify="space-between">
|
|
|
+ <el-checkbox v-model="afnoise.main_landing_gear" label="主起落架" true-label="T" false-label="F" />
|
|
|
+ <el-checkbox v-model="afnoise.nose_landing_gear" label="前起落架" true-label="T" false-label="F" />
|
|
|
+ <el-checkbox v-model="afnoise.slat" label="缝翼" true-label="T" false-label="F" />
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-table :data="gxcstable" border style="width: 100%; height: 220px"
|
|
|
+ :header-cell-class-name="headerCellClassName">
|
|
|
+ <el-table-column type="index" width="70" label="编号" />
|
|
|
+ <el-table-column prop="name" label="参数名称">
|
|
|
+ <!-- <template #default="{ row }">
|
|
|
+ <el-input v-model="row.name" @change="handleEdit(row)" />
|
|
|
+ </template> -->
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="value" label="参数值">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.value" type="number" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="flag" label="启用" width="100">
|
|
|
+ <template v-slot="scope">
|
|
|
+ <el-checkbox :false-label="0" :true-label="1" v-model="scope.row.flag" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div v-show="currentTab1 == '1'" class="eldesign classtable" style="margin-top: 10px">
|
|
|
+ <el-collapse v-model="activeNames">
|
|
|
+ <el-collapse-item title="环境参数" name="1">
|
|
|
+ <template #title>
|
|
|
+ <span class="collapse-title">环境参数</span>
|
|
|
+ </template>
|
|
|
+ <el-form-item label="声速(m/s):" :label-width="formLabelWidth2">
|
|
|
+ <el-input v-model="afnoise.a"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="密度(kg/m³):" :label-width="formLabelWidth2">
|
|
|
+ <el-input v-model="afnoise.density"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="动力黏度(pa·s):" :label-width="formLabelWidth2">
|
|
|
+ <el-input v-model="afnoise.dynamic_viscosity"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="马赫数:" :label-width="formLabelWidth2">
|
|
|
+ <el-input v-model="afnoise.ma"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-collapse-item>
|
|
|
+ <el-collapse-item title="计算方法" name="2">
|
|
|
+ <template #title>
|
|
|
+ <span class="collapse-title">计算方法</span>
|
|
|
+ </template>
|
|
|
+ <el-form>
|
|
|
+ <el-form-item label="选择计算方法:" :label-width="formLabelWidth2">
|
|
|
+ <el-radio-group v-model="afnoise.selected">
|
|
|
+ <el-radio label="T">Fink</el-radio>
|
|
|
+ <el-radio label="F">ESDU</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-collapse-item>
|
|
|
+ <el-collapse-item title="频率范围" name="3">
|
|
|
+ <template #title>
|
|
|
+ <span class="collapse-title">频率范围</span>
|
|
|
+ </template>
|
|
|
+ <el-form>
|
|
|
+ <el-form-item label="起始频率(Hz):" :label-width="formLabelWidth2">
|
|
|
+ <el-input v-model="afnoise.starting_fre"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="截止频率(Hz):" :label-width="formLabelWidth2">
|
|
|
+ <el-input v-model="afnoise.cutoff_fre"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div v-show="currentTab1 == '2'" class="eldesign classtable" style="margin-top: 10px">
|
|
|
+ <el-form-item label="麦克风数量:" :label-width="formLabelWidth1">
|
|
|
+ <el-input v-model="afnoise.num" @change="handleMicCountChange"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-table :data="gcdbztable" border style="width: 100%; height: 400px"
|
|
|
+ :header-cell-class-name="headerCellClassName1">
|
|
|
+ <el-table-column type="index" width="70" label="编号" />
|
|
|
+ <el-table-column prop="distances" label="各麦克风距离(m)">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.distances" type="number" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="polar_emission_angle" label="极角(deg)">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.polar_emission_angle" type="number" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="azimuthal_angle" label="方位角(deg)">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.azimuthal_angle" type="number" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div v-show="currentTab1 == '3'" class="eldesign classtable" style="margin-top: 10px">
|
|
|
+ <el-table :data="fxcstable" border style="width: 100%; height: 400px"
|
|
|
+ :header-cell-class-name="headerCellClassName">
|
|
|
+ <el-table-column type="index" width="70" label="编号" />
|
|
|
+ <el-table-column prop="name" label="参数名称">
|
|
|
+ <!-- <template #default="{ row }">
|
|
|
+ <el-input v-model="row.name" @change="handleEdit(row)" />
|
|
|
+ </template> -->
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="value" label="参数值">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-input v-model="row.value" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="flag" label="启用" width="100">
|
|
|
+ <template v-slot="scope">
|
|
|
+ <el-checkbox :false-label="0" :true-label="1" v-model="scope.row.flag" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { ref, onMounted, reactive, provide, nextTick } from "vue"
|
|
|
+import { ElMessage, ElButton, ElDialog, ElSelect } from "element-plus"
|
|
|
+import { request, uploadFile } from "@/utils/request"
|
|
|
+import emitter from "@/utils/emitter"
|
|
|
+
|
|
|
+import propnoise1 from "@/assets/img/propnoise1.png";
|
|
|
+import propnoise2 from "@/assets/img/propnoise2.png";
|
|
|
+import propnoise3 from "@/assets/img/propnoise3.png";
|
|
|
+import propnoise4 from "@/assets/img/propnoise4.png";
|
|
|
+
|
|
|
+let tabslist1 = ref([
|
|
|
+ { id: "0", name: "构型参数", imgSrc: propnoise1 },
|
|
|
+ { id: "1", name: "工况设置", imgSrc: propnoise2 },
|
|
|
+ { id: "2", name: "观测点布置", imgSrc: propnoise3 },
|
|
|
+ { id: "3", name: "分析参数", imgSrc: propnoise4 },
|
|
|
+])
|
|
|
+
|
|
|
+const selectTab1 = (index) => {
|
|
|
+ // console.log('dayin',index)
|
|
|
+ currentTab1.value = index
|
|
|
+ // console.log('currentTab1',currentTab1.value)
|
|
|
+}
|
|
|
+
|
|
|
+let currentTab1 = ref(0)
|
|
|
+let formLabelWidth1 = ref(120)
|
|
|
+let formLabelWidth2 = ref(160)
|
|
|
+
|
|
|
+let activeNames = ref(['1', '2', '3'])
|
|
|
+
|
|
|
+let pid = ref()
|
|
|
+let wid = ref()
|
|
|
+let afnoiseid = ref()
|
|
|
+
|
|
|
+let afnoise = ref({
|
|
|
+ selected_configs: 'T',
|
|
|
+ selected_wing: 'T',
|
|
|
+ selected_flaps: 'T',
|
|
|
+ wing: 'T',
|
|
|
+ horizontal_tail: 'F',
|
|
|
+ vertical_tail: 'F',
|
|
|
+ flap: 'F',
|
|
|
+ main_landing_gear: 'F',
|
|
|
+ nose_landing_gear: 'F',
|
|
|
+ slat: 'F',
|
|
|
+ a: '340.3',
|
|
|
+ density: '1.225',
|
|
|
+ dynamic_viscosity: '0.000017894',
|
|
|
+ ma: '0.235',
|
|
|
+ selected: 'T',
|
|
|
+ starting_fre: '50',
|
|
|
+ cutoff_fre: '4000',
|
|
|
+ num: 8,
|
|
|
+})
|
|
|
+
|
|
|
+let gxcstable = ref([
|
|
|
+ {
|
|
|
+ value: '321.1',
|
|
|
+ code: 'wing_area',
|
|
|
+ name: "机翼面积(m²)",
|
|
|
+ flag: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '47.4',
|
|
|
+ code: 'wing_span',
|
|
|
+ name: "机翼展长(m)",
|
|
|
+ flag: 1
|
|
|
+ },
|
|
|
+])
|
|
|
+
|
|
|
+const headerCellClassName = ({ column }) => {
|
|
|
+ // console.log('列:',column.property)
|
|
|
+ if (column.property === 'name') {
|
|
|
+ console.log('yanse',column.property)
|
|
|
+ return 'header-blue';
|
|
|
+ } else if (column.property === 'value') {
|
|
|
+ return 'header-green';
|
|
|
+ } else if (column.property === 'flag') {
|
|
|
+ return 'header-yellow';
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+};
|
|
|
+
|
|
|
+// 监听wing等参数变化,T时gxcstable增加机相关参数,F时删除
|
|
|
+const partsConfig = {
|
|
|
+ wing: [
|
|
|
+ { value: '321.1', code: 'wing_area', name: "机翼面积(m²)", flag: 1 },
|
|
|
+ { value: '47.4', code: 'wing_span', name: "机翼展长(m)", flag: 1 }
|
|
|
+ ],
|
|
|
+ horizontal_tail: [
|
|
|
+ { value: '119.1', code: 'horizontal_tail_area', name: "平尾面积(m²)", flag: 1 },
|
|
|
+ { value: '21.8', code: 'horizontal_tail_span', name: "平尾展长(m)", flag: 1 }
|
|
|
+ ],
|
|
|
+ vertical_tail: [
|
|
|
+ { value: '51.1', code: 'vertical_tail_area', name: "垂尾面积(m²)", flag: 1 },
|
|
|
+ { value: '9', code: 'vertical_tail_span', name: "垂尾展长(m)", flag: 1 }
|
|
|
+ ],
|
|
|
+ flap: [
|
|
|
+ { value: '49.8', code: 'flap_area', name: "襟翼面积(m²)", flag: 1 },
|
|
|
+ { value: '24.9', code: 'flap_span', name: "襟翼展长(m)", flag: 1 },
|
|
|
+ { value: '42', code: 'flap_deflection_angle', name: "襟翼偏转角(°)", flag: 1 }
|
|
|
+ ],
|
|
|
+ main_landing_gear: [
|
|
|
+ { value: 2, code: 'number_of_main_landing_gears', name: "主起落架个数", flag: 1 },
|
|
|
+ { value: 4, code: 'number_of_wheels_per_main_landing_gear', name: "每个主起落架轮数", flag: 1 },
|
|
|
+ { value: '1.3', code: 'main_landing_gear_wheel_diameter', name: "主起落架轮径(m)", flag: 1 },
|
|
|
+ { value: '3.03', code: 'main_landing_gear_strut_length', name: "主起落架支柱长度(m)", flag: 1 }
|
|
|
+ ],
|
|
|
+ nose_landing_gear: [
|
|
|
+ { value: 1, code: 'number_of_nose_landing_gears', name: "前起落架个数", flag: 1 },
|
|
|
+ { value: 2, code: 'number_of_wheels_per_nose_landing_gear', name: "每个前起落架轮数", flag: 1 },
|
|
|
+ { value: '0.9', code: 'nose_landing_gear_wheel_diameter', name: "前起落架轮径(m)", flag: 1 },
|
|
|
+ { value: '2.03', code: 'nose_landing_gear_strut_length', name: "前起落架支柱长度(m)", flag: 1 }
|
|
|
+ ],
|
|
|
+};
|
|
|
+
|
|
|
+// 通用逻辑
|
|
|
+function updateTable(newVal, params) {
|
|
|
+ if (newVal === 'T') {
|
|
|
+ gxcstable.value.push(...params);
|
|
|
+ } else {
|
|
|
+ const codes = params.map(p => p.code);
|
|
|
+ gxcstable.value = gxcstable.value.filter(item => !codes.includes(item.code));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 循环生成 watcher
|
|
|
+Object.keys(partsConfig).forEach(key => {
|
|
|
+ watch(() => afnoise.value[key], (newVal) => updateTable(newVal, partsConfig[key]));
|
|
|
+});
|
|
|
+
|
|
|
+let gcdbztable = ref([
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '50',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '60',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '70',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '80',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '90',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '100',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '110',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '120',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ },
|
|
|
+])
|
|
|
+
|
|
|
+// 监听麦克风数量变化,动态增减表格行数
|
|
|
+const handleMicCountChange = () => {
|
|
|
+ const count = parseInt(afnoise.value.num);
|
|
|
+ const currentCount = gcdbztable.value.length;
|
|
|
+
|
|
|
+ if (count > currentCount) {
|
|
|
+ for (let i = currentCount; i < count; i++) {
|
|
|
+ gcdbztable.value.push({
|
|
|
+ distances: '200',
|
|
|
+ polar_emission_angle: '0',
|
|
|
+ azimuthal_angle: '0',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else if (count < currentCount) {
|
|
|
+ gcdbztable.value.splice(count);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const headerCellClassName1 = ({ column }) => {
|
|
|
+ if (column.property === 'distances') {
|
|
|
+ return 'header-blue';
|
|
|
+ } else if (column.property === 'polar_emission_angle') {
|
|
|
+ return 'header-green';
|
|
|
+ } else if (column.property === 'azimuthal_angle') {
|
|
|
+ return 'header-yellow';
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+let fxcstable = ref([
|
|
|
+ {
|
|
|
+ value: '0.2;0.3;0.45;0.6;0.747',
|
|
|
+ code: 'frequency',
|
|
|
+ name: "频率(Hz)",
|
|
|
+ flag: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '0.2;0.3;0.45;0.6;0.747',
|
|
|
+ code: 'componentspl',
|
|
|
+ name: "观测点声压级(dB)",
|
|
|
+ flag: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '0.2;0.3;0.45;0.6;0.747',
|
|
|
+ code: 'oaspl',
|
|
|
+ name: "观测点总声压级(dB)",
|
|
|
+ flag: 1
|
|
|
+ },
|
|
|
+])
|
|
|
+
|
|
|
+const getafnoise = (id,nowid) => {
|
|
|
+ pid.value = id;
|
|
|
+ if(nowid){
|
|
|
+ wid.value = nowid;
|
|
|
+ }
|
|
|
+ const params = {
|
|
|
+ transCode: "MDO2001",
|
|
|
+ pid: pid.value,
|
|
|
+ wid: wid.value
|
|
|
+ };
|
|
|
+ request(params).then((res) => {
|
|
|
+ if (res.hasOwnProperty("afnoiseid")) {
|
|
|
+ getafnoiseAssign(res);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.log('AFNoise初始化失败err:',err)
|
|
|
+ ElMessage.error('AFNoise初始化失败')
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const getafnoiseAssign = (data) => {
|
|
|
+ pid.value = data.pid;
|
|
|
+ afnoiseid.value = data.afnoiseid;
|
|
|
+ afnoise.value.selected_configs = data.selected_configs;
|
|
|
+ afnoise.value.selected_wing = data.selected_wing;
|
|
|
+ afnoise.value.selected_flaps = data.selected_flaps;
|
|
|
+ afnoise.value.wing = data.wing;
|
|
|
+ afnoise.value.horizontal_tail = data.horizontal_tail;
|
|
|
+ afnoise.value.vertical_tail = data.vertical_tail;
|
|
|
+ afnoise.value.flap = data.flap;
|
|
|
+ afnoise.value.main_landing_gear = data.main_landing_gear;
|
|
|
+ afnoise.value.nose_landing_gear = data.nose_landing_gear;
|
|
|
+ afnoise.value.slat = data.slat;
|
|
|
+ afnoise.value.a = data.a;
|
|
|
+ afnoise.value.density = data.density;
|
|
|
+ afnoise.value.dynamic_viscosity = data.dynamic_viscosity;
|
|
|
+ afnoise.value.ma = data.ma;
|
|
|
+ afnoise.value.selected = data.selected;
|
|
|
+ afnoise.value.starting_fre = data.starting_fre;
|
|
|
+ afnoise.value.cutoff_fre = data.cutoff_fre;
|
|
|
+ afnoise.value.num = data.num;
|
|
|
+
|
|
|
+ getgxcstableAssign(data);
|
|
|
+
|
|
|
+ applyValueStringToParams(gcdbztable.value, data.mic_distances, data.mic_polar_angles, data.mic_azimuthal_angles);
|
|
|
+
|
|
|
+ // fxcstable赋值 code对应的值返回
|
|
|
+ fxcstable.value.find(item => item.code === 'frequency').value = data.frequency;
|
|
|
+ fxcstable.value.find(item => item.code === 'componentspl').value = data.components;
|
|
|
+ fxcstable.value.find(item => item.code === 'oaspl').value = data.oaspl;
|
|
|
+}
|
|
|
+
|
|
|
+// gxcstable赋值 wing等参数有返回值时调用
|
|
|
+const getgxcstableAssign = (data) => {
|
|
|
+ gxcstable.value = [];
|
|
|
+
|
|
|
+ // 遍历所有构件配置
|
|
|
+ Object.keys(partsConfig).forEach(key => {
|
|
|
+ if (data[key] === 'T') {
|
|
|
+ // 深拷贝对应的默认配置
|
|
|
+ const params = partsConfig[key].map(item => {
|
|
|
+ const newItem = { ...item };
|
|
|
+ // 如果data中存在对应code的属性,覆盖默认value
|
|
|
+ if (data[newItem.code] !== undefined && data[newItem.code] !== null) {
|
|
|
+ newItem.value = data[newItem.code];
|
|
|
+ }
|
|
|
+ return newItem;
|
|
|
+ });
|
|
|
+ gxcstable.value.push(...params);
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+// 赋值gcdbztable时调用
|
|
|
+const applyValueStringToParams = (params, valueStr1 , valueStr2, valueStr3) => {
|
|
|
+ const values1 = valueStr1.split(';').map(Number);
|
|
|
+ const values2 = valueStr2.split(';').map(Number);
|
|
|
+ const values3 = valueStr3.split(';').map(Number);
|
|
|
+
|
|
|
+ params.length = 0; //清空现有数据
|
|
|
+
|
|
|
+ //判断最长的数组长度
|
|
|
+ const maxLength = Math.max(values1.length, values2.length, values3.length);
|
|
|
+
|
|
|
+ for (let i = 0; i < maxLength; i++) {
|
|
|
+ params.push({
|
|
|
+ distances: values1[i] !== undefined ? values1[i] : null,
|
|
|
+ polar_emission_angle: values2[i] !== undefined ? values2[i] : null,
|
|
|
+ azimuthal_angle: values3[i] !== undefined ? values3[i] : null,
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 保存
|
|
|
+const getafnoisesave = (id,nowid) => {
|
|
|
+ if(nowid){
|
|
|
+ wid.value = nowid
|
|
|
+ }
|
|
|
+ pid.value = id;
|
|
|
+ const params = {
|
|
|
+ transCode: "MDO2002",
|
|
|
+ pid: pid.value,
|
|
|
+ wid: wid.value,
|
|
|
+ selected_configs: afnoise.value.selected_configs,
|
|
|
+ selected_wing: afnoise.value.selected_wing,
|
|
|
+ selected_flaps: afnoise.value.selected_flaps,
|
|
|
+ wing: afnoise.value.wing,
|
|
|
+ horizontal_tail: afnoise.value.horizontal_tail,
|
|
|
+ vertical_tail: afnoise.value.vertical_tail,
|
|
|
+ flap: afnoise.value.flap,
|
|
|
+ main_landing_gear: afnoise.value.main_landing_gear,
|
|
|
+ nose_landing_gear: afnoise.value.nose_landing_gear,
|
|
|
+ slat: afnoise.value.slat,
|
|
|
+ a: afnoise.value.a,
|
|
|
+ density: afnoise.value.density,
|
|
|
+ dynamic_viscosity: afnoise.value.dynamic_viscosity,
|
|
|
+ ma: afnoise.value.ma,
|
|
|
+ selected: afnoise.value.selected,
|
|
|
+ starting_fre: afnoise.value.starting_fre,
|
|
|
+ cutoff_fre: afnoise.value.cutoff_fre,
|
|
|
+ num: afnoise.value.num,
|
|
|
+ mic_distances: gcdbztable.value.map(item => item.distances).join(';'),
|
|
|
+ mic_polar_angles: gcdbztable.value.map(item => item.polar_emission_angle).join(';'),
|
|
|
+ mic_azimuthal_angles: gcdbztable.value.map(item => item.azimuthal_angle).join(';'),
|
|
|
+ frequency: fxcstable.value.find(item => item.code === 'frequency').value,
|
|
|
+ components: fxcstable.value.find(item => item.code === 'componentspl').value,
|
|
|
+ oaspl: fxcstable.value.find(item => item.code === 'oaspl').value,
|
|
|
+ };
|
|
|
+
|
|
|
+ //把 gxcstable 中的参数加入 params
|
|
|
+ gxcstable.value.forEach(item => {
|
|
|
+ params[item.code] = item.value;
|
|
|
+ });
|
|
|
+
|
|
|
+ request(params).then((res) => {
|
|
|
+ ElMessage.success('AFNoise保存成功')
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.log('AFNoise保存失败err:',err)
|
|
|
+ ElMessage.error('AFNoise保存失败')
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+defineExpose({
|
|
|
+ getafnoise,
|
|
|
+ getafnoisesave
|
|
|
+});
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+
|
|
|
+:deep(.collapse-title) {
|
|
|
+ flex: 1 0 90%;
|
|
|
+ order: 1;
|
|
|
+ text-align: left;
|
|
|
+}
|
|
|
+
|
|
|
+:deep(.collapse-title) .el-collapse-item__header {
|
|
|
+ flex: 1 0 auto;
|
|
|
+ order: -1;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+</style>
|