contact.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <view class="pa-3">
  3. <uni-forms ref="baseFormRef" v-model="baseFormData" validateTrigger="bind" :rules="rules" label-width="100px" label-align="right">
  4. <uni-forms-item label="姓名" required name="name">
  5. <uni-easyinput v-model="baseFormData.name" placeholder="请输入姓名" />
  6. </uni-forms-item>
  7. <uni-forms-item label="联系手机号" required name="phone">
  8. <uni-easyinput v-model="baseFormData.phone" placeholder="请输入联系手机号" />
  9. </uni-forms-item>
  10. <uni-forms-item label="企业名称" required name="enterpriseName">
  11. <uni-easyinput v-model="baseFormData.enterpriseName" placeholder="请输入企业名称" />
  12. </uni-forms-item>
  13. <button type="primary" @click="submit" :disabled="loading">提交</button>
  14. </uni-forms>
  15. </view>
  16. </template>
  17. <script setup>
  18. import { ref, unref } from 'vue'
  19. import { huntSubmit } from '@/api/common'
  20. const baseFormRef = ref()
  21. const baseFormData = ref({
  22. name: null,
  23. phone: null,
  24. enterpriseName: null
  25. })
  26. const rules = {
  27. name: {
  28. rules: [{
  29. required: true,
  30. errorMessage: '姓名不能为空'
  31. }]
  32. },
  33. phone: {
  34. rules: [{required: true, errorMessage: '请输入手机号码' }]
  35. },
  36. enterpriseName: {
  37. rules: [{required: true, errorMessage: '请输入企业名称' }]
  38. }
  39. }
  40. const loading = ref(false)
  41. const submit = async () => {
  42. const valid = await unref(baseFormRef).validate()
  43. if (!valid) return
  44. loading.value = true
  45. try {
  46. const { code, msg } = await huntSubmit(baseFormData.value)
  47. if (code !== 0) {
  48. loading.value = false
  49. uni.showToast({ title: msg, icon: 'none' })
  50. return
  51. }
  52. uni.showToast({ title: '提交成功,我们会尽快与您联系', icon: 'none', success: () => {
  53. setTimeout(() => {
  54. loading.value = false
  55. uni.navigateBack()
  56. }, 1000)
  57. } })
  58. } catch (error) {
  59. console.log('error', error)
  60. loading.value = false
  61. }
  62. }
  63. </script>
  64. <style lang="scss" scoped>
  65. .pa-3 {
  66. padding: 30rpx;
  67. }
  68. </style>