You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UserType.vue 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template>
  2. <picker color="uni-picker-container" :disabled="dataList.disabled" range-key="lable" mode="selector"
  3. @change="bindPickerChange($event)" :range="selectorObj">
  4. <view class="text" :class='{isText: !dataList[dataList.value]}'>
  5. {{handleTxt}}
  6. </view>
  7. </picker>
  8. </template>
  9. <script setup lang='ts'>
  10. import {
  11. computed,
  12. ref
  13. } from 'vue'
  14. const selectorObj = [{
  15. 'lable': '个人用户',
  16. 'value': 1
  17. }, {
  18. 'lable': '单位用户',
  19. 'value': 2
  20. }]
  21. const props = defineProps(['dataList'])
  22. const emit = defineEmits(['useUserType'])
  23. const handleTxt = computed(() => {
  24. if (props.dataList[props.dataList.value] !== undefined) {
  25. return selectorObj.find(item => item.value == props.dataList[props.dataList.value])?.lable
  26. } else {
  27. return props.dataList.hint ? props.dataList.hint : '请选择' + props.dataList.title
  28. }
  29. })
  30. const bindPickerChange = (e) => {
  31. let select = e.target.value
  32. // #ifdef H5
  33. select = e.detail.value
  34. // #endif
  35. const data = selectorObj.find((item, index) => index === select).value
  36. emit('useUserType', data)
  37. }
  38. </script>
  39. <style>
  40. .text{
  41. padding:10rpx;
  42. }
  43. .text.isText {
  44. color: #a8a8a8;
  45. }
  46. </style>