From 9ff37964b5a3a182259a6f363160bc9bbb0c8ba9 Mon Sep 17 00:00:00 2001 From: chenjianan Date: Mon, 27 May 2019 15:56:05 +0800 Subject: [PATCH] merge contract --- src/utils/tool.js | 28 +++++++ .../CreatePurchaseContract/index.vue | 78 ++++++++++++++----- 2 files changed, 86 insertions(+), 20 deletions(-) diff --git a/src/utils/tool.js b/src/utils/tool.js index d4a25900..ceb27a45 100644 --- a/src/utils/tool.js +++ b/src/utils/tool.js @@ -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 +} diff --git a/src/views/PurchasingCenter/CreatePurchaseContract/index.vue b/src/views/PurchasingCenter/CreatePurchaseContract/index.vue index 9df90cfd..68b91821 100644 --- a/src/views/PurchasingCenter/CreatePurchaseContract/index.vue +++ b/src/views/PurchasingCenter/CreatePurchaseContract/index.vue @@ -92,9 +92,14 @@ style="width:100%"/> - + + + + @@ -102,9 +107,14 @@ {{ scope.row.名称 }} + + + @@ -115,13 +125,13 @@ @@ -134,6 +144,11 @@ {{ hasTax==='含税' ? scope.row.含税总额 = (Number(scope.row.数量) * Number(scope.row.含税单价)).toFixed(2) : scope.row.含税总额 = (scope.row.未税总额 * (1+taxRate)).toFixed(2) }} + + + @@ -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 { -
-未税合计:

-税额:

-含税总价(税率):

-优惠后含税总价:

+未税合计:
+税额:
+含税总价(税率):
+优惠后含税总价: ` }, 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 = '' @@ -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)