|
|
const leftColor = {
|
|
|
HZ: "#008c5e",
|
|
|
HL: "#008c5e",
|
|
|
HO: "#008c5e",
|
|
|
HF: "#008c5e",
|
|
|
NZ: "#7f8c95",
|
|
|
NL: "#7f8c95",
|
|
|
NO: "#7f8c95",
|
|
|
NF: "#7f8c95",
|
|
|
}
|
|
|
const rightTopColor = {
|
|
|
HZ: "#008c5e",
|
|
|
HL: "red",
|
|
|
HO: "#7f8c95",
|
|
|
HF: "#008c5e",
|
|
|
NZ: "#008c5e",
|
|
|
NL: "red",
|
|
|
NO: "#7f8c95",
|
|
|
NF: "#008c5e",
|
|
|
}
|
|
|
|
|
|
export function handleColor(data) {
|
|
|
|
|
|
if (checkType(data) == "array") {
|
|
|
data.map((item) => {
|
|
|
if (!item.color) {
|
|
|
item.leftColor = "#7b75ff";
|
|
|
item.rightTopColor = "#7b75ff";
|
|
|
return;
|
|
|
}
|
|
|
for (let key in leftColor) {
|
|
|
if (item.color == key) {
|
|
|
item.leftColor = leftColor[key];
|
|
|
item.rightTopColor = rightTopColor[key];
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
return data;
|
|
|
} else if (checkType(data) == "object") {
|
|
|
if (!data.color) {
|
|
|
data.leftColor = "#7b75ff";
|
|
|
data.rightTopColor = "#7b75ff";
|
|
|
return;
|
|
|
}
|
|
|
for (let key in leftColor) {
|
|
|
if (data.color == key) {
|
|
|
data.leftColor = leftColor[key];
|
|
|
data.rightTopColor = rightTopColor[key];
|
|
|
}
|
|
|
}
|
|
|
return data;
|
|
|
} else {
|
|
|
return data;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function checkType(value) {
|
|
|
if (Array.isArray(value)) {
|
|
|
return "array";
|
|
|
} else if (value !== null && typeof value === "object") {
|
|
|
return "object";
|
|
|
} else {
|
|
|
return "neither";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
export function validateAndParseIDCard(idCard, type) {
|
|
|
// 验证身份证号格式
|
|
|
const idCardPattern =
|
|
|
/^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9Xx])$/;
|
|
|
if (!idCardPattern.test(idCard)) {
|
|
|
return "-";
|
|
|
}
|
|
|
|
|
|
// 提取出生年月
|
|
|
const birthYear =
|
|
|
idCard.length === 18 ?
|
|
|
idCard.substring(6, 10) :
|
|
|
`19${idCard.substring(6, 8)}`;
|
|
|
const birthMonth =
|
|
|
idCard.length === 18 ? idCard.substring(10, 12) : idCard.substring(8, 10);
|
|
|
const birthDay =
|
|
|
idCard.length === 18 ? idCard.substring(12, 14) : idCard.substring(10, 12);
|
|
|
|
|
|
// 计算年龄
|
|
|
const today = new Date();
|
|
|
const birthDate = new Date(`${birthYear}-${birthMonth}-${birthDay}`);
|
|
|
let age = today.getFullYear() - birthDate.getFullYear();
|
|
|
if (
|
|
|
today.getMonth() < birthDate.getMonth() ||
|
|
|
(today.getMonth() === birthDate.getMonth() &&
|
|
|
today.getDate() < birthDate.getDate())
|
|
|
) {
|
|
|
age--;
|
|
|
}
|
|
|
|
|
|
// 提取性别(第17位,奇数为男,偶数为女)
|
|
|
const genderCode =
|
|
|
idCard.length === 18 ? idCard.substring(16, 17) : idCard.substring(14, 15);
|
|
|
const gender = genderCode % 2 === 0 ? "女" : "男";
|
|
|
|
|
|
// 根据type返回对应的信息
|
|
|
switch (type) {
|
|
|
case "年龄":
|
|
|
return age;
|
|
|
case "性别":
|
|
|
return gender;
|
|
|
case "出生年月":
|
|
|
return `${birthYear}-${birthMonth}-${birthDay}`;
|
|
|
default:
|
|
|
return "无效的type参数";
|
|
|
}
|
|
|
} |