let extension = {
components: {
//查询界面扩展组件
gridHeader: '',
gridBody: '',
gridFooter: '',
//新建、编辑弹出框扩展组件
modelHeader: '',
modelBody: '',
modelFooter: ''
},
tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
buttons: { view: [], box: [], detail: [] }, //扩展的按钮
methods: {
//下面这些方法可以保留也可以删除
onInit() {
// let InOrder = this.buttons.find(x => x.value == 'StockOutbound');
// if (InOrder) {
// InOrder.onClick = function () {
// let rows = this.$refs.table.getSelected();
// if (rows.length == 0) return this.$error("请选择数据!");
// if (rows.length > 1) return this.$error("请选择单条数据!");
// var keys = rows.map(x => { return x.stockId });
// this.http
// .post("api/Task/Outbound?id="+keys[0], null, "数据处理中")
// .then((x) => {
// if (!x.status) return this.$message.error(x.message);
// this.$message.success("操作成功");
// this.refresh();
// });
// }
// }
this.columns.forEach(column => {
// if (column.field == 'materielCode') {
// column.formatter = (row) => {
// var str = '';
// var list = row.materielCode.split(',');
// for (let index = 0; index < list.length; index++) {
// str += list[index] + '
';
// }
// return str = list[0] == "" ? "空箱" : str;
// }
// }
// if (column.field == 'batchNo') {
// column.formatter = (row) => {
// var str = '';
// var list = row.batchNo.split(',');
// for (let index = 0; index < list.length; index++) {
// str += list[index] + '
';
// }
// return str = list[0] == "" ? "无" : str;
// }
// }
// if (column.field == 'materielInfo') {
// const today = new Date()
// column.formatter = (row) => {
// if (row.details.length > 0) {
// const today = new Date();
// const closestDate = row.details
// .map(x => {
// const date = new Date(x.effectiveDate);
// const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24)));
// return { date, diffInDays };
// })
// .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest))
// .date;
// const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24)));
// return '' + daysSinceClosest + "天" + '';
// } else {
// return '' + "无保质期" + '';
// }
// }
// }
if (column.field == 'sumStock') {
column.formatter = (row) => {
if (row.details.length > 0) {
var sum = 0;
const closestDate = row.details
.map(x => {
sum += (x.stockQuantity)
})
return '' + sum + row.details[0].unit + '';
} else {
return '' + "1个" + '';
}
}
}
if (column.field === 'orderStatistics') {
column.formatter = (row) => {
// 校验details是否存在且有数据
if (row.details && row.details.length > 0) {
// 按barcode + supplyCode + BatchNo 组合维度分组统计stockQuantity总和,并记录单位(取第一个非空单位)
const groupSumMap = row.details.reduce((acc, item) => {
// 获取分组关键字段,为空时赋予默认值
const supplyCode = item.supplyCode || '未知供应商编码';
const batchNo = item.batchNo || '未知批次号';
const materielCode = item.materielCode || '未知物料'; // 保留原有物料编码
const quantity = Number(item.stockQuantity) || 0;
const unit = item.unit || ''; // 获取单位,无则为空
// 组合分组键(可根据需要调整显示格式)
const groupKey = `${supplyCode}|${batchNo}|${materielCode}`;
// 累加数量,保留第一个非空单位
acc[groupKey] = {
total: (acc[groupKey]?.total || 0) + quantity,
unit: acc[groupKey]?.unit || unit,
supplyCode,
batchNo,
materielCode
};
return acc;
}, {});
// 每个分组项生成独立div,跨行显示(包含所有分组维度和单位)
const displayItems = Object.entries(groupSumMap).map(([_, data]) => {
// 处理单位显示:有单位则加空格显示,无则不显示
const unitText = data.unit ? ` ${data.unit}` : '';
// 组装显示文本(可根据需求调整字段显示顺序和格式)
return `