no message

This commit is contained in:
kuaifan 2025-04-13 10:50:47 +08:00
parent 50f8bb8721
commit 3660cbd450
8 changed files with 81 additions and 50 deletions

View File

@ -9,7 +9,7 @@
:class="boxClass" :class="boxClass"
:style="boxStyle" :style="boxStyle"
:title="showName ? undefined : user.nickname"> :title="showName ? undefined : user.nickname">
<em :style="spotStyle"></em> <em v-if="showStateDot" :style="spotStyle"></em>
<EAvatar v-if="showImg" ref="avatar" :class="{'avatar-default':isDefault}" :src="user.userimg" :size="avatarSize" :error="onError"> <EAvatar v-if="showImg" ref="avatar" :class="{'avatar-default':isDefault}" :src="user.userimg" :size="avatarSize" :error="onError">
<span class="avatar-char" :style="spotStyle">{{nickname}}</span> <span class="avatar-char" :style="spotStyle">{{nickname}}</span>
</EAvatar> </EAvatar>

View File

@ -34,6 +34,10 @@ export default {
}, },
userResult: { userResult: {
default: null default: null
},
showStateDot: {
type: Boolean,
default: true
} }
} }
} }

View File

@ -11,9 +11,6 @@
<p v-if="user.delete_at"><strong>{{$L('删除时间')}}: {{user.delete_at}}</strong></p> <p v-if="user.delete_at"><strong>{{$L('删除时间')}}: {{user.delete_at}}</strong></p>
<p v-else-if="user.disable_at"><strong>{{$L('离职时间')}}: {{user.disable_at}}</strong></p> <p v-else-if="user.disable_at"><strong>{{$L('离职时间')}}: {{user.disable_at}}</strong></p>
<slot name="end"/> <slot name="end"/>
<div v-if="showMenu" class="avatar-icons">
<Icon type="ios-chatbubbles" @click="onOpenDialog"/>
</div>
</div> </div>
<div> <div>
<UserAvatar <UserAvatar
@ -26,6 +23,7 @@
:borderWitdh="borderWitdh" :borderWitdh="borderWitdh"
:borderColor="borderColor" :borderColor="borderColor"
:clickOpenDialog="clickOpenDialog" :clickOpenDialog="clickOpenDialog"
:showStateDot="showStateDot"
:userResult="onUserResult"/> :userResult="onUserResult"/>
</div> </div>
</ETooltip> </ETooltip>
@ -42,10 +40,6 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
showIconMenu: {
type: Boolean,
default: false
},
tooltipPlacement: { tooltipPlacement: {
type: String, type: String,
default: 'bottom' default: 'bottom'
@ -75,26 +69,12 @@ export default {
}, },
computed: { computed: {
showMenu() {
if (this.$store.state.userId == this.userid) {
return false
}
if (this.user.delete_at || this.user.disable_at) {
return false
}
return this.showIconMenu
},
isBot() { isBot() {
return !!(this.user && this.user.bot); return !!(this.user && this.user.bot);
}, },
}, },
methods: { methods: {
onOpenDialog() {
this.$refs.avatar.openDialog();
},
onUserResult(info) { onUserResult(info) {
if (typeof this.userResult === "function") { if (typeof this.userResult === "function") {
this.userResult(info); this.userResult(info);

View File

@ -291,6 +291,9 @@
<!--搜索框--> <!--搜索框-->
<SearchBox ref="searchBox"/> <SearchBox ref="searchBox"/>
<!--会员详情窗口-->
<UserDetail/>
<!--工作报告--> <!--工作报告-->
<DrawerOverlay <DrawerOverlay
v-model="workReportShow" v-model="workReportShow"
@ -369,9 +372,11 @@ import ApproveDetails from "./manage/approve/details.vue";
import notificationKoro from "notification-koro1"; import notificationKoro from "notification-koro1";
import emitter from "../store/events"; import emitter from "../store/events";
import SearchBox from "../components/SearchBox.vue"; import SearchBox from "../components/SearchBox.vue";
import UserDetail from "./manage/components/UserDetail.vue";
export default { export default {
components: { components: {
UserDetail,
SearchBox, SearchBox,
ApproveDetails, ApproveDetails,
ImgUpload, ImgUpload,

View File

@ -41,7 +41,7 @@
<template v-for="tag in $A.dialogTags(dialogData)" v-if="tag.color != 'success'"> <template v-for="tag in $A.dialogTags(dialogData)" v-if="tag.color != 'success'">
<Tag :color="tag.color" :fade="false">{{$L(tag.text)}}</Tag> <Tag :color="tag.color" :fade="false">{{$L(tag.text)}}</Tag>
</template> </template>
<h2 class="user-select-auto">{{dialogData.name}}</h2> <h2 class="user-select-auto" @click="onViewAvatar">{{dialogData.name}}</h2>
<em v-if="peopleNum > 0" @click="onDialogMenu('groupInfo')">({{peopleNum}})</em> <em v-if="peopleNum > 0" @click="onDialogMenu('groupInfo')">({{peopleNum}})</em>
<Tag v-if="dialogData.bot" class="after" :fade="false">{{$L('机器人')}}</Tag> <Tag v-if="dialogData.bot" class="after" :fade="false">{{$L('机器人')}}</Tag>
<Tag v-if="dialogData.type === 'user' && approvaUserStatus" class="after" color="red" :fade="false">{{$L(approvaUserStatus)}}</Tag> <Tag v-if="dialogData.type === 'user' && approvaUserStatus" class="after" color="red" :fade="false">{{$L(approvaUserStatus)}}</Tag>
@ -4273,15 +4273,19 @@ export default {
}, },
onViewAvatar(e) { onViewAvatar(e) {
let src = null if (this.dialogData.type == 'group') {
if (e.target.tagName === "IMG") { let src = null
src = e.target.src if (e.target.tagName === "IMG") {
} else { src = e.target.src
src = $A(e.target).find("img").attr("src") } else {
} src = $A(e.target).find("img").attr("src")
if (src) { }
this.$store.dispatch("previewImage", src) if (src) {
this.$store.dispatch("previewImage", src)
}
return;
} }
emitter.emit("openUser", this.dialogData.dialog_user?.userid)
}, },
onTopOperate() { onTopOperate() {

View File

@ -126,23 +126,4 @@
} }
} }
} }
.avatar-icons {
margin-top: 12px;
border-top: 1px solid rgba(244, 244, 245, 0.5);
padding: 8px 0 0;
display: flex;
align-items: center;
> i {
cursor: pointer;
font-size: 22px;
margin-right: 12px;
color: #F4F4F5;
&:last-child {
margin-right: 0;
}
&:hover {
color: #ffffff;
}
}
}
} }

View File

@ -31,3 +31,4 @@
@import "calendar"; @import "calendar";
@import "dialog-droup-word-chain"; @import "dialog-droup-word-chain";
@import "dialog-complaint-info"; @import "dialog-complaint-info";
@import "user-detail";

View File

@ -0,0 +1,56 @@
.common-user-detail-modal {
.ivu-modal {
max-width: 90%;
&.ivu-modal-fullscreen {
max-width: none;
.ivu-modal-content {
margin-top: calc(var(--status-bar-height) + 46px);
margin-bottom: 0;
border-top-left-radius: 18px !important;
border-top-right-radius: 18px !important;
.ivu-modal-body {
.user-detail-body {
padding-bottom: var(--navigation-bar-height);
}
}
}
}
.ivu-modal-content {
overflow: hidden;
.ivu-modal-body {
padding: 0 !important;
display: flex;
flex-direction: column;
.user-detail-body {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
padding: 84px 24px;
> ul {
> li {
list-style: none;
display: flex;
justify-content: center;
max-width: 80%;
margin: 12px auto;
> span {
flex-shrink: 0;
opacity: 0.8;
padding-right: 4px;
}
}
}
}
}
}
}
}