index.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <view class="page_container">
  3. <custom-nav-bar title="搜索好友" />
  4. <view class="search_bar_wrap">
  5. <u-search shape="square" placeholder="搜索好友" :inputStyle="{'font-size':'18px'}" v-model="keyword" :showAction="false" @search="searchFriend" />
  6. </view>
  7. <view v-show="searchResults.length > 0" class="search_title">我的好友</view>
  8. <u-list v-show="searchResults.length > 0" class="user_list" height="1">
  9. <u-list-item v-for="user in searchResults" :key="user.userID">
  10. <user-item :item="user" @itemClick="itemClick" />
  11. </u-list-item>
  12. </u-list>
  13. <u-empty v-show="searchResults.length === 0" mode="search" />
  14. </view>
  15. </template>
  16. <script>
  17. import IMSDK, { SessionType } from 'openim-uniapp-polyfill';
  18. import CustomNavBar from '../../../components/CustomNavBar/index.vue';
  19. import UserItem from '../../../components/UserItem/index.vue';
  20. import { navigateToDesignatedConversation } from '../../../util/imCommon';
  21. export default {
  22. components: {
  23. CustomNavBar,
  24. UserItem
  25. },
  26. data() {
  27. return {
  28. keyword: '',
  29. searchResults: []
  30. };
  31. },
  32. methods: {
  33. searchFriend() {
  34. const options = {
  35. keywordList: [this.keyword],
  36. isSearchUserID: false,
  37. isSearchNickname: true,
  38. isSearchRemark: true
  39. };
  40. IMSDK.asyncApi(IMSDK.IMMethods.SearchFriends, IMSDK.uuid(), options).then(({ data }) => {
  41. this.searchResults = data;
  42. });
  43. },
  44. itemClick(user) {
  45. // uni.$u.route('/pages_im/pages/common/userCard/index', {
  46. // sourceID: user.userID
  47. // });
  48. this.toDesignatedConversation(user.userID);
  49. },
  50. toDesignatedConversation(sourceID) {
  51. navigateToDesignatedConversation(sourceID, SessionType.Single, this.memberInfo !== null).catch(() => uni.$u.toast('获取会话信息失败'));
  52. },
  53. }
  54. };
  55. </script>
  56. <style lang="scss" scoped>
  57. .page_container {
  58. @include colBox(false);
  59. height: 100vh;
  60. background-color: #f8f8f8;
  61. .search_bar_wrap {
  62. height: 54px;
  63. padding: 12px 22px;
  64. background-color: #fff;
  65. }
  66. .search_title {
  67. padding-top: 8px;
  68. padding-left: 22px;
  69. color: #999;
  70. background-color: #fff;
  71. }
  72. .user_list {
  73. flex: 1;
  74. background-color: #fff;
  75. }
  76. .u-empty {
  77. padding-top: 20vh;
  78. }
  79. }
  80. </style>