目录
此篇以销售退票表单为例,销售退票表单增加一个收据明细的明细表
1、ContractManageSjmx1Action(收据明细Action)
2、ContractManageSjmx1DataAction(收据明细数据源Action)
1、IContractManageSjmx1Dao(收据明细Dao层接口)
2、ContractManageSjmx1DaoImp(收据明细Dao层实现)
1、ContractManageTpsqForm(销售退票Form)
2、ContractManageSjmx1Form(收据明细Form)
1、ContractManageTpsq(退票申请model)
2、 ContractManageTpsq.hbm.xml(退票申请xml)
3、ContractManageSjmx1(收据明细model)
4、ContractManageSjmx1.hbm.xml(收据明细xml)
1、IContractManageSjmx1Service(收据明细 服务接口)
2、ContractManageSjmx1ServiceImp(收据明细 服务实现)
六、ApplicationResources.properties(收据明细表)
1、ContractManageTpsq.json(销售退票json)
2、ContractManageSjmx1.json(收据明细json)
九、hibernate.xml (手动注册收据明细的bean)
此篇以销售退票表单为例,销售退票表单增加一个收据明细的明细表
后端
一、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>
<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>
<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>
<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>
<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>
</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>