A-Z-1-9 自動增加 (生成4-2-2-2-2長度的代碼)

// 4-2-2-2-2  後面兩位到99 字母增加
export const transformNumToLetter = (num) => { // 0-1044 數值 前35位 A-Z-1-9
  const letters = [
    'A', 'B', 'C', 'D', 'E', 'F', 'G',
    'H', 'I', 'J', 'K', 'L', 'M', 'N',
    'O', 'P', 'Q', 'R', 'S', 'T',
    'U', 'V', 'W', 'X', 'Y', 'Z',
    '1', '2', '3', '4', '5', '6', '7', '8', '9'
  ]
  let letter = ''
  const loopNum = parseInt(num / 35)
  if (loopNum > 0) {
    letter += transformNumToLetter(loopNum - 1)
  }
  letter += letters[num % 35]
  return letter
}
// 使用
// transformNumToLetter(num) // num 爲0-1044


// 科目代碼
export const autoCreateSubjectCode = (tempRow) => { // 0-1044 數值 前35位 A-Z-1-9
  var kmdm = '01'
  var kmdmbf = 1
  console.log(34343)
  if (tempRow.children && tempRow.children.length) { // 子級有多個
    const temp = Math.max.apply(Math, tempRow.children.filter((item) => String(item.kmdm).length < 15).map(item => { return item.kmdmbf }))
    kmdmbf = temp + 1
    if (kmdmbf <= 99) { // 小於 99
      kmdm = tempRow.kmdm + (kmdmbf < 10 ? '0' + kmdmbf : kmdmbf)
    } else if (kmdmbf > 99 && kmdmbf < 126) { // 99 - 126    A-Z-1-9
      kmdm = tempRow.kmdm + '9' + transformNumToLetter(kmdmbf - 100)
    } else if (kmdmbf >= 126 && kmdmbf < 135) { // 兩位字母
      kmdm = tempRow.kmdm + 'A' + transformNumToLetter(kmdmbf - 100)
    } else if (kmdmbf >= 135 && kmdmbf <= 1044) { // 兩位字母
      kmdm = tempRow.kmdm + transformNumToLetter(kmdmbf - 100)
    }
  } else { // 子級爲0個
    kmdm = tempRow.kmdm + '01'
  }
  return {
    kmdm: kmdm,
    kmdmbf: kmdmbf
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章