From f7a2fcdda7f1120498c5c5f75c5a99955fc54b43 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期二, 16 十二月 2025 16:54:09 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue |  620 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 457 insertions(+), 163 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
index dab2df4..afa7e0c 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
@@ -1,11 +1,116 @@
 <script setup>
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref, watch, inject} from "vue";
 import {useI18n} from "vue-i18n";
-import {Minus, Plus, Search} from "@element-plus/icons-vue";
+import {Platform, Search, SuccessFilled} from "@element-plus/icons-vue";
+import useUserInfoStore from "@/stores/userInfo";
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+
+
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
 
 const {t} = useI18n()
 
 const xGrid = ref()
+//鑾峰彇宸ョ▼鍙�
+const props = defineProps({
+  projectNo : String,
+  project: null,
+  state:null,
+  data: {
+    type: Array,
+    default: () => []
+  }
+});
+
+// 娉ㄥ叆 projectNo
+const injectedProjectNo = inject('projectNo', null);
+
+const selectOptions = [
+  {
+    value: '0',
+    label: '榛樿'
+  },
+  {
+    value: '1',
+    label: '浼樺厛绔栨帓'
+  },
+  {
+    value: '2',
+    label: '浼樺厛妯帓'
+  }
+]
+
+
+// 瀹氫箟娣锋帓绛夌骇
+const optionVal = ref(50)
+
+// 瀹氫箟瑁呰浇鐜�
+const percentage1 = ref(50)
+const percentage2 = ref(50)
+
+// 瀹氫箟鍏朵粬琛ㄥ崟鏁版嵁
+const furnaceWidth = ref('') // 鐐夊
+const furnaceLength = ref('') // 鐐夐暱
+const heatingTime = ref('') // 閽㈠寲鍔犵儹鏃堕棿
+const rotateMode = ref({value: '0', label: '榛樿'}) // 閽㈠寲鏃嬭浆妯″紡
+const spacingLong = ref('') // 闀胯酱闂撮殧
+const spacingWidth = ref('') // 瀹借酱闂撮殧
+const quantity = ref('') // 宸ョ▼鐗囨暟
+
+// 瀹氫箟鍝嶅簲寮忔暟鎹紝鐢ㄤ簬缁戝畾宸ョ▼鍙疯緭鍏ユ鐨勫��
+let inputValue=ref(null)
+if(props.project!==undefined){
+  inputValue = ref(props.project.projectNumber);
+  quantity.value = props.project.quantity
+} else if(props.projectNo) {
+  inputValue.value = props.projectNo;
+} else if(injectedProjectNo) {
+  // 浠� provide/inject 鑾峰彇 projectNo
+  inputValue.value = injectedProjectNo.value || injectedProjectNo;
+}else {
+  // 浠� localStorage 鑾峰彇
+  const storedProjectNo = localStorage.getItem('currentProjectNo');
+  if (storedProjectNo) {
+    inputValue.value = storedProjectNo;
+  }
+}
+
+// 娣诲姞 watch 鐩戝惉娉ㄥ叆鐨� projectNo
+watch(() => injectedProjectNo, (newVal) => {
+  if(newVal && !inputValue.value) {
+    inputValue.value = newVal.value || newVal;
+  }
+}, { immediate: true });
+
+const fetchSettings = async (username) => {
+  try {
+    const response = await request.post(`/glassOptimize/selectOptimizeParms/${username}`);
+    if (response.code == 200) {
+      if (!response.data) {
+        console.error('鍝嶅簲鏁版嵁涓虹┖');
+        return;
+      }
+      const parsedData = JSON.parse(response.data);
+      if (parsedData.tempering) {
+        furnaceLength.value = parsedData.tempering.furnaceLength;
+        furnaceWidth.value = parsedData.tempering.furnaceWidth;
+        spacingWidth.value=parsedData.tempering.xAxisInterval;
+        spacingLong.value=parsedData.tempering.yAxisInterval;
+        heatingTime.value=parsedData.tempering.temperingTime;
+      }
+
+
+    } else {
+      console.error('璇锋眰澶辫触锛岀姸鎬佺爜:', response.code);
+    }
+  } catch (error) {
+    console.error('璇锋眰鍙戠敓閿欒:', error);
+  }
+};
+
+fetchSettings(username);
 
 const gridOptions = reactive({
   height: '100%',
@@ -34,36 +139,16 @@
     mode: 'row',
     showStatus: true
   },
-  /*formConfig: {
-    data: {
-      width: '',
-      height: '',
-      quantity: ''
-    },
-    items: [
-      { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } },
-      {
-        itemRender: {
-          name: 'VxeButtonGroup',
-          options: [
-            { type: 'submit', content: t('craft.sure'), status: 'primary' },
-            { type: 'reset', content: t('product.msg.reset') }
-          ]
-        }
-      }
-    ]
-  },*/
+
   columns: [
-    {field: 'id', width: 70, title: '搴忓彿', filters: [{data: ''}], slots: {default: 'state', filter: 'num2_filter'}},
-    {field: '', width: 100, title: '鐗堝浘鏁�'},
-    {field: '', width: 100, title: '瑁呰浇鐜�'},
-    {field: '', width: 100, title: '娴佺▼鍗℃暟'},
-    {field: '', width: 100, title: '妯℃嫙鐗囨暟'},
+    {field: 'id', width: 70, title: '搴忓彿'},
+    {field: 'layoutsNumber', width: 100, title: '鐗堝浘鏁�'},
+    {field: 'loadingRate', width: 100, title: '瑁呰浇鐜�'},
+    {field: 'processCards', width: 100, title: '娴佺▼鍗℃暟'},
+    {field: 'simulatedPieces', width: 100, title: '妯℃嫙鐗囨暟'},
     {
       field: 'processId',
-      width: 150,
+      width: 350,
       title: t('processCard.processId'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
@@ -72,166 +157,375 @@
   ],//琛ㄥご鍙傛暟
   data: null,//琛ㄦ牸鏁版嵁
   toolbarConfig: {
-    buttons: [],
-    slots: {
-      buttons: "toolbar_buttons"
-    },
+
   },
-
 })
-let emit = defineEmits([
-  'changeDialog'
-])
 
-// 杩涘害鏉¢鑹插拰鎸夐挳鍔犲噺
-const percentage1 = ref(80)
-const percentage2 = ref(50)
-const customColors = [
-  {color: '#f56c6c', percentage: 20},
-  {color: '#e6a23c', percentage: 40},
-  {color: '#5cb87a', percentage: 60},
-  {color: '#1989fa', percentage: 80},
-  {color: '#162ce5', percentage: 100},
-]
-const handleButtonClick = (progressIndex, isIncrease) => {
-  let percentageRef;
-  if (progressIndex === 1) {
-    percentageRef = percentage1;
-  } else if (progressIndex === 2) {
-    percentageRef = percentage2;
+onMounted(async() => {
+  await firstLoading()
+})
+
+onMounted(async () => {
+  if (props.project && props.project.projectNumber) {
+    await fetchProjectData(props.project.projectNumber);
   }
-  if (isIncrease && percentageRef.value < 100) {
-    percentageRef.value += 10;
-  } else if (!isIncrease && percentageRef.value > 0) {
-    percentageRef.value -= 10;
+});
+
+const firstLoading = async() => {
+    request.post(`/glassOptimize/selectOptimizeParms/${username}`).then((res) => {
+      if (res.code == "200") {
+        const parsedData = JSON.parse(res.data);
+          furnaceWidth.value=parsedData.tempering.furnaceWidth
+          furnaceLength.value=parsedData.tempering.furnaceLength
+          spacingLong.value=parsedData.tempering.xAxisInterval
+          spacingWidth.value=parsedData.tempering.yAxisInterval
+      } else {
+        ElMessage.warning(res.msg)
+      }
+    })
+
+}
+
+// 鐩戝惉鐖剁粍浠朵紶閫掔殑鏁版嵁鍙樺寲
+watch(() => props.data, (newValue) => {
+  if (newValue) {
+    // 澶勭悊鏁版嵁骞舵洿鏂拌〃鏍�
+    const processData = newValue.data[0];
+    const processedData = [
+      {
+        id: "1",
+        layoutsNumber: processData.resultSum[0],
+        loadingRate: processData.resultSum[1],
+        processCards: processData.rackinfos.length,
+        simulatedPieces: processData.glass_details.length,
+        processId:processData.rackinfos
+      }
+    ];
+    gridOptions.data = processedData;
+  } else {
+    console.error("鏁版嵁鏍煎紡涓嶆纭垨涓虹┖");
+    gridOptions.data = [];
+  }
+})
+
+
+// let emit = defineEmits(['fetch-data']);
+const emit = defineEmits(['fetch-data', 'sendData', 'simulate-click']);
+
+const inputValues =  reactive({
+  project_no:inputValue.value,
+  glass_thickness:"",
+  glass_type:"",
+  chaos_pct: optionVal.value*0.01,//娣锋帓绛夌骇
+  cage_free:percentage2.value*0.01,//鐞嗙墖榫欑┖闂插害
+  tempering_time:heatingTime.value,//閽㈠寲鍔犵儹鏃堕棿
+  heat_mode: 0,//妯″紡閫夋嫨
+  max_load_pct: percentage1.value*0.01,//鏈�澶ц杞界巼
+  max_area: 0,//鏈�澶ч潰绉�
+  max_qty:0,//鏈�澶х墖鏁�
+  load_width:null,
+  load_length: null,
+  x_space: null,
+  y_space: null,
+  load_rate: null,
+  furnaces_qty:"",
+  rotate_mode:0,
+  polys_allow_rotate: 0,
+  process_cards:[]
+});
+
+
+const fetchProjectData = async (projectNumber) => {
+  try {
+    const res = await request.post(`/glassOptimize/getProjectByProjectNo/${projectNumber}`);
+    if (Number(res.code) === 200 && res.data && res.data.data && res.data.data.length > 0) {
+      const projectData = res.data.data[0];
+      // 鏇存柊 inputValues
+      inputValues.glass_thickness = projectData.glass_thickness || '';
+      inputValues.glass_type = projectData.glass_type || '';
+      console.log('鏇存柊鍚庣殑 inputValues:', inputValues);
+    } else {
+      ElMessage.warning('鏈壘鍒伴」鐩俊鎭垨鏁版嵁鏍煎紡涓嶆纭�');
+    }
+  } catch (error) {
+    console.error('璇锋眰澶辫触:', error);
+    ElMessage.error('鑾峰彇椤圭洰淇℃伅澶辫触');
   }
 };
 
-// 娣锋帓绛夌骇
-const optionVal = ref('')
-const options = [
-  {
-    value: '0',
-    label: '涓嶆贩鎺�',
-  },
-  {
-    value: '1',
-    label: '杞诲害娣锋帓',
-  },
-  {
-    value: '2',
-    label: '涓害娣锋帓',
-  },
-  {
-    value: '3',
-    label: '楂樺害娣锋帓',
-  },
-]
+const handleSearchClick = () => {
+  const projectNumber = inputValue.value;
+  if (!projectNumber) {
+    ElMessage.warning('璇疯緭鍏ュ伐绋嬪彿');
+    return;
+  }
+  // 閫氱煡鐖剁粍浠舵洿鏂帮紙鍙�夛級
+  emit('fetch-data', projectNumber);
+  // 瀛愮粍浠惰嚜宸辫皟鐢ㄦ帴鍙f洿鏂版暟鎹�
+  fetchProjectData(projectNumber);
+};
 
+
+const handleSimulationClick = async () => {
+
+  try {
+    const projectNumber = inputValue.value;
+    if (!projectNumber) {
+      ElMessage.warning('璇疯緭鍏ュ伐绋嬪彿');
+      return;
+    }
+
+    const res = await request.post(`/glassOptimize/getProjectState/${projectNumber}`);
+    if (Number(res.code) === 200) {
+      const projectData = res.data.data;
+
+      // 妫�鏌� tempering_state 鐘舵��
+      if (projectData.tempering_state === 1) {
+        // 濡傛灉宸插畬鎴愭ā鎷熻绠楋紝鎻愮ず鐢ㄦ埛骞堕樆姝㈢户缁墽琛�
+        ElMessage.warning('宸插畬鎴愭ā鎷熻绠楋紝涓嶅厑璁搁噸澶嶈绠�');
+        return;
+      }
+    } else {
+      ElMessage.warning(res.msg);
+      return;
+    }
+  } catch (error) {
+    ElMessage.error('妫�鏌ュ伐绋嬬姸鎬佸け璐ワ紝璇风◢鍚庨噸璇�');
+    console.error('妫�鏌ュ伐绋嬬姸鎬佸け璐�:', error);
+    return;
+  }
+
+
+  inputValues.project_no = inputValue.value;
+  inputValues.chaos_pct = optionVal.value * 0.01; // 娣锋帓绛夌骇
+  inputValues.cage_free = percentage2.value * 0.01; // 鐞嗙墖榫欑┖闂插害
+  inputValues.heat_mode = 0; // 妯″紡閫夋嫨锛堥粯璁ゅ�硷級
+  inputValues.max_load_pct = percentage1.value * 0.01; // 鏈�澶ц杞界巼
+  inputValues.max_area = 0; // 鏈�澶ч潰绉紙榛樿鍊硷級
+  inputValues.max_qty = 0; // 鏈�澶х墖鏁帮紙榛樿鍊硷級
+  inputValues.load_width = furnaceWidth.value;
+  inputValues.load_length = furnaceLength.value;
+  inputValues.x_space = spacingWidth.value;
+  inputValues.y_space = spacingLong.value;
+  inputValues.polys_allow_rotate = parseInt(rotateMode.value.value);
+  inputValues.tempering_time = heatingTime.value || inputValues.tempering_time || 0;
+
+  const sendData = {
+    project_no: inputValues.project_no,
+    glass_thickness: inputValues.glass_thickness,
+    glass_type: inputValues.glass_type,
+    chaos_pct: inputValues.chaos_pct, // 娣锋帓绛夌骇
+    cage_free: inputValues.cage_free, // 鐞嗙墖榫欑┖闂插害
+    tempering_time: inputValues.tempering_time,
+    heat_mode: inputValues.heat_mode, // 妯″紡閫夋嫨
+    max_load_pct: inputValues.max_load_pct, // 鏈�澶ц杞界巼
+    max_area: inputValues.max_area, // 鏈�澶ч潰绉�
+    max_qty: inputValues.max_qty, // 鏈�澶х墖鏁�
+    load_width: inputValues.load_width,
+    load_length: inputValues.load_length,
+    x_space: inputValues.x_space,
+    y_space: inputValues.y_space,
+    load_rate: inputValues.load_rate, // 瑁呰浇鐜囷紙鍙兘涓虹┖锛�
+    furnaces_qty: inputValues.furnaces_qty, // 鐐夊瓙鏁伴噺锛堝彲鑳戒负绌猴級
+    rotate_mode: inputValues.rotate_mode, // 閽㈠寲鏃嬭浆妯″紡锛堝彲鑳戒负绌猴級
+    polys_allow_rotate: inputValues.polys_allow_rotate,
+    process_cards: inputValues.process_cards || [] // 娴佺▼鍗″垪琛紙榛樿绌烘暟缁勶級
+  };
+
+  emit('sendData', sendData);
+
+
+
+      inputValues.project_no = inputValue.value;
+
+
+
+  emit('sendData', {
+    ...inputValues
+  })
+  // 瑙﹀彂鐖剁粍浠剁殑 simulate-click 浜嬩欢
+  emit('simulate-click');
+
+
+};
+
+
+
+
+
+const handleSave = () => {
+  console.log('褰撳墠淇濆瓨鐨勬暟鎹�:', props.data);
+  if(props.state==3){
+
+      let projectData = ref({
+        inputValues:inputValues,
+        userName : username,
+        state:props.state
+      })
+
+      request.post(`/glassOptimize/simulationSave`, projectData.value).then((res) => {
+        if (res.code == 200 && res.data === true) {
+          ElMessage.success(t('basicData.msg.saveSuccess'))
+
+        } else {
+          ElMessage.warning(res.msg)
+        }
+      })
+
+  }else{
+    if (props.data) {
+
+      let projectData = ref({
+        projectdetail: props.data.data[0].glass_details,
+        ratioResult: props.data.data[0].ratioResult,
+        rackinfos: props.data.data[0].rackinfos,
+        resultSum: props.data.data[0].resultSum,
+        guidance: props.data.data[0].guidance,
+        userName : username,
+        inputValues:inputValues,
+        state:props.state
+      })
+
+      request.post(`/glassOptimize/simulationSave`, projectData.value).then((res) => {
+        if (res.code == 200 && res.data === true) {
+          ElMessage.success(t('basicData.msg.saveSuccess'))
+
+        } else {
+          ElMessage.warning(res.msg)
+        }
+      })
+
+    }
+  }
+}
 
 </script>
 
 <template>
-  <div style="width: 100%;height: 100%">
+<div style="width: 100%;height: 100%">
     <!--妯℃嫙璁$畻琛ㄥご-->
-    <div id="title" style="margin-top: -10px">
-      <span>
-        宸ョ▼缂栧彿
-      <vxe-select size="small" style="margin-left: 20px" clearable></vxe-select>
-      <el-button type="primary" :icon="Search" style="margin-left: 20px">鏌ヨ</el-button>
-      </span>
-      <span style="float: right ; margin-right: 120px">
-        宸ョ▼娣锋帓绛夌骇
-          <el-select
-              placeholder="閫夋嫨娣锋帓绛夌骇"
-              style="margin-left:10px; width: 200px; "
-              ref="getSelect"
-              v-model="optionVal"
-              clearable
-              class="m-2"
-              @change="getWorkOrder"
-          >
+<div id="title" style="margin-top: -10px;height: 50%">
+  <div style="display: flex">
+    <div style="width: 850px">
+      宸ョ▼缂栧彿
+      <el-input style="width:150px;margin-left: 30px" clearable v-model="inputValue" placeholder="璇疯緭鍏ュ伐绋嬪彿"></el-input>
+      <el-button
+          type="primary"
+          :icon="Search"
+          style="margin-left: 20px"
+          @click="handleSearchClick"
+      >{{ $t('basicData.search') }}
+      </el-button>
+    </div>
+    <div style="display: flex ; width: 700px;align-items: center;">
+      <span>宸ョ▼娣锋帓绛夌骇</span>
+      <el-slider
+          style="max-width: 200px; flex: 1; margin-left: 10px"
+          v-model="optionVal"
+          :min="0"
+          :max="100"
+          :step="1"/>
+      <span style="margin-left: 20px ; width: 35px;">{{ optionVal }}%</span>
 
+      <el-button type="primary" style="margin-left: 10px" :icon="Platform"  @click="handleSimulationClick">妯℃嫙璁$畻</el-button>
+      <el-button type="primary" style="margin-left: 20px" :icon="SuccessFilled"  @click="handleSave">淇濆瓨</el-button>
+    </div>
+  </div><br>
+  <div style="display:flex">
+    <div class="demo-progress" style="margin-top: 5px;width: 50%">
+      <div style="display: flex; align-items: center">
+        <span>閽㈠寲鏈�澶ц杞�</span>
+        <!-- 杩涘害鏉¤缃� -->
+        <el-slider
+            style="max-width: 400px; flex: 1; margin-left: 10px"
+            v-model="percentage1"
+            :min="0"
+            :max="100"
+            :step="1"/>
+        <span style="margin-left: 20px ; width: 35px;">{{ percentage1 }}%</span>
+        <!--      <span style="float: right ; margin-left: 150px;">
+                    宸ョ▼鐗囨暟 <vxe-input size="small" disabled class="input"  v-model="quantity"></vxe-input>
+                    瀹借酱闂撮殧 <vxe-input size="small" class="input" clearable v-model="spacingWidth"></vxe-input>
+                    鐐夊(mm) <vxe-input size="small" class="input" clearable v-model="furnaceWidth"></vxe-input>
+              </span>-->
+      </div>
+      <div style="display: flex; align-items: center">
+        <span>鐞嗙墖绗肩┖闂插害</span>
+        <!-- 杩涘害鏉¤缃� -->
+        <el-slider
+            style="max-width: 400px; flex: 1; margin-left: 10px"
+            v-model="percentage2"
+            :min="0"
+            :max="100"
+            :step="1"/>
+        <span style="margin-left: 20px ; width: 35px;">{{ percentage2 }}%</span>
+      </div>
+    </div>
+
+    <div class="demo-progress" style="display: flex;font-size: 15px">
+      <div style="height: 35px;line-height: 35px">
+        <div>宸ョ▼鐗囨暟 <el-input size="small" disabled class="input"  v-model="quantity"></el-input></div>
+        <div>閽㈠寲鏃嬭浆鏂瑰紡
+          <el-select style="width: 100px;height: 30px" v-model="rotateMode">
             <el-option
-                v-for="item in options"
+                v-for="item in selectOptions"
                 :key="item.value"
                 :label="item.label"
                 :value="item.value"
             />
           </el-select>
-      <el-button type="primary" style="margin-left: 20px">妯℃嫙璁$畻</el-button>
-      <el-button type="primary" style="margin-left: 50px">淇濆瓨</el-button>
-      </span><br>
-      <div class="demo-progress" style="margin-top: 5px">
-        <div style="display: flex; align-items: center">
-          <span>閽㈠寲鏈�澶ц杞�</span>
-          <!--杩涘害鏉¤缃�-->
-          <el-progress style="max-width: 300px; flex: 1; margin-left: 10px" :percentage="percentage1"
-                       :color="customColors"/>
-          <el-button-group style="margin-left: 10px;">
-            <el-button :icon="Minus" @click="handleButtonClick(1,false)"/>
-            <el-button :icon="Plus" @click="handleButtonClick(1,true)"/>
-          </el-button-group>
-          <span style="float: right ; margin-left: 198px;">
-                宸ョ▼鐜荤拑鐗�&nbsp;&nbsp;<vxe-input size="small" class="input" clearable></vxe-input>
-                瀹借酱闂撮殧<vxe-input size="small" class="input" clearable></vxe-input>
-                鐐夊(mm)<vxe-input size="small" class="input" clearable></vxe-input>
-              </span>
         </div>
       </div>
-      <br>
-      <div class="demo-progress" style="margin-top: -10px">
-        <div style="display: flex; align-items: center">
-          <span>鐞嗙墖绗肩┖闂插害</span>
-          <!--杩涘害鏉¤缃�-->
-          <el-progress style="max-width: 300px; flex: 1; margin-left: 10px" :percentage="percentage2"
-                       :color="customColors"/>
-          <el-button-group style="margin-left: 10px;">
-            <el-button :icon="Minus" @click="handleButtonClick(2,false)"/>
-            <el-button :icon="Plus" @click="handleButtonClick(2,true)"/>
-          </el-button-group>
-          <span style="float: right ; margin-left: 198px;">
-                  鍔犵儹鏃堕棿(绉�)<vxe-input size="small" class="input" clearable></vxe-input>
-                  闀胯酱闂撮殧<vxe-input size="small" class="input" clearable></vxe-input>
-                  鐐夐暱(mm)<vxe-input size="small" class="input" clearable></vxe-input>
-          </span>
-        </div>
+      <div style="margin-left: 15px;height: 35px;line-height: 35px">
+        <div>瀹借酱闂撮殧 <el-input size="small" class="input" clearable v-model="spacingWidth"></el-input></div>
+        <div>闀胯酱闂撮殧 <vxe-input size="small" class="input" clearable v-model="spacingLong"></vxe-input></div>
+
+
       </div>
+      <div style="margin-left: 15px;height: 35px;line-height: 35px">
+        <div>鐐夊(mm) <el-input size="small" class="input" clearable v-model="furnaceWidth"></el-input></div>
+        <div>鐐夐暱(mm) <vxe-input size="small" class="input" clearable v-model="furnaceLength"></vxe-input></div>
+      </div>
+
     </div>
-
-    <vxe-grid
-        size="small"
-        @filter-change="filterChanged"
-        height="100%"
-        class="mytable-scrollbar"
-        ref="xGrid"
-        v-bind="gridOptions"
-        v-on="gridEvents"
-    >
-      <template #num2_filter="{ column, $panel }">
-        <div>
-          <div v-for="(option, index) in column.filters" :key="index">
-            <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')"
-                        @change="changeFilterEvent($event, option, $panel)">
-              <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option>
-              <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option>
-            </vxe-select>
-          </div>
+  </div>
+</div>
+<div style="height: 50%">
+  <vxe-grid
+      size="small"
+      @filter-change="filterChanged"
+      height="50%"
+      class="mytable-scrollbar"
+      ref="xGrid"
+      v-bind="gridOptions"
+      v-on="gridEvents"
+  >
+    <template #num2_filter="{ column, $panel }">
+      <div>
+        <div v-for="(option, index) in column.filters" :key="index">
+          <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')"
+                      @change="changeFilterEvent($event, option, $panel)">
+            <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option>
+            <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option>
+          </vxe-select>
         </div>
-      </template>
+      </div>
+    </template>
 
-      <template #num1_filter="{ column, $panel }">
-        <div>
-          <div v-for="(option, index) in column.filters" :key="index">
-            <input
-                type="type"
-                v-model="option.data"
-                @keyup.enter.native="$panel.confirmFilter()"
-                @input="changeFilterEvent($event, option, $panel)"/>
-          </div>
+    <template #num1_filter="{ column, $panel }">
+      <div>
+        <div v-for="(option, index) in column.filters" :key="index">
+          <input
+              type="type"
+              v-model="option.data"
+              @keyup.enter.native="$panel.confirmFilter()"
+              @input="changeFilterEvent($event, option, $panel)"/>
         </div>
-      </template>
-    </vxe-grid>
+      </div>
+    </template>
+  </vxe-grid>
+</div>
+
   </div>
 </template>
 
@@ -239,7 +533,7 @@
 
 .input {
   width: 80px;
-  margin-left: 20px;
+  height: 30px;
 }
 
 </style>
\ No newline at end of file

--
Gitblit v1.8.0