User.tsx 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /* eslint-disable no-template-curly-in-string */
  2. import React,{useEffect,useState} from "react"
  3. import {Button,Form,Input,Select,message,Spin} from 'antd'
  4. import useSyncCallback from "../hook/useSyncCallback"
  5. import {AxiosResponse,AxiosError} from "axios"
  6. import {api} from "../utils/api"
  7. import "../assets/scss/user.scss"
  8. const {Option} = Select
  9. const validateMessages = {
  10. required: '${label} is required!',
  11. types: {
  12. number: '${label} is not a valid number!',
  13. },
  14. };
  15. export default function User() {
  16. const [form] =Form.useForm()
  17. //let formValue = useRef(null)
  18. const [formjson,setFormJson] = useState({})
  19. const [loading,setLoading] = useState(true)
  20. const onFinish=(values:any)=>{
  21. //console.log(values)
  22. api.updateProfile(values)
  23. .then((response:AxiosResponse)=>{
  24. const res=response.data
  25. if(res.code === 0){
  26. message.success("更新成功")
  27. localStorage.setItem("user",JSON.stringify(values))
  28. }else{
  29. message.error("更新失败")
  30. }
  31. })
  32. .catch((err:AxiosError)=>{
  33. Promise.reject(err)
  34. message.error(err.message)
  35. })
  36. }
  37. const func= useSyncCallback(()=>{
  38. console.log(formjson)
  39. form.resetFields()
  40. setLoading(false)
  41. })
  42. useEffect(()=>{
  43. api.getProfile()
  44. .then((response:AxiosResponse)=>{
  45. const res=response.data
  46. if(res.code===0){
  47. setFormJson({
  48. familyName:res.data.familyName,
  49. middleName:res.data.middleName,
  50. givenName : res.data.givenName,
  51. nickName : res.data.nickName,
  52. idCardNo : res.data.idCardNo,
  53. preferredLanguage : res.data.preferredLanguage,
  54. webSite : res.data.webSite,
  55. })
  56. func();
  57. }
  58. })
  59. .catch((err:AxiosError)=>{
  60. Promise.reject(err)
  61. message.error(err.message)
  62. })
  63. },[form])
  64. return (
  65. <>
  66. <Spin spinning = {loading}>
  67. <Form
  68. form={form}
  69. onFinish={onFinish}
  70. validateMessages={validateMessages}
  71. initialValues={formjson}
  72. >
  73. <Form.Item name='familyName' label="姓:">
  74. <Input />
  75. </Form.Item>
  76. <Form.Item name='middleName' label="中间名:">
  77. <Input />
  78. </Form.Item>
  79. <Form.Item name='givenName' label="名:">
  80. <Input/>
  81. </Form.Item>
  82. <Form.Item name='nickName' label="昵称:">
  83. <Input/>
  84. </Form.Item>
  85. <Form.Item label="证件类型:">
  86. <Select defaultValue="身份证">
  87. <Option value="未知">未知</Option>
  88. <Option value="身份证">身份证</Option>
  89. <Option value="护照">护照</Option>
  90. <Option value="学生证">学生证</Option>
  91. <Option value="军人证">军人证</Option>
  92. </Select>
  93. </Form.Item>
  94. <Form.Item name='idCardNo' label="证件号码:" rules={[{type:'number'}]}>
  95. <Input/>
  96. </Form.Item>
  97. <Form.Item label="婚姻状态:">
  98. <Select defaultValue="未知">
  99. <Option value="未知">未知</Option>
  100. <Option value="单身">单身</Option>
  101. <Option value="已婚">已婚</Option>
  102. <Option value="离异">离异</Option>
  103. <Option value="丧偶">丧偶</Option>
  104. </Select>
  105. </Form.Item>
  106. <Form.Item name='birthday' label="出生日期:" >
  107. <Input/>
  108. </Form.Item>
  109. <Form.Item name='preferredLanguage'label="语言偏好:">
  110. <Input/>
  111. </Form.Item>
  112. <Form.Item name='workStart' label="工作开始时间:" >
  113. <Input/>
  114. </Form.Item>
  115. <Form.Item name='webSite' label="个人主页:">
  116. <Input/>
  117. </Form.Item>
  118. <Form.Item name='phone' label="即时通讯:">
  119. <Input/>
  120. </Form.Item>
  121. <Form.Item >
  122. <Button type="primary" htmlType="submit">
  123. 提交
  124. </Button>
  125. </Form.Item>
  126. </Form>
  127. </Spin>
  128. </>
  129. )
  130. }