钟表维修管理系统技术解析 工单报价(二)
2015-05-27 08:16
465 查看
工单报价模块
功能描述:
工单报价这个模块是从新给客户报价,当维修过程中发现需要更多的维修费用,就可以从新给客户报价,报价后客户可以继续维修,也可以取消维修。当报价完成,维修费就会修改为最新报价时的价钱。
实现思路:
点击需要报价的单据,然后按报价按钮,弹出报价窗口,填写报价金额和说明等信息,点击确认报价按钮,点击按钮后会生成报价记录并且修改工单的费用金额。
界面效果图:
2.2.3(图1)
从界面上看我们这里用到新的控件有:
第一步:数据库
表与关系:
2.2.3(图2)
表1:工单报价(pw_GongDanBaoJia)
用于存放报价的数据
表2:工单录入表(pw_GongDianLuRu)
用于存放钟表录入的信息
表3:员工表(sys_YuanGong)
表4:属性明细表(sys_PinPai)
控件使用:
1、 数字文本框(easyui-numberbox)
控件截图:
创建控件html代码:
特别说明:precision是设置能有多少位小数
获取界面控件值代码:
注意:当numberbox控件处于焦点状态是无法获取它的值的
给界面控件赋值代码:
第二步:打开控制器
2.2.3(图3)
报价功能控制器代码:
报价功能界面html代码:
报价功能jQuery代码:
仅供学习,禁止用于商业用途
功能描述:
工单报价这个模块是从新给客户报价,当维修过程中发现需要更多的维修费用,就可以从新给客户报价,报价后客户可以继续维修,也可以取消维修。当报价完成,维修费就会修改为最新报价时的价钱。
实现思路:
点击需要报价的单据,然后按报价按钮,弹出报价窗口,填写报价金额和说明等信息,点击确认报价按钮,点击按钮后会生成报价记录并且修改工单的费用金额。
界面效果图:
2.2.3(图1)
从界面上看我们这里用到新的控件有:
数字文本框(easyui-numberbox) |
标签(label) |
表与关系:
2.2.3(图2)
表1:工单报价(pw_GongDanBaoJia)
用于存放报价的数据
列名 | 类型 | 主外键 | 说明 |
GongDanBaoJiaID | int | 主键 | 工单报价ID |
GongDanLuRuID | int | 外键 | 工单录入ID |
CaoZuoYuanID | int | 外键 | 录入员ID |
BaoJiaQianGongDanZhuangTaiID | int | 外键 | 报价时工单状态ID |
BaoJiaJinE | decimal(18, 4) | 报价金额 | |
WeiXiuNeiRong | nchar(400) | 维修内容 | |
BaoJiaShuoMing | nchar(400) | 报价说明 | |
KeHuYiXiang | nchar(10) | 客户意向 | |
YouXiaoFou | Bit | 有效否 | |
GengXinShiJian | datetime | 更新时间 |
用于存放钟表录入的信息
列名 | 数据类型 | 主键/外键 | 说明 |
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, 2) | 费用金额 | |
ZhongBiaoLeiXing | nchar(10) | 钟表类型 | |
BiaoKuan | nchar(10) | 表款 | |
GuiGe | text | 规格/名称 | |
XiuPeiJiLu | text | 修配记录 | |
JiXinXingHao | nchar(50) | 机芯号 | |
BiaoXingHao | nchar(50) | 表型号 | |
BiaoShenHao | nchar(50) | 表身号 | |
BiaoDaiJieShu | nchar(50) | 表带节数 | |
ZhongBiaoQiTaoMiaoShu | varchar(200) | 钟表其他描述 | |
WaiGuan | text | 外观 | |
KeHuZhiShu | varchar(200) | 客户自述 | |
YouXiaoFou | Bit | 有效否 |
列名 | 数据类型 | 主外键 | 说明 |
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 | 密码 |
列名 | 数据类型 | 主外键 | 说明 |
ShuXingMingXiID | int | 主键 | 属性明细ID |
LuRuYuanID | int | 外键 | 录入员ID |
ShuXingJiHeID | int | 外键 | |
ShuXingMingXiMingCheng | nchar(50) | ||
GengXinShiJian | datetime | ||
YouXiaoFou | bit | ||
BeiZhu | nchar(50) |
1、 数字文本框(easyui-numberbox)
控件截图:
创建控件html代码:
特别说明:precision是设置能有多少位小数
<input id="txtBaoJiaJinE" name="BaoJiaJinE" class="easyui-numberbox" precision="2" style="width: 440px; height: 28px" />
获取界面控件值代码:
$("#txtBaoJiaJinE").numberbox("getValue");
注意:当numberbox控件处于焦点状态是无法获取它的值的
给界面控件赋值代码:
$("#txtBaoJiaJinE").numberbox("setValue",22.23);
第二步:打开控制器
2.2.3(图3)
报价功能控制器代码:
#region 新增报价 /// <summary> /// 插入报价单 /// </summary> /// <param name="DtBaoJiaDan">报价表单</param> /// <param name="intGongDanID">工单录入ID</param> /// <param name="decBaoJiaJinE">报价金额</param> /// <param name="intJinEZhaungTaiID">金额状态ID</param> /// <param name="intGonDanZhuangTai">工单状态ID</param> /// <returns></returns> public ActionResult InsertBaoJiaDan(Models.pw_GongDanBaoJia DtBaoJiaDan, int intGongDanID, decimal decBaoJiaJinE, int intJinEZhaungTaiID, int intGonDanZhuangTai) { DtBaoJiaDan.YouXiaoFou = true; DtBaoJiaDan.GengXinShiJian = DateTime.Now; myMdl.pw_GongDanBaoJia.AddObject(DtBaoJiaDan); if (myMdl.SaveChanges() > 0)//保存成功 { UpdateBaiJia(intGongDanID, decBaoJiaJinE, intJinEZhaungTaiID, intGonDanZhuangTai);//调用最新报价 return Json(true, JsonRequestBehavior.AllowGet); } else { return Json(false, JsonRequestBehavior.AllowGet); } } #endregion #region 最新报价 /// <summary> /// /// </summary> /// <param name="intGongDanID"></param> /// <param name="decBaoJiaJinE"></param> /// <param name="intJinEZhaungTaiID"></param> /// <param name="intGonDanZhuangTai"></param> /// <returns></returns> public ActionResult UpdateBaiJia(int intGongDanID, decimal decBaoJiaJinE, int intJinEZhaungTaiID, int intGonDanZhuangTai) { var varGongDan = (from dtGongDan in myMdl.pw_GongDianLuRu where dtGongDan.GongDanLuRuID == intGongDanID select dtGongDan).Single<Models.pw_GongDianLuRu>(); varGongDan.FenYongJinE = decBaoJiaJinE; #region -----回滚工单状态------- if (intJinEZhaungTaiID == 84 && intGonDanZhuangTai == 83) { //查询历史报价单 var varBaoJiaJiLu = (from dtBaoJiaJiLu in myMdl.pw_GongDanBaoJia orderby dtBaoJiaJiLu.GongDanBaoJiaID descending select dtBaoJiaJiLu).ToArray();//转为数组 for (var i = 0; i < varBaoJiaJiLu.Count(); i++) { if (varBaoJiaJiLu[i].BaoJiaQianGongDanZhuangTaiID != 83)//83是工单状态ID,对应的状态是取消维修 { varGongDan.GongDanZhuanTaiID = Convert.ToInt32(varBaoJiaJiLu[i].BaoJiaQianGongDanZhuangTaiID); break; } } } #endregion if (intJinEZhaungTaiID == 1) { intJinEZhaungTaiID = 84; varGongDan.GongDanZhuanTaiID = 83; } varGongDan.JinEZhuangTaiID = intJinEZhaungTaiID; if (myMdl.SaveChanges() > 0) { return Json("报价成功", JsonRequestBehavior.AllowGet); } else { return Json(null, JsonRequestBehavior.AllowGet); } } #endregion<span style="font-size: 24px;"><strong> </strong></span>
报价功能界面html代码:
<div id="frmBaoJia" class="reveal-modal" style="width: 550px; height: 360px; padding: 10px;background-color:White" > <center> <table> <tr> <td style="width:5px;"></td> <td style="width:200px;">工单编号:<label id="lblGongDanBianHao" style="color: #FF0000; border-bottom:1px solid #FF0000;"></label></td> <td align="center" style="width:160px;">客户:<label id="lblKeHuXingMing" style="color: #FF0000;border-bottom:1px solid #FF0000;"></label></td> <td style="width:190px;">电话:<label id="lblLianXiDianHua" style="color: #FF0000;border-bottom:1px solid #FF0000;"></label></td> </tr> </table> <form id="formBaoJia"> <table> <tr> <td style="height: 10px"> </td> </tr> <tr> <td> 报价金额:<input id="txtBaoJiaJinE" name="BaoJiaJinE" class="easyui-numberbox" precision="2" style="width: 440px; height: 28px" /> <input id="LuRuYuanID" name="CaoZuoYuanID" type="hidden"/> <input id="GongDanID" name="GongDanLuRuID" type="hidden" /> <input id="GongDanZhuangTaiID" name="BaoJiaQianGongDanZhuangTaiID" type="hidden" /> </td> </tr> <tr> <td> 报价说明:<input id="txtBaoJiaShuoMing" name="BaoJiaShuoMing" class="easyui-textbox" style="width: 440px;height: 28px" /> </td> </tr> <tr> <td> 维修内容:<input id="txtWeiXiuNeiRong" name="WeiXiuNeiRong" class="easyui-textbox" style="width: 440px; height: 28px" /> </td> </tr> <tr> <td> <table> <tr> <td align="right" style="width:60px">客户意向:</td> <td><ul class="dowebok" style=" margin:0 0 0 0"> <li><input type="radio" id="TongYi" name="KeHuYiXiang" data-labelauty="同意" checked value="同意" onclick="onclickrdoAgree()"/></li> <li><input type="radio" id="WeiQueDing" name="KeHuYiXiang" data-labelauty="未确定" value="未确定" onclick="onclickrdoAgree()"/></li> <li><input type="radio" id="BuTongYi" name="KeHuYiXiang" data-labelauty="不同意" value="不同意" onclick="onclickDisagree()"/></li> <li><input type="radio" id="WeiJieDianHuo" name="KeHuYiXiang" data-labelauty="未接电话" value="未接电话" onclick="onclickrdoAgree()"/></li> </ul> </td> </tr> </table> </td> </tr> <tr> <td colspan="2" align="center"> <table id="dgvBaoJia" class="easyui-datagrid" style="width: 530px; height: 140px"> <thead> <tr> <th data-options="field:'GongDanBaoJiaID',width:90,align:'center',hidden:true"> 工单报价ID </th> <th data-options="field:'BaoJiaQianGongDanZhuangTaiID',width:90,align:'center',hidden:true"> 工单状态ID </th> <th data-options="field:'BaoJiaJinE',width:60,align:'center'"> 报价金额 </th> <th data-options="field:'WeiXiuNeiRong',width:120,align:'center'"> 维修内容 </th> <th data-options="field:'BaoJiaShuoMing',width:120,align:'center'"> 报价说明 </th> <th data-options="field:'KeHuYiXiang',width:70,align:'center'"> 客户意向 </th> <th data-options="field:'GengXinShiJian',width:150,align:'center'"> 更新时间 </th> </tr> </thead> </table> </td> </tr> <tr style="height:5px;"></tr> <tr> <td colspan="2" align="center"> <table> <tr> <td><a onclick="QueRenBaoJia()" id="btnConfirmOffer" class="goodButton" style="width: 80px; height: 23px">确认报价</a></td> <td><a onclick="" class="goodButton_c1" style="width: 80px; height: 23px"> 取消</a></td> </tr> </table> </td> </tr> </table> </form> </center> <a class="close-reveal-modal">×</a> </div> </div><strong><span style="font-size: 24px;"> </span></strong>
报价功能jQuery代码:
//打开报价窗口 var varGongDanZhuagnTai = 0; function BiaoJia() { var Row = $('#dgvGongDan').datagrid("getSelected");//获取选中的单据 if (Row) { if (Row.GongDanZhuanTaiID == 67) {//判断是否符合报价 alert("当前单据状态不可报价"); return; } $('#frmBaoJia').reveal($(this).data());//打开弹窗 $('#lblGongDanBianHao').html(Row.GongDanBianHao); $('#lblKeHuXingMing').html(Row.KeHuXingMing); $('#lblLianXiDianHua').html(Row.YiDongShouJi); $('#GongDanID').val(Row.GongDanLuRuID); varGongDanZhuagnTai = Row.GongDanZhuanTaiID; $('#GongDanZhuangTaiID').val(Row.GongDanZhuanTaiID); //调用控制器的方法 $.getJSON("/WeiXiuGuanLi/SelectBaiJiaJiLu?intGongDanID=" + Row.GongDanLuRuID, function (data) { $('#dgvBaoJia').datagrid("loadData", data);//给表格绑定数据 }); } else { alert("请选择要报价的单据"); } } //确认报价 function QueRenBaoJia() { var varJinEZhuangTaiID = 0; if ($("#txtBaoJiaJinE").numberbox("getValue") == "") { alert("请填写报价金额"); return; } if ($("#TongYi").prop("checked")) { varJinEZhuangTaiID = 84; } if ($('#BuTongYi').prop("checked")) { varJinEZhuangTaiID = 1; } if ($('#WeiQueDing').prop("checked") || $('#WeiJieDianHuo').prop("checked")) { varJinEZhuangTaiID = 82; } $.ajax({ type: 'post', url: '/WeiXiuGuanLi/InsertBaoJiaDan?intGongDanID=' + $('#GongDanID').val() + "&" + "decBaoJiaJinE=" + $('#txtBaoJiaJinE').val() + "&" + "intJinEZhaungTaiID=" + varJinEZhuangTaiID + "&" + "intGonDanZhuangTai=" + varGongDanZhuagnTai, data: $('#formBaoJia').serialize(),//获取整张表单 success: function (e) { if (e) { alert("报价成功"); $('#dgvBaoJia').datagrid("loadData", { total: 0, rows: {} });//清空表格 $.getJSON("/WeiXiuGuanLi/SelectBaiJiaJiLu?intGongDanID=" + $('#GongDanID').val(), function (ShuJu) { $('#dgvBaoJia').datagrid("loadData", ShuJu); ClearBaoJia();//清空表单 SelectGongDan();//刷新数据 }); } else { alert("报价失败"); } } }); }
仅供学习,禁止用于商业用途
相关文章推荐
- 钟表维修管理系统技术解析(三) 工单录入
- 钟表维修管理系统技术解析 工单派工(三)
- 钟表维修管理系统技术解析 工单外派(四)
- 钟表维修管理系统技术解析 工单查询(一)
- 钟表维修管理系统技术解析 工单查询(五)
- 钟表维修管理系统技术解析(一) MVC架构搭建
- 钟表维修管理系统技术解析(四) 订购配件
- 钟表维修管理系统技术解析(一) MVC架构搭建
- 钟表维修管理系统技术解析(四) 销售单录入中的录入数据
- 钟表维修管理系统技术解析(二) 登陆验证
- 钟表维修管理系统技术解析(六) 录入保修单
- 海马汽车经销商管理系统技术解析(九)预约单转维修工单
- 钟表维修管理系统技术解析(一) 如何搭建三层架构
- 钟表维修管理系统技术解析(二) 登陆验证
- 钟表维修管理系统技术解析(五) 客户取表
- 钟表维修管理系统技术解析(三)销售记录中的导出Excel、付款、修改、报废
- 钟表维修管理系统技术解析(六) 数据统计
- 钟表维修管理系统技术解析 维修记录(五)
- 钟表维修管理系统技术解析(一) MVC架构的搭建
- 钟表维修管理系统技术解析(二) 销售记录的查询功能