allTypes.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <view class="chart-alltype-page">
  3. <van-sticky style="background: #fff;width:100%">
  4. <van-search
  5. shape="round"
  6. :value="searchVal"
  7. placeholder="图表分类搜索"
  8. @change="searchValChange"
  9. @search="onSearch"
  10. @clear="onClearSearch"
  11. style="width:100%"
  12. />
  13. </van-sticky>
  14. <view class="list-wrap">
  15. <van-collapse :value="active" @change="change" :border="false">
  16. <van-collapse-item title="公共图库" name="common" :border="false">
  17. <view class="list">
  18. <view
  19. class="item"
  20. v-for="item in pubClassifyList"
  21. :key="item.myChartClassifyName"
  22. @click="handleSelectClassify(item,true)"
  23. >{{item.myChartClassifyName}}</view>
  24. </view>
  25. </van-collapse-item>
  26. <van-collapse-item title="我的图库" name="mine" :border="false" custom-class="self-wrap">
  27. <view class="list" v-if="myClassifyList.length>0">
  28. <dragSorts
  29. :list="myClassifyList"
  30. :selectId="selectId"
  31. :rowHeight="rowHeight"
  32. :listHeight="classifyListHeight+20"
  33. @onclick="myClassifyClick"
  34. ></dragSorts>
  35. </view>
  36. </van-collapse-item>
  37. </van-collapse>
  38. </view>
  39. </view>
  40. </template>
  41. <script>
  42. import {apiChartClassifyList} from '@/api/chart'
  43. import dragSorts from '@/components/chartClassifyItem/HM-dragSorts.vue'
  44. export default {
  45. components: {
  46. dragSorts
  47. },
  48. data () {
  49. return {
  50. searchVal:'',
  51. active:['common','mine'],
  52. selectId:0,
  53. myClassifyList:[],
  54. pubClassifyList:[],
  55. classifyListHeight:0,//我的分类默认高度
  56. rowHeight:44,
  57. }
  58. },
  59. onLoad(options) {
  60. this.selectId=options.selectId
  61. this.getList()
  62. },
  63. methods: {
  64. // 搜索关键词变化
  65. searchValChange(e){
  66. this.searchVal=e.detail
  67. },
  68. onSearch(){
  69. this.getList()
  70. },
  71. onClearSearch(){
  72. this.searchVal=''
  73. this.getList()
  74. },
  75. change(e){
  76. this.active=e.detail
  77. },
  78. // 获取分类数据
  79. async getList(){
  80. const res=await apiChartClassifyList({Keywords:this.searchVal})
  81. if(res.code===200){
  82. this.myClassifyList=res.data.private_classify||[]
  83. this.pubClassifyList=res.data.public_classify||[]
  84. this.classifyListHeight=this.rowHeight*this.myClassifyList.length
  85. }
  86. },
  87. // 点击我的分类项
  88. myClassifyClick(e){
  89. this.handleSelectClassify(e.value.myChartClassifyId,false)
  90. },
  91. handleSelectClassify(item,isPublic){
  92. this.selectId=item.myChartClassifyId
  93. uni.$emit('classifyPageSelect', {selectId:this.selectId,isPublic:isPublic})
  94. uni.navigateBack()
  95. }
  96. }
  97. };
  98. </script>
  99. <style lang="scss">
  100. .chart-alltype-page{
  101. .list-wrap{
  102. .van-cell__title, .van-cell__value{
  103. flex: none !important;
  104. }
  105. .van-cell:after{
  106. border: none !important;
  107. }
  108. .van-collapse-item__content{
  109. padding: 0;
  110. }
  111. .van-cell__title{
  112. font-size: 16px;
  113. font-weight: bold;
  114. }
  115. .van-hairline--top:after{
  116. border-top-width: 0 !important;
  117. }
  118. .self-wrap{
  119. margin-top: 60rpx;
  120. }
  121. }
  122. .list{
  123. .item{
  124. &:first-child{
  125. border-top: 1px solid #E5E5E5;
  126. }
  127. padding: 20rpx 34rpx;
  128. border-bottom: 1px solid #E5E5E5;
  129. color: #1F243A;
  130. font-size: 14px;
  131. }
  132. }
  133. }
  134. </style>