chore: seed migration objects batch 16
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
import { NAvatar, NTag, NText, SelectRenderLabel, SelectRenderTag } from 'naive-ui';
|
||||
import { Component, h } from 'vue';
|
||||
import { BellOutlined, NotificationOutlined, SendOutlined } from '@vicons/antd';
|
||||
import { useDictStore } from '@/store/modules/dict';
|
||||
|
||||
export interface personOption {
|
||||
value: number;
|
||||
label: string;
|
||||
username: string;
|
||||
avatar: string;
|
||||
}
|
||||
|
||||
export const renderMultipleSelectTag: SelectRenderTag = ({ option, handleClose }) => {
|
||||
// @ts-ignore
|
||||
return h(
|
||||
NTag,
|
||||
{
|
||||
style: {
|
||||
padding: '0 6px 0 4px',
|
||||
},
|
||||
round: true,
|
||||
closable: true,
|
||||
onClose: (e) => {
|
||||
e.stopPropagation();
|
||||
handleClose();
|
||||
},
|
||||
},
|
||||
{
|
||||
default: () =>
|
||||
h(
|
||||
'div',
|
||||
{
|
||||
style: {
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
},
|
||||
},
|
||||
[
|
||||
option.avatar !== ''
|
||||
? h(NAvatar, {
|
||||
src: option.avatar as string,
|
||||
round: true,
|
||||
size: 22,
|
||||
style: {
|
||||
marginRight: '4px',
|
||||
},
|
||||
})
|
||||
: h(
|
||||
NAvatar,
|
||||
{
|
||||
round: true,
|
||||
size: 22,
|
||||
style: {
|
||||
marginRight: '4px',
|
||||
},
|
||||
},
|
||||
{
|
||||
default: () =>
|
||||
option.label !== ''
|
||||
? ((option?.label as string).substring(0, 1) as string)
|
||||
: ((option?.username as string).substring(0, 1) as string),
|
||||
}
|
||||
),
|
||||
option.label as string,
|
||||
]
|
||||
),
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const renderLabel: SelectRenderLabel = (option) => {
|
||||
return h(
|
||||
'div',
|
||||
{
|
||||
style: {
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
},
|
||||
},
|
||||
[
|
||||
option.avatar !== ''
|
||||
? h(NAvatar, {
|
||||
src: option.avatar as string,
|
||||
round: true,
|
||||
size: 'small',
|
||||
})
|
||||
: h(
|
||||
NAvatar,
|
||||
{
|
||||
round: true,
|
||||
size: 'small',
|
||||
},
|
||||
{
|
||||
default: () =>
|
||||
option.label !== ''
|
||||
? ((option?.label as string).substring(0, 1) as string)
|
||||
: ((option?.username as string).substring(0, 2) as string),
|
||||
}
|
||||
),
|
||||
h(
|
||||
'div',
|
||||
{
|
||||
style: {
|
||||
marginLeft: '12px',
|
||||
padding: '4px 0',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('div', null, [option.label as string]),
|
||||
h(
|
||||
NText,
|
||||
{ depth: 3, tag: 'div' },
|
||||
{
|
||||
default: () => option.username,
|
||||
}
|
||||
),
|
||||
]
|
||||
),
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
export interface MessageTab {
|
||||
/** tab的key */
|
||||
key: number;
|
||||
/** tab名称 */
|
||||
name: string;
|
||||
/** badge类型 */
|
||||
badgeProps?: import('naive-ui').BadgeProps;
|
||||
/** 消息数据 */
|
||||
list: MessageRow[];
|
||||
}
|
||||
|
||||
export interface MessageRow {
|
||||
/** 消息ID */
|
||||
id: number;
|
||||
/** 消息类型 */
|
||||
type: number;
|
||||
/** 消息标题 */
|
||||
title: string;
|
||||
/** 消息内容 */
|
||||
content: string;
|
||||
/** 发送时间 */
|
||||
createdAt: string;
|
||||
/** 是否已读 */
|
||||
isRead: boolean;
|
||||
/** 发送者头像 */
|
||||
senderAvatar: string;
|
||||
/** 标签ID */
|
||||
tag: number;
|
||||
/** 标签名称 */
|
||||
tagTitle?: string;
|
||||
/** 标签props */
|
||||
tagProps?: import('naive-ui').TagProps;
|
||||
}
|
||||
|
||||
// 获取消息的展示图标
|
||||
export function getIcon(row: MessageRow): Component {
|
||||
if (row.type === 1) {
|
||||
return NotificationOutlined;
|
||||
}
|
||||
if (row.type === 2) {
|
||||
return BellOutlined;
|
||||
}
|
||||
return SendOutlined;
|
||||
}
|
||||
|
||||
// 解析消息
|
||||
export function parseMessage(row): MessageRow {
|
||||
row = row as MessageRow;
|
||||
if (row.tag <= 0) {
|
||||
return row;
|
||||
}
|
||||
const dict = useDictStore();
|
||||
const label = dict.getLabel('noticeTagOptions', row.tag);
|
||||
row.tagTitle = label;
|
||||
row.tagProps = { type: label };
|
||||
return row;
|
||||
}
|
||||
Reference in New Issue
Block a user