dictSelect.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. <view class="pickerText" v-if="data && data.length>0 && index !== undefined">
  13. {{ data[index].dictLabel }}
  14. </view>
  15. <view class="pickerText" v-else>
  16. 待 选 择
  17. </view>
  18. </picker>
  19. </view>
  20. </uni-col>
  21. </uni-row>
  22. </view>
  23. </template>
  24. <script>
  25. //
  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. },
  42. data() {
  43. return {
  44. data: [],
  45. index: undefined
  46. }
  47. },
  48. mounted() {
  49. this.data = uni.getStorageSync(this.dictKey)
  50. if (this.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. methods: {
  59. bindPickerChange: function(e) {
  60. this.index = e.detail.value
  61. this.$emit('input', this.data[this.index].dictValue)
  62. },
  63. }
  64. }
  65. </script>
  66. <style lang="scss" scoped>
  67. .desc {
  68. padding: 10rpx 15rpx 0 15rpx;
  69. color: #818181;
  70. font-size: 20rpx;
  71. }
  72. .pickerView {
  73. // align-items: flex-end;
  74. padding: 10rpx 20rpx;
  75. margin-right: 20rpx;
  76. border: 1rpx #eeeeee solid;
  77. }
  78. .pickerText {
  79. font-size: 26rpx;
  80. color: #b1b1b1;
  81. }
  82. </style>