formatDate() { //获取当前时间并打印 let myDate = new Date() let wk = myDate.getDay() // let yy = String(myDate.getFullYear()) // let y = myDate.getFullYear() let mou= myDate.getMonth() + 1 let mm = String(mou ? '0' + mou : mou) let dd = String(myDate.getDate() < 10 ? '0' + myDate.getDate() : myDate.getDate()) let hou = String(myDate.getHours() < 10 ? '0' + myDate.getHours() : myDate.getHours()) let min = String(myDate.getMinutes() < 10 ? '0' + myDate.getMinutes() : myDate.getMinutes()) let sec = String(myDate.getSeconds() < 10 ? '0' + myDate.getSeconds() : myDate.getSeconds()) let weeks = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'] let week = weeks[wk] // this.nowDate = yy + ' 年 ' + mm + ' 月 ' + dd + ' 日' this.nowDate = mm + '月' + dd + '日' console.log(hou + ':' + min + ':' + sec); // this.nowTime = String(hou + ':' + min + ':' + sec) // console.log(typeof this.nowTime); this.nowWeek = week },报错 [Vue warn]: Invalid prop: type check failed for prop "value". Expected String, Number, got Array found in ---> <ElInput> at packages/inp
时间: 2023-12-18 19:02:51 浏览: 121
这个报错是因为你传递给ElInput组件的value属性是一个数组,但是ElInput组件只接受字符串或数字类型的值。你需要检查一下代码中哪里使用了这个组件,并且将传递给它的value属性改为一个字符串或数字类型的值。如果你需要在ElInput组件中显示一个数组,可以使用数组的join()方法将数组转换为一个字符串。例如,将数组['a', 'b', 'c']转换为字符串'a,b,c'可以使用以下代码:
```
let arr = ['a', 'b', 'c'];
let str = arr.join(',');
```
然后你就可以将这个字符串传递给ElInput组件的value属性了。
相关问题
def resultRql = ude.execQuery(rql, [: ], true); resultRql.each { def li = it; //根据成品物料查询BOM明细该物料的下级物料 def bomdlist = BOMDetails.findAll(["material": li.material]); bomdlist.each { def td = it; //跟据流程卡,物料号查询流程卡工序流程 def pcfList = ProcessCardFlow.findAll(['processCard': li.processCard, "material": td.components]); pcfList.each { //根据物料查询流程卡报工记录 //def prd = ProcessReportDetail.findAll(["material":it.material]); emp = [: ]; emp.remark = li.remark; //包装标签 emp.epmaterial = li.material; //成品物料 emp.epmaterialdesc = li.materialDesc; //成品物料描述 emp.xh = li.xh; //箱号 emp.qty = li.qty; //装箱数量 emp.salesorder = li.salesOrder == '' ? '无' : li.salesOrder; //销售订单 emp.salesorderSeq = li.salesOrderSeq == '' ? '无' : li.salesOrderSeq; //行项目 emp.productdate = Util.formatDate(li.productDate, 'yyyy-MM-dd'); //成品生产日期 emp.epprocess = li.processDesc + '/' + li.workCenter; //工序 emp.createtime = Util.formatDate(li.createTime, 'yyyy-MM-dd'); //工序完成时间 emp.taskcode = li.taskCode; //工序任务单 emp.material = it.material; //下级物料 emp.process = it.process; //工序 emp.endtime = Util.formatDate(it.endTime, 'yyyy-MM-dd'); //工序完成时间 emp.taskno = it.taskNo; //工序任务单 emp.processcard = it.processCard; //工序流程卡 emp.incominglabel = ''; //来料标签 list.add(emp); } } }这段代码怎么优化
这段代码可以进行以下优化:
1. 使用Groovy的集合操作来代替循环操作,简化代码逻辑。
2. 使用关联查询来代替多次查询数据库,减少数据库查询次数。
重构后的代码如下:
```
def bomdMap = BOMDetails.groupBy('material') // 根据物料号分组
def pcfMap = ProcessCardFlow.groupBy(['processCard', 'material']) // 根据流程卡和物料号分组
def result = ude.execQuery(rql, [:], true).collectMany { li ->
bomdMap[li.material]?.collectMany { td ->
pcfMap[[li.processCard, td.components]]?.collect { pcf ->
[
remark: li.remark,
epmaterial: li.material,
epmaterialdesc: li.materialDesc,
xh: li.xh,
qty: li.qty,
salesorder: li.salesOrder ?: '无',
salesorderSeq: li.salesOrderSeq ?: '无',
productdate: Util.formatDate(li.productDate, 'yyyy-MM-dd'),
epprocess: li.processDesc + '/' + li.workCenter,
createtime: Util.formatDate(li.createTime, 'yyyy-MM-dd'),
taskcode: li.taskCode,
material: td.material,
process: pcf.process,
endtime: Util.formatDate(pcf.endTime, 'yyyy-MM-dd'),
taskno: pcf.taskNo,
processcard: pcf.processCard,
incominglabel: ''
]
}
} ?: []
}
```
这样可以减少数据库查询次数,代码逻辑也更加清晰简洁。
以下代码可以优化吗?如果可以请给出优化代码并注释const app = getApp(); function formatDate(date) { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; } Page({ data: { visits: wx.getStorageSync('visits'), dateString: "", current: 0, laifangzongrenshu: "", filteredDataArray: [], }, you: function () { var that = this; var current = that.data.current; if (current < that.data.visits.length - 1) { that.setData({ current: current + 1, }) } let dateString = that.data.dateString; let date = new Date(dateString); date.setDate(date.getDate() + 1); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); let nextDay = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day); this.setData({ dateString: nextDay, }); }, zuo: function () { var that = this; var current = that.data.current; if (current > 0) { that.setData({ current: current - 1, }) } let dateString = that.data.dateString; let date = new Date(dateString); date.setDate(date.getDate() - 1); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); let prevDay = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day); this.setData({ dateString: prevDay, }); },})
可以对代码进行如下优化:
```js
const app = getApp();
function formatDate(date) {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
}
Page({
data: {
visits: wx.getStorageSync('visits'),
dateString: formatDate(new Date()),
current: 0,
},
you() {
const current = this.data.current;
if (current < this.data.visits.length - 1) {
this.setData({
current: current + 1,
});
}
const dateString = this.data.dateString;
const nextDate = new Date(new Date(dateString).getTime() + 24 * 60 * 60 * 1000);
this.setData({
dateString: formatDate(nextDate),
});
},
zuo() {
const current = this.data.current;
if (current > 0) {
this.setData({
current: current - 1,
});
}
const dateString = this.data.dateString;
const prevDate = new Date(new Date(dateString).getTime() - 24 * 60 * 60 * 1000);
this.setData({
dateString: formatDate(prevDate),
});
},
});
```
优化思路:
1. 将日期格式化代码封装成一个函数`formatDate`,并使用`padStart`函数补全日期格式中的0。
2. 在`data`中的`dateString`字段中,直接存储格式化后的当天日期,而不是默认为空字符串。
3. 在点击左右按钮时,使用`const`代替`var`,并直接在`setData`中更新数据。
4. 在点击左右按钮时,使用`new Date(dateString)`获取日期对象,而不是使用`new Date()`再转换成日期对象。
5. 在点击左右按钮时,使用`getTime()`获取日期的时间戳,再加上或减去24小时的毫秒数,最后使用`new Date()`将时间戳转换成日期对象。
这样做的好处是,代码更加简洁易读,同时也提高了代码的可维护性。
阅读全文