From bb7c9575fa2a8546bf04ff22ba24aacf37add1e4 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期四, 13 三月 2025 09:57:53 +0800
Subject: [PATCH] 原片仓储模块、磨边、上片一线新增历史任务页面
---
UI-Project/src/views/Returns/upreturns.vue | 21 +
UI-Project/src/views/GlassStorage/rawhistory.vue | 113 ++++----
UI-Project/src/views/StockBasicData/stockBasicData.vue | 22 +
UI-Project/src/lang/en.js | 8
UI-Project/src/lang/py.js | 8
UI-Project/src/lang/zh.js | 8
UI-Project/src/router/index.js | 24 +
UI-Project/src/views/Returns/upreturnhistory.vue | 273 +++++++++++++++++++++
UI-Project/src/views/StockBasicData/stockhistory.vue | 276 +++++++++++++++++++++
9 files changed, 700 insertions(+), 53 deletions(-)
diff --git a/UI-Project/src/lang/en.js b/UI-Project/src/lang/en.js
index a4945c3..ae61ddc 100644
--- a/UI-Project/src/lang/en.js
+++ b/UI-Project/src/lang/en.js
@@ -34,6 +34,10 @@
quit:"Exit",
},
basicData:{
+ untask:'鏃犱换鍔�',
+ up:'涓婄墖',
+ tonumber:'涓婄墖鎬绘暟閲�',
+ finishnumber:'宸插畬鎴愭暟閲�',
rackreset:'鏋跺瓙澶嶄綅',
prackreset:'鏄惁鏋跺瓙澶嶄綅锛�',
printing:'鑷姩鎵撳嵃',
@@ -297,6 +301,8 @@
Schedulingswitch:'璋冨害寮�鍏�',
},
workOrder:{
+ upnumber:'涓婄墖浣嶇紪鍙�',
+ coatingtypesbe:'鍘熺墖鑶滅郴',
glassID:'Glass ID',
height:'Height',
width:'Width',
@@ -604,6 +610,7 @@
premark :'Please enter a note',
},
film:{
+ resetnumber:'鏋跺瓙鍙�',
fail:'澶辫触',
mes:'Original film storage details',
warehousing:'store',
@@ -643,6 +650,7 @@
filmsa:'Films锛�',
createtime:'Creation time',
remainquantity:'Remaining Quantity',
+ thickremainquant:'Remaining quantity of original film (sheets)',
thickremainquantity:'Remaining quantity of original film (sheets)锛�',
inquantity:'Please enter the quantity',
quantitya:'Number锛�',
diff --git a/UI-Project/src/lang/py.js b/UI-Project/src/lang/py.js
index 4e63ba5..7287b6f 100644
--- a/UI-Project/src/lang/py.js
+++ b/UI-Project/src/lang/py.js
@@ -34,6 +34,10 @@
quit: "袙褘褏芯写",
},
basicData: {
+ untask:'鏃犱换鍔�',
+ up:'涓婄墖',
+ tonumber:'涓婄墖鎬绘暟閲�',
+ finishnumber:'宸插畬鎴愭暟閲�',
rackreset:'鏋跺瓙澶嶄綅',
prackreset:'鏄惁鏋跺瓙澶嶄綅锛�',
laserprinting: '袦邪褕懈薪邪 谢邪蟹械褉薪芯泄 屑邪褉泻懈褉芯胁泻懈 谐芯褌芯胁邪锛�',
@@ -296,6 +300,8 @@
Schedulingswitch:'璋冨害寮�鍏�',
},
workOrder: {
+ upnumber:'涓婄墖浣嶇紪鍙�',
+ coatingtypesbe:'鍘熺墖鑶滅郴',
glassID: '小褌械泻谢褟薪薪褘泄 ID',
height: '袙褘褋芯褌邪',
width: '楔懈褉懈薪邪',
@@ -602,6 +608,7 @@
premark :'璇疯緭鍏ュ娉�',
},
film:{
+ resetnumber:'鏋跺瓙鍙�',
fail:'澶辫触',
mes:'鍘熺墖浠撳偍璇︽儏',
warehousing:'鍘熺墖鍏ュ簱',
@@ -641,6 +648,7 @@
filmsa:'孝懈锌褘 锌芯泻褉褘褌懈泄锛�',
createtime:'鍒涘缓鏃堕棿',
remainquantity:'鍓╀綑鏁伴噺',
+ thickremainquant:'鍘熺墖鍓╀綑鏁伴噺锛堝紶锛�',
thickremainquantity:'鍘熺墖鍓╀綑鏁伴噺锛堝紶锛夛細',
inquantity:'袙胁械写懈褌械 泻芯谢褜褔械褋褌胁芯.',
quantitya:'袣芯谢懈褔械褋褌胁芯锛�',
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index 7d25d9b..8541fa7 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -34,6 +34,10 @@
quit:"閫�鍑�",
},
basicData:{
+ untask:'鏃犱换鍔�',
+ up:'涓婄墖',
+ tonumber:'涓婄墖鎬绘暟閲�',
+ finishnumber:'宸插畬鎴愭暟閲�',
rackreset:'鏋跺瓙澶嶄綅',
prackreset:'鏄惁鏋跺瓙澶嶄綅锛�',
laserprinting:'鎵撴爣鏈哄氨缁姸鎬侊細',
@@ -296,11 +300,13 @@
Schedulingswitch:'璋冨害寮�鍏�',
},
workOrder:{
+ upnumber:'涓婄墖浣嶇紪鍙�',
glassID:'鐜荤拑ID',
height:'楂�',
width:'瀹�',
thickness:'鍘氬害',
coatingtypes:'鑶滅郴',
+ coatingtypesbe:'鍘熺墖鑶滅郴',
productionsequence:'鍑虹墖椤哄簭',
cardnumber:'娴佺▼鍗″彿',
operate:'鎿嶄綔',
@@ -603,6 +609,7 @@
premark :'璇疯緭鍏ュ娉�',
},
film:{
+ resetnumber:'鏋跺瓙鍙�',
fail:'澶辫触',
mes:'鍘熺墖浠撳偍璇︽儏',
warehousing:'鍘熺墖鍏ュ簱',
@@ -643,6 +650,7 @@
createtime:'鍒涘缓鏃堕棿',
remainquantity:'鍓╀綑鏁伴噺',
thickremainquantity:'鍘熺墖鍓╀綑鏁伴噺锛堝紶锛夛細',
+ thickremainquant:'鍘熺墖鍓╀綑鏁伴噺锛堝紶锛�',
inquantity:'璇疯緭鍏ユ暟閲�',
quantitya:'鏁伴噺锛�',
enableid:'浠诲姟ID',
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index fc91714..3e4acc2 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -386,6 +386,30 @@
},
]
},
+ {
+ path: '/stockhistory',
+ name: 'stockhistory',
+ component: () => import('../views/StockBasicData/stockhistory.vue'),
+ children: [
+ {
+ path: '/StockBasicData/stockhistory',
+ name: 'stockhistory',
+ component: () => import('../views/StockBasicData/stockhistory.vue')
+ },
+ ]
+ },
+ {
+ path: '/upreturnhistory',
+ name: 'upreturnhistory',
+ component: () => import('../views/Returns/upreturnhistory.vue'),
+ children: [
+ {
+ path: '/Returns/upreturnhistory',
+ name: 'upreturnhistory',
+ component: () => import('../views/Returns/upreturnhistory.vue')
+ },
+ ]
+ },
]
})
// 瀵艰埅瀹堝崼
diff --git a/UI-Project/src/views/GlassStorage/rawhistory.vue b/UI-Project/src/views/GlassStorage/rawhistory.vue
index 31ee432..0a71dcf 100644
--- a/UI-Project/src/views/GlassStorage/rawhistory.vue
+++ b/UI-Project/src/views/GlassStorage/rawhistory.vue
@@ -3,16 +3,17 @@
<div style="display: flex;width: 1770px;">
<el-select v-model="selectValuesa[0]" filterable :placeholder="$t('searchOrder.taskstatus')" clearable
style="width: 200px;margin-left: 10px;">
- <el-option :label="$t('searchOrder.begin')" value="1"></el-option>
- <el-option :label="$t('searchOrder.finish')" value="2"></el-option>
- <el-option :label="$t('order.dilapidation')" value="3"></el-option>
- <el-option :label="$t('searchOrder.uncar')" value="4"></el-option>
+ <el-option :label="$t('film.built')" value="0"></el-option>
+ <el-option :label="$t('film.finish')" value="1"></el-option>
+ <el-option :label="$t('film.fail')" value="2"></el-option>
</el-select>
<el-select v-model="selectValuesa[1]" filterable :placeholder="$t('film.enabletype')" clearable
style="width: 200px;margin-left: 10px;">
- <el-option :label="$t('searchOrder.inkage')" value="1"></el-option>
- <el-option :label="$t('searchOrder.outfilm')" value="2"></el-option>
- <el-option :label="$t('film.dispatch')" value="3"></el-option>
+ <el-option :label="$t('sorter.advancetask')" value="1"></el-option>
+ <el-option :label="$t('sorter.outputtasks')" value="2"></el-option>
+ <el-option :label="$t('sorter.schedulingtasks')" value="3"></el-option>
+ <el-option :label="$t('sorter.advancerequests')" value="4"></el-option>
+ <el-option :label="$t('sorter.releaserequest')" value="5"></el-option>
</el-select>
<el-date-picker v-model="timeRange" type="datetimerange" range-separator="鑷�" :start-placeholder="$t('reportmanage.starttime')"
style="margin-left: 15px;" value-format = "YYYY-MM-DD hh:mm:ss"
@@ -23,6 +24,8 @@
<el-table ref="table" style="margin-top: 20px;height: 580px;width: 1770px;" :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
<el-table-column prop="startSlot" align="center" :label="$t('film.originateslot')" min-width="80" />
<el-table-column prop="endSlot" align="center" :label="$t('film.endslot')" min-width="80" />
+ <el-table-column prop="shelf" align="center" :label="$t('film.resetnumber')" min-width="80" />
+ <el-table-column prop="patternQuantity" align="center" :label="$t('film.thickremainquant')" min-width="80" />
<el-table-column
align="center"
:label="$t('film.taskstatus')"
@@ -30,8 +33,8 @@
prop="taskState"
>
<template #default="scope">
- <el-tag :type="getStatusTypeb(scope.row.taskState)">
- {{ getStatusTextb(scope.row.taskState) }}
+ <el-tag :type="getStatusType2(scope.row.taskState)">
+ {{ getStatusText2(scope.row.taskState) }}
</el-tag>
</template>
</el-table-column>
@@ -42,8 +45,8 @@
prop="taskType"
>
<template #default="scope">
- <el-tag :type="getStatusTypea(scope.row.taskType)">
- {{ getStatusTexta(scope.row.taskType) }}
+ <el-tag :type="getStatusText1(scope.row.taskType)">
+ {{ getStatusType1(scope.row.taskType) }}
</el-tag>
</template>
</el-table-column>
@@ -214,49 +217,53 @@
timeRange.value = [formatTimestamp(oneWeekAgo), formatTimestamp(backendTime)];
window.localStorage.setItem('startTime', formatTimestamp(oneWeekAgo))
}
-function getStatusTypeb(state: number) {
- switch (state) {
- case 0:
- return 'primary';
- case 2:
- return 'success';
- case 3:
- return 'danger';
- case 4:
- return 'warning';
- }
-}
-function getStatusTextb(state: number) {
- switch (state) {
- case 0:
- return t('searchOrder.begin');
- case 2:
- return t('searchOrder.finish');
- case 3:
- return t('order.dilapidation');
- case 4:
- return t('searchOrder.uncar');
- }
-}
-function getStatusTypea(ishorizontal: number) {
- switch (ishorizontal) {
- case 1:
- return 'primary';
- case 2:
- return 'success';
- case 3:
- return 'warning';
- }
+function getStatusType1(taskType) {
+switch (taskType) {
+ case 1:
+ return 'info';
+ case 2:
+ return 'warning';
+ case 3:
+ return 'success';
+ case 4:
+ return 'danger';
+ case 5:
+ return 'primary';
}
-function getStatusTexta(ishorizontal: number) {
- switch (ishorizontal) {
- case 1:
- return t('searchOrder.inkage');
- case 2:
- return t('searchOrder.outfilm');
- case 3:
- return t('film.dispatch');
- }
+}
+function getStatusText1(taskType) {
+switch (taskType) {
+ case 1:
+ return t('sorter.advancetask');//杩涚墖浠诲姟
+ case 2:
+ return t('sorter.outputtasks');//鍑虹墖浠诲姟
+ case 3:
+ return t('sorter.schedulingtasks');//璋冨害浠诲姟
+ case 4:
+ return t('sorter.advancerequests');//杩涚墖璇锋眰
+ case 5:
+ return t('sorter.releaserequest');//鍑虹墖璇锋眰
+}
+}
+function getStatusType2(taskState) {
+switch (taskState) {
+ case 0:
+ return 'info';
+ case 2:
+ return 'warning';
+ case 1:
+ return 'success';
+}
+}
+function getStatusText2(taskState) {
+switch (taskState) {
+ case 0:
+ return t('film.built');//鏂板缓
+ case 2:
+ return t('film.fail');//澶辫触
+ case 1:
+ return t('film.finish');//瀹屾垚
+}
}
onMounted(() => {
parseAndSetTime();
diff --git a/UI-Project/src/views/Returns/upreturnhistory.vue b/UI-Project/src/views/Returns/upreturnhistory.vue
new file mode 100644
index 0000000..e76fe37
--- /dev/null
+++ b/UI-Project/src/views/Returns/upreturnhistory.vue
@@ -0,0 +1,273 @@
+<template>
+ <div>
+ <div style="display: flex;width: 1770px;">
+ <el-input v-model="rawGlassWidth" clearable style="margin-left: 10px;margin-bottom: 10px;width: 200px;" :placeholder="$t('Mounting.width')" />
+ <el-input v-model="rawGlassHeight" clearable style="margin-left: 10px;margin-bottom: 10px;width: 200px;" :placeholder="$t('Mounting.height')" />
+ <el-input v-model="rawGlassThickness" clearable style="margin-left: 10px;margin-bottom: 10px;width: 200px;" :placeholder="$t('Mounting.thickness')" />
+ <el-input v-model="rawGlassfilmsId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 200px;" :placeholder="$t('workOrder.coatingtypesbe')" />
+ <el-input v-model="slot" clearable style="margin-left: 10px;margin-bottom: 10px;width: 200px;" :placeholder="$t('workOrder.upnumber')" />
+ <el-select
+ :placeholder="$t('searchOrder.taskstatus')"
+ clearable
+ style="width: 270px;margin-left: 10px;"
+ v-model="taskStateList">
+ <el-option
+ v-for="item in optionsa"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ <el-date-picker v-model="timeRange" type="datetimerange" range-separator="鑷�" :start-placeholder="$t('reportmanage.starttime')"
+ style="margin-left: 15px;" value-format = "YYYY-MM-DD hh:mm:ss"
+ :end-placeholder="$t('reportmanage.endtime')">
+ </el-date-picker>
+ <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px;" @click="sethistorical()">{{$t('reportmanage.inquire')}}</el-button>
+ </div>
+ <el-table ref="table" style="margin-top: 20px;height: 580px;width: 1770px;" :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+ <el-table-column prop="rawGlassWidth" align="center" :label="$t('Mounting.width')" min-width="80" />
+ <el-table-column prop="rawGlassHeight" align="center" :label="$t('Mounting.height')" min-width="80" />
+ <el-table-column prop="rawGlassThickness" align="center" :label="$t('Mounting.thickness')" min-width="80" />
+ <el-table-column prop="slot" align="center" :label="$t('workOrder.upnumber')" min-width="80" />
+ <el-table-column prop="totalCount" align="center" :label="$t('basicData.tonumber')" min-width="80" />
+ <el-table-column prop="finishCount" align="center" :label="$t('basicData.finishnumber')" min-width="80" />
+ <el-table-column prop="damageCount" align="center" :label="$t('hellow.damagenumber')" min-width="80" />
+ <el-table-column
+ align="center"
+ :label="$t('film.taskstatus')"
+ min-width="80"
+ prop="taskState"
+ >
+ <template #default="scope">
+ <el-tag :type="getStatusTypeb(scope.row.taskState)">
+ {{ getStatusTextb(scope.row.taskState) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column
+ align="center"
+ :label="$t('sorter.taskRunning')"
+ min-width="80"
+ prop="taskRunning"
+ >
+ <template #default="scope">
+ <el-tag :type="getStatusTypea(scope.row.taskRunning)">
+ {{ getStatusTexta(scope.row.taskRunning) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createTime" align="center" :label="$t('reportmanage.starttime')" min-width="100" />
+ <el-table-column prop="updateTime" align="center" :label="$t('reportmanage.endtime')" min-width="100" />
+ </el-table>
+ <div style="margin-top: 20px;margin-left: 40%;">
+ <el-pagination
+ v-model:current-page="currentPage2"
+ :page-size="pageSize"
+ :size="large"
+ :disabled="disabled"
+ layout="prev, pager, next, jumper"
+ :total="totalRecords"
+ @current-change="handlePageChange2"
+ style="margin-top: 10px;"
+ />
+ </div>
+ </div>
+ </template>
+<script lang="ts" setup>
+import {useI18n} from 'vue-i18n'
+import {useRouter} from "vue-router"
+import request from "@/utils/request"
+import {host, WebSocketHost} from '@/utils/constants'
+import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
+import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
+import {ElMessage, ElMessageBox} from 'element-plus'
+const {t} = useI18n()
+let language = ref(localStorage.getItem('lang') || 'zh')
+import { inject } from 'vue';
+const globalDate = inject('globalDate');
+const router = useRouter()
+const timeRange = ref([])
+const taskStateList = reactive([]);
+const tableDatax = ref([])
+const currentPage2 = ref(1)
+const totalRecords = ref(0)
+const rawGlassHeight = ref('');
+const rawGlassThickness = ref('');
+const rawGlassWidth = ref('');
+const rawGlassfilmsId = ref('');
+const slot = ref('');
+let getglobalDate = window.localStorage.getItem('globalDate')
+const historical = async (page) => {
+ try {
+ let startTime = window.localStorage.getItem('startTime')
+ const response = await request.post("/loadGlass/loadglassdevicetaskhistory/queryLoadGlassHistoryTask", {
+ pageNo: 1,
+ pageSize: 20,
+ rawGlassHeight: '',
+ rawGlassThickness: '',
+ rawGlassWidth: '',
+ rawGlassfilmsId: '',
+ slot: '',
+ station: 1,
+ taskStateList: '',
+ beginDate: startTime,
+ endDate: getglobalDate
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDatax.value = response.data.records;
+ console.log(response.data.pages);
+ totalRecords.value = response.data.total/2 || 0
+ } else {
+ ElMessage.error(response.message);
+ }
+}
+catch (error) {
+ console.error(error);
+ }
+}
+const handlePageChange2 = (newPage) => {
+ currentPage2.value = newPage;
+ console.log(currentPage2.value);
+ window.localStorage.setItem('pagenumber', currentPage2.value)
+ historicala(currentPage2.value);
+};
+const historicala = async (page) => {
+ try {
+ let page = window.localStorage.getItem('pagenumber')
+ let startTime = window.localStorage.getItem('startTime')
+ const response = await request.post("/loadGlass/loadglassdevicetaskhistory/queryLoadGlassHistoryTask", {
+ pageNo: page,
+ pageSize: 20,
+ rawGlassHeight: '',
+ rawGlassThickness: '',
+ rawGlassWidth: '',
+ rawGlassfilmsId: '',
+ slot: '',
+ station: 1,
+ taskStateList: '',
+ beginDate: startTime,
+ endDate: getglobalDate
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDatax.value = response.data.records;
+ console.log(response.data.pages);
+
+ totalRecords.value = response.data.total/2 || 0
+ } else {
+ ElMessage.error(response.message);
+ }
+}
+catch (error) {
+ console.error(error);
+ }
+}
+// 鍘嗗彶鏌ヨ鐐瑰嚮
+const sethistorical = async () => {
+ try {
+ let startTime = window.localStorage.getItem('startTime')
+ let page = window.localStorage.getItem('pagenumber')
+ console.log(page);
+ const response = await request.post("/loadGlass/loadglassdevicetaskhistory/queryLoadGlassHistoryTask", {
+ pageNo: page,
+ pageSize: 20,
+ rawGlassHeight: rawGlassHeight.value,
+ rawGlassThickness: rawGlassThickness.value,
+ rawGlassWidth: rawGlassWidth.value,
+ rawGlassfilmsId: rawGlassfilmsId.value,
+ slot: slot.value,
+ station: 1,
+ taskStateList: '',
+ beginDate: (timeRange.value && timeRange.value[0]) || '',
+ endDate: (timeRange.value && timeRange.value[1]) || '',
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDatax.value = response.data.records;
+ } else {
+ ElMessage.error(response.message);
+ }
+}
+catch (error) {
+ console.error(error);
+ }
+}
+// 鏍煎紡鍖栨椂闂存埑涓哄勾鏈堟棩鏃堕棿瀛楃涓茬殑鍑芥暟
+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(getglobalDate);
+ const oneWeekAgo = new Date(backendTime.getTime() - 7 * 24 * 60 * 60 * 1000); // 鍑忓幓7澶�
+ console.log(formatTimestamp(oneWeekAgo));
+ console.log(oneWeekAgo);
+ timeRange.value = [formatTimestamp(oneWeekAgo), formatTimestamp(backendTime)];
+ window.localStorage.setItem('startTime', formatTimestamp(oneWeekAgo))
+}
+function getStatusTypeb(taskState: number) {
+ switch (taskState) {
+ case 0:
+ return 'primary';
+ case 1:
+ return 'success';
+ case 2:
+ return 'success';
+ }
+}
+function getStatusTextb(taskState: number) {
+ switch (taskState) {
+ case 0:
+ return t('searchOrder.empty');
+ case 1:
+ return t('film.execution');
+ case 2:
+ return t('searchOrder.endtask');
+ }
+}
+function getStatusTypea(taskRunning: number) {
+ switch (taskRunning) {
+ case 0:
+ return 'primary';
+ case 1:
+ return 'success';
+ }
+}
+function getStatusTexta(taskRunning: number) {
+ switch (taskRunning) {
+ case 0:
+ return t('basicData.untask');
+ case 1:
+ return t('basicData.up');
+ }
+}
+const optionsa = [
+ {
+ value: 0,
+ label: t('searchOrder.empty'),
+ },
+ {
+ value: 1,
+ label: t('film.execution'),
+ },
+ {
+ value: 2,
+ label: t('searchOrder.endtask'),
+ }
+]
+onMounted(() => {
+ parseAndSetTime();
+ historical(1);
+});
+ </script>
+ <style scoped>
+ </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Returns/upreturns.vue b/UI-Project/src/views/Returns/upreturns.vue
index 06d28ba..32b51cc 100644
--- a/UI-Project/src/views/Returns/upreturns.vue
+++ b/UI-Project/src/views/Returns/upreturns.vue
@@ -16,6 +16,7 @@
const blind = ref(false)
const blinda = ref(false)
const blindb = ref(false)
+const blindbd = ref(false)
const ReportData = ref(true);
const canSelectProjecta = ref(true);
const canSelectProjectb = ref(true);
@@ -28,6 +29,8 @@
const tableDatab = ref<any[]>([]);
const stationInfos = reactive({});
const buttonEnabledStatus = ref({});
+const globalDate = inject('globalDate');
+import { inject } from 'vue';
const tableData = ref([])
const titleSelectJson = ref({
engineerId: [],
@@ -422,6 +425,12 @@
} catch (error) {
}
};
+// 鍘嗗彶浠诲姟
+const iframeUrl = ref('');
+const handlehistorical = (row) => {
+ blindbd.value = true;
+ iframeUrl.value = `${window.location.origin}/#/Returns/upreturnhistory`;
+};
function getStatusType2(filmRemove) {
switch (filmRemove) {
case 0:
@@ -466,6 +475,7 @@
<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="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.oneloadingline')"
style="margin-top: 5px;margin-left: 20px;">
<el-option :label="$t('Mounting.all')" value="0"></el-option>
@@ -628,6 +638,17 @@
</div>
</template>
</el-dialog>
+ <!-- 鍘嗗彶浠诲姟 -->
+<el-dialog v-model="blindbd" top="10vh" width="90%">
+ <iframe
+ :src="iframeUrl"
+ marginwidth="2000px"
+ marginheight="2000px"
+ width="100%"
+ height="700px"
+ frameborder="0"
+ ></iframe>
+ </el-dialog>
</div>
</template>
<style scoped>
diff --git a/UI-Project/src/views/StockBasicData/stockBasicData.vue b/UI-Project/src/views/StockBasicData/stockBasicData.vue
index 8dc1f41..9f4b233 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicData.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -11,6 +11,7 @@
const {t} = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
const tableData = ref([])
+const blindb = ref(false)
const slot = ref('')
const requestData = {
line: 2001
@@ -107,6 +108,12 @@
const handleMessage = (data) => {
tableData.value = data.edgTasks[0]
};
+// 鍘嗗彶浠诲姟
+const iframeUrl = ref('');
+const handlehistorical = (row) => {
+ blindb.value = true;
+ iframeUrl.value = `${window.location.origin}/#/StockBasicData/stockhistory`;
+};
onMounted(() => {
socket = initializeWebSocket(socketUrl, handleMessage);
});
@@ -145,6 +152,10 @@
<div>
<el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
<div style="display: flex;">
+ <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handlehistorical">{{
+ $t('searchOrder.historicaltasks')
+ }}
+ </el-button>
<el-select v-model="selectValuesa[0]" filterable :placeholder="$t('workOrder.cway')" clearable
style="margin-left: 20px;margin-bottom: 10px;">
<el-option :label="$t('workOrder.edgingone')" value="930"></el-option>
@@ -200,6 +211,17 @@
</div>
</el-card>
</div>
+ <!-- 鍘嗗彶浠诲姟 -->
+<el-dialog v-model="blindb" top="10vh" width="90%">
+ <iframe
+ :src="iframeUrl"
+ marginwidth="2000px"
+ marginheight="2000px"
+ width="100%"
+ height="700px"
+ frameborder="0"
+ ></iframe>
+ </el-dialog>
</div>
</template>
<style scoped>
diff --git a/UI-Project/src/views/StockBasicData/stockhistory.vue b/UI-Project/src/views/StockBasicData/stockhistory.vue
new file mode 100644
index 0000000..7374591
--- /dev/null
+++ b/UI-Project/src/views/StockBasicData/stockhistory.vue
@@ -0,0 +1,276 @@
+<template>
+ <div>
+ <div style="display: flex;width: 1770px;">
+ <el-input v-model="glassId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 200px;" :placeholder="$t('searchOrder.inglassID')" />
+ <el-select
+ :placeholder="$t('searchOrder.taskstatus')"
+ clearable
+ style="width: 270px;margin-left: 10px;"
+ v-model="taskState">
+ <el-option
+ v-for="item in optionsa"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ <el-select
+ :placeholder="$t('film.enabletype')"
+ clearable
+ style="width: 270px;margin-left: 10px;"
+ v-model="taskType">
+ <el-option
+ v-for="item in optionsb"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ <el-date-picker v-model="timeRange" type="datetimerange" range-separator="鑷�" :start-placeholder="$t('reportmanage.starttime')"
+ style="margin-left: 15px;" value-format = "YYYY-MM-DD hh:mm:ss"
+ :end-placeholder="$t('reportmanage.endtime')">
+ </el-date-picker>
+ <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px;" @click="sethistorical()">{{$t('reportmanage.inquire')}}</el-button>
+ </div>
+ <el-table ref="table" style="margin-top: 20px;height: 580px;width: 1770px;" :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+ <el-table-column prop="glassIdIn" align="center" :label="$t('searchOrder.glassID')" min-width="80" />
+ <el-table-column
+ align="center"
+ :label="$t('film.taskstatus')"
+ min-width="80"
+ prop="taskState"
+ >
+ <template #default="scope">
+ <el-tag :type="getStatusTypeb(scope.row.taskState)">
+ {{ getStatusTextb(scope.row.taskState) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column
+ align="center"
+ :label="$t('film.enabletype')"
+ min-width="80"
+ prop="taskType"
+ >
+ <template #default="scope">
+ <el-tag :type="getStatusTypea(scope.row.taskType)">
+ {{ getStatusTexta(scope.row.taskType) }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createTime" align="center" :label="$t('reportmanage.starttime')" min-width="100" />
+ <el-table-column prop="updateTime" align="center" :label="$t('reportmanage.endtime')" min-width="100" />
+ </el-table>
+ <div style="margin-top: 20px;margin-left: 40%;">
+ <el-pagination
+ v-model:current-page="currentPage2"
+ :page-size="pageSize"
+ :size="large"
+ :disabled="disabled"
+ layout="prev, pager, next, jumper"
+ :total="totalRecords"
+ @current-change="handlePageChange2"
+ style="margin-top: 10px;"
+ />
+ </div>
+ </div>
+ </template>
+<script lang="ts" setup>
+import {useI18n} from 'vue-i18n'
+import {useRouter} from "vue-router"
+import request from "@/utils/request"
+import {host, WebSocketHost} from '@/utils/constants'
+import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
+import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
+import {ElMessage, ElMessageBox} from 'element-plus'
+const {t} = useI18n()
+let language = ref(localStorage.getItem('lang') || 'zh')
+import { inject } from 'vue';
+const globalDate = inject('globalDate');
+const router = useRouter()
+const timeRange = ref([])
+const selectValuesa = reactive([]);
+const tableDatax = ref([])
+const currentPage2 = ref(1)
+const totalRecords = ref(0)
+const glassId = ref('');
+const startSlot = ref('');
+const targetSlot = ref('');
+const taskState = ref('');
+const taskType = ref('');
+let getglobalDate = window.localStorage.getItem('getglobalDate')
+const historical = async (page) => {
+ try {
+ let startTime = window.localStorage.getItem('startTime')
+ const response = await request.post("/cacheGlass/edgStorageDeviceTaskHistory", {
+ deviceId: 2,
+ pageNo: 1,
+ pageSize: 20,
+ glassId: glassId.value,
+ taskState: '',
+ taskType: '',
+ startTime: startTime,
+ endTime: getglobalDate
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDatax.value = response.data.records;
+ console.log(response.data.pages);
+ totalRecords.value = response.data.total/2 || 0
+ } else {
+ ElMessage.error(response.message);
+ }
+}
+catch (error) {
+ console.error(error);
+ }
+}
+const handlePageChange2 = (newPage) => {
+ currentPage2.value = newPage;
+ console.log(currentPage2.value);
+ window.localStorage.setItem('pagenumber', currentPage2.value)
+ historicala(currentPage2.value);
+};
+const historicala = async (page) => {
+ try {
+ let page = window.localStorage.getItem('pagenumber')
+ let startTime = window.localStorage.getItem('startTime')
+ const response = await request.post("/cacheGlass/edgStorageDeviceTaskHistory", {
+ deviceId: 2,
+ pageNo: page,
+ pageSize: 20,
+ glassId: glassId.value,
+ taskState: '',
+ taskType: '',
+ startTime: startTime,
+ endTime: getglobalDate
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDatax.value = response.data.records;
+ console.log(response.data.pages);
+
+ totalRecords.value = response.data.total/2 || 0
+ } else {
+ ElMessage.error(response.message);
+ }
+}
+catch (error) {
+ console.error(error);
+ }
+}
+// 鍘嗗彶鏌ヨ鐐瑰嚮
+const sethistorical = async () => {
+ try {
+ let startTime = window.localStorage.getItem('startTime')
+ let page = window.localStorage.getItem('pagenumber')
+ console.log(page);
+ const response = await request.post("/cacheGlass/edgStorageDeviceTaskHistory", {
+ deviceId: 2,
+ pageNo: page,
+ pageSize: 20,
+ glassId: glassId.value,
+ taskState: taskState.value,
+ taskType: taskType.value,
+ startTime: (timeRange.value && timeRange.value[0]) || '',
+ endTime: (timeRange.value && timeRange.value[1]) || '',
+ })
+ if (response.code == 200) {
+ ElMessage.success(response.message);
+ tableDatax.value = response.data.records;
+ } else {
+ ElMessage.error(response.message);
+ }
+}
+catch (error) {
+ console.error(error);
+ }
+}
+// 鏍煎紡鍖栨椂闂存埑涓哄勾鏈堟棩鏃堕棿瀛楃涓茬殑鍑芥暟
+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(getglobalDate);
+ const oneWeekAgo = new Date(backendTime.getTime() - 7 * 24 * 60 * 60 * 1000); // 鍑忓幓7澶�
+ console.log(formatTimestamp(oneWeekAgo));
+ console.log(oneWeekAgo);
+ timeRange.value = [formatTimestamp(oneWeekAgo), formatTimestamp(backendTime)];
+ window.localStorage.setItem('startTime', formatTimestamp(oneWeekAgo))
+}
+function getStatusTypeb(taskState: number) {
+ switch (taskState) {
+ case 0:
+ return 'primary';
+ case 1:
+ return 'success';
+ }
+}
+function getStatusTextb(taskState: number) {
+ switch (taskState) {
+ case 0:
+ return t('searchOrder.empty');
+ case 1:
+ return t('searchOrder.endtask');
+ }
+}
+function getStatusTypea(taskType: number) {
+ switch (taskType) {
+ case 1:
+ return 'primary';
+ case 2:
+ return 'success';
+ case 3:
+ return 'warning';
+ }
+}
+function getStatusTexta(taskType: number) {
+ switch (taskType) {
+ case 1:
+ return t('sorter.advancetask');
+ case 2:
+ return t('sorter.outputtasks');
+ case 3:
+ return t('sorter.straighttasks');
+ }
+}
+const optionsa = [
+ {
+ value: 0,
+ label: t('searchOrder.empty'),
+ },
+ {
+ value: 1,
+ label: t('searchOrder.endtask'),
+ }
+]
+const optionsb = [
+ {
+ value: 1,
+ label: t('sorter.advancetask'),
+ },
+ {
+ value: 2,
+ label: t('sorter.outputtasks'),
+ },
+ {
+ value: 3,
+ label: t('sorter.straighttasks'),
+ }
+]
+onMounted(() => {
+ parseAndSetTime();
+ historical(1);
+});
+ </script>
+ <style scoped>
+ </style>
\ No newline at end of file
--
Gitblit v1.8.0