387 lines
15 KiB
Java
387 lines
15 KiB
Java
import { VALIDATE_NO_PASSED, validateFormAndTables } from '@/utils/JEditableTableUtil'
|
||
import {findBySelectSup,findBySelectCus,findBySelectRetail,getMaterialByBarCode,findStockByDepotAndBarCode,getAccount,getPersonByNumType} from '@/api/api'
|
||
import { getAction,putAction } from '@/api/manage'
|
||
import { getMpListShort, getNowFormatDateTime } from "@/utils/util"
|
||
import Vue from 'vue'
|
||
|
||
export const BillModalMixin = {
|
||
data() {
|
||
return {
|
||
action: '',
|
||
manyAccountBtnStatus: false,
|
||
supList: [],
|
||
cusList: [],
|
||
retailList: [],
|
||
personList: {
|
||
options: [],
|
||
value: ''
|
||
},
|
||
depotList: [],
|
||
accountList: [],
|
||
accountIdList: [],
|
||
accountMoneyList: [],
|
||
billUnitPirce: '',
|
||
spans: {
|
||
labelCol1: {span: 2},
|
||
wrapperCol1: {span: 22},
|
||
//1_5: 分为1.5列(相当于占了2/3)
|
||
labelCol1_5: { span: 3 },
|
||
wrapperCol1_5: { span: 21 },
|
||
labelCol2: {span: 4},
|
||
wrapperCol2: {span: 20},
|
||
labelCol3: {span: 6},
|
||
wrapperCol3: {span: 18},
|
||
labelCol6: {span: 12},
|
||
wrapperCol6: {span: 12}
|
||
},
|
||
};
|
||
},
|
||
created () {
|
||
},
|
||
computed: {
|
||
readOnly: function() {
|
||
return this.action !== "add" && this.action !== "edit";
|
||
}
|
||
},
|
||
methods: {
|
||
addInit(amountNum) {
|
||
getAction('/sequence/buildNumber').then((res) => {
|
||
if (res && res.code === 200) {
|
||
this.form.setFieldsValue({'number':amountNum + res.data.defaultNumber})
|
||
}
|
||
})
|
||
this.$nextTick(() => {
|
||
this.form.setFieldsValue({'operTime':getNowFormatDateTime(), 'discount': 0,
|
||
'discountMoney': 0, 'discountLastMoney': 0, 'otherMoney': 0, 'changeAmount': 0, 'debt': 0})
|
||
})
|
||
this.$nextTick(() => {
|
||
getAccount({}).then((res)=>{
|
||
if(res && res.code === 200) {
|
||
for (const item of res.data.accountList) {
|
||
if(item.isDefault){
|
||
this.form.setFieldsValue({'accountId': item.id})
|
||
}
|
||
}
|
||
}
|
||
})
|
||
})
|
||
this.accountIdList = []
|
||
this.accountMoneyList = []
|
||
this.manyAccountBtnStatus = false
|
||
},
|
||
initSupplier() {
|
||
let that = this;
|
||
findBySelectSup({}).then((res)=>{
|
||
if(res) {
|
||
that.supList = res;
|
||
}
|
||
});
|
||
},
|
||
initCustomer() {
|
||
let that = this;
|
||
findBySelectCus({}).then((res)=>{
|
||
if(res) {
|
||
that.cusList = res;
|
||
}
|
||
});
|
||
},
|
||
initRetail() {
|
||
let that = this;
|
||
findBySelectRetail({}).then((res)=>{
|
||
if(res) {
|
||
that.retailList = res;
|
||
}
|
||
});
|
||
},
|
||
initSalesman() {
|
||
let that = this;
|
||
getPersonByNumType({type:1}).then((res)=>{
|
||
if(res) {
|
||
that.personList.options = res;
|
||
}
|
||
});
|
||
},
|
||
initDepot() {
|
||
let that = this;
|
||
getAction('/depot/findDepotByCurrentUser').then((res) => {
|
||
if(res.code === 200){
|
||
let arr = res.data
|
||
for(let item of that.materialTable.columns){
|
||
if(item.key == 'depotId' || item.key == 'anotherDepotId') {
|
||
item.options = []
|
||
for(let i=0; i<arr.length; i++) {
|
||
let depotInfo = {};
|
||
depotInfo.value = arr[i].id + '' //注意-此处value必须为字符串格式
|
||
depotInfo.text = arr[i].depotName
|
||
depotInfo.title = arr[i].depotName
|
||
item.options.push(depotInfo)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
})
|
||
},
|
||
initAccount(){
|
||
let that = this;
|
||
getAccount({}).then((res)=>{
|
||
if(res && res.code === 200) {
|
||
let list = res.data.accountList
|
||
list.splice(0,0,{id: 0, name: '多账户'})
|
||
that.accountList = list
|
||
}
|
||
})
|
||
},
|
||
handleManyAccount(){
|
||
this.selectAccount(0)
|
||
},
|
||
selectAccount(value){
|
||
if(value === 0) { //多账户
|
||
this.$refs.manyAccountModalForm.edit(this.accountIdList, this.accountMoneyList)
|
||
this.$refs.manyAccountModalForm.title = "多账户结算"
|
||
this.manyAccountBtnStatus = true
|
||
} else {
|
||
this.accountIdList = []
|
||
this.accountMoneyList = []
|
||
this.manyAccountBtnStatus = false
|
||
}
|
||
},
|
||
manyAccountModalFormOk(idList, moneyList, allPrice) {
|
||
this.accountIdList = idList
|
||
this.accountMoneyList = moneyList
|
||
let discountLastMoney = this.form.getFieldValue('discountLastMoney')-0
|
||
let otherMoney = this.form.getFieldValue('otherMoney')-0
|
||
let debt = (discountLastMoney + otherMoney - allPrice).toFixed(2)
|
||
this.$nextTick(() => {
|
||
this.form.setFieldsValue({'changeAmount':allPrice, 'debt':debt})
|
||
});
|
||
},
|
||
onAdded(event) {
|
||
const { row, target } = event
|
||
getAction('/depot/findDepotByCurrentUser').then((res) => {
|
||
if (res.code === 200) {
|
||
let arr = res.data
|
||
for (let i = 0; i < arr.length; i++) {
|
||
if(arr[i].isDefault){
|
||
target.setValues([{rowKey: row.id, values: {depotId: arr[i].id+''}}])
|
||
}
|
||
}
|
||
}
|
||
})
|
||
},
|
||
//单元值改变一个字符就触发一次
|
||
onValueChange(event) {
|
||
let that = this
|
||
const { type, row, column, value, target } = event
|
||
let param,operNumber,unitPrice,taxUnitPrice,allPrice,taxRate,taxMoney,taxLastMoney
|
||
switch(column.key) {
|
||
case "depotId":
|
||
if(row.barCode){
|
||
that.getStockByDepotBarCode(row, target)
|
||
}
|
||
break;
|
||
case "barCode":
|
||
param = {
|
||
barCode: value,
|
||
mpList: getMpListShort(Vue.ls.get('materialPropertyList')), //扩展属性
|
||
prefixNo: this.prefixNo
|
||
}
|
||
getMaterialByBarCode(param).then((res) => {
|
||
if (res && res.code === 200) {
|
||
let mList = res.data
|
||
if (value.indexOf(',') > -1) {
|
||
//多个条码
|
||
let mArr = this.materialTable.dataSource
|
||
for (let i = 0; i < mList.length; i++) {
|
||
let mInfo = mList[i]
|
||
let mObj = this.parseInfoToObj(mInfo)
|
||
mObj.depotId = mInfo.depotId
|
||
mObj.stock = mInfo.stock
|
||
mArr.push(mObj)
|
||
}
|
||
let taxLastMoneyTotal = 0
|
||
for (let j = 0; j < mArr.length; j++) {
|
||
taxLastMoneyTotal += mArr[j].taxLastMoney
|
||
}
|
||
this.materialTable.dataSource = mArr
|
||
target.statisticsColumns.taxLastMoney = taxLastMoneyTotal
|
||
that.autoChangePrice(target)
|
||
} else {
|
||
//单个条码
|
||
let mArr = []
|
||
for (let i = 0; i < mList.length; i++) {
|
||
let mInfo = mList[i]
|
||
let mObj = {
|
||
rowKey: row.id,
|
||
values: this.parseInfoToObj(mInfo)
|
||
}
|
||
mArr.push(mObj)
|
||
}
|
||
target.setValues(mArr);
|
||
that.getStockByDepotBarCode(row, target)
|
||
target.recalcAllStatisticsColumns()
|
||
that.autoChangePrice(target)
|
||
}
|
||
}
|
||
});
|
||
break;
|
||
case "operNumber":
|
||
operNumber = value-0
|
||
taxRate = row.taxRate-0 //税率
|
||
unitPrice = row.unitPrice-0 //单价
|
||
taxUnitPrice = row.taxUnitPrice-0
|
||
allPrice = (unitPrice*operNumber).toFixed(2)-0
|
||
taxMoney =((taxRate*0.01)*allPrice).toFixed(2)-0
|
||
taxLastMoney = (allPrice + taxMoney).toFixed(2)-0
|
||
target.setValues([{rowKey: row.id, values: {allPrice: allPrice, taxMoney: taxMoney, taxLastMoney: taxLastMoney}}])
|
||
target.recalcAllStatisticsColumns()
|
||
that.autoChangePrice(target)
|
||
break;
|
||
case "unitPrice":
|
||
operNumber = row.operNumber-0 //数量
|
||
unitPrice = value-0 //单价
|
||
taxRate = row.taxRate-0 //税率
|
||
taxUnitPrice = (unitPrice*(1+taxRate*0.01)).toFixed(2)-0
|
||
allPrice = (unitPrice*operNumber).toFixed(2)-0
|
||
taxMoney =((taxRate*0.01)*allPrice).toFixed(2)-0
|
||
taxLastMoney = (allPrice + taxMoney).toFixed(2)-0
|
||
target.setValues([{rowKey: row.id, values: {taxUnitPrice: taxUnitPrice, allPrice: allPrice, taxMoney: taxMoney, taxLastMoney: taxLastMoney}}])
|
||
target.recalcAllStatisticsColumns()
|
||
that.autoChangePrice(target)
|
||
break;
|
||
case "allPrice":
|
||
operNumber = row.operNumber-0 //数量
|
||
taxRate = row.taxRate-0 //税率
|
||
allPrice = value-0
|
||
unitPrice = (allPrice/operNumber).toFixed(2)-0 //单价
|
||
taxUnitPrice =(unitPrice*(1+taxRate*0.01)).toFixed(2)-0
|
||
taxMoney =((taxRate*0.01)*allPrice).toFixed(2)-0
|
||
taxLastMoney = (allPrice + taxMoney).toFixed(2)-0
|
||
target.setValues([{rowKey: row.id, values: {unitPrice: unitPrice, taxUnitPrice: taxUnitPrice, taxMoney: taxMoney, taxLastMoney: taxLastMoney}}])
|
||
target.recalcAllStatisticsColumns()
|
||
that.autoChangePrice(target)
|
||
break;
|
||
case "taxRate":
|
||
operNumber = row.operNumber-0 //数量
|
||
allPrice = row.allPrice-0
|
||
unitPrice = row.unitPrice-0
|
||
taxRate = value-0 //税率
|
||
taxUnitPrice =(unitPrice*(1+taxRate*0.01)).toFixed(2)-0
|
||
taxMoney =((taxRate*0.01)*allPrice).toFixed(2)-0
|
||
taxLastMoney = (allPrice + taxMoney).toFixed(2)-0
|
||
target.setValues([{rowKey: row.id, values: {taxUnitPrice: taxUnitPrice, taxMoney: taxMoney, taxLastMoney: taxLastMoney}}])
|
||
target.recalcAllStatisticsColumns()
|
||
that.autoChangePrice(target)
|
||
break;
|
||
case "taxLastMoney":
|
||
operNumber = row.operNumber-0 //数量
|
||
taxLastMoney = value-0
|
||
taxRate = row.taxRate-0 //税率
|
||
taxUnitPrice = (taxLastMoney/operNumber).toFixed(2)-0
|
||
unitPrice = (taxUnitPrice/(1+taxRate*0.01)).toFixed(2)-0
|
||
allPrice = (unitPrice*operNumber).toFixed(2)-0
|
||
taxMoney =(taxLastMoney-allPrice).toFixed(2)-0
|
||
target.setValues([{rowKey: row.id, values: {unitPrice: unitPrice, taxUnitPrice: taxUnitPrice, allPrice: allPrice, taxMoney: taxMoney}}])
|
||
target.recalcAllStatisticsColumns()
|
||
that.autoChangePrice(target)
|
||
break;
|
||
}
|
||
},
|
||
//转为商品对象
|
||
parseInfoToObj(mInfo) {
|
||
return {
|
||
barCode: mInfo.mBarCode,
|
||
name: mInfo.name,
|
||
standard: mInfo.standard,
|
||
model: mInfo.model,
|
||
materialOther: mInfo.materialOther,
|
||
unit: mInfo.commodityUnit,
|
||
sku: mInfo.sku,
|
||
operNumber: 1,
|
||
unitPrice: mInfo.billPrice,
|
||
taxUnitPrice: mInfo.billPrice,
|
||
allPrice: mInfo.billPrice,
|
||
taxRate: 0,
|
||
taxMoney: 0,
|
||
taxLastMoney: mInfo.billPrice
|
||
}
|
||
},
|
||
//删除一行或多行的时候触发
|
||
onDeleted(ids, target) {
|
||
target.recalcAllStatisticsColumns()
|
||
this.autoChangePrice(target)
|
||
},
|
||
//根据仓库和条码查询库存
|
||
getStockByDepotBarCode(row, target){
|
||
findStockByDepotAndBarCode({ depotId: row.depotId, barCode: row.barCode }).then((res) => {
|
||
if (res && res.code === 200) {
|
||
target.setValues([{rowKey: row.id, values: {stock: res.data.stock}}])
|
||
target.recalcAllStatisticsColumns()
|
||
}
|
||
})
|
||
},
|
||
//改变优惠、本次付款、欠款的值
|
||
autoChangePrice(target) {
|
||
let allTaxLastMoney = target.statisticsColumns.taxLastMoney-0
|
||
let discount = this.form.getFieldValue('discount')-0
|
||
let otherMoney = this.form.getFieldValue('otherMoney')-0
|
||
let discountMoney = (discount*0.01*allTaxLastMoney).toFixed(2)-0
|
||
let discountLastMoney = (allTaxLastMoney-discountMoney).toFixed(2)-0
|
||
let changeAmountNew = (discountLastMoney + otherMoney).toFixed(2)-0
|
||
this.$nextTick(() => {
|
||
this.form.setFieldsValue({'discount':discount,'discountMoney':discountMoney,'discountLastMoney':discountLastMoney,
|
||
'changeAmount':changeAmountNew,'debt':0})
|
||
});
|
||
},
|
||
//改变优惠率
|
||
onKeyUpDiscount(e) {
|
||
const value = e.target.value-0
|
||
let discountMoney = this.form.getFieldValue('discountMoney')-0
|
||
let discountLastMoney = this.form.getFieldValue('discountLastMoney')-0
|
||
let otherMoney = this.form.getFieldValue('otherMoney')-0
|
||
let allTaxLastMoney = (discountMoney + discountLastMoney).toFixed(2)-0
|
||
let discountMoneyNew = (allTaxLastMoney*value*0.01).toFixed(2)-0
|
||
let discountLastMoneyNew = (allTaxLastMoney - discountMoneyNew).toFixed(2)-0
|
||
let changeAmountNew = (discountLastMoneyNew + otherMoney).toFixed(2)-0
|
||
this.$nextTick(() => {
|
||
this.form.setFieldsValue({'discountMoney':discountMoneyNew,'discountLastMoney':discountLastMoneyNew,
|
||
'changeAmount':changeAmountNew,'debt':0})
|
||
});
|
||
},
|
||
//改变付款优惠
|
||
onKeyUpDiscountMoney(e) {
|
||
const value = e.target.value-0
|
||
let discount = this.form.getFieldValue('discount')-0
|
||
let discountLastMoney = this.form.getFieldValue('discountLastMoney')-0
|
||
let otherMoney = this.form.getFieldValue('otherMoney')-0
|
||
if(discount !== 100) {
|
||
let allTaxLastMoney = (discountLastMoney/(1-discount/100)).toFixed(2)-0
|
||
let discountNew = (value/allTaxLastMoney*100).toFixed(2)-0
|
||
let discountLastMoneyNew = (allTaxLastMoney - value).toFixed(2)-0
|
||
let changeAmountNew = (discountLastMoneyNew + otherMoney).toFixed(2)-0
|
||
this.$nextTick(() => {
|
||
this.form.setFieldsValue({'discount':discountNew,'discountLastMoney':discountLastMoneyNew,
|
||
'changeAmount':changeAmountNew,'debt':0})
|
||
});
|
||
}
|
||
},
|
||
//其它费用
|
||
onKeyUpOtherMoney(e) {
|
||
const value = e.target.value-0
|
||
let discountLastMoney = this.form.getFieldValue('discountLastMoney')-0
|
||
let changeAmountNew = (discountLastMoney + value).toFixed(2)-0
|
||
this.$nextTick(() => {
|
||
this.form.setFieldsValue({'changeAmount':changeAmountNew, 'debt':0})
|
||
});
|
||
},
|
||
//改变本次付款
|
||
onKeyUpChangeAmount(e) {
|
||
const value = e.target.value-0
|
||
let discountLastMoney = this.form.getFieldValue('discountLastMoney')-0
|
||
let otherMoney = this.form.getFieldValue('otherMoney')-0
|
||
let debtNew = (discountLastMoney + otherMoney - value).toFixed(2)-0
|
||
this.$nextTick(() => {
|
||
this.form.setFieldsValue({'debt':debtNew})
|
||
});
|
||
}
|
||
}
|
||
} |