task.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <FlexCol v-if="currentTaskDefItem" :padding="30" :gap="10">
  3. <Image
  4. v-if="currentTaskDefItem.banner"
  5. :src="currentTaskDefItem.banner"
  6. :radius="20"
  7. :width="690"
  8. mode="widthFix"
  9. />
  10. <FlexCol :gap="20">
  11. <TaskList
  12. v-for="item in currentTaskDefItem.list"
  13. :key="item.title"
  14. :icon="item.icon"
  15. :title="item.title"
  16. :desc="item.desc"
  17. :enable="!item.enable || canCollect(item.enable)"
  18. @click="goForm(...item.goForm)"
  19. />
  20. </FlexCol>
  21. </FlexCol>
  22. </template>
  23. <script setup lang="ts">
  24. import { ref } from 'vue';
  25. import { useCollectStore } from '@/store/collect';
  26. import { useTaskEntryForm } from './composeable/TaskEntryForm';
  27. import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
  28. import { TaskMenuDef, type TaskMenuDefItem } from './tasks';
  29. import FlexCol from '@/components/layout/FlexCol.vue';
  30. import Image from '@/components/basic/Image.vue';
  31. import TaskList from '../components/TaskList.vue';
  32. const { goForm } = useTaskEntryForm();
  33. const { canCollect } = useCollectStore();
  34. const { querys } = useLoadQuerys({
  35. taskName: '',
  36. }, ({ taskName }) => {
  37. currentTaskDefItem.value = TaskMenuDef[taskName];
  38. });
  39. const currentTaskDefItem = ref<TaskMenuDefItem|null>(null);
  40. </script>