StepThree.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <template>
  2. <h3 class="ptc-title">Confirm appointment</h3>
  3. <div class="ptc-block">
  4. <div class="ptc-inner">
  5. <div class="shop-name">{{ state.shop.name }}</div>
  6. <div class="shop-address">
  7. {{ state.shop.address }}
  8. </div>
  9. <div class="shop-action">
  10. <span class="modify" @click="state.step = 0">Modify ></span>
  11. </div>
  12. </div>
  13. </div>
  14. <div class="ptc-block">
  15. <div class="ptc-inner">
  16. <p class="t2">Appointed time</p>
  17. <div class="flex-ac space-between">
  18. <strong class="p1">{{ state.uiDate }}</strong>
  19. <strong class="p2">{{ state.uiPeriod }}</strong>
  20. <span class="modify" @click="state.step--">Modify ></span>
  21. </div>
  22. </div>
  23. </div>
  24. <div class="ptc-block">
  25. <div class="ptc-inner">
  26. <p class="t1">
  27. Please provide a mobile number so that the customer service can confirm
  28. the details with you。
  29. </p>
  30. <p class="t2">Phone number</p>
  31. <input
  32. v-model="state.phoneNumber"
  33. type="text"
  34. class="ptc-input"
  35. placeholder="Please enter"
  36. />
  37. </div>
  38. </div>
  39. <div class="ptc-wrapper">
  40. <div class="ptc-block">
  41. <div class="ptc-inner">
  42. <p class="t1">
  43. Is there anything to pay attention to, nothing to skip。
  44. </p>
  45. <textarea
  46. v-model="state.remark"
  47. placeholder="Please enter, up to 1000 characters"
  48. ></textarea>
  49. </div>
  50. </div>
  51. <div class="ptc-button-group">
  52. <div class="ptc-inner">
  53. <button class="ptc-button ptc-button--loading" @click="submit">
  54. SUBMIT
  55. </button>
  56. </div>
  57. </div>
  58. </div>
  59. </template>
  60. <script setup lang="ts">
  61. import { onMounted } from 'vue'
  62. import { state } from '../store'
  63. import { getRepairPhone, applyRepair, rescheduleRepair } from '@/service/repair'
  64. import Toast from '@/components/toast'
  65. onMounted(async () => {
  66. if (state.repairId) {
  67. state.phoneNumber = (await getRepairPhone()).results
  68. }
  69. })
  70. async function submit() {
  71. if (!state.phoneNumber) return Toast('Please enter a phone number')
  72. const commonParams = {
  73. igeektek_id: state.shop.igeektek_id,
  74. pickup_time: state.date + ' ' + state.period,
  75. phone_number: state.phoneNumber,
  76. remark: state.remark || '',
  77. }
  78. const request = state.repairId
  79. ? rescheduleRepair({ id: +state.repairId, ...commonParams })
  80. : applyRepair({ ...commonParams })
  81. await request
  82. state.step++
  83. }
  84. </script>