import type { SmartColumn, SmartSearchFormSchema } from '@/components/SmartTable';
import type { FormSchema } from '@/components/Form';
import { getMessageTypeEnum, getMessagePriorityEnum } from '../../SmartMessageConstants';
export const getMessageSendStatusEnum = (t: Function) => {
return [
{
label: t('smart.message.systemMessage.form.sendStatus.NO_SEND'),
value: 'NO_SEND',
},
{
label: t('smart.message.systemMessage.form.sendStatus.SEND'),
value: 'SEND',
},
{
label: t('smart.message.systemMessage.form.sendStatus.CANCEL'),
value: 'CANCEL',
},
];
};
export const getReceiveUserTypeEnum = (t: Function) => {
return [
{
label: t('smart.message.systemMessage.form.receiveUserType.ALL_USER'),
value: 'ALL_USER',
},
{
label: t('smart.message.systemMessage.form.receiveUserType.SPECIFY_USER'),
value: 'SPECIFY_USER',
},
{
label: t('smart.message.systemMessage.form.receiveUserType.BUSINESS_USER'),
value: 'BUSINESS_USER',
},
];
};
/**
* 表格列表
*/
export const getTableColumns = (t: Function): SmartColumn[] => {
const messageTypeEnum = getMessageTypeEnum(t);
const sendStatusEnum = getMessageSendStatusEnum(t);
const messagePriorityEnum = getMessagePriorityEnum(t);
const receiveUserTypeEnum = getReceiveUserTypeEnum(t);
return [
{
type: 'checkbox',
width: 60,
align: 'center',
fixed: 'left',
},
{
field: 'title',
title: '{smart.message.systemMessage.title.title}',
width: 200,
fixed: 'left',
},
{
field: 'abstractContent',
title: '{smart.message.systemMessage.title.abstract}',
width: 120,
},
{
field: 'messageType',
title: '{smart.message.systemMessage.title.messageType}',
width: 120,
dynamicClass: ({ row }) => {
const messageType = row.messageType;
if (!messageType) {
return '';
}
return messageType === 'ANNOUNCEMENT'
? 'text-color--success-bold'
: 'text-color--link-bold';
},
formatter: ({ row }) => {
const messageType = row.messageType;
if (!messageType) {
return '';
}
const enumList = messageTypeEnum.filter((item) => item.value === row.messageType);
if (enumList.length === 0) {
return '';
}
const data = enumList[0];
return data.label;
},
},
{
field: 'sendStatus',
title: '{smart.message.systemMessage.title.sendStatus}',
width: 120,
slots: {
default: ({ row }) => {
if (!row.sendStatus) {
return '';
}
const enumList = sendStatusEnum.filter((item) => item.value === row.sendStatus);
if (enumList.length === 0) {
return '';
}
const data = enumList[0];
let color = 'pink';
if (data.value === 'SEND') {
color = 'green';
} else if (data.value === 'CANCEL') {
color = 'grey';
}
return {data.label};
},
},
},
{
field: 'priority',
title: '{smart.message.systemMessage.title.priority}',
width: 120,
slots: {
default: ({ row }) => {
if (!row.priority) {
return '';
}
const enumList = messagePriorityEnum.filter((item) => item.value === row.priority);
if (enumList.length === 0) {
return '';
}
const data = enumList[0];
let color = 'pink';
if (data.value === 'MIDDLE') {
color = 'orange';
} else if (data.value === 'LOW') {
color = 'green';
}
return {data.label};
},
},
},
{
field: 'receiveUserType',
title: '{smart.message.systemMessage.title.receiveUserType}',
width: 120,
slots: {
default: ({ row }) => {
if (!row.receiveUserType) {
return '';
}
const enumList = receiveUserTypeEnum.filter((item) => item.value === row.receiveUserType);
if (enumList.length === 0) {
return '';
}
const data = enumList[0];
let color = '#2db7f5';
if (data.value === 'SPECIFY_USER') {
color = '#87d068';
} else if (data.value === 'BUSINESS_USER') {
color = '#108ee9';
}
return {data.label};
},
},
},
{
field: 'sendTime',
title: '{smart.message.systemMessage.title.sendTime}',
width: 165,
sortable: true,
},
{
field: 'cancelTime',
title: '{smart.message.systemMessage.title.cancelTime}',
width: 165,
sortable: true,
},
{
field: 'useYn',
component: 'booleanTag',
title: '{common.table.useYn}',
width: 120,
},
{
field: 'createTime',
title: '{common.table.createTime}',
width: 170,
sortable: true,
},
{
field: 'createBy',
title: '{common.table.createUser}',
width: 120,
},
{
field: 'updateTime',
title: '{common.table.updateTime}',
width: 170,
sortable: true,
},
{
field: 'updateBy',
title: '{common.table.updateUser}',
width: 120,
},
{
title: '{common.table.operation}',
field: 'operation',
width: 120,
fixed: 'right',
slots: {
default: 'table-operation',
},
},
];
};
/**
* 添加修改表单
*/
export const getFormSchemas = (t: Function): FormSchema[] => {
return [
{
field: 'id',
show: false,
label: t('smart.message.systemMessage.title.id'),
component: 'Input',
componentProps: {},
},
{
field: 'messageType',
label: t('smart.message.systemMessage.title.messageType'),
component: 'RadioGroup',
componentProps: {
options: getMessageTypeEnum(t),
},
defaultValue: 'ANNOUNCEMENT',
},
{
field: 'title',
label: t('smart.message.systemMessage.title.title'),
component: 'Input',
componentProps: {},
required: true,
},
{
field: 'abstractContent',
label: t('smart.message.systemMessage.title.abstract'),
component: 'InputTextArea',
componentProps: {},
required: true,
},
{
field: 'priority',
label: t('smart.message.systemMessage.title.priority'),
component: 'RadioGroup',
componentProps: {
options: getMessagePriorityEnum(t),
},
defaultValue: 'H',
},
{
field: 'receiveUserType',
label: t('smart.message.systemMessage.title.receiveUserType'),
component: 'RadioGroup',
componentProps: {
options: getReceiveUserTypeEnum(t),
},
defaultValue: 'ALL_USER',
},
{
field: 'userIds',
label: t('smart.message.systemMessage.title.userIds'),
component: 'SmartUserTableSelect',
show: ({ model }) => {
return model.receiveUserType !== 'ALL_USER';
},
required: ({ model }) => {
return model.receiveUserType !== 'ALL_USER';
},
},
{
field: 'useYn',
label: t('common.table.useYn'),
component: 'Switch',
defaultValue: true,
componentProps: {},
},
{
field: 'content',
label: t('smart.message.systemMessage.title.content'),
slot: 'addEdit-content',
},
];
};
export const getSearchFormSchemas = (t: Function): SmartSearchFormSchema[] => {
return [
{
field: 'title',
label: t('smart.message.systemMessage.title.title'),
component: 'Input',
searchSymbol: 'like',
},
{
field: 'messageType',
label: t('smart.message.systemMessage.title.messageType'),
component: 'Select',
searchSymbol: '=',
componentProps: {
options: getMessageTypeEnum(t),
style: {
width: '140px',
},
},
},
{
field: 'sendStatus',
label: t('smart.message.systemMessage.title.sendStatus'),
component: 'Select',
searchSymbol: '=',
componentProps: {
options: getMessageSendStatusEnum(t),
style: {
width: '140px',
},
},
},
{
field: 'priority',
label: t('smart.message.systemMessage.title.priority'),
component: 'Select',
searchSymbol: '=',
componentProps: {
options: getMessagePriorityEnum(t),
style: {
width: '125px',
},
},
},
{
field: 'receiveUserType',
label: t('smart.message.systemMessage.title.receiveUserType'),
component: 'Select',
searchSymbol: '=',
componentProps: {
options: getReceiveUserTypeEnum(t),
style: {
width: '140px',
},
},
},
];
};
export enum Auth {
delete = 'smart:message:systemMessage:delete',
update = 'smart:message:systemMessage:update',
save = 'smart:message:systemMessage:save',
publish = 'smart:message:systemMessage:publish',
cancel = 'smart:message:systemMessage:cancel',
}