zhoushihao
2025-09-05 dd4778d2cc47467a39473f02513ec5438b5c9512
UI-Project/src/views/hollow/hollowslicecage.vue
@@ -28,10 +28,13 @@
const tableDatae = ref([])
const carPosition = ref([])
const tableDatass = ref([])
const tableDataLack = ref([])
const ganghua = ref('')
const diaodu = ref('')
const hollowPriority = ref('')
const flowCardId = ref('')
const glassType = ref('')
const layer = ref('')
const filmsId = ref('')
const adjust = ref([]);
const adjusta = ref([]);
@@ -46,6 +49,7 @@
const subRectsCountsc = ref([]);
const subRectsCountsd = ref([]);
const currentRow = reactive({}); // 当前行的数据 
const currentLack = reactive({});
const currentPage2 = ref(1)
const add = ref(false)
const glassId = ref('');
@@ -59,13 +63,9 @@
const cell8=ref(true);
const cell9=ref(true);
const blindb = ref(false)
const dialogFormVisibleb = ref(false)
const selectedRow = ref(null);
const temperingengineerId=ref('');
const handlePageChange2 = (newPage) => {
  currentPage2.value = newPage;
  window.localStorage.setItem('pagenumber', currentPage2.value)
  fetchxiang();
};
const handleBindRack = (row) => {
  selectedRow.value = row; // 更新选中的行数据  
  currentRow.deviceId  = row.deviceId; // 直接设置响应式属性  
@@ -73,6 +73,64 @@
  window.localStorage.setItem('deviceId', row.deviceId)
  window.localStorage.setItem('slot', row.slot)
  add.value = true;
};
// 缺片详情
const handleMissingFilms = (row) => {
  currentPage2.value = 1;
  const { flowCardId } = row;
  currentLack.flowCardId = row.flowCardId;
  dialogFormVisibleb.value = true;
  fetchFlowBind(flowCardId, currentPage2.value);
};
const handlePageChange2 = (newPage) => {
  currentPage2.value = newPage;
  fetchFlowBind(currentLack.flowCardId, currentPage2.value);
};
const fetchFlowBind = async (flowCardId, page) => {
  try {
    var url = "/hollowGlass/hollowGlassRelationInfo/queryLackByFlowCard?flowCardId=" + flowCardId + "&layer=" + 1;
    const response = await request.post(url)
    if (response.code == 200) {
      tableDataLack.value = response.data[page];
      ElMessage.success(response.message);
    } else {
    }
  } catch (error) {
  }
}
// 计算合计行的方法
const getSummaries = (param) => {
  const { columns, data } = param;
  const sums: string[] = [];
  columns.forEach((column, index) => {
    if (index === 0) {
      sums[index] = '合计';
      return;
    }
    // 只对需要计算的列进行求和
    const needSumColumns = ['sumCount', 'pairCount', 'totalNumber', 'realCount'];
    if (needSumColumns.includes(column.property)) {
      const values = data.map(item => Number(item[column.property]));
      if (!values.every(value => isNaN(value))) {
        sums[index] = values.reduce((prev, curr) => {
          const value = Number(curr);
          if (!isNaN(value)) {
            return prev + curr;
          } else {
            return prev;
          }
        }, 0);
        sums[index] += ''; // 转为字符串
      } else {
        sums[index] = 'N/A';
      }
    } else {
      sums[index] = '';
    }
  });
  return sums;
};
// 搜索
const searchout = async () => {
@@ -132,6 +190,38 @@
  } catch (error) {
  }  
}; 
// 缺片详情-破损
const handleBroke = async (row) => {
  try {
     const confirmResult = await ElMessageBox.confirm(
      t('searchOrder.broke'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    const response = await request.post('/hollowGlass/hollowGlassRelationInfo/hollowBigStorageGlassDamage', {
      flowCardId: row.flowCardId,
      glassType: row.glassType,
      layer: row.layer,
      state: 8,
      line: 1,
      workingProcedure: '中空',
      remark: '中空'
    })
    if (response.code == 200) {
      ElMessage.success(response.message);
      const { flowCardId } = row;
      fetchFlowBind(flowCardId, currentPage2.value);
    } else {
      ElMessage.error(response.msg);
    }
  } catch (error) {
    console.error(error);
  }
}
 // 破损
 const broke = async(row) => {  
  try {
@@ -315,23 +405,23 @@
  }
}
// 中空优先级开关
// const handlehollowPriority = async () => {
//   try  {
//     const body = {
//       flag: hollowPriority.value,
//     };
//   var url="/hollowGlass/hollowGlassOutRelationInfo/priorityHollowSwitch?flag="+hollowPriority.value;
//   const response = await request.post(url)
//     if (response.code == 200) {
//       ElMessage.success(response.message);
//       hollowPriority.value = response.data
//     }else {
//       ElMessage.error(response.message);
//       }
// }
// catch (error) {
//   }
// }
const handlehollowPriority = async () => {
  try  {
    const body = {
      flag: hollowPriority.value,
    };
  var url="/hollowGlass/hollowGlassOutRelationInfo/priorityHollowSwitch?flag="+hollowPriority.value;
  const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
      hollowPriority.value = response.data
    }else {
      ElMessage.error(response.message);
      }
}
catch (error) {
  }
}
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/hollowGlass/api/talk/hollowGlassMessage`;
const handleMessage = (data) => {
@@ -411,11 +501,11 @@
}else{
  diaodu.value = ''
  }
// if(data.priorityHollowSwitch!=null){
//   hollowPriority.value = data.priorityHollowSwitch[0]
// }else{
//   hollowPriority.value = ''
//   }
if(data.priorityHollowSwitch!=null){
  hollowPriority.value = data.priorityHollowSwitch[0]
}else{
  hollowPriority.value = ''
  }
  if(data.bigStorageCageInfos!=null){
    adjustedRects.value = data.bigStorageCageInfos[0][1].map((rect, index) => ({
    id: index + 1,
@@ -678,11 +768,23 @@
</script>
<template>
  <div style="height: 600px;">
    <div style="display: flex;">
    <el-button style="margin-top: 7px;margin-left: 10px;" id="searchButton" type="primary" @click="handlexiang">{{ $t('searchOrder.cageinformation') }}</el-button>
    <el-button style="margin-top: 7px;margin-left: 10px;" id="searchButton" type="success" @click="handlehistorical">{{ $t('searchOrder.historicaltasks') }}</el-button>
    <el-button style="margin-top: 7px;margin-left: 10px;" id="searchButton" type="danger" @click="handleptask()">{{ $t('searchOrder.partask') }}</el-button>
    <el-switch style="margin-top: 7px;margin-left: 10px;" v-model="diaodu" class="mb-2" :inactive-text="$t('searchOrder.Schedulingswitch')" @change="handlediaodu" />
    <!-- <el-switch style="margin-top: 7px;margin-left: 10px;" v-model="hollowPriority" class="mb-2" :inactive-text="$t('searchOrder.hollowPriority')" @change="handlehollowPriority" /> -->
    <div style="display: flex;">
   <div style="margin-left: 15px;margin-top: 5px;font-size: 14px;top: 5vh;margin-top: 12px;">{{ $t('searchOrder.hollowPriority') }}:</div>
   <div style="margin-left: 15px;margin-top: 5px;font-size: 14px;top: 5vh;margin-top: 12px;color: #911005;">{{ $t('searchOrder.firstLinePriority') }}</div>
    <el-switch
       style="margin-top: 7px;margin-left: 10px;"
       v-model="hollowPriority"
       class="mb-2"
       @change="handlehollowPriority"
     />
   <div style="margin-left: 15px;margin-top: 5px;font-size: 14px;top: 5vh;margin-top: 12px;color: rgb(184, 130, 48)">{{ $t('searchOrder.secondLinePriority') }}</div>
     </div>
</div>
    <div id="dotClass">
        <div>{{ $t('searchOrder.inkageEntity') }}</div>
        <i :style="{ marginTop: '2px', backgroundColor: inkageEntity, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>
@@ -781,18 +883,32 @@
</div>
</div>
<el-card style="flex: 1; height: 500px; overflow-y: auto;">
      <div style="width: 100%; height: calc(100% - 35px); overflow-y: auto;max-height: 450px;">
       <el-table height="550px" ref="table" border
       :data="tableDatass" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
         <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="140" />
         <el-table-column prop="sumCount" align="center" :label="$t('searchOrder.totallogarithms')" min-width="120" />
         <el-table-column prop="pairCount" align="center" :label="$t('searchOrder.numberpairs')" min-width="120" />
         <el-table-column prop="totalNumber" align="center" :label="$t('hellow.totalnumber')" min-width="100" />
         <el-table-column prop="realCount" align="center" :label="$t('hellow.realpieces')" min-width="120" />
         <el-table-column prop="slotCount" align="center" :label="$t('searchOrder.numberoccupied')" min-width="120" />
       </el-table>
       </div>
    </el-card>
  <div style="width: 100%; height: 100%; overflow: hidden;">
    <el-table
      ref="table"
      border
      :data="tableDatass"
      :header-cell-style="{background:'#F2F3F5', color:'#1D2129'}"
      show-summary
      :summary-method="getSummaries"
      max-height="calc(500px - 35px)"
      style="width: 100%;"
    >
      <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="140" />
      <el-table-column prop="sumCount" align="center" :label="$t('searchOrder.totallogarithms')" min-width="120" />
      <el-table-column prop="pairCount" align="center" :label="$t('searchOrder.numberpairs')" min-width="120" />
      <el-table-column prop="totalNumber" align="center" :label="$t('hellow.totalnumber')" min-width="100" />
      <el-table-column prop="realCount" align="center" :label="$t('hellow.realpieces')" min-width="120" />
      <el-table-column fixed="right" :label="$t('hellow.operate')" align="center">
        <template #default="scope">
          <el-button type="text" plain @click="handleMissingFilms(scope.row)">
            {{ $t('hellow.missingfilms') }}
          </el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</el-card>
  </div>
    <div style="padding: 10px;display: flex;height:110px;margin-top: -170px;">
            <div v-for="(item, index) in tableDatae" :key="index" id="occupy">  
@@ -994,18 +1110,38 @@
        </el-table-column>
        </el-table>
        <div>
    <!-- <div style="margin-top: 20px;margin-left: 40%;">
      <el-pagination
          background
          size="large"
          layout="prev, pager, next"
          :total="50"
          :current-page.sync="currentPage2"
          @current-change="handlePageChange2"
        />
    </div> -->
  </div>
  </el-dialog>
  <!-- 缺片详情 -->
  <el-dialog v-model="dialogFormVisibleb" top="7vh" width="70%" height="500">
    <div style="margin-top: -20px;text-align: center;margin-left: 400px;">
      <el-form-item :label="$t('hellow.cardnumbera')" style="width: 14vw">
        {{ currentLack.flowCardId }}
      </el-form-item>
    </div>
    <el-table ref="table" style="margin-top: 20px;height: 400px;" :data="tableDataLack"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
      <el-table-column prop="glassType" align="center" :label="$t('large.serialnumber')" min-width="80" />
      <el-table-column prop="thickness" align="center" :label="$t('hellow.thickness')" min-width="80" />
      <el-table-column prop="filmsId" align="center" :label="$t('hellow.coatingtypes')" min-width="80" />
      <el-table-column prop="height" align="center" :label="$t('hellow.height')" min-width="80" />
      <el-table-column prop="width" align="center" :label="$t('hellow.width')" min-width="80" />
      <el-table-column prop="lackCount" align="center" :label="$t('hellow.missingnumber')" min-width="80" />
      <el-table-column prop="damageCount" align="center" :label="$t('large.brokenNum')"/>
      <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center">
            <template #default="scope">
              <el-button type="text" plain  @click="handleBroke(scope.row)">{{ $t('order.dilapidation') }}</el-button>
            </template>
        </el-table-column>
      <div style="float: right;margin-bottom: 5px;">
        <el-pagination layout="prev, pager, next" :total="50" />
      </div>
    </el-table>
    <div style="display: flex;margin-left: 40%;margin-top: 10px;">
      <el-pagination background size="large" layout="prev, pager, next" :total="30" :current-page.sync="currentPage2"
        @current-change="handlePageChange2" />
    </div>
  </el-dialog>
  <!-- 历史任务 -->
<el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
     <iframe