9 changed files with 633 additions and 324 deletions
-
5pages/home/home.js
-
2pages/home/home.wxml
-
BINpages/images/mm.png
-
BINpages/images/zh.png
-
377pages/login/login.js
-
90pages/login/login.wxml
-
479pages/login/login.wxss
-
2project.private.config.json
-
2utils/api.js
|
After Width: 200 | Height: 200 | Size: 4.0 KiB |
|
After Width: 200 | Height: 200 | Size: 3.3 KiB |
@ -1,199 +1,288 @@ |
|||
import http from '../../utils/api' |
|||
|
|||
Page({ |
|||
data: { |
|||
isAgree: true, // 是否同意协议
|
|||
showAgreementModal: false, // 是否显示协议弹窗
|
|||
modalTitle: '', // 弹窗标题
|
|||
modalContent: '', // 弹窗内容
|
|||
isLoading: false, // 是否显示加载中,
|
|||
phoneData: {}, |
|||
// 账号密码
|
|||
account: '', |
|||
password: '', |
|||
accountFocus: false, |
|||
passwordFocus: false, |
|||
passwordVisible: false, |
|||
|
|||
// 协议相关
|
|||
isAgree: true, |
|||
showAgreementModal: false, |
|||
modalTitle: '', |
|||
modalContent: '', |
|||
|
|||
|
|||
// 加载状态
|
|||
isLoading: false, |
|||
|
|||
// 登录状态
|
|||
canLogin: false |
|||
}, |
|||
|
|||
onLoad() { |
|||
this.login() |
|||
// 检查登录状态
|
|||
// this.checkLoginStatus()
|
|||
}, |
|||
|
|||
// 检查登录状态
|
|||
// checkLoginStatus() {
|
|||
// const token = wx.getStorageSync('token')
|
|||
// if (token) {
|
|||
// // 已登录,跳转到首页
|
|||
// wx.switchTab({
|
|||
// url: '/pages/home/home'
|
|||
// })
|
|||
// }
|
|||
// },
|
|||
|
|||
// 登录获取
|
|||
login() { |
|||
// 小程序接口
|
|||
var that = this |
|||
wx.login({ |
|||
success(res) { |
|||
//登录接口
|
|||
http.login({ |
|||
data: { |
|||
code: res.code, |
|||
clientType: 'vet-app' |
|||
}, |
|||
success: function (res) { |
|||
console.log(111111,res); |
|||
if (res.data) { |
|||
that.setData({ |
|||
phoneData: res.data |
|||
}) |
|||
wx.showToast({ |
|||
title: res.data.message, |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}); |
|||
} |
|||
// 账号输入
|
|||
onAccountInput(e) { |
|||
this.setData({ |
|||
account: e.detail.value |
|||
}, () => { |
|||
this.checkCanLogin() |
|||
}) |
|||
}, |
|||
|
|||
if (res.data.token) { |
|||
wx.setStorageSync('token', res.data.token) |
|||
wx.switchTab({ |
|||
url: '/pages/home/home' |
|||
}); |
|||
} |
|||
}, |
|||
// 密码输入
|
|||
onPasswordInput(e) { |
|||
this.setData({ |
|||
password: e.detail.value |
|||
}, () => { |
|||
this.checkCanLogin() |
|||
}) |
|||
}, |
|||
|
|||
}) |
|||
}, |
|||
fail: (error) => { |
|||
console.log('登录失败!' + error); |
|||
} |
|||
// 检查是否可以登录
|
|||
checkCanLogin() { |
|||
const { account, password, isAgree } = this.data |
|||
this.setData({ |
|||
canLogin: account.length >= 4 && password.length >= 6 && isAgree |
|||
}) |
|||
}, |
|||
|
|||
// 账号焦点
|
|||
onAccountFocus() { |
|||
this.setData({ accountFocus: true }) |
|||
}, |
|||
|
|||
onAccountBlur() { |
|||
this.setData({ accountFocus: false }) |
|||
}, |
|||
|
|||
// 获取用户手机号
|
|||
getPhoneNumber(e) { |
|||
if (!this.data.isAgree) { |
|||
// 密码焦点
|
|||
onPasswordFocus() { |
|||
this.setData({ passwordFocus: true }) |
|||
}, |
|||
|
|||
onPasswordBlur() { |
|||
this.setData({ passwordFocus: false }) |
|||
}, |
|||
|
|||
// 聚焦密码输入框
|
|||
focusPassword() { |
|||
this.setData({ passwordFocus: true }) |
|||
}, |
|||
|
|||
// 切换密码可见性 - 修复版
|
|||
togglePasswordVisible(e) { |
|||
// 阻止事件冒泡
|
|||
if (e && e.stopPropagation) { |
|||
e.stopPropagation() |
|||
} |
|||
|
|||
this.setData({ |
|||
passwordVisible: !this.data.passwordVisible |
|||
}) |
|||
|
|||
}, |
|||
|
|||
// 切换协议同意状态
|
|||
toggleAgreement() { |
|||
this.setData({ |
|||
isAgree: !this.data.isAgree |
|||
}, () => { |
|||
this.checkCanLogin() |
|||
}) |
|||
}, |
|||
|
|||
// 处理登录
|
|||
handleLogin() { |
|||
const { account, password, isAgree } = this.data |
|||
|
|||
if (!isAgree) { |
|||
wx.showToast({ |
|||
title: '请先同意协议', |
|||
title: '请先同意用户协议', |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}); |
|||
return; |
|||
}) |
|||
return |
|||
} |
|||
|
|||
// 显示加载中
|
|||
this.setData({ |
|||
isLoading: true |
|||
}); |
|||
|
|||
// 检查是否获取到手机号
|
|||
if (e.detail.errMsg === "getPhoneNumber:ok") { |
|||
// 这里应该将加密数据发送到后端进行解密
|
|||
this.data.phoneData.encryptedData = e.detail.encryptedData |
|||
this.data.phoneData.iv = e.detail.iv |
|||
http.getPhoneNumber({ |
|||
data: this.data.phoneData, |
|||
success: res => { |
|||
if (res.code == 200) { |
|||
wx.setStorageSync('token', res.token) |
|||
|
|||
setTimeout(() => { |
|||
wx.switchTab({ |
|||
url: '/pages/home/home' |
|||
}); |
|||
}, 1500); |
|||
|
|||
this.setData({ |
|||
isLoading: false |
|||
}) |
|||
wx.showToast({ |
|||
title: '登录成功', |
|||
icon: 'success', |
|||
duration: 2000 |
|||
}); |
|||
}else{ |
|||
wx.showToast({ |
|||
title: res.msg, |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}); |
|||
this.setData({ |
|||
isLoading:false |
|||
}) |
|||
} |
|||
} |
|||
if (!account || !password) { |
|||
wx.showToast({ |
|||
title: '请输入账号和密码', |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}) |
|||
} else { |
|||
// 用户拒绝授权
|
|||
this.setData({ |
|||
isLoading: false |
|||
}); |
|||
return |
|||
} |
|||
|
|||
if (account.length < 4) { |
|||
wx.showToast({ |
|||
title: '需要手机号授权才能登录', |
|||
title: '账号长度不能小于4位', |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}); |
|||
}) |
|||
return |
|||
} |
|||
}, |
|||
|
|||
// 切换协议同意状态
|
|||
toggleAgreement() { |
|||
this.setData({ |
|||
isAgree: !this.data.isAgree |
|||
}); |
|||
if (password.length < 6) { |
|||
wx.showToast({ |
|||
title: '密码长度不能小于6位', |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}) |
|||
return |
|||
} |
|||
|
|||
// 显示加载中
|
|||
this.setData({ isLoading: true }) |
|||
|
|||
// 调用登录接口
|
|||
http.login({ |
|||
data: { |
|||
phone: account, |
|||
password: password, |
|||
clientType:'wechat_vet' |
|||
}, |
|||
success: (res) => { |
|||
this.setData({ isLoading: false }) |
|||
|
|||
if (res.code === 200 && res.token) { |
|||
// 保存token
|
|||
wx.setStorageSync('token', res.token) |
|||
|
|||
wx.showToast({ |
|||
title: '登录成功', |
|||
icon: 'success', |
|||
duration: 1500, |
|||
success: () => { |
|||
setTimeout(() => { |
|||
wx.switchTab({ |
|||
url: '/pages/home/home' |
|||
}) |
|||
}, 1500) |
|||
} |
|||
}) |
|||
} else { |
|||
wx.showToast({ |
|||
title: res.msg || '登录失败,请检查账号密码', |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}) |
|||
} |
|||
}, |
|||
fail: (error) => { |
|||
this.setData({ isLoading: false }) |
|||
wx.showToast({ |
|||
title: '网络错误,请稍后重试', |
|||
icon: 'none', |
|||
duration: 2000 |
|||
}) |
|||
console.error('登录失败:', error) |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
// 显示用户协议
|
|||
showAgreement() { |
|||
const content = `欢迎您使用与牧同行服务!
|
|||
const content = `兽医助手用户协议
|
|||
欢迎使用兽医助手! |
|||
|
|||
一、服务说明 |
|||
与牧同行为您提供智慧放牧管理、牲畜追踪、草场监测等服务。通过我们的平台,您可以更高效地管理牧场资源,提升放牧效率。 |
|||
二、账号注册 |
|||
1. 您需要使用手机号完成注册 |
|||
2. 您应保证提供的信息真实、准确、完整 |
|||
3. 您对账号安全负全部责任 |
|||
三、使用规范 |
|||
1. 不得利用本服务从事任何违法违规活动 |
|||
2. 不得干扰或破坏本服务的正常运行 |
|||
3. 遵守相关法律法规和平台规则 |
|||
四、服务变更与终止 |
|||
我们可能根据需要变更服务内容,如您不同意变更,可停止使用本服务。 |
|||
五、免责声明 |
|||
对于不可抗力、网络问题等导致的服务中断,我们不承担相应责任。 |
|||
六、法律适用 |
|||
本协议受中华人民共和国法律管辖。 |
|||
感谢您选择与牧同行!`;
|
|||
兽医助手是为兽医专业人士提供的工作辅助平台,包括病例管理、诊疗记录、药品查询等功能。 |
|||
|
|||
二、账号使用 |
|||
1. 您需要使用真实信息注册账号 |
|||
2. 账号仅限本人使用,不得转借他人 |
|||
3. 您对账号下的所有行为负责 |
|||
|
|||
三、信息规范 |
|||
1. 请确保录入的诊疗信息真实准确 |
|||
2. 尊重动物主人隐私,不得泄露客户信息 |
|||
3. 遵守医疗行业规范和职业道德 |
|||
|
|||
四、责任声明 |
|||
1. 本平台提供的诊疗建议仅供参考 |
|||
2. 最终诊疗方案由执业兽医自行判断 |
|||
3. 平台不承担任何医疗责任 |
|||
|
|||
五、服务变更 |
|||
我们保留修改服务条款的权利,修改后会通过公告通知。 |
|||
|
|||
感谢您使用兽医助手!`
|
|||
|
|||
this.setData({ |
|||
showAgreementModal: true, |
|||
modalTitle: '用户协议', |
|||
modalContent: content |
|||
}); |
|||
}) |
|||
}, |
|||
|
|||
// 显示隐私政策
|
|||
showPrivacy() { |
|||
const content = `与牧同行隐私政策
|
|||
我们深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则保护您的个人信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、主体参与原则、公开透明原则等。 |
|||
一、我们如何收集和使用您的个人信息 |
|||
我们仅会出于本政策所述的以下目的,收集和使用您的个人信息: |
|||
1. 账号注册:手机号 |
|||
2. 服务提供:位置信息、设备信息 |
|||
3. 安全保障:登录日志、操作记录 |
|||
二、我们如何共享、转让、公开披露您的个人信息 |
|||
1. 我们不会与任何公司、组织和个人共享您的个人信息 |
|||
2. 我们不会将您的个人信息转让给任何公司、组织和个人 |
|||
3. 我们仅会在法律要求的情况下公开披露您的个人信息 |
|||
三、我们如何保护您的个人信息 |
|||
1. 我们已使用符合业界标准的安全防护措施保护您提供的个人信息 |
|||
2. 我们会采取合理可行的措施,确保未收集无关的个人信息 |
|||
四、您的权利 |
|||
您有权访问、更正、删除您的个人信息,以及改变您授权同意的范围或撤回授权。 |
|||
五、我们如何处理儿童的个人信息 |
|||
我们的服务主要面向成人。如果没有父母或监护人的同意,儿童不应创建自己的个人信息主体账户。 |
|||
六、本政策如何更新 |
|||
我们可能适时修订本政策内容,并通过公告等方式通知您。 |
|||
如有任何疑问,请通过客服渠道联系我们。`;
|
|||
const content = `兽医助手隐私政策
|
|||
我们重视您的隐私保护 |
|||
|
|||
一、信息收集 |
|||
我们收集以下必要信息: |
|||
1. 账号信息:手机号、姓名、执业证书编号 |
|||
2. 使用信息:登录日志、操作记录 |
|||
3. 设备信息:设备型号、系统版本 |
|||
|
|||
二、信息使用 |
|||
1. 用于提供兽医诊疗辅助服务 |
|||
2. 优化和改进服务质量 |
|||
3. 保障账号安全 |
|||
|
|||
三、信息保护 |
|||
1. 采用加密技术保护数据 |
|||
2. 严格控制访问权限 |
|||
3. 定期进行安全审计 |
|||
|
|||
四、信息共享 |
|||
1. 未经您同意,不向第三方共享信息 |
|||
2. 法律要求的情况除外 |
|||
3. 可能用于统计分析(匿名化处理) |
|||
|
|||
五、您的权利 |
|||
1. 访问、更正您的个人信息 |
|||
2. 注销账号 |
|||
3. 撤回授权 |
|||
|
|||
六、联系我们 |
|||
如有疑问,请通过客服渠道联系我们`
|
|||
|
|||
this.setData({ |
|||
showAgreementModal: true, |
|||
modalTitle: '隐私政策', |
|||
modalContent: content |
|||
}); |
|||
}) |
|||
}, |
|||
|
|||
// 隐藏弹窗
|
|||
hideModal() { |
|||
this.setData({ |
|||
showAgreementModal: false |
|||
}); |
|||
}) |
|||
} |
|||
}) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue