这是一次失败的、苦恼的编程经历。
去年用户找到我,说开发一个简单的程序,基本上一两个星期就可以搞定,用于生成Word形式的招标文件。
听说这个需求,只是用一两个星期,我很惊讶,这个程序说简单也的确不难,掌握一些操作Word的API即可,说复杂也挺复杂的,我开发过试题库系统,对这些还是比较熟悉。
最终的需求没有定下来,用户说了开发时间,一两个星期就可以完工,为了不服输,一个星期写好了,程序可以正常使用。
可惜用户没有使用,可能也是因为时间的缘故。
用户说现在都是网页形式,Windows窗口程序使用不方便。
刚好我也在学Web开发,就答应下来,尽快完成。我也想快速掌握这方面的开发技能。
使用的是LayUI+PHP+AXAJ+JSON,数据库开始使用MySQL8,后面换成了MS SQL
Server2014。
这个程序花了整整一个月,都是晚上写,可能是我把需求复杂化了。
现在实在写不下去了,用户的需求也变了,原先是招标文件很长,一般60多页,只是替换里面的一些内容,有列表、单选、多选、手工输入、插入图片、插入Word文件、二选一(选择一个就有内容需要完善)等,刚好Powerbuilder的数据窗口可以有丰富的显示样式,对于内容替换,则是使用书签的方式进行,即书签名称+00XX,这就可以完成多次的替换(XX表示次数)。
现在用户需求变成招标文件只有7页纸,主要是多种样式的文字,还有表格。为了满足这些样式,我设定了多种输入对应:
1、系统函数:自动执行,输出结果;
2、单词:预定义好的词汇;
3、单选列表:选择了输出一个结果;
4、多选列表:选择了输出多种结果,可以分行和不分行输出;
5、二选一:有两种方式,一种是输出单选结果,另外一种是输出方框,前面打不√;
6、手工输入:有简单文字(一行,不弹出输入窗口),有数字、日期、文字(对于数字和日期需要验证,可以限定范围比如最大值和最小值等),多行文字(弹出输入窗口),有长度限制。
写着写着就有了鸡肋的感觉,食之无味,弃之可惜,被这个程序拖住了。
将有用的代码记录下来:
1、在表格的一行里应用radio
主要是使用name和id来区分,name一样,id不一样,这样每行的radio单独起作用。
使用模板语法生成radio
case '二选一':
optionList=d.c18.split('|');
if(d.c19==optionList[0]){
strPSP = " ";
}else{
strPSP = " ";
}
return strPSP;
break;
监听操作:
form.on('radio', function(obj){
setTimeout(function(){
if(selectRowNum>=0){
let selectInfo;
let srcSelect=table.cache.projectEditInfo[selectRowNum].c18.split('|');
if(srcSelect[1]==obj.value){
selectInfo=$("#projectEditInfo").next().find("tbody tr[data-index='" +selectRowNum +"'] td[data-field='c19'] div").html();
if(selectInfo=='' || selectInfo==srcSelect[0]){
selectInfo=table.cache.projectEditInfo[selectRowNum].c17;
}
layer.prompt({
formType: 2,
title: '请填写〖'+obj.value+'〗的相关信息',
value: selectInfo,
area: ['500px', '300px']
}, function(value, index){
layer.close(index);
$("#projectEditInfo").next().find("tbody tr[data-index='" +selectRowNum +"'] td[data-field='c19'] div").html(value);
});
}else{
$("#projectEditInfo").next().find("tbody tr[data-index='" +selectRowNum +"'] td[data-field='c19'] div").html(srcSelect[0]);
}
}
},500);
return false;
});
2、在表格中使用下拉列表
使用模板语法生成下拉列表:
case '列表':
selectList=d.c17.split('|');
strPSP="";
for (var i=0 ; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?


微信扫码登录