admin
2021-09-30 1a1a315efb1b5dc294013126f35819e36565040c
src/main/resources/generater/admin/update.ftl
@@ -1,92 +1,272 @@
package ${packageName};
<!DOCTYPE html>
<html class="x-admin-sm">
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Repository;
<head>
    <meta charset="UTF-8">
    <title>${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,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
    <link rel="stylesheet" href="./css/font.css">
    <link rel="stylesheet" href="./css/xadmin.css">
    <script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script>
    <script type="text/javascript" src="./js/xadmin.js"></script>
    <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/http.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
    <!--[if lt IE 9]>
    <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
    <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>
<body>
<div class="layui-fluid">
    <div class="layui-row">
        <form class="layui-form" lay-filter="add">
<#list importClasses as value>
import ${value};
</#list>
            <#list rowsList as value>
                <div class="layui-form-item">
                    <label for="L_appCode" class="layui-form-label">
                        <#if value.params.require??&&value.params.require>
                           <span class="x-red">*</span>
                        </#if>
                        ${value.params.title}</label>
                    <div class="layui-input-block">
                    <#switch value.type>
                        <#case "CheckBox"><#include "/admin/form/checkBox.ftl" ><#break>
                        <#case "Img">  <#include "/admin/form/img.ftl"><#break>
                        <#case "Password">  <#include "/admin/form/password.ftl"><#break>
                        <#case "RadioGroup">  <#include "/admin/form/radioGroup.ftl"><#break>
                        <#case "Select">  <#include "/admin/form/select.ftl"><#break>
                        <#case "Switch">  <#include "/admin/form/switch.ftl"><#break>
                        <#case "Text">  <#include "/admin/form/text.ftl"><#break>
                        <#case "TextArea">  <#include "/admin/form/textArea.ftl"><#break>
                        <#default>
                    </#switch>
                    </div>
                <#if (value.desc!"") != "">
                    <div class="layui-form-mid layui-word-aux">${value.desc}</div>
                </#if>
                </div>
            </#list>
@Repository
public class ${daoName} extends ${baseDaoClassName}<${entityClassName}>{
            <div class="layui-form-item">
                <label for="L_remarks" class="layui-form-label"></label>
                <button class="layui-btn" lay-filter="add" lay-submit="">确定修改</button>
            </div>
        </form>
    </div>
</div>
<script>
    //初始化上传控件
    var uploadTool = {
        callback: null,
        chooseImage: {},
        uploadArray: new Array(),
        init: function (upload) {
            this.uploadArray = new Array();
              <#list rowsList as value>
                  <#if value.type=='Img'&&value.params.uploadApi??>
            this.uploadArray.push(upload.render({
                elem: '#upload_${value.key}', //绑定元素
                url: '${value.params.uploadApi}', //上传接口
                <#if value.params.uploadApiParams??&&(value.params.uploadApiParams?size>0)>
                data: {
                    <#list value.params.uploadApiParams as item>
                      "${item.key}": "${item.value}",
                    </#list>
                },
                </#if>
                auto: false,
                accept: 'images',
                acceptMime: 'image/*',
                field: "file_${value.key}",
                choose: function (obj) {
                    //将每次选择的文件追加到文件队列
                    var files = obj.pushFile();
                    //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
                    obj.preview(function (index, file, result) {
                        console.log(index); //得到文件索引
                        console.log(file); //得到文件对象
                        console.log(result); //得到文件base64编码,比如图片
                        $("#img_${value.key}").attr("src", result);
                        //记录选中的文件
                        uploadTool.chooseImage["${value.key}"] = "1";
                    });
                },
                before: function (obj) {
                    layer.load();
                },
                done: function (res, index, upload) {
                    layer.closeAll('loading'); //关闭loading
                    //上传完毕后删除
                    if (res.code == 0) {
                        //获取链接
                        $("input[name='${value.key}']").val(res.data.url);
                        delete chooseImage["${value.key}"];
                        if (Object.keys(chooseImage).length == 0) {
                            //全部上传成功
                            callback();
                        }
                    } else {
                        layer.msg(res.msg);
                    }
                },
                error: function (index, upload) {
                    layer.msg("${value.params.title}上传出错");
                    layer.closeAll('loading'); //关闭loading
                }
            }));
                  </#if>
              </#list>
  public void updateSelective(${entityClassName} bean) {
        Query query = new Query();
        Update update=new Update();
        query.addCriteria(Criteria.where("${identityColumn.columnName}").is(bean.${identityColumn.columnMehtod}));
        <#if columnDataList??>
           <#list columnDataList as value>
        if(bean.${value.columnMehtod} != null) {
            update.set("${value.columnName}", bean.${value.columnMehtod});
        },
        upload: function (result) {
            if (this.uploadArray.length > 0) {
                this.callback = result;
                //同时上传
                for (var i = 0; i < this.uploadArray.length; i++) {
                    this.uploadArray[i].upload();
                }
            } else {
                result();
            }
        }
           </#list>
        </#if>
        update.set("updateTime", new Date());
        update(query, update);
  }
    };
  public List<${entityClassName}> list(DaoQuery daoQuery){
        Query query=getQuery(daoQuery);
        if(daoQuery.sortList!=null&&daoQuery.sortList.size()>0){
            query.with(new Sort(daoQuery.sortList));
</script>
<script>
    //填充数据
    function fillData(form) {
        var id = ksapp.getQueryParam("id");
        if (id) {
        } else {
            layer.msg("id为空");
            return;
        }
        query.skip(daoQuery.start);
        query.limit(daoQuery.count);
        return findList(query);
  }
  public long count(DaoQuery daoQuery){
        Query query=getQuery(daoQuery);
        return count(query);
  }
    private Query getQuery(DaoQuery daoQuery){
          List<Criteria> andList=new ArrayList<>();
           <#list daoQueryColumnDataList as value>
               <#if (value.type!"") == "Date">
               if(daoQuery.min${value.columnName?cap_first}!=null){
                    andList.add(Criteria.where("${value.columnName}").gte(daoQuery.min${value.columnName?cap_first}));
               }
               if(daoQuery.max${value.columnName?cap_first}!=null){
                    andList.add(Criteria.where("${value.columnName}").lt(daoQuery.max${value.columnName?cap_first}));
               }
               <#else>
               if(daoQuery.${value.columnName}!=null){
                 <#if (value.queryType!"") == "equal">
                    andList.add(Criteria.where("${value.columnName}").is(daoQuery.${value.columnName}));
                 <#else>
                      andList.add(Criteria.where("${value.columnName}").regex(daoQuery.${value.columnName}));
                 </#if>
               }
               </#if>
          </#list>
          Query query=new Query();
          Criteria[]  ands=new Criteria[andList.size()];
          andList.toArray(ands);
          if(ands.length>0){
              query.addCriteria(new Criteria().andOperator(ands));
          }
          return query;
        ksapp.postJSON('${detailApi}', {id: id}, function (res) {
            if (res.code == 0) {
                form.data(res.data);
            } else {
                layer.msg(res.msg);
            }
        }, function (res) {
            layer.msg("详情获取失败");
        });
    }
</script>
  public static class DaoQuery{
     <#if daoQueryColumnDataList??>
       <#list daoQueryColumnDataList as value>
        <#if (value.type!"") == "Date">
        public ${value.type} min${value.columnName?cap_first};
        public ${value.type} max${value.columnName?cap_first};
        <#else>
        public ${value.type} ${value.columnName};
<script>
    layui.use(['form', 'layer', 'jquery', 'upload'], function () {
        $ = layui.jquery;
        var form = layui.form,
                layer = layui.layer,
                upload = layui.upload;
        var verify = {};
        <#list regexVerifyList as regex>
        verify["${regex.key}"] = [/${regex.expression}/, '${regex.msg}'];
        </#list>
        //自定义验证规则
        form.verify(verify);
        //渲染上传控件
        uploadTool.init(upload);
        //填充表单数据
        //请求数据
        //form.data();
        //监听提交
        form.on('submit(add)',
                function (data) {
                    console.log(data.field);
                    //转换json对象
                    for (key in data.field) {
                        if (key.indexOf(".") > -1) {
                            var value = data.field[key];
                            delete data.field[key];
                            var onkeys = key.split(".");
                            //创建对象
                            if (data.field[onkeys[0]] == undefined) {
                                data.field[onkeys[0]] = {};
                            }
                            data.field[onkeys[0]][onkeys[1]] = value;
                        }
                    }
                    uploadTool.upload(function () {
                        //发异步,把数据提交给php
                        var params = data.field;
                        params.id = ksapp.getQueryParam("id");
                        ksapp.postJSON('${updateApi}', data.field, function (res) {
                            if (res.code == 0) {
                                layer.alert("增加成功", {
                                            icon: 6
                                        },
                                        function () {
                                            //关闭当前frame
                                            xadmin.close();
                                            // 可以对父窗口进行刷新
                                            // xadmin.father_reload();
                                        });
                            } else {
                                layer.msg(res.msg);
                            }
                        }, function (res) {
                        });
                    });
                    return false;
                });
        //请求select的数据API
         <#if preRequestList??&&(preRequestList?size>0)>
             var preRequestCount = ${preRequestList?size}
             <#list preRequestList as request>
                 <#assign  apiKeys=request.params?keys/>
             var params = {};
                 <#list apiKeys as key>
             params["${key}"]=${request.params["${key}"]}
                 </#list>
         ksapp.postJSON('${request.url}', params, function (res) {
             if (res.code == 0) {
                 //填充数据
                 $("${request.fillTarget}").empty();
                 for (var i = 0; i < res.data.length; i++) {
                     var html = "<option value='" + res.data[i].key + "'>";
                     html += res.data[i].value + "</option>";
                     $("${request.fillTarget}").append(html);
                 }
                 //重新渲染表单
                 form.render();
                 preRequestCount--;
                 if (preRequestCount <= 0) {
                     //开始填充数据
                     fillData(form)
                 }
             } else {
                 layer.msg(res.msg);
             }
         }, function (res) {
         });
             </#list>
         <#else>
         fillData(form)
         </#if>
       </#list>
     </#if>
        public int start;
        public int count;
        public List<Sort.Order> sortList;
  }
}
    })
    ;
</script>
</body>
</html>