EnabledSwitch.vue 994 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <script setup lang="ts">
  2. import type { ExternalNotify } from '@/api/external_notify'
  3. import { message } from 'ant-design-vue'
  4. import externalNotify from '@/api/external_notify'
  5. const props = defineProps<{
  6. record: ExternalNotify
  7. }>()
  8. const loading = ref(false)
  9. const enabled = defineModel<boolean>('enabled')
  10. async function handleChange(checked) {
  11. if (!props.record.id)
  12. return
  13. loading.value = true
  14. try {
  15. await externalNotify.updateItem(props.record.id, {
  16. enabled: checked,
  17. })
  18. // 更新本地状态
  19. message.success($gettext('Status updated successfully'))
  20. }
  21. catch (error) {
  22. console.error('Update enabled status error:', error)
  23. // 出错时恢复原状态
  24. enabled.value = props.record.enabled
  25. message.error($gettext('Failed to update status'))
  26. }
  27. finally {
  28. loading.value = false
  29. }
  30. }
  31. </script>
  32. <template>
  33. <ASwitch
  34. v-model:checked="enabled"
  35. :loading="loading"
  36. size="small"
  37. @change="handleChange"
  38. />
  39. </template>