ZengTao
2024-04-09 b175a9fb3fcd6d7ed1196a8c4c303f1bc6372d91
Albania_Mes-ui/src/views/home/index.vue
@@ -5,8 +5,8 @@
}
.occupy {
    height: 100%;
    width: 10%;
    height: 50%;
    width: 45%;
    background-color: white;
    margin: 0px 8px 0px 8px;
    border: 1px #EBEEF5 solid;
@@ -64,15 +64,17 @@
}
.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; */
@@ -81,17 +83,14 @@
}
.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.png');
    background-size: 800px 1200px;
}
.blocks-img2 {
@@ -198,12 +197,13 @@
    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;
@@ -235,12 +235,90 @@
    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;
}
.cells {
    height: 100%;
}
</style>
<template>
    <el-container>
        <!-- <el-header style="padding: 10px;"></el-header> -->
        <el-main>
            <div class="box" @click="dialogFormVisible2 = true">
            <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>
            <div class="box" @click="dialogFormVisible2 = true" style="z-index: 999;">
                <div class="text">
                    <!-- Alarm: -->
                    {{ this.text }}
@@ -249,229 +327,352 @@
                    </label>
                </div>
            </div>
            <div style="display:flex;justify-content: space-around;width: 9zz5%;margin: 0 auto;">
                <el-button type="primary" @click="showform(1)" :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('Import order') }}</el-button>
                <el-button type="primary" @click="showform(2)" :disabled="SoftEmergencyStopState"
                <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(2)" :disabled="SoftEmergencyStopState"
                <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(2)" :disabled="SoftEmergencyStopState"
                <el-button type="primary" @click="showform(4)" :disabled="SoftEmergencyStopState" style="z-index: 999;"
                    :class="SoftEmergencyStopState == true ? 'hide' : ''">
                    {{ $t('Task queue') }}</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>
                    <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>
            </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-dialog :visible.sync="Importorder" :title="$t('Importorder')"
            top="5vh">
        </el-dialog>
        <el-dialog :visible.sync="Measure" :title="$t('Measure')"
            top="5vh">
        </el-dialog>
        <el-dialog :visible.sync="StorageCage" :title="$t('StorageCage')"
            top="5vh">
        </el-dialog>
        <el-dialog :visible.sync="Taskqueue" :title="$t('Taskqueue')"
            top="5vh">
        </el-dialog>
        <!-- <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;overflow: hidden;">
                <div class="blocks" style="position: relative;width: 100%;">
                    <div class="blocks-img" :style="'z-index:999;left:150px;top:'+carposition+'px;'">
                    </div>
                    <div
                        :style="'position: absolute;z-index:99;left:271px;top:987px;width:210px;height:38px;background-color:' + ShowDeviceList(0) + ';'">
                    </div>
                    <div
                        :style="'position: absolute;z-index:1000;left:553px;top:'+(400+carposition)+'px;width:110px;height:88px;background-color:' + ShowDeviceList(0) + ';'">
                    </div>
                    <div
                        :style="'position: absolute;z-index:99;left:800px;top:450px;width:115px;height:30px;background-color:' + ShowDeviceList(0) + ';'">
                    </div>
                    <div
                        :style="'position: absolute;z-index:99;left:800px;top:675px;width:115px;height:30px;background-color:' + ShowDeviceList(0) + ';'">
                    </div>
                    <div :style="'position: absolute;z-index:99;left:740px;top:507px;width:230px;height:114px;'">
                        <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;'">
                            </div>
                        </div>
                    </div>
                    <div :style="'position: absolute;z-index:100;left:740px;top:730px;width:230px;height:90px;'">
                        <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;'">
                            </div>
                        </div>
                    </div>
                    <div :style="'position: absolute;z-index:100;left:740px;top:830px;width:230px;height:90px;'">
                        <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;'">
                            </div>
                        </div>
                    </div>
                    <div :style="'position: absolute;z-index:100;left:740px;top:930px;width:230px;height:90px;'">
                        <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;'">
                            </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>
                    <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;"
                                    @click="FinishTask(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>
                <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>
                        <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(scope.row.id)">{{ $t('Complete') }}</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                </div>
            </div>
        </el-footer> -->
        </el-main>
        <el-dialog :visible.sync="Importorder" :title="$t('Import order')" top="5vh">
            <!--文件导入数据页面-->
            <div id="" class="container">
                <div class="header">
                    <div class="btn">
                        <el-button type="primary" @click="importData()">保存</el-button>
                        <input type="file" id="uploadExcel" multiple @change="Change" />
                    </div>
                </div>
                <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="base" :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 prop="quantity" :label="$t('No')"></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>
                    <el-table-column prop="productname" :label="$t('Productname')"></el-table-column>
                </el-table>
            </div>
        </el-dialog>
        <el-dialog :visible.sync="Measure" :title="$t('Measure')" top="5vh"><!--测量页面-->
            <!--测量页面主体-->
            <div style="height: 780px;">
                <!--功能-->
                <div>
                    <el-button type="primary" @click="ManualMatching()" :disabled="SoftEmergencyStopState"
                        style="z-index: 999;">{{ $t('Manual matching') }}</el-button>
                    <el-button type="primary" @click="ManualTake()" :disabled="SoftEmergencyStopState"
                        style="z-index: 999;">{{ $t('Manual removal') }}</el-button>
                    <el-button type="primary" @click="AnewMeasure()" :disabled="SoftEmergencyStopState"
                        style="z-index: 999;">{{ $t('Remeasure') }}</el-button>
                </div>
                <br>
                <!--显示-->
                <div style="width:1000px;height: 720px;border: 2px solid #d1d1d1;float: left;">
                    <!--玻璃图  #81b337-->
                    <div :style="'top:10px;bottom: 10px;left: 10px;right: 10px;margin:'+((1000-(this.LastQueue.glasswidth / 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) + 'px;'+
                        'background-color: '+ (this.LastQueue.state>0?'#4CCCE4':(this.LastQueue.state==0?'#E4CA4C':'#E4CA4C'))+
                        ';text-align: center;'">
                        {{ this.LastQueue.glasswidth!=null?(this.LastQueue.glasswidth+"*"+this.LastQueue.glassheight):"" }}
                    </div>
                </div>
                <!--显示-->
                <div style="width:20px;height: 720px;float: left;"></div>
                <div style="width:500px;height: 620px;border: 2px solid #d1d1d1;float: left;padding: 50px 50px;">
                    <!--玻璃图  #81b337-->
                    <span class="measuretitle">{{ $t('Width') }}:</span> <span class="measureValue">{{ this.LastQueue.glasswidth }}</span> <span class="measureUnit">mm</span>
                    <br>
                    <span class="measuretitle">{{ $t('Height') }}:</span> <span class="measureValue">{{ this.LastQueue.glassheight }}</span> <span class="measureUnit">mm</span>
                    <br>
                    <span class="measuretitle">{{ $t('Thickness') }}:</span> <span class="measureValue">{{ this.LastQueue.thickness }}</span> <span class="measureUnit">mm</span>
                    <br>
                    <span class="measuretitle">{{ $t('Measure Width') }}:</span> <span class="measureValue">{{ this.LastQueue.glasswidthmm }}</span> <span class="measureUnit">mm</span>
                    <br>
                    <span class="measuretitle">{{ $t('Measure Height') }}:</span> <span class="measureValue">{{ this.LastQueue.glassheightmm }}</span> <span class="measureUnit">mm</span>
                    <br>
                    <span class="measuretitle">{{ $t('Matching results') }}:</span> <span class="measureValue">{{ this.LastQueue.state>0?$t('Matching successful'):(this.LastQueue.state==0?$t('Multiple data matching'):$t('Matching failed')) }}</span>
                    <br>
                </div>
            </div>
        </el-dialog>
        <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="films" :label="$t('Films')"></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'>
                        <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="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('Stop') : $t('Start') : "" }}
                    </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="300" :label="$t('Operate')">
                    <template slot-scope='scope'>
                        <el-select v-model="selected[scope.$index]" :placeholder="$t('Line')"
                            v-show="scope.row.state >= 0 ? true : false">
                            <el-option v-for="item in options" :key="item.value" :label="item.label"
                                :value="item.value">
                            </el-option>
                        </el-select>
                        <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, selected[scope.$index])">
                            {{ scope.row.state > 0 ? $t('Stop Task') : $t('Start 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="tier" :label="$t('Tier')"></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,  UpdateTask, SelectCageInfo, DeleteByGlassID,
    SelectPassword,  Disabled,  AddOutSliceS,  SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings,  WriteGlassID, ClearGlassId, CloseForm7,  SoftEmergencyStop, SwitchScanMethod
    home, SelectCageInfo,
    Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings,
    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue, importData, ManualTake, AnewMeasure
} 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 {
            carposition:0,
            selected: [],
            options: [{
                value: '1',
                label: '1'
            }, {
                value: '2',
                label: '2'
            }],
            dataList: [],
            tableData1: [],
            Measuermode: false,
            confirm1: false,
            confirm2: false,
            insertcage: 0,
@@ -482,16 +683,21 @@
            dialogFormVisible: false,
            dialogFormVisible1: false,
            dialogFormVisible2: false,
            Importorder:false,
            Measure:false,
            StorageCage:false,
            Taskqueue: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: {},
@@ -556,10 +762,11 @@
            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() {
@@ -571,15 +778,15 @@
    }
    ,
    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;
        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() {
@@ -603,25 +810,24 @@
                socket.onmessage = function (msg) {
                    //console.log("收到数据====" + msg.data);
                    let obj = JSON.parse(msg.data);
                    if (obj.params != null) {
                        var zhi1 = obj.params[0][0];
                        var zhi2 = obj.params[0][1];
                        this.car1 = 145 + 8.15 * Math.abs(zhi1 - this.carlist[0]['start']) / Math.abs(this.carlist[0]['end'] - this.carlist[0]['start']) * 100;
                        this.car2 = 210 + 8.15 * Math.abs(zhi2 - this.carlist[1]['start']) / Math.abs(this.carlist[1]['end'] - this.carlist[1]['start']) * 100;
                        // 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.carposition != null){
                        this.carposition = obj.carposition[0];
                    }
                    // 获取设备状态
                    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];
                    this.tableData1 = obj.OrderTask[0];
                    this.LastQueue = obj.LastQueue[0];
                    //是否允许出片
@@ -640,6 +846,9 @@
                            this.cageinfo = res.data.cageinfo;
                        });
                    }
                    if (obj.StorageCageInfo != null) {
                        this.StorageCageInfo = obj.StorageCageInfo[0];
                    }
                    this.$forceUpdate();
                }.bind(this);
@@ -647,7 +856,7 @@
                socket.onclose = function () {
                    console.log("websocket已关闭");
                };
                //发生了错误事件
                //发生了错误事件
                socket.onerror = function () {
                    console.log("websocket发生了错误");
                }
@@ -696,73 +905,74 @@
                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;
            });
            //加载确认密码
            SelectPassword().then(res => {
                this.password = res.data.password;
            });
        },
        //结束进/出片任务
        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')
                });
            });
        },
        //删除理片笼玻璃
        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'));
        //添加理片笼玻璃
        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.StorageCageAdd=false;
                    }
                } else {
                    this.$message.error(this.$t('Password error'));//密码错误
                }
            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: this.$t('Operation canceled')
                })
            } 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'));
                    }
                });
            }
        },
        //领取/暂停任务
        ClaimTasks(flowcard, state, line) {
            ClaimTasks(flowcard, state, line).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(id) {
            FinishTask(id).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        },
        //修改理片笼玻璃信息
        UpdateStroageCageByCell(cell, nownum, num) {
            if (nownum == null && num == 1) {
                this.StorageCageAdd = true;
                this.Measuermode=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'));
                    }
                });
            }
        },
        //启用//理片笼禁用
        UpdateDisabled(cage, cell, disabled) {
@@ -772,7 +982,7 @@
                }
            });
        },
        //改变每页容纳的数据量
        handleSizeChange: function (size) {
            this.pagesize = size;
@@ -789,7 +999,7 @@
        handleCurrentChanges: function (currentPage) {
            this.currentPages = currentPage;
        },
        //是否允许出片队列排序
        isAllowReorderings() {
            isAllowReorderings(!this.isAllowReordering, this.OutSlice).then(res => {
@@ -819,14 +1029,90 @@
                }
            }
        },
        //获取设备显示状态
        ShowCellList(num) {
            if (num == null) {
                return "";
            } else if (num > 0) {
                return "gray";
                // return "rgba(0,0,0,1)";
            }
        },
        //获取设备玻璃id
        ShowGlassIdList(num) {
            if (this.GlassIdList != null && this.GlassIdList.length > 0) {
                const specialChars = /[^\w\s]/g;
                return this.GlassIdList[num].replace(specialChars, "");
            }
        },
        //人工匹配
        ManualMatching() {
            this.StorageCageAdd = true;
            this.Measuermode=false;
        },
        //人工拿走
        ManualTake() {
            let s = "123";
            ManualTake(s).then(res => {
                if (res.data.message == 200) {
                    console.log(res.data.message);
                }
            })
        },
        //重新测量
        AnewMeasure() {
            let s = "123";
            AnewMeasure(s).then(res => {
                if (res.data.message == 200) {
                    console.log(res.data.message);
                }
            })
        },
        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);
                })
            }
        },
        Add() {
        },
        importData() {
            //let tbdata=JSON.stringify(this.dataList);
            let tbdata=this.dataList;
            console.log(tbdata);
            importData(tbdata).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        },
        del() {
            this.StorageCageAdd = true;
        }
    }
}
</script>
</script>