ChatMulitSelectBar.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <FlexRow align="center" justify="space-between" gap="gap.sm">
  3. <span>已选择 {{ selectedCount }} 条消息</span>
  4. <FlexRow align="center" gap="gap.sm" overflow="auto">
  5. <Button
  6. type="danger"
  7. icon="trash"
  8. :disabled="!isAnyItemSelected"
  9. @click="sessionManager.onDeleteMessages(selectedMessageIds)"
  10. >
  11. 删除
  12. </Button>
  13. <Button type="primary" icon="select" @click="emit('cancel')">
  14. 完成
  15. </Button>
  16. </FlexRow>
  17. </FlexRow>
  18. </template>
  19. <script setup lang="ts">
  20. import { useChatSelectionChild } from '../../composables/useChatSelection';
  21. import { useChatExportSave } from '../../composables/useChatExportSave';
  22. import type { ChatMessage } from '../../model/Message';
  23. import type { ChatSessionManager } from '../../composables/useChatSession';
  24. import FlexRow from '@/components/layout/FlexRow.vue';
  25. import Button from '@/components/basic/Button.vue';
  26. const props = defineProps<{
  27. selectedCount: number;
  28. messages: ChatMessage[];
  29. sessionManager: ChatSessionManager;
  30. }>();
  31. const emit = defineEmits<{
  32. (e: 'cancel'): void;
  33. (e: 'delete'): void;
  34. }>();
  35. const {
  36. isAnyItemSelected,
  37. selectedMessageIds
  38. } = useChatSelectionChild();
  39. </script>