diff --git a/src/views/purchase/processing/orderProcessing.vue b/src/views/purchase/processing/orderProcessing.vue index 1da0188..b03ccbd 100644 --- a/src/views/purchase/processing/orderProcessing.vue +++ b/src/views/purchase/processing/orderProcessing.vue @@ -1,11 +1,19 @@ @@ -42,16 +154,30 @@ export default { name: 'PurchaseOrderConfirmationList', data() { return { + QRvis: false, url: { getPurchaseSupplier: "Try/purchaseSupplier/list", - getdata: "/Try/purchaseRequest/receivedList", + getdata: "/Try/purchaseOrderConfirmation/joinList", receiveNOurl: "/Try/purchaseOrderConfirmation/cancelReceiving", + editUrl: '/Try/purchaseOrderConfirmation/edit', + finshUrl: '/Try/purchaseOrderConfirmation/finish' }, activeKey: [], username: Vue.ls.get(USER_INFO).username, sysOrgCode: Vue.ls.get(USER_INFO).orgCode, supplierList: [], tableData: [], + dataShow: false, + arrange: false, + + classifyData: [], + classSupplier: [], + selectedSuppliers: '', + classFood: [], + selectedFoods: [], + poenNmber: '', + + QRcode: '', } }, computed: { @@ -64,12 +190,43 @@ export default { receiveNOurl: function () { return `${window._CONFIG['domianURL']}/${this.url.receiveNOurl}`; }, + editUrl: function () { + return `${window._CONFIG['domianURL']}/${this.url.editUrl}`; + }, + finshUrl: function () { + return `${window._CONFIG['domianURL']}/${this.url.finshUrl}`; + }, }, created() { this.getSupplierData(); this.getTableData(); }, methods: { + finish(item) { + let newItem = Object.assign({}, item); + newItem.procurementContent = JSON.stringify(newItem.procurementContent); + if (newItem.supplierSelection != null && newItem.supplierSelection != '') { + newItem.supplierSelection = JSON.stringify(newItem.supplierSelection); + } else { + newItem.supplierSelection = ''; + } + // 新增procurementLog为 + newItem.procurementLog = { + '0': newItem.supplierSelection + } + newItem.procurementLog = JSON.stringify(newItem.procurementLog); + //将newItem将requirementNumber修改associationNumber + newItem.associationNumber = newItem.requirementNumber; + postAction(this.finshUrl, newItem).then(res => { + //如果为200,则获取数据 + if (res.code == 200) { + this.$message.success('完成订单成功'); + this.getTableData(); + } else { + this.$message.error(res.message); + } + }) + }, getSupplierData() { getAction(this.getPurchaseSupplier).then(res => { //如果为200,则获取数据 @@ -81,14 +238,28 @@ export default { }) }, getTableData() { - getAction(this.getdata,).then(res => { + this.dataShow = false; + getAction(this.getdata).then(res => { //如果为200,则获取数据 if (res.code == 200) { this.tableData = res.result.records; - this.activeKey = [0]; - this.tableData.forEach(item => { - item.procurementContent = JSON.parse(item.procurementContent); - }); + //判断数据是否为空 + if (this.tableData.length == 0) { + this.dataShow = false; + } else { + this.activeKey = ['']; + //将采购详情转化为对象 + this.tableData.forEach(item => { + item.procurementContent = JSON.parse(item.procurementContent); + }); + //将supplierSelection转化为对象 + this.tableData.forEach(item => { + if (item.supplierSelection != null && item.supplierSelection != '') { + item.supplierSelection = JSON.parse(item.supplierSelection); + } + }); + this.dataShow = true; + } } else { this.$message.error(res.message); } @@ -97,7 +268,8 @@ export default { receiveNO(item) { //深拷贝一份item let newItem = Object.assign({}, item); - newItem.procurementContent = String(newItem.procurementContent); + newItem.procurementContent = JSON.stringify(newItem.procurementContent); + newItem.supplierSelection = JSON.stringify(newItem.supplierSelection); postAction(this.receiveNOurl, newItem).then(res => { //如果为200,则获取数据 if (res.code == 200) { @@ -108,7 +280,201 @@ export default { } }) }, - } + Refresh() { + this.getSupplierData(); + this.getTableData(); + }, + downloadFile(text) { + if (!text) { + this.$message.warning("未知的文件") + return; + } + if (text.indexOf(",") > 0) { + text = text.substring(0, text.indexOf(",")) + } + let url = this.getFileAccessHttpUrl(text) + window.open(url); + }, + getFileAccessHttpUrl(avatar, subStr) { + if (!subStr) subStr = 'http' + try { + if (avatar && avatar.startsWith(subStr)) { + return avatar; + } else { + if (avatar && avatar.length > 0 && avatar.indexOf('[') == -1) { + return window._CONFIG['staticDomainURL'] + "/" + avatar; + } + } + } catch (err) { + return; + } + }, + generateOrder(item) { + this.$message.success('生成订单成功'); + }, + //整理弹窗的确认提交 + arrangeOk() { + this.classifyData.forEach((item, index) => { + //遍历item中的goods + item.goods.forEach((item2, index2) => { + //如果有一项为空,则删除这一项 + let flag1 = item2.name == null || item2.name == '' || item2.name == undefined; + let flag2 = item2.number == null || item2.number == '' || item2.number == undefined; + let flag3 = item2.unit == null || item2.unit == '' || item2.unit == undefined; + if (flag1 && flag2 && flag3) { + item.goods.splice(index2, 1); + } + }); + }); + + let data = { + associationNumber: this.poenNmber, + supplierSelection: JSON.stringify(this.classifyData), + } + if (data.supplierSelection == '[]') { + data.supplierSelection = ''; + } + postAction(this.editUrl, data).then(res => { + if (res.code == 200) { + this.$message.success('整理成功'); + this.arrange = false; + this.getTableData(); + //将相关数据清空 + this.classifyData = []; + this.classSupplier = []; + this.classFood = []; + this.selectedSuppliers = ''; + this.selectedFoods = []; + this.poenNmber = ''; + } else { + this.$message.error(res.message); + } + }) + }, + //取消整理 + arrangeCancel() { + this.arrange = false; + //将相关数据清空 + this.classifyData = []; + this.classSupplier = []; + this.classFood = []; + this.selectedSuppliers = ''; + this.selectedFoods = []; + this.poenNmber = ''; + }, + //打开整理弹窗,整理弹窗的数据初始化 + arrangeOpen(item) { + //获取供应商数据 + this.classifyData = []; + this.classSupplier = []; + this.supplierList.forEach(item => { + this.classSupplier.push({ + id: item.id, + name: item.name, + }); + }); + this.classSupplier = Object.assign([], this.classSupplier); + //获取物品数据 + this.classFood = Object.assign([], item.procurementContent); + this.poenNmber = item.requirementNumber; + //判断supplierSelection是否为空或者null + if (item.supplierSelection == null || item.supplierSelection == '') { + this.arrange = true; + } + else { + //将其转化为对象 + let newData = JSON.parse(JSON.stringify(item.supplierSelection)) + //将被选择的供应商从classSupplier中删除 + newData.forEach(item => { + this.classSupplier.forEach((item2, index2) => { + if (item2.id == item.supplierID) { + this.classSupplier.splice(index2, 1); + } + }); + }); + //将其添加到classifyData中 + this.classifyData = JSON.parse(JSON.stringify(newData)) + this.arrange = true; + } + }, + //以下为整理的相关操作 + delSupplier(item) { + //搜索ID将这一行从classifyData中删除 + this.classifyData.forEach((item2, index2) => { + if (item2.supplierID == item.supplierID) { + this.classifyData.splice(index2, 1); + } + }); + //将其添加到classSupplier中 + this.classSupplier.push({ + id: item.supplierID, + name: item.supplier, + }); + }, + addSupplier() { + //如果选中的供应商为空,则不添加 + if (this.selectedSuppliers == '') { + this.$message.warning('请选择供应商'); + return; + } + let selectedID = this.selectedSuppliers; + let selectedSupplier = {}; + this.classSupplier.forEach((item, index) => { + if (item.id == selectedID) { + selectedSupplier = Object.assign({}, item); + this.classSupplier.splice(index, 1); + } + }); + this.classifyData.push({ + supplierID: selectedSupplier.id, + supplier: selectedSupplier.name, + goods: [{ + name: '', + number: '', + unit: '', + } + ], + }); + //将选中制空 + this.selectedSuppliers = ''; + }, + addRow(item, index) { + this.classifyData[index].goods.push({ + name: '', + number: '', + unit: '', + }); + }, + removeRow(index1, index2) { + this.classifyData[index1].goods.splice(index2, 1); + }, + importFoods(index) { + let selectedFoods = this.selectedFoods; + let selectedGoods = []; + this.classFood.forEach(item => { + selectedFoods.forEach(item2 => { + if (item.name == item2) { + selectedGoods.push(item); + } + }); + }); + //push而不是赋值,因为要保留原来的数据 + selectedGoods.forEach(item => { + this.classifyData[index].goods.push({ + name: item.name, + number: item.number, + unit: item.unit, + }); + }); + this.selectedFoods = []; + }, + GenerateQRcode(item) { + this.QRvis = true; + } + }, } - \ No newline at end of file + + + + diff --git a/src/views/purchase/progress/procurementProgress.vue b/src/views/purchase/progress/procurementProgress.vue new file mode 100644 index 0000000..10c1c3f --- /dev/null +++ b/src/views/purchase/progress/procurementProgress.vue @@ -0,0 +1,184 @@ + + + \ No newline at end of file diff --git a/src/views/purchase/receiving/PurchaseOrderConfirmationList.vue b/src/views/purchase/receiving/PurchaseOrderConfirmationList.vue index 31ee1f8..3c471ce 100644 --- a/src/views/purchase/receiving/PurchaseOrderConfirmationList.vue +++ b/src/views/purchase/receiving/PurchaseOrderConfirmationList.vue @@ -1,6 +1,9 @@