wu
2024-11-07 2d92826d942cd4c06e1f415d4a3896b99ec65e2b
Albania_Mes-ui/src/views/home/index.vue
@@ -327,6 +327,11 @@
    display: inline-block;
    cursor: pointer;
}
.bold-center {
    font-weight: bold;
    text-align: center;
}
</style>
<template>
    <el-container>
@@ -432,7 +437,7 @@
                        </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="mateid" :label="$t('Mateid')"></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>
@@ -447,7 +452,7 @@
                        </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="mateid" :label="$t('Mateid')"></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>
@@ -478,7 +483,7 @@
                            <!-- 保存 -->
                            <el-button type="primary" @click="importData()"
                                style="margin-right: 10px;margin-bottom: 10px;">{{
                                $t('Save') }}</el-button>
                                    $t('Save') }}</el-button>
                            <input type="file" id="file-upload" multiple @change="Change" />
                            <label for="file-upload">{{ $t('Select file') }}</label>
                        </div>
@@ -504,17 +509,35 @@
        <el-dialog :visible.sync="Measure" :title="$t('Measure')" top="5vh"><!--测量页面-->
            <!--测量页面主体-->
            <div style="height: 780px;">
            <div style="height: 800px;">
                <!--功能-->
                <div>
                    <!-- <el-button type="primary" @click="ManualMatching()" :disabled="(this.LastQueue.state <= 0)"
                    <el-button type="primary" @click="ManualMatching()" :disabled="(this.LastQueue.state > 1)"
                        style="z-index: 999;">{{ $t('Manual matching') }}</el-button>
                    <el-button type="primary" @click="ManualTake()" :disabled="(this.LastQueue.state <= 0)"
                    <el-button type="primary" @click="ManualTake()" :disabled="(this.LastQueue.state > 1)"
                        style="z-index: 999;">{{
                $t('Manual removal') }}</el-button> -->
                    <el-button type="primary" @click="AnewMeasure()" :disabled="(this.LastQueue.state <= 0)"
                $t('Manual removal') }}</el-button>
                    <el-button type="primary" @click="AnewMeasure()"
                        style="z-index: 999;">{{
                            $t('Remeasure') }}</el-button>
                    <!-- 输入下拉框1 -->
                    <!-- SelectSetting -->
                    <label for="file-upload"  style="font-weight: bold;font-size: 16px;margin-left: 50px;">{{ $t('Films') }}:{{SelectSetting.films }}</label>
                    <el-select v-model="selectedValue1" :placeholder="$t('Films')">
                        <el-option v-for="item in selectedOption1.films" :key="item.value" :label="item.films"
                            :value="item.films">
                        </el-option>
                    </el-select>
                    <!-- 输入下拉框2 -->
                    <label for="file-upload"  style="font-weight: bold;font-size: 16px;">{{ $t('Thickness') }}:{{SelectSetting.thickness }}mm</label>
                    <el-select v-model="selectedValue2" :placeholder="$t('Thickness')">
                        <el-option v-for="item in selectedOption2.thickness" :key="item.value" :label="item.thickness"
                            :value="item.thickness">
                        </el-option>
                    </el-select>
                    <el-button type="primary" @click="SaveMeasure(selectedValue1,selectedValue2)"
                        style="z-index: 999;">{{
                            $t('Save') }}</el-button>
                </div>
                <br>
                <!--显示-->
@@ -544,7 +567,7 @@
                </div>
                <!--显示-->
                <div style="width:20px;height: 720px;float: left;"></div>
                <div style="width:600px;height: 720px;border: 2px solid #d1d1d1;float: left;">
                <div style="width:700px;height: 720px;border: 2px solid #d1d1d1;float: left;">
                    <!--玻璃图  #81b337  padding: 50px 50px;-->
                    <!-- <span class="measuretitle">{{ $t('Width') }}:</span> <span class="measureValue">{{
                this.LastQueue.glasswidth
@@ -564,8 +587,9 @@
                this.LastQueue.state > 0 ? $t('Matching successful') :
                    (this.LastQueue.state == 0 ? $t('Multiple data matching') : $t('Matching failed')) }}</span>
                    <br> -->
                    <el-table :data="this.tasklist3" :row-class-name="rowClassName" style="width: 100%;padding:0;">
                    <el-table :data="this.tasklist3" :height="700"  :row-class-name="rowClassName" style="width: 100%;padding:0;">
                        <el-table-column prop="flowcard" :label="$t('Flowcard')"></el-table-column>
                        <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
                        <el-table-column prop="films" :label="$t('Films')"></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>
@@ -579,16 +603,18 @@
        </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 :data="this.StorageCageInfo" :height="700" border style="width: 100%;overflow: auto;"
                :span-method="spanMethod" class="bold-center">
                <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="flowcard" :label="$t('Flowcard')"></el-table-column>
                <el-table-column :min-width="80" prop="mateid" :label="$t('Mateid')"></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="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;"
@@ -617,17 +643,18 @@
                :tree-props="{ children: 'glassinfo', hasChildren: 'hasChildren' }">
                <el-table-column prop="flowcard" :label="$t('Order')" width="150" align="center">
                    <template slot-scope='scope'>
                        <div
                           >
                        <div>
                            {{ scope.row.flowcard }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="glasstype" :label="$t('GlassType')" align="center">
                <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                </el-table-column>
                <el-table-column prop="number" :label="$t('Order No')" align="center">
                <el-table-column prop="tier" :label="$t('Tier')" align="center">
                </el-table-column>
                <el-table-column prop="cageno" :label="$t('No Of Cage')" align="center">
                <el-table-column prop="number" :label="$t('Number')" align="center">
                </el-table-column>
                <el-table-column prop="cageno" :label="$t('Cage GlassNumber')" align="center">
                </el-table-column>
                <el-table-column prop="finishnumber" :label="$t('Finish No')" align="center">
                </el-table-column>
@@ -644,7 +671,7 @@
                <el-table-column prop="state" :label="$t('Task State')" align="center">
                    <template slot-scope='scope'>
                        <div
                            :style="{ backgroundColor: scope.row.state === 0 ? '' : '#00FFFF', width: '105%', height: '125%',lineHeight: '50px'}">
                            :style="{ backgroundColor: scope.row.state === 0 ? '' : '#00FFFF', width: '105%', height: '125%', lineHeight: '50px' }">
                            {{ scope.row.state >= 0 ? scope.row.state == 0 ? $t('Stop') : $t('Start') : "" }}
                        </div>
                    </template>
@@ -654,9 +681,11 @@
                        {{ 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')">
                <el-table-column prop="method" :label="$t('Task Method')" align="center">
                    <template slot-scope='scope'>
                        {{ scope.row.state >= 0 ? scope.row.method == 0 ? $t('Out') : $t('All Out') : "" }}
                        <div style="text-align: center;width: 105%;">
                            {{ scope.row.state >= 0 ? (scope.row.method == 0 ? $t('Out') : $t('All Out')) : "" }}
                        </div>
                    </template>
                </el-table-column>
                <el-table-column prop="line" :label="$t('Task Line')">
@@ -681,24 +710,24 @@
                            {{ $t('Mode Change') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            v-show="scope.row.state >= 0 ? true : false" @click="StartChange(scope.row.flowcard)">
                            {{ scope.row.orderstate > 0 ? $t('start work') : $t('start work') }}</el-button>
                            v-show="scope.row.state >= 0 ? true : false" @click="StartChange(scope.row.flowcard, scope.row.orderstate)">
                            {{ scope.row.orderstate > 0 ? $t('stop work') : $t('start work') }}</el-button>
                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                            v-show="scope.row.state >= 0 ? true : false"
                            @click="deleteTasks(scope.row.flowcard)">
                            v-show="scope.row.state >= 0 ? true : false" @click="deleteTasks(scope.row.flowcard)">
                            {{ $t('langDelete') }}</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%;" />
                <el-input v-model="StorageCageForm.glasswidthmm" autocomplete="off" style="width:15%;" />
                <label for="">{{ $t('Height') }}</label>
                <el-input v-model="StorageCageForm.height" autocomplete="off" style="width:15%;" />
                <el-input v-model="StorageCageForm.glassheightmm" 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>
@@ -709,7 +738,7 @@
            <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="mateid" :label="$t('Mateid')"></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>
@@ -733,7 +762,7 @@
    Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue,
    isAllowReorderings,
    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue, importData, ManualTake, AnewMeasure, StartChange, deleteTasks
    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue, importData, ManualTake, AnewMeasure, StartChange, deleteTasks,SaveMeasure
} from "../../api/home";
@@ -747,14 +776,28 @@
            carposition: 0,
            // selected: [],
            selected: Array.from({ length: 1000 }, () => 1),
            selected2: Array.from({ length: 1000 }, () => 1),
            selected3: Array.from({ length: 1000 }, () => 1),
            // selected: '1',
            options: [{
                value: '1',
                label: '1'
            }],
            // mounted() {
            //   this.selected[scope.$index] = '1'; // 假设你想让第一个下拉框默认选中 '选项 1'
            // },
            // 测量下拉框膜系
            selectedOption1: {
                films: [],
              },
              selectedOption2: {
                thickness: [],
              },
            //  selectedOption1: [films],
            //  selectedOption2: [thickness],
            selectedValue1: null, // 用于存储第一个下拉框的选中值
            selectedValue2: null, // 用于存储第二个下拉框的选中值
            // 将值赋给 selectedValue1 和 selectedValue2
            dataList: [],
            tableData1: [],
            Measuermode: false,
@@ -775,8 +818,8 @@
            StorageCageAdd: false,
            StorageCageInfo: [],
            StorageCageForm: {
                width: "",
                height: "",
                glasswidthmm: "",
                glassheightmm: "",
                thickness: "",
                films: ""
            },
@@ -794,6 +837,8 @@
            cagelist2: [],
            cagelist3: [],
            cagelist4: [],
            SelectMeasure: [],
            SelectSetting: [],
            task1: 3,
            task2: 2,
            tasklist1: [],
@@ -847,7 +892,7 @@
            PromptSize: 250,
            reset: false,
            isQueueWarning: false,
            CurrentFrame: [],
            // CurrentFrame: [],
            DeviceList: [1, 1, 1, 1],
            GlassIdList: [],
            Scanningmethod: true,
@@ -859,11 +904,13 @@
    created() {
        this.load();
    },
    activated() {
        this.init();
    }
    ,
    methods: {
        showform(i) {
            if (i == 1) {
@@ -912,6 +959,23 @@
                    this.tasklist3 = obj.glassInfoFlowCard[0];
                    this.tasklist2 = obj.StoragTaskeTaskFeed[0];
                    this.tasklist1 = obj.StoragTaskeTaskOut[0];
                    this.SelectSetting=obj.SelectSetting[0];
                    this.selectedOption1.films = obj.SelectMeasure[0];
                    this.selectedOption2.thickness = obj.SelectMeasure[0];
                    // if(obj.StorageCageForm.length == 0){
                    //     this.StorageCageForm.glasswidthmm = ""
                    //     this.StorageCageForm.glassheightmm = ""
                    //     this.StorageCageForm.films = ""
                    //     this.StorageCageForm.thickness = ""
                    // }else{
                    //     this.StorageCageForm = obj.StorageCageForm[0];
                    // }
                    // console.log(obj.StorageCageForm[0]);
                    //在这里写下拉选的v-for的名称
                    if (obj.alarmmg[0].length > 0) {
                        if (this.alarm.length > 0) {
                            if (this.alarm[this.alarm.length - 1].id != obj.alarmmg[0][obj.alarmmg[0].length - 1].id) {
@@ -952,6 +1016,7 @@
                    this.$forceUpdate();
                }.bind(this);
                //关闭事件
                socket.onclose = function () {
                    console.log("websocket已关闭");
@@ -966,6 +1031,7 @@
                });
            }
        },
        load() {
            //加载用户权限
            currentUsername().then(res => {
@@ -1005,6 +1071,7 @@
                this.cageinfo = res.data.cageinfo;
                this.currentPages = 1;
            });
        },
        //添加理片笼玻璃
        StorageCageAddGlass(index) {
@@ -1056,25 +1123,46 @@
                }
            });
        },//选择开始工程
        StartChange(flowcard) {
            StartChange(flowcard).then(res => {
        StartChange(flowcard,orderstate) {
            if(orderstate==1){
            StartChange(flowcard,0).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        }else{
            StartChange(flowcard,1).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        }
        },
        //选择开始工程
        deleteTasks(flowcard) {
            deleteTasks(flowcard).then(res => {
                console.log("@" + flowcard + "@");
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        },
        //选择开始工程
        deleteTasks(flowcard) {
            deleteTasks(flowcard).then(res => {
                console.log("@"+flowcard+"@");
                if (res.data.message == 200) {
        //保存测量膜系的参数
        SaveMeasure(films,thickness) {
            console.log('Films:', films);  // 打印 films
            console.log('Thickness:', thickness);  // 打印 thickness
            SaveMeasure(films,thickness).then(res => {
                if (res.data.message >= 1) {
                    this.$message.success(this.$t('Operation successful'));
                }
            });
        },
        //查询玻璃信息
        SelectGlassInfo() {
            SelectGlassInfo(this.StorageCageForm.width, this.StorageCageForm.height, this.StorageCageForm.thickness, this.StorageCageForm.films).then(res => {
            console.log(this.StorageCageForm.glasswidthmm);
            SelectGlassInfo(this.StorageCageForm.glasswidthmm, this.StorageCageForm.glassheightmm, this.StorageCageForm.thickness, this.StorageCageForm.films).then(res => {
                this.StorageCageAddInfo = res.data.StorageCageAddInfo;
            })
        },
@@ -1112,7 +1200,35 @@
                }
            });
        },
        spanMethod({ rowIndex, columnIndex }) {
            let zhi1 = this.StorageCageInfo[rowIndex].cage;
            let zhi2 = 0;
            if (rowIndex > 0) {
                zhi2 = this.StorageCageInfo[rowIndex - 1].cage;
            }
            if (columnIndex === 0) { // 仅处理 cage 列
                // console.log(columnIndex,rowIndex);
                if (zhi1 != zhi2) {
                    const currentCage = this.StorageCageInfo[rowIndex].cage;
                    let span = { rowspan: 1, colspan: 1 };
                    // 检查后续行,找到相同的 cage 值
                    for (let i = rowIndex + 1; i < this.StorageCageInfo.length; i++) {
                        if (this.StorageCageInfo[i].cage === currentCage) {
                            span.rowspan++;
                        } else {
                            break;
                        }
                    }
                    return span;
                } else {
                    return { rowspan: 0, colspan: 0 };
                }
            }
            // 其他列保持默认,不合并
            return { rowspan: 1, colspan: 1 };
        },
        //改变每页容纳的数据量
        handleSizeChange: function (size) {
            this.pagesize = size;
@@ -1234,6 +1350,7 @@
            importData(tbdata).then(res => {
                if (res.data.message == 200) {
                    this.$message.success(this.$t('Operation successful'));
                    this.dataList = null;
                }
            });
        },