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/basic/business/stockOrderQRCodeDetail.vue

445 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-form :model="formData" :rules="formRules" ref="dataForm" label-width="100px">
<el-row type="flex" justify="end">
<el-button-group style="display: flex;margin-bottom: 15px; margin-right: 50px;margin-top: -10px">
<el-button type="primary" @click.native="generateQRCodeText()" :loading="loading">生成内部码</el-button>
<el-button type="primary" @click.native="printStockOrderDetailPDF()" :loading="loading">打印全部</el-button>
<el-switch style="margin-left: 50px;" v-model="filterUDIType" active-text="过滤已有UDI码的产品"></el-switch>
</el-button-group>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="单据号" prop="billNo">
<el-input v-model="formData.billNo" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="单据日期" prop="billdate">
<el-input v-model="formData.createTime" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="供应商名称" prop="corpName">
<el-input v-model="formData.customerName" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="业务类型" prop="billTypeName">
<el-input v-model="formData.billTypeName" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-table v-loading="loading" :data="codeArray" style="width: 100%;" max-height="350" height="350"
border ref="multipleTable">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="内部码" prop="udiCode"></el-table-column>
<el-table-column label="状态">
<template slot-scope="scope">
<span>{{ statusMap[scope.row.status] }}</span>
</template>
</el-table-column>
<el-table-column label="标签数量">
<template slot-scope="scope">
<el-input size="small" v-model="scope.row.count" placeholder="请输入打印标签数量" style="width: 50%"
oninput="value=value.replace(/[^\d]/g,'')"></el-input>
<!-- <span>{{ scope.row.reCount }}</span>-->
</template>
</el-table-column>
<el-table-column label="时间" prop="create_time" show-overflow-tooltip>
<template slot-scope="scope">
<i class="el-icon-time"></i>
<span>{{ scope.row.updateTime }}</span>
</template>
</el-table-column>
<el-table-column label="操作"width="150">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click.native="printStockOrderDetailPDF(scope.row)"
>标签打印
</el-button
>
</template>
</el-table-column>
</el-table>
<div class="block">
<pagination
v-show="total>0"
:total="total"
:limit.sync="query.limit"
:page.sync="query.page"
@pagination="handleCurrentChange"
></pagination>
</div>
</el-form>
<el-dialog
title="标签打印文件列表"
:visible.sync="labelPrintVisible"
width="60%"
:close-on-click-modal="false"
:close-on-press-escape="false"
append-to-body
v-if="labelPrintVisible"
>
<el-button-group style="display: flex">
<el-button
type="primary"
@click.native="refeshLabel()"
style="margin: -50px 60px 10px auto; height: 35px"
>刷新
</el-button
>
</el-button-group>
<el-table :data="lableFileLsit" style="width: 100%" border>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column
label="文件名称"
prop="fileName"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="生成状态"
prop="status"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag :type="(scope.row.status) | statusFilterType">
{{ printMap[scope.row.status] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="printLabel(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="labltotal>0"
:total="labltotal"
:limit.sync="refreshQuery.limit"
:page.sync="refreshQuery.page"
@pagination="handleLableChange"
></pagination>
</el-dialog>
</div>
</template>
<script>
import {filterPrint} from "@/api/inout/innerOrderQRCode";
import {getLocalJoinBusType} from "@/api/basic/busLocalType";
import draggable from "vuedraggable";
import {
filterTemp,
inspectionOrderDetailPDFFromTemplateFile,
inspectionStockQRCodeTextPDFFromTemplateFile,
orderDetailPDFFromTemplateFile, stockQRCodeTextPDFFromTemplateFile, stockQRCodeTextPDFFromTemplateFileMax
} from "@/api/itextpdf/itextpdf";
import {generateInCodeQRCodeText, generateInnerQRCodeText} from "@/api/inout/innerOrderQRCode";
export default {
name: "idQuery",
props: {
closeDialog: {
type: Function,
required: true,
},
idQuery: {
type: Object,
required: true,
},
},
data() {
return {
code: "",
BASE_URL: process.env.VUE_APP_BASE_API,
query: {
sOrderId: null,
orderIdFk: "",
page: 1,
limit: 10,
},
busTypes: [],
formData: {},
codeArray: [],
total: 0,
loading: false,
index: null,
formLoading: false,
formVisible: false,
deleteLoading: false,
orderNo: null,
labelPrintVisible: false,
lableFileLsit: [],
labltotal: null,
refreshQuery: {
page: 1,
limit: 10,
printCodeIdFk: null,
stockOrderFk: null,
},
filterUDIType:false,
statusMap: {
0: "未打印",
1: "已打印",
},
printMap: {
0: "正在生成",
1: "已生成",
2: "生成失败"
},
};
},
components: {
draggable,
},
methods: {
// 刷新表单
resetForm() {
if (this.$refs["dataForm"]) {
// 清空验证信息表单
this.$refs["dataForm"].clearValidate();
// 刷新表单
this.$refs["dataForm"].resetFields();
this.getList();
}
},
printLabel(row) {
window.open(this.pdffileUrl + row.fileName, '_blank');
},
refeshLabel() {
filterTemp(this.refreshQuery).then((response) => {
if (response.code == 20000) {
this.lableFileLsit = response.data.list;
this.labelPrintVisible = true;
this.labltotal = response.data.total || 0;
}
}).catch(() => {
this.loading = false;
});
},
handleCurrentChange(val) {
this.query.page = val.page;
this.getStockQRCodeTextList();
},
getStockQRCodeTextList() {
this.loading = true;
filterPrint(this.query) //查找该单号下的所有条码
.then((response) => {
console.log(response)
this.codeArray = response.data.list || [];
this.total = response.data.total || 0;
this.loading = false;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
},
handleLableChange(val) {
this.refreshQuery.page = val.page;
this.refeshLabel();
this.getOrderQRCodeTextList();
},
getOrderQRCodeTextList() {
this.loading = true;
filterPrint(this.query) //查找该单号下的所有条码
.then((response) => {
console.log(response)
this.codeArray = response.data.list || [];
this.total = response.data.total || 0;
this.loading = false;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
},
generateQRCodeText() {
this.$confirm("确定生成内部码?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.loading = true;
generateInCodeQRCodeText({orderIdFk:this.formData.billNo,chack:this.filterUDIType})
.then(response => {
this.loading = false;
if (response.code === 20000) {
this.$message.success("生成成功");
this.getOrderQRCodeTextList();
this.detailList = [];
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.loading = false;
})
}).catch(() => {
});
},
printStockOrderDetailPDF(row) {
let tQuery = {
queryId: null,
orderId: null,
countList: [],
};
if (row == null) {
tQuery.orderId = this.formData.orderIdFk;
} else {
if (row.reCount <= 0) {
return this.$message.error('数量错误');
}
tQuery.queryId = row.id;
}
this.loading = true;
inspectionStockQRCodeTextPDFFromTemplateFile(tQuery).then((response) => {
if (response.code === 20000) {
if (row != null) {
tQuery.id = row.id;
tQuery.rowCount = row.reCount;
let data = {
queryId: row.id,
rowCount: row.count
}
tQuery.countList.push(data);
} else {
for (let i = 0; i < this.codeArray.length; i++) {
let data = {
queryId: this.codeArray[i].id,
rowCount: this.codeArray[i].count
}
tQuery.countList.push(data);
}
}
let count = 0;
for (let i = 0; i < tQuery.countList.length; i++) {
count = count + tQuery.countList[i].rowCount;
console.log(count);
}
console.log(count);
if (count > 100) {
stockQRCodeTextPDFFromTemplateFileMax(tQuery).then((response) => {
if (response.code == 20000) {
this.lableFileLsit = response.data.list;
this.labltotal = response.data.total || 0;
this.labelPrintVisible = true;
this.refreshQuery = {
page: 1,
limit: 10,
printCodeIdFk: tQuery.queryId,
stockOrderFk: tQuery.orderId,
}
this.loading = false;
this.$message.warning("打印文件正在生成中请点击刷新按钮查看进度请勿关闭按钮重复打印");
}
}).catch(() => {
this.loading = false;
});
} else
stockQRCodeTextPDFFromTemplateFile(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;
});
},
getBusType() {
let query = {
enabled: true,
};
getLocalJoinBusType(query)
.then((response) => {
this.busTypes = response.data.list || [];
this.filterQuery.billAction = this.busTypes[0].action;
// this.getList();
})
.catch(() => {
});
},
},
filters: {
statusFilterType(status) {
const statusMap = {
0: "warning",
1: "success",
2: "danger"
};
return statusMap[status];
}},
mounted() {
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
},
created() {
// this.getBusType();
this.pdffileUrl = this.BASE_URL + "/spms/donwload/pdf?fileName=";
this.formData = {};
this.codeArray = [];
if (this.$isNotBlank(this.idQuery.id)) {
debugger
this.formData = this.idQuery.formData;
this.query.orderIdFk=this.formData.billNo;
this.query.sOrderId = this.formData.orderIdFk;
this.getStockQRCodeTextList();
}
},
};
</script>
<style>
.ao-text {
width: 100%;
font-size: 13px;
font-family: "Microsoft YaHei";
float: right;
text-align: right;
margin-top: 10px;
}
</style>