vPicker.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <lb-picker
  3. :value="value"
  4. @confirm="select"
  5. :confirm-text="$t('common.confirm')"
  6. :cancel-text="$t('common.cancel')"
  7. :list="list"
  8. :props="{
  9. label: rangeLabel,
  10. value: rangeValue,
  11. }"
  12. >
  13. <slot
  14. v-bind="activeItem"
  15. ></slot>
  16. </lb-picker>
  17. </template>
  18. <script>
  19. import lbPicker from "@/components/lb-picker";
  20. export default {
  21. name: "vPicker",
  22. components: {
  23. lbPicker,
  24. },
  25. props: {
  26. list: {
  27. default: [],
  28. type: Array,
  29. required: false,
  30. },
  31. rangeLabel: {
  32. default: "label",
  33. type: String,
  34. required: false,
  35. },
  36. rangeValue: {
  37. default: "value",
  38. type: String,
  39. required: false,
  40. },
  41. value: {
  42. default: "",
  43. type: String | Number,
  44. required: false,
  45. },
  46. },
  47. computed: {
  48. activeItem() {
  49. if (this.list && this.list.length) {
  50. return this.list.find(item => item.value === this.value) || {};
  51. } else {
  52. return {};
  53. }
  54. },
  55. },
  56. data() {
  57. return {};
  58. },
  59. methods: {
  60. select($ev) {
  61. this.$emit("input", $ev.value);
  62. this.$emit("change", $ev.value, $ev.index, $ev.item);
  63. },
  64. },
  65. mounted() {},
  66. created() {},
  67. };
  68. </script>