schangxiang@126.com
2025-09-17 c0e20b1b0f1298cdc0af0037d60e74d51e364501
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<template>
    <view class="print-material-label-page">
        <cu-custom bgColor="bg-white" :isBack="true">
            <block slot="backText">
            </block>
            <block slot="content">工量具标签</block>
        </cu-custom>
        <view class="page-content">
            <u-form :model="materialForm" ref="materialRef" label-position="top" style="width: 100%;">
                <u-row style="padding: 0 0 0 15rpx;">
                    <u-col span="12">
                        <u-form-item label="工量具编号:" prop="materialCode" required >
                            <u-input v-model.trim="materialForm.materialCode"  placeholder="请输入或录入工量具编号"></u-input>
                        </u-form-item>
                    </u-col>
                </u-row>
            </u-form>
            <view class="btns-view">
                <button type="primary" @click="onPrint">打 印</button>
            </view>
        </view>
    </view>
</template>
 
<script>
import BluePrint from './bluePrint.js'
import {getWareToolInfo} from '../../api/print.js'
export default {
    name:'printWareToolInfo',
    data(){
        return {
            materialForm:{ //物料请求数据
                materialCode: ''
            },
            materialRules: { //rules
                materialCode: [{required: true,message: '工量具编号不能为空',trigger: 'blur'}]
            }
        }
    },
    methods:{
        getDate(){
            const date = new Date();
            let year = date.getFullYear().toString();
            //月
            let month = date.getMonth() + 1;
            month = month >= 10 ? month : "0"+month;
            //日
            let day = date.getDate();
            day = day >= 10 ? day : "0"+day;
            return year + month + day;
        },
        onPrint(){
            this.$refs.materialRef.validate(vali => {
                if(vali) {
                    //获取数据\
                    getWareToolInfo(this.materialForm).then(res => {
                        if(Array.isArray(res.data.rows) && res.data.rows.length == 1) {
                            const result = res.data.rows[0];
                            let ptintContext = [
                                {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false},
                                {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false},
                                {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false},
                                /* 以上空数据,为防止丢包时打印不正常 */
                                {type:'line',x1:3,y1:3,x2:565,y2: 3,width:2},
                                {type:'line',x1:3,y1:3,x2:3,y2: 345,width:2},
                                {type:'line',x1:3,y1:345,x2:565,y2: 345,width:2},
                                {type:'line',x1:565,y1:345,x2:565,y2:3,width:2},
                                {type:'text',x:80,y:15,text:'牧野汽车装备(武汉)有限公司',size:3,rotate:0,bold:1,underline:false,reverse:false},
                                {type:'line',x1:3,y1:60,x2:565,y2:60,width:2},
                                {type:'text',x:10,y:75,text:`工量具编号: ${result.code}`,size:2,rotate:0,bold:1,underline:false,reverse:false},
                                {type:'line',x1:3,y1:110,x2:380,y2:110,width:2},
                                {type:'text',x:10,y:125,text:`工量具名称: ${result.name}`,size:2,rotate:0,bold:1,underline:false,reverse:false},
                                {type:'line',x1:3,y1:160,x2:380,y2:160,width:2},
                                {type:'text',x:10,y:175,text:`单位: ${result.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false},
                                {type:'line',x1:3,y1:210,x2:565,y2:210,width:2},
                                {type:'line',x1:380,y1:60,x2:380,y2:210,width:2},
                                {type:'qr',x:410,y:70,text: result.code,width:6,level:1},
                                {type:'text',x:10,y:225,text:`规格型号: ${result.specificationModel}`,size:2,rotate:0,bold:1,underline:false,reverse:false},
                                {type:'line',x1:3,y1:260,x2:565,y2:260,width:2},
                                {type:'text',x:120,y:290,text:'MAKINO J(CHINA) CO.LTD',size:3,rotate:0,bold:1,underline:false,reverse:false},
                                
                            ]
                            
                            BluePrint.print(this.$store,ptintContext).then(()=>{
                                uni.showToast({
                                    title:'打印成功',
                                    duration: 2000
                                })
                                this.materialForm.materialCode = '';
                            }).catch(()=>{
                                uni.showToast({
                                    title:'打印失败',
                                    duration: 2000
                                })
                            })
                        }else {
                            uni.showToast({
                                title:'物料信息不存在',
                                duration: 2000,
                                type: 'warning'
                            })
                        }
                    })
                }else {
                    uni.showToast({
                        title:'表单验证失败',
                        type: 'warning'
                    })
                }
            })
        }
    }
}
</script>
 
<style lang="scss" scoped>
.print-material-label-page{
    .page-content{
        display: flex;
        flex-direction: column;
        align-items: center;
        $blockWidth:90%;
        .label-show,.btns-view{
            width: $blockWidth;
            box-sizing: border-box;
        }
        .label-show{
            margin-top: 30upx;
            background-color: #fff;
            border-radius: 20upx;
        }
        .btns-view{
            margin-top: 30upx;
        }
    }
 
}
</style>