TemplateFormItem.vue 892 B

123456789101112131415161718192021222324252627282930313233
  1. <script setup lang="ts">
  2. import {computed, inject, watch} from 'vue'
  3. import {storeToRefs} from 'pinia'
  4. import {useSettingsStore} from '@/pinia'
  5. import {useGettext} from 'vue3-gettext'
  6. import _ from 'lodash'
  7. const {$gettext} = useGettext()
  8. const {language} = storeToRefs(useSettingsStore())
  9. const props = defineProps(['data', 'name'])
  10. const trans_name = computed(() => {
  11. return props.data?.name?.[language.value] ?? props.data?.name?.en ?? ''
  12. })
  13. const build_template: any = inject('build_template')!
  14. const value = computed(() => props.data.value)
  15. watch(value, _.throttle(build_template, 500))
  16. </script>
  17. <template>
  18. <a-form-item :label="trans_name">
  19. <a-input v-if="data.type === 'string'" v-model:value="data.value"/>
  20. <a-switch v-else-if="data.type === 'boolean'" v-model:checked="data.value"/>
  21. </a-form-item>
  22. </template>
  23. <style lang="less" scoped>
  24. </style>