|
@@ -1,38 +1,111 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <h4>Table1</h4>
|
|
|
- <h6>原数据</h6>
|
|
|
- <el-table :data='tableData1' border style='width: 100%'>
|
|
|
- <el-table-column prop='type' label='type' width='180'></el-table-column>
|
|
|
- <el-table-column prop='professional' label='professional'></el-table-column>
|
|
|
- <el-table-column prop='unit' label='unit'></el-table-column>
|
|
|
- <el-table-column prop='seq0' label='seq0'></el-table-column>
|
|
|
- <el-table-column prop='seq1' label='seq1'></el-table-column>
|
|
|
- <el-table-column prop='seq2' label='seq2'></el-table-column>
|
|
|
- <el-table-column prop='seq3' label='seq3'></el-table-column>
|
|
|
- <el-table-column prop='seq4' label='seq4'></el-table-column>
|
|
|
- </el-table>
|
|
|
- <h6>合并数据</h6>
|
|
|
- <el-table :data='tableData2' border style='width: 100%'>
|
|
|
- <el-table-column prop='type' label='type' width='180'></el-table-column>
|
|
|
- <el-table-column prop='professional' label='professional'></el-table-column>
|
|
|
- <el-table-column prop='unit' label='unit'></el-table-column>
|
|
|
- <el-table-column prop='seq0' label='seq0'></el-table-column>
|
|
|
- <el-table-column prop='seq1' label='seq1'></el-table-column>
|
|
|
- <el-table-column prop='seq2' label='seq2'></el-table-column>
|
|
|
- <el-table-column prop='seq3' label='seq3'></el-table-column>
|
|
|
- <el-table-column prop='seq4' label='seq4'></el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-table :data='tableData2' :span-method='arraySpanMethod' border style='width: 100%'>
|
|
|
- <el-table-column prop='type' label='type' width='180'></el-table-column>
|
|
|
- <el-table-column prop='professional' label='professional'></el-table-column>
|
|
|
- <el-table-column prop='unit' label='unit'></el-table-column>
|
|
|
- <!-- <el-table-column prop='seq0' label='seq0'></el-table-column>
|
|
|
- <el-table-column prop='seq1' label='seq1'></el-table-column>
|
|
|
- <el-table-column prop='seq2' label='seq2'></el-table-column>
|
|
|
- <el-table-column prop='seq3' label='seq3'></el-table-column>
|
|
|
- <el-table-column prop='seq4' label='seq4'></el-table-column>-->
|
|
|
- </el-table>
|
|
|
+ <div style='display:flex'>
|
|
|
+ <!-- <el-table
|
|
|
+ :data='tableData1'
|
|
|
+ :header-cell-style='{background:"rgba(245,246,247,1)",fontFamily:"MicrosoftYaHei",color:"rgba(100,108,115,1)",lineHeight:"16px",fontSize:"12px"}'
|
|
|
+ border
|
|
|
+ style='width: 100%'
|
|
|
+ >
|
|
|
+ <el-table-column prop='type' label='type' width='180'></el-table-column>
|
|
|
+ <el-table-column prop='professional' label='professional'></el-table-column>
|
|
|
+ <el-table-column prop='unit' label='unit'></el-table-column>
|
|
|
+ <el-table-column prop='seq0' label='seq0'></el-table-column>
|
|
|
+ <el-table-column prop='seq1' label='seq1'></el-table-column>
|
|
|
+ <el-table-column prop='seq2' label='seq2'></el-table-column>
|
|
|
+ <el-table-column prop='seq3' label='seq3'></el-table-column>
|
|
|
+ <el-table-column prop='seq4' label='seq4'></el-table-column>
|
|
|
+ <el-table-column prop='seq5' label='seq5'></el-table-column>
|
|
|
+ <el-table-column prop='seq6' label='seq6'></el-table-column>
|
|
|
+ <el-table-column label='联系人' prop width='65'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxr}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop='phone' label='联系电话' width='110'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxdh}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>-->
|
|
|
+ <!-- <el-table
|
|
|
+ :data='tableData2'
|
|
|
+ :header-cell-style='{background:"rgba(245,246,247,1)",fontFamily:"MicrosoftYaHei",color:"rgba(100,108,115,1)",lineHeight:"16px",fontSize:"12px"}'
|
|
|
+ border
|
|
|
+ style='width: 100%'
|
|
|
+ >
|
|
|
+ <el-table-column prop='type' label='type' width='180'></el-table-column>
|
|
|
+ <el-table-column prop='professional' label='professional'></el-table-column>
|
|
|
+ <el-table-column prop='unit' label='unit'></el-table-column>
|
|
|
+ <el-table-column prop='seq0' label='seq0'></el-table-column>
|
|
|
+ <el-table-column prop='seq1' label='seq1'></el-table-column>
|
|
|
+ <el-table-column prop='seq2' label='seq2'></el-table-column>
|
|
|
+ <el-table-column prop='seq3' label='seq3'></el-table-column>
|
|
|
+ <el-table-column prop='seq4' label='seq4'></el-table-column>
|
|
|
+ <el-table-column prop='seq5' label='seq5'></el-table-column>
|
|
|
+ <el-table-column prop='seq6' label='seq6'></el-table-column>
|
|
|
+ <el-table-column label='联系人' prop width='65'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxr}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop='phone' label='联系电话' width='110'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxdh}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>-->
|
|
|
+ </div>
|
|
|
+ <div style='display:flex'>
|
|
|
+ <!-- <el-table
|
|
|
+ :data='tableData2'
|
|
|
+ :span-method='arraySpanMethod'
|
|
|
+ :header-cell-style='{background:"rgba(245,246,247,1)",fontFamily:"MicrosoftYaHei",color:"rgba(100,108,115,1)",lineHeight:"16px",fontSize:"12px"}'
|
|
|
+ border
|
|
|
+ style='width: 100%'
|
|
|
+ >
|
|
|
+ <el-table-column prop='type' label='type' width='180'></el-table-column>
|
|
|
+ <el-table-column prop='professional' label='professional'></el-table-column>
|
|
|
+ <el-table-column prop='unit' label='unit'></el-table-column>
|
|
|
+ <el-table-column prop='seq0' label='seq0'></el-table-column>
|
|
|
+ <el-table-column prop='seq1' label='seq1'></el-table-column>
|
|
|
+ <el-table-column prop='seq2' label='seq2'></el-table-column>
|
|
|
+ <el-table-column prop='seq3' label='seq3'></el-table-column>
|
|
|
+ <el-table-column prop='seq4' label='seq4'></el-table-column>
|
|
|
+ <el-table-column prop='seq5' label='seq5'></el-table-column>
|
|
|
+ <el-table-column prop='seq6' label='seq6'></el-table-column>
|
|
|
+ <el-table-column label='联系人' prop width='65'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxr}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop='phone' label='联系电话' width='110'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxdh}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>-->
|
|
|
+ <el-table
|
|
|
+ :data='tableData2'
|
|
|
+ :height='350'
|
|
|
+ :span-method='arraySpanMethod'
|
|
|
+ style='font-size:12px;width:60%'
|
|
|
+ border
|
|
|
+ :header-cell-style='{background:"rgba(245,246,247,1)",fontFamily:"MicrosoftYaHei",color:"rgba(100,108,115,1)",lineHeight:"16px",fontSize:"12px"}'
|
|
|
+ >
|
|
|
+ <!-- <el-table-column label='序号' width='50' type='index' align='left'></el-table-column> -->
|
|
|
+ <el-table-column label='总包/分包' width='100' prop='type'>
|
|
|
+ <template slot-scope='{row}'>{{row.type||'--'}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label='专业' width='70' prop='professional'>
|
|
|
+ <template slot-scope='{row}'>{{row.professional||'--'}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop='unit ' label='施工单位'>
|
|
|
+ <template slot-scope='{row}'>{{row.unit ||'--'}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label='联系人' prop width='65' :show-overflow-tooltip='true'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxr}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop='phone' label='联系电话' width='110'>
|
|
|
+ <template slot-scope='{row}'>{{row.lxdh}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop='seq0' label='seq0'></el-table-column>
|
|
|
+ <el-table-column prop='seq1' label='seq1'></el-table-column>
|
|
|
+ <el-table-column prop='seq2' label='seq2'></el-table-column>
|
|
|
+ <el-table-column prop='seq3' label='seq3'></el-table-column>
|
|
|
+ <el-table-column prop='seq4' label='seq4'></el-table-column>
|
|
|
+ <el-table-column prop='seq5' label='seq5'></el-table-column>
|
|
|
+ <el-table-column prop='seq6' label='seq6'></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
@@ -49,12 +122,16 @@ export default {
|
|
|
computed: {},
|
|
|
methods: {
|
|
|
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
|
+ console.log('{ row, column, rowIndex, columnIndex }', { row, column, rowIndex, columnIndex })
|
|
|
// console.log('span method rowIndex=', rowIndex, ', columnIndex=', columnIndex, JSON.stringify(row))
|
|
|
if (columnIndex == 0) {
|
|
|
if (row.type == '总包') {
|
|
|
return [row.seq1, 1]
|
|
|
} else if (row.type == '分包') {
|
|
|
- return [1, 1]
|
|
|
+ if (row.professional) {
|
|
|
+ return [row.seq2, 1]
|
|
|
+ }
|
|
|
+ return [0, 1]
|
|
|
} else {
|
|
|
return [0, 1]
|
|
|
}
|
|
@@ -73,6 +150,20 @@ export default {
|
|
|
return [0, 1]
|
|
|
}
|
|
|
}
|
|
|
+ if (columnIndex == 3) {
|
|
|
+ if (row.lxr) {
|
|
|
+ return [row.seq4, 1]
|
|
|
+ } else {
|
|
|
+ return [0, 1]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (columnIndex == 4) {
|
|
|
+ if (row.lxdh) {
|
|
|
+ return [row.seq5, 1]
|
|
|
+ } else {
|
|
|
+ return [0, 1]
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return [1, 1]
|
|
|
},
|
|
@@ -97,38 +188,78 @@ export default {
|
|
|
} else {
|
|
|
seq[flag] = seq[flag] + 1
|
|
|
}
|
|
|
+ flag = item.type + '-' + item.lxr
|
|
|
+ if (!seq[flag]) {
|
|
|
+ seq[flag] = 1
|
|
|
+ } else {
|
|
|
+ seq[flag] = seq[flag] + 1
|
|
|
+ }
|
|
|
+ flag = item.type + '-' + item.lxdh
|
|
|
+ if (!seq[flag]) {
|
|
|
+ seq[flag] = 1
|
|
|
+ } else {
|
|
|
+ seq[flag] = seq[flag] + 1
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
console.log(seq)
|
|
|
|
|
|
data.forEach(item => {
|
|
|
+ console.log(item.type)
|
|
|
item.seq0 = item.type == '总包' ? 1 : 2
|
|
|
item.seq1 = seq[item.type]
|
|
|
item.seq2 = seq[item.type + '-' + item.professional]
|
|
|
item.seq3 = seq[item.type + '-' + item.unit]
|
|
|
- item.seq4 = item.seq2 + item.seq3
|
|
|
+ item.seq4 = seq[item.type + '-' + item.lxr]
|
|
|
+ console.log(seq[item.type + '-' + item.lxr])
|
|
|
+ item.seq5 = seq[item.type + '-' + item.lxdh]
|
|
|
+ item.seq6 = item.seq4 + item.seq5
|
|
|
})
|
|
|
- data.forEach(item => console.log(JSON.stringify(item)))
|
|
|
+ // data.forEach(item => console.log(JSON.stringify(item)))
|
|
|
|
|
|
data.sort((a, b) => {
|
|
|
if (a.seq0 != b.seq0) {
|
|
|
return a.seq0 - b.seq0
|
|
|
}
|
|
|
- if (a.seq4 != b.seq4) {
|
|
|
- return a.seq4 - b.seq4
|
|
|
+ if (a.seq1 != b.seq1) {
|
|
|
+ return a.seq1 - b.seq1
|
|
|
+ }
|
|
|
+ if (a.seq2 != b.seq2) {
|
|
|
+ return a.seq2 - b.seq2
|
|
|
}
|
|
|
if (a.seq3 != b.seq3) {
|
|
|
return a.seq3 - b.seq3
|
|
|
}
|
|
|
- if (a.seq2 != b.seq2) {
|
|
|
- return a.seq2 - b.seq2
|
|
|
+ if (a.seq4 != b.seq4) {
|
|
|
+ return a.seq4 - b.seq4
|
|
|
}
|
|
|
+ if (a.seq5 != b.seq5) {
|
|
|
+ return a.seq5 - b.seq5
|
|
|
+ }
|
|
|
+ if (a.seq6 != b.seq6) {
|
|
|
+ return a.seq6 - b.seq6
|
|
|
+ }
|
|
|
+
|
|
|
let result = a.professional.localeCompare(b.professional)
|
|
|
if (result == 0) {
|
|
|
return a.unit.localeCompare(b.unit)
|
|
|
} else {
|
|
|
return result
|
|
|
}
|
|
|
+
|
|
|
+ let result1 = a.unit.localeCompare(b.unit)
|
|
|
+ if (result1 == 0) {
|
|
|
+ return a.lxr.localeCompare(b.lxr)
|
|
|
+ } else {
|
|
|
+ return result1
|
|
|
+ }
|
|
|
+
|
|
|
+ let result2 = a.lxr.localeCompare(b.lxr)
|
|
|
+ if (result2 == 0) {
|
|
|
+ return a.lxdh.localeCompare(b.lxdh)
|
|
|
+ } else {
|
|
|
+ return result2
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
let result = []
|
|
@@ -141,7 +272,15 @@ export default {
|
|
|
if (!temp) {
|
|
|
result.push(item)
|
|
|
} else {
|
|
|
- let content = { seq0: item.seq0, seq1: item.seq1, seq2: item.seq2, seq3: item.seq3, seq4: item.seq4 }
|
|
|
+ let content = {
|
|
|
+ seq0: item.seq0,
|
|
|
+ seq1: item.seq1,
|
|
|
+ seq2: item.seq2,
|
|
|
+ seq3: item.seq3,
|
|
|
+ seq4: item.seq4,
|
|
|
+ seq5: item.seq5,
|
|
|
+ seq6: item.seq6
|
|
|
+ }
|
|
|
content.type = item.type == '分包' ? '分包' : null
|
|
|
if (item.professional != temp.professional) {
|
|
|
content.professional = item.professional
|
|
@@ -149,6 +288,12 @@ export default {
|
|
|
if (item.unit != temp.unit) {
|
|
|
content.unit = item.unit
|
|
|
}
|
|
|
+ if (item.lxr != temp.lxr) {
|
|
|
+ content.lxr = item.lxr
|
|
|
+ }
|
|
|
+ if (item.lxdh != temp.lxdh) {
|
|
|
+ content.lxdh = item.lxdh
|
|
|
+ }
|
|
|
result.push(content)
|
|
|
}
|
|
|
temp = data[i]
|
|
@@ -163,7 +308,15 @@ export default {
|
|
|
result.push(item)
|
|
|
} else {
|
|
|
let item = data[i]
|
|
|
- let content = { seq0: item.seq0, seq1: item.seq1, seq2: item.seq2, seq3: item.seq3, seq4: item.seq4 }
|
|
|
+ let content = {
|
|
|
+ seq0: item.seq0,
|
|
|
+ seq1: item.seq1,
|
|
|
+ seq2: item.seq2,
|
|
|
+ seq3: item.seq3,
|
|
|
+ seq4: item.seq4,
|
|
|
+ seq5: item.seq5,
|
|
|
+ seq6: item.seq6
|
|
|
+ }
|
|
|
content.type = item.type == '分包' ? '分包' : null
|
|
|
if (item.professional != temp.professional) {
|
|
|
content.professional = item.professional
|
|
@@ -171,6 +324,13 @@ export default {
|
|
|
if (item.unit != temp.unit) {
|
|
|
content.unit = item.unit
|
|
|
}
|
|
|
+ if (item.lxr != temp.lxr) {
|
|
|
+ content.lxr = item.lxr
|
|
|
+ }
|
|
|
+ if (item.lxdh != temp.lxdh) {
|
|
|
+ content.lxdh = item.lxdh
|
|
|
+ }
|
|
|
+
|
|
|
result.push(content)
|
|
|
}
|
|
|
temp = data[i]
|
|
@@ -182,19 +342,19 @@ export default {
|
|
|
created() {
|
|
|
console.log('--------------------- Table1 created')
|
|
|
let tableData = [
|
|
|
- { siteid: '1000423', type: '总包', professional: '土建', unit: '中建二局 15625857784' },
|
|
|
- { siteid: '1000423', type: '分包', professional: '电梯', unit: '上海三菱 15625857784' },
|
|
|
- { siteid: '1000423', type: '总包', professional: '消防电', unit: '中建二局215625857784' },
|
|
|
- { siteid: '1000423', type: '总包', professional: '机电', unit: '中建二局15625857784' },
|
|
|
- { siteid: '1000423', type: '总包', professional: '机电', unit: '中建二局15625857784' },
|
|
|
- { siteid: '1000423', type: '分包', professional: '精装', unit: '深圳嘉信15625857784' },
|
|
|
- { siteid: '1000423', type: '总包', professional: '给排水', unit: '中建二局15625857784' },
|
|
|
- { siteid: '1000423', type: '分包', professional: '幕墙', unit: '中建二局15625857784' },
|
|
|
- { siteid: '1000423', type: '分包', professional: '精装', unit: '深圳艺涛15625857784' },
|
|
|
- { siteid: '1000423', type: '分包', professional: '采光顶', unit: '上海通用15625857784' },
|
|
|
- { siteid: '1000423', type: '分包', professional: '空调', unit: '武汉三重15625857784' },
|
|
|
- { siteid: '1000423', type: '总包', professional: '弱电', unit: '中建二局15625857784' },
|
|
|
- { siteid: '1000423', type: '分包', professional: '消防水', unit: '辽宁强盾15625857784' }
|
|
|
+ { siteid: '1000423', type: '总包', professional: '土建', unit: '中建二局', lxr: '张善国1', lxdh: '136234577521' },
|
|
|
+ { siteid: '1000423', type: '分包', professional: '电梯', unit: '上海三菱', lxr: '张善国2', lxdh: '136234577522' },
|
|
|
+ { siteid: '1000423', type: '总包', professional: '消防电', unit: '中建二局', lxr: '张善国3', lxdh: '136234577523' },
|
|
|
+ { siteid: '1000423', type: '总包', professional: '机电', unit: '中建二局', lxr: '张善国4', lxdh: '136234577524' },
|
|
|
+ { siteid: '1000423', type: '总包', professional: '机电', unit: '中建二局', lxr: '张善国5', lxdh: '136234577525' },
|
|
|
+ { siteid: '1000423', type: '分包', professional: '精装', unit: '深圳嘉信', lxr: '张善国6', lxdh: '136234577526' },
|
|
|
+ { siteid: '1000423', type: '总包', professional: '给排水', unit: '中建二局', lxr: '张善国7', lxdh: '136234577521' },
|
|
|
+ { siteid: '1000423', type: '分包', professional: '幕墙', unit: '中建二局', lxr: '张善国8', lxdh: '136234577522' },
|
|
|
+ { siteid: '1000423', type: '分包', professional: '精装', unit: '深圳艺涛', lxr: '张善国9', lxdh: '136234577523' },
|
|
|
+ { siteid: '1000423', type: '分包', professional: '采光顶', unit: '上海通用', lxr: '张善国10', lxdh: '136234577524' },
|
|
|
+ { siteid: '1000423', type: '分包', professional: '空调', unit: '武汉三重', lxr: '张善国11', lxdh: '136234577525' },
|
|
|
+ { siteid: '1000423', type: '总包', professional: '弱电', unit: '中建二局', lxr: '张善国12', lxdh: '136234577526' },
|
|
|
+ { siteid: '1000423', type: '分包', professional: '消防水', unit: '辽宁强盾', lxr: '张善国13', lxdh: '136234577527' }
|
|
|
]
|
|
|
this.parseTableData(tableData)
|
|
|
},
|