userInfo.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <fs-form ref="formRef" :model="userInfo">
  3. <fs-cell title="头像" justify="right" border tighten>
  4. <template #value>
  5. <fs-avatar bgColor="#EBEFF5" :src="userInfo.photo" @click="handleUpload">
  6. <fs-icon type="icon-photo"></fs-icon>
  7. </fs-avatar>
  8. </template>
  9. </fs-cell>
  10. <fs-form-item required label="姓名">
  11. <fs-field placeholder="请输入姓名" v-model="userInfo.name"></fs-field>
  12. </fs-form-item>
  13. <fs-form-item required label="手机号">
  14. <fs-field placeholder="请输入手机号" v-model="userInfo.mobile"></fs-field>
  15. </fs-form-item>
  16. <fs-form-item label="性别">
  17. <fs-radio-group inline v-model="userInfo.sex">
  18. <fs-radio value="1">男</fs-radio>
  19. <fs-radio value="2">女</fs-radio>
  20. </fs-radio-group>
  21. </fs-form-item>
  22. <fs-gutter height="100rpx"></fs-gutter>
  23. <fs-button block round @click="handleSave">保存</fs-button>
  24. </fs-form>
  25. </template>
  26. <script setup>
  27. import { ref, computed } from 'vue'
  28. import useForm from '@/hooks/useForm'
  29. import useValidator from '@/hooks/useValidator'
  30. import useUser from '@/hooks/useUser'
  31. import utils from '@/utils/utils'
  32. const validator = useValidator()
  33. const userInfo = { ...useUser() }
  34. const rules = {
  35. name: {
  36. required: true,
  37. message: '请输入姓名'
  38. },
  39. mobile: { validator: validator.mobile }
  40. }
  41. const formRef = ref(null)
  42. const form = useForm(rules, 'formRef')
  43. const handleUpload = () => {
  44. utils.chooseAndUploadImage(
  45. {},
  46. {
  47. url: ''
  48. }
  49. ).then(res => {
  50. userInfo.photo = res
  51. })
  52. }
  53. const handleSave = () => {
  54. form.validate().then(() => {
  55. console.log('success')
  56. uni.navigateBack()
  57. })
  58. }
  59. </script>
  60. <style lang="scss" scoped>
  61. </style>