ZengTao
3 天以前 b8a043314eb644f45e3e110c75c29b19218c2ae8
Merge remote-tracking branch 'origin/master'
3个文件已添加
8个文件已修改
970 ■■■■ 已修改文件
UI-Project/src/router/index.js 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/ReportWork/cardProgress.vue 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/ReportWork/report.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Returns/upreturns.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Returns/upreturns2.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/User/rolelist.vue 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/LackDetailDialog.vue 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipment.vue 158 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipmenthree.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipmenttwo.vue 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowslicecage.vue 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/router/index.js
@@ -254,14 +254,19 @@
  /*----------- 报工管理 ----------------*/
  {
    path: 'reportWork',
    name: 'reportWork',
    component: () => import('../views/ReportWork/reportWork.vue'),
    name: 'report',
    component: () => import('../views/ReportWork/report.vue'),
    children: [
      {
        path: '/ReportWork/reportWork',
        name: 'reportWork',
        component: () => import('../views/ReportWork/reportWork.vue')
      },
      {
        path: '/ReportWork/cardProgress',
        name: 'cardProgress',
        component: () => import('../views/ReportWork/cardProgress.vue')
      },
    ]
  },
  
UI-Project/src/views/ReportWork/cardProgress.vue
New file
@@ -0,0 +1,241 @@
<template>
  <div style="height: 600px;">
    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;margin-left: 20px;">
      {{ $t('Mounting.projecta') }}
       <el-input :placeholder="$t('order.projectnumber')" v-model="engineerId" style="width: 200px;margin-right: 20px;" autocomplete="off" />
      {{ $t('hellow.cardnumbera') }}
       <el-input :placeholder="$t('searchOrder.incardnumber')" v-model="flowCardId" style="width: 200px;margin-right: 20px;" autocomplete="off" />
      {{ $t('searchOrder.glassIDa') }}
       <el-input :placeholder="$t('searchOrder.inglassID')" v-model="glassId" style="width: 200px;margin-right: 20px;" autocomplete="off" />
      <el-button type="primary" style="margin-left: 10px;"
        :disabled="isQueryBtnDisabled"
        @click="selectReportData()">{{ $t('reportmanage.inquire')}}</el-button>
    </div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" >
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table height="140" :data="reportData"  ref="upperTableRef"
         @selection-change="handleSelectionChange"
          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <el-table-column prop="selectionKey" type="selection" width="50"/>
          <el-table-column prop="engineerId" align="center" :label="$t('reportmanage.projectnumber')" min-width="100"/>
          <el-table-column prop="flowCardId" align="center" :label="$t('hellow.cardnumber')" min-width="120"/>
          <el-table-column prop="glassType" align="center" :label="$t('large.serialnumber')" min-width="100"/>
          <el-table-column prop="layer" align="center" :label="$t('searchOrder.ceng')" min-width="60"/>
          <el-table-column prop="filmsid" align="center" :label="$t('hellow.coatingtypes')" min-width="100"/>
          <el-table-column prop="thickness" align="center" :label="$t('hellow.thickness')" min-width="100"/>
          <el-table-column prop="width" align="center" :label="$t('hellow.width')" min-width="100"/>
          <el-table-column prop="height" align="center" :label="$t('basicData.height')" min-width="100"/>
          <el-table-column prop="totalQuantity" align="center" :label="$t('searchOrder.allnumber')" min-width="100"/>
          <el-table-column prop="cutting" align="center" :label="$t('large.load')" min-width="100"/>
          <el-table-column prop="edging" align="center" :label="$t('scheduling.edgingCount')" min-width="100"/>
          <el-table-column prop="temping" align="center" :label="$t('scheduling.temperingCount')" min-width="100"/>
        </el-table>
      </div>
    </el-card>
    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;margin-left: 20px;">
      {{ $t('reportmanage.process') }}:
      <el-select v-model="workingProcedureList" :placeholder="$t('reportmanage.cprocess')"
       @change="handleSelectChange" multiple
        style="margin-left: 10px;margin-right: 20px;width: 240px;">
        <el-option :label="$t('reportmanage.incise')" value="切割"></el-option>
        <el-option :label="$t('reportmanage.edging')" value="磨边"></el-option>
        <el-option :label="$t('reportmanage.steel')" value="钢化"></el-option>
      </el-select>
      {{ $t('reportmanage.type') }}:
      <el-select v-model="typeList" :placeholder="$t('reportmanage.ctype')"
       @change="handleSelectChange" multiple
        style="margin-left: 10px;width: 240px;">
        <el-option :label="$t('reportmanage.completed')" value="1"></el-option>
        <el-option :label="$t('reportmanage.broke')" value="8"></el-option>
      </el-select>
    </div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" >
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table height="500" ref="table" :data="tableData"
          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <el-table-column prop="workingProcedure" align="center" :label="$t('reportmanage.process')" min-width="100" />
          <el-table-column prop="glassId" align="center" :label="$t('reportmanage.glassID')" min-width="150" />
          <el-table-column prop="formattedDamageTime" align="center" :label="$t('reportmanage.productiontime')" min-width="150" />
          <el-table-column prop="flowCardId" align="center" :label="$t('hellow.cardnumber')" min-width="100"/>
          <el-table-column prop="glassType" align="center" :label="$t('large.serialnumber')" min-width="100"/>
          <el-table-column prop="layer" align="center" :label="$t('searchOrder.ceng')" min-width="100"/>
          <el-table-column prop="filmsid" align="center" :label="$t('hellow.coatingtypes')" min-width="100"/>
          <el-table-column prop="thickness" align="center" :label="$t('hellow.thickness')" min-width="100"/>
          <el-table-column prop="width" align="center" :label="$t('hellow.width')" min-width="100"/>
          <el-table-column prop="height" align="center" :label="$t('basicData.height')" min-width="100"/>
          <el-table-column prop="deviceName" align="center" :label="$t('reportmanage.reportingequipment')" min-width="100" />
          <el-table-column prop="type" align="center" :label="$t('reportmanage.type')" min-width="100">
           <template #default="scope">
            <el-tag :type="gettypeType(scope.row.type)">
              {{ gettypeText(scope.row.type) }}
            </el-tag>
           </template>
          </el-table-column>
           <el-table-column prop="status" align="center" :label="$t('reportmanage.state')" min-width="100">
           <template #default="scope">
            <el-tag :type="getStatusType(scope.row.status)">
              {{ getStatusText(scope.row.status) }}
            </el-tag>
           </template>
          </el-table-column>
        </el-table>
      </div>
    </el-card>
  </div>
</template>
<script lang="ts" setup>
import { Delete, Upload } from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, onMounted, onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue";
import { WebSocketHost, host } from '@/utils/constants'
import { useI18n } from 'vue-i18n'
import { inject } from 'vue';
import request from "@/utils/request"
const globalDate = inject('globalDate');
const { t } = useI18n()
const timeRange = ref([])
const reportData = ref([])
const tableData = ref([])
const selectedRows = ref([])
const engineerId = ref('')
const flowCardId = ref('')
const glassId = ref('')
const workingProcedureList = ref<string[]>(['切割'])
const typeList = ref<string[]>(['1'])
const selectReportData = async () => {
  const response = await request.post("/cacheVerticalGlass/damage/queryFlowCardIdProgress", {
    engineerId: engineerId.value.trim(),
    flowCardId: flowCardId.value.trim(),
    glassId: glassId.value.trim(),
  })
  if (response.code === 200) {
    reportData.value = response.data;
    ElMessage.success(response.message);
  }
};
const isQueryBtnDisabled = computed(() => {
  return !engineerId.value.trim() && !flowCardId.value.trim() && !glassId.value.trim()
})
const handleSelectionChange = (val) => {
  selectedRows.value = val
  // 当选中行数量为0时,清空下方表格数据
  if (val.length === 0) {
    tableData.value = []
    workingProcedureList.value = ['切割']
    typeList.value = ['1']
    return
  }
  if (val.length > 0) {
    handleQueryWorkData()
  }
}
const handleSelectChange = () => {
  // 有选中行且下方表格有数据时,才调用接口
  if (selectedRows.value.length > 0 ) {
    handleQueryWorkData()
  }
}
const handleQueryWorkData = async () => {
  if (selectedRows.value.length === 0) {
    ElMessage.warning(t('reportmanage.pleaseSelectRow'))
    return
  }
  if (!workingProcedureList.value || workingProcedureList.value.length === 0) {
    ElMessage.warning(t('reportmanage.cprocess'))
    return
  }
  // 类型下拉选是否为空
  if (!typeList.value || typeList.value.length === 0) {
    ElMessage.warning(t('reportmanage.ctype'))
    return
  }
  const conditionList = selectedRows.value.map(row => ({
    flowCardId: row.flowCardId,
    layer: row.layer,
    glassType: row.glassType
  }))
  const requestParams = {
    conditionList,
    glassId: glassId.value.trim(),
    workingProcedureList: workingProcedureList.value,
    typeList: typeList.value,
  }
  try {
    const response = await request.post("/cacheVerticalGlass/damage/queryProgress", requestParams)
    if (response.code === 200) {
      const formattedData = response.data.map(record => ({
        ...record,
        formattedDamageTime: formatTimestamp(record.damageTime),
      }));
      tableData.value = formattedData;
      ElMessage.success(response.message);
    } else {
      ElMessage.error(response.message)
    }
  } catch (error) {
    ElMessage.error()
  }
};
function gettypeType(type: number) {
  switch (type) {
    case 1:
      return 'success';
    case 8:
      return 'warning';
    default:
      return 'info'
  }
}
function gettypeText(type: number) {
  switch (type) {
    case 1:
      return t('reportmanage.completed');//完工
    case 8:
      return t('reportmanage.broke');//破损
    default:
      return t('sorter.another')
  }
}
function getStatusType(status: number) {
  switch (status) {
    case 1:
      return 'warning';
    case 3:
      return 'success';
    default:
      return 'info'
  }
}
function getStatusText(status: number) {
  switch (status) {
    case 1:
      return t('reportmanage.dreportwork');//未报工
    case 3:
      return t('reportmanage.reportwork');//已报工
    default:
      return t('sorter.another')
  }
}
function formatTimestamp(timestamp) {
  const date = new Date(timestamp);
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1,并补零
  const day = String(date.getDate()).padStart(2, '0'); // 补零
  const hours = String(date.getHours()).padStart(2, '0'); // 补零(如果需要显示时间)
  const minutes = String(date.getMinutes()).padStart(2, '0'); // 补零(如果需要显示时间)
  const seconds = String(date.getSeconds()).padStart(2, '0'); // 补零(如果需要显示时间)
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
// 格式化后端时间并计算一周前的时间
const defaultTime = ref<[Date, Date]>([new Date(), new Date()]);
function parseAndSetTime() {
  const backendTime = new Date(globalDate);
  const oneWeekAgo = new Date(backendTime.getTime() - 7 * 24 * 60 * 60 * 1000); // 减去7天
  oneWeekAgo.setHours(0, 0, 0, 0);
  timeRange.value = [formatTimestamp(oneWeekAgo), formatTimestamp(backendTime)];
  window.localStorage.setItem('startTime', formatTimestamp(oneWeekAgo))
}
onMounted(() => {
  parseAndSetTime();
});
</script>
UI-Project/src/views/ReportWork/report.vue
New file
@@ -0,0 +1,37 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router";
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
<template>
    <div id="main-body">
      <router-view  />
    </div>
</template>
<style scoped>
#main-div{
  width: 100%;
  height: 100%;
}
#div-title{
  height: 2%;
  width: 100%;
}
#searchButton{
  margin-top: -5px;
  margin-left: 1rem;
}
#main-body{
  width: 100%;
  height: 95%;
}
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
UI-Project/src/views/Returns/upreturns.vue
@@ -142,15 +142,16 @@
    ElMessage.error(t('basicData.plselectproject'))
    return
  }
   if (!filmRemove.value) {
    ElMessage.error(t('Mounting.removalmethod'))
    return
  }
  //  if (!filmRemove.value) {
  //   ElMessage.error(t('Mounting.removalmethod'))
  //   return
  // }
  try {
    const response = await request.post('/loadGlass/up-patten-usage/selectUpPattenUsage', {
      stationCell: 5,
      engineerId: selectedProjectNo.value,
      filmRemove: parseInt(filmRemove.value, 10),
      filmRemove: 0,
      // filmRemove: parseInt(filmRemove.value, 10),
    })
    window.localStorage.setItem('engineeringIda', selectedProjectNo.value)
    window.localStorage.setItem('filmRemove', filmRemove.value)
@@ -597,7 +598,7 @@
        </template>
      </el-dialog>
    </div>
    <el-dialog v-model="dialogFormVisible" top="24vh" width="70%">
    <el-dialog v-model="dialogFormVisible" top="24vh" width="50%">
      <div class="flex-container" style="margin-left: 50px;margin-bottom: 10px;">
        <el-form-item :label="$t('Mounting.loadingline')" :required="true">
          <el-select disabled v-model="stationCell" clearable :placeholder="$t('Mounting.inloadingline')">
@@ -612,14 +613,12 @@
              :value="item.projectNo" />
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('Mounting.removalmethoda')" :required="true">
        <!-- <el-form-item :label="$t('Mounting.removalmethoda')" :required="true">
          <el-select v-model="filmRemove" clearable :placeholder="$t('Mounting.removalmethod')">
            <el-option :label="$t('Mounting.noremoval')" value="0"></el-option>
            <!-- 不除膜:0    除膜:2 -->
            <!-- <el-option :label="$t('Mounting.coarselyground')" value="1"></el-option> -->
            <el-option :label="$t('Mounting.removal')" value="2"></el-option>
          </el-select>
        </el-form-item>
        </el-form-item> -->
      </div>
      <template #footer>
        <div id="dialog-footer">
UI-Project/src/views/Returns/upreturns2.vue
@@ -182,15 +182,11 @@
    ElMessage.error(t('basicData.plselectproject'))
    return
  }
   if (!filmRemove.value) {
    ElMessage.error(t('Mounting.removalmethod'))
    return
  }
  try {
    const response = await request.post('/loadGlass/up-patten-usage/selectUpPattenUsage', {
      stationCell: 6,
      engineerId: selectedProjectNo.value,
      filmRemove: parseInt(filmRemove.value, 10),
      filmRemove: 0,
    })
    window.localStorage.setItem('engineeringIda', selectedProjectNo.value)
    window.localStorage.setItem('filmRemove', filmRemove.value)
@@ -615,7 +611,7 @@
    </template>
  </el-dialog>
        </div>
  <el-dialog v-model="dialogFormVisible" top="24vh" width="70%">
  <el-dialog v-model="dialogFormVisible" top="24vh" width="50%">
    <div class="flex-container" style="margin-left: 50px;margin-bottom: 10px;">
      <el-form-item :label="$t('Mounting.loadingline')" :required="true">
        <el-select disabled v-model="stationCell" clearable :placeholder="$t('Mounting.inloadingline')">
@@ -640,14 +636,12 @@
          />
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('Mounting.removalmethoda')" :required="true">
      <!-- <el-form-item :label="$t('Mounting.removalmethoda')" :required="true">
        <el-select v-model="filmRemove" clearable :placeholder="$t('Mounting.removalmethod')">
          <el-option :label="$t('Mounting.noremoval')" value="0"></el-option>
            <!-- 不除膜:0    除膜:2 -->
          <!-- <el-option :label="$t('Mounting.coarselyground')" value="1"></el-option> -->
          <el-option :label="$t('Mounting.removal')" value="2"></el-option>
        </el-select>
      </el-form-item>
      </el-form-item> -->
    </div>
    <template #footer>
      <div id="dialog-footer">
UI-Project/src/views/User/rolelist.vue
UI-Project/src/views/hollow/LackDetailDialog.vue
New file
@@ -0,0 +1,250 @@
<template>
  <el-dialog
    :model-value="modelValue"
    @update:model-value="handleDialogClose"
    top="7vh"
    width="70%"
    :title="$t('hellow.missingfilms')"
  >
    <div
      v-loading="isLoading"
      class="loading-container"
      :element-loading-text="$t('searchOrder.loadingText')"
    >
      <div style="margin-top: -20px; text-align: center; margin-left: 400px;">
        <el-form-item :label="$t('hellow.cardnumbera')" style="width: 14vw">
          {{ currentRow.flowCardId }}
        </el-form-item>
      </div>
      <el-table
        ref="table"
        style="margin-top: 20px; height: 400px;"
        :data="tableDatac"
        :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"
      >
        <el-table-column
          prop="flowCardId"
          align="center"
          :label="$t('hellow.flowCardId')"
          min-width="100"
        />
        <el-table-column
          prop="glassId"
          align="center"
          :label="$t('searchOrder.glassID')"
          min-width="100"
        />
        <el-table-column
          prop="layer"
          align="center"
          :label="$t('hellow.layer')"
          min-width="80"
        />
        <el-table-column
          prop="glassType"
          align="center"
          :label="$t('reportmanage.number')"
          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="thickness"
          align="center"
          :label="$t('hellow.thickness')"
          min-width="80"
        />
        <el-table-column
          prop="workingProcedure"
          align="center"
          :label="$t('reportmanage.process')"
          min-width="80"
        />
        <el-table-column
          fixed="right"
          :label="$t('searchOrder.operate')"
          align="center"
        >
          <template #default="scope">
            <el-button
              type="text"
              plain
              :disabled="scope.row.glassId == null"
              @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 class="custom-page-buttons">
        <button
          v-for="page in pageList"
          :key="page"
          @click="switchPage(page)"
          :class="{ 'active-page': currentPage === page }"
          class="page-btn"
        >
          {{ page }}
        </button>
      </div>
    </div>
  </el-dialog>
</template>
<script setup>
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive, watch } from "vue";
import { useI18n } from 'vue-i18n'
import request from "@/utils/request";
const { t } = useI18n()
const props = defineProps({
  modelValue: {
    type: Boolean,
    default: false
  },
  flowCardId: {
    type: String,
    required: true
  }
});
const emit = defineEmits(['update:modelValue', 'refreshData']);
const isLoading = ref(true);
const tableDatac = ref([]);
const pageList = ref([]);
const allData = ref({});
const currentPage = ref(1);
const currentRow = reactive({
  flowCardId: props.flowCardId
});
// 监听 flowCardId 变化,重新请求数据
watch(() => props.flowCardId, (newVal) => {
  currentRow.flowCardId = newVal;
  if (props.modelValue) {
    fetchFlowBind(newVal);
  }
}, { immediate: true });
// 监听弹窗显示状态变化
watch(() => props.modelValue, (newVal) => {
  if (newVal && props.flowCardId) {
    fetchFlowBind(props.flowCardId);
  }
});
// 处理弹窗关闭事件:向父组件发送更新事件
const handleDialogClose = (value) => {
  emit('update:modelValue', value); // 通知父组件修改 modelValue
};
// 获取缺片详情数据
const fetchFlowBind = async (flowCardId) => {
  try {
    const url = `/hollowGlass/hollowGlassRelationInfo/queryLackByFlowCard?flowCardId=${flowCardId}`;
    const response = await request.post(url);
    if (response.code === 200) {
      isLoading.value = false;
      allData.value = response.data;
      pageList.value = Object.keys(response.data)
        .map(Number)
        .sort((a, b) => a - b);
      currentPage.value = pageList.value[0] || 1;
      tableDatac.value = response.data[currentPage.value] || [];
    }
  } catch (error) {
    isLoading.value = false;
  }
};
// 页面切换处理
const switchPage = (page) => {
  currentPage.value = page;
  tableDatac.value = allData.value[page] || [];
};
// 破损处理
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',
      }
    );
    if (confirmResult === 'confirm') {
      const response = await request.post('/hollowGlass/hollowGlassRelationInfo/hollowBigStorageGlassDamage', {
        flowCardId: row.flowCardId,
        glassType: row.glassType,
        glassId: row.glassId,
        layer: row.layer,
        state: 8,
        line: 1,
        workingProcedure: '中空',
        remark: '中空'
      });
      if (response.code == 200) {
        ElMessage.success(response.message);
        fetchFlowBind(currentRow.flowCardId);
        emit('refreshData');
      } else {
        ElMessage.error(response.msg);
      }
    }
  } catch (error) {
  }
};
</script>
<style scoped>
.custom-page-buttons {
  display: flex;
  gap: 10px;
  margin: 20px 0;
  flex-wrap: wrap;
}
.page-btn {
  padding: 8px 16px;
  min-width: 40px;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  background: #f5f7fa;
  cursor: pointer;
  transition: all 0.3s;
}
.page-btn:hover {
  background: #e6f1ff;
}
.page-btn.active-page {
  background: #409eff;
  color: white;
  border-color: #409eff;
}
.loading-container {
  position: relative;
  height: 100%;
}
.el-loading-mask {
  z-index: 2000 !important;
}
</style>
UI-Project/src/views/hollow/hollowequipment.vue
@@ -132,7 +132,7 @@
        {{ $t('reportmanage.inquire') }}</el-button>
    </div>
    <div style="margin-left: 87%;">{{ $t('hellow.pairsnumbertotal') }}{{ pairTotal }}</div>
    <el-table ref="table" style="margin-top: 20px; height: 700px;" :data="tableDatab"
    <el-table ref="table" style="margin-top: 20px; height: 650px;" :data="tableDatab"
      :row-class-name="tableRowClassName" :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
      row-key="projectNumber">
      <el-table-column>
@@ -714,6 +714,12 @@
                :value="item.formulaName" />
            </el-select>
          </el-form-item>
            <el-form-item :label="$t('hellow.coatingtypes')" style="width: 25vw;">
            <el-select v-model="selectedFilmRemove" filterable clearable :placeholder="$t('basicData.selectcoatingtypes')"
              style="width: 270px">
              <el-option v-for="item in filmRemoveList" :key="item" :label="item" :value="item" />
            </el-select>
          </el-form-item>
        </el-form>
      </el-form>
    </div>
@@ -746,6 +752,12 @@
                :value="item.formulaName" />
            </el-select>
          </el-form-item>
          <el-form-item :label="$t('hellow.coatingtypes')" style="width: 25vw;">
            <el-select v-model="selectedFilmRemove" filterable clearable :placeholder="$t('basicData.selectcoatingtypes')"
              style="width: 270px">
              <el-option v-for="item in filmRemoveList" :key="item" :label="item" :value="item" />
            </el-select>
          </el-form-item>
        </el-form>
      </el-form>
    </div>
@@ -759,47 +771,11 @@
    </template>
  </el-dialog>
  <!-- 缺片详情 -->
  <el-dialog v-model="dialogFormVisibleb" top="7vh" width="70%" height="500">
  <div v-loading="isLoading" class="loading-container" :element-loading-text="$t('searchOrder.loadingText')" >
    <div style="margin-top: -20px;text-align: center;margin-left: 400px;">
      <el-form-item :label="$t('hellow.cardnumbera')" style="width: 14vw">
        {{ currentRow.flowCardId }}
      </el-form-item>
    </div>
    <el-table ref="table" style="margin-top: 20px;height: 400px;" :data="tableDatac"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
      <el-table-column prop="flowCardId" align="center" :label="$t('hellow.flowCardId')" min-width="100" />
      <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="100" />
      <el-table-column prop="layer" align="center" :label="$t('hellow.layer')" min-width="80" />
      <el-table-column prop="glassType" align="center" :label="$t('reportmanage.number')" 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="thickness" align="center" :label="$t('hellow.thickness')" min-width="80" />
      <el-table-column prop="workingProcedure" align="center" :label="$t('reportmanage.process')" min-width="80" />
      <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center">
            <template #default="scope">
              <el-button type="text" plain :disabled="scope.row.glassId==null"  @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 class="custom-page-buttons">
      <button
        v-for="page in pageList"
      :key="page"
        @click="switchPage(page)"
        :class="{ 'active-page': currentPage === page }"
        class="page-btn"
      >
        {{ page }}
      </button>
    </div>
    </div>
  </el-dialog>
<LackDetailDialog
  v-model="dialogFormVisibleb"
  :flow-card-id="currentRow.flowCardId"
  @refresh-data="fetchFlowCardId"
/>
  <!-- 开始任务 -->
  <el-dialog v-model="blinda" top="30vh" width="25%" :title="$t('hellow.pstarttask')">
    <template #footer>
@@ -995,23 +971,24 @@
import { onBeforeUnmount, onMounted, onUnmounted, ref, reactive, watch, computed, getCurrentInstance ,toRaw } from "vue";
import request from "@/utils/request"
import { closeWebSocket, initializeWebSocket } from '@/utils/WebSocketService';
import LackDetailDialog from './LackDetailDialog.vue';
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const blinda = ref(false)
const blindb = ref(false)
const blindc = ref(false)
const mulan = ref(false)
const isLoading = ref(true)
const activeTab = ref('')
const tabList = ref([])
const internalInstance = getCurrentInstance()
const tableDataa = ref([])
const tableDatab = ref([])
const tableDatac = ref([])
const tableDatax = ref([])
const filmRemoveList = ref([])
const selectedFilmRemove = ref('')
const cell = ref('')
const cella = ref('')
const selectedProjectNo = ref('');
const selectedProjectNo = ref
const totalPairQuantity = ref('')
const totalPairQuantitya = ref('')
const bottomRemove = ref('')
@@ -1046,8 +1023,6 @@
const intervalFrameWidthFour = ref('')
const sealInsert = ref('')
const totalPages = ref(0)
const pageList = ref([]);
const allData = ref({});
const currentData = ref([]);
const flowCardId = ref('')
const freeone = ref('#911005');
@@ -1059,7 +1034,7 @@
const isSubmitting = ref(false)
const add = ref(false)
const adda = ref(false)
const currentRow = reactive({});
const currentRow = reactive({ flowCardId: '' });
const formattedProcessType = ref([]);
const selectedFormulaName = ref('');
const pairTotal = ref();
@@ -1068,6 +1043,7 @@
const titleformulaName = ref({ formulaName: [], formulaId: [] });
const titleSelectJson = ref({ processType: [] });
const iframeUrl = ref('');
const handlehistorical = (row) => {
  blindb.value = true;
  iframeUrl.value = `${window.location.origin}/#/hollow/hellowquiphistory`;
@@ -1387,18 +1363,21 @@
};
// 缺片详情
const handleBindRack = (row) => {
  let currentPageLack = window.localStorage.getItem('currentPageLack')
  const { flowCardId } = row;
  currentRow.flowCardId = row.flowCardId;
  isLoading.value = true;
  dialogFormVisibleb.value = true;
  fetchFlowBind(currentRow.flowCardId);
};
// 领取任务
const handletake = (row) => {
  window.localStorage.setItem('flowCardId', row.flowCardId)
  dialogFormVisiblec.value = true;
  isSubmitting.value = false
  if (row.flowCardGlassInfoDTOList && row.flowCardGlassInfoDTOList.length) {
    const films = row.flowCardGlassInfoDTOList.map(item => item.filmsId).filter(Boolean)
    // 去重
    filmRemoveList.value = [...new Set(films)]
  } else {
    filmRemoveList.value = []
  }
  fetchmulan()
};
// 强制出片
@@ -1406,41 +1385,14 @@
  window.localStorage.setItem('flowCardId', row.flowCardId)
  dialogFormVisibled.value = true;
  fetchmulan()
};
// 缺片详情-破损
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,
      glassId: row.glassId,
      layer: row.layer,
      state: 8,
      line: 1,
      workingProcedure: '中空',
      remark: '中空'
    })
    if (response.code == 200) {
      ElMessage.success(response.message);
      const { flowCardId } = row;
      fetchFlowBind(currentRow.flowCardId);
      fetchFlowCardId()
  if (row.flowCardGlassInfoDTOList && row.flowCardGlassInfoDTOList.length) {
    const films = row.flowCardGlassInfoDTOList.map(item => item.filmsId).filter(Boolean)
    // 去重
    filmRemoveList.value = [...new Set(films)]
    } else {
      ElMessage.error(response.msg);
    filmRemoveList.value = []
    }
  } catch (error) {
    console.error(error);
  }
}
};
// 创建任务
const fetchFlowCardId = async () => {
  try {
@@ -1735,31 +1687,6 @@
    };
  });
};
const fetchFlowBind = async (flowCardId) => {
  try {
    const url = `/hollowGlass/hollowGlassRelationInfo/queryLackByFlowCard?flowCardId=${flowCardId}`;
    const response = await request.post(url);
    if (response.code === 200) {
      isLoading.value = false;
      allData.value = response.data;
    // 提取并排序页码
    pageList.value = Object.keys(response.data)
      .map(Number)
      .sort((a, b) => a - b);
    // 初始化第一页数据
    currentPage.value = pageList.value[0];
    tableDatac.value = response.data[pageList.value[0]] || [];
    } else {
    }
  } catch (error) {
  }
};
// 页面切换处理
const switchPage = (page) => {
  currentPage.value = page;
  tableDatac.value = allData.value[page] || []; // 切换数据
};
// 开始任务
const handlea = async () => {
  try {
@@ -1823,14 +1750,16 @@
  let flowCardId = window.localStorage.getItem('flowCardId')
  let id = window.localStorage.getItem('id')
  try {
    var url = "/hollowGlass/hollowGlassOutRelationInfo/receiveTask?cell=" + 930 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantity.value + "&formulaId=" + id;
    const url = `/hollowGlass/hollowGlassOutRelationInfo/receiveTask?cell=${930}&flowCardId=${flowCardId}&totalPairQuantity=${totalPairQuantity.value}&formulaId=${id}&filmRemove=${selectedFilmRemove.value}`
    const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
      dialogFormVisiblec.value = false;
      cell.value = '';
      formulaName.value = '';
      totalPairQuantity.value = '';
      cell.value = ''
      selectedFormulaName.value = ''
      totalPairQuantity.value = ''
      selectedFilmRemove.value = ''
      isSubmitting.value = true
    } else {
      ElMessage.error(response.message);
@@ -1853,13 +1782,14 @@
    return
  }
  try {
    var url = "/hollowGlass/hollowGlassOutRelationInfo/forceOutGlass?cell=" + 930 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantitya.value + "&formulaId=" + id;
    var url = "/hollowGlass/hollowGlassOutRelationInfo/forceOutGlass?cell=" + 930 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantitya.value + "&formulaId=" + id + "&filmRemove=" + selectedFilmRemove.value;
    const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
      dialogFormVisibled.value = false;
      cella.value = '';
      totalPairQuantitya.value = '';
      selectedFilmRemove.value = '';
    } else {
    }
  } catch (error) {
UI-Project/src/views/hollow/hollowequipmenthree.vue
@@ -94,7 +94,7 @@
  <div style="margin-left: 87%;">{{$t('hellow.pairsnumbertotal')}}{{ pairTotal }}</div>
  <el-table
    ref="table"
    style="margin-top: 20px; height: 700px;"
    style="margin-top: 20px; height: 650px;"
    :data="tableDatab"
    :row-class-name="tableRowClassName"
    :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
@@ -300,6 +300,12 @@
              />
          </el-select>
          </el-form-item>
          <el-form-item :label="$t('hellow.coatingtypes')" style="width: 25vw;">
            <el-select v-model="selectedFilmRemove" filterable clearable :placeholder="$t('basicData.selectcoatingtypes')"
              style="width: 270px">
              <el-option v-for="item in filmRemoveList" :key="item" :label="item" :value="item" />
            </el-select>
          </el-form-item>
          <!-- <el-form-item :label="$t('hellow.hollowformulp')" :required="true" style="width: 25vw;">
        <el-select
            v-model="selectedFormulaName"
@@ -349,6 +355,12 @@
                :label="item.label"
                :value="item.value"
              />
          </el-select>
          </el-form-item>
          <el-form-item :label="$t('hellow.coatingtypes')" style="width: 25vw;">
            <el-select v-model="selectedFilmRemove" filterable clearable :placeholder="$t('basicData.selectcoatingtypes')"
              style="width: 270px">
              <el-option v-for="item in filmRemoveList" :key="item" :label="item" :value="item" />
          </el-select>
          </el-form-item>
          <!-- <el-form-item :label="$t('hellow.hollowformulp')" :required="true" style="width: 25vw;">
@@ -545,7 +557,7 @@
import { ElMessage, ElMessageBox } from 'element-plus'
import {onBeforeUnmount, onMounted, onUnmounted, ref, reactive, watch, computed, getCurrentInstance} from "vue";
import request from "@/utils/request"
import {host, WebSocketHost} from '@/utils/constants'
// import {host, WebSocketHost} from '@/utils/constants'
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import {useI18n} from 'vue-i18n'
const {t} = useI18n()
@@ -556,6 +568,8 @@
const isLoading = ref(true)
const isSubmitting = ref(false)
const activeTab = ref('')
const filmRemoveList = ref([])
const selectedFilmRemove = ref('')
const tabList = ref([])
const internalInstance = getCurrentInstance()
const tableDataa = ref([])
@@ -763,6 +777,13 @@
  window.localStorage.setItem('flowCardId', row.flowCardId)
  dialogFormVisiblec.value = true;
  isSubmitting.value = false
  if (row.flowCardGlassInfoDTOList && row.flowCardGlassInfoDTOList.length) {
    const films = row.flowCardGlassInfoDTOList.map(item => item.filmsId).filter(Boolean)
    // 去重
    filmRemoveList.value = [...new Set(films)]
  } else {
    filmRemoveList.value = []
  }
  fetchmulan()
};
// 强制出片
@@ -770,6 +791,13 @@
  window.localStorage.setItem('flowCardId', row.flowCardId)
  dialogFormVisibled.value = true;
  fetchmulan()
  if (row.flowCardGlassInfoDTOList && row.flowCardGlassInfoDTOList.length) {
    const films = row.flowCardGlassInfoDTOList.map(item => item.filmsId).filter(Boolean)
    // 去重
    filmRemoveList.value = [...new Set(films)]
  } else {
    filmRemoveList.value = []
  }
};
// 创建任务
const fetchFlowCardId = async () => {
@@ -1086,7 +1114,7 @@
  }
  isSubmitting.value = true
    try {
      var url="/hollowGlass/hollowGlassOutRelationInfo/receiveTask?cell="+ 932 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantity.value+ "&formulaId=" + -1;
    const url = `/hollowGlass/hollowGlassOutRelationInfo/receiveTask?cell=${932}&flowCardId=${flowCardId}&totalPairQuantity=${totalPairQuantity.value}&formulaId=${-1}&filmRemove=${selectedFilmRemove.value}`
      const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
@@ -1112,7 +1140,7 @@
    return
  }
  try {
      var url="/hollowGlass/hollowGlassOutRelationInfo/forceOutGlass?cell="+ 932 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantitya.value+ "&formulaId=" + -1;
      var url="/hollowGlass/hollowGlassOutRelationInfo/forceOutGlass?cell="+ 932 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantitya.value+ "&formulaId=" + -1 + "&filmRemove=" + selectedFilmRemove.value;
      const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
UI-Project/src/views/hollow/hollowequipmenttwo.vue
@@ -99,7 +99,7 @@
        {{ $t('reportmanage.inquire') }}</el-button>
    </div>
    <div style="margin-left: 87%;">{{ $t('hellow.pairsnumbertotal') }}{{ pairTotal }}</div>
    <el-table ref="table" style="margin-top: 20px; height: 700px;" :data="tableDatab"
    <el-table ref="table" style="margin-top: 20px; height: 650px;" :data="tableDatab"
      :row-class-name="tableRowClassName" :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
      row-key="projectNumber">
      <!-- <el-table-column type="expand"> -->
@@ -318,6 +318,12 @@
                :value="item.formulaName" />
            </el-select>
          </el-form-item>
          <el-form-item :label="$t('hellow.coatingtypes')" style="width: 25vw;">
            <el-select v-model="selectedFilmRemove" filterable clearable :placeholder="$t('basicData.selectcoatingtypes')"
              style="width: 270px">
              <el-option v-for="item in filmRemoveList" :key="item" :label="item" :value="item" />
            </el-select>
          </el-form-item>
        </el-form>
      </el-form>
    </div>
@@ -348,6 +354,12 @@
              style="width: 270px" @change="handleFormulaChange">
              <el-option v-for="item in titleformulaName" :key="item.id" :label="item.formulaName"
                :value="item.formulaName" />
            </el-select>
          </el-form-item>
           <el-form-item :label="$t('hellow.coatingtypes')" style="width: 25vw;">
            <el-select v-model="selectedFilmRemove" filterable clearable :placeholder="$t('basicData.selectcoatingtypes')"
              style="width: 270px">
              <el-option v-for="item in filmRemoveList" :key="item" :label="item" :value="item" />
            </el-select>
          </el-form-item>
        </el-form>
@@ -525,6 +537,8 @@
const isSubmitting = ref(false)
const isLoading = ref(true)
const activeTab = ref('')
const filmRemoveList = ref([])
const selectedFilmRemove = ref('')
const tabList = ref([])
const internalInstance = getCurrentInstance()
const tableDataa = ref([])
@@ -749,6 +763,13 @@
  window.localStorage.setItem('flowCardId', row.flowCardId)
  dialogFormVisiblec.value = true;
  isSubmitting.value = false
  if (row.flowCardGlassInfoDTOList && row.flowCardGlassInfoDTOList.length) {
    const films = row.flowCardGlassInfoDTOList.map(item => item.filmsId).filter(Boolean)
    // 去重
    filmRemoveList.value = [...new Set(films)]
  } else {
    filmRemoveList.value = []
  }
  fetchmulan()
};
// 强制出片
@@ -756,6 +777,13 @@
  window.localStorage.setItem('flowCardId', row.flowCardId)
  dialogFormVisibled.value = true;
  fetchmulan()
  if (row.flowCardGlassInfoDTOList && row.flowCardGlassInfoDTOList.length) {
    const films = row.flowCardGlassInfoDTOList.map(item => item.filmsId).filter(Boolean)
    // 去重
    filmRemoveList.value = [...new Set(films)]
  } else {
    filmRemoveList.value = []
  }
};
// 创建任务
const fetchFlowCardId = async () => {
@@ -1093,14 +1121,16 @@
  }
  isSubmitting.value = true
  try {
    var url = "/hollowGlass/hollowGlassOutRelationInfo/receiveTask?cell=" + 931 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantity.value + "&formulaId=" + id;
    const url = `/hollowGlass/hollowGlassOutRelationInfo/receiveTask?cell=${931}&flowCardId=${flowCardId}&totalPairQuantity=${totalPairQuantity.value}&formulaId=${id}&filmRemove=${selectedFilmRemove.value}`
    const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
      dialogFormVisiblec.value = false;
      cell.value = '';
      formulaName.value = '';
      totalPairQuantity.value = '';
      cell.value = ''
      selectedFormulaName.value = ''
      totalPairQuantity.value = ''
      selectedFilmRemove.value = ''
      isSubmitting.value = true
    } else {
      ElMessage.error(response.message);
@@ -1158,7 +1188,7 @@
    return
  }
  try {
    var url = "/hollowGlass/hollowGlassOutRelationInfo/forceOutGlass?cell=" + 931 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantitya.value + "&formulaId=" + id;
    var url = "/hollowGlass/hollowGlassOutRelationInfo/forceOutGlass?cell=" + 931 + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantitya.value + "&formulaId=" + id + "&filmRemove=" + selectedFilmRemove.value;
    const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
UI-Project/src/views/hollow/hollowslicecage.vue
@@ -6,6 +6,7 @@
import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import {ElMessage, ElMessageBox} from 'element-plus'
import LackDetailDialog from './LackDetailDialog.vue';
const dialogFormVisibleaDownGlasss = ref(false)
const scanGlass = ref([])
const {t} = useI18n()
@@ -77,8 +78,23 @@
const cell9=ref(true);
const blindb = ref(false)
const dialogFormVisibleb = ref(false)
const dialogFormVisibleLack = ref(false)
const selectedRow = ref(null);
const temperingengineerId=ref('');
function nestedTableRowClassName(parentRow, row) {
  if (parentRow.isThroughSlot == true) {
    return 'row-red-background';
  }
  if (row.row?.sumCount !== undefined && row.row?.pairCount !== undefined && row.row.sumCount !== row.row.pairCount) {
    return 'sum-equal-pair-row' // 返回自定义类名
  }
  return '';
}
// 缺片详情
const handleSliceRack = (row) => {
  currentRow.flowCardId = row.flowCardId;
  dialogFormVisibleLack.value = true;
};
const handleBindRack = (row) => {
  selectedRow.value = row; // 更新选中的行数据  
  currentRow.deviceId  = row.deviceId; // 直接设置响应式属性  
@@ -550,13 +566,8 @@
   }));
    tableDataAlert.value = formattedData;
  if(data.lackDetailsList!=null){
    const summaries = data.lackDetailsList[0];
      const updatedData = summaries.map(summary => ({
        ...summary,
        totalNumber: summary.layer * summary.sumCount,
      }));
      tableDatass.value = updatedData;
  if(data.HollowAllFlowCard!=null){
    tableDatass.value = data.HollowAllFlowCard[0];
  }else{
    tableDatass.value = []
      }
@@ -631,52 +642,52 @@
}else{
  hollowPriority.value = ''
  }
  if(data.bigStorageCageInfos!=null){
    adjustedRects.value = data.bigStorageCageInfos[0][1].map((rect, index) => ({
    id: index + 1,
    height: 15/55,
    top: 64/55,
  }));
subRectsCounts.value = data.bigStorageCageInfos[0][1].map(rect => rect.count);
adjustedRectsa.value = data.bigStorageCageInfos[0][2].map((rect, index) => ({
    id: index + 1,
    height: 15/55,
    top: 64/55,
  }));
subRectsCountsa.value = data.bigStorageCageInfos[0][2].map(rect => rect.count);
adjustedRectsb.value = data.bigStorageCageInfos[0][3].map((rect, index) => ({
    id: index + 1,
    height: 15/55,
    top: 64/55,
  }));
subRectsCountsb.value = data.bigStorageCageInfos[0][3].map(rect => rect.count);
adjustedRectsc.value = data.bigStorageCageInfos[0][4].map((rect, index) => ({
    id: index + 1,
    height: 15/55,
    top: 64/55,
  }));
subRectsCountsc.value = data.bigStorageCageInfos[0][4].map(rect => rect.count);
adjustedRectsd.value = data.bigStorageCageInfos[0][5].map((rect, index) => ({
    id: index + 1,
    height: 15/55,
    top: 64/55,
  }));
subRectsCountsd.value = data.bigStorageCageInfos[0][5].map(rect => rect.count);
adjustedRectse.value = data.bigStorageCageInfos[0][6].map((rect, index) => ({
    id: index + 1,
    height: 15/55,
    top: 64/55,
  }));
subRectsCountse.value = data.bigStorageCageInfos[0][6].map(rect => rect.count);
//   if(data.bigStorageCageInfos!=null){
//     adjustedRects.value = data.bigStorageCageInfos[0][1].map((rect, index) => ({
//     id: index + 1,
//     height: 15/55,
//     top: 64/55,
//   }));
// subRectsCounts.value = data.bigStorageCageInfos[0][1].map(rect => rect.count);
// adjustedRectsa.value = data.bigStorageCageInfos[0][2].map((rect, index) => ({
//     id: index + 1,
//     height: 15/55,
//     top: 64/55,
//   }));
// subRectsCountsa.value = data.bigStorageCageInfos[0][2].map(rect => rect.count);
// adjustedRectsb.value = data.bigStorageCageInfos[0][3].map((rect, index) => ({
//     id: index + 1,
//     height: 15/55,
//     top: 64/55,
//   }));
// subRectsCountsb.value = data.bigStorageCageInfos[0][3].map(rect => rect.count);
// adjustedRectsc.value = data.bigStorageCageInfos[0][4].map((rect, index) => ({
//     id: index + 1,
//     height: 15/55,
//     top: 64/55,
//   }));
// subRectsCountsc.value = data.bigStorageCageInfos[0][4].map(rect => rect.count);
// adjustedRectsd.value = data.bigStorageCageInfos[0][5].map((rect, index) => ({
//     id: index + 1,
//     height: 15/55,
//     top: 64/55,
//   }));
// subRectsCountsd.value = data.bigStorageCageInfos[0][5].map(rect => rect.count);
// adjustedRectse.value = data.bigStorageCageInfos[0][6].map((rect, index) => ({
//     id: index + 1,
//     height: 15/55,
//     top: 64/55,
//   }));
// subRectsCountse.value = data.bigStorageCageInfos[0][6].map(rect => rect.count);
  }else{
    adjustedRects.value = '',
    adjustedRectsa.value = '',
    adjustedRectsb.value = '',
    adjustedRectsc.value = '',
    adjustedRectsd.value = '',
    adjustedRectse.value = ''
  }
//   }else{
//     adjustedRects.value = '',
//     adjustedRectsa.value = '',
//     adjustedRectsb.value = '',
//     adjustedRectsc.value = '',
//     adjustedRectsd.value = '',
//     adjustedRectse.value = ''
//   }
};
const getAlertText = (alarmCode) => {
  const codeMap = {
@@ -1104,27 +1115,32 @@
</div>
<el-card style="flex: 1; height: 500px; overflow-y: auto;">
  <div style="width: 100%; height: 100%; overflow: hidden;">
    <el-table
      ref="table"
      :data="tableDatass"
      :header-cell-style="{background:'#F2F3F5', color:'#1D2129'}"
      max-height="calc(500px - 35px)"
      style="width: 100%;"
    >
      <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="139" />
      <el-table-column prop="layer" align="center" :label="$t('reportmanage.layer')" min-width="38" />
      <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="52" />
      <el-table-column prop="filmsId" align="center" :label="$t('hellow.coatingtypes')" min-width="62"/>
      <!-- <el-table-column prop="filmsId" align="center" :label="$t('hellow.coatingtypes')" min-width="62" show-overflow-tooltip/> -->
      <el-table-column prop="height" align="center" :label="$t('hellow.height')" min-width="55" />
      <el-table-column prop="width" align="center" :label="$t('hellow.width')" min-width="55" />
      <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 prop="patchCount" align="center" :label="$t('large.patchCount')"/> -->
      <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center"  min-width="82">
     <el-table ref="table" style="margin-top: 20px; height: 700px;" :data="tableDatass"
      :row-class-name="tableRowClassName" :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
      row-key="projectNumber">
      <el-table-column>
        <template #default="props">
          <el-table :data="props.row.flowCardGlassInfoDTOList" style="width: 100%"
            :row-class-name="(row) => nestedTableRowClassName(props.row, row)">
            <el-table-column prop="layer" fixed align="center" :label="$t('hellow.layernumber')" min-width="50" />
            <el-table-column prop="thickness" align="center" :label="$t('hellow.thickness')" min-width="50" />
            <el-table-column prop="filmsId" align="center" :label="$t('hellow.coatingtypes')" min-width="80" />
            <el-table-column prop="sumCount" align="center" :label="$t('hellow.totalnumber')" min-width="80" />
            <el-table-column prop="realCount" align="center" :label="$t('hellow.realpieces')" min-width="80" />
            <el-table-column prop="damageCount" align="center" :label="$t('hellow.damagenumber')" min-width="80" />
            <el-table-column prop="pairCount" align="center" :label="$t('hellow.pairsnumber')" min-width="100" />
          </el-table>
        </template>
      </el-table-column>
      <el-table-column prop="flowCardId" fixed align="center" :label="$t('hellow.cardnumber')" min-width="20" />
      <!-- <el-table-column prop="productName" fixed align="center" :label="$t('large.productname')" min-width="20" /> -->
      <!-- <el-table-column prop="customerName" fixed align="center" :label="$t('large.customerName')" min-width="20" /> -->
      <el-table-column fixed="right" :label="$t('hellow.operate')" align="center" width="82">
            <template #default="scope">
              <el-button type="text" plain  @click="handleMissingFilms(scope.row)">{{ $t('hellow.missingfilms') }}</el-button>
          <el-button type="text" plain @click="handleSliceRack(scope.row)">{{
            $t('hellow.missingfilms')
          }}
          </el-button>
            </template>
        </el-table-column>
    </el-table>
@@ -1297,6 +1313,12 @@
        <div>
  </div>
  </el-dialog>
  <!-- 缺片详情 -->
<LackDetailDialog
  v-model="dialogFormVisibleLack"
  :flow-card-id="currentRow.flowCardId"
  @refresh-data="fetchFlowCardId"
/>
  <!-- 多条破损数据 -->
  <el-dialog v-model="dialogFormVisibleb" top="15vh" width="70%" height="500">
    <el-button plain  @click="handleAllBroke">{{ $t('order.dilapidationAll') }}</el-button>