com-user-info.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-ellipsis');
  4. ?>
  5. <template id="com-user-info">
  6. <div class="user-box">
  7. <div class="user" @click="handleClick">
  8. <div class="user-avatar">
  9. <template v-if="user && user.avatar_url">
  10. <el-avatar :src="user.avatar_url"></el-avatar>
  11. </template>
  12. <template v-else>
  13. <el-avatar src="/resources/img/common/default-avatar.png"></el-avatar>
  14. </template>
  15. </div>
  16. <div class="user-info" v-if="user && user.id">
  17. <template v-if="isOverflowHidden">
  18. <com-ellipsis :line="1" :text="user.nickname + ''"></com-ellipsis>
  19. </template>
  20. <template v-else>
  21. <div class="nickname">{{ user.nickname }}</div>
  22. </template>
  23. <div>{{ user.mobile }}</div>
  24. </div>
  25. <div class="user-info" v-else>
  26. <div class="nickname delete">用户已删除</div>
  27. </div>
  28. </div>
  29. </div>
  30. </template>
  31. <script>
  32. Vue.component('com-user-info', {
  33. template: '#com-user-info',
  34. props: {
  35. user: Object,
  36. isToUserDetail: {
  37. type: Boolean,
  38. default: true,
  39. },
  40. isOverflowHidden: {
  41. type: Boolean,
  42. default: false,
  43. },
  44. },
  45. methods: {
  46. handleClick() {
  47. if (!this.isToUserDetail) {
  48. return
  49. }
  50. if (!this.user.id) {
  51. return;
  52. }
  53. navigateTo({
  54. r: 'mall/user/user-detail',
  55. id: this.user.id,
  56. });
  57. },
  58. }
  59. })
  60. </script>
  61. <style>
  62. .user-box {
  63. display: inline-block;
  64. }
  65. .user {
  66. display: flex;
  67. align-items: center;
  68. cursor: pointer;
  69. }
  70. .user-info {
  71. margin-left: 5px;
  72. display: flex;
  73. flex-direction: column;
  74. align-items: flex-start;
  75. }
  76. .nickname {
  77. font-weight: 900;
  78. }
  79. .delete {
  80. color: #909399;
  81. font-style: italic;
  82. }
  83. </style>