标签:
维修记录就是记录钟表的维修内容和所使用的配件,使用配件时会生成出库记录,记录库存的数量变化。如果单据维修完成,也可以执行完成维修的操作。
实现思路:
当点击维修记录时跳转到维修记录的界面并且将当前行的工单录入ID设置为全局变量,当我录入记录单的时候工单录入ID作为外键插入到表中。
界面效果图:
2.2.7 (图1)
2.2.7(图2)
从界面上看这里用到的特殊控件:
表格中嵌入数字文本框(easyui-numberbox)和下拉框(easyui-combobox)
第一步:数据库
表与关系:
2.2.7(图3)
表1:维修记录(pw_GongDanWeiXiu)
用于记录钟表维修内容
列名 |
类型 |
主外键 |
说明 |
GongDanWeiXiuID |
int |
主键 |
工单维修ID |
GongDanLuRuID |
int |
外键 |
工单录入ID |
LuRuYuanID |
int |
外键 |
录入员ID |
BiaoKe |
nchar(10) |
|
表壳 |
BiaoDai |
nchar(10) |
|
表带 |
BaTou |
nchar(10) |
|
表头 |
BoLi |
nchar(10) |
|
玻璃 |
JiXin |
nchar(10) |
|
机芯 |
ZouShi |
nchar(10) |
|
走时 |
WaiGuan |
nchar(10) |
|
外观 |
FangShui |
nchar(10) |
|
防水 |
FuWuNeiRong |
nchar(400) |
|
服务内容 |
GenXinShiJian |
datetime |
|
更新时间 |
YouXiaoFou |
Bit |
|
有效否 |
表2:维修记录明细(pw_GongDanChanPinMingXi)
用于存放维修记录时所用到的配件信息和保修内容
列名 |
类型 |
主外键 |
说明 |
GongDanChanPinMingXiID |
int |
主键 |
配件记录明细ID |
GongDanWeiXiuID |
int |
外键 |
工单维修ID |
ChanPinID |
int |
外键 |
产品ID |
ShuLiang |
decimal(18, 0) |
|
数量 |
DanJia |
decimal(18, 3) |
|
单价 |
ChanPinCangWeiID |
int |
外键 |
产品仓位 |
BaoXiuQiID |
int |
外键 |
保修期ID |
BaoXiuBeiZhu |
nchar(400) |
|
保修备注 |
GenXinShiJian |
datetime |
|
更新时间 |
YouXiaoFou |
bit |
|
有效否 |
表3:工单录入表(pw_GongDianLuRu)
用于存放钟表录入的信息
列名 |
数据类型 |
主键/外键 |
说明 |
GongDanLuRuID |
int |
主键 |
工单录入ID |
YuanShiDanHaoID |
int |
外键 |
原始单号ID |
GongDanZhuanTaiID |
int |
外键 |
工单状态ID |
JinEZhuangTaiID |
int |
外键 |
金额状态ID |
GongDanLeiXingID |
int |
外键 |
工单类型ID |
KeHuID |
int |
外键 |
客户ID |
JianXiuLeiXingID |
int |
外键 |
检修类型ID |
PinPaiID |
int |
外键 |
品牌ID |
GongDanRiQi |
date |
|
工单日期 |
GongDanBianHao |
nchar(50) |
|
工单编号 |
SongXiuRiQi |
data |
|
送修日期 |
YuFanRiQi |
data |
|
预返日期 |
FenYongJinE |
decimal(18, 4) |
|
费用金额 |
ZhongBiaoLeiXing |
nchar(10) |
|
钟表类型 |
BiaoKuan |
nchar(10) |
|
表款 |
GuiGe |
text |
|
规格/名称 |
XiuPeiJiLu |
text |
|
修配记录 |
JiXinXingHao |
nchar(50) |
|
机芯号 |
BiaoXingHao |
nchar(50) |
|
表型号 |
BiaoShenHao |
nchar(50) |
|
表身号 |
BiaoDaiJieShu |
nchar(50) |
|
表带节数 |
ZhongBiaoQiTaoMiaoShu |
varchar(400) |
|
钟表其他描述 |
WaiGuan |
text |
|
外观 |
KeHuZhiShu |
varchar(400) |
|
客户自述 |
YouXiaoFou |
Bit |
|
有效否 |
表4:员工表(sys_YuanGong)
列名 |
数据类型 |
主外键 |
说明 |
YuanGongID |
int |
主键 |
员工ID |
LuRuYuanID |
int |
外键 |
录入员ID |
JueSeID |
int |
外键 |
角色ID |
YuanGongZhuangTaiID |
int |
外键 |
员工状态ID |
MenDianID |
int |
外键 |
门店ID |
YuanGongBianHao |
nchar(50) |
|
员工编号 |
YuanGongXingMing |
nchar(50) |
|
员工姓名 |
XingBie |
nchar(50) |
|
性别 |
JiGuan |
nchar(50) |
|
籍贯 |
XueLi |
nchar(50) |
|
学历 |
ChuShengRiQi |
date |
|
出生日期 |
ShenFenZhengHao |
nchar(50) |
|
身份证号 |
RuZhiRiQi |
date |
|
入职日期 |
RuZhiDiDian |
nchar(50) |
|
入职地址 |
YiDongShouJi |
nchar(50) |
|
移动手机 |
JiaTingDianHua |
nchar(50) |
|
家庭电话 |
DiXin |
nchar(50) |
|
底薪 |
DianZiYouXiang |
nchar(50) |
|
电子邮箱 |
TongXunDiZhi |
nchar(100) |
|
通讯地址 |
BeiZhu |
nchar(100) |
|
备注 |
GengXinShiJian |
datetime |
|
更新时间 |
YouXiaoFou |
bit |
|
有效否 |
MiMa |
|
|
密码 |
表5:保修期表(sys_BaoXiuQi)
列名 |
数据类型 |
主键/外键 |
说明 |
BaoXiuQiID |
int |
主键 |
保修期ID |
LuRuYuanID |
int |
外键 |
录入员ID |
BaoXiuQiMingCheng |
nchar(100) |
|
保修期名称 |
BaoXiuTianShu |
nchar(10) |
|
保修天数 |
GengXinShiJian |
datetime |
|
更新时间 |
YouXiaoFou |
bit |
|
有效否 |
表6:仓位表 (sys_CangWei)
列名 |
数据类型 |
主/外键 |
说明 |
CangWeiID |
int |
主键 |
仓位ID |
MenDianID |
int |
外键 |
门店ID |
CangWeiLeiXingID |
int |
外键 |
仓位类型ID |
CangWeiMingCheng |
nchar(50) |
|
仓位名称 |
PaiXuHao |
nchar(50) |
|
排序号 |
GengXinShiJian |
datetime |
|
更新时间 |
YouXiaoFou |
bit |
|
有效否 |
BeiZhu |
nchar(50) |
|
备注 |
表7:库存表 (sys_KuCun)
列名 |
数据类型 |
主键/外键 |
说明 |
CangKuID |
int |
主键 |
库存ID |
LuRuYuanID |
int |
外键 |
录入员ID |
CangWeiID |
int |
外键 |
仓位ID |
ChanPinID |
int |
外键 |
产品ID |
KuCunShuLiang |
int |
|
库存数量 |
GengXinShiJian |
datetime |
|
更新时间 |
表8:产品资料表(sys_ChanPinZiLiao)
列名 |
数据类型 |
主键/外键 |
说明 |
ChanPinID |
int |
主键 |
产品ID |
LuRuYuanID |
int |
外键 |
录入员ID |
CangWeiID |
int |
外键 |
仓位ID |
ChanPinLeiXingID |
int |
外键 |
产品类型ID |
ChanPinZhongLeiID |
int |
外键 |
产品种类ID |
ChanPinPinPaiID |
int |
外键 |
产品品牌ID |
DanWeiID |
int |
外键 |
单位ID |
ChanPinBianHao |
nchar(50) |
|
产品编号 |
ChanPinMingCheng |
nchar(50) |
|
产品名称 |
CaiGouDanJia |
decimal(10, 4) |
|
采购单价 |
YiJiXiaoShouJia |
decimal(10, 4) |
|
销售单价 |
ZuiShaoKuCun |
int |
|
最小库存数 |
ZuiDaKuCun |
int |
|
最大库存数 |
JianJie |
varchar(500) |
|
简介 |
GengXinShiJian |
datetime |
|
更新时间 |
YouXiaoFou |
bit |
|
有效否 |
第二步:控件使用
如后在表格里面嵌入其他控件
效果图:
2.2.7 (图4)
表格嵌入控件html代码:
<table id="dgvWeiXiuJiLuMingXi" class="easyui-datagrid" style="width: 900px; height: 250px" data-options="singleSelect:true,onClickCell:YiChuChanPin,toolbar:‘#TB‘"> <thead> <tr> <th data-options="field:‘ChanPinID‘,width:90,align:‘center‘,hidden:true"> 产品ID </th> <th data-options="field:‘ChanPinCangWeiID‘,width:90,align:‘center‘,hidden:true"> 仓位ID </th> <th data-options="field:‘ChanPinBianHao‘,width:120,align:‘center‘"> 产品编号 </th> <th data-options="field:‘ChanPinMingCheng‘,width:120,align:‘center‘"> 产品名称 </th> <th data-options="field:‘KuCunShuLiang‘,width:‘100‘,align:‘center‘"> 库存数量 </th> <th data-options="field:‘ShuLiang‘,width:60,align:‘center‘,editor:{ type: ‘numberbox‘ , options:{ onChange : SearchInventory } }"> 数量 </th> <th data-options="field:‘DanJia‘,width:80,align:‘center‘,editor:‘numberbox‘"> 单价 </th> <th data-options="field:‘BaoXiuQiID‘,width:180,align:‘center‘,formatter:function(value,row){ return row.BaoXiuQiMingCheng; },editor:{ type:‘combobox‘, options:{ url:‘/WeiXiuGuanLi/SelectBaoXiuQi‘, valueField:‘BaoXiuQiID‘, textField:‘BaoXiuQiMingCheng‘, editable:false, onSelect:onselect } }"> 保修期 </th> <th data-options="field:‘BaoXiuBeiZhu‘,width:200,align:‘center‘,editor:‘textbox‘"> 保修备注 </th> <th data-options="field:‘YiChu‘,width:60,align:‘center‘,formatter:myformatter"> 操作 </th> </tr> </thead> </table>
表格里面的下拉框绑定数据代码:
<th data-options="field:‘BaoXiuQiID‘,width:180,align:‘center‘,formatter:function(value,row){ return row.BaoXiuQiMingCheng; },editor:{ type:‘combobox‘, options:{ url:‘/WeiXiuGuanLi/SelectBaoXiuQi‘, valueField:‘BaoXiuQiID‘, textField:‘BaoXiuQiMingCheng‘, editable:false, onSelect:onselect } }"> 保修期 </th>
解释:
在例里面定义一个editor,类型为combobox,然后在options里面绑定下拉框的数据也可以设置其他的属性,onSelect是下拉框选择时触发的事件。
onSelect事件触发的方法代码是:
function onselect(data, index,sd) { $("#dgvWeiXiuJiLuMingXi").datagrid("getSelected").BaoXiuQiMingCheng = data.BaoXiuQiMingCheng; }
方法里面有三个参数:第一个参数是当前行的数据,第二个参数是索引,第三个参数我也忘了,不过可以用alert()弹出来看看。
这个方法的作用是把选择的值赋值给表格。
第三步:控制器
提交维修记录要执行4个步奏(提交维修记录——>提交使用配件——>出库——>出库明细)
控制器代码:
#region 提交维修记录 int intGongDanWeiXiuID = 0; public int TiJiaoWeiXiuJiLu(Models.pw_GongDanWeiXiu dtWeiXiuJiLu, int intGongDanID) { #region 报废前一条 var varGongDanWeiXiuJiLu = (from dtGongDanWeiXiuJiLu in myMdl.pw_GongDanWeiXiu where dtGongDanWeiXiuJiLu.GongDanLuRuID == intGongDanID && dtGongDanWeiXiuJiLu.YouXiaoFou == true select dtGongDanWeiXiuJiLu); int intCount = varGongDanWeiXiuJiLu.Count();//获取总数 if (intCount > 0) { var varWeiXiuJiLu = varGongDanWeiXiuJiLu.Single<Models.pw_GongDanWeiXiu>(); #region ----回滚库存数量---- var varPeiJian = (from dtPeiJian in myMdl.pw_GongDanChanPinMingXi where dtPeiJian.GongDanWeiXiuID == varWeiXiuJiLu.GongDanWeiXiuID select dtPeiJian).ToArray();//转数组类型 for (var i = 0; i < varPeiJian.Count(); i++) { int intCangWeiID = Convert.ToInt32(varPeiJian[i].ChanPinCangWeiID); int intChanPinID = Convert.ToInt32(varPeiJian[i].ChanPinID); int intShuLiang = Convert.ToInt32(varPeiJian[i].ShuLiang); var varXiuGaiKuCun = (from dtCunKu in myMdl.sys_KuCun where dtCunKu.CangWeiID == intCangWeiID && dtCunKu.ChanPinID == intChanPinID select dtCunKu).Single<Models.sys_KuCun>(); varXiuGaiKuCun.KuCunShuLiang = varXiuGaiKuCun.KuCunShuLiang + intShuLiang;//改变库存数 varXiuGaiKuCun.GengXinShiJian = DateTime.Now;//更新时间 myMdl.SaveChanges(); } #endregion varWeiXiuJiLu.YouXiaoFou = false;//修改有效否 myMdl.SaveChanges(); } #endregion dtWeiXiuJiLu.YouXiaoFou = true; dtWeiXiuJiLu.GenXinShiJian = DateTime.Now; dtWeiXiuJiLu.GongDanLuRuID = intGongDanID; myMdl.pw_GongDanWeiXiu.AddObject(dtWeiXiuJiLu);//新增 int intCG = myMdl.SaveChanges(); if (intCG > 0) { #region 获取当前插入单据的ID var varGongDanWeiXiu = (from dtGongDanWeiXiu in myMdl.pw_GongDanWeiXiu orderby dtGongDanWeiXiu.GongDanWeiXiuID descending//倒叙 select dtGongDanWeiXiu).ToList(); intGongDanWeiXiuID = varGongDanWeiXiu.First().GongDanWeiXiuID;//获取第一行的ID #endregion } return intGongDanWeiXiuID; } #endregion #region 提交使用配件 public ActionResult PeiJianOnChuKu(Models.pw_GongDanChanPinMingXi dtPeiJian, int intChuKuID, int intWeiXiuID) { #region 提交使用配件 dtPeiJian.GongDanWeiXiuID = intWeiXiuID; dtPeiJian.YouXiaoFou = true; dtPeiJian.GenXinShiJian = DateTime.Now; myMdl.pw_GongDanChanPinMingXi.AddObject(dtPeiJian); int i = myMdl.SaveChanges(); int intChanPinID = Convert.ToInt32(dtPeiJian.ChanPinID); int intCagWeiID = Convert.ToInt32(dtPeiJian.ChanPinCangWeiID); int intShuLiang = Convert.ToInt32(dtPeiJian.ShuLiang); decimal decJinE = Convert.ToDecimal(dtPeiJian.DanJia); ChuKuMingXi(intChanPinID, intCagWeiID, intShuLiang, decJinE, intChuKuID); #endregion if (i > 0) { return Json(true, JsonRequestBehavior.AllowGet); } else { return Json(false, JsonRequestBehavior.AllowGet); } } public string ShengChengChuKuDanJu()//生成单据 { string strNian = DateTime.Now.Year.ToString(); string strYe = DateTime.Now.Month.ToString(); string strTian = DateTime.Now.Day.ToString(); var varZuiDaDanHaoShu = (from dtDanHao in myMdl.DangRiZuiDaDanShu select dtDanHao).Single<Models.DangRiZuiDaDanShu>(); int intDanHaoShu = Convert.ToInt32(varZuiDaDanHaoShu.ChuKuDanHao) + 1;//修改最大单号数 varZuiDaDanHaoShu.ChuKuDanHao = intDanHaoShu; myMdl.SaveChanges(); string strDanHaoShu = intDanHaoShu.ToString(); if (strDanHaoShu.Length == 1) { strDanHaoShu = "000" + strDanHaoShu; } else if (strDanHaoShu.Length == 2) { strDanHaoShu = "00" + strDanHaoShu; } else if (strDanHaoShu.Length == 3) { strDanHaoShu = "0" + strDanHaoShu; } return "CK" + strNian + (strYe.Length > 2 ? strYe : "0" + strYe) + (strTian.Length > 2 ? strTian : "0" + strTian) + strDanHaoShu; } #endregion #region 出库 int intChuKuID = 0; public int ChuKu(string strDanJuBianHao, int intLuRuYuanID) { #region 报废出库记录 int intMenDianID = Convert.ToInt32(Session["ShopID"]); var varChuKuDan = from dtChuKuDan in myMdl.pw_ChuRuKuDanJu join dtLuRuYuan in myMdl.sys_YuanGong on dtChuKuDan.LuRuYuanID equals dtLuRuYuan.YuanGongID where dtChuKuDan.BeiZhu.Contains(strDanJuBianHao) && dtChuKuDan.YouXiaoFou == true && dtLuRuYuan.MenDianID == intMenDianID select dtChuKuDan; if (varChuKuDan.Count() == 1) { varChuKuDan.Single<Models.pw_ChuRuKuDanJu>().YouXiaoFou = false; myMdl.SaveChanges(); } #endregion #region 出库记录 Models.pw_ChuRuKuDanJu dtChuKu = new Models.pw_ChuRuKuDanJu(); dtChuKu.BeiZhu = "维修使用【" + strDanJuBianHao + "】"; dtChuKu.DanJuRiQi = DateTime.Now; dtChuKu.YouXiaoFou = true; dtChuKu.ShenHeFou = true; dtChuKu.GongZuoZhanID = 4; dtChuKu.LuRuYuanID = intLuRuYuanID; dtChuKu.DanJuBianHao = ShengChengChuKuDanJu(); dtChuKu.RuKuFou = false; myMdl.pw_ChuRuKuDanJu.AddObject(dtChuKu); int i = myMdl.SaveChanges(); #endregion if (i > 0) { var varChuKu = (from DtChuKu in myMdl.pw_ChuRuKuDanJu orderby DtChuKu.ChuRuKuDanID descending select DtChuKu).ToList(); intChuKuID = varChuKu.First().ChuRuKuDanID; return intChuKuID; } else { return intChuKuID; } } #endregion #region 出库明细 public ActionResult ChuKuMingXi(int intChanPinID, int intCangWeiID, int intShuLiang, decimal decJinE, int intChuKuID) { Models.pw_ChuRuKuDanJuMingXi myChuKuMingXi = new Models.pw_ChuRuKuDanJuMingXi(); myChuKuMingXi.CangWeiID = intCangWeiID; myChuKuMingXi.ChanPinID = intChanPinID; myChuKuMingXi.ChuRuKuDanJuID = intChuKuID; myChuKuMingXi.JinE = decJinE; myChuKuMingXi.ShuLiang = intShuLiang; myChuKuMingXi.YouXiaoFou = true; myMdl.pw_ChuRuKuDanJuMingXi.AddObject(myChuKuMingXi); int i = myMdl.SaveChanges(); if (i > 0) { #region 修改库存数 var varXiuGaiKuCun = (from dtCunKu in myMdl.sys_KuCun where dtCunKu.CangWeiID == intCangWeiID && dtCunKu.ChanPinID == intChanPinID select dtCunKu).Single<Models.sys_KuCun>(); varXiuGaiKuCun.KuCunShuLiang = varXiuGaiKuCun.KuCunShuLiang - intShuLiang; varXiuGaiKuCun.GengXinShiJian = DateTime.Now; myMdl.SaveChanges(); #endregion return Json(true, JsonRequestBehavior.AllowGet); } else { return Json(false, JsonRequestBehavior.AllowGet); } } #endregion
第四步:视图层
视图层html代码:
<body> <center> <table> <tr> <td style="width:5px;"></td> <td style="width:250px;">工单:<label id="lblGongDanBianHao" style="color: #FF0000; border-bottom:1px solid #FF0000;"></label></td> <td style="width:255px;">客户:<label id="lblKeHuXingMing" style="color: #FF0000;border-bottom:1px solid #FF0000;"></label></td> <td style="width:255px;">电话:<label id="lblLianXiDianHua" style="color: #FF0000;border-bottom:1px solid #FF0000;"></label></td> </tr> </table> <form id="formTiJiaoWeiXiuJiLu"> <center> <br /> <div class="imgl"> 钟表检测 </div> <table> <tr> <td style="width:250px;"> 表壳: <select id="cboBiaoKe" name="BiaoKe" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="正常">正常</option> <option value="变形">变形</option> <option value="缺损">缺损</option> </select> </td> <td style="width:250px;"> 表带: <select id="cboBiaoDai" name="BiaoDai" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="正常">正常</option> <option value="变形">变形</option> <option value="缺损">缺损</option> <option value="松动">松动</option> </select> </td> <td style="width:250px;"> 把头: <select id="cboBiaoTou" name="BaTou" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="正常">正常</option> <option value="变形">变形</option> <option value="缺损">缺损</option> <option value="松动">松动</option> </select> </td> </tr> <tr> <td style="width:250px;"> 玻璃: <select id="cboBoLi" name="BoLi" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="正常">正常</option> <option value="变形">变形</option> <option value="缺损">缺损</option> <option value="松动">松动</option> </select> </td> <td style="width:250px;"> 机芯: <select id="cboJiXin" name="JiXin" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="正常">正常</option> <option value="缺油">缺油</option> <option value="零部件变形">零部件变形</option> <option value="零部件缺损">零部件缺损</option> <option value="零部件生锈">零部件生锈</option> </select> </td> </tr> </table> </center> <center> <br /> <div class="imgl">钟表建议</div> <table> <tr> <td style="width:250px"> 走时: <select id="cboZouShu" name="ZouShi" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="走时正常">走时正常</option> <option value="建议抹油保养">建议抹油保养</option> <option value="建议更换零部件">建议更换零部件</option> </select> </td> <td style="width:250px"> 外观: <select id="cboWeiGuan" name="WaiGuan" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="正常漂亮">正常漂亮</option> <option value="建议表壳翻新">建议表壳翻新</option> <option value="建议表带翻新">建议表带翻新</option> <option value="建议全面翻新">建议全面翻新</option> <option value="建议更换表带">建议更换表带</option> <option value="建议更换表带">建议更换表带</option> </select> </td> <td style="width:250px"> 防水: <select id="cboFanShui" name="FangShui" class="easyui-combobox" style="width: 150px" data-options="editable: false, panelHeight:‘auto‘"> <option value="无">无</option> <option value="防水正常">防水正常</option> <option value="建议检查防水">建议检查防水</option> <option value="建议修复防水">建议修复防水</option> </select> </td> </tr> </table> </center> <input id="txtFuWuNeiRong" name="FuWuNeiRong" class="easyui-textbox" style="width:900px;height:49px" data-options="multiline:true" /> <input id="LuRuYuan" name="LuRuYuanID" type="hidden" /> <table id="dgvWeiXiuJiLuMingXi" class="easyui-datagrid" style="width: 900px; height: 250px" data-options="singleSelect:true,onClickCell:YiChuChanPin,toolbar:‘#TB‘"> <thead> <tr> <th data-options="field:‘ChanPinID‘,width:90,align:‘center‘,hidden:true"> 产品ID </th> <th data-options="field:‘ChanPinCangWeiID‘,width:90,align:‘center‘,hidden:true"> 仓位ID </th> <th data-options="field:‘ChanPinBianHao‘,width:120,align:‘center‘"> 产品编号 </th> <th data-options="field:‘ChanPinMingCheng‘,width:120,align:‘center‘"> 产品名称 </th> <th data-options="field:‘KuCunShuLiang‘,width:‘100‘,align:‘center‘"> 库存数量 </th> <th data-options="field:‘ShuLiang‘,width:60,align:‘center‘,editor:{ type: ‘numberbox‘ , options:{ onChange : SearchInventory } }"> 数量 </th> <th data-options="field:‘DanJia‘,width:80,align:‘center‘,editor:‘numberbox‘"> 单价 </th> <th data-options="field:‘BaoXiuQiID‘,width:180,align:‘center‘,formatter:function(value,row){ return row.BaoXiuQiMingCheng; },editor:{ type:‘combobox‘, options:{ url:‘/WeiXiuGuanLi/SelectBaoXiuQi‘, valueField:‘BaoXiuQiID‘, textField:‘BaoXiuQiMingCheng‘, editable:false, onSelect:onselect } }"> 保修期 </th> <th data-options="field:‘BaoXiuBeiZhu‘,width:200,align:‘center‘,editor:‘textbox‘"> 保修备注 </th> <th data-options="field:‘YiChu‘,width:60,align:‘center‘,formatter:myformatter"> 操作 </th> </tr> </thead> </table> </form> <br /> <table> <tr> <td><a onclick="BaoCunWeiXiuJiLu()" class="goodButton1" style="width: 90px;height: 28px" plain="true">保存</a></td> <td><a onclick="ZhongBiaoWeiXiu()" class="goodButton1_c1" style="width: 90px; height: 28px;">返回</a></td> </tr> </table> </center> <div id="TB"> <a onclick="XuanZuoChangPin()" class="easyui-linkbutton" style="width: auto;height: auto;" iconcls="icon-add" plain="true" ">选择配件</a> <a onclick="butononclick()" class="easyui-linkbutton" style="width: auto;height: auto;" iconcls="icon-add" plain="true" ">选择服务内容</a> </div> @*选择服务内容*@ <div class="reveal-modal" id="frmXuanZheNeiRong" style="width: 330px; height: 150px; background:White;"> <form name="formXuanZheNeiRong"> <input name="chk" type="checkbox" value="此表()磨损严重,配换()" />此表()磨损严重,配换()<br /> <input name="chk" type="checkbox" value="此表需要(简单/全面)翻新" />此表需要(简单/全面)翻新<br /> <input name="chk" type="checkbox" value="此表()生锈磨损,需查修,抹油保养,微调校对" />此表()生锈磨损,需查修,抹油保养,微调校对<br /> <input name="chk" type="checkbox" value="此表因()导致进水,需烘干更换" />此表因()导致进水,需烘干更换<br /><br /> <center> <a onclick="XuanZheNeiRong()" class="goodButton" style="width:80px;height:28px">选择</a> </center> </form> <a class="close-reveal-modal">×</a><!--关闭按钮--> </div> @*选择配件*@ <div id="frmXuanZheChanPin" class="reveal-modal" style="width: 820px; height: 360px;padding: 10px; background:White; top:100px; left:400px;"> <center> <table> <tr style="height:8px"></tr> <tr> <td> 所在仓位: <input id="cboCangWei" class="easyui-combobox" style="width: 150px;" data-options="onLoadSuccess:LoadSuccess,editable:true" /> 关键字: <input id="txtMoHu" class="easyui-textbox" style="width: 200px;" /> </td> <td> <a onclick="ChaXunChanPinZiLiao()" class="goodButton" style="width: 80px;height:20px">查询</a> </td> <td> <a onclick="QueDingXuanZheChanPin()" class="goodButton" style="width: 80px;height:20px">确定</a> </td> </tr> </table> <table id="dgvChanPinZiLiao" class="easyui-datagrid" style="width: 820px; height: 308px" data-options="singleSelect:true,collapsible:true,onLoadSuccess:BangDingXuanShe,onClickCell:TiGou,onClickRow:PanDuan,footer:‘#_Paging‘"> <thead> <tr> <th data-options="field:‘XuanZe‘,width:25,align:‘center‘,formatter: function (value, rec, rowIndex) { return ‘<input type=\‘checkbox\‘ name=\‘PD\‘ id=\‘‘ + ‘ChanPinZiLiao‘ + rowIndex + ‘\‘ >‘ ;}"></th> <th data-options="field:‘ChanPinID‘,width:90,align:‘center‘,hidden:true"> 产品ID </th> <th data-options="field:‘ChanPinPinPaiID‘,width:90,align:‘center‘,hidden:true"> 品牌ID </th> <th data-options="field:‘DanWeiID‘,width:90,align:‘center‘,hidden:true"> 单位ID </th> <th data-options="field:‘CangWeiID‘,width:90,align:‘center‘,hidden:true"> 仓位ID </th> <th data-options="field:‘ChanPinLeiXingID‘,width:90,align:‘center‘,hidden:true"> 产品类型ID </th> <th data-options="field:‘ChanPinZhongLeiID‘,width:90,align:‘center‘,hidden:true"> 产品种类ID </th> <th data-options="field:‘ChanPinMingCheng‘,width:120,align:‘center‘"> 名称 </th> <th data-options="field:‘PinPaiMingCheng‘,width:70,align:‘center‘"> 品牌 </th> <th data-options="field:‘ChanPinBianHao‘,width:70,align:‘center‘"> 编号 </th> <th data-options="field:‘ChanPinLeiXing‘,width:70,align:‘center‘"> 类型 </th> <th data-options="field:‘PinZhongMingCheng‘,width:60,align:‘center‘"> 品种 </th> <th data-options="field:‘CaiGouDanJia‘,width:70,align:‘center‘"> 采购单价 </th> <th data-options="field:‘YiJiXiaoShouJia‘,width:70,align:‘center‘"> 销售价格 </th> <th data-options="field:‘BaoXiuQiXian‘,width:100,align:‘center‘,hidden:true"> 保修期限 </th> <th data-options="field:‘KuCunShuLiang‘,width:70,align:‘center‘"> 库存 </th> <th data-options="field:‘CangWeiMingCheng‘,width:70,align:‘center‘"> 仓位 </th> <th data-options="field:‘ZuiShaoKuCun‘,width:90,align:‘center‘,hidden:true"> 最少库存 </th> <th data-options="field:‘ZuiDaKuCun‘,width:90,align:‘center‘,hidden:true"> 最大库存 </th> <th data-options="field:‘JianJie‘,width:100,align:‘center‘"> 简介 </th> <th data-options="field:‘GengXinShiJian‘,width:155,align:‘center‘,hidden:true"> 更新时间 </th> </tr> </thead> </table> <div class="_Paging" id="_Paging"> <center> <table class="_Layout"> <tr> <td id="_Shop"></td> <td><a href="javascript:;" class="_HomePage" title="首页" onclick="ShouYe()"></a></td> <td><a href="javascript:;" class="_PreviousPage" title="上一页" onclick="ShangYiYe()"></a></td> <td><input class="_Skip" id="txtTiaoZhuan" title="回车跳转" onkeypress="TiaoZhuan(event)" onkeyup="value=value.replace(/[^\d]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\d]/g,‘‘))" /></td> <td>/<label id="lblZongYeShu"></label></td> <td><a href="javascript:;" class="_NextPage" title="下一页" onclick="XiaYiYe()"></a></td> <td><a href="javascript:;" class="_TrailerPage" title="尾页" onclick="WeiYe()"></a></td> <td>|</td> <td> 总记录数:<label class = "_Totals" id="lblZongJiLuShu"></label>条 </td> </tr> </table> </center> </div> </center> <a class="close-reveal-modal">×</a><!--关闭按钮--> </div> </body>
当我们点击选择产品会弹出产品的弹窗:
2.2.7(图5)
//确定选择产品 function QueDingXuanZheChanPin(){ var varPeiJianShu = $("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows.length; var varChanPinZiLiao=$("#dgvChanPinZiLiao").datagrid("getData"); for(var varRows = 0 ; varRows < varChanPinZiLiao.rows.length ; varRows++){ var Bol = true; if ($(‘#ChanPinZiLiao‘ + varRows + "").prop("checked")){//判断是否踢勾 if(varPeiJianShu==0){ $(‘#dgvWeiXiuJiLuMingXi‘).datagrid(‘appendRow‘,{ status: ‘P‘ });//新增一行 var ChanPinZiLiaoRow1 = varChanPinZiLiao.rows[varRows]; var PeiJian=$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows[$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows.length - 1]; PeiJian.ChanPinID = ChanPinZiLiaoRow1.ChanPinID; PeiJian.ChanPinCangWeiID=ChanPinZiLiaoRow1.CangWeiID; PeiJian.ChanPinBianHao=ChanPinZiLiaoRow1.ChanPinBianHao; PeiJian.ChanPinMingCheng=ChanPinZiLiaoRow1.ChanPinMingCheng; PeiJian.ShuLiang=1; PeiJian.KuCunShuLiang = ChanPinZiLiaoRow1.KuCunShuLiang; PeiJian.DanJia=ChanPinZiLiaoRow1.YiJiXiaoShouJia; $(‘#dgvWeiXiuJiLuMingXi‘).datagrid(‘refreshRow‘, $("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows.length - 1);//刷新行 } else{ for(var varR=0;varR<varPeiJianShu;varR++){ if (varChanPinZiLiao.rows[varRows].ChanPinID==$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows[varR].ChanPinID && varChanPinZiLiao.rows[varRows].CangWeiID==$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows[varR].ChanPinCangWeiID){ Bol=false;//判断是否存在 } else{ } }//for结尾 if(Bol==true){ $(‘#dgvWeiXiuJiLuMingXi‘).datagrid(‘appendRow‘,{ status: ‘P‘ }); var ChanPinZiLiaoRow = varChanPinZiLiao.rows[varRows]; var PeiJian1=$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows[$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows.length - 1]; PeiJian1.ChanPinID = ChanPinZiLiaoRow.ChanPinID; PeiJian1.ChanPinCangWeiID=ChanPinZiLiaoRow.CangWeiID; PeiJian1.ChanPinBianHao=ChanPinZiLiaoRow.ChanPinBianHao; PeiJian1.ChanPinMingCheng=ChanPinZiLiaoRow.ChanPinMingCheng; PeiJian1.ShuLiang=1; PeiJian1.KuCunShuLiang = ChanPinZiLiaoRow.KuCunShuLiang; PeiJian1.DanJia=ChanPinZiLiaoRow.YiJiXiaoShouJia; $(‘#dgvWeiXiuJiLuMingXi‘).datagrid(‘refreshRow‘, $("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows.length - 1);//刷新行 } } } else{ for(var varRS=0;varRS<varPeiJianShu;varRS++){ if (varChanPinZiLiao.rows[varRows].ChanPinID==$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows[varRS].ChanPinID && varChanPinZiLiao.rows[varRows].CangWeiID==$("#dgvWeiXiuJiLuMingXi").datagrid("getData").rows[varRS].ChanPinCangWeiID){ $("#dgvWeiXiuJiLuMingXi").datagrid("deleteRow",varRS); varPeiJianShu--; } } } } $(‘#frmXuanZheChanPin‘).css(‘visibility‘,‘hidden‘); $(‘.reveal-modal-bg‘).css(‘display‘,‘none‘); }
接下来我们可以按保存按钮提交我们所要保存的维修记录
JQuery代码:
//保存 function BaoCunWeiXiuJiLu(){ var bol=false; $(‘#dgvWeiXiuJiLuMingXi‘).datagrid(‘endEdit‘, endInsex); //停止编辑状态 endInsex=undefined; for(var varRow=0;varRow<$(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows.length;varRow++){ if($(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows[varRow].ShuLiang=="" || $(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows[varRow].ShuLiang <= 0 || $(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows[varRow].DanJia==null || $(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows[varRow].DanJia <0 || $(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows[varRow].BaoXiuQiID==null || $(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows[varRow].BaoXiuQiID==""){ bol=true; } else{} } if(bol){ alert("配件列表里面填写有错误或填写不完整");return; } else{ $.ajax({ type:‘post‘, url:‘../WeiXiuGuanLi/TiJiaoWeiXiuJiLu?intGongDanID=‘+@Session["GongDanID"], data: $(‘#formTiJiaoWeiXiuJiLu‘).serialize(), success:function(intGongDanWeiXiuID){ if(intGongDanWeiXiuID>0){ if($(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData").rows.length > 0){ $.getJSON("/WeiXiuGuanLi/ChuKu?strDanJuBianHao="+$.trim($(‘#lblGongDanBianHao‘).text()) +"&"+"intLuRuYuanID="+$(‘#LuRuYuan‘).val()+"&", function(intChuKuID){ if(intChuKuID>0){ var PeiJian=$(‘#dgvWeiXiuJiLuMingXi‘).datagrid("getData"); var _ChengGongShu=0; for(var varR=0;varR<=PeiJian.rows.length;varR++){//循环表格里面的数据 var strPeiJian=""; strPeiJian = "GongDanWeiXiuID="+intGongDanWeiXiuID+"&"+"ChanPinID="+PeiJian.rows[varR].ChanPinID+"&"+"ShuLiang="+PeiJian.rows[varR].ShuLiang +"&"+"DanJia="+PeiJian.rows[varR].DanJia+"&"+"ChanPinCangWeiID="+PeiJian.rows[varR].ChanPinCangWeiID+"&"+"BaoXiuQiID="+PeiJian.rows[varR].BaoXiuQiID +"&"+"BaoXiuBeiZhu="+PeiJian.rows[varR].BaoXiuBeiZhu + "&";//拼接表单 $.ajax({ type:‘post‘, url:‘../WeiXiuGuanLi/PeiJianOnChuKu?intChuKuID=‘+intChuKuID +"&"+"intWeiXiuID=" + intGongDanWeiXiuID, data:strPeiJian, success:function(_true){ if(_true){ _ChengGongShu++; if(_ChengGongShu==PeiJian.rows.length){ alert("保存成功"); ZhongBiaoWeiXiu(); }else{} } else{} } }); } } else{ alert("新增出库记录单失败"); } }); } else{ alert("保存成功"); ZhongBiaoWeiXiu(); } } else{ alert("提交维修工单失败"); } } }); } }
以上内容仅供学习,禁止用于商业用途
标签:
原文地址:http://www.cnblogs.com/GX-LongQin/p/4542600.html