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/inventory/supInoutSearchOrder.vue

438 lines
15 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 class="el-card">
<el-form :model="filterQuery" class="query-form" size="mini" label-width="100px" v-show="showSearch">
<el-row>
<el-col :span="6">
<el-form-item class="query-form-item" label="出入库单号:">
<el-input v-model="filterQuery.orderIdFk" placeholder="请输入出入库单号" style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="DI/物资编码:">
<el-input v-model="filterQuery.nameCode" placeholder="请输入DI/物资编码" style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="物资名称:">
<el-input v-model="filterQuery.coName" placeholder="请输入物资名称" style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="规格型号:">
<el-input v-model="filterQuery.spec" placeholder="请输入规格型号" style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item class="query-form-item" label="批次号:">
<el-input v-model="filterQuery.batchNo" placeholder="请输入批次号" style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="注册/备案号:">
<el-input v-model="filterQuery.zczbhhzbapzbh" placeholder="注册/备案号"
style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="生产企业:">
<el-input v-model="filterQuery.manufacturer" placeholder="生产企业"
style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="出入库时间:">
<el-date-picker
:picker-options="pickerOptions"
v-model="actDateRange"
type="daterange"
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 90%"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="往来单位:">
<el-select
v-model="filterQuery.fromCorp"
style="width: 90%"
filterable
remote
clearable="true"
reserve-keyword
placeholder="请选择往来单位"
:remote-method="findMethod"
:loading="loading"
>
<el-option
v-for="item in fromOptions"
:key="item.name"
:label="item.name"
:value="item.erpId"
>
<span style="float: left">{{ item.name }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="出入库类型:">
<el-select v-model="filterQuery.mainAction" placeholder="请选择出入库类型" style="width: 90%">
<el-option label="全部" value=""></el-option>
<el-option label="入库" value="WareHouseIn"></el-option>
<el-option label="出库" value="WareHouseOut"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="action" label="单据类型:">
<el-select
v-model="filterQuery.action"
placeholder="请选择单据类型"
style="width: 90%"
>
<el-option
v-for="item in busTypeOptions"
:key="item.name"
:label="item.name"
:value="item.action"
>
<span style="float: left">{{ item.name }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="top-right-btn">
<el-button-group>
<el-button icon="el-icon-view" type="primary" @click="hideSearch">显示/隐藏搜索栏</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="optinPrint">选入打印</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="selectPrint">查询结果打印</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-group>
</div>
<el-divider style="margin: 15px"></el-divider>
<el-table v-loading="loading" :data="list" style="width: 100%" border highlight-current-row borderv @selection-change="handleCheckedChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="供应商" prop="fromCorpName" width="160" v-if="showSup"></el-table-column>
<el-table-column label="往来单位" prop="fromName" width="160"></el-table-column>
<el-table-column label="出入库单号" prop="orderIdFk" width="160"></el-table-column>
<el-table-column label="DI/物资编码" prop="nameCode" width="160"></el-table-column>
<el-table-column label="物资名称" prop="coName" width="160" show-overflow-tooltip></el-table-column>
<el-table-column label="规格型号" prop="spec" width="180" show-overflow-tooltip></el-table-column>
<el-table-column label="批次号" prop="batchNo" width="120"></el-table-column>
<el-table-column label="入库数量" prop="inCount" width="100"></el-table-column>
<el-table-column label="出库数量" prop="outCount" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="计量单位" prop="measname" width="120"></el-table-column>
<el-table-column label="单据类型" prop="billTypeName" width="120"></el-table-column>
<el-table-column label="生产日期" prop="productDate" width="120" show-overflow-tooltip></el-table-column>
<el-table-column label="失效日期" prop="expireDate" width="120" show-overflow-tooltip></el-table-column>
<el-table-column label="出入库时间" prop="auditTime" width="170" show-overflow-tooltip></el-table-column>
<el-table-column label="生产企业" prop="manufacturer" width="160" show-overflow-tooltip></el-table-column>
<el-table-column label="注册/备案号" prop="certCode" width="160" show-overflow-tooltip></el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:limit.sync="filterQuery.limit"
:page.sync="filterQuery.page"
@pagination="getList"
></pagination>
</el-card>
</div>
</template>
<script>
import {getResultDetailList, getResultOrderList, verifyTemplateFile, printOrder} from '@/api/inout/orderDetailResult'
import {findByInvUser, getLocalJoinByUser} from "@/api/basic/busType";
import {getCorrespondence} from "@/api/basic/basicUnitMaintain";
export default {
name: "supInoutSearchOrder",
data() {
return {
showSearch: true,
list: {},
busTypeOptions:[],
filterQuery: {
id: "",
orderIdFk: null,
fromCorpName: null,
coName: null,
spec: null,
batchNo: null,
page: 1,
limit: 10,
startAduditTime: null,
endAduditTime: null,
actionType: null,
fromCorp: null,
},
fromOptions: [],
loading: false,
total: 0,
orderSelection: [],
showSup: false,
customerId: this.$store.getters.customerId,
actDateRange: [],
actionType: null,
auditDateRange: [],
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
};
},
components: {},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
id: "",
orderIdFk: null,
fromCorpName: null,
coName: null,
spec: null,
batchNo: null,
page: 1,
limit: 10,
startAduditTime: null,
endAduditTime: null,
actionType: null,
};
this.actDateRange = []
this.getList();
},
handleCheckedChange(val) {
this.orderSelection = val;
},
onSubmit() {
this.loading = true;
if (this.actDateRange !== null) {
this.filterQuery.startAduditTime = this.actDateRange[0];
this.filterQuery.endAduditTime = this.actDateRange[1];
} else {
this.filterQuery.startAduditTime = null;
this.filterQuery.endAduditTime = null;
}
this.filterQuery.page = 1;
this.getList();
},
hideSearch() {
this.showSearch = !this.showSearch;
},
//根据仓库,用户获取单据类型
getBusTypeByInv() {
let query = {
code: this.$store.getters.locInvCode,
enabled: true,
};
getLocalJoinByUser(query)
.then((response) => {
this.busTypeOptions = response.data.list || [];
})
.catch(() => {
});
},
getList() {
this.loading = true;
this.filterQuery.actionType = this.actionType;
if(this.filterQuery.actionType=='preInDetail'){
this.filterQuery.invCode='1000001'
}else if(this.filterQuery.actionType=='preDetail'){
this.filterQuery.invCode='1000002'
}
getResultOrderList(this.filterQuery)
.then((response) => {
if (response.code === 20000) {
this.list = response.data.list || [];
this.total = response.data.total || 0;
} else {
this.$message.error(response.message);
}
this.loading = false;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
},
findMethod(query) {
this.fromOptions = [];
let cQuery = {
key: query,
corpType: 2,
page: 1,
limit: 10,
};
getCorrespondence(cQuery)
.then((response) => {
this.loading = false;
this.fromOptions = response.data.list || [];
})
.catch(() => {
this.loading = false;
this.fromOptions = [];
});
},
optinPrint() {
if (this.orderSelection == null || this.orderSelection.length <= 0) {
return this.$message.error("请选择打印的明细!");
}
let query = {id: 4};
verifyTemplateFile(query).then((res) => {
if (res.code === 20000) {
let printParams = {
templateId: res.data,
list: this.orderSelection
};
printOrder(printParams).then((response) => {
//将pdf文件转换为url。
const binaryData = [];
binaryData.push(response);
//获取blob链接。
let url = window.URL.createObjectURL(
new Blob(binaryData, {type: "application/pdf"})
);
this.loading = false;
window.open(url);//打开新标签页预览pdf。
})
}else{
return this.$message.error(res.message);
}
}).catch((error) => {
this.loading = false;
this.$message.error(error.message);
})
},
selectPrint(){
let query = {id: 4};
verifyTemplateFile(query).then((res) => {
if (res.code === 20000) {
let printParams = {
templateId: res.data,
orderIdFk: this.filterQuery.orderIdFk,
nameCode: this.filterQuery.nameCode,
coName: this.filterQuery.coName,
spec: this.filterQuery.spec,
batchNo: this.filterQuery.batchNo,
zczbhhzbapzbh: this.filterQuery.zczbhhzbapzbh,
manufacturer: this.filterQuery.manufacturer,
actionType: this.filterQuery.actionType,
fromCorp: this.filterQuery.fromCorp,
mainAction: this.filterQuery.mainAction,
action:this.filterQuery.action
};
if (this.actDateRange !== null) {
printParams.startAduditTime = this.actDateRange[0];
printParams.endAduditTime = this.actDateRange[1];
} else {
printParams.startAduditTime = null;
printParams.endAduditTime = null;
}
printOrder(printParams).then((response) => {
//将pdf文件转换为url。
const binaryData = [];
binaryData.push(response);
//获取blob链接。
let url = window.URL.createObjectURL(
new Blob(binaryData, {type: "application/pdf"})
);
this.loading = false;
window.open(url);//打开新标签页预览pdf。
})
}else{
this.$message.error(res.message);
return
}
}).catch((error) => {
this.loading = false;
this.$message.error(error.message);
})
}
}
,
mounted() {
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
}
,
created() {
let supId = this.$store.getters.customerId;
if (supId == "110") {
this.showSup = true;
}
this.actionType = this.$route.query.name;
this.getList();
this.getBusTypeByInv();
}
,
}
;
</script>
<style type="text/scss" lang="scss">
</style>