const _my = require("../../__antmove/api/index.js")(my); const wx = _my; // components/three_yards/three_yards.js const upload_image = require("../../utils/upload/upload_image"); import international from "../../international/appointment_scence/index"; import { getXcInfo, sendMessage, getJkmAndHs } from "../../utils/api/three_yards"; const app = getApp(); Component({ options: { observers: true, lifetimes: true }, /** * 组件的属性列表 */ properties: { // 语言 language: { type: String, value: "ch" }, // 手机号 xcPhone: { type: Number }, //时间秒 moMsgWait: { type: Number, value: 60 }, //验证码长度 codeLength: { type: Number, value: 6 }, //预约开始时间 startTime: { type: String }, //核酸时长(单位小时) hsHour: { type: Number }, //三码 1-健康码 2-核酸 3-行程码 threeCodeList: { type: Array }, //楼宇id buildingId: { type: Number } }, /** * 组件的初始数据 */ data: { international: international, //国际化语言包 form: { // xc: null, //行程信息1 代表没有去过高风险地区 2 代表去过高风险地区 3 代表用户没有行程记录 // hs: null, //核酸 // jkm: null, //健康码,1绿2黄3红 // xcPhone: null, }, moDisabled: false, //验证码是否可点击 moCodeMsg: "获取验证码", //验证码文字 focus: false, // 隐藏的输入框是否获取焦点 codeVal: [], //验证码 inputCodeFocus: [] //验证码样式 }, /** * 组件的方法列表 */ methods: { getValue(e) { let that = this; let { form } = this.data; if (e.currentTarget.dataset.type == "xcPhone") { form[e.currentTarget.dataset.type] = e.detail.value; } else { wx.chooseMedia({ count: 1, mediaType: ["image"], sizeType: ["original"], sourceType: ["album", "camera"], success(res) { var image = { url: res.tempFiles[0].tempFilePath }; wx.showLoading({ title: "上传中~" }); upload_image(image).then(img => { wx.hideLoading(); form[e.currentTarget.dataset.type] = img.url; that.setData({ form }); that.verifyForm(); }).catch(() => { wx.hideLoading(); }); } }); } }, // 校验是否填写完整 verifyForm() { let { form } = this.data; let isthreeYards = form; for (let key in form) { if (form[key] == "") { isthreeYards = false; } } this.triggerEvent("isthreeYards", isthreeYards); }, // //删除照片 DelImg(e) { let that = this; let form = this.data.form; wx.showModal({ title: "提示", content: "确定删除?", cancelText: "取消", confirmText: "确定", success: res => { if (res.confirm) { form[e.currentTarget.dataset.type] = ""; that.setData({ form }); that.verifyForm(); } } }); }, // 预览图片 previewImg(event) { // 拿到图片的地址url let currentUrl = event.currentTarget.dataset.src; // 微信预览图片的方法 wx.previewImage({ current: currentUrl, // 图片的地址url urls: [currentUrl] // 预览的地址url }); }, // 获取验证码 getCode() { if (this.data.form.xcPhone) { this.setData({ moDisabled: true }); wx.showLoading({ title: "发送中..." }); sendMessage({ phone: this.data.form.xcPhone }).then(res => { wx.hideLoading(); if (res.code == 0) { wx.showToast({ title: "验证码发送成功,请注意查收", icon: "none" }); this.setData({ focus: true }); var inter = setInterval(function () { if (this.data.moMsgWait < 1) { clearInterval(inter); this.setData({ moCodeMsg: "获取验证码", moMsgWait: 60, moDisabled: false }); return; } this.setData({ moCodeMsg: "重新发送(" + this.data.moMsgWait + ")", moMsgWait: this.data.moMsgWait - 1, moDisabled: true }); }.bind(this), 1000); } else { wx.showToast({ title: res.msg, icon: "none" }); this.setData({ moDisabled: true }); } }); } else { wx.showToast({ title: "手机号不能为空!", icon: "none" }); } }, // 长按 longPressInput() {}, // 失去焦点 blurInput() { this.inputCodeFocusInit(); this.setData({ focus: false }); }, // 获取焦点 tapInput() { let { codeLength, codeVal, inputCodeFocus } = this.data; if (codeVal.join("").length == codeLength) { inputCodeFocus[codeLength - 1] = true; } else { inputCodeFocus[codeVal.join("").length] = true; } this.setData({ focus: true, inputCodeFocus }); }, // 输入验证码 inputVal(e) { let value = e.detail.value; let { codeLength, codeVal, inputCodeFocus, focus } = this.data; inputCodeFocus = new Array(codeLength).fill(false); if (value.length > codeVal.join("").length) { inputCodeFocus[value.length - 1 >= 0 ? value.length - 1 : 0] = false; if (value.length == codeLength) { focus = false; } else { inputCodeFocus[value.length] = true; } } else { if (value.length == 0) { inputCodeFocus[0] = true; } else { inputCodeFocus[value.length - 1] = true; } } codeVal = codeVal.map((item, index) => { return value.split("")[index] || ""; }); this.setData({ codeVal, inputCodeFocus, focus }); // 判断参数是否填写完全,若完全,查询接口,接口返回成功,隐藏手机号和验证码两行 if (codeVal.join("").length == codeLength) { this.getXcInfo(); } }, // 获取行程信息 getXcInfo() { wx.showLoading({ title: "查询中.." }); let { form, codeVal } = this.data; form.verification = codeVal.join(""); getXcInfo({ verification: form.verification, phone: form.xcPhone, adminId: this.data.buildingId }).then(res => { if (res.code == 200) { form.xc = res.data; if (res.data == 3) { form.xcPhoto = ""; } this.setData({ form }); this.verifyForm(); } else { wx.showToast({ title: res.msg, icon: "none" }); } wx.hideLoading(); }); }, // 获取健康码和核酸信息 getJkmAndHs() { let { form } = this.data; let { userInfo } = app.data; wx.showLoading({ title: "查询账号配置~" }); getJkmAndHs({ idNumber: userInfo.idNumber, name: userInfo.username, phone: userInfo.phone, adminId: this.data.buildingId }).then(res => { if (res.data.jkmStatus == 1) { form.jkm = res.data.jkm; if (res.data.jkm != "绿码") { wx.showToast({ title: "健康码状态异常哦~", icon: "none" }); this.setData({ "form.unqualifiedJKM": "" }); } } else if (res.data.jkmStatus == 2) { form.jkmPhoto = ""; } // res.data.hsStatus = 1; // form.hsStatus = 1 if (res.data.hsStatus == 1) { // form.hsResultTime = res.data.hsResultTime || '2022-11-24 12:15:00' // form.hs = res.data.hs || '阴性' // res.data.hs = '阴性' let startTime_number = this.data.startTime ? Date.parse(new Date(this.data.startTime)) : Date.now(); let resultTime_number = Date.parse(new Date(form.hsResultTime)); if (startTime_number - resultTime_number >= this.data.hsHour * 60 * 60 * 1000 || res.data.hs !== "阴性") { wx.showToast({ title: "您不满足进入时拥有" + this.data.hsHour + "小时内阴性核酸报告", icon: "none" }); form.unqualifiedHS = ""; } else { form.unqualifiedHS = true; } } else if (res.data.hsStatus == 2) { setTimeout(() => { wx.showToast({ title: "您不满足进入时拥有" + this.data.hsHour + "小时内阴性核酸报告", icon: "none" }); setTimeout(() => { wx.hideToast(); }, 2000); }, 0); form.hsPhoto = ""; } this.setData({ form }); wx.hideLoading(); this.verifyForm(); }); }, //输入数据初始化 codeValInit() { this.data.codeVal = new Array(this.data.codeLength).fill(""); this.setData({ codeVal: this.data.codeVal }); }, //焦点数据初始化 inputCodeFocusInit() { this.data.inputCodeFocus = new Array(this.data.codeLength).fill(false); this.setData({ inputCodeFocus: this.data.inputCodeFocus }); }, antmoveAction: function () { //执行时动态赋值,请勿删除 } }, observers: { xcPhone: function (n) { if (n) { let { form } = this.data; form.xcPhone = n; this.setData({ form }); } }, startTime: function (n) { this.getJkmAndHs(); }, threeCodeList(n) { this.setData({ form: { xcPhone: this.data.xcPhone } }); if (n.indexOf("1") > -1 || n.indexOf("2") > -1) { this.getJkmAndHs(); } if (n.indexOf("3") > -1) { this.setData({ "form.xc": "" }); } } }, lifetimes: { attached() { this.codeValInit(); this.inputCodeFocusInit(); } } });