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

730 lines
20 KiB
Vue

<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.billNo"
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-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 class="query-form-item" label="单据类型:">
<el-select
v-model="filterQuery.action"
placeholder="请选择单据类型"
style="width: 90%"
clearable
>
<el-option
v-for="item in busTypes"
: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-col :span="6">
<el-form-item class="query-form-item" label="所属仓库:">
<el-select
v-model="filterQuery.invCode"
placeholder="请选择所属仓库"
clearable="true"
style="width: 90%"
@change="invChange"
>
<el-option
v-for="item in invList"
:key="item.name"
:label="item.name"
:value="item.code"
>
<span style="float: left">{{ item.name }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<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-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="select"
v-loading="loading"
:data="list"
style="width: 100%"
highlight-current-row
border
@row-click="handleSelectionChange"
>
<!-- <el-table-column type="selection" 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="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>
</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";
const formJson = {
site_id: "",
site_name: "",
describe: "",
ads: [],
};
export default {
name: "IoAuditedOrder",
props: {
closeDialogtwo: {
type: Function,
required: true,
},
},
data() {
return {
showSearch: true,
filterQuery: {
id: "",
billNo: null,
statusType: "audited",
mainAction: null,
action: null,
page: 1,
limit: 10,
startTime: null,
endTime: null,
invCode: this.$store.getters.locInvCode,
},
checkStatus: {
1: "草稿",
2: "等待处理",
3: "等待校验",
4: "处理异常",
5: "校验成功",
6: "校验异常",
7: "已审核",
8: "审核拒绝",
},
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: [],
selectboxs: [],
selectbox: "",
};
},
components: {},
methods: {
//重置
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
id: "",
billNo: null,
statusType: "audited",
mainAction: null,
action: null,
page: 1,
limit: 10,
startTime: null,
endTime: null,
invCode: this.$store.getters.locInvCode,
};
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.currentRow.billNo);
},
// //选择
// select(selection,row){
// // console.log(row);
// this.selectboxs.push(row)
// let nerArr = JSON.parse(JSON.stringify(this.selectboxs))
// let qwe = nerArr.map(item=>{
// // 每一项的单号
// return item.billNo
// })
// this.selectbox=qwe
// },
//关闭对话框
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) {
this.currentRow = val;
console.log(this.currentRow.billNo);
this.getOrderDetails();
},
// 获取单据 业务详情、扫码详情、扫码明细
getOrderDetails() {
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();
},
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;
});
},
//单据撤回
rollback(row) {
this.$confirm(
"此操作将撤回单据至已校验未审核状态并删除对应库存信息, 是否继续?",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
)
.then(() => {
let param = { billNo: row.billNo };
rollbackOrder(param).then((res) => {
if (res.code === 20000) {
this.$message.success("撤回成功");
this.getList();
} else {
this.$message.error(res.message);
}
});
})
.catch(() => {
// this.$message.info('回退失败');
});
},
},
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.getBusType();
selectSysParamByKey({ paramKey: "muti_inv_mode" }).then((res) => {
if (res.code === 20000) {
if (res.data.paramValue === "0") {
this.enableDept = true;
}
}
});
this.getList();
},
};
</script>
<style type="text/scss" lang="scss">
</style>