代码生成模板映射枚举字段.

This commit is contained in:
lijiahang
2023-09-26 17:50:54 +08:00
parent e405855e03
commit 54dcd1098f
14 changed files with 187 additions and 84 deletions

View File

@@ -20,18 +20,24 @@
#if("$field.propertyName" != "id")
<!-- $field.comment -->
<a-form-item field="${field.propertyName}" label="${field.comment}">
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
#if(${vue.enums.containsKey(${field.propertyName})})
<a-select v-model="formModel.${field.propertyName}"
:options="toOptions(${vue.enums.get(${field.propertyName}).className})"
placeholder="请选择${field.comment}"/>
#else
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
<a-input-number v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}"
hide-button />
#elseif("$field.propertyType" == "Date")
#elseif("$field.propertyType" == "Date")
<a-date-picker v-model="formModel.${field.propertyName}"
style="width: 100%"
placeholder="请选择${field.comment}"
show-time />
#else
<a-input v-model="formModel.${field.propertyName}" placeholder="请输入${field.comment}" />
#end
#else
<a-input v-model="formModel.${field.propertyName}" placeholder="请输入${field.comment}" allow-clear/>
#end
#end
</a-form-item>
#end
#end

View File

@@ -24,18 +24,24 @@
#if("$field.propertyName" != "id")
<!-- $field.comment -->
<a-form-item field="${field.propertyName}" label="${field.comment}">
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
#if(${vue.enums.containsKey(${field.propertyName})})
<a-select v-model="formModel.${field.propertyName}"
:options="toOptions(${vue.enums.get(${field.propertyName}).className})"
placeholder="请选择${field.comment}" />
#else
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
<a-input-number v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}"
hide-button />
#elseif("$field.propertyType" == "Date")
#elseif("$field.propertyType" == "Date")
<a-date-picker v-model="formModel.${field.propertyName}"
style="width: 100%"
placeholder="请选择${field.comment}"
show-time />
#else
<a-input v-model="formModel.${field.propertyName}" placeholder="请输入${field.comment}" />
#end
#else
<a-input v-model="formModel.${field.propertyName}" placeholder="请输入${field.comment}" allow-clear />
#end
#end
</a-form-item>
#end
#end

View File

@@ -8,20 +8,27 @@
#foreach($field in ${table.fields})
<!-- $field.comment -->
<a-form-item field="${field.propertyName}" label="${field.comment}" label-col-flex="50px">
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
#if(${vue.enums.containsKey(${field.propertyName})})
<a-select v-model="formModel.${field.propertyName}"
:options="toOptions(${vue.enums.get(${field.propertyName}).className})"
placeholder="请选择${field.comment}"
allow-clear />
#else
#if("$field.propertyType" == "Integer" || "$field.propertyType" == "Long")
<a-input-number v-model="formModel.${field.propertyName}"
placeholder="请输入${field.comment}"
allow-clear
hide-button />
#elseif("$field.propertyType" == "Date")
#elseif("$field.propertyType" == "Date")
<a-date-picker v-model="formModel.${field.propertyName}"
style="width: 100%"
placeholder="请选择${field.comment}"
show-time
allow-clear />
#else
<a-input v-model="formModel.${field.propertyName}" placeholder="请输入${field.comment}" allow-clear/>
#end
#else
<a-input v-model="formModel.${field.propertyName}" placeholder="请输入${field.comment}" allow-clear />
#end
#end
</a-form-item>
#end
</a-query-header>
@@ -45,6 +52,7 @@
<icon-plus />
</template>
</a-button>
#if($vue.enableRowSelection)
<!-- 删除 -->
<a-popconfirm position="br"
type="warning"
@@ -60,6 +68,7 @@
</template>
</a-button>
</a-popconfirm>
#end
</a-space>
</div>
</template>
@@ -70,13 +79,23 @@
label-align="left"
:loading="loading"
:columns="columns"
#if($vue.enableRowSelection)
:selected-keys="selectedKeys"
:row-selection="rowSelection"
#end
:data="tableRenderData"
:pagination="pagination"
@page-change="(page) => fetchTableData(page, pagination.pageSize)"
@page-size-change="(size) => fetchTableData(pagination.current, size)"
:bordered="false">
#foreach($field in ${table.fields})
#if(${vue.enums.containsKey(${field.propertyName})})
<!-- $field.comment -->
<template #${field.propertyName}="{ record }">
{{ getEnumValue(record.${field.propertyName}, ${vue.enums.get(${field.propertyName}).className}) }}
</template>
#end
#end
<!-- 操作 -->
<template #handle="{ record }">
<div class="table-handle-wrapper">
@@ -117,18 +136,28 @@
import { Message, PaginationProps } from '@arco-design/web-vue';
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
#if($vue.enableRowSelection)
import { defaultPagination, defaultRowSelection } from '@/types/table';
import {} from '../types/enum.types';
#else
import { defaultPagination } from '@/types/table';
#end
import {} from '../types/const';
import { toOptions } from '@/utils/enum';
#if($vue.enums.isEmpty())
import {} from '../types/enum.types';
#else
import { #foreach($entry in ${vue.enums.entrySet()})${entry.value.className}#if($foreach.hasNext), #end#end } from '../types/enum.types';
#end
import { toOptions, getEnumValue } from '@/utils/enum';
const tableRenderData = ref<${vue.featureEntity}QueryResponse[]>([]);
const { loading, setLoading } = useLoading();
const emits = defineEmits(['openAdd', 'openUpdate']);
const pagination = reactive(defaultPagination()) as PaginationProps;
#if($vue.enableRowSelection)
const selectedKeys = ref<number[]>([]);
const rowSelection = reactive(defaultRowSelection());
#end
const formModel = ref<${vue.featureEntity}QueryRequest>({
#foreach($field in ${table.fields})
@@ -136,6 +165,7 @@
#end
});
#if($vue.enableRowSelection)
// 删除选中行
const deleteSelectRows = async () => {
try {
@@ -152,6 +182,7 @@
}
};
#end
// 删除当前行
const deleteRow = async ({ id }: {
id: number
@@ -192,6 +223,9 @@
pagination.total = data.total;
pagination.current = request.page;
pagination.pageSize = request.limit;
#if($vue.enableRowSelection)
selectedKeys.value = [];
#end
} catch (e) {
} finally {
setLoading(false);

View File

@@ -1,19 +1,15 @@
<template>
<div class="layout-container">
#if($vue.drawerForm)
<!-- 表格 -->
<${vue.feature}-table ref="table"
@openAdd="() => drawer.openAdd()"
@openAdd="() =>#if($vue.enableDrawerForm) drawer#else modal#end.openAdd()"
@openUpdate="(e) => drawer.openUpdate(e)" />
#if($vue.enableDrawerForm)
<!-- 添加修改模态框 -->
<${vue.feature}-form-drawer ref="drawer"
@added="() => table.addedCallback()"
@updated="() => table.updatedCallback()" />
#else
<!-- 表格 -->
<${vue.feature}-table ref="table"
@openAdd="() => modal.openAdd()"
@openUpdate="(e) => modal.openUpdate(e)" />
<!-- 添加修改模态框 -->
<${vue.feature}-form-modal ref="modal"
@added="() => table.addedCallback()"

View File

@@ -1,9 +1,9 @@
#foreach($enumEntity in ${vue.enums.entrySet()})
/**
* $!{vue.enumComment.get($enumEntity.key)}
* $!{enumEntity.value.comment}
*/
export const $enumEntity.key = {
#foreach($enumEntityItem in $enumEntity.value.entrySet())
export const $enumEntity.value.className = {
#foreach($enumEntityItem in $enumEntity.value.info.entrySet())
$enumEntityItem.key: {
#foreach($enumEntityItemFields in $enumEntityItem.value.entrySet())
$enumEntityItemFields.key: '$!enumEntityItemFields.value',