import $ from "../../utils/request"; const app = getApp(); Component({ properties: { }, data: { animationData: null, modalStatus: false, // 用户类型:employee=员工,family=家庭用户 userType: 'employee', // 员工模式 workNo: "", userInfo: null, // 家庭用户模式 - 手动填写 familyInfo: { name: '', sex: 1, birthday: '', height: '', weight: '' }, // 性别选择器选项 genderOptions: ['男', '女'], genderIndex: 0, }, lifetimes: { // 在组件实例进入页面节点树时执行 attached() { }, // 在组件实例被从页面节点树移除时执行 detached() { }, }, methods: { // 显示对话框 showModal() { // 显示遮罩层 let animation = wx.createAnimation({ duration: 200, timingFunction: "linear", delay: 0 }) this.animation = animation; animation.translateY(1200).step(); this.setData({ animationData: animation.export(), modalStatus: true }) setTimeout(() => { animation.translateY(0).step(); this.setData({ animationData: animation.export() }) }, 200); }, //隐藏对话框 hideModal() { // 隐藏遮罩层 let animation = wx.createAnimation({ duration: 200, timingFunction: "linear", delay: 0 }) this.animation = animation; animation.translateY(1200).step(); this.setData({ animationData: animation.export(), }) setTimeout(() => { animation.translateY(0).step(); this.setData({ animationData: animation.export(), modalStatus: false }) }, 200); }, // 关闭弹窗并重置所有数据 closeModal() { this.setData({ userType: 'employee', workNo: "", userInfo: null, familyInfo: { name: '', sex: 1, birthday: '', height: '', weight: '' }, genderIndex: 0, }); this.hideModal(); }, // 切换用户类型,同时清空所有已填数据 switchUserType(e) { const type = e.currentTarget.dataset.type; if (type === this.data.userType) return; this.setData({ userType: type, workNo: "", userInfo: null, familyInfo: { name: '', sex: 1, birthday: '', height: '', weight: '' }, genderIndex: 0, }); }, // 监听工号输入(员工模式) onWorkNoInput(e) { this.setData({ workNo: e.detail.value, userInfo: null }); }, // 监听身高输入(员工模式) onHeightInput(e) { this.setData({ 'userInfo.height': e.detail.value }); }, // 监听体重输入(员工模式) onWeightInput(e) { this.setData({ 'userInfo.weight': e.detail.value }); }, // 监听家庭用户姓名输入 onFamilyNameInput(e) { this.setData({ 'familyInfo.name': e.detail.value }); }, // 监听家庭用户性别选择 onFamilyGenderChange(e) { const index = e.detail.value; // 1=男,2=女 this.setData({ genderIndex: index, 'familyInfo.sex': index === '0' || index === 0 ? 1 : 2 }); }, // 监听家庭用户生日选择 onFamilyBirthdayChange(e) { this.setData({ 'familyInfo.birthday': e.detail.value }); }, // 监听家庭用户身高输入 onFamilyHeightInput(e) { this.setData({ 'familyInfo.height': e.detail.value }); }, // 监听家庭用户体重输入 onFamilyWeightInput(e) { this.setData({ 'familyInfo.weight': e.detail.value }); }, // 根据工号查询用户信息(员工模式) searchUser() { let workNo = this.data.workNo.trim(); if (!workNo) { wx.showToast({ title: "请输入工号", icon: "none" }) return; } let sn = app.globalData.ppScale.device.mac.replace(/:/g, ''); $.ajax("weighingScale/v2/getUserInfoByWkno", { workNo: workNo, sn: sn }, "GET", true, "正在查询...").then(res => { if (res.result) { this.setData({ userInfo: res.result }); } else { this.setData({ userInfo: null }); wx.showToast({ title: "未查询到该工号的用户信息", icon: "none" }) } }).catch((err) => { console.log(err); this.setData({ userInfo: null }); wx.showToast({ title: (err && err.message) || "查询失败", icon: "none" }) }) }, // 确定提交 submit() { const sn = app.globalData.ppScale.device.mac.replace(/:/g, ''); if (this.data.userType === 'employee') { // 员工模式:必须先查询到用户信息 if (!this.data.userInfo) { wx.showToast({ title: "请先查询用户信息", icon: "none" }); return; } let userInfo = this.data.userInfo; if (!userInfo.height) { wx.showToast({ title: "请输入身高", icon: "none" }); return; } if (!userInfo.weight) { wx.showToast({ title: "请输入体重", icon: "none" }); return; } userInfo.sn = sn; $.ajax("weighingScale/v2/edit/user", userInfo, "POST", true, "正在添加...").then(res => { wx.showToast({ title: "添加成功", icon: "success" }); this.triggerEvent('returnDate', { userInfo }); this.closeModal(); }).catch(() => { wx.showToast({ title: "添加失败,请重试", icon: "none" }); }); } else { // 家庭用户模式:校验手动填写的字段 const familyInfo = this.data.familyInfo; if (!familyInfo.name.trim()) { wx.showToast({ title: "请输入姓名", icon: "none" }); return; } if (!familyInfo.birthday) { wx.showToast({ title: "请选择生日", icon: "none" }); return; } if (!familyInfo.height) { wx.showToast({ title: "请输入身高", icon: "none" }); return; } if (!familyInfo.weight) { wx.showToast({ title: "请输入体重", icon: "none" }); return; } const submitData = { realname: familyInfo.name.trim(), sex: familyInfo.sex, birthday: familyInfo.birthday, height: familyInfo.height, weight: familyInfo.weight, sn: sn }; $.ajax("weighingScale/v2/edit/user", submitData, "POST", true, "正在添加...").then(res => { wx.showToast({ title: "添加成功", icon: "success" }); this.triggerEvent('returnDate', { userInfo: submitData }); this.closeModal(); }).catch(() => { wx.showToast({ title: "添加失败,请重试", icon: "none" }); }); } } } });