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