项目用的前端组件库是DevExpress
要求:生产日期改变,过期日期随之改变
用到方法
@option-changed
在这之前用过value-changed方法,没有调用到回调方法,从官方文档中找到了这个方法
在DxDateBox 中用就行
<DxDataGrid
ref="dataGrid"
:remote-operations="false"
:show-row-lines="true"
:columns="productcolumns"
:cache-enabled="false"
:column-auto-width="true"
:data-source="orderItemsDTOs"
:show-borders="true"
:columnMinWidth="100"
:allow-column-resizing="true"
column-resizing-mode="nextColumn"
>
<DxPaging :enabled="false" />
<!-- 可编辑 -->
<DxEditing :allow-updating="true" :allow-adding="false" :allow-deleting="false" mode="cell" />
<template #planstartime="{ data }">
<DxDateBox :value="data.value" @option-changed="planStartTimeChanged($event, data)" />
</template>
</DxDataGrid>
接下来在底下的methods中写方法就行
// 内标签生产日期改变,过期日期改变
planStartTimeChanged(e, data) {
// console.log(data, '&^^^^^^^^^^^^^^^^', e)
const { values } = data
var timeDate = new Date(values[15])
var y = timeDate.getFullYear() + 3
var m = timeDate.getMonth() + 3
// m = m < 10 ? ('0' + m) : m;
var d = timeDate.getDate()
// d = d < 10 ? ('0' + d) : d;
// return y + '-' + m + '-' + d
// console.log(this.orderItemsDTOs, '&^^^^^^^^^^^')
const orderItemsDTOs = this.orderItemsDTOs
// 获取当前行序号
const flag = data.data.sortNumber
// 改变当前行过期日期
orderItemsDTOs.forEach((ele, index) => {
if (ele.sortNumber === flag) {
ele.validPeriod = y + '-' + m + '-' + d
}
})
// this.dataSource[data.row.rowIndex].planstartime = e.value
},
这里注意,如果是多行,需要加判断,不然容易造成死循环,不断地循环赋值