index.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <script lang='ts' setup>
  2. import type { FormInstance, FormRules } from 'element-plus'
  3. import { getContactUsApi, getDictListApi } from '~/api/model/common'
  4. import { ConstKeys } from '~/enums/const-enums'
  5. useHead({
  6. title: 'Contact Us | EJET Selection',
  7. meta: [
  8. {
  9. name: 'description',
  10. content:
  11. `Reach out to EJET Selection for inquiries, support, or partnership opportunities. We're here to assist you with all your wholesale and retail needs.`,
  12. },
  13. {
  14. property: 'og:title',
  15. content: 'Contact Us | EJET Selection',
  16. },
  17. {
  18. property: 'og:description',
  19. content:
  20. `Reach out to EJET Selection for inquiries, support, or partnership opportunities. We're here to assist you with all your wholesale and retail needs.`,
  21. },
  22. {
  23. property: 'og:type',
  24. content: 'website',
  25. },
  26. {
  27. property: 'twitter:title',
  28. content: 'Contact Us | EJET Selection',
  29. },
  30. {
  31. property: 'twitter:description',
  32. content:
  33. `Reach out to EJET Selection for inquiries, support, or partnership opportunities. We're here to assist you with all your wholesale and retail needs.`,
  34. },
  35. {
  36. property: 'twitter:card',
  37. content: 'summary_large_image',
  38. },
  39. ],
  40. link: [
  41. {
  42. rel: 'canonical',
  43. href: `${ConstKeys.DOMAINPRO}/contact`,
  44. },
  45. ],
  46. })
  47. const ruleFormRef = ref<FormInstance>()
  48. const mobileAreaCodeList = ref()
  49. const params = ref<any>({
  50. name: '',
  51. mail: '',
  52. mobileAreaCode: '+86',
  53. mobile: '',
  54. message: '',
  55. })
  56. async function getMobileAreaCodeList() {
  57. const list = await getDictListApi('A064')
  58. mobileAreaCodeList.value = list
  59. }
  60. async function submitForm() {
  61. try {
  62. await getContactUsApi(params.value)
  63. ElMessage.success('Submit Success')
  64. }
  65. catch (error) {
  66. console.log('error', error)
  67. }
  68. }
  69. getMobileAreaCodeList()
  70. </script>
  71. <template>
  72. <div class="w-1400px mx-auto">
  73. <div class="flex items-center pb-160px px-150px pt-140px">
  74. <div class="w-50%">
  75. <h1 class="text-48px fw-600 text-#333 custom-title-font">
  76. Get In Touch
  77. </h1>
  78. <div class="my-30px h-1px w-100px bg-#999" />
  79. <h2 class="text-24px text-#333 !mb-60px">
  80. CUSTOMER SUPPORT
  81. </h2>
  82. <div class="flex items-center mb-40px">
  83. <img
  84. src="~/assets/images/contact_addr.png"
  85. alt=""
  86. class="w-36px h-36px mr-20px"
  87. srcset=""
  88. >
  89. <div class="text-24px text-#666 lh-30px">
  90. 7th Floor, Tianbo International Building,<br> 55 Jiangdong Middle Road,<br> Yiwu, Zhejiang, China
  91. </div>
  92. </div>
  93. <div class="flex items-center mb-40px">
  94. <img
  95. src="~/assets/images/contact_email.png"
  96. alt=""
  97. class="w-36px h-36px mr-20px"
  98. srcset=""
  99. >
  100. <div class="text-24px text-#666 lh-30px">
  101. selection@ejet.comejet.com
  102. </div>
  103. </div>
  104. <div class="flex items-center mb-40px">
  105. <img
  106. src="~/assets/images/contact_phone.png"
  107. alt=""
  108. class="w-36px h-36px mr-20px"
  109. srcset=""
  110. >
  111. <div class="text-24px text-#666 lh-30px">
  112. +86 150 8821 0909
  113. </div>
  114. </div>
  115. </div>
  116. <div class="w-50%">
  117. <el-form
  118. ref="ruleFormRef"
  119. :model="params"
  120. label-width="auto"
  121. size="default"
  122. status-icon
  123. >
  124. <el-form-item label="Name" class="custom-form-item">
  125. <el-input
  126. v-model="params.name"
  127. placeholder="Enter your name"
  128. class="h-50px"
  129. />
  130. </el-form-item>
  131. <el-form-item label="Email Address" class="custom-form-item">
  132. <el-input
  133. v-model="params.mail"
  134. placeholder="Enter your email"
  135. class="h-50px"
  136. />
  137. </el-form-item>
  138. <div class="flex">
  139. <el-form-item
  140. label="Mobile Number"
  141. class="custom-form-item"
  142. prop="mobile"
  143. >
  144. <el-input v-model="params.mobile" placeholder="Mobile Number" class="h-50px">
  145. <template #prepend>
  146. <el-select v-model="params.mobileAreaCode" class="!h-50px" placeholder="Select" style="width: 120px">
  147. <el-option
  148. v-for="(item, index) in mobileAreaCodeList"
  149. :key="index"
  150. :value="item.value"
  151. :label="`${item.value} ${item.label}`"
  152. >
  153. {{ item.value }} {{ item.label }}
  154. </el-option>
  155. </el-select>
  156. </template>
  157. </el-input>
  158. </el-form-item>
  159. </div>
  160. <el-form-item label="Message" class="custom-form-item !mb-60px">
  161. <el-input
  162. v-model="params.message"
  163. type="textarea"
  164. placeholder="Enter your message"
  165. class="h-120px textarea-custom"
  166. />
  167. </el-form-item>
  168. <el-form-item>
  169. <el-button
  170. class="!bg-#C58C64 !text-#fff !w-full !h-50px !text-16px !fw-500 !b-rd-6px"
  171. @click="submitForm()"
  172. >
  173. Send Message
  174. </el-button>
  175. </el-form-item>
  176. </el-form>
  177. </div>
  178. </div>
  179. <AppFooter />
  180. </div>
  181. </template>
  182. <style lang="less" scoped>
  183. :deep(.custom-form-item) {
  184. width: 100%;
  185. margin-bottom: 22px;
  186. display: block !important;
  187. .el-select__wrapper {
  188. height: 50px !important;
  189. }
  190. .el-form-item__label-wrap {
  191. margin-left: unset !important;
  192. .el-form-item__label {
  193. margin-bottom: 5px;
  194. font-size: 16px !important;
  195. color: #5b463e !important;
  196. }
  197. }
  198. .el-checkbox {
  199. .el-checkbox__input {
  200. &.is-checked {
  201. .el-checkbox__inner {
  202. color: #cc9879 !important;
  203. background-color: #cc9879 !important;
  204. border: 1px solid #cc9879 !important;
  205. }
  206. }
  207. .el-checkbox__inner {
  208. &:hover {
  209. border-color: #cc9879 !important;
  210. }
  211. }
  212. }
  213. &.is-checked {
  214. .el-checkbox__label {
  215. color: #cc9879 !important;
  216. }
  217. }
  218. }
  219. .textarea-custom {
  220. .el-textarea__inner {
  221. height: 100%;
  222. }
  223. }
  224. }
  225. ::v-deep(.form-footer) {
  226. .el-form-item__content {
  227. display: flex;
  228. justify-content: space-between;
  229. }
  230. }
  231. </style>