Files
qhmes/jeecgboot-vue3/src/views/openapi/OpenApi.data.ts

469 lines
11 KiB
Vue
Raw Normal View History

2026-04-03 09:56:14 +08:00
import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import {JVxeTypes,JVxeColumn} from '/@/components/jeecg/JVxeTable/types'
import { getWeekMonthQuarterYear } from '/@/utils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '接口名称',
align:"center",
dataIndex: 'name'
},
{
title: '接口地址',
align:"center",
dataIndex: 'requestUrl',
width: 120,
2026-04-03 09:56:14 +08:00
},
{
title: '请求方式',
2026-04-03 09:56:14 +08:00
align:"center",
dataIndex: 'requestMethod',
width: 100,
2026-04-03 09:56:14 +08:00
},
{
title: '原始接口',
2026-04-03 09:56:14 +08:00
align:"center",
dataIndex: 'originUrl',
ellipsis: true,
2026-04-03 09:56:14 +08:00
},
{
title: 'IP 白名单',
2026-04-03 09:56:14 +08:00
align:"center",
dataIndex: 'whiteList',
ellipsis: true,
customRender: ({ text }) => {
if (!text) return '不限制';
const count = text.split(/[,\n]/).filter(item => item.trim()).length;
return count + ' 条规则';
}
2026-04-03 09:56:14 +08:00
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "接口名称",
field: "name",
component: 'JInput',
},
{
label: "接口地址",
field: "requestUrl",
2026-04-03 09:56:14 +08:00
component: 'JInput',
},
];
//表单数据
export const formSchema: FormSchema[] = [
{
label: '接口名称',
field: 'name',
component: 'Input',
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入接口名称!'},
];
},
},
{
label: '原始接口',
2026-04-03 09:56:14 +08:00
field: 'originUrl',
component: 'Input',
componentProps: {
placeholder: '当前系统的原始接口地址,如 /sys/user/list',
},
helpMessage: '当前系统中被代理的原始接口路径',
dynamicRules: () => {
return [
{ required: true, message: '请输入原始接口路径!' },
{
validator: (_, value) => {
if (value && !value.startsWith('/')) {
return Promise.reject('原始接口路径必须以 / 开头');
}
if (value && value.includes('//')) {
return Promise.reject('原始接口路径不能包含 //');
}
if (value && value.includes('..')) {
return Promise.reject('原始接口路径不能包含 ..');
}
return Promise.resolve();
},
},
];
},
2026-04-03 09:56:14 +08:00
},
{
label: '请求方式',
2026-04-03 09:56:14 +08:00
field: 'requestMethod',
component: 'JSearchSelect',
componentProps:{
dictOptions: [
{
text: 'POST',
value: 'POST',
},
{
text: 'GET',
value: 'GET',
},
{
text: 'HEAD',
value: 'HEAD',
},
{
text: 'PUT',
value: 'PUT',
},
{
text: 'PATCH',
value: 'PATCH',
},
{
text: 'DELETE',
value: 'DELETE',
},{
text: 'OPTIONS',
value: 'OPTIONS',
},{
text: 'TRACE',
value: 'TRACE',
},
]
},
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入请求方式!'},
2026-04-03 09:56:14 +08:00
];
},
},
{
label: '接口地址',
field: 'requestUrl',
component: 'Input',
dynamicDisabled:true
},
{
label: 'IP 白名单',
field: 'whiteList',
helpMessage: '支持精确IP、CIDR网段如192.168.1.0/24、通配符如10.2.3.*),每行一个或逗号分隔,为空则不限制',
component: 'InputTextArea',
slot: 'whiteListSlot',
componentProps: {
rows: 5,
placeholder: '示例:\n192.168.1.100\n10.0.0.0/8\n172.16.*.*',
},
colProps: { span: 24 },
2026-04-03 09:56:14 +08:00
},
{
label: '备注',
field: 'comment',
component: 'InputTextArea',
componentProps: {
rows: 2,
placeholder: '请输入白名单备注说明',
},
colProps: { span: 24 },
},
{
label: '接口描述',
field: 'description',
component: 'InputTextArea',
componentProps: {
rows: 3,
placeholder: '请输入接口描述',
},
colProps: { span: 24 },
2026-04-03 09:56:14 +08:00
},
{
label: '删除标识',
field: 'delFlag',
component: 'Input',
defaultValue:0,
show:false
},
{
label: '状态',
field: 'status',
component: 'Input',
defaultValue:"1",
show:false
},
// TODO 主键隐藏字段目前写死为ID
{
label: '',
field: 'id',
component: 'Input',
show: false
},
];
//子表单数据
//子表列表数据
export const openApiHeaderColumns: BasicColumn[] = [
// {
// title: 'apiId',
// align:"center",
// dataIndex: 'apiId'
// },
{
title: '请求头Key',
align:"center",
dataIndex: 'headerKey'
},
{
title: '是否必填',
align:"center",
dataIndex: 'required_dictText'
},
{
title: '默认值',
align:"center",
dataIndex: 'defaultValue'
},
{
title: '备注',
align:"center",
dataIndex: 'note'
},
];
//子表列表数据
export const openApiParamColumns: BasicColumn[] = [
// {
// title: 'apiId',
// align:"center",
// dataIndex: 'apiId'
// },
{
title: '参数Key',
align:"center",
dataIndex: 'paramKey'
},
{
title: '是否必填',
align:"center",
dataIndex: 'required_dictText'
},
{
title: '默认值',
align:"center",
dataIndex: 'defaultValue'
},
{
title: '备注',
align:"center",
dataIndex: 'note'
},
];
//子表表格配置
export const openApiHeaderJVxeColumns: JVxeColumn[] = [
// {
// title: 'apiId',
// key: 'apiId',
// type: JVxeTypes.input,
// width:"200px",
// placeholder: '请输入${title}',
// defaultValue:'',
// },
{
title: '请求头Key',
key: 'headerKey',
type: JVxeTypes.input,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '是否必填',
key: 'required',
type: JVxeTypes.checkbox,
options:[],
// dictCode:"yn",
width:"100px",
placeholder: '请输入${title}',
defaultValue:'',
customValue: ['1','0']
},
{
title: '参数类型',
key: 'paramType',
type: JVxeTypes.select,
width: '120px',
options: [
{ title: 'string', value: 'string' },
{ title: 'integer', value: 'integer' },
{ title: 'number', value: 'number' },
{ title: 'boolean', value: 'boolean' },
{ title: 'array', value: 'array' },
{ title: 'object', value: 'object' },
],
defaultValue: 'string',
},
2026-04-03 09:56:14 +08:00
{
title: '默认值',
key: 'defaultValue',
type: JVxeTypes.input,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '示例值',
key: 'example',
type: JVxeTypes.input,
width: '200px',
placeholder: '请输入${title}',
defaultValue: '',
},
2026-04-03 09:56:14 +08:00
{
title: '备注',
key: 'note',
type: JVxeTypes.input,
placeholder: '请输入${title}',
defaultValue:'',
},
]
export const openApiParamJVxeColumns: JVxeColumn[] = [
// {
// title: 'apiId',
// key: 'apiId',
// type: JVxeTypes.input,
// width:"200px",
// placeholder: '请输入${title}',
// defaultValue:'',
// },
{
title: '参数Key',
key: 'paramKey',
type: JVxeTypes.input,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '是否必填',
key: 'required',
type: JVxeTypes.checkbox,
options:[],
// dictCode:"yn",
width:"100px",
placeholder: '请输入${title}',
defaultValue:'',
customValue: ['1','0']
},
{
title: '参数类型',
key: 'paramType',
type: JVxeTypes.select,
width: '120px',
options: [
{ title: 'string', value: 'string' },
{ title: 'integer', value: 'integer' },
{ title: 'number', value: 'number' },
{ title: 'boolean', value: 'boolean' },
{ title: 'array', value: 'array' },
{ title: 'object', value: 'object' },
],
defaultValue: 'string',
},
2026-04-03 09:56:14 +08:00
{
title: '默认值',
key: 'defaultValue',
type: JVxeTypes.input,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '示例值',
key: 'example',
type: JVxeTypes.input,
width: '200px',
placeholder: '请输入${title}',
defaultValue: '',
},
2026-04-03 09:56:14 +08:00
{
title: '备注',
key: 'note',
type: JVxeTypes.input,
placeholder: '请输入${title}',
defaultValue:'',
},
]
export const responseFieldJVxeColumns: JVxeColumn[] = [
{
title: '字段名',
key: 'fieldName',
type: JVxeTypes.input,
width: '200px',
placeholder: '请输入${title}',
defaultValue: '',
},
{
title: '类型',
key: 'fieldType',
type: JVxeTypes.select,
width: '120px',
options: [
{ title: 'string', value: 'string' },
{ title: 'integer', value: 'integer' },
{ title: 'number', value: 'number' },
{ title: 'boolean', value: 'boolean' },
{ title: 'array', value: 'array' },
{ title: 'object', value: 'object' },
],
defaultValue: 'string',
},
{
title: '说明',
key: 'fieldDesc',
type: JVxeTypes.input,
placeholder: '请输入${title}',
defaultValue: '',
},
];
2026-04-03 09:56:14 +08:00
// 高级查询数据
export const superQuerySchema = {
name: {title: '接口名称',order: 0,view: 'text', type: 'string',},
requestMethod: {title: '请求方式',order: 1,view: 'list', type: 'string',dictCode: '',},
2026-04-03 09:56:14 +08:00
requestUrl: {title: '接口地址',order: 2,view: 'text', type: 'string',},
whiteList: {title: 'IP 白名单',order: 3,view: 'text', type: 'string',},
2026-04-03 09:56:14 +08:00
status: {title: '状态',order: 5,view: 'number', type: 'number',},
createBy: {title: '创建人',order: 6,view: 'text', type: 'string',},
createTime: {title: '创建时间',order: 7,view: 'datetime', type: 'string',},
//子表高级查询
openApiHeader: {
title: '请求头表',
view: 'table',
fields: {
// apiId: {title: 'apiId',order: 0,view: 'text', type: 'string',},
headerKey: {title: '请求头Key',order: 1,view: 'text', type: 'string',},
required: {title: '是否必填',order: 2,view: 'number', type: 'number',dictCode: 'yn',},
defaultValue: {title: '默认值',order: 3,view: 'text', type: 'string',},
note: {title: '备注',order: 4,view: 'text', type: 'string',},
}
},
openApiParam: {
title: '请求参数部分',
view: 'table',
fields: {
// apiId: {title: 'apiId',order: 0,view: 'text', type: 'string',},
paramKey: {title: '参数Key',order: 1,view: 'text', type: 'string',},
required: {title: '是否必填',order: 2,view: 'number', type: 'number',dictCode: 'yn',},
defaultValue: {title: '默认值',order: 3,view: 'text', type: 'string',},
note: {title: '备注',order: 4,view: 'text', type: 'string',},
}
},
};
/**
* 流程表单调用这个方法获取formSchema
* @param param
*/
export function getBpmFormSchema(_formData): FormSchema[]{
// 默认和原始表单保持一致 如果流程中配置了权限数据这里需要单独处理formSchema
return formSchema;
}