dictSelect.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. },
  61. methods: {
  62. bindPickerChange: function(e) {
  63. this.index = e.detail.value
  64. this.$emit('input', this.data[this.index].dictValue)
  65. },
  66. }
  67. }
  68. </script>
  69. <style lang="scss" scoped>
  70. .desc {
  71. padding: 10rpx 5rpx;
  72. color: #818181;
  73. font-size: 20rpx;
  74. }
  75. .pickerView {
  76. // align-items: flex-end;
  77. padding: 10rpx 20rpx;
  78. border: 1rpx #eeeeee solid;
  79. }
  80. .pickerText {
  81. font-size: 26rpx;
  82. color: #b1b1b1;
  83. }
  84. </style>