Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 
 

71 рядки
1.5 KiB

  1. <template>
  2. <view id="contact" class="page">
  3. <!-- 顶部搜索栏 -->
  4. <l-banner v-model="searchText" placeholder="搜索学校名/部门名/职员姓名" type="search" noSearchButton fixed fill />
  5. <!-- 树形列表 -->
  6. <l-organize-tree v-if="ready && !searchText" @userClick="userClick" />
  7. <!-- 如果用户输入了搜索关键字,只列出用户 -->
  8. <view v-else-if="ready" class="user-item-list">
  9. <l-organize-single-item v-for="item of searchList" @click="userClick" :key="item.id" :item="item" />
  10. </view>
  11. <tabBar selectedPath='/pages/contact'></tabBar>
  12. </view>
  13. </template>
  14. <script>
  15. export default {
  16. data() {
  17. return {
  18. treeRoot: {},
  19. searchText: '',
  20. ready: true
  21. }
  22. },
  23. onPullDownRefresh() {
  24. this.ready = false
  25. this.$nextTick(() => {
  26. this.ready = true
  27. uni.stopPullDownRefresh()
  28. })
  29. },
  30. onShow() {
  31. uni.hideTabBar()
  32. },
  33. methods: {
  34. // 处理点击用户的场合,跳转到消息页
  35. userClick(item) {
  36. return
  37. this.NAV_TO(`/pages/msg/chat?id=${item.id}&name=${item.name}`)
  38. }
  39. },
  40. computed: {
  41. // 用户输入关键字搜索时的列表
  42. searchList() {
  43. if (!this.searchText) {
  44. return []
  45. }
  46. return Object.entries(this.GET_GLOBAL('user'))
  47. .filter(([id, item]) => item.name.includes(this.searchText))
  48. .map(([id, item]) => ({
  49. ...item,
  50. type: 'user',
  51. id
  52. }))
  53. }
  54. }
  55. }
  56. </script>
  57. <style lang="less">
  58. .page{
  59. padding-bottom: 48px;
  60. }
  61. page {
  62. padding-top: 100rpx;
  63. }
  64. </style>