index.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. <template>
  2. <view class="user-edit-page">
  3. <view class="form-card">
  4. <view class="form-item"><text class="form-label">姓名</text><input class="form-input" v-model="form.name" placeholder="请输入姓名" /></view>
  5. <view class="form-item"><text class="form-label">手机号</text><input class="form-input" v-model="form.phone" type="number" placeholder="请输入手机号" /></view>
  6. <view class="form-item">
  7. <text class="form-label">性别</text>
  8. <picker :range="genderOptions" @change="onGenderChange"><view class="picker-value">{{ form.gender || '请选择' }}</view></picker>
  9. </view>
  10. <view class="form-item"><text class="form-label">住址</text><input class="form-input" v-model="form.address" placeholder="请输入住址" /></view>
  11. <view class="form-item"><text class="form-label">备注</text><textarea class="form-textarea" v-model="form.note" placeholder="请输入备注"></textarea></view>
  12. </view>
  13. <button class="save-btn" @click="onSave">保存修改</button>
  14. </view>
  15. </template>
  16. <script setup>
  17. import { reactive } from 'vue'
  18. const genderOptions = ['男', '女']
  19. const form = reactive({ name: '张先生', phone: '13800138000', gender: '男', address: '北京市朝阳区', note: '' })
  20. const onGenderChange = (e) => { form.gender = genderOptions[e.detail.value] }
  21. const onSave = () => { uni.showToast({ title: '保存成功', icon: 'success' }); setTimeout(() => uni.navigateBack(), 1000) }
  22. </script>
  23. <style lang="scss" scoped>
  24. .user-edit-page { min-height: 100vh; background: #f7f8fa; padding: 24rpx; padding-bottom: 160rpx; }
  25. .form-card { background: #fff; border-radius: 24rpx; padding: 8rpx 32rpx; }
  26. .form-item { display: flex; align-items: center; padding: 28rpx 0; border-bottom: 1rpx solid #f5f5f5; }
  27. .form-item:last-child { border-bottom: none; }
  28. .form-label { width: 160rpx; font-size: 28rpx; color: #333; flex-shrink: 0; }
  29. .form-input { flex: 1; font-size: 28rpx; color: #333; text-align: right; }
  30. .picker-value { font-size: 28rpx; color: #333; }
  31. .form-textarea { flex: 1; font-size: 28rpx; color: #333; height: 160rpx; }
  32. .save-btn { margin-top: 48rpx; width: 100%; height: 96rpx; background: linear-gradient(90deg, #ffd53f, #ff9500); color: #333; border: none; border-radius: 48rpx; font-size: 32rpx; font-weight: bold; line-height: 96rpx; }
  33. </style>