<template>
|
<div style="height: 600px;">
|
<el-card style="flex: 1;margin-left: 10px;margin-top: 10px;" v-loading="loading">
|
<div style="display: flex; flex-direction: row; align-items: center; margin-bottom: 10px;">
|
<el-button id="searchButton" type="success" @click="handlezhiban">
|
{{ $t('hellow.createtask') }}
|
</el-button>
|
<el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBinda">
|
{{ $t('hellow.starttask') }}
|
</el-button>
|
<el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBindb">{{
|
$t('hellow.stoptask')
|
}}
|
</el-button>
|
<el-switch style="margin-top: 7px;margin-left: 10px;" v-model="ganghua" class="mb-2" :inactive-text="$t('hellow.schedulingswitch')" @change="handleChange" />
|
</div>
|
<div style="margin-bottom: -5px;margin-left: 5px;">
|
<el-form>
|
<el-row>
|
<el-col :span="4">
|
<div id="dt" style="font-size: 15px;">
|
<el-form-item :label="$t('hellow.currenttask')" style="width: 14vw">
|
{{ temperingtotal }}
|
</el-form-item>
|
</div>
|
</el-col>
|
<el-col :span="5">
|
<div id="dta" style="font-size: 15px;">
|
<el-form-item :label="$t('hellow.claimednumber')" style="width: 14vw">
|
{{ glasstotal }}
|
</el-form-item>
|
</div>
|
</el-col>
|
<el-col :span="4">
|
<div id="dt" style="font-size: 15px;">
|
<el-form-item :label="$t('hellow.linenumber')" style="width: 14vw">
|
{{ fulltotals }}
|
</el-form-item>
|
</div>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
|
<el-table height="480" ref="table" :data="tableDataa"
|
:header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }">
|
<el-table-column prop="sequence" :label="$t('hellow.order')" align="center"/>
|
<el-table-column prop="thickness" :label="$t('hellow.thickness')" align="center"/>
|
<el-table-column prop="layer" :label="$t('hellow.coatingtypes')" align="center"/>
|
<el-table-column prop="height" :label="$t('hellow.height')" align="center"/>
|
<el-table-column prop="width" :label="$t('hellow.width')" align="center"/>
|
<el-table-column prop="state" :label="$t('hellow.state')" align="center"/>
|
</el-table>
|
<div style="display: flex;margin-left: 500px;margin-top: 10px;">
|
<!-- <div style="float: center;"> -->
|
<div style="margin-top: 5px;margin-right: 5px;">线路</div>
|
<el-pagination
|
background
|
size="large"
|
layout="prev, pager, next"
|
:total="30"
|
:current-page.sync="currentPage"
|
@current-change="handlePageChange"
|
/>
|
</div>
|
</div>
|
</el-card>
|
</div>
|
<!-- 创建任务 -->
|
<el-dialog v-model="dialogFormVisiblea" top="5vh" width="85%">
|
<el-table
|
ref="table"
|
style="margin-top: 20px; height: 500px;"
|
:data="tableDatab"
|
:header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
|
row-key="projectNumber"
|
>
|
<!-- <el-table-column type="expand"> -->
|
<el-table-column >
|
<template #default="props">
|
<el-table :data="props.row.records" style="width: 100%">
|
<el-table-column prop="layer" fixed align="center" :label="$t('hellow.layernumber')" 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="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="pairCount" align="center" :label="$t('hellow.pairsnumber')" min-width="80"/>
|
</el-table>
|
</template>
|
</el-table-column>
|
<el-table-column prop="projectNumber" fixed align="center" :label="$t('hellow.cardnumber')" min-width="20"/>
|
<el-table-column fixed="right" :label="$t('hellow.operate')" align="center" width="270">
|
<template #default="scope">
|
<el-button size="mini" type="text" plain @click="handletake(scope.row)">{{ $t('hellow.claimquest') }}</el-button>
|
<el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">{{
|
$t('hellow.missingfilms')
|
}}
|
</el-button>
|
<el-button size="mini" type="text" plain @click="handleout(scope.row)">{{
|
$t('hellow.forcedfilming')
|
}}
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-dialog>
|
<!-- 领取任务 -->
|
<el-dialog v-model="dialogFormVisiblec" top="21vh" width="40%" :title="$t('hellow.claimquest')">
|
<div style="margin-left: 20px;margin-top: 10px;margin-bottom: 10px;">
|
<el-form size="mini" label-width="100px">
|
<el-form label-width="210px" label-position="right">
|
<el-form-item :label="$t('hellow.pairQuantity')" :required="true" style="width: 25vw">
|
<el-input :placeholder="$t('hellow.cpairQuantity')" v-model="totalPairQuantity" autocomplete="off" />
|
</el-form-item>
|
<el-form-item :label="$t('hellow.route')" :required="true" style="width: 25vw;">
|
<el-select
|
:placeholder="$t('hellow.croute')"
|
style="width: 270px"
|
v-model="cell">
|
<el-option
|
v-for="item in options"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
</el-form>
|
</div>
|
<template #footer>
|
<div id="dialog-footer">
|
<el-button type="primary" @click="finisha">
|
{{ $t('reportWork.sure') }}
|
</el-button>
|
<el-button @click="dialogFormVisiblec = false">{{ $t('reportWork.cancel') }}</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
|
<!-- 强制出片 -->
|
<el-dialog v-model="dialogFormVisibled" top="21vh" width="40%" :title="$t('hellow.forcedfilming')">
|
<div style="margin-left: 20px;margin-top: 10px;margin-bottom: 10px;">
|
<el-form size="mini" label-width="100px">
|
<el-form label-width="210px" label-position="right">
|
<el-form-item :label="$t('hellow.pairQuantity')" :required="true" style="width: 25vw">
|
<el-input :placeholder="$t('hellow.cpairQuantity')" v-model="totalPairQuantitya" autocomplete="off" />
|
</el-form-item>
|
<el-form-item :label="$t('hellow.route')" :required="true" style="width: 25vw;">
|
<el-select
|
:placeholder="$t('hellow.croute')"
|
style="width: 270px"
|
v-model="cella">
|
<el-option
|
v-for="item in options"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
</el-form>
|
</div>
|
<template #footer>
|
<div id="dialog-footer">
|
<el-button type="primary" @click="finishb">
|
{{ $t('reportWork.sure') }}
|
</el-button>
|
<el-button @click="dialogFormVisibled = false">{{ $t('reportWork.cancel') }}</el-button>
|
</div>
|
</template>
|
</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">
|
{{ currentRow.projectNumber }}
|
</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="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="totalCount" align="center" :label="$t('hellow.totalnumber')" 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('hellow.brokenpieces')" min-width="80"/> -->
|
<div style="float: right;margin-bottom: 5px;">
|
<el-pagination layout="prev, pager, next" :total="50"/>
|
</div>
|
</el-table>
|
</el-dialog>
|
<!-- 开始任务 -->
|
<el-dialog v-model="blinda" top="30vh" width="25%" :title="$t('hellow.pstarttask')">
|
<template #footer>
|
<div id="dialog-footer">
|
<el-button type="primary" @click="handlea">
|
{{ $t('basicData.confirm') }}
|
</el-button>
|
<el-button @click="blinda = false">{{ $t('basicData.cancel') }}</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
<!-- 停止任务 -->
|
<el-dialog v-model="blindb" top="30vh" width="25%" :title="$t('hellow.pstoptask')">
|
<template #footer>
|
<div id="dialog-footer">
|
<el-button type="primary" @click="handlea">
|
{{ $t('basicData.confirm') }}
|
</el-button>
|
<el-button @click="blindb = false">{{ $t('basicData.cancel') }}</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
</template>
|
<script setup>
|
import {ElMessage} from 'element-plus'
|
import {onBeforeUnmount, onMounted, onUnmounted, ref, reactive, watch, computed} from "vue";
|
import request from "@/utils/request"
|
import {host, WebSocketHost} from '@/utils/constants'
|
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
|
import {useI18n} from 'vue-i18n'
|
const {t} = useI18n()
|
const blinda = ref(false)
|
const blindb = ref(false)
|
const tableDataa = ref([])
|
const tableDatab = ref([])
|
const tableDatac = ref([])
|
const allData = ref({})
|
const flowCard = ref('')
|
const cell = ref('')
|
const cella = ref('')
|
const ganghua = ref('')
|
const totalPairQuantity = ref('')
|
const totalPairQuantitya = ref('')
|
const dialogFormVisiblea = ref(false)
|
const dialogFormVisibleb = ref(false)
|
const dialogFormVisiblec = ref(false)
|
const dialogFormVisibled = ref(false)
|
const currentRow = reactive({});
|
const options = [
|
{
|
value: 930,
|
label: '线路一',
|
},
|
{
|
value: 931,
|
label: '线路二',
|
},
|
{
|
value: 932,
|
label: '线路三',
|
}
|
]
|
let socket = null;
|
const socketUrl = `ws://${WebSocketHost}:${host}/api/hollowGlass/api/talk/HollowGlass`;
|
const currentPage = ref(parseInt(window.localStorage.getItem('currentPage')) || 1);
|
console.log(currentPage.value);
|
watch(() => currentPage.value, (newVal) => {
|
window.localStorage.setItem('currentPage', newVal);
|
});
|
const currentPageKey = computed(() => `93${currentPage.value - 1}`);
|
const handlePageChange = (newPage) => {
|
currentPage.value = newPage;
|
};
|
const handleMessage = (data) => {
|
try {
|
const allPageData = data;
|
const currentPageKeyValue = currentPageKey.value;
|
const currentPageData = allPageData[currentPageKeyValue];
|
if (currentPageData && Array.isArray(currentPageData) && currentPageData.length > 0) {
|
tableDataa.value = currentPageData[0];
|
} else {
|
console.warn('No data for the current page key:', currentPageKeyValue);
|
}
|
} catch (error) {
|
console.error('Error parsing WebSocket message:', error);
|
}
|
};
|
onMounted(() => {
|
socket = initializeWebSocket(socketUrl, handleMessage);
|
});
|
onUnmounted(() => {
|
if (socket) {
|
closeWebSocket(socket);
|
}
|
});
|
// 开始任务
|
const handleBinda = (row) => {
|
blinda.value = true;
|
};
|
// 停止任务
|
const handleBindb = (row) => {
|
blindb.value = true;
|
};
|
const handlezhiban = () => {
|
dialogFormVisiblea.value = true;
|
fetchFlowCardId();
|
};
|
const handleBindRack = (row) => {
|
const { projectNumber, layer } = row;
|
currentRow.projectNumber = row.projectNumber;
|
dialogFormVisibleb.value = true;
|
fetchFlowBind(projectNumber, layer);
|
};
|
// 领取任务
|
const handletake = (row) => {
|
window.localStorage.setItem('flowCardId', row.projectNumber)
|
dialogFormVisiblec.value = true;
|
};
|
// 强制出片
|
const handleout = (row) => {
|
window.localStorage.setItem('flowCardId', row.projectNumber)
|
dialogFormVisibled.value = true;
|
};
|
// 创建任务
|
const fetchFlowCardId = async () => {
|
try {
|
const response = await request.post('/hollowGlass/hollowGlassRelationInfo/queryHollowAllFlowCard');
|
if (response.code == 200) {
|
ElMessage.success(response.message);
|
const newData = parseData(response.data);
|
console.log(newData);
|
|
tableDatab.value = newData;
|
} else {
|
ElMessage.error('Failed to fetch data');
|
}
|
} catch (error) {
|
ElMessage.error('Error fetching data');
|
}
|
};
|
|
const parseData = (rawData) => {
|
return Object.keys(rawData).map(projectNumber => ({
|
projectNumber,
|
records: rawData[projectNumber]
|
}));
|
};
|
// const fetchFlowCardId = async () => {
|
// try {
|
// const response = await request.post('/hollowGlass/hollowGlassRelationInfo/queryHollowAllFlowCard')
|
// if (response.code == 200) {
|
// ElMessage.success(response.message);
|
// console.log(response.data);
|
// tableDatab.value = response.data;
|
// } else {
|
// ElMessage.error(response.message);
|
// }
|
// } catch (error) {
|
// console.error(error);
|
// }
|
// }
|
// 缺片详情
|
const fetchFlowBind = async (flowCardId, layer) => {
|
try {
|
var url="/hollowGlass/hollowGlassRelationInfo/queryLackByFlowCard?flowCardId="+flowCardId + "&layer=" + layer;
|
const response = await request.post(url)
|
if (response.code == 200) {
|
tableDatac.value = response.data[1];
|
ElMessage.success(response.message);
|
} else {
|
ElMessage.error(response.message);
|
}
|
} catch (error) {
|
console.error(error);
|
}
|
}
|
// 开始任务
|
const handlea = async () => {
|
try {
|
let engineeringId = window.localStorage.getItem('engineeringId')
|
console.log(engineeringId);
|
if (engineeringId !== '') {
|
const response = await request.post('/loadGlass/engineering/engineering/pauseTask', {
|
engineeringId: engineeringId,
|
state: 0,
|
})
|
if (response.code == 200) {
|
ElMessage.success(response.message);
|
blinda.value = false;
|
} else {
|
ElMessage.error(response.message);
|
}
|
} else {
|
ElMessage({
|
type: 'info',
|
message: t('basicData.infonull'),
|
})
|
}
|
} catch (error) {
|
console.error(error);
|
}
|
}
|
// 领取任务
|
const finisha = async () => {
|
let flowCardId = window.localStorage.getItem('flowCardId')
|
try {
|
var url="/hollowGlass/hollowGlassOutRelationInfo/receiveTask?cell="+cell.value + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantity.value;
|
const response = await request.post(url)
|
if (response.code == 200) {
|
ElMessage.success(response.message);
|
dialogFormVisiblec.value = false;
|
cell.value = '';
|
totalPairQuantity.value = '';
|
} else {
|
ElMessage.error(response.message);
|
}
|
} catch (error) {
|
console.error(error);
|
}
|
}
|
// 强制出片
|
const finishb = async () => {
|
let flowCardId = window.localStorage.getItem('flowCardId')
|
try {
|
var url="/hollowGlass/hollowGlassOutRelationInfo/forceOutGlass?cell="+cella.value + "&flowCardId=" + flowCardId + "&totalPairQuantity=" + totalPairQuantitya.value;
|
const response = await request.post(url)
|
if (response.code == 200) {
|
ElMessage.success(response.message);
|
dialogFormVisibled.value = false;
|
cella.value = '';
|
totalPairQuantitya.value = '';
|
} else {
|
ElMessage.error(response.message);
|
}
|
} catch (error) {
|
console.error(error);
|
}
|
}
|
// 调度
|
const handleChange = async () => {
|
try {
|
const body = {
|
flag: ganghua.value, // 使用 ganghua.value 获取当前开关的状态
|
};
|
|
var url="/hollowGlass/hollowGlassOutRelationInfo/dispatchHollowSwitch?flag="+ganghua.value;
|
const response = await request.post(url)
|
if (response.code == 200) {
|
// 绑定成功,处理逻辑
|
ElMessage.success(response.message);
|
ganghua.value = response.data
|
}else {
|
ElMessage.error(response.message);
|
}
|
}
|
catch (error) {
|
// 处理错误
|
console.error(error);
|
}
|
}
|
onBeforeUnmount(() => {
|
console.log("关闭了")
|
closeWebSocket();
|
});
|
</script>
|
|
<style scoped>
|
#dialog-footer {
|
text-align: center;
|
margin-top: -15px;
|
}</style>
|