index.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <div style="width: 100px; height: 100%; display: flex; justify-content: center; align-items: center; cursor: pointer ; " >
  3. <div class="shake-animation" v-if="fileForms && fileForms.length > 0" style="padding: 5px" @click="onOpenMiniForm">
  4. <span style="display: block" >上传任务管理</span>
  5. </div>
  6. <ResourceUpload ref="resourceUploadRef"></ResourceUpload>
  7. <MiniForm ref="miniFormRef"></MiniForm>
  8. </div>
  9. </template>
  10. <script setup>
  11. import ResourceUpload from './resourceUpload.vue'
  12. import MiniForm from './miniForm.vue'
  13. import EventBus from "@/utils/EventBus";
  14. const resourceUploadRef = ref(null)
  15. const miniFormRef = ref(null)
  16. import { miniyunStore } from '@/store/miniyun'
  17. import {storeToRefs} from "pinia";
  18. const myMiniyunStore = miniyunStore()
  19. // 使用 storeToRefs 保持响应性
  20. const { getFileForms ,getPauseFlags} = storeToRefs(myMiniyunStore)
  21. // getFileModel 保持了与 store 的响应式连接
  22. const fileForms = computed({
  23. get: () => getFileForms.value
  24. })
  25. const pauseFlags = computed({
  26. get: () => getPauseFlags.value
  27. })
  28. const onOpenList = () => {
  29. // console.log('打开上传资源')
  30. // resourceUploadRef.value.open()
  31. }
  32. const onOpenMiniForm = () => {
  33. miniFormRef.value.open()
  34. }
  35. const openMiniYun = (teacherData) => {
  36. resourceUploadRef.value.open(teacherData)
  37. }
  38. onMounted(() => {
  39. })
  40. EventBus.off('openMiniYun',openMiniYun)
  41. EventBus.on('openMiniYun',openMiniYun)
  42. </script>
  43. <style scoped>
  44. .shake-animation {
  45. animation: scaleAndShake 3s infinite;
  46. }
  47. .shake-animation span {
  48. animation: textColorChange 3s infinite;
  49. }
  50. @keyframes scaleAndShake {
  51. 0% {
  52. transform: scale(1);
  53. }
  54. 30% {
  55. transform: scale(0.8);
  56. }
  57. 40%, 50%, 60%, 70%, 80% {
  58. transform: scale(0.8) translateX(3px);
  59. }
  60. 45%, 55%, 65%, 75% {
  61. transform: scale(0.8) translateX(-3px);
  62. }
  63. 85% {
  64. transform: scale(0.8);
  65. }
  66. 100% {
  67. transform: scale(1);
  68. }
  69. }
  70. @keyframes textColorChange {
  71. 0% {
  72. color: #333;
  73. }
  74. 30% {
  75. color: #409eff;
  76. }
  77. 85% {
  78. color: #409eff;
  79. }
  80. 100% {
  81. color: #333;
  82. }
  83. }
  84. </style>