index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <view class="SearchDetail">
  3. <u--input v-model="searchVal" placeholder="请输入关键字" suffixIcon="search" suffixIconStyle="font-weight: bold"
  4. border="none"
  5. :customStyle="{ height: '88rpx', borderRadius: '20rpx', lineHeight:'88rpx', backgroundColor: '#eee', padding: '0 20rpx 0 40rpx'}"
  6. :clearable="true" @focus="focusSearch" @confirm="clickSearch" @clear="clickClear">
  7. <template slot="suffix">
  8. <u-icon name="search" color="#000" size="60rpx" @click="clickSearch"></u-icon>
  9. </template>
  10. </u--input>
  11. <view class="tabBox">
  12. <view v-for="item in tabList" :key="item.id" :class="{active:activeId ===item.id}"
  13. @click="handleSelect(item)">
  14. {{item.name}}
  15. </view>
  16. </view>
  17. <!-- 内容列表 -->
  18. <view class="main">
  19. <Info id="child_info" v-show="activeId === 1" />
  20. <Video id="child_video" v-show="activeId === 2" />
  21. <!-- <component :is="partName" v-if="partName"></component> -->
  22. </view>
  23. </view>
  24. </template>
  25. <script>
  26. import Info from './components/info.vue'
  27. import Video from './components/video.vue'
  28. export default {
  29. components: {
  30. Info,
  31. Video
  32. },
  33. data() {
  34. return {
  35. // partName:"Info", // 渲染的组件名
  36. searchVal: "", // 搜索内容
  37. activeId: 1, // 当前选中的tab
  38. tabList: [{
  39. id: 1,
  40. name: '资讯',
  41. partName: "Info"
  42. },
  43. {
  44. id: 2,
  45. name: '视频',
  46. partName: "Video"
  47. },
  48. // {
  49. // id: 3,
  50. // name: '文章',
  51. // partName:""
  52. // },
  53. // {
  54. // id: 4,
  55. // name: '新闻',
  56. // partName:""
  57. // },
  58. ],
  59. };
  60. },
  61. onLoad(option) {
  62. console.log('传递的参数', option)
  63. this.searchVal = option.searchVal
  64. const childInfo = this.selectComponent('#child_info')
  65. childInfo.$vm.getList({title: option.searchVal})
  66. },
  67. methods: {
  68. handleSelect(val) {
  69. this.activeId = val.id
  70. },
  71. focusSearch() {
  72. console.log('input聚焦')
  73. },
  74. clickSearch() {
  75. const childInfo = this.selectComponent('#child_info')
  76. const childVideo = this.selectComponent('#child_video')
  77. console.log('clickSearch', childInfo, childVideo)
  78. activeId === 1 ? childInfo.$vm.getList({title: this.searchVal}): childVideo.$vm.getList({title: this.searchVal})
  79. // childInfo.$vm.getList({title: this.searchVal})
  80. },
  81. clickClear() {
  82. console.log('input清除')
  83. },
  84. }
  85. }
  86. </script>
  87. <style lang="scss">
  88. page {
  89. height: 100%;
  90. // background-color: yellow;
  91. }
  92. .SearchDetail {
  93. padding: 40rpx;
  94. padding-bottom: 0;
  95. color: #666;
  96. height: 100%;
  97. .tabBox {
  98. // padding: 0 40rpx;
  99. display: flex;
  100. align-items: flex-end;
  101. margin-top: 20rpx;
  102. margin-bottom: 50rpx;
  103. height: 70rpx;
  104. >view {
  105. margin-right: 40rpx;
  106. &.active {
  107. color: #000;
  108. font-size: 50rpx;
  109. font-weight: bold;
  110. }
  111. }
  112. }
  113. .main {
  114. height: calc(100% - 88rpx - 140rpx);
  115. }
  116. }
  117. </style>