merge contract
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user