From 3124ce87407fe85f6780b3ba1a219d8d9e8d7475 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 30 十月 2025 13:21:32 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/YiWuProject
---
UI-Project/src/views/hollow/hollowslicecage.vue | 323 ++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 266 insertions(+), 57 deletions(-)
diff --git a/UI-Project/src/views/hollow/hollowslicecage.vue b/UI-Project/src/views/hollow/hollowslicecage.vue
index 6dded87..6c1b644 100644
--- a/UI-Project/src/views/hollow/hollowslicecage.vue
+++ b/UI-Project/src/views/hollow/hollowslicecage.vue
@@ -29,6 +29,16 @@
const carPosition = ref([])
const tableDatass = ref([])
const tableDataLack = ref([])
+const tableDataMiss = ref([])
+// 鍝嶅簲寮忕姸鎬�
+const showAlert = ref(false)
+const alertMessage = ref('')
+const alarmData = ref<any>(null)
+const showModal = ref(false)
+const currentAlarm = ref<any>(null)
+const tableDataAlert = ref([])
+const alertText = ref('')
+
const ganghua = ref('')
const diaodu = ref('')
const hollowPriority = ref('')
@@ -74,14 +84,29 @@
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 handleMissingFilms = (row) => {
+ dialogFormVisibleb.value = true;
+ handleAllMissing(row)
+};
+const handleAllMissing = async (row) => {
+ try {
+ const response = await request.post('/hollowGlass/hollowGlassRelationInfo/queryLackGlassByFlowCard', {
+ flowCardId: row.flowCardId,
+ layer: row.layer,
+ orderSort: row.glassType,
+ // glassId: row.glassId
+ });
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDataMiss.value = response.data
+ } else {
+ ElMessage.error(response.message);
+ }
+}
+catch (error) {
+ }
+}
const handlePageChange2 = (newPage) => {
currentPage2.value = newPage;
fetchFlowBind(currentLack.flowCardId, currentPage2.value);
@@ -205,6 +230,39 @@
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(flowCardId, currentPage2.value);
+ } else {
+ ElMessage.error(response.msg);
+ }
+ } catch (error) {
+ console.error(error);
+ }
+}
+// 缂虹墖璇︽儏-涓�閿牬鎹�
+const handleAllBroke = async (row) => {
+ try {
+ const confirmResult = await ElMessageBox.confirm(
+ t('order.dilapidationWhether'),
+ 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,
@@ -316,6 +374,35 @@
} catch (error) {
}
};
+// 璀︽姤纭
+const handleSure = async (row) => {
+ try {
+ const confirmResult = await ElMessageBox.confirm(
+ t('hellow.clickmakesure'),
+ t('productStock.prompt'),
+ {
+ confirmButtonText: t('productStock.yes'),
+ cancelButtonText: t('productStock.cancel'),
+ type: 'warning',
+ }
+ );
+ if (confirmResult === 'confirm') {
+ const response = await request.post('/hollowGlass/productAlarmInfo/updateAlarmInfo', {
+ id: row.id
+ })
+ if (response.code === 200) {
+ showModal.value = false;
+ showAlert.value = false;
+
+ ElMessage.success(response.message);
+ } else {
+ ElMessage.error(response.msg);
+ }
+ }
+ } catch (error) {
+ console.error('鍙戠敓閿欒:', error);
+ }
+};
const handlexiang = () => {
dialogFormVisiblea.value = true;
fetchxiang();
@@ -364,28 +451,28 @@
selectedRow.value = row; // 鏇存柊閫変腑鐨勮鏁版嵁
}
// 浠诲姟閲嶇疆
-const handleptask = async() => {
- try {
- const confirmResult = await ElMessageBox.confirm(
- t('searchOrder.partasks'),
- t('workOrder.prompt'),
- {
- confirmButtonText: t('workOrder.yes'),
- cancelButtonText: t('workOrder.cancel'),
- type: 'warning',
- }
- );
- if (confirmResult === 'confirm') {
- const response = await request.post('/hollowGlass/hollowBigStorageCage/resetCage')
- if (response.code === 200) {
- ElMessage.success(response.message);
- } else {
- ElMessage.error(response.msg);
- }
- }
- } catch (error) {
- }
-};
+// const handleptask = async() => {
+// try {
+// const confirmResult = await ElMessageBox.confirm(
+// t('searchOrder.partasks'),
+// t('workOrder.prompt'),
+// {
+// confirmButtonText: t('workOrder.yes'),
+// cancelButtonText: t('workOrder.cancel'),
+// type: 'warning',
+// }
+// );
+// if (confirmResult === 'confirm') {
+// const response = await request.post('/hollowGlass/hollowBigStorageCage/resetCage')
+// if (response.code === 200) {
+// ElMessage.success(response.message);
+// } else {
+// ElMessage.error(response.msg);
+// }
+// }
+// } catch (error) {
+// }
+// };
// 璋冨害寮�鍏�
const handlediaodu = async () => {
try {
@@ -425,6 +512,27 @@
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/hollowGlass/api/talk/hollowGlassMessage`;
const handleMessage = (data) => {
+ // 鎶ヨ淇℃伅
+ if (data.alarmInfo[0] !=null && data.alarmInfo[0].length > 0) {
+ const alert = data.alarmInfo[0]
+ const { id,alarmMessage, ...rest } = alert[0];
+ alertMessage.value = `${alarmMessage}`;
+ alertMessage.value = `${alert[0].alarmMessage}`;
+ // 鍔ㄦ�佺炕璇戦�昏緫锛氭牴鎹產larmCode閫夋嫨缈昏瘧閿�
+ alertText.value = alert[0].alarmCode === 'sizeSame'
+ ? t('hellow.sizeSame')
+ : t('hellow.idSame');
+ alarmData.value = data; // 瀛樺偍瀹屾暣鏁版嵁鐢ㄤ簬寮圭獥
+ showAlert.value = true;
+ }
+ const formattedData = data.alarmInfo[0].map(record => ({
+ ...record,
+ formattedCreateTime: formatTimestamp(record.createTime),
+ alarmCode: record.alarmCode,
+ alarmMessage: record.alarmMessage
+ }));
+ tableDataAlert.value = formattedData;
+
if(data.lackDetailsList!=null){
const summaries = data.lackDetailsList[0];
const updatedData = summaries.map(summary => ({
@@ -545,7 +653,19 @@
adjustedRectsd.value = ''
}
};
-
+const getAlertText = (alarmCode) => {
+ const codeMap = {
+ sizeSame: 'hellow.sizeSame',
+ idSame: 'hellow.idSame'
+ };
+ return alarmCode in codeMap
+ ? t(codeMap[alarmCode])
+ : t('hellow.unknownAlert');
+};
+// 璀︽姤鍙屽嚮寮圭獥
+const handleDoubleClick = () => {
+ showModal.value = true;
+};
// 璁$畻姣忎釜澶х煩褰㈢殑鏍峰紡
const rectStyle = (rect, index) => ({
position: 'absolute',
@@ -724,6 +844,17 @@
closeWebSocket(socket);
}
});
+// 鏍煎紡鍖栨椂闂存埑涓哄勾鏈堟棩鏃堕棿瀛楃涓茬殑鍑芥暟
+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}`;
+}
function getStatusType(enableState: number) {
switch (enableState) {
case 100:
@@ -768,10 +899,52 @@
</script>
<template>
<div style="height: 600px;">
+ <div v-if="showAlert" class="global-alert-bar" @dblclick="handleDoubleClick">
+ <div class="alert-content">
+ <el-icon><WarnTriangleFilled /></el-icon>
+ <span class="alert-text">
+ {{ alertText }} (id:{{ alertMessage }})
+ </span>
+ </div>
+ <button @click="showAlert = false" class="close-btn">脳</button>
+ </div>
+ <el-dialog
+ v-model="showModal"
+ width="40%"
+ center
+ >
+ <el-table
+ ref="table"
+ border
+ :data="tableDataAlert"
+ max-height="calc(500px - 35px)"
+ style="width: 100%;"
+ >
+ <el-table-column prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="100" />
+ <el-table-column
+ :label="$t('hellow.content')"
+ align="center"
+ min-width="220"
+ >
+ <template #default="scope">
+ <span>
+ {{ getAlertText(scope.row.alarmCode) }}
+ (id:{{ scope.row.alarmMessage }})
+ </span>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100">
+ <template #default="scope">
+ <el-button type="text" plain
+ @click="handleSure(scope.row)">{{ $t('basicData.yes') }}</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-dialog>
<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-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" />
<div style="display: flex;">
<div style="margin-left: 15px;margin-top: 5px;font-size: 14px;top: 5vh;margin-top: 12px;">{{ $t('searchOrder.hollowPriority') }}锛�</div>
@@ -891,15 +1064,22 @@
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="layer" align="center" :label="$t('reportmanage.layer')" min-width="40" />
+ <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="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="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">
+ <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>
@@ -1106,35 +1286,23 @@
<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"
+ <!-- 澶氭潯鐮存崯鏁版嵁 -->
+ <el-dialog v-model="dialogFormVisibleb" top="15vh" width="70%" height="500">
+ <el-button plain @click="handleAllBroke">{{ $t('order.dilapidationAll') }}</el-button>
+ <el-table ref="table" style="margin-top: 20px;height: 400px;" :data="tableDataMiss"
: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="glassId" align="center" :label="$t('searchOrder.glassID')" 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="workingProcedure" align="center" :label="$t('searchOrder.process')" 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-column>
</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=''">
@@ -1297,4 +1465,45 @@
.row-red-background {
background-color: #CDAF95 !important;
}
+.global-alert-bar {
+ position: fixed;
+ top: 0;
+ left: 50%; /* 姘村钩灞呬腑鍏抽敭 */
+ transform: translateX(-50%); /* 姘村钩灞呬腑鍏抽敭 */
+ padding: 12px 20px;
+ background-color: #dbdbd7;
+ box-shadow: 0 2px 10px rgba(0,0,0,0.2);
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ z-index: 9999;
+ max-width: 80%; /* 闃叉灏忓睆骞曟孩鍑� */
+ min-width: 400px; /* 鏈�灏忓搴︿繚璇� */
+}
+/* 鎻愮ず鍐呭灞呬腑 */
+.alert-content {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-grow: 1; /* 鍗犳嵁鍙敤绌洪棿 */
+}
+/* 鎻愮ず鏂囧瓧鏍峰紡 */
+.alert-text {
+ margin-left: 8px;
+ text-align: center;
+ font-weight: bold;
+ color: #0d0d0d;
+}
+/* 鍏抽棴鎸夐挳鏍峰紡 */
+.close-btn {
+ background: none;
+ border: none;
+ font-size: 1.5rem;
+ cursor: pointer;
+ margin-left: 20px;
+}
+/* 椤甸潰瀹瑰櫒椤堕儴鍐呰竟璺� */
+#app-container {
+ padding-top: 60px; /* 鏍规嵁alert楂樺害璋冩暣 */
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0