开端:接外包遇到个纸业公司的甲方,主要经营业务是生产客户diy的纸类产品。
愉快的开局
第一次找我是需要做一个报价web,由于他的计算公式比较复杂,并且单价不同且繁杂,所以需要一个程序替客服将算价格的事情做完。
学到的小技巧:
因为甲方有个报价单,类似于这样(只截取了很小一部分)
初始想法
看上去就是一个眼花缭乱,突出的就是一个烦,并且甲方需要可以更改这些其中的一个单价。如果我单纯的一个个录入数据库,他后续修改单价还得我帮他做个后台,这不得麻烦死。
于是我想到了
是不是可以读取EXCL表格,只需要记录下每个价格位于表格几行几列,用到的时候去读取就好了。如果需要修改,直接修改表格。这样就省去了很多事情。
其中用到了xlsx工具库,直接import然后解析报价文件
readExcel(e) {
//表格导入
// 引入工具库 import 也可以,前提是已经npm 下来了
// axios读取表格文件
this.axios.get('/pr.xlsx', {
responseType: 'arraybuffer',
}).then((res) => {
//解析表格
var XLSX = require("xlsx");
var vali = /\.(xls|xlsx)$/;
const Workbook = XLSX.read(res.data, {type: 'binary'}); // 通过XLSX读取出来得 到了一个 workdata 对象
//将解析出的表格数据存入data
this.test = Workbook.Sheets.Sheet1
})
}
然后直接通过test[行列]读取价格
挺简单一件事的,三下五除二就做完了,虽然使用中时不时会有些计算bug,但基本很快就改完了。 第一次合作就这么结束了。
第二次合作
因为第一次沟通很愉快,并且甲方认为我效率很高,所以他直接找到我做下一个需求:
一个图片编辑上传拼版小程序
大概流程为:选择产品属性->选择单双面->选择模板->上传图片->后台将一张张小图片拼接到一张空白大图上以供直接打印裁剪
最后处理后的文件是这样的
一开始开发不能说简单吧,倒也在能力范围内进行着。中途因为一开始沟通没明确,还改了好几次逻辑,但无论如何还是20天做完了,然后噩梦开始了(我的问题)。
问题
程序处理后的文件频繁出现这种问题(粉色的是定位块可以忽略)。按道理这张图片应该是拼满了图片的,但是莫名其妙的会有空白的。
这个问题折磨了我快一个月,尝试了各种办法,各种日志,关键日志也不报错!
找了很久没有发现是什么问题,一开始怀疑是后端的问题,改了成了如下逻辑:
简述一下我后端的逻辑,因为图片较多。前端发送图片时告诉后端这一个订单有多少张图片,后端拿到请求会先将图片文件存下来,等到数量足够了之后,才会开始处理拼版任务。
空白的情况消失了,但是新的问题又来了:直接一张图片都不生成了。
记录了日志之后,发现请求会莫名其妙丢失,因为是一张图一张图发请求传过来的,莫名其妙就会丢失一个请求少一张图,后端没有收到足够数量的图片当然不会工作了。
搞了很久也不知道怎么解决请求丢失问题,最后用上了网络错误大法。 之前是前端发送完请求就不管了,现在改成了前端发完请求必须在那等着,在那loading,直到最后一张图片处理完返回成功响应报文才可以退出,如果一直收不到就告诉你:网络错误,请重试。
您猜怎么着,这之后再也没有问题了。