Files
JeecgBoot/jeecgboot-vue3/src/views/system/notice/notice.data.ts
2025-07-30 18:25:58 +08:00

409 lines
9.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { BasicColumn, FormSchema } from '/@/components/Table';
import { render } from '/@/utils/common/renderUtils';
import { h } from 'vue';
import { Tinymce } from '@/components/Tinymce';
export const columns: BasicColumn[] = [
{
title: '标题',
width: 150,
dataIndex: 'titile',
},
{
title: '消息类型',
dataIndex: 'msgCategory',
width: 100,
customRender: ({ text }) => {
return render.renderDict(text, 'msg_category');
},
},
{
title: '发布人',
width: 100,
dataIndex: 'sender',
},
{
title: '优先级',
dataIndex: 'priority',
width: 70,
customRender: ({ text }) => {
const color = text == 'L' ? 'blue' : text == 'M' ? 'yellow' : 'red';
return render.renderTag(render.renderDict(text, 'priority'), color);
},
},
{
title: '通告对象',
dataIndex: 'msgType',
width: 100,
customRender: ({ text }) => {
return render.renderDict(text, 'msg_type');
},
},
{
title: '发布状态',
dataIndex: 'sendStatus',
width: 70,
customRender: ({ text }) => {
const color = text == '0' ? 'red' : text == '1' ? 'green' : 'gray';
return render.renderTag(render.renderDict(text, 'send_status'), color);
},
},
{
title: '发布时间',
width: 100,
dataIndex: 'sendTime',
},
{
title: '撤销时间',
width: 100,
dataIndex: 'cancelTime',
},
];
export const searchFormSchema: FormSchema[] = [
{
field: 'titile',
label: '标题',
component: 'JInput',
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{
field: 'id',
label: 'id',
component: 'Input',
show: false,
},
{
field: 'msgCategory',
label: '消息类型',
required: true,
component: 'JDictSelectTag',
defaultValue: '1',
componentProps: {
type: 'radio',
dictCode: 'msg_category',
placeholder: '请选择类型',
},
},
{
field: 'izTop',
label: '是否置顶',
defaultValue: '0',
component: 'JSwitch',
componentProps: {
//取值 options
options: ['1', '0'],
//文本option
labelOptions: ['是', '否'],
placeholder: '是否置顶',
checkedChildren: '是',
unCheckedChildren: '否',
},
},
{
field: 'titile',
label: '通告标题',
component: 'Input',
required: true,
componentProps: {
placeholder: '请输入标题',
},
// update-begin--author:liaozhiyang---date:20240701---for【TV360X-1632】标题过长保存报错长度校验
dynamicRules() {
return [
{
validator: (_, value) => {
return new Promise<void>((resolve, reject) => {
if (value.length > 100) {
reject('最长100个字符');
}
resolve();
});
},
},
];
},
// update-end--author:liaozhiyang---date:20240701---for【TV360X-1632】标题过长保存报错长度校验
},
{
field: 'msgAbstract',
label: '通告摘要',
component: 'InputTextArea',
componentProps: {
allowClear: true,
autoSize: {
minRows: 2,
maxRows: 5,
},
},
required: true,
},
// {
// field: 'endTime',
// label: '截至日期',
// component: 'DatePicker',
// componentProps: {
// showTime: true,
// valueFormat: 'YYYY-MM-DD HH:mm:ss',
// placeholder: '请选择截至日期',
// },
// dynamicRules: ({ model }) => rules.endTime(model.startTime, true),
// },
{
field: 'msgType',
label: '接收用户',
defaultValue: 'ALL',
component: 'JDictSelectTag',
required: true,
componentProps: {
type: 'radio',
dictCode: 'msg_type',
placeholder: '请选择发布范围',
},
},
{
field: 'userIds',
label: '指定用户',
component: 'JSelectUserByDepartment',
required: true,
componentProps: {
rowKey: 'id',
// update-begin--author:liaozhiyang---date:20240701---for【TV360X-1627】通知公告用户选择组件没翻译
labelKey: 'realname',
// update-end--author:liaozhiyang---date:20240701---for【TV360X-1627】通知公告用户选择组件没翻译
},
ifShow: ({ values }) => values.msgType == 'USER',
},
{
field: 'msgClassify',
label: '公告分类',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'notice_type',
placeholder: '请选择公告分类',
},
},
{
field: 'priority',
label: '优先级别',
defaultValue: 'H',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'priority',
type: 'radio',
placeholder: '请选择优先级',
},
},
{
field: 'izApproval',
label: '是否审批',
component: 'RadioGroup',
defaultValue: '0',
componentProps: {
options: [
{
label: '是',
value: '1',
},
{
label: '否',
value: '0',
},
],
},
},
{
field: 'msgTemplate',
label: '公告模版',
component: 'Input',
slot: 'msgTemplate',
},
{
field: 'files',
label: '通告附件',
component: 'JUpload',
componentProps: {
//是否显示选择按钮
text: '文件上传',
//最大上传数
maxCount: 20,
//是否显示下载按钮
download: true,
},
},
{
field: 'msgContent',
label: '通告内容',
component: 'Input',
colProps: { span: 24 },
render: render.renderTinymce,
},
];
/**
* 流程表单调用这个方法获取formSchema
* @param param
*/
export function getBpmFormSchema(_formData): FormSchema[] {
// 默认和原始表单保持一致 如果流程中配置了权限数据这里需要单独处理formSchema
return [
{
field: 'id',
label: 'id',
component: 'Input',
show: false,
},
{
field: 'msgCategory',
label: '消息类型',
required: true,
component: 'JDictSelectTag',
defaultValue: '1',
componentProps: {
type: 'radio',
dictCode: 'msg_category',
placeholder: '请选择类型',
},
},
{
field: 'izTop',
label: '是否置顶',
defaultValue: '0',
component: 'JSwitch',
componentProps: {
//取值 options
options: ['1', '0'],
//文本option
labelOptions: ['是', '否'],
placeholder: '是否置顶',
checkedChildren: '是',
unCheckedChildren: '否',
},
},
{
field: 'titile',
label: '通告标题',
component: 'Input',
required: true,
componentProps: {
placeholder: '请输入标题',
},
// update-begin--author:liaozhiyang---date:20240701---for【TV360X-1632】标题过长保存报错长度校验
dynamicRules() {
return [
{
validator: (_, value) => {
return new Promise<void>((resolve, reject) => {
if (value.length > 100) {
reject('最长100个字符');
}
resolve();
});
},
},
];
},
// update-end--author:liaozhiyang---date:20240701---for【TV360X-1632】标题过长保存报错长度校验
},
{
field: 'msgAbstract',
label: '通告摘要',
component: 'InputTextArea',
required: true,
},
{
field: 'msgType',
label: '接收用户',
defaultValue: 'ALL',
component: 'JDictSelectTag',
required: true,
componentProps: {
type: 'radio',
dictCode: 'msg_type',
placeholder: '请选择发布范围',
},
},
{
field: 'userIds',
label: '指定用户',
component: 'JSelectUserByDepartment',
required: true,
componentProps: {
rowKey: 'id',
// update-begin--author:liaozhiyang---date:20240701---for【TV360X-1627】通知公告用户选择组件没翻译
labelKey: 'realname',
// update-end--author:liaozhiyang---date:20240701---for【TV360X-1627】通知公告用户选择组件没翻译
},
ifShow: ({ values }) => values.msgType == 'USER',
},
{
field: 'msgClassify',
label: '公告分类',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'notice_type',
placeholder: '请选择公告分类',
},
},
{
field: 'priority',
label: '优先级别',
defaultValue: 'H',
component: 'JDictSelectTag',
componentProps: {
dictCode: 'priority',
type: 'radio',
placeholder: '请选择优先级',
},
},
{
field: 'msgTemplate',
label: '公告模版',
component: 'Input',
slot: 'msgTemplate',
},
{
field: 'files',
label: '通告附件',
component: 'JUpload',
componentProps: {
//是否显示选择按钮
text: '文件上传',
//最大上传数
maxCount: 2,
//是否显示下载按钮
download: true,
},
},
{
field: 'msgContent',
label: '通告内容',
component: 'Input',
colProps: { span: 24 },
ifShow: ({}) => _formData.disabled == false,
render: ({ model, field }) => {
return h(Tinymce, {
showImageUpload: false,
disabled: _formData.disabled !== false,
height: 300,
value: model[field],
onChange: (value: string) => {
model[field] = value;
},
});
},
},
{
field: 'msgContent',
label: '通告内容',
component: 'Input',
colProps: { span: 24 },
ifShow: ({}) => _formData.disabled !== false,
slot: 'msgContent',
},
];
}