一、大摆庆功宴
上一篇博文《大湿教我写程序(1)之菜单导航篇》中讲到了我撸码到晚上两点多,整出了一个还算是高端大气上档次的demo。半夜回到家里打算着可以好好睡上一个懒觉,到时候直接到客户那边跟老板汇合一起去演示。
早上7点
“谁呀,大晚上的搞什么灰鸡,还让不让人睡了”刚在梦中与女神相会,关键时刻hello motor!的声音不停的响,我拿起电话回了句。
“雷工,今天没办法呀,客户那边单子不小,这单做好了,以后我们有的是合作机会,公司的未来就托付在你身上了。demo要好好做,我在你楼接你,牙也别刷了穿上衣服赶紧下来,咱去公司好好过一遍demo,等项目拿下来了,我们一起去酒店摆庆功宴,好好庆祝一下。快点哈别磨蹭了,给你一分钟。我挂了。”
嘟嘟嘟。。。。
“XX,什么人!别的程序员说自己是IT民工,我TM是IT奴隶!!!”
到了公司看了下demo基本没什么问题,其余无非就是教我些坑人的话,教我怎么忽悠客户。
上午10点
到了客户那边,经过我跟老黄的双簧表演demo竟然顺利通过了。客户那边比较急着上项目,于是让我现场估算一下工时。
“需求分析7天、需求确认3天.....这样一七得七、三七二十一、四七二十八、五一劳动节、六一我过节。。。。我初步估算一下一共需要180个人天数”我说道。
“是的,您这个项目比较复杂,我们要保证质量所以需要这么多人天数也是没办法的,没质量的软件我们宁可不做。”老黄一脸艰难的说。这时候我感觉老黄在我心里的形象非常高大有这样的觉悟,以他的那颗黑得发紫的心和比城墙还厚的脸皮,他绝对可以成为下一个马化腾。
“人天数你们放心,我不会扣你们的,公司这么大不差你们这点钱,工期还是有点长,这个我们要再考虑一下。”对方项目经理。
“原来您担心这点,那我现在就可以告诉您,以我们公司的实力,1个月后交付项目,我从开发部中抽6名骨干来做。保质保量完成任务。”虽然我狠狠地在会议桌下面踩了老黄一脚,可他还是在客户面前表了这样的态。
我们毫无悬念地拿下了这个单子,回家的路上我问老黄:“黄总,我们一共才两个开发的,我算了下跟大雄一起开发都得3个月,你打算要外包么?”
“外包个毛啊,自己会有开发的干嘛把钱给别人赚。大雄那边的项目还没完,这个项目主要还是得你顶着。你千万别跟我说要招人,公司要控制成本,这是我的方针”老黄道。
“这样的话我没法做了,明天我不想上班了”
“年轻人怎么能这样,这点困难就怕了,以后怎么成大事,下月给你加500块工资”
“这不是钱的问题,您每次都这样,我们累的要死,项目无法按时交付客户没命的催,我受够了”
“下月给你加一千五,另外先把报表类的东西做出来,其它功能没出来可以从他们旧系统里拉数据,老板只看报表的,先稳住老板就行”老黄又一脸艰难的说。
“那我尽力吧,黄总,我真心不是因为钱的事跟您闹离职”
“好了,接下来我们要争分夺秒了,你先下到沙县小吃那里给我带份炒面,你也打包回来吃”老黄说完丢下我就先走了
我擦,这TM就是庆功宴,去的原来是沙县大酒店呀!一份炒面也7块钱,钱还没给我呢。。。。
二、走向AV大道
吃完饭我就开工了,报表要先弄,看了下客户那边的需求,然后连到他们的服务器上看了一下,感觉问题不是很大,因为SQL我还是比较熟的,一般变态点的语句也都能写得出来。
经过一下午的整理SQL语句全弄好了,抓取出来的数据也没问题,接下来又要做前台页面了。像什么水晶报表之类的我肯定是想都不想了,要付费的东西用上去了,被那个半桶子水的家伙看到后不但要臭骂一通还得重新来过。
当时demo的界面是这样的:
<script src="/Themes/Scripts/jquery-1.8.2.min.js"></script>
3、声明对图表插件的引用
<script src="../Themes/Scripts/Highcharts/highcharts.js"></script> <script src="../Themes/Scripts/Highcharts/theme/grid.js"></script>
4 、函数封装一下jquery调用Ajax调用后台处理程序方法。
/* 请求Ajax 带返回值 --------------------------------------------------*/ function getAjax(url, parm, callBack) { $.ajax({ type: 'post', dataType: "text", url: url, data: parm, cache: false, async: false, success: function (msg) { callBack(msg); } });
5、正式开始AV调用,指定后台处理程序地址,传入参数,将返回值绑定到报表即可,代码比较长这里就不贴出来。
6、在数据没有加载完成时加一个正加加载的小特效,加载完了再隐藏掉。别让用户感觉界面假死
<div id="loading" onclick="Loading(false);"> <img src="../Themes/Images/loading.gif" style="padding-bottom: 4px; vertical-align: middle;" /> 正在处理,请稍待 </div>
运行一下试试,哦耶!没一点问题。
三、将AV事业发扬光大
OK,报表那块的东西基本处理得差不多,客户那边有不少资料是要用Excel导入进去的,经常会一次性导入很多个文件,如果用服务端控件肯定用户体验不好。看来还是得采用AV技术来上传比较好。
“大雄。。。”算了,大湿双眼紧盯屏幕,看来又在研习这门技术更深层次的内功心法了,算了不打扰他了,自己动手吧。
首先我要感谢的是谷沟,google一下发现.net的ashx可以上传文件,这个东西上传文件很方便,单个的文件可以上传,也可以指定一个文件夹上传所有文件。太好了,感谢asmx的妹妹ashx,那么我就依葫芦画瓢按照上一节中的方法来处理上传,只有以下两点不同:
1、Ajax提交
<script type="text/javascript"> function upload(){ var path = document.getElementById("File1").value; var img = document.getElementById("img1"); if($.trim(path)==""){ alert("请选择要上传的文件或文件夹"); return; } $("#form1").ajaxSubmit({ success: function (str) { if(str!=null && str!="undefined"){ if (str == "1") {alert("上传成功");document.getElementById("img1").src="images/logo.jpg?"+new Date();/*上传后刷新图片*/} else if(str=="2"){alert("只能上传Excel格式的文件");} else if(str=="3"){alert("文件不能大于10M");} else if(str=="4"){alert("请选择要上传的文件");} else {alert('操作失败!');} } else alert('操作失败!'); }, error: function (error) {alert(error);}, url:'Handler.ashx', /*设置post提交到的页面*/ type: "post", /*设置表单以post方法提交*/ dataType: "text" /*设置返回值类型为文本*/ }); } </script>
2、服务器端接收到文件以后要进行后续处理。
F5之后,OK,完全没问题,正常接收
“大雄,快来看,快来看,这个导入文件我也是用AV技术解决的,怎么样,还可以吧。”
“不错呀,你这个真的还不错,挺会举一反三的,平时教学视频没白看呀”
“怎么样,离你的技术还差多远,大湿。”
“我哪能跟您比呀,您才是大湿,动手能力这么强,马上要赶上神之手加滕老师了。”
“好了,昨晚上没睡好,今天折腾了一天不跟你瞎扯了,我先回家睡觉。”
“你先滚吧,明天双11,0点的时候我先买买东西。”
不是吧难道又要加班了?这时候老黄又打电话过来了。
“黄总,又加班呀!!你还想不想让我活了!”
“没,你今天好好休息下,我有有个事情交待下。。。”
“啥事您这么急?话都说不圆了,别急,有事您慢慢讲。”
“今天客户给我打了15万首付款,那张卡我开通了网银的,明天双11了,我现在在陪客户吃饭,你赶点紧,现在晚上9点了,我已经把支付宝、网银账号发你QQ上了,你马上乱输几次密码,都给锁上。别让那败家老娘们儿给我花了”
。。。
谨以此文献给像我一样的菜鸟,希望大家能有所启发,大牛勿喷。
http://www.learun.cn 力软官网
http://www.learun.cn:8080 在线demo
如果你觉得喜欢就帮我【推荐】一下吧,你的支持才是我能坚持写完这个系列文章的动力。