You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udiwms-vue-frame/src/views/inout/DialogSelectInvProduct.vue

323 lines
9.0 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<el-card>
<el-form :model="filterQuery" size="mini" label-width="100px" v-show="showSearch">
<el-row>
<el-col :span="6">
<el-form-item label="产品标识DI:">
<el-input v-model="filterQuery.nameCode" style="width: 90%" placeholder="请输入产品标识DI"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品名称:">
<el-input v-model="filterQuery.cpmctymc" style="width: 90%" placeholder="请输入产品名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="规格型号:">
<el-input v-model="filterQuery.ggxh" style="width: 90%" placeholder="请输入规格型号"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="批次号:">
<el-input v-model="filterQuery.batchNo" style="width: 90%" placeholder="请输入批次号"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="top-right-btn">
<el-button-group style="display:flex;">
<el-button icon="el-icon-view" type="primary" @click="hideSearch">显示/隐藏搜索栏</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="onReset">重置</el-button>
<el-button type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
<el-button type="primary" icon="el-icon-plus" @click="combine">确定</el-button>
</el-button-group>
</div>
<el-divider style="margin: 15px"></el-divider>
<el-table v-loading="loading" :data="list" style="width: 100%" highlight-current-row="false" border ref="multipleTable">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="产品标识" prop="nameCode"></el-table-column>
<el-table-column label="产品名称" prop="cpmctymc">
</el-table-column>
<el-table-column label="规格型号" prop="ggxh"></el-table-column>
<el-table-column label="批次号" prop="batchNo"></el-table-column>
<el-table-column label="生产日期" prop="productionDate"></el-table-column>
<el-table-column label="失效日期" prop="expireDate"></el-table-column>
<el-table-column label="入库数量" prop="inCount"></el-table-column>
<el-table-column label="出库数量" prop="outCount"></el-table-column>
<el-table-column label="结余数量" prop="reCount"></el-table-column>
</el-table>
</el-card>
<pagination
v-show="total>0"
:total="total"
:limit.sync="filterQuery.limit"
:page.sync="filterQuery.page"
@pagination="handleCurrentChange"
></pagination>
</div>
</template>
<script>
import {
getInvProduct,
} from "@/api/inventory/invPorduct";
import {addDetail} from "@/api/inout/receiveOrder";
import {addBizProduct} from "@/api/inout/orderDetailCode";
import {getInvPreInProduct} from "@/api/inventory/invPreInSearch";
import {getInvPreProduct} from "@/api/inventory/invPreProduct";
export default {
name: "DialogInvProduct",
props: {
closeDialog: {
type: Function,
required: true,
},
invQueryData: {
type: Object,
required: true,
},
codeArray: {
type: Object,
required: true,
},
orderQuery: {},
type: { //1.领用选入2业务单据选入
type: Object,
required: true,
}
},
data() {
return {
showSearch: true,
filterQuery: {
cpmctymc: null,
nameCode: null,
relIdFk: null,
batchNo: null,
page: 1,
limit: 10,
customerId: null,
supId: null,
unitFk: null,
invCode: this.invQueryData.invCode,
},
detailQuery: {
code: null,
productIdFk: null,
page: 1,
limit: 20,
},
list: [],
total: 0,
loading: true,
index: null,
dialogTableVisible: false,
formLoading: false,
dialogVisible: false,
deleteLoading: false,
busTypes: [],
idQuery: null,
showSup: false,
fromOptions: [],
};
},
components: {},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
cpmctymc: null,
nameCode: null,
relIdFk: null,
batchNo: null,
customerId: null,
unitFk: null,
supId: null,
page: 1,
limit: 10,
invCode: this.invQueryData.targetInvCode,
};
this.getList();
},
onSubmit() {
this.loading = true;
this.filterQuery.page = 1;
this.getList();
},
handleSizeChange(val) {
this.filterQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.filterQuery.page = val.page;
this.getList();
},
closeDetailDialog(val) {
this.codeDetailVisible = false;
},
getList() {
this.loading = true;
//寄售
if(this.invQueryData.advanceType==3){
getInvPreProduct(this.filterQuery)
.then((response) => {
this.showSup = response.data.showSup;
this.loading = false;
this.list = response.data.list || [];
this.total = response.data.total || 0;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
//预验收
}else if(this.invQueryData.advanceType==2){
getInvPreInProduct(this.filterQuery)
.then((response) => {
this.showSup = response.data.showSup;
this.loading = false;
this.list = response.data.list || [];
this.total = response.data.total || 0;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
}else{
getInvProduct(this.filterQuery)
.then((response) => {
this.showSup = response.data.showSup;
this.loading = false;
this.list = response.data.list || [];
this.total = response.data.total || 0;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
}
},
hideSearch() {
this.showSearch = !this.showSearch;
},
combine() {
let selection = this.$refs.multipleTable.selection;
if (selection.length < 1) {
this.$message.error('未选择产品');
return;
}
var idster = [];
if(this.codeArray != null || this.codeArray!=undefined ){
if(this.codeArray.length>0){
for(var i=0;i<this.codeArray.length;i++){
idster.push(this.codeArray[i].relIdFk);
}
}
if(idster.length>0){
for(var i=0;i<idster.length;i++){
for(var j=0;j<selection.length;j++){
if(idster[i]==selection[j].relIdFk){
this.$message.error("该产品已录入!");
return
}
}
}
}
}
var ids = [];
selection.forEach((obj, index) => {
let data = {
relId: obj.relIdFk,
batchNo: obj.batchNo,
productDate: obj.productionDate,
expireDate: obj.expireDate,
supId: obj.supId,
nameCode: obj.nameCode,
}
ids.push(data);
});
if (this.type == 2) { //新增业务单据选入
let data = {
datas: ids,
orderEntity: this.orderQuery,
}
this.loading = true;
addBizProduct(data)
.then((response) => {
this.loading = false;
if (response.code === 20000) {
this.closeDialog(response.data);
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.loading = false;
});
} else {
this.loading = true;
let tQuery = {
datas: ids,
purReceiveEntity: this.invQueryData,
};
addDetail(tQuery).then((response) => {
this.loading = false;
if (response.code === 20000) {
this.closeDialog(response.data);
} else {
this.$message.error(response.message);
}
}).catch(() => {
this.loading = false;
});
}
},
},
filters: {
statusFilterType(status) {
const statusMap = {
false: "success",
true: "danger",
};
return statusMap[status];
},
},
mounted() {
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
},
created() {
this.filterQuery.invCode = this.invQueryData.targetInvCode;
// 加载表格数据
this.getList();
},
};
</script>
<style type="text/scss" lang="scss">
</style>