表单加明细表

目录

 此篇以销售退票表单为例,销售退票表单增加一个收据明细的明细表

后端 

一、Action

1、ContractManageSjmx1Action(收据明细Action)

2、ContractManageSjmx1DataAction(收据明细数据源Action)

二、Dao

1、IContractManageSjmx1Dao(收据明细Dao层接口)

2、ContractManageSjmx1DaoImp(收据明细Dao层实现)

 三、Form

1、ContractManageTpsqForm(销售退票Form)

2、ContractManageSjmx1Form(收据明细Form)

四、model 

1、ContractManageTpsq(退票申请model)

2、 ContractManageTpsq.hbm.xml(退票申请xml)

3、ContractManageSjmx1(收据明细model)

4、ContractManageSjmx1.hbm.xml(收据明细xml) 

 五、service

1、IContractManageSjmx1Service(收据明细 服务接口)

2、ContractManageSjmx1ServiceImp(收据明细 服务实现)

 六、ApplicationResources.properties(收据明细表)

七、json 

1、ContractManageTpsq.json(销售退票json)

2、ContractManageSjmx1.json(收据明细json)

八、spring.xml (手动注册收据明细的bean)

九、hibernate.xml (手动注册收据明细的bean)

前端(jsp页面) 

一、edit.jsp

二、view.jsp


 此篇以销售退票表单为例,销售退票表单增加一个收据明细的明细表

后端 

一、Action

1、ContractManageSjmx1Action(收据明细Action)
package com.landray.kmss.contract.manage.actions;

import com.landray.kmss.common.actions.ExtendAction;
import com.landray.kmss.common.dao.HQLInfo;
import com.landray.kmss.common.exception.UnexpectedRequestException;
import com.landray.kmss.common.service.IBaseService;
import com.landray.kmss.common.test.TimeCounter;
import com.landray.kmss.contract.manage.model.ContractManageSjmx1;
import com.landray.kmss.contract.manage.service.IContractManageSjmx1Service;
import com.landray.kmss.contract.manage.util.ContractManageUtil;
import com.landray.kmss.sys.organization.model.SysOrgElement;
import com.landray.kmss.sys.organization.service.ISysOrgElementService;
import com.landray.kmss.util.*;
import com.landray.kmss.web.action.ActionForm;
import com.landray.kmss.web.action.ActionForward;
import com.landray.kmss.web.action.ActionMapping;
import com.landray.kmss.web.upload.FormFile;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.net.URLDecoder;
import java.util.List;

/**
 * 收据明细 Action
 */
public class ContractManageSjmx1Action extends ExtendAction {

    private IContractManageSjmx1Service contractManageSjmx1Service;

    private ISysOrgElementService sysOrgElementService;

    public IBaseService getServiceImp(HttpServletRequest request) {
        if (contractManageSjmx1Service == null) {
            contractManageSjmx1Service = (IContractManageSjmx1Service) getBean("contractManageSjmx1Service");
        }
        return contractManageSjmx1Service;
    }

    
    public ActionForward data(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        String iden = request.getParameter("iden");
        if (StringUtil.isNull(iden)) {
            iden = "data";
        }
        TimeCounter.logCurrentTime("Action-list", true, getClass());
        KmssMessages messages = new KmssMessages();
        try {
            String s_pageno = request.getParameter("pageno");
            String s_rowsize = request.getParameter("rowsize");
            String orderby = request.getParameter("orderby");
            String ordertype = request.getParameter("ordertype");
            boolean isReserve = false;
            if (ordertype != null && ordertype.equalsIgnoreCase("down")) {
                isReserve = true;
            }
            int pageno = 0;
            int rowsize = com.landray.kmss.sys.config.model.SysConfigParameters.getRowSize();
            if (s_pageno != null && s_pageno.length() > 0 && Integer.parseInt(s_pageno) > 0) {
                pageno = Integer.parseInt(s_pageno);
            }
            if (s_rowsize != null && s_rowsize.length() > 0 && Integer.parseInt(s_rowsize) > 0) {
                rowsize = Integer.parseInt(s_rowsize);
            }
            if (isReserve) {
                orderby += " desc";
            }
            HQLInfo hqlInfo = new HQLInfo();
            hqlInfo.setOrderBy(orderby);
            hqlInfo.setPageNo(pageno);
            hqlInfo.setRowSize(rowsize);
            changeFindPageHQLInfo(request, hqlInfo);
            com.sunbor.web.tag.Page page = getServiceImp(request).findPage(hqlInfo);
            request.setAttribute("queryPage", page);
        } catch (Exception e) {
            messages.addError(e);
        }
        TimeCounter.logCurrentTime("Action-list", false, getClass());
        if (messages.hasError()) {
            KmssReturnPage.getInstance(request).addMessages(messages).addButton(KmssReturnPage.BUTTON_CLOSE).save(request);
            return getActionForward("failure", mapping, form, request, response);
        } else {
            return getActionForward(iden, mapping, form, request, response);
        }
    }
2、ContractManageSjmx1DataAction(收据明细数据源Action)
package com.landray.kmss.contract.manage.actions;

import com.landray.kmss.common.actions.BaseAction;
import com.landray.kmss.common.service.IBaseService;
import com.landray.kmss.contract.manage.service.IContractManageSjmx1Service;

import javax.servlet.http.HttpServletRequest;

/**
 * 收据明细 数据源Action
 */
public class ContractManageSjmx1DataAction extends BaseAction {

    private IContractManageSjmx1Service contractManageSjmx1Service;

    public IBaseService getServiceImp(HttpServletRequest request) {
        if (contractManageSjmx1Service == null) {
            contractManageSjmx1Service = (IContractManageSjmx1Service) getBean("contractManageSjmx1Service");
        }
        return contractManageSjmx1Service;
    }
}

二、Dao

1、IContractManageSjmx1Dao(收据明细Dao层接口)
package com.landray.kmss.contract.manage.dao;

import com.landray.kmss.common.dao.IBaseDao;

/**
 * 收据明细Dao层接口
 */
public interface IContractManageSjmx1Dao extends IBaseDao {
}
2、ContractManageSjmx1DaoImp(收据明细Dao层实现)
package com.landray.kmss.contract.manage.dao.hibernate;

import com.landray.kmss.common.dao.BaseDaoImp;
import com.landray.kmss.contract.manage.dao.IContractManageSjmx1Dao;

/**
 * 收据明细Dao层实现
 */
public class ContractManageSjmx1DaoImp extends BaseDaoImp implements IContractManageSjmx1Dao {
}

 三、Form

1、ContractManageTpsqForm(销售退票Form)
private AutoArrayList fdSjmx_Form = new AutoArrayList(ContractManageSjmx1Form.class);

private String fdSjmx_Flag = "0";

//reset
fdSjmx_Form = new AutoArrayList(ContractManageSjmx1Form.class);
fdSjmx_Flag = null;


//getToModelPropertyMap
toModelPropertyMap.put("fdSjmx_Form", new FormConvertor_FormListToModelList("fdSjmx", "docMain", "fdSjmx_Flag"));

/**
 * 收据明细
 */
public AutoArrayList getFdSjmx_Form() {
    return this.fdSjmx_Form;
}
/**
 * 收据明细
 */
public void setFdSjmx_Form(AutoArrayList fdSjmx_Form) {
    this.fdSjmx_Form = fdSjmx_Form;
}
/**
 * 收据明细
 */
public String getFdSjmx_Flag() {
    return this.fdSjmx_Flag;
}
/**
 * 收据明细
 */
public void setFdSjmx_Flag(String fdSjmx_Flag) {
    this.fdSjmx_Flag = fdSjmx_Flag;
}


注:在主表单的Form里增加收据明细的List与主表单关联起来

其中容易写错的地方:

1、private AutoArrayList fdSjmx_Form = new AutoArrayList(ContractManageSjmx1Form.class);

2、reset方法中的fdSjmx_Form = new AutoArrayList(ContractManageSjmx1Form.class);

2、ContractManageSjmx1Form(收据明细Form)
package com.landray.kmss.contract.manage.forms;

import com.landray.kmss.common.convertor.FormConvertor_IDToModel;
import com.landray.kmss.common.convertor.FormToModelPropertyMap;
import com.landray.kmss.common.forms.ExtendForm;
import com.landray.kmss.contract.manage.model.ContractManageSjmx1;
import com.landray.kmss.contract.manage.model.ContractManageTpsq;
import com.landray.kmss.contract.manage.util.ContractManageUtil;
import com.landray.kmss.web.action.ActionMapping;
import com.landray.kmss.web.upload.FormFile;

import javax.servlet.http.HttpServletRequest;

/**
 * 收据明细
 */
public class ContractManageSjmx1Form extends ExtendForm {

    private static FormToModelPropertyMap toModelPropertyMap;

    private String fdSjlx;

    private String fdJe;

    private String docMainId;

    private String docMainName;

    private String docIndex;

    private FormFile file;

    private String fdImportType;

    private String fdRemark;

    public void reset(ActionMapping mapping, HttpServletRequest request) {
        fdSjlx = null;
        fdJe = null;
        docIndex = null;
        fdRemark = null;
        super.reset(mapping, request);
    }

    public Class<ContractManageSjmx1> getModelClass() {
        return ContractManageSjmx1.class;
    }

    public FormToModelPropertyMap getToModelPropertyMap() {
        if (toModelPropertyMap == null) {
            toModelPropertyMap = new FormToModelPropertyMap();
            toModelPropertyMap.putAll(super.getToModelPropertyMap());
            toModelPropertyMap.put("docMainId", new FormConvertor_IDToModel("docMain", ContractManageTpsq.class));
        }
        return toModelPropertyMap;
    }

    /**
     * 收据备注
     */
    public String getFdRemark() {
        return fdRemark;
    }

    /**
     * 收据备注
     */
    public void setFdRemark(String fdRemark) {
        this.fdRemark = fdRemark;
    }

    /**
     * 收据类型
     */
    public String getFdSjlx() {
        return this.fdSjlx;
    }

    /**
     * 收据类型
     */
    public void setFdSjlx(String fdSjlx) {
        this.fdSjlx = fdSjlx;
    }

    /**
     * 金额
     */
    public String getFdJe() {
        return ContractManageUtil.scientificToNum(this.fdJe);
    }

    /**
     * 金额
     */
    public void setFdJe(String fdJe) {
        this.fdJe = fdJe;
    }

    public String getDocMainId() {
        return this.docMainId;
    }

    public void setDocMainId(String docMainId) {
        this.docMainId = docMainId;
    }

    public String getDocMainName() {
        return this.docMainName;
    }

    public void setDocMainName(String docMainName) {
        this.docMainName = docMainName;
    }

    public String getDocIndex() {
        return this.docIndex;
    }

    public void setDocIndex(String docIndex) {
        this.docIndex = docIndex;
    }

    public FormFile getFile() {
        return this.file;
    }

    public void setFile(FormFile file) {
        this.file = file;
    }

    public String getFdImportType() {
        return this.fdImportType;
    }

    public void setFdImportType(String fdImportType) {
        this.fdImportType = fdImportType;
    }
}

注:在此Form中定义明细表需要的字段

其中容易写错的地方:

1、getModelClass方法中的return ContractManageSjmx1.class;

2、getToModelPropertyMap方法中的toModelPropertyMap.put("docMainId", new FormConvertor_IDToModel("docMain", ContractManageTpsq.class));

四、model 

1、ContractManageTpsq(退票申请model)
private List<ContractManageSjmx1> fdSjmx;

//getToFormPropertyMap
toFormPropertyMap.put("fdSjmx", new ModelConvertor_ModelListToFormList("fdSjmx_Form"));

/**
 * 收据明细
 */
public List<ContractManageSjmx1> getFdSjmx() {
    return this.fdSjmx;
}
/**
 * 收据明细
 */
public void setFdSjmx(List<ContractManageSjmx1> fdSjmx) {
    this.fdSjmx = fdSjmx;
}

注:在主model中添加收据明细的LIst与主model关联起来

2、 ContractManageTpsq.hbm.xml(退票申请xml)
<list
        name="fdSjmx"
        lazy="true"
        cascade="all-delete-orphan"
        inverse="false">
    <key
            column="doc_main_id"/>
    <list-index
            column="doc_index"/>
    <one-to-many
            class="com.landray.kmss.contract.manage.model.ContractManageSjmx1"/>
</list>

注:class对应的是收据明细的model 

3、ContractManageSjmx1(收据明细model)
package com.landray.kmss.contract.manage.model;

import com.landray.kmss.common.convertor.ModelToFormPropertyMap;
import com.landray.kmss.common.model.BaseModel;
import com.landray.kmss.contract.manage.forms.ContractManageSjmx1Form;

/**
 * 收据明细
 */
public class ContractManageSjmx1 extends BaseModel {

    private static ModelToFormPropertyMap toFormPropertyMap;

    private String fdSjlx;

    private String fdRemark;

    private Double fdJe;

    private ContractManageTpsq docMain;

    private Integer docIndex;

    public Class<ContractManageSjmx1Form> getFormClass() {
        return ContractManageSjmx1Form.class;
    }

    public ModelToFormPropertyMap getToFormPropertyMap() {
        if (toFormPropertyMap == null) {
            toFormPropertyMap = new ModelToFormPropertyMap();
            toFormPropertyMap.putAll(super.getToFormPropertyMap());
            toFormPropertyMap.put("docMain.docSubject", "docMainName");
            toFormPropertyMap.put("docMain.fdId", "docMainId");
        }
        return toFormPropertyMap;
    }

    /**
     * 收据备注
     */
    public String getFdRemark() {
        return fdRemark;
    }

    /**
     * 收据备注
     */
    public void setFdRemark(String fdRemark) {
        this.fdRemark = fdRemark;
    }

    /**
     * 收据类型
     */
    public String getFdSjlx() {
        return this.fdSjlx;
    }

    /**
     * 收据类型
     */
    public void setFdSjlx(String fdSjlx) {
        this.fdSjlx = fdSjlx;
    }

    /**
     * 金额
     */
    public Double getFdJe() {
        return this.fdJe;
    }

    /**
     * 金额
     */
    public void setFdJe(Double fdJe) {
        this.fdJe = fdJe;
    }

    public ContractManageTpsq getDocMain() {
        return this.docMain;
    }

    public void setDocMain(ContractManageTpsq docMain) {
        this.docMain = docMain;
    }

    public Integer getDocIndex() {
        return this.docIndex;
    }

    public void setDocIndex(Integer docIndex) {
        this.docIndex = docIndex;
    }
}

注:在此model中定义明细表需要的字段 ,通过docMain与主表关联

其中容易写错的地方:

getFormClass方法中的return ContractManageSjmx1Form.class;

4、ContractManageSjmx1.hbm.xml(收据明细xml) 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class
            name="com.landray.kmss.contract.manage.model.ContractManageSjmx1"
            table="contract_manage_sjmx1">
        <id
                name="fdId"
                column="fd_id"
                length="36"/>
        <property
                name="fdSjlx"
                column="fd_sjlx"
                update="true"
                insert="true"
                length="200"/>
        <property
                name="fdRemark"
                column="fd_remark"
                update="true"
                insert="true"
                length="500"/>
        <property
                name="fdJe"
                column="fd_je"
                update="true"
                insert="true"/>
        <many-to-one
                name="docMain"
                column="doc_main_id"
                update="true"
                insert="true"/>
        <property
                name="docIndex"
                column="doc_index"
                update="true"
                insert="true"/>
    </class>
</hibernate-mapping>

注:定义对应的model以及表名和字段名

 五、service

1、IContractManageSjmx1Service(收据明细 服务接口)
package com.landray.kmss.contract.manage.service;

import com.landray.kmss.sys.metadata.interfaces.IExtendDataService;

/**
 * 收据明细 服务接口
 */
public interface IContractManageSjmx1Service extends IExtendDataService {
}
2、ContractManageSjmx1ServiceImp(收据明细 服务实现)
package com.landray.kmss.contract.manage.service.spring;

import com.landray.kmss.contract.manage.service.IContractManageSjmx1Service;
import com.landray.kmss.sys.metadata.interfaces.ExtendDataServiceImp;

/**
 * 收据明细 服务实现
 */
public class ContractManageSjmx1ServiceImp extends ExtendDataServiceImp implements IContractManageSjmx1Service {
}

 六、ApplicationResources.properties(收据明细表)

#table contract_manage_sjmx1
table.contractManageSjmx1=收据明细
contractManageSjmx1.fdRemark=收据备注
contractManageSjmx1.fdSjlx=收据类型
contractManageSjmx1.fdJe=金额
contractManageSjmx1.docMain=所属开票申请
contractManageSjmx1.docIndex=序号

七、json 

1、ContractManageTpsq.json(销售退票json)
"fdSjmx" : {
    "propertyType" : "list",
    "messageKey" : "contract-manage:contractManageTpsq.fdSjmx",
    "type" : "com.landray.kmss.contract.manage.model.ContractManageSjmx1",
    "table" : "contract_manage_sjmx1",
    "cascade" : "all-delete-orphan",
    "inverse" : "false",
    "column" : "doc_main_id",
    "notNull" : "true",
    "readOnly" : "false",
    "validate" : "true",
    "canDisplay" : "true",
    "canRelation" : "false"
},
2、ContractManageSjmx1.json(收据明细json)

{
  "global" : {
    "modelName" : "com.landray.kmss.contract.manage.model.ContractManageSjmx1",
    "messageKey" : "contract-manage:table.contractManageSjmx1",
    "serviceBean" : "contractManageSjmx1Service",
    "displayProperty" : "fdSjlx",
    "table" : "contract_manage_sjmx1"
  },
  "attrs" : {
    "fdId" : {
      "propertyType" : "id",
      "generator" : {
        "type" : "assigned"
      }
    },
    "fdSjlx" : {
      "propertyType" : "simple",
      "messageKey" : "contract-manage:contractManageSjmx1.fdSjlx",
      "type" : "String",
      "column" : "fd_sjlx",
      "notNull" : "false",
      "readOnly" : "false",
      "enumType" : "contract_manage_fplx",
      "validate" : "true",
      "canDisplay" : "true",
      "canRelation" : "true",
      "canSearch" : "true",
      "length" : "200"
    },
    "fdRemark" : {
      "propertyType" : "simple",
      "messageKey" : "contract-manage:contractManageSjmx1.fdRemark",
      "type" : "String",
      "column" : "fd_remark",
      "notNull" : "false",
      "readOnly" : "false",
      "validate" : "true",
      "canDisplay" : "true",
      "canRelation" : "true",
      "canSearch" : "true",
      "length" : "500"
    },
    "fdJe" : {
      "propertyType" : "simple",
      "messageKey" : "contract-manage:contractManageSjmx1.fdJe",
      "type" : "Double",
      "column" : "fd_je",
      "notNull" : "false",
      "readOnly" : "false",
      "validate" : "true",
      "canDisplay" : "true",
      "canRelation" : "true",
      "canSearch" : "true"
    },
    "docMain" : {
      "propertyType" : "model",
      "messageKey" : "contract-manage:contractManageSjmx1.docMain",
      "type" : "com.landray.kmss.contract.manage.model.ContractManageTpsq",
      "column" : "doc_main_id",
      "notNull" : "false",
      "readOnly" : "false",
      "validate" : "true",
      "canDisplay" : "true",
      "canRelation" : "true"
    },
    "docIndex" : {
      "propertyType" : "simple",
      "messageKey" : "contract-manage:contractManageSjmx1.docIndex",
      "type" : "Integer",
      "column" : "doc_index",
      "notNull" : "false",
      "readOnly" : "false",
      "validate" : "true",
      "canDisplay" : "true",
      "canRelation" : "true",
      "canSearch" : "true"
    }
  }
}

 注:在此定义对应的model和所需要的表名和字段名

八、spring.xml (手动注册收据明细的bean)

<bean
        id="contractManageSjmx1Dao"
        class="com.landray.kmss.contract.manage.dao.hibernate.ContractManageSjmx1DaoImp"
        parent="KmssAuthBaseDao">
    <property
            name="modelName">
        <value>com.landray.kmss.contract.manage.model.ContractManageSjmx1</value>
    </property>
</bean>
<bean
        id="contractManageSjmx1Target"
        class="com.landray.kmss.contract.manage.service.spring.ContractManageSjmx1ServiceImp"
        parent="KmssExtendDataTarget">
    <property
            name="baseDao">
        <ref
                bean="contractManageSjmx1Dao"/>
    </property>
</bean>
<bean
        id="contractManageSjmx1Service"
        parent="KmssBaseService">
    <property
            name="target">
        <ref
                bean="contractManageSjmx1Target"/>
    </property>
</bean>

九、hibernate.xml (手动注册收据明细的bean)

<mapping
        resource="com/landray/kmss/contract/manage/model/ContractManageSjmx1.hbm.xml"/>

前端(jsp页面) 

一、edit.jsp

<table class="tb_normal" width=100% align="center">
    <tr>
            <%-- 收据明细标题 --%>
        <td colspan="2" class="td_normal_title" align="left">
            收据明细
        </td>
    </tr>
</table>
<table class="tb_normal" width="100%" id="TABLE_DocList_fdSjmx_Form" align="center"
       tbdraggable="false">
    <tr align="center" class="tr_normal_title">
        <td style="width:20px;"></td>
        <td style="width:40px;">
                ${lfn:message('page.serial')}
        </td>
        <td style="width:20%;">
                ${lfn:message('contract-manage:contractManageSjmx1.fdSjlx')}
        </td>
        <td style="width:20%;">
                ${lfn:message('contract-manage:contractManageSjmx1.fdJe')}
        </td>
        <td>
                ${lfn:message('contract-manage:contractManageSjmx1.fdRemark')}
        </td>
        <td style="width:80px;">
        </td>
    </tr>
    <tr KMSS_IsReferRow="1" style="display:none;" class="docListTr">
        <td class="docList" align="center">
            <input type='checkbox' name='DocList_Selected'/>
        </td>
        <td class="docList" align="center" KMSS_IsRowIndex="1">
            !{index}
        </td>
        <td class="docList" align="center">
                <%-- 收据类型--%>
            <input type="hidden" name="fdSjmx_Form[!{index}].fdId" value="" disabled="true"/>
            <div id="_xform_fdSjmx_Form[!{index}].fdSjlx" _xform_type="select">
                <xform:select value="03" required="true" property="fdSjmx_Form[!{index}].fdSjlx"
                              htmlElementProperties="id='fdSjmx_Form[!{index}].fdSjlx'"
                              showStatus="edit">
                    <xform:enumsDataSource enumsType="contract_manage_fplx"/>
                </xform:select>
            </div>
        </td>
        <td class="docList" align="center">
                <%-- 金额--%>
            <div id="_xform_fdSjmx_Form[!{index}].fdJe" _xform_type="text">
                <xform:text property="fdSjmx_Form[!{index}].fdJe" required="true"
                            showStatus="edit" onValueChange="calculateSJ"
                            subject="${lfn:message('contract-manage:contractManageSjmx1.fdJe')}"
                            validators="number min(0.01) scaleLength(2) "
                            style="text-align:right;width:95%;"/>
            </div>
        </td>
        <td class="docList" align="center">
                <%-- 收据备注--%>
            <div id="_xform_fdSjmx_Form[!{index}].fdRemark" _xform_type="text">
                <xform:text required="true" property="fdSjmx_Form[!{index}].fdRemark"
                            showStatus="edit"
                            subject="${lfn:message('contract-manage:contractManageSjmx1.fdRemark')}"
                            style="width:95%;"/>
            </div>
        </td>
        <td class="docList" align="center">
            <a href="javascript:void(0);" onclick="DocList_CopyRow();"
               title="${lfn:message('doclist.copy')}">
                <img src="${KMSS_Parameter_StylePath}icons/icon_copy.png" border="0"/>
            </a>
            &nbsp;
            <a href="javascript:void(0);" onclick="DocList_DeleteRow();"
               title="${lfn:message('doclist.delete')}">
                <img src="${KMSS_Parameter_StylePath}icons/icon_del.png" border="0"/>
            </a>
        </td>
    </tr>
    <c:forEach items="${contractManageTpsqForm.fdSjmx_Form}" var="fdSjmx_FormItem"
               varStatus="vstatus">
        <tr KMSS_IsContentRow="1" class="docListTr">
            <td class="docList" align="center">
                <input type="checkbox" name="DocList_Selected"/>
            </td>
            <td class="docList" align="center">
                    ${vstatus.index+1}
            </td>
            <td class="docList" align="center">
                    <%-- 收据类型--%>
                <input type="hidden" name="fdSjmx_Form[${vstatus.index}].fdId"
                       value="${fdSjmx_FormItem.fdId}"/>
                <div id="_xform_fdSjmx_Form[${vstatus.index}].fdSjlx" _xform_type="select">
                    <xform:select required="true"
                                  property="fdSjmx_Form[${vstatus.index}].fdSjlx"
                                  htmlElementProperties="id='fdSjmx_Form[${vstatus.index}].fdSjlx'"
                                  showStatus="edit">
                        <xform:enumsDataSource enumsType="contract_manage_fplx"/>
                    </xform:select>
                </div>
            </td>
            <td class="docList" align="center">
                    <%-- 金额--%>
                <div id="_xform_fdSjmx_Form[${vstatus.index}].fdJe" _xform_type="text">
                    <xform:text property="fdSjmx_Form[${vstatus.index}].fdJe" showStatus="edit"
                                onValueChange="calculateSJ" required="true"
                                subject="${lfn:message('contract-manage:contractManageSjmx1.fdJe')}"
                                validators="number min(0.01) scaleLength(2)"
                                style="width:95%;text-align:right;"/>
                </div>
            </td>
            <td class="docList" align="center">
                    <%-- 收据备注--%>
                <div id="_xform_fdSjmx_Form[${vstatus.index}].fdRemark" _xform_type="text">
                    <xform:text required="true"
                                property="fdSjmx_Form[${vstatus.index}].fdRemark"
                                showStatus="edit"
                                subject="${lfn:message('contract-manage:contractManageSjmx1.fdRemark')}"
                                style="width:95%;"/>
                </div>
            </td>
            <td class="docList" align="center">
                <a href="javascript:void(0);" onclick="DocList_CopyRow();"
                   title="${lfn:message('doclist.copy')}">
                    <img src="${KMSS_Parameter_StylePath}icons/icon_copy.png" border="0"/>
                </a>
                &nbsp;
                <a href="javascript:void(0);" onclick="DocList_DeleteRow();"
                   title="${lfn:message('doclist.delete')}">
                    <img src="${KMSS_Parameter_StylePath}icons/icon_del.png" border="0"/>
                </a>
            </td>
        </tr>
    </c:forEach>
    <tr type="optRow" class="tr_normal_opt" invalidrow="true">
        <td colspan="5">
            <a href="javascript:void(0);" onclick="DocList_AddRow();">
                <img src="${KMSS_Parameter_StylePath}icons/icon_add.png"
                     border="0"/>${lfn:message('doclist.add')}
            </a>
            &nbsp;
            <a href="javascript:void(0);" onclick="DocList_MoveRowBySelect(-1);">
                <img src="${KMSS_Parameter_StylePath}icons/icon_up.png"
                     border="0"/>${lfn:message('doclist.moveup')}
            </a>
            &nbsp;
            <a href="javascript:void(0);" onclick="DocList_MoveRowBySelect(1);">
                <img src="${KMSS_Parameter_StylePath}icons/icon_down.png"
                     border="0"/>${lfn:message('doclist.movedown')}
            </a>
            &nbsp;
        </td>
    </tr>
</table>
<input type="hidden" name="fdSjmx_Flag" value="1">
<script>
    Com_IncludeFile("doclist.js");
</script>
<script>
    DocList_Info.push('TABLE_DocList_fdSjmx_Form');
</script>
})

二、view.jsp

<table class="tb_normal" width=100%>
    <tr><%-- 收据明细标题 --%>
        <td colspan="2" class="td_normal_title" align="left">
            收据明细
        </td>
    </tr>
</table>
<table class="tb_normal" width="100%" id="TABLE_DocList_fdSjmx_Form" align="center"
       tbdraggable="true">
    <tr align="center" class="tr_normal_title">
        <td style="width:40px;">
                ${lfn:message('page.serial')}
        </td>
        <td>
                ${lfn:message('contract-manage:contractManageSjmx1.fdSjlx')}
        </td>
        <td>
                ${lfn:message('contract-manage:contractManageSjmx1.fdJe')}
        </td>
        <td>
                ${lfn:message('contract-manage:contractManageSjmx1.fdRemark')}
        </td>
    </tr>
    <c:forEach items="${contractManageTpsqForm.fdSjmx_Form}" var="fdSjmx_FormItem"
               varStatus="vstatus">
        <tr KMSS_IsContentRow="1" class="docListTr">
            <td class="docList" align="center">
                    ${vstatus.index+1}
            </td>
            <td class="docList" align="center">
                    <%-- 收据类型--%>
                <input type="hidden" name="fdSjmx_Form[${vstatus.index}].fdId"
                       value="${fdSjmx_FormItem.fdId}"/>
                <div id="_xform_fdSjmx_Form[${vstatus.index}].fdSjlx" _xform_type="select">
                    <xform:select property="fdSjmx_Form[${vstatus.index}].fdSjlx"
                                  htmlElementProperties="id='fdSjmx_Form[${vstatus.index}].fdSjlx'"
                                  showStatus="view">
                        <xform:enumsDataSource enumsType="contract_manage_fplx"/>
                    </xform:select>
                </div>
            </td>
            <td class="docList" align="right">
                    <%-- 金额--%>
                <div id="_xform_fdSjmx_Form[${vstatus.index}].fdJe" _xform_type="text">
                    <kmss:showNumber value="${fdSjmx_FormItem.fdJe}" pattern="###,##0.00"/>
                </div>
            </td>
            <td class="docList" align="center">
                    <%-- 收据备注--%>
                <div id="_xform_fdSjmx_Form[${vstatus.index}].fdRemark" _xform_type="text">
                    <xform:text property="fdSjmx_Form[${vstatus.index}].fdRemark" showStatus="view"
                                style="width:95%;"/>
                </div>
            </td>
        </tr>
    </c:forEach>
</table>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值