vue超時(shí)計(jì)算的組件實(shí)例代碼
需要對(duì)預(yù)約單進(jìn)行超時(shí)計(jì)算,但是后臺(tái)和客戶端時(shí)間不能保證一定一直,所以后臺(tái)返回客戶提交時(shí)間和請求結(jié)束時(shí)間的時(shí)間差進(jìn)行計(jì)算。
效果如下(此處只是demo效果,所以有點(diǎn)丑。)
父頁面
<template> <div> <div class="dateDiv" :key="index" v-for="(item,index) in TimeArray"> <p>{{item.name}}</p> <dateComponent :index="index" :key="item.timeDif" ref="dateComponent" :dateTimeStamp="item.timeDif"></dateComponent> <el-button @click="delUnit(index)">刪除</el-button> </div> </div> </template> <script> import datajson from '../index/data.json' import dateComponent from './dateComponent' export default { name:'timestamp', components:{ dateComponent }, data(){ return { TimeArray: datajson.timestamp.TimeArray /* "timestamp":{ "TimeArray":[{ "name":"預(yù)約單2", "timeDif":"855000" },{ "name": "預(yù)約單2", "timeDif": "801000" },{ "name": "預(yù)約單3", "timeDif": "95000" },{ "name": "預(yù)約單4", "timeDif": "45000" },{ "name": "預(yù)約單5", "timeDif": "495000" },{ "name": "預(yù)約單6", "timeDif": "195000" }] } */ } }, methods:{ delUnit:function (index) { this.TimeArray.splice(index,1) } } } </script> <style scoped> .dateDiv{ display: inline-block; border: 1px solid #e5e5e5; width: 200px; height: 80px;; } </style>
超時(shí)計(jì)算組件 overtimeComponent.vue
<template> <div> <span>{{formatTimeStamp}}</span> </div> </template> <script> export default { props:["dateTimeStamp","index"], name:'dateComponent', data(){ return { flag:false, formatTimeStamp:"", interval : "" } }, mounted() { var difValue = parseInt(this.dateTimeStamp); this.formatTimeStamp = this.setResultStr(difValue) this.interval = setInterval(() => { difValue += 1000 this.formatTimeStamp = this.setResultStr(difValue) }, 1000); }, beforeDestroy (){ clearInterval(this.interval) }, methods:{ setResultStr:function (difValue) { var day = Math.floor(difValue / 1000 / 60 / 60 / 24);//天 difValue = difValue % (1000 * 60 * 60 * 24); var hour = Math.floor(difValue / 1000 / 60 / 60);//小時(shí) difValue = difValue % (1000 * 60 * 60); var min = Math.floor(difValue / 1000 / 60);//分鐘 difValue = difValue % (1000 * 60); var second = Math.floor(difValue / 1000); if(day === 0 && hour==0 && min == 0){ return "超時(shí):" + second + "秒" }else if(day === 0 && hour==0){ return "超時(shí):" + min + "分" + second + "秒" }else if(day === 0){ return "超時(shí):" + hour + "小時(shí)" + min + "分" + second + "秒" }else{ return "超時(shí):" + day + "天" + hour + "小時(shí)" + min + "分" + second + "秒" } } } } </script> <style scoped> </style>
總結(jié)
以上所述是小編給大家介紹的vue超時(shí)計(jì)算的組件實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
vue中v-model、v-bind和v-on三大指令的區(qū)別詳解
v-model和v-bind都是數(shù)據(jù)綁定的方式,下面這篇文章主要給大家介紹了關(guān)于vue中v-model、v-bind和v-on三大指令的區(qū)別,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11vue如何動(dòng)態(tài)獲取當(dāng)前時(shí)間
這篇文章主要介紹了vue如何動(dòng)態(tài)獲取當(dāng)前時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Vue3中實(shí)現(xiàn)拖拽和縮放自定義看板 vue-grid-layout的方法
這篇文章主要介紹了Vue3中實(shí)現(xiàn)拖拽和縮放自定義看板 vue-grid-layout的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03關(guān)于前端報(bào)“應(yīng)為聲明或語句。ts(1128)“的原因及解決方案
最近在學(xué)習(xí)中遇到了個(gè)不常見的報(bào)錯(cuò),這里給大家總結(jié)下解決的辦法,這篇文章主要給大家介紹了關(guān)于前端報(bào)“應(yīng)為聲明或語句,ts(1128)“的原因及解決方案,需要的朋友可以參考下2024-08-08Vue.extend 登錄注冊模態(tài)框的實(shí)現(xiàn)
這篇文章主要介紹了Vue.extend 登錄注冊模態(tài)框的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12