大家好!

早在2014年本人就已经利用业余时间开发自己的ICG之代码生成器系统、依靠bootstrap的崛起本人也在不断完善此应用、目的是为了减少开发人员的工作量、

减少不必要的复制粘贴操作,该系统已经到了V2.0版本;目前功能如下:

server端:创建项目、创建表、设计器功能、生产【js、html、ajax、dal、sql】等文件、枚举管理、依靠用户输入的字段名称自动转换为英文字段等功能;

client端:数据查询、文件上传、int float 字符型等类型的数据校验、必填数据项的校验、数据分页、数据新增、数据修改等功能;

该系统运行环境:window+IIS+framwork+MYSQL/MSSQL

接下来介绍一下本人开发的系统的架构图:

看图说话了、、系统的大致结构是这样的:

server段生成代码流程是:

分享一下主要设计器的界面:

生成的主要的JS代码:

var userid = "df9d3eb8-48d7-45bc-bfcf-06f471a7344d", tiptime = 2000, pagesize = 10, TESTTABID = -1;  //当前主ID
var SLarray = []; //clear data obj
var endtime = "";

//common data begin
var myidarray = [];
//for-----code
myidarray.push("Number");
myidarray.push("name");
myidarray.push("sex");
myidarray.push("mobiletel");
myidarray.push("QQNumber");
myidarray.push("studyclass");
$(function () {
    jQuery("#divadd").validationEngine(); //验证
    $("select").trigger("liszt:updated");
    $("select").chosen();
    //新增
    $("#btnadd").click(function () {
        StudentID = -1;

        for (var s = 0; s < myidarray.length; s++) {
            var fileobj = $("#" + myidarray[s]).html();
            if (fileobj == null || fileobj == undefined || fileobj == "") {
                $("input[myid='" + myidarray[s] + "']").val("");
            }
            else {
                $("#" + myidarray[s]).attr("path", "");
                $("#" + myidarray[s]).html("");
                $("#" + myidarray[s]).parent().children("a").hide();
            }
            fileobj = null;
        }
        $("label[name='labsting']").hide();
        $("input").show();
        $("#btnsave").show();
        $("#btnedit").hide();
        $("#btncancel").show();
        $("a[name='adelete']").hide();
        $("select").val("请选择");
        $("select").trigger("liszt:updated");
        $("select").chosen();
        $("#divadd").show();
        $("#divlist").hide();
    });
    //自动搜索(文本框)
    $("input[name='icginputsearch']").change(function () {
        var obj = $("input[name='icginputsearch']");
        var para = [];
        endtime = "";
        if (obj != null) {
            $(obj).each(function () {
                if ($(this).val() != "")
                    para.push({ "key": $(this).attr("myid"), "val": $(this).val() });
            });
        }
        obj = $("select[name='selectcontorl']");
        if (obj != null) {
            $(obj).each(function () {
                para.push({ "key": $(this).attr("myid"), "val": $(this).find("option:selected").text() });
            });
        }
        getjsonserach(para, endtime);
    });
    //自动搜索(下拉框)
    $("select[name='selectcontorl']").change(function () {
        var obj = $("input[name='icginputsearch']");
        var para = [];
        endtime = "";
        if (obj != null) {
            $(obj).each(function () {
                if ($(this).val() != "")
                    para.push({ "key": $(this).attr("myid"), "val": $(this).val() });
            });
        }
        obj = $("select[name='selectcontorl']");
        if (obj != null) {
            $(obj).each(function () {
                para.push({ "key": $(this).attr("myid"), "val": $(this).find("option:selected").text() });
            });
        }
        getjsonserach(para, endtime);
    });
    function getjsonserach(para, endtime) {
        $.post("userajax/StudentOP.aspx?" + new Date().getTime() + "" + Math.random(), { "type": "searchbyjson", "data": JSON.stringify(para), "pagesize": pagesize, "endtime": endtime }, function (data) {
            if (data == "nodata") {
                alerttip("无此条件数据!");
                $(".odd").remove();
                $("#btnmore").hide();
                $("#tbodydatalist").html("");
                return false;
            }
            var obj = $.parseJSON(data);

            if (obj.length < pagesize) { $("#btnmore").hide(); }

            if (endtime == "")
                $("#tbodydatalist").html("");

            for (var i = 0; i < obj.length; i++) {

                $("#tbodydatalist").append("<tr id='tr" + obj[i].ID + "'><td class='center'>" + obj[i].Number.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].name.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].sex.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].mobiletel.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].QQNumber.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].studyclass.replace(" 0:00:00", "") + "</td><td class='center'><a class='btn btn-success' onclick=domains('view','" + obj[i].ID + "')><i class='icon-zoom-in icon-white'></i>View</a>&nbsp;<a class='btn btn-info' onclick=domains('edit','" + obj[i].ID + "')><i class='icon-edit icon-white'></i>Edit</a>&nbsp;<a class='btn btn-danger' onclick=domains('delete','" + obj[i].ID + "')><i class='icon-trash icon-white'></i> Delete</a></td></tr>");

                if (i == (obj.length - 1)) {
                    endtime = obj[i].CreatTime;
                }
            }
        });
    }
    //取消新增
    $("#btncancel").click(function () {
        $("#divadd").hide();
        $("#divlist").show();
    });
    //保存方法
    $("#btnsave").click(function () {
        if (!jQuery("#divadd").validationEngine("validate")) {
            return false;
        }
        var temparray = [];
        for (var s = 0; s < myidarray.length; s++) {

            if (myidarray[s] == "sex") {
                temparray.push($("select[myid='" + myidarray[s] + "']").find("option:selected").attr("myval")); continue;
            }
            var fileobj = $("#" + myidarray[s]).html();
            if (fileobj == null || fileobj == undefined || fileobj == "") {
                temparray.push($("input[myid='" + myidarray[s] + "']").val());
            }
            else {
                temparray.push($("#" + myidarray[s]).attr("path") + "#$@#@" + $("#" + myidarray[s]).html()); //path+name
            }
            fileobj = null;
        }
        $.post("userajax/StudentOP.aspx?" + new Date().getTime() + "" + Math.random(), { "type": "add", "myidarray": temparray.toString(), "userid": userid, "StudentID": StudentID }, function (data) {
            endtime = ""; //时间默认值
            StudentID = -1; if (data.length == 36) {
                success("保存成功!");
                for (var s = 0; s < myidarray.length; s++)
                    $("input[myid='" + myidarray[s] + "']").val("");
                temparray = null;
            }

            $("#divadd").hide();
            $("#divlist").show();
            getlist(); //获取前20条
        });
    });

    //页面第一次加载进行渲染
    function load() {
        var obj = $("select[name='SLData']");
        $(obj).each(function () {
            $(this).chosen();
        });
    }
    //加载页面渲染
    load();
    getlist();
    $("#btnmore").click(function () {
        getlist();
    });

    //编辑
    $("#btnedit").click(function () {
        $(this).hide();
        $("#btnsave").show();
        $("label[name='labsting']").hide();
        $("input").show();
        $(".divfeifeisl").show();
        $("a[name='adelete']").show();
        ckisexts();
    });

})//dom end
//getone
function getone(id) {
    StudentID = id; $("#divadd").show();

    $("#divlist").hide();

    if (edittype == "view") {
        $("label[name='labsting']").show();
        $("#btnedit").show();
        $("input").hide();
        $("#btnsave").hide();
        $("a[name='adelete']").hide();
        $(".divfeifeisl").hide();
        $("#btncancel").show();
    }
    else {
        $("label[name='labsting']").hide();
        $("#btnedit").hide();
        $("input").show();
        $("#btnsave").show();
        $("a[name='adelete']").show();
        $(".divfeifeisl").show();
        $("#btncancel").show();
    }

    $("a[name='labsh']").show();

    $.post("userajax/StudentOP.aspx?" + new Date().getTime() + "" + Math.random(), { "type": "getone", "id": id }, function (data) {
        var obj = $.parseJSON(data);
        if (obj == null || obj == "") { ckisexts(); return; }
        for (var s = 0; s < myidarray.length; s++) {

            if (obj[0][myidarray[s]] == "") continue;

            //附件
            if (obj[0][myidarray[s]].indexOf("#$@#@") > -1) {
                $("#" + myidarray[s]).html(obj[0][myidarray[s]].split("#$@#@")[1]); //name
                $("#" + myidarray[s]).attr("path", obj[0][myidarray[s]].split("#$@#@")[0]); //path
            }
            else {
                $("input[myid=" + myidarray[s] + "]").val((obj[0][myidarray[s]]).replace(" 0:00:00", ""));
                $("label[labid='" + myidarray[s] + "']").html((obj[0][myidarray[s]]).replace(" 0:00:00", ""));

                try {
                    $("#selecttype" + myidarray[s]).val((obj[0][myidarray[s]]).replace(" 0:00:00", ""));
                    $("#selecttype" + myidarray[s]).trigger("liszt:updated");
                    $("#selecttype" + myidarray[s]).chosen();
                }
                catch (ex) { }

            }

        }
        ckisexts();
    });
}//获取10行数据
function getlist() {
    //$("#tbodydatalist").html("");
    $.post("userajax/StudentOP.aspx?" + new Date().getTime() + "" + Math.random(), { "type": "getlist", "pagesize": pagesize, "endtime": endtime }, function (data) {
        if (data == "nodata") {
            alerttip("无数据、您可以新增数据!");
            $(".odd").remove();
            $("#btnmore").hide();
            return false;
        }

        var obj = $.parseJSON(data);

        if (obj.length < pagesize) { $("#btnmore").hide(); }

        if (endtime == "")
            $("#tbodydatalist").html("");

        for (var i = 0; i < obj.length; i++) {
            $("#tbodydatalist").append("<tr id='tr" + obj[i].ID + "'><td class='center'>" + obj[i].Number.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].name.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].sex.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].mobiletel.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].QQNumber.replace(" 0:00:00", "") + "</td><td class='center'>" + obj[i].studyclass.replace(" 0:00:00", "") + "</td><td class='center'><a class='btn btn-success' onclick=domains('view','" + obj[i].ID + "')><i class='icon-zoom-in icon-white'></i>View</a>&nbsp;<a class='btn btn-info' onclick=domains('edit','" + obj[i].ID + "')><i class='icon-edit icon-white'></i>Edit</a>&nbsp;<a class='btn btn-danger' onclick=domains('delete','" + obj[i].ID + "')><i class='icon-trash icon-white'></i> Delete</a></td></tr>");
            if (i == (obj.length - 1)) {
                endtime = obj[i].CreatTime;
            }
        }

    })
}
//domain

//检查附件是否有值
function ckisexts() {
    var obja = $("a[name='labsh']")
    $(obja).each(function () {
        if ($(this).html().length < 2) {
            $(this).parent().children("a").hide();
        }
    });
}

var edittype = "view";

function domains(type, id) {
    if (type == "delete") {
        if (confirm("确定删除吗?") == false)
            return;
        $.post("userajax/StudentOP.aspx?" + new Date().getTime() + "" + Math.random(), { "type": "delete", "id": id, "userid": userid }, function (data) {
            if (data == "0") {
                error("您没有权限删除此条数据");
                return;
            }
            else if (data == "1") {
                $("#tr" + id).remove();
                success("删除成功!");
            }
        });
    }
    else if (type == "view") {
        SLarray = [];
        edittype = "view";
        getone(id);
    }
    else if (type == "edit") {
        SLarray = [];
        edittype = "edit";
        getone(id);
    }

}

//判断是否为第二次点击
function SLexists(myenumid) {
    for (var i = 0; i < SLarray.length; i++) {
        if (SLarray[i] == myenumid)
            return true;
    }
    return false;
}

var imgarr = ["jpg", "png", "bmp", "jpeg", "gif"];
function ebin(info) {
    //普通文本
    if (info.indexOf("#$@#@") == -1)
        return info;

    var isimg = false;
    info = info.toLowerCase();

    var tmp = info.split("#$@#@")[1].split(".")[1];//last chars

    for (var i = 0; i < imgarr.length; i++) {
        if (imgarr[i] == tmp) {
            return "<img name='imgusr' src='ajax/" + info.split("#$@#@")[0] + "' alt='" + info.split("#$@#@")[1] + "'  style='height:24px;width:24px' />"
        }
    }

    //doc docx xls xlsx pdf ...
    return "<img name='imgsys' src='img/ico/" + tmp + ".png' alt='cc.name'  style='height:24px;width:24px'/>";
}

/////----------------------common JS-------------------------------------
//错误
var timeoutlength = 3000;
var palce = "bottomRight";
function error(name) {
    $.noty({ "text": name, "layout": palce, "type": "error", "timeout": timeoutlength });
    return;
    //asyncbox.tips(name, 'error', tiptime);
}
//成功
function success(name) {
    $.noty({ "text": name, "layout": palce, "type": "success", "timeout": timeoutlength });
    return;
    //asyncbox.tips(name, 'success', tiptime);
}
//消息
function alerttip(name) {
    $.noty({ "text": name, "layout": palce, "type": "success", "timeout": timeoutlength });  //aler
    return;
    //asyncbox.tips(name, 'alert', tiptime);
}
//等待
function waittips() {
    //asyncbox.tips("please wait...!", 'wait', tiptime * 3);
}

生成的主要的MYSQL代码:

DROP TABLE IF EXISTS `Student`;
create table  `Student`
(
`ID`   varchar(36)  primary key  not null  ,
`Number`  varchar(20) not null  ,
`name`  varchar(30) not null  ,
`sex`  varchar(500) null  ,
`mobiletel`  varchar(50) null  ,
`QQNumber`  varchar(15) null  ,
`studyclass`  varchar(50) null  ,
`CreatTime`  datetime
);
ALTER TABLE `Student` CHANGE COLUMN `CreatTime` `CreatTime` TIMESTAMP NULL DEFAULT now()  ;

图片上传的有点多! 最终生成的demo如下:

http://182.92.155.97:8096/stu.html

http://182.92.155.97:8096/tch.html

有什么好的建议请联系我、谢谢!

以上。

ICG_System之全自动代码生成器V2.0版本的更多相关文章

  1. 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github

    4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ------------------------------------------ ...

  2. RDIFramework.NET平台代码生成器V3.0版本全新发布-更新于20160518(提供下载)

    最新版本请转到:RDIFramework.NET平台代码生成器V3.1版本全新发布-更新于2016-10-08(提供下载) RDIFramework.NET代码生成器V3.0版本修改了针对3.0版本的 ...

  3. go-wingui 2018 全新 v2.0 版本发布,包含重大更新!

    go-wingui 2018 全新 v2.0 版本发布,包含重大更新!使用新版CEF内核Chromium 63.0.3239.109,页面可以使用最新的css3,html5技术.使用delphi7重写 ...

  4. 示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本

    原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...

  5. 百度离线地图API开发V2.0版本

    全面介绍,请看下列介绍地址,改写目前最新版本的百度V2.0地图,已全面实现离线操作,能到达在线功能的95%以上 http://api.jjszd.com:8081/apituiguang/gistg. ...

  6. Inno Setup 精灵显示插件 InnoFairy (V2.0 版本)

    原文 http://restools.hanzify.org/article.asp?id=111 一个如影随形的小精灵会令到你的安装程序更加人性化. 就是这样一个功能的Inno Setup插件, 希 ...

  7. vue过滤器在v2.0版本用法

    vue 1.x 的写法在  vue 2.x版本已经废除 vue 1.x 写法 <body> <div id="app"> {{message | capit ...

  8. v2.0版本小程序开发心得(代码之外)

    总结一些代码之外的事情: 做优先该做的事情 分清主次,一天只有24小时,人的精力也是有限的,而且经常性的是,在某个时间爆发性的产生了大量的问题.这些问题集中的产生,需要一个一个的解决,但是人的精力是有 ...

  9. RDIFramework.NET平台代码生成器V2.8发布-更新于2014-12-31(提供下载)

    RDIFramework.NET平台代码生成器V2.8发布  更新于2014-12-31 注:已经发布了新版本,请转新版本下载: RDIFramework.NET平台代码生成器V3.0版本全新发布-更 ...

随机推荐

  1. vue2.0结合Element实现select动态控制input禁用

    今天有一个盆友问小颖,怎么实现用select动态控制input禁用,也就是说,input默认是可编辑的,但是每当我选一次select,input就会变成禁用,虽然小颖不知道她为什么这样做,因为小颖觉得 ...

  2. lightOJ 1258 Making Huge Palindromes(KMP)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1258 就是求逆串和原串的匹配长度 答案就是原串长度的2倍减去匹配长度即可 第一次我将原 ...

  3. Oracle 12C 新特性之表分区带 异步全局索引异步维护(一次add、truncate、drop、spilt、merge多个分区)

    实验准备:-- 创建实验表CREATE TABLE p_andy(ID number(10), NAME varchar2(40))PARTITION BY RANGE (id)(PARTITION ...

  4. 谈谈我的session跨域处理方法

    情景:公司的一个网站有一个模块(测试模块)需要单独用另外的一个域名(www.btest.com)去访问,即网站需要用两个不同的域名去访问,如首页(www.abc.com)和测试模块(www.xyz.c ...

  5. Ubuntu14.04安装samba

    Ubuntu14.04安装samba 按照惯例,首先介绍Samba.Samba是在Linux系统上实现的SMB(Server Messages Block,信息服务块)协议的一款免费软件.它实现在局域 ...

  6. Hibernate原理

    Hibernate使用基本上会,但是却一直不知道Hibernate内部是怎么工作的 什么是Hibernate? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象 ...

  7. .Net程序员学用Oracle系列(28):PLSQL 之SQL分类和动态SQL

    1.SQL 语句分类 1.1.分类方法及类型 1.2.数据定义语言 1.3.数据操纵语言 1.4.其它语句 2.动态 SQL 理论 2.1.动态 SQL 的用途 2.2.动态 SQL 的语法 2.3. ...

  8. Hibernate map enum type

    1. Bean @Entity @Table(name = "entities") public class Entities { public enum entityType { ...

  9. 为什么要使用addEventListener而不是on监听事件

    昨天回答了一个关于vue的问题 vue 除了input 其他可以用keyup事件嘛? 在vue中没有提供除表单之外其它的keyup绑定方法,可以使用原生的监控键盘的事件,于是给出了代码: mounte ...

  10. CollectioView滚动到指定section的方法

    项目中的需求:collectionView顶部有一个scrollView组成的标签,点击标签,让collectionView滚动到指定的行,滚动collectionView自动切换到顶部指定的标签 实 ...