haiziNianling.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <view v-for="(item,index) in myData.children" :key="item.timer">
  3. <view><text v-if="index == 0">孩子年龄</text></view>
  4. <uni-easyinput v-model="item.age" placeholder="请输入孩子年龄" @change="onChange" />
  5. <button @click="handleAdd" v-if="myData.children.length == 1">+</button>
  6. <button @click="handleAdd"
  7. v-else-if="myData.children.length-1 == index && myData.children.length != 1 && myData.children.length<3">+</button>
  8. <button @click="handleDelete(item.timer)" v-else>-</button>
  9. </view>
  10. </template>
  11. <script setup>
  12. import {
  13. computed,
  14. reactive,
  15. watch,
  16. watchEffect
  17. } from "vue"
  18. import {
  19. useHetong
  20. } from "../useHetong.js"
  21. const {
  22. injectHetong
  23. } = useHetong();
  24. const data = injectHetong()
  25. const emits = defineEmits(['change'])
  26. const myData = reactive({
  27. children: []
  28. })
  29. watchEffect(() => {
  30. const list = data.hetong.qzHzNianliang && data.hetong.qzHzNianliang.split(',').map((item,index) => ({
  31. age: item,
  32. timer: new Date().getTime()+index
  33. }));
  34. myData.children = list.length ? list : [{
  35. age: '',
  36. timer: new Date().getTime()
  37. }]
  38. })
  39. function onChange() {
  40. data.hetong.qzHzNianliang = myData.children.map(item => item.age).join(',')
  41. }
  42. function handleAdd() {
  43. myData.children.push({
  44. age: '',
  45. timer: new Date().getTime()
  46. });
  47. data.hetong.qzHzNianliang = myData.children.map(item => item.age).join(',')
  48. emits('change')
  49. }
  50. function handleDelete(timer) {
  51. console.log('timer', timer)
  52. myData.children = myData.children.filter(item => item.timer != timer)
  53. data.hetong.qzHzNianliang = myData.children.map(item => item.age).join(',')
  54. emits('change')
  55. }
  56. </script>
  57. <style>
  58. </style>