Files
JY1.0/src/views/Inventory/OfflinePartsStorage/index.vue
yangjiahang b4ab7b62bc a
2020-02-08 16:18:50 +08:00

371 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<el-card>
<!-- <span>供应商</span>-->
<el-select v-model="supplierValue" placeholder="请选择供应商" filterable size="small" style="width: 180px;margin: 0px 10px" @change="supplierChange();searchContractDetail()">
<el-option
v-for="item in supplier"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<!-- <span style="margin-left: 5px">合同</span>-->
<el-select v-model="contractValue" placeholder="请选择合同" filterable clearable size="small" style="width: 140px;margin: 0px 10px" @change="searchContractDetail()">
<el-option
v-for="item in contract"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<el-button type="primary" size="small" style="margin-left: 10px" plain @click="searchContractDetail">查询明细</el-button>
</el-card>
<el-card>
<el-table ref="multipleTable" :data="table1" border stripe size="mini" highlight-current-row style="width: 100%;margin-bottom: 5px">
<el-table-column label="合同编号" sortable prop="离线合同编号" width="120px" align="center" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.离线合同编号 }}
</template>
</el-table-column>
<el-table-column label="名称" prop="物料名称" width="150px" align="center" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.物料名称 }}
</template>
</el-table-column>
<el-table-column label="规格型号" prop="规格型号" width="180px" align="center" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.规格型号 }}
</template>
</el-table-column>
<el-table-column label="采购数量" align="center" width="100" show-overflow-tooltip prop="数量">
<template slot-scope="scope">
{{ scope.row.数量 }}
</template>
</el-table-column>
<el-table-column label="已到数量" align="center" width="100" show-overflow-tooltip prop="到货数量">
<template slot-scope="scope">
{{ scope.row.到货数量 }}
</template>
</el-table-column>
<el-table-column label="到货数量" align="center" width="200" show-overflow-tooltip>
<template slot-scope="scope">
<el-input-number v-model="scope.row.本次到货数量" :min="0" :max="scope.row.数量-scope.row.到货数量" :precision="2" size="mini" style="margin: 0;width: 100%"/>
</template>
</el-table-column>
</el-table>
<span v-show="false">仓库名称</span>
<el-select v-show="false" v-model="inventoryNumber" style="width: 200px" filterable size="small" placeholder="仓库名称" @change="getLocate">
<el-option
v-for="item in inventoryName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<span>货位名称</span>
<el-select v-model="locateNumber" style="width: 200px" filterable size="small" placeholder="货位名称">
<el-option
v-for="item in locateName"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<el-button class="button111" style="margin-left: 5px" size="small" @click="submitInStorage">确认入库</el-button>
</el-card>
</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.getLocate()
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() {
this.locateNumber = ''
this.locateName = []
const param = {
url: url,
method: 'post',
data: {
type: '1',
name: '库存管理_货位主文件_查询数据_查询全部'
}
}
const res = await axios(param)
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')
},
// 查询离线合同明细
async searchContractDetail() {
this.table1 = []
if (this.contractValue && this.searchType === '2') {
this.qrCode = this.contractValue
} else if (!this.supplierValue) {
this.$message.error('请选择供货商')
}
if (this.contractValue) { this.contractValue_check = 1 } else { this.contractValue_check = 0 }
const param = {
url: url,
method: 'post',
data: {
type: '1',
name: '离线合同扫描合同打印物料_NEW',
param: `供应商流水号=${this.supplierValue}&离线合同流水号_check=${this.contractValue_check}&离线合同流水号=${this.qrCode}`
}
}
const res = await axios(param)
res.data.map(v => {
this.$set(v, '本次到货数量', v.数量 - v.到货数量)
return v
})
if (res.data.length > 0) {
this.supplierName = res.data[0].供应商名称
this.contractNumber = res.data[0].离线合同编号
} else {
this.supplierName = ''
this.contractNumber = ''
}
// this.table1 = res.data
console.log(res.data)
res.data.map(v => {
this.table1.push({
离线合同编号: v.离线合同编号,
离线合同明细流水号: v.离线合同明细流水号,
物料流水号: v.物料流水号,
组件零件基本件流水号: v.组件零件基本件流水号,
物料名称: v.物料名称 ? v.物料名称 : v.零件名称,
规格型号: v.物料规格 + (v.零件图号 === null ? v.物料型号 : v.零件图号),
数量: v.数量,
到货数量: v.到货数量,
本次到货数量: v.本次到货数量
})
})
this.oldVal1 = ''
},
// 多选
handleSelectionChange(val) {
this.multipleSelection = val
console.log(val, 123)
},
// 提交入库
submitInStorage() {
if (!this.locateNumber) {
this.$message.warning('请选择货位或者扫码货位二维码')
} else {
const materialGroup = []
const BasicGroup = []
const numberGroup = []
const partGroup = []
for (let i = 0; i < this.table1.length; i++) {
if (this.table1[i].本次到货数量 !== 0) {
materialGroup.push(this.table1[i].物料流水号)
BasicGroup.push(this.table1[i].组件零件基本件流水号)
numberGroup.push(this.table1[i].本次到货数量)
partGroup.push(this.table1[i].离线合同明细流水号)
}
}
this.$confirm('确认入库?', '提示', {
confirmButtonText: '确定入库',
cancelButtonText: '取消操作',
center: 'true',
type: 'warning'
}).then(async() => {
const param = {
url: url,
method: 'post',
data: {
type: '2',
name: '采购管理_离线采购件入库_增加数据',
param: `物料流水号组=${materialGroup}&组件零件基本件流水号组=${BasicGroup}&离线合同明细流水号组=${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>
<style lang="scss">
.button111{
background:rgb(253,246,236);
border-color: #ff9759;
color: #ff9759;
&:hover{
background: #ff9759;
border-color: #ff9759;
color: white;
}
&:focus{
background: #ff9759;
border-color: #ff9759;
color: white;
}
}
</style>