Bottom.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <div v-if="ClickTimeLong==0" class="bottom" style="z-index: 1000;">
  3. <div style="display: flex; justify-content: left; flex-flow: row;height: 100%;">
  4. <div :class="item.active?'btn active':'btn'" :title="ClickTimeLong>0?'正在努力加载模型,请稍候':''" v-for="item in navlist" :style="{backgroundImage: item.active?`url(${btnFrontBg})`:''}" @click="loadNavModel(item);">
  5. <img :src="item.active?item.img1:item.img" :key="item.code" :t='item.code' :class="item.active?'active':''">
  6. <div>{{ item.name }}</div>
  7. </div>
  8. </div>
  9. </div>
  10. </template>
  11. <script>
  12. import { ref,onMounted,watch } from 'vue';
  13. import api from "@/api/system";
  14. export default {
  15. props:{
  16. facModelLoadState:{
  17. type:Boolean,
  18. required: true
  19. },
  20. userRole:{
  21. type:String
  22. }
  23. },
  24. setup(props,{emit}) {
  25. let clickTime = 0;
  26. const ClickTimeLong = ref(10);//导航间隔时长,单位:秒.为0表示不控制操作间隔
  27. let clickTimer = null;
  28. const showIndexData = ref('');
  29. let dataTimer = null;
  30. const btnFrontBg = require('@/assets/image/nav_btn_front.png');
  31. let navlist=ref([
  32. {"code":"FAC","name":"全厂","active":false,"img":require('@/assets/image/nav_ico_fac1.png'),"img1":require('@/assets/image/nav_ico_fac2.png')},
  33. {"code":"IN02","name":"经编","active":false,"img":require('@/assets/image/nav_ico_in021.png'),"img1":require('@/assets/image/nav_ico_in022.png')},
  34. //{"code":"IN04","name":"前整","active":false,"img":require('@/assets/image/nav_ico_in041.png'),"img1":require('@/assets/image/nav_ico_in042.png')},
  35. {"code":"IN03","name":"染整","active":false,"img":require('@/assets/image/nav_ico_in031.png'),"img1":require('@/assets/image/nav_ico_in032.png')},
  36. //{"code":"IN05","name":"后整","active":false,"img":require('@/assets/image/nav_ico_in051.png'),"img1":require('@/assets/image/nav_ico_in052.png')},
  37. ]);
  38. watch(() => props.facModelLoadState, newVal=> {
  39. if(newVal){
  40. //模型加载完成
  41. console.log('全厂模型加载完成')
  42. if(window.CurrentTargetType==null||window.CurrentTargetType=='') window.CurrentTargetType='FAC';
  43. for(let i=0;i<navlist.value.length;i++){
  44. if(navlist.value[i].code==window.CurrentTargetType){
  45. navlist.value[i].active=true;
  46. }else navlist.value[i].active=false;
  47. }
  48. ClickTimeLong.value = 0;//菜单可以操作了
  49. clickTimeCal();
  50. }
  51. },{deep:true,immediate:true})
  52. watch(() => props.userRole, newVal=> {
  53. showIndexData.value = newVal;
  54. },{deep:true,immediate:true})
  55. let DataFull={
  56. GetProductionLneInfo:function(){
  57. if(window.CurrentTargetType=='IN02'||window.CurrentTargetType=='FAC'){
  58. clearTimeout(dataTimer);
  59. return;
  60. }
  61. dataTimer = setTimeout(() => {
  62. DataFull.GetProductionLneInfo();
  63. }, 2*60*1000);
  64. api.GetProductionLneInfo().then(res=>{
  65. if(res==null || res.code!=0){
  66. return;
  67. }
  68. window.IN345LINE = res.data;
  69. })
  70. }
  71. }
  72. //const emit = defineEmits(['call']);
  73. function clickTimeCal(){
  74. if(ClickTimeLong.value==0) return;
  75. clickTime = 0;
  76. window.clearInterval(clickTimer);
  77. clickTimer = setInterval(function(){
  78. clickTime++; //切换间隔时长计数器
  79. if(clickTime>10000) clickTime = ClickTimeLong.value;//达到一定时长时后,初始化为最大间隔时长
  80. },1000)
  81. }
  82. function loadNavModel(item){
  83. if(ClickTimeLong.value>0 && clickTime<ClickTimeLong.value){
  84. //切换间隔小于N秒时,不响应
  85. return;
  86. }
  87. for(let i=0;i<navlist.value.length;i++){
  88. if(navlist.value[i].code==item.code){
  89. navlist.value[i].active=true;
  90. }else navlist.value[i].active=false;
  91. }
  92. window.CurrentTargetType=item.code;
  93. if(window.CurrentTargetType=='IN03' ||window.CurrentTargetType=='IN04' || window.CurrentTargetType=='IN05'){
  94. clearTimeout(dataTimer);
  95. DataFull.GetProductionLneInfo();
  96. }
  97. emit('loadNavModel',item);
  98. clickTimeCal();
  99. }
  100. onMounted(()=>{
  101. if(window.CurrentTargetType==null || window.CurrentTargetType=='') window.CurrentTargetType='FAC';
  102. })
  103. return{
  104. navlist,
  105. btnFrontBg,
  106. ClickTimeLong,
  107. loadNavModel
  108. }
  109. }
  110. }
  111. </script>