UI-Project/src/lang/zh.js
@@ -546,7 +546,16 @@ }, film:{ mes:'原片仓储详情', warehousing:'入库', warehousing:'原片入库', pwarehousing:'入库请求', wareout:'原片出库', information:'是否出库该条信息?', pwareout:'出库请求', position:'吊装位:', cposition:'请选择吊装位', position1:'吊装位1', position2:'吊装位2', addglass:'原片信息', operate: '操作', exit:'编辑', delete:'删除', UI-Project/src/router/index.js
@@ -85,6 +85,11 @@ name: 'upreturns', component: () => import('../views/Returns/upreturns.vue') }, { path: '/Returns/upreturns2', name: 'upreturns2', component: () => import('../views/Returns/upreturns2.vue') }, ] }, /*----------- 掰片/识别 ----------------*/ UI-Project/src/views/GlassStorage/rawfilmstorage.vue
@@ -17,6 +17,8 @@ const dialogFormVisiblea = ref(false) const dialogFormVisibleb = ref(false) const dialogFormVisiblec = ref(false) const dialogFormVisiblee = ref(false) const Edit = ref(false) const timeRange = ref(["2022-01-01 00:00:00", "2025-01-01 00:00:00"]) const selectValuesa = reactive([]); const patternWidth = ref(''); @@ -25,15 +27,17 @@ const filmsId = ref(''); const remainQuantity = ref(''); const slot = ref(''); const leftingStation = ref(''); const loadingline = ref(''); let webSocket: WebSocket | null = null; const value = ref('') const options = [ { value: 1, value: 98, label: t('film.warehousing1'), }, { value: 2, value: 99, label: t('film.warehousing2'), } ] @@ -59,7 +63,6 @@ // console.log("--------------webSocket") socket = initializeWebSocket(socketUrl, handleMessage); }); let socket = null; const socketUrl = `ws://${WebSocketHost}:${host}/api/glassStorage/api/talk/rawGlass`; const handleMessage = (data) => { @@ -68,27 +71,21 @@ } if(data.rawStationDetailsList !=null){ tableDatab.value = data.rawStationDetailsList[0] console.log(tableDatab.value); } }; // 修改数量 const handleConfirmb = async () => { let slotId = window.localStorage.getItem('slotId') try { const response = await request.post('/glassStorage/rawGlassStorageDetails/updateQuantity', { slotId: slotId, remainQuantity: remainQuantity.value, } ); if (response.code === 200) { ElMessage.success(response.message); dialogFormVisiblec.value = false; tableDatab.value = response.data; } else { ElMessage.error(response.message); } } catch (error) { console.error(error); } const handleEdit = (row) => { window.localStorage.setItem('slotId', row.slotId) Edit.value = true; }; const handleBinda = (row) => { dialogFormVisibleb.value = true; }; const handleBindc = (row) => { dialogFormVisiblec.value = true; }; const handleBinde = (row) => { dialogFormVisiblee.value = true; }; // 删除 const deleteWarehousing = async(row) => { @@ -116,8 +113,72 @@ } catch (error) { console.error('发生错误:', error); } }; }; // 原片入库 const handleup = async () => { try { const response = await request.post('/glassStorage/rawGlassStorageDetails/patternWarehousing', { patternWidth: patternWidth.value, patternHeight: patternHeight.value, patternThickness: patternThickness.value, filmsId: filmsId.value, remainQuantity: remainQuantity.value, slot: slot.value, }); if (response.code === 200) { ElMessage.success(response.message); dialogFormVisibleb.value = false; patternWidth.value = ''; patternHeight.value = ''; patternThickness.value = ''; filmsId.value = ''; remainQuantity.value = ''; slot.value = ''; } else { ElMessage.error(response.message); } } catch (error) { console.error(error); } }; // 入库请求 const handleupc = async () => { try { var url="/glassStorage/rawGlassStorageDetails/warehousingRequest?leftingStation="+leftingStation.value; const response = await request.post(url) if (response.code == 200) { ElMessage.success(response.message); dialogFormVisiblec.value = false; leftingStation.value = ''; } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); } } catch (error) { // 处理错误 console.error(error); } } // 出库请求 const handleupe = async () => { try { var url="/glassStorage/rawGlassStorageDetails/outWarehousingRequest?leftingStation="+leftingStation.value; const response = await request.post(url) if (response.code == 200) { ElMessage.success(response.message); dialogFormVisiblee.value = false; leftingStation.value = ''; } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); } } catch (error) { // 处理错误 console.error(error); } } // 出库 const openc = async(row) => { try { @@ -172,33 +233,6 @@ ElMessage.error(response.message); } }; // 入库 const handleConfirma = async () => { try { const response = await request.post('/glassStorage/rawGlassStorageDetails/patternWarehousing', { patternWidth: patternWidth.value, patternHeight: patternHeight.value, patternThickness: patternThickness.value, filmsId: filmsId.value, remainQuantity: remainQuantity.value, slotId: slot.value, }); if (response.code === 200) { ElMessage.success(response.message); dialogFormVisibleb.value = false; patternWidth.value = ''; patternHeight.value = ''; patternThickness.value = ''; filmsId.value = ''; remainQuantity.value = ''; slot.value = ''; } else { ElMessage.error(response.message); } } catch (error) { console.error(error); } }; // 是否禁用 const toggleEnableState = async (row: any) => { if (!row.deviceId) { @@ -220,9 +254,25 @@ ElMessage.error(t('basicData.glassnull')); } }; const handleEdit = (row) => { window.localStorage.setItem('slotId', row.slotId) dialogFormVisiblec.value = true; // 修改数量 const Editclick = async () => { let slotId = window.localStorage.getItem('slotId') try { const response = await request.post('/glassStorage/rawGlassStorageDetails/updateQuantity', { slotId: slotId, remainQuantity: remainQuantity.value, } ); if (response.code === 200) { ElMessage.success(response.message); Edit.value = false; tableDatab.value = response.data; } else { ElMessage.error(response.message); } } catch (error) { console.error(error); } }; function getStatusType1(taskType) { switch (taskType) { @@ -277,7 +327,9 @@ <div> <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;"> <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="dialogFormVisiblea = true">{{ $t('film.mes') }}</el-button> <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('film.warehousing') }}</el-button> <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBinda">{{ $t('film.warehousing') }}</el-button> <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBindc">{{ $t('film.pwarehousing') }}</el-button> <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBinde">{{ $t('film.pwareout') }}</el-button> <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="datetimerange" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" @@ -327,19 +379,17 @@ </template> </el-table-column> <el-table-column prop="createTime" align="center" :label="$t('film.createtime')" /> </el-table> </div> </el-card> <div class="awatch"> <img src="../../assets/ypcc.png" alt="" style="width: 100%;height: 120%;margin-left: 10px;position: relative;margin-top: -20px;"> </div> <el-dialog v-model="dialogFormVisiblea" top="5vh" width="85%" > <el-table ref="table" style="margin-top: 20px;height: 700px;" :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="deviceId" fixed align="center" :label="$t('film.station')" min-width="80"/> <el-table-column prop="slotId" fixed align="center" :label="$t('film.slot')" min-width="80"/> <el-table-column prop="slot" fixed align="center" :label="$t('film.slot')" min-width="80"/> <el-table-column prop="patternWidth" align="center" :label="$t('film.width')" min-width="80" /> <el-table-column prop="patternHeight" align="center" :label="$t('film.height')" min-width="80" /> <el-table-column prop="patternThickness" align="center" :label="$t('film.thickness')" min-width="80" /> @@ -362,14 +412,14 @@ </el-table-column> <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="270"> <template #default="scope"> <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('film.exit') }}</el-button> <el-button size="mini" type="text" plain @click="deleteWarehousing(scope.row)">{{ $t('film.delete') }}</el-button> <el-button size="mini" type="text" plain @click="openc(scope.row)">{{ $t('film.outbound') }}</el-button> <el-button :disabled="!scope.row.remainQuantity" size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('film.exit') }}</el-button> <el-button :disabled="!scope.row.remainQuantity" size="mini" type="text" plain @click="deleteWarehousing(scope.row)">{{ $t('film.delete') }}</el-button> <el-button :disabled="!scope.row.remainQuantity || scope.row.remainQuantity === 0" size="mini" type="text" plain @click="openc(scope.row)">{{ $t('film.outbound') }}</el-button> </template> </el-table-column> </el-table> </el-dialog> <el-dialog v-model="dialogFormVisibleb" top="23vh" width="55%" :title="$t('basicData.addglass')" > <el-dialog v-model="dialogFormVisibleb" top="23vh" width="55%" :title="$t('film.addglass')" > <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;"> <el-form size="mini" label-width="150px"> <el-form label-width="100px" label-position="right"> @@ -438,14 +488,50 @@ </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleConfirma"> <el-button type="primary" @click="handleup"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="dialogFormVisibleb = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> <el-dialog v-model="dialogFormVisiblec" top="21vh" width="40%"> <el-dialog v-model="dialogFormVisiblec" top="24vh" width="30%" :title="$t('film.pwarehousing')"> <div style="margin-left: 50px;margin-bottom: 10px;"> <el-form-item :label="$t('film.position')" :required="true"> <el-select v-model="leftingStation" clearable :placeholder="$t('film.cposition')" style="margin-left: 20px;" > <el-option :label="$t('film.position1')" value="98"></el-option> <el-option :label="$t('film.position2')" value="99"></el-option> </el-select> </el-form-item> </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleupc"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="dialogFormVisiblec = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> <el-dialog v-model="dialogFormVisiblee" top="24vh" width="30%" :title="$t('film.pwareout')"> <div style="margin-left: 50px;margin-bottom: 10px;"> <el-form-item :label="$t('film.position')" :required="true"> <el-select v-model="leftingStation" clearable :placeholder="$t('film.cposition')" style="margin-left: 20px;" > <el-option :label="$t('film.position1')" value="98"></el-option> <el-option :label="$t('film.position2')" value="99"></el-option> </el-select> </el-form-item> </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleupe"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="dialogFormVisiblee = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> <el-dialog v-model="Edit" top="21vh" width="40%"> <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;"> <el-form size="mini" label-width="100px"> <el-form label-width="210px" label-position="right"> @@ -457,10 +543,10 @@ </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleConfirmb"> <el-button type="primary" @click="Editclick"> {{ $t('reportWork.sure') }} </el-button> <el-button @click="dialogFormVisiblec = false">{{ $t('reportWork.cancel') }}</el-button> <el-button @click="Edit = false">{{ $t('reportWork.cancel') }}</el-button> </div> </template> </el-dialog> UI-Project/src/views/Returns/upreturns.vue
@@ -1,16 +1,14 @@ <script lang="ts" setup> import {Search} from "@element-plus/icons-vue"; import {reactive} from "vue"; import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue"; import {useRouter} from "vue-router" const router = useRouter() import type { TableColumnCtx } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus' import { useI18n } from 'vue-i18n' const { t } = useI18n() import { WebSocketHost ,host} from '@/utils/constants' import {ElMessage} from 'element-plus' import {useI18n} from 'vue-i18n' import {host, WebSocketHost} from '@/utils/constants' import request from "@/utils/request" import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; import { ref, onMounted, onUnmounted, onBeforeUnmount } from "vue"; import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; const router = useRouter() const {t} = useI18n() const selectValuesa = reactive([]); const selectedProjectNo = ref(''); // 当前选中的工程号 const loadingline = ref(''); // 当前选中的上片线 @@ -59,12 +57,16 @@ }; const selectproject = () => { dialogFormVisible.value = true; selectgong(); }; onMounted(() => { // socket = initializeWebSocket(socketUrl, handleMessage); socket = initializeWebSocket(socketUrl, handleMessage); }); const handleMessage = (data) => { } onUnmounted(() => { if (socket) { closeWebSocket(socket); @@ -72,68 +74,43 @@ }); //定义接收加载表头下拉数据 const titleSelectJson = ref({ processType: [], }) const titleSelectJsona = ref({ processTypea: [], engineerId: [], }) let socket = null; const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`; const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/uploadGlass`; // 定义消息处理函数,更新 receivedData 变量 const requestData = { state: 100 }; onBeforeUnmount(() => { closeWebSocket(); }); const selectgong = async () => { try { const response = await request.post('/loadGlass/engineering/engineering/selectTask') if (response.code == 200) { titleSelectJson.value.engineerId = response.data; } else { ElMessage.error(response.message); } } catch (error) { // 处理错误 console.error(error); } } // 添加 const handleBindRack = (row) => { workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名 ida.value = row.id; add.value = true; // 打开绑定架子对话框 }; // 暂停 const handlea = async () => { try { let engineeringId = window.localStorage.getItem('engineeringId') console.log(engineeringId); if (engineeringId !== '') { const response = await request.post('/loadGlass/engineering/engineering/pauseTask', { engineeringId: engineeringId, state: 0, }) if (response.code == 200) { ElMessage.success(response.message); blinda.value = false; // tableData.splice([]); } else { // 请求失败,显示错误消息 ElMessage.error(response.message); } } else { ElMessage({ type: 'info', message: t('basicData.infonull'), }) } } catch (error) { // 处理错误 console.error(error); } } function getStatusText(state: number) { switch (state) { case 0: case 0: return t('basicData.waiting'); case 1: case 1: return t('basicData.up'); case 2: return t('basicData.up'); case 2: return t('basicData.up'); case 100: return t('basicData.finish'); } @@ -163,11 +140,7 @@ blindb.value = true; }; // 删除 const handleBindRacka = (row) => { workstationId.value = row.workstationId; adda.value = true; }; const toggleEnableState = async (row: any) => { // 检查 id 是否为空 if (!row.id) { @@ -486,13 +459,13 @@ :placeholder="$t('basicData.plselectproject')" style="width: 220px" @input="handleInputChange" > <el-option v-for="item in titleSelectJson['processType']" :key="item.id" :label="item.projectNo" :value="item.projectNo" /> > <el-option v-for="item in titleSelectJson['engineerId']" :key="item.id" :label="item.engineerId" :value="item.engineerId" /> </el-select> </el-form-item> </div> UI-Project/src/views/Returns/upreturns2.vue
New file @@ -0,0 +1,534 @@ <script lang="ts" setup> import {Search} from "@element-plus/icons-vue"; import {reactive} from "vue"; import {useRouter} from "vue-router" const router = useRouter() import type { TableColumnCtx } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus' import { useI18n } from 'vue-i18n' const { t } = useI18n() import { WebSocketHost ,host} from '@/utils/constants' import request from "@/utils/request" import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; import { ref, onMounted, onUnmounted, onBeforeUnmount } from "vue"; const selectValuesa = reactive([]); const selectedProjectNo = ref(''); // 当前选中的工程号 const loadingline = ref(''); // 当前选中的上片线 const dialogFormVisible = ref(false) const blind = ref(false) const blinda = ref(false) const blindb = ref(false) const add = ref(false) const adda = ref(false) const dialoglea = ref(false) const tableDatax = ref([]) const user = ref(''); const projectNo = ref(''); const workstationId = ref(''); const id = ref(''); const patternHeight = ref(''); const patternWidth = ref(''); const filmsId = ref(''); const patternThickness = ref(''); const number = ref(''); const canSelectProject = ref(true); const canStartLoading = ref(false); const selectedValue = ref(''); // 当前选中的宽 const selectedValuea = ref(''); const selectedValueb = ref(''); const selectedValuec = ref(''); // const upstatus = ref('上片机手动状态:'); // 假设这个用于显示自动/手动状态 const upstatus = ref(t('basicData.machineaa')); const cuttingMachine = ref(''); // 假设这个用于存储后端返回的状态值(0或1) const cuttingMachineStatusColor = ref('#911005'); // 用于动态设置i标签的背景色 const inKageWord = ref(0); // 用于存储要传递给接口的inKageWord值 const options = ref<any[]>([]); // 下拉选项列表 const ida = ref(null); const selectOptions = ref<Array<any>>([]); // 下拉选选项数组 const selectOptionsa = ref<Array<any>>([]); // 下拉选选项数组 const selectOptionsb = ref<Array<any>>([]); // 下拉选选项数组 const selectOptionsc = ref<Array<any>>([]); // 下拉选选项数组 const tableDataa = ref([]) const tableData = reactive([]); const handlezhiban = () => { dialoglea.value = true; // 打开绑定架子对话框 }; const selectproject = () => { dialogFormVisible.value = true; }; onMounted(() => { // socket = initializeWebSocket(socketUrl, handleMessage); }); onUnmounted(() => { if (socket) { closeWebSocket(socket); } }); //定义接收加载表头下拉数据 const titleSelectJson = ref({ processType: [], }) const titleSelectJsona = ref({ processTypea: [], }) let socket = null; const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`; // 定义消息处理函数,更新 receivedData 变量 const requestData = { state: 100 }; onBeforeUnmount(() => { closeWebSocket(); }); // 添加 const handleBindRack = (row) => { workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名 ida.value = row.id; add.value = true; // 打开绑定架子对话框 }; // 暂停 const handlea = async () => { try { let engineeringId = window.localStorage.getItem('engineeringId') console.log(engineeringId); if (engineeringId !== '') { const response = await request.post('/loadGlass/engineering/engineering/pauseTask', { engineeringId: engineeringId, state: 0, }) if (response.code == 200) { ElMessage.success(response.message); blinda.value = false; // tableData.splice([]); } else { // 请求失败,显示错误消息 ElMessage.error(response.message); } } else { ElMessage({ type: 'info', message: t('basicData.infonull'), }) } } catch (error) { // 处理错误 console.error(error); } } function getStatusText(state: number) { switch (state) { case 0: return t('basicData.waiting'); case 1: return t('basicData.up'); case 2: return t('basicData.up'); case 100: return t('basicData.finish'); } } function getStatusType(state: number) { switch (state) { case 0: return 'warning'; case 1: return 'primary'; case 2: return 'primary'; case 100: return 'success'; } } // 开始上片 const handleBind = (row) => { blind.value = true; // 打开绑定架子对话框 }; // 暂停 const handleBinda = (row) => { blinda.value = true; }; // 停止任务 const handleBindb = (row) => { blindb.value = true; }; // 删除 const handleBindRacka = (row) => { workstationId.value = row.workstationId; adda.value = true; }; const toggleEnableState = async (row: any) => { // 检查 id 是否为空 if (!row.id) { ElMessage.error(t('basicData.updatanull')); return; // 如果 id 为空,则不执行后续操作 } const newState = row.state === 100 ? 0 : 100; try { // 发送请求到后端更新状态 const response = await request.post('/loadGlass/up-patten-usage/updateGlassState', { id: row.id, state: newState }); if (response.code === 200) { ElMessage.success(response.message); row.state = newState; } else { ElMessage.error(response.message); } } catch (error) { // 处理请求错误 ElMessage.error(t('basicData.glassnull')); } }; </script> <template> <div> <div id="dotClass"> <div>{{ $t('basicData.laserprinting') }}</div> <i :style="{ marginTop: '2px', backgroundColor: markingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i> <el-button @click="confirmMarkingMachine" style="margin-left: 30px;margin-top: -3px;">{{ $t('basicData.yes') }}</el-button> <div style="margin-left: 70px;">{{ $t('basicData.cuttingmachine') }}</div> <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i> <el-button @click="confirmCuttingMachine" style="margin-left: 30px;margin-top: -3px;" >{{ $t('basicData.yes') }}</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 style="margin-top: 5px;margin-left: 15px;" type="primary" @click="selectproject">{{ $t('Mounting.previewproject') }}</el-button> <el-button style="margin-top: 5px;margin-left: 20px;" type="success" @click="handleBind">{{ $t('basicData.startloading') }}</el-button> <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="warning" @click="handleBinda">{{ $t('basicData.stop') }}</el-button> <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button> <el-select v-model="selectValuesa[1]" clearable :placeholder="$t('Mounting.loadinglinea')" style="margin-top: 5px;margin-left: 20px;" > <el-option :label="$t('Mounting.all')" value="0"></el-option> <el-option :label="$t('Mounting.oneloadingline')" value="1"></el-option> <el-option :label="$t('Mounting.twoloadingline')" value="2"></el-option> </el-select> <el-select v-model="selectValuesa[0]" clearable :placeholder="$t('film.taskstatus')" style="margin-top: 5px;margin-left: 20px;" > <el-option :label="$t('Mounting.waiting')" value="1"></el-option> <el-option :label="$t('film.execution')" value="2"></el-option> <el-option :label="$t('film.finish')" value="3"></el-option> </el-select> <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('Mounting.setparameters') }}</el-button> <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> <el-table height="350" ref="table" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" :data="tableData" > <el-table-column prop="layoutSequence" :label="$t('Mounting.project')" width="100" align="center"/> <el-table-column prop="engineeringId" :label="$t('Mounting.width')" width="200" align="center"/> <el-table-column prop="width" :label="$t('Mounting.height')" align="center"/> <el-table-column prop="height" :label="$t('Mounting.thickness')" align="center"/> <el-table-column prop="filmsId" :label="$t('Mounting.loadinglinea')" align="center"/> <el-table-column :label="$t('Mounting.projectnumber')" align="center"> <template #default="{ row }"> <!-- 这里总是显示 1 --> <span>{{ 1 }}</span> </template> </el-table-column> <el-table-column align="center" :label="$t('Mounting.state')" min-width="80" prop="state" > <template #default="scope"> <el-tag :type="scope.row.state === 100 ? 'success' : 'warning'" @click="toggleEnableState(scope.row)" > {{ scope.row.state === 100 ? $t('Mounting.pass') : $t('Mounting.waiting') }} </el-tag> </template> </el-table-column> <el-table-column prop="filmsId" :label="$t('Mounting.createtime')" align="center"/> </el-table> </div> </el-card> <div style="display: flex;"> <div style="width: 49%;float: left;"> <div style="display: flex;"> <img src="../../assets/shangpianji.png" alt="" style="max-width: 25%;max-height: 25%;margin-left: 10%;margin-top: 5%;"> <el-table :data="tableDataa" border style="width: 75%;margin-top: 10%;margin-left: 2%;" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" > <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60" /> <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80" /> <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80" /> <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80" /> <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80" /> </el-table> </div> </div> <div style="width: 48%;float: right;"> <div style="display: flex;"> <img src="../../assets/shangpianji.png" alt="" style="max-width: 25%;max-height: 25%;margin-left: 10%;margin-top: 5%;"> <el-table :data="tableDataa" border style="width: 75%;margin-top: 10%;margin-left: 2%;" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" > <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60" /> <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80" /> <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80" /> <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80" /> <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80" /> </el-table> </div> </div> </div> <el-dialog v-model="blind" top="30vh" width="25%" :title="$t('basicData.startfilm')"> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handle"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="blind = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> <el-dialog v-model="dialoglea" top="15vh" width="70%" :title="$t('searchOrder.dutyinformation')"> <el-table ref="table" style="margin-top: 20px;height: 300px;" :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="line" fixed align="center" :label="$t('searchOrder.line')"/> <el-table-column prop="workProcesses" fixed align="center" :label="$t('searchOrder.process')" /> <el-table-column prop="teamsGroupsName" align="center" :label="$t('searchOrder.team')"> <template #default="{ row }"> <el-input v-model="row.teamsGroupsName" autocomplete="off" min-width="150"/> </template> </el-table-column> <el-table-column prop="deviceName" align="center" :label="$t('searchOrder.basic')"> <template #default="{ row }"> <el-input v-model="row.deviceName" autocomplete="off" min-width="150"/> </template> </el-table-column> </el-table> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleConfirm"> {{ $t('searchOrder.add') }} </el-button> <el-button @click="dialoglea = false">{{ $t('searchOrder.cancel') }}</el-button> </div> </template> </el-dialog> <el-dialog v-model="blinda" top="24vh" width="30%" :title="$t('basicData.whetherpause')"> <div style="margin-left: 50px;margin-bottom: 10px;"> <el-form-item :label="$t('Mounting.loadingline')" :required="true"> <el-select v-model="loadingline" clearable :placeholder="$t('Mounting.inloadingline')" style="margin-left: 20px;" > <el-option :label="$t('Mounting.all')" value="0"></el-option> <el-option :label="$t('Mounting.oneloadingline')" value="1"></el-option> <el-option :label="$t('Mounting.twoloadingline')" value="2"></el-option> </el-select> </el-form-item> </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleup"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="blinda = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> <el-dialog v-model="add" top="23vh" width="45%" :title="$t('basicData.addglass')" > <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;"> <el-form size="mini" label-width="150px"> <el-form label-width="70px" label-position="right"> <el-row style="margin-top: -15px;margin-bottom: -2px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> <el-form-item :label="$t('basicData.widtha')" :required="true" style="width: 14vw"> <el-select v-model="selectedValue" filterable clearable :placeholder="$t('basicData.selectwidth')" style="width: 220px" @input="handleInputChangea" > <el-option v-for="item in selectOptions" :key="item.id" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </div></div> </el-col> <el-col :span="9"> <div id="dta" style="font-size: 15px;"> <div> <el-form-item :label="$t('basicData.heighta')" :required="true" style="width: 14vw"> <el-select v-model="selectedValuea" filterable clearable :placeholder="$t('basicData.selectheight')" style="width: 220px" @input="handleInputChangea" > <el-option v-for="item in selectOptionsa" :key="item.id" :label="item.label" :value="item.value" /> </el-select> </el-form-item></div> </div> </el-col> </el-row> <el-row style="margin-top: 10px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> <el-form-item :label="$t('basicData.coatingtypesa')" :required="true" style="width: 14vw;"> <el-select v-model="selectedValueb" filterable clearable :placeholder="$t('basicData.selectcoatingtypes')" style="width: 220px" @input="handleInputChangea" > <el-option v-for="item in selectOptionsb" :key="item.id" :label="item.label" :value="item.value" /> </el-select> </el-form-item></div></div> </el-col> <el-col :span="9"> <div id="dta" style="font-size: 15px;"> <div> <el-form-item :label="$t('basicData.thicknessa')" :required="true" style="width: 14vw"> <el-select v-model="selectedValuec" filterable clearable :placeholder="$t('basicData.selectthickness')" style="width: 220px" @input="handleInputChangea" > <el-option v-for="item in selectOptionsc" :key="item.id" :label="item.label" :value="item.value" /> </el-select> <!-- <el-input v-model="patternThickness" autocomplete="off" /> --> </el-form-item></div></div> </el-col> </el-row> <el-row style="margin-top: 10px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> <el-form-item :label="$t('basicData.quantitya')" :required="true" style="width: 14vw;"> <el-input :placeholder="$t('basicData.selectquantity')" v-model="number" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> </el-form> </el-form> </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleConfirm"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="add = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> <el-dialog v-model="adda" top="30vh" width="25%" :title="$t('basicData.deletemessage')"> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleConfirma"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="adda = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> </div> <el-dialog v-model="dialogFormVisible" top="24vh" width="50%" > <div class="flex-container" style="margin-left: 50px;margin-bottom: 10px;"> <el-form-item :label="$t('Mounting.loadingline')" :required="true"> <el-select v-model="loadingline" clearable :placeholder="$t('Mounting.inloadingline')" > <el-option :label="$t('Mounting.oneloadingline')" value="1"></el-option> <el-option :label="$t('Mounting.twoloadingline')" value="2"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('Mounting.projecta')" :required="true"> <el-select v-model="selectedProjectNo" filterable clearable :placeholder="$t('basicData.plselectproject')" style="width: 220px" @input="handleInputChange" > <el-option v-for="item in titleSelectJson['processType']" :key="item.id" :label="item.projectNo" :value="item.projectNo" /> </el-select> </el-form-item> </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleup"> {{ $t('basicData.confirm') }} </el-button> <el-button @click="dialogFormVisible = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> </template> <style scoped> .flex-container { display: flex; align-items: center; /* 垂直居中 */ } .flex-container .el-form-item { flex: 1; /* 使每个表单项占据相等的空间 */ margin-right: 0; /* 移除默认的右侧边距 */ } .flex-container .el-form-item:last-child { margin-left: 20px; /* 为第二个表单项添加左侧边距 */ } #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; } #dotClass { display: flex; margin-left: 20px; size: 50px; margin-top: 20px; margin-bottom: 10px; } </style> UI-Project/src/views/User/permissions.vue
@@ -273,7 +273,7 @@ <el-table :data="props.row.children" border style="width: 100%;margin-left: 20px;" style="width: 100%;margin-left: 120px;" row-key="id" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" > hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -24,13 +24,19 @@ /** * 工程表id */ @TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 工程号 */ private String engineerId; private String engineerId; /** * 设备 */ private String stationCell; /** * 工程名称 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -26,17 +26,29 @@ * @return List<Engineering> */ List<Engineering> selectEngineering(String engineeringId); /** * 保存钢化信息 */ void saveEngineering(List<Engineering> engineering); /** * 查询是否有上片任务 * * @return Engineering */ Engineering selectInitiate(Integer state); /** * 查询是否有上片任务yw * * @return Engineering */ Engineering selectUpInitiate(Integer state, Integer equipmentId); /** * 查询上片任务 * * @return Engineering */ List<Engineering> selectTask(); hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -95,14 +95,19 @@ } @Override public Engineering selectInitiate(Integer state) { public Engineering selectInitiate(Integer state) { //查询是否有开始上片的工程任务 QueryWrapper<Engineering> wrapper = new QueryWrapper<>(); wrapper.eq("state", state); wrapper.eq("state", state); return engineeringMapper.selectOne(wrapper); } @Override public Engineering selectUpInitiate(Integer state, Integer equipmentId) { return null; } @Override public List<Engineering> selectTask() { //查询可开始任务的工程 QueryWrapper<Engineering> wrapper = new QueryWrapper<>(); hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-dev.yml
@@ -5,7 +5,7 @@ strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. datasource: hangzhoumes: url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8 url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8 username: root password: beibo.123/ driver-class-name: com.mysql.cj.jdbc.Driver