商享通oms管理后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1070 lines
41 KiB

<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<!-- 标题 -->
<div>{{title}}采购订单</div>
<!-- start 添加修改按钮 -->
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate">保存</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
<!-- end 添加修改按钮 -->
<!-- end 详情按钮 -->
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<!-- <div class="title">
<div>基础信息</div>
</div> -->
<el-row class="first_row">
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.deptName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item>
<el-date-picker v-model="formobj.createTime" type="date" class="addinputw addinputInfo"
value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 供应商</div>
<el-form-item prop="supplierName"> <el-select v-model="formobj.supplierName" filterable clearable
placeholder="请选择供应商" class="addinputw addinputInfo" @change="supplierNameSelect">
<el-option v-for="(item,index ) in supplierList" :key="index" :label="item.supplierName"
:value="item.sid">
</el-option>
</el-select></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 收货仓库</div>
<el-form-item prop="wareHouseName">
<el-select v-model="formobj.wareHouseName" placeholder="请选择收货仓库" class="addinputw addinputInfo"
@change="selectWarehouseName">
<el-option v-for="(item,index ) in warehouseList" :key="index" :label="item.warehouseName"
:value="item.sid" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 业务员</div>
<el-form-item prop="purchaserName">
<el-select v-model="formobj.purchaserName" filterable clearable placeholder="请选择业务员"
class="addinputw addinputInfo" @change="allOrgperSelect">
<el-option v-for="(item,index ) in allOrgperList" :key="index" :label="item.name" :value="item.sid">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="span-sty">银行账号</div>
<el-form-item prop="bankAccount"> <el-input class="addinputw addinputInfo"
v-model="formobj.purchaseBillAmount.bankAccount" clearable placeholder=""
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">货币类别</div>
<el-form-item prop="currencyValue">
<el-select v-model="formobj.purchaseBillAmount.currencyValue" placeholder="请选择货币类别"
class="addinputw addinputInfo" @change="selectCurrency">
<el-option v-for="(item,index) in currencyTypeList" :key="index" :label="item.dictValue"
:value="item.dictKey" />
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item> <el-input v-model="formobj.remarks" placeholder="" class="addinputw addinputInfo"
type="textarea" :rows="4" clearable /></el-form-item>
</el-col>
</el-row>
<div class="title titleOne" style="margin-top: 10px;">
<div>商品列表</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="goodsAdd()">添加</el-button>
</div>
<el-table v-loading="listLoading" :data="formobj.purchaseBillDetailList" border style="width: 100%;"
show-summary :summary-method="getSummaries">
<!-- <el-table-column fixed width="50" type="selection" align="center" /> -->
<el-table-column fixed width="80" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column fixed label="操作" wid align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="deleteGoods(scope.row)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="商品编码" prop="goodsSkuCode" width="150" align="center" />
<el-table-column label="商品名称" prop="goodsSkuTitle" width="150" align="center" />
<el-table-column label="商品规格" prop="goodsSkuOwnSpec" width="150" align="center" />
<el-table-column label="单位" prop="unit" width="120" align="center" />
<el-table-column label="采购数量" align="center" prop="count" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.count" clearable placeholder=""
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" @input="calculation(scope.row,'count',$event)" />
</template>
</el-table-column>
<el-table-column label="数量(pcs)" prop="pcsCount" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.pcsCount" clearable placeholder=""
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
</template>
</el-table-column>
<!-- <el-table-column label="数量(pcs)" prop="pcsNum" width="120" align="center" /> -->
<el-table-column label="吊牌价" prop="tagPrice" width="120" align="center" />
<!-- <el-table-column label="单价" prop="cost" width="120" align="center" /> -->
<el-table-column label="单价" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.cost" clearable placeholder=""
@input="calculation(scope.row,'cost',$event)"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</template>
</el-table-column>
<el-table-column label="折扣率(%)" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.discountRate" clearable placeholder=""
@input="calculation(scope.row,'count',$event)"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</template>
</el-table-column>
<el-table-column prop="discountPrice" label="折扣单价" width="120" align="center" />
<el-table-column prop="shareAmount" label="分摊金额" width="150" align="center" />
<el-table-column prop="amount" label="总价" width="120" align="center" />
<!-- <el-table-column prop="taxRate" label="税率" width="120" align="center" /> -->
<el-table-column label="税率(%)" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.taxRate" clearable placeholder=""
@input="calculation(scope.row,'count',$event)"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</template>
</el-table-column>
<el-table-column prop="unTaxPrice" label="未含税价" width="120" align="center" />
<el-table-column prop="taxAmount" label="总税额" width="120" align="center" />
<el-table-column prop="unTaxTotalAmount" label="未含总税价" width="120" align="center" />
<!-- <el-table-column prop="cycle" label="采购周期" width="120" align="center" /> -->
<el-table-column label="采购周期" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.cycle" clearable placeholder="" @input="computeDate(scope.row)"
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" /> </template>
</el-table-column>
<el-table-column prop="deliveryDate" label="预计到货日期" width="180" align="center" />
<!-- <el-table-column label="预计到货日期" align="center" min-width="250">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.deliveryDate" type="date" value-format="yyyy-MM-dd"
placeholder="选择日期" />
</template>
</el-table-column> -->
<!-- <el-table-column prop="manufactureDate" label="生产日期" width="120" align="center" /> -->
<el-table-column label="生产日期" align="center" min-width="250">
<template slot-scope="scope">
<el-date-picker v-model="scope.row.madeDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"
@change="manufactureDateChange(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="expireDate" label="过期日期" width="120" align="center" />
<el-table-column prop="batchNumber" label="批次号" width="200" align="center" />
<el-table-column prop="goodsNum" label="货号" width="120" align="center" />
<el-table-column label="备注" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.remarks" clearable placeholder="" />
</template>
</el-table-column>
</el-table>
<el-row class="first_row" style="margin-top: 10px;">
<el-col :span="8">
<div class="span-sty">采购运费</div>
<el-form-item prop="freight"> <el-input class="addinputw addinputInfo"
v-model="formobj.purchaseBillAmount.freight" clearable placeholder="" @change="computeShareAmount"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">运费分摊方式</div>
<el-form-item prop="freightShareTypeValue">
<el-select v-model="formobj.purchaseBillAmount.freightShareTypeValue" placeholder="请选择分摊方式"
class="addinputw addinputInfo" @change="selectFreightShareType">
<el-option v-for="(item,index ) in shareTypeList" :key="index" :label="item.dictValue"
:value="item.dictKey" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"> 结算账户</div>
<el-form-item prop="settleAccountValue">
<el-select v-model="formobj.purchaseBillAmount.settleAccountValue" filterable clearable
placeholder="请选择结算账户" class="addinputw addinputInfo" @change="selectSettleAccount">
<el-option v-for="(item,index ) in settlementList" :key="index" :label="item.dictValue"
:value="item.dictKey" />
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他费用</div>
<el-form-item prop="otherAmount"> <el-input class="addinputw addinputInfo"
v-model="formobj.purchaseBillAmount.otherAmount" clearable placeholder="" @change="computeShareAmount"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">其他费用分摊方式</div>
<el-form-item prop="otherShareTypeValue">
<el-select v-model="formobj.purchaseBillAmount.otherShareTypeValue" placeholder="请选择分摊方式"
class="addinputw addinputInfo" @change="selectOtherShareType">
<el-option v-for="(item,index ) in shareTypeList" :key="index" :label="item.dictValue"
:value="item.dictKey" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预付金额</div>
<el-form-item prop="prepayment"> <el-input class="addinputw addinputInfo"
v-model="formobj.purchaseBillAmount.prepayment" clearable placeholder=""
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item prop="imgList">
<upload-img ref="uploadImg" class="addinputw" v-model="imgList" :limit="50" bucket="map"
:upload-data="{ type: '0001' }" @change="backData2" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!-- 选择商品 -->
<chooseproducts v-show="viewState == 2" ref="divSp" @backData="backData" @doback="resetState" />
</div>
</template>
<script>
import req from '@/api/purchase/purchaseOrder.js'
import chooseproducts from './relation/chooseproducts'
import {
choiceSupplierInfo,
getWarehouses,
selAllByOrgSidPath,
typeValues
} from '@/api/Common/dictcommons'
import uploadImg from '@/components/uploadFile/uploadImg'
import {
getCurrentDate
} from '@/utils/index.js'
export default {
components: {
chooseproducts,
uploadImg
},
data() {
return {
title: "【新增】",
viewState: 1,
listLoading: false,
submitdisabled: false,
formobj: {
"sid": "",
"remarks": "",
"createTime": getCurrentDate(),
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"sourceBillNo": "",
"billNo": "",
"purchaseTypeKey": "",
"purchaseTypeValue": "",
"purchaseReasonKey": "",
"purchaseReasonValue": "",
"payTypeKey": "",
"payTypeValue": "",
"supplierSid": "",
"supplierName": "",
"supplierPhone": "",
"purchaserSid": "",
"purchaserName": "",
"deliveryDate": "",
"wareHouseSid": "",
"wareHouseName": "",
"deptSid": window.sessionStorage.getItem('defaultDeptSid'),
"deptName": window.sessionStorage.getItem('defaultDeptName'),
"useOrgSid": window.sessionStorage.getItem('orgSid'),
"createOrgSid": window.sessionStorage.getItem('defaultDeptSid'),
"orgPath": window.sessionStorage.getItem('orgSidPath'),
"purchaseBillAmount": {
"sid": "",
"billSid": "",
"errorAmount": "",
"discountAmount": "",
"payableAmount": "",
"freight": "",
"freightShareTypeKey": "",
"freightShareTypeValue": "",
"otherAmount": "",
"otherShareTypeKey": "",
"otherShareTypeValue": "",
"settleAccountKey": "",
"settleAccountValue": "",
"prepayment": "",
"paymentTerm": "",
"bankName": "",
"bankAccountName": "",
"bankAccount": "",
"currencyKey": "",
"currencyValue": ""
},
"purchaseBillExtend": {
"sid": "",
"billSid": "",
"logisticsNum": "",
"productProgress": "",
"receiveStateKey": "",
"receiveStateValue": "",
"deliveryStateKey": "",
"deliveryStateValue": ""
},
"purchaseBillDetailList": [],
"purchaseAppendixList": [
]
},
supplierList: [],
warehouseList: [],
allOrgperList: [],
currencyTypeList: [],
settlementList: [],
shareTypeList: [],
rules: {
createTime: [{
required: true,
message: '请选择日期',
trigger: 'change'
}],
supplierName: [{
required: true,
message: '请选择供应商',
trigger: 'change'
}],
wareHouseName: [{
required: true,
message: '请选择收货仓库',
trigger: 'change'
}],
purchaserName: [{
required: true,
message: '请选择业务员',
trigger: 'change'
}],
},
imgList: [],
allCount: 0,
allPcsNum: 0,
allShareAmount: 0,
allAmount: 0,
allNotTaxPprice: 0,
allTotalTax: 0,
allTotalNotTaxPprice: 0,
}
},
created() {
},
methods: {
init() {
// 供应商
choiceSupplierInfo({
createOrgSid: window.sessionStorage.getItem('orgSidPath')
}).then((resp) => {
if (resp.success) {
this.supplierList = resp.data
}
})
// 仓库
getWarehouses({
orgPath: window.sessionStorage.getItem('orgSidPath'),
}).then((res) => {
if (res.success) {
this.warehouseList = res.data
}
})
// 业务员
selAllByOrgSidPath({
orgSidPath: window.sessionStorage.getItem('orgSidPath')
}).then((res) => {
if (res.success) {
this.allOrgperList = res.data
}
})
// 货币
typeValues({
type: 'currencyType'
}).then((res) => {
if (res.success) {
this.currencyTypeList = res.data
}
})
// 结算账户
typeValues({
type: 'settlementAccount'
}).then((res) => {
if (res.success) {
this.settlementList = res.data
}
})
// 分摊方式
typeValues({
type: 'shareType'
}).then((res) => {
if (res.success) {
this.shareTypeList = res.data
}
})
},
// 合计
getSummaries(param) {
const {
columns,
data
} = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计:'
return
}
const values = data.map(item => Number(item[column.property]))
if (column.property === 'count') { // 数量
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
this.allCount = prev + curr
return (Number(prev) + Number(curr)).toFixed(2)
} else {
this.allCount = prev
return Number(prev).toFixed(2)
}
}, 0)
sums[index] += ''
} else if (column.property === 'pcsNum') { // 数量pcs
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
this.allPcsNum = prev + curr
return (Number(prev) + Number(curr)).toFixed(2)
} else {
this.allPcsNum = prev
return Number(prev).toFixed(2)
}
}, 0)
sums[index] += ''
} else if (column.property === 'shareAmount') { //分摊金额
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
this.allShareAmount = prev + curr
return (Number(prev) + Number(curr)).toFixed(2)
} else {
this.allShareAmount = prev
return Number(prev).toFixed(2)
}
}, 0)
sums[index] += ''
} else if (column.property === 'amount') { //总价
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
this.allAmount = prev + curr
return (Number(prev) + Number(curr)).toFixed(2)
} else {
this.allAmount = prev
return Number(prev).toFixed(2)
}
}, 0)
sums[index] += ''
} else if (column.property === 'unTaxPrice') { //未含税价
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
this.allNotTaxPprice = prev + curr
return (Number(prev) + Number(curr)).toFixed(2)
} else {
this.allNotTaxPprice = prev
return Number(prev).toFixed(2)
}
}, 0)
sums[index] += ''
} else if (column.property === 'taxAmount') { //总税额
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
this.allTotalTax = prev + curr
return (Number(prev) + Number(curr)).toFixed(2)
} else {
this.allTotalTax = prev
return Number(prev).toFixed(2)
}
}, 0)
sums[index] += ''
} else if (column.property === 'unTaxTotalAmount') { //未含税总价
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
this.allTotalNotTaxPprice = prev + curr
return (Number(prev) + Number(curr)).toFixed(2)
} else {
this.allTotalNotTaxPprice = prev
return Number(prev).toFixed(2)
}
}, 0)
sums[index] += ''
}
})
return sums
},
// 清除分摊金额 并反算
calculation(row, updateProp, event) {
this.formobj.purchaseBillAmount.freight = 0.00
this.formobj.purchaseBillAmount.otherAmount = 0.00
// 重新计算
// 除去修改单价时 修改其他字段都先计算出单价 然后其他价格数据在计算一次
// 如果修改的是单价 则先把本条数据直接赋值单价 然后其他价格数据在计算一次
// 后需要把列表其他数据先计算出单价字段 然后其他价格数据在计算一次
for (var i = 0; i < this.formobj.purchaseBillDetailList.length; i++) {
var item = this.formobj.purchaseBillDetailList[i]
if (row.sid != item.sid) {
// 列表其他数据 先计算单价
// item.cost = (Number(item.cost) - Number(item.shareAmount) / Number(item.count)).toFixed(2)
item.cost = Number(item.cost1)
this.calculation2(item)
} else {
// if (updateProp == 'count') {
// // 修改的是数量
// item.cost = Number(item.cost1)
// this.calculation2(item)
// }
if (updateProp == 'cost') {
// 修改的不是单价
this.calculation2(item)
} else {
item.cost = Number(item.cost1)
this.calculation2(item)
}
// if (updateProp == 'discountRate') {
// // 修改的是折扣率
// item.cost = Number(item.cost1)
// this.calculation2(item)
// }
// if (updateProp == 'taxRate') {
// // 修改的是税率
// item.cost = Number(item.cost1)
// this.calculation2(item)
// }
}
// 最后把列表所有的分摊金额赋值成0
item.shareAmount = 0.00
item.cost1 = Number(item.cost)
item.count1 = Number(item.count)
}
},
calculation2(row) {
// 折后单价 = 单价*折扣率 / 100
row.discountPrice = (Number(row.cost) * Number(row.discountRate) / 100).toFixed(2)
// console.log("calculation》》》》", row.discountPrice)
// 总价 = 单价* 数量*折扣率 / 100
row.amount = (Number(row.count) * Number(row.cost) * Number(row.discountRate) / 100).toFixed(2)
// console.log("calculation》》》》", row.amount)
// 总税额 = 总价/(1+税率)*税率
row.taxAmount = (Number(row.amount) / (1 + Number(row.taxRate) / 100) * Number(row.taxRate) / 100)
.toFixed(2)
// console.log("calculation2》》》》", row.taxAmount)
// 未含税价 =(总价-总税额)/数量
row.unTaxPrice = ((Number(row.amount) - Number(row.taxAmount)) / row.count).toFixed(2)
// console.log("calculation2》》》》", row.unTaxPrice)
// 未含税总价 = 总价-总税额
row.unTaxTotalAmount = (Number(row.amount) - Number(row.taxAmount)).toFixed(2)
// console.log("calculation2》》》》", row.unTaxTotalAmount)
},
computeDate(row) {
// 预计到货日期 = 当前日期+采购周期
row.deliveryDate = this.addDate(getCurrentDate(), Number(row.cycle))
},
manufactureDateChange(row) {
console.log("manufactureDateChange》》》》", row.madeDate)
console.log("manufactureDateChange》》》》", row.shelfLife)
row.expireDate = this.addDate(row.madeDate, Number(row.shelfLife))
let reg = new RegExp('-', 'g') //g代表全部
row.batchNumber = row.madeDate.replace(reg, '') + " - " + row.expireDate.replace(reg, '')
},
// days 只能是int
addDate(date, days) {
var dates = new Date(date)
dates.setDate(dates.getDate() + days)
var year = dates.getFullYear()
var month = dates.getMonth() + 1
var day = dates.getDate()
if (month < 9) {
month = "0" + month
}
if (day < 9) {
day = "0" + day
}
var time = year + '-' + month + '-' + day
return time
},
// 计算分摊金额
computeShareAmount() {
// 分摊金额 = (采购运费+其他费用)*单价*数量/所有商品总价
var price = Number(this.formobj.purchaseBillAmount.freight) + Number(this.formobj.purchaseBillAmount
.otherAmount)
var all = 0 // 除去最后一个的分摊总和
var totalAmount = 0 // 原所有商品总价
for (var i = 0; i < this.formobj.purchaseBillDetailList.length; i++) {
var item = this.formobj.purchaseBillDetailList[i]
totalAmount = (Number(totalAmount) + Number(Number(item.cost1) * Number(item.count1))).toFixed(2)
}
console.log("price》》》》", price)
console.log("totalAmount》》》》", totalAmount)
// 分摊金额 = (采购运费+其他费用)*单价*数量/ 原所有商品总价
for (var i = 0; i < this.formobj.purchaseBillDetailList.length; i++) {
var item = this.formobj.purchaseBillDetailList[i]
if (i == this.formobj.purchaseBillDetailList.length - 1) {
// 最后一条数据
item.shareAmount = (Number(price) - Number(all)).toFixed(2)
item.cost = (Number(item.cost1) + (Number(item.shareAmount) / Number(item.count))).toFixed(2)
} else {
item.shareAmount = (Number(price) * Number(item.cost1) * Number(item.count) / Number(totalAmount))
.toFixed(2)
item.cost = (Number(item.cost1) + (Number(item.shareAmount) / Number(item.count))).toFixed(2)
all += Number(item.shareAmount)
}
// this.calculation(item)
this.calculation2(item)
}
},
goodsAdd() {
this.viewState = 2
this.$refs['divSp'].showAdd(this.formobj.createOrgSid)
},
deleteGoods(row) {
console.log("deleteGoods》》》》", row)
this.$confirm("是否确定删除此商品?", '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const index = this.formobj.purchaseBillDetailList.findIndex((item) => item === row)
console.log("index》》》》", index)
this.formobj.purchaseBillDetailList.splice(index, 1)
})
},
backData2(value) {
console.log('backData2》》》》', value)
console.log('imgList', this.imgList)
for (var i = 0; i < this.imgList.length; i++) {
this.formobj.purchaseAppendixList.push({
url: this.imgList[i].url
})
}
},
backData(value) {
this.viewState = 1
console.log('>>>>>>>>>backData', value)
for (var i = 0; i < value.length; i++) {
this.formobj.purchaseBillDetailList.push({
"sid": value[i].sid != null ? value[i].sid : '',
"goodsSkuCode": value[i].goodsSkuCode != null ? value[i].goodsSkuCode : '',
"goodsSkuTitle": value[i].goodsName != null ? value[i].goodsName : '',
"goodsSN": value[i].barCode != null ? value[i].barCode : '',
"goodsSkuOwnSpec": value[i].goodsSkuOwnSpec != null ? value[i].goodsSkuOwnSpec : '',
"unit": value[i].unit != null ? value[i].unit : '',
"count": value[i].count != null ? value[i].count : '0',
"count1": value[i].count != null ? value[i].count1 : '0',
"pcsCount": value[i].pcsNum != null ? value[i].pcsNum : '0',
"tagPrice": value[i].tagPrice != null ? value[i].tagPrice : '',
"cost": value[i].cost != null ? value[i].cost : '',
"cost1": value[i].cost != null ? value[i].cost1 : '',
"discountRate": value[i].discountRate != null ? value[i].discountRate : '100',
"discountPrice": value[i].discountPrice != null ? value[i].discountPrice : '0.00',
"shareAmount": value[i].shareAmount != null ? value[i].shareAmount : '0.00',
"amount": value[i].amount != null ? value[i].amount : '0.00',
"taxRate": value[i].taxRate != null ? value[i].taxRate : '',
"unTaxPrice": value[i].notTaxPprice != null ? value[i].notTaxPprice : '',
"taxAmount": value[i].totalTax != null ? value[i].totalTax : '',
"unTaxTotalAmount": value[i].totalNotTaxPprice != null ? value[i].totalNotTaxPprice : '',
"cycle": value[i].purchaseCycle != null ? value[i].purchaseCycle : '',
"deliveryDate": value[i].deliveryDate != null ? value[i].deliveryDate : '',
"madeDate": value[i].manufactureDate != null ? value[i].manufactureDate : '',
"shelfLife": value[i].shelfLife != null ? value[i].shelfLife : '',
"expireDate": value[i].overdueDate != null ? value[i].overdueDate : '',
"batchNumber": value[i].batchNumber != null ? value[i].batchNumber : '',
"goodsNum": value[i].itemNumber != null ? value[i].itemNumber : '',
"remarks": value[i].remarks != null ? value[i].remarks : ''
}
)
}
},
resetState() {
this.viewState = 1
},
indexMethod(index) {
return index + 1
},
saveOrUpdate() {
console.log('>>>>>>>>>saveOrUpdate', this.formobj)
this.$refs['form_obj'].validate((valid) => {
if (valid) {
if (this.formobj.purchaseBillDetailList.length == 0) {
this.$message({
showClose: true,
type: 'warning',
message: '请添加采购商品'
})
return
}
for (var i = 0; i < this.formobj.purchaseBillDetailList.length; i++) {
var item = this.formobj.purchaseBillDetailList[i]
if (Number(item.count) == 0) {
this.$message({
showClose: true,
type: 'warning',
message: '商品采购数量不能为0或空'
})
return
}
if (Number(item.discountRate) == 0) {
this.$message({
showClose: true,
type: 'warning',
message: '商品折扣率不能为0或空'
})
return
}
}
this.submitdisabled = true
req.save(this.formobj).then((res) => {
if (res.success) {
this.$message({
showClose: true,
type: 'success',
message: '保存成功'
})
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.submitdisabled = false
this.imgList = []
this.formobj = {
"sid": "",
"remarks": "",
"createTime": getCurrentDate(),
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"sourceBillNo": "",
"billNo": "",
"purchaseTypeKey": "",
"purchaseTypeValue": "",
"purchaseReasonKey": "",
"purchaseReasonValue": "",
"payTypeKey": "",
"payTypeValue": "",
"supplierSid": "",
"supplierName": "",
"supplierPhone": "",
"purchaserSid": "",
"purchaserName": "",
"deliveryDate": "",
"wareHouseSid": "",
"wareHouseName": "",
"deptSid": window.sessionStorage.getItem('defaultDeptSid'),
"deptName": window.sessionStorage.getItem('defaultDeptName'),
"useOrgSid": window.sessionStorage.getItem('orgSid'),
"createOrgSid": window.sessionStorage.getItem('defaultDeptSid'),
"orgPath": window.sessionStorage.getItem('orgSidPath'),
"purchaseBillAmount": {
"sid": "",
"billSid": "",
"errorAmount": "",
"discountAmount": "",
"payableAmount": "",
"freight": "",
"freightShareTypeKey": "",
"freightShareTypeValue": "",
"otherAmount": "",
"otherShareTypeKey": "",
"otherShareTypeValue": "",
"settleAccountKey": "",
"settleAccountValue": "",
"prepayment": "",
"paymentTerm": "",
"bankName": "",
"bankAccountName": "",
"bankAccount": "",
"currencyKey": "",
"currencyValue": ""
},
"purchaseBillExtend": {
"sid": "",
"billSid": "",
"logisticsNum": "",
"productProgress": "",
"receiveStateKey": "",
"receiveStateValue": "",
"deliveryStateKey": "",
"deliveryStateValue": ""
},
"purchaseBillDetailList": [],
"purchaseAppendixList": [
]
}
this.$emit('doback')
},
showAdd() {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.init()
this.title = '【新增】'
},
showEdit(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.init()
this.title = '【编辑】'
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.fetchDetailsBySid(row.sid)
.then(resp => {
if (resp.success) {
this.formobj = resp.data
loading.close()
this.imgList = []
for (var i = 0; i < resp.data.purchaseAppendixList.length; i++) {
this.imgList.push({
url: resp.data.purchaseAppendixList[i].url
})
}
}
})
.catch(e => {
loading.close()
this.formobj = {}
})
},
supplierNameSelect(val) {
console.log("supplierNameSelect", val);
const choose = this.supplierList.filter((item) => item.sid == val)
console.log('>>>>>>>>>supplierNameSelect', choose)
this.formobj.supplierName = choose[0].supplierName
this.formobj.supplierSid = choose[0].sid
},
selectWarehouseName(val) {
console.log("selectWarehouseName", val);
const choose = this.warehouseList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectWarehouseName', choose)
this.formobj.wareHouseName = choose[0].warehouseName
this.formobj.wareHouseSid = choose[0].sid
},
allOrgperSelect(val) {
console.log("allOrgperSelect", val);
const choose = this.allOrgperList.filter((item) => item.sid == val)
console.log('>>>>>>>>>allOrgperSelect', choose)
this.formobj.purchaserName = choose[0].name
this.formobj.purchaserSid = choose[0].sid
},
selectCurrency(val) {
const choose = this.currencyTypeList.filter((item) => item.dictKey == val)
console.log('>>>>>>>>>selectCurrency', choose)
this.formobj.purchaseBillAmount.currencyValue = choose[0].dictValue
this.formobj.purchaseBillAmount.currencyKey = choose[0].dictKey
},
selectFreightShareType(val) {
const choose = this.shareTypeList.filter((item) => item.dictKey == val)
console.log('>>>>>>>>>selectFreightShareType', choose)
this.formobj.purchaseBillAmount.freightShareTypeValue = choose[0].dictValue
this.formobj.purchaseBillAmount.freightShareTypeKey = choose[0].dictKey
},
selectSettleAccount(val) {
const choose = this.settlementList.filter((item) => item.dictKey == val)
console.log('>>>>>>>>>selectSettleAccount', choose)
this.formobj.purchaseBillAmount.settleAccountValue = choose[0].dictValue
this.formobj.purchaseBillAmount.settleAccountKey = choose[0].dictKey
},
selectOtherShareType(val) {
const choose = this.shareTypeList.filter((item) => item.dictKey == val)
console.log('>>>>>>>>>selectOtherShareType', choose)
this.formobj.purchaseBillAmount.otherShareTypeValue = choose[0].dictValue
this.formobj.purchaseBillAmount.otherShareTypeKey = choose[0].dictKey
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>