index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <view class="pet-edit-page">
  3. <view class="form-card">
  4. <view class="form-item">
  5. <text class="form-label">宠物名称</text>
  6. <input class="form-input" v-model="form.name" placeholder="请输入宠物名称" />
  7. </view>
  8. <view class="form-item">
  9. <text class="form-label">品种</text>
  10. <input class="form-input" v-model="form.breed" placeholder="请输入品种" />
  11. </view>
  12. <view class="form-item">
  13. <text class="form-label">性别</text>
  14. <picker :range="genderOptions" @change="onGenderChange">
  15. <view class="picker-value">{{ form.gender || '请选择' }}</view>
  16. </picker>
  17. </view>
  18. <view class="form-item">
  19. <text class="form-label">年龄</text>
  20. <input class="form-input" v-model="form.age" placeholder="请输入年龄" />
  21. </view>
  22. <view class="form-item">
  23. <text class="form-label">体重(kg)</text>
  24. <input class="form-input" v-model="form.weight" type="digit" placeholder="请输入体重" />
  25. </view>
  26. <view class="form-item">
  27. <text class="form-label">健康状况</text>
  28. <input class="form-input" v-model="form.health" placeholder="请输入健康状况" />
  29. </view>
  30. <view class="form-item">
  31. <text class="form-label">备注</text>
  32. <textarea class="form-textarea" v-model="form.note" placeholder="请输入备注信息"></textarea>
  33. </view>
  34. </view>
  35. <button class="save-btn" @click="onSave">保存修改</button>
  36. </view>
  37. </template>
  38. <script setup>
  39. import { reactive } from 'vue'
  40. const genderOptions = ['公', '母']
  41. const form = reactive({ name: '旺财', breed: '金毛寻回犬', gender: '公', age: '3岁', weight: '30', health: '健康', note: '' })
  42. const onGenderChange = (e) => { form.gender = genderOptions[e.detail.value] }
  43. const onSave = () => {
  44. uni.showToast({ title: '保存成功', icon: 'success' })
  45. setTimeout(() => uni.navigateBack(), 1000)
  46. }
  47. </script>
  48. <style lang="scss" scoped>
  49. .pet-edit-page {
  50. min-height: 100vh;
  51. background: #f7f8fa;
  52. padding: 24rpx;
  53. padding-bottom: 160rpx;
  54. }
  55. .form-card {
  56. background: #fff;
  57. border-radius: 24rpx;
  58. padding: 8rpx 32rpx;
  59. }
  60. .form-item {
  61. display: flex;
  62. align-items: center;
  63. padding: 28rpx 0;
  64. border-bottom: 1rpx solid #f5f5f5;
  65. }
  66. .form-item:last-child {
  67. border-bottom: none;
  68. }
  69. .form-label {
  70. width: 180rpx;
  71. font-size: 28rpx;
  72. color: #333;
  73. flex-shrink: 0;
  74. }
  75. .form-input {
  76. flex: 1;
  77. font-size: 28rpx;
  78. color: #333;
  79. text-align: right;
  80. }
  81. .picker-value {
  82. flex: 1;
  83. font-size: 28rpx;
  84. color: #333;
  85. text-align: right;
  86. }
  87. .form-textarea {
  88. flex: 1;
  89. font-size: 28rpx;
  90. color: #333;
  91. height: 160rpx;
  92. }
  93. .save-btn {
  94. margin-top: 48rpx;
  95. width: 100%;
  96. height: 96rpx;
  97. background: linear-gradient(90deg, #ffd53f, #ff9500);
  98. color: #333;
  99. border: none;
  100. border-radius: 48rpx;
  101. font-size: 32rpx;
  102. font-weight: bold;
  103. line-height: 96rpx;
  104. }
  105. </style>