工单管理打印功能 ( npm install print-js --save )

master
wws 1 year ago
parent 0bb0b55f0b
commit f2ca16bb18

@ -47,6 +47,7 @@
"jsencrypt": "3.0.0-rc.1",
"moment": "^2.29.4",
"nprogress": "0.2.0",
"print-js": "^1.6.0",
"quill": "1.3.7",
"screenfull": "5.0.2",
"sortablejs": "1.10.2",

@ -1,5 +1,12 @@
import request from '@/utils/request'
export function getWorkOrders(workorderCode) {
return request({
url:'/plan/pro/workorder/getWorkOrders/'+workorderCode,
method:'get'
})
}
// 校验工单是否可以修改
export function checkWorkOrder(workorderId){
return request({

@ -37,6 +37,8 @@ import DictTag from '@/components/DictTag'
import VueMeta from 'vue-meta'
// 字典数据组件
import DictData from '@/components/DictData'
// 打印插件
import Print from 'print-js'
// 全局方法挂载
Vue.prototype.getDicts = getDicts

@ -138,7 +138,18 @@
v-hasPermi="['mes:pro:workorder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<el-col :span="1.5">
<el-button
type="success"
plain
:disabled="single"
icon="el-icon-download"
size="mini"
@click="showPrint"
v-hasPermi="['mes:pro:workorder:export']"
>打印预览</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="workorderList" @selection-change="handleSelectionChange">
@ -182,6 +193,101 @@
</el-table-column>
</el-table>
<!-- 打印预览弹出层 -->
<el-dialog
title="工单信息"
:visible.sync="printDialogVisible"
width="1450px"
>
<div id="printFrom" class="my-print-box">
<el-form :ref="formRef" :model="form" :rules="validateRules">
<!-- 表头-工单信息 -->
<el-row class="my-print-head">
<el-col :offset="10" :span="4">生产工单</el-col>
</el-row>
<!-- 导航栏 -->
<el-row class="my-print-nav">
<el-col :span="4">工厂:{{printData.factory}}</el-col>
<el-col :span="4">工作中心:{{printData.workCenter}}</el-col>
<el-col :span="4">生产日期:{{printData.productDate}}</el-col>
<el-col :span="4">打印日期:{{printData.printDate}}</el-col>
<el-col :span="4">页次: 1/ 1</el-col>
</el-row>
<!-- 主数据 -->
<el-table
v-if="refreshNewWorkerTable"
v-loading="newWorkerLoading"
class="my-print-table"
:data="printData.workTable"
border
style="width: 100%">
<el-table-column
type="index"
label="序号"
width="50">
</el-table-column>
<el-table-column
prop="workorderCode"
label="工单号"
width="180">
</el-table-column>
<el-table-column
prop="productName"
label="物料名称"
width="180">
</el-table-column>
<el-table-column
prop="unit"
label="单位">
</el-table-column>
<el-table-column
prop="orderCode"
label="生产订单">
</el-table-column>
<el-table-column
prop="quantityProduced"
label="已生产数量">
</el-table-column>
<el-table-column
prop="quantitySplit"
label="拆分数量">
</el-table-column>
<el-table-column
prop="routeCode"
label="工艺编码">
</el-table-column>
<el-table-column
prop="prodLineCode"
label="产线设备">
</el-table-column>
<el-table-column label="班次" align="center" prop="shiftId">
<template slot-scope="scope">
<dict-tag :options="dict.type.shift_type" :value="scope.row.shiftId"/>
</template>
</el-table-column>
<el-table-column label="工单状态" align="center" prop="status" >
<template slot-scope="scope">
<dict-tag :options="dict.type.workorder_type" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="产品类型" align="center" prop="prodType" >
<template slot-scope="scope">
<dict-tag :options="dict.type.product_type" :value="scope.row.prodType"/>
</template>
</el-table-column>
</el-table>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handlePrint(printData)"> </el-button>
</span>
</el-dialog>
<pagination
v-show="total>0"
:total="total"
@ -324,6 +430,7 @@
<script>
import {
getWorkOrders,
listWorkorder,
getWorkorder,
delWorkorder,
@ -342,14 +449,28 @@ export default {
dicts: ['product_type','workorder_type','shift_type'],
data() {
return {
formRef: 'form',
validateRules: [],
printData: {
printable: 'printFrom',
ignore: ['no-print'],
workCenter: "暂无数据",
printDate: null,
factory: null,
productDate: null,
workTable: [],
},
printDialogVisible: false,
// form
workForm: {},
// --
selectWork: null,
//
workerLoading: false,
newWorkerLoading: false,
//
refreshWorkerTable: true,
refreshNewWorkerTable: true,
// list
splitData: [],
//
@ -458,6 +579,40 @@ export default {
this.getList();
},
methods: {
handlePrint(params) {
printJS({
printable: params.printable, // 'printFrom', // id
type: params.type || 'html',
maxWidth: 1500, //
font_size: "",//
header: params.header, // '',
targetStyles: ['*'],
style: '@page {margin:0 10mm};', // -
ignoreElements: params.ignore || [], // ['no-print']
properties: params.properties || null
})
},
//
showPrint() {
//
this.printData.workCenter = "暂无数据";
this.printData.printDate = null;
this.printData.workTable = [];
this.printData.factory = null;
this.printData.productDate = null;
//
this.printDialogVisible = true;
this.printData.printDate = moment(new Date()).format('YYYY.MM.DD');
this.newWorkerLoading = true // true
this.refreshNewWorkerTable = false // refreshProTablefalse
getWorkOrders(this.selectWork.workorderCode).then(response => {
this.printData.workTable = response.data;
this.printData.factory = response.data[0].factoryCode;
this.printData.productDate = response.data[0].productDate;
this.refreshNewWorkerTable = true // refreshProTabletrue
this.newWorkerLoading = false // false
})
},
/** 动态添加表单 */
addField() {
//
@ -927,5 +1082,16 @@ export default {
.my-margin {
margin-top: 40px;
margin-bottom: 10px;
}
.my-print-head {
margin-top: 20px;
font-weight: bold;
}
.my-print-nav {
margin-top: 15px;
margin-bottom: 15px;
}
.my-print-table {
}
</style>

Loading…
Cancel
Save