| | |
| | | <template> |
| | | <div> |
| | | <el-row> |
| | | <template v-for="item in 32" :key="item"> |
| | | <el-col :span="0.9"> |
| | | <span class="image-text"></span> |
| | | <img src="../../public/è´§æ¶.jpeg" /> |
| | | </el-col> |
| | | </template> |
| | | </el-row> |
| | | <el-row style="padding-bottom: 5px;"> |
| | | <template v-for="item in 32" :key="item"> |
| | | <el-col :span="0.9"> |
| | | <span class="image-text"></span> |
| | | <template v-for="item in columnCount" :key="item"> |
| | | <el-col :span="columnWidth"> |
| | | <span class="image-text">{{ 91-item }}</span> |
| | | <img src="../../public/è´§æ¶.jpeg" /> |
| | | </el-col> |
| | | </template> |
| | |
| | | </div> |
| | | <div class="line-container"> |
| | | <div class="line"></div> |
| | | <!-- <div class="dot" :style="{ right: dotPosition + 'px' }" ref="childDot" @click="mouseClick"></div> --> |
| | | <div :class="update()" |
| | | :style="{ transform: `translateX(${StackerCrane.CurrentColumn < 33 ? StackerCrane.CurrentColumn * 30 - 59 : 0}px)` }" |
| | | <div :class="update()" :style="{ transform: `translateX(${calculateDotPosition()}px)` }" |
| | | ref="childDot" @click="mouseClick"></div> |
| | | </div> |
| | | <div> |
| | | <el-row style="padding-top: 5px;"> |
| | | <template v-for="item in 32" :key="item"> |
| | | <el-col :span="0.9"> |
| | | <span class="image-text"></span> |
| | | <template v-for="item in columnCount" :key="item"> |
| | | <el-col :span="columnWidth"> |
| | | <span class="image-text">{{ 91-item }}</span> |
| | | <img src="../../public/è´§æ¶.jpeg" /> |
| | | </el-col> |
| | | </template> |
| | | </el-row> |
| | | <el-row style="padding-bottom: 5px;"> |
| | | <template v-for="item in 32" :key="item"> |
| | | <el-col :span="0.9"> |
| | | <span class="image-text"></span> |
| | | <img src="../../public/è´§æ¶.jpeg" /> |
| | | </el-col> |
| | | </template> |
| | | <div style="margin-top: 60px;"></div> |
| | | </el-row> |
| | | </div> |
| | | |
| | | <el-dialog v-model="dialogVisible" title="å åæºä¿¡æ¯æ¥ç" :before-close="handleClose"> |
| | | <el-form ref="$form" :model="StackerCrane" label-position="left" label-width="120px" size="medium"> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="设å¤ç¼å·ï¼"> |
| | | <j-el-description :value="StackerCrane.DeviceName" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="设å¤ç¶æ:"> |
| | | <j-el-description :value="StackerCrane.Fault" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="工使¨¡å¼:"> |
| | | <j-el-description :value="StackerCrane.Automatic" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="ä»»å¡å·ï¼"> |
| | | <j-el-description :value="StackerCrane.CurrentTaskNum" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="ä½ä¸ç¶æ:"> |
| | | <j-el-description :value="StackerCrane.Running" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="å½åè¡åå±ï¼"> |
| | | <j-el-description |
| | | :value="StackerCrane.CurrentRow + '-' + StackerCrane.CurrentLayer + '-' + StackerCrane.CurrentColumn " |
| | | type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> |
| | | <el-col :span="24" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="æ¥è¦ä¿¡æ¯:"> |
| | | <j-el-description :value="StackerCrane.StackerAlarm" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-divider /> |
| | | <h4 style="margin-bottom: 20px;">æå¨æä½</h4> |
| | | <el-form ref="form" :model="form" label-width="90px"> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="ä»»å¡å½ä»¤" prop="TargetAddress"> |
| | | <el-select size="large" v-model="form.TaskType" placeholder="è¯·éæ©ä»»å¡å½ä»¤"> |
| | | <el-option label="å
¥åº" value="17" /> |
| | | <el-option label="åºåº" value="18" /> |
| | | <el-option label="ç§»åº" value="20" /> |
| | | <el-option label="åè´§" value="24" /> |
| | | <el-option label="æ¾è´§" value="48" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="èµ·ç¹è¡åå±:"> |
| | | <el-input size="large" v-model="form.SourceAddress" style="width: 800px" placeholder="请è¾å
¥èµ·ç¹è¡åå±" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="16" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="ç»ç¹è¡åå±:"> |
| | | <el-input size="large" v-model="form.TargetAddress" style="width: 800px" placeholder="请è¾å
¥ç»ç¹è¡åå±" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <el-divider /> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="5" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-button type="primary" size="small" plain @click="start"> |
| | | <i class="el-icon-check">å¯å¨</i> |
| | | </el-button> |
| | | |
| | | </el-col> |
| | | <el-col :span="5" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-button type="warning" size="small" plain @click="reset"> |
| | | <i class="el-icon-check">å¤ä½</i> |
| | | </el-button> |
| | | </el-col> |
| | | <el-col :span="5" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-button type="danger" size="small" plain @click="disconnected"> |
| | | <i class="el-icon-check">䏿</i> |
| | | </el-button> |
| | | </el-col> |
| | | <el-col :span="5" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-button type="danger" size="small" plain @click="emergencyStop"> |
| | | <i class="el-icon-check">æ¥å</i> |
| | | </el-button> |
| | | </el-col> |
| | | <el-col :span="4" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-button type="danger" size="small" plain @click="StackerRecall"> |
| | | <i class="el-icon-check">å¬å</i> |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="dialogVisible = false"> |
| | | 确认 |
| | | </el-button> |
| | | <el-dialog v-model="dialogVisible" :before-close="handleClose" width="520px" class="modern-dialog"> |
| | | <div class="dialog-header"> |
| | | <h3 class="dialog-title">å åæºä¿¡æ¯</h3> |
| | | </div> |
| | | <div class="dialog-content"> |
| | | <div class="info-list"> |
| | | <div class="info-item"> |
| | | <span class="item-label">设å¤ç¼å·</span> |
| | | <span class="item-value">{{ yL_DB.R_PP_Status || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">设å¤ç¶æ</span> |
| | | <span :class="['item-value', statusClass]">{{ yL_DB.YL_Status || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">工使¨¡å¼</span> |
| | | <span :class="['item-value', autoStatusClass]">{{ yL_DB.YL_AutoStatus || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">ä»»å¡å·</span> |
| | | <span class="item-value">{{ yL_DB.YL_TaskNum || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">ä½ä¸ç¶æ</span> |
| | | <span class="item-value">{{ yL_DB.YL_WorkStatus || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">å½åè¡åå±</span> |
| | | <span class="item-value">{{ yL_DB.YL_Row + '-' + yL_DB.YL_Column + '-' + yL_DB.YL_Layer || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">æ¥è¦ä¿¡æ¯</span> |
| | | <span class="item-value">{{ yL_DB.StackerAlarm || 'æ ' }}</span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | YLDBMap: { |
| | | YL_Status: { |
| | | 0: "ä¸å¨çº¿", |
| | | 1: "å¨çº¿", |
| | | 2: "æ¥å", |
| | | 3: "æªç¥", |
| | | }, |
| | | YL_AutoStatus: { |
| | | 1: "åèªå¨", |
| | | 2: "忥", |
| | | 3: "èªå¨", |
| | | 4: "æå¨", |
| | | 5: "è±æº", |
| | | }, |
| | | YL_WorkStatus: { |
| | | 1: "å¾
å½", |
| | | 2: "åè´§å®æ", |
| | | 3: "åè´§ä¸", |
| | | 5: "æ¾è´§ä¸", |
| | | 6: "任塿§è¡é误", |
| | | 7: "æªç¥", |
| | | 9: "ä»»å¡å®æ", |
| | | }, |
| | | }, |
| | | x: 0, // åå§xå¼ |
| | | url: "api/Equipment/GetStackerInfoByNo", |
| | | dialogVisible: false, |
| | | StackerCrane: { |
| | | Automatic: "", |
| | | Fault: "", |
| | | CurrentLayer: "1", |
| | | CurrentRow: "1", |
| | | CurrentColumn: "1", |
| | | CurrentTaskNum: "", |
| | | Running: "", |
| | | DeviceName: "", |
| | | DeviceCode: "", |
| | | StackerAlarm:"", |
| | | timer1: null, |
| | | yL_DB: { |
| | | R_PP_Status: "", |
| | | YL_Status: "", |
| | | YL_AutoStatus: "", |
| | | YL_TaskNum: "", |
| | | YL_WorkStatus: "", |
| | | YL_WorkType: "", |
| | | YL_Row: "", |
| | | YL_Column: "", |
| | | YL_Layer: "", |
| | | StackerAlarm: "", |
| | | CurrentColumn: "1" |
| | | }, |
| | | form: { |
| | | TaskType: "", |
| | |
| | | }, |
| | | }; |
| | | }, |
| | | |
| | | props: { |
| | | equipNo: { |
| | | type: String, |
| | |
| | | dotPosition() { |
| | | return this.x; |
| | | }, |
| | | // åæ°ï¼åæåº90å |
| | | columnCount() { |
| | | return 90; |
| | | }, |
| | | // åå®½ï¼æ ¹æ®90åè®¡ç® |
| | | columnWidth() { |
| | | return 24 / 90; |
| | | }, |
| | | // æ¯åçå®é
宽度ï¼åç´ ï¼ |
| | | pixelPerColumn() { |
| | | return 30; |
| | | }, |
| | | // ä»åºæå¤§åæ° |
| | | maxColumn() { |
| | | return 90; |
| | | }, |
| | | // 设å¤ç¶ææåé¢è² |
| | | statusClass() { |
| | | const status = this.yL_DB.YL_Status; |
| | | if (status === 'ä¸å¨çº¿') { |
| | | return 'status-red'; |
| | | } else if (status === 'å¨çº¿') { |
| | | return 'status-green'; |
| | | } |
| | | return ''; |
| | | }, |
| | | // 工使¨¡å¼æåé¢è² |
| | | autoStatusClass() { |
| | | const status = this.yL_DB.YL_AutoStatus; |
| | | if (status === 'èªå¨' || status === 'åèªå¨') { |
| | | return 'status-green'; |
| | | } else if (status === 'æå¨') { |
| | | return 'status-blue'; |
| | | } else if (status === 'è±æº') { |
| | | return 'status-red'; |
| | | } |
| | | return ''; |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.moveDot(this.x); |
| | | // åå§åæ¶ä¼ é空对象ï¼é¿å
ç±»åä¸å¹é
é误 |
| | | this.moveDot({}); |
| | | // å¯å¨å®æ¶å¨ï¼æ¯ç§æ´æ°ä¸æ¬¡æ°æ® |
| | | this.timer1 = setInterval(() => { |
| | | this.updateData(); |
| | | }, 1000); |
| | | }, |
| | | beforeUnmount() { |
| | | // æ¸
é¤å®æ¶å¨ |
| | | if (this.timer1) { |
| | | clearInterval(this.timer1); |
| | | this.timer1 = null; |
| | | } |
| | | }, |
| | | watch: { |
| | | '$root.stackerData': { |
| | | handler() { |
| | | this.updateData(); |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | methods: { |
| | | updateData() { |
| | | const equipNoStr = String(this.equipNo); |
| | | if (this.$root.stackerData && this.$root.stackerData[equipNoStr]) { |
| | | const stackerData = this.$root.stackerData[equipNoStr]; |
| | | this.moveDot(stackerData); |
| | | } |
| | | }, |
| | | // è®¡ç®æç¤ºå¨ä½ç½® |
| | | calculateDotPosition() { |
| | | // æªæ¶å°ä¿¡æ¯æCurrentColumn为0ï¼æç¤ºå¨å¨å¤é¢ |
| | | if (!this.yL_DB.CurrentColumn || this.yL_DB.CurrentColumn == "0") { |
| | | return -30; // æ¾ç¤ºå¨è´§ä½åºå左侧å¤é¢ |
| | | } |
| | | |
| | | // è®¡ç®æç¤ºå¨ä½ç½®ï¼ç¡®ä¿ä¸å¯¹åºåå¯¹é½ |
| | | const currentColumn = parseInt(this.yL_DB.CurrentColumn); |
| | | |
| | | // å®é
è´§ä½å®½åº¦ï¼å¾çå®½åº¦ï¼ |
| | | const columnWidth = 30; // è´§ä½å¾ç宽度为30px |
| | | const dotWidth = 25; // æç¤ºå¨å®½åº¦ä¸º25px |
| | | |
| | | // ç±äºåå·æ¯ä»å³å°å·¦éåæ¾ç¤ºçï¼éè¦è®¡ç®å®é
ç´¢å¼ |
| | | // ä¾å¦ï¼ç¬¬90åå¨æå·¦è¾¹ï¼ç¬¬1å卿å³è¾¹ |
| | | // 模æ¿ä¸æ¾ç¤ºçåå·æ¯ 91-itemï¼æä»¥ç¬¬1个el-colæ¾ç¤º90ï¼ç¬¬90个el-colæ¾ç¤º1 |
| | | // å½ååå·ä¸ºcurrentColumnï¼å¯¹åºçç´¢å¼ä¸º maxColumn - currentColumn |
| | | const actualIndex = this.maxColumn - currentColumn; |
| | | |
| | | // 计ç®ä½ç½®ï¼ |
| | | // (å®é
ç´¢å¼ * è´§ä½å®½åº¦) = 该åçèµ·å§ä½ç½® |
| | | // + (è´§ä½å®½åº¦ / 2) = 该åçä¸å¿ä½ç½® |
| | | // - (æç¤ºå¨å®½åº¦ / 2) = å°æç¤ºå¨ä¸å¿ä¸åä¸å¿å¯¹é½ |
| | | const position = actualIndex * columnWidth + (columnWidth / 2) - (dotWidth / 2); |
| | | |
| | | // è°è¯ä¿¡æ¯ |
| | | console.log('å½åå:', currentColumn, 'å®é
ç´¢å¼:', actualIndex); |
| | | console.log('è´§ä½å®½åº¦:', columnWidth, 'æç¤ºå¨å®½åº¦:', dotWidth); |
| | | console.log('计ç®ä½ç½®:', position); |
| | | |
| | | return position; |
| | | }, |
| | | |
| | | moveDot(x) { |
| | | this.StackerCrane.Automatic = x.Automatic == null ? "æ
é" : x.Automatic; |
| | | this.StackerCrane.Fault = x.Fault == null ? "æ
é" : x.Fault; |
| | | this.StackerCrane.Running = x.Running == null ? "æ
é" : x.Running; |
| | | this.StackerCrane.CurrentColumn = x.CurrentColumn == undefined ? 1 : x.CurrentColumn; |
| | | this.StackerCrane.CurrentLayer = x.CurrentLayer == undefined ? 1 : x.CurrentLayer; |
| | | this.StackerCrane.LevelPoint = x.LevelPoint; |
| | | this.StackerCrane.DeviceName = x.DeviceName; |
| | | this.StackerCrane.CurrentTaskNum = x.CurrentTaskNum; |
| | | this.StackerCrane.StackerAlarm = x.StackerAlarm; |
| | | this.form.DeviceCode = x.DeviceCode; |
| | | // æ å°å·¥ä½æ¨¡å¼ |
| | | const autoStatusCode = x.YL_AutoStatus; |
| | | if (autoStatusCode !== undefined) { |
| | | this.yL_DB.YL_AutoStatus = this.YLDBMap.YL_AutoStatus[autoStatusCode] || autoStatusCode; |
| | | } else { |
| | | this.yL_DB.YL_AutoStatus = "æ "; |
| | | } |
| | | |
| | | // æ å°è®¾å¤ç¶æ |
| | | const statusCode = parseInt(x.YL_Status); |
| | | if (!isNaN(statusCode)) { |
| | | this.yL_DB.YL_Status = this.YLDBMap.YL_Status[statusCode] || statusCode.toString(); |
| | | } else { |
| | | this.yL_DB.YL_Status = "æ "; |
| | | } |
| | | |
| | | // æ å°å·¥ä½ç¶æ |
| | | const workStatusCode = x.YL_WorkStatus; |
| | | if (workStatusCode !== undefined) { |
| | | this.yL_DB.YL_WorkStatus = this.YLDBMap.YL_WorkStatus[workStatusCode] || workStatusCode; |
| | | } else { |
| | | this.yL_DB.YL_WorkStatus = "æ "; |
| | | } |
| | | |
| | | // å
¶ä»æ°æ®èµå¼ |
| | | this.yL_DB.R_PP_Status = x.DeviceCode || "æ "; |
| | | this.yL_DB.YL_WorkType = x.YL_WorkType || "æ "; |
| | | this.yL_DB.YL_TaskNum = x.YL_TaskNum || "æ "; |
| | | |
| | | // å¤çè¡å· |
| | | const rowValue = parseInt(x.YL_Row); |
| | | this.yL_DB.YL_Row = (!isNaN(rowValue) && rowValue > 0) ? rowValue.toString() : "0"; |
| | | |
| | | // æ ¹æ®å°è´§ä½å·è®¡ç®åå· |
| | | // ç´æ¥ä½¿ç¨åå§å°è´§ä½å· |
| | | const smallColumn = parseInt(x.YL_Column); |
| | | let displayColumn; |
| | | if (!isNaN(smallColumn) && smallColumn > 0) { |
| | | // ç´æ¥ä½¿ç¨å°è´§ä½å·ï¼ä¸è¿è¡è½¬æ¢ |
| | | displayColumn = smallColumn; |
| | | } else { |
| | | // æ²¡ææ¶å°ä¿¡æ¯ï¼æç¤ºå¨å¨å¤é¢ |
| | | displayColumn = 0; |
| | | } |
| | | |
| | | // å¤çåå· |
| | | this.yL_DB.YL_Column = (!isNaN(smallColumn) && smallColumn > 0) ? smallColumn.toString() : "0"; |
| | | |
| | | // å¤çå±å· |
| | | const layerValue = parseInt(x.YL_Layer); |
| | | this.yL_DB.YL_Layer = (!isNaN(layerValue) && layerValue > 0) ? layerValue.toString() : "0"; |
| | | // å¤çå端æ°åæ°ï¼æ¾ç¤ºå°æ¥è¦ä¿¡æ¯ä¸ |
| | | this.yL_DB.StackerAlarm = x.StackerAlarm || "æ "; |
| | | this.yL_DB.CurrentColumn = displayColumn.toString(); |
| | | |
| | | this.form.DeviceCode = x.DeviceCode || ""; |
| | | }, |
| | | update() { |
| | | if (this.StackerCrane.Automatic == "èæºæ¨¡å¼" && this.StackerCrane.Fault != "æ
é" && this.StackerCrane.Running == "å¾
æº") { |
| | | // è·åStackerAlarmçå¼ï¼è½¬æ¢ä¸ºå符串è¿è¡æ¯è¾ |
| | | const alarmValue = String(this.yL_DB.StackerAlarm).trim(); |
| | | // å½StackerAlarmåæ®µçå¼ä¸ä¸º0æç©ºæ¶ï¼å°±æ
鿥è¦ï¼æ¾ç¤ºçº¢è²ï¼ |
| | | if (alarmValue !== '' && alarmValue !== '0' && alarmValue !== 'æ ') { |
| | | return 'dot-Fault '; |
| | | } |
| | | if (this.yL_DB.YL_Status == "å¨çº¿" && (this.yL_DB.YL_AutoStatus == "èªå¨" || this.yL_DB.YL_AutoStatus == "åèªå¨")) { |
| | | return 'dot-Automatic '; |
| | | } |
| | | else if (this.StackerCrane.Automatic == "èæºæ¨¡å¼" && this.StackerCrane.Fault != "æ
é" && this.StackerCrane.Running == "è¿è¡ä¸") { |
| | | else if (this.yL_DB.YL_Status == "å¨çº¿" && this.yL_DB.YL_AutoStatus == "æå¨") { |
| | | return 'dot-Running '; |
| | | } else if (this.StackerCrane.Fault == "æ
é") { |
| | | return 'dot-Fault '; |
| | | } else { |
| | | return 'dot-Fault '; |
| | | } |
| | | }, |
| | | status() { |
| | | const statusText = this.ConveyorLineInfo.YL_Status; |
| | | if (statusText === 'æå¨') { |
| | | return 'custom-img-blue'; |
| | | } else if (statusText === 'èªå¨') { |
| | | return 'custom-img-green'; |
| | | } else if (statusText === 'è±æº') { |
| | | return 'custom-img-red'; |
| | | } else { |
| | | return ''; |
| | | } |
| | | }, |
| | | mouseClick() { |
| | |
| | | this.dialogVisible = true; |
| | | this.fullscreenLoading = false; |
| | | }, |
| | | start() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/StackerHandTask", this.form) |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success("å åæºå½ä»¤å·²ä¸å"); |
| | | // $vue.success("æå."); |
| | | this.show = false; |
| | | $vue.refresh(); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, reset() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/StackerReset?DeviceCode=" + this.form.DeviceCode) |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success("å¤ä½æå"); |
| | | // $vue.success("æå."); |
| | | this.show = false; |
| | | $vue.refresh(); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | |
| | | emergencyStop() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/StackerEmergencyStop?DeviceCode=" + this.form.DeviceCode) |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success("æ¥åå·²æä¸"); |
| | | // $vue.success("æå."); |
| | | // this.show = false; |
| | | // $vue.refresh(); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | disconnected() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/StackerDisconnected?DeviceCode=" + this.form.DeviceCode) |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success("䏿å åæºä»»å¡"); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | StackerRecall() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/StackerRecall?DeviceCode=" + this.form.DeviceCode) |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success("å¬åå åæº"); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | } |
| | | // start() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/StackerHandTask", this.form) |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success("å åæºå½ä»¤å·²ä¸å"); |
| | | // // $vue.success("æå."); |
| | | // this.show = false; |
| | | // $vue.refresh(); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, reset() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/StackerReset?DeviceCode=" + this.form.DeviceCode) |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success("å¤ä½æå"); |
| | | // // $vue.success("æå."); |
| | | // this.show = false; |
| | | // $vue.refresh(); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | |
| | | // emergencyStop() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/StackerEmergencyStop?DeviceCode=" + this.form.DeviceCode) |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success("æ¥åå·²æä¸"); |
| | | // // $vue.success("æå."); |
| | | // // this.show = false; |
| | | // // $vue.refresh(); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | // disconnected() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/StackerDisconnected?DeviceCode=" + this.form.DeviceCode) |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success("䏿å åæºä»»å¡"); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | // StackerRecall() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/StackerRecall?DeviceCode=" + this.form.DeviceCode) |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success("å¬åå åæº"); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // } |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | <style scoped> |
| | | .line-container { |
| | | position: relative; |
| | | height: 20px; |
| | | height: 25px; |
| | | background-color: #ecf5ff; |
| | | width: 960px; |
| | | width: 2720px; |
| | | /* 90å * 30pxæ¯å */ |
| | | } |
| | | |
| | | .line { |
| | |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | height: 1px; |
| | | height: 0px; |
| | | background-color: #a0cfff; |
| | | } |
| | | |
| | | .dot-Running { |
| | | position: absolute; |
| | | top: -5px; |
| | | top: 0px; |
| | | width: 25px; |
| | | height: 25px; |
| | | border-radius: 50%; |
| | |
| | | |
| | | .dot-Automatic { |
| | | position: absolute; |
| | | top: -5px; |
| | | top: 0px; |
| | | width: 25px; |
| | | height: 25px; |
| | | border-radius: 50%; |
| | |
| | | |
| | | .dot-Fault { |
| | | position: absolute; |
| | | top: -5px; |
| | | top: 0px; |
| | | width: 25px; |
| | | height: 25px; |
| | | border-radius: 50%; |
| | |
| | | |
| | | img { |
| | | width: 30px; |
| | | height: 25px; |
| | | height: 30px; |
| | | } |
| | | |
| | | .image-text { |
| | | position: absolute; |
| | | top: 5px; |
| | | /* left: 10px; */ |
| | | color: white; |
| | | /* æåé¢è² */ |
| | | color: #000000; |
| | | font-size: 12px; |
| | | /* åå·å¤§å° */ |
| | | font-weight: bold; |
| | | /* åä½ç²ç» */ |
| | | font-family: 'Microsoft YaHei', Arial, sans-serif; |
| | | margin-left: 5px; |
| | | } |
| | | </style> |
| | | |
| | | .modern-dialog { |
| | | border-radius: 16px !important; |
| | | overflow: hidden; |
| | | box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15); |
| | | } |
| | | |
| | | .modern-dialog .el-dialog__header { |
| | | display: none; |
| | | } |
| | | |
| | | .modern-dialog .el-dialog__body { |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | |
| | | .dialog-header { |
| | | background: linear-gradient(135deg, #409eff 0%, #67c23a 100%); |
| | | padding: 20px 24px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .dialog-title { |
| | | color: #fff; |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | margin: 0; |
| | | letter-spacing: 2px; |
| | | } |
| | | |
| | | .dialog-content { |
| | | padding: 28px; |
| | | background: #f8fafc; |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .info-list { |
| | | width: 100%; |
| | | max-width: 420px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 12px; |
| | | } |
| | | |
| | | .info-item { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 16px 20px; |
| | | background: #fff; |
| | | border-radius: 12px; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); |
| | | transition: all 0.3s ease; |
| | | } |
| | | |
| | | .info-item:hover { |
| | | transform: translateX(4px); |
| | | box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .item-label { |
| | | font-size: 14px; |
| | | color: #6b7280; |
| | | font-weight: 500; |
| | | min-width: 80px; |
| | | text-align: left; |
| | | } |
| | | |
| | | .item-value { |
| | | font-size: 15px; |
| | | color: #1f2937; |
| | | font-weight: 500; |
| | | text-align: right; |
| | | flex: 1; |
| | | margin-left: 20px; |
| | | word-break: break-all; |
| | | padding-left: 20px; |
| | | border-left: 1px solid #e5e7eb; |
| | | } |
| | | |
| | | .status-blue { |
| | | color: #409eff !important; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .status-green { |
| | | color: #67c23a !important; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .status-red { |
| | | color: #f56c6c !important; |
| | | font-weight: 600; |
| | | } |
| | | </style> |