微信小程序——一键呼救

        本小程序面对社区使用,服务对象为社区患病病人、独居老人,家属、医生和社区可获得相应呼救信息,医生和社区也可以利用该小程序进行病人信息的相关管理。

一、登录页面

        用户分为病人,家属,医生/社区,不同用户可使用的功能不同,可以通过身份证号登录

        判断不同用户是通过数据库中的信息判断,数据库可使用微信小程序里的云数据库,也可通过MySQL导入

// pages/login/login.js
const db = wx.cloud.database();
const app = getApp(); // 获取小程序实例对象

Page({
  data: {
    inputAccount: "", // 用于存储用户输入的账号
    userInfo: ''
    
  },

  // 监听用户输入账号的函数
  onInput(event) {
    this.setData({
      inputAccount: event.detail.value, // 将用户输入的账号存储到data中
    });
  },
  
  onLoad()
  {
    this.setData({
      userInfo: app.globalData.userInfo
    })
  },

  // 点击按钮跳转到另一个页面的函数
  navigateToAnotherPage: function () {
    // 当按钮被点击时,跳转至另一个页面
    wx.navigateTo({
      url: '/pages/userselect/userselect' // 替换为实际要跳转的页面路径
    });
  },

  // 查询账号是否存在的函数
  log() {
    const inputAccount = this.data.inputAccount;

    // 将输入的账号值存储到小程序实例对象的全局数据中(globalData)
    app.globalData.inputAccount = inputAccount;

    // 查询数据库
    db.collection('users').where({
      ID: String(inputAccount) // 将输入的账号转换为字符串类型
    }).get({
      success: res => {
        if (res.data.length > 0) {
          // 账号存在,根据身份跳转至不同页面
          const classify = res.data[0].classify;
          if (classify === 'patient') {
            // 跳转至患者页面
            wx.navigateTo({
              url: '/pages/help/help', // 患者页面的路径
            });
          } else if (classify === 'dependent') {
            // 跳转至家属页面
            wx.navigateTo({
              url: '/pages/dependent/dependent', // 家属页面的路径
            });
          } else if (classify === 'doctor') {
            // 跳转至医生页面
            wx.navigateTo({
              url: '/pages/message/message', // 医生页面的路径
            });
          } 
        } else {
          // 账号不存在
          console.log('账号不存在');
          wx.showToast({
            title: "不存在该用户", icon: "none"
          })
        }
      },
      fail: err => {
        console.error('查询失败:', err);
      }
    });
  }
});

二、注册功能

        如相应用户信息未在数据库中,可以通过注册功能实现用户注册

        不同的身份选择相应的按钮

        病人不可以自行注册,主要是考虑到该小程序面对独居老人和患病病人使用,这些人的信息由家属或医生/社区导入到数据库中

// pages/userselect/userselect.js
Page({
  // 点击按钮1,跳转到家属注册页面
  navigateToPage1: function () {
    wx.navigateTo({
      url: '/pages/famreg/famreg' // 替换为家属注册页面的路径
    });
  },

  // 点击按钮2,跳转到医生注册页面
  navigateToPage2: function () {
    wx.navigateTo({
      url: '/pages/docreg/docreg' // 替换为医生注册页面的路径
    });
  }
});

三、家属注册

// pages/famreg/famreg.js
Page({
  data: {
    classify: "dependent", // 默认classify信息,默认值为"dependent"
    name: "",
    ID: "",
    age: "",
    address: "",
    tel1: "",
  },

  // 监听输入框输入姓名
  bindNameInput(event) {
    this.setData({
      name: event.detail.value,
    });
  },

  // 监听输入框输入身份证号
  bindIDInput(event) {
    this.setData({
      ID: event.detail.value,
    });
  },

  // 监听输入框输入年龄
  bindAgeInput(event) {
    this.setData({
      age: event.detail.value,
    });
  },

  // 监听输入框输入地址
  bindAddressInput(event) {
    this.setData({
      address: event.detail.value,
    });
  },

  // 监听输入框输入电话号码
  bindTel1Input(event) {
    this.setData({
      tel1: event.detail.value,
    });
  },

  // 点击保存按钮,将用户信息保存到数据库中
  onSaveToDatabase() {
    const db = wx.cloud.database();
    
    const user = {
      classify: this.data.classify,
      name: this.data.name,
      ID: this.data.ID,
      age: this.data.age,
      address: this.data.address,
      tel1: this.data.tel1,
      med: "", // 默认med信息,可以在需要的时候修改
      sick: "", // 默认sick信息,可以在需要的时候修改
    };
    db.collection('users').where({
      ID: String(this.data.ID) // 将输入的账号转换为字符串类型
    }).get({
      success: res => {
        if (res.data.length > 0) {
          wx.showToast({
            title: "已存在该用户", icon: "none"
        })
       }
        else {
           db.collection('users')
      .add({
        data: user,
      })
      .then((res) => {
        console.log("保存成功", res);
        wx.showToast({ title: "保存成功", icon: "success" })
        // 保存成功后,清空输入框内的数据
        this.setData({
          classify: "dependent", // 重置为默认值
          name: "",
          ID: "",
          age: "",
          address: "",
          tel1: "",
        })
      })
        }
      },
      fail: err => {
        console.error('查询失败:', err);
      }
    });
  }
});

四、医生注册

// pages/docreg/docreg.js
Page({
  data: {
    classify: "doctor", // 默认classify信息,默认值为"doctor"
    name: "",
    ID: "",
    age: "",
    address: "",
    tel1: "",
  },

  // 监听输入框输入姓名
  bindNameInput(event) {
    this.setData({
      name: event.detail.value,
    });
  },

  // 监听输入框输入身份证号
  bindIDInput(event) {
    this.setData({
      ID: event.detail.value,
    });
  },

  // 监听输入框输入年龄
  bindAgeInput(event) {
    this.setData({
      age: event.detail.value,
    });
  },

  // 监听输入框输入地址
  bindAddressInput(event) {
    this.setData({
      address: event.detail.value,
    });
  },

  // 监听输入框输入电话号码
  bindTel1Input(event) {
    this.setData({
      tel1: event.detail.value,
    });
  },

  // 点击保存按钮,将用户信息保存到数据库中
  onSaveToDatabase() {
    const db = wx.cloud.database();
    
    const user = {
      classify: this.data.classify,
      name: this.data.name,
      ID: this.data.ID,
      age: this.data.age,
      address: this.data.address,
      tel1: this.data.tel1,
      med: "", // 默认med信息,可以在需要的时候修改
      sick: "", // 默认sick信息,可以在需要的时候修改
    };
    db.collection('users').where({
      ID: String(this.data.ID) // 将输入的账号转换为字符串类型
    }).get({
      success: res => {
        if (res.data.length > 0) {
          wx.showToast({
            title: "已存在该用户", icon: "none"
        })
       }
        else {
           db.collection('users')
      .add({
        data: user,
      })
      .then((res) => {
        console.log("保存成功", res);
        wx.showToast({ title: "保存成功", icon: "success" })
        // 保存成功后,清空输入框内的数据
        this.setData({
          classify: "doctor", // 重置为默认值
          name: "",
          ID: "",
          age: "",
          address: "",
          tel1: "",
        })
      })
        }
      },
      fail: err => {
        console.error('查询失败:', err);
      }
    });
  }
});

 五、病人呼救

        病人点击一键呼救按钮,会将当前地址、病史、用药史、家庭住址等信息发给医生/社区

        同时会拨打紧急联系人电话

// pages/help/help.js
const app = getApp();
const db = wx.cloud.database();

Page({
  data: {
    datavalue: "", // 数据值
    idvalue: "", // ID 值
    local: "", // 添加 local 属性以存储用户选择的位置信息
  },

  // 跳转到依赖页面的事件处理函数
  soscall() {
              wx.makePhoneCall({
                phoneNumber: this.data.datavalue.tel,
                success: (res) => {
                  console.log('拨打电话成功');
                },
                fail: (err) => {
                  console.error('拨打电话失败', err);
                }
              });
            },

  onLoad(options) {
    // 页面加载时,获取全局变量 inputAccount
    this.setData({
      idvalue: app.globalData.inputAccount,
    });

    // 查询数据库以获取用户数据
    db.collection('users').where({
      ID: String(this.data.idvalue),
    }).get({
      success: res => {
        console.log(res);
        // 检查是否返回数据
        if (res.data.length > 0) {
          this.setData({
            datavalue: res.data[0], // 将查询到的数据设置到 datavalue 属性中
          });
        }
      },
      fail: err => {
        console.error('获取用户数据失败:', err);
      },
    });
  },

  // 获取用户位置信息
  sendToBUser: function () {
    wx.chooseLocation({
      success: res => {
        console.log(res);
        this.setData({
          local: res.address, // 将用户选择的地址信息设置到 local 属性中
        });

        const currentTime = new Date().getTime(); // 添加以获取当前时间的代码

        const userAccount = this.data.idvalue;
        const dataToSend = {
          address: this.data.datavalue.address,
          sick: this.data.datavalue.sick,
          med: this.data.datavalue.med,
          name: this.data.datavalue.name,
        };

        // 将数据存储到数据库中,包括位置信息
        db.collection('user_data').add({
          data: {
            sendAccount: userAccount,
            address: dataToSend.address,
            sick: dataToSend.sick,
            med: dataToSend.med,
            name: dataToSend.name,
            nowAddress: this.data.local, // 将用户选择的地址信息存储到数据库中
            time: currentTime, // 添加以存储当前时间的代码
          },
          success: res => {
            console.log('发送成功', res);
            wx.showToast({
              title: '发送成功',
              icon: 'success',
              duration: 2000,
            });
          },
          fail: err => {
            console.error('发送失败', err);
            wx.showToast({
              title: '发送失败',
              icon: 'none',
              duration: 2000,
            });
          },
        });
      },
      fail: err => {
        console.error('选择位置信息失败', err);
      },
    });
  },
});

 六、家属界面

        家属可以增加和更改病人信息,包括病人姓名、身份证号、家庭住址、年龄

// pages/dependent/dependent.js
Page({
  // Button 1: 点击按钮跳转到第一个页面,即添加用户页面
  gotoNextPage1: function() {
    wx.navigateTo({
      url: '/pages/addUser/addUser' // 跳转到添加用户页面的路径
    });
  },

  // Button 2: 点击按钮跳转到第二个页面,即修改用户信息页面
  gotoNextPage2: function() {
    wx.navigateTo({
      url: '/pages/changeUser/changeUser' // 跳转到修改用户信息页面的路径
    });
  },
});

七、医生界面

        医生可以增加和更改病人病史、用药信息

// pages/message/message.js
Page({
  // 点击按钮1,跳转到第一个页面
  gotoNextPage1: function() {
    wx.navigateTo({
      url: '/pages/getData/getData' // 第一个页面的路径
    });
  },
 
  // 点击按钮2,跳转到第二个页面
  gotoNextPage2: function() {
    wx.navigateTo({
      url: '/pages/doctor/doctor' // 第二个页面的路径
    });
  },

  // 点击按钮3,跳转到第三个页面
  gotoNextPage3: function() {
    wx.navigateTo({
      url: '/pages/docadd/docadd' // 第三个页面的路径
    });
  },
});

八、增加病人信息

// pages/addUser/addUser.js
Page({
  data: {
    classify: "patient", // 默认classify信息,默认值为"patient"
    name: "",
    ID: "",
    age: "",
    address: "",
    tel1: "",
  },

  // 监听输入框输入姓名
  bindNameInput(event) {
    this.setData({
      name: event.detail.value,
    });
  },

  // 监听输入框输入身份证号
  bindIDInput(event) {
    this.setData({
      ID: event.detail.value,
    });
  },

  // 监听输入框输入年龄
  bindAgeInput(event) {
    this.setData({
      age: event.detail.value,
    });
  },

  // 监听输入框输入地址
  bindAddressInput(event) {
    this.setData({
      address: event.detail.value,
    });
  },

  // 监听输入框输入电话号码
  bindTel1Input(event) {
    this.setData({
      tel1: event.detail.value,
    });
  },

  // 点击保存按钮,将用户信息保存到数据库中
  onSaveToDatabase() {
    const db = wx.cloud.database();
    
    const user = {
      classify: this.data.classify,
      name: this.data.name,
      ID: this.data.ID,
      age: this.data.age,
      address: this.data.address,
      tel1: this.data.tel1,
      med: "", // 默认med信息,可以在需要的时候修改
      sick: "", // 默认sick信息,可以在需要的时候修改
    };
    db.collection('users').where({
      ID: String(this.data.ID) // 将输入的账号转换为字符串类型
    }).get({
      success: res => {
        if (res.data.length > 0) {
          wx.showToast({
            title: "已存在该用户", icon: "none"
        })
       }
        else {
           db.collection('users')
      .add({
        data: user,
      })
      .then((res) => {
        console.log("保存成功", res);
        wx.showToast({ title: "保存成功", icon: "success" })
        // 保存成功后,清空输入框内的数据
        this.setData({
          classify: "patient", // 重置为默认值
          name: "",
          ID: "",
          age: "",
          address: "",
          tel1: "",
        })
      })
        }
      },
      fail: err => {
        console.error('查询失败:', err);
      }
    });
  }
});

九、修改病人信息

// pages/changeUser/changeUser.js
Page({
  data: {
    ID: '',
    age: '',
    address: '',
    tel1: '',
  },

  // 监听输入框输入身份证号
  onInputID(event) {
    this.setData({
      ID: event.detail.value,
    });
  },

  // 监听输入框输入年龄
  onInputAge(event) {
    this.setData({
      age: event.detail.value,
    });
  },

  // 监听输入框输入地址
  onInputAddress(event) {
    this.setData({
      address: event.detail.value,
    });
  },

  // 监听输入框输入电话号码
  onInputTel1(event) {
    this.setData({
      tel1: event.detail.value,
    });
  },

  // 点击提交按钮,将修改后的用户信息保存到数据库中
  onSubmit() {
    const db = wx.cloud.database();
    db.collection('users').where({
      ID: String(this.data.ID) // 将输入的账号转换为字符串类型
    }).get({
      success: res => {
        if (res.data.length > 0) {
         db.collection('users') .where({
                  ID: this.data.ID, // 查询特定ID的记录
                })
                .update({
                  data: {
                       age: this.data.age, // 修改年龄为输入的年龄
                      address: this.data.address, // 修改地址为输入的地址
                      tel1: this.data.tel1, // 修改电话号码为输入的电话号码
                  },
                })
                .then((res) => {
                  console.log('修改成功', res);
                  wx.showToast({ title: '修改成功', icon: 'success' });
       })}
        else {
           console.log("不存在该病人")
          wx.showToast({
            title: '不存在该病人',icon: 'none'
          })
        }
      },
      fail: err => {
        console.error('查询失败:', err);
      }
    });
  }
});

 十、医生/社区获取最新呼救请求

        当病人呼救时,呼救信息会发到医生/社区

//pages/getData/getData.js

const db = wx.cloud.database();
const dataCollection = db.collection('user_data');

Page({
  data: {
    latestData: [], // 存储最新的4条数据
  },

  onLoad: function () {
    // 页面加载时,初始化按钮信息
    this.updateButtons();
  },

  onShow: function () {
    // 页面显示时,监听数据库变化
    this.startListening();
  },

  onHide: function () {
    // 页面隐藏时,停止监听数据库变化
    this.stopListening();
  },

  startListening: function () {
    // 监听数据库集合变化
    const self = this;
    this.dataListener = db.collection('user_data')
      .orderBy('time', 'desc') // Sort by time in descending order
      .limit(5) // Limit to 5 records
      .watch({
        onChange: function (snapshot) {
          self.updateButtons();
        },
        onError: function (err) {
          console.error('监听数据库变化失败:', err);
        }
      });
  },

  stopListening: function () {
    // 停止监听数据库集合变化
    if (this.dataListener) {
      this.dataListener.close();
      this.dataListener = null;
    }
  },

  updateButtons: function () {
    // 获取数据库中最新的5条数据,并更新按钮信息
    dataCollection.orderBy('time', 'desc') // Sort by time in descending order
      .limit(4) // Limit to 4 records
      .get({
        success: (res) => {
          this.setData({
            latestData: res.data
          });
        },
        fail: (err) => {
          console.error('获取最新数据失败:', err);
        }
      });
  },

  onButtonClick: function (event) {
    // 点击按钮后,获取按钮对应的数据并进行处理
    const index = event.currentTarget.dataset.index;
    if (this.data.latestData[index]) {
      const data = this.data.latestData[index];
      // 在这里可以根据需要处理获取到的数据
      console.log('按钮', index + 1, '对应的最新数据:', data);

      // 跳转到新页面并传递数据
      wx.navigateTo({
        url: '/pages/dataDetail/dataDetail?data=' + JSON.stringify(data),
      });
    }
  },
});

 十一、医生获取呼救病人详细信息

        当点击按钮,可看到相应病人的详细信息,包括当前地址、病史、用药史、家庭住址等信息

// pages/dataDetail/dataDetail.js
Page({
  data: {
    data: {}, // 存储按钮对应的数据
  },

  onLoad: function (options) {
    // 从上个页面传递过来的数据
    const data = JSON.parse(options.data);
    this.setData({
      data: data,
    });
  },
});
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值