Picker.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <!-- 时间选择弹窗 -->
  2. <template>
  3. <portal to="notification-outlet">
  4. <div class="toast-wrap" v-if="show">
  5. <div class="content">
  6. <van-picker
  7. :columns="columns"
  8. :visible-item-count='3'
  9. />
  10. <div class="confBtn">
  11. <div @click="getVal">确认</div>
  12. </div>
  13. </div>
  14. <div class="mask" @click="onCancel"></div>
  15. </div>
  16. </portal>
  17. </template>
  18. <script type="text/javascript">
  19. import $ from 'jquery';
  20. const num = [0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9];
  21. const unit = ['分钟', '小时', '天', '周', '月','年','分钟', '小时', '天', '周', '月','年','分钟', '小时', '天', '周', '月','年'];
  22. export default {
  23. name:'Picker',
  24. data() {
  25. return {
  26. columns: [
  27. {
  28. values:num,
  29. className:'column1',
  30. defaultIndex: 10
  31. },
  32. {
  33. values:num,
  34. className:'column2',
  35. defaultIndex: 11
  36. },
  37. {
  38. values:unit,
  39. className:'column3',
  40. defaultIndex: 6
  41. },
  42. ],
  43. }
  44. },
  45. props:['show'],
  46. methods: {
  47. getVal() {
  48. const val1 = $(".column1 ul .van-picker-column__item--selected")[0].innerText;
  49. const val2 = $(".column2 ul .van-picker-column__item--selected")[0].innerText;
  50. const val3 = $(".column3 ul .van-picker-column__item--selected")[0].innerText;
  51. const value = val1 + val2 + val3;
  52. this.$emit("comfirn",value)
  53. },
  54. onCancel() {
  55. this.$emit("cancel")
  56. }
  57. }
  58. };
  59. </script>
  60. <style lang="less" scoped>
  61. @import '../less/base.less';
  62. .toast-wrap{
  63. .content{
  64. padding-top: 25px;
  65. width: 6.3rem;
  66. // height: 4.8rem;
  67. height: 227px;
  68. background: #fff;
  69. z-index: 999;
  70. position: fixed;
  71. top:50%;
  72. left: 50%;
  73. transform: translate(-50%,-50%);
  74. box-sizing: border-box;
  75. border-radius: .2rem;
  76. z-index: 1000;
  77. font-size: .3rem;
  78. overflow-y: hidden;
  79. .confBtn{
  80. height: 44px;
  81. line-height: 44px;
  82. text-align: center;
  83. border-top: 1px solid #ebedf0;
  84. margin-top: 25px;
  85. div{
  86. color: #colors[theme];
  87. }
  88. }
  89. }
  90. .mask{
  91. .mask;
  92. z-index: 999;
  93. }
  94. }
  95. </style>