| | |
| | | <style> |
| | | .started-row { |
| | | background-color: red; |
| | | } |
| | | |
| | | * { |
| | | margin: 0; |
| | | padding: 0; |
| | |
| | | .cells { |
| | | height: 100%; |
| | | } |
| | | .custom-row-class{ |
| | | |
| | | .custom-row-class { |
| | | background-color: rgb(150, 238, 234) !important; |
| | | } |
| | | |
| | | .file-upload input[type="file"] { |
| | | display: none; |
| | | display: none; |
| | | } |
| | | |
| | | |
| | | .file-upload label { |
| | | padding: 10px; |
| | | background-color: #007bff; |
| | | color: white; |
| | | display: inline-block; |
| | | cursor: pointer; |
| | | padding: 11px; |
| | | background-color: #409EFF; |
| | | border-radius: 3px; |
| | | color: white; |
| | | display: inline-block; |
| | | cursor: pointer; |
| | | } |
| | | </style> |
| | | <template> |
| | |
| | | <div v-for="item in cagelist4" :key="item['id']" |
| | | :style="'display:flex;height:4.55px;position: relative;'"> |
| | | <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' + |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div v-for="item in cagelist3" :key="item['id']" |
| | | :style="'display:flex;height:2.25px;position: relative;'"> |
| | | <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' + |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div v-for="item in cagelist2" :key="item['id']" |
| | | :style="'display:flex;height:2.25px;position: relative;'"> |
| | | <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' + |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div v-for="item in cagelist1" :key="item['id']" |
| | | :style="'display:flex;height:2.25px;position: relative;'"> |
| | | <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' + |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div id="" class="container"> |
| | | <div class="header"> |
| | | <div class="btn"> |
| | | |
| | | |
| | | |
| | | <div class="file-upload"> |
| | | <el-button type="primary" @click="importData()">{{ $t('Save') }}</el-button> |
| | | <!-- 保存 --> |
| | | <el-button type="primary" @click="importData()" |
| | | style="margin-right: 10px;margin-bottom: 10px;">{{ |
| | | $t('Save') }}</el-button> |
| | | <input type="file" id="file-upload" multiple @change="Change" /> |
| | | <label for="file-upload">{{ $t('Select file') }}</label> |
| | | </div> |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | <!-- 此处更改接收的表头名字prop="" --> |
| | | <el-table :data="this.dataList" border style="width: 100%;"> |
| | | <el-table-column prop="Customer" :label="$t('Customer')"></el-table-column> |
| | | <el-table-column prop="order" :label="$t('Order')"></el-table-column> |
| | |
| | | <el-table-column prop="height" :label="$t('Height')"></el-table-column> |
| | | <el-table-column prop="thickness" :label="$t('Thickness')"></el-table-column> |
| | | <el-table-column prop="films" :label="$t('Films')"></el-table-column> |
| | | <el-table-column prop="quantity" :label="$t('No')"></el-table-column> |
| | | <el-table-column prop="quantity" :label="$t('number')"></el-table-column> |
| | | <el-table-column prop="tier" :label="$t('Tier')"></el-table-column> |
| | | <el-table-column prop="matching" :label="$t('Matching')"></el-table-column> |
| | | <el-table-column prop="glasstype" :label="$t('Glasstype')"></el-table-column> |
| | |
| | | $t('Manual removal') }}</el-button> --> |
| | | <el-button type="primary" @click="AnewMeasure()" :disabled="(this.LastQueue.state <= 0)" |
| | | style="z-index: 999;">{{ |
| | | $t('Remeasure') }}</el-button> |
| | | $t('Remeasure') }}</el-button> |
| | | </div> |
| | | <br> |
| | | <!--显示--> |
| | |
| | | <!--玻璃图 #81b337--> |
| | | <div |
| | | :style="'top:10px;bottom: 10px;left: 10px;right: 10px;margin:' + ((720 - (this.LastQueue.glassheight / 25 * 7)) / 2) + 'px auto;width:' |
| | | + (this.LastQueue.glasswidth / 25 * 7) + 'px;height:' |
| | | + (this.LastQueue.glassheight / 25 * 7) + 'px;line-height: ' |
| | | + (this.LastQueue.glassheight / 25 * 7/3) + 'px; background-color: ' |
| | | + (this.LastQueue.state > 0 ? '#4CCCE4' : (this.LastQueue.state == 0 ? '#E4CA4C' : '#E4CA4C')) + ';text-align: center;font-size:50px'"> |
| | | + (this.LastQueue.glasswidth / 25 * 7) + 'px;height:' |
| | | + (this.LastQueue.glassheight / 25 * 7) + 'px;line-height: ' |
| | | + (this.LastQueue.glassheight / 25 * 7 / 3) + 'px; background-color: ' |
| | | + (this.LastQueue.state > 0 ? '#4CCCE4' : (this.LastQueue.state == 0 ? '#E4CA4C' : '#E4CA4C')) + ';text-align: center;font-size:50px'"> |
| | | <div> |
| | | {{ $t('Measure')}} |
| | | {{ $t('Measure') }} |
| | | </div> |
| | | <div> |
| | | {{ $t('Width')+"*"+$t('Height') }}:{{(this.LastQueue.glasswidth + |
| | | this.LastQueue.glassheight) != 0 ? (this.LastQueue.glasswidth + |
| | | "*"+this.LastQueue.glassheight)+"" : ""}} |
| | | {{ $t('Width') + "*" + $t('Height') }}:{{ (this.LastQueue.glasswidth + |
| | | this.LastQueue.glassheight) != 0 ? (this.LastQueue.glasswidth + |
| | | "*" + this.LastQueue.glassheight) + "" : "" }} |
| | | </div> |
| | | |
| | | <div> |
| | | {{ $t('results') }}:{{this.LastState[this.LastQueue.state]}} |
| | | {{ $t('results') }}:{{ this.LastState[this.LastQueue.state] }} |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | |
| | | <!-- 任务队列显示表 --> |
| | | <el-dialog :visible.sync="Taskqueue" :title="$t('Task queue')" top="5vh"> |
| | | <el-table :data="tableData1" style="width: 100%;margin-bottom: 20px;" row-key="id" border lazy |
| | | default-expand-all :tree-props="{ children: 'glassinfo', hasChildren: 'hasChildren' }"> |
| | | <el-table-column prop="flowcard" :label="$t('Order')"> |
| | | :tree-props="{ children: 'glassinfo', hasChildren: 'hasChildren' }"> |
| | | <el-table-column prop="flowcard" :label="$t('Order')" width="150" align="center"> |
| | | <template slot-scope='scope'> |
| | | <div |
| | | > |
| | | {{ scope.row.flowcard }} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="glasstype" :label="$t('GlassType')"> |
| | | <el-table-column prop="glasstype" :label="$t('GlassType')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="number" :label="$t('Order No')"> |
| | | <el-table-column prop="number" :label="$t('Order No')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="cageno" :label="$t('No Of Cage')"> |
| | | <el-table-column prop="cageno" :label="$t('No Of Cage')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="finishnumber" :label="$t('Finish No')"> |
| | | <el-table-column prop="finishnumber" :label="$t('Finish No')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="mateid" :label="$t('Mate No')"> |
| | | <el-table-column prop="mateid" :label="$t('Mate No')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="films" :label="$t('Films')"> |
| | | <el-table-column prop="films" :label="$t('Films')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="thickness" :label="$t('Thickness')"> |
| | | <el-table-column prop="thickness" :label="$t('Thickness')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="width" :label="$t('Width')"> |
| | | <el-table-column prop="width" :label="$t('Width')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="height" :label="$t('Height')"> |
| | | <el-table-column prop="height" :label="$t('Height')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="state" :label="$t('Task State')"> |
| | | <el-table-column prop="state" :label="$t('Task State')" align="center"> |
| | | <template slot-scope='scope'> |
| | | <div |
| | | :style="{ backgroundColor: scope.row.state === 0 ? '' : '#00FFFF', width: '105%', height: '125%',lineHeight: '50px'}"> |
| | | {{ scope.row.state >= 0 ? scope.row.state == 0 ? $t('Stop') : $t('Start') : "" }} |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column prop="state" :label="$t('Task State')" align="center"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.state >= 0 ? scope.row.state == 0 ? $t('Stop') : $t('Start') : "" }} |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column prop="method" :label="$t('Task Method')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.state >= 0 ? scope.row.method == 0 ? $t('Out') : $t('All Out') : "" }} |
| | |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;margin-left: 6px;" |
| | | v-show="scope.row.state >= 0 ? true : false" |
| | | @click="ClaimTasks(scope.row.flowcard, scope.row.state, selected[scope.$index],scope.row.line)"> |
| | | @click="ClaimTasks(scope.row.flowcard, scope.row.state, selected[scope.$index], scope.row.line)"> |
| | | {{ scope.row.state > 0 ? $t('Stop Task') : $t('Start Task') }}</el-button> |
| | | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | |
| | | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | v-show="scope.row.state >= 0 ? true : false" @click="StartChange(scope.row.flowcard)"> |
| | | {{ $t('start work') }}</el-button> |
| | | {{ scope.row.orderstate > 0 ? $t('start work') : $t('start work') }}</el-button> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | v-show="scope.row.state >= 0 ? true : false" |
| | | @click="deleteTasks(scope.row.flowcard)"> |
| | | {{ $t('langDelete') }}</el-button> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue, |
| | | isAllowReorderings, |
| | | |
| | | UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue, importData, ManualTake, AnewMeasure,StartChange |
| | | UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue, importData, ManualTake, AnewMeasure, StartChange, deleteTasks |
| | | } from "../../api/home"; |
| | | |
| | | |
| | |
| | | data() { |
| | | return { |
| | | carposition: 0, |
| | | selected: [], |
| | | // selected: [], |
| | | selected: Array.from({ length: 1000 }, () => 1), |
| | | // selected: '1', |
| | | options: [{ |
| | | value: '1', |
| | | label: '1' |
| | | }, { |
| | | value: '2', |
| | | label: '2' |
| | | }], |
| | | // mounted() { |
| | | // this.selected[scope.$index] = '1'; // 假设你想让第一个下拉框默认选中 '选项 1' |
| | | // }, |
| | | dataList: [], |
| | | tableData1: [], |
| | | Measuermode: false, |
| | |
| | | Scanningmethod: true, |
| | | CurrrentGlassId: "", |
| | | LastQueue: {}, |
| | | LastState: ["",this.$t('Matching successful'),this.$t('Multiple data matching'),this.$t('Matching failed')] |
| | | LastState: ["", this.$t('Matching successful'), this.$t('Multiple data matching'), this.$t('Matching failed')] |
| | | }; |
| | | }, |
| | | created() { |
| | |
| | | }; |
| | | // 浏览器端收消息,获得从服务端发送过来的文本消息 |
| | | socket.onmessage = function (msg) { |
| | | //console.log("收到数据====" + msg.data); |
| | | // console.log("收到数据====" + msg.data); |
| | | let obj = JSON.parse(msg.data); |
| | | if (obj.carposition != null) { |
| | | this.carposition = obj.carposition[0]; |
| | |
| | | }, |
| | | //领取/暂停任务 |
| | | ClaimTasks(flowcard, state, line, taksline) { |
| | | if(line===undefined&&state==1){ |
| | | if (line === undefined && state == 1) { |
| | | this.$message.error(this.$t('Please select a route')); |
| | | } |
| | | if(line===undefined&&state==0){ |
| | | if (line === undefined && state == 0) { |
| | | this.$message.error(this.$t('Please select a route')); |
| | | }else{ |
| | | if(line===undefined||state==1){ |
| | | line=taksline; |
| | | } else { |
| | | if (line === undefined || state == 1) { |
| | | line = taksline; |
| | | } |
| | | ClaimTasks(flowcard, state, line).then(res => { |
| | | |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | }else{ |
| | | this.$message.error(this.$t('This route already has a task')); |
| | | } |
| | | }); |
| | | |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.error(this.$t('This route already has a task')); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | }, |
| | | //修改出片方式 |
| | | ModeChange(flowcard, method) { |
| | |
| | | },//选择开始工程 |
| | | StartChange(flowcard) { |
| | | StartChange(flowcard).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }, |
| | | //选择开始工程 |
| | | deleteTasks(flowcard) { |
| | | deleteTasks(flowcard).then(res => { |
| | | console.log("@"+flowcard+"@"); |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | |
| | | this.StorageCageAdd = true; |
| | | }, |
| | | rowClassName({ row, rowIndex }) { |
| | | if (row.glasstype!=0&&row.glasstype == this.LastQueue.glasstype) { |
| | | if (row.glasstype != 0 && row.glasstype == this.LastQueue.glasstype) { |
| | | console.log(rowIndex); |
| | | return 'custom-row-class'; |
| | | } else { |