Browse Source

web端ui优化

master
xsx 2 years ago
parent
commit
837f72af46
  1. 11
      im-ui/src/components/chat/ChatAtBox.vue
  2. 21
      im-ui/src/components/chat/ChatBox.vue
  3. 12
      im-ui/src/components/chat/ChatGroupMember.vue
  4. 2
      im-ui/src/components/common/Emotion.vue

11
im-ui/src/components/chat/ChatAtBox.vue

@ -1,8 +1,9 @@
<template> <template>
<el-scrollbar v-show="show" ref="scrollBox" class="group-member-choose" <el-scrollbar v-show="show" ref="scrollBox" class="group-member-choose"
:style="{'left':pos.x+'px','top':pos.y-300+'px'}"> :style="{'left':pos.x+'px','top':pos.y-300+'px'}">
<div v-for="(member) in showMembers" :key="member.id"> <div v-for="(member,idx) in showMembers" :key="member.id">
<chat-group-member :member="member" :height="40" @click.native="onSelectMember(member)"></chat-group-member> <chat-group-member :member="member" :height="40" :active='activeIdx==idx'
@click.native="onSelectMember(member)"></chat-group-member>
</div> </div>
</el-scrollbar> </el-scrollbar>
</template> </template>
@ -55,6 +56,10 @@
} }
}) })
this.activeIdx = this.showMembers.length > 0 ? 0: -1; this.activeIdx = this.showMembers.length > 0 ? 0: -1;
console.log(this.showMembers.length)
if(this.showMembers.length == 0){
this.close();
}
}, },
open(pos) { open(pos) {
this.show = true; this.show = true;
@ -122,7 +127,7 @@
position: fixed; position: fixed;
width: 200px; width: 200px;
height: 300px; height: 300px;
border: 1px solid #b4b4b4; border: 1px solid #53a0e79c;
border-radius: 5px; border-radius: 5px;
background-color: #f5f5f5; background-color: #f5f5f5;
box-shadow: 0px 0px 10px #ccc; box-shadow: 0px 0px 10px #ccc;

21
im-ui/src/components/chat/ChatBox.vue

@ -62,8 +62,8 @@
:disabled="lockMessage" @paste.prevent="onEditorPaste" :disabled="lockMessage" @paste.prevent="onEditorPaste"
@compositionstart="onEditorCompositionStart" @compositionstart="onEditorCompositionStart"
@compositionend="onEditorCompositionEnd" @input="onEditorInput" @compositionend="onEditorCompositionEnd" @input="onEditorInput"
:placeholder="placeholder" @blur="onEditBoxBlur()" @keydown.down="onKeyDown" :placeholder="placeholder" @blur="onEditBoxBlur()" @keyup.down="onKeyDown"
@keydown.up="onKeyUp" @keydown.enter.prevent="onKeyEnter">x @keyup.up.prevent="onKeyUp" @keydown.enter.prevent="onKeyEnter">x
</div> </div>
<div v-show="sendImageUrl" class="send-image-area"> <div v-show="sendImageUrl" class="send-image-area">
@ -107,7 +107,7 @@
import ChatAtBox from "./ChatAtBox.vue" import ChatAtBox from "./ChatAtBox.vue"
import GroupMemberSelector from "../group/GroupMemberSelector.vue" import GroupMemberSelector from "../group/GroupMemberSelector.vue"
import RtcGroupJoin from "../rtc/RtcGroupJoin.vue" import RtcGroupJoin from "../rtc/RtcGroupJoin.vue"
export default { export default {
name: "chatPrivate", name: "chatPrivate",
@ -164,6 +164,7 @@
} }
}, },
onKeyDown() { onKeyDown() {
console.log("onKeyDown")
if (this.$refs.atBox.show) { if (this.$refs.atBox.show) {
this.$refs.atBox.moveDown() this.$refs.atBox.moveDown()
} }
@ -188,13 +189,17 @@
this.focusNode = selection.focusNode; this.focusNode = selection.focusNode;
this.focusOffset = selection.focusOffset; this.focusOffset = selection.focusOffset;
}, },
onEditorInput(e) { onEditorInput(e, e2, e3) {
// @ // @
if (this.chat.type == "GROUP" && !this.zhLock) { if (this.chat.type == "GROUP" && !this.zhLock) {
console.log("onEditorInput")
if (e.inputType === "deleteContentBackward" && !this.atSearchText) {
this.$refs.atBox.close();
}
if (e.data == '@') { if (e.data == '@') {
// //
this.showAtBox(e); this.showAtBox(e);
} else { } else if(this.$refs.atBox.show){
let selection = window.getSelection() let selection = window.getSelection()
let range = selection.getRangeAt(0) let range = selection.getRangeAt(0)
this.focusNode = selection.focusNode; this.focusNode = selection.focusNode;
@ -490,7 +495,7 @@
}, },
onInviteOk(members) { onInviteOk(members) {
if(members.length < 2){ if (members.length < 2) {
return; return;
} }
let userInfos = []; let userInfos = [];
@ -742,7 +747,7 @@
this.placeholder = "聊点什么吧~"; this.placeholder = "聊点什么吧~";
} }
}, },
generateId(){ generateId() {
// id // id
return String(new Date().getTime()) + String(Math.floor(Math.random() * 1000)); return String(new Date().getTime()) + String(Math.floor(Math.random() * 1000));
} }
@ -824,7 +829,7 @@
position: relative; position: relative;
width: 100%; width: 100%;
background: #f8f8f8; background: #f8f8f8;
.el-header { .el-header {
padding: 3px; padding: 3px;
background-color: white; background-color: white;

12
im-ui/src/components/chat/ChatGroupMember.vue

@ -1,5 +1,5 @@
<template> <template>
<div class="chat-group-member" :style="{'height':height+'px'}"> <div class="chat-group-member" :class="active?'active':''" :style="{'height':height+'px'}">
<div class="member-avatar"> <div class="member-avatar">
<head-image :size="headImageSize" :name="member.showNickName" :url="member.headImage"> </head-image> <head-image :size="headImageSize" :name="member.showNickName" :url="member.headImage"> </head-image>
</div> </div>
@ -25,7 +25,11 @@ export default {
height:{ height:{
type: Number, type: Number,
default: 50 default: 50
} },
active: {
type: Boolean,
default: false
}
}, },
computed:{ computed:{
headImageSize(){ headImageSize(){
@ -47,11 +51,11 @@ export default {
box-sizing: border-box; box-sizing: border-box;
&:hover { &:hover {
background-color: #eeeeee; background-color: #F8FAFF;
} }
&.active { &.active {
background-color: #eeeeee; background-color: #E8F2FF;
} }
.member-name { .member-name {

2
im-ui/src/components/common/Emotion.vue

@ -55,7 +55,7 @@
width: 500px; width: 500px;
box-sizing: border-box; box-sizing: border-box;
padding: 5px; padding: 5px;
border: 1px solid #b4b4b4; border: 1px solid #53a0e79c;
border-radius: 5px; border-radius: 5px;
background-color: #f5f5f5; background-color: #f5f5f5;
box-shadow: 0px 0px 10px #ccc; box-shadow: 0px 0px 10px #ccc;

Loading…
Cancel
Save