merge contract

This commit is contained in:
chenjianan
2019-05-27 15:56:05 +08:00
parent 8854c04660
commit 9ff37964b5
2 changed files with 86 additions and 20 deletions

View File

@@ -105,3 +105,31 @@ export function sleep(time) {
setTimeout(resolve, time)
})
}
export function groupBy(datas, keys, callBack) {
const list = datas || []
const groups = []
const result = []
list.forEach(v => {
const key = {}
keys.forEach(k => {
key[k] = v[k]
})
let group = groups.find(v => {
return v._key === JSON.stringify(key)
})
if (!group) {
group = {
_key: JSON.stringify(key),
key: key
}
groups.push(group)
}
group.key.数量 = callBack(group.data, v)
group.data = callBack(group.data, v)
})
groups.map(v => {
result.push(v.key)
})
return result
}

View File

@@ -92,9 +92,14 @@
style="width:100%"/>
</template>
</el-table-column>
<el-table-column label="图号" align="center" min-width="150">
<el-table-column label="机床图号" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.图号 }}
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column label="组号" align="center" min-width="80">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column label="名称" align="center" min-width="100">
@@ -102,9 +107,14 @@
{{ scope.row.名称 }}
</template>
</el-table-column>
<el-table-column label="图号或型号" align="center" min-width="150">
<template slot-scope="scope">
{{ scope.row.图号 ? scope.row.图号 : '—' }}
</template>
</el-table-column>
<el-table-column label="规格" align="center" min-width="150">
<template slot-scope="scope">
{{ scope.row.规格 }}
{{ scope.row.规格 ? scope.row.规格 : '—' }}
</template>
</el-table-column>
<el-table-column label="数量" align="center" width="80">
@@ -115,13 +125,13 @@
<el-table-column v-show="hasTax==='未税'" label="单价(未税)" align="center" width="120">
<template slot-scope="scope">
<el-input v-show="hasTax==='未税'" v-model="scope.row.未税单价" size="mini" style="width:100%"/>
<span v-show="hasTax!=='未税'"></span>
<b v-show="hasTax!=='未税'"></b>
</template>
</el-table-column>
<el-table-column v-show="hasTax==='含税'" label="单价(含税)" align="center" width="120">
<template slot-scope="scope">
<el-input v-show="hasTax==='含税'" v-model="scope.row.含税单价" size="mini" style="width:100%"/>
<span v-show="hasTax!=='含税'"></span>
<b v-show="hasTax!=='含税'"></b>
</template>
</el-table-column>
<el-table-column label="总额(未税)" align="center" min-width="100" prop="未税总额">
@@ -134,6 +144,11 @@
{{ hasTax==='含税' ? scope.row.含税总额 = (Number(scope.row.数量) * Number(scope.row.含税单价)).toFixed(2) : scope.row.含税总额 = (scope.row.未税总额 * (1+taxRate)).toFixed(2) }}
</template>
</el-table-column>
<el-table-column label="备注" align="center" width="80">
<template slot-scope="scope">
{{ scope.row.备注 }}
</template>
</el-table-column>
</el-table>
<el-tooltip content="一键删除交货期" placement="right">
<el-button type="danger" icon="el-icon-date" size="small" @click="deleteAllDate()"/>
@@ -168,7 +183,7 @@ import Tinymce from '@/components/Tinymce'
import { initSupplier, searchInquirySheet, searchSheetContract, doneContract, searchBaseInfo } from '@/api/PurchasingCenter/CreatePurchaseContract'
import { convertCurrency } from '@/vendor/int2Chinese'
import { mapGetters } from 'vuex'
import { sleep } from '@/utils/tool'
import { sleep, groupBy } from '@/utils/tool'
import $ from 'jquery'
export default {
@@ -337,6 +352,8 @@ export default {
searchSheetContract(this.contractNumValue).then(response => {
for (let i = 0; i < response.data.length; i++) {
this.tableData1.push({
机床图号: response.data[i].机床图号,
组号: response.data[i].组号,
组件零件流水号: response.data[i].组件零件流水号,
组件零件基本件流水号: response.data[i].组件零件基本件流水号,
交货期: response.data[i].组件零件流水号 ? response.data[i].标准件和外购件交货期 : response.data[i].基本件交货期,
@@ -508,11 +525,10 @@ export default {
</tr>
</tbody>
</table>
<br>
<span>未税合计</span><span id="untaxTotal"></span><span>元</span><br><br>
<span>税额</span><span id="tax"></span><br><br>
<span>含税总价(税率<span id="taxRate"></span></span><span id="taxTotal"></span><span>元</span><br><br>
<span>优惠后含税总价:</span><span class="actualTotal"></span><span>元</span><br><br>
<span>未税合计:</span><span id="untaxTotal"></span><span>元</span><br>
<span>税额</span><span id="tax"></span><br>
<span>含税总价(税率<span id="taxRate"></span></span><span id="taxTotal"></span><span>元</span><br>
<span>优惠后含税总价:</span><span class="actualTotal"></span><span>元</span>
`
},
async editContract() { // 选择一个询价单,整成合同明细
@@ -546,9 +562,29 @@ export default {
parent.removeChild(children[i])
}
}
const merge = []
this.tableData1.map(v => {
merge.push({
图号: v.图号,
名称: v.名称,
规格: v.规格,
数量: Number(v.数量),
单价: this.hasTax === '含税' ? v.含税单价 : v.未税单价,
合计: (Number(v.数量) * (this.hasTax === '含税' ? Number(v.含税单价) : Number(v.未税单价))).toFixed(2),
交货期: v.交货期 ? v.交货期.split(' ')[0] : '',
备注: v.备注
})
})
let mergeData = []
mergeData = groupBy(merge, ['图号', '名称', '规格', '单价', '合计', '交货期', '备注'], (mergeData, v) => {
mergeData = mergeData || 0
mergeData += v.数量
return mergeData
})
console.log(mergeData)
// 放入新数据
const tr = []
for (let i = 0; i < this.tableData1.length; i++) {
for (let i = 0; i < mergeData.length; i++) {
tr[i] = document.createElement('tr')
tr[i].setAttribute('class', 'tableData')
tr[i].innerHTML = '<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>'
@@ -562,16 +598,18 @@ export default {
this.actualTotal += Number(this.tableData1[j].含税总额)
this.untaxTotal += Number(this.tableData1[j].未税总额)
this.taxTotal += Number(this.tableData1[j].含税总额)
}
for (let j = 0; j < mergeData.length; j++) {
if (document.getElementsByClassName('tableData')[j]) {
document.getElementsByClassName('tableData')[j].children[0].innerHTML = j + 1
document.getElementsByClassName('tableData')[j].children[3].innerHTML = this.tableData1[j].图号
document.getElementsByClassName('tableData')[j].children[4].innerHTML = this.tableData1[j].名称
document.getElementsByClassName('tableData')[j].children[5].innerHTML = this.tableData1[j].规格
document.getElementsByClassName('tableData')[j].children[6].innerHTML = this.tableData1[j].数量
this.hasTax === '含税' ? document.getElementsByClassName('tableData')[j].children[7].innerHTML = this.tableData1[j].含税单价 : document.getElementsByClassName('tableData')[j].children[7].innerHTML = this.tableData1[j].未税单价
document.getElementsByClassName('tableData')[j].children[8].innerHTML = (Number(document.getElementsByClassName('tableData')[j].children[7].innerHTML) * Number(this.tableData1[j].数量)).toFixed(2)
this.tableData1[j].交货期 ? document.getElementsByClassName('tableData')[j].children[9].innerHTML = this.tableData1[j].交货期.split(' ')[0] : document.getElementsByClassName('tableData')[j].children[9].innerHTML = ''
document.getElementsByClassName('tableData')[j].children[10].innerHTML = this.tableData1[j].备注
document.getElementsByClassName('tableData')[j].children[3].innerHTML = mergeData[j].图号
document.getElementsByClassName('tableData')[j].children[4].innerHTML = mergeData[j].名称
document.getElementsByClassName('tableData')[j].children[5].innerHTML = mergeData[j].规格
document.getElementsByClassName('tableData')[j].children[6].innerHTML = mergeData[j].数量
document.getElementsByClassName('tableData')[j].children[7].innerHTML = mergeData[j].单价
document.getElementsByClassName('tableData')[j].children[8].innerHTML = (Number(mergeData[j].数量) * Number(mergeData[j].单价)).toFixed(2)
document.getElementsByClassName('tableData')[j].children[9].innerHTML = mergeData[j].交货期
document.getElementsByClassName('tableData')[j].children[10].innerHTML = mergeData[j].备注
}
}
this.actualTotal = this.actualTotal.toFixed(2)