| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <template>
- <el-dialog title="添加好友" :visible.sync="dialogVisible" width="400px" :before-close="onClose"
- custom-class="add-friend-dialog">
- <el-input placeholder="输入用户名或昵称按下enter搜索,最多展示20条" class="input-with-select" v-model="searchText" size="small"
- @keyup.enter.native="onSearch()">
- <i class="el-icon-search el-input__icon" slot="suffix" @click="onSearch()"> </i>
- </el-input>
- <el-scrollbar style="height:400px">
- <div v-for="(user) in users" :key="user.id" v-show="user.id != $store.state.userStore.userInfo.id">
- <div class="item">
- <div class="avatar">
- <head-image :name="user.nickName" :url="user.headImage" :online="user.online"></head-image>
- </div>
- <div class="add-friend-text">
- <div class="text-user-name">
- <div>{{ user.userName }}</div>
- <div :class="user.online ? 'online-status online' : 'online-status'">{{
- user.online ? "[在线]" :"[离线]"}}</div>
- </div>
- <div class="text-nick-name">
- <div>昵称:{{ user.nickName }}</div>
- </div>
- </div>
- <el-button type="success" size="mini" v-show="!isFriend(user.id)"
- @click="onAddFriend(user)">添加</el-button>
- <el-button type="info" size="mini" v-show="isFriend(user.id)" plain disabled>已添加</el-button>
- </div>
- </div>
- </el-scrollbar>
- </el-dialog>
- </template>
- <script>
- import HeadImage from '../common/HeadImage.vue'
- export default {
- name: "addFriend",
- components: { HeadImage },
- data() {
- return {
- users: [],
- searchText: ""
- }
- },
- props: {
- dialogVisible: {
- type: Boolean
- }
- },
- methods: {
- onClose() {
- this.$emit("close");
- },
- onSearch() {
- if (!this.searchText) {
- this.users = [];
- return;
- }
- this.$http({
- url: "/user/findByName",
- method: "get",
- params: {
- name: this.searchText
- }
- }).then((data) => {
- this.users = data;
- })
- },
- onAddFriend(user) {
- this.$http({
- url: "/friend/add",
- method: "post",
- params: {
- friendId: user.id
- }
- }).then((data) => {
- this.$message.success("添加成功,对方已成为您的好友");
- let friend = {
- id: user.id,
- nickName: user.nickName,
- headImage: user.headImage,
- online: user.online
- }
- this.$store.commit("addFriend", friend);
- })
- },
- isFriend(userId) {
- let friends = this.$store.state.friendStore.friends;
- let friend = friends.find((f) => f.id == userId);
- return friend != undefined;
- }
- }
- }
- </script>
- <style lang="scss">
- .add-friend-dialog {
- .item {
- height: 65px;
- display: flex;
- position: relative;
- padding-left: 15px;
- align-items: center;
- padding-right: 25px;
- .add-friend-text {
- margin-left: 15px;
- flex: 3;
- display: flex;
- flex-direction: column;
- flex-shrink: 0;
- overflow: hidden;
- .text-user-name {
- display: flex;
- flex-direction: row;
- font-weight: 600;
- font-size: 16px;
- line-height: 25px;
- .online-status {
- font-size: 12px;
- font-weight: 600;
- &.online {
- color: #5fb878;
- }
- }
- }
- .text-nick-name {
- display: flex;
- flex-direction: row;
- font-size: 12px;
- line-height: 20px;
- }
- }
- }
- }
- </style>
|