会员卡管理系统技术解析(十四) 库存卡作废记录添加
2015-05-31 20:44
525 查看
会员卡管理系统技术解析(十四) 库存卡作废记录添加
库存卡作废记录添加主要包含根据会员卡类型以及保管地点查询相对应符合条件的卡,然后进行库存卡作废记录添加录入等操作功能。1.1界面效果图
3.1.2.1(图1)
从界面可以看到本项目这里用到的控件有:
控件名称 | 说明 |
级联下拉框(easyui-combobox) | 第一要设置每个控件的id,第二设置样式不设置也有默认,第三(data-options)是数据操作:可以设置控件的一些属性和事件 |
日期控件(easyui-datebox) | |
文本输入框(表单input) | |
表格控件(easyui-datagrid) |
1.2功能实现
第1步:数据库
1、表与关系:
本功能主要涉及:库存卡作废记录表、库存卡作废明细表、会员卡保管地点表、会员卡建卡明细表、会员卡类型表、会员卡卡种表等。
表1:库存卡作废记录表(Pw_StoreCardInvalid)
用于存放库存卡作废记录信息。
列名 | 数据类型 | 主键/外键 | 说明 |
StoreCardInvalidID | int | 主键 | 库存卡记录自动编号 |
RecordNum | nchar(18) | 记录编号 | |
BookerID | int | 外键 | 员工表,登记人 |
BookTime | date | 登记时间 | |
VerifierID | int | 外键 | 员工表,审核人 |
VerifyTime | date | 审核时间 | |
IsVerify | nchar(5) | 审核状态 | |
InvalidReason | nchar(200) | 作废原因 |
主要包含如下字段信息:会员卡号、作废前状态、记录作废否、审核相关等。
列名 | 数据类型 | 主键/外键 | 说明 |
StoreCardInvalidDetailsID | int | 主键 | 库存卡明细自动编号 |
StoreCardInvalidID | int | 外键 | 库存卡作废记录表,审核相关 |
MembershipCardDetailsID | int | 外键 | 建卡明细表,会员卡卡号 |
InvalidStateBefore | int | 外键 | 基础属性集合明细表,作废前状态 |
RecordInvalid | bit | 记录作废否 |
用于存放会员卡保管地点信息
列名 | 数据类型 | 主键/外键 | 说明 |
MembershipCardStorageLocationID | int | 主键 | 会员卡保管地点ID |
MembershipCardStorageLocationFatherID | int | 外键 | 会员卡保管地点父ID |
MarkerTypeID | int | 外键 | 标记类型ID |
Name | nchar(20) | | 名称 |
LevelAtTheEndOfTheTag | bit | | 末级标记否 |
DuplicatedRecord | bit | | 复制记录否 |
Code | nchar(10) | | 代码 |
EncodingRules | int | | 编码规则 |
用于存放建卡记录明细信息
列名 | 数据类型 | 主键/外键 | 说明 |
MembershipCardDetailsID | int | 主键 | 会员卡建卡明细ID |
MembershipCardID | int | 外键 | 会员卡建卡记录表, 会员卡建卡记录ID |
MembershipCardTypeID | int | 外键 | 会员卡类型表, 会员卡类型ID |
MembershipCardStorageLocationID | int | 外键 | 会员卡保管地点表,保管地点ID |
StateOfTheMembershipCardID | int | 外键 | 基础属性集合明细表,会员卡状态ID |
ChangeTheMembershipCardID | int | 外键 | 基础属性集合明细表,变更会员卡状态ID |
UpdateRankID | int | 外键 | 会员卡级别表,会员卡级别ID |
KeeperID | int | 外键 | 员工表,保管人ID |
Remarks | nchar(200) | 备注 | |
MembershipCardCardNumber | nchar(50) | 会员卡卡号 | |
SpecifyTheValidityTime | date | 有效期指定时间 | |
ValidityTime | date | 有效期时间 | |
WriteCardStatus | nchar(10) | 写卡状态 | |
WriteTime | date | 写卡时间 | |
NominalAmount | money | 面值金额 |
用于存放会员卡卡种表信息
列名 | 数据类型 | 主键/外键 | 说明 |
MembersKakaKindID | int | 主键 | 会员卡卡种ID |
MembersKakaCode | nchar(10) | | 会员卡卡种代码 |
MembersKakaKindsOfNames | nchar(30) | | 会员卡卡种名称 |
Invalid | bit | | 作废否 |
用于存放会员卡类型信息
列名 | 数据类型 | 主键/外键 | 说明 |
MembershipCardTypeID | int | 主键 | 会员卡类型ID |
MembersKakaKindID | int | 外键 | 会员卡卡种ID |
MembershipCardLevelID | int | 外键 | 会员卡级别ID |
MembershipCardIssuanceID | int | 外键 | 会员卡发行方式ID |
UseObjectID | int | 外键 | 使用对象ID |
DailyManagementFormID | int | 外键 | 日常管理形式ID |
TrackMediumID | int | 外键 | 磁道介质ID |
PreferentialWayID | int | 外键 | 优惠方式ID |
CardValidityPeriodSpecifiedID | int | 外键 | 卡有效期指定方式ID |
HairpinWithFaceValue | bit | | 发卡时有面值否 |
StoredValueCoupons | bit | | 储值优惠券标记否 |
ParticipateInTheScore | bit | | 参与消费积分否 |
leadCode | nchar(10) | | 前导码 |
PostpositionCode | nchar(10) | | 后置码 |
RequireTheSystemToMakeCard | bit | | 需要系统制卡否 |
NeedCompulsoryInspectionCard | bit | | 需要强制验卡否 |
LengthOfThePeriodOfValidity | nchar(10) | | 有效期长度 |
TrackContentEncryption | bit | | 磁道内容加密否 |
Invalid | bit | | 作废否 |
MembershipCardTypeCode | nchar(10) | | 会员卡类型代码 |
MembershipCardTypeName | nchar(30) | | 会员卡类型名称 |
KeepRecordsOfConsumption | bit | | 保存消费记录否 |
TotalLengthCardNumber | int | | 卡号总长度 |
OpenTheCouponAccount | bit | | 开通优惠券账户否 |
第2步:服务层接口(IService)
在“MEMBCERP.IService”这个包下的“KuCunKaGuanLiIService”类中,定义添加库存卡作废信息相关的方法接口,代码如下:public List<SysMembershipCardStorageLocation> SelectAllBaoGuanDiDian(); /*查询全部保管地点*/ public List SelectKuCunKa(int HuiYuanKaLeiXingID, int ShouHuoDiDianID); /*根据会员卡类型和收货地点查询相对应的库存卡*/ public int addKuCunKaZuoFei(PwStoreCardInvalid entity); /*新增库存卡作废记录*/ public int addKuCunKaZuoFeiMingXi(PwStoreCardInvalidDetails entity); /*新增库存卡作废明细*/ public List<PwMembershipCardDetails> SelectUpdateJianKaMingXi(int JianKaMingXiID); /*根据建卡明细ID,查询需要修改的建卡明细信息*/ public boolean EditJianKaMingXi(PwMembershipCardDetails entity); /*修改建卡明细*/ public boolean UpdateKuCunKaZuoFei(PwStoreCardInvalid entity); /*修改库存卡作废*/
第3步:服务层(Service)
在“MEMBCERP.Service”这个包下的“KuCunKaGuanLiService”类中,定义添加库存卡作废信息相关的方法接口实现,代码如下:/*查询全部库存卡作废记录*/ @Override public List SelectAllKuCunKaZuoFeiJiLu(){ try {/*尝试运行代码*/ StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/ /*拼接需要查询的字段*/ queryString.append("SELECT KuCunKaZuoFeiJiLu.storeCardInvalidId, KuCunKaZuoFeiJiLu.recordNum, " + "DengJiRen.staffName, KuCunKaZuoFeiJiLu.bookTime, KuCunKaZuoFeiJiLu.isVerify, " + "KuCunKaZuoFeiJiLu.verifyTime, ShenHeRen.staffName, KuCunKaZuoFeiJiLu.invalidReason "); /*实例化表*/ queryString.append("FROM PwStoreCardInvalid AS KuCunKaZuoFeiJiLu, " + "SysStaff AS DengJiRen, SysStaff AS ShenHeRen "); /*表与关系 满足条件*/ queryString.append("WHERE KuCunKaZuoFeiJiLu.bookerId = DengJiRen.staffId " + "AND KuCunKaZuoFeiJiLu.verifierId = ShenHeRen.staffId "); return dao.findByHql(queryString.toString()); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /*根据会员卡作废ID,查询与上对应的面值金额*/ @Override public List SelectMianZhiJinE(int HuiYanKaZuoFeiID){ try {/*尝试运行代码*/ StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/ /*拼接需要查询的字段*/ queryString.append("SELECT HuiYuanKaMingXi.nominalAmount "); /*实例化表*/ queryString.append("FROM PwStoreCardInvalidDetails AS KuCunKaZuoFeiMingXi, " + "PwMembershipCardDetails AS HuiYuanKaMingXi "); /*表与关系 满足条件*/ queryString.append("WHERE KuCunKaZuoFeiMingXi.storeCardInvalidId = ? " + "AND KuCunKaZuoFeiMingXi.membershipCardDetailsId = HuiYuanKaMingXi.membershipCardDetailsId "); return dao.findByHql(queryString.toString(),new Object[]{HuiYanKaZuoFeiID}); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /*根据库存卡作废ID查询库存卡作废明细*/ @Override public List SelectKuCunKaZuoFeiMingXi(int KuCunKaZuoFeiID){ try {/*尝试运行代码*/ StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/ /*拼接需要查询的字段*/ queryString.append("SELECT KuCunKaZuoFeiMingXi.storeCardInvalidDetailsId, " + "HuiYuanKaMingXi.nominalAmount, HuiYuanKaKaZhong.membersKakaKindsOfNames, " + "HuiYuanKaLeiXing.membershipCardTypeName, BaoGuanDiDian.name, " + "HuiYuanKaMingXi.membershipCardCardNumber, KuCunKaZuoFeiMingXi.recordInvalid, " + "HuiYuanKaMingXi.membershipCardDetailsId "); /*实例化表*/ queryString.append("FROM PwStoreCardInvalidDetails AS KuCunKaZuoFeiMingXi, " + "PwMembershipCardDetails AS HuiYuanKaMingXi, SysMembershipCardType AS HuiYuanKaLeiXing, " + "SysMembersKakaKind AS HuiYuanKaKaZhong, SysMembershipCardStorageLocation AS BaoGuanDiDian "); /*表与关系 满足条件*/ queryString.append("WHERE KuCunKaZuoFeiMingXi.storeCardInvalidId = ? " + "AND KuCunKaZuoFeiMingXi.membershipCardDetailsId = HuiYuanKaMingXi.membershipCardDetailsId " + "AND HuiYuanKaMingXi.membershipCardTypeId = HuiYuanKaLeiXing.membershipCardTypeId " + "AND HuiYuanKaLeiXing.membersKakaKindId = HuiYuanKaKaZhong.membersKakaKindId " + "AND HuiYuanKaMingXi.membershipCardStorageLocationId = BaoGuanDiDian.membershipCardStorageLocationId "); return dao.findByHql(queryString.toString(),new Object[]{KuCunKaZuoFeiID}); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /* 根据模糊记录编号 MoHuJiLuBianHao * 模糊作废原因 MoHuZuoFeiYuanYin * 查询全部库存卡作废记录 * */ @Override public List SelectAllKuCunKaZuoFeiJiLu(String MoHuJiLuBianHao, String MoHuZuoFeiYuanYin){ try {/*尝试运行代码*/ StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/ /*拼接需要查询的字段*/ queryString.append("SELECT KuCunKaZuoFeiJiLu.storeCardInvalidId, KuCunKaZuoFeiJiLu.recordNum, " + "DengJiRen.staffName, KuCunKaZuoFeiJiLu.bookTime, KuCunKaZuoFeiJiLu.isVerify," + "KuCunKaZuoFeiJiLu.verifyTime, ShenHeRen.staffName, KuCunKaZuoFeiJiLu.invalidReason "); /*实例化表*/ queryString.append("FROM PwStoreCardInvalid AS KuCunKaZuoFeiJiLu, " + "SysStaff AS DengJiRen, SysStaff AS ShenHeRen "); /*表与关系 满足条件*/ queryString.append("WHERE KuCunKaZuoFeiJiLu.bookerId = DengJiRen.staffId " + "AND KuCunKaZuoFeiJiLu.verifierId = ShenHeRen.staffId " + "AND KuCunKaZuoFeiJiLu.recordNum like '%' + ?+'%' " + "AND KuCunKaZuoFeiJiLu.invalidReason like '%' + ?+'%' "); return dao.findByHql(queryString.toString(),new Object[]{MoHuJiLuBianHao,MoHuZuoFeiYuanYin}); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /*查询全部保管地点*/ @Override public List<SysMembershipCardStorageLocation> SelectAllBaoGuanDiDian(){ try {/*尝试运行代码*/ StringBuffer queryString = new StringBuffer();/*实例化StringBuffer*/ /*实例化表*/ queryString.append("FROM SysMembershipCardStorageLocation AS BaoGuanDiDian "); /*表与关系 满足条件*/ queryString.append("WHERE BaoGuanDiDian.membershipCardStorageLocationFatherId = 1 "); return dao.findByHql(queryString.toString()); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /* 根据会员卡类型 HuiYuanKaLeiXingID * 收货地点 ShouHuoDiDianID * 查询相对应的库存卡 * */ @Override public List SelectKuCunKa(int HuiYuanKaLeiXingID, int ShouHuoDiDianID){ try {/*尝试运行代码*/ StringBuffer queryString = new StringBuffer();/*实例化StringBuffer*/ /*拼接需要查询的字段*/ queryString.append("SELECT HuiYuanKaMingXi.membershipCardDetailsId, " + "HuiYuanKaMingXi.membershipCardCardNumber, HuiYuanKaMingXi.nominalAmount," + "HuiYuanKaMingXi.changeTheMembershipCardId "); /*实例化表*/ queryString.append("FROM PwMembershipCardDetails AS HuiYuanKaMingXi, " + "SysMembershipCardType AS HuiYuanKaLeiXing ,SysDailyManagementForm AS RiChangGuanLiXingShi "); /*表与关系 满足条件*/ queryString.append("WHERE HuiYuanKaMingXi.changeTheMembershipCardId BETWEEN 12 AND 13 " + "AND HuiYuanKaMingXi.membershipCardTypeId = ? " + "AND HuiYuanKaMingXi.membershipCardStorageLocationId = ? " + "AND HuiYuanKaMingXi.membershipCardTypeId = HuiYuanKaLeiXing.membershipCardTypeId " + "AND HuiYuanKaLeiXing.dailyManagementFormId = RiChangGuanLiXingShi.dailyManagementFormId " + "AND RiChangGuanLiXingShi.allowInvalid = true "); return dao.findByHql(queryString.toString(),new Object[]{HuiYuanKaLeiXingID, ShouHuoDiDianID}); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /*新增库存卡作废记录*/ @Override public int addKuCunKaZuoFei(PwStoreCardInvalid entity){ try {/*尝试运行代码*/ return dao.addAndGetId4Integer(entity); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return 0; } } /*新增库存卡作废明细*/ @Override public int addKuCunKaZuoFeiMingXi(PwStoreCardInvalidDetails entity){ try {/*尝试运行代码*/ return dao.addAndGetId4Integer(entity); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return 0; } } /* 根据建卡明细ID JianKaMingXiID * 查询需要修改的建卡明细信息 * */ @Override public List<PwMembershipCardDetails> SelectUpdateJianKaMingXi(int JianKaMingXiID){ try {/*尝试运行代码*/ StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/ /*实例化表*/ queryString.append("FROM PwMembershipCardDetails AS JianKaMingXi "); /*表与关系 满足条件*/ queryString.append("WHERE JianKaMingXi.membershipCardDetailsId = ? "); return dao.findByHql(queryString.toString(),new Object[]{JianKaMingXiID}); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /*修改建卡明细*/ @Override public boolean EditJianKaMingXi(PwMembershipCardDetails entity){ try {/*尝试运行代码*/ return dao.edit(entity); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return false; } }
第4步:方法层(Action)
在“MEMBCERP.Action”这个包下的“KuCunKaGuanLiAction”类中,定义添加库存卡作废信息相关的方法,代码如下:/*查询全部保管地点*/ public String getAllBaoGuanDiDian() { /*实例化一个Object数组*/ JSONObject jsObj=new JSONObject(); /*实例化一个Array数组*/ JSONArray jsArr = new JSONArray(); /*调用服务层方法,查询全部保管地点*/ List<SysMembershipCardStorageLocation> lstBaoGuanDiDian =this.kuCunKaGuanLiService.SelectAllBaoGuanDiDian(); /*循环遍历服务层返回的结果集*/ for (int i = 0; i < lstBaoGuanDiDian.size(); i++) { SysMembershipCardStorageLocation lsBaoGuanDiDian = lstBaoGuanDiDian.get(i); /*清空jsObj数组*/ jsObj.clear(); /*写入参数*/ jsObj.put("BaoGuanDiDianID", lsBaoGuanDiDian.getMembershipCardStorageLocationId()); jsObj.put("BaoGuanDiDianMC", lsBaoGuanDiDian.getName()); /*将jsObj数组添加到jsArr数组*/ jsArr.add(jsObj); } JSArr=jsArr; return SUCCESS; } /* 根据会员卡类型 HuiYuanKaLeiXingID * 收货地点 ShouHuoDiDianID * 查询相对应的库存卡 * */ public String getKuCunKa() { /*实例化一个Object数组*/ JSONObject jsObj=new JSONObject(); /*实例化一个Array数组*/ JSONArray jsArr = new JSONArray(); /*获取页面传递过来的参数*/ int HuiYuanKaLeiXingID=Integer.parseInt(this.getRequest().getParameter("HuiYuanKaLeiXingID").trim()); int ShouHuoDiDianID=Integer.parseInt(this.getRequest().getParameter("ShouHuoDiDianID").trim()); /*调用服务层方法,查询相对应的库存卡*/ List lsKuCunKa = this.kuCunKaGuanLiService.SelectKuCunKa(HuiYuanKaLeiXingID, ShouHuoDiDianID); /*循环遍历服务层返回的结果集*/ for (int i = 0; i < lsKuCunKa.size(); i++) { Object[] obj = (Object[])lsKuCunKa.get(i); /*清空jsObj数组*/ jsObj.clear(); jsObj.put("HuiYuiKaMingXiID", obj[0]); jsObj.put("HuiYuanKaHao", obj[1]); jsObj.put("MianZhiJinE", obj[2]); jsObj.put("ZuoFeiQianZhuanTaiID", obj[3]); /*将jsObj数组添加到jsArr数组*/ jsArr.add(jsObj); } HashMap<String, Object> jsMap = new HashMap<String, Object>(); /*将jsArr数组写入到jsMap中*/ jsMap.put("rows", jsArr); /*转换数组类型,并返回数组*/ JSObj=JSONObject.fromObject(jsMap); return SUCCESS; } /*新增库存卡作废记录 */ public String InsertKuCunKaZuoFei() { /*获取页面传递过来的参数*/ String param=encodingFunction.getMethodEncoding(this.getRequest().getParameter("KuCunKaZuoFeiParam")); /*分解参数*/ String[] params=param.split("<<"); /*实例化表*/ PwStoreCardInvalid lstKuCunKaZuoFeiJiLu=new PwStoreCardInvalid(); /*写入参数*/ lstKuCunKaZuoFeiJiLu.setRecordNum(params[0].trim()); lstKuCunKaZuoFeiJiLu.setInvalidReason(params[1].trim()); lstKuCunKaZuoFeiJiLu.setBookerId(Integer.parseInt(params[2].trim())); lstKuCunKaZuoFeiJiLu.setBookTime(params[3].trim()); lstKuCunKaZuoFeiJiLu.setIsVerify(params[4].trim()); lstKuCunKaZuoFeiJiLu.setVerifierId(Integer.parseInt(params[5].trim())); lstKuCunKaZuoFeiJiLu.setVerifyTime(params[6].trim()); /*调用服务层方法,新增库存卡作废记录 */ MSG = this.kuCunKaGuanLiService.addKuCunKaZuoFei(lstKuCunKaZuoFeiJiLu)+""; return SUCCESS; } /*新增库存卡作废明细记录 */ public String InsertKuCunKaZuoFeiMingXi() { /*获取页面传递过来的参数*/ String param=encodingFunction.getMethodEncoding(this.getRequest().getParameter("param")); /*分解参数*/ String[] jsArrString = param.split(">>"); boolean AMP=false; /*循环遍历数组*/ for (int M = 1; M < jsArrString.length; M++) { /*分解参数*/ String[] params=jsArrString[M].split("<<"); /*实例化表*/ PwStoreCardInvalidDetails lstKuCunKaZuoFeiMingXi=new PwStoreCardInvalidDetails(); /*写入参数*/ lstKuCunKaZuoFeiMingXi.setStoreCardInvalidId(Integer.parseInt(params[0].trim())); lstKuCunKaZuoFeiMingXi.setMembershipCardDetailsId(Integer.parseInt(params[1].trim())); lstKuCunKaZuoFeiMingXi.setInvalidStateBefore(Integer.parseInt(params[2].trim())); lstKuCunKaZuoFeiMingXi.setRecordInvalid(false); /*调用服务层方法,查询需要修改的建卡明细信息*/ List<PwMembershipCardDetails> lstJianKaMingXi=this.kuCunKaGuanLiService.SelectUpdateJianKaMingXi(Integer.parseInt(params[1].trim())); if (this.kuCunKaGuanLiService.addKuCunKaZuoFeiMingXi(lstKuCunKaZuoFeiMingXi) > 0) { //变更会员卡状态 for (int i = 0; i < lstJianKaMingXi.size(); i++) { PwMembershipCardDetails lsJianKaMingXi=lstJianKaMingXi.get(i); PwMembershipCardDetails JianKaMingXi=new PwMembershipCardDetails(); JianKaMingXi.setStateOfTheMembershipCardId(lsJianKaMingXi.getStateOfTheMembershipCardId()); JianKaMingXi.setChangeTheMembershipCardId(Integer.parseInt(params[3].trim())); JianKaMingXi.setKeeperId(lsJianKaMingXi.getKeeperId()); JianKaMingXi.setMembershipCardCardNumber(lsJianKaMingXi.getMembershipCardCardNumber()); JianKaMingXi.setMembershipCardDetailsId(lsJianKaMingXi.getMembershipCardDetailsId()); JianKaMingXi.setMembershipCardId(lsJianKaMingXi.getMembershipCardId()); JianKaMingXi.setMembershipCardStorageLocationId(lsJianKaMingXi.getMembershipCardStorageLocationId()); JianKaMingXi.setMembershipCardTypeId(lsJianKaMingXi.getMembershipCardTypeId()); JianKaMingXi.setNominalAmount(lsJianKaMingXi.getNominalAmount()); JianKaMingXi.setRemarks(lsJianKaMingXi.getRemarks()); JianKaMingXi.setSpecifyTheValidityTime(lsJianKaMingXi.getSpecifyTheValidityTime()); JianKaMingXi.setUpdateRankId(lsJianKaMingXi.getUpdateRankId()); JianKaMingXi.setValidityTime(lsJianKaMingXi.getValidityTime()); JianKaMingXi.setWriteCardStatus(lsJianKaMingXi.getWriteCardStatus()); JianKaMingXi.setWriteTime(lsJianKaMingXi.getWriteTime()); AMP=this.kuCunKaGuanLiService.EditJianKaMingXi(JianKaMingXi); } } } MSG=AMP+""; return SUCCESS; }
第5步:struts2的配置
<action name="getAllBaoGuanDiDian" class="KuCunKaGuanLiAction" method="getAllBaoGuanDiDian"> <result type="json"> <param name="root">JSArr</param> </result> </action> <action name="getKuCunKa" class="KuCunKaGuanLiAction" method="getKuCunKa"> <result type="json"> <param name="root">JSObj</param> </result> </action> <action name="InsertKuCunKaZuoFei" class="KuCunKaGuanLiAction" method="InsertKuCunKaZuoFei"> <result type="json"> <param name="root">MSG</param> </result> </action> <action name="InsertKuCunKaZuoFeiMingXi" class="KuCunKaGuanLiAction" method="InsertKuCunKaZuoFeiMingXi"> <result type="json"> <param name="root">MSG</param> </result> </action>
第6步:视图层调用
3.2.1.2.6(图1)
HTML代码:
<div>
<div class="XiaoBiaoti">新增库存卡作废</div>
<table style="padding-left:10px;">
<tr class="JianKaclass">
<td style="color:blue">记录编号</td>
<td><input id="txtJiLuBianHao" class="JiLuBianHaoclass" value="自动生成" readonly /></td>
</tr>
</table>
<table>
<tr>
<td>
<fieldset class="fieldsetXuanZeKuang">
<legend>会员卡类型</legend>
<table>
<tr>
<td></td>
</tr>
<tr>
<td><input class="easyui-combobox" id="cboHuiYuanKaZhongLei" style="width:120px"
data-options="valueField:'HuiYuanKaKaZhongID',textField:'HuiYuanKaKaZhongMC', url:'getKaZhongg',onSelect:getKaZhongLeiXing" /></td>
<td><input class="easyui-combobox" id="cboHuiYuanKaLeiXing" style="width:120px"
data-options="valueField:'HuiYuanKaLeiXingID',textField:'HuiYuanKaLeiXingMC'"/></td>
</tr>
</table>
</fieldset>
</td>
<td>
<fieldset class="fieldsetXuanZeKuang" style="margin-left:50px;">
<legend>-保管地点</legend>
<table>
<tr>
<td>
<input class="easyui-combobox" id="cboShouHuoDiDianBM" style="width:120px"
data-options="url:'getAllBaoGuanDiDian',valueField:'BaoGuanDiDianID', textField:'BaoGuanDiDianMC',onSelect:oncboShouHuoDiDianBM"/>
<input class="easyui-combobox" id="cboShouHuoDiDian" style="width:120px"
data-options="valueField:'BaoGuanDiDianMenDianID',textField:'BaoGuanDiDianMenDianMC'" />
</td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
<table class="ChaShanKaAnNiuclass">
<tr>
<td>作废金额</td>
<td><input id="txtZuoFeiJinE" readonly/>元</td>
<td>作废数量</td>
<td><input id="txtZuoFeiShuLiang" readonly />张</td>
</tr>
</table>
<table class="ChaShanKaAnNiuclass">
<tr>
<td><input type="button" value="添加卡片" onClick="TianjiaKaPian()" style="border:solid 2px #000000;background-color:#ECECEC;" /></td>
<td>作废原因</td>
<td><input type="text" style="width:350px;" id="txtZuoFeiYuanYin"/></td>
</tr>
</table>
<div style="padding-left:10px; width:auto;">
<table class="easyui-datagrid" id="dgZuoFeiMingXi" style="height:290px" data-options="singleSelect:true,rownumbers:true">
<thead>
<tr>
<th data-options="field:'HuiYuanKaHao',width:470,align:'center'">会员卡号</th>
<th data-options="field:'MianZhiJinE',width:345,align:'center'">面值金额</th>
<th data-options="field:'ZuoFeiQianZhuanTaiID',width:20,hidden:true,align:'center'">作废前状态ID</th>
<th data-options="field:'HuiYuiKaMingXiID',width:266,align:'center',formatter:CaoZuo">操作</th>
</tr>
</thead>
</table>
</div>
<fieldset style="height:40px;">
<center>
<table class="JianKaclass" style=" margin-top:-10px;">
<tr>
<td>登记人</td>
<td><input id="txtDengJiRen" onclick="openFromDengJiRen()"/></td>
<td>登记时间</td>
<td><input class="easyui-datebox" id="dtDengJiTime" style="width:120px;"
data-options="formatter:myformatter,parser:myparser" /></td>
<td><input type="checkbox" name="ckShenHeFou" value="true" onClick="onclickShenHeFou()" style="width:30px;" />
<span class="redXing" style=" margin-left:-10px;">开启审核</span></td>
<td>审核人</td>
<td><input id="txtShenHeRen" onclick="openFronShenHeRen()"/></td>
<td>审核时间</td>
<td><input class="easyui-datebox" id="dtShenHeTime" style="width:120px;"
data-options="formatter:myformatter,parser:myparser" /></td>
</tr>
</table>
</center>
</fieldset>
<center>
<table>
<tr class="xuanZeKuang">
<td colspan="20">
<a onClick="btInsertKuCunKaZuoFei()" class="easyui-linkbutton" data-options="iconCls:'icon-add'">添加</a>
<a onClick="btnFangQi()" class="easyui-linkbutton" data-options="iconCls:'icon-redo'">返回</a>
</td>
</tr>
</table>
</center>
</div>
<!-- 弹窗模块 -->
<!-- 弹窗_查询符合条件的卡 -->
<div id="FromSelectKa" class="FromFuHeKaclass">
<div class="easyui-layout FromFuHeKalayout">
<div data-options="region:'west'" style="width:450px;">
<div class="erJiBiaoTi">***查询结果***</div>
<hr style="border:solid 1px #CCCCCC;" />
<table id="dgChaXun" class="easyui-datagrid" style="height:472px"
data-options="rownumbers:true,loadMsg:'加载中,请稍后...'">
<thead>
<tr>
<th data-options="field:'HuiYuiKaMingXiID',width:20,hidden:true, align:'center'">会员卡明细ID</th>
<th data-options="field:'ckXuanZe',checkbox:true"></th>
<th data-options="field:'HuiYuanKaHao',width:200,align:'center'">卡号</th>
<th data-options="field:'MianZhiJinE',width:170,align:'center'">面值金额</th>
<th data-options="field:'ZuoFeiQianZhuanTaiID',width:20,hidden:true,align:'center'">作废前状态ID</th>
</tr>
</thead>
</table>
</div>
<div data-options="region:'center'">
<div class="erJiBiaoTi">***筛选设置***</div>
<hr style="border:solid 1px #CCCCCC;" />
<center>
<table class="FromFuHeKalayoutRight">
<tr>
<td align="right">开始卡号:</td>
<td><input id="txtKaiShiKaHao" /></td>
</tr>
<tr>
<td align="right">卡数量:</td>
<td><input id="txtKaShuLiang" /></td>
</tr>
<tr>
<td align="right">结束卡号:</td>
<td><input id="txtJieShuKaHao" /></td>
</tr>
<tr>
<td align="right">库存数量:</td>
<td><input id="txtKuCunShuLiang" style="color:#FF0000" value="0" readonly /></td>
<td>张</td>
</tr>
</table>
<table>
<tr class="xuanZeKuang">
<td>
<a onClick="HuoQu()" class="easyui-linkbutton" data-options="iconCls:'icon-ok'">确认</a>
<a onClick="$('#FromSelectKa').hide()"class="easyui-linkbutton" data-options="iconCls:'icon-cancel'">取消</a>
</td>
</tr>
</table>
</center>
</div>
</div>
</div>
<div class="SeYuanGongXinXi" id="FromDengJiRen" >
<div class="XiaoBiaoti">员工信息<span class="GuanBiAnNiuclass" onClick="btnGuanBi()">关闭</span></div>
<table id="dgDengJiRen" class="easyui-datagrid"
data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...',
url:'getYGXinXi', idField:'yuanGongID',onDblClickRow: DblDengJiRen">
<thead>
<tr>
<th data-options="field:'yuanGongID',width:120,hidden:true, align:'center'">员工ID</th>
<th data-options="field:'yuanGongXingMing',width:55,align:'center'">员工姓名</th>
<th data-options="field:'E-mail',width:115,align:'center'">E-mail</th>
<th data-options="field:'ShouJiHaoMa',width:90,align:'center'">手机号码</th>
<th data-options="field:'SuoShuMenDian',width:106,align:'center'">所属部门</th>
</tr>
</thead>
</table>
</div>
<div class="SeYuanGongXinXi" id="FromShenHeRen" >
<div class="XiaoBiaoti">员工信息<span class="GuanBiAnNiuclass" onClick="btnGuanBi()">关闭</span></div>
<table id="dgShenHeRen" class="easyui-datagrid"
data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...',
url:'getYGXinXi', idField:'yuanGongID',onDblClickRow: DblShenHeRen">
<thead>
<tr>
<th data-options="field:'yuanGongID',width:120,hidden:true, align:'center'">员工ID</th>
<th data-options="field:'yuanGongXingMing',width:55,align:'center'">员工姓名</th>
<th data-options="field:'E-mail',width:115,align:'center'">E-mail</th>
<th data-options="field:'ShouJiHaoMa',width:90,align:'center'">手机号码</th>
<th data-options="field:'SuoShuMenDian',width:106,align:'center'">所属部门</th>
</tr>
</thead>
</table>
</div>
JavaScript代码:$(document).ready(function(){ onclickShenHeFou(); $('#FromSelectKa').hide(); $('#FromDengJiRen').hide(); $('#FromShenHeRen').hide(); }); //查询种类 function getKaZhongLeiXing(){ $('#cboHuiYuanKaLeiXing').combobox({url:"getKaZhongLeiXing?membersKakaKindId="+$('#cboHuiYuanKaZhongLei').combobox('getValue')}); } //查询保管地点 function oncboShouHuoDiDianBM(){ $('#cboShouHuoDiDian').combobox({url:"getBaoGuanDiDianMenDian?MenDianID="+$('#cboShouHuoDiDianBM').combobox('getValue')}); } function CaoZuo(HuiYuiKaMingXiID, row, rowIndex) { return "<a href='javascript:yiChu(" + HuiYuiKaMingXiID + "," + rowIndex+ ")'>移除</a> "; } function yiChu(HuiYuiKaMingXiID, rowIndex){ $('#dgZuoFeiMingXi').datagrid('deleteRow',rowIndex); $('#txtZuoFeiShuLiang').val($('#dgZuoFeiMingXi').datagrid('getRows').length); var rowZuoFeiMingXi = $('#dgZuoFeiMingXi').datagrid('getData'); var money=0; for(var i=0;i < rowZuoFeiMingXi.rows.length;i++){ money=money+rowZuoFeiMingXi.rows[i].MianZhiJinE; } $('#txtZuoFeiJinE').val(money); } //改造年月日顺序 function myformatter(date){ var y = date.getFullYear(); var m = date.getMonth()+1; var d = date.getDate(); return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d); } function myparser(s){ if (!s) return new Date(); var ss = (s.split('-')); var y = parseInt(ss[0],10); var m = parseInt(ss[1],10); var d = parseInt(ss[2],10); if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ return new Date(y,m-1,d); } else { return new Date(); } } //打开登记人 function openFromDengJiRen(){ $('#FromDengJiRen').show(); $('#dgDengJiRen').datagrid('reload'); } //登记人双击事件 var DengJiRenID=0; function DblDengJiRen() { var row = $('#dgDengJiRen').datagrid('getSelected'); if (row) { DengJiRenID = row.yuanGongID; $('#txtDengJiRen').val(row.yuanGongXingMing); $('#dtDengJiTime').datebox('setValue',myformatter(new Date())); $('#FromDengJiRen').hide(); } } //判断是否开启审核 var ShenHe=""; function onclickShenHeFou(){ ShenHe=$("input:checkbox[name='ckShenHeFou']:checked").val(); if(ShenHe=="true"){ $("#txtShenHeRen").attr("disabled",false); $("#dtShenHeTime").datebox("enable"); }else{ ShenHe="false"; $("#txtShenHeRen").attr("disabled","disabled"); $("#dtShenHeTime").datebox("disable"); } } //打开审核人 function openFronShenHeRen(){ $('#FromShenHeRen').show(); $('#dgShenHeRen').datagrid('reload'); } //审核人双击事件 var ShenHeRenID=0; function DblShenHeRen() { var row = $('#dgShenHeRen').datagrid('getSelected'); if (row) { ShenHeRenID = row.yuanGongID; $('#txtShenHeRen').val(row.yuanGongXingMing); $('#dtShenHeTime').datebox('setValue',myformatter(new Date())); $('#FromShenHeRen').hide(); } } //open添加卡片窗口 function TianjiaKaPian(){ var HuiYuanKaLeiXingID = $('#cboHuiYuanKaLeiXing').combobox('getValue'); var ShouHuoDiDianID = $('#cboShouHuoDiDian').combobox('getValue'); if(HuiYuanKaLeiXingID > 0 && ShouHuoDiDianID > 0 ){ $('#FromSelectKa').show(); $.getJSON("getKuCunKa?HuiYuanKaLeiXingID="+HuiYuanKaLeiXingID+"&ShouHuoDiDianID="+ShouHuoDiDianID,function(Date){ $('#dgChaXun').datagrid('loadData',Date); $("#txtKuCunShuLiang").val($('#dgChaXun').datagrid('getRows').length); }); }else{ alert("请选择会员卡类型和保管地点后,再尝试添加卡片"); } } //获取选中数据,关闭添加卡片窗口 function HuoQu(){ var row = $('#dgChaXun').datagrid('getChecked'); $('#dgZuoFeiMingXi').datagrid('loadData',row); $('#txtZuoFeiShuLiang').val($('#dgZuoFeiMingXi').datagrid('getRows').length); var rowZuoFeiMingXi = $('#dgZuoFeiMingXi').datagrid('getData'); var money=0; for(var i=0;i < rowZuoFeiMingXi.rows.length;i++){ money=money+rowZuoFeiMingXi.rows[i].MianZhiJinE; } $('#txtZuoFeiJinE').val(money); $('#FromSelectKa').hide(); } //点击添加按钮 function btInsertKuCunKaZuoFei(){ //获取记录编号 var JiLuBianHao=""; $.getJSON("getJiLuBianHao?NAME=KuCunKaZuoFei&d="+new Date(),function(result){ JiLuBianHao=result; var rowZuoFeiMingXi = $('#dgZuoFeiMingXi').datagrid('getData'); var DengJiTime = $('#dtDengJiTime').datebox('getValue').trim(); if(DengJiRenID > 0 && rowZuoFeiMingXi.rows.length > 0 && DengJiTime != '') { var ShenHeZhuangTai=""; if($("input:checkbox[name='ckShenHeFou']:checked").val()=="true"){ ShenHeZhuangTai="已审核"; var ShenHeTime = $('#dtShenHeTime').datebox('getValue'); if(ShenHeRenID > 0 && ShenHeTime != ''){ var KuCunKaZuoFeiParam=JiLuBianHao+" <<"+$('#txtZuoFeiYuanYin').val()+" <<" +DengJiRenID+" <<"+DengJiTime+" <<"+ShenHeZhuangTai+" <<"+ShenHeRenID+" <<"+ShenHeTime+" <<"; InsertKuCunKaZuoFei(KuCunKaZuoFeiParam,rowZuoFeiMingXi,JiLuBianHao); }else{ alert("请选择审核人和审核时间,或关闭审核,再操作"); } }else{ ShenHeZhuangTai="未审核"; var ShenHeTime=" "; var KuCunKaZuoFeiParam=JiLuBianHao+" <<"+$('#txtZuoFeiYuanYin').val()+" <<" +DengJiRenID+" <<"+DengJiTime+" <<"+ShenHeZhuangTai+" <<"+ShenHeRenID+" <<"+ShenHeTime+" <<"; InsertKuCunKaZuoFei(KuCunKaZuoFeiParam,rowZuoFeiMingXi,JiLuBianHao); } }else{ alert("数据输入不完整,无法进行库存卡作废操作。请填写完整后,再尝试操作"); } }); } //新增库存卡作废 function InsertKuCunKaZuoFei(KuCunKaZuoFeiParam,rowZuoFeiMingXi,JiLuBianHao){ $.getJSON("InsertKuCunKaZuoFei?KuCunKaZuoFeiParam="+KuCunKaZuoFeiParam,function(StoreCardInvalidID){ if(StoreCardInvalidID > 0){ var HuiYuanKaZhuangTaiID=0; if(ShenHe == "true"){ HuiYuanKaZhuangTaiID="14"; }else{ HuiYuanKaZhuangTaiID="63"; } var jsArr=""; for (var i = 0; i < rowZuoFeiMingXi.rows.length; i++) { jsArr=jsArr+">>"+StoreCardInvalidID+" <<"+rowZuoFeiMingXi.rows[i].HuiYuiKaMingXiID+" <<" +rowZuoFeiMingXi.rows[i].ZuoFeiQianZhuanTaiID+" <<"+HuiYuanKaZhuangTaiID+" <<"; } $.getJSON("InsertKuCunKaZuoFeiMingXi?param="+jsArr,function(result){if(result == "true"){}}); alert("新增成功!记录编号为【"+JiLuBianHao.trim()+"】"); location.href="KuCunKaGuanLi/KuCunKaZuoFeiInsert.jsp"; }else{ alert("新增失败"); } }); } function btnGuanBi(){ $('#FromShenHeRen').hide(); $('#FromDengJiRen').hide(); } function btnFangQi(){ if (confirm('请确认已保存当前操作,确定立即跳转?')) { location.href="KuCunKaGuanLi/KuCunKaZuoFei.jsp"; } }
至此,会员卡管理系统技术解析(十四) 库存卡作废记录添加 技术解析完毕。
注意:仅供学习,禁止用于商业用途!否则,后果自负。
@最终解析权归本人所有
相关文章推荐