|  | @@ -874,6 +874,118 @@
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </template>
 | 
	
		
			
				|  |  |            </el-dialog>
 | 
	
		
			
				|  |  | +          <!--梯度优化器  -->
 | 
	
		
			
				|  |  | +          <el-dialog v-model="dialog.tidu" align-center :modal="false" :close-on-click-modal="false"
 | 
	
		
			
				|  |  | +            :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
 | 
	
		
			
				|  |  | +            :before-close="handleClose" width="430" class="dialog_class bgcolor tianjia sel">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            <template #header="{ titleId, titleClass }">
 | 
	
		
			
				|  |  | +              <div class="my-header ">
 | 
	
		
			
				|  |  | +                <el-image :src="getImgPath('xuek12.png')" fit="contain"></el-image>
 | 
	
		
			
				|  |  | +                <h4 :id="titleId" :class="titleClass">梯度优化器</h4>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +            <div class="numberinput lefttext">
 | 
	
		
			
				|  |  | +              <el-form>
 | 
	
		
			
				|  |  | +                <el-form-item label="优化算法:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-select v-model="youhua.algorithm" :suffix-icon="CaretBottom" placeholder="请选择">
 | 
	
		
			
				|  |  | +                    <el-option v-for="item in yslist" :key="item.value" :label="item.label" :value="item.value">
 | 
	
		
			
				|  |  | +                    </el-option>
 | 
	
		
			
				|  |  | +                  </el-select>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="最大外迭代步数:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="输出精度等级:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="线性约束容差:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="非线性约束容差:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="最优性度量容差::" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="梯度验证级别:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-select v-model="youhua.algorithm" :suffix-icon="CaretBottom" placeholder="请选择">
 | 
	
		
			
				|  |  | +                    <el-option v-for="item in yslist" :key="item.value" :label="item.label" :value="item.value">
 | 
	
		
			
				|  |  | +                    </el-option>
 | 
	
		
			
				|  |  | +                  </el-select>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +              </el-form>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <template #footer>
 | 
	
		
			
				|  |  | +              <div class="dialog-footer">
 | 
	
		
			
				|  |  | +                <el-button @click="dialog.tidu = false">取消</el-button>
 | 
	
		
			
				|  |  | +                <el-button type="primary" @click=" dialog.tidu = false">
 | 
	
		
			
				|  |  | +                  确定
 | 
	
		
			
				|  |  | +                </el-button>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </el-dialog>
 | 
	
		
			
				|  |  | +           <!--CST  -->
 | 
	
		
			
				|  |  | +           <el-dialog v-model="dialog.CSTt" align-center :modal="false" :close-on-click-modal="false"
 | 
	
		
			
				|  |  | +            :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
 | 
	
		
			
				|  |  | +            :before-close="handleClose" width="900" class="dialog_class bgcolor tianjia sel">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            <template #header="{ titleId, titleClass }">
 | 
	
		
			
				|  |  | +              <div class="my-header ">
 | 
	
		
			
				|  |  | +                <el-image :src="getImgPath('xuek0.png')" fit="contain"></el-image>
 | 
	
		
			
				|  |  | +                <h4 :id="titleId" :class="titleClass">CST</h4>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +            <div class="numberinput lefttext ">
 | 
	
		
			
				|  |  | +              <el-form>
 | 
	
		
			
				|  |  | +                <div style="width: 49%;">
 | 
	
		
			
				|  |  | +                <el-form-item label="CST阶数:" :label-width="formLabelWidth3">
 | 
	
		
			
				|  |  | +                  <el-input v-model="cstnum" :max="20" controls-position="right" @keydown.enter='keydownenter'/>
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +                <div style="display: flex;">
 | 
	
		
			
				|  |  | +                <div class="cstleft ">
 | 
	
		
			
				|  |  | +                <el-form-item label="上表面类函数参数N1:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="下表面类函数参数N1:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +              <div class="cstleft " style="margin-left: 20px;">
 | 
	
		
			
				|  |  | +                <el-form-item label="上表面类函数参数N2:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +                <el-form-item label="下表面类函数参数N2:" :label-width="formLabelWidth1">
 | 
	
		
			
				|  |  | +                  <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
 | 
	
		
			
				|  |  | +                </el-form-item>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <div class="classtable">
 | 
	
		
			
				|  |  | +            <el-table :data="tableDatacst" style="width: 100%" border>
 | 
	
		
			
				|  |  | +              <el-table-column prop="date" label="" width="180" />
 | 
	
		
			
				|  |  | +              <el-table-column
 | 
	
		
			
				|  |  | +                v-for="(column,index) in tablecstHeaders" :key="index"
 | 
	
		
			
				|  |  | +                :prop="column.prop"
 | 
	
		
			
				|  |  | +                :label="column.label">
 | 
	
		
			
				|  |  | +              
 | 
	
		
			
				|  |  | +                    <template #default="{ row }">
 | 
	
		
			
				|  |  | +                      <el-input v-model="row.label"  />
 | 
	
		
			
				|  |  | +                    </template>
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +          </el-table>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +              </el-form>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <template #footer>
 | 
	
		
			
				|  |  | +              <div class="dialog-footer">
 | 
	
		
			
				|  |  | +                <el-button @click="dialog.CSTt = false">取消</el-button>
 | 
	
		
			
				|  |  | +                <el-button type="primary" @click=" dialog.CSTt = false">
 | 
	
		
			
				|  |  | +                  确定
 | 
	
		
			
				|  |  | +                </el-button>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </el-dialog>
 | 
	
		
			
				|  |  |            <!-- 查看报告 -->
 | 
	
		
			
				|  |  |            <el-dialog v-model="dialog.lookover" align-center :modal="false" :close-on-click-modal="false"
 | 
	
		
			
				|  |  |              :append-to-body="true" draggable :fullscreen="false" :modal-append-to-body="false" modal-class="summary-dlg"
 | 
	
	
		
			
				|  | @@ -1210,10 +1322,13 @@ import BarChart from './echart/BarChart.vue'
 | 
	
		
			
				|  |  |  import scatter from './echart/scatter.vue'
 | 
	
		
			
				|  |  |  import radar from './echart/radar.vue'
 | 
	
		
			
				|  |  |  let Sidebarref = ref();
 | 
	
		
			
				|  |  | +let cstnum=ref(0);
 | 
	
		
			
				|  |  | +let formLabelWidth3=ref(100)
 | 
	
		
			
				|  |  | +let tablecstHeaders=ref([]);
 | 
	
		
			
				|  |  |  let treeitem = ref({});
 | 
	
		
			
				|  |  |  let treeitem2 = ref({});
 | 
	
		
			
				|  |  |  let treeitem3 = ref({});
 | 
	
		
			
				|  |  | -let percentage = ref(0);
 | 
	
		
			
				|  |  | +let percentage = ref(70);
 | 
	
		
			
				|  |  |  let progressshow = ref(false);
 | 
	
		
			
				|  |  |  let flowshow = ref(true);
 | 
	
		
			
				|  |  |  let jiankong = ref(false);
 | 
	
	
		
			
				|  | @@ -1496,12 +1611,24 @@ let dialog = ref({
 | 
	
		
			
				|  |  |    jboptimizer: false,
 | 
	
		
			
				|  |  |    lookover:false,
 | 
	
		
			
				|  |  |    Xfiol: false,
 | 
	
		
			
				|  |  | +  tidu:false,
 | 
	
		
			
				|  |  | +  CSTt:false,
 | 
	
		
			
				|  |  |    enddialog: false,
 | 
	
		
			
				|  |  |    addfun: false,
 | 
	
		
			
				|  |  |    sufun: false,
 | 
	
		
			
				|  |  |    task: false,
 | 
	
		
			
				|  |  |    guanli: false,
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  | +let tableDatacst=ref([
 | 
	
		
			
				|  |  | +  {date:"上表头"},{date:"下表头"}
 | 
	
		
			
				|  |  | +])
 | 
	
		
			
				|  |  | +let columns=ref[{
 | 
	
		
			
				|  |  | +  columns: [
 | 
	
		
			
				|  |  | +        { label: '上表面', prop: 'sbiao' },
 | 
	
		
			
				|  |  | +        { label: '下表面', prop: 'xbiao' },
 | 
	
		
			
				|  |  | +        // 动态添加更多列
 | 
	
		
			
				|  |  | +      ]
 | 
	
		
			
				|  |  | +}]
 | 
	
		
			
				|  |  |  let options = ref([
 | 
	
		
			
				|  |  |    { label: '升阻比', value: '升阻比' },
 | 
	
		
			
				|  |  |    { label: 'RCS', value: 'RCS' },
 | 
	
	
		
			
				|  | @@ -1569,9 +1696,9 @@ const tasktable = ref([
 | 
	
		
			
				|  |  |  ])
 | 
	
		
			
				|  |  |  const customColors = [
 | 
	
		
			
				|  |  |    { color: '#f56c6c', percentage: 20 },
 | 
	
		
			
				|  |  | -  { color: '#e6a23c', percentage: 40 },
 | 
	
		
			
				|  |  | -  { color: '#d3f12f', percentage: 60 },
 | 
	
		
			
				|  |  | -  { color: '#1989fa', percentage: 80 },
 | 
	
		
			
				|  |  | +  { color: '#f56c6c', percentage: 40 },
 | 
	
		
			
				|  |  | +  { color: '#5cb87a', percentage: 60 },
 | 
	
		
			
				|  |  | +  { color: '#5cb87a', percentage: 80 },
 | 
	
		
			
				|  |  |    { color: '#5cb87a', percentage: 100 },
 | 
	
		
			
				|  |  |  ]
 | 
	
		
			
				|  |  |  let name = ref("1")
 | 
	
	
		
			
				|  | @@ -1664,21 +1791,46 @@ const handleNodeClick = (data) => {
 | 
	
		
			
				|  |  |    tabactive.value = data.label;
 | 
	
		
			
				|  |  |    dialogbolen();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +// cst时间
 | 
	
		
			
				|  |  | +const keydownenter=()=>{
 | 
	
		
			
				|  |  | +  tablecstHeaders.value=[];
 | 
	
		
			
				|  |  | +  let arrheader=[];
 | 
	
		
			
				|  |  | +  let num=Number(cstnum.value);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +for(let i=0;i<=num;i++){
 | 
	
		
			
				|  |  | +  arrheader.push('x'+i)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +arrheader.forEach(function (item){
 | 
	
		
			
				|  |  | +let obj ={ label: item,prop:null };
 | 
	
		
			
				|  |  | +tablecstHeaders.value.push(obj);
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +tableDatacst.value.forEach(function (item){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  const optimizerfalse = (val) => {
 | 
	
		
			
				|  |  |    if (val == '优化器') {
 | 
	
		
			
				|  |  |      dialog.value.optimizer = true;
 | 
	
		
			
				|  |  |    } else if (val == '进化优化器') {
 | 
	
		
			
				|  |  |      dialog.value.jboptimizer = true;
 | 
	
		
			
				|  |  |      getoptimize();
 | 
	
		
			
				|  |  | -  } else if (val == 'AirfoilAero' || val == 'Rosenbrock') {
 | 
	
		
			
				|  |  | +  } else if (val == 'Xfiol' || val == 'Rosenbrock') {
 | 
	
		
			
				|  |  |      importget();
 | 
	
		
			
				|  |  |      dialog.value.Xfiol = true;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  } else {
 | 
	
		
			
				|  |  | +  }else if(val == '梯度优化器'){
 | 
	
		
			
				|  |  | +    dialog.value.tidu = true;
 | 
	
		
			
				|  |  | +  }else if(val == 'CST'){
 | 
	
		
			
				|  |  | +    dialog.value.CSTt = true;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +   else {
 | 
	
		
			
				|  |  |      dialog.value.optimizer = false;
 | 
	
		
			
				|  |  |      dialog.value.jboptimizer = false;
 | 
	
		
			
				|  |  |      dialog.value.Xfiol = false;
 | 
	
		
			
				|  |  |      dialog.value.lookover = false;
 | 
	
		
			
				|  |  | +    dialog.value.tidu = false;
 | 
	
		
			
				|  |  | +    dialog.value.CSTt = false;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -2603,7 +2755,8 @@ function initWebSocket() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    //初始化weosocket
 | 
	
		
			
				|  |  |    // const wsuri = "ws://192.168.0.43:8087//websocket?projectId="+this.pid; ws://192.168.0.131/diswebsocket?projectId=5
 | 
	
		
			
				|  |  | -  const wsurl = "ws://192.168.108:8188//websocket?projectId=" + pid.value;
 | 
	
		
			
				|  |  | + // const wsurl = "ws://192.168.108:8188//websocket?projectId=" + pid.value;
 | 
	
		
			
				|  |  | + const wsurl = "ws://192.168.0.131:8188//websocket?projectId=" + pid.value;
 | 
	
		
			
				|  |  |    // const wsurl =
 | 
	
		
			
				|  |  |    //   "ws://" +
 | 
	
		
			
				|  |  |    //   process.env.VUE_APP_BASE_websokt +
 | 
	
	
		
			
				|  | @@ -2674,7 +2827,7 @@ const websocketonmessage = (res) => {
 | 
	
		
			
				|  |  |  // Websoket连接错误事件
 | 
	
		
			
				|  |  |  const websocketonerror = (res) => {
 | 
	
		
			
				|  |  |    console.log("连接错误", res);
 | 
	
		
			
				|  |  | -  socket.close();
 | 
	
		
			
				|  |  | +  websock.close();
 | 
	
		
			
				|  |  |    reconnect();
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  // Websoket断开事件
 | 
	
	
		
			
				|  | @@ -2987,4 +3140,9 @@ const footerShows = (evt) => {
 | 
	
		
			
				|  |  |  .jindutiao .percentage-value {
 | 
	
		
			
				|  |  |    font-size: 13px;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +.cstleft{
 | 
	
		
			
				|  |  | +  width:50%;
 | 
	
		
			
				|  |  | +  flex: 1;
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 |