🐛 修改前端代码生成逻辑
This commit is contained in:
parent
e4b231ca14
commit
755e5fa5e5
|
@ -0,0 +1,16 @@
|
|||
package com.auth.common.model.common;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(name = "BaseDto", title = "基础分页请求")
|
||||
public class BasePageDto {
|
||||
|
||||
@Schema(name = "pageIndex", title = "当前页")
|
||||
private Integer pageIndex;
|
||||
|
||||
@Schema(name = "pageSize", title = "分页大小")
|
||||
private Integer pageSize;
|
||||
|
||||
}
|
|
@ -6,6 +6,7 @@ import lombok.Data;
|
|||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@Schema(name = "BaseVo", title = "基础返回数据")
|
||||
public class BaseVo {
|
||||
|
||||
@Schema(name = "createTime", title = "创建时间")
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
package com.auth.model.base.dto;
|
||||
|
||||
import com.auth.common.model.common.BasePageDto;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.*;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@Schema(name = "DictDTO-系统数据字典传输", title = "系统数据字典", description = "系统数据字典的DTO对象")
|
||||
public class DictDto {
|
||||
public class DictDto extends BasePageDto {
|
||||
|
||||
@Schema(name = "dictType", title = "字典类型")
|
||||
private String dictType;
|
||||
|
|
|
@ -7,6 +7,13 @@ import java.util.List;
|
|||
*/
|
||||
public interface DatabaseDialect {
|
||||
|
||||
/**
|
||||
* 将数据库类型转换为Java类型
|
||||
*
|
||||
* @param columnType 数据库中的列类型
|
||||
*/
|
||||
String convertToJavaType(String columnType);
|
||||
|
||||
/**
|
||||
* 提取表注释
|
||||
*
|
||||
|
@ -23,4 +30,11 @@ public interface DatabaseDialect {
|
|||
*/
|
||||
String extractColumnComment(List<String> columnSpecs);
|
||||
|
||||
/**
|
||||
* 将数据库类型转换为JavaScript类型
|
||||
*
|
||||
* @param columnType 数据库中的列类型
|
||||
*/
|
||||
String convertToJavaScriptType(String columnType);
|
||||
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.auth.module.generator.core.dialect;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
@ -34,4 +35,49 @@ public class MySqlDialect implements DatabaseDialect {
|
|||
Matcher columnSpecsStringMatcher = Pattern.compile("COMMENT\\s*'(.*?)'", Pattern.CASE_INSENSITIVE).matcher(columnSpecsString);
|
||||
return columnSpecsStringMatcher.find() ? columnSpecsStringMatcher.group(1) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数据库类型转换为Java类型
|
||||
*
|
||||
* @param columnType 数据库中的列类型
|
||||
*/
|
||||
@Override
|
||||
public String convertToJavaType(String columnType) {
|
||||
if (columnType == null) return "Object";
|
||||
|
||||
columnType = columnType.toLowerCase();
|
||||
return switch (columnType) {
|
||||
case "varchar", "char", "text", "longtext", "mediumtext", "tinytext" -> "String";
|
||||
case "int", "integer", "tinyint", "smallint" -> "Integer";
|
||||
case "bigint" -> "Long";
|
||||
case "decimal", "numeric" -> "BigDecimal";
|
||||
case "float" -> "Float";
|
||||
case "double" -> "Double";
|
||||
case "boolean", "bit", "tinyint unsigned" -> "Boolean";
|
||||
case "date", "year" -> "Date";
|
||||
case "time" -> "Time";
|
||||
case "datetime", "timestamp" -> "LocalDateTime";
|
||||
case "blob", "longblob", "mediumblob", "tinyblob" -> "byte[]";
|
||||
default -> "Object";
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数据库类型转换为JavaScript类型
|
||||
*
|
||||
* @param columnType 数据库中的列类型
|
||||
*/
|
||||
@Override
|
||||
public String convertToJavaScriptType(String columnType) {
|
||||
if (columnType == null || columnType.equals("object")) return "any";
|
||||
|
||||
columnType = StringUtils.uncapitalize(columnType);
|
||||
|
||||
return switch (columnType) {
|
||||
case "double", "int", "long", "integer", "float", "decimal" -> "number";
|
||||
case "localDateTime", "date" -> "string";
|
||||
default -> columnType;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
|
@ -1,17 +1,17 @@
|
|||
package com.auth.module.generator.core.provider;
|
||||
|
||||
import com.auth.module.generator.core.dialect.DatabaseDialect;
|
||||
import com.auth.module.generator.exception.GeneratorCodeException;
|
||||
import com.auth.module.generator.exception.MetadataNotFoundException;
|
||||
import com.auth.module.generator.exception.MetadataProviderException;
|
||||
import com.auth.module.generator.model.entity.ColumnMetaData;
|
||||
import com.auth.module.generator.model.entity.DatabaseInfoMetaData;
|
||||
import com.auth.module.generator.model.entity.TableMetaData;
|
||||
import com.auth.module.generator.utils.MysqlTypeConvertUtil;
|
||||
import com.auth.module.generator.utils.CamelCaseNameConvertUtil;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
|
@ -29,6 +29,7 @@ import java.util.stream.Collectors;
|
|||
public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||
|
||||
private final HikariDataSource dataSource;
|
||||
private final DatabaseDialect dialect;
|
||||
|
||||
@Value("${bunny.master.database}")
|
||||
private String currentDatabase;
|
||||
|
@ -127,11 +128,11 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
|||
|
||||
ColumnMetaData column = new ColumnMetaData();
|
||||
column.setColumnName(columnName);
|
||||
column.setLowercaseName(MysqlTypeConvertUtil.convertToCamelCase(columnName, false));
|
||||
column.setUppercaseName(MysqlTypeConvertUtil.convertToCamelCase(columnName, true));
|
||||
column.setLowercaseName(CamelCaseNameConvertUtil.convertToCamelCase(columnName, false));
|
||||
column.setUppercaseName(CamelCaseNameConvertUtil.convertToCamelCase(columnName, true));
|
||||
column.setJdbcType(typeName);
|
||||
column.setJavaType(MysqlTypeConvertUtil.convertToJavaType(typeName));
|
||||
column.setJavascriptType(StringUtils.uncapitalize(column.getJavaType()));
|
||||
column.setJavaType(dialect.convertToJavaType(typeName));
|
||||
column.setJavascriptType(dialect.convertToJavaScriptType(column.getJavaType()));
|
||||
column.setComment(columnsRs.getString("REMARKS"));
|
||||
column.setIsPrimaryKey(primaryKeys.contains(columnName));
|
||||
|
||||
|
|
|
@ -6,14 +6,13 @@ import com.auth.module.generator.exception.GeneratorCodeException;
|
|||
import com.auth.module.generator.exception.SqlParseException;
|
||||
import com.auth.module.generator.model.entity.ColumnMetaData;
|
||||
import com.auth.module.generator.model.entity.TableMetaData;
|
||||
import com.auth.module.generator.utils.MysqlTypeConvertUtil;
|
||||
import com.auth.module.generator.utils.CamelCaseNameConvertUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.sf.jsqlparser.JSQLParserException;
|
||||
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
|
||||
import net.sf.jsqlparser.statement.Statement;
|
||||
import net.sf.jsqlparser.statement.create.table.CreateTable;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -94,18 +93,18 @@ public class SqlMetadataProvider implements IMetadataProvider {
|
|||
columnInfo.setJdbcType(dataType);
|
||||
|
||||
// 设置 Java 类型
|
||||
String javaType = MysqlTypeConvertUtil.convertToJavaType(dataType.contains("varchar") ? "varchar" : dataType);
|
||||
String javaType = dialect.convertToJavaType(dataType.contains("varchar") ? "varchar" : dataType);
|
||||
columnInfo.setJavaType(javaType);
|
||||
|
||||
// 设置 JavaScript 类型
|
||||
columnInfo.setJavascriptType(StringUtils.uncapitalize(javaType));
|
||||
columnInfo.setJavascriptType(dialect.convertToJavaScriptType(javaType));
|
||||
|
||||
// 列字段转成 下划线 -> 小驼峰
|
||||
String lowercaseName = MysqlTypeConvertUtil.convertToCamelCase(columnName, false);
|
||||
String lowercaseName = CamelCaseNameConvertUtil.convertToCamelCase(columnName, false);
|
||||
columnInfo.setLowercaseName(lowercaseName);
|
||||
|
||||
// 列字段转成 下划线 -> 大驼峰名称
|
||||
String uppercaseName = MysqlTypeConvertUtil.convertToCamelCase(columnName, true);
|
||||
String uppercaseName = CamelCaseNameConvertUtil.convertToCamelCase(columnName, true);
|
||||
columnInfo.setUppercaseName(uppercaseName);
|
||||
|
||||
// 解析注释
|
||||
|
|
|
@ -2,7 +2,7 @@ package com.auth.module.generator.core.template;
|
|||
|
||||
import com.auth.module.generator.model.dto.VmsArgumentDto;
|
||||
import com.auth.module.generator.model.entity.TableMetaData;
|
||||
import com.auth.module.generator.utils.MysqlTypeConvertUtil;
|
||||
import com.auth.module.generator.utils.CamelCaseNameConvertUtil;
|
||||
import com.google.common.base.CaseFormat;
|
||||
import org.apache.velocity.Template;
|
||||
import org.apache.velocity.VelocityContext;
|
||||
|
@ -78,11 +78,11 @@ public class VmsTBaseTemplateGenerator extends AbstractTemplateGenerator {
|
|||
context.put("package", dto.getPackageName());
|
||||
|
||||
// 将类名称转成小驼峰
|
||||
String lowerCamelCase = MysqlTypeConvertUtil.convertToCamelCase(cleanTableName, false);
|
||||
String lowerCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(cleanTableName, false);
|
||||
context.put("classLowercaseName", lowerCamelCase);
|
||||
|
||||
// 将类名称转成大驼峰
|
||||
String upperCameCase = MysqlTypeConvertUtil.convertToCamelCase(cleanTableName, true);
|
||||
String upperCameCase = CamelCaseNameConvertUtil.convertToCamelCase(cleanTableName, true);
|
||||
context.put("classUppercaseName", upperCameCase);
|
||||
|
||||
// 添加中划线
|
||||
|
|
|
@ -1,24 +1,12 @@
|
|||
package com.auth.module.generator.service.helper;
|
||||
|
||||
import com.auth.module.generator.utils.MysqlTypeConvertUtil;
|
||||
import com.auth.module.generator.utils.CamelCaseNameConvertUtil;
|
||||
import com.google.common.base.CaseFormat;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 代码生成工具类
|
||||
*/
|
||||
public class VmsGeneratorPathHelper {
|
||||
private static final Map<String, String> FILE_TYPE_SUFFIXES = Map.of(
|
||||
"controller", "Controller",
|
||||
"service", "Service",
|
||||
"serviceImpl", "ServiceImpl",
|
||||
"mapper", "Mapper",
|
||||
"resourceMapper", "Mapper",
|
||||
"dto", "Dto",
|
||||
"entity", "Entity",
|
||||
"vo", "Vo"
|
||||
);
|
||||
|
||||
/**
|
||||
* 处理模板文件路径和命名
|
||||
|
@ -28,7 +16,7 @@ public class VmsGeneratorPathHelper {
|
|||
* @return 处理后的文件路径
|
||||
*/
|
||||
public static String processVmPath(String path, String tableName) {
|
||||
String lowerCamelCase = MysqlTypeConvertUtil.convertToCamelCase(tableName, false);
|
||||
String lowerCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(tableName, false);
|
||||
|
||||
if (lowerCamelCase != null) {
|
||||
String[] pathParts = path.replace("$className", lowerCamelCase).split("/");
|
||||
|
@ -53,29 +41,23 @@ public class VmsGeneratorPathHelper {
|
|||
String baseName = parts[0];
|
||||
String extension = parts.length > 1 ? parts[1] : "";
|
||||
|
||||
String upperCamelCase = MysqlTypeConvertUtil.convertToCamelCase(tableName, true);
|
||||
String lowerCamelCase = MysqlTypeConvertUtil.convertToCamelCase(tableName, false);
|
||||
String upperCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(tableName, true);
|
||||
String lowerCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(tableName, false);
|
||||
|
||||
// ==========================
|
||||
// 💡Java
|
||||
// 如果包含Java和xml需要进行处理
|
||||
// ==========================
|
||||
if (filename.contains("java") || filename.contains("xml")) {
|
||||
return upperCamelCase + FILE_TYPE_SUFFIXES.getOrDefault(baseName, "") + "." + extension;
|
||||
// 💡含Java和xml需要进行处理
|
||||
if (filename.contains(".java") || filename.contains(".xml")) {
|
||||
String toUpperCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(baseName, true);
|
||||
return upperCamelCase + toUpperCamelCase + "." + extension;
|
||||
}
|
||||
|
||||
// ==========================
|
||||
// 💡前端
|
||||
// 前端配置
|
||||
// ==========================
|
||||
if (filename.equals("api.ts") || filename.equals("store.ts")) {
|
||||
return lowerCamelCase + ".ts";
|
||||
}
|
||||
// 💡前端配置
|
||||
return switch (filename) {
|
||||
case "api.ts", "store.ts" -> lowerCamelCase + ".ts";
|
||||
case "types.ts" -> lowerCamelCase + "DataType.ts";
|
||||
case "dialog.vue" -> CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, lowerCamelCase) + "-dialog.vue";
|
||||
case "columns.tsx" -> lowerCamelCase + "-columns.tsx";
|
||||
default -> filename;
|
||||
};
|
||||
|
||||
if (filename.equals("dialog.vue")) {
|
||||
return CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, lowerCamelCase) + "-dialog.vue";
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package com.auth.module.generator.utils;
|
||||
|
||||
import com.google.common.base.CaseFormat;
|
||||
import org.assertj.core.util.introspection.CaseFormatUtils;
|
||||
|
||||
/* 类型转换,数据库转Java类型等 */
|
||||
public class CamelCaseNameConvertUtil {
|
||||
|
||||
/**
|
||||
* 下划线命名转驼峰命名
|
||||
*
|
||||
* @param name 原始名称,传入的值可以是
|
||||
* `xxx_xxx` `CaseFormat`
|
||||
* `caseFormat`
|
||||
* @param firstLetterCapital 首字母是否大写
|
||||
*/
|
||||
public static String convertToCamelCase(String name, boolean firstLetterCapital) {
|
||||
if (name == null || name.isEmpty()) return name;
|
||||
|
||||
// 转成小驼峰
|
||||
String lowerCamelCase = CaseFormatUtils.toCamelCase(name);
|
||||
|
||||
// 首字母不大写
|
||||
if (!firstLetterCapital) return lowerCamelCase;
|
||||
|
||||
// 将小驼峰转成大驼峰
|
||||
return CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, lowerCamelCase);
|
||||
}
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
package com.auth.module.generator.utils;
|
||||
|
||||
import com.google.common.base.CaseFormat;
|
||||
import org.assertj.core.util.introspection.CaseFormatUtils;
|
||||
|
||||
/* 类型转换,数据库转Java类型等 */
|
||||
public class MysqlTypeConvertUtil {
|
||||
|
||||
/**
|
||||
* 将数据库类型转换为Java类型
|
||||
*/
|
||||
public static String convertToJavaType(String columnType) {
|
||||
if (columnType == null) return "Object";
|
||||
|
||||
columnType = columnType.toLowerCase();
|
||||
return switch (columnType) {
|
||||
case "varchar", "char", "text", "longtext", "mediumtext", "tinytext" -> "String";
|
||||
case "int", "integer", "tinyint", "smallint" -> "Integer";
|
||||
case "bigint" -> "Long";
|
||||
case "decimal", "numeric" -> "BigDecimal";
|
||||
case "float" -> "Float";
|
||||
case "double" -> "Double";
|
||||
case "boolean", "bit", "tinyint unsigned" -> "Boolean";
|
||||
case "date", "year" -> "Date";
|
||||
case "time" -> "Time";
|
||||
case "datetime", "timestamp" -> "LocalDateTime";
|
||||
case "blob", "longblob", "mediumblob", "tinyblob" -> "byte[]";
|
||||
default -> "Object";
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 下划线命名转驼峰命名
|
||||
*
|
||||
* @param name 原始名称,传入的值可以是
|
||||
* `xxx_xxx` `CaseFormat`
|
||||
* `caseFormat`
|
||||
* @param firstLetterCapital 首字母是否大写
|
||||
*/
|
||||
public static String convertToCamelCase(String name, boolean firstLetterCapital) {
|
||||
if (name == null || name.isEmpty()) return name;
|
||||
|
||||
// 转成小驼峰
|
||||
String lowerCamelCase = CaseFormatUtils.toCamelCase(name);
|
||||
|
||||
// 首字母不大写
|
||||
if (!firstLetterCapital) return lowerCamelCase;
|
||||
|
||||
// 将小驼峰转成大驼峰
|
||||
return CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, lowerCamelCase);
|
||||
}
|
||||
}
|
|
@ -35,44 +35,39 @@ public class ${classUppercaseName}Controller {
|
|||
private final ${classUppercaseName}Service ${classLowercaseName}Service;
|
||||
|
||||
@Operation(summary = "分页查询${comment}", description = "分页查询${comment}")
|
||||
@GetMapping("{page}/{limit}")
|
||||
public Result<PageResult<${classUppercaseName}Vo>> get${classUppercaseName}Page(
|
||||
@Parameter(name = "page", description = "当前页", required = true)
|
||||
@PathVariable("page") Integer page,
|
||||
@Parameter(name = "limit", description = "每页记录数", required = true)
|
||||
@PathVariable("limit") Integer limit,
|
||||
${classUppercaseName}Dto dto) {
|
||||
Page<${classUppercaseName}Entity> pageParams = new Page<>(page, limit);
|
||||
@GetMapping()
|
||||
public Result<PageResult<${classUppercaseName}Vo>> get${classUppercaseName}Page(${classUppercaseName}Dto dto) {
|
||||
Page<${classUppercaseName}Entity> pageParams = new Page<>(dto.getPageIndex(), dto.getPageSize());
|
||||
PageResult<${classUppercaseName}Vo> pageResult = ${classLowercaseName}Service.get${classUppercaseName}Page(pageParams, dto);
|
||||
return Result.success(pageResult);
|
||||
}
|
||||
|
||||
@Operation(summary = "根据id查询${comment}详情", description = "根据id查询${comment}详情")
|
||||
@GetMapping("{id}")
|
||||
public Result<${classUppercaseName}Vo> get${classUppercaseName}ById(@PathVariable("id") Long id) {
|
||||
${classUppercaseName}Vo ${classLowercaseName}Vo = ${classLowercaseName}Service.get${classUppercaseName}ById(id);
|
||||
public Result<${classUppercaseName}Vo> getById(@PathVariable("id") Long id) {
|
||||
${classUppercaseName}Vo ${classLowercaseName}Vo = ${classLowercaseName}Service.getById(id);
|
||||
|
||||
return Result.success(${classLowercaseName}Vo);
|
||||
}
|
||||
|
||||
@Operation(summary = "添加${comment}", description = "添加${comment}")
|
||||
@PostMapping()
|
||||
public Result<String> add${classUppercaseName}(@Valid @RequestBody ${classUppercaseName}Dto dto) {
|
||||
${classLowercaseName}Service.add${classUppercaseName}(dto);
|
||||
public Result<String> create(@Valid @RequestBody ${classUppercaseName}Dto dto) {
|
||||
${classLowercaseName}Service.create(dto);
|
||||
return Result.success(ResultCodeEnum.ADD_SUCCESS);
|
||||
}
|
||||
|
||||
@Operation(summary = "更新${comment}", description = "更新${comment}")
|
||||
@PutMapping()
|
||||
public Result<String> update${classUppercaseName}(@Valid @RequestBody ${classUppercaseName}Dto dto) {
|
||||
${classLowercaseName}Service.update${classUppercaseName}(dto);
|
||||
public Result<String> update(@Valid @RequestBody ${classUppercaseName}Dto dto) {
|
||||
${classLowercaseName}Service.update(dto);
|
||||
return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
|
||||
}
|
||||
|
||||
@Operation(summary = "删除${comment}", description = "删除${comment}")
|
||||
@DeleteMapping()
|
||||
public Result<String> delete${classUppercaseName}(@RequestBody List<Long> ids) {
|
||||
${classLowercaseName}Service.delete${classUppercaseName}(ids);
|
||||
public Result<String> batchDelete(@RequestBody List<Long> ids) {
|
||||
${classLowercaseName}Service.batchDelete(ids);
|
||||
return Result.success(ResultCodeEnum.DELETE_SUCCESS);
|
||||
}
|
||||
}
|
|
@ -1,19 +1,18 @@
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.*;
|
||||
import com.auth.common.model.common.BasePageDto;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@Schema(name = "${classUppercaseName}DTO-${comment}传输对象", title = "${comment}", description = "${comment}的DTO对象")
|
||||
public class ${classUppercaseName}Dto {
|
||||
public class ${classUppercaseName}Dto extends BasePageDto{
|
||||
|
||||
#foreach($field in ${columnInfoList})
|
||||
@Schema(name = "${field.lowercaseName}", title = "${field.comment}")
|
||||
|
|
|
@ -54,7 +54,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca
|
|||
* @param id 主键
|
||||
* @return ${comment}详情 ${classUppercaseName}Vo}
|
||||
*/
|
||||
public ${classUppercaseName}Vo get${classUppercaseName}ById(Long id){
|
||||
public ${classUppercaseName}Vo getById(Long id){
|
||||
${classUppercaseName}Entity ${classLowercaseName}Entity = getById(id);
|
||||
|
||||
${classUppercaseName}Vo ${classLowercaseName}Vo = new ${classUppercaseName}Vo();
|
||||
|
@ -69,7 +69,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca
|
|||
* @param dto ${comment}添加
|
||||
*/
|
||||
@Override
|
||||
public void add${classUppercaseName}(${classUppercaseName}Dto dto) {
|
||||
public void create(${classUppercaseName}Dto dto) {
|
||||
${classUppercaseName}Entity ${classLowercaseName} = new ${classUppercaseName}Entity();
|
||||
BeanUtils.copyProperties(dto, ${classLowercaseName});
|
||||
|
||||
|
@ -82,7 +82,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca
|
|||
* @param dto ${comment}更新
|
||||
*/
|
||||
@Override
|
||||
public void update${classUppercaseName}(${classUppercaseName}Dto dto) {
|
||||
public void update(${classUppercaseName}Dto dto) {
|
||||
${classUppercaseName}Entity ${classLowercaseName} = new ${classUppercaseName}Entity();
|
||||
BeanUtils.copyProperties(dto, ${classLowercaseName});
|
||||
|
||||
|
@ -95,7 +95,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca
|
|||
* @param ids 删除id列表
|
||||
*/
|
||||
@Override
|
||||
public void delete${classUppercaseName}(List<Long> ids) {
|
||||
public void batchDelete(List<Long> ids) {
|
||||
removeByIds(ids);
|
||||
}
|
||||
}
|
|
@ -34,26 +34,26 @@ public interface ${classUppercaseName}Service extends IService<${classUppercaseN
|
|||
* @param id 主键
|
||||
* @return ${comment}详情 ${classUppercaseName}Vo}
|
||||
*/
|
||||
${classUppercaseName}Vo get${classUppercaseName}ById(Long id);
|
||||
${classUppercaseName}Vo getById(Long id);
|
||||
|
||||
/**
|
||||
* 添加${comment}
|
||||
*
|
||||
* @param dto {@link ${classUppercaseName}Dto} 添加表单
|
||||
*/
|
||||
void add${classUppercaseName}(${classUppercaseName}Dto dto);
|
||||
void create(${classUppercaseName}Dto dto);
|
||||
|
||||
/**
|
||||
* 更新${comment}
|
||||
*
|
||||
* @param dto {@link ${classUppercaseName}Dto} 更新表单
|
||||
*/
|
||||
void update${classUppercaseName}(${classUppercaseName}Dto dto);
|
||||
void update(${classUppercaseName}Dto dto);
|
||||
|
||||
/**
|
||||
* 删除|批量删除${comment}类型
|
||||
*
|
||||
* @param ids 删除id列表
|
||||
*/
|
||||
void delete${classUppercaseName}(List<Long> ids);
|
||||
void batchDelete(List<Long> ids);
|
||||
}
|
||||
|
|
|
@ -1,22 +1,28 @@
|
|||
import type { PageResult, Result } from "@/types/common/Result";
|
||||
import type { ResultPage, Result } from "@/types/base";
|
||||
import type { ${classUppercaseName}ListItem } from "@/types/${classLowercaseName}/${classLowercaseName}DataType.ts";
|
||||
import { http } from "@/utils/http";
|
||||
|
||||
/** ${comment}---获取${comment}列表 */
|
||||
export const fetchGet${classUppercaseName}List = (data: any) => {
|
||||
return http.request<BaseResult<ResultTable>>('get', `${classLowercaseName}/get${classUppercaseName}List/${data.currentPage}/${data.pageSize}`, {params: data});
|
||||
export const query${classUppercaseName}Page = (params: any) => {
|
||||
return http.request<ResultPage<${classUppercaseName}ListItem>>('get', `${classLowercaseName}`, {params});
|
||||
};
|
||||
|
||||
/** 部门表---获取${comment}详情 */
|
||||
export const get${classUppercaseName}Detail = (params: any) => {
|
||||
return http.request<Result<${classUppercaseName}ListItem>>("get", `${classLowercaseName}/${params.id}`);
|
||||
};
|
||||
|
||||
/** ${comment}---添加${comment} */
|
||||
export const fetchAdd${classUppercaseName} = (data: any) => {
|
||||
return http.request<BaseResult<any>>('post', '${classLowercaseName}/add${classUppercaseName}', {data});
|
||||
export const create${classUppercaseName} = (data: any) => {
|
||||
return http.request<Result<string>>('post', '${classLowercaseName}', {data});
|
||||
};
|
||||
|
||||
/** ${comment}---更新${comment} */
|
||||
export const fetchUpdate${classUppercaseName} = (data: any) => {
|
||||
return http.request<BaseResult<any>>('put', '${classLowercaseName}/update${classUppercaseName}', {data});
|
||||
export const update${classUppercaseName}ById = (data: any) => {
|
||||
return http.request<Result<string>>('put', '${classLowercaseName}', {data});
|
||||
};
|
||||
|
||||
/** ${comment}---删除${comment} */
|
||||
export const fetchDelete${classUppercaseName} = (data: any) => {
|
||||
return http.request<BaseResult<any>>('delete', '${classLowercaseName}/delete${classUppercaseName}', {data});
|
||||
export const batchDelete${classUppercaseName} = (data: any) => {
|
||||
return http.request<Result<string>>('delete', '${classLowercaseName}', {data});
|
||||
};
|
|
@ -1,13 +1,16 @@
|
|||
import {defineStore} from 'pinia';
|
||||
import {fetchAdd${classUppercaseName}, fetchDelete${classUppercaseName}, fetchUpdate${classUppercaseName}} from '';
|
||||
import {pageSizes} from '@/enums/baseConstant';
|
||||
import {query${classUppercaseName}Page,get${classUppercaseName}Detail, create${classUppercaseName}, update${classUppercaseName}ById,batchDelete${classUppercaseName}} from '@/api/${classLowercaseName}';
|
||||
import {storeMessage} from '@/utils/message';
|
||||
import {storePagination} from '@/store/useStorePagination';
|
||||
import { storePagination } from "@/utils/pageResultUtil";
|
||||
|
||||
/**
|
||||
* ${comment} Store
|
||||
*/
|
||||
export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store', {
|
||||
* ${comment} Store
|
||||
* 数据库表名称:${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @since ${date}
|
||||
*/
|
||||
export const use${classUppercaseName}Store = defineStore('${classLowercaseName}Store', {
|
||||
state() {
|
||||
return {
|
||||
// ${comment}列表
|
||||
|
@ -15,8 +18,8 @@ export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store'
|
|||
// 查询表单
|
||||
form: {
|
||||
#foreach($item in $columnInfoList)
|
||||
// $!{item.comment}
|
||||
$!{item.columnName}: undefined,
|
||||
// $!{item.comment}
|
||||
$!{item.lowercaseName}: undefined,
|
||||
#end
|
||||
},
|
||||
// 分页查询结果
|
||||
|
@ -24,7 +27,7 @@ export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store'
|
|||
currentPage: 1,
|
||||
pageSize: 30,
|
||||
total: 1,
|
||||
pageSizes,
|
||||
pageSizes: 0,
|
||||
},
|
||||
// 加载
|
||||
loading: false,
|
||||
|
@ -33,36 +36,42 @@ export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store'
|
|||
getters: {},
|
||||
actions: {
|
||||
/** 获取${comment} */
|
||||
async get${classUppercaseName}List() {
|
||||
async fetch${classUppercaseName}Page() {
|
||||
// 整理请求参数
|
||||
const data = {...this.pagination, ...this.form};
|
||||
const data = {...this.pagination, ...this.form} as any;;
|
||||
delete data.pageSizes;
|
||||
delete data.total;
|
||||
delete data.background;
|
||||
|
||||
// 获取${comment}列表
|
||||
const result = await fetchGet${classUppercaseName}List(data);
|
||||
const result = await query${classUppercaseName}Page(data);
|
||||
|
||||
// 公共页面函数hook
|
||||
const pagination = storePagination.bind(this);
|
||||
return pagination(result);
|
||||
},
|
||||
|
||||
/** 查看${comment}详情 */
|
||||
async get${classUppercaseName}Detail(data:any){
|
||||
const result = await get${classUppercaseName}Detail(data);
|
||||
return result.data;
|
||||
},
|
||||
|
||||
/** 添加${comment} */
|
||||
async add${classUppercaseName}(data: any) {
|
||||
const result = await fetchAdd${classUppercaseName}(data);
|
||||
async create${classUppercaseName}(data: any) {
|
||||
const result = await create${classUppercaseName}(data);
|
||||
return storeMessage(result);
|
||||
},
|
||||
|
||||
/** 修改${comment} */
|
||||
async update${classUppercaseName}(data: any) {
|
||||
const result = await fetchUpdate${classUppercaseName}(data);
|
||||
async update${classUppercaseName}ById(data: any) {
|
||||
const result = await update${classUppercaseName}ById(data);
|
||||
return storeMessage(result);
|
||||
},
|
||||
|
||||
/** 删除${comment} */
|
||||
async delete${classUppercaseName}(data: any) {
|
||||
const result = await fetchDelete${classUppercaseName}(data);
|
||||
async batchDelete${classUppercaseName}(data: any) {
|
||||
const result = await batchDelete${classUppercaseName}(data);
|
||||
return storeMessage(result);
|
||||
},
|
||||
},
|
||||
|
|
|
@ -1,17 +1,46 @@
|
|||
import type { BaseModel } from "@/types/base";
|
||||
|
||||
/**
|
||||
* ${comment}
|
||||
* 数据库表:${tableName}
|
||||
* ${comment}列表
|
||||
* 数据库表名称:${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @since ${date}
|
||||
*/
|
||||
export type ${classUppercaseName}Result = {
|
||||
export interface ${classUppercaseName}ListItem extends BaseModel{
|
||||
#foreach($field in $columnInfoList)
|
||||
/* $field.comment */
|
||||
#if($field.javascriptType == "object")
|
||||
$field.columnName: any
|
||||
#else
|
||||
$field.columnName: $field.javascriptType
|
||||
/* $field.comment */
|
||||
$field.lowercaseName: $field.javascriptType;
|
||||
|
||||
#end
|
||||
};
|
||||
|
||||
/**
|
||||
* ${comment}提交表单
|
||||
* 数据库表名称:${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @since ${date}
|
||||
*/
|
||||
export interface ${classUppercaseName}Form {
|
||||
#foreach($field in $columnInfoList)
|
||||
/* $field.comment */
|
||||
$field.lowercaseName: $field.javascriptType;
|
||||
|
||||
#end
|
||||
};
|
||||
|
||||
/**
|
||||
* ${comment}详情
|
||||
* 数据库表名称:${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @since ${date}
|
||||
*/
|
||||
export interface ${classUppercaseName}Info {
|
||||
#foreach($field in $columnInfoList)
|
||||
/* $field.comment */
|
||||
$field.lowercaseName: $field.javascriptType | undefined;
|
||||
|
||||
#end
|
||||
};
|
|
@ -1,21 +1,23 @@
|
|||
<script lang="ts" setup>
|
||||
import {ref} from 'vue';
|
||||
import {FormInstance} from 'element-plus';
|
||||
import {FormProps} from '';
|
||||
import {ref} from 'vue';
|
||||
import {FormInstance} from 'element-plus';
|
||||
import { ${classUppercaseName}Info } from '@/types/${classLowercaseName}/${classLowercaseName}DataType.ts';
|
||||
import { rules } from '../utils/${classLowercaseName}-columns';
|
||||
import {FormInline} from './utils/hook';
|
||||
|
||||
const props = withDefaults(defineProps<FormProps>(), {
|
||||
const props = withDefaults(defineProps<FormInline>(), {
|
||||
formInline: () => ({
|
||||
#foreach($item in $columnInfoList)
|
||||
#if(${item.fieldName})
|
||||
// $!{item.comment}
|
||||
${item.fieldName}: undefined,
|
||||
#if(${item.lowercaseName})
|
||||
// $!{item.comment}
|
||||
${item.lowercaseName}: undefined,
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
}),
|
||||
});
|
||||
|
||||
const formRef = ref<FormInstance>();
|
||||
const form = ref(props.formInline);
|
||||
const form = ref(props.formInline());
|
||||
|
||||
defineExpose({formRef});
|
||||
</script>
|
||||
|
@ -25,9 +27,9 @@
|
|||
#foreach($item in $columnInfoList)
|
||||
|
||||
<!-- $item.comment -->
|
||||
<el-form-item :label="$t('${item.fieldName}')" prop="$item.fieldName">
|
||||
<el-input v-model="form.$item.fieldName" autocomplete="off" type="text"
|
||||
:placeholder="$t('input') + $t('${item.fieldName}')"/>
|
||||
<el-form-item label="${comment}" prop="$item.lowercaseName">
|
||||
<el-input v-model="form.$item.lowercaseName" autocomplete="off" type="text"
|
||||
placeholder="输入${item.comment}"/>
|
||||
</el-form-item>
|
||||
#end
|
||||
</el-form>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<script lang="ts" setup>
|
||||
import {onMounted, ref} from 'vue';
|
||||
import {deleteIds, onSearch} from '';
|
||||
import {FormInstance} from "element-plus";
|
||||
import {onMounted, ref} from 'vue';
|
||||
import {FormInstance} from "element-plus";
|
||||
import { useRenderIcon } from '@/components/ReIcon/src/hooks';
|
||||
import Delete from '~icons/ep/delete';
|
||||
import EditPen from '~icons/ep/edit-pen';
|
||||
import Refresh from '~icons/ep/refresh';
|
||||
import AddFill from '~icons/ri/add-circle-line';
|
||||
import { selectUserinfo } from '@/components/RePureTableBar/Userinfo/columns';
|
||||
import { deleteIds, onSearch, onDeleteBatch, onAdd, onDelete, onUpdate,FormInline } from './utils/hook';
|
||||
import { columns } from './utils/${classLowercaseName}-columns';
|
||||
import { use${classUppercaseName}Store } from '@/store/modules/system/${classLowercaseName}';
|
||||
|
||||
const tableRef = ref();
|
||||
const formRef = ref();
|
||||
|
@ -15,7 +23,7 @@
|
|||
|
||||
/** 当分页发生变化 */
|
||||
const onPageSizeChange = async (value: number) => {
|
||||
${classLowercaseName}Store.pagination.pageSize = value;
|
||||
${classLowercaseName}Store.pagination.pageSize = value;
|
||||
await onSearch();
|
||||
};
|
||||
|
||||
|
@ -43,29 +51,29 @@
|
|||
#foreach($item in $columnInfoList)
|
||||
|
||||
<!-- $item.comment -->
|
||||
<el-form-item :label="$t('${item.fieldName}')" prop="${item.fieldName}">
|
||||
<el-input v-model="${classLowercaseName}Store.form.${item.fieldName}"
|
||||
:placeholder="`$leftBrace$t('input')}$leftBrace$t('${item.fieldName}')}`"
|
||||
<el-form-item label="${item.comment}" prop="${item.lowercaseName}">
|
||||
<el-input v-model="${classLowercaseName}Store.form.${item.lowercaseName}"
|
||||
placeholder="输入${item.comment}"
|
||||
class="!w-[180px]" clearable/>
|
||||
</el-form-item>
|
||||
#end
|
||||
<el-form-item>
|
||||
<el-button :icon="useRenderIcon('ri:search-line')" :loading="${classLowercaseName}Store.loading" type="primary"
|
||||
@click="onSearch"> {{ $t('search')
|
||||
}}
|
||||
@click="onSearch">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> {{ $t('buttons.reset') }}</el-button>
|
||||
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> 重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<PureTableBar :columns="columns" title="${classDescription}" @fullscreen="tableRef.setAdaptive()"
|
||||
@refresh="onSearch">
|
||||
<template #buttons>
|
||||
<el-button :icon="useRenderIcon(AddFill)" type="primary" @click="onAdd"> {{ $t('addNew') }}</el-button>
|
||||
<el-button :icon="useRenderIcon(AddFill)" type="primary" @click="onAdd"> 新增</el-button>
|
||||
|
||||
<!-- 批量删除按钮 -->
|
||||
<el-button v-show="deleteIds.length > 0" :icon="useRenderIcon(Delete)" type="danger" @click="onDeleteBatch">
|
||||
{{ $t('delete_batches') }}
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
|
@ -105,17 +113,18 @@
|
|||
|
||||
<template #operation="{ row }">
|
||||
<el-button :icon="useRenderIcon(EditPen)" :size="size" class="reset-margin" link type="primary"
|
||||
@click="onUpdate(row)"> {{ $t('modify')
|
||||
}}
|
||||
@click="onUpdate(row)">
|
||||
修改
|
||||
</el-button>
|
||||
<el-button :icon="useRenderIcon(AddFill)" :size="size" class="reset-margin" link type="primary"
|
||||
@click="onAdd"> {{ $t('addNew') }}
|
||||
@click="onAdd">
|
||||
添加
|
||||
</el-button>
|
||||
<!-- TODO 待完成 -->
|
||||
<el-popconfirm :title="`${leftBrace}$t('delete')}${row.email}?`" @confirm="onDelete(row)">
|
||||
<el-popconfirm :title="`确认删除?`" @confirm="onDelete(row)">
|
||||
<template #reference>
|
||||
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
|
||||
{{ $t('delete') }}
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
|
|
|
@ -1,28 +1,27 @@
|
|||
import {reactive} from 'vue';
|
||||
import type {FormRules} from 'element-plus';
|
||||
import { $t } from '@/plugins/i18n';
|
||||
|
||||
export const columns: TableColumnList = [
|
||||
{type: 'selection', align: 'left'},
|
||||
{type: 'index', index: (index: number) => index + 1, label: '序号', width: 60},
|
||||
#foreach($field in $columnInfoList)
|
||||
// $field.comment
|
||||
{label: $t('$field.fieldName'), prop: '$field.fieldName'},
|
||||
{label: "$field.comment", prop: '$field.lowercaseName'},
|
||||
#end
|
||||
{label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160},
|
||||
{label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160},
|
||||
{label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130},
|
||||
{label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130},
|
||||
{label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation'},
|
||||
{label: "更新时间", prop: 'updateTime', sortable: true, width: 160},
|
||||
{label: "创建时间", prop: 'createTime', sortable: true, width: 160},
|
||||
{label: "创建用户", prop: 'createUser', slot: 'createUser', width: 130},
|
||||
{label: "更新用户", prop: 'updateUser', slot: 'updateUser', width: 130},
|
||||
{label: "操作", fixed: 'right', width: 210, slot: 'operation'},
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
export const rules = reactive < FormRules > ({
|
||||
#foreach($field in $columnInfoList)
|
||||
// $field.comment
|
||||
$field.fieldName: [{
|
||||
$field.lowercaseName: [{
|
||||
required: true,
|
||||
message: `$leftBrace$t('input')}$leftBrace$t('${field.fieldName}')}`,
|
||||
message: `需要输入${field.lowercaseName}`,
|
||||
trigger: 'blur'
|
||||
}],
|
||||
#end
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
import {addDialog} from '@/components/BaseDialog/index';
|
||||
import { addDialog } from '@/components/ReDialog/index';
|
||||
import {h, ref} from 'vue';
|
||||
import {message, messageBox} from '@/utils/message';
|
||||
import DeleteBatchDialog from "@/components/Table/DeleteBatchDialog.vue";
|
||||
import { use${classUppercaseName}Store } from '@/store/modules/system/${classLowercaseName}';
|
||||
import ${classUppercaseName}Dialog from '../components/${classLowercaseName}-dialog.vue';
|
||||
import type { ${classUppercaseName}Info } from '@/types/${classLowercaseName}/${classLowercaseName}DataType.ts';
|
||||
import type { FormItemProps } from 'element-plus';
|
||||
|
||||
export interface FormInline {
|
||||
formInline?: () => ${classUppercaseName}Info;
|
||||
}
|
||||
|
||||
export const formRef = ref();
|
||||
// 删除ids
|
||||
|
@ -11,19 +19,19 @@ const ${classLowercaseName}Store = use${classUppercaseName}Store();
|
|||
/** 搜索初始化${comment} */
|
||||
export async function onSearch() {
|
||||
${classLowercaseName}Store.loading = true;
|
||||
await ${classLowercaseName}Store.get${classUppercaseName}List();
|
||||
await ${classLowercaseName}Store.fetch${classUppercaseName}Page();
|
||||
${classLowercaseName}Store.loading = false;
|
||||
}
|
||||
|
||||
/** 添加${comment} */
|
||||
export function onAdd() {
|
||||
addDialog({
|
||||
title: `$leftBrace $t("addNew")}$leftBrace$t("${classLowercaseName}")}`,
|
||||
title: `添加${comment}`,
|
||||
width: '30%',
|
||||
props: {
|
||||
formInline: {
|
||||
#foreach($item in $columnInfoList)
|
||||
$!{item.columnName}: undefined,
|
||||
$!{item.columnName}: undefined,
|
||||
#end
|
||||
},
|
||||
},
|
||||
|
@ -36,7 +44,7 @@ export function onAdd() {
|
|||
formRef.value.formRef.validate(async (valid: any) => {
|
||||
if (!valid) return;
|
||||
|
||||
const result = await ${classLowercaseName}Store.add${classUppercaseName}(form);
|
||||
const result = await ${classLowercaseName}Store.create${classUppercaseName}(form);
|
||||
if (!result) return;
|
||||
done();
|
||||
await onSearch();
|
||||
|
@ -48,12 +56,12 @@ export function onAdd() {
|
|||
/** 更新${comment} */
|
||||
export function onUpdate(row: any) {
|
||||
addDialog({
|
||||
title: `$leftBrace$t("modify")}$leftBrace$t("${classLowercaseName}")}`,
|
||||
title: `修改${comment}`,
|
||||
width: '30%',
|
||||
props: {
|
||||
formInline: {
|
||||
#foreach($item in $columnInfoList)
|
||||
$!{item.columnName}: row.$!{item.fieldName},
|
||||
$!{item.lowercaseName}: row.$!{item.lowercaseName},
|
||||
#end
|
||||
}
|
||||
},
|
||||
|
@ -66,7 +74,7 @@ export function onUpdate(row: any) {
|
|||
formRef.value.formRef.validate(async (valid: any) => {
|
||||
if (!valid) return;
|
||||
|
||||
const result = await ${classLowercaseName}Store.update${classUppercaseName}({...form, id: row.id});
|
||||
const result = await ${classLowercaseName}Store.update${classUppercaseName}ById({...form, id: row.id});
|
||||
if (!result) return;
|
||||
done();
|
||||
await onSearch();
|
||||
|
@ -81,15 +89,15 @@ export const onDelete = async (row: any) => {
|
|||
|
||||
// 是否确认删除
|
||||
const result = await messageBox({
|
||||
title: $t('confirmDelete'),
|
||||
title: "确认删除${comment}?",
|
||||
showMessage: false,
|
||||
confirmMessage: undefined,
|
||||
cancelMessage: $t("cancel_delete"),
|
||||
cancelMessage: "已取消",
|
||||
});
|
||||
if (!result) return;
|
||||
|
||||
// 删除数据
|
||||
await ${classLowercaseName}Store.delete${classUppercaseName}([id]);
|
||||
await ${classLowercaseName}Store.batchDelete${classUppercaseName}([id]);
|
||||
await onSearch();
|
||||
};
|
||||
|
||||
|
@ -99,7 +107,7 @@ export const onDeleteBatch = async () => {
|
|||
const formDeletedBatchRef = ref();
|
||||
|
||||
addDialog({
|
||||
title: $t('deleteBatchTip'),
|
||||
title: "批量删除${comment}",
|
||||
width: '30%',
|
||||
props: {formInline: {confirmText: ''}},
|
||||
draggable: true,
|
||||
|
@ -113,11 +121,11 @@ export const onDeleteBatch = async () => {
|
|||
const text = options.props.formInline.confirmText.toLowerCase();
|
||||
if (text === 'yes' || text === 'y') {
|
||||
// 删除数据
|
||||
await ${classLowercaseName}Store.delete${classUppercaseName}(ids);
|
||||
await ${classLowercaseName}Store.batchDelete${classUppercaseName}(ids);
|
||||
await onSearch();
|
||||
|
||||
done();
|
||||
} else message($t('deleteBatchTip'), {type: 'warning'});
|
||||
} else message("批量删除失败", {type: 'warning'});
|
||||
});
|
||||
},
|
||||
});
|
||||
|
|
|
@ -3,13 +3,12 @@ package com.auth.service.base.controller;
|
|||
import com.auth.common.model.common.result.PageResult;
|
||||
import com.auth.common.model.common.result.Result;
|
||||
import com.auth.common.model.common.result.ResultCodeEnum;
|
||||
import com.auth.dao.base.entity.DictEntity;
|
||||
import com.auth.model.base.dto.DictDto;
|
||||
import com.auth.model.base.vo.DictVo;
|
||||
import com.auth.dao.base.entity.DictEntity;
|
||||
import com.auth.service.base.service.DictService;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
@ -34,14 +33,9 @@ public class DictController {
|
|||
private final DictService dictService;
|
||||
|
||||
@Operation(summary = "分页查询系统数据字典", description = "分页查询系统数据字典")
|
||||
@GetMapping("{page}/{limit}")
|
||||
public Result<PageResult<DictVo>> getDictPage(
|
||||
@Parameter(name = "page", description = "当前页", required = true)
|
||||
@PathVariable("page") Integer page,
|
||||
@Parameter(name = "limit", description = "每页记录数", required = true)
|
||||
@PathVariable("limit") Integer limit,
|
||||
DictDto dto) {
|
||||
Page<DictEntity> pageParams = new Page<>(page, limit);
|
||||
@GetMapping()
|
||||
public Result<PageResult<DictVo>> getDictPage(DictDto dto) {
|
||||
Page<DictEntity> pageParams = new Page<>(dto.getPageIndex(), dto.getPageSize());
|
||||
PageResult<DictVo> pageResult = dictService.getDictPage(pageParams, dto);
|
||||
return Result.success(pageResult);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue