Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject
| | |
| | | export default { |
| | | // serverUrl: "10.153.19.150:88/api", |
| | | // serverUrl: "192.168.2.100:88/api", |
| | | serverUrl: "127.0.0.1:88", |
| | | serverUrl: "10.153.19.162:88", |
| | | // serverUrl: "127.0.0.1:88", |
| | | // serverUrl: "192.168.0.39:88", |
| | | // serverUrl2: "10.153.19.150:88" |
| | | // serverUrl2: "192.168.2.100:88" |
| | | serverUrl2: "127.0.0.1:88" |
| | | serverUrl2: "10.153.19.162:88" |
| | | // serverUrl2: "127.0.0.1:88" |
| | | // serverUrl2: "192.168.0.39:88" |
| | | //serverUrl:"res.abeim.cn" |
| | | } |
| | |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.6.8", |
| | | "chart.js": "^4.4.3", |
| | | "dayjs": "^1.11.13", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.4.0", |
| | | "moment": "^2.30.1", |
| | |
| | | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" |
| | | }, |
| | | "node_modules/dayjs": { |
| | | "version": "1.11.10", |
| | | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", |
| | | "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" |
| | | "version": "1.11.13", |
| | | "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", |
| | | "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" |
| | | }, |
| | | "node_modules/debug": { |
| | | "version": "4.3.4", |
| | |
| | | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" |
| | | }, |
| | | "dayjs": { |
| | | "version": "1.11.10", |
| | | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", |
| | | "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" |
| | | "version": "1.11.13", |
| | | "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", |
| | | "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" |
| | | }, |
| | | "debug": { |
| | | "version": "4.3.4", |
| | |
| | | "axios": "^1.6.8", |
| | | "babel-polyfill": "^6.26.0", |
| | | "chart.js": "^4.4.3", |
| | | "dayjs": "*", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.4.0", |
| | | "http-proxy-middleware": "^3.0.0", |
| | |
| | | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" |
| | | }, |
| | | "dayjs": { |
| | | "version": "1.11.10", |
| | | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", |
| | | "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" |
| | | "version": "1.11.13", |
| | | "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", |
| | | "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" |
| | | }, |
| | | "debug": { |
| | | "version": "4.3.4", |
| | |
| | | "@vue-macros/reactivity-transform": "^0.3.23", |
| | | "axios": "^1.6.8", |
| | | "chart.js": "^4.4.3", |
| | | "dayjs": "^1.11.13", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.4.0", |
| | | "moment": "^2.30.1", |
| | |
| | | }, |
| | | ] |
| | | }, |
| | | /*----------- 下片台 ----------------*/ |
| | | { |
| | | path: 'UnLoadGlass', |
| | | name: 'UnLoadGlass', |
| | | component: () => import('../views/UnLoadGlass/UnLoadGlass.vue'), |
| | | children:[ |
| | | { |
| | | path: '/UnLoadGlass/loadmachinerack', |
| | | name: 'loadmachinerack', |
| | | component: () => import('../views/UnLoadGlass/loadmachinerack.vue') |
| | | }, |
| | | { |
| | | path: '/UnLoadGlass/loadmachineracktwo', |
| | | name: 'loadmachineracktwo', |
| | | component: () => import('../views/UnLoadGlass/loadmachineracktwo.vue') |
| | | }, |
| | | { |
| | | path: '/UnLoadGlass/Landingindication', |
| | | name: 'Landingindication', |
| | | component: () => import('../views/UnLoadGlass/Landingindication.vue') |
| | | }, |
| | | { |
| | | path: '/UnLoadGlass/Landingindicationtwo', |
| | | name: 'Landingindicationtwo', |
| | | component: () => import('../views/UnLoadGlass/Landingindicationtwo.vue') |
| | | } |
| | | ] |
| | | }, |
| | | /*----------- 仓储中心 ----------------*/ |
| | | { |
| | | path: 'GlassStorage', |
| | |
| | | name: 'hollowslicecage', |
| | | component: () => import('../views/hollow/hollowslicecage.vue') |
| | | }, |
| | | { |
| | | path: '/hollow/hollowaluminum', |
| | | name: 'hollowaluminum', |
| | | component: () => import('../views/hollow/hollowaluminum.vue') |
| | | }, |
| | | ] |
| | | }, |
| | | /*----------- 管理系统 ----------------*/ |
| | |
| | | // export const WebSocketHost = "192.168.0.39"; |
| | | // export const WebSocketHost = "10.153.19.150"; |
| | | // export const WebSocketHost = "192.168.2.100"; |
| | | export const WebSocketHost = "127.0.0.1"; |
| | | export const WebSocketHost = "10.153.19.162"; |
| | | // export const WebSocketHost = "127.0.0.1"; |
| | | export const host = "88"; |
| | |
| | | import {onBeforeUnmount, onMounted, onUnmounted, ref, reactive} from "vue"; |
| | | import {useRouter} from "vue-router" |
| | | import {host, WebSocketHost} from '@/utils/constants' |
| | | import dayjs from 'dayjs'; |
| | | import request from "@/utils/request" |
| | | import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; |
| | | import {ElMessage, ElMessageBox} from 'element-plus' |
| | |
| | | // id: rect.id * 10, |
| | | // })); |
| | | }; |
| | | // 初始化 WebSocket,并传递消息处理函数 |
| | | onMounted(() => { |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | const endTime = dayjs().startOf('minute'); // 当前时间,精确到分钟 |
| | | const startTime = endTime.subtract(1, 'day').startOf('minute'); // 当前时间的前一天,精确到分钟 |
| | | // 设置时间范围为 [开始时间, 结束时间] |
| | | timeRange.value = [startTime.format('YYYY-MM-DD HH:mm:ss'), endTime.format('YYYY-MM-DD HH:mm:ss')]; |
| | | }); |
| | | // 历史任务 |
| | | const handlehistorical = (row) => { |
| | |
| | | try { |
| | | const params = { |
| | | deviceId: 1, |
| | | startTime: timeRange.value[0] || '', |
| | | endTime: timeRange.value[1] || '', |
| | | startTime: (timeRange.value && timeRange.value[0]) || '', |
| | | endTime: (timeRange.value && timeRange.value[1]) || '', |
| | | glassId: glassId.value || '', |
| | | taskState: taskStat.value, |
| | | taskType: taskType.value || '' |
| | |
| | | import {onBeforeUnmount, onMounted, onUnmounted, ref, reactive} from "vue"; |
| | | import {useRouter} from "vue-router" |
| | | import {host, WebSocketHost} from '@/utils/constants' |
| | | import dayjs from 'dayjs'; |
| | | import request from "@/utils/request" |
| | | import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; |
| | | import {ElMessage, ElMessageBox} from 'element-plus' |
| | |
| | | // id: rect.id * 10, |
| | | // })); |
| | | }; |
| | | // 初始化 WebSocket,并传递消息处理函数 |
| | | onMounted(() => { |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | const endTime = dayjs().startOf('minute'); // 当前时间,精确到分钟 |
| | | const startTime = endTime.subtract(1, 'day').startOf('minute'); // 当前时间的前一天,精确到分钟 |
| | | // 设置时间范围为 [开始时间, 结束时间] |
| | | timeRange.value = [startTime.format('YYYY-MM-DD HH:mm:ss'), endTime.format('YYYY-MM-DD HH:mm:ss')]; |
| | | }); |
| | | // 历史任务 |
| | | const handlehistorical = (row) => { |
| | |
| | | try { |
| | | const params = { |
| | | deviceId: 2, |
| | | startTime: timeRange.value[0] || '', |
| | | endTime: timeRange.value[1] || '', |
| | | startTime: (timeRange.value && timeRange.value[0]) || '', |
| | | endTime: (timeRange.value && timeRange.value[1]) || '', |
| | | glassId: glassId.value || '', |
| | | taskState: taskState.value, |
| | | taskType: taskType.value || '' |
| | |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | var url="/glassStorage/rawGlassStorageDetails/deleteWarehousing?slotId="+row.slotId; |
| | | var url="/glassStorage/rawGlassStorageDetails/deleteWarehousing?slot="+row.slot; |
| | | const response = await request.post(url) |
| | | // const response = await request.post("/glassStorage/rawGlassStorageDetails/deleteWarehousing",[row.slotId]) |
| | | if (response.code === 200) { |
| | |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | var url="/glassStorage/rawGlassStorageDetails/outWarehousing?slotId="+row.slotId; |
| | | var url="/glassStorage/rawGlassStorageDetails/outWarehousing?slotId="+row.slot; |
| | | const response = await request.post(url) |
| | | // const response = await request.post("/glassStorage/rawGlassStorageDetails/outWarehousing",[row.slotId]) |
| | | if (response.code === 200) { |
| | |
| | | } |
| | | } |
| | | const response = await request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest", { |
| | | beginDate: timeRange.value[0], |
| | | endDate: timeRange.value[1], |
| | | beginDate: (timeRange.value && timeRange.value[0]) || '', |
| | | endDate: (timeRange.value && timeRange.value[1]) || '', |
| | | taskState: stateList, |
| | | taskType: celllist |
| | | }) |
| | |
| | | window.localStorage.setItem('filmRemove', filmRemove.value) |
| | | if (response.code == 200) { |
| | | ElMessage.success(response.message); |
| | | // closeWebSocket(socket); |
| | | closeWebSocket(socket); |
| | | tableData.value = response.data; |
| | | dialogFormVisible.value = false; |
| | | selectedProjectNo.value = ''; |
| | |
| | | canSelectProjecta.value = false; |
| | | canSelectProjectb.value = false; |
| | | canSelectProjectc.value = true; |
| | | // socket = initializeWebSocket(socketUrl, handleMessage); |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | blind.value = false; |
| | | } else { |
| | | ElMessage.error(response.message); |
| | |
| | | </el-button> |
| | | <div style="margin-left: 70px;">{{ upstatus }}</div> |
| | | <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatusColor, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i> |
| | | <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;">{{ |
| | | $t('basicData.change') |
| | | }} |
| | | </el-button> |
| | | </div> |
| | | <el-button :disabled="!canSelectProjecta" style="margin-top: 5px;margin-left: 15px;" type="primary" @click="selectproject">{{ $t('Mounting.previewproject') }}</el-button> |
| | | <el-button :disabled="!canSelectProjectb" style="margin-top: 5px;margin-left: 20px;" type="success" @click="handleBind">{{ $t('basicData.startloading') }}</el-button> |
| | |
| | | window.localStorage.setItem('filmRemove', filmRemove.value) |
| | | if (response.code == 200) { |
| | | ElMessage.success(response.message); |
| | | // closeWebSocket(socket); |
| | | closeWebSocket(socket); |
| | | tableData.value = response.data; |
| | | dialogFormVisible.value = false; |
| | | selectedProjectNo.value = ''; |
| | |
| | | canSelectProjecta.value = false; |
| | | canSelectProjectb.value = false; |
| | | canSelectProjectc.value = true; |
| | | // socket = initializeWebSocket(socketUrl, handleMessage); |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | blind.value = false; |
| | | } else { |
| | | ElMessage.error(response.message); |
| | |
| | | </div> |
| | | <!-- // 父级框 --> |
| | | <div class="img-dlpl" > |
| | | <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'"> |
| | | <div class="img-car1" :style="'z-index:999;left:375px;top:' + 350*carPosition[0] + 'px;position:absolute;'"> |
| | | <div |
| | | v-for="(rect, index) in adjusta" |
| | | :key="rect.id" |
| | |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'"> |
| | | <div class="img-car4" :style="'z-index:999;left:770px;top:' + 350*carPosition[1] + 'px;position:absolute;'"> |
| | | <div |
| | | v-for="(rect, index) in adjust" |
| | | :key="rect.id" |
| | |
| | | .img-dlpl{ |
| | | margin-left: 20px; |
| | | margin-top: 0px; |
| | | background-image:url('../../assets/dlpl9.png'); |
| | | background-image:url('../../assets/ganghuaqian.png'); |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | | min-height: 400px; |
| | |
| | | } |
| | | .img-car1{ |
| | | display: flex; |
| | | background-image:url('../../assets/lp9.png'); |
| | | background-image:url('../../assets/xiaoche.png'); |
| | | position: absolute; |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | |
| | | } |
| | | .img-car4{ |
| | | display: flex; |
| | | background-image:url('../../assets/lpa9.png'); |
| | | background-image:url('../../assets/xiaoche.png'); |
| | | position: absolute; |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | |
| | | const password = ref(''); |
| | | const tableData = ref([]) |
| | | const slot = ref('') |
| | | request.post("/loadGlass/sys/user/listByUserName",{ |
| | | // request.post("/loadGlass/sys/user/listByUserName",{ |
| | | // key: '' |
| | | // }).then((res) => { |
| | | // if (res.code == 200) { |
| | | // console.log(res.data); |
| | | // tableData.value = res.data |
| | | // } else { |
| | | // ElMessage.warning(res.msg) |
| | | // } |
| | | // }); |
| | | const listByUserName = async () => { |
| | | try { |
| | | const response = await request.post('/loadGlass/sys/user/listByUserName',{ |
| | | key: '' |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | console.log(res.data); |
| | | tableData.value = res.data |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }); |
| | | if (response.code === 200) { |
| | | tableData.value = response.data |
| | | } else { |
| | | ElMessage.warning(response.data); |
| | | } |
| | | } catch (error) { |
| | | console.error('Error fetching options:', error); |
| | | } |
| | | }; |
| | | // 重置密码 |
| | | const open = async(row) => { |
| | | try { |
| | |
| | | }) |
| | | onMounted(() => { |
| | | fetchOptionsa(''); |
| | | listByUserName(''); |
| | | }); |
| | | // 角色下拉选 |
| | | const fetchOptionsa = async () => { |
| | |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | add.value = false; |
| | | tableData.value = response.data; |
| | | listByUserName(''); |
| | | // tableData.value = response.data; |
| | | } else { |
| | | ElMessage.error(response.message); |
| | | } |
| | |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | adda.value = false; |
| | | listByUserName(''); |
| | | tableData.value = response.data; |
| | | } else { |
| | | ElMessage.error(response.message); |
| | |
| | | const response = await request.post("/loadGlass/sys/user/deleteUser", [row.id]) |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | | listByUserName(''); |
| | | } else { |
| | | ElMessage.error(response.msg); |
| | | } |
New file |
| | |
| | | <script setup> |
| | | import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue"; |
| | | import {useRouter} from "vue-router" |
| | | import {host, WebSocketHost} from '@/utils/constants' |
| | | import request from "@/utils/request" |
| | | import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; |
| | | import {ElMessage, ElMessageBox} from 'element-plus' |
| | | import {useI18n} from 'vue-i18n' |
| | | const router = useRouter() |
| | | const adda = ref(false) |
| | | const {t} = useI18n() |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const tableData = ref([]) |
| | | const slot = ref('') |
| | | const requestData = { |
| | | line: 2001 |
| | | }; |
| | | const timeRange = ref([]) |
| | | const selectValuesa = reactive([]); |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/edgTasks`; |
| | | const handleMessage = (data) => { |
| | | tableData.value = data.edgTasks[0] |
| | | }; |
| | | onMounted(() => { |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | }); |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | | closeWebSocket(socket); |
| | | } |
| | | }); |
| | | onBeforeUnmount(() => { |
| | | console.log("关闭了") |
| | | closeWebSocket(); |
| | | }); |
| | | </script> |
| | | <template> |
| | | <div style="height: 500px;"> |
| | | <div> |
| | | <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="750" ref="table" |
| | | @selection-change="handleSelectionChange" |
| | | :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="glassId" align="center" :label="$t('workOrder.glassID')" min-width="180" /> |
| | | <el-table-column prop="width" align="center" :label="$t('workOrder.width')" min-width="120" /> |
| | | <el-table-column prop="height" align="center" :label="$t('workOrder.height')" min-width="80" /> |
| | | <el-table-column prop="thickness" align="center" :label="$t('workOrder.thickness')" min-width="120" /> |
| | | <el-table-column prop="glassType" align="center" :label="$t('workOrder.glasstype')" min-width="120" /> |
| | | <el-table-column prop="line" align="center" :label="$t('workOrder.line')" min-width="120" /> |
| | | <el-table-column fixed="right" :label="$t('workOrder.operate')" align="center" width="200"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" type="text" plain @click="open(scope.row)">{{ |
| | | $t('workOrder.breakage') |
| | | }} |
| | | </el-button> |
| | | <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ |
| | | $t('workOrder.takeout') |
| | | }} |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </el-card> |
| | | </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{ |
| | | text-align: center; |
| | | margin-top: -15px; |
| | | } |
| | | #message{ |
| | | text-align: center; |
| | | align-items: center; |
| | | color: black; |
| | | width: 200px; |
| | | height: 100px; |
| | | background-color: #337ecc; |
| | | margin-left: 28%; |
| | | } |
| | | #awatch{ |
| | | height: 460px; |
| | | /* margin-top: -60px; */ |
| | | } |
| | | </style> |
| | |
| | | <div id="dt" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbOne')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbOne')" v-model="intervalFrameHeightOne" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaOne')" v-model="intervalFrameHeightOne" autocomplete="off" /> |
| | | </el-form-item></div></div> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <div id="dta" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbTwo')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" /> |
| | | </el-form-item> |
| | | </div></div> |
| | | </el-col> |
| | |
| | | <div id="dt" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbThree')" v-model="intervalFrameHeightThree" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaThree')" v-model="intervalFrameHeightThree" autocomplete="off" /> |
| | | </el-form-item></div></div> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <div id="dta" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbFour')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbFour')" v-model="intervalFrameHeightFour" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaFour')" v-model="intervalFrameHeightFour" autocomplete="off" /> |
| | | </el-form-item> |
| | | </div></div> |
| | | </el-col> |
| | |
| | | <div id="dt" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbOne')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbOne')" v-model="intervalFrameHeightOne" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaOne')" v-model="intervalFrameHeightOne" autocomplete="off" /> |
| | | </el-form-item></div></div> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <div id="dta" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbTwo')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" /> |
| | | </el-form-item> |
| | | </div></div> |
| | | </el-col> |
| | |
| | | <div id="dt" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbThree')" v-model="intervalFrameHeightThree" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaThree')" v-model="intervalFrameHeightThree" autocomplete="off" /> |
| | | </el-form-item></div></div> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <div id="dta" style="font-size: 15px;"> |
| | | <div> |
| | | <el-form-item :label="$t('hellow.intervalFrameHeightbFour')" :required="true" style="width: 16vw;"> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightbFour')" v-model="intervalFrameHeightFour" autocomplete="off" /> |
| | | <el-input :placeholder="$t('hellow.intervalFrameHeightaFour')" v-model="intervalFrameHeightFour" autocomplete="off" /> |
| | | </el-form-item> |
| | | </div></div> |
| | | </el-col> |
| | |
| | | </div> |
| | | <!-- // 父级框 --> |
| | | <div class="img-dlpl" > |
| | | <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'"> |
| | | <div class="img-car1" :style="'z-index:999;left:475px;top:' + 1450*carPosition[0] + 'px;position:absolute;'"> |
| | | <div |
| | | v-for="(rect, index) in adjusta" |
| | | :key="rect.id" |
| | |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'"> |
| | | <div class="img-car4" :style="'z-index:999;left:890px;top:' + 50*carPosition[1] + 'px;position:absolute;'"> |
| | | <div |
| | | v-for="(rect, index) in adjust" |
| | | :key="rect.id" |
| | |
| | | .img-dlpl{ |
| | | margin-left: 20px; |
| | | margin-top: 0px; |
| | | background-image:url('../../assets/dlpl9.png'); |
| | | background-image:url('../../assets/zhongkong.png'); |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | | min-height: 400px; |
| | | min-height: 700px; |
| | | width: 1200px; |
| | | max-width: 100%; |
| | | background-size: 1200px 400px; |
| | | background-size: 1200px 700px; |
| | | overflow: hidden; |
| | | position:relative |
| | | } |
| | | .img-car1{ |
| | | display: flex; |
| | | background-image:url('../../assets/lp9.png'); |
| | | background-image:url('../../assets/xiaoche.png'); |
| | | position: absolute; |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | |
| | | } |
| | | .img-car4{ |
| | | display: flex; |
| | | background-image:url('../../assets/lpa9.png'); |
| | | background-image:url('../../assets/xiaoche.png'); |
| | | position: absolute; |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | |
| | | import {host, WebSocketHost} from '@/utils/constants' |
| | | import request from "@/utils/request" |
| | | import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; |
| | | import dayjs from 'dayjs'; |
| | | import {ElMessage, ElMessageBox} from 'element-plus' |
| | | import {useI18n} from 'vue-i18n' |
| | | const router = useRouter() |
| | | const blinda = ref(false) |
| | | const blindb = ref(false) |
| | | const {t} = useI18n() |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const tableData = ref([]) |
| | | const timeRange = ref([]) |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/edgTasks`; |
| | | const handleMessage = (data) => { |
| | |
| | | console.error(error); |
| | | } |
| | | } |
| | | // 点击下方弹窗 |
| | | const handlehistorical = (row) => { |
| | | blindb.value = true; |
| | | historical() |
| | | }; |
| | | // 在组件挂载时设置默认时间范围 |
| | | onMounted(() => { |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | const endTime = dayjs().startOf('minute'); // 当前时间,精确到分钟 |
| | | const startTime = endTime.subtract(1, 'day').startOf('minute'); // 当前时间的前一天,精确到分钟 |
| | | // 设置时间范围为 [开始时间, 结束时间] |
| | | timeRange.value = [startTime.format('YYYY-MM-DD HH:mm:ss'), endTime.format('YYYY-MM-DD HH:mm:ss')]; |
| | | }); |
| | | // onMounted(() => { |
| | | // socket = initializeWebSocket(socketUrl, handleMessage); |
| | | // }); |
| | | onUnmounted(() => { |
| | | if (socket) { |
| | | closeWebSocket(socket); |
| | |
| | | </script> |
| | | <template> |
| | | <div style="height: 500px;"> |
| | | <div> |
| | | <img src="../../assets/screen.png" alt="" style="max-width: 48%;max-height: 100%;margin-top: 50px;float: left;"> |
| | | <div class="awatch"> |
| | | <img src="../../assets/screen.png" alt="Screen" style="max-width: 48%; max-height: 100%; margin-top: 50px; float: left; position: relative;" /> |
| | | <div |
| | | class="clickable-area" |
| | | @click="handlehistorical" |
| | | style="position: relative; width: 175px; height: 240px; top: 570px; left: 310px;" |
| | | ></div> |
| | | </div> |
| | | <div style="margin-top: 60px;height: 190px;width: 48%;float: right;"> |
| | | <div style="height: 190px;width: 48%;float: right;"> |
| | | <el-table height="500" ref="table" |
| | | @selection-change="handleSelectionChange" |
| | | :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 点击下方弹窗 --> |
| | | <el-dialog v-model="blindb" top="10vh" width="90%"> |
| | | <div style="display: flex;"> |
| | | <el-select |
| | | :placeholder="$t('basicData.coatingtypes')" |
| | | clearable |
| | | style="width: 270px;margin-left: 10px;" |
| | | v-model="taskStat"> |
| | | <el-option |
| | | v-for="item in optionsa" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | <span class="demonstration" style="margin-left: 20px;margin-top: 3px;">{{ $t('workOrder.time') }}</span> |
| | | <!-- <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-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: 650px;" :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="glassIdIn" align="center" :label="$t('searchOrder.intoglassid')" min-width="80" /> |
| | | <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('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('film.createtime')" min-width="120" /> |
| | | <el-table-column prop="updateTime" align="center" :label="$t('sorter.updateTime')" min-width="120" /> |
| | | </el-table> |
| | | <template #footer> |
| | | <div id="dialog-footer"> |
| | | <el-button @click="blindb = false">{{ $t('large.close') }}</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | <el-dialog v-model="blinda" top="5vh" width="85%"> |
| | | <el-table height="650" ref="table" |
| | | @selection-change="handleSelectionChange" |
| | |
| | | } |
| | | #awatch{ |
| | | height: 460px; |
| | | /* margin-top: -60px; */ |
| | | } |
| | | .clickable-area { |
| | | cursor: pointer; /* 指示这是一个可点击的区域 */ |
| | | text-align: center; /* 如果需要,可以在div中添加文本并居中 */ |
| | | line-height: 95px; /* 如果需要,使文本垂直居中 */ |
| | | } |
| | | /* .awatch{ |
| | | height: 460px; |
| | | /* max-width: 100%; */ |
| | | </style> |