dictSelect.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <view class="desc">
  3. <uni-row>
  4. <uni-col :span="5">
  5. <view class="desc" style="font-size: 25rpx;">
  6. {{label}}
  7. </view>
  8. </uni-col>
  9. <uni-col :span="19">
  10. <view class="pickerView">
  11. <picker @change="bindPickerChange" :value="index" :range="data" range-key="dictLabel"
  12. :disabled="disabled">
  13. <view class="pickerText" v-if="data && data.length>0 && index !== undefined">
  14. {{ data[index].dictLabel }}
  15. </view>
  16. <view class="pickerText" v-else>
  17. 待 选 择
  18. </view>
  19. </picker>
  20. </view>
  21. </uni-col>
  22. </uni-row>
  23. </view>
  24. </template>
  25. <script>
  26. export default {
  27. name: 'hs-post-select',
  28. props: {
  29. value: {
  30. Type: String,
  31. default: null
  32. },
  33. label: {
  34. Type: String,
  35. default: '岗位'
  36. },
  37. dictKey: {
  38. Type: String,
  39. default: null
  40. },
  41. disabled: false,
  42. },
  43. data() {
  44. return {
  45. data: [],
  46. index: undefined
  47. }
  48. },
  49. watch: {
  50. value() {
  51. for (var i = 0; i < this.data.length; i++) {
  52. if (this.data[i].dictValue === this.value) {
  53. this.index = i
  54. }
  55. }
  56. }
  57. },
  58. mounted() {
  59. this.data = uni.getStorageSync(this.dictKey)
  60. if (this.value) {
  61. for (var i = 0; i < this.data.length; i++) {
  62. if (this.data[i].dictValue === this.value) {
  63. this.index = i
  64. }
  65. }
  66. }
  67. },
  68. methods: {
  69. bindPickerChange: function(e) {
  70. this.index = e.detail.value
  71. this.$emit('input', this.data[this.index].dictValue)
  72. }
  73. }
  74. }
  75. </script>
  76. <style lang="scss" scoped>
  77. .desc {
  78. padding: 10rpx 5rpx;
  79. color: #818181;
  80. font-size: 20rpx;
  81. }
  82. .pickerView {
  83. // align-items: flex-end;
  84. padding: 10rpx 20rpx;
  85. border: 1rpx #eeeeee solid;
  86. }
  87. .pickerText {
  88. font-size: 26rpx;
  89. color: #b1b1b1;
  90. }
  91. </style>