/**
 * 生成密码字符串
 * 33~47：!~/
 * 48~57：0~9
 * 58~64：:~@
 * 65~90：A~Z
 * 91~96：[~`
 * 97~122：a~z
 * 123~127：{~
 * @param length 长度
 * @param hasNum 是否包含数字 1-包含 0-不包含
 * @param hasChar 是否包含字母 1-包含 0-不包含
 * @param hasSymbol 是否包含其他符号 1-包含 0-不包含
 * @param caseSense 是否大小写敏感 1-敏感 0-不敏感
 * @param lowerCase 是否只需要小写，只有当hasChar为0且caseSense为1时起作用 1-全部小写 0-全部大写
 * 用法：let initPwd = this.$initPwd(8, 1, 1, 0, 1, 1);
 */
function initPwd(length, hasNum, hasChar, hasSymbol, caseSense, lowerCase) {
  var m = "";
  length = length - 1;
  if (hasNum == "0" && hasChar == "0" && hasSymbol == "0") return m;
  for (var i = length; i >= 0; i--) {
    var num = Math.floor(Math.random() * 94 + 33);
    if (
      (hasNum == "0" && num >= 48 && num <= 57) ||
      (hasChar == "0" &&
        ((num >= 65 && num <= 90) || (num >= 97 && num <= 122))) ||
      (hasSymbol == "0" &&
        ((num >= 33 && num <= 47) ||
          (num >= 58 && num <= 64) ||
          (num >= 91 && num <= 96) ||
          (num >= 123 && num <= 127)))
    ) {
      i++;
      continue;
    }
    m += String.fromCharCode(num);
  }
  if (caseSense == "0") {
    m = lowerCase == "0" ? m.toUpperCase() : m.toLowerCase();
  }
  return m;
}
export default {
  initPwd
};
