mirror of
https://gitee.com/jeecg/JeecgBoot.git
synced 2025-12-30 01:12:25 +00:00
409 lines
9.7 KiB
Vue
409 lines
9.7 KiB
Vue
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',
|
||
},
|
||
];
|
||
}
|