TimeSelector.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template>
  2. <selector-card
  3. class="time-selector"
  4. :cardType="selectorType"
  5. @onConfirm="onConfirm"
  6. @onCancel="onCancel"
  7. >
  8. <div slot="header" :class="{ 's-header': selectorType === 'line' }">
  9. <slot name="header">选择时间</slot>
  10. </div>
  11. <TimeSelectorContent
  12. ref="content"
  13. :selectorKeys="selectorKeys"
  14. :selectorType="selectorType"
  15. :showExact="showExact"
  16. :defaultSelectedKey="defaultSelectedKey"
  17. @onChange="onChange"
  18. />
  19. </selector-card>
  20. </template>
  21. <script>
  22. import SelectorCard from '@/components/selector/SelectorCard.vue'
  23. import TimeSelectorContent from '@/components/selector/TimeSelectorContent.vue'
  24. export default {
  25. name: 'time-selector',
  26. components: {
  27. SelectorCard,
  28. TimeSelectorContent
  29. },
  30. props: {
  31. selectorType: {
  32. type: String,
  33. default: 'line'
  34. },
  35. selectorKeys: {
  36. type: Array,
  37. default() {
  38. return ['all', 'today', 'lately7', 'lately30', 'lately90']
  39. }
  40. },
  41. defaultSelectedKey: String,
  42. showExact: {
  43. type: Boolean,
  44. default: false
  45. }
  46. },
  47. data() {
  48. return {}
  49. },
  50. created() {},
  51. methods: {
  52. setState(data) {
  53. return this.$refs.content.setState(data)
  54. },
  55. getState() {
  56. return this.$refs.content.getState()
  57. },
  58. getContentRef() {
  59. return this.$refs.content
  60. },
  61. onCancel() {
  62. this.$emit('onCancel')
  63. },
  64. onConfirm() {
  65. const state = this.getState()
  66. this.$emit('onConfirm', state)
  67. },
  68. onChange(state) {
  69. this.$emit('onChange', state)
  70. }
  71. }
  72. }
  73. </script>
  74. <style lang="scss" scoped></style>