ZengTao
2024-03-18 f819aa0addac06d14f68526976a960c485af4cca
Albania_Mes-ui/src/views/home/index.vue
@@ -6,7 +6,7 @@
.occupy {
    height: 100%;
    width: 10%;
    width: 20%;
    background-color: white;
    margin: 0px 8px 0px 8px;
    border: 1px #EBEEF5 solid;
@@ -64,15 +64,16 @@
}
.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;
    /* width: 1660px;
    max-width: 100vw;
    background-size: 1660px 560px; */
@@ -198,12 +199,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;
@@ -256,115 +258,200 @@
                <el-button type="primary" @click="showform(2)" :disabled="SoftEmergencyStopState"
                    :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"
                    :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"
                    :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>
            <div style="display: flex;align-items: center;">
                <div class="blocks" style="position: relative;width: 100%;">
                    <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>
                    <div style="padding: 10px;display: flex;height:100px;">
                        <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-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(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>
        </el-main>
        <el-dialog :visible.sync="Importorder" :title="$t('Import order')"
            top="5vh">
        <el-dialog :visible.sync="Importorder" :title="$t('Import order')" top="5vh">
        </el-dialog>
        <el-dialog :visible.sync="Measure" :title="$t('Measure')"
            top="5vh">
        <el-dialog :visible.sync="Measure" :title="$t('Measure')" top="5vh">
        </el-dialog>
        <el-dialog :visible.sync="StorageCage" :title="$t('StorageCage')"
            top="5vh">
        <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="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="145" prop="glassId" :label="$t('Barcode')"></el-table-column>
                <el-table-column :min-width="80" prop="width" :label="$t('Width')"></el-table-column>
                <el-table-column :min-width="80" prop="height" :label="$t('Height')"></el-table-column>
                <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'>
                        <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;"
                            @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')
                            :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-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="" :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.state == 0 ? $t('Start') : $t('Finished') }}
                    </template>
                </el-table-column>
                <el-table-column prop="method" :label="$t('Task Method')">
                </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,  UpdateTask, SelectCageInfo, DeleteByGlassID,
    SelectPassword,  Disabled,  SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings
    home, home2, SelectCageInfo,
    Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings,
    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue
} from "../../api/home";
@@ -374,6 +461,8 @@
    name: "Home",
    data() {
        return {
            tableData1:[],
            Measuermode: false,
            confirm1: false,
            confirm2: false,
            insertcage: 0,
@@ -384,12 +473,21 @@
            dialogFormVisible: false,
            dialogFormVisible1: false,
            dialogFormVisible2: false,
            Importorder:false,
            Measure:false,
            StorageCage:false,
            Taskqueue:false,
            StorageCageInfo:[],
            TaskqueueInfo:[],
            Importorder: false,
            Measure: false,
            StorageCage: false,
            Taskqueue: false,
            StorageCageAdd: false,
            StorageCageInfo: [],
            StorageCageForm: {
                width: "",
                height: "",
                thickness: "",
                films: ""
            },
            StorageCageAddInfo: [],
            TaskqueueInfo: [],
            cell: "",
            form1: {},
            form2: {},
            form3: {},
@@ -469,15 +567,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() {
@@ -515,11 +613,12 @@
                    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];
                    console.log(this.tasklist1);
                    this.alarm = obj.alarmmg[0];
                    this.tableData1 = obj.OrderTask[0];
                    //是否允许出片
@@ -538,9 +637,8 @@
                            this.cageinfo = res.data.cageinfo;
                        });
                    }
                    if(obj.StorageCageInfo!=null){
                        this.StorageCageInfo=obj.StorageCageInfo[0];
                        console.log(this.StorageCageInfo);
                    if (obj.StorageCageInfo != null) {
                        this.StorageCageInfo = obj.StorageCageInfo[0];
                    }
                    this.$forceUpdate();
@@ -605,66 +703,71 @@
                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.code == 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')
                })
            } else {
                UpdateQueue(this.StorageCageAddInfo[index]).then(res => {
                    if (res.data.code == 200) {
                        this.$message.success(this.$t('Operation successful'));
                    }
                });
            }
        },
        //领取/暂停任务
        ClaimTasks(flowcard, state) {
            console.log(flowcard, state);
            ClaimTasks(flowcard, state).then(res => {
                if (res.data.code == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        },
        //修改出片方式
        ModeChange(flowcard, method) {
            ModeChange(flowcard, method).then(res => {
                if (res.data.code == 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'));
                    }
                });
            }
        },
        //启用//理片笼禁用
        UpdateDisabled(cage, cell, disabled) {
@@ -674,7 +777,7 @@
                }
            });
        },
        //改变每页容纳的数据量
        handleSizeChange: function (size) {
            this.pagesize = size;
@@ -691,7 +794,7 @@
        handleCurrentChanges: function (currentPage) {
            this.currentPages = currentPage;
        },
        //是否允许出片队列排序
        isAllowReorderings() {
            isAllowReorderings(!this.isAllowReordering, this.OutSlice).then(res => {
@@ -728,7 +831,7 @@
                return this.GlassIdList[num].replace(specialChars, "");
            }
        }
    }
}
</script>
</script>