index.vue 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <template>
  2. <el-switch @change="enabled(api, id)" :active-value="activeValue" :inactive-value="inactiveValue" :model-value="modelValue" :loading="loading" />
  3. </template>
  4. <script lang="ts" setup>
  5. import { useEnabled } from '/admin/composables/curd/useEnabled'
  6. import { Status } from '/admin/enum/app'
  7. import { ref } from 'vue'
  8. const props = defineProps({
  9. modelValue: Boolean | Number | String,
  10. api: String,
  11. id: Number | String,
  12. })
  13. const emits = defineEmits(['update:modelValue', 'refresh'])
  14. const { enabled, success, loading, afterEnabled } = useEnabled()
  15. const activeValue = ref<boolean | number | string>()
  16. const inactiveValue = ref<boolean | number | string>()
  17. if (typeof props.modelValue === 'boolean') {
  18. activeValue.value = true
  19. inactiveValue.value = false
  20. } else {
  21. activeValue.value = Status.ENABLE
  22. inactiveValue.value = Status.DISABLE
  23. }
  24. success(() => {
  25. emits('update:modelValue', props.modelValue === activeValue.value ? inactiveValue.value : activeValue.value)
  26. })
  27. afterEnabled.value = () => {
  28. emits('refresh')
  29. }
  30. </script>