iframe做上传和读取数据

来源:互联网 发布:java api手机版 编辑:程序博客网 时间:2024/06/10 23:40

jsp页面

<%@page contentType="text/html; charset=utf-8"%>

<%@ include file="/WEB-INF/jsp/include.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>固定资产管理</title>
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="keywords" content="" />
    <meta http-equiv="description" content="" />
    <link href="${ctx}/css/main.css" rel="stylesheet" type="text/css" />
    <link href="${ctx}/js/jscalendar/skins/aqua/theme.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" type="text/css" href="${ctx}/js/easyui/themes/default/easyui.css"/>
    <link rel="stylesheet" type="text/css" href="${ctx}/js/easyui/themes/icon.css"/>
    <script type="text/javascript" src="${ctx}/js/jquery-1.4.2.js"></script>
    <script type="text/javascript" src="${ctx}/js/jquery.validate.js"></script>
    <script type="text/javascript" src="${ctx}/js/jquery.metadata.js"></script>
    <script type="text/javascript" src="${ctx}/js/easyui/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="${ctx}/js/jscalendar/calendar.js"></script>
    <script type="text/javascript" src="${ctx}/js/jscalendar/lang/cn_utf8.js"></script>
    <script type="text/javascript" src="${ctx}/js/jscalendar/calendar-setup.js"></script>
    <script type="text/javascript" src="${ctx}/js/common.js"></script>
    <script type="text/javascript" src="${ctx}/js/json2.js"></script>
    <script type="text/javascript">
        $(function(){
            $('#sub').removeAttr('disabled');
            $('#subSms').removeAttr('disabled');
            $.validator.setDefaults({
                submitHandler: function(form) {
                    if (checkWealthCode()) {
                        if (checkEntryDate()) {
                            $('#sub').attr('disabled','disabled');
                            form.submit();
                        }
                    }
                },
                meta: "validate",
                ignoreTitle: true//解决与google Toolbar的冲突
            });
            Calendar.setup(
                {
                  inputField  : "entryDate",    // ID of the input field
                  ifFormat    : "%Y-%m-%d",   // the date format
                  button      : "entryDateTrigger",      // ID of the button
                  showsTime   : true,
                  date          : Calendar.initNewDate(),
                  timeFormat  : "24"              
                }
              );
              
          jQuery.validator.addMethod("isMoney", function(value, element) {
                    var money = /^(([1-9]{1}\d*)|([0]{1}))(\.(\d){1,2})?$/;
                    return this.optional(element) || (money.test(value));
                }, "请正确填写金额");
                
          $("#theform").validate({
                rules:{
                    "wealth.name":{
                        required:true,
                        maxlength:100
                        },
                    "wealth.code":{
                        maxlength:60
                        },
                    "wealth.factory":{
                        maxlength:100
                        },
                    "wealth.model":{
                        maxlength:60
                        },
                    "wealth.price":{
                        required:true,
                        isMoney:true,
                        range:[0.01,10000000]
                        },
                    "wealth.count":{
                            required:true,
                            digits:true,
                            range:[1,100]
                        },
                    "wealth.totalPrice":{
                            required:true,
                            isMoney:true
                        },
                    "wealth.totalPrice":{
                            required:true,
                            isMoney:true,
                            range:[1,10000000]
                        }
                },
                messages:{
                    "wealth.name":{
                        required:"名称不能为空",
                        maxlength:"名称请限制在50个汉字以内"
                        },
                    "wealth.code":{
                        maxlength:"货证号请限制在30个汉字以内"
                        },
                    "wealth.factory":{
                        maxlength:"货证号请限制在50个汉字以内"
                        },
                    "wealth.model":{
                        maxlength:"规格型号请限制在60个字符以内"
                        },
                    "wealth.price":{
                        required: "原值不能为空",
                        isMoney:"原值必须为金额形式",
                        range:"原值范围为0.01-10000000"
                    },
                    "wealth.count":{
                        required:"数量不能为空",
                        digits:"数量必须是整数",
                        range:"数量必须是0-100整数"
                    },
                    "wealth.totalPrice":{
                        required:"总价不能为空",
                        isMoney:"总价必须为金额形式",
                        range:"原值范围为0.01-10000000"
                    }
                },
                ignore: ".ignore"
            });
            
            $('#price').blur(function(){
                countTotalPrice();
            });
            
            $('#wealthCount').blur(function(){
                countTotalPrice();
            });
        });
        
        function countTotalPrice () {
            var price = $('#price').val();
            var count = $('#wealthCount').val();
            if (checkMoney(price) && isInteger(count) && count > 0) {
                var totalPrice = parseFloat(price, 10) * parseInt(count, 10);
                totalPrice = Math.round(totalPrice * 100) / 100;
                $('#totalPrice').val(totalPrice);
            }
        }
        
        function checkMoney (val) {
            var money = /^(([1-9]{1}\d*)|([0]{1}))(\.(\d){1,2})?$/;
            if (val && money.test(val)){
                return true;            
            }
            return false;
        }
        
        //画编号列表
        function drawWealthCodeList() {
            var codeNum = $('#wealthCount').val();
            var exsitNum = parseInt($('.wealthCodeClass').size(),10);
            //必须为小于100数字
            if (codeNum && isInteger(codeNum) && parseInt(codeNum,10) <= 100) {
                var str = '';
                if (exsitNum <= codeNum) {
                    for (var i=exsitNum;i<codeNum;i++) {
                        str += addWealthCode(i);
                    }
                    if (str) {
                        $('#wealthCodeTable').append(str);
                    }
                } else {
                    codeNum = parseInt(codeNum,10);
                    for (var i=exsitNum;i>codeNum;i--) {
                        delWealthCode(i);
                    }
                }
            }
        }
        
        //增加每一行编号
        function addWealthCode(i) {
            var line = '<tr id="wealthCodeTr'+(i+1)+'"><td >' + (i+1) + '</td>' + '<td><input type="text" class="wealthCodeClass" name="wealthCodeNameList['+i+']" id="wealthCode'+i+'" /></td><td><input type="text" class="wealthSnClass" name="wealthSnList['+i+']" id="wealthSn'+i+'" /></td><td><select class="wealthUsableClass" name="wealthUsableList['+i+']" onchange="changeTotalUsable();" ><s:iterator value="YesNoStatuses" ><option value="${value}" <c:if test="${1 == value }">selected="selected"</c:if>>${name}</option></s:iterator></select></td><td>未分配</td>' +'</tr>';
            return line;
        }
        
        //删除一行编号
        function delWealthCode(i) {
            $('#wealthCodeTr' + i).remove();
        }
        
        //增加code校验
        function checkWealthCode() {
            var flag = true;
            $('.wealthCodeClass').each(function(){
                var val = $(this).val();
                if (!val) {
                    alert('请输入编号');
                    flag = false;
                    return false;
                }
            });
            if (flag) {
                var codeNum = $('#wealthCount').val();
                var exsitNum = $('.wealthCodeClass').size();
                if (parseInt(codeNum,10) != parseInt(exsitNum,10)) {
                    alert('固定资产数量与编号数量不一致');
                    flag = false;
                }
                $('.wealthSnClass').each(function(){
                    var snNum = $(this).val();
                    if (!snNum) {
                        alert('请输入sn码');
                        flag = false;
                        return;
                    }
                });
            }
            return flag;
        }
        
        //校验入库时间
        function checkEntryDate() {
            var flag = true;
            var entryDate = $('#entryDate').val();  //获取入库时间
            entryDate = entryDate.replace(/\_/g, "/");
            var eDate = new Date(entryDate);
            var currentTime = new Date();
            var currentDate = new Date(currentTime);
            if (entryDate != null && entryDate != "") {
                if (currentDate.getTime() < eDate.getTime()) {
                    alert('您填写的入库时间不能大于当前时间,请重新选择入库时间!');
                    flag = false;
                    return;
                }
            }
            return flag;
        }
        //把所有的单个产品的状态和总的状态保持一致
        function changeUsableList() {
            var usableValue = $("#usableValue").val();
            var wealthUsableArray = $(".wealthUsableClass").length;
            $('.wealthUsableClass').each(function(){
                if (usableValue) {
                    $(this).val(usableValue);
                }
            });
        }
        //在总的状态为否的情况下,把总的状态和所有的单个产品的状态保持一致  
        function changeTotalUsable() {
            var usableValue = $("#usableValue").val();
            $(".wealthUsableClass").each(function(){
                var currentValue = $(this).val();
                if (usableValue == 0) {
                    if (currentValue == 1) {
                        alert("请选择正确的状态!");
                        $(this).val(usableValue);
                        return;
                    }
                }
            });
        }
        //上传文件
        function uploadFile() {
            if (!$("#excelFile").val()){
                $("#msg").html("请选择excel文件");
            } else {
                $("#msg").html("");
                $("#fileForm").submit();
            }
        }
        
        function test() {
            var jsonObject = document.getElementById("hidden_frame").contentWindow.document.body.innerHTML;
            var dataObj = unescape(jsonObject.replace(/\\/g, "%"));
            var jsonObj = JSON.parse(dataObj);
            var jsonArray = jsonObj.data;
            var jsonStrlen = jsonArray.length;
            if (jsonStrlen > 0) {
                $('#wealthCount').val(jsonStrlen);
                drawWealthCodeList();
            }
            for (var i=0;i<jsonStrlen;i++) {
                $("#wealthCode" + i).val(jsonArray[i].wealthCode);
                $("#wealthSn" + i).val(jsonArray[i].wealthSn);
            }
        }
    </script>
  </head>
  <body>     
        <div>
              <div class="titlediv">您所在的位置:固定资产管理->固定资产->固定资产编辑</div><br/>
              <div>
                  <s:if test="wealth == null">
                  <div>
                      <iframe name='hidden_frame' id="hidden_frame" onload="test()" style='display:none'></iframe>
                      <form id="fileForm" action="${ctx}/wealth/wealth.do" method="post" enctype="multipart/form-data" target="hidden_frame">
                          <input type="hidden" name="action" value="uploadFile"/>
                          <div style="text-align: center;">
                              上传的Excel文件:<input type="file" style="width: 300px;" id="excelFile" name="excelFile"/>
                              <span id="msg" class="red_msg"></span>
                              <input type="button" value="上传" onclick="uploadFile()"/>
                          </div>
                      </form>
                  </div>
                  </s:if>
                  <div>
                      <div class="pagediv"></div>
                      <form id="theform" action="<s:url/>" method="post">
                          <input type="hidden" name="action" value="manage"/>
                          <input type="hidden" name="wealth.id" value="${wealth.id}"/>
                          <input type="hidden" name="wealth.inventory" value="${wealth.inventory}"/>
                          <table cellpadding="0" cellspacing="0" border="0" class="querytab" style="width:50%">
                              <tr>
                                  <td class="alignright" width="25%"><span class="red spanmargin">*</span>名称:</td>
                                  <td class="alignleft" width="75%"><input type="text" name="wealth.name" value="${wealth.name}"/></td>
                              </tr>
                              <tr>
                                  <td class="alignright"><span class="red spanmargin">*</span>类别:</td>
                                  <td class="alignleft"><s:select name="wealth.categoryId" value="%{wealth.categoryId}" listKey="key" listValue="value.categoryName" list="wealthCategoryMapping"></s:select></td>
                              </tr>
                              <tr>
                                  <td class="alignright">货证号:</td>
                                  <td class="alignleft"><input type="text" name="wealth.code" value="${wealth.code}"/></td>
                              </tr>
                              <tr>
                                  <td class="alignright">厂商:</td>
                                  <td class="alignleft"><input type="text" name="wealth.factory" value="${wealth.factory}"/></td>
                              </tr>
                              <tr>
                                  <td class="alignright">规格型号:</td>
                                  <td class="alignleft"><input type="text" name="wealth.model" value="${wealth.model}"/></td>
                              </tr>
                              <tr>
                                  <td class="alignright">是否可用:</td>
                                  <td class="alignleft">
                                      <s:select list="yesNoStatuses" listValue="name" listKey="value" name="usableValue" value="%{wealth.usable.value}" onchange="changeUsableList();"></s:select>
                                      <span class="red spanmargin"><br/>注:这是一批固定资产明细的总的"是否可用",当您要改变它时,也将改变所有明细的"是否可用"。</span>
                                  </td>
                              </tr>
                              <tr>
                                  <td class="alignright"><span class="red spanmargin">*</span>原值:</td>
                                  <td class="alignleft"><input type="text" name="wealth.price" id="price" value="<fmt:formatNumber value="${wealth.price}" pattern="#.##"/>"/></td>
                              </tr>
                              <tr>
                                  <td class="alignright"><span class="red spanmargin">*</span>数量:</td>
                                  <td class="alignleft">
                                      <s:if test="wealth.id != null">
                                          <input type="text" name="wealthCount" id="wealthCount" value="${wealth.count}" disabled="disabled"/>
                                          <input type="hidden" name="wealth.count" value="${wealth.count}"  />
                                      </s:if>
                                      <s:else>
                                          <input type="text" name="wealth.count" id="wealthCount" onblur="drawWealthCodeList()" value="${wealth.count}"  />
                                      </s:else>
                                  </td>
                              </tr>
                              <tr>
                                  <td class="alignright"><span class="red spanmargin">*</span>总价:</td>
                                  <td class="alignleft"><input type="text" name="wealth.totalPrice" id="totalPrice" value="<fmt:formatNumber value="${wealth.totalPrice}" pattern="#.##"/>"/></td>
                              </tr>
                              <tr>
                                  <td class="alignright">入库时间:</td>
                                  <td class="alignleft">
                                      <s:if test="wealth.id != null">
                                          <input type="text" name="wealth.entryTime" id="wealth.entryTime" value="<fmt:formatDate value='${wealth.entryTime}' pattern='yyyy-MM-dd'/>" disabled="disabled" />
                                          <input type="hidden" readonly="readonly" id="entryDate" name="entryDate" size="20" value="<fmt:formatDate value='${wealth.entryTime}' pattern='yyyy-MM-dd'/>"/>
                                      </s:if>
                                      <s:else>
                                          <input type="text" readonly="readonly" id="entryDate" name="entryDate" size="20" value="<fmt:formatDate value='${wealth.entryTime}' pattern='yyyy-MM-dd'/>"/><input type="button" id="entryDateTrigger" value="选择"/>
                                      </s:else>
                                  </td>
                              </tr>
                              <tr>
                                  <td class="alignright">增加方式:</td>
                                  <td class="alignleft"><s:select name="increaseModeType" value="%{wealth.increaseMode.value}" listKey="value" listValue="name" list="increaseModes"></s:select></td>
                              </tr>
                              <tr>
                                  <td class="alignright">存放地:</td>
                                  <td class="alignleft"><input type="text" name="wealth.storageLocation" value="${wealth.storageLocation}"/></td>
                              </tr>
                            <tr>
                                <td colspan="2"><input type="submit" value="提交"/></td>
                            </tr>
                        </table>
                        <br/>
                        <table cellpadding="0" cellspacing="0" border="0" class="querytab" style="width:50%" id="wealthCodeTable">
                            <tr>
                                <td>序号</td>
                                <td>编号</td>
                                <td>sn码</td>
                                <td>是否可用</td>
                                <td>状态</td>
                            </tr>
                            <s:iterator value="wealthCodeList" status="index">
                                <tr>
                                    <td>${index.count}</td>
                                    <td>
                                        <input type="hidden" name="wealthCodeIdsList[${index.count}]" value ="${id}" />
                                        <input type="text" class="wealthCodeClass" name="wealthCodeNameList[${index.count}]" value ="${wealthCode}"  />
                                    </td>
                                    <td>
                                        <input type="text" class="wealthSnClass" name="wealthSnList[${index.count}]" value="${serialNumber}" />
                                    </td>
                                    <td>
                                        <select class="wealthUsableClass" name='wealthUsableList[${index.count}]' onchange="changeTotalUsable();">
                                            <s:iterator value="YesNoStatuses" >
                                                <option value="${value }" <c:if test="${usable.value == value }">selected="selected"</c:if>>${name }</option>
                                            </s:iterator>
                                        </select>
                                    </td>
                                    <td>
                                        ${allocationStr}
                                    </td>
                                </tr>
                            </s:iterator>
                        </table>
                    </form>
                  </div>
                  <div class="margin_10"><center><a href="javascript:window.history.go(-1);" class="easyui-linkbutton" iconCls="icon-reload">返回</a></center></div>
              </div>
          </div>
  </body>
</html>

action 中的方法
/**
 * 上传文件
 * @return
 */
public String uploadFile() {
    logger.info("上传excel开始");
    try {
        if (excelFile == null) {
            logger.error("上传文件为空");
            super.setErrorMessage("上传文件为空");
            return "failure";
        }
        Workbook workbook = ExcelUtil.createWorkbook(excelFile);
        if (workbook == null) {
            throw new CommonException("请上传xls或者xlsx格式的文件");
        }
        Sheet sheet = workbook.getSheetAt(0);
        if (sheet == null) {
            throw new CommonException("获取Excel表Sheet错误");
        }
        if (sheet.getPhysicalNumberOfRows() <= 1) {
            throw new CommonException("上传文件格式不对");
        }
        HttpServletResponse response = ServletActionContext.getResponse();
        JSONObject json = new JSONObject();
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObj = new JSONObject();
        for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
            String strNum = ExcelUtil.getCellValue(sheet.getRow(i).getCell(0));
            String snCode =  ExcelUtil.getCellValue(sheet.getRow(i).getCell(1));
            if (StringUtils.isEmpty(strNum) && StringUtils.isEmpty(snCode)) {
                break;
            } else {
                jsonObj.put("wealthCode", strNum);
                jsonObj.put("wealthSn", snCode);
                jsonArray.add(jsonObj);
            }
        }
        json.put("data", jsonArray);
        writeRs(response, json);
    } catch (Exception e) {
        logger.error(e.getMessage());
        super.setErrorMessage(e.getMessage());
        return "failure";
    }
    logger.info("上传excel结束");
    return Action.NONE;
}

0 0
原创粉丝点击