110 lines
4.4 KiB
JavaScript
110 lines
4.4 KiB
JavaScript
export default OakComponent({
|
||
isList: false,
|
||
formData({ data, features }) {
|
||
const { sessionId } = this.props;
|
||
if (sessionId) {
|
||
this.getSession(sessionId);
|
||
}
|
||
return {};
|
||
},
|
||
lifetimes: {
|
||
ready() { },
|
||
},
|
||
listeners: {
|
||
sessionId(prev, next) {
|
||
if (prev.sessionId !== next.sessionId) {
|
||
this.getSession(next.sessionId);
|
||
}
|
||
},
|
||
},
|
||
properties: {
|
||
sessionId: '',
|
||
isEntity: false,
|
||
entityDisplay: (data) => [], // user端,指示如何显示entity对象名称
|
||
entityProjection: null, // user端,指示需要取哪些entity的属性来显示entityDisplay
|
||
},
|
||
methods: {
|
||
getSession(sessionId) {
|
||
const { entityProjection } = this.props;
|
||
const [session] = this.features.cache.get('session', {
|
||
data: {
|
||
id: 1,
|
||
user: {
|
||
id: 1,
|
||
name: 1,
|
||
nickname: 1,
|
||
mobile$user: {
|
||
$entity: 'mobile',
|
||
data: {
|
||
id: 1,
|
||
mobile: 1,
|
||
userId: 1,
|
||
},
|
||
},
|
||
extraFile$entity: {
|
||
$entity: 'extraFile',
|
||
data: {
|
||
id: 1,
|
||
tag1: 1,
|
||
origin: 1,
|
||
bucket: 1,
|
||
objectId: 1,
|
||
filename: 1,
|
||
extra1: 1,
|
||
extension: 1,
|
||
type: 1,
|
||
entity: 1,
|
||
},
|
||
filter: {
|
||
tag1: {
|
||
$in: ['avatar'],
|
||
},
|
||
},
|
||
},
|
||
},
|
||
...entityProjection,
|
||
},
|
||
filter: {
|
||
id: sessionId
|
||
}
|
||
});
|
||
this.setState({ session });
|
||
},
|
||
getAvatarUrl() {
|
||
const { userUrl, entity } = this.state;
|
||
const { isEntity } = this.props;
|
||
const defaultUrl = 'data:image/png;base64,UklGRoICAABXRUJQVlA4IHYCAADwKACdASosASwBPrVarU8nJiUiJJjIEOAWiWlu4XShG/NX+q91/WYL37Uns/lNhNG6y8oBCkjJGSMkZIyRkjJGSMkZIyRkjJGSMkZIyRkjJGR8IMX6z+YtjIoxEY3KVOOQSyXEuJcR/ZAAHyQcUpZRWfL4lxLiXBnkSU0B4NcCHWSK4CBdk6WS4PC/jULN2pAeRlwRqF2xCZ400cTnW2ogZi8OtcthRiMouvr2dYEgJARhbEb+09k94h/a5mFkC7J2To60i1IWmYHR5OLiXEuJcSAK9Xk4C8ve/Uq7iBoiHvSAkBH4KrcZKm3UErOOpxquA3X2PWjC2wI/Dz57QAZ5J2Tsl6p+Eiy4BhYvDwpoChtMjLgEdPjq37JfS+Rm/7niuhE0jzkyk7jDjACsogklFiMtpkZfbolR4QRN7J2TsnZOydk7J2TsnZOydk7J0YAA/v67qQMAOmxdZAbD1n8UzeBoApiFopfRVxPpEh3G4wAp0EwQD6kJbi6xm8OOhiuS4WeYZ8hxC45E4PZfT56WVnzaLLWW1i9XLyz05YJhxQ6iT5aOk5J1rNnENlAzf+i/0WpEd/edFMYu+q2U4pBjLEoLPE0DGVeHtS7zt4vTVCiXBfibW0mgqhbRQhDrr5ctACqSBsx+8f/HDobGN621bjYch19yGQegV6eUMGNu9bVQi+vQdZvTK4d7MtISka7dqmVYfuI3Z6nUBA/Nzg0ApEhQ+CAmDvSRrKCjxbJBYdc+MsQpTv0DdUkoDVa18rZrKyIeUT4pYRFJcnsT+OoAJGGIdRGn6A4NtB3woJnI/x3d+Rgibkn5GcX4oAfaVqkvAAAAAAA=';
|
||
if (isEntity) {
|
||
return userUrl || defaultUrl;
|
||
}
|
||
else {
|
||
return defaultUrl;
|
||
}
|
||
},
|
||
getName() {
|
||
const { session, entity } = this.state;
|
||
const { isEntity, entityDisplay } = this.props;
|
||
if (isEntity) {
|
||
const userName = session?.user?.name;
|
||
const userNickname = session?.user?.name || session?.user?.nickname;
|
||
const userMobile = session?.user?.mobile$user &&
|
||
session?.user?.mobile$user[0]?.mobile;
|
||
if (userName) {
|
||
return userName;
|
||
}
|
||
if (userMobile) {
|
||
return '用户' + userMobile;
|
||
}
|
||
return userNickname;
|
||
}
|
||
else {
|
||
if (entityDisplay && session) {
|
||
const sessions = entityDisplay([session]);
|
||
return sessions[0]?.name;
|
||
}
|
||
return '未知';
|
||
}
|
||
},
|
||
},
|
||
});
|