mybatis plus 模板生成 带增加的valid验证

//mybatisplus代码生成
package com.model;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class ModuleMPGenerator {

    public static final String DB_URL = "jdbc:mysql://192.168.1.51:3306/manager_area?useUnicode=true&characterEncoding=utf8&useSSL=true&allowMultiQueries=true&verifyServerCertificate=false&serverTimezone=GMT%2B8";
    public static final String DB_USERNAME = "root";
    public static final String DB_PASSWORD = "123456";
    public static final String DB_DRIVERNAME = "com.mysql.jdbc.Driver";
    public static final String GC_AUTHOR = "一念花开";
    public static final String GC_OUTDIR = "src\\main\\java";
    public static final String PARENT_NAME = "com.area";//父包名
    public static final String MODULE_NAME = "example";//模块名
    // 声明要生成的表
    public static final String[] IN_TABLES = {"park_type"};
    //不生成的表
    public static final String[] EX_TABLES = {""};

    public static void main(String[] args) {
        //===java端
        AutoGenerator g = new AutoGenerator();
        // 全局配置
        g.setGlobalConfig(setGlobalConfig());
        // 数据源配置
        g.setDataSource(setDataSourceConfig());
        // 表生成策略
        g.setStrategy(setStrategyConfig());
        // 包配置
        g.setPackageInfo(setPackageConfig());
        //模板策略
        g.setTemplate(setTemplateConfig());
        g.execute();
        //===前端
        AutoGenerator g2 = new AutoGenerator();
        g2.setGlobalConfig(setGlobalConfig2());
        // 数据源配置
        g2.setDataSource(setDataSourceConfig());
        // 表生成策略
        g2.setStrategy(setStrategyConfig());
        // 包配置
        g2.setPackageInfo(setPackageConfig2());
        //模板策略
        g2.setTemplate(setTemplateConfig2());
        g2.execute();

        //===java端 增加
        AutoGenerator g3 = new AutoGenerator();
        g3.setGlobalConfig(setGlobalConfig3());
        // 数据源配置
        g3.setDataSource(setDataSourceConfig());
        // 表生成策略
        g3.setStrategy(setStrategyConfig());
        // 包配置
        g3.setPackageInfo(setPackageConfig3());
        //模板策略
        g3.setTemplate(setTemplateConfig3());
        g3.execute();
    }

    // 全局配置
    public static GlobalConfig setGlobalConfig() {
        GlobalConfig config = new GlobalConfig();
        config.setOutputDir(GC_OUTDIR) // 这里就直接输出到项目里面,不用再复制进来
                .setFileOverride(false) // 是否覆盖已有文件 默认值:false
                .setOpen(true)//open 是否打开输出目录 默认值:true
                .setEnableCache(false)//是否在xml中添加二级缓存配置 默认值:`false
                .setAuthor(GC_AUTHOR)// 开发人员  默认值:null
                .setKotlin(false) //开启 Kotlin 模式 默认值:false
                .setSwagger2(false)// 开启 swagger2 模式 默认值:false
                .setActiveRecord(false)//开启 ActiveRecord 模式 默认值:false
                .setBaseResultMap(false) //开启 BaseResultMap 默认值:false
                .setBaseColumnList(false)//开启 baseColumnList 默认值:false
                .setDateType(DateType.TIME_PACK)//时间类型对应策略  默认值:TIME_PACK
                //类的命名 如下配置 %s 为占位符
                .setEntityName("%s") //实体命名方式 默认值:null 例如:%sEntity 生成 UserEntity
                .setControllerName("%sController")//controller 命名方式 默认值:null 例如:%sAction 生成 UserAction
                .setServiceName("%sService")//%sService
                .setServiceImplName("%sServiceImpl")//service impl 命名方式 默认值:null 例如:%sBusinessImpl 生成 UserBusinessImpl
                .setMapperName("%sMapper")//mapper 命名方式 默认值:null 例如:%sDao 生成 UserDao
                .setXmlName("%sMapper")//默认值:null 例如:%sDao 生成 UserDao.xml
                .setIdType(null);// 指定生成的主键的ID类型 默认值:null
        return config;
    }

    // 数据源配置
    public static DataSourceConfig setDataSourceConfig() {
        DataSourceConfig dataSourceConfig = new DataSourceConfig();

        dataSourceConfig.setDbQuery(new MySqlQuery()) // 数据库信息查询 //默认mysql
                .setDbType(DbType.MYSQL)//数据库类型
                .setSchemaName("public")
                .setTypeConvert(new MySqlTypeConvert()) //类型转换 默认mysql
                .setUrl(DB_URL)
                .setUsername(DB_USERNAME)
                .setPassword(DB_PASSWORD)
                .setDriverName(DB_DRIVERNAME);
        return dataSourceConfig;
    }

    // 表生成策略
    public static StrategyConfig setStrategyConfig() {
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(true)//是否大写命名
                .setSkipView(false) //是否跳过视图
                .setNaming(NamingStrategy.underline_to_camel)// 表名映射 驼峰命名
                .setColumnNaming(NamingStrategy.underline_to_camel)// 字段名映射 驼峰命名
                //下列两项  仅仅 可以配置一项
                .setInclude(IN_TABLES)
                //.setExclude(EX_TABLES)
                .setEntityColumnConstant(true)//实体 是否生成字段常量
                .setEntityLombokModel(true)//实体 是否为lombok模型(默认 false)
                .setEntityBuilderModel(true)//是否为构建者模型(默认 false)
                .entityTableFieldAnnotationEnable(true) //是否生成实体时,生成字段注解
                .setRestControllerStyle(true)//生成 @RestController 控制器

                .setTablePrefix(null)//表前缀
                .setFieldPrefix(null)//字段前缀
                .setSuperEntityClass(null)//自定义继承的Entity类全称,带包名
                .setSuperEntityColumns(null)//自定义基础的Entity类,公共字段
                .setSuperMapperClass(null)//
                .setSuperServiceClass(null)//
                .setSuperServiceImplClass(null)
                .setSuperControllerClass(null)//
                .setControllerMappingHyphenStyle(false); //驼峰转连字符 默认false
        //.setLogicDeleteFieldName("status"); // 逻辑删除字段名称
        return strategyConfig;
    }

    // 包配置策略
    public static PackageConfig setPackageConfig() {
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent(PARENT_NAME)//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
                .setModuleName(MODULE_NAME)
                .setEntity("entity");//entity 包名
        return packageConfig;
    }
    //view页面
    // 模板策略
    public static TemplateConfig setTemplateConfig() {
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig
                .setController("templates/controller.java.vm");// /templates/entity.java 模板路径配置,默认再templates
//                .setEntity("templates/ennity.java.vm")
//                .setService(null)
//                .setServiceImpl(null)
//                .setMapper(null)
//                .setXml(null);
        return templateConfig;
    }




    // 全局配置
    public static GlobalConfig setGlobalConfig2() {
        GlobalConfig config = new GlobalConfig();
        config.setOutputDir("src\\main\\resources\\") // 这里就直接输出到项目里面,不用再复制进来
                .setFileOverride(false) // 是否覆盖已有文件 默认值:false
                .setAuthor(GC_AUTHOR)// 开发人员  默认值:null
                .setDateType(DateType.TIME_PACK)//时间类型对应策略  默认值:TIME_PACK
                //类的命名 如下配置 %s 为占位符
               .setControllerName("%s.html");//controller 命名方式 默认值:null 例如:%sAction 生成 UserAction

        return config;
    }

    // 包配置策略
    public static PackageConfig setPackageConfig2() {
        PackageConfig packageConfig = new PackageConfig();
        packageConfig//.setParent("\\resouces\\")//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
                .setModuleName("View\\");
        return packageConfig;
    }

    // 模板策略
    public static TemplateConfig setTemplateConfig2() {
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig
                .setController("templates/view.java.vm")// /templates/entity.java 模板路径配置,默认再templates
                .setEntity(null)
                .setService(null)
                .setServiceImpl(null)
                .setMapper(null)
                .setXml(null);
        return templateConfig;
    }


    //增加java类型
    // 全局配置
    public static GlobalConfig setGlobalConfig3() {
        GlobalConfig config = new GlobalConfig();
        config.setOutputDir(GC_OUTDIR) // 这里就直接输出到项目里面,不用再复制进来
                .setFileOverride(false) // 是否覆盖已有文件 默认值:false
                .setAuthor(GC_AUTHOR)// 开发人员  默认值:null
                .setDateType(DateType.TIME_PACK)//时间类型对应策略  默认值:TIME_PACK
                //类的命名 如下配置 %s 为占位符
                .setEntityName("%sAdd");//controller 命名方式 默认值:null 例如:%sAction 生成 UserAction

        return config;
    }

    // 包配置策略
    public static PackageConfig setPackageConfig3() {
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent(PARENT_NAME)//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
                .setModuleName(MODULE_NAME)
                .setEntity("entity");//entity 包名
        return packageConfig;
    }

    // 模板策略
    public static TemplateConfig setTemplateConfig3() {
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig
                .setController(null)// /templates/entity.java 模板路径配置,默认再templates
                .setEntity("templates/ennityAdd.java.vm")
                .setService(null)
                .setServiceImpl(null)
                .setMapper(null)
                .setXml(null);
        return templateConfig;
    }
}

base.vm

包:
${package.Entity}
${package.Controller}
${package.Service}
${package.Mapper}



类名:
${entity} 对象
${table.comment} 对象注解
${table.entityPath} 对象名路径名
${table.controllerName}
${table.serviceName}
${table.mapperName}




其他:
${author} 作者
${date} 当前日期

表内字段:
${field.propertyName} 字段名
${field.propertyType} 字段类型
${field.comment} 字段注解

#foreach($field in ${table.fields})
<div class="layui-inline">
    <label class="layui-form-label">${field.comment}</label>
    <div class="layui-input-block">
        <input type="text" name="${field.propertyName}" id="${field.propertyName}" placeholder="请输入${field.comment}" autocomplete="off"
               class="layui-input">
    </div>
</div>
#end

ennity.java.vm

package ${package.Entity};

#if(${activeRecord})
import java.io.Serializable;

#end
#foreach($pkg in ${table.importPackages})
import ${pkg};
#end
#if(${entityLombokModel})

//import com.baomidou.mybatisplus.annotations.Version;

import lombok.Data;
import lombok.experimental.Accessors;
import lombok.EqualsAndHashCode;
#end


/**
 * <p>
 * ${entity}
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
#if(${entityLombokModel})
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
#end
#if(${table.convert})
@TableName("${table.name}")
#end
#if(${superEntityClass})
public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
#elseif(${activeRecord})
public class ${entity} extends Model<${entity}> {
#else
public class ${entity} implements Serializable {
#end

private static final long serialVersionUID = 1L;

## ----------  BEGIN 字段循环遍历  ----------
#foreach($field in ${table.fields})
    #if(${field.keyFlag})
        #set($keyPropertyName=${field.propertyName})
    #end
    #if("$!field.comment" != "")
    /**
     * ${field.comment}
     */
    #end
    #if(${field.keyFlag})
    ## 主键
        #if(${field.keyIdentityFlag})
        @TableId(value="${field.name}", type= IdType.AUTO)
        #elseif(${field.convert})
        @TableId("${field.name}")
        #end
    ## 普通字段
    #elseif(${field.fill})
    ## -----   存在字段填充设置   -----
        #if(${field.convert})
        @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
        #else
        @TableField(fill = FieldFill.${field.fill})
        #end
    #elseif(${field.convert})
    @TableField("${field.name}")
    #end
## 乐观锁注解
    #if(${versionFieldName}==${field.name})
    @Version
    #end
## 逻辑删除注解
    #if(${logicDeleteFieldName}==${field.name})
    @TableLogic
    #end
    #if(${field.propertyType}=="LocalDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    #end
    #if(${field.propertyType}=="LocalDateTime")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    #end
private ${field.propertyType} ${field.propertyName};

#end
## ----------  END 字段循环遍历  ----------
#if(!${entityLombokModel})
    #foreach($field in ${table.fields})
        #if(${field.propertyType.equals("boolean")})
            #set($getprefix="is")
        #else
            #set($getprefix="get")
        #end

    public ${field.propertyType} ${getprefix}${field.capitalName}() {
            return ${field.propertyName};
            }

        #if(${entityBuilderModel})
        public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
        #else
        public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
        #end
            this.${field.propertyName} = ${field.propertyName};
        #if(${entityBuilderModel})
                return this;
        #end
            }
    #end
#end

#if(${entityColumnConstant})
    #foreach($field in ${table.fields})
    public static final String ${field.name.toUpperCase()} = "${field.name}";

    #end
#end
#if(${activeRecord})
@Override
protected Serializable pkVal() {
    #if(${keyPropertyName})
            return this.${keyPropertyName};
    #else
            return this.id;
    #end
        }

#end
#if(!${entityLombokModel})
@Override
public String toString() {
        return "${entity}{" +
    #foreach($field in ${table.fields})
        #if($!{velocityCount}==1)
                "${field.propertyName}=" + ${field.propertyName} +
        #else
                ", ${field.propertyName}=" + ${field.propertyName} +
        #end
    #end
        "}";
        }
#end
}

ennityAdd.java.vm

package ${package.Entity};
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import ${package.Entity}.*;
#if(${activeRecord})
import java.io.Serializable;

#end
#foreach($pkg in ${table.importPackages})
import ${pkg};
#end

#set($subArray = $entity.split("Add"))
#if($subArray.size()>1)
    $subArray.get(0)
#end
#if(${entityLombokModel})

//import com.baomidou.mybatisplus.annotations.Version;

import lombok.Data;
import lombok.experimental.Accessors;
import lombok.EqualsAndHashCode;
#end


/**
 * <p>
 * ${entity}
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
#if(${entityLombokModel})
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
#end
#if(${table.convert})
@TableName("${table.name}")
#end
#if(${superEntityClass})
public class ${entity} extends $subArray.get(0) extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
#elseif(${activeRecord})
public class ${entity} extends $subArray.get(0) extends Model<${entity}> {
#else
public class ${entity} extends $subArray.get(0) implements Serializable {
#end

private static final long serialVersionUID = 1L;

## ----------  BEGIN 字段循环遍历  ----------
#foreach($field in ${table.fields})
    #if(${field.keyFlag})
        #set($keyPropertyName=${field.propertyName})
    #end
    #if("$!field.comment" != "")
    /**
     * ${field.comment}
     */
    #end
    #if(${field.keyFlag})
    ## 主键
        #if(${field.keyIdentityFlag})
    @TableId(value="${field.name}", type= IdType.AUTO)
        #elseif(${field.convert})
    @TableId("${field.name}")
        #end
    ## 普通字段
    #elseif(${field.fill})
    ## -----   存在字段填充设置   -----
        #if(${field.convert})
    @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
        #else
    @TableField(fill = FieldFill.${field.fill})
        #end
    #elseif(${field.convert})
    @TableField("${field.name}")
    #end
    #if(${field.propertyType}=="String")
    @NotEmpty(message = "${field.comment}不能为空")
    #else
    @NotNull(message = "${field.comment}不能为空")
    #end
    #if(${field.propertyType}=="LocalDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    #end
    #if(${field.propertyType}=="LocalDateTime")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    #end
## 乐观锁注解
    #if(${versionFieldName}==${field.name})
    @Version
    #end
## 逻辑删除注解
    #if(${logicDeleteFieldName}==${field.name})
    @TableLogic
    #end
private ${field.propertyType} ${field.propertyName};

#end

}

controller.java.vm

package ${package.Controller};


import com.model.bean.ResultModel;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import ${package.Mapper}.${table.mapperName};
import ${package.Entity}.*;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.web.bind.annotation.RequestParam;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
 * <p>
 * $!{table.comment} 前端控制器
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */

@RestController
@RequestMapping("/${table.entityPath}")
public class ${table.controllerName} {

    @Resource
    private ${table.mapperName} ${table.mapperName};

    /**
     * @param  ${entity}
     * @return ResultModel
     */
    @RequestMapping("/save")
    public ResultModel save(@Validated ${entity}Add ${entity}) {
        int insert=${table.mapperName}.insert(${entity});
        boolean bool = insert > 0;
        if(bool){
            return  ResultModel.ok("${table.comment}增加成功");
        }
        return ResultModel.error("${table.comment}增加失败");
    }

    /**
     * @param  ${entity}
     * @return ResultModel
     */
    @RequestMapping("/updateById")
    public ResultModel updateById(${entity} ${entity}) {
        int update = ${table.mapperName}.updateById(${entity});
        boolean bool = update > 0;
        if(bool){
        return  ResultModel.ok("${table.comment}修改成功");
        }
        return ResultModel.error("${table.comment}修改失败");
    }

    /**
     * @param  //主键
     * @return ResultModel
     */
    @RequestMapping("/deleteById")
    public ResultModel deleteById(${entity} ${entity}) {
        //非自增id 删除无计数
        int delete = ${table.mapperName}.deleteById(${entity}.getId());
        boolean bool = delete > 0;
        if(bool){
        return  ResultModel.ok("${table.comment}删除成功");
        }
        return ResultModel.error("${table.comment}删除失败");
    }

    /**
     * @param  //主键的集合
     * @return ResultModel
     */
    @RequestMapping("/deleteList")
    public ResultModel deleteList(List<Integer> ids) {
        int delete = ${table.mapperName}.deleteBatchIds(ids);
        boolean bool = delete > 0;
        if(bool){
        return  ResultModel.ok("${table.comment}删除成功"+delete+"");
        }
        return ResultModel.error("${table.comment}删除失败");
    }

    /**
     * @param  //主键
     * @return ResultModel
     */
    @RequestMapping("/selectById")
    public ResultModel selectById(${entity} ${entity}) {

        ${entity} = ${table.mapperName}.selectById(${entity}.getId());
        return  ResultModel.okData("${table.comment}查询成功",${entity});
    }

    public QueryWrapper<${entity}> getWrapper(${entity} ${entity}) {
        //取属性

        QueryWrapper<${entity}> wrapper = new QueryWrapper<>();

        //判断处理

        return wrapper;
    }

    /**
     * @param  ${entity}
     * @return ResultModel
     */
    @RequestMapping("/select")
    public ResultModel select(${entity} ${entity}) {
        List<${entity}> ${entity}s = ${table.mapperName}.selectList(getWrapper(${entity}));

        return  ResultModel.okData("${table.comment}查询成功",${entity}s);
    }

    /**
     * @param  ${entity}
     * @return ResultModel
     */
    @RequestMapping("/selectPage")
    public ResultModel selectPage(${entity} ${entity}, @RequestParam("page") Integer current, @RequestParam("limit") Integer size) {
        Page Page = new Page<>();
        Page.setSize(size);
        Page.setCurrent(current);

        IPage<${entity}> ${entity}IPage = ${table.mapperName}.selectPage(Page, getWrapper(${entity}));
        List<${entity}> records = ${entity}IPage.getRecords();
        long total = ${entity}IPage.getTotal();
        Object[] data = {records, total};
        return  ResultModel.okData("${table.comment}查询成功",data);
    }
}

view.java.vm

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>小区物业管理系统</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" href="../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../layuiadmin/style/admin.css" media="all">
    <script src="../layuiadmin/jquery-1.8.0.min.js"></script>
    <script src="../layuiadmin/configure.js"></script>
</head>
<body>

<div class="layui-card layadmin-header">
    <div class="layui-breadcrumb" lay-filter="breadcrumb">
        <a lay-href="">主页</a>
        <a><cite>组件</cite></a>
        <a><cite>数据表格</cite></a>
        <a><cite>开启头部工具栏</cite></a>
    </div>
</div>

<div class="layui-fluid">
    <div class="layui-row layui-col-space15">
        <div class="layui-col-md12">
            <div class="layui-card">
                <div class="layui-card-header">
                    <b>${table.comment}管理</b>
                </div>

                <div class="layui-card-body">
                    <div class="layui-form layui-card-header layuiadmin-card-header-auto">
                        <div class="layui-form-item">
                            /*循环所有字段*/
                            #foreach($field in ${table.fields})
                            <div class="layui-inline">
                                <label class="layui-form-label">${field.comment}</label>
                                <div class="layui-input-block">
                                    <input type="text" name="${field.propertyName}" id="${field.propertyName}" placeholder="请输入${field.comment}" autocomplete="off"
                                    class="layui-input">
                                </div>
                            </div>
                            #end
                            <div class="layui-inline">
                                <button class="layui-btn layuiadmin-btn-useradmin" lay-submit
                                        lay-filter="select${entity}">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                    <div class="test-table-reload-btn" style="margin-bottom: 10px;">
                        <button class="layui-btn" data-type="reload" id="add${entity}">添加${table.comment}</button>
                    </div>
                    <table class="layui-hide" id="test-table-toolbar" lay-filter="test-table-toolbar"></table>

                    <script type="text/html" id="test-table-toolbar-barDemo">
                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i
                                class="layui-icon layui-icon-edit"></i>编辑</a>
                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i
                                class="layui-icon layui-icon-delete"></i>删除</a>
                    </script>
                </div>
            </div>
        </div>
    </div>
</div>

<!--添加界面-->
<div class="layui-form" lay-filter="layuiadmin-form-tags" id="add${entity}View"
     style="padding-top: 30px; text-align: center; display: none">
    <div class="layui-form-item">
     /*循环所有字段*/
    #foreach($field in ${table.fields})
        <div class="layui-inline">
            <label class="layui-form-label">${field.comment} <span style="color: red;">*</span></label>
            <div class="layui-input-inline">
                <input type="text" id="add${field.propertyName}" lay-verify="add${field.propertyName}" autocomplete="off"
                class="layui-input">
            </div>
        </div>
    <div>
    #end
    <div class="layui-form-item">
        <div class="layui-form-item timo-finally">
            <button class="layui-btn ajax-submit" id="add${entity}Confirm"><i class="fa fa-check-circle"></i> 保存</button>
            <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 取消</button>
        </div>
    </div>
</div>

<!--修改界面-->
<div class="layui-form" lay-filter="layuiadmin-form-tags" id="update${entity}View"
     style="padding-top: 30px; text-align: center; display: none">
    <div class="layui-form-item">
        /*循环所有字段*/
    #foreach($field in ${table.fields})
        <div class="layui-inline">
            <label class="layui-form-label">${field.comment} <span style="color: red;">*</span></label>
            <div class="layui-input-inline">
                <input type="text" id="update${field.propertyName}" lay-verify="update${field.propertyName}" autocomplete="off"
                class="layui-input">
            </div>
        </div>
    <div>
    #end
    <div>

    <div class="layui-form-item">
        <div class="layui-form-item timo-finally">
            <button class="layui-btn ajax-submit" id="update${entity}Confirm"><i class="fa fa-check-circle"></i> 保存</button>
            <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 取消</button>
        </div>
    </div>
</div>
<script src="../layuiadmin/layui/layui.js"></script>
<script>
    var user_phone = sessionStorage.getItem('phone');
    var user_password = sessionStorage.getItem('password');
    var manageAreaId = sessionStorage.getItem('manageAreaId');
    var manageAreaName = sessionStorage.getItem('manageAreaName');
    var companyId = sessionStorage.getItem('companyId');

    layui.config({
        base: '../layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index' //主入口模块
    }).use(['index', 'table', "form", "laydate"], function () { //加载所需模块
        var admin = layui.admin;
        var table = layui.table;
        var layer = layui.layer;
        var form = layui.form;
        var laydate = layui.laydate;

        //监听搜索
        form.on('submit(select${entity})', function (data) {
            var field = data.field;
            //执行重载
            table.reload('test-table-toolbar', {
                where: field
            });
        });

        //加载页面
        table.render({
            elem: '#test-table-toolbar'
            , url: Url + '${table.entityPath}/selectPage'
            , where: {
                /*循环字段*/
                #foreach($field in ${table.fields})
                ${field.propertyName}: ${field.propertyName},
                #end
                "id": id,
            }
            , method: 'post'
            , toolbar: '#toolbarDemo'
            , cols: [[
                /*循环字段*/
                #foreach($field in ${table.fields})
                {field: '${field.propertyName}', title: '${field.comment}'},
                #end
                {field: 'classify', title: '操作', toolbar: '#test-table-toolbar-barDemo'}
            ]]
            , page: true
            , response: {
                statusCode: 200 //重新规定成功的状态码为 200,table 组件默认为 0
            }
            , parseData: function (res) { //将原始数据解析成 table 组件所规定的数据
                if (res.code == 200) {
                    return {
                        "code": res.code, //解析接口状态
                        "msg": res.msg, //解析提示文本
                        "count": res.data[1], //解析数据长度
                        "data": res.data[0] //解析数据列表
                    };
                } else {
                    return {
                        "code": res.code, //解析接口状态
                        "msg": res.msg //解析提示文本
                    };
                }
            }
            , done: function (res) {//成功后返回的参数
                console.log(res);
            }
        });

        //添加事件
        $("#add${entity}").on("click", function () {
            layer.open({
                type: 1,
                title: "添加${table.comment}",
                area: ['800px', '400px'],
                content: $("#add${entity}View")//引用的弹出层的页面层的方式加载修改界面表单
            });
        });
        table.on('tool(test-table-toolbar)', function (obj) {
            var data = obj.data;
            console.log(data);
            //删除事件
            if (obj.event === 'del') {
                layer.confirm('确定要删除此吗?', function (index) {
                //点击确定后的执行方法
                    $.ajax({
                        url: Url + "${table.entityPath}/deleteById",
                        type: 'POST',
                        data: {
                            id: obj.data.id
                        },
                        dataType: 'json',
                        contentType: 'application/x-www-form-urlencoded',
                        success: function (data) {
                            if (data.code == 200) {
                                layer.msg('删除成功!', {
                                    offset: '125px'
                                    , icon: 1
                                    , time: 800 //1秒后跳转
                                }, function () {
                                    layer.closeAll();//关闭所有的弹出层
                                    obj.del();
                                    layer.close(index);
                                });
                            } else {
                                layer.msg('删除失败!' + data.msg, {
                                    offset: '125px'
                                    , icon: 1
                                    , time: 1000 //1秒后跳转
                                });
                            }
                        }
                    });
                });
            //修改事件
            } else if (obj.event === 'edit') {
                 /*循环字段*/
                #foreach($field in ${table.fields})
                $('#update${field.propertyName}').val(obj.data.${field.propertyName});
                #end
                form.render();
                form.render('select');
                layer.open({
                    type: 1,
                    title: "修改${table.comment}信息",
                    area: ['800px', '400px'],
                    content: $("#update${entity}View")//引用的弹出层的页面层的方式加载修改界面表单
                });
            }
            //修改${table.comment}动作
            $("#update${entity}Confirm").on("click", function () {
                /*循环字段*/
                #foreach($field in ${table.fields})
                var ${field.propertyName} = $('#update${field.propertyName}').val();
                #end
                /*循环字段*/
                #foreach($field in ${table.fields})
                if (${field.propertyName} === '') {
                        layer.msg('${field.comment}不能为空', {icon: 5});
                return;
                } else
                #end
                {
                    $.ajax({
                        url: Url + "${table.entityPath}/updateById",
                        type: 'POST',
                        data: {
                            id: obj.data.id,
                            /*循环字段*/
                            #foreach($field in ${table.fields})
                            ${field.propertyName} : ${field.propertyName},
                            #end
                            id: id
                        },
                        dataType: 'json',
                        contentType: 'application/x-www-form-urlencoded',
                        success: function (data) {
                            if (data.code == 200) {
                                layer.msg('修改成功!', {
                                    offset: '125px'
                                    , icon: 1
                                    , time: 800 //1秒后跳转
                                }, function () {
                                    layer.closeAll();//关闭所有的弹出层
                                    window.location.reload();
                                });
                            } else {
                                layer.msg('修改失败!' + data.msg, {
                                    offset: '125px'
                                    , icon: 1
                                    , time: 1000 //1秒后跳转
                                });
                            }
                        }
                    });
                }
            });


        });
        //添加${table.comment}动作
        $("#add${entity}Confirm").on("click", function () {
             /*循环字段*/
            #foreach($field in ${table.fields})
            var ${field.propertyName} = $('#add${field.propertyName}').val();
            #end
            /*循环字段*/
            #foreach($field in ${table.fields})
            if (${field.propertyName} === '') {
            layer.msg('${field.comment}不能为空', {icon: 5});
            return;
            } else
            #end
              {
                $.ajax({
                    url: Url + "${table.entityPath}/save",
                    type: 'POST',
                    data: {
                        /*循环字段*/
                        #foreach($field in ${table.fields})
                        ${field.propertyName} : ${field.propertyName},
                        #end
                        id: id
                    },
                    dataType: 'json',
                    contentType: 'application/x-www-form-urlencoded',
                    success: function (data) {
                        if (data.code == 200) {
                            layer.msg('添加成功!', {
                                offset: '125px'
                                , icon: 1
                                , time: 800 //1秒后跳转
                            }, function () {
                                layer.closeAll();//关闭所有的弹出层
                                window.location.reload();
                            });
                        } else {
                            layer.msg('添加失败!' + data.msg, {
                                offset: '125px'
                            });
                        }
                    }
                });
            }
        });
    });

    /* 点击取消关闭修改的弹出层 */
    $(".close-popup").click(function (e) {
        layer.closeAll();//关闭所有的弹出层
    });
</script>

</body>
</html>

猜你喜欢

转载自www.cnblogs.com/ynhk/p/11540726.html