您的位置:首页 > 其它

钟表维修管理系统技术解析 工单报价(二)

2015-05-27 08:16 465 查看
工单报价模块

功能描述:
工单报价这个模块是从新给客户报价,当维修过程中发现需要更多的维修费用,就可以从新给客户报价,报价后客户可以继续维修,也可以取消维修。当报价完成,维修费就会修改为最新报价时的价钱。

实现思路:
点击需要报价的单据,然后按报价按钮,弹出报价窗口,填写报价金额和说明等信息,点击确认报价按钮,点击按钮后会生成报价记录并且修改工单的费用金额。

界面效果图:



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
更新时间
表2:工单录入表(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, 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
有效否
表3:员工表(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

密码

表4:属性明细表(sys_PinPai)
列名

数据类型

主外键

说明

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("报价失败");
}
}
});
}


仅供学习,禁止用于商业用途
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: