index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="close" @click="confirmExit"></div>
  3. <div class="toolList">
  4. <div class="li">{{ date }}</div>
  5. <div class="li btn speck" :class="{ 'on': voice, 'off': !voice }" @click="getVoice"></div>
  6. <div class="li btn screen" :class="{ 'on': screen, 'off': !screen }" @click="getFullScreen"></div>
  7. </div>
  8. <div class="logo"> <img src="@/assets/images/logo.png">
  9. </img>
  10. <div class="title"><i></i><span>{{ dic.project[parameter.project] || "" }}</span></div>
  11. </div>
  12. </template>
  13. <script setup lang="ts">
  14. import { initSpeech, speckText, speckCancel, chineseNumber } from '@/utils/speech'
  15. import dataDictionary from "@/utils/dataDictionary"
  16. const { proxy } = getCurrentInstance() as any;
  17. const emit = defineEmits(['confirmExit']);
  18. const router = useRouter();
  19. const route = useRoute();
  20. const dic: any = dataDictionary;
  21. const data = reactive<any>({
  22. timerManager: {},//计时器管理
  23. parameter: {},//参数
  24. date: "",//当前时间
  25. voice: true,
  26. screen: true
  27. });
  28. const { timerManager, parameter, date, voice, screen } = toRefs(data);
  29. /**
  30. * 更新时间
  31. */
  32. const setDate = () => {
  33. date.value = proxy?.$utils.getDate();
  34. setTimeout(setDate, 1000);
  35. };
  36. /**
  37. * 屏幕模式
  38. */
  39. const getVoice = () => {
  40. voice.value = !voice.value;
  41. };
  42. /**
  43. * 屏幕模式
  44. */
  45. const getFullScreen = () => {
  46. screen.value = !screen.value;
  47. proxy?.$utils.fullScreen();
  48. };
  49. /**
  50. * 确定退出
  51. */
  52. const confirmExit = () => {
  53. emit('confirmExit', {});
  54. };
  55. onBeforeMount(() => {
  56. setDate();
  57. parameter.value = route.query;
  58. initSpeech();
  59. })
  60. </script>
  61. <style lang="scss" scoped>
  62. $topPadding: 5.19rem;
  63. $waiPadding: 6.51rem;
  64. .logo {
  65. position: absolute;
  66. left: $waiPadding;
  67. top: $topPadding;
  68. display: flex;
  69. align-items: center;
  70. img {
  71. width: 14.563rem;
  72. }
  73. .title {
  74. width: auto;
  75. padding: 0 1.2rem 0 0.7rem;
  76. height: 3rem;
  77. line-height: 3rem;
  78. border-radius: 1.5rem;
  79. color: #ffffff;
  80. font-size: 1.7rem;
  81. margin-left: 1rem;
  82. background: linear-gradient(180deg, #FFB200 0%, #ED7905 72%);
  83. box-shadow: inset 0px 1px 0px 1px rgba(255, 255, 255, 0.5);
  84. display: flex;
  85. align-items: center;
  86. i {
  87. width: 2.5rem;
  88. height: 2.1rem;
  89. margin-right: 0.8rem;
  90. background-image: url("@/assets/images/test/ai.png");
  91. background-position: center;
  92. background-repeat: no-repeat;
  93. background-size: 100% 100%;
  94. }
  95. }
  96. }
  97. .close {
  98. width: 3.2rem;
  99. height: 3.2rem;
  100. position: absolute;
  101. right: calc($waiPadding - 3.2rem);
  102. top: calc($topPadding / 2 - 3.2rem/4);
  103. box-sizing: border-box;
  104. border: 1px solid #979797;
  105. background-image: url("@/assets/images/common/close.png");
  106. background-position: center;
  107. background-repeat: no-repeat;
  108. background-size: 45% 45%;
  109. background-color: rgba(216, 216, 216, 0.8);
  110. border-radius: 50%;
  111. transition: all 0.5s;
  112. cursor: pointer;
  113. &:hover {
  114. transform: rotate(180deg);
  115. background-color: rgba(216, 216, 216, 1);
  116. }
  117. }
  118. .toolList {
  119. position: absolute;
  120. right: $waiPadding;
  121. top: calc($topPadding / 2);
  122. color: #00FFE8;
  123. font-size: 1.1rem;
  124. display: flex;
  125. .li {
  126. margin-right: 3rem;
  127. }
  128. .btn {
  129. width: 1.1rem;
  130. height: 1.1rem;
  131. display: block;
  132. cursor: pointer;
  133. }
  134. .speck {
  135. background-position: center;
  136. background-repeat: no-repeat;
  137. background-size: 100% auto;
  138. }
  139. .speck.on {
  140. background-image: url("@/assets/images/common/speck1.png");
  141. }
  142. .speck.off {
  143. background-image: url("@/assets/images/common/speck2.png");
  144. }
  145. .screen {
  146. background-position: center;
  147. background-repeat: no-repeat;
  148. background-size: 100% auto;
  149. }
  150. .screen.on {
  151. background-image: url("@/assets/images/common/screen1.png");
  152. }
  153. .screen.off {
  154. background-image: url("@/assets/images/common/screen2.png");
  155. }
  156. }
  157. </style>