更新模板

This commit is contained in:
阿沐 2023-01-20 15:33:50 +08:00
parent 7f0ec38a97
commit 66138bfe7d
6 changed files with 113 additions and 135 deletions

View File

@ -3,13 +3,14 @@ package ${package}.${moduleName}.controller;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import ${package}.framework.common.page.PageResult; import ${package}.framework.common.utils.PageResult;
import ${package}.framework.common.utils.Result; import ${package}.framework.common.utils.Result;
import ${package}.${moduleName}.convert.${ClassName}Convert; import ${package}.${moduleName}.convert.${ClassName}Convert;
import ${package}.${moduleName}.entity.${ClassName}Entity; import ${package}.${moduleName}.entity.${ClassName}Entity;
import ${package}.${moduleName}.service.${ClassName}Service; import ${package}.${moduleName}.service.${ClassName}Service;
import ${package}.${moduleName}.query.${ClassName}Query; import ${package}.${moduleName}.query.${ClassName}Query;
import ${package}.${moduleName}.vo.${ClassName}VO; import ${package}.${moduleName}.vo.${ClassName}VO;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -32,7 +33,7 @@ public class ${ClassName}Controller {
@GetMapping("page") @GetMapping("page")
@Operation(summary = "分页") @Operation(summary = "分页")
@PreAuthorize("hasAuthority('${moduleName}:${functionName}:page')") @PreAuthorize("hasAuthority('${moduleName}:${functionName}:page')")
public Result<PageResult<${ClassName}VO>> page(@Valid ${ClassName}Query query){ public Result<PageResult<${ClassName}VO>> page(@ParameterObject @Valid ${ClassName}Query query){
PageResult<${ClassName}VO> page = ${className}Service.page(query); PageResult<${ClassName}VO> page = ${className}Service.page(query);
return Result.ok(page); return Result.ok(page);

View File

@ -1,6 +1,6 @@
package ${package}.${moduleName}.dao; package ${package}.${moduleName}.dao;
import ${package}.framework.common.dao.BaseDao; import ${package}.framework.mybatis.dao.BaseDao;
import ${package}.${moduleName}.entity.${ClassName}Entity; import ${package}.${moduleName}.entity.${ClassName}Entity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;

View File

@ -1,7 +1,7 @@
package ${package}.${moduleName}.service; package ${package}.${moduleName}.service;
import ${package}.framework.common.page.PageResult; import ${package}.framework.common.utils.PageResult;
import ${package}.framework.common.service.BaseService; import ${package}.framework.mybatis.service.BaseService;
import ${package}.${moduleName}.vo.${ClassName}VO; import ${package}.${moduleName}.vo.${ClassName}VO;
import ${package}.${moduleName}.query.${ClassName}Query; import ${package}.${moduleName}.query.${ClassName}Query;
import ${package}.${moduleName}.entity.${ClassName}Entity; import ${package}.${moduleName}.entity.${ClassName}Entity;

View File

@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import ${package}.framework.common.page.PageResult; import ${package}.framework.common.utils.PageResult;
import ${package}.framework.common.service.impl.BaseServiceImpl; import ${package}.framework.mybatis.service.impl.BaseServiceImpl;
import ${package}.${moduleName}.convert.${ClassName}Convert; import ${package}.${moduleName}.convert.${ClassName}Convert;
import ${package}.${moduleName}.entity.${ClassName}Entity; import ${package}.${moduleName}.entity.${ClassName}Entity;
import ${package}.${moduleName}.query.${ClassName}Query; import ${package}.${moduleName}.query.${ClassName}Query;

View File

@ -79,7 +79,7 @@ const visible = ref(false)
const dataFormRef = ref() const dataFormRef = ref()
const dataForm = reactive({ const dataForm = reactive({
<#list formList as field> <#list fieldList as field>
${field.attrName}: ''<#sep>, ${field.attrName}: ''<#sep>,
</#list> </#list>
}) })

View File

@ -1,136 +1,113 @@
<template> <template>
<el-card> <el-card>
<el-form :inline="true" :model="state.queryForm" @keyup.enter="getDataList()"> <el-form :inline="true" :model="state.queryForm" @keyup.enter="getDataList()">
<#list queryList as field> <#list queryList as field>
<el-form-item> <el-form-item>
<#if field.formType == 'text' || field.formType == 'textarea' || field.formType == 'editor'> <#if field.formType == 'text' || field.formType == 'textarea' || field.formType == 'editor'>
<el-input v-model="state.queryForm.${field.attrName}" <el-input v-model="state.queryForm.${field.attrName}" placeholder="${field.fieldComment!}"></el-input>
placeholder="${field.fieldComment!}"></el-input> <#elseif field.queryFormType == 'select'>
<#elseif field.queryFormType == 'select'> <#if field.queryDict??>
<#if field.queryDict??> <fast-select v-model="state.queryForm.${field.attrName}" dict-type="${field.queryDict}" placeholder="${field.fieldComment!}" clearable></fast-select>
<fast-select v-model="state.queryForm.${field.attrName}" dict-type="${field.queryDict}" <#else>
placeholder="${field.fieldComment!}" clearable></fast-select> <el-select v-model="state.queryForm.${field.attrName}" placeholder="${field.fieldComment!}">
<#else> <el-option label="选择" value="0"></el-option>
<el-select v-model="state.queryForm.${field.attrName}" placeholder="${field.fieldComment!}"> </el-select>
<el-option label="选择" value="0"></el-option> </#if>
</el-select> <#elseif field.queryFormType == 'radio'>
</#if> <#if field.queryDict??>
<#elseif field.queryFormType == 'radio'> <fast-radio-group v-model="state.queryForm.${field.attrName}" dict-type="${field.queryDict}"></fast-radio-group>
<#if field.queryDict??> <#else>
<fast-radio-group v-model="state.queryForm.${field.attrName}" <el-radio-group v-model="state.queryForm.${field.attrName}">
dict-type="${field.queryDict}"></fast-radio-group> <el-radio :label="0">单选</el-radio>
<#else> </el-radio-group>
<el-radio-group v-model="state.queryForm.${field.attrName}"> </#if>
<el-radio :label="0">单选</el-radio> <#elseif field.queryFormType == 'date'>
</el-radio-group> <el-date-picker
</#if> v-model="daterange"
<#elseif field.queryFormType == 'date'> type="daterange"
<el-date-picker value-format="yyyy-MM-dd">
v-model="daterange" </el-date-picker>
type="daterange" <#elseif field.queryFormType == 'datetime'>
value-format="yyyy-MM-dd"> <el-date-picker
</el-date-picker> v-model="datetimerange"
<#elseif field.queryFormType == 'datetime'> type="datetimerange"
<el-date-picker value-format="yyyy-MM-dd HH:mm:ss">
v-model="datetimerange" </el-date-picker>
type="datetimerange" <#else>
value-format="yyyy-MM-dd HH:mm:ss"> <el-input v-model="state.queryForm.${field.attrName}" placeholder="${field.fieldComment!}"></el-input>
</el-date-picker> </#if>
<#else> </el-form-item>
<el-input v-model="state.queryForm.${field.attrName}" </#list>
placeholder="${field.fieldComment!}"></el-input> <el-form-item>
</#if> <el-button @click="getDataList()">查询</el-button>
</el-form-item> </el-form-item>
</#list> <el-form-item>
<el-form-item> <el-button v-auth="'${moduleName}:${functionName}:save'" type="primary" @click="addOrUpdateHandle()">新增</el-button>
<el-button @click="getDataList()">查询</el-button> </el-form-item>
</el-form-item> <el-form-item>
<el-form-item> <el-button v-auth="'${moduleName}:${functionName}:delete'" type="danger" @click="deleteBatchHandle()">删除</el-button>
<el-button v-auth="'${moduleName}:${functionName}:save'" type="primary" @click="addOrUpdateHandle()"> </el-form-item>
新增 </el-form>
</el-button> <el-table v-loading="state.dataListLoading" :data="state.dataList" border style="width: 100%" @selection-change="selectionChangeHandle">
</el-form-item> <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-form-item> <#list gridList as field>
<el-button v-auth="'${moduleName}:${functionName}:delete'" type="danger" @click="deleteBatchHandle()"> <#if field.formDict??>
删除 <fast-table-column prop="${field.attrName}" label="${field.fieldComment!}" dict-type="${field.formDict}"></fast-table-column>
</el-button> <#else>
</el-form-item> <el-table-column prop="${field.attrName}" label="${field.fieldComment!}" header-align="center" align="center"></el-table-column>
</el-form> </#if>
<el-table v-loading="state.dataListLoading" :data="state.dataList" border style="width: 100%" </#list>
@selection-change="selectionChangeHandle"> <el-table-column label="操作" fixed="right" header-align="center" align="center" width="150">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> <template #default="scope">
<#list gridList as field> <el-button v-auth="'${moduleName}:${functionName}:update'" type="primary" link @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<#if field.formDict??> <el-button v-auth="'${moduleName}:${functionName}:delete'" type="primary" link @click="deleteBatchHandle(scope.row.id)">删除</el-button>
<fast-table-column prop="${field.attrName}" label="${field.fieldComment!}" </template>
dict-type="${field.formDict}"></fast-table-column> </el-table-column>
<#else> </el-table>
<el-table-column prop="${field.attrName}" label="${field.fieldComment!}" header-align="center" <el-pagination
align="center"></el-table-column> :current-page="state.page"
</#if> :page-sizes="state.pageSizes"
</#list> :page-size="state.limit"
<el-table-column label="操作" fixed="right" header-align="center" align="center" width="150"> :total="state.total"
<template #default="scope"> layout="total, sizes, prev, pager, next, jumper"
<el-button v-auth="'${moduleName}:${functionName}:update'" type="primary" link @size-change="sizeChangeHandle"
@click="addOrUpdateHandle(scope.row.id)">修改 @current-change="currentChangeHandle"
</el-button> >
<el-button v-auth="'${moduleName}:${functionName}:delete'" type="primary" link </el-pagination>
@click="deleteBatchHandle(scope.row.id)">删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="state.page"
:page-sizes="state.pageSizes"
:page-size="state.limit"
:total="state.total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
>
</el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<add-or-update ref="addOrUpdateRef" @refreshDataList="getDataList"></add-or-update> <add-or-update ref="addOrUpdateRef" @refreshDataList="getDataList"></add-or-update>
</el-card> </el-card>
</template> </template>
<script setup lang="ts" name="${ModuleName}${FunctionName}Index"> <script setup lang="ts" name="${ModuleName}${FunctionName}Index">
import {useCrud} from '@/hooks' import { useCrud } from '@/hooks'
import {reactive, ref} from 'vue' import { reactive, ref } from 'vue'
import {IHooksOptions} from '@/hooks/interface' import AddOrUpdate from './add-or-update.vue'
import { IHooksOptions } from '@/hooks/interface'
const state: IHooksOptions = reactive({ const state: IHooksOptions = reactive({
dataListUrl: '/${moduleName}/${functionName}/page', dataListUrl: '/${moduleName}/${functionName}/page',
deleteUrl: '/${moduleName}/${functionName}', deleteUrl: '/${moduleName}/${functionName}',
queryForm: { queryForm: {
<#list queryList as field> <#list queryList as field>
<#if field.formType == 'date'> <#if field.formType == 'date'>
startDate: '', startDate: '',
endDate: ''<#sep>, </#sep> endDate: ''<#sep>, </#sep>
<#elseif field.formType == 'datetime'> <#elseif field.formType == 'datetime'>
startDateTime: '', startDateTime: '',
endDateTime: ''<#sep>, </#sep> endDateTime: ''<#sep>, </#sep>
<#else> <#else>
${field.attrName}: ''<#sep>, </#sep> ${field.attrName}: ''<#sep>, </#sep>
</#if> </#if>
</#list> </#list>
} }
}) })
const addOrUpdateRef = ref() const addOrUpdateRef = ref()
const addOrUpdateHandle = (id const addOrUpdateHandle = (id?: number) => {
? : number addOrUpdateRef.value.init(id)
) => }
{
addOrUpdateRef.value.init(id)
}
const { const { getDataList, selectionChangeHandle, sizeChangeHandle, currentChangeHandle, deleteBatchHandle } = useCrud(state)
getDataList,
selectionChangeHandle,
sizeChangeHandle,
currentChangeHandle,
deleteBatchHandle
} = useCrud(state)
</script> </script>