| | |
| | | } |
| | | |
| | | .occupy { |
| | | height: 100%; |
| | | width: 10%; |
| | | height: 50%; |
| | | width: 45%; |
| | | background-color: white; |
| | | margin: 0px 8px 0px 8px; |
| | | border: 1px #EBEEF5 solid; |
| | |
| | | } |
| | | |
| | | .blocks { |
| | | background-image: url('../../img/xmjc.png'); |
| | | margin: 0 auto; |
| | | background-image: url('../../img/device.png'); |
| | | /* margin: 0 auto; */ |
| | | /* clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); */ |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | | min-height: 55vh; |
| | | width: 1400px; |
| | | max-width: 94vw; |
| | | background-size: 1200px 510px; |
| | | margin: 0 auto; |
| | | min-height: 118vh; |
| | | width: 1124px; |
| | | max-width: 57%; |
| | | background-size: 1050px 1400px; |
| | | margin-top: -280px; |
| | | overflow: hidden; |
| | | /* width: 1660px; |
| | | max-width: 100vw; |
| | | background-size: 1660px 560px; */ |
| | |
| | | } |
| | | |
| | | .blocks-img { |
| | | height: 88px; |
| | | line-height: 90px; |
| | | color: white; |
| | | height: 900px; |
| | | max-width: 100vw; |
| | | background-repeat: no-repeat; |
| | | background-attachment: local; |
| | | width: 32px; |
| | | width: 1200px; |
| | | position: absolute; |
| | | background-image: url('../../img/bigcar01.png'); |
| | | background-size: 40px 87px; |
| | | /* background-size: 46px 94px; */ |
| | | background-image: url(/img/car.c2f92670.png); |
| | | background-size: 800px 1200px; |
| | | } |
| | | |
| | | .blocks-img2 { |
| | |
| | | font-size: 25px; |
| | | } |
| | | |
| | | /* |
| | | @media screen and (min-width: 1900px) { |
| | | .blocks { |
| | | transform: scale(1.5, 1.05); |
| | | width: 1210px; |
| | | } |
| | | } |
| | | } */ |
| | | |
| | | .el-message-box__btns { |
| | | padding: 0px 15px 0; |
| | |
| | | height: 15px; |
| | | position: absolute; |
| | | } |
| | | |
| | | /* |
| | | |
| | | */ |
| | | #fileinput .container { |
| | | width: 800px; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | #fileinput .header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | #fileinput table { |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | border: 1px solid; |
| | | } |
| | | |
| | | #fileinput tr, |
| | | #fileinput th, |
| | | #fileinput td { |
| | | border: 1px solid #000; |
| | | padding: 5px; |
| | | } |
| | | |
| | | #fileinput button { |
| | | border: none; |
| | | padding: 5px; |
| | | background-color: #00a297; |
| | | color: #fff; |
| | | border-radius: 5px; |
| | | cursor: pointer; |
| | | margin: 0 5px; |
| | | } |
| | | |
| | | #fileinput tr:nth-child(2n) { |
| | | background-color: #dcdcdc; |
| | | } |
| | | |
| | | #fileinput .hide { |
| | | display: none; |
| | | } |
| | | |
| | | #fileinput .c1 { |
| | | position: fixed; |
| | | top: 0; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | background: rgba(0, 0, 0, .5); |
| | | z-index: 2; |
| | | } |
| | | |
| | | #fileinput .c2 { |
| | | background-color: white; |
| | | position: fixed; |
| | | width: 400px; |
| | | height: 300px; |
| | | top: 50%; |
| | | left: 50%; |
| | | z-index: 3; |
| | | margin-top: -150px; |
| | | margin-left: -200px; |
| | | } |
| | | </style> |
| | | <template> |
| | | <el-container> |
| | |
| | | </label> |
| | | </div> |
| | | </div> |
| | | <div style="display:flex;justify-content: space-around;width: 9zz5%;margin: 0 auto;"> |
| | | <!-- <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1" |
| | | :class="ManuallyInfeedGlass == true ? 'hide' : ''"></el-input> --> |
| | | <el-button type="primary" @click="SelectGlassByGlassIDs()" :disabled="ManuallyInfeedGlass" |
| | | :class="ManuallyInfeedGlass == true ? 'hide' : ''"> |
| | | {{ $t('Manually Infeed Glass') }}</el-button> |
| | | <el-button type="primary" @click="showform2()" :disabled="OrderInfo" |
| | | :class="OrderInfo == true ? 'hide' : ''">{{ $t('Order Info') |
| | | }}</el-button> |
| | | <el-button type="primary" @click="showform6()" :disabled="OutingQueue" |
| | | :class="OutingQueue == true ? 'hide' : ''"> |
| | | {{ $t('Outing Queue') }}</el-button> |
| | | <el-button type="primary" @click="TaskStop(0)" :disabled="OutingQueue" |
| | | :class="StopTask == true ? 'hide' : ''"> |
| | | {{ $t('Terminate Feeding') }}</el-button> |
| | | <el-button type="primary" @click="TaskStop(1)" :disabled="StopTask" :class="StopTask == true ? 'hide' : ''"> |
| | | {{ $t('Terminate Outing') }}</el-button> |
| | | <el-button type="primary" @click="SoftEmergencyStop()" :disabled="SoftEmergencyStopState" |
| | | <div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;"> |
| | | <el-button type="primary" @click="showform(1)" :disabled="SoftEmergencyStopState" style="z-index: 999;" |
| | | :class="SoftEmergencyStopState == true ? 'hide' : ''"> |
| | | {{ $t('SoftEmergencyStop') }}</el-button> |
| | | <!-- <el-input style="width:15%;" :placeholder="$t('Enter the Order No')" v-model="order"></el-input> |
| | | <el-button type="warning" @click="showform1();">{{ $t('Exit the glass by order number') }}</el-button> --> |
| | | </div> |
| | | <div> |
| | | <el-table :data="this.tasklist1" border style="width: 100%"> |
| | | <el-table-column :min-width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column> |
| | | <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column> |
| | | <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column> |
| | | <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column> |
| | | <el-table-column prop="orderId" :label="$t('List No')"></el-table-column> |
| | | <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column> |
| | | <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :label="$t('Terminate Task')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('Terminate Task') |
| | | }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-table :data="this.tasklist2" border style="width: 100%"> |
| | | <el-table-column :min-width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column> |
| | | <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column> |
| | | <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column> |
| | | <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column> |
| | | <el-table-column prop="orderId" :label="$t('List No')"></el-table-column> |
| | | <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column> |
| | | <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }} |
| | | </template> |
| | | </el-table-column> |
| | | {{ $t('Import order') }}</el-button> |
| | | |
| | | <el-table-column :label="$t('Terminate Task')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('Terminate Task') |
| | | }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-button type="primary" @click="showform(2)" :disabled="SoftEmergencyStopState" style="z-index: 999;" |
| | | :class="SoftEmergencyStopState == true ? 'hide' : ''"> |
| | | {{ $t('Measure') }}</el-button> |
| | | |
| | | <el-button type="primary" @click="showform(3)" :disabled="SoftEmergencyStopState" style="z-index: 999;" |
| | | :class="SoftEmergencyStopState == true ? 'hide' : ''"> |
| | | {{ $t('StorageCage') }}</el-button> |
| | | <el-button type="primary" @click="showform(4)" :disabled="SoftEmergencyStopState" style="z-index: 999;" |
| | | :class="SoftEmergencyStopState == true ? 'hide' : ''"> |
| | | {{ $t('Task queue') }}</el-button> |
| | | |
| | | </div> |
| | | <div style="padding: 10px;display: flex;height:85px;"> |
| | | <div v-for="item in tableData" :key="item['cageno']" class="occupy"> |
| | | <el-col style="text-align:left;font-weight: bold;">#{{ item['cage'] }}</el-col> |
| | | <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> |
| | | <span class="biao">{{ $t('Usage') }}</span><span class="zhi">{{ item['cell'] }}%</span> |
| | | </el-col> |
| | | <hr style="width:80%;margin: 0 auto;" /> |
| | | <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> |
| | | <span class="biao">{{ $t('Space (Pieces)') }}</span><span class="zhi">{{ item['state'] }}</span> |
| | | </el-col> |
| | | </div> |
| | | </div> |
| | | </el-main> |
| | | <el-footer> |
| | | <div class="blocks" style="position: relative;"> |
| | | <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:237px;"> |
| | | <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist1" :key="item['date']" |
| | | :style="{ height: 35 * item['glassWidth'] + 'px', left: 3.07 * index + Math.abs(item['cage'] - 10) * 6.8 + 'px' }" |
| | | @click="showcageinfo(item['cage'])"></div> |
| | | </div> |
| | | <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:640px;"> |
| | | <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist2" :key="item['date']" |
| | | :style="{ height: 35 * item['glassWidth'] + 'px', left: 3.07 * index + Math.abs(item['cage'] - 5) * 6.8 + 'px' }" |
| | | @click="showcageinfo(item['cage'])"></div> |
| | | </div> |
| | | <div style="display:flex;position: absolute;float:left;z-index: 999;top:139px;left:237px;"> |
| | | <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist3" :key="item['date']" |
| | | :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px', left: 3.07 * index + Math.abs(item['cage'] - 10) * 6.8 + 'px' }" |
| | | @click="showcageinfo(item['cage'])"> |
| | | <div style="display: flex;align-items: center;"> |
| | | <div class="blocks" style="position: relative;width: 100%;"> |
| | | <div class="blocks-img" :style="'z-index:999;left:150px;top:555px;'"> |
| | | |
| | | </div> |
| | | <div |
| | | :style="'position: absolute;z-index:999;left:271px;top:987px;width:210px;height:38px;background-color:' + ShowDeviceList(0) + ';;'"> |
| | | </div> |
| | | <div |
| | | :style="'position: absolute;z-index:999;left:553px;top:956px;width:110px;height:74px;background-color:' + ShowDeviceList(0) + ';;'"> |
| | | </div> |
| | | <div |
| | | :style="'position: absolute;z-index:999;left:800px;top:450px;width:115px;height:30px;background-color:' + ShowDeviceList(0) + ';;'"> |
| | | </div> |
| | | <div |
| | | :style="'position: absolute;z-index:999;left:800px;top:675px;width:115px;height:30px;background-color:' + ShowDeviceList(0) + ';;'"> |
| | | </div> |
| | | <div |
| | | :style="'position: absolute;z-index:999;left:740px;top:930px;width:230px;height:90px;background-color:' + ShowDeviceList(0) + ';;'"> |
| | | <div v-for="item in cagelist1" :key="item['number']"> |
| | | <div v-for="(num) in item['number']" :key="num"> |
| | | 1 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div style="display:flex;position: absolute;float:left;z-index: 999;top:139px;left:640px;"> |
| | | <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist4" :key="item['date']" |
| | | :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px', left: 3.07 * index + Math.abs(item['cage'] - 5) * 6.8 + 'px' }" |
| | | @click="showcageinfo(item['cage'])"></div> |
| | | </div> |
| | | <div class="blue gezi" |
| | | :style="{ display: 'flex', position: 'absolute', float: 'left', top: 28 + 'px', left: 1050 + 'px', height: loadglassheight1 + 'px', width: 4 + 'px' }"> |
| | | </div> |
| | | <div class="blue gezi" |
| | | :style="{ display: 'flex', position: 'absolute', float: 'left', top: 105 + 'px', left: 1050 + 'px', height: loadglassheight2 + 'px', width: 4 + 'px' }"> |
| | | </div> |
| | | |
| | | <div class="blocks-img2"></div> |
| | | <div class="blocks-img3"></div> |
| | | |
| | | <div class="device" :style="'top: 25px;left: 1027px;background-color: ' + ShowDeviceList(0) + ';'">D01</div> |
| | | <div class="device" :style="'top: 105px;left: 1027px;background-color: ' + ShowDeviceList(1) + ';'">D02 |
| | | </div> |
| | | <div class="device" :style="'top: 102px;left: 605px;background-color: ' + ShowDeviceList(2) + ';'">B01</div> |
| | | <div class="device" :style="'top: 102px;left: 197px;background-color: ' + ShowDeviceList(3) + ';'">B02</div> |
| | | <div class="blocks-img" :style="'left:' + car2 + 'px;top:175px;background-color:' + ShowDeviceList(4) + ''"> |
| | | A01</div> |
| | | <div class="blocks-img" :style="'left:' + car1 + 'px;top:16px;background-color:' + ShowDeviceList(5) + ''"> |
| | | A02</div> |
| | | <div class="device" :style="'top: 108px;left: 150px;background-color: ' + ShowDeviceList(6) + ';'">D03</div> |
| | | <div class="device" :style="'top: 185px;left: 150px;background-color: ' + ShowDeviceList(7) + ';'">D04</div> |
| | | <div class="device" :style="'top: 262px;left: 150px;background-color: ' + ShowDeviceList(8) + ';'">D05</div> |
| | | <div class="device" :style="'top: 339px;left: 150px;background-color: ' + ShowDeviceList(9) + ';'">D06</div> |
| | | |
| | | <div class="device" :style="'top: 395px;left: 90px;background-color: ;'">E01</div> |
| | | <div class="device" :style="'top: 395px;left: 243px;background-color: ;'">E02</div> |
| | | <div class="device" :style="'top: 395px;left: 395px;background-color: ;'">E03</div> |
| | | <div class="device" :style="'top: 345px;left: 655px;background-color: ;'">E04</div> |
| | | <div class="device" :style="'top: 345px;left: 810px;background-color: ;'">E05</div> |
| | | <div class="device" :style="'top: 345px;left: 960px;background-color: ;'">E06</div> |
| | | |
| | | <div class="device" :style="'top: 345px;left: 525px;background-color: ;'">J01</div> |
| | | <div class="device" :style="'top: 345px;left: 1100px;background-color: ;'">F01</div> |
| | | <div class="device" :style="'top: 275px;left: 1100px;background-color: ;'">G01</div> |
| | | |
| | | <div class="glass D01" style="top: 39px;left: 1055px;position: absolute;">{{ ShowGlassIdList(0) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.2', 0)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | <div class="glass D02" style="top: 117px;left: 1055px;position: absolute;">{{ ShowGlassIdList(1) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.2', 1)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | <div class="glass B01" style="top: 270px;left: 640px;position: absolute;"> |
| | | B01:{{ ShowGlassIdList(2) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.2', 2)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | <div class="glass B02" style="top: 315px;left: 640px;position: absolute;">B02:{{ ShowGlassIdList(3) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.3', 3)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | <div class="glass A01" style="top: 270px;left: 289px;position: absolute;"> |
| | | A01.1:{{ ShowGlassIdList(4) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.0', 4)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | |
| | | <div class="glass A01" style="top: 315px;left: 289px;position: absolute;">A01.2:{{ ShowGlassIdList(5) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.0', 5)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | |
| | | <div class="glass A02" style="top: 360px;left: 289px;position: absolute;">A02:{{ ShowGlassIdList(6) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.1', 6)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | |
| | | <div class="glass D03" style="top: 122px;left: 42px;position: absolute;"> |
| | | {{ ShowGlassIdList(7) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.4', 7)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | <div class="glass D04" style="top: 198px;left: 42px;position: absolute;"> |
| | | {{ ShowGlassIdList(8) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.5', 8)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | <div class="glass D05" style="top: 275px;left: 42px;position: absolute;"> |
| | | {{ ShowGlassIdList(9) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.6', 9)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | <div class="glass D06" style="top: 352px;left: 42px;position: absolute;"> |
| | | {{ ShowGlassIdList(10) }} |
| | | <br /> |
| | | <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.5', 10)"> |
| | | {{ $t('Clear') }}</el-button> |
| | | </div> |
| | | |
| | | |
| | | </div> |
| | | </el-footer> |
| | | <el-dialog :visible.sync="dialogFormVisible" :title="$t('Please confirm the glass information')"> |
| | | <el-form :model="form" label-width="100px" style="padding-right: 30px"> |
| | | <el-form-item :label="$t('Barcode')"> |
| | | <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid"></el-input> |
| | | <el-button type="primary" @click="showform(3)">{{ $t('Query') }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Barcode')"> |
| | | <el-input v-model="form.glassId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Order No')"> |
| | | <el-input v-model="form.orderId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('List No')"> |
| | | <el-input v-model="form.listId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Box No')"> |
| | | <el-input v-model="form.boxId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Length')"> |
| | | <el-input v-model="form.glasswidthmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Width')"> |
| | | <el-input v-model="form.glassheightmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Length')"> |
| | | <el-input v-model="form.glasswidth" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Width')"> |
| | | <el-input v-model="form.glassheight" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <!-- <el-button @click="sbumitglassid()" :style="{ display: confirm1 == true ? '' : 'none' }" |
| | | type="primary">{{ |
| | | $t('confirm') }}</el-button> --> |
| | | <el-button @click="FeedInglassid()" :style="{ display: confirm2 == true ? '' : 'none' }" |
| | | type="primary">{{ |
| | | $t('confirm') }}</el-button> |
| | | <el-button @click="cancel()">{{ $t('cancel') }}</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <el-dialog :visible.sync="dialogFormVisible1" :title="$t('Please confirm the Ordering Information')"> |
| | | <el-form :model="form1" label-width="100px" style="padding-right: 30px"> |
| | | <el-form-item :label="$t('Order No')"> |
| | | <el-input v-model="form1.order" autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Number')"> |
| | | <el-input v-model="form1.number" autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="getOrder();" type="primary">{{ $t('confirm') }}</el-button> |
| | | <el-button @click="cancel1()">{{ $t('cancel') }}</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')"> |
| | | <el-table :data="this.alarm" border style="width: 100%;font-size: 25px;"> |
| | | <el-table-column prop="id" :label="$t('id')"></el-table-column> |
| | | <el-table-column prop="content" :label="$t('content')"></el-table-column> |
| | | <el-table-column prop="timeons" :label="$t('timeon')"></el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | |
| | | <el-dialog :visible.sync="dialogFormVisible3" :title="$t('Cage Details')" top="5vh"> |
| | | <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="cageglassid"></el-input> |
| | | <el-button type="primary" @click="showcageinfo(1)">{{ $t('Query') }}</el-button> |
| | | <el-table :data="cageinfo.slice((currentPages - 1) * pagesizes, currentPages * pagesizes)" :height="700" border |
| | | style="width: 100%;overflow: auto;"> |
| | | <el-table-column :min-width="50" prop="cage" :label="$t('Cage No')"></el-table-column> |
| | | <el-table-column :min-width="50" prop="cell" :label="$t('Slot No')"></el-table-column> |
| | | <el-table-column :min-width="55" prop="tier" :label="$t('The Side')"> |
| | | <template slot-scope='scope'> |
| | | {{ |
| | | scope.row.tier == 1 ? $t('Inside') : $t('Outside') |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :min-width="145" prop="glassId" :label="$t('Barcode')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="orderId" :label="$t('Order No')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="listId" :label="$t('List No')"></el-table-column> |
| | | <el-table-column :min-width="50" prop="boxId" :label="$t('Box No')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="state" :label="$t('Glass State')"> |
| | | <template slot-scope='scope'> |
| | | {{ |
| | | scope.row.state == 1 ? $t('Normal') : scope.row.state == 2 ? $t('Entering') : scope.row.state == 3 ? |
| | | $t('Outing') : "" |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.glassWidthMm }}{{ scope.row.glassWidthMm > 0 ? "*" : "" }}{{ scope.row.glassHeightMm }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column :min-width="80" prop="lengthWidth" :label="$t('State')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :min-width="250" :label="$t('Operate')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="scope.row.state == 1 ? false : true" |
| | | @click="deleteglass(scope.row.glassId, scope.row.state)">{{ $t('Delete') }}</el-button> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="scope.row.state == 1 ? false : true" |
| | | @click="outglass(scope.row.glassId, scope.row.state)">{{ $t('Out') }}</el-button> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)"> |
| | | {{ scope.row.disabled == 0 ? $t('Disable') : $t('Enable') }}</el-button> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="scope.row.glassId != null ? true : false" |
| | | @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('Add') |
| | | }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <el-pagination :style="'margin-top:-2px'" @size-change="handleSizeChanges" |
| | | @current-change="handleCurrentChanges" :pager-count="7" :current-page="currentPages" |
| | | :page-sizes="[42, 84, 126, 420]" :page-size="pagesizes" layout="total, sizes, prev, pager, next, jumper" |
| | | :total="cageinfo.length > 0 ? cageinfo.length : null" background style="float: right; margin-top: 20px"> |
| | | </el-pagination> |
| | | |
| | | </el-dialog> |
| | | |
| | | <el-dialog :visible.sync="dialogFormVisible4" :title="$t('Order Info')" top="5vh"> |
| | | <el-input style="width:15%;" :placeholder="$t('Enter the Order No')" v-model="orderid"></el-input> |
| | | <el-button type="primary" @click="selectglassinfo()">{{ $t('Query') }}</el-button> |
| | | <el-table :data="GlassInfo.slice((currentPage - 1) * pagesize, currentPage * pagesize) |
| | | " :height="700" border style="width: 100%;overflow: auto;"> |
| | | <el-table-column prop="barcode" :label="$t('Barcode')"></el-table-column> |
| | | <el-table-column prop="ordernumber" :label="$t('Order No')"></el-table-column> |
| | | <el-table-column prop="listnumber" :label="$t('List No')"></el-table-column> |
| | | <el-table-column prop="boxnumber" :label="$t('Box No')"></el-table-column> |
| | | <el-table-column prop="frameBarcode" :label="$t('Frame No')"></el-table-column> |
| | | <el-table-column prop="glasslength" :label="$t('Length')"></el-table-column> |
| | | <el-table-column prop="glassheight" :label="$t('Width')"></el-table-column> |
| | | </el-table> |
| | | <el-pagination :style="'margin-top:-2px'" @size-change="handleSizeChange" @current-change="handleCurrentChange" |
| | | :pager-count="7" :current-page="currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pagesize" |
| | | layout="total, sizes, prev, pager, next, jumper" :total="GlassInfo.length > 0 ? GlassInfo.length : null" |
| | | background style="float: right; margin-top: 20px"> |
| | | </el-pagination> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="dialogFormVisible5" :title="$t('Please confirm the glass information')"> |
| | | <el-form :model="form" label-width="100px" style="padding-right: 30px"> |
| | | <div style="display: flex;justify-content: center;"> |
| | | <el-form-item> |
| | | {{ $t('Confirm State') }}:{{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }} |
| | | <el-button type="primary" @click="isConfirmState()"> |
| | | {{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | {{ $t('Current State') }}:{{ this.Scanningmethod == false ? $t('Automatic') : $t('Hand Movement') }} |
| | | <el-button type="primary" @click="SwitchScanMethod()">{{ $t('Switch') |
| | | }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-input style="width:70%;" maxlength="13" :placeholder="$t('Enter the glass barcode')" |
| | | v-model="glassid1"></el-input> |
| | | <el-button type="primary" :disabled="!Scanningmethod" @click="WriteGlassID()">{{ $t('Add') |
| | | }}</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | {{ $t('Barcode') }}: |
| | | <el-input style="width:70%;" maxlength="14" :disabled="true" v-model="CurrrentGlassId"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <label for="">{{ $t('Upper film position') }}</label> |
| | | |
| | | <label for="">{{ $t('Scan Code Point') }}</label> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-around;height: 40px;"> |
| | | <label for="">{{ $t('current Information') }}</label> |
| | | <label for="">{{ $t('Modify Information') }}</label> |
| | | <label for="">{{ $t('current Information') }}</label> |
| | | <label for="">{{ $t('Modify Information') }}</label> |
| | | </div> |
| | | |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-form-item :label="$t('Barcode')"> |
| | | <el-input v-model="form2.glassId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Barcode')"> |
| | | <el-input v-model="form4.glassId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Barcode')"> |
| | | <el-input v-model="form3.glassId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Barcode')"> |
| | | <el-input v-model="form5.glassId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-form-item :label="$t('Order No')"> |
| | | <el-input v-model="form2.orderId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Order No')"> |
| | | <el-input v-model="form4.orderId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Order No')"> |
| | | <el-input v-model="form3.orderId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Order No')"> |
| | | <el-input v-model="form5.orderId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-form-item :label="$t('List No')"> |
| | | <el-input v-model="form2.listId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('List No')"> |
| | | <el-input v-model="form4.listId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('List No')"> |
| | | <el-input v-model="form3.listId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('List No')"> |
| | | <el-input v-model="form5.listId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-form-item :label="$t('Box No')"> |
| | | <el-input v-model="form2.boxId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Box No')"> |
| | | <el-input v-model="form4.boxId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Box No')"> |
| | | <el-input v-model="form3.boxId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Box No')"> |
| | | <el-input v-model="form5.boxId" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-form-item :label="$t('Length')"> |
| | | <el-input v-model="form2.glasswidthmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Length')"> |
| | | <el-input v-model="form4.glasswidthmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Length')"> |
| | | <el-input v-model="form3.glasswidthmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Length')"> |
| | | <el-input v-model="form5.glasswidthmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-around;"> |
| | | <el-form-item :label="$t('Width')"> |
| | | <el-input v-model="form2.glassheightmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Width')"> |
| | | <el-input v-model="form4.glassheightmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Width')"> |
| | | <el-input v-model="form3.glassheightmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('Width')"> |
| | | <el-input v-model="form5.glassheightmm" readonly autocomplete="off" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex;justify-content: right;"> |
| | | <el-button @click="InsertQueueGlass(1)" style="margin-right: 100px;" type="primary" |
| | | :disabled="disabled1"> |
| | | {{ $t('Confirm') }}</el-button> |
| | | </div> |
| | | </el-form> |
| | | </el-dialog> |
| | | |
| | | <el-dialog :visible.sync="dialogFormVisible6" :title="$t('Outing Queue')" top="5vh"> |
| | | {{ $t('Queue State') }}: |
| | | {{ this.isAllowQueue |
| | | == true ? $t('Start') : $t('Stop') |
| | | }} |
| | | <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue |
| | | == true ? $t('Stop') : $t('Start') |
| | | }}</el-button> |
| | | <!-- {{ $t('Sorting State') }}: |
| | | {{ |
| | | this.isAllowReordering == true ? $t('Not Allow') : $t('Allow') |
| | | }} |
| | | <el-button type="primary" @click="isAllowReorderings()" :disabled="this.isAllowQueue">{{ |
| | | this.isAllowReordering == true ? $t('Allow') : $t('Not Allow') |
| | | }}</el-button> --> |
| | | <!-- <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input> --> |
| | | <el-button type="primary" @click="showform7()">{{ $t('Add') }}</el-button> |
| | | <label style="background-color:yellow;font-size: 23px;" for=""> |
| | | {{ isQueueWarning == true ? $t('The slot is disabled') : "" }} |
| | | </label> |
| | | <div style="display:flex;"> |
| | | <div style="width:70%;"> |
| | | <el-table :data="this.OutSlice" :height="700" :span-method="objectSpanMethod" border |
| | | :cell-style="cellStyle" style="width: 100%;overflow: auto;font-size: 18px;"> |
| | | <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column> |
| | | <el-table-column :min-width="175" prop="glassId" :label="$t('Barcode')"></el-table-column> |
| | | <el-table-column :min-width="70" prop="orderId" :label="$t('Order No')"></el-table-column> |
| | | <el-table-column :min-width="70" prop="listId" :label="$t('List No')"></el-table-column> |
| | | <el-table-column :min-width="70" prop="boxId" :label="$t('Box No')"></el-table-column> |
| | | <el-table-column :min-width="100" prop="glasswidthmm" :label="$t('Length')"></el-table-column> |
| | | <el-table-column :min-width="100" prop="glassheightmm" :label="$t('Width')"></el-table-column> |
| | | <el-table-column :min-width="90" prop="state" :label="$t('Glass State')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.state == 0 ? $t('Waiting') : scope.row.state == 1 ? $t('Outing') : |
| | | scope.row.state |
| | | == 2 |
| | | ? $t('Outed') : scope.row.state == 3 ? $t('Absent') : $t('Completed') }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="sequence" :label="$t('Sequence')"></el-table-column> |
| | | <el-table-column :min-width="90" prop="barcode" :label="$t('Complete')"> |
| | | <template slot-scope='scope' style="height:100px;height:100px;"> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="!(!isAllowQueue && scope.row.state != 1 && scope.row.state != 2)" |
| | | @click="CompleteQueue(scope.row.id, scope.row.barcode, scope.row.glassId)">{{ |
| | | $t('Complete') |
| | | }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column :width="100" :label="$t('Operate')"> |
| | | <div> |
| | | <div style="padding: 10px;display: flex;height: 300px;flex-wrap: wrap;"> |
| | | <div v-for="item in tableData" :key="item['cageno']" class="occupy"> |
| | | <el-col style="text-align:left;font-weight: bold;">#{{ item['cage'] }}</el-col> |
| | | <el-col |
| | | style="text-align:left;display:flex;justify-content: space-between;align-items: center;height: 70px;"> |
| | | <span class="biao">{{ $t('Usage') }}</span><span class="zhi">{{ item['width'] }}%</span> |
| | | </el-col> |
| | | <hr style="width:80%;margin: 0 auto;" /> |
| | | <el-col |
| | | style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> |
| | | <span class="biao">{{ $t('Space (Pieces)') }}</span><span class="zhi">{{ item['cell'] |
| | | }}</span> |
| | | </el-col> |
| | | </div> |
| | | </div> |
| | | <el-table :data="this.tasklist1" border style="width: 700px;"> |
| | | <el-table-column prop="glasstype" :label="$t('Glasstype')"></el-table-column> |
| | | <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column> |
| | | <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column> |
| | | <el-table-column prop="storageCage.glassWidth" :label="$t('Width')"></el-table-column> |
| | | <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column> |
| | | <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column> |
| | | <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column> |
| | | <el-table-column :min-width="100" :label="$t('Terminate Task')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="isAllowQueue" @click="deleteproductionqueueglass(scope.row.barcode)">{{ |
| | | $t('Delete') }}</el-button> |
| | | @click="FinishTask(0, scope.row.id)">{{ $t('Complete') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-table :data="this.tasklist2" border style="width: 100%"> |
| | | <el-table-column prop="glassId" :label="$t('Glasstype')"></el-table-column> |
| | | <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column> |
| | | <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column> |
| | | <el-table-column prop="storageCage.glassWidth" :label="$t('Width')"></el-table-column> |
| | | <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column> |
| | | <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column> |
| | | <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column> |
| | | |
| | | <el-table-column :min-width="100" :label="$t('Terminate Task')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | @click="FinishTask(1, scope.row.id)">{{ $t('Complete') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div style="width:30%;" v-for="(item) in CurrentFrame" :key="item['barcode']"> |
| | | <el-button style="margin-left: 42%;" type="primary" @click="FrameStateUpdate(item['barcode'])">{{ |
| | | $t('Next') }}</el-button> |
| | | <h1 style="font-size: 40px;text-align: center;">{{ $t('Current Frame') }}:{{ item['barcode'] }}</h1> |
| | | <h1 style="font-size: 30px;text-align: center;"> |
| | | {{ item['flip'] == true ? $t('EXTERIQR OUT AND BYPASS TO THE LEFT') |
| | | : $t('EXTERIQR OUT AND BYPASS TO THE RIGHT') }} |
| | | </h1> |
| | | <h1 style="font-size: 30px;text-align: center;">{{ item['framewidthmm'] }}*{{ item['frameheightmm'] }} |
| | | </h1> |
| | | |
| | | <div class="frame" :style="'background-color: green;margin-top:30px;margin:0 auto;width: ' + |
| | | FrameWidthHeight('before', item['framewidthmm'], item['frameheightmm'], item['position']) + 'px;height:' + |
| | | FrameWidthHeight('after', item['framewidthmm'], item['frameheightmm'], item['position']) + 'px;' |
| | | "> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | </el-main> |
| | | <el-dialog :visible.sync="Importorder" :title="$t('Import order')" top="5vh"> |
| | | <!--文件导入数据页面--> |
| | | <div id="fileinput" class="container"> |
| | | <div class="header"> |
| | | <div class="btn"> |
| | | <button @click="AllAdd">保存</button> |
| | | </div> |
| | | <div class="inp"> |
| | | <input type="file" id="uploadExcel" multiple @change="Change" /> |
| | | </div> |
| | | </div> |
| | | <table id="table"> |
| | | <thead> |
| | | <tr> |
| | | <th>Customer</th> |
| | | <th>order</th> |
| | | <th>base</th> |
| | | <th>height</th> |
| | | <th>thickness</th> |
| | | <th>films</th> |
| | | <th>quantity</th> |
| | | <th>tier</th> |
| | | <th>matching</th> |
| | | <th>glasstype</th> |
| | | <th>productname</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody style="text-align: center"> |
| | | <tr v-for="item in dataList" :key="item.id"> |
| | | <!-- <td>{{ item[0] }}</td> |
| | | <td>{{ item[1] }}</td> |
| | | <td>{{ item[2] }}</td> |
| | | <td>{{ item[3] }}</td> |
| | | <td>{{ item[4] }}</td> |
| | | <td>{{ item[5] }}</td> |
| | | <td>{{ item[6] }}</td> |
| | | <td>{{ item[7] }}</td> |
| | | <td>{{ item[8] }}</td> |
| | | <td>{{ item[9] }}</td> |
| | | <td>{{ item[10] }}</td> --> |
| | | <td>{{ item.Customer }}</td> |
| | | <td>{{ item.order }}</td> |
| | | <td>{{ item.base }}</td> |
| | | <td>{{ item.height }}</td> |
| | | <td>{{ item.thickness }}</td> |
| | | <td>{{ item.films }}</td> |
| | | <td>{{ item.quantity }}</td> |
| | | <td>{{ item.tier }}</td> |
| | | <td>{{ item.matching }}</td> |
| | | <td>{{ item.glasstype }}</td> |
| | | <td>{{ item.productname }}</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog :visible.sync="dialogFormVisible7" :title="$t('Glass information corresponding to aluminum frame')" |
| | | top="5vh"> |
| | | <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input> |
| | | <el-button type="primary" @click="showform7()">{{ $t('Query') }}</el-button> |
| | | <el-button type="primary" @click="AddOutSliceS()">{{ $t('Add') }}</el-button> |
| | | <el-button type="primary" @click="CloseForm7()">{{ $t('Cancel') }}</el-button> |
| | | <el-table :data="this.AluminumFrame" :height="700" border style="width: 100%;overflow: auto;"> |
| | | <el-table-column prop="frameBarcode" :label="$t('Frame No')"></el-table-column> |
| | | <el-table-column prop="barcode" :label="$t('Barcode')"></el-table-column> |
| | | <el-table-column prop="ordernumber" :label="$t('Order No')"></el-table-column> |
| | | <el-table-column prop="listnumber" :label="$t('List No')"></el-table-column> |
| | | <el-table-column prop="boxnumber" :label="$t('Box No')"></el-table-column> |
| | | <el-table-column prop="glasslength" :label="$t('Length')"></el-table-column> |
| | | <el-table-column prop="glassheight" :label="$t('Width')"></el-table-column> |
| | | <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column> |
| | | <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column> |
| | | <el-table-column prop="storageCage.tier" :label="$t('The Side')"> |
| | | <template slot-scope='scope'> |
| | | {{ |
| | | scope.row.storageCage == null ? "" : scope.row.storageCage.tier == 1 ? $t('Inside') : $t('Outside') |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-dialog :visible.sync="Measure" :title="$t('Measure')" top="5vh"><!--测量页面--> |
| | | <!--测量页面主体--> |
| | | <div> |
| | | <!--功能--> |
| | | <div> |
| | | <el-button type="primary" @click="ManualMatching()" :disabled="SoftEmergencyStopState" |
| | | style="z-index: 999;">人工匹配</el-button> |
| | | <el-button type="primary" @click="ManualTake()" :disabled="SoftEmergencyStopState" |
| | | style="z-index: 999;">人工匹配</el-button> |
| | | </div> |
| | | <!--显示--> |
| | | <div style="width:1000px;height: 720px;border: 2px solid #d1d1d1;margin: auto auto;"> |
| | | <!--玻璃图 #81b337--> |
| | | <div :style="'top:10px;bottom: 10px;left: 10px;right: 10px;margin: auto;position:absolute;width:' |
| | | + (this.LastQueue.glasswidth / 25 * 7) + 'px;height:' |
| | | + (this.LastQueue.glassheight / 25 * 7) + 'px;line-height: ' |
| | | + (this.LastQueue.glassheight / 25 * 7) + 'px;background-color: #93d2f3;text-align: center;'"> |
| | | {{ this.LastQueue.glasswidth }}*{{ this.LastQueue.glassheight }} |
| | | </div> |
| | | |
| | | <el-table-column prop="out_slice.state" :label="$t('In the queue')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.out_slice != null ? $t('Yes') : $t('No') }} |
| | | </template> |
| | | </el-table-column> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-table-column prop="storageCage.tier" :label="$t('In the cage')"> |
| | | <el-dialog :visible.sync="StorageCage" :title="$t('StorageCage')" top="5vh"> |
| | | <el-table :data="this.StorageCageInfo" :height="700" border style="width: 100%;overflow: auto;"> |
| | | <el-table-column :min-width="80" prop="cage" :label="$t('Cage No')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="cell" :label="$t('Slot No')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="glasstype" :label="$t('GlassType')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="glassWidth" :label="$t('Width')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="glassHeight" :label="$t('Height')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="thickness" :label="$t('Thickness')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="number" :label="$t('number')"></el-table-column> |
| | | <el-table-column :min-width="80" prop="width" :label="$t('Width')"></el-table-column> |
| | | <el-table-column :min-width="250" :label="$t('Operate')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.storageCage != null ? $t('Yes') : $t('No') }} |
| | | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)"> |
| | | {{ scope.row.disabled == 0 ? $t('Disable') : $t('Enable') }}</el-button> |
| | | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="(scope.row.width < scope.row.glassWidth + 100 ? true : false)" |
| | | @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, 1)">{{ $t('Add') |
| | | }} |
| | | </el-button> |
| | | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="scope.row.number >= 1 ? false : true" |
| | | @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, -1)">{{ $t('Reduce') |
| | | }}</el-button> |
| | | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="scope.row.number >= 1 ? false : true" |
| | | @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, 0)">{{ $t('Delete') |
| | | }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="dialogFormCountDown" :title="$t('Approximately resettable time')" top="5vh"> |
| | | <div :style="'font-size: ' + PromptSize + 'px;text-align: center;'"> |
| | | <!-- {{ this.CountDowns }} --> |
| | | {{ this.CountDowns }} |
| | | </div> |
| | | |
| | | <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')"> |
| | | </el-table-column> |
| | | <el-table-column prop="glasstype" :label="$t('GlassType')"> |
| | | </el-table-column> |
| | | <el-table-column prop="number" :label="$t('Order No')"> |
| | | </el-table-column> |
| | | <el-table-column prop="cageno" :label="$t('No Of Cage')"> |
| | | </el-table-column> |
| | | <el-table-column prop="finishnumber" :label="$t('Finish No')"> |
| | | </el-table-column> |
| | | <el-table-column prop="mateid" :label="$t('Mate No')"> |
| | | </el-table-column> |
| | | <el-table-column prop="films" :label="$t('Films')"> |
| | | </el-table-column> |
| | | <el-table-column prop="thickness" :label="$t('Thickness')"> |
| | | </el-table-column> |
| | | <el-table-column prop="width" :label="$t('Width')"> |
| | | </el-table-column> |
| | | <el-table-column prop="height" :label="$t('Height')"> |
| | | </el-table-column> |
| | | <el-table-column prop="state" :label="$t('Task State')"> |
| | | <template slot-scope='scope'> |
| | | {{ scope.row.state >= 0 ? scope.row.state == 0 ? $t('Start') : $t('Stop') : "" }} |
| | | </template> |
| | | </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') : "" }} |
| | | </template> |
| | | |
| | | </el-table-column> |
| | | <el-table-column prop="line" :label="$t('Task Line')"> |
| | | </el-table-column> |
| | | <el-table-column width="220" :label="$t('Operate')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | v-show="scope.row.state >= 0 ? true : false" |
| | | @click="ClaimTasks(scope.row.flowcard, scope.row.state)"> |
| | | {{ scope.row.status == '0' ? $t('Start Task') : $t('Stop Task') }}</el-button> |
| | | |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | v-show="scope.row.state >= 0 ? true : false" |
| | | @click="ModeChange(scope.row.flowcard, scope.row.method)"> |
| | | {{ $t('Mode Change') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | |
| | | <el-dialog :visible.sync="StorageCageAdd" :title="$t('StorageCageAdd')" top="5vh" width="80%"> |
| | | <div style="display: flex;height: 40px;line-height: 40px;"> |
| | | <label for="">{{ $t('Width') }}</label> |
| | | <el-input v-model="StorageCageForm.width" autocomplete="off" style="width:15%;" /> |
| | | <label for="">{{ $t('Height') }}</label> |
| | | <el-input v-model="StorageCageForm.height" autocomplete="off" style="width:15%;" /> |
| | | <label for="">{{ $t('Thickness') }}</label> |
| | | <el-input v-model="StorageCageForm.thickness" autocomplete="off" style="width:15%;" /> |
| | | <label for="">{{ $t('Films') }}</label> |
| | | <el-input v-model="StorageCageForm.films" autocomplete="off" style="width:15%;" /> |
| | | <el-button @click="SelectGlassInfo()" type="primary"> |
| | | {{ $t('Select') }}</el-button> |
| | | </div> |
| | | <el-table :data="this.StorageCageAddInfo" :height="700" border style="width: 100%;overflow: auto;"> |
| | | <el-table-column prop="flowcard" :label="$t('Flowcard')"></el-table-column> |
| | | <el-table-column prop="glasstype" :label="$t('GlassType')"></el-table-column> |
| | | <el-table-column prop="width" :label="$t('Width')"></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 :label="$t('Operate')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | @click="StorageCageAddGlass(scope.$index)"> |
| | | {{ $t('Add') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | |
| | | </el-container> |
| | | </template> |
| | | <script> |
| | | |
| | | import { |
| | | home, home2, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist, |
| | | SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass, SelectGlassNo, |
| | | SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates, SelectPermissionByUserName, currentUsername, CompleteQueue, |
| | | isAllowReorderings, FrameStateUpdate, WriteGlassID, ClearGlassId, CloseForm7, TaskStop, SoftEmergencyStop, SwitchScanMethod |
| | | home, home2, SelectCageInfo, |
| | | Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue, |
| | | isAllowReorderings, |
| | | |
| | | UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue |
| | | } from "../../api/home"; |
| | | |
| | | |
| | | import LanguageMixin from '../../lang/LanguageMixin' |
| | | import LanguageMixin from '../../lang/LanguageMixin'; |
| | | import * as XLSX from "../../../node_modules/xlsx/xlsx.mjs"; |
| | | let socket; |
| | | export default { |
| | | name: "Home", |
| | | data() { |
| | | return { |
| | | dataList: [], |
| | | tableData1: [], |
| | | Measuermode: false, |
| | | confirm1: false, |
| | | confirm2: false, |
| | | insertcage: 0, |
| | |
| | | dialogFormVisible: false, |
| | | dialogFormVisible1: false, |
| | | dialogFormVisible2: false, |
| | | dialogFormVisible3: false, |
| | | dialogFormVisible4: false, |
| | | dialogFormVisible5: false, |
| | | dialogFormVisible6: false, |
| | | dialogFormVisible7: false, |
| | | dialogFormCountDown: false, |
| | | form: { |
| | | orderId: "", |
| | | glassId: "", |
| | | Importorder: false, |
| | | Measure: false, |
| | | StorageCage: false, |
| | | Taskqueue: false, |
| | | StorageCageAdd: false, |
| | | StorageCageInfo: [], |
| | | StorageCageForm: { |
| | | width: "", |
| | | height: "", |
| | | width: "" |
| | | thickness: "", |
| | | films: "" |
| | | }, |
| | | StorageCageAddInfo: [], |
| | | TaskqueueInfo: [], |
| | | cell: "", |
| | | form1: {}, |
| | | form2: {}, |
| | | form3: {}, |
| | |
| | | reset: false, |
| | | isQueueWarning: false, |
| | | CurrentFrame: [], |
| | | DeviceList: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
| | | DeviceList: [1, 1, 1, 1], |
| | | GlassIdList: [], |
| | | Scanningmethod: true, |
| | | CurrrentGlassId: "" |
| | | CurrrentGlassId: "", |
| | | LastQueue: {} |
| | | }; |
| | | }, |
| | | created() { |
| | |
| | | } |
| | | , |
| | | methods: { |
| | | showform(i) { |
| | | if (i == 1) { |
| | | this.Importorder = true; |
| | | } else if (i == 2) { |
| | | this.Measure = true; |
| | | } else if (i == 3) { |
| | | this.StorageCage = true; |
| | | } else if (i == 4) { |
| | | this.Taskqueue = true; |
| | | } |
| | | }, |
| | | init() { |
| | | let viewname = "Home"; |
| | | if (typeof (WebSocket) == "undefined") { |
| | |
| | | // this.car1 = 210 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100; |
| | | // this.car2 = 300 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100; |
| | | } |
| | | |
| | | // 获取设备状态 |
| | | if (obj.DeviceList != null) { |
| | | this.DeviceList = obj.DeviceList[0]; |
| | | } |
| | | this.tableData = obj.tableData[0]; |
| | | this.cagelist1 = obj.cagelist1[0]; |
| | | this.cagelist2 = obj.cagelist2[0]; |
| | | this.cagelist3 = obj.cagelist3[0]; |
| | | this.cagelist4 = obj.cagelist4[0]; |
| | | this.tasklist1 = obj.tasklist1[0]; |
| | | this.tasklist2 = obj.tasklist2[0]; |
| | | this.tasklist2 = obj.StoragTaskeTaskFeed[0]; |
| | | this.tasklist1 = obj.StoragTaskeTaskOut[0]; |
| | | this.alarm = obj.alarmmg[0]; |
| | | //获取当前扫码方式 |
| | | if (obj.Scanningmethod != null) { |
| | | this.Scanningmethod = obj.Scanningmethod[0]; |
| | | } |
| | | |
| | | //获取当前扫码枪玻璃id |
| | | if (obj.CurrrentGlassId != null) { |
| | | const specialChars = /[^\w\s]/g; |
| | | this.CurrrentGlassId = obj.CurrrentGlassId[0].replace(specialChars, ""); |
| | | } |
| | | this.tableData1 = obj.OrderTask[0]; |
| | | this.LastQueue = obj.LastQueue[0]; |
| | | |
| | | //查询当前铝框信息 |
| | | this.CurrentFrame = obj.CurrentFrame; |
| | | |
| | | // 获取设备状态 |
| | | if (obj.DeviceList != null) { |
| | | this.DeviceList = obj.DeviceList[0]; |
| | | } |
| | | //获取设备上的玻璃id |
| | | if (obj.GlassIdList != null) { |
| | | this.GlassIdList = obj.GlassIdList[0]; |
| | | } |
| | | //获取待确认的铝框玻璃信息 |
| | | if (obj.AluminumFrame != null) { |
| | | this.AluminumFrame = obj.AluminumFrame[0]; |
| | | if (this.dialogFormVisible6 == true) { |
| | | this.dialogFormVisible7 = true; |
| | | } |
| | | } |
| | | |
| | | //根据进片状态出发进片任务 |
| | | if (obj.FeedState != null) { |
| | | if (obj.FeedState[0] == true) { |
| | | this.InsertQueueGlass(1); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | // if (obj.alarmmg[0].length > 0) { |
| | | // if (this.alarm.length > 0) { |
| | | // if (this.alarm[this.alarm.length - 1].id != obj.alarmmg[0][obj.alarmmg[0].length - 1].id) { |
| | | // this.alarm = obj.alarmmg[0]; |
| | | // this.dialogFormVisible2 = true; |
| | | // } |
| | | // } else { |
| | | // this.alarm = obj.alarmmg[0]; |
| | | // this.dialogFormVisible2 = true; |
| | | // } |
| | | // } |
| | | // //是否急停 |
| | | // if (obj.emergencystop != null) { |
| | | // this.EmergencyStop = obj.emergencystop[0]; |
| | | // } |
| | | |
| | | // //复位倒计时 |
| | | // if (obj.countdown != null) { |
| | | // if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) { |
| | | // this.CountDown(); |
| | | // } |
| | | // } |
| | | |
| | | // //复位完成信号 |
| | | // if (obj.reset != null) { |
| | | // this.reset = obj.reset[0]; |
| | | // } |
| | | |
| | | //是否有进片请求 |
| | | if (obj.D01RequestState != null) { |
| | | this.D01RequestState = obj.D01RequestState[0]; |
| | | } |
| | | // this.D01RequestState=true; |
| | | |
| | | //是否允许出片 |
| | | this.isAllowQueue = obj.isAllowQueue[0]; |
| | |
| | | if (this.isAllowReordering == true) { |
| | | this.OutSlice = obj.listoutslice[0]; |
| | | } |
| | | //获取上片位玻璃信息 |
| | | |
| | | if (obj.zhuangtai != null) { |
| | | this.zhuangtai = obj.zhuangtai[0]; |
| | | } |
| | | //上片位玻璃信息 |
| | | if (obj.form2 != null && obj.form2 != "") { |
| | | this.form2 = obj.form2[0]; |
| | | this.loadglassheight2 = 70; |
| | | } else { |
| | | this.form2 = {}; |
| | | } |
| | | |
| | | //是否需要手动确认上片 |
| | | this.isConfirm = obj.isConfirm[0]; |
| | | |
| | | //扫码位玻璃信息 |
| | | if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 1) { |
| | | this.form3 = obj.form3[0]; |
| | | this.loadglassheight1 = 70; |
| | | } else { |
| | | this.form3 = {}; |
| | | } |
| | | |
| | | if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) { |
| | | this.loadglassheight1 = 70; |
| | | if (this.form5.glassId != obj.form3[0].glassId&&this.ManuallyInfeedGlass==false) { |
| | | this.showform3(); |
| | | |
| | | } |
| | | this.form5 = obj.form3[0]; |
| | | this.glassid1 = ""; |
| | | if (this.D01RequestState == true) { |
| | | this.Sizerange(this.form5, 3); |
| | | } else { |
| | | this.disabled1 = true; |
| | | } |
| | | } else { |
| | | if (this.glassid1 == "") { |
| | | this.DeleteBarcodeGlass(); |
| | | } |
| | | } |
| | | //数据库连接是否正常 |
| | | if (obj.dbconnected == "false") { |
| | | this.text = this.$t('DataBase Connection failed'); |
| | | } |
| | | //理片笼玻璃信息 |
| | | if (this.dialogFormVisible3 == true) { |
| | | SelectCageInfo(this.cageglassid).then(res => { |
| | | this.cageinfo = res.data.cageinfo; |
| | | }); |
| | | } |
| | | if (obj.StorageCageInfo != null) { |
| | | this.StorageCageInfo = obj.StorageCageInfo[0]; |
| | | } |
| | | this.$forceUpdate(); |
| | | |
| | |
| | | }); |
| | | |
| | | }); |
| | | //加载小车位置信息 |
| | | Loadcarlist().then(res => { |
| | | this.carlist = res.data.carlist; |
| | | }); |
| | | //加载笼子使用情况数据 |
| | | home().then(res => { |
| | | this.tableData = res.data.list; |
| | |
| | | this.cageinfo = res.data.cageinfo; |
| | | this.currentPages = 1; |
| | | }); |
| | | //加载理片笼玻璃数据 |
| | | home2().then(res => { |
| | | this.cagelist1 = res.data.list1; |
| | | this.cagelist2 = res.data.list2; |
| | | this.cagelist3 = res.data.list3; |
| | | this.cagelist4 = res.data.list4; |
| | | }); |
| | | //加载报警信息 |
| | | SelectAlarmmgInfo().then(res => { |
| | | this.alarm = res.data.alarmmg; |
| | | }); |
| | | |
| | | //加载确认密码 |
| | | SelectPassword().then(res => { |
| | | this.password = res.data.password; |
| | | }); |
| | | }, |
| | | //根据格子状态修改颜色 |
| | | getStatusClass(state) { |
| | | if (state == 0) { |
| | | return "gezi"; |
| | | } else if (state == 1) { |
| | | return "blue gezi"; |
| | | } else if (state == 2) { |
| | | return "yellow gezi"; |
| | | } else if (state == 3) { |
| | | return "black gezi"; |
| | | } else { |
| | | return "black gezi"; |
| | | } |
| | | }, |
| | | //按订单出片 |
| | | getOrder() { |
| | | if (this.form1.order != "") { |
| | | InsertOrder(this.order).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.dialogFormVisible1 = false; |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.error(this.$t('There is no glass for this order')); |
| | | } |
| | | this.load(); |
| | | }); |
| | | } |
| | | }, |
| | | //手动上片 |
| | | sbumitglassid() { |
| | | if (this.form.order != "") { |
| | | if (this.form.height < 380 || this.form.width < 390 || this.form.height > 1810 || this.form.width > 2760) { |
| | | this.$message.error(this.$t('The glass size is not within the range')); |
| | | } else { |
| | | if (this.zhuangtai == true) { |
| | | Addglassid(this.glassid).then(res => { |
| | | if (res.data.message2 == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | this.cancel(); |
| | | } else if (res.data.message2 == 500) { |
| | | this.$message.error(this.$t('There are currently tasks')); |
| | | } |
| | | else if (res.data.message2 == 300) { |
| | | this.$message.error(this.$t('There is no such glass')); |
| | | } |
| | | else if (res.data.message2 == 400) { |
| | | this.$message.error(this.$t('There is no such slot')); |
| | | } |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('There are currently tasks')); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | //显示确认玻璃信息也没 |
| | | showform(buttons) { |
| | | if (buttons == 1) { |
| | | this.confirm1 = true; |
| | | this.confirm2 = false; |
| | | } else if (buttons == 2) { |
| | | this.confirm1 = false; |
| | | this.confirm2 = true; |
| | | } |
| | | //根据输入的玻璃id获取玻璃信息 |
| | | SelectGlassByGlassID(this.glassid).then(res => { |
| | | if (res.data.form != null) { |
| | | this.form = res.data.form; |
| | | this.dialogFormVisible = true; |
| | | this.$message.success(this.$t('query was successful')); |
| | | } else { |
| | | this.dialogFormVisible = true; |
| | | this.$message.error(this.$t('There is no such glass')); |
| | | } |
| | | }); |
| | | }, |
| | | //显示订单信息页面 |
| | | showform1() { |
| | | if (this.order != "") { |
| | | SelectGlassNo(this.order).then(res => { |
| | | this.form1.order = this.order; |
| | | this.form1.number = res.data.count; |
| | | }); |
| | | this.dialogFormVisible1 = true; |
| | | } |
| | | }, |
| | | //显示扫码位和上片位 |
| | | showform3() { |
| | | this.dialogFormVisible5 = true; |
| | | }, |
| | | //手动写入plc扫码位玻璃id |
| | | WriteGlassID() { |
| | | if (this.glassid1.length == 14) { |
| | | WriteGlassID(this.glassid1).then(res => { |
| | | console.log(res.data); |
| | | this.$message.success(this.$t('Successful operation')); |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('Please enter the correct glassID')); |
| | | } |
| | | }, |
| | | //获取扫码位和上片位数据 |
| | | SelectGlassByGlassIDs() { |
| | | this.showform3(); |
| | | |
| | | }, |
| | | //查询客户玻璃信息 |
| | | selectglassinfo() { |
| | | SelectGlass(this.orderid).then(res => { |
| | | this.currentPage = 1; |
| | | this.GlassInfo = res.data.glass; |
| | | }); |
| | | }, |
| | | //显示客户玻璃信息 |
| | | showform2() { |
| | | SelectGlass(this.orderid).then(res => { |
| | | this.GlassInfo = res.data.glass; |
| | | }); |
| | | this.dialogFormVisible4 = true; |
| | | }, |
| | | //显示出片队列 |
| | | showform6() { |
| | | this.dialogFormVisible6 = true; |
| | | }, |
| | | //显示铝框对应玻璃信息 |
| | | showform7() { |
| | | //查询铝框id对应玻璃信息 |
| | | SelectAluminumFrameInfoById(this.framebarcode).then(res => { |
| | | this.AluminumFrame = res.data.AluminumFrame; |
| | | }); |
| | | this.dialogFormVisible7 = true; |
| | | }, |
| | | //取消操作时关闭页面 |
| | | cancel() { |
| | | this.dialogFormVisible = false; |
| | | this.form = { |
| | | orderId: "", |
| | | glassId: "", |
| | | height: "", |
| | | width: "" |
| | | }; |
| | | }, |
| | | //取消操作时关闭页面 |
| | | cancel1() { |
| | | this.dialogFormVisible1 = false; |
| | | this.form1 = {}; |
| | | }, |
| | | //取消操作时关闭页面 |
| | | cancel3() { |
| | | this.dialogFormVisible5 = false; |
| | | this.form1 = {}; |
| | | }, |
| | | //结束进/出片任务 |
| | | endtask(type, glassid, cell) { |
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), { |
| | | inputType: 'password', |
| | | inputPlaceholder: this.$t('Please enter the password'), |
| | | confirmButtonText: this.$t('Yes'), |
| | | cancelButtonText: this.$t('No'), |
| | | type: 'warning' |
| | | }).then(({ value }) => { |
| | | if (this.password == value) { |
| | | UpdateTask(type, glassid, cell).then(res => { |
| | | if (res.data.message3 == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('Password error'));//密码错误 |
| | | } |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: this.$t('Operation canceled') |
| | | }); |
| | | }); |
| | | }, |
| | | //显示理片笼详情信息 |
| | | showcageinfo(cage) { |
| | | if (this.CageDetails == false) { |
| | | cage = this.cageglassid; |
| | | SelectCageInfo(cage).then(res => { |
| | | this.cageinfo = res.data.cageinfo; |
| | | this.currentPages = 1; |
| | | this.dialogFormVisible3 = true; |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('You do not have this permission')); |
| | | } |
| | | |
| | | }, |
| | | //删除理片笼玻璃 |
| | | deleteglass(glassid, state) { |
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), { |
| | | inputType: 'password', |
| | | inputPlaceholder: this.$t('Please enter the password'), |
| | | confirmButtonText: this.$t('Yes'), |
| | | cancelButtonText: this.$t('No'), |
| | | type: 'warning' |
| | | }).then(({ value }) => { |
| | | if (this.password == value) { |
| | | if (state == 1) { |
| | | DeleteByGlassID(glassid).then(res => { |
| | | if (res.data.message3 == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('No delete allowed')); |
| | | } |
| | | } else { |
| | | this.$message.error(this.$t('Password error'));//密码错误 |
| | | } |
| | | |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: this.$t('Operation canceled') |
| | | }); |
| | | }); |
| | | }, |
| | | //手动出片 |
| | | outglass(glassid, state) { |
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), { |
| | | inputType: 'password', |
| | | inputPlaceholder: this.$t('Please enter the password'), |
| | | confirmButtonText: this.$t('Yes'), |
| | | cancelButtonText: this.$t('No'), |
| | | type: 'warning' |
| | | }).then(({ value }) => { |
| | | if (this.password == value) { |
| | | if (state == 1) { |
| | | OutByGlassID(glassid).then(res => { |
| | | if (res.data.message2 == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | else if (res.data.message2 == 300) { |
| | | this.$message.error(this.$t('Unable to find the placement method of the aluminum frame')); |
| | | } |
| | | else if (res.data.message2 == 400) { |
| | | this.$message.error(this.$t('Unable to find whether the aluminum frame is flipped or not')); |
| | | } |
| | | else if (res.data.message2 == 500) { |
| | | this.$message.error(this.$t('This glass is already in the Queue')); |
| | | } |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('No out allowed')); |
| | | } |
| | | } else { |
| | | this.$message.error(this.$t('Password error'));//密码错误 |
| | | } |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: this.$t('Operation canceled') |
| | | }); |
| | | }); |
| | | }, |
| | | //手动往理片笼添加玻璃 |
| | | insertglass(cage, cell, tier) { |
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), { |
| | | inputType: 'password', |
| | | inputPlaceholder: this.$t('Please enter the password'), |
| | | confirmButtonText: this.$t('Yes'), |
| | | cancelButtonText: this.$t('No'), |
| | | type: 'warning' |
| | | }).then(({ value }) => { |
| | | if (this.password == value) { |
| | | this.insertcage = cage; |
| | | this.insertcell = cell; |
| | | this.inserttier = tier; |
| | | this.showform(2); |
| | | } else { |
| | | this.$message.error(this.$t('Password error'));//密码错误 |
| | | } |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: this.$t('Operation canceled') |
| | | }); |
| | | }); |
| | | }, |
| | | //手动上片 |
| | | FeedInglassid() { |
| | | if (this.form.glassId != "" && this.form.glassId != null) { |
| | | Inglassid(this.insertcage, this.insertcell, this.inserttier, this.form).then(res => { |
| | | //添加理片笼玻璃 |
| | | StorageCageAddGlass(index) { |
| | | if (this.Measuermode == true) { |
| | | StorageCageAddGlass(this.cell, this.StorageCageAddInfo[index]).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | this.dialogFormVisible = false; |
| | | this.glassid=""; |
| | | } |
| | | else if (res.data.message == 400) { |
| | | this.$message.error(this.$t('The glass size is not within the range')); |
| | | } |
| | | else if (res.data.message == 300) { |
| | | this.$message.error(this.$t('This glass is already in the cage')); |
| | | }) |
| | | } else { |
| | | UpdateQueue(this.StorageCageAddInfo[index]).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.error(this.$t('Operation failed')); |
| | | } |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('There is no such glass')); |
| | | } |
| | | |
| | | }, |
| | | //领取/暂停任务 |
| | | ClaimTasks(flowcard, state) { |
| | | ClaimTasks(flowcard, state).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }, |
| | | //修改出片方式 |
| | | ModeChange(flowcard, method) { |
| | | ModeChange(flowcard, method).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }, |
| | | //查询玻璃信息 |
| | | SelectGlassInfo() { |
| | | SelectGlassInfo(this.StorageCageForm.width, this.StorageCageForm.height, this.StorageCageForm.thickness, this.StorageCageForm.films).then(res => { |
| | | this.StorageCageAddInfo = res.data.StorageCageAddInfo; |
| | | }) |
| | | }, |
| | | //完成进/出片任务 |
| | | FinishTask(tasktype, id) { |
| | | FinishTask(tasktype, id).then(res => { |
| | | if (res.data.message3 == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }, |
| | | //修改理片笼玻璃信息 |
| | | UpdateStroageCageByCell(cell, nownum, num) { |
| | | if (nownum == null && num == 1) { |
| | | this.StorageCageAdd = true; |
| | | this.cell = cell; |
| | | } else { |
| | | if (nownum + num == 0) { |
| | | num = 0; |
| | | } |
| | | UpdateStroageCageByCell(cell, num).then(res => { |
| | | if (res.data.message3 == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | //启用//理片笼禁用 |
| | |
| | | } |
| | | }); |
| | | }, |
| | | //删除出片队列玻璃 |
| | | deleteproductionqueueglass(id) { |
| | | this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), { |
| | | inputType: 'password', |
| | | inputPlaceholder: this.$t('Please enter the password'), |
| | | confirmButtonText: this.$t('Yes'), |
| | | cancelButtonText: this.$t('No'), |
| | | type: 'warning' |
| | | }).then(({ value }) => { |
| | | if (this.password == value) { |
| | | DeleteProductionQueueGlass(id).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.error(this.$t('This frame has glass that is currently outing')); |
| | | } |
| | | }); |
| | | } |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: this.$t('Operation canceled') |
| | | }); |
| | | }); |
| | | }, |
| | | //表格删除 |
| | | handleDelete(index, row) { |
| | | console.log(index, row); |
| | | }, |
| | | |
| | | //改变每页容纳的数据量 |
| | | handleSizeChange: function (size) { |
| | | this.pagesize = size; |
| | |
| | | handleCurrentChanges: function (currentPage) { |
| | | this.currentPages = currentPage; |
| | | }, |
| | | //手动添加扫码位玻璃 |
| | | InsertQueueGlass(parameter) { |
| | | if (parameter == 1 && this.form5.glassId != "") { |
| | | if (this.form5.glassId != this.form2.glassId && this.form5.glassId != this.form3.glassId) { |
| | | if (this.dialogFormVisible5 == true) { |
| | | InsertQueueGlassId(1, this.form5).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.form5 = {}; |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | else if (res.data.message == 400) { |
| | | this.$message.error(this.$t('The glass size is not within the range')); |
| | | } else { |
| | | this.$message.error(this.$t('This glass ID already exists in the sorting cage')); |
| | | } |
| | | }); |
| | | } |
| | | } else { |
| | | this.$message.error(this.$t('The glass ID already exists in the loading queue')); |
| | | } |
| | | } else if (parameter == 2 && this.form4.glassId != "") { |
| | | if (this.form4.glassId != this.form3.glassId && this.form4.glassId != this.form2.glassId) { |
| | | InsertQueueGlassId(2, this.form4).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.form4 = {}; |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.error(this.$t('This glass ID already exists in the sorting cage')); |
| | | } |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('The glass ID already exists in the loading queue')); |
| | | } |
| | | |
| | | |
| | | } |
| | | }, |
| | | //清除上片队列玻璃 |
| | | DeleteQueueGlasss(parameter) { |
| | | if (parameter == 1) { |
| | | DeleteQueueGlass(1).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.form3 = {}; |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } else { |
| | | DeleteQueueGlass(2).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.form2 = {}; |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | //修改扫码位玻璃状态 |
| | | UpdateQueueStates() { |
| | | UpdateQueueState().then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }, |
| | | //铝框对应玻璃信息添加铝框id和是否添加到队列 |
| | | CheckBoxchange(glassid, isChecked) { |
| | | this.AluminumFrame.forEach(item => { item.barcode = glassid; item.isCheck = isChecked }) |
| | | }, |
| | | //添加到出片队列 |
| | | AddOutSliceS() { |
| | | if (this.AluminumFrame != null) { |
| | | AddOutSliceS(this.AluminumFrame[0].frameBarcode).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | //关闭待确认铝框信息界面并清除待确认信息 |
| | | CloseForm7() { |
| | | if (this.AluminumFrame != null) { |
| | | CloseForm7().then(res => { |
| | | if (res.data.message == 200) { |
| | | this.AluminumFrame = null; |
| | | this.dialogFormVisible7 = false; |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | //置顶 |
| | | getTopMove(row, index) { |
| | | let Sequence = []; |
| | | this.OutSlice.forEach(item => { |
| | | Sequence.push(item.sequence); |
| | | }); |
| | | let OutSliceArr = []; |
| | | OutSliceArr.push(row); |
| | | let belowstop = 1; |
| | | let hereframeno = this.OutSlice[index].barcode; |
| | | let upperstop = 0; |
| | | for (let i = index + 1; i < this.OutSlice.length; i++) { |
| | | if (this.OutSlice[i].barcode == hereframeno) { |
| | | OutSliceArr.push(this.OutSlice[i]); |
| | | belowstop += 1; |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | this.OutSlice.splice(index, belowstop); |
| | | for (let i = 0; i < OutSliceArr.length; i++) { |
| | | this.OutSlice.splice(upperstop, 0, OutSliceArr[i]); |
| | | upperstop += 1; |
| | | } |
| | | this.UpdateSequence(Sequence); |
| | | }, |
| | | //上移 |
| | | getUpMove(row, index) { |
| | | let Sequence = []; |
| | | this.OutSlice.forEach(item => { |
| | | Sequence.push(item.sequence); |
| | | }); |
| | | let OutSliceArr = []; |
| | | OutSliceArr.push(row); |
| | | let belowstop = 1; |
| | | let upperstop = 0; |
| | | let index_x = index - 1; |
| | | let hereframeno = this.OutSlice[index].barcode; |
| | | let upperframeno = this.OutSlice[index_x].barcode; |
| | | for (let i = index + 1; i < this.OutSlice.length; i++) { |
| | | if (this.OutSlice[i].barcode == hereframeno) { |
| | | OutSliceArr.push(this.OutSlice[i]); |
| | | belowstop += 1; |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | this.OutSlice.splice(index, belowstop); |
| | | for (let i = index_x; i >= 0; i--) { |
| | | if (this.OutSlice[i].barcode != upperframeno) { |
| | | upperstop = i + 1; |
| | | break; |
| | | } |
| | | } |
| | | for (let i = 0; i < OutSliceArr.length; i++) { |
| | | this.OutSlice.splice(upperstop, 0, OutSliceArr[i]); |
| | | upperstop += 1; |
| | | } |
| | | this.UpdateSequence(Sequence); |
| | | }, |
| | | //下移 |
| | | getDownMove(row, index) { |
| | | let Sequence = []; |
| | | this.OutSlice.forEach(item => { |
| | | Sequence.push(item.sequence); |
| | | }); |
| | | let OutSliceArr = []; |
| | | OutSliceArr.push(row); |
| | | |
| | | let belowstop = 1; |
| | | let upperstop = this.OutSlice.length - 1; |
| | | let flag = 0; |
| | | let hereframeno = this.OutSlice[index].barcode; |
| | | let upperframeno; |
| | | for (let i = index + 1; i < this.OutSlice.length; i++) { |
| | | if (this.OutSlice[i].barcode == hereframeno) { |
| | | OutSliceArr.push(this.OutSlice[i]); |
| | | belowstop += 1; |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | this.OutSlice.splice(index, belowstop); |
| | | for (let i = index; i < this.OutSlice.length; i++) { |
| | | if (this.OutSlice[i].barcode != hereframeno && this.OutSlice[i].barcode != upperframeno) { |
| | | upperframeno = this.OutSlice[i].barcode; |
| | | flag += 1; |
| | | upperstop = i; |
| | | } |
| | | if (i == this.OutSlice.length - 1 && flag == 1) { |
| | | flag += 1; |
| | | upperstop = i + 1; |
| | | } |
| | | if (flag == 2) { |
| | | break; |
| | | } |
| | | } |
| | | for (let i = 0; i < OutSliceArr.length; i++) { |
| | | this.OutSlice.splice(upperstop, 0, OutSliceArr[i]); |
| | | upperstop += 1; |
| | | } |
| | | this.UpdateSequence(Sequence); |
| | | }, |
| | | //修改出片顺序 |
| | | UpdateSequence(Sequence) { |
| | | let i = 0; |
| | | this.OutSlice.forEach(item => { |
| | | item.sequence = Sequence[i]; |
| | | i++; |
| | | }); |
| | | }, |
| | | //切换出片队列状态 |
| | | isAllowQueueState() { |
| | | isAllowQueues(!this.isAllowQueue, this.OutSlice).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }) |
| | | }, |
| | | //是否允许出片队列排序 |
| | | isAllowReorderings() { |
| | | isAllowReorderings(!this.isAllowReordering, this.OutSlice).then(res => { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | //切换上片是否需要确认玻璃信息 |
| | | isConfirmState() { |
| | | isConfirmStates(!this.isConfirm).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } |
| | | , |
| | | //表格样式 |
| | | cellStyle({ column, rowIndex, columnIndex }) { |
| | | column = rowIndex; |
| | | rowIndex = column; |
| | | let style = ""; |
| | | if (columnIndex === 8) { |
| | | // style = "font-size:200px;text-align: center;"; |
| | | style = ""; |
| | | } |
| | | // if (columnIndex === 9 && row.flip == 1) { |
| | | // style = "background-Color:yellow;"; |
| | | // } |
| | | // if (columnIndex === 6 && row.state == 3) { |
| | | // style = "background-Color:gray;"; |
| | | // } |
| | | return style; |
| | | } |
| | | , |
| | | //合并行 |
| | | objectSpanMethod({ row, column, rowIndex, columnIndex }) { |
| | | // console.log(row, column, "ss"); |
| | | row = column; |
| | | column = row |
| | | let arrOutSlice = this.OutSlice; |
| | | let rowspans = 0; |
| | | let colspans = 1; |
| | | let barcode = arrOutSlice[rowIndex].barcode; |
| | | |
| | | let barcode2; |
| | | if (rowIndex != 0) { |
| | | barcode2 = arrOutSlice[rowIndex - 1].barcode; |
| | | } |
| | | if (columnIndex === 0 || columnIndex === 10) { |
| | | if (barcode != barcode2) { |
| | | // this.FrameNoFlag = barcode; |
| | | for (let i = rowIndex; i < this.OutSlice.length; i++) { |
| | | if (barcode == arrOutSlice[i].barcode) { |
| | | barcode = arrOutSlice[i].barcode; |
| | | rowspans += 1; |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | return { |
| | | rowspan: rowspans, |
| | | colspan: colspans |
| | | }; |
| | | } else { |
| | | return { |
| | | rowspan: 0, |
| | | colspan: 0 |
| | | }; |
| | | } |
| | | } |
| | | }, |
| | | //判断玻璃是否超出范围 |
| | | Sizerange(Glass, position) { |
| | | if (this.ManuallyInfeedGlass == false) { |
| | | if ((Glass.glassheight < 380 || Glass.glasswidth < 390 || Glass.glassheight > 1810 || Glass.glasswidth > 2760) || (Glass.glassheight < 390 || Glass.glasswidth < 380 || Glass.glassheight > 2760 || Glass.glasswidth > 1810)) { |
| | | this.$alert(this.$t('The glass size is not within the range'), this.$t('confirm'), { |
| | | confirmButtonText: this.$t('Yes'), |
| | | type: 'info', |
| | | callback: (action) => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: `action: ${action}` |
| | | }).then( |
| | | this.DeleteBarcodeGlass() |
| | | ); |
| | | } |
| | | }); |
| | | if (position == 1 || position == 3) { |
| | | this.disabled1 = true; |
| | | } else { |
| | | this.disabled = true; |
| | | } |
| | | } else { |
| | | if (position == 1 || position == 3) { |
| | | this.disabled1 = false; |
| | | } else { |
| | | this.disabled = false; |
| | | } |
| | | // if (position == 3 && this.isConfirm == true && this.D01RequestState == true && this.dialogFormVisible5 == true) { |
| | | // this.InsertQueueGlass(1); |
| | | // } |
| | | } |
| | | } |
| | | }, |
| | | //清空待确认玻璃信息 |
| | | DeleteBarcodeGlass() { |
| | | this.form5 = {}; |
| | | }, |
| | | //手动完成出片任务 |
| | | CompleteQueue(id, frameid, glassid) { |
| | | CompleteQueue(id, frameid, glassid).then(res => { |
| | |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }, |
| | | //60秒复位倒数计时 |
| | | CountDown() { |
| | | let count = 60; |
| | | let timer = setInterval( |
| | | () => { |
| | | if (this.EmergencyStop == true) { |
| | | this.dialogFormCountDown = false; |
| | | clearInterval(timer); |
| | | this.CountDowns = "0"; |
| | | } else { |
| | | if (count > 0) { |
| | | this.PromptSize = 500; |
| | | count--; |
| | | this.CountDowns = count; |
| | | this.dialogFormCountDown = true; |
| | | } |
| | | else { |
| | | this.PromptSize = 200; |
| | | this.CountDowns = "Waiting for reset"; |
| | | if (this.reset == true) { |
| | | clearInterval(timer); |
| | | this.dialogFormCountDown = false; |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | 1000 |
| | | ); |
| | | |
| | | }, |
| | | //更换当前铝框 |
| | | FrameStateUpdate(frameno) { |
| | | FrameStateUpdate(frameno).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success("Operation successful"); |
| | | } |
| | | }); |
| | | }, |
| | | //当前铝框图形 |
| | | FrameWidthHeight(state, width, height, position) { |
| | | if (state == "before") { |
| | | if (position == 0) { |
| | | if (width > height) { |
| | | return 400; |
| | | } |
| | | else { |
| | | return width / height * 400; |
| | | } |
| | | } else { |
| | | if (width > height) { |
| | | return height / width * 400; |
| | | } |
| | | else { |
| | | return 400; |
| | | } |
| | | } |
| | | } |
| | | if (state == "after") { |
| | | if (position == 0) { |
| | | if (width < height) { |
| | | return 400; |
| | | } |
| | | else { |
| | | return height / width * 400; |
| | | } |
| | | } else { |
| | | if (width < height) { |
| | | return width / height * 400; |
| | | } |
| | | else { |
| | | return 400; |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | //获取设备显示状态 |
| | | ShowDeviceList(num) { |
| | |
| | | return this.GlassIdList[num].replace(specialChars, ""); |
| | | } |
| | | }, |
| | | //清除玻璃id |
| | | ClearGlassId(position, num) { |
| | | if (this.ClearGlassID == false) { |
| | | console.log(this.DeviceList, num); |
| | | if (this.DeviceList[num] == 0) { |
| | | if (this.GlassIdList[num].length <= 14) { |
| | | this.$confirm(this.$t('Are you sure to clear this barcode ?'), this.$t('confirm'), { |
| | | confirmButtonText: this.$t('Yes'), |
| | | cancelButtonText: this.$t('No'), |
| | | type: 'warning' |
| | | }).then(() => { |
| | | ClearGlassId(position, this.GlassIdList[num]).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.success(this.$t('operation failed')); |
| | | } |
| | | }); |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: this.$t('Operation canceled') |
| | | }); |
| | | }); |
| | | } else { |
| | | this.$message.error(this.$t('There is no glass ID here')); |
| | | } |
| | | } else { |
| | | //自动状态不能清除玻璃id |
| | | this.$message.error(this.$t('Unable to clear glass ID in automatic mode')); |
| | | } |
| | | } else { |
| | | this.$message.error(this.$t('You do not have this permission')); |
| | | //人工匹配 |
| | | ManualMatching() { |
| | | this.StorageCageAdd = true; |
| | | }, |
| | | //人工拿走 |
| | | ManualTake() { |
| | | |
| | | }, |
| | | Change(event) { |
| | | // 获取到文件夹 |
| | | let fileList = event.target.files; |
| | | // 如果数据不为空 |
| | | if (fileList) { |
| | | // FileReader是一种异步文件读取机制,结合input:file可以很方便的读取本地文件。 |
| | | let reader = new FileReader(); |
| | | let file = fileList[0]; //拿到第一条数据 |
| | | reader.readAsBinaryString(file)// 将文件以二进制形式读入页面 |
| | | let _this = this //把data里的数据赋值给新的变量 |
| | | // wb:wordbook 工作表 |
| | | reader.addEventListener("load", function (e) { |
| | | |
| | | var data = e.target.result; //读取成功后result中的数据 |
| | | var wb = XLSX.read(data, { type: "binary" }); |
| | | let sheetName = wb.SheetNames[0]; //是获取Sheets中第一个Sheet的名字 |
| | | let sheets = wb.Sheets[sheetName]; |
| | | let dataList2 = JSON.stringify(XLSX.utils.sheet_to_json(sheets)); |
| | | let dataList3 = (JSON.parse(dataList2)); |
| | | _this.dataList = dataList3;//赋值 |
| | | //console.log(dataList2); |
| | | console.log(dataList3); |
| | | |
| | | }) |
| | | } |
| | | }, |
| | | //终止进/出片任务 |
| | | TaskStop(num) { |
| | | TaskStop(num).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | Add() { |
| | | |
| | | }, |
| | | //软急停 |
| | | SoftEmergencyStop() { |
| | | this.$confirm(this.$t('Are you sure you want an emergency stop ?'), this.$t('confirm'), { |
| | | confirmButtonText: this.$t('Yes'), |
| | | cancelButtonText: this.$t('No'), |
| | | type: 'warning' |
| | | }).then(() => { |
| | | SoftEmergencyStop.then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: this.$t('Operation canceled') |
| | | }); |
| | | }); |
| | | Hide() { |
| | | |
| | | }, |
| | | //切换二维码获取方式 |
| | | SwitchScanMethod() { |
| | | SwitchScanMethod(!this.Scanningmethod).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | AllAdd() { |
| | | //添加数据进后台 |
| | | console.log(this.dataList); |
| | | }, |
| | | del() { |
| | | |
| | | this.StorageCageAdd = true; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | </script> |