添加前端代码生成器.

This commit is contained in:
lijiahang
2023-08-10 14:11:06 +08:00
parent 0f739f01e9
commit 4d32bbc10f
12 changed files with 277 additions and 50 deletions

View File

@@ -57,5 +57,3 @@ Authorization: {{token}}
${httpComment}

View File

@@ -1 +1,126 @@
api
import axios from 'axios';
import qs from 'query-string';
import { DataGrid, Pagination } from '@/types/global';
/**
* ${table.comment}创建请求
*/
export interface ${vue.featureFirstUpper}CreateRequest {
#foreach($field in ${table.fields})
#if("$!field.propertyName" != "id")
#if("$field.propertyType" == "String" || "$field.propertyType" == "Date")
${field.propertyName}?: string;
#elseif("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
${field.propertyName}?: number;
#elseif("$field.propertyType" == "Boolean")
${field.propertyName}?: boolean;
#else
${field.propertyName}?: any;
#end
#end
#end
}
/**
* ${table.comment}更新请求
*/
export interface ${vue.featureFirstUpper}UpdateRequest extends ${vue.featureFirstUpper}CreateRequest {
id: number;
}
/**
* ${table.comment}查询请求
*/
export interface ${vue.featureFirstUpper}QueryRequest extends Pagination {
#foreach($field in ${table.fields})
#if("$field.propertyType" == "String" || "$field.propertyType" == "Date")
${field.propertyName}?: string;
#elseif("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
${field.propertyName}?: number;
#elseif("$field.propertyType" == "Boolean")
${field.propertyName}?: boolean;
#else
${field.propertyName}?: any;
#end
#end
}
/**
* ${table.comment}查询响应
*/
export interface ${vue.featureFirstUpper}QueryResponse {
#foreach($field in ${table.fields})
#if("$field.propertyType" == "String")
${field.propertyName}?: string;
#elseif("$field.propertyType" == "Integer" || "$field.propertyType" == "Long" || "$field.propertyType" == "Date")
${field.propertyName}?: number;
#elseif("$field.propertyType" == "Boolean")
${field.propertyName}?: boolean;
#else
${field.propertyName}?: any;
#end
#end
createTime: number;
updateTime: number;
creator: string;
updater: string;
}
/**
* $apiComment.create
*/
export function create${vue.featureFirstUpper}(request: ${vue.featureFirstUpper}CreateRequest) {
return axios.post('/${package.ModuleName}/${typeHyphen}/create', request);
}
/**
* $apiComment.update
*/
export function update${vue.featureFirstUpper}(request: ${vue.featureFirstUpper}UpdateRequest) {
return axios.put('/${package.ModuleName}/${typeHyphen}/update', request);
}
/**
* $apiComment.get
*/
export function get${vue.featureFirstUpper}(id: number) {
return axios.get<${vue.featureFirstUpper}QueryResponse>('/${package.ModuleName}/${typeHyphen}/get', { params: { id } });
}
/**
* $apiComment.list
*/
export function get${vue.featureFirstUpper}List(idList: Array<number>) {
return axios.get<${vue.featureFirstUpper}QueryResponse[]>('/${package.ModuleName}/${typeHyphen}/list', {
params: { idList },
paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' });
}
});
}
/**
* $apiComment.query
*/
export function get${vue.featureFirstUpper}Page(request: ${vue.featureFirstUpper}QueryRequest) {
return axios.post<DataGrid<${vue.featureFirstUpper}QueryResponse>>('/${package.ModuleName}/${typeHyphen}/query', request);
}
/**
* $apiComment.delete
*/
export function delete${vue.featureFirstUpper}(id: number) {
return axios.delete('/${package.ModuleName}/${typeHyphen}/delete', { params: { id } });
}
/**
* $apiComment.batchDelete
*/
export function batchDelete${vue.featureFirstUpper}(idList: Array<number>) {
return axios.delete('/${package.ModuleName}/${typeHyphen}/delete-batch', {
params: { idList },
paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' });
}
});
}

View File

@@ -0,0 +1,17 @@
import { DEFAULT_LAYOUT } from '../base';
import { AppRouteRecordRaw } from '../types';
const $vue.featureAllUpper: AppRouteRecordRaw = {
name: '$vue.module',
path: '/$vue.module',
component: DEFAULT_LAYOUT,
children: [
{
name: '$vue.module$vue.featureFirstUpper',
path: '/$vue.module/$vue.featureFirstUpper',
component: () => import('@/views/$vue.module/$vue.feature/index.vue'),
},
],
};
export default $vue.featureAllUpper;

View File

@@ -1 +1,18 @@
e.types.ts
#foreach($enumEntity in ${vue.enums.entrySet()})
/**
*
*/
export const $enumEntity.key = {
#foreach($enumEntityItem in $enumEntity.value.entrySet())
$enumEntityItem.key: {
value: null,
label: '',
color: '',
#foreach($enumEntityItemFields in $enumEntityItem.value.entrySet())
$enumEntityItemFields.key: '$enumEntityItemFields.value',
#end
}
#end
}
#end

View File

@@ -1 +1,24 @@
orion-vue-views-types-form.rules.ts
import { FieldRule } from '@arco-design/web-vue';
#foreach($field in ${table.fields})
#if(${field.propertyType} == 'String')
export const ${field.propertyName} = [{
required: true,
message: '请输入${field.comment}'
}, {
maxLength: $field.metaInfo.length,
message: '${field.comment}长度不能大于$field.metaInfo.length位'
}] as FieldRule[];
#else
export const ${field.propertyName} = [{
required: true,
message: '请输入${field.comment}'
}] as FieldRule[];
#end
#end
export default {
#foreach($field in ${table.fields})
${field.propertyName},
#end
} as Record<string, FieldRule | FieldRule[]>;

View File

@@ -1 +1,44 @@
orion-vue-views-types-table.columns.ts.vm
import { TableColumnData } from '@arco-design/web-vue/es/table/interface';
const columns = [
{
title: 'id',
dataIndex: 'id',
slotName: 'id',
width: 70,
fixed: 'left',
}, #foreach($field in ${table.fields}){
title: '${field.comment}',
dataIndex: '${field.propertyName}',
slotName: '${field.propertyName}',
align: 'center',
width: 100,
#if(${field.propertyType} == 'String')
ellipsis: true,
tooltip: true,
#end
}, #end{
title: '创建时间',
dataIndex: 'createTime',
slotName: 'createTime',
}, {
title: '修改时间',
dataIndex: 'updateTime',
slotName: 'updateTime',
}, {
title: '创建人',
dataIndex: 'creator',
slotName: 'creator',
}, {
title: '修改人',
dataIndex: 'updater',
slotName: 'updater',
}, {
title: '操作',
slotName: 'option',
width: 158,
fixed: 'right',
}
] as TableColumnData[];
export default columns;