index.jsx 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import { useState } from "react"
  2. import { useModel } from '@/store'
  3. import Taro from "@tarojs/taro"
  4. import { Input, View, Image } from "@tarojs/components"
  5. import CustomNav from '@/components/CustomNav'
  6. import ButtontWX from '@/components/ButtontWX'
  7. import { updateInfo } from "@/services/login"
  8. // import banner1 from '@/assets/banner/1.jpg'
  9. // import resetImg from '@/assets/user/cancel.png'
  10. import './style.less'
  11. export default (props) => {
  12. const { person, setPerson } = useModel('userData')
  13. const [name, setName] = useState(person.nickName)
  14. const [phone, setPhone] = useState(person.phone)
  15. const [avatar, setAvatar] = useState(person.avatar)
  16. const changeName = (e) => {
  17. setName(e.detail.value)
  18. }
  19. const changePhone = (e) => {
  20. setPhone(e.detail.value)
  21. }
  22. const rulePhone = (val) => {
  23. if (!/^1[0-9]{10}$/.test(val)) {
  24. Taro.showToast({
  25. title: '请输入正确的11位手机号',
  26. icon: 'none',
  27. duration: 2000
  28. })
  29. return false
  30. } else return true
  31. }
  32. const handleSave = () => {
  33. if (rulePhone(phone)) {
  34. updateInfo(person.personId, { ...person, avatar: avatar, phone: phone, nickName: name }).then((res) => {
  35. setPerson(res)
  36. Taro.showToast({
  37. title: '保存成功',
  38. icon: 'none',
  39. })
  40. setTimeout(() => {
  41. Taro.navigateBack({
  42. delta: 1
  43. })
  44. }, 1500)
  45. }).catch((e) => {
  46. console.log(e)
  47. Taro.showToast({
  48. title: '网络异常, 请刷新小程序重试',
  49. icon: 'none',
  50. })
  51. })
  52. }
  53. }
  54. const resetName = () => {
  55. setName()
  56. }
  57. const resetPhone = () => {
  58. setPhone()
  59. }
  60. const changeAvatar = () => {
  61. Taro.getUserProfile({
  62. lang: 'zh_CN',
  63. desc: "获取你的昵称、头像、地区及性别",
  64. success: function (res) {
  65. setAvatar(res.userInfo.avatarUrl)
  66. },
  67. fail: () => {
  68. //拒绝授权
  69. console.error("拒绝了请求");
  70. return;
  71. }
  72. })
  73. }
  74. return (
  75. <View className='page-index'>
  76. <View className='index-navbar'>
  77. <CustomNav title='个人信息' />
  78. </View>
  79. <View className='index-container userCard'>
  80. <View className='avatar' onClick={changeAvatar}>
  81. <Image src={avatar} className='avatarImg' />
  82. <View className='change'>更换头像</View>
  83. </View>
  84. <View className='userCell'>
  85. <View>姓名:</View>
  86. <View style={{ display: 'flex', alignItems: 'center', height: '54px' }}>
  87. <Input type='text' placeholder='请输入您的姓名' value={name} onBlur={changeName} className='userName' />
  88. <View className='reset' onClick={resetName}>
  89. {/* <Image src={resetImg} className='close' /> */}
  90. </View>
  91. </View>
  92. </View>
  93. <View className='userCell'>
  94. <View>手机号:</View>
  95. <View style={{ display: 'flex', alignItems: 'center', height: '54px' }}>
  96. <Input type='text' placeholder='请输入您的手机号' value={phone} onBlur={changePhone} className='userName' />
  97. <View className='reset' onClick={resetPhone}>
  98. {/* <Image src={resetImg} className='close' /> */}
  99. </View>
  100. </View>
  101. </View>
  102. <View className='bottomBtn'>
  103. <ButtontWX onClick={handleSave} butText='保存' butWidth={300} butHeight={49} butFontSize={16} butBorderRadius={49} />
  104. </View>
  105. </View>
  106. </View>
  107. )
  108. }