コードレビューを改善するためのヒント

1. [最適化] 日付の書式設定、0埋め

改前:
formatDate(val){
    
    
    let d = new Date(val)
    let month = (d.getMonth() +1).toString()
    let day = (d.getDate()).toString()
    let year = d.getFullYear()
    if(month.length < 2) month = '0' + month // todo
    if(day.length < 2) day = '0' + day
    return [year, month, day].join('-')
},
改后:
month = mouth.padStart(2, '0')

2. [欠点] タイマ関数を記述する場合、
タイマの最初のパラメータは関数の結果ではなく関数である必要があり、this.handleqQuery の戻り値は関数ではないため、このメソッドはエラーを報告します。

改前:
onLoop() {
    
     // 测试60s执行一次
    this.timer = setInterval(this.handleqQuery, 300000) // todo
},
改后:
onLoop() {
    
     // 测试60s执行一次
    this.timer = setInterval(()=>{
    
    
    	this.handleqQuery()
	}, 300000)
},

3. [最適化] キーマッチングにより目標値を取得

改前:
let color = '';
switch (item.type){
    
    
    case '0':
        color = '#C6CBD8'  //灰色
        break
    case '1':
        color = '#67B662'  //绿色
        break
    case '2':
        color = ' #5AB9ED'  //蓝色
        break
    case '5':
        color = '#FFE329' // 黄色
        break
    case '3':
        color = '#E03523' //红色
        break
    case '4':
        color = '#E03523' //红色
        break
}
改后:
const colorList = new Map()
.set('0','#C6CBD8')
.set('1', '#67B662')
.set('2', '#5AB9ED')
.set('5', '#FFE329')
.set('3', '#E03523')
.set('4', '#E03523')
const color = colorList.get(item.type)

4. 冗長な 3 点式

改前:
this.berthMatStatus = batteryWorkShop.stgTyp.matStatus === "1" ? true : false

改后:
this.berthMatStatus = batteryWorkShop.stgTyp.matStatus === "1" 

5. 複数の項目を出力する場合は問題が発生しやすいため、entrys.next() を呼び出して配列を走査し、個別に出力します。

詳細 1: アセンブリ配列が事前定義された直接プッシュから printTasksMap.set(key, value) に変更されます。

//改之前:
if(item.printModeCode === '2003'){
    
    
    list2003.push(item)
    return
}
//改之后:
const tasks = printTasksMap.get(item.printModeCode) || []
tasks.push(item)
printTasksMap.set(item.printModeCode, tasks)

詳細 2: 配列を直接接続する代わりに、印刷用に配列のentrys.next().valueを取得します。

//改之前:
this.$print(printList.get('3006'), {
    
    data: list3006}, {
    
    
    copies: list3006[0].printQty
})
        
//改之后:
const entries = printTasksMap.entries()
this.doPrint(entries)

this.doPrint = (entries) => {
    
    
    // 手动调用next方法进行遍历
    const data = entries.next().value
    if (data) {
    
    
        const [key, value] = data
        this.$print(printList.get(key), {
    
    data: value}, {
    
    
            copies: value[0].printQty
        }).then(() => {
    
    
            this.doPrint(entries)
        })
    }
}

全文:

// 多个打印模板,定义对应关系
const printList = new Map()
.set('1000', '20221020154236111')
.set('1001', '20221024210454724')
.set('1002', '20221027105631695')
.set('1003', '20221028145650927')
.set('1004', '20221025151021223')

改之前:
this.callPrinter = (para) => {
    
    
    let list2003 = []
    let list2006 = []
    let list3003 = []
    let list3006 = []
    // 1001、1004模板左上角显示序号
    let len1001 = para.filter(item => {
    
    
        return item.printModeCode === '1001'
    }).length
    let len1004 = para.filter(item => {
    
    
        return item.printModeCode === '1004'
    }).length
    let num1001 = 0
    let num1004 = 0
    para.forEach((item,index) => {
    
    // 市场配件部包装作业单左上角显示序号
        if(item.printModeCode === '1001'){
    
    
            num1001 = num1001 + 1
            item.sequence = len1001 + '-' + num1001
        }
        if(item.printModeCode === '1004'){
    
    
            num1004 = num1004 + 1
            item.sequence = '' + len1004 + '-' + num1004
        } 
        
        if(item.printModeCode === '2003'){
    
    
            list2003.push(item)
            return
        }else if(item.printModeCode === '2006'){
    
    
            list2006.push(item)
            return
        }else if(item.printModeCode === '3003'){
    
    
            list3003.push(item)
            return
        }else if(item.printModeCode === '3006'){
    
    
            list3006.push(item)
            return
        }else{
    
    
            this.$print(printList.get(item.printModeCode), {
    
    data: [item]}, {
    
    
                copies: item.printQty
            })
        }

    })
    if(list2003.length > 0){
    
    
        this.$print(printList.get('2003'), {
    
    data: list2003}, {
    
    
            copies: list2003[0].printQty
        })
    }
    if(list2006.length > 0){
    
    
        this.$print(printList.get('2006'), {
    
    data: list2006}, {
    
    
            copies: list2006[0].printQty
        })
    }
    if(list3003.length > 0){
    
    
        this.$print(printList.get('3003'), {
    
    data: list3003}, {
    
    
            copies: list3003[0].printQty
        })
    }
    if(list3006.length > 0){
    
    
        this.$print(printList.get('3006'), {
    
    data: list3006}, {
    
    
            copies: list3006[0].printQty
        })
    }

}

改之后:
this.callPrinter = (para) => {
    
    
    // 1001、1004模板左上角显示序号
    let len1001 = para.filter(item => {
    
    
        return item.printModeCode === '1001'
    }).length
    let len1004 = para.filter(item => {
    
    
        return item.printModeCode === '1004'
    }).length
    let num1001 = 0
    let num1004 = 0
    const printTasksMap = new Map()
    para.forEach((item) => {
    
    
        item.lackNum = Number(item.matQty) - Number(item.finishQty)
        item.newStartTime = new Date().format("yyyy-MM-dd HH:mm:ss")
        // 市场配件部包装作业单左上角显示序号
        if(item.printModeCode === '1001'){
    
    
            num1001 = num1001 + 1
            item.sequence = len1001 + '-' + num1001
        }
        if(item.printModeCode === '1004'){
    
    
            num1004 = num1004 + 1
            item.sequence = '' + len1004 + '-' + num1004
        } 
        // 按打印标签号组装map,值为该标签所有打印项组成的数组
        const tasks = printTasksMap.get(item.printModeCode) || []
        tasks.push(item)
        printTasksMap.set(item.printModeCode, tasks)
    })
    const entries = printTasksMap.entries()
    console.log('entries',entries)
    this.doPrint(entries)
}

this.doPrint = (entries) => {
    
    
    // 手动调用next方法进行遍历
    const data = entries.next().value
    if (data) {
    
    
        const [key, value] = data
        this.$print(printList.get(key), {
    
    data: value}, {
    
    
            copies: value[0].printQty
        }).then(() => {
    
    
            this.doPrint(entries)
        })
    }
}

おすすめ

転載: blog.csdn.net/weixin_43361722/article/details/131804595