如何在OA系统上搭建一个报价系统

如何在OA系统上搭建一个报价系统

分类:php

最后在做一个五金厂的报价系统,开始准备自已做,做着做着发现真的不是那么简单,报价界面有100多个栏位,有N多个公式,12个工序动态指定,然后带出对应的设备,表单还要经过五个部门协同操作,每一步骤操作的栏位不同,如果自已开发,得要有一个完整的权限控制、工作流表单设计、工作流程设计,而且还要很灵活,用户在系统使用初期可能会有很多调整,想想都头大了,于是想到了OA2015,说干就干,搭建环境后,开工。

一、设计表单

用了整整一天的时间,那栏位多得你都想吐血,你看图就知道了!

二、开始一个一个公式设置

比如MAX,MIN,+-*/这些都可以直接用表单设计器的控件来实现了,但不支持IF呀,但自已用JS的三元表达式实现,不过要注意>符右边必须有一个空格,不然字符会被截断;

JS中用到了大量的jQuery的事件绑定,还好有这个东东,不然JS代码都会写死人的,以下是一段选择工序后,自动加载工序设备的代码:

//计算工艺 自动加载设备jQuery("input[id^='mgxcb_']").attr('readonly',true);jQuery("input[id^='mgxshcb_']").attr('readonly',true);jQuery("input[id^='gycbother_']").attr('readonly',true);jQuery("select[id^='gygx_']").bind('change propertychange',function(){var gygx=jQuery(this).children('option:selected').val();var idx=(jQuery(this).attr('id')).substr(-2);jQuery('#gygxsb_'+idx+' option').remove();var sid = document.getElementById('gygxsb_'+idx);var DATA_41=YJB_Str2Num(jQuery("input[name='DATA_41']:eq(0)").val());var shebeitype='';switch (gygx){case '卷制':shebeitype='juanzhishebei';jQuery("#gxsudu_"+idx).attr('readonly',false);break;case '热处理':shebeitype='rechulishebei';jQuery("#gxsudu_"+idx).attr('readonly',true);speedfromweight(DATA_41,'0',"gxsudu_"+idx);break;case '喷丸':shebeitype='penwanshebei';jQuery("#gxsudu_"+idx).attr('readonly',true);speedfromweight(DATA_41,'0',"gxsudu_"+idx);break;case '磨端面':jQuery("#gxsudu_"+idx).attr('readonly',false);jQuery("#gxsudu_"+idx).val(0);shebeitype='moduanmianshebei';break;case '倒角':jQuery("#gxsudu_"+idx).attr('readonly',false);jQuery("#gxsudu_"+idx).val(0);shebeitype='daojiaoshebei';break;case '立定':jQuery("#gxsudu_"+idx).attr('readonly',false);jQuery("#gxsudu_"+idx).val(0);shebeitype='lidingshebei';break;case '清洗':jQuery("#gxsudu_"+idx).attr('readonly',true);speedfromweight(DATA_41,'qx',"gxsudu_"+idx);shebeitype='qingxishebei';break;case '手工':jQuery("#gxsudu_"+idx).attr('readonly',false);jQuery("#gxsudu_"+idx).val(0);shebeitype='shougongshebei';break;default:jQuery("#gxsudu_"+idx).attr('readonly',false);jQuery("#gxsudu_"+idx).val(0);break;}jQuery.post('/userext/index.php?c=workflow&m=getgxsb',{tbname:shebeitype},function(res){jQuery.each(res.resmsg,function(idx,val){sid.options[sid.options.length]=new Option(val,val);});},'json');});//工序设备变化更新速度、工序成本、工序损耗成本,折旧成本jQuery("input[name='DATA_41']").bind('input change',function(){var gygxlist=jQuery("select[id^='gygx_']");var DATA_41=YJB_Str2Num(jQuery("input[name='DATA_41']:eq(0)").val());jQuery.each(gygxlist,function(idx,obj){gygx=jQuery(obj).children('option:selected').val();id=(jQuery(obj).attr('id')).substr(-2);switch (gygx){case '热处理':case '喷丸':speedfromweight(DATA_41,'0',"gxsudu_"+id);break;case '清洗':speedfromweight(DATA_41,'qx',"gxsudu_"+id);break;default :jQuery("#gxsudu_"+id).val(0);break;}});});以上代码调用到了一个函数,函数的是用来从后台取要加载的数据:

/*通过重量获取速度*/function speedfromweight(weight,gxtype,id){jQuery.ajax({type:'POST',url:'/userext/index.php?c=workflow&m=speedfromweight',data:{weight:weight,gxtype:gxtype},success:function(res){if (res.rescode!=0){alert(res.resmsg);return false;}jQuery("#"+id).val(res.resmsg);},dataType:'json',async:false,cache:false});}加载数据后台代码是php实现的,写了一个最简易的MVC模式的入口文件,所有的方法都从这个文件入口调用:

比谁都感激这份“不能说出的爱”。

如何在OA系统上搭建一个报价系统

相关文章:

你感兴趣的文章:

标签云: