person.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <template>
  2. <view style="padding: 20rpx;">
  3. <view class="box" style="padding: 40rpx 20rpx;">
  4. <uni-forms :modelValue="form" :rules="rules" ref="formRef" label-width="140rpx" label-align="right">
  5. <uni-forms-item label="头像" name="avatar">
  6. <uni-file-picker limit="1" :image-styles="imageStyles" :del-icon="false" :disable-preview="true"
  7. fileMediatype="image" v-model="imgs" @select="handleImgUploadSuccess"></uni-file-picker>
  8. </uni-forms-item>
  9. <uni-forms-item label="账号" name="username">
  10. <uni-easyinput type="text" v-model="form.username" placeholder="" disabled />
  11. </uni-forms-item>
  12. <uni-forms-item label="密码" name="password" required>
  13. <uni-easyinput type="password" v-model="form.password" placeholder="请输入密码" />
  14. </uni-forms-item>
  15. <uni-forms-item label="姓名" name="name" required>
  16. <uni-easyinput type="text" v-model="form.name" placeholder="请输入姓名" />
  17. </uni-forms-item>
  18. <uni-forms-item label="性别" name="sex">
  19. <uni-data-checkbox style="position: relative; top: 10rpx;" v-model="form.sex"
  20. :localdata="range"></uni-data-checkbox>
  21. </uni-forms-item>
  22. <uni-forms-item label="电话" name="phone">
  23. <uni-easyinput type="text" v-model="form.phone" placeholder="请输入电话" />
  24. </uni-forms-item>
  25. <view>
  26. <button type="primary" @click="save" class="my-button-primary">保 存</button>
  27. </view>
  28. </uni-forms>
  29. </view>
  30. </view>
  31. </template>
  32. <script>
  33. export default {
  34. data() {
  35. return {
  36. form: {},
  37. rules: {
  38. password: {
  39. rules: [{
  40. required: true,
  41. errorMessage: '请填写密码',
  42. }]
  43. },
  44. name: {
  45. rules: [{
  46. required: true,
  47. errorMessage: '请填写名称',
  48. }]
  49. },
  50. },
  51. imgs: [],
  52. imageStyles: {
  53. "height": 80, // 边框高度
  54. "width": 80, // 边框宽度
  55. "border":{ // 如果为 Boolean 值,可以控制边框显示与否
  56. "color":"#eee", // 边框颜色
  57. "width":"1px", // 边框宽度
  58. "style":"solid", // 边框样式
  59. "radius":"50%" // 边框圆角,支持百分比
  60. }
  61. },
  62. range: [
  63. { text: '男', value: '男' },
  64. { text: '女', value: '女' },
  65. ]
  66. }
  67. },
  68. onShow() {
  69. this.form = uni.getStorageSync('xm-user')
  70. if(this.form.avatar){
  71. this.imgs[0] = { url: this.form.avatar }
  72. }
  73. },
  74. methods: {
  75. save() {
  76. this.$request.put('/user/update', this.form).then(res => {
  77. if (res.code === '200') {
  78. uni.showToast({
  79. icon: 'success',
  80. title: '操作成功'
  81. })
  82. uni.setStorageSync('xm-user', this.form)
  83. } else {
  84. uni.showToast({
  85. icon: 'none',
  86. title: res.msg
  87. })
  88. }
  89. })
  90. },
  91. handleImgUploadSuccess(e) {
  92. let _this = this
  93. const filePath = e.tempFilePaths[0]
  94. uni.uploadFile({
  95. url: _this.$baseUrl +'/files/upload', //自己的后端接口(默认发送post请求) 注意 _this.$baseUrl需要在全局变量定义
  96. filePath: filePath,
  97. name:"file", //这里应为自己后端文件形参的名字
  98. success(res) {
  99. let url = JSON.parse(res.data || '{}').data // 获取返回的图像链接
  100. _this.form.avatar = url // 给表单图像属性赋值
  101. }
  102. })
  103. },
  104. }
  105. }
  106. </script>
  107. <style>
  108. </style>