采购件入库

This commit is contained in:
zhangdingyu
2019-10-10 16:33:31 +08:00
parent 974987643c
commit 0edd6db0c3
3 changed files with 511 additions and 121 deletions

View File

@@ -16,6 +16,7 @@ export const uploadInvoiceScan1 = `http://192.168.1.231:8411/submit/uploadInvoic
export const download = `http://192.168.1.231:8411/submit/downloadFile.ashx` // ContractInformationManagement
export const uploadPerson = `http://192.168.1.231:8411/submit/uploadPerson.ashx`
export const uploadOP = `http://192.168.1.231:8411/submit/uploadOP.ashx`
export const url = `http://192.168.0.110:8005/submit/MESCommonBase.ashx` // 采购件入库、离线件入库
// 技术中心程序发布时要更改下面所有的IP到0段
export const ServerIP = `http://192.168.1.231:8411/webpage/file/`

View File

@@ -0,0 +1,369 @@
<template>
<div>
<div class="main">
<div style="padding: 0 10px">
<div style="width:330px;margin: 10px auto">
<el-radio v-model="searchType" label="1" border @change="radioChange">扫码合同二维码</el-radio>
<el-radio v-model="searchType" label="2" border @change="radioChange">选择供应商合同</el-radio>
</div>
<el-form label-width="80px" onsubmit="return false" style="font-size: 22px;">
<el-form-item v-if="searchType==='1'" label="二维码">
<el-input id="code3" v-model="qrCode" placeholder="若不扫码,可在此输入合同流水号" @keyup.native.enter="codeChange1()" @focus="onfocus1()"/>
</el-form-item>
<el-form-item v-if="searchType==='2'" label="供应商" style="margin-top: 10px">
<el-select v-model="supplierValue" placeholder="请选择供应商" filterable style="width: 100%" @change="supplierChange">
<el-option
v-for="item in supplier"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-form-item v-if="searchType==='2'" label="合同编号" style="margin-top: 10px">
<el-select v-model="contractValue" placeholder="请选择合同" filterable style="width: 100%">
<el-option
v-for="item in contract"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-button type="primary" style="margin-bottom: 10px;width: 100%" @click="searchContractDetail">查询明细</el-button>
<hr>
<el-form-item v-if="searchType==='1'" label="供应商" style="margin-top: 10px">
<el-input v-model="supplierName" readonly placeholder="请扫码查询"/>
</el-form-item>
<el-form-item v-if="searchType==='1'" label="合同编号" style="margin-top: 10px">
<el-input v-model="contractNumber" readonly placeholder="请扫码查询"/>
</el-form-item>
</el-form>
</div>
<el-table ref="multipleTable" :data="table1" border size="mini" highlight-current-row style="width: 100%;" height="350px" @selection-change="handleSelectionChange">
<el-table-column :selectable="selectable" type="selection" align="center" width="35px"/>
<el-table-column label="名称" min-width="50px" align="center" show-overflow-tooltip prop="物料名称">
<template slot-scope="scope">
<el-tooltip :content="scope.row.物料名称" effect="dark">
<span>{{ scope.row.物料名称 }}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column label="规格型号" min-width="50px" align="center" show-overflow-tooltip>
<template slot-scope="scope">
<el-tooltip :content="scope.row.物料规格 + ' ' + scope.row.物料型号" effect="dark">
<span>{{ scope.row.物料规格 + ' ' + scope.row.物料型号 }}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column label="采购数量" align="center" width="50" show-overflow-tooltip prop="数量">
<template slot-scope="scope">
{{ scope.row.数量 }}
</template>
</el-table-column>
<el-table-column label="已到数量" align="center" width="50" show-overflow-tooltip prop="到货数量">
<template slot-scope="scope">
{{ scope.row.到货数量 }}
</template>
</el-table-column>
<el-table-column label="到货数量" align="center" min-width="120" show-overflow-tooltip>
<template slot-scope="scope">
<el-input-number v-model="scope.row.本次到货数量" :min="0" :precision="2" size="mini" style="margin: 0;width: 100%"/>
</template>
</el-table-column>
</el-table>
<hr style="margin: 10px 0">
<div style="width:310px;margin: 10px auto">
<el-radio v-model="locateType" label="1" border @change="radioChange2">扫码货位二维码</el-radio>
<el-radio v-model="locateType" label="2" border @change="radioChange2">选择仓库货位</el-radio>
</div>
<el-form label-width="80px" onsubmit="return false" style="margin-right:10px;margin-left: 10px">
<el-form-item v-show="locateType==='1'" label="货位码">
<el-input id="locate" v-model="locateNumber" placeholder="若不扫码,可在此输入货位流水号" @keyup.native.enter="codeChange2()" @focus="onfocus2()"/>
</el-form-item>
<el-form-item v-show="locateType==='2'" label="仓库名称">
<el-select v-model="inventoryNumber" style="width: 100%" placeholder="仓库名称" @change="getLocate">
<el-option
v-for="item in inventoryName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-form-item v-show="locateType==='2'" label="货位名称">
<el-select v-model="locateNumber" style="width: 100%" placeholder="货位名称">
<el-option
v-for="item in locateName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
</el-form>
<el-button type="primary" style="margin-bottom: 70px;width: 100%" @click="submitInStorage">确认入库</el-button>
</div>
<i-tabs/>
</div>
</template>
<script>
import { url } from '@/utils/request'
import axios from 'axios'
import Cookie from 'js-cookie'
export default {
name: 'OfflineInStorage',
data() {
return {
searchType: '2', // 查询合同方式
inventoryPeople: '',
oldVal1: '',
oldVal2: '',
qrCode: '',
supplierValue: '',
supplier: [],
contractValue: '',
contract: [],
supplierName: '', // 供应商名称
contractNumber: '', // 合同编号
table1: [],
multipleSelection: [],
locateType: '2', // 查询货位方式
inventoryNumber: '', // 仓库流水号
inventoryName: [], // 仓库名称
locateNumber: '',
locateName: []
}
},
mounted() {
this.initSupplier()
this.getHouse()
this.getpeopleid()
},
methods: {
// 获取仓库
async getHouse() {
const param = {
url: url,
method: 'post',
data: {
type: '1',
name: '库存管理_货位主文件_仓库查询'
}
}
const res = await axios(param)
this.inventoryName = []
for (let i = 0; i < res.data.length; i++) {
this.inventoryName.push({
label: res.data[i].仓库名称,
value: res.data[i].仓库流水号
})
}
},
// 获取货位
async getLocate() {
const param = {
url: url,
method: 'post',
data: {
type: '1',
name: '库存管理_货位主文件_查询数据',
param: `仓库流水号=${this.inventoryNumber}`
}
}
const res = await axios(param)
this.locateName = []
for (let i = 0; i < res.data.length; i++) {
this.locateName.push({
label: res.data[i].货位名称,
value: res.data[i].货位流水号
})
}
},
// 明细可选
selectable(row) {
return Number(row.数量) !== Number(row.到货数量)
},
// 初始化供应商
async initSupplier() {
this.supplierValue = ''
this.supplier = []
const param = {
url: url,
method: 'post',
data: {
type: '3',
name: `select distinct 供应商流水号,供应商名称 from (
select 供应商流水号,供应商名称,sum(数量) as 总采购数量,sum(到货数量) as 总到货数量
from 采购管理_离线合同_视图
where 离线合同状态 = 2
group by 离线合同流水号,离线合同编号,离线合同名称,规定到货时间,供应商流水号,供应商名称,电子信箱,电话号码,传真,人员编号,采购员,离线合同状态,离线合同状态名称,创建日期,合同总额,离线合同备注, 已付金额
having sum(数量) <> sum(到货数量)
) as 已采购的离线合同`
}
}
const res = await axios(param)
for (let i = 0; i < res.data.length; i++) {
this.supplier.push({
value: res.data[i].供应商流水号,
label: res.data[i].供应商名称
})
}
},
// 根据供应商查合同
async supplierChange() {
this.contractValue = ''
this.contract = []
const param = {
url: url,
method: 'post',
data: {
type: '1',
name: '采购管理_离线合同_查询数据',
param: `供应商流水号_check=1&供应商流水号=${this.supplierValue}&未全部到货=1`
}
}
const res = await axios(param)
for (let i = 0; i < res.data.length; i++) {
this.contract.push({
value: res.data[i].离线合同流水号,
label: res.data[i].离线合同编号
})
}
},
// 单选框改变
radioChange() {
this.qrCode = ''
this.supplierValue = ''
this.contractValue = ''
this.contract = []
this.table1 = []
if (this.searchType === '1') {
this.ifocus1()
}
},
radioChange2() {
this.locateNumber = ''
if (this.searchType === '1') {
this.ifocus2()
}
},
// 初始化时让input框聚焦可以直接扫描出结果而不用点一下输入框
ifocus1() {
const input = document.getElementById('code3')
input.focus()
},
ifocus2() {
const input = document.getElementById('locate')
input.focus()
},
onfocus1() {
this.qrCode = ''
},
onfocus2() {
this.locateNumber = ''
},
// 获取人员编号
getpeopleid() {
this.inventoryPeople = Cookie.get('id')
console.log(this.inventoryPeople)
},
// 查询离线合同明细
async searchContractDetail() {
if (this.contractValue && this.searchType === '2') {
this.qrCode = this.contractValue
} else if (this.searchType === '2') {
this.$message.warning('请选择合同')
}
const param = {
url: url,
method: 'post',
data: {
type: '1',
name: '离线合同扫描合同打印物料',
param: `离线合同流水号=${this.qrCode}`
}
}
const res = await axios(param)
res.data.map(v => {
this.$set(v, '本次到货数量', v.数量 - v.到货数量)
return v
})
console.log(res.data)
if (res.data.length > 0) {
this.supplierName = res.data[0].供应商名称
this.contractNumber = res.data[0].离线合同编号
} else {
this.supplierName = ''
this.contractNumber = ''
}
this.table1 = res.data
this.oldVal1 = ''
},
// 多选
handleSelectionChange(val) {
this.multipleSelection = val
},
// 提交入库
submitInStorage() {
if (this.multipleSelection.length === 0) {
this.$message.warning('请勾选入库物料')
} else if (!this.locateNumber) {
this.$message.warning('请选择货位或者扫码货位二维码')
} else {
console.log(this.multipleSelection)
const materialGroup = []
const numberGroup = []
const partGroup = []
for (let i = 0; i < this.multipleSelection.length; i++) {
materialGroup.push(this.multipleSelection[i].物料流水号)
numberGroup.push(this.multipleSelection[i].本次到货数量)
partGroup.push(this.multipleSelection[i].离线合同明细流水号)
}
this.$confirm('确认入库?', '提示', {
confirmButtonText: '确定入库',
cancelButtonText: '取消操作',
center: 'true',
type: 'warning'
}).then(async() => {
console.log(materialGroup, partGroup, numberGroup, this.locateNumber)
const param = {
url: url,
method: 'post',
data: {
type: '2',
name: '采购管理_离线采购件入库_增加数据',
param: `物料流水号组=${materialGroup}&离线合同明细流水号组=${partGroup}&数量组=${numberGroup}&货位流水号=${this.locateNumber}&入库人员流水号=${this.inventoryPeople}`
}
}
const res = await axios(param)
if (res.data[0].result === '1') {
this.$message.success('入库成功')
this.searchContractDetail()
this.searchType = '2'
this.locateType = '2'
this.qrCode = ''
this.locateNumber = ''
} else { this.$message.error('入库失败') }
}).catch(() => {
this.$message('已取消操作')
})
}
},
codeChange1() {
const input = document.getElementById('code3')
input.blur()
},
codeChange2() {
const input = document.getElementById('locate')
input.blur()
}
}
}
</script>
<style>
.el-message-box{
width: 300px!important;
}
</style>
<style scoped>
</style>

View File

@@ -1,141 +1,159 @@
<template>
<div>
<div class="main">
<div style="padding: 0 10px">
<el-form label-width="80px" onsubmit="return false" style="font-size: 22px;">
<el-form-item label="物料码">
<el-input id="code1" v-model="qrCode" placeholder="输入合同明细流水号" @keyup.native.enter="codeChange1()" @focus="qrCode=''"/>
</el-form-item>
<el-form-item label="合同类型">
<el-select v-model="contractType" placeholder="请选择" style="width: 100%" @change="contractTypeChange">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
</el-form>
<el-button type="primary" style="margin-bottom: 10px;width: 100%" @click="searchPartDetail">查询零件详情</el-button>
</div>
<el-form label-width="80px" style="margin-right:10px;margin-left: 10px">
<el-card>
<span>合同明细流水号</span>
<el-input id="code1" v-model="qrCode" size="small" placeholder="输入合同明细流水号" style="width: 200px" @keyup.native.enter="codeChange1()" @focus="qrCode=''"/>
<span>合同类型</span>
<el-select v-model="contractType" filterable size="small" placeholder="合同类型" @change="contractTypeChange">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<el-button type="success" size="small" style="margin-left: 10px" @click="searchPartDetail">查询零件详情</el-button>
</el-card>
<el-card>
<el-form label-position="right" label-width="100px" class="searchForm">
<el-row>
<el-col :span="13">
<el-form-item v-show="Projectshow" label="机床号">
<el-tooltip :content="machine" class="item" effect="dark" placement="top">
<el-input v-model="machine" readonly placeholder="无"/>
</el-tooltip>
<el-col style="width: 300px">
<el-form-item label="机床号:">
<el-input v-model="machine" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item v-show="Projectshow" label="组号">
<el-tooltip :content="team" class="item" effect="dark" placement="top">
<el-input v-model="team" readonly placeholder="无"/>
</el-tooltip>
<el-col style="width: 300px">
<el-form-item label="组号:">
<el-input v-model="team" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="物料名称:">
<el-input v-model="materialname" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="物料型号:">
<el-input v-model="materialtype" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col style="width: 300px">
<el-form-item label="物料规格:">
<el-input v-model="materialscale" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="零件名称:">
<el-input v-model="partname" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="零件图号:">
<el-input v-model="partpaint" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="供应商:">
<el-input v-model="supplier" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col style="width: 300px">
<el-form-item label="合同编号:">
<el-input v-model="contractnumber" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="采购数量:">
<el-input v-model="contractnum" readonly size="small" style="width: 200px" placeholder="无"/>
</el-form-item>
</el-col>
</el-row>
<el-form-item v-show="purchasepart" label="物料名称">
<el-tooltip :content="materialname" class="item" effect="dark" placement="top">
<el-input v-model="materialname" readonly placeholder="无"/>
</el-tooltip>
</el-form-item>
<el-form-item v-show="purchasepart" label="物料型号">
<el-tooltip :content="materialtype" class="item" effect="dark" placement="top">
<el-input v-model="materialtype" readonly placeholder="无"/>
</el-tooltip>
</el-form-item>
<el-form-item v-show="purchasepart" label="物料规格">
<el-tooltip :content="materialscale" class="item" effect="dark" placement="top">
<el-input v-model="materialscale" readonly placeholder="无"/>
</el-tooltip>
</el-form-item>
<el-form-item v-show="basicpart" label="零件名称">
<el-tooltip :content="partname" class="item" effect="dark" placement="top">
<el-input v-model="partname" readonly placeholder="无"/>
</el-tooltip>
</el-form-item>
<el-form-item v-show="basicpart" label="零件图号">
<el-tooltip :content="partpaint" class="item" effect="dark" placement="top">
<el-input v-model="partpaint" readonly placeholder="无"/>
</el-tooltip>
</el-form-item>
<el-form-item label="供应商">
<el-tooltip :content="supplier" class="item" effect="dark" placement="top">
<el-input v-model="supplier" readonly placeholder="无"/>
</el-tooltip>
</el-form-item>
<el-form-item label="合同编号">
<el-tooltip :content="contractnumber" class="item" effect="dark" placement="top">
<el-input v-model="contractnumber" readonly placeholder="无"/>
</el-tooltip>
</el-form-item>
<el-form-item label="采购数量">
<el-input v-model="contractnum" readonly placeholder="无"/>
</el-form-item>
</el-form>
<hr style="margin-bottom: 10px">
<div style="width:310px;margin: 0 auto">
<el-radio v-model="locateType" label="1" border @change="locateNumber=''">扫码货位二维码</el-radio>
<el-radio v-model="locateType" label="2" border @change="locateNumber=''">选择仓库货位</el-radio>
</div>
<hr style="margin: 10px 0">
<el-form label-width="80px" onsubmit="return false" style="margin-right:10px;margin-left: 10px">
<el-form-item v-show="locateType==='1'" label="货位码">
<el-input id="code2" v-model="locateNumber" placeholder="若不扫码,可在此输入货位流水号" @keyup.native.enter="codeChange2()" @focus="locateNumber=''"/>
</el-form-item>
<el-form-item v-show="locateType==='2'" label="仓库名称">
<el-select v-model="inventoryNumber" style="width: 100%" placeholder="仓库名称" @change="getLocate">
<el-option
v-for="item in inventoryName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-form-item v-show="locateType==='2'" label="货位名称">
<el-select v-model="locateNumber" style="width: 100%" placeholder="货位名称">
<el-option
v-for="item in locateName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-form-item label="入库数量">
<el-input-number v-model="inboundNumber" :min="0" style="width: 100%"/>
</el-form-item>
<el-form-item label="重量/面积">
<el-input v-model="area" style="width: 53%"/>
<el-select v-model="unit" style="width: 45%">
<el-option
v-for="item in basicUnit"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-form-item label="备注" >
<el-input v-model="inboundNote" style="width: 100%"/>
</el-form-item>
</el-card>
<el-card>
<el-form label-position="right" label-width="100px" class="searchForm">
<el-row>
<el-col style="width: 300px">
<el-form-item label="仓库名称:">
<el-select v-model="inventoryNumber" style="width: 200px" size="small" placeholder="仓库名称" @change="getLocate">
<el-option
v-for="item in inventoryName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="货位名称:">
<el-select v-model="locateNumber" style="width: 200px" size="small" placeholder="货位名称">
<el-option
v-for="item in locateName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="入库数量:">
<el-input-number v-model="inboundNumber" :min="0" style="width: 200px" size="small"/>
</el-form-item>
</el-col>
<el-col style="width: 300px">
<el-form-item label="重量/面积:">
<el-input v-model="area" style="width: 90px" size="small"/>
<el-select v-model="unit" style="width: 90px" size="small">
<el-option
v-for="item in basicUnit"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col style="width: 400px">
<el-form-item label="备注:">
<el-input v-model="inboundNote" style="width: 200px" size="small"/>
<el-button type="primary" style="margin-left: 5px" size="small" @click="inBound">确定入库</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-button type="primary" style="margin-bottom: 40px;width:100%" @click="inBound">确定入库</el-button>
</div>
<el-table :data="tableData" border highlight-current-row style="width: 100%;margin-top:20px;">
<el-table-column v-for="item of tableHeader" :key="item" :prop="item" :label="item" />
</el-card>
<el-table v-show="false" :data="tableData" border style="width: 100%;margin-top:20px;">
<el-table-column v-for="item of tableHeader" :key="item" :label="item">
<el-table-column label="重量" width="120">
<template slot-scope="scope">
{{ scope.row.address }}
</template>
</el-table-column>
<el-table-column label="金额" width="120">
<template slot-scope="scope">
{{ scope.row.date }}
</template>
</el-table-column>
</el-table-column>
</el-table>
</div>
</template>
<script>
import url from '@/utils/request'
import { url } from '@/utils/request'
import axios from 'axios'
import Cookie from 'js-cookie'
export default {
data() {
return {
locateType: '1',
tableData: [],
tableHeader: [],
locateType: '2',
qrCode: '',
inboundNote: '',
multipleSelection: [],
@@ -161,9 +179,6 @@ export default {
{
value: 1,
label: '采购部采购合同'
// }, {
// value: 2,
// label: '采购部离线合同'
}, {
value: 3,
label: '车间采购合同'
@@ -525,5 +540,10 @@ export default {
</script>
<style scoped>
.el-input{
margin-right: 2px;
}
.searchForm .el-form-item{
margin-bottom: 5px;
}
</style>