破损接口更改后端传参格式,上片机、卧式缓存删除废弃页面,卧式缓存新增一线二线页面及接口,大理片笼破损接口
| | |
| | | "vue": "^3.3.4", |
| | | "vue-draggable-plus": "^0.5.0", |
| | | "vue-echarts": "^6.7.3", |
| | | "vue-i18n": "^9.10.1", |
| | | "vue-i18n": "^11.0.0-rc.1", |
| | | "vue-print-nb": "^1.7.5", |
| | | "vue-router": "^4.0.13", |
| | | "vue3-print-nb": "^0.1.4", |
| | |
| | | "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" |
| | | }, |
| | | "node_modules/@intlify/core-base": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz", |
| | | "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-fnfZoa9pb1dKM3L1UkDUGLLrPFQ2BK98x4/fMqwS/fktUor34vQR/itPtfv652ZTplenXXLCEYjUYTGfDZgMTQ==", |
| | | "dependencies": { |
| | | "@intlify/message-compiler": "9.13.1", |
| | | "@intlify/shared": "9.13.1" |
| | | "@intlify/message-compiler": "11.0.0-rc.1", |
| | | "@intlify/shared": "11.0.0-rc.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 16" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/kazupon" |
| | | } |
| | | }, |
| | | "node_modules/@intlify/message-compiler": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", |
| | | "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-TGw2uBfuTFTegZf/BHtUQBEKxl7Q/dVGLoqRIdw8lFsp9g/53sYn5iD+0HxIzdYjbWL6BTJMXCPUHp9PxDTRPw==", |
| | | "dependencies": { |
| | | "@intlify/shared": "9.13.1", |
| | | "@intlify/shared": "11.0.0-rc.1", |
| | | "source-map-js": "^1.0.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 16" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/kazupon" |
| | | } |
| | | }, |
| | | "node_modules/@intlify/shared": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz", |
| | | "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-8tR1xe7ZEbkabTuE/tNhzpolygUn9OaYp9yuYAF4MgDNZg06C3Qny80bes2/e9/Wm3aVkPUlCw6WgU7mQd0yEg==", |
| | | "engines": { |
| | | "node": ">= 16" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/kazupon" |
| | | } |
| | | }, |
| | | "node_modules/@jridgewell/sourcemap-codec": { |
| | |
| | | } |
| | | }, |
| | | "node_modules/vue-i18n": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz", |
| | | "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-qbdCbA537HEdr2yXQ4ec/OMDsoHjod1DwnWbrf+l4Cu/O7CYTCKsOyITUm3RmrCJgRnoVycuR6i/JWdNTJvD5g==", |
| | | "dependencies": { |
| | | "@intlify/core-base": "9.13.1", |
| | | "@intlify/shared": "9.13.1", |
| | | "@intlify/core-base": "11.0.0-rc.1", |
| | | "@intlify/shared": "11.0.0-rc.1", |
| | | "@vue/devtools-api": "^6.5.0" |
| | | }, |
| | | "engines": { |
| | |
| | | "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" |
| | | }, |
| | | "@intlify/core-base": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz", |
| | | "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-fnfZoa9pb1dKM3L1UkDUGLLrPFQ2BK98x4/fMqwS/fktUor34vQR/itPtfv652ZTplenXXLCEYjUYTGfDZgMTQ==", |
| | | "requires": { |
| | | "@intlify/message-compiler": "9.13.1", |
| | | "@intlify/shared": "9.13.1" |
| | | "@intlify/message-compiler": "11.0.0-rc.1", |
| | | "@intlify/shared": "11.0.0-rc.1" |
| | | } |
| | | }, |
| | | "@intlify/message-compiler": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", |
| | | "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-TGw2uBfuTFTegZf/BHtUQBEKxl7Q/dVGLoqRIdw8lFsp9g/53sYn5iD+0HxIzdYjbWL6BTJMXCPUHp9PxDTRPw==", |
| | | "requires": { |
| | | "@intlify/shared": "9.13.1", |
| | | "@intlify/shared": "11.0.0-rc.1", |
| | | "source-map-js": "^1.0.2" |
| | | } |
| | | }, |
| | | "@intlify/shared": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz", |
| | | "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==" |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-8tR1xe7ZEbkabTuE/tNhzpolygUn9OaYp9yuYAF4MgDNZg06C3Qny80bes2/e9/Wm3aVkPUlCw6WgU7mQd0yEg==" |
| | | }, |
| | | "@jridgewell/sourcemap-codec": { |
| | | "version": "1.4.15", |
| | |
| | | "@vitejs/plugin-vue": "^4.6.2", |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.6.8", |
| | | "babel-polyfill": "*", |
| | | "babel-polyfill": "^6.26.0", |
| | | "chart.js": "^4.4.3", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.4.0", |
| | |
| | | "vue": "^3.3.4", |
| | | "vue-draggable-plus": "^0.5.0", |
| | | "vue-echarts": "^6.7.3", |
| | | "vue-i18n": "^9.10.1", |
| | | "vue-i18n": "11.0.0-rc.1", |
| | | "vue-print-nb": "^1.7.5", |
| | | "vue-router": "^4.0.13", |
| | | "vue3-print-nb": "^0.1.4", |
| | |
| | | "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" |
| | | }, |
| | | "@intlify/core-base": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz", |
| | | "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-fnfZoa9pb1dKM3L1UkDUGLLrPFQ2BK98x4/fMqwS/fktUor34vQR/itPtfv652ZTplenXXLCEYjUYTGfDZgMTQ==", |
| | | "requires": { |
| | | "@intlify/message-compiler": "9.13.1", |
| | | "@intlify/shared": "9.13.1" |
| | | "@intlify/message-compiler": "11.0.0-rc.1", |
| | | "@intlify/shared": "11.0.0-rc.1" |
| | | } |
| | | }, |
| | | "@intlify/message-compiler": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", |
| | | "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-TGw2uBfuTFTegZf/BHtUQBEKxl7Q/dVGLoqRIdw8lFsp9g/53sYn5iD+0HxIzdYjbWL6BTJMXCPUHp9PxDTRPw==", |
| | | "requires": { |
| | | "@intlify/shared": "9.13.1", |
| | | "@intlify/shared": "11.0.0-rc.1", |
| | | "source-map-js": "^1.0.2" |
| | | } |
| | | }, |
| | | "@intlify/shared": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz", |
| | | "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==" |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-8tR1xe7ZEbkabTuE/tNhzpolygUn9OaYp9yuYAF4MgDNZg06C3Qny80bes2/e9/Wm3aVkPUlCw6WgU7mQd0yEg==" |
| | | }, |
| | | "@jridgewell/sourcemap-codec": { |
| | | "version": "1.4.15", |
| | |
| | | } |
| | | }, |
| | | "vue-i18n": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz", |
| | | "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-qbdCbA537HEdr2yXQ4ec/OMDsoHjod1DwnWbrf+l4Cu/O7CYTCKsOyITUm3RmrCJgRnoVycuR6i/JWdNTJvD5g==", |
| | | "requires": { |
| | | "@intlify/core-base": "9.13.1", |
| | | "@intlify/shared": "9.13.1", |
| | | "@intlify/core-base": "11.0.0-rc.1", |
| | | "@intlify/shared": "11.0.0-rc.1", |
| | | "@vue/devtools-api": "^6.5.0" |
| | | } |
| | | }, |
| | |
| | | } |
| | | }, |
| | | "vue-i18n": { |
| | | "version": "9.13.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz", |
| | | "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==", |
| | | "version": "11.0.0-rc.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-11.0.0-rc.1.tgz", |
| | | "integrity": "sha512-qbdCbA537HEdr2yXQ4ec/OMDsoHjod1DwnWbrf+l4Cu/O7CYTCKsOyITUm3RmrCJgRnoVycuR6i/JWdNTJvD5g==", |
| | | "requires": { |
| | | "@intlify/core-base": "9.13.1", |
| | | "@intlify/shared": "9.13.1", |
| | | "@intlify/core-base": "11.0.0-rc.1", |
| | | "@intlify/shared": "11.0.0-rc.1", |
| | | "@vue/devtools-api": "^6.5.0" |
| | | } |
| | | }, |
| | |
| | | "vue": "^3.3.4", |
| | | "vue-draggable-plus": "^0.5.0", |
| | | "vue-echarts": "^6.7.3", |
| | | "vue-i18n": "^9.10.1", |
| | | "vue-i18n": "^11.0.0-rc.1", |
| | | "vue-print-nb": "^1.7.5", |
| | | "vue-router": "^4.0.13", |
| | | "vue3-print-nb": "^0.1.4", |
| | |
| | | layoutSequence:'Serial Number', |
| | | }, |
| | | sorter:{ |
| | | inPlace:'到位', |
| | | ninPlace:'未到位', |
| | | emptymissions:'空任务', |
| | | advancetask:'进片任务', |
| | | outputtasks:'出片任务', |
| | | straighttasks:'直通任务', |
| | | endingtask:'结束', |
| | | another:'其他', |
| | | taskRunning:'任务请求', |
| | | updateTime:'更新时间', |
| | | id:'磨边前理片笼表ID', |
| | | remainWidth:'剩余', |
| | | place:'是否到位', |
| | | layernow:'当前层号', |
| | | gridnumber:'Grid number', |
| | | glassnumber:'Glass number', |
| | | width:'Width', |
| | |
| | | layoutSequence:'Серийн номер', |
| | | }, |
| | | sorter: { |
| | | inPlace:'到位', |
| | | ninPlace:'未到位', |
| | | emptymissions:'空任务', |
| | | advancetask:'进片任务', |
| | | outputtasks:'出片任务', |
| | | straighttasks:'直通任务', |
| | | endingtask:'结束', |
| | | another:'其他', |
| | | taskRunning:'任务请求', |
| | | remainWidth:'剩余', |
| | | id:'磨边前理片笼表ID', |
| | | updateTime:'更新时间', |
| | | place:'是否到位', |
| | | layernow:'当前层号', |
| | | gridnumber: 'Ячеек сеткла', |
| | | glassnumber: 'Номер стакла', |
| | | width: 'Ширина', |
| | |
| | | layoutSequence:'序号', |
| | | }, |
| | | sorter:{ |
| | | inPlace:'到位', |
| | | ninPlace:'未到位', |
| | | emptymissions:'空任务', |
| | | advancetask:'进片任务', |
| | | outputtasks:'出片任务', |
| | | straighttasks:'直通任务', |
| | | endingtask:'结束', |
| | | another:'其他', |
| | | id:'磨边前理片笼表ID', |
| | | remainWidth:'剩余', |
| | | taskRunning:'任务请求', |
| | | updateTime:'更新时间', |
| | | place:'是否到位', |
| | | layernow:'当前层号', |
| | | gridnumber:'栅格号', |
| | | glassnumber:'玻璃编号', |
| | | width:'宽', |
| | |
| | | component: () => import('../views/Returns/return.vue'), |
| | | children:[ |
| | | { |
| | | path: '/Returns/returns', |
| | | name: 'returns', |
| | | component: () => import('../views/Returns/returns.vue') |
| | | }, |
| | | { |
| | | path: '/Returns/upreturns', |
| | | name: 'upreturns', |
| | | component: () => import('../views/Returns/upreturns.vue') |
| | |
| | | path: '/Caching/cachingun', |
| | | name: 'cachingun', |
| | | component: () => import('../views/Caching/cachingun.vue') |
| | | }, |
| | | { |
| | | path: '/Caching/cachingyiwu', |
| | | name: 'cachingyiwu', |
| | | component: () => import('../views/Caching/cachingyiwu.vue') |
| | | }, |
| | | ] |
| | | }, |
| | |
| | | import {useI18n} from 'vue-i18n' |
| | | const {t} = useI18n() |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const tableData = ref([]) |
| | | const slot = ref('') |
| | | const tableDataa = ref([]) |
| | | const tableDatab = ref([]) |
| | | const adjustedRects = ref([]); |
| | | onMounted(async () => { |
| | | try { |
| | | const response = await request.post('/cacheGlass/edgStorageCage/selectEdgStorageCage'); |
| | | if (response.code === 200) { |
| | | const rawRects = response.data; |
| | | tableData.value = response.data |
| | | adjustedRects.value = rawRects.map(rect => ({ |
| | | ...rect, |
| | | width: rect.width * 0.5 , |
| | | id: rect.id * 10, |
| | | })); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | } catch (error) { |
| | | // console.error('Error fetching rects :', error); |
| | | } |
| | | }); |
| | | const toggleEnableState = async (row) => { |
| | | const newState = row.enable_state === 1 ? 0 : 1; |
| | | const response = await request.post('/cacheGlass/edgStorageCage/updateEdgStorageCage', { id: row.id, enableState: newState }); |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | ElMessage.error(response.message); |
| | | } |
| | | row.enable_state = newState; |
| | | }; |
| | | const open = async(row) => { |
| | | try { |
| | | const confirmResult = await ElMessageBox.confirm( |
| | | t('sorter.information'), |
| | | t('sorter.prompt'), |
| | | { |
| | | confirmButtonText: t('sorter.yes'), |
| | | cancelButtonText: t('sorter.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | var url="/cacheGlass/edgStorageCage/edgStorageCageGlass?edgStorageCageId="+row.id; |
| | | const response = await request.post(url, { |
| | | glassId:row.glass_id |
| | | }) |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | ElMessage.error(response.msg); |
| | | } |
| | | } |
| | | } catch (error) { |
| | | console.error('发生错误:', error); |
| | | } |
| | | }; |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassOne`; |
| | | const handleMessage = (data) => { |
| | | tableData.value = data.EdgStorageCageinfos[0] |
| | | adjustedRects.value = data.EdgStorageCageinfos[0].map(rect => ({ |
| | | ...rect, |
| | | width: rect.width * 0.5 , |
| | | id: rect.id * 10, |
| | | })); |
| | | const cageInfo = data.taskMessage[0]; |
| | | if (cageInfo && cageInfo.createTime) { |
| | | cageInfo.formattedCreateTime = formatTimestamp(cageInfo.createTime); |
| | | } |
| | | if (cageInfo && cageInfo.updateTime) { |
| | | cageInfo.formattedupdateTime = formatTimestamp(cageInfo.updateTime); |
| | | } |
| | | tableDataa.value = data.EdgStorageCageinfos[0] |
| | | tableDatab.value = data.taskMessage |
| | | // adjustedRects.value = data.EdgStorageCageinfos[0].map(rect => ({ |
| | | // ...rect, |
| | | // width: rect.width * 0.5 , |
| | | // id: rect.id * 10, |
| | | // })); |
| | | }; |
| | | // 初始化 WebSocket,并传递消息处理函数 |
| | | onMounted(() => { |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | }); |
| | | function getStatusTypea(taskRunning) { |
| | | switch (taskRunning) { |
| | | case 0: |
| | | return 'info'; |
| | | case 1: |
| | | return 'success'; |
| | | case 2: |
| | | return 'success'; |
| | | case 3: |
| | | return 'success'; |
| | | case 4: |
| | | return 'success'; |
| | | case 5: |
| | | return 'danger'; |
| | | case 6: |
| | | return 'info'; |
| | | } |
| | | } |
| | | function getStatusTexta(taskRunning) { |
| | | switch (taskRunning) { |
| | | case 0: |
| | | return t('sorter.emptymissions'); |
| | | case 1: |
| | | return t('sorter.advancetask'); |
| | | case 2: |
| | | return t('sorter.outputtasks'); |
| | | case 3: |
| | | return t('sorter.straighttasks'); |
| | | case 4: |
| | | return t('searchOrder.infilm'); |
| | | case 5: |
| | | return t('sorter.endingtask'); |
| | | case 6: |
| | | return t('sorter.another'); |
| | | } |
| | | } |
| | | function getStatusTypeb(taskState) { |
| | | switch (taskState) { |
| | | case 0: |
| | | return 'info'; |
| | | case 1: |
| | | return 'success'; |
| | | case 2: |
| | | return 'success'; |
| | | case 3: |
| | | return 'success'; |
| | | case 4: |
| | | return 'success'; |
| | | case 5: |
| | | return 'danger'; |
| | | case 6: |
| | | return 'info'; |
| | | } |
| | | } |
| | | function getStatusTextb(taskState) { |
| | | switch (taskState) { |
| | | case 0: |
| | | return t('sorter.emptymissions'); |
| | | case 1: |
| | | return t('sorter.advancetask'); |
| | | case 2: |
| | | return t('sorter.outputtasks'); |
| | | case 3: |
| | | return t('sorter.straighttasks'); |
| | | case 4: |
| | | return t('searchOrder.infilm'); |
| | | case 5: |
| | | return t('sorter.endingtask'); |
| | | case 6: |
| | | 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'); // 补零(如果需要显示时间) |
| | | // 只显示年月日,如果需要显示时间,则拼接 hours + ':' + minutes + ':' + seconds |
| | | return `${year}-${month}-${day}`; |
| | | } |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | | closeWebSocket(socket); |
| | |
| | | <div style="height: 500px;"> |
| | | <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> |
| | | <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> |
| | | <el-table height="340" ref="table" |
| | | <el-table height="300" ref="table" |
| | | @selection-change="handleSelectionChange" |
| | | :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="id" align="center" :label="$t('sorter.id')" min-width="80" /> |
| | | <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="80" /> |
| | | <el-table-column prop="slot" align="center" :label="$t('sorter.gridnumber')" min-width="80" /> |
| | | <el-table-column prop="glass_id" align="center" :label="$t('sorter.glassnumber')" min-width="80" /> |
| | | <el-table-column prop="width" align="center" :label="$t('sorter.width')" min-width="120" /> |
| | | <el-table-column prop="height" align="center" :label="$t('sorter.height')" min-width="120" /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('sorter.startstatus')" |
| | | min-width="80" |
| | | prop="enable_state" |
| | | prop="enableState" |
| | | > |
| | | <template #default="scope"> |
| | | <el-tag |
| | | :type="scope.row.enableState === 1 ? 'success' : 'warning'" |
| | | > |
| | | {{ scope.row.enableState === 1 ? $t('sorter.start') : $t('sorter.disable') }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remainWidth" align="center" :label="$t('sorter.remainWidth')" min-width="80" /> |
| | | </el-table> |
| | | </div> |
| | | <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;margin-top: 15px;"> |
| | | <el-table height="90" ref="table" |
| | | @selection-change="handleSelectionChange" |
| | | :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="glassIdOut" align="center" :label="$t('searchOrder.outputglassID')" min-width="80" /> |
| | | <el-table-column prop="currentCell" align="center" :label="$t('sorter.layernow')" min-width="80" /> |
| | | <el-table-column prop="startCell" align="center" :label="$t('processCard.layer')" min-width="120" /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('sorter.place')" |
| | | min-width="80" |
| | | prop="inPlace" |
| | | > |
| | | <template #default="scope"> |
| | | <el-tag |
| | | :type="scope.row.inPlace === 1 ? 'success' : 'warning'" |
| | | > |
| | | {{ scope.row.inPlace === 1 ? $t('sorter.inPlace') : $t('sorter.ninPlace') }} |
| | | </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="scope.row.enable_state === 1 ? 'success' : 'danger'" |
| | | @click="toggleEnableState(scope.row)" |
| | | > |
| | | {{ scope.row.enable_state === 1 ? $t('sorter.start') : $t('sorter.disable') }} |
| | | </el-tag> |
| | | </template> |
| | | <el-tag :type="getStatusTypea(scope.row.taskRunning)"> |
| | | {{ getStatusTexta(scope.row.taskRunning) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" :label="$t('sorter.operate')" align="center" width="200"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('sorter.deficiencieste') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <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 prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="120" /> |
| | | <el-table-column prop="formattedupdateTime" align="center" :label="$t('sorter.updateTime')" min-width="120" /> |
| | | </el-table> |
| | | </div> |
| | | </el-card> |
| | | <div class="awatch"> |
| | | <img src="../../assets/woshihuancun.png" alt="" style="width: 70%;height: 90%;margin-left: 200px;margin-top: 20px;position: relative;"> |
| | | <img src="../../assets/woshihuancun.png" alt="" style="width: 50%;height: 70%;margin-left: 30%;margin-top: 20px;position: relative;"> |
| | | <div style="position: relative; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRects" |
| | | v-for="(rect, index) in adjustedRects" |
| | | :key="rect" |
| | | :style="{ position: 'absolute', |
| | | top: `${rect.id}px`, left: `10px`, width: `${rect.width}px`, height: `5px`, |
| | |
| | | <template> |
| | | <div style="height: 500px;"> |
| | | <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> |
| | | <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> |
| | | <el-table height="340" ref="table" @selection-change="handleSelectionChange" :data="tableData" |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"> |
| | | <el-table-column prop="slot" align="center" :label="$t('sorter.gridnumber')" min-width="80" /> |
| | | <el-table-column prop="glass_id" align="center" :label="$t('sorter.glassnumber')" min-width="80" /> |
| | | <el-table-column prop="width" align="center" :label="$t('sorter.width')" min-width="120" /> |
| | | <el-table-column prop="height" align="center" :label="$t('sorter.height')" min-width="120" /> |
| | | <el-table-column align="center" :label="$t('sorter.startstatus')" min-width="80" prop="enable_state"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.enable_state === 1 ? 'success' : 'danger'" @click="toggleEnableState(scope.row)"> |
| | | {{ scope.row.enable_state === 1 ? $t('sorter.start') : $t('sorter.disable') }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" :label="$t('sorter.operate')" align="center" width="200"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('sorter.deficiencieste') |
| | | }}</el-button> |
| | | <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('sorter.updown') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </el-card> |
| | | <div class="awatch"> |
| | | <img src="../../assets/woshihuancun.png" alt="" |
| | | style="width: 70%;height: 90%;margin-left: 200px;margin-top: 20px;position: relative;"> |
| | | <div style="position: relative; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;"> |
| | | <div v-for="(rect, index) in adjustedRects" :key="rect" :style="{ |
| | | position: 'absolute', |
| | | top: `${rect.id}px`, left: `10px`, width: `${rect.width}px`, height: `5px`, |
| | | backgroundColor: '#409EFF' |
| | | }"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { Search, Lock, Avatar } from "@element-plus/icons-vue"; |
| | | import { reactive } from "vue"; |
| | | import { useRouter } from "vue-router" |
| | | const router = useRouter() |
| | | import { WebSocketHost, host } from '@/utils/constants' |
| | | import {onBeforeUnmount, onMounted, onUnmounted, ref} from "vue"; |
| | | import {useRouter} from "vue-router" |
| | | import {host, WebSocketHost} from '@/utils/constants' |
| | | import request from "@/utils/request" |
| | | import { ref, onMounted, onBeforeUnmount, onUnmounted } from "vue"; |
| | | import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import { useI18n } from 'vue-i18n' |
| | | const { t } = useI18n() |
| | | const tableData = reactive([]); |
| | | const slot = ref('') |
| | | import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; |
| | | import {ElMessage, ElMessageBox} from 'element-plus' |
| | | import {useI18n} from 'vue-i18n' |
| | | const {t} = useI18n() |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const tableDataa = ref([]) |
| | | const tableDatab = ref([]) |
| | | const adjustedRects = ref([]); |
| | | onMounted(async () => { |
| | | try { |
| | | const response = await request.get('/unLoadGlass/downStorage/selectStorageCage'); |
| | | if (response.code === 200) { |
| | | const rawRects = response.data; |
| | | tableData.value = response.data |
| | | console.log(response.data); |
| | | adjustedRects.value = rawRects.map(rect => ({ |
| | | ...rect, |
| | | width: rect.width * 0.5, |
| | | id: rect.id * 10, |
| | | })); |
| | | console.log(adjustedRects.value); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | } catch (error) { |
| | | // console.error('Error fetching rects :', error); |
| | | } |
| | | }); |
| | | const open = async (row) => { |
| | | try { |
| | | const confirmResult = await ElMessageBox.confirm( |
| | | t('sorter.information'), |
| | | t('sorter.prompt'), |
| | | { |
| | | confirmButtonText: t('sorter.yes'), |
| | | cancelButtonText: t('sorter.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | var url = "/unLoadGlass/downStorage/deleteDownStorageCage"; |
| | | console.log(url); |
| | | const response = await request.post(url, { |
| | | glassId: row.glass_id, |
| | | state: 9, |
| | | line: 1001, |
| | | workingProcedure: '磨边', |
| | | }) |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | ElMessage.error(response.message); |
| | | } |
| | | } |
| | | } |
| | | catch (error) { |
| | | console.error('发生错误:', error); |
| | | } |
| | | }; |
| | | // 人工下片 |
| | | const opena = async (row) => { |
| | | try { |
| | | const confirmResult = await ElMessageBox.confirm( |
| | | t('sorter.infor'), |
| | | t('sorter.prompt'), |
| | | { |
| | | confirmButtonText: t('sorter.yes'), |
| | | cancelButtonText: t('sorter.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | const response = await request.post("/unLoadGlass/downGlassTask/generateOutGlassTask", { |
| | | glassId: row.glass_id |
| | | }) |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | ElMessage.error(response.message); |
| | | } |
| | | } |
| | | } |
| | | catch (error) { |
| | | console.error('发生错误:', error); |
| | | } |
| | | }; |
| | | const toggleEnableState = async (row) => { |
| | | const newState = row.enable_state === 1 ? 0 : 1; |
| | | const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enableState: newState }); |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | ElMessage.error(response.message); |
| | | } |
| | | row.enable_state = newState; |
| | | }; |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/downcache`; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassTwo`; |
| | | const handleMessage = (data) => { |
| | | tableData.splice(0, tableData.length, ...data.params2[0]); |
| | | adjustedRects.value = data.params2[0].map(rect => ({ |
| | | ...rect, |
| | | width: rect.width * 0.5, |
| | | id: rect.id * 10, |
| | | })); |
| | | const cageInfo = data.taskMessage[0]; |
| | | if (cageInfo && cageInfo.createTime) { |
| | | cageInfo.formattedCreateTime = formatTimestamp(cageInfo.createTime); |
| | | } |
| | | if (cageInfo && cageInfo.updateTime) { |
| | | cageInfo.formattedupdateTime = formatTimestamp(cageInfo.updateTime); |
| | | } |
| | | tableDataa.value = data.EdgStorageCageinfos[0] |
| | | tableDatab.value = data.taskMessage |
| | | // adjustedRects.value = data.EdgStorageCageinfos[0].map(rect => ({ |
| | | // ...rect, |
| | | // width: rect.width * 0.5 , |
| | | // id: rect.id * 10, |
| | | // })); |
| | | }; |
| | | // 初始化 WebSocket,并传递消息处理函数 |
| | | onMounted(() => { |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | }); |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | | closeWebSocket(socket); |
| | | function getStatusTypea(taskRunning) { |
| | | switch (taskRunning) { |
| | | case 0: |
| | | return 'info'; |
| | | case 1: |
| | | return 'success'; |
| | | case 2: |
| | | return 'success'; |
| | | case 3: |
| | | return 'success'; |
| | | case 4: |
| | | return 'success'; |
| | | case 5: |
| | | return 'danger'; |
| | | case 6: |
| | | return 'info'; |
| | | } |
| | | }); |
| | | } |
| | | function getStatusTexta(taskRunning) { |
| | | switch (taskRunning) { |
| | | case 0: |
| | | return t('sorter.emptymissions'); |
| | | case 1: |
| | | return t('sorter.advancetask'); |
| | | case 2: |
| | | return t('sorter.outputtasks'); |
| | | case 3: |
| | | return t('sorter.straighttasks'); |
| | | case 4: |
| | | return t('searchOrder.infilm'); |
| | | case 5: |
| | | return t('sorter.endingtask'); |
| | | case 6: |
| | | return t('sorter.another'); |
| | | } |
| | | } |
| | | function getStatusTypeb(taskState) { |
| | | switch (taskState) { |
| | | case 0: |
| | | return 'info'; |
| | | case 1: |
| | | return 'success'; |
| | | case 2: |
| | | return 'success'; |
| | | case 3: |
| | | return 'success'; |
| | | case 4: |
| | | return 'success'; |
| | | case 5: |
| | | return 'danger'; |
| | | case 6: |
| | | return 'info'; |
| | | } |
| | | } |
| | | function getStatusTextb(taskState) { |
| | | switch (taskState) { |
| | | case 0: |
| | | return t('sorter.emptymissions'); |
| | | case 1: |
| | | return t('sorter.advancetask'); |
| | | case 2: |
| | | return t('sorter.outputtasks'); |
| | | case 3: |
| | | return t('sorter.straighttasks'); |
| | | case 4: |
| | | return t('searchOrder.infilm'); |
| | | case 5: |
| | | return t('sorter.endingtask'); |
| | | case 6: |
| | | 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'); // 补零(如果需要显示时间) |
| | | // 只显示年月日,如果需要显示时间,则拼接 hours + ':' + minutes + ':' + seconds |
| | | return `${year}-${month}-${day}`; |
| | | } |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | | closeWebSocket(socket); |
| | | } |
| | | }); |
| | | onBeforeUnmount(() => { |
| | | console.log("关闭了") |
| | | closeWebSocket(); |
| | | }); |
| | | </script> |
| | | <template> |
| | | <div style="height: 500px;"> |
| | | <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> |
| | | <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> |
| | | <el-table height="300" ref="table" |
| | | @selection-change="handleSelectionChange" |
| | | :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="id" align="center" :label="$t('sorter.id')" min-width="80" /> |
| | | <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="80" /> |
| | | <el-table-column prop="slot" align="center" :label="$t('sorter.gridnumber')" min-width="80" /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('sorter.startstatus')" |
| | | min-width="80" |
| | | prop="enableState" |
| | | > |
| | | <template #default="scope"> |
| | | <el-tag |
| | | :type="scope.row.enableState === 1 ? 'success' : 'warning'" |
| | | > |
| | | {{ scope.row.enableState === 1 ? $t('sorter.start') : $t('sorter.disable') }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remainWidth" align="center" :label="$t('sorter.remainWidth')" min-width="80" /> |
| | | </el-table> |
| | | </div> |
| | | <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;margin-top: 15px;"> |
| | | <el-table height="90" ref="table" |
| | | @selection-change="handleSelectionChange" |
| | | :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="glassIdOut" align="center" :label="$t('searchOrder.outputglassID')" min-width="80" /> |
| | | <el-table-column prop="currentCell" align="center" :label="$t('sorter.layernow')" min-width="80" /> |
| | | <el-table-column prop="startCell" align="center" :label="$t('processCard.layer')" min-width="120" /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('sorter.place')" |
| | | min-width="80" |
| | | prop="inPlace" |
| | | > |
| | | <template #default="scope"> |
| | | <el-tag |
| | | :type="scope.row.inPlace === 1 ? 'success' : 'warning'" |
| | | > |
| | | {{ scope.row.inPlace === 1 ? $t('sorter.inPlace') : $t('sorter.ninPlace') }} |
| | | </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 |
| | | 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 prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="120" /> |
| | | <el-table-column prop="formattedupdateTime" align="center" :label="$t('sorter.updateTime')" min-width="120" /> |
| | | </el-table> |
| | | </div> |
| | | </el-card> |
| | | <div class="awatch"> |
| | | <img src="../../assets/woshihuancun.png" alt="" style="width: 50%;height: 70%;margin-left: 30%;margin-top: 20px;position: relative;"> |
| | | <div style="position: relative; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRects" |
| | | :key="rect" |
| | | :style="{ position: 'absolute', |
| | | top: `${rect.id}px`, left: `10px`, width: `${rect.width}px`, height: `5px`, |
| | | backgroundColor: '#409EFF' |
| | | }" |
| | | > |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <style scoped> |
| | | #dt { |
| | | display: block; |
| | | float: left; |
| | | line-height: 20px; |
| | | margin-left: 100px; |
| | | } |
| | | #dta { |
| | | display: block; |
| | | float: left; |
| | | line-height: 20px; |
| | | margin-left: 80%; |
| | | } |
| | | #dialog-footer { |
| | | #dt { display:block; float:left;line-height: 20px;margin-left: 100px;} |
| | | #dta { display:block; float:left;line-height: 20px;margin-left: 80%;} |
| | | #dialog-footer{ |
| | | text-align: center; |
| | | margin-top: -15px; |
| | | } |
| | | #message { |
| | | #message{ |
| | | text-align: center; |
| | | align-items: center; |
| | | color: black; |
| | | width: 200px; |
| | | height: 100px; |
| | | background-color: #337ecc; |
| | | margin-left: 28%; |
| | | width: 200px; |
| | | height: 100px; |
| | | background-color: #337ecc; |
| | | margin-left: 28%; |
| | | } |
| | | .awatch { |
| | | .awatch{ |
| | | height: 460px; |
| | | width: 1500px; |
| | | max-width: 100%; |
| | | /* margin-top: -60px; */ |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | const cell7=ref(true); |
| | | const cell8=ref(true); |
| | | const cell9=ref(true); |
| | | const canEdit = ref(true); |
| | | const selectedRow = ref(null); |
| | | const temperingtotal = ref(0); |
| | | const glasstotal = ref(0); |
| | |
| | | row.enableState = newState; |
| | | }; |
| | | // 是否破损 |
| | | const toggleEnableisDamage = async (row) => { |
| | | const broken = async (row) => { |
| | | try { |
| | | const newState = row.isDamage === 1 ? 0 : 1; |
| | | const response = await request.post('/cacheGlass/edgStorageCage/updateEdgStorageCage', { id: row.id, enableState: newState }); |
| | | if (response.code === 200) { |
| | | const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/bigStorageGlassDamageByGlassId', { glassId: row.glassId }); |
| | | if (response.code == 200) { |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | } else { |
| | | ElMessage.error(response.message); |
| | | } |
| | | } |
| | | row.isDamage = newState; |
| | | }; |
| | | } |
| | | catch (error) { |
| | | console.error(error); |
| | | } |
| | | } |
| | | // 删除 |
| | | const opena = async(row) => { |
| | | try { |
| | |
| | | min-width="80" |
| | | prop="isDamage" |
| | | > |
| | | <template #default="scope"> |
| | | <el-tag |
| | | :type="scope.row.isDamage === 1 ? 'danger' : 'success'" |
| | | @click="toggleEnableisDamage(scope.row)" |
| | | > |
| | | {{ scope.row.isDamage === 1 ? $t('searchOrder.breakage') : $t('searchOrder.breakagn') }} |
| | | </el-tag> |
| | | </template> |
| | | <template #default="scope"> |
| | | <div |
| | | @click="scope.row.isDamage === 1 ? null : broken(scope.row)" |
| | | style="position: relative; display: inline-block;" |
| | | > |
| | | <el-tag |
| | | :type="scope.row.isDamage === 1 ? 'danger' : 'success'" |
| | | style="pointer-events: {{ scope.row.isDamage === 1 ? 'none' : 'auto' }};" |
| | | > |
| | | {{ scope.row.isDamage === 1 ? $t('searchOrder.breakage') : $t('searchOrder.breakagn') }} |
| | | </el-tag> |
| | | <div |
| | | v-if="scope.row.isDamage === 1" |
| | | style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: transparent; z-index: 1;" |
| | | ></div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column prop="isDamage" align="center" :label="$t('searchOrder.state')" min-width="80" /> --> |
| | | <el-table-column prop="layer" align="center" :label="$t('processCard.layer')" min-width="80" /> |
| | | <el-table-column prop="xcoordinate" align="center" :label="$t('searchOrder.xcoordinates')" min-width="80" /> |
| | | <el-table-column prop="ycoordinate" align="center" :label="$t('searchOrder.ycoordinates')" min-width="80" /> |
| | |
| | | |
| | | @ApiOperation("大理片笼报破损") |
| | | @PostMapping("/bigStorageGlassDamageByGlassId") |
| | | public Result<String> bigStorageGlassDamageByGlassId(String glassId) { |
| | | |
| | | public Result<String> bigStorageGlassDamageByGlassId(@RequestBody Map<String, String> map) { |
| | | String glassId=map.get("glassId"); |
| | | return Result.build(200, "报破损成功", bigStorageCageDetailsService.bigStorageGlassDamageByGlassId(glassId)); |
| | | } |
| | | } |