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/DialogCreateOrderSelect.vue

802 lines
23 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="8">
<el-form-item class="query-form-item" label="预验收单号:">
<el-input
v-model="filterQuery.billNo"
placeholder="请输入单号"
style="width: 90%"
clearable="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<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-col :span="8">
<el-form-item label="往来单位:">
<el-select v-model="filterQuery.fromCorp"
filterable
remote
reserve-keyword
placeholder="请选择往来单位" clearable style="width: 90%">
<el-option
v-for="item in fromInvOptions"
:key="item.erpId"
:label="item.name"
:value="item.erpId"
>
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.code }}</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="onReset"
>重置
</el-button>
<el-button type="primary" icon="el-icon-search" @click="onSubmit"
>查询
</el-button>
<el-button
type="primary"
size="mini"
icon="el-icon-bottom-right"
@click="combine"
:loading="combineLoading"
@close="closeLocalDialog"
>选入
</el-button
>
</el-button-group>
</div>
<el-divider style="margin: 15px"></el-divider>
<el-table
ref="multipleTable"
@select-all="handleAll"
:header-cell-class-name="leftheaderStyle"
@selection-change="handleSelectionChange"
@current-change="getOrderDetails"
v-loading="loading"
:data="list"
style="width: 100%"
highlight-current-row
border
>
<el-table-column
type="selection"
:selectable="checkSelection"
width="55"
></el-table-column>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column
label="扫码单据类型"
prop="billTypeName"
></el-table-column>
<el-table-column
label="订单号"
prop="billNo"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="来源订单号"
prop="corpOrderId"
show-overflow-tooltip
></el-table-column>
<el-table-column label="来源" prop="fromType">
<template slot-scope="scope">
<span>{{ fromTypeMap[scope.row.fromType] }}</span>
</template>
</el-table-column>
<el-table-column label="往来单位" prop="fromName" width="220">
</el-table-column>
<el-table-column label="当前部门" prop="deptName" width="120">
</el-table-column>
<el-table-column label="当前仓库" prop="invName" width="120">
</el-table-column>
<el-table-column
label="所属科室"
prop="deptName"
width="120"
v-if="enableDept"
>
</el-table-column>
<el-table-column
label="创建时间"
prop="createTime"
show-overflow-tooltip
>
<template slot-scope="scope">
<i class="el-icon-time"></i>
<span>{{ scope.row.createTime }}</span>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark" width="180" show-overflow-tooltip>
</el-table-column>
<!-- <el-table-column label="校验状态" prop="status" width="100">-->
<!-- <template slot-scope="scope">-->
<!-- <el-tag :type="(scope.row.status ===-1 ) | statusFilterType">{{-->
<!-- checkStatus[scope.row.status]-->
<!-- }}-->
<!-- </el-tag>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="操作" width="150" fixed="right">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native.stop="printOrder(scope.row)"-->
<!-- >打印-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native.stop="rollback(scope.row)"-->
<!-- >撤回-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native.stop="deleteDialog(scope.row)"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </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>
<el-tabs type="border-card" style="margin: 15px">
<!--单据业务详情-->
<el-tab-pane>
<span slot="label">单据 {{ currentRow.billNo }}-单据详情</span>
<el-form :inline="true" :model="bizQuery" class="query-form" size="mini">
<el-form-item class="query-form-item" label="物资名称:">
<el-input
v-model="bizQuery.productName"
placeholder="请输入物资名称"
clearable
>
</el-input>
</el-form-item>
<el-form-item>
<el-button-group>
<el-button
type="primary"
icon="el-icon-refresh"
@click="onBizReset"
>重置
</el-button>
<el-button type="primary" @click="onBizSubmit"
icon="el-icon-search"
>查询
</el-button>
</el-button-group>
</el-form-item>
</el-form>
<el-table v-loading="bizDetailLoading" :data="bizDetailList" style="width: 100%" border
row-key="id"
>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column
label="物资名称"
prop="coName" width="160"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="规格型号" width="160"
prop="spec"
></el-table-column>
<el-table-column
label="批次号" width="120"
prop="batchNo"
></el-table-column>
<el-table-column
label="生产日期" width="120"
prop="productDate"
></el-table-column>
<el-table-column
label="失效日期"
prop="expireDate" width="120"
></el-table-column>
<el-table-column
label="单据数量" width="100"
prop="count"
></el-table-column>
<el-table-column
label="扫码数量"
prop="reCount" width="100"
></el-table-column>
<el-table-column
label="价格" width="100"
prop="price"
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="注册/备案号"
prop="certCode" width="180"
show-overflow-tooltip
></el-table-column>
</el-table>
<pagination
v-show="bizTotal>0"
:total="bizTotal"
:page.sync="bizQuery.page"
:limit.sync="bizQuery.limit"
@pagination="getBizDetailList"
/>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import {
deleteInvByBillNo,
getOrderFilter,
rollbackOrder,
} from "../../api/inout/order";
import {getLocalJoinByUser} from "@/api/basic/busType";
import {getInvListByUser} from "@/api/system/invWarehouse";
import {isBlank} from "@/utils/strUtil";
import {selectSysParamByKey} from "@/api/param/systemParamConfig";
import {getResultDetailList} from "@/api/inout/orderDetailResult";
import {getCodeDetailList} from "@/api/inout/orderDetailCode";
import {getCodeList} from "@/api/inout/code";
import {
inspectionOrderPDFFromTemplateFile,
orderPDFFromTemplateFile,
} from "@/api/itextpdf/orderPrint";
import {selectCorpList} from "@/api/basic/basicUnitMaintain";
const formJson = {
site_id: "",
site_name: "",
describe: "",
ads: [],
};
export default {
name: "IoAuditedOrder",
props: {
closeDialogtwo: {
type: Function,
required: true,
},
checkPreInOrders: {
type: Array,
required: true,
},
},
data() {
return {
showSearch: true,
filterQuery: {
id: "",
billNo: null,
mainAction: null,
action: null,
page: 1,
limit: 10,
startTime: null,
endTime: null,
},
fromInvOptions: [],
checkStatus: {
1: "草稿",
2: "等待处理",
3: "等待校验",
4: "处理异常",
5: "待核对",
6: "校验异常",
7: "已审核",
8: "审核拒绝",
9: "正在处理", 10: "待审核", 11: "待配货",
},
invList: [],
list: [],
total: 0,
loading: false,
index: null,
enableDept: false,
fromTypeMap: {
1: "UDIMS平台",
2: "网页新增",
3: "pda即时校验",
4: "pda未校验",
5: "pc端扫码精灵",
6: "流转自动补单",
7: "UDI供应商平台",
8: "平衡补录单据",
10: "手动补单",
11: "仓库盘点",
12: "采购计划",
13: "领用单据",
14: "第三方系统单据",
},
deleteData: {
id: "",
status: 10,
},
dialogTableVisible: false,
formLoading: false,
dialogVisible: false,
formData: formJson,
deleteLoading: false,
busTypes: [],
currentRow: {},
actDateRange: [],
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]);
},
},
],
},
bizQuery: {
productName: null,
orderIdFk: null,
page: 1,
limit: 10,
},
bizTotal: 0,
bizDetailLoading: false,
bizDetailList: [],
codeQuery: {
orderIdFk: null,
page: 1,
limit: 10,
},
codeTotal: 0,
codeDetailLoading: false,
codeDetailList: [],
resultQuery: {
orderId: null,
code: null,
page: 1,
limit: 10,
},
resultTotal: 0,
resultDetailLoading: false,
resultDetailList: [],
multipleSelection: [],
selectbox: [],
selectRow: null,
};
},
components: {},
methods: {
//重置
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
id: "",
billNo: null,
mainAction: null,
action: null,
page: 1,
limit: 10,
startTime: null,
endTime: null,
};
this.actDateRange = null
this.getList();
},
//查询
onSubmit() {
this.loading = true;
if (this.actDateRange !== null) {
this.filterQuery.startTime = this.actDateRange[0];
this.filterQuery.endTime = this.actDateRange[1];
} else {
this.filterQuery.startTime = null;
this.filterQuery.endTime = null;
}
this.filterQuery.page = 1;
this.getList();
},
//选入
combine() {
this.closeDialogtwo();
this.$emit("giveselectbox", this.selectbox);
},
//选择框根据已选入判断禁用方法
checkSelection(row, index) {
let flag = true;
if (this.checkPreInOrders.length === 0) {
flag = true;
} else {
if (this.checkPreInOrders.includes(row.billNo)) {
flag = false;
} else {
flag = true;
}
}
return flag;
},
//关闭对话框
closeLocalDialog() {
},
hideSearch() {
this.showSearch = !this.showSearch;
},
getBusType() {
let query = {
code: this.filterQuery.invCode,
enabled: true,
};
getLocalJoinByUser(query)
.then((response) => {
this.busTypes = response.data.list || [];
})
.catch(() => {
});
},
//多行勾选
handleSelectionChange(val) {
let checkboxs = JSON.parse(JSON.stringify(val));
this.multipleSelection = checkboxs.map((item) => {
return item.billNo;
});
let hebin = [...this.checkPreInOrders, ...this.multipleSelection];
let boxarry = Array.from(new Set(hebin));
this.selectbox = boxarry;
},
//全选
handleAll(selection) {
if (selection.length == 0) {
this.$refs.multipleTable.clearSelection()
}
},
// 获取单据 业务详情、扫码详情、扫码明细
getOrderDetails(val) {
this.currentRow = val;
this.bizQuery.page = 1;
this.codeQuery.page = 1;
this.resultQuery.page = 1;
this.getBizDetailList();
// this.getCodeDetailList();
// this.getResultDetailList();
},
//获取订单列表
getList() {
this.loading = true;
this.currentRow = {billNo: ""};
getOrderFilter(this.filterQuery)
.then((response) => {
this.loading = false;
if (response.code === 20000) {
this.list = response.data.list || [];
this.total = response.data.total || 0;
} else {
this.$message.error(response.message);
}
})
.catch((error) => {
this.$message.error(error.message);
this.loading = false;
this.list = [];
this.total = 0;
});
},
deleteOrders(data) {
this.loading = true;
this.deleteData.billNo = data.billNo;
deleteInvByBillNo(this.deleteData)
.then((response) => {
if (response.code == 20000) {
this.getList();
this.$message({
type: "success",
message: "删除成功!",
});
} else if (response.code == 520) {
this.$message.error("新增扫码单据列表已不存在该扫码单据!");
this.getList();
}
})
.catch(() => {
});
},
deleteDialog(row) {
this.$confirm("此操作将永久删除该订单, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.deleteOrders(row);
})
.catch(() => {
});
},
invChange() {
this.filterQuery.action = null;
this.getBusType();
},
getInvList() {
getInvListByUser()
.then((response) => {
this.invList = response.data || [];
})
.catch(() => {
});
},
checkOrder(orderId) {
},
onBizReset() {
this.bizQuery = {
productName: null,
orderIdFk: null,
page: 1,
limit: 10,
};
this.getBizDetailList();
},
onBizSubmit() {
this.bizQuery.page = 1;
this.getBizDetailList();
},
getBizDetailList() {
if (isBlank(this.currentRow.billNo)) {
this.$message.error("请先选择需要查询的单据!");
return;
}
this.bizDetailLoading = true;
this.bizQuery.orderIdFk = this.currentRow.billNo;
getResultDetailList(this.bizQuery)
.then((res) => {
this.bizDetailLoading = false;
if (res.code === 20000) {
this.bizDetailList = res.data.list || [];
this.bizTotal = res.data.total || 0;
} else {
this.$message.error(res.message);
this.bizDetailList = [];
this.bizTotal = 0;
}
})
.catch((error) => {
this.bizDetailLoading = false;
this.$message.error(error.message);
this.bizDetailList = [];
this.bizTotal = 0;
});
},
editBizDialog(row) {
},
onCodeReset() {
this.codeQuery = {
orderIdFk: null,
page: 1,
limit: 10,
};
this.getCodeDetailList();
},
onCodeSubmit() {
this.codeQuery.page = 1;
this.getCodeDetailList();
},
getCodeDetailList() {
if (isBlank(this.currentRow.billNo)) {
this.$message.error("请先选择需要查询的单据!");
return;
}
this.codeQuery.orderIdFk = this.currentRow.billNo;
this.codeDetailLoading = true;
getCodeDetailList(this.codeQuery)
.then((res) => {
this.codeDetailLoading = false;
if (res.code === 20000) {
this.codeDetailList = res.data.list || [];
this.codeTotal = res.data.total || 0;
} else {
this.$message.error(res.message);
this.codeDetailList = [];
this.codeTotal = 0;
}
})
.catch((error) => {
this.codeDetailLoading = true;
this.$message.error(error.message);
this.codeDetailList = [];
this.codeTotal = 0;
});
},
editCodeDialog(row) {
},
printOrder(row) {
let tQuery = {
action: row.action,
moduleId: 1,
};
this.loading = true;
inspectionOrderPDFFromTemplateFile(tQuery)
.then((response) => {
if (response.code === 20000) {
tQuery = {
templateId: response.data,
orderIdFk: row.billNo,
action: row.action,
moduleId: 1,
};
orderPDFFromTemplateFile(tQuery)
.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。
})
.catch(() => {
this.loading = false;
});
} else {
this.loading = false;
this.$message.error(response.message);
}
})
.catch(() => {
this.loading = false;
});
},
onResultReset() {
this.resultQuery = {
orderId: null,
code: null,
page: 1,
limit: 10,
};
this.getResultDetailList();
},
onResultSubmit() {
this.resultQuery.page = 1;
this.getResultDetailList();
},
findFromInvList(val) {
let cQuery = {};
selectCorpList(cQuery)
.then((response) => {
this.fromInvOptions = response.data || [];
})
.catch(() => {
});
},
getResultDetailList() {
if (isBlank(this.currentRow.billNo)) {
this.$message.error("请先选择需要查询的单据!");
return;
}
this.resultQuery.orderId = this.currentRow.billNo;
this.resultDetailLoading = true;
getCodeList(this.resultQuery)
.then((res) => {
this.resultDetailLoading = false;
if (res.code === 20000) {
this.resultDetailList = res.data.list || [];
this.resultTotal = res.data.total || 0;
} else {
this.$message.error(res.message);
this.resultDetailList = [];
this.resultTotal = 0;
}
})
.catch((error) => {
this.resultDetailLoading = false;
this.$message.error(error.message);
this.resultDetailList = [];
this.resultTotal = 0;
});
},
},
filters: {
statusFilterType(status) {
const statusMap = {
false: "success",
true: "warning",
};
return statusMap[status];
},
},
mounted() {
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
},
created() {
this.getInvList();
this.findFromInvList();
this.getBusType();
this.getList();
},
};
</script>
<style type="text/scss" lang="scss">
</style>