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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

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',
},
},
]