
8 changed files with 392 additions and 423 deletions
@ -1,320 +1,308 @@ |
|||||
<template> |
<template> |
||||
<div> |
<div> |
||||
<div class="tab-header webtop"> |
<div class="tab-header webtop"> |
||||
<!-- 标题 --> |
<div style="margin: 0 auto;">{{ title }}</div> |
||||
<div style="margin: 0 auto;">{{title}}</div> |
|
||||
<!-- start 添加修改按钮 --> |
|
||||
<div> |
<div> |
||||
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button> |
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button> |
||||
</div> |
</div> |
||||
<!-- end 详情按钮 --> |
|
||||
</div> |
</div> |
||||
|
|
||||
<div style="margin-top: 10px; height: 100%;"> |
<div style="margin-top: 10px; height: 100%;"> |
||||
|
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%" :span-method="arraySpanMethod" :cell-style="cellStyleMethod"> |
||||
<el-table :key="tableKey" v-loading="listLoading" height="650px" :data="list" border |
<el-table-column fixed prop="brandName" label="品牌" align="center" width="150" /> |
||||
style="width: 100%;margin-bottom: 50px;" :span-method="objectSpanMethods"> |
<el-table-column fixed prop="zoneName" label="品名" align="center" width="150" /> |
||||
<el-table-column fixed label="序号" type="index" width="80" :index="index+1" align="center" /> |
<el-table-column fixed prop="houseName" label="项目" align="center" width="150" /> |
||||
<el-table-column prop="品牌" label="品牌" align="center" width="150" /> |
<el-table-column prop="repairVehAmount" label="在修车辆" align="center" width="150" /> |
||||
<el-table-column prop="服务站名称" label="服务站名称" align="center" width="150" /> |
|
||||
<el-table-column prop="软件系统" label="软件系统" align="center" width="150" /> |
|
||||
|
|
||||
<el-table-column prop="品名" label="品名" align="center" width="150" /> |
|
||||
<el-table-column prop="项目" label="项目" align="center" width="150" /> |
|
||||
<el-table-column prop="在修车辆" label="在修车辆" align="center" width="150" /> |
|
||||
|
|
||||
<el-table-column label="库存总计" align="center"> |
<el-table-column label="库存总计" align="center"> |
||||
<el-table-column prop="库存总计品种" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietyTotal" label="品种(个)" align="center" width="120" /> |
||||
<el-table-column prop="库存总计金额" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountTotal" label="金额(元)" align="center" width="120" /> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="正常库存" align="center"> |
<el-table-column label="正常库存" align="center"> |
||||
|
|
||||
<el-table-column label="库龄1-60天" align="center"> |
<el-table-column label="库龄1-60天" align="center"> |
||||
<el-table-column label="1-2个月内配件" align="center"> |
<el-table-column label="1-2个月内配件" align="center"> |
||||
<el-table-column prop="1月金额" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietyOne" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="1月金额" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountOne" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="1月占比" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentOne" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
<el-table-column label="库龄61-90天" align="center"> |
||||
<!-- <el-table-column label="库龄61-90天" align="center"> |
<el-table-column label="超2个月(3个月)配件" align="center"> |
||||
<el-table-column label="超2个月(3个月)配件" align="center"> |
<el-table-column prop="fittingsVarietyTwo" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountTwo" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsPercentTwo" label="占比" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
|
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="滞销件" align="center"> |
<el-table-column label="滞销件" align="center"> |
||||
|
|
||||
<el-table-column label="库龄91-180天" align="center"> |
<el-table-column label="库龄91-180天" align="center"> |
||||
<el-table-column label="超3个月(4-6个月)" align="center"> |
<el-table-column label="超3个月(4-6个月)" align="center"> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietyThree" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountThree" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentThree" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="库龄150-180天" align="center"> |
<el-table-column label="库龄150-180天" align="center"> |
||||
<el-table-column label="超5个月(6个月)" align="center"> |
<el-table-column label="超5个月(6个月)" align="center"> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietyFour" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountFour" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentFour" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="积压件" align="center"> |
<el-table-column label="积压件" align="center"> |
||||
|
|
||||
<el-table-column label="库龄181-270天" align="center"> |
<el-table-column label="库龄181-270天" align="center"> |
||||
<el-table-column label="超6个月(7-9个月)" align="center"> |
<el-table-column label="超6个月(7-9个月)" align="center"> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietyFive" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountFive" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentFive" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="库龄240-270天" align="center"> |
<el-table-column label="库龄240-270天" align="center"> |
||||
<el-table-column label="超8个月(9个月)" align="center"> |
<el-table-column label="超8个月(9个月)" align="center"> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietySix" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountSix" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentSix" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="库龄271-360天" align="center"> |
<el-table-column label="库龄271-360天" align="center"> |
||||
<el-table-column label="超9个月(10-12个月)" align="center"> |
<el-table-column label="超9个月(10-12个月)" align="center"> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietySeven" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountSeven" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentSeven" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="库龄330-360天" align="center"> |
<el-table-column label="库龄330-360天" align="center"> |
||||
<el-table-column label="超11个月(12个月)" align="center"> |
<el-table-column label="超11个月(12个月)" align="center"> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietyEight" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountEight" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentEight" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="库龄361-720天" align="center"> |
<el-table-column label="库龄361-720天" align="center"> |
||||
<el-table-column label="超12个月(13-24个月)" align="center"> |
<el-table-column label="超12个月(13-24个月)" align="center"> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsVarietyNine" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountNine" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsPercentNine" label="占比" align="center" width="120"/> |
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> |
</el-table-column> |
||||
|
<el-table-column label="超24个月(25个月以上)" align="center"> |
||||
<el-table-column label="超24个月(25个月以上)" align="center"> |
<el-table-column label="超11个月(12个月)" align="center"> |
||||
<el-table-column label="超11个月(12个月)" align="center"> |
<el-table-column prop="fittingsVarietyTen" label="品种(个)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="品种(个)" align="center" width="120" /> |
<el-table-column prop="fittingsAmountTen" label="金额(元)" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsPercentTen" label="占比" align="center" width="120"/> |
||||
<el-table-column prop="deptName" label="占比" align="center" width="120" /> |
|
||||
</el-table-column> |
</el-table-column> |
||||
</el-table-column> --> |
</el-table-column> |
||||
|
|
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="库存当量" align="center"> |
<el-table-column label="库存当量" align="center"> |
||||
|
|
||||
<el-table-column label="当月出库配件成本" align="center"> |
<el-table-column label="当月出库配件成本" align="center"> |
||||
<el-table-column prop="库存当量出库金额" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingsOutAmount" label="金额(元)" align="center" width="120" /> |
||||
<el-table-column prop="库存当量出库占比" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingsOutPercent" label="占比" align="center" width="120" /> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
<el-table-column label="当月入库配件成本" align="center"> |
<el-table-column label="当月入库配件成本" align="center"> |
||||
<el-table-column prop="库存当量入库金额" label="金额(元)" align="center" width="120" /> |
<el-table-column prop="fittingslnAmount" label="金额(元)" align="center" width="120" /> |
||||
<el-table-column prop="库存当量入库占比" label="占比" align="center" width="120" /> |
<el-table-column prop="fittingslnPercent" label="占比" align="center" width="120" /> |
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
</el-table-column> |
</el-table-column> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
</el-table> |
</el-table> |
||||
</div> |
</div> |
||||
</div> |
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
import req from '@/api/statement/monthlyReport/inventoryManagement' |
import req from '@/api/statement/monthlyReport/inventoryManagement' |
||||
export default { |
|
||||
data() { |
export default { |
||||
return { |
data() { |
||||
index: 0, |
return { |
||||
tableKey: 0, |
index: 0, |
||||
listLoading: false, |
tableKey: 0, |
||||
list: [], |
listLoading: false, |
||||
title: "", |
title: '', |
||||
mergeObj: {}, // 用来记录需要合并行的下标 |
list: [], |
||||
mergeArr: ['品牌', '服务站名称', '软件系统', '品名', '库存当量出库金额', '库存当量出库占比', '库存当量入库金额', '库存当量入库占比'], // 表格中的列名 |
brandNameArr: [], |
||||
// mergeArr: ['品牌', '服务站名称', '软件系统', '品名'], // 表格中的列名 |
brandNamePos: '', |
||||
} |
zoneNameArr: [], |
||||
}, |
zoneNamePos: '' |
||||
|
} |
||||
methods: { |
}, |
||||
|
created() { |
||||
objectSpanMethods({ |
this.formatData() |
||||
row, //当前行、 |
}, |
||||
column, //当前列、 |
methods: { |
||||
rowIndex, //当前行索引 |
showAdd(row) { |
||||
columnIndex //当前列索引 |
this.title = '安瑞集团' + row.createDate + row.useOrgName + '服务站配件库存管理指标完成情况报表' |
||||
}) { |
req.getDetail({ createDate: row.createDate, useOrgSid: row.useOrgSid }).then(resp => { |
||||
|
if (resp.success) { |
||||
if (row.项目 == '总计') { |
this.list = resp.data |
||||
if (columnIndex === 4) { |
this.$nextTick(() => { |
||||
//定位到6行4列的ID,告诉该单元格合并1行2列 |
this.formatData() |
||||
return [1, 2] |
}) |
||||
} |
|
||||
if (columnIndex === 5) { |
|
||||
//定位到6行4列的ID,告诉该单元格合并1行2列 |
|
||||
return [0, 0] |
|
||||
} |
|
||||
} |
} |
||||
|
}) |
||||
// 判断列的属性 |
}, |
||||
if (this.mergeArr.indexOf(column.property) !== -1) { |
formatData() { |
||||
// 判断其值是不是为0 |
let data = JSON.parse(JSON.stringify(this.list)) |
||||
if (this.mergeObj[column.property][rowIndex]) { |
let pos = 0 |
||||
return [this.mergeObj[column.property][rowIndex], 1] |
let temp = {} |
||||
|
// 循环后端返回的数据 |
||||
|
for (let i = 0; i < data.length; i++) { |
||||
|
// 构造一个临时数据对象,用于存储每个循环的数据 |
||||
|
temp[data[i].zoneName] ? temp[data[i].zoneName] : (temp[data[i].zoneName] = {}) |
||||
|
// 因为表格的字段是动态生成的,所以要循环每个字段来添加数据,如果是确定某个字段需要汇总,那简单很多 |
||||
|
for (const key in data[i]) { |
||||
|
// 判断是数字,但不是手机号,可以累加起来 |
||||
|
if (this.isNumberOrDecimalButNotPhone(data[i][key])) { |
||||
|
// 判断不是数字的,重置为0 |
||||
|
if (temp[data[i].zoneName][key] === undefined || isNaN(temp[data[i].zoneName][key])) { |
||||
|
temp[data[i].zoneName][key] = 0 |
||||
|
} |
||||
|
temp[data[i].zoneName][key] = Math.round((parseFloat(temp[data[i].zoneName][key]) + parseFloat(data[i][key])) * 100) / 100 |
||||
} else { |
} else { |
||||
// 如果为0则为需要合并的行 |
temp[data[i].zoneName][key] = '--' |
||||
return [0, 0]; |
|
||||
} |
} |
||||
} |
} |
||||
|
// 利用 zoneName 品名区分,如果新一行的数据跟上一行不同,是需要下一个合并了,此处插入一个合计 |
||||
// var columnIndex1 = 1 |
if (i > 0 && data[i].zoneName !== data[i - 1].zoneName) { |
||||
// var columnIndex2 = 1 |
this.list.splice(i + pos, 0, { |
||||
// var columnIndex3 = 1 |
...temp[data[i - 1].zoneName], |
||||
|
brandName: data[i - 1].brandName, |
||||
// for (var i = 0; i < this.list.length; i++) { |
zoneName: data[i - 1].zoneName, |
||||
// for (var j = 0; j < this.list.length; j++) { |
houseName: '合计' |
||||
|
|
||||
// if (this.list[i].品牌 == this.list[j].品牌) { |
|
||||
// columnIndex1 += 1 |
|
||||
// } |
|
||||
// if (this.list[i].服务站名称 == this.list[j].服务站名称) { |
|
||||
// columnIndex2 += 1 |
|
||||
// } |
|
||||
// if (this.list[i].软件系统 == this.list[j].软件系统) { |
|
||||
// columnIndex3 += 1 |
|
||||
// } |
|
||||
// } |
|
||||
// } |
|
||||
|
|
||||
// console.log('>>>>>>>>>1', columnIndex1) |
|
||||
// console.log('>>>>>>>>>2', columnIndex2) |
|
||||
// console.log('>>>>>>>>>3', columnIndex3) |
|
||||
|
|
||||
// if (columnIndex === 1) { |
|
||||
// //定位到6行4列的ID,告诉该单元格合并1行2列 |
|
||||
// return [columnIndex1, 1] |
|
||||
// } |
|
||||
|
|
||||
// if (columnIndex === 2) { |
|
||||
// //定位到6行4列的ID,告诉该单元格合并1行2列 |
|
||||
// return [columnIndex2, 1] |
|
||||
// } |
|
||||
// if (columnIndex === 3) { |
|
||||
// //定位到6行4列的ID,告诉该单元格合并1行2列 |
|
||||
// return [columnIndex3, 1] |
|
||||
// } |
|
||||
|
|
||||
|
|
||||
|
|
||||
}, |
|
||||
showAdd(row) { |
|
||||
this.title = "安瑞集团" + row.createTime + row.deptName + "服务站配件库存管理指标完成情况报表" |
|
||||
|
|
||||
req.getDetail(row.sid) |
|
||||
.then(resp => { |
|
||||
if (resp.success) { |
|
||||
this.list = resp.data |
|
||||
this.getSpanArr(this.list) |
|
||||
} |
|
||||
}) |
}) |
||||
.catch(e => { |
pos++ |
||||
this.$emit('doback') |
// 出现合计后,将临时对象temp中对应的品名对象进行重置数字归0 |
||||
}) |
for (const key in data[i]) { |
||||
|
// 判断是数字,但不是手机号,可以累加起来 |
||||
}, |
if (this.isNumberOrDecimalButNotPhone(data[i - 1][key])) { |
||||
// getSpanArr方法 |
temp[data[i - 1].zoneName][key] = 0 |
||||
getSpanArr(data) { |
|
||||
this.mergeArr.forEach((key, index1) => { |
|
||||
let count = 0; // 用来记录需要合并行的起始位置 |
|
||||
this.mergeObj[key] = []; // 记录每一列的合并信息 |
|
||||
data.forEach((item, index) => { |
|
||||
// index == 0表示数据为第一行,直接 push 一个 1 |
|
||||
if (index === 0) { |
|
||||
this.mergeObj[key].push(1); |
|
||||
} else { |
} else { |
||||
// console.log('>>>>>>>>>commodityCurrentChange', item) |
temp[data[i - 1].zoneName][key] = '--' |
||||
// console.log('>>>>>>>>>commodityCurrentChange', key) |
} |
||||
// console.log('>>>>>>>>>commodityCurrentChange', item[key]) |
} |
||||
// console.log('>>>>>>>>>commodityCurrentChange', data[index - 1][key]) |
} else if (i === data.length - 1) { |
||||
// 判断当前行是否与上一行其值相等 如果相等 在 count 记录的位置其值 +1 表示当前行需要合并 并push 一个 0 作为占位 |
// 最后一行加个合计 |
||||
if (item.品牌 == data[index - 1].品牌) { |
this.list.push({ |
||||
|
...temp[data[i - 1].zoneName], |
||||
if (item.服务站名称 == data[index - 1].服务站名称) { |
brandName: data[i - 1].brandName, |
||||
|
zoneName: data[i - 1].zoneName, |
||||
if (item.软件系统 == data[index - 1].软件系统) { |
houseName: '合计' |
||||
if (item.品名 == data[index - 1].品名) { |
}) |
||||
if (item[key] === data[index - 1][key]) { |
pos++ |
||||
this.mergeObj[key][count] += 1; |
} |
||||
this.mergeObj[key].push(0); |
} |
||||
} else { |
let datas = JSON.parse(JSON.stringify(this.list)) |
||||
// 如果当前行和上一行其值不相等 |
let zjs = 0 |
||||
count = index; // 记录当前位置 |
let aggregate = {} |
||||
this.mergeObj[key].push(1); // 重新push 一个 1 |
for (let k = 0; k < datas.length; k++) { |
||||
} |
// 构造一个临时数据对象,用于存储每个循环的数据 |
||||
} else { |
aggregate[datas[k].brandName] ? aggregate[datas[k].brandName] : (aggregate[datas[k].brandName] = {}) |
||||
// 如果当前行和上一行其值不相等 |
for (const key in datas[k]) { |
||||
count = index; // 记录当前位置 |
if (datas[k].houseName === '合计') { |
||||
this.mergeObj[key].push(1); // 重新push 一个 1 |
if (this.isNumberOrDecimalButNotPhone(datas[k][key])) { |
||||
} |
// 判断不是数字的,重置为0 |
||||
} else { |
if (aggregate[datas[k].brandName][key] === undefined || isNaN(aggregate[datas[k].brandName][key])) { |
||||
// 如果当前行和上一行其值不相等 |
aggregate[datas[k].brandName][key] = 0 |
||||
count = index; // 记录当前位置 |
|
||||
this.mergeObj[key].push(1); // 重新push 一个 1 |
|
||||
} |
|
||||
|
|
||||
} else { |
|
||||
// 如果当前行和上一行其值不相等 |
|
||||
count = index; // 记录当前位置 |
|
||||
this.mergeObj[key].push(1); // 重新push 一个 1 |
|
||||
} |
|
||||
|
|
||||
} else { |
|
||||
// 如果当前行和上一行其值不相等 |
|
||||
count = index; // 记录当前位置 |
|
||||
this.mergeObj[key].push(1); // 重新push 一个 1 |
|
||||
} |
} |
||||
|
aggregate[datas[k].brandName][key] += parseFloat(datas[k][key]) |
||||
|
} else { |
||||
|
aggregate[datas[k].brandName][key] = '--' |
||||
|
|
||||
} |
} |
||||
|
} |
||||
|
} |
||||
|
// 利用 brandName 品牌区分,如果新一行的数据跟上一行不同,是需要下一个合并了,此处插入一个总计 |
||||
|
if (k > 0 && datas[k].brandName !== datas[k - 1].brandName) { |
||||
|
this.list.splice(k + zjs, 0, { |
||||
|
...aggregate[datas[k - 1].brandName], |
||||
|
brandName: datas[k - 1].brandName, |
||||
|
zoneName: '总计', |
||||
|
houseName: '总计' |
||||
}) |
}) |
||||
}) |
zjs++ |
||||
}, |
} else if (k === datas.length - 1) { |
||||
|
// 最后一行加个总计 |
||||
handleReturn(isreload) { |
this.list.push({ |
||||
if (isreload === 'true') this.$emit('reloadlist') |
...aggregate[datas[k - 1].brandName], |
||||
this.formobj = { |
brandName: datas[k - 1].brandName, |
||||
|
zoneName: '总计', |
||||
|
houseName: '总计' |
||||
|
}) |
||||
|
zjs++ |
||||
|
} |
||||
|
} |
||||
|
this.getSpanArr(this.list, this.brandNameArr, this.brandNamePos, 'brandName') |
||||
|
this.getSpanArr(this.list, this.zoneNameArr, this.zoneNamePos, 'zoneName') |
||||
|
console.log(2222222, this.list) |
||||
|
}, |
||||
|
cellStyleMethod({ row, column, rowIndex, columnIndex }) { |
||||
|
if (row.houseName === '合计') { |
||||
|
if (columnIndex === 2) { |
||||
|
return { 'text-align': 'center' } |
||||
} |
} |
||||
this.$emit('doback') |
|
||||
} |
} |
||||
|
}, |
||||
|
arraySpanMethod({ row, column, rowIndex, columnIndex }) { |
||||
|
if (row.houseName === '合计') { |
||||
|
if (columnIndex === 0 || columnIndex === 1) { |
||||
|
return [0, 0] |
||||
|
} else if (columnIndex === 2) { |
||||
|
return [1, 1] |
||||
|
} |
||||
|
} else if (row.zoneName === '总计') { |
||||
|
if (columnIndex === 0 || columnIndex === 2) { |
||||
|
return [0, 0] |
||||
|
} else if (columnIndex === 1) { |
||||
|
return [1, 2] |
||||
|
} |
||||
|
} else { |
||||
|
if (columnIndex == 0) { |
||||
|
const _row = this.brandNameArr[rowIndex] |
||||
|
const _col = _row > 0 ? 1 : 0 |
||||
|
return { |
||||
|
// [0,0] 表示这一行不显示, [2,1]表示行的合并数 |
||||
|
rowspan: _row, |
||||
|
colspan: _col |
||||
|
} |
||||
|
} |
||||
|
if (columnIndex == 1) { |
||||
|
const _row = this.zoneNameArr[rowIndex] |
||||
|
const _col = _row > 0 ? 1 : 0 |
||||
|
return { |
||||
|
// [0,0] 表示这一行不显示, [2,1]表示行的合并数 |
||||
|
rowspan: _row, |
||||
|
colspan: _col |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
getSpanArr(data, temp, pos, label) { |
||||
|
// data就是我们从后台拿到的数据 |
||||
|
for (let i = 0; i < data.length; i++) { |
||||
|
if (i === 0) { |
||||
|
temp.push(1) |
||||
|
pos = 0 |
||||
|
} else { |
||||
|
// 判断当前元素与上一个元素是否相同 |
||||
|
if (data[i][label] === data[i - 1][label]) { |
||||
|
temp[pos] += 1 |
||||
|
temp.push(0) |
||||
|
} else { |
||||
|
temp.push(1) |
||||
|
pos = i |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
// 只包含数字或小数点,但不是手机号 |
||||
|
isNumberOrDecimalButNotPhone(str) { |
||||
|
return /^1[0-9]{10}$/.test(str) === false && /^[\d.]+$/.test(str) |
||||
|
}, |
||||
|
handleReturn(isreload) { |
||||
|
if (isreload === 'true') this.$emit('reloadlist') |
||||
|
this.formobj = {} |
||||
|
this.$emit('doback') |
||||
} |
} |
||||
} |
} |
||||
|
} |
||||
</script> |
</script> |
||||
|
|
||||
<style scoped> |
<style scoped> |
||||
|
|
||||
</style> |
</style> |
||||
|
Loading…
Reference in new issue