前端页面展示MySQL数据并实现前后端互动

Posted aaronthon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端页面展示MySQL数据并实现前后端互动相关的知识,希望对你有一定的参考价值。

前端页面使用H-ui框架  后端使用flask框架  数据库使用mysql  连接数据库通过pymysql实现

前端代码如下

<html lang="en">
<head>

    <meta charset="utf-8">
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
    <meta http-equiv="Cache-Control" content="no-siteapp"/>
    <title>风险预警系统</title>
    <link rel="stylesheet" type="text/css" href="../static/ui/static/h-ui/css/H-ui.min.css"/>
    <link rel="stylesheet" type="text/css" href="../static/ui/static/h-ui.admin/css/H-ui.admin.css"/>
    <link rel="stylesheet" type="text/css" href="../static/ui/lib/Hui-iconfont/1.0.8/iconfont.css"/>
    <link rel="stylesheet" type="text/css" href="../static/ui/static/h-ui.admin/skin/default/skin.css" id="skin"/>
    <link rel="stylesheet" type="text/css" href="../static/ui/static/h-ui.admin/css/style.css"/>
    <link rel="stylesheet" type="text/css" href="../static/css/out.css"/>
    <style>
        .hide {
            display: none;
        }
    </style>
    <script type="text/javascript">
        var region = {
            "反洗钱":
                {
                    "": [""],
                    "黑名单": ["", "黑名单一致性", "黑名单实时监控"],

                    "客户风险等级": ["", "首次评估", "定期评估", "客户风险等级唯一性", ""],

                    "可疑交易": ["", "可疑交易定性意见留痕", "可疑交易上报及时性"],
                    "法人客户": ["", "身份要素信息完整性"],
                    "个人客户": ["", "身份证件有效期"]
                },
            "财务":
                {
                    "": [""],
                    "赔付差异": ["", "财务支付金额与业务金额不一致", "核赔不通过,财务表显示已支付成功", "财务表显示已支付,理赔端无对应数据", "理赔业务表中未包含公估费", "财务支出时间比理赔业务表时间提前", "理赔主表中的总支付金额小于理赔业务表中的总支付金额"]

                }
        }

    </script>
</head>
<body>
<nav class="breadcrumb"><i id="logo"></i> <a class="btn btn-success radius r"
                                             style="line-height:1.6em;margin-top:3px"
                                             href="javascript:location.replace(location.href);"
                                             title="刷新"><i
        class="Hui-iconfont">&#xe68f;</i></a></nav>

<div class="page-container">

    <div class="text-c">

        <select id="province" onchange="change(this.value);" class="select-box" style="width:200px;">
            <option>请选择一级指标</option>
        </select>

        <select id="city" onchange="countyChange(this.value);" class="select-box" style="width:200px;">
            <option>请选择二级指标</option>
        </select>

        <select id="county" class="select-box" style="width:200px;">
            <option>请选择三级指标</option>
        </select>

        <span>&nbsp;&nbsp;&nbsp;查询数据范围</span>
        <input type="text"
               onfocus="WdatePicker({ maxDate:‘#F{$dp.$D(‘datemax‘)||‘%y-%M-%d‘}‘,dateFmt:‘yyyy-MM-dd‘,isShowToday:false,isShowClear:false })"
               id="datemin"
               class="input-text Wdate" style="width:300px;">
        -
        <input type="text"
               onfocus="WdatePicker({ minDate:‘#F{$dp.$D(‘datemin‘)}‘,maxDate:‘%y-%M-%d‘,dateFmt:‘yyyy-MM-dd‘,isShowToday:false,isShowClear:false })"
               id="datemax"
               class="input-text Wdate" style="width:300px;">

        <button type="button" class="btn btn-success radius" id="tijiao" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索
        </button>

    </div>

    <div class="mt-20">
        <table class="table table-border table-bordered table-hover table-bg thisTable">
            <thead>
            <tr class="text-c">
                <th>序号</th>
                <th>指标名称</th>
                <th>指标日期</th>
                <th>监控状态</th>
                <th>下载</th>
            </tr>
            </thead>

            <tbody id="tbody" class="text-c">

            </tbody>
        </table>

        <div id="page1" class="r pager" style="margin-top: 10px"></div>
        <div style="font-size: 18px; font-family: 宋体; margin-top: 5px">监控状态:1--预警  0--正常</div>
    </div>
</div>

<!--_footer-->
<script type="text/javascript" src="../static/ui/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="../static/ui/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="../static/ui/static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="../static/ui/static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer-->
<script src=‘../static/js/threelevellinkpage.js‘></script>
<!--业务代码-->
<script type="text/javascript" src="../static/ui/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="../static/ui/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="../static/ui/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">


    $(function () {
        $(#DataTables_Table_0_length).hide();
        $(#DataTables_Table_0_filter).hide();
        $(#DataTables_Table_0_previous).hide();
        $(#DataTables_Table_0_next).hide();
        $(#DataTables_Table_0_info).hide();
        core.getUserListByPage();
        $("#tijiao").click(function () {
            var datemin = $("#datemin").val();
            var datemax = $("#datemax").val();
            var province = $("#province").val();
            var city = $("#city").val();
            var county = $("#county").val();

            core.getUserListByPage(datemin, datemax, province, city, county);

        });



    });
    var core = (function ($$) {
        var getRootPath = function () {
            var curWwwPath = window.document.location.href;
            var pathName = window.document.location.pathname;
            var pos = curWwwPath.indexOf(pathName);
            var localhostPath = curWwwPath.substring(0, pos);
            var projectName = pathName.substring(0, pathName.substr(1).indexOf(/) + 1);
            return (localhostPath + projectName);
        };
        var getPage = function (url, config, content) {
            $.getJSON(url, config, function (res) {
                $(#theme-count).html(res.totalPeo)
                laypage({
                    cont: page1,
                    pages: Math.ceil(res.total / config.pageSize),
                    curr: config.page || 1,
                    group: 10,
                    skip: true,
                    jump: function (obj, first) {
                        if (!first) {
                            config.page = obj.curr;
                            getPage(url, config, content)
                        }

                    }
                });
                $(tbody).html(content(res, config.page))
            });
        };

        function parseUserList(res, currPage) {
            var content = "";
            if (res.total > 0) {
                var i = 1;
                $.each(res.rows, function (i, o) {
                    content += "<tr class="text-c">";
                    content += "<td width="10" title=‘" + o.id + "‘>" + o.curr_page + "</td>";
                    content += "<td width="10" title=‘" + o.target + "‘>" + o.target + "</td>";
                    content += "<td width="10" title=‘" + o.monitor_date + "‘>" + o.monitor_date + "</td>";
                    content += "<td width="10" title=‘" + o.monitir_status + "‘>" + o.monitir_status + "</td>";
                    {#content += "<td width="10"" + "id=‘" +o.target+ o.monitor_date+ ".xls" + "" + "title=‘" + o.monitor_dpwnload + "‘>" + "<button type="button" class="btn btn-secondary radius loadExcel" id="loadExcel" name="" href=""><i class="Hui-iconfont">&#xe640;</i>导出EXCEL
" + "</button>" + o.monitor_dpwnload + "</td>";#}
                    content += "<td width="10"" + "id=‘" + o.target + o.monitor_date + ".xls" + "" + "title=‘" + o.monitor_dpwnload + "‘>" + "<a href="http://127.0.0.1:5000/download_xls?code_n=" + o.monitor_dpwnload + ""><button type="button" class="btn btn-secondary radius loadExcel " + o.hide_h + "" id="loadExcel" ><i class="Hui-iconfont">&#xe640;</i>导出EXCEL
" + "</button></a>" + "</td>";

                    content += "</tr>";
                });
                $(.laypage_main ).show();
                return content;
            } else {
                content += "<tr class=‘odd‘>"
                content += "<td valign="top" colspan="12" class="dataTables_empty">没有数据</td>"
                content += "</tr>"
                $(.laypage_main ).hide();
                return content;
            }
        }

        var getUserListByPage = function (datemin, datemax, province, city, county, curr) {
            core.getPage(core.getRootPath() + /log_mysql_data?, {
                page: curr || 1,
                pageSize: 10,
                datemin: datemin,
                datemax: datemax,
                province: province,
                city: city,
                county: county,
            }, parseUserList);
        };

        return {
            getRootPath: getRootPath,
            getPage: getPage,
            getUserListByPage: getUserListByPage
        }
    })(jQuery);


</script>

</body>
</html>

后端代码

# 获取mysql存的日志信息
@BLACKLIST_blu.route(‘/log_mysql_data‘, methods=["GET"])
def Log_mysql():
    # code = ‘1________‘
    start_date = request.args.get("datemin", None)
    end_date = request.args.get("datemax", None)
    # 编码 
    province = request.args.get("province", None)
    city = request.args.get("city", None)
    county = request.args.get("county", None)
    # print(county, ‘county‘)
    # 编码
    code = targetcode(province, city, county)
    # print(code, ‘code‘)

    if start_date is None:
        start_date = ‘1970-01-01‘
    if end_date is None:
        end_date = ‘9999-12-31‘
    if start_date is ‘‘:
        start_date = ‘1970-01-01‘
    if end_date is ‘‘:
        end_date = ‘9999-12-31‘
    curr = int(request.args.get("page"))
    pageSize = int(request.args.get("pageSize"))
    curr = (curr - 1) * pageSize
    sql = "SELECT * FROM inner_factors_summary_display where " + "‘" + str(
        start_date) + "‘ <= FactorsDate and FactorsDate <= " + "‘" + str(
        end_date) + "‘" + " and ThirdFactorCode like ‘" + str(code) + "‘" + " limit " + str(
        pageSize) + " offset " + str(curr) + " ;"
    # print(sql, ‘sql‘)
    cc = bd_db.cursor()
    cn_list = []

    # count = "select count(id) from inner_factors_summary_display"
    count = "SELECT count(id) FROM inner_factors_summary_display where " + "‘" + str(
        start_date) + "‘ <= FactorsDate and FactorsDate <= " + "‘" + str(
        end_date) + "‘" + " and ThirdFactorCode like ‘" + str(code) + "‘"
    # cc.execute(sql, {"datemin": start_date, "datemax": end_date, "pageSize": pageSize, "curr": curr})
    cc.execute(sql)
    content = cc.fetchall()
    n = 0
    for i in content:
        n += 1
        # print(i,"i")
        if i[4] == ‘1‘:
            hide = ‘‘
        else:
            hide = ‘hide‘
        curr_page = curr + n
        cn_list.append(

            {‘id‘: i[0], ‘target‘: i[1], ‘monitor_date‘: i[2], ‘monitir_status‘: i[4], ‘monitor_dpwnload‘: i[7],
             ‘hide_h‘: hide, ‘curr_page‘: curr_page})

    cc.execute(count)
    count1 = cc.fetchall()[0][0]
    data = {"rows": cn_list, "total": count1}

    return json.dumps(data)


# 获取前端页面  风险预警系统
@BLACKLIST_blu.route(‘/earlywarningsystem‘, methods=["GET", "POST"])
def Narlywarningsystem():
    if request.method == "GET":
        return render_template(‘translate.html‘)

给个编码代码

from inner_ctrl01.common.utils import bd_db


def targetcode(province, city, county):
    province_code = None
    city_code = None
    county_code = None
    code_str = "_________"

    if province == 请选择一级指标 or province == None:
        province_code = ___
    else:
        if province == ‘‘:
            province_code = "___"
        if province != "" and province != None:
            sql = "SELECT FactorsCode FROM inner_frist_level_factors where FactorsCName = " + "" + str(province) + ""
            cc = bd_db.cursor()
            cc.execute(sql)
            content = cc.fetchall()
            province_code = str(content[0][0])

    if city == 请选择二级指标or city == None:
        city_code = ___
    else:
        if city == ‘‘:
            city_code = ___
        if city != ‘‘ and city != None:
            sql = "SELECT FactorsCode FROM inner_second_level_factors where FactorsCName = " + "" + str(city) + "‘;"
            cc = bd_db.cursor()
            cc.execute(sql)
            content = cc.fetchall()
            province_code = ‘‘
            city_code = str(content[0][0])

    if county == 请选择三级指标 or county == None:
        county_code = ___
    else:
        if county == ‘‘:
            county_code = ___
        if county != "" and county != None:
            sql = "SELECT FactorsCode FROM inner_third_level_factors where FactorsCName = " + "" + str(county) + "‘;"
            cc = bd_db.cursor()
            cc.execute(sql)
            content = cc.fetchall()
            province_code = ‘‘
            city_code = ‘‘
            county_code = str(content[0][0])

    if province == None:
        province_code = "___"
        city_code = "___"
        county_code = "___"


    code_str = str(province_code) + str(city_code) + str(county_code)

    return code_str

数据库结构

# inner_frist_level_factors
id 自增 主键 不能为空
FactorsCname varchar
FactorsCode  varchar null unique
# inner_second_level_factors
id 自增 主键 不能为空
FactorsCname varchar
FactorsCode  varchar null unique
FatherCode varchar null 
# inner_third_level_factors
id 自增 主键 不能为空
FactorsCname varchar
FactorsCode  varchar null unique
FatherCode varchar null
FactorsEname varchar
# inner_factors_summary_display
FactorsCname varchar
FactorsDate varchar
FactorsStatus varchar
FactorsFlag varchar
thirdFactorsCode varchar
FactorsDownloadUrl varchar
FactorsEname varchar

以上四张表可以根据自己需求设计。我们将第四张表的数据传到前端页面。

 其他部门在前几篇博客里面。

本篇博客不适合新人,结束!

以上是关于前端页面展示MySQL数据并实现前后端互动的主要内容,如果未能解决你的问题,请参考以下文章

前后端分离方案以及技术选型

微信小程序前后端分离怎么实现

关于前后端分离与不分离

//……关于前后端分离与不分离

浅谈前后端分离。

网站开发过程中,前后端是如何进行交互的?