wangfei
2025-05-13 1fe57c5855655e406e44497417152ca0e1e2cc5e
UI-Project/src/views/Returns/upreturns2.vue
@@ -1,5 +1,5 @@
<script lang="ts" setup>
import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref, computed} from "vue";
import {useRouter} from "vue-router"
import { ElMessage, ElMessageBox } from 'element-plus'
import {useI18n} from 'vue-i18n'
@@ -15,12 +15,12 @@
const dialogFormVisible = ref(false)
const blind = ref(false)
const blinda = ref(false)
const ReportData = ref(true);
const blindb = ref(false)
const dialoglea = ref(false)
const blindbd = ref(false)
const canSelectProjecta = ref(true);
const canSelectProjectb = ref(true);
const canSelectProjectc = ref(false);
const tableDatax = ref([])
const tableDatad = ref([])
const upstatus = ref(t('basicData.machineaa'));
const cuttingMachineStatusColor = ref('#911005');
@@ -30,10 +30,15 @@
const titleSelectJson = ref({
  engineerId: [],
})
const handlezhiban = () => {
  dialoglea.value = true;
  fetchFlowCardId();
};
request.post("/loadGlass/up-patten-usage/setUpPattenRequest",{
  state: null,
  stationCell: 6
}).then((response) => {
          if (response.code == 200) {
          } else {
          // ElMessage.warning(response.msg)
          }
          });
const selectproject = () => {
  dialogFormVisible.value = true;
  selectgong();
@@ -59,22 +64,39 @@
    const response = await request.get("/loadGlass/up-patten-usage/prioritylist");
    if (response.code === 200) {
      tableData.splice(0, tableData.length, ...response.data);
      ElMessage.error(response.message);
      // ElMessage.error(response.message);
      window.localStorage.setItem('engineeringIda', tableData[0].engineeringId)
    }
  } catch (error) {
  }
};
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlassTwo`;
const handleMessage = (data: any) => {
  tableDataa.value = data.list[0].slice(2, 4);
  if(data.loadTask2.length !=0){
  tableData.value = data.loadTask2[0]
  if (data.stationList.length != 0) {
    const processedData = [...data.stationList[0]];
 if (processedData.length > 0) {
   processedData[0] = { ...processedData[0], workstationId: 1 };
 }
 if (processedData.length > 1) {
   processedData[1] = { ...processedData[1], workstationId: 2 };
 }
  tableDataa.value = processedData;
  }else {
    tableDataa.value = []
  }
  if (data.inkageState != null) {
    cuttingMachineStatusColor.value = data.inkageState[0] === 1 ? 'green' : '#911005';
  }
  if (data.upPattenUsages.length != 0) {
  tableData.value = data.upPattenUsages[0]
  window.localStorage.setItem('engineeringIda', tableData.value[0].engineeringId)
  canSelectProjecta.value = false;
  canSelectProjectb.value = false;
  canSelectProjectc.value = true;
}
else {
  tableData.value = [];
  canSelectProjecta.value = true;
  canSelectProjectb.value = true;
  canSelectProjectc.value = false;
@@ -86,7 +108,6 @@
// 结束工程
const handledelete = (row) => {
  blindb.value = true;
  deleteTask()
};
const requestData = {
  state: 100
@@ -106,6 +127,36 @@
    console.error(error);
  }
};
// 架子复位
const handleptask = async (workstationId: number) => {
      try {
    const confirmResult = await ElMessageBox.confirm(
      t('basicData.prackreset'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const slot = workstationId === 3 ? 103 : (workstationId === 4 ? 104 : null);
      if (slot !== null) {
        const response = await request.post('/glassStorage/rawGlassStorageDetails/shelfReset', {
          slot: slot,
    })
        if (response.code === 200) {
          ElMessage.success(response.message);
        } else {
          ElMessage.error(response.message);
        }
      } else {
      }
    }
  } catch (error) {
  }
};
//选择工程预览确认
const handlesure = async () => {
  try {
@@ -114,17 +165,18 @@
      engineerId: selectedProjectNo.value,
      filmRemove: parseInt(filmRemove.value, 10),
    })
    window.localStorage.setItem('engineeringId', selectedProjectNo.value)
    window.localStorage.setItem('engineeringIda', selectedProjectNo.value)
    window.localStorage.setItem('filmRemove', filmRemove.value)
    if (response.code == 200) {
      ElMessage.success(response.message);
      // closeWebSocket(socket);
      closeWebSocket(socket);
      tableData.value = response.data;
      dialogFormVisible.value = false;
      selectedProjectNo.value = '';
      filmRemove.value = '';
      markingMachineStatus.value = '#911005';
      cuttingMachineStatus.value = '#911005';
      ReportData.value = false;
    } else {
      ElMessage.error(response.message);
    }
@@ -134,44 +186,48 @@
}
// 结束工程
const deleteTask = async () => {
  try {
    let engineeringId = window.localStorage.getItem('engineeringId')
    console.log(engineeringId);
      try {
    const confirmResult = await ElMessageBox.confirm(
      t('searchOrder.pdeleteTask'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
    let engineeringId = window.localStorage.getItem('engineeringIda')
    if (engineeringId !== '') {
      const response = await request.post('/loadGlass/engineering/engineering/deleteTask', {
        engineerId: engineeringId,
      })
      if (response.code == 200) {
        ElMessage.success(response.message);
        tableDatad.value = response.data;
        canSelectProjecta.value = true;
        canSelectProjectb.value = true;
        canSelectProjectc.value = false;
        blindb.value = true;
        tableDatad.value = response.data;
      } else {
        ElMessage.error(response.message);
          ElMessage.error(response.message);
        }
      } else {
      }
    }
  } catch (error) {
  }
    else  {
      ElMessage({
        type: 'info',
        message: t('basicData.infonull'),
      })
    }
}
catch (error) {
    console.error(error);
  }
}
};
// 开始上片
const handleon = async () => {
  let filmRemove = window.localStorage.getItem('filmRemove')
  let engineeringId = window.localStorage.getItem('engineeringId')
  let engineeringIda = window.localStorage.getItem('engineeringIda')
  if (markingMachineStatus.value === 'green' && cuttingMachineStatus.value === 'green') {
    try {
      const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
        stationCell: 6,
        filmRemove: filmRemove,
        engineerId: engineeringId,
        engineerId: engineeringIda,
        state: 1,
      })
      if (response.code == 200) {
@@ -179,8 +235,9 @@
        canSelectProjecta.value = false;
        canSelectProjectb.value = false;
        canSelectProjectc.value = true;
        // socket = initializeWebSocket(socketUrl, handleMessage);
        socket = initializeWebSocket(socketUrl, handleMessage);
        blind.value = false;
        ReportData.value = true;
      } else {
        ElMessage.error(response.message);
      }
@@ -195,8 +252,7 @@
const handleup = async () => {
  try {
    let filmRemove = window.localStorage.getItem('filmRemove')
    let engineeringId = window.localStorage.getItem('engineeringId')
    console.log(engineeringId);
    let engineeringId = window.localStorage.getItem('engineeringIda')
    if (engineeringId !== '') {
      const response = await request.post('/loadGlass/engineering/engineering/pause', {
        stationCell: 6,
@@ -239,23 +295,6 @@
    ElMessage.error(response.message);
  }
};
// 值班信息
const fetchFlowCardId = async () => {
  try {
    const response = await request.post('/loadGlass/work_assignment/selectWorkAssignment', {
      line: 2001,
      workingProcedure: '冷加工'
    })
    if (response.code == 200) {
      ElMessage.success(response.message);
      tableDatax.value = response.data;
    } else {
      ElMessage.error(response.message);
    }
  } catch (error) {
    console.error(error);
  }
}
onMounted(fetchTableData);
// 开始上片
const handleBind = (row) => {
@@ -296,11 +335,11 @@
      } 
    );
    if (confirmResult === 'confirm') {
     const response = await request.post('/loadGlass/engineering/engineering/insetDamage', {
     const response = await request.post('/loadGlass/engineering/engineering/identControls', {
       glassId: row.glassId,
       line: 6,
       status: 1,
       type: 8,
       state: 8,
       workingProcedure: '上片',
    })
    if (response.code === 200) {
@@ -326,11 +365,11 @@
      } 
    );
    if (confirmResult === 'confirm') {
      const response = await request.post('/loadGlass/engineering/engineering/insetDamage', {
      const response = await request.post('/loadGlass/engineering/engineering/identControls', {
       glassId: row.glassId,
       line: 6,
       status: 1,
       type: 9,
       state: 9,
       workingProcedure: '上片',
    })
    if (response.code === 200) {
@@ -343,6 +382,12 @@
    console.error('发生错误:', error);  
  }  
}; 
// 历史任务
const iframeUrl = ref('');
const handlehistorical = (row) => {
  blindbd.value = true;
  iframeUrl.value = `${window.location.origin}/#/Returns/upreturnhistory`;
};
function getStatusType2(filmRemove) {
  switch (filmRemove) {
    case 0:
@@ -382,16 +427,12 @@
        </el-button>
        <div style="margin-left: 70px;">{{ upstatus }}</div>
        <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatusColor, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>
        <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;">{{
            $t('basicData.change')
          }}
        </el-button>
  </div>
    <el-button :disabled="!canSelectProjecta" style="margin-top: 5px;margin-left: 15px;"  type="primary" @click="selectproject">{{ $t('Mounting.previewproject') }}</el-button>
    <el-button :disabled="!canSelectProjectb" style="margin-top: 5px;margin-left: 20px;" type="success" @click="handleBind">{{ $t('basicData.startloading') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">{{ $t('basicData.stop') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="handledelete">{{ $t('searchOrder.deleteTask') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="deleteTask">{{ $t('searchOrder.deleteTask') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlehistorical">{{ $t('searchOrder.historicaltasks') }}</el-button>
    <el-select disabled v-model="selectValuesa[1]" clearable :placeholder="$t('Mounting.twoloadingline')"
               style="margin-top: 5px;margin-left: 20px;">
      <el-option :label="$t('Mounting.all')" value="0"></el-option>
@@ -399,12 +440,12 @@
      <el-option :label="$t('Mounting.twoloadingline')" value="2"></el-option>
    </el-select>
    <el-select v-model="selectValuesa[0]" clearable :placeholder="$t('film.taskstatus')" style="margin-top: 5px;margin-left: 20px;" >
      <el-option :label="$t('Mounting.waiting')" value="1"></el-option>
      <el-option :label="$t('film.execution')" value="2"></el-option>
      <el-option :label="$t('film.finish')" value="3"></el-option>
      <el-option :label="$t('Mounting.all')" value="null"></el-option>
      <el-option :label="$t('Mounting.waiting')" value="0"></el-option>
      <el-option :label="$t('Mounting.pass')" value="100"></el-option>
    </el-select>
    <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('Mounting.setparameters') }}</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
    <el-button :disabled="!ReportData" type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('Mounting.setparameters') }}</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table
            height="400"
@@ -412,16 +453,12 @@
            :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
            :data="tableData"
        >
          <el-table-column prop="engineeringId" :label="$t('Mounting.project')" width="100" align="center"/>
          <el-table-column prop="engineeringId" :label="$t('Mounting.project')" width="120" align="center"/>
          <el-table-column prop="width" :label="$t('Mounting.width')" width="200" align="center"/>
          <el-table-column prop="height" :label="$t('Mounting.height')" align="center"/>
          <el-table-column prop="thickness" :label="$t('Mounting.thickness')" align="center"/>
          <el-table-column prop="filmsId" :label="$t('Mounting.loadinglinea')" align="center"/>
          <el-table-column :label="$t('Mounting.projectnumber')" align="center">
            <template #default="{ row }">
              <span>{{ 1 }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="layoutSequence" :label="$t('Mounting.projectnumber')" align="center"/>
          <el-table-column
              align="center"
              :label="$t('Mounting.state')"
@@ -441,21 +478,38 @@
      </div>
    </el-card>
    <div style="display: flex;">
      <div style="width: 49%;float: left;margin-left: 300px;">
      <div style="width: 55%;float: left;margin-left: 300px;">
        <div style="display: flex;">
          <img src="../../assets/shangpianji.png" alt=""
               style="max-width: 20%;max-height: 25%;margin-left: 10%;margin-top: 5%;">
          <el-table :data="tableDataa" border style="width: 75%;margin-top: 10%;margin-left: 8%;"
               style="max-width: 20%;max-height: 25%;margin-left: 10%;margin-top: 3%;">
            <el-table :data="tableDataa" border style="margin-top: 10%;margin-left: 8%;" width="700"
                    :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" >
            <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60"/>
            <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80"/>
            <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80"/>
            <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="65"/>
            <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="75"/>
            <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="75"/>
            <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80"/>
            <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80"/>
            <el-table-column prop="remainQuantity" align="center" :label="$t('basicData.quantity')" min-width="80"/>
            <el-table-column prop="patternThickness" align="center" :label="$t('basicData.thickness')" min-width="60"/>
            <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100">
            <template #default="scope">
          <el-button :disabled="(!scope.row.patternThickness)" type="text" plain @click="handleptask(scope.row.workstationId)">{{ $t('basicData.rackreset') }}</el-button>
            </template>
        </el-table-column>
          </el-table>
    </div>
  </div>
</div>
   <!-- 历史任务 -->
   <el-dialog v-model="blindbd" top="5vh" width="95%" @close="iframeUrl=''">
     <iframe
     :src="iframeUrl"
     marginwidth="2000px"
     marginheight="2000px"
     width="100%"
     height="750px"
     frameborder="0"
     ></iframe>
  </el-dialog>
  <el-dialog v-model="blind" top="30vh" width="25%" :title="$t('basicData.startfilm')">
    <template #footer>
      <div id="dialog-footer">
@@ -468,7 +522,7 @@
  </el-dialog>
<!-- 结束工程 -->
  <el-dialog v-model="blindb" top="10vh" width="80%">
    <el-table ref="table" style="margin-top: 20px;height: 300px;" :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
    <el-table ref="table" style="margin-top: 20px;height: 450px;" :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
        <el-table-column prop="engineerId" fixed align="center" :label="$t('basicData.projectnumber')"/>
        <el-table-column prop="glassId" fixed align="center" :label="$t('searchOrder.glassID')"/>
        <el-table-column prop="temperingLayoutId" fixed align="center" :label="$t('searchOrder.layoutID')"/>
@@ -478,44 +532,20 @@
        <el-table-column prop="thickness" align="center" :label="$t('basicData.thickness')"/>
        <el-table-column prop="filmsid" align="center" :label="$t('basicData.coatingtypes')"/>
        <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.processcards')"/>
        <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
        <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="200">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('order.dilapidation') }}</el-button>
              <el-button size="mini" type="text" plain @click="openb(scope.row)">{{ $t('order.takeaway') }}</el-button>
              <el-button type="text" plain @click="opena(scope.row)">{{ $t('order.dilapidation') }}</el-button>
              <el-button type="text" plain @click="openb(scope.row)">{{ $t('order.takeaway') }}</el-button>
            </template>
        </el-table-column>
        </el-table>
        <template #footer>
      <div id="dialog-footer">
        <el-button type="danger" @click="deleteTask()">{{ $t('searchOrder.deleteTask') }}</el-button>
        <el-button @click="blindb = false">{{ $t('large.close') }}</el-button>
      </div>
    </template>
    <!-- <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="deleteTask">
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="blindb = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template> -->
  </el-dialog>
  <!-- 值班信息 -->
    <el-dialog v-model="dialoglea" top="15vh" width="70%" :title="$t('searchOrder.dutyinformation')">
      <el-table ref="table" style="margin-top: 20px;height: 300px;"
                :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
        <el-table-column prop="line" fixed align="center" :label="$t('searchOrder.line')"/>
        <el-table-column prop="workProcesses" fixed align="center" :label="$t('searchOrder.process')"/>
        <el-table-column prop="teamsGroupsName" align="center" :label="$t('searchOrder.team')">
        </el-table-column>
        <el-table-column prop="deviceName" align="center" :label="$t('searchOrder.basic')">
        </el-table-column>
        </el-table>
        <template #footer>
      <div id="dialog-footer">
        <el-button @click="dialoglea = false">{{ $t('large.close') }}</el-button>
      </div>
    </template>
</el-dialog>
  <el-dialog v-model="blinda" top="24vh" width="30%" :title="$t('basicData.whetherpause')">
    <div style="margin-left: 50px;margin-bottom: 10px;">
    <el-form-item :label="$t('Mounting.loadingline')" :required="true">