You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
618 lines
19 KiB
618 lines
19 KiB
<template>
|
|
<div class="sl-el">
|
|
<el-dialog ref="printLoading" :close-on-click-modal="false" :show-close="false" :close-on-press-escape="false"
|
|
title="标签打印"
|
|
:visible.sync="visible"
|
|
width="800px" v-drag>
|
|
<el-container>
|
|
<el-main style="width: 75%;margin-top: -20px">
|
|
<el-row>
|
|
<el-col :span="18">
|
|
<el-form @submit.native.prevent label-position="top">
|
|
<el-form-item style="width: 60%" :label="'请输入卷号:'">
|
|
<el-input readonly v-model="rollNos" class="input-with-select"
|
|
@keyup.enter.native="getBoxSoAndReportFile()">
|
|
<el-button @click="getBoxSoAndReportFile()" slot="append" icon="el-icon-search"></el-button>
|
|
</el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-col>
|
|
<el-col :span="6"></el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<span style="font-size: 12px;">请选择标签:</span>
|
|
<el-table
|
|
:data="reportFileList"
|
|
border
|
|
ref="reportFileTable"
|
|
highlight-current-row
|
|
@current-change="handleCurrentChange"
|
|
height="150px">
|
|
<el-table-column
|
|
v-for="(item,index) in reportColumnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
|
|
style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<span style="font-size: 12px;">打印格式名称:</span>
|
|
<el-input type="textarea" v-model="selectReportString" readonly :rows="3"></el-input>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-tabs style="font-size: 14px" v-model="activeName" type="border-card" @tab-click="handleClick"
|
|
class="customer-tab">
|
|
<el-tab-pane label="打印参数" name="first">
|
|
<el-table
|
|
:data="reportParamList"
|
|
:cell-style="customerCellStyle" :cell-class-name="customerCellClassName"
|
|
border
|
|
:height="height"
|
|
>
|
|
<el-table-column
|
|
v-for="(item,index) in printParamColumnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="item.columnHidden">
|
|
<span v-if="scope.row.valuetypeDb === 'T'">
|
|
<el-input v-model='scope.row[item.columnProp]'> </el-input>
|
|
</span>
|
|
<span v-if="scope.row.valuetypeDb === 'D'">
|
|
<el-date-picker style="width: 100%;"
|
|
v-model='scope.row[item.columnProp]'> </el-date-picker>
|
|
</span>
|
|
<span v-if="scope.row.valuetypeDb === 'I'">
|
|
<el-input type="number" v-model='scope.row[item.columnProp]' min="1"> </el-input>
|
|
</span>
|
|
|
|
</span>
|
|
<span v-else>{{ scope.row[item.columnProp] }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
</el-col>
|
|
</el-row>
|
|
</el-main>
|
|
</el-container>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button type="primary" @click="bartenderPrint()">打印</el-button>
|
|
<el-button type="primary" @click="closeDialog()">取消</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import {
|
|
checkRollCustomer,
|
|
getRollCustomer,
|
|
getReportFileByCustomer,
|
|
getReportSubFileList,
|
|
getReportParameters,
|
|
printLabel
|
|
} from '@/api/print/rollPrint.js';
|
|
|
|
export default {
|
|
components: {},
|
|
data() {
|
|
return {
|
|
visible: false,
|
|
rollNos: '',
|
|
activeName: 'first',
|
|
height: 200,
|
|
// 模板
|
|
reportColumnList: [
|
|
{
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "reportid",
|
|
columnLabel: "报告编号",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
}, {
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "Reportfile",
|
|
columnLabel: "报告文件名",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
}, {
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "Remark",
|
|
columnLabel: "备注",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
}, {
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "DefaultFlag",
|
|
columnLabel: "默认格式",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
},
|
|
|
|
],
|
|
// 打印参数
|
|
printParamColumnList: [
|
|
{
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "parametername",
|
|
columnLabel: "参数名",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
}, {
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "parameterdesc",
|
|
columnLabel: "参数标题",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
}, {
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "optionvalue",
|
|
columnLabel: "参数值",
|
|
columnHidden: true,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
}, {
|
|
tableId: "common1001",
|
|
tableName: "common",
|
|
columnProp: "valuetype",
|
|
columnLabel: "参数类型",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: null,
|
|
format: null,
|
|
functionId: "this.$route.meta.menuId",
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
serialNumber: null,
|
|
columnType: null,
|
|
align: null
|
|
},
|
|
|
|
],
|
|
// 数据
|
|
// 可用模板列表
|
|
reportFileList: [],
|
|
// 选中模板列表
|
|
selectReportFileList: [],
|
|
selectReportString: '',
|
|
// 数量
|
|
orderInfo: {
|
|
userName: this.$store.state.user.name,
|
|
rollNo: '',
|
|
customerId: '',
|
|
totalQty: 0,
|
|
perBoxQty: 0,
|
|
boxQty: 0,
|
|
lastBoxQty: 0,
|
|
rollNos: [],
|
|
// 选中模板列表
|
|
reportFileList: [],
|
|
// 手工参数
|
|
param: []
|
|
},
|
|
// 记录打印参数
|
|
printParamList: [],
|
|
// 模板参数列表
|
|
reportParamList: [],
|
|
buttons: {
|
|
settingLanguageList: '按语言设置',
|
|
edit: '编辑',
|
|
delete: '删除',
|
|
deleteList: '批量删除',
|
|
cz: '操作',
|
|
search: '查询',
|
|
download: '导出',
|
|
settingTable: '设置列表',
|
|
defaultTable: '设置默认配置',
|
|
list: "列表",
|
|
addList: '批量添加',
|
|
settingLanguage: "按控件设置"
|
|
},
|
|
// 导出 end
|
|
buttonList: [
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '按语言设置',
|
|
objectId: 'settingLanguageList',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '编辑',
|
|
objectId: 'edit',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '删除',
|
|
objectId: 'delete',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '批量删除',
|
|
objectId: 'deleteList',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '操作',
|
|
objectId: 'cz',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '查询',
|
|
objectId: 'search',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '导出',
|
|
objectId: 'download',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '设置列表',
|
|
objectId: 'settingTable',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '设置默认配置',
|
|
objectId: 'defaultTable',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '列表',
|
|
objectId: 'list',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
},
|
|
{
|
|
functionId: "this.$route.meta.menuId",
|
|
languageValue: '按控件设置',
|
|
objectId: 'settingLanguage',
|
|
objectType: "button",
|
|
tableId: "common1001"
|
|
}
|
|
],
|
|
}
|
|
},
|
|
watch: {
|
|
orderInfo: {
|
|
handler: function (val, oldVal) {
|
|
if (this.orderInfo.totalQty > 0 && this.orderInfo.perBoxQty > 0) {
|
|
this.orderInfo.lastBoxQty = this.decimalUtil.mod(this.orderInfo.totalQty, this.orderInfo.perBoxQty)
|
|
if (this.decimalUtil.div(this.orderInfo.totalQty, this.orderInfo.perBoxQty) < 1) {
|
|
this.orderInfo.boxQty = 1
|
|
} else {
|
|
this.orderInfo.boxQty = this.decimalUtil.formatDown(this.decimalUtil.div(this.orderInfo.totalQty, this.orderInfo.perBoxQty), 0)
|
|
}
|
|
|
|
}
|
|
},
|
|
// 深度观察监听
|
|
deep: true
|
|
},
|
|
updateData: {
|
|
deep: true,
|
|
handler: function (newV, oldV) {
|
|
this.updateData.projectID = this.updateData.projectID.toUpperCase();
|
|
this.updateData.oriSOOrderNo = this.updateData.oriSOOrderNo.toUpperCase();
|
|
this.updateData.orderType = this.updateData.orderType.toUpperCase();
|
|
}
|
|
}
|
|
},
|
|
mounted() {
|
|
this.$nextTick(() => {
|
|
this.height = window.innerHeight - 800;
|
|
})
|
|
},
|
|
|
|
methods: {
|
|
closeDialog() {
|
|
this.visible = false
|
|
this.selectReportString = ''
|
|
this.reportParamList = []
|
|
},
|
|
init(val) {
|
|
this.visible = true
|
|
this.rollNos = val
|
|
this.searchBoxLabelSO()
|
|
},
|
|
// 调用bartender打印
|
|
bartenderPrint() {
|
|
|
|
if (!this.rollNos) {
|
|
this.$message.warning('请输入卷号')
|
|
return
|
|
}
|
|
if (this.selectReportFileList.length === 0) {
|
|
this.$message.warning('选择模板进行打印')
|
|
return
|
|
}
|
|
// const loading = this.$loading({
|
|
// lock: true,
|
|
// text: '正在打印',
|
|
// spinner: 'el-icon-loading',
|
|
// background: 'rgba(0, 0, 0, 0.7)'
|
|
// });
|
|
let rollNoList = this.rollNos.split(";")
|
|
this.orderInfo.reportFileList = this.selectReportFileList
|
|
this.orderInfo.param = this.reportParamList
|
|
this.orderInfo.rollNos = rollNoList
|
|
this.printParamList = JSON.parse(JSON.stringify(this.reportParamList))
|
|
printLabel(this.orderInfo).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.visible = false
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
// loading.close();
|
|
})
|
|
this.visible = false
|
|
},
|
|
// 获取订单信息
|
|
searchBoxLabelSO() {
|
|
|
|
if (!this.rollNos) {
|
|
this.$message.warning('请输入卷号')
|
|
return
|
|
}
|
|
let rollNoList = this.rollNos.split(";")
|
|
this.reportFileList = []
|
|
checkRollCustomer(rollNoList).then(({data}) => {
|
|
if (data.code === 0) {
|
|
getRollCustomer(rollNoList[0]).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.orderInfo.customerId = data.data.customerId ? data.data.customerId : '*'
|
|
let query = {
|
|
customerId: data.data.customerId ? data.data.customerId : '*',
|
|
reportFamily: '卷标签'
|
|
}
|
|
getReportFileByCustomer(query).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.reportFileList = data.dataList
|
|
this.$refs.reportFileTable.setCurrentRow(this.reportFileList[0]);
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
Object.assign(this.$data, this.$options.data.call(this.orderInfo));
|
|
Object.assign(this.$data, this.$options.data.call(this.selectReportString));
|
|
Object.assign(this.$data, this.$options.data.call(this.reportParamList));
|
|
}
|
|
})
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
},
|
|
// 获取订单数数据 和 打印 模板数据
|
|
getBoxSoAndReportFile() {
|
|
this.searchBoxLabelSO()
|
|
},
|
|
handleClick() {
|
|
|
|
},
|
|
// 选择模板
|
|
handleCurrentChange(val) {
|
|
if (!val) return
|
|
this.selectReportFileList = []
|
|
let query = {
|
|
reportId: val.reportid,
|
|
defaultFlag: val.DefaultFlag,
|
|
reportFile: val.Reportfile,
|
|
reportFamily: '卷标签',
|
|
customerId: this.orderInfo.customerId,
|
|
}
|
|
this.selectReportFileList.push(query)
|
|
this.searchReportSubFileList(query)
|
|
this.searchReportParameters(query)
|
|
|
|
},
|
|
// 获取子模版
|
|
searchReportSubFileList(val) {
|
|
let str = ''
|
|
str += val.reportId + ' | ' + val.reportFile + '\n'
|
|
this.selectReportString = str
|
|
getReportSubFileList(val).then(({data}) => {
|
|
if (data.code === 0) {
|
|
for (let item of data.data) {
|
|
str += item.reportid + ' | ' + item.Reportfile + '\n'
|
|
let reportFile = {
|
|
reportId: item.reportid,
|
|
defaultFlag: 'Y',
|
|
reportFile: item.Reportfile,
|
|
reportFamily: '外箱标签',
|
|
customerId: this.orderInfo.customerId,
|
|
}
|
|
this.selectReportFileList.push(reportFile)
|
|
}
|
|
this.selectReportString = str
|
|
}
|
|
})
|
|
|
|
},
|
|
// 获取柱模版打印参数
|
|
searchReportParameters(val) {
|
|
let printParamList = JSON.parse(JSON.stringify(this.printParamList))
|
|
getReportParameters(val.reportId).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.reportParamList = data.data
|
|
if (printParamList) {
|
|
for (let item1 of printParamList) {
|
|
for (let item2 of this.reportParamList) {
|
|
if (item1.parametername === item2.parametername) {
|
|
item2.optionvalue = item1.optionvalue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
},
|
|
/*添加定制的css类*/
|
|
customerCellClassName({row, column, rowIndex, columnIndex}) {
|
|
if (columnIndex === 2) {
|
|
return 'customer-text-cell';
|
|
}
|
|
},
|
|
|
|
/*添加定制的cess样式*/
|
|
customerCellStyle({row, column, rowIndex, columnIndex}) {
|
|
if (columnIndex === 2) {
|
|
return 'padding: 0px 0px;';
|
|
}
|
|
},
|
|
},
|
|
created() {
|
|
|
|
}
|
|
}
|
|
</script>
|
|
<style scoped>
|
|
|
|
/deep/ .customer-tab .el-tabs__content {
|
|
padding: 0px !important;
|
|
}
|
|
|
|
/deep/ .sl-el .el-tabs__item {
|
|
padding: 0 13px;
|
|
height: 26px;
|
|
line-height: 26px;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/deep/ div.table-input {
|
|
padding: 0px 0px;
|
|
height: 25px !important;
|
|
}
|
|
|
|
/*table中input*/
|
|
div.table-input /deep/ input.el-input__inner {
|
|
padding: 0px 0px;
|
|
height: 23px !important;
|
|
text-align: right;
|
|
}
|
|
</style>
|