You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
3.7 KiB
181 lines
3.7 KiB
import { h } from 'vue' |
|
import type { BasicColumn, FormSchema } from '@/components/Table' |
|
import { useRender } from '@/components/Table' |
|
import { DICT_TYPE, getDictOptions } from '@/utils/dict' |
|
import { getListSimpleUsers } from '@/api/system/user/index' |
|
import { ScrollContainer } from '@/components/Container' |
|
|
|
export const columns: BasicColumn[] = [ |
|
{ |
|
title: '模板编码', |
|
dataIndex: 'code', |
|
width: 100, |
|
}, |
|
{ |
|
title: '模板名称', |
|
dataIndex: 'name', |
|
width: 180, |
|
}, |
|
{ |
|
title: '类型', |
|
dataIndex: 'type', |
|
width: 180, |
|
customRender: ({ text }) => { |
|
return useRender.renderDict(text, DICT_TYPE.SYSTEM_NOTIFY_TEMPLATE_TYPE) |
|
}, |
|
}, |
|
{ |
|
title: '发送人名称', |
|
dataIndex: 'nickname', |
|
width: 100, |
|
}, |
|
{ |
|
title: '模板内容', |
|
dataIndex: 'content', |
|
width: 300, |
|
}, |
|
{ |
|
title: '开启状态', |
|
dataIndex: 'status', |
|
width: 180, |
|
customRender: ({ text }) => { |
|
return useRender.renderDict(text, DICT_TYPE.COMMON_STATUS) |
|
}, |
|
}, |
|
{ |
|
title: '备注', |
|
dataIndex: 'remark', |
|
width: 180, |
|
}, |
|
{ |
|
title: '创建时间', |
|
dataIndex: 'createTime', |
|
width: 180, |
|
customRender: ({ text }) => { |
|
return useRender.renderDate(text) |
|
}, |
|
}, |
|
] |
|
|
|
export const searchFormSchema: FormSchema[] = [ |
|
{ |
|
label: '模板名称', |
|
field: 'name', |
|
component: 'Input', |
|
colProps: { span: 8 }, |
|
}, |
|
{ |
|
label: '模版编码', |
|
field: 'code', |
|
component: 'Input', |
|
colProps: { span: 8 }, |
|
}, |
|
{ |
|
label: '状态', |
|
field: 'status', |
|
component: 'Select', |
|
componentProps: { |
|
options: getDictOptions(DICT_TYPE.COMMON_STATUS), |
|
}, |
|
colProps: { span: 8 }, |
|
}, |
|
{ |
|
label: '创建时间', |
|
field: 'createTime', |
|
component: 'RangePicker', |
|
colProps: { span: 8 }, |
|
}, |
|
] |
|
|
|
export const formSchema: FormSchema[] = [ |
|
{ |
|
label: '编号', |
|
field: 'id', |
|
show: false, |
|
component: 'Input', |
|
}, |
|
{ |
|
label: '模版编码', |
|
field: 'code', |
|
required: true, |
|
component: 'Input', |
|
}, |
|
{ |
|
label: '模板名称', |
|
field: 'name', |
|
required: true, |
|
component: 'Input', |
|
}, |
|
{ |
|
label: '发件人名称', |
|
field: 'nickname', |
|
required: true, |
|
component: 'Input', |
|
}, |
|
{ |
|
label: '模板内容', |
|
field: 'content', |
|
required: true, |
|
component: 'InputTextArea', |
|
}, |
|
{ |
|
label: '类型', |
|
field: 'type', |
|
component: 'Select', |
|
componentProps: { |
|
options: getDictOptions(DICT_TYPE.SYSTEM_NOTIFY_TEMPLATE_TYPE), |
|
}, |
|
}, |
|
{ |
|
label: '开启状态', |
|
field: 'status', |
|
required: true, |
|
component: 'RadioGroup', |
|
componentProps: { |
|
options: getDictOptions(DICT_TYPE.COMMON_STATUS), |
|
}, |
|
}, |
|
{ |
|
label: '备注', |
|
field: 'remark', |
|
component: 'InputTextArea', |
|
}, |
|
] |
|
|
|
// 发送站内信 |
|
// 这里加上前缀 防止和表单其他字段重名 |
|
const keyPrefix = 'key$-' |
|
export const baseSendSchemas: FormSchema[] = [ |
|
{ |
|
field: 'content', |
|
component: 'Editor', |
|
label: '模板内容 ', |
|
required: false, |
|
defaultValue: '', |
|
render({ model }) { |
|
let content: string = model.content |
|
Object.keys(model).forEach((key) => { |
|
if (!key.startsWith(keyPrefix)) |
|
return |
|
|
|
const realKey = key.split(keyPrefix)[1] |
|
content = content.replace(`{${realKey}}`, model[key]) |
|
}) |
|
return h(ScrollContainer, { |
|
innerHTML: content, |
|
style: { border: '1px solid #e8e8e8', borderRadius: '4px', padding: '10px' }, |
|
}) |
|
}, |
|
}, |
|
{ |
|
field: 'userId', |
|
component: 'ApiSelect', |
|
label: '接收人 ', |
|
required: true, |
|
componentProps: { |
|
api: getListSimpleUsers, |
|
labelField: 'nickname', |
|
valueField: 'id', |
|
}, |
|
}, |
|
]
|
|
|