ComprehensivePanel.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <view class="comprehensive_container">
  3. <view v-show="data.contacts.length > 0" class="comprehensive_row">
  4. <view class="row_title">
  5. <text class="row_title_text">联系人</text>
  6. </view>
  7. <global-result-item v-for="user in data.contacts.slice(0, 2)" :item="user" :key="user.userID" />
  8. <view v-show="data.contacts.length > 2" @click="toggleTab(1)" class="more">
  9. <text>查看更多相关联系人</text>
  10. <view class="more_right">
  11. <u-icon name="arrow-right" color="#999" size="18" />
  12. </view>
  13. </view>
  14. </view>
  15. <view v-show="data.groups.length > 0" class="comprehensive_row">
  16. <view class="row_title">
  17. <text class="row_title_text">群组</text>
  18. </view>
  19. <global-result-item v-for="group in data.groups.slice(0, 2)" :item="group" :key="group.groupID" />
  20. <view v-show="data.groups.length > 2" @click="toggleTab(2)" class="more">
  21. <text>查看更多相关群组</text>
  22. <view class="more_right">
  23. <u-icon name="arrow-right" color="#999" size="18" />
  24. </view>
  25. </view>
  26. </view>
  27. <view v-show="data.chatLogs.length > 0" class="comprehensive_row">
  28. <view class="row_title">
  29. <text class="row_title_text">聊天记录</text>
  30. </view>
  31. <global-result-item v-for="logs in data.chatLogs.slice(0, 2)" :item="logs" :key="logs.conversationID" />
  32. <view v-show="data.chatLogs.length > 2" @click="toggleTab(3)" class="more">
  33. <text>查看更多相关聊天记录</text>
  34. <view class="more_right">
  35. <u-icon name="arrow-right" color="#999" size="18" />
  36. </view>
  37. </view>
  38. </view>
  39. <view v-show="data.documents.length > 0" class="comprehensive_row">
  40. <view class="row_title">
  41. <text class="row_title_text">文件</text>
  42. </view>
  43. <global-result-item v-for="document in data.documents.slice(0, 2)" :item="document" :key="document.clientMsgID" isFile />
  44. </view>
  45. <view v-show="data.documents.length > 2" @click="toggleTab(4)" class="more">
  46. <text>查看更多相关文档</text>
  47. <view class="more_right">
  48. <u-icon name="arrow-right" color="#999" size="18" />
  49. </view>
  50. </view>
  51. <view v-show="data.org.length > 0" class="comprehensive_row">
  52. <view class="row_title">
  53. <text class="row_title_text">组织成员</text>
  54. </view>
  55. <global-result-item v-for="user in data.org.slice(0, 2)" :item="user" :key="user.userID" />
  56. <view v-show="storeSelfInfo.members.length && data.org.length > 2" @click="toggleTab(5)" class="more">
  57. <text>查看更多组织成员</text>
  58. <view class="more_right">
  59. <u-icon name="arrow-right" color="#999" size="18" />
  60. </view>
  61. </view>
  62. </view>
  63. </view>
  64. </template>
  65. <script>
  66. import { mapGetters } from 'vuex';
  67. import GlobalResultItem from './GlobalResultItem.vue';
  68. export default {
  69. components: {
  70. GlobalResultItem
  71. },
  72. props: {
  73. data: Object
  74. },
  75. data() {
  76. return {};
  77. },
  78. computed: {
  79. ...mapGetters(['storeSelfInfo']),
  80. isEmpty() {
  81. return Object.values(this.data).find((item) => item.length > 0) === undefined;
  82. }
  83. },
  84. methods: {
  85. toggleTab(tab) {
  86. this.$emit('toggleTab', {
  87. index: tab
  88. });
  89. }
  90. }
  91. };
  92. </script>
  93. <style lang="scss">
  94. .comprehensive_container {
  95. flex: 1;
  96. overflow-y: auto;
  97. .comprehensive_row {
  98. margin: 24rpx;
  99. background-color: #fff;
  100. border-radius: 6px;
  101. overflow: hidden;
  102. .row_title {
  103. display: flex;
  104. justify-content: space-between;
  105. padding: 24rpx 36rpx 0;
  106. font-size: 24rpx;
  107. &_text {
  108. color: $u-tips-color;
  109. }
  110. // .more {
  111. // color: #1B72EC;
  112. // }
  113. }
  114. .more {
  115. @include btwBox();
  116. padding: 20rpx 36rpx 20rpx;
  117. border-top: 1px solid rgba(153, 153, 153, 0.2);
  118. color: $uni-color-primary;
  119. .more_right {
  120. @include vCenterBox();
  121. }
  122. }
  123. }
  124. .u-empty {
  125. margin-top: 20vh !important;
  126. }
  127. }
  128. </style>