| | |
| | | <template> |
| | | <div id="title"> |
| | | <div id="bkuang" style="border-top: none"> |
| | | <!-- YMä»å åæºç¶æé¢æ¿ --> |
| | | <div class="skuang"> |
| | | <div class="zhuname">油墨ä»å åæº</div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">å åæºç¶æ:</div> |
| | | <div class="xzhi" :title="data.R_YM_Status">{{ data.R_YM_Status }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Status">{{ ymData.R_YM_Status || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">å åæºæèªå¨ç¶æ:</div> |
| | | <div class="xzhi" :title="data.R_YM_AutoStatus">{{ data.R_YM_AutoStatus }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_AutoStatus">{{ ymData.R_YM_AutoStatus || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">æ£å¨æ§è¡çä»»å¡å·:</div> |
| | | <div class="xzhi" :title="data.R_YM_TaskNum">{{ data.R_YM_TaskNum }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_TaskNum">{{ ymData.R_YM_TaskNum || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">å åæºå·¥ä½ç¶æ:</div> |
| | | <div class="xzhi" :title="data.R_YM_WorkStatus">{{ data.R_YM_WorkStatus }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_WorkStatus">{{ ymData.R_YM_WorkStatus || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">ä½ä¸ç±»å:</div> |
| | | <div class="xzhi" :title="data.R_YM_WorkType">{{ data.R_YM_WorkType }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_WorkType">{{ ymData.R_YM_WorkType || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">æçç±»å:</div> |
| | | <div class="xzhi" :title="data.R_YM_TrayType">{{ data.R_YM_TrayType }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_TrayType">{{ ymData.R_YM_TrayType || '-' }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- YMå
³èç«å°ï¼åºå
¥åº9001ï¼ --> |
| | | <div class="skuang"> |
| | | <div class="zhuname">åºå
¥åº9001ç«å°</div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">æè´§(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Tray1">{{ data.R_YM_Tray1 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Tray1">{{ ymData.R_YM_Tray1 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">å
¥åºæ§è¡ä¸(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Inbounding1">{{ data.R_YM_Inbounding1 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Inbounding1">{{ ymData.R_YM_Inbounding1 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">æåæºç©ºé²(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Leisure1">{{ data.R_YM_Leisure1 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Leisure1">{{ ymData.R_YM_Leisure1 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">åºåºæ§è¡ä¸(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Outbounding1">{{ data.R_YM_Outbounding1 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Outbounding1">{{ ymData.R_YM_Outbounding1 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">ç³è¯·å
¥åº(å):</div> |
| | | <div class="xzhi" :title="data.W_YM_RequestIn1">{{ data.W_YM_RequestIn1 }}</div> |
| | | <div class="xzhi" :title="ymData.W_YM_RequestIn1">{{ ymData.W_YM_RequestIn1 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">ç³è¯·åºåº(å):</div> |
| | | <div class="xzhi" :title="data.W_YM_RequestOut1">{{ data.W_YM_RequestOut1 }}</div> |
| | | <div class="xzhi" :title="ymData.W_YM_RequestOut1">{{ ymData.W_YM_RequestOut1 || '-' }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- YMå
³èç«å°ï¼åºå
¥åº9002ï¼ --> |
| | | <div class="skuang"> |
| | | <div class="zhuname">åºå
¥åº9002ç«å°</div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">æè´§(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Tray2">{{ data.R_YM_Tray2 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Tray2">{{ ymData.R_YM_Tray2 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">å
¥åºæ§è¡ä¸(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Inbounding2">{{ data.R_YM_Inbounding2 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Inbounding2">{{ ymData.R_YM_Inbounding2 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">æåæºç©ºé²(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Leisure2">{{ data.R_YM_Leisure2 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Leisure2">{{ ymData.R_YM_Leisure2 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">åºåºæ§è¡ä¸(读):</div> |
| | | <div class="xzhi" :title="data.R_YM_Outbounding2">{{ data.R_YM_Outbounding2 }}</div> |
| | | <div class="xzhi" :title="ymData.R_YM_Outbounding2">{{ ymData.R_YM_Outbounding2 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">ç³è¯·å
¥åº(å):</div> |
| | | <div class="xzhi" :title="data.W_YM_RequestIn2">{{ data.W_YM_RequestIn2 }}</div> |
| | | <div class="xzhi" :title="ymData.W_YM_RequestIn2">{{ ymData.W_YM_RequestIn2 || '-' }}</div> |
| | | </div> |
| | | <div class="zhankuang"> |
| | | <div class="xname">ç³è¯·åºåº(å):</div> |
| | | <div class="xzhi" :title="data.W_YM_RequestOut2">{{ data.W_YM_RequestOut2 }}</div> |
| | | <div class="xzhi" :title="ymData.W_YM_RequestOut2">{{ ymData.W_YM_RequestOut2 || '-' }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { ref, nextTick } from "vue"; |
| | | import { ref, nextTick, watch, onUnmounted } from "vue"; |
| | | import { useStore } from "vuex"; |
| | | import { onMounted } from "vue"; |
| | | |
| | |
| | | xuan: 0 |
| | | }; |
| | | }, |
| | | methods: { |
| | | }, |
| | | setup() { |
| | | const store = useStore(); |
| | | const data = ref({}); |
| | | // ä»
åå¨YMæ°æ®ï¼ä¸å
¶ä»æ°æ®é离 |
| | | const ymData = ref({}); |
| | | |
| | | // 1. å®ä¹æ®éåæ®µçæ å°è§å |
| | | const statusMap = { |
| | | // å»¶è¿æ´æ°é
ç½®ï¼è§£å³éªçé®é¢ |
| | | const UPDATE_DELAY = 300; // å»¶è¿300msæ´æ°UI |
| | | let updateTimer = null; // 宿¶å¨å®ä¾ |
| | | |
| | | // YMæ°æ®æ å°è§å |
| | | const ymStatusMap = { |
| | | R_YM_Status: { |
| | | 1: "æ£å¸¸", |
| | | 2: "æ
é", |
| | |
| | | } |
| | | }; |
| | | |
| | | // 2. å®ä¹éè¦å
±ç¨æ å°è§åçåæ®µå表å对åºçæ å°è§å |
| | | const booleanFields = [ |
| | | "R_YM_Tray1", "R_YM_Inbounding1", |
| | | "R_YM_Leisure1", "R_YM_Outbounding1", |
| | | // YMåæ®µåç» |
| | | const ymFieldGroups = { |
| | | statusFields: { |
| | | keys: [ |
| | | "R_YM_Tray1", "R_YM_Inbounding1", "R_YM_Leisure1", "R_YM_Outbounding1", |
| | | "R_YM_Tray2", "R_YM_Inbounding2", "R_YM_Leisure2", "R_YM_Outbounding2" |
| | | ], |
| | | map: { true: "æ¯", false: "å¦" } |
| | | }, |
| | | requestFields: { |
| | | keys: [ |
| | | "W_YM_RequestIn1", "W_YM_RequestOut1", |
| | | "R_YM_Tray2", "R_YM_Inbounding2", |
| | | "R_YM_Leisure2", "R_YM_Outbounding2", |
| | | "W_YM_RequestIn2", "W_YM_RequestOut2", |
| | | ]; |
| | | const booleanMap = { |
| | | true: "æ¯", |
| | | false: "å¦" |
| | | "W_YM_RequestIn2", "W_YM_RequestOut2" |
| | | ], |
| | | map: { true: "æ¯", false: "å¦" } |
| | | } |
| | | }; |
| | | |
| | | // å¤çæ°æ®ï¼å
å¤çæ®éæ å°ï¼åæ¹éå¤çå
±ç¨æ å°çåæ®µ |
| | | const processData = (rawData) => { |
| | | // å¤çYMåå§æ°æ® |
| | | const processYMData = (rawData) => { |
| | | if (!rawData) return {}; |
| | | const processed = { ...rawData }; |
| | | const processedData = { ...rawData }; |
| | | |
| | | // å¤çæ®éåæ®µæ å° |
| | | Object.keys(statusMap).forEach(key => { |
| | | if (processed.hasOwnProperty(key)) { |
| | | const map = statusMap[key]; |
| | | processed[key] = map[processed[key]] || processed[key]; |
| | | // å¤çæ ¸å¿ç¶æå段 |
| | | Object.keys(ymStatusMap).forEach(key => { |
| | | if (processedData.hasOwnProperty(key)) { |
| | | processedData[key] = ymStatusMap[key][processedData[key]] || processedData[key]; |
| | | } |
| | | }); |
| | | |
| | | // æ¹éå¤çå
±ç¨æ å°è§åçåæ®µ |
| | | booleanFields.forEach(key => { |
| | | if (processed.hasOwnProperty(key)) { |
| | | processed[key] = booleanMap[processed[key]] || processed[key]; |
| | | // å¤çåç»å段 |
| | | Object.values(ymFieldGroups).forEach(group => { |
| | | group.keys.forEach(key => { |
| | | if (processedData.hasOwnProperty(key)) { |
| | | processedData[key] = group.map[processedData[key]] || processedData[key]; |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | return processed; |
| | | return processedData; |
| | | }; |
| | | |
| | | // å»¶è¿æ´æ°YMæ°æ®ï¼é¿å
é«é¢å·æ° |
| | | const delayedUpdateYMData = (newRawData) => { |
| | | if (updateTimer) { |
| | | clearTimeout(updateTimer); |
| | | } |
| | | |
| | | updateTimer = setTimeout(() => { |
| | | // åªå¤çå
å«YMç¹å¾åæ®µçæ°æ® |
| | | if (newRawData && newRawData.R_YM_Status !== undefined) { |
| | | ymData.value = processYMData(newRawData); |
| | | |
| | | // æ´æ°æ ·å¼ |
| | | nextTick(() => { |
| | | const valueElements = document.getElementsByClassName("xzhi"); |
| | | 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(() => { |
| | | nextTick(() => { |
| | | setInterval(() => { |
| | | const rawData = store.state.homedata; |
| | | data.value = processData(rawData); |
| | | const xian = document.getElementsByClassName("xzhi"); |
| | | for (let i = 0; i < xian.length; i++) { |
| | | if (xian[i].innerHTML === "æ¯") { |
| | | xian[i].style.color = "yellow"; |
| | | } else if (xian[i].innerHTML === "å¦") { |
| | | xian[i].style.color = "red"; |
| | | // åå§å è½½æ°æ® |
| | | const initialData = store.state.homedata; |
| | | if (initialData && initialData.R_YM_Status !== undefined) { |
| | | ymData.value = processYMData(initialData); |
| | | } |
| | | |
| | | // ç嬿°æ®ååï¼åªå¤çYMæ°æ® |
| | | const unwatch = watch( |
| | | () => store.state.homedata, |
| | | (newData) => { |
| | | if (newData && newData.R_YM_Status !== undefined) { |
| | | delayedUpdateYMData(newData); |
| | | } |
| | | }); |
| | | }, |
| | | { deep: true } |
| | | ); |
| | | |
| | | // ç»ä»¶å¸è½½æ¶æ¸
ç |
| | | onUnmounted(() => { |
| | | unwatch(); |
| | | if (updateTimer) { |
| | | clearTimeout(updateTimer); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | return { |
| | | data, |
| | | ymData |
| | | }; |
| | | } |
| | | }; |