picker-mixin.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import config from '@/config'
  2. const pickerMixin = {
  3. model: {
  4. prop: 'value',
  5. event: 'change',
  6. },
  7. data() {
  8. return {
  9. picker: undefined,
  10. }
  11. },
  12. provide() {
  13. return {
  14. RegisterPicker: (picker) => {
  15. // 把内部picker暴露给外层组件
  16. this.picker = picker
  17. },
  18. }
  19. },
  20. computed: {
  21. pickerMixinProps() {
  22. return {
  23. single: this.single,
  24. singleColumn: this.singleColumn,
  25. value: this.value,
  26. readOnly: this.readOnly,
  27. disabledKeys: this.disabledKeys,
  28. required: this.required,
  29. }
  30. },
  31. },
  32. methods: {
  33. openPicker() {
  34. this.picker.openPicker()
  35. },
  36. dummyForDoc() {
  37. /**
  38. * 用户取消选择
  39. */
  40. this.$emit('cancel')
  41. },
  42. },
  43. inheritAttrs: false,
  44. props: {
  45. /**
  46. * 单选
  47. */
  48. single: {
  49. type: Boolean,
  50. default: false,
  51. },
  52. /**
  53. * 没有右侧的已选中列表,直接在备选列表选择多个值
  54. */
  55. singleColumn: {
  56. type: Boolean,
  57. default: false,
  58. },
  59. /**
  60. * 表单项的值
  61. */
  62. value: {
  63. type: [Array, String],
  64. default: undefined,
  65. },
  66. /**
  67. * 只读
  68. */
  69. readOnly: {
  70. type: Boolean,
  71. default: false,
  72. },
  73. /**
  74. * 禁用的候选项
  75. * @since 8.0.8
  76. */
  77. disabledKeys: {
  78. type: Array,
  79. default: () => [],
  80. },
  81. /**
  82. * @ignore
  83. */
  84. dblClickTransfer: {
  85. type: Boolean,
  86. default: () => config.common.picker.dblClickTransfer,
  87. },
  88. /**
  89. * 必填。只控制了没选值时,对话框的确定按钮不可点击;input框的校验请使用通用的rules属性
  90. * @since 0.19
  91. */
  92. required: {
  93. type: Boolean,
  94. default: false,
  95. },
  96. },
  97. }
  98. export default pickerMixin