ie-form-picker-single.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <template>
  2. <ie-form-picker :label="pickerLabel" :model-value="getLabel(selected)" :placeholder="placeholder"
  3. :remark="pickerRemark" @click="$refs.picker.open()">
  4. <slot v-if="$slots.suffix" name="suffix"/>
  5. </ie-form-picker>
  6. <uv-picker ref="picker" :columns="[columns]" :default-index="[selectedIndex]" :title="label"
  7. close-on-click-overlay @confirm="handleConfirm"/>
  8. </template>
  9. <script>
  10. import IeFormPicker from "@/pages/ie/components/picker/ie-form-picker.vue";
  11. import FormattedPickerMixin from "@/pages/ie/components/picker/FormattedPickerMixin";
  12. import InjectFormDataMixin from "@/pages/ie/components/ai-form/InjectFormDataMixin";
  13. export default {
  14. name: "ie-form-picker-single",
  15. components: {IeFormPicker},
  16. extends: IeFormPicker,
  17. emits: ['update:modelValue'],
  18. mixins: [FormattedPickerMixin, InjectFormDataMixin],
  19. computed: {
  20. pickerLabel() {
  21. return this.label || ''
  22. },
  23. pickerRemark() {
  24. return this.remark
  25. }
  26. },
  27. methods: {
  28. handleConfirm({value: [item]}) {
  29. this.$emit('update:modelValue', this.getValue(item))
  30. this.$refs.picker.close()
  31. this.formRef.clearValidate([this.formItem.prop])
  32. }
  33. }
  34. }
  35. </script>
  36. <style scoped>
  37. </style>