| | |
| | | <template> |
| | | <div class="message-container"> |
| | | <div class="item" v-for="(item, index) in list" :key="index"> |
| | | <div class="title">{{ item.title }}({{ item.date }})</div> |
| | | <div class="content">{{ item.message }}</div> |
| | | <div id="title"> |
| | | <div id="bkuang" style="border-top: none"> |
| | | <!-- BCä»å åæºç¶æé¢æ¿ --> |
| | | <div class="skuang"> |
| | | <div class="bcuname">æ¿æä»å åæº</div> |
| | | <div class="bcankuang"> |
| | | <div class="xname">å åæºç¶æ:</div> |
| | | <div class="xbci" :title="bcData.R_BC_Status">{{ bcData.R_BC_Status || '-' }}</div> |
| | | </div> |
| | | <div class="bcankuang"> |
| | | <div class="xname">å åæºæèªå¨ç¶æ:</div> |
| | | <div class="xbci" :title="bcData.R_BC_AutoStatus">{{ bcData.R_BC_AutoStatus || '-' }}</div> |
| | | </div> |
| | | <div class="bcankuang"> |
| | | <div class="xname">æ£å¨æ§è¡çä»»å¡å·:</div> |
| | | <div class="xbci" :title="bcData.R_BC_TaskNum">{{ bcData.R_BC_TaskNum || '-' }}</div> |
| | | </div> |
| | | <div class="bcankuang"> |
| | | <div class="xname">å åæºå·¥ä½ç¶æ:</div> |
| | | <div class="xbci" :title="bcData.R_BC_WorkStatus">{{ bcData.R_BC_WorkStatus || '-' }}</div> |
| | | </div> |
| | | <div class="bcankuang"> |
| | | <div class="xname">ä½ä¸ç±»å:</div> |
| | | <div class="xbci" :title="bcData.R_BC_WorkType">{{ bcData.R_BC_WorkType || '-' }}</div> |
| | | </div> |
| | | <div class="bcankuang"> |
| | | <div class="xname">æçç±»å:</div> |
| | | <div class="xbci" :title="bcData.R_BC_TrayType">{{ bcData.R_BC_TrayType || '-' }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { ref, nextTick, watch, onUnmounted } from "vue"; |
| | | import { useStore } from "vuex"; |
| | | import { onMounted } from "vue"; |
| | | |
| | | export default { |
| | | props: { |
| | | list: { |
| | | type: Array, |
| | | default: () => { |
| | | return []; |
| | | } |
| | | } |
| | | data() { |
| | | return { |
| | | xuan: 0 |
| | | }; |
| | | }, |
| | | created() { |
| | | if (!this.list.length) { |
| | | this.list.push({ |
| | | title: 'æ¶æ¯æµè¯æ qweqweqweqwé¢', |
| | | message: 'æ¶æ¯æµè¯å
å®¹æ¶æ¯æµè¯å
å®¹æ¶æ¯æµè¯å
å®¹æ¶æ¯æµè¯å
容', |
| | | date: '2022-05-02 03:10' |
| | | setup() { |
| | | const store = useStore(); |
| | | // ä»
åå¨BCæ°æ®ï¼ä¸å
¶ä»æ°æ®é离 |
| | | const bcData = ref({}); |
| | | |
| | | // å»¶è¿æ´æ°é
ç½®ï¼è§£å³éªçé®é¢ |
| | | const UPDATE_DELAY = 300; // å»¶è¿300msæ´æ°UI |
| | | let updateTimer = null; // 宿¶å¨å®ä¾ |
| | | |
| | | // BCæ°æ®æ å°è§å |
| | | const bcStatusMap = { |
| | | R_BC_Status: { |
| | | 1: "æ£å¸¸", |
| | | 2: "æ
é", |
| | | 3: "æ¥å", |
| | | }, |
| | | R_BC_AutoStatus: { |
| | | 0: "ç»´ä¿®", |
| | | 1: "æå¨", |
| | | 2: "åèªå¨", |
| | | 3: "èªå¨", |
| | | }, |
| | | R_BC_WorkStatus: { |
| | | 0: "å¾
æº", |
| | | 1: "åè´§ä¸", |
| | | 2: "åè´§å®æ", |
| | | 4: "æ¾è´§ä¸", |
| | | 5: "æ¾è´§å®æ", |
| | | 6: "ä»»å¡å®æ", |
| | | }, |
| | | R_BC_WorkType: { |
| | | 0: "æ ä½ä¸ä»»å¡(0)", |
| | | 1: "åæ¾è´§ä½ä¸(1)", |
| | | 2: "åªåè´§ä½ä¸(2)", |
| | | 3: "åªæ¾è´§ä½ä¸(3)", |
| | | 4: "ç§»å¨å°æå®ä½ç½®" |
| | | }, |
| | | R_BC_TrayType: { |
| | | "-1": "空箱(-1)", |
| | | 1: "å°æç(1)", |
| | | 2: "䏿ç(2)", |
| | | 3: "大æç(3)", |
| | | 4: "ç¹å¤§æç(4)", |
| | | } |
| | | }; |
| | | |
| | | // BCåæ®µåç» |
| | | const bcFieldGroups = { |
| | | permissionFields: { |
| | | keys: ["R_BC_IsCanPut1", "R_BC_IsCanTake1", "R_BC_IsCanPut2", "R_BC_IsCanTake2", |
| | | "R_BC_IsCanPut3", "R_BC_IsCanTake3", "R_BC_IsCanPut4", "R_BC_IsCanTake4"], |
| | | map: { true: "æ¯", false: "å¦" } |
| | | }, |
| | | requestFields: { |
| | | keys: ["W_BC_PutRequest1", "W_BC_TakeRequest1", "W_BC_PutRequest2", "W_BC_TakeRequest2", |
| | | "W_BC_PutRequest3", "W_BC_TakeRequest3", "W_BC_PutRequest4", "W_BC_TakeRequest4"], |
| | | map: { true: "æ¯", false: "å¦" } |
| | | }, |
| | | finishFields: { |
| | | keys: ["W_BC_PutFinish1", "W_BC_TakeFinish1", "W_BC_PutFinish2", "W_BC_TakeFinish2", |
| | | "W_BC_PutFinish3", "W_BC_TakeFinish3", "W_BC_PutFinish4", "W_BC_TakeFinish4"], |
| | | map: { true: "æ¯", false: "å¦" } |
| | | }, |
| | | palletTypeFields: { |
| | | keys: ["R_BC_TakePalletType1", "R_BC_TakePalletType2", "R_BC_TakePalletType3", "R_BC_TakePalletType4", |
| | | "W_BC_PutPalletType1", "W_BC_PutPalletType2", "W_BC_PutPalletType3", "W_BC_PutPalletType4"], |
| | | map: { "-1": "空箱(-1)", 1: "å°æç(1)", 2: "䏿ç(2)", 3: "大æç(3)", 4: "ç¹å¤§æç(4)" } |
| | | } |
| | | }; |
| | | |
| | | // å¤çBCåå§æ°æ® |
| | | const processBCData = (rawData) => { |
| | | if (!rawData) return {}; |
| | | const processedData = { ...rawData }; |
| | | |
| | | // å¤çæ ¸å¿ç¶æå段 |
| | | Object.keys(bcStatusMap).forEach(key => { |
| | | if (processedData.hasOwnProperty(key)) { |
| | | processedData[key] = bcStatusMap[key][processedData[key]] || processedData[key]; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // å¤çåç»å段 |
| | | Object.values(bcFieldGroups).forEach(group => { |
| | | group.keys.forEach(key => { |
| | | if (processedData.hasOwnProperty(key)) { |
| | | processedData[key] = group.map[processedData[key]] || processedData[key]; |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | return processedData; |
| | | }; |
| | | |
| | | // å»¶è¿æ´æ°BCæ°æ®ï¼é¿å
é«é¢å·æ° |
| | | const delayedUpdateBCData = (newRawData) => { |
| | | if (updateTimer) { |
| | | clearTimeout(updateTimer); |
| | | } |
| | | |
| | | updateTimer = setTimeout(() => { |
| | | // åªå¤çå
å«BCç¹å¾åæ®µçæ°æ® |
| | | if (newRawData && newRawData.R_BC_Status !== undefined) { |
| | | bcData.value = processBCData(newRawData); |
| | | |
| | | // æ´æ°æ ·å¼ |
| | | nextTick(() => { |
| | | const valueElements = document.getElementsByClassName("xbci"); |
| | | for (let i = 0; i < valueElements.length; i++) { |
| | | if (valueElements[i].innerHTML === "æ¯") { |
| | | valueElements[i].style.color = "yellow"; |
| | | } else if (valueElements[i].innerHTML === "å¦") { |
| | | valueElements[i].style.color = "red"; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }, UPDATE_DELAY); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | // åå§å è½½æ°æ® |
| | | const initialData = store.state.homedata; |
| | | if (initialData && initialData.R_BC_Status !== undefined) { |
| | | bcData.value = processBCData(initialData); |
| | | } |
| | | |
| | | // ç嬿°æ®ååï¼åªå¤çBCæ°æ® |
| | | const unwatch = watch( |
| | | () => store.state.homedata, |
| | | (newData) => { |
| | | if (newData && newData.R_BC_Status !== undefined) { |
| | | delayedUpdateBCData(newData); |
| | | } |
| | | }, |
| | | { deep: true } |
| | | ); |
| | | |
| | | // ç»ä»¶å¸è½½æ¶æ¸
ç |
| | | onUnmounted(() => { |
| | | unwatch(); |
| | | if (updateTimer) { |
| | | clearTimeout(updateTimer); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | return { |
| | | bcData |
| | | }; |
| | | } |
| | | }; |
| | | </script> |
| | | <style scoped lang="less"> |
| | | .message-container { |
| | | .title { |
| | | padding-bottom: 10px; |
| | | } |
| | | .item { |
| | | border-bottom: 1px solid #eee; |
| | | padding: 10px 20px; |
| | | } |
| | | .content { |
| | | color: #7e7e7e; |
| | | font-size: 13px; |
| | | } |
| | | |
| | | <style scoped> |
| | | .ding { |
| | | float: left; |
| | | width: 20px; |
| | | height: 20px; |
| | | margin-top: 7px; |
| | | } |
| | | </style> |
| | | .yan { |
| | | color: white; |
| | | float: left; |
| | | font-size: 25px; |
| | | } |
| | | .dakuang { |
| | | width: 250px; |
| | | height: 50px; |
| | | position: absolute; |
| | | top: 150px; |
| | | left: 200px; |
| | | } |
| | | #xiugai { |
| | | width: 100px; |
| | | height: 30px; |
| | | float: left; |
| | | border-radius: 5px; |
| | | text-align: center; |
| | | line-height: 30px; |
| | | cursor: pointer; |
| | | border: 1px solid white; |
| | | color: white; |
| | | background: rgba(255, 255, 255, 0.5); |
| | | font-size: 25px; |
| | | position: absolute; |
| | | top: 150px; |
| | | left: 450px; |
| | | } |
| | | #xiugai:hover { |
| | | background: #f60; |
| | | } |
| | | #shu1, |
| | | #shu2 { |
| | | width: 200px; |
| | | height: 30px; |
| | | float: left; |
| | | margin-top: 0px; |
| | | margin-right: 0px; |
| | | border-radius: 5px; |
| | | border: 1px solid white; |
| | | } |
| | | #guan { |
| | | width: 40px; |
| | | height: 40px; |
| | | float: left; |
| | | font-size: 1.1cqw; |
| | | text-align: center; |
| | | line-height: 40px; |
| | | cursor: pointer; |
| | | margin-left: 560px; |
| | | color: white; |
| | | position: absolute; |
| | | } |
| | | #ti { |
| | | width: 600px; |
| | | height: 300px; |
| | | position: relative; |
| | | background: rgba(255, 255, 255, 1); |
| | | border-radius: 10px; |
| | | top: 230px; |
| | | left: 35%; |
| | | display: none; |
| | | background-image: url("../../img/1.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 170%; |
| | | background-position: -220px 0px; |
| | | } |
| | | .bcuname { |
| | | width: 100%; |
| | | height: 5vh; |
| | | float: left; |
| | | text-align: center; |
| | | line-height: 50px; |
| | | font-weight: 700; |
| | | font-size: 1.1cqw; |
| | | color: white; |
| | | } |
| | | .xname { |
| | | width: 70%; |
| | | height: 80px; |
| | | float: left; |
| | | line-height: 7vh; |
| | | font-size: 1.1cqw; |
| | | color: white; |
| | | } |
| | | .xbci { |
| | | width: 30%; |
| | | height: 7vh; |
| | | float: left; |
| | | line-height: 50px; |
| | | font-size: 1.1cqw; |
| | | color: rgb(242, 242, 50); |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | .bcankuang { |
| | | width: 45%; |
| | | height: 3vh; |
| | | margin-top: 10px; |
| | | margin-left: 5%; |
| | | float: left; |
| | | } |
| | | #title { |
| | | float: left; |
| | | width: 95%; |
| | | height: 88vh; |
| | | margin-top: 40px; |
| | | margin-left: 3%; |
| | | background-image: url("../../img/1.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100%; |
| | | container-type: inline-size; |
| | | } |
| | | #bkuang { |
| | | width: 100%; |
| | | height: 55vh; |
| | | float: left; |
| | | } |
| | | .skuang { |
| | | width: 31%; |
| | | height: 55vh; |
| | | float: left; |
| | | border-top: none; |
| | | border-left: none; |
| | | border-bottom: none; |
| | | background: rgba(255, 255, 255, 0.2); |
| | | margin-left: 1.7%; |
| | | border-radius: 10px; |
| | | } |
| | | </style> |