jquery-easyUI第二篇【综合案例】

基于easyUI开发的一个综合案例模版


<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>练习</title>

    <!-- 引入css文件,不限顺序 -->
    <link rel="stylesheet" href="${pageContext.request.contextPath}/themes/default/easyui.css" type="text/css"></link>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/themes/icon.css" type="text/css"></link>

    <!-- 引入js文件,有顺序限制 -->
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/easyui-lang-zh_CN.js"></script>

  </head>
  <body>

        <!-- Layout布局 -->
        <div id="layoutID" style="width:700px;height:500px" class="easyui-layout" data-options="fit:true">

            <!-- 北 -->
            <div data-options="region:'north',border:true,iconCls:'icon-remove',collapsible:true" style="height:100px;">
                <center><font style="font-size:66px">jQuery-EasyUI组件</font></center>            
            </div>   

            <!-- 南 -->
            <div data-options="region:'south'" style="height:100px;">
                <center><font style="font-size:33px">XX公司版权所有</font></center>           
            </div>   

            <!-- 东 -->
            <div data-options="region:'east',iconCls:'icon-reload'" style="width:100px;"></div>   

            <!-- 西 -->
            <div data-options="region:'west'" style="width:200px;">
                <!-- Accordion分类 -->
                <div 
                    id="accordionID" 
                    class="easyui-accordion" 
                    data-options="fit:true,border:false,selected:-1" 
                    style="width:300px;height:400px;">   
                    <div title="部门管理" data-options="iconCls:'icon-save'" style="padding:10px;">   
                        <!-- Linkbutton按钮 -->
                        <a 
                            id="btn_add" 
                            href="#" 
                            class="easyui-linkbutton" 
                            data-options="iconCls:'icon-add'">增加部门</a><p> 
                        <a 
                            id="btn_find" 
                            href="#" 
                            class="easyui-linkbutton" 
                            data-options="iconCls:'icon-search'">查询部门</a><p> 
                        <a 
                            id="btn_update" 
                            href="#" 
                            class="easyui-linkbutton" 
                            data-options="iconCls:'icon-edit'">修改部门</a><p> 
                        <a 
                            id="btn_delete" 
                            href="#" 
                            class="easyui-linkbutton" 
                            data-options="iconCls:'icon-remove'">删除部门</a><p>  
                    </div>   
                    <div title="人事管理" data-options="iconCls:'icon-reload'" style="padding:10px;">   
                        <!-- tree树 -->              
                        <ul id="treeID" class="easyui-tree" data-options="lines:true">   
                           <li>
                                <span>增加人事</span>
                           </li>
                           <li>
                                <span>查询人事</span>
                                <ul>
                                    <li>
                                        <span>分页查询人事</span>
                                        <ul>
                                            <li>
                                                <span>模糊分页查询人事</span>
                                            </li>
                                            <li>
                                                <span>精确分页查询人事</span>
                                            </li>
                                        </ul>
                                    </li>
                                    <li>
                                        <span>查询所有人事</span>
                                    </li>
                                </ul>
                           </li>
                        </ul>
                    </div>   
                    <div title="客户管理" data-options="iconCls:'icon-reload'" style="padding:10px;">   
                        客户管理    
                    </div> 
                    <div title="权限管理" data-options="iconCls:'icon-reload'" style="padding:10px;">   
                        权限管理    
                    </div>
                    <div title="报表管理" data-options="iconCls:'icon-print'" style="padding:10px;">   
                        报表管理    
                    </div> 
                    <div title="帮助" data-options="iconCls:'icon-help'" style="padding:10px;">   
                        帮助    
                    </div>  
                </div>
            </div>   

            <!-- 中 -->
            <div data-options="region:'center'" style="padding:5px;background:#eee;">
                <!-- Tabs选项卡 -->
                <div 
                    id="tabsID" 
                    class="easyui-tabs" 
                    style="width:500px;height:250px;"
                    data-options="plain:true,border:false,selected:-1,fit:true">   
                </div>
            </div>   

        </div>

        <script type="text/javascript">
            //定位4个按钮
            $("a").click(function(){
                //获取你所单击的按钮的标题
                var title = $(this).text();
                //去空格
                title = $.trim(title);
                //如果title变量是"增加部门"
                if("增加部门" == title){
                    //查看该选项卡是否已经打开
                    var flag = $("#tabsID").tabs("exists",title);
                    //如果未打开
                    if(!flag){
                        //打开选项卡
                        $("#tabsID").tabs("add",{
                            "title" : title,
                            "closable" : true,
                            "content" : "文本",
                            "iconCls" : "icon-add"
                        });
                    }
                }else if("查询部门" == title){
                    var flag = $("#tabsID").tabs("exists",title);
                    if(!flag){
                        //打开选项卡
                        $("#tabsID").tabs("add",{
                            "title" : title,
                            "closable" : true,
                            "content" : "文本",
                            "iconCls" : "icon-search"
                        });
                    }
                }
            });
        </script>
        <script type="text/javascript">
            $(function(){
                //收起所有的选项
                $("#treeID").tree("collapseAll");
            });
        </script>
        <script type="text/javascript">
            $("#treeID").tree({
                onClick : function(node){
                    //获取点击树节点的文本
                    var title = node.text;
                    //去空格
                    title = $.trim(title);
                    //产生tab选项卡
                    var flag = $("#tabsID").tabs("exists",title);
                    //如果没有打开的话
                    if(!flag){
                        //打开选项卡
                        $("#tabsID").tabs("add",{
                            "title" : title,
                            "closable" : true,
                            "href" : "${pageContext.request.contextPath}/empList.jsp",
                            "iconCls" : "icon-search"
                        });
                    }   
                }
            });
        </script>

  </body>
</html>

效果:

这里写图片描述

这里写图片描述


分页

相信我们的分页已经做得不少了,这次我们使用easyUI+Oracle+jdbc来做一个分页…【之前大都都用Mysql,这次用Oracle】

DateGrid会异步以POST方式向服务器传入二个参数:page和rows二个参数,服务端需要哪个,就接收哪个参数

  • page:需要显示的页号
  • rows:需要获取多少条记录

编写emp实体


package zhongfucheng.entity;

import java.io.Serializable;
import java.util.Date;

/**
 * Created by ozc on 2017/7/17.
 */
public class Emp implements Serializable {

    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Integer sal;
    private Integer comm;
    private Integer deptno;

    public Emp() {
    }

    public Emp(Integer empno, String ename, String job, Integer mgr, Date hiredate, Integer sal, Integer comm, Integer deptno) {
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.mgr = mgr;
        this.hiredate = hiredate;
        this.sal = sal;
        this.comm = comm;
        this.deptno = deptno;
    }

    public Integer getEmpno() {
        return empno;
    }

    public void setEmpno(Integer empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Integer getMgr() {
        return mgr;
    }

    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }

    public Date getHiredate() {
        return hiredate;
    }

    public void setHiredate(Date hiredate) {
        this.hiredate = hiredate;
    }

    public Integer getSal() {
        return sal;
    }

    public void setSal(Integer sal) {
        this.sal = sal;
    }

    public Integer getComm() {
        return comm;
    }

    public void setComm(Integer comm) {
        this.comm = comm;
    }

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }
}

编写EmpDao

使用Oracle的语法来实现分页…!


public class EmpDao {
    public  int getPageRecord() throws SQLException {
        QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
        String sql = "SELECT COUNT(EMPNO) FROM EMP";
        String count = queryRunner.query(sql, new ScalarHandler()).toString();
        return Integer.parseInt(count);
    }
    public  List<Emp> getList(int start, int end) throws SQLException {
        QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());

        String sql = "SELECT *FROM (SELECT rownum rownumid,emp.* FROM emp WHERE rownum <= ?) xx WHERE xx.rownumid> ?";

        List<Emp> list = (List<Emp>) queryRunner.query(sql, new Object[]{end, start}, new BeanListHandler(Emp.class));
        return list;
    }
}

编写EmpService

得到对应的分页数据,封装到分页对象中!


public class EmpService {


    private EmpDao empDao = new EmpDao();
    public Page getPageResult(int currentPage) throws Exception {

        Page page = new Page(currentPage, empDao.getPageRecord());
        List<Emp> empList = empDao.getList(page.getStartIndex(), page.getLinesize() * currentPage);
        page.setList(empList);
        return page;
    }

}

处理请求的Servlet

接收page参数,如果为空,就设置为1

把得到的分页数据封装成datagrid要的格式,返回给浏览器!

    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        try {
            //调用service
            EmpService empService = new EmpService();

            //设置编号方式
            request.setCharacterEncoding("UTF-8");

        /*获取客户端传递进来的参数,easyUI使用的是page参数*/
            String pageStart = request.getParameter("page");

            if (pageStart == null || pageStart.length() == 0) {
                pageStart = "1";
            }
            int currentPage = Integer.parseInt(pageStart);
            Page pageResult = empService.getPageResult(currentPage);

            Map map = new HashMap();

            map.put("total", pageResult.getTotalRecord());
            map.put("rows", pageResult.getList());


            //使用第三方工具将map转成json文本
            JSONArray jsonArray = JSONArray.fromObject(map);
            String jsonJAVA = jsonArray.toString();

            //去掉二边的空格
            jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);
            System.out.println("jsonJAVA=" + jsonJAVA);

            //以字符流的方式,将json字符串输出到客户端
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter pw = response.getWriter();
            pw.write(jsonJAVA);
            pw.flush();
            pw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

JSP页面显示


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>

    <title>dataGrid+分页</title>
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
    <script type="text/javascript" src="easyui/jquery.min.js"></script>
    <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/easyui-lang-zh_CN.js"></script>
  </head>
  <body>

  <table id="dg" style="width: 800px" ></table>
  <script>
    $('#dg').datagrid({
      url:'${pageContext.request.contextPath}/getPageServlet?time'+ new Date().getTime(),
      columns:[[

        /*这里的field要对应JavaBean的属性名称,否则获取不到数据*/
        {field:'empno',title:'编号',width:100},
        {field:'ename',title:'姓名',width:100},
        {field:'job',title:'工作',width:100},
        {field:'mgr',title:'上编',width:100},
        {field:'hiredate',title:'入时',width:100},
        {field:'sal',title:'月薪',width:100},
        {field:'comm',title:'佣金',width:100},
        {field:'deptno',title:'部编',width:100}
      ]],
      fitColumns : true,
      singleSelect : true,
      pagination : true,

        /*pageSize对应rows,pageNum对应page,datagrid会自动把这两个值传递进去*/
      pageNumber : 1,
      pageSize : 3,
      pageList : [3],
      fit:true
    });
  </script>

  </body>
</html>

效果:

这里写图片描述


<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
【Jquery easyui 】Jquery easyui tree的使用 这个ui用的一切都是json数据。树也是如此!后台需要返回与格式匹配的json数据才能正确加载树。页面定义一个ui:[html] view plain copy&lt;ul id="messageInfoAddTree" class="easyui-tree" checkbox="true" data-options="lines:true" style="height:94%"&gt;&am 阅读详情

相关推荐

基于jQuery EasyUI的综合Web门户案例

jQuery是目前最流行的JavaScript库之一,它简化了HTML文档遍历和操作、事件处理、动画和Ajax交互,极大地提高了开发效率。通过其简洁的语法和丰富的API,jQuery使得前端开发人员能够以更加直观和高效的方式编写代码。EasyUI是一个基于jQuery的前端框架,专注于提供可扩展的UI组件。它包含了一系列现成的组件,这些组件使得开发者能够快速地搭建起美观且一致的用户界面。组件种类广泛,涵盖了常见的界面需求,如数据表格、面板、按钮、对话框、菜单、树状结构等。

weixin_42393362的博客 1144

JQueryEasyUI 组件的实例化

1、 组件实例化方式有两种 通过class属性实例化组件。 通过javascript代码实例化组件。   需要先引用   提示: 下面的方法不能同时使用 会发生错误 1、通过class属性实例化组件编码规则 通过特定的HTML标签,添加class属性和data

寂寞的一只狗的博客 1144

深入探索jQuery EasyUI 1.4.3的奇葩案例与实践

jQuery EasyUI是一款基于jQuery框架开发的前端UI库。其核心是将常用的界面组件以插件形式组织起来,提供易于使用的API,使得开发者能够快速创建交云和响应式的用户界面。它旨在帮助开发者避免复杂的CSS和JavaScript编程,通过简单配置即可获得丰富的界面组件。事件委托允许在父元素上绑定事件处理器,由子元素的事件触发。示例代码:// 在父容器上委托事件给子元素 '.myClass'console.log('子元素被点击');});

weixin_34535286的博客 994

jQuery EasyUI window窗口实例

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>jQuery EasyUI window窗口</title> <link rel="stylesheet" id="easyuiTheme" type="text/css" hre...

weixin_30726161的博客 261

五套easyUI模板

有easyui绿色后台管理系统+H5手机界面,easyUI数字管理系统,easyUi信息考核系统,easyUI云平台四套模板

一个固定翼飞机仿真程序带你系统性上手如何实现配平(工具箱+脚本)

老规矩,该博客所用的模型和脚本已上传至百度网盘,名字为“固定翼配平训练例子”,自己自取。

zouxu634866的博客 2567

使用Jquery+EasyUI 进行框架项目开发案例讲解

使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享      在上三篇文章    《使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享》    《使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享》   《使用Jquery+EasyUI 进行框架项目开发案例讲解之三-

逍遥飞鹤的专栏 5519

GBASE南大通用GBase 8s数据库-从零开始的手动安装与实例配置指南

本文详细介绍了GBASE南大通用GBase 8s数据库的手动安装与实例配置全过程,包括环境准备、用户创建、安装包准备、实例创建、环境变量配置等关键步骤。通过实战经验分享和常见问题解决方案,帮助用户快速掌握GBase 8s数据库的安装与配置技巧,确保数据库稳定运行。

weixin_29209825的博客 454

EasyUI入门以及实例

一,EasyUI 简介 easyui是一种基于jQuery的用户界面插件集合。 easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。 使用easyui你不需要写很多代码,你只需要通过编写一些简单HTML标记,就可以定义用户界面。 easyui是个完美支持HTML5网页的完整框架。 easyui节省您网页开发的时间和规模。 easyui很简单但功能强大的。 ...

weixin_43689040的博客 301

open-web UI 实用指南

open-web UI 类似于chatgpt的界面,可以私有化模型本地部署,也可以用商业模型.本文只是用开源模型. 它以实现多模态AI聊天 , AI 翻译 , 语音转文本, 文本转语音, 文生图,代码助手,可谓利器。

szmars的博客 3万+

lammps建模(电解液)opls-aa力场的基本流程

lammps建模(电解液)opls-aa力场的基本流程

syj0922的博客 2133

JQuery EasyUI 案例加使用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33717117的博客 205

新手也能懂的Simulink汽车二自由度建模:从公式推导到模型搭建全流程

本文为新手提供了在Simulink中搭建汽车二自由度模型的完整实战指南。文章从模型核心概念讲起,详细讲解了如何将车辆动力学方程转化为状态空间模型,并逐步指导在Simulink中实现从参数设置、模块搭建到仿真验证的全过程。通过阶跃转向测试和参数影响分析,帮助读者直观理解车辆转向特性,并提供了实用的模型扩展思路与常见问题排查技巧。

weixin_29047919的博客 213

jquery easyUI第二篇【综合案例】

tags: web前端库 基于easyUI开发的一个综合案例模版 &lt;%@ page language="java" pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt; &lt;html&gt; &lt;head&gt; &a

weixin_34415923的博客 157

systrace分析 之 问题初步定位

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。. GPU拿的是acquireFence HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,

yangzex的专栏 3194

【即插即用模块】注意力篇 | TGRS 2025 | CDFIM:通道+空间多尺度注意力,双模态特征融合增强,性能翻倍!

C2DFF-Net提出了一种轻量级跨模态特征融合模块CDFIM,通过模态差异感知和多尺度深度滤波增强双模态互补信息。该模块采用通道-空间注意力协同机制,以极低计算成本(仅增加0.26M参数)提升多模态目标检测性能,在三个遥感数据集上平均提升mAP约1.7%。适用于无人机等边缘设备的实时检测任务,为跨模态融合提供高效解决方案。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 624

jQuery EasyUI 理论

jQuery EasyUI 是一组基于 jQuery 的 UI 插件集合,用于快速构建现代化的 Web 界面。它提供了丰富的组件(如表格、表单、对话框、树形菜单等),支持拖放、排序、分页等功能,适合开发企业管理后台或数据密集型应用。

weixin_62524633的博客 1658

微信小程序视频内容服务类目审核不过?绕过审核的两种思路!

虽然不推荐绕过官方审核,但在实际项目中,总有一些特殊情况:比如,最近开发的小程序涉及视频播放,提交审核时,被官方要求补充“教育服务 - 在线视频课程”类目。但我们的内容只是车辆使用介绍,并非教育课程,无法提供相应资质。该怎么办?很多开发者发现,小程序开发不是最难的,审核才是最难的。 微信为了规避法律风险,要求某些功能必须提供资质。例如:然而,并不是所有公司都能轻松申请到这些资质,甚至有些资质根本不适用于我们的业务,导致审核卡住,无法上线。就像我遇到的这个问题,官方要求我们补充“在线视频课程”类目,但实际业务

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3240

EasyUI学习

一、

Yuncoco的博客 913

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jquery EasyUI(一)

这是我第一天学习jquery EasyUI。我发现我都是零碎地学习后才去系统地去学习的,哈哈,不知道有没有跟我一样的博友。接触jquery EasyUI还是在做ASP.NET综合实验的时候,我准备用MVC去做,然后就用到了jquery EasyUI。第一印象:高端大气上档次,编写一个前端页面速度极快,超级爱。开始学习了。http://www.jeasyui.net/我是在中文网里学习的,下面全手打...

飞鸿的博客 2930

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jQuery及EasyUI学习心得

在VS2010中,如果不能智能提醒,就先要确保JS文件被引入,然后再多次点击“编辑”》》“IntelliSense"》》更新JS。 一、JQUERY部分: 1、在中,如果是需要页面打开就要载入的,需要先写: $(function(){ }); 然后把需要变成EasyUI的input或div等的ID写入其中,否则他们不能变成你想要的插件。当然,其他的函数,如onclick(),就要写到

阿龙的专栏 4168

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jQuery EasyUI parser

jQuery EasyUI parser 的使用场景 parser,故名意思,就是解析器的意思,别看他只有那么几行代码,jQuery Easyui 能够根据class就能正常渲染页面全靠它了。一般情况下,我们并用不到解析器,本文主要讨论一下,什么情况下会用到它,如何使用。 自动调用parser: 我们之所以在页面中,只要书写相应的class,Easyu

Developer of XingKong22star 4859

基于jQuery的jQuery-easyUI下载和使用

一.下载easyUI    下载地址: http://www.jeasyui.com/download/index.php    下载--解压--打开文件目录如图:    二.使用easyUI    一个小demo,只是展示easyUI的链接按钮样式:&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8...

hero_hope的博客 2766

jQuery EasyUI 教程

摘要: jQuery EasyUI 是基于 jQuery 的前端 UI 框架,提供数据网格、树形菜单、表单等丰富组件,支持快速开发跨平台应用。推荐中文资源包括菜鸟教程(基础示例)、W3Cschool(实战指南)和 EasyUI 中文网(官方文档)。通过 CDN 引入库后,可直接用 HTML 类创建组件(如窗口、数据网格),无需复杂 JS 代码。其标记式开发模式简化了交互实现,适合初学者和快速项目构建。如需具体组件(如 DataGrid CRUD)教程,可进一步提供需求细节。

likuolei的博客 914
上一篇: java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
下一篇: SpringMVC第一篇【介绍、入门、工作流程、控制器】
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值