严智鑫
2024-04-09 90e7cf2c4b1f47e5165e8132686bd49f842744a8
Albania_Mes-ui/src/views/home/index.vue
@@ -5,8 +5,8 @@
}
.occupy {
    height: 100%;
    width: 20%;
    height: 50%;
    width: 45%;
    background-color: white;
    margin: 0px 8px 0px 8px;
    border: 1px #EBEEF5 solid;
@@ -74,6 +74,7 @@
    max-width: 57%;
    background-size: 1050px 1400px;
    margin-top: -280px;
    overflow: hidden;
    /* width: 1660px;
    max-width: 100vw;
    background-size: 1660px 560px; */
@@ -82,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.c2f92670.png);
    background-size: 800px 1200px;
}
.blocks-img2 {
@@ -237,12 +235,103 @@
    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%;
}
.measure_Content{
    margin-bottom: 20px;
    font-size: 30px;
}
.measuretitle{
}
.measureValue{
}
.measureUnit{
    margin-left: 10px;
}
</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 }}
@@ -268,22 +357,68 @@
                    {{ $t('Task queue') }}</el-button>
            </div>
            <div style="display: flex;align-items: center;">
            <div style="display: flex;align-items: center;overflow: hidden;">
                <div class="blocks" style="position: relative;width: 100%;">
                    <div class="blocks-img" :style="'z-index:99;left:150px;top:555px;'">
                    </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:99;left:553px;top:956px;width:110px;height:74px;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:1000;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:1000;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:1000;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:1000;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>
                    <div style="padding: 10px;display: flex;height:100px;">
                    <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;">
                                <span class="biao">{{ $t('Usage') }}</span><span class="zhi">{{ item['cell'] }}%</span>
                                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['state']
                                <span class="biao">{{ $t('Space (Pieces)') }}</span><span class="zhi">{{ item['cell']
                                    }}</span>
                            </el-col>
                        </div>
@@ -325,26 +460,118 @@
        </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>
                <!-- <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.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="Measure" :title="$t('Measure')" top="5vh"><!--测量页面-->
            <!--测量页面主体-->
            <div>
            <div style="height: 780px;">
                <!--功能-->
                <div>
                    <el-button type="primary" @click="ManualMatching()" :disabled="SoftEmergencyStopState"
                        style="z-index: 999;">
                        人工匹配</el-button>
                        style="z-index: 999;">人工匹配</el-button>
                    <el-button type="primary" @click="ManualTake()" :disabled="SoftEmergencyStopState"
                        style="z-index: 999;">人工拿走</el-button>
                    <el-button type="primary" @click="AnewMeasure()" :disabled="SoftEmergencyStopState"
                        style="z-index: 999;">重新测量</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.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+this.LastQueue.glassheight)!=0?(this.LastQueue.glasswidth+"*"+this.LastQueue.glassheight):"" }}
                    </div>
                </div>
                <!--显示-->
                <div style="width:100%;height: 600px;border: 1px solid black;">
                    <!--玻璃图-->
                    <div
                        style="top:0;bottom: 0;left: 0;right: 0;margin: auto;position:absolute;width: 100px;height: 200px;background-color: aqua;line-height: 200px;text-align: center;">
                        100*200
                <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-->
                    <div class="measure_Content">
                        <span class="measuretitle" style="font-size: 30px;">长:</span>
                        <span class="measureValue">{{ this.LastQueue.glasswidth }}</span>
                        <span class="measureUnit"> mm</span>
                    </div>
                    <div class="measure_Content">
                        <span class="measuretitle">宽:</span>
                        <span class="measureValue">{{ this.LastQueue.glassheight }}</span>
                        <span class="measureUnit">mm</span>
                    </div>
                    <div class="measure_Content">
                        <span class="measuretitle">测量长:</span>
                        <span class="measureValue">{{ this.LastQueue.glasswidthmm }}</span>
                        <span class="measureUnit">mm</span>
                    </div>
                    <div class="measure_Content">
                        <span class="measuretitle">测量宽:</span>
                        <span class="measureValue">{{ this.LastQueue.glassheightmm }}</span>
                        <span class="measureUnit">mm</span>
                    </div>
                    <div class="measure_Content">
                        <span class="measuretitle">匹配结果:</span>
                        <span class="measureValue">{{ this.LastQueue.state>0?"匹配成功":(this.LastQueue.state==0?"匹配失败":"多数据匹配") }}</span>
                    </div>
                </div>
            </div>
        </el-dialog>
@@ -473,20 +700,22 @@
<script>
import {
    home, home2, SelectCageInfo,
    home, SelectCageInfo,
    Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings,
    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue
    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 {
            dataList: [],
            tableData1: [],
            Measuermode: false,
            confirm1: false,
@@ -578,10 +807,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() {
@@ -633,7 +863,10 @@
                        // 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];
@@ -644,6 +877,7 @@
                    this.alarm = obj.alarmmg[0];
                    this.tableData1 = obj.OrderTask[0];
                    this.LastQueue = obj.LastQueue[0];
                    //是否允许出片
@@ -720,13 +954,6 @@
            SelectCageInfo("").then(res => {
                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;
            });
        },
        //添加理片笼玻璃
@@ -850,6 +1077,15 @@
                }
            }
        },
        //获取设备显示状态
        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) {
@@ -860,8 +1096,70 @@
        //人工匹配
        ManualMatching() {
            this.StorageCageAdd = true;
        },
        //人工拿走
        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>