This commit is contained in:
zjf committed 2025-03-20 12:08:14 +08:00
1 parent a395c82052
commit a98952e534
7 files changed
+461 -2

No files matched your search

+1 -1
View File
@@ -139,7 +139,7 @@ onMounted(() => {
store.step1.remark = data.remark
store.step1.groupId = data.groupId
store.step1.businessKey = data.businessKey
// store.step1.formDetail = data.formDetail
store.setStep2(JSON.parse(data.formItems))
step3NodeConfig = JSON.parse(data.process)
})
+354
View File
@@ -0,0 +1,354 @@
import type { FormRule, DragRule } from './types';
import other, {generateUUID} from "/@/utils/other";
// Create a map of rule creators
const ruleCreators: Record<string, () => DragRule> = {
selectUser: () => ({
menu: 'biz',
icon: 'icon-table-form2',
label: '人员',
name: 'SelectUser',
mask: true,
rule() {
return {
type: 'OrgSelector',
field: 'SelectUser' + other.getNonDuplicateID(),
title: '人员',
$required: true,
props: {
type: 'user',
},
};
},
props() {
return [
{
type: 'switch',
title: '多选',
field: 'multiple',
value: true,
},
{
type: 'switch',
title: '禁用',
field: 'disabled',
value: false,
},
{
type: 'switch',
title: '选择自己',
field: 'selectSelf',
value: true,
},
];
},
}),
selectDept: () => ({
menu: 'biz',
icon: 'icon-group',
label: '部门',
name: 'selectDept',
mask: true,
rule() {
return {
type: 'OrgSelector',
field: 'selectDept' + other.getNonDuplicateID(),
title: '部门',
$required: true,
props: {
type: 'dept',
},
};
},
props() {
return [
{
type: 'switch',
title: '多选',
field: 'multiple',
value: true,
},
{
type: 'switch',
title: '禁用',
field: 'disabled',
value: false,
}
];
},
}),
uploadFile: () => ({
menu: 'biz',
icon: 'icon-folder',
label: '上传',
name: 'UploadFile'+ other.getNonDuplicateID(),
mask: true,
rule() {
return {
type: 'UploadFile',
field: 'UploadFile',
title: '文件上传',
$required: true,
props: {},
};
},
props() {
return [
{
type: 'input',
title: '上传地址',
field: 'uploadFileUrl',
value: '/admin/sys-file/upload',
},
{
type: 'number',
title: '数量限制',
field: 'limit',
value: 5,
props: {
min: 1,
max: 100,
},
},
{
type: 'number',
title: '大小限制(MB)',
field: 'fileSize',
value: 5,
props: {
min: 1,
max: 500,
},
},
{
type: 'select',
title: '上传类型',
field: 'type',
value: 'default',
options: [
{ label: '默认', value: 'default' },
{ label: '简单', value: 'simple' },
],
},
{
type: 'input',
title: '上传目录',
field: 'dir',
value: '',
},
{
type: 'switch',
title: '自动上传',
field: 'autoUpload',
value: true,
},
{
type: 'switch',
title: '显示提示',
field: 'isShowTip',
value: true,
},
{
type: 'switch',
title: '禁用',
field: 'disabled',
value: false,
},
{
type: 'select',
title: '文件类型',
field: 'fileType',
value: ['png', 'jpg', 'jpeg', 'doc', 'xls', 'ppt', 'txt', 'pdf', 'docx', 'xlsx', 'pptx'],
props: {
multiple: true,
},
options: [
{ label: 'PNG', value: 'png' },
{ label: 'JPG', value: 'jpg' },
{ label: 'JPEG', value: 'jpeg' },
{ label: 'DOC', value: 'doc' },
{ label: 'DOCX', value: 'docx' },
{ label: 'XLS', value: 'xls' },
{ label: 'XLSX', value: 'xlsx' },
{ label: 'PPT', value: 'ppt' },
{ label: 'PPTX', value: 'pptx' },
{ label: 'PDF', value: 'pdf' },
{ label: 'TXT', value: 'txt' },
],
},
];
},
}),
chinaArea: () => ({
menu: 'biz',
icon: 'icon-subform',
label: '地区选择',
name: 'ChinaArea',
mask: true,
rule() {
return {
type: 'ChinaArea',
field: 'ChinaArea' + other.getNonDuplicateID(),
title: '地区选择',
$required: true,
props: {},
};
},
props() {
return [
{
type: 'number',
title: '层级',
field: 'type',
value: 4,
props: {
min: 1,
max: 4,
},
},
{
type: 'switch',
title: '禁用',
field: 'disabled',
value: false,
},
{
type: 'switch',
title: '子级必选',
field: 'plus',
value: false,
},
{
type: 'switch',
title: '懒加载',
field: 'lazy',
value: false,
},
];
},
}),
sign: () => ({
menu: 'biz',
icon: 'icon-edit',
label: '签名',
name: 'Sign',
mask: true,
rule() {
return {
type: 'Sign',
field: 'Sign'+ other.getNonDuplicateID(),
title: '签名',
$required: true,
props: {},
};
},
props() {
return [
{
type: 'number',
title: '宽度',
field: 'width',
value: 300,
props: {
min: 100,
max: 1000,
},
},
{
type: 'number',
title: '高度',
field: 'height',
value: 150,
props: {
min: 50,
max: 500,
},
},
{
type: 'number',
title: '线宽',
field: 'lineWidth',
value: 4,
props: {
min: 1,
max: 20,
},
},
{
type: 'colorPicker',
title: '线条颜色',
field: 'lineColor',
value: '#000000',
},
{
type: 'colorPicker',
title: '背景颜色',
field: 'bgColor',
value: '',
},
{
type: 'switch',
title: '裁剪空白',
field: 'isCrop',
value: false,
},
{
type: 'switch',
title: '清除背景',
field: 'isClearBgColor',
value: true,
},
];
},
}),
dictSelect: () => ({
menu: 'biz',
icon: 'icon-select',
label: '字典选择',
name: 'DictSelect' + other.getNonDuplicateID(),
mask: true,
rule() {
return {
type: 'DictSelect',
field: 'DictSelect',
title: '字典',
$required: true,
props: {},
};
},
props() {
return [
{
type: 'input',
title: '字典类型',
field: 'dictType',
value: '',
props: {
placeholder: '请输入字典类型',
},
},
{
type: 'switch',
title: '多选',
field: 'multiple',
value: false,
},
{
type: 'switch',
title: '可清除',
field: 'clearable',
value: true,
},
{
type: 'switch',
title: '禁用',
field: 'disabled',
value: false,
},
];
},
}),
};
// Export all rules as an array
export const rules: FormRule[] = Object.values(ruleCreators).map((creator) => creator());
+3
View File
@@ -19,6 +19,9 @@
<el-form-item :label="$t('flow.businessKey')" prop="businessKey">
<el-input v-model="form.businessKey" />
</el-form-item>
<!-- <el-form-item :label="$t('flow.formDetail')" prop="formDetail">-->
<!-- <el-input v-model="form.formDetail" :placeholder="$t('flow.formDetailTips')" />-->
<!-- </el-form-item>-->
<el-form-item :label="$t('flow.remark')" prop="remark">
<el-input v-model="form.remark" />
</el-form-item>