Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

Character.vue 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. 'lable': '营运客车',
  22. 'value': 3
  23. }, {
  24. 'lable': '非营运货车',
  25. 'value': 4
  26. }, {
  27. 'lable': '营运货车',
  28. 'value': 5
  29. }, {
  30. 'lable': '特种车',
  31. 'value': 6
  32. }, {
  33. 'lable': '挂车',
  34. 'value': 7
  35. }, {
  36. 'lable': '应急救援车',
  37. 'value': 8
  38. }]
  39. const props = defineProps(['dataList'])
  40. const emit = defineEmits(['feeVehicleType'])
  41. const handleTxt = computed(() => {
  42. if (props.dataList[props.dataList.value] !== undefined) {
  43. return selectorObj.find(item => item.value == props.dataList[props.dataList.value])?.lable || props.dataList[props.dataList.value]
  44. } else {
  45. return props.dataList.hint ? props.dataList.hint : '请选择' + props.dataList.title
  46. }
  47. })
  48. const bindPickerChange = (e) => {
  49. let select = e.target.value
  50. // #ifdef H5
  51. select = e.detail.value
  52. // #endif
  53. const data = selectorObj.find((item, index) => index === select).value
  54. emit('feeVehicleType', data)
  55. }
  56. </script>
  57. <style>
  58. .text {
  59. padding: 10rpx;
  60. }
  61. .text.isText{
  62. color:#a8a8a8;
  63. }
  64. </style>