merge contract
This commit is contained in:
@@ -105,3 +105,31 @@ export function sleep(time) {
|
|||||||
setTimeout(resolve, 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%"/>
|
style="width:100%"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="名称" align="center" min-width="100">
|
<el-table-column label="名称" align="center" min-width="100">
|
||||||
@@ -102,9 +107,14 @@
|
|||||||
{{ scope.row.名称 }}
|
{{ scope.row.名称 }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<el-table-column label="规格" align="center" min-width="150">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.规格 }}
|
{{ scope.row.规格 ? scope.row.规格 : '—' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="数量" align="center" width="80">
|
<el-table-column label="数量" align="center" width="80">
|
||||||
@@ -115,13 +125,13 @@
|
|||||||
<el-table-column v-show="hasTax==='未税'" label="单价(未税)" align="center" width="120">
|
<el-table-column v-show="hasTax==='未税'" label="单价(未税)" align="center" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-show="hasTax==='未税'" v-model="scope.row.未税单价" size="mini" style="width:100%"/>
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column v-show="hasTax==='含税'" label="单价(含税)" align="center" width="120">
|
<el-table-column v-show="hasTax==='含税'" label="单价(含税)" align="center" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-show="hasTax==='含税'" v-model="scope.row.含税单价" size="mini" style="width:100%"/>
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="总额(未税)" align="center" min-width="100" prop="未税总额">
|
<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) }}
|
{{ hasTax==='含税' ? scope.row.含税总额 = (Number(scope.row.数量) * Number(scope.row.含税单价)).toFixed(2) : scope.row.含税总额 = (scope.row.未税总额 * (1+taxRate)).toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="备注" align="center" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.备注 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-tooltip content="一键删除交货期" placement="right">
|
<el-tooltip content="一键删除交货期" placement="right">
|
||||||
<el-button type="danger" icon="el-icon-date" size="small" @click="deleteAllDate()"/>
|
<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 { initSupplier, searchInquirySheet, searchSheetContract, doneContract, searchBaseInfo } from '@/api/PurchasingCenter/CreatePurchaseContract'
|
||||||
import { convertCurrency } from '@/vendor/int2Chinese'
|
import { convertCurrency } from '@/vendor/int2Chinese'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
import { sleep } from '@/utils/tool'
|
import { sleep, groupBy } from '@/utils/tool'
|
||||||
import $ from 'jquery'
|
import $ from 'jquery'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -337,6 +352,8 @@ export default {
|
|||||||
searchSheetContract(this.contractNumValue).then(response => {
|
searchSheetContract(this.contractNumValue).then(response => {
|
||||||
for (let i = 0; i < response.data.length; i++) {
|
for (let i = 0; i < response.data.length; i++) {
|
||||||
this.tableData1.push({
|
this.tableData1.push({
|
||||||
|
机床图号: response.data[i].机床图号,
|
||||||
|
组号: response.data[i].组号,
|
||||||
组件零件流水号: response.data[i].组件零件流水号,
|
组件零件流水号: response.data[i].组件零件流水号,
|
||||||
组件零件基本件流水号: response.data[i].组件零件基本件流水号,
|
组件零件基本件流水号: 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>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<span>未税合计:</span><span id="untaxTotal"></span><span>元</span><br>
|
||||||
<span>未税合计:</span><span id="untaxTotal"></span><span>元</span><br><br>
|
<span>税额:</span><span id="tax"></span><br>
|
||||||
<span>税额:</span><span id="tax"></span><br><br>
|
<span>含税总价(税率<span id="taxRate"></span>):</span><span id="taxTotal"></span><span>元</span><br>
|
||||||
<span>含税总价(税率<span id="taxRate"></span>):</span><span id="taxTotal"></span><span>元</span><br><br>
|
<span>优惠后含税总价:</span><span class="actualTotal"></span><span>元</span>
|
||||||
<span>优惠后含税总价:</span><span class="actualTotal"></span><span>元</span><br><br>
|
|
||||||
`
|
`
|
||||||
},
|
},
|
||||||
async editContract() { // 选择一个询价单,整成合同明细
|
async editContract() { // 选择一个询价单,整成合同明细
|
||||||
@@ -546,9 +562,29 @@ export default {
|
|||||||
parent.removeChild(children[i])
|
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 = []
|
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] = document.createElement('tr')
|
||||||
tr[i].setAttribute('class', 'tableData')
|
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>'
|
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.actualTotal += Number(this.tableData1[j].含税总额)
|
||||||
this.untaxTotal += Number(this.tableData1[j].未税总额)
|
this.untaxTotal += Number(this.tableData1[j].未税总额)
|
||||||
this.taxTotal += Number(this.tableData1[j].含税总额)
|
this.taxTotal += Number(this.tableData1[j].含税总额)
|
||||||
|
}
|
||||||
|
for (let j = 0; j < mergeData.length; j++) {
|
||||||
if (document.getElementsByClassName('tableData')[j]) {
|
if (document.getElementsByClassName('tableData')[j]) {
|
||||||
document.getElementsByClassName('tableData')[j].children[0].innerHTML = j + 1
|
document.getElementsByClassName('tableData')[j].children[0].innerHTML = j + 1
|
||||||
document.getElementsByClassName('tableData')[j].children[3].innerHTML = this.tableData1[j].图号
|
document.getElementsByClassName('tableData')[j].children[3].innerHTML = mergeData[j].图号
|
||||||
document.getElementsByClassName('tableData')[j].children[4].innerHTML = this.tableData1[j].名称
|
document.getElementsByClassName('tableData')[j].children[4].innerHTML = mergeData[j].名称
|
||||||
document.getElementsByClassName('tableData')[j].children[5].innerHTML = this.tableData1[j].规格
|
document.getElementsByClassName('tableData')[j].children[5].innerHTML = mergeData[j].规格
|
||||||
document.getElementsByClassName('tableData')[j].children[6].innerHTML = this.tableData1[j].数量
|
document.getElementsByClassName('tableData')[j].children[6].innerHTML = mergeData[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[7].innerHTML = mergeData[j].单价
|
||||||
document.getElementsByClassName('tableData')[j].children[8].innerHTML = (Number(document.getElementsByClassName('tableData')[j].children[7].innerHTML) * Number(this.tableData1[j].数量)).toFixed(2)
|
document.getElementsByClassName('tableData')[j].children[8].innerHTML = (Number(mergeData[j].数量) * Number(mergeData[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[9].innerHTML = mergeData[j].交货期
|
||||||
document.getElementsByClassName('tableData')[j].children[10].innerHTML = this.tableData1[j].备注
|
document.getElementsByClassName('tableData')[j].children[10].innerHTML = mergeData[j].备注
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.actualTotal = this.actualTotal.toFixed(2)
|
this.actualTotal = this.actualTotal.toFixed(2)
|
||||||
|
|||||||
Reference in New Issue
Block a user