"use strict"; const common_vendor = require("../../common/vendor.js"); const _sfc_main = { __name: "add", setup(__props) { const idTypes = [ { value: "macauId", label: "青岛居民身份证" }, { value: "mainlandId", label: "内地居民身份证" }, { value: "hkId", label: "香港居民身份证" }, { value: "passport", label: "护照" }, { value: "other", label: "其他证件" } ]; const idTypeIndex = common_vendor.ref(0); const relationIndex = common_vendor.ref(-1); const idTypeLabels = common_vendor.computed(() => idTypes.map((item) => item.label)); const relations = [ { value: "self", label: "本人" }, { value: "parent", label: "父母" }, { value: "spouse", label: "配偶" }, { value: "child", label: "子女" }, { value: "grandparent", label: "祖父母" }, { value: "sibling", label: "兄弟姐妹" }, { value: "other", label: "其他" } ]; const relationLabels = common_vendor.computed(() => relations.map((item) => item.label)); const form = common_vendor.ref({ name: "", idType: "macauId", // 默认选中青岛居民身份证 idNumber: "", relation: "", cardNo: "", phone: "", verifyCode: "", isDefault: false }); const cardOption = common_vendor.ref("bind"); const countdown = common_vendor.ref(0); let timer = null; const idNumberError = common_vendor.ref(""); const idNumberMaxLength = common_vendor.computed(() => { const type = idTypes[idTypeIndex.value].value; return type === "mainlandId" ? 18 : 20; }); const idNumberPlaceholder = common_vendor.computed(() => { const type = idTypes[idTypeIndex.value].value; switch (type) { case "macauId": return "请输入8位青岛居民身份证号码"; case "mainlandId": return "请输入18位内地居民身份证号码"; case "hkId": return "请输入香港居民身份证号码"; case "passport": return "请输入护照号码"; default: return "请输入证件号码"; } }); const idNumberRules = { macauId: { pattern: /^[1-9]\d{7}$/, message: "请输入8位数字的青岛居民身份证号码" }, mainlandId: { pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: "请输入正确的内地居民身份证号码" }, hkId: { pattern: /^[A-Z]{1,2}[0-9]{6}\([0-9A]\)$/, message: "请输入正确的香港居民身份证号码" } }; const validateIdNumber = () => { if (!form.value.idNumber) { idNumberError.value = "请输入证件号码"; return false; } const type = idTypes[idTypeIndex.value].value; const rule = idNumberRules[type]; if (rule) { const reg = rule.pattern; if (!reg.test(form.value.idNumber)) { idNumberError.value = rule.message; return false; } } idNumberError.value = ""; return true; }; const validatePhone = (phone) => { const macauMobile = /^6\d{7}$/; const mainlandMobile = /^1[3-9]\d{9}$/; const hkMobile = /^[569]\d{7}$/; return macauMobile.test(phone) || mainlandMobile.test(phone) || hkMobile.test(phone); }; const sendVerifyCode = () => { if (countdown.value > 0) return; if (!form.value.phone) { common_vendor.index.showToast({ title: "请输入手机号码", icon: "none" }); return; } if (!validatePhone(form.value.phone)) { common_vendor.index.showToast({ title: "请输入正确的手机号码", icon: "none" }); return; } countdown.value = 60; timer = setInterval(() => { countdown.value--; if (countdown.value <= 0) { clearInterval(timer); timer = null; } }, 1e3); }; const validateCardNo = (cardNo) => { const kiangWuCard = /^KW\d{8}$/; const mustCard = /^MUST\d{6}$/; return kiangWuCard.test(cardNo) || mustCard.test(cardNo); }; const onIdTypeChange = (e) => { const index = parseInt(e.detail.value); idTypeIndex.value = index; form.value.idType = idTypes[index].value; form.value.idNumber = ""; idNumberError.value = ""; }; const onRelationChange = (e) => { const index = parseInt(e.detail.value); relationIndex.value = index; form.value.relation = relations[index].value; }; const canSubmit = common_vendor.computed(() => { const { name, idNumber, relation, phone } = form.value; if (!name || !idNumber || !relation || !phone) return false; if (idNumberError.value) return false; if (cardOption.value === "bind" && !form.value.cardNo) return false; return true; }); const submitForm = () => { if (!canSubmit.value) return; if (!validateIdNumber()) return; if (cardOption.value === "bind") { if (!validateCardNo(form.value.cardNo)) { common_vendor.index.showToast({ title: "请输入正确的就诊卡号", icon: "none" }); return; } } if (!validatePhone(form.value.phone)) { common_vendor.index.showToast({ title: "请输入正确的手机号码", icon: "none" }); return; } common_vendor.index.showLoading({ title: "保存中..." }); common_vendor.index.__f__("log", "at pages/patient/add.vue:372", "提交表单:", form.value); setTimeout(() => { common_vendor.index.hideLoading(); common_vendor.index.showToast({ title: "保存成功", icon: "success" }); setTimeout(() => { common_vendor.index.navigateBack(); }, 1500); }, 1e3); }; onUnmounted(() => { if (timer) { clearInterval(timer); timer = null; } }); const currentIdType = common_vendor.computed(() => { if (idTypeIndex.value >= 0 && idTypes[idTypeIndex.value]) { return idTypes[idTypeIndex.value].label; } return "请选择证件类型"; }); const currentRelation = common_vendor.computed(() => { if (relationIndex.value >= 0 && relations[relationIndex.value]) { return relations[relationIndex.value].label; } return "请选择关系"; }); return (_ctx, _cache) => { return common_vendor.e({ a: form.value.name, b: common_vendor.o(($event) => form.value.name = $event.detail.value), c: common_vendor.t(currentIdType.value), d: idTypeLabels.value, e: idTypeIndex.value, f: common_vendor.o(onIdTypeChange), g: idNumberPlaceholder.value, h: idNumberMaxLength.value, i: common_vendor.o(validateIdNumber), j: form.value.idNumber, k: common_vendor.o(($event) => form.value.idNumber = $event.detail.value), l: idNumberError.value }, idNumberError.value ? { m: common_vendor.t(idNumberError.value) } : {}, { n: common_vendor.t(currentRelation.value), o: relationLabels.value, p: relationIndex.value, q: common_vendor.o(onRelationChange), r: cardOption.value === "bind" ? 1 : "", s: common_vendor.o(($event) => cardOption.value = "bind"), t: cardOption.value === "new" ? 1 : "", v: common_vendor.o(($event) => cardOption.value = "new"), w: cardOption.value === "bind" }, cardOption.value === "bind" ? { x: form.value.cardNo, y: common_vendor.o(($event) => form.value.cardNo = $event.detail.value), z: form.value.phone, A: common_vendor.o(($event) => form.value.phone = $event.detail.value), B: form.value.verifyCode, C: common_vendor.o(($event) => form.value.verifyCode = $event.detail.value), D: common_vendor.t(countdown.value ? `${countdown.value}s` : "获取验证码"), E: !!countdown.value, F: common_vendor.o(sendVerifyCode) } : { G: form.value.phone, H: common_vendor.o(($event) => form.value.phone = $event.detail.value) }, { I: form.value.isDefault, J: common_vendor.o((e) => form.value.isDefault = e.detail.value), K: !canSubmit.value, L: common_vendor.o(submitForm), M: common_vendor.gei(_ctx, "") }); }; } }; wx.createPage(_sfc_main); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/patient/add.js.map