| | |
| | | <img v-if="imgType === '1'" src="../../public/lines2.png" /> |
| | | <label v-if="equipNo" class="equip-no">{{ equipNo }}</label> |
| | | </div> |
| | | <el-dialog v-model="dialogVisible" title="è¾éçº¿ä¿¡æ¯æ¥ç" :before-close="handleClose"> |
| | | <el-form ref="$form" :model="lineItemInfo" label-position="left" label-width="100px" 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="equipNo" 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="lineItemInfo.inStock" 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="lineItemInfo.taskNum" 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="lineItemInfo.alarm" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | </el-form><el-divider /> |
| | | <h4 style="margin-bottom: 20px;">æå¨æä½</h4> |
| | | <el-form ref="form" :model="form" label-width="100px"> |
| | | <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="1" /> |
| | | <el-option label="åºåº" value="2" /> |
| | | </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.TargetAddress" 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="4" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-button type="primary" size="small" plain @click="SendCommand"> |
| | | <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="warning" size="small" plain @click="ConveyorLineReset"> |
| | | <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="ConveyorLineEmergencyStop"> |
| | | <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="ConveyorLineReturn"> |
| | | <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="ConveyorLineCancel"> |
| | | <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="ConveyorLineInitialize"> |
| | | <i class="el-icon-check">å·¥ä½åå§å</i> |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <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> |
| | | </template> |
| | | <div class="dialog-content"> |
| | | <div class="info-list"> |
| | | <div class="info-item"> |
| | | <span class="item-label">设å¤ç¼å·</span> |
| | | <span class="item-value">{{ equipNo || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">ä»»å¡å·</span> |
| | | <span class="item-value">{{ lineItemInfo.taskNum || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">æ¯å¦æç</span> |
| | | <span class="item-value">{{ lineItemInfo.inStock || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">RFID</span> |
| | | <span class="item-value">{{ lineItemInfo.rfid || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">ç³è¯·</span> |
| | | <span class="item-value">{{ lineItemInfo.request || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">ç³è¯·åé¦</span> |
| | | <span class="item-value">{{ lineItemInfo.reresult || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">纸å·å¹
宽</span> |
| | | <span class="item-value">{{ lineItemInfo.width || 'æ ' }}</span> |
| | | </div> |
| | | <div class="info-item"> |
| | | <span class="item-label">æ¥è¦ä¿¡æ¯</span> |
| | | <span class="item-value">{{ lineItemInfo.error || 'æ ' }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | |
| | | default: "1", |
| | | }, |
| | | positionX: { |
| | | type: Int32Array, |
| | | type: Number, |
| | | default: 1, |
| | | }, |
| | | positionY: { |
| | | type: Int32Array, |
| | | type: Number, |
| | | default: 1, |
| | | }, |
| | | url: { |
| | |
| | | left: "500px", |
| | | top: "400px", |
| | | dialogVisible: false, |
| | | fullscreenLoading: false, |
| | | isAlarm: false, |
| | | lineItemInfo: { |
| | | inStock: "", |
| | | taskNum: "", |
| | | alarm: "", |
| | | rfid: "", |
| | | width: "", |
| | | request: "", |
| | | reresult: "", |
| | | error: "", |
| | | }, |
| | | // ç³è¯·åé¦ç¶æè·è¸ª |
| | | feedbackTracking: { |
| | | currentTaskNum: "", // å½åä»»å¡å· |
| | | hasFeedback: false, // æ¯å¦å·²åé¦è¿ |
| | | lastFeedbackValue: "" // 䏿¬¡åé¦çå¼ |
| | | }, |
| | | form: { |
| | | TaskType: "", |
| | |
| | | }; |
| | | }, |
| | | mounted() { |
| | | const axisX = (this.positionX - 1) * 40 + 100; |
| | | const axisX = (this.positionX - 1) * 60 + 100; |
| | | const axisY = (this.positionY - 1) + 50; |
| | | this.$nextTick(() => { |
| | | this.left = `${axisX}px`; |
| | | this.top = `${axisY}px`; |
| | | }); |
| | | |
| | | // çå¬å
¨å±conveyorLineDetailsçåå |
| | | this.$watch( |
| | | () => this.$root.conveyorLineDetails, |
| | | () => { |
| | | this.updateAlarmStatus(); |
| | | }, |
| | | { deep: true, immediate: true } |
| | | ); |
| | | |
| | | // å¼å¯å®æ¶å¨ï¼å®ææ£æ¥æ°æ®åå |
| | | this.timer = setInterval(() => { |
| | | this.updateAlarmStatus(); |
| | | }, 1000); // æ¯1ç§æ£æ¥ä¸æ¬¡ |
| | | }, |
| | | methods: { |
| | | // æ´æ°æ¥è¦ç¶æ |
| | | updateAlarmStatus() { |
| | | const equipNoStr = String(this.equipNo); |
| | | if (this.$root.conveyorLineDetails && this.$root.conveyorLineDetails[equipNoStr]) { |
| | | const rawData = this.$root.conveyorLineDetails[equipNoStr]; |
| | | this.isAlarm = rawData.isAlarm || false; |
| | | |
| | | // è·åå½åä»»å¡å· |
| | | const currentTaskNum = rawData.taskNum || 'æ '; |
| | | |
| | | // æ£æ¥ä»»å¡å·æ¯å¦åå |
| | | if (currentTaskNum !== this.feedbackTracking.currentTaskNum) { |
| | | // ä»»å¡å·ååï¼éç½®åé¦ç¶æ |
| | | this.feedbackTracking.currentTaskNum = currentTaskNum; |
| | | this.feedbackTracking.hasFeedback = false; |
| | | this.feedbackTracking.lastFeedbackValue = ""; |
| | | } |
| | | |
| | | // å¤çç³è¯·åé¦é»è¾ |
| | | let reresultValue = rawData.reresult || 'æ '; |
| | | |
| | | // 妿æ¶å°äºåé¦å¼ï¼éç©ºéæ ï¼ä¸è¿æ²¡æåé¦è¿ |
| | | if ((reresultValue !== 'æ ' && reresultValue !== '' && reresultValue !== undefined) && !this.feedbackTracking.hasFeedback) { |
| | | // è®°å½å·²åé¦ |
| | | this.feedbackTracking.hasFeedback = true; |
| | | this.feedbackTracking.lastFeedbackValue = reresultValue; |
| | | } |
| | | |
| | | // 妿已ç»åé¦è¿ï¼æ¾ç¤º"å·²åé¦" |
| | | if (this.feedbackTracking.hasFeedback) { |
| | | reresultValue = 'å·²åé¦'; |
| | | } |
| | | |
| | | // æ´æ°lineItemInfoæ°æ® |
| | | this.lineItemInfo = { |
| | | taskNum: currentTaskNum, |
| | | inStock: rawData.inStock || 'æ ', |
| | | rfid: rawData.rfid || 'æ ', |
| | | width: rawData.width || 'æ ', |
| | | request: rawData.request || 'æ ', |
| | | reresult: reresultValue, |
| | | error: rawData.error || 'æ ', |
| | | }; |
| | | } else { |
| | | this.isAlarm = false; |
| | | this.lineItemInfo = { |
| | | taskNum: '', |
| | | inStock: '', |
| | | rfid: '', |
| | | width: '', |
| | | request: '', |
| | | reresult: '', |
| | | error: '' |
| | | }; |
| | | } |
| | | }, |
| | | // ç»ä»¶éæ¯æ¶æ¸
é¤å®æ¶å¨ |
| | | beforeUnmount() { |
| | | if (this.timer) { |
| | | clearInterval(this.timer); |
| | | } |
| | | }, |
| | | mouseClick() { |
| | | this.fullscreenLoading = true; |
| | | this.dialogVisible = true; |
| | | // å¤çç¹å»äºä»¶ |
| | | this.http.post("api/DeviceInfo/GetConveyorLineInfo?DeviceChildCode=" + this.equipNo, null, "") |
| | | .then((x) => { |
| | | if (x.status) { |
| | | this.lineItemInfo = x.data; |
| | | } else { |
| | | this.$message({ |
| | | type: "error", |
| | | message: x.message, |
| | | }); |
| | | } |
| | | }); |
| | | // ä»å
¨å±åéä¸è·åè¾é线详ç»ä¿¡æ¯ |
| | | const equipNoStr = String(this.equipNo); |
| | | if (this.$root.conveyorLineDetails && this.$root.conveyorLineDetails[equipNoStr]) { |
| | | // å
è·ååå§æ°æ® |
| | | const rawData = this.$root.conveyorLineDetails[equipNoStr]; |
| | | |
| | | // è·åå½åä»»å¡å· |
| | | const currentTaskNum = rawData.taskNum || 'æ '; |
| | | |
| | | // æ£æ¥ä»»å¡å·æ¯å¦ååï¼ä¸updateAlarmStatusä¿æä¸è´ï¼ |
| | | if (currentTaskNum !== this.feedbackTracking.currentTaskNum) { |
| | | this.feedbackTracking.currentTaskNum = currentTaskNum; |
| | | this.feedbackTracking.hasFeedback = false; |
| | | this.feedbackTracking.lastFeedbackValue = ""; |
| | | } |
| | | |
| | | // å¤çç³è¯·åé¦é»è¾ |
| | | let reresultValue = rawData.reresult || 'æ '; |
| | | |
| | | // 妿æ¶å°äºåé¦å¼ï¼éç©ºéæ ï¼ä¸è¿æ²¡æåé¦è¿ |
| | | if ((reresultValue !== 'æ ' && reresultValue !== '' && reresultValue !== undefined) && !this.feedbackTracking.hasFeedback) { |
| | | this.feedbackTracking.hasFeedback = true; |
| | | this.feedbackTracking.lastFeedbackValue = reresultValue; |
| | | } |
| | | |
| | | // 妿已ç»åé¦è¿ï¼æ¾ç¤º"å·²åé¦" |
| | | if (this.feedbackTracking.hasFeedback) { |
| | | reresultValue = 'å·²åé¦'; |
| | | } |
| | | |
| | | // å¤å¶æ°æ®å°lineItemInfoï¼æ¨¡æ¿ä¸ç»å®çå¯¹è±¡ï¼ |
| | | this.lineItemInfo = { |
| | | taskNum: currentTaskNum, |
| | | inStock: rawData.inStock || 'æ ', |
| | | rfid: rawData.rfid || 'æ ', |
| | | width: rawData.width || 'æ ', |
| | | request: rawData.request || 'æ ', |
| | | reresult: reresultValue, |
| | | error: rawData.error || 'æ ', |
| | | }; |
| | | // ä¿åæ¥è¦ç¶æ |
| | | this.isAlarm = rawData.isAlarm || false; |
| | | } else { |
| | | // å¦ææ²¡ææ°æ®ï¼ä½¿ç¨é»è®¤å¼ |
| | | this.lineItemInfo = { |
| | | taskNum: '', |
| | | inStock: '', |
| | | rfid: '', |
| | | width: '', |
| | | request: '', |
| | | reresult: '', |
| | | error: '' |
| | | }; |
| | | this.isAlarm = false; |
| | | } |
| | | this.fullscreenLoading = false; |
| | | }, |
| | | handleClose() { |
| | | this.dialogVisible = false; |
| | | this.fullscreenLoading = false; |
| | | }, |
| | | |
| | | SendCommand() { |
| | | this.fullscreenLoading = true; |
| | | this.form.DeviceCode=this.equipNo; |
| | | this.http.post("api/DeviceInfo/ConveyorLineHandTask" ,this.form) |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success(x.message); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | ConveyorLineReset() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/ConveyorLineReset?DeviceChildCode=" + this.equipNo, null, "") |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success(x.message); |
| | | // SendCommand() { |
| | | // this.fullscreenLoading = true; |
| | | // this.form.DeviceCode=this.equipNo; |
| | | // this.http.post("api/DeviceInfo/ConveyorLineHandTask" ,this.form) |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success(x.message); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | // ConveyorLineReset() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/ConveyorLineReset?DeviceChildCode=" + this.equipNo, null, "") |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success(x.message); |
| | | |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | ConveyorLineEmergencyStop() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/ConveyorLineEmergencyStop?DeviceChildCode=" + this.equipNo, null, "") |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success(x.message); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | // ConveyorLineEmergencyStop() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/ConveyorLineEmergencyStop?DeviceChildCode=" + this.equipNo, null, "") |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success(x.message); |
| | | |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | ConveyorLineReturn() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/ConveyorLineReturn?DeviceChildCode=" + this.equipNo, null, "") |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success(x.message); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | ConveyorLineCancel() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/ConveyorLineCancel?DeviceChildCode=" + this.equipNo, null, "") |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success(x.message); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | ConveyorLineInitialize() { |
| | | this.fullscreenLoading = true; |
| | | this.http.post("api/DeviceInfo/ConveyorLineInitialize?DeviceChildCode=" + this.equipNo, null, "") |
| | | .then((x) => { |
| | | if (!x.status) { |
| | | this.$message.error(x.message); |
| | | } else { |
| | | this.$Message.success(x.message); |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.fullscreenLoading = false; |
| | | }); |
| | | }, |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | // ConveyorLineReturn() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/ConveyorLineReturn?DeviceChildCode=" + this.equipNo, null, "") |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success(x.message); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | // ConveyorLineCancel() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/ConveyorLineCancel?DeviceChildCode=" + this.equipNo, null, "") |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success(x.message); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | // ConveyorLineInitialize() { |
| | | // this.fullscreenLoading = true; |
| | | // this.http.post("api/DeviceInfo/ConveyorLineInitialize?DeviceChildCode=" + this.equipNo, null, "") |
| | | // .then((x) => { |
| | | // if (!x.status) { |
| | | // this.$message.error(x.message); |
| | | // } else { |
| | | // this.$Message.success(x.message); |
| | | // } |
| | | // }) |
| | | // .finally(() => { |
| | | // this.fullscreenLoading = false; |
| | | // }); |
| | | // }, |
| | | update() { |
| | | return !this.condition ? 'custom-img' : 'custom-img-color' |
| | | if (this.isAlarm) { |
| | | return 'custom-img-alarm'; |
| | | } else if (this.lineItemInfo.inStock === 'æ¯') { |
| | | return 'custom-img-color'; |
| | | } else { |
| | | return 'custom-img'; |
| | | } |
| | | }, |
| | | startTimer() { |
| | | // å¼å¯å®æ¶å¨ï¼æ¯3ç§æ§è¡ä¸æ¬¡ |
| | | this.timer1 = setInterval(() => { |
| | | update(); |
| | | this.update(); |
| | | }, 500); |
| | | }, |
| | | }, |
| | |
| | | .custom-img { |
| | | position: relative; |
| | | display: inline-block; |
| | | /* background-color: #d9ecff ; */ |
| | | } |
| | | |
| | | .custom-img-color { |
| | | position: relative; |
| | | display: inline-block; |
| | | background-color: #05fa7f; |
| | | color: white; |
| | | text-align: center; |
| | | } |
| | | |
| | | .custom-img-alarm { |
| | | position: relative; |
| | | display: inline-block; |
| | | background-color: #ff4d4f; |
| | | color: white; |
| | | text-align: center; |
| | | } |
| | |
| | | } */ |
| | | |
| | | .custom-img img { |
| | | width: 40px; |
| | | height: 40px; |
| | | width: 80px; |
| | | height: 50px; |
| | | } |
| | | |
| | | .custom-img-color img { |
| | | width: 40px; |
| | | height: 40px; |
| | | width: 80px; |
| | | height: 50px; |
| | | } |
| | | |
| | | .custom-img-alarm img { |
| | | width: 80px; |
| | | height: 50px; |
| | | } |
| | | |
| | | .equip-no { |
| | | position: absolute; |
| | | top: 15px; |
| | | font-size: 12px; |
| | | margin-left: -35px; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | font-size: 25px; |
| | | text-align: center; |
| | | width: 100%; |
| | | } |
| | | |
| | | .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; |
| | | } |
| | | </style> |