order.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <template>
  2. <div class="page" id="page">
  3. <div class="top-title wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  4. <div class="top-container">
  5. <n-icon :component="MdCart" size="40" style="vertical-align: middle;" />
  6. <span>{{ t('common.navAboutUs.order') }}</span>
  7. </div>
  8. </div>
  9. <div class="page-nav-container wow fadeInLeft" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  10. <div class="nav-txt">
  11. <n-breadcrumb separator=">">
  12. <n-breadcrumb-item>
  13. <n-icon :component="MdHome" /><router-link to="/home">{{ t('common.navigate.home') }}</router-link>
  14. </n-breadcrumb-item>
  15. <n-breadcrumb-item>
  16. <n-icon :component="MdCart" />{{ t('common.navAboutUs.order') }}
  17. </n-breadcrumb-item>
  18. </n-breadcrumb>
  19. </div>
  20. </div>
  21. <!--订购流程-->
  22. <div class="order-process">
  23. <div class="container">
  24. <div class="title wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  25. <h2>{{ t('common.navAboutUs.order') }}</h2>
  26. </div>
  27. <div class="process-list">
  28. <div class="row wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  29. <div class="row-desc">
  30. <h2 v-if="!pcShow">{{ t('aboutUs.order.pFstTile') }}</h2>
  31. <p>{{ t('aboutUs.order.pFstDesc01') }}</p>
  32. <p>{{ t('aboutUs.order.pFstDesc02') }}</p>
  33. </div>
  34. <div class="row-index">
  35. <span class="row-index-txt">1</span>
  36. <span class="icon iconfont icon-iconset0435 f50"></span>
  37. </div>
  38. <div v-if="pcShow" class="row-text">
  39. <h2>{{ t('aboutUs.order.pFstTile') }}</h2>
  40. </div>
  41. </div>
  42. <div class="row wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  43. <div v-if="pcShow" class="row-text">
  44. <h2>{{ t('aboutUs.order.pSndTitle') }}</h2>
  45. </div>
  46. <div class="row-index">
  47. <span class="row-index-txt">2</span>
  48. <span class="icon iconfont icon-iconset0435 f50"></span>
  49. </div>
  50. <div class="row-desc">
  51. <h2 v-if="!pcShow">{{ t('aboutUs.order.pSndTitle') }}</h2>
  52. <p>{{ t('aboutUs.order.pSndDesc01') }}</p>
  53. <p>{{ t('aboutUs.order.pSndDesc02') }}</p>
  54. </div>
  55. </div>
  56. <div class="row wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  57. <div class="row-desc">
  58. <h2 v-if="!pcShow">{{ t('aboutUs.order.pThrTitle') }}</h2>
  59. <p>{{ t('aboutUs.order.pThrDesc01') }}</p>
  60. <p>{{ t('aboutUs.order.pThrDesc02') }}</p>
  61. <!-- <p>{{ t('aboutUs.order.pThrDesc03') }}</p> -->
  62. </div>
  63. <div class="row-index">
  64. <span class="row-index-txt">3</span>
  65. <span class="icon iconfont icon-iconset0435 f50"></span>
  66. </div>
  67. <div v-if="pcShow" class="row-text">
  68. <h2>{{ t('aboutUs.order.pThrTitle') }}</h2>
  69. </div>
  70. </div>
  71. <div class="row wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  72. <div v-if="pcShow" class="row-text">
  73. <h2>{{ t('aboutUs.order.pForTitle') }}</h2>
  74. </div>
  75. <div class="row-index">
  76. <span class="row-index-txt">4</span>
  77. <span class="icon iconfont icon-iconset0435 f50"></span>
  78. </div>
  79. <div class="row-desc">
  80. <h2 v-if="!pcShow">{{ t('aboutUs.order.pForTitle') }}</h2>
  81. <p>{{ t('aboutUs.order.pForDesc01') }}</p>
  82. <p>{{ t('aboutUs.order.pForDesc02') }}</p>
  83. <p>{{ t('aboutUs.order.pForDesc03') }}</p>
  84. </div>
  85. </div>
  86. <div class="row wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  87. <div class="row-desc">
  88. <h2 v-if="!pcShow">{{ t('aboutUs.order.pFivTitle') }}</h2>
  89. <p>{{ t('aboutUs.order.pFivDesc') }}</p>
  90. </div>
  91. <div class="row-index">
  92. <span class="row-index-txt">5</span>
  93. </div>
  94. <div v-if="pcShow" class="row-text">
  95. <h2>{{ t('aboutUs.order.pFivTitle') }}</h2>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="home-contact" id="home-contact">
  102. <div class="contact-row wow fadeInDown" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  103. <div class="contact-txt">
  104. <span>{{t('home.custom.sndtitle')}}</span>
  105. </div>
  106. <div class="contact-btn">
  107. <a @click="handleContact">{{ t('aboutUs.order.custom') }}</a>
  108. </div>
  109. </div>
  110. <div class="contact-img wow fadeInUp" data-wow-duration="2s" data-wow-delay="0s" data-wow-offset="0">
  111. <img src="@/assets/images/swtp.jpg" />
  112. </div>
  113. </div>
  114. <n-modal :show="demandShow" preset="dialog" :title="t('report.detail.subscribe')" @close="demandShow = false" @esc="demandShow = false" @mask-click="demandShow = false" :style="'min-width: 40%'">
  115. <demand @closeDialog="handleCloseDiag" />
  116. </n-modal>
  117. </div>
  118. </template>
  119. <script lang="ts" setup>
  120. import { useI18n } from "#imports";
  121. import { ref, onMounted } from "vue";
  122. import { NIcon, NBreadcrumb, NBreadcrumbItem, NModal } from "naive-ui";
  123. import { MdHome, MdCart } from "@vicons/ionicons4";
  124. import { useUserStore } from "@/store/user";
  125. const { t } = useI18n();
  126. const demandShow = ref(false); // 需求
  127. const pcShow = ref<boolean>(true);
  128. const userStore = useUserStore();
  129. const lang = userStore.getLang;
  130. function handleContact() {
  131. demandShow.value = true;
  132. }
  133. // 关闭diag
  134. function handleCloseDiag() {
  135. demandShow.value = false;
  136. }
  137. onMounted(() => {
  138. pcShow.value = !isMobile();
  139. });
  140. useHead({
  141. title: t("common.navAboutUs.order") + "-" + t("defaultSettings.title"),
  142. viewport: "width=device-width,initial-scale=1,maximum-scale=1 ",
  143. charset: "utf-8",
  144. meta: [
  145. {
  146. hid: "keywords",
  147. name: "keywords",
  148. content: t("defaultSettings.keyword"),
  149. },
  150. {
  151. hid: "description",
  152. name: "description",
  153. content: t("defaultSettings.desc"),
  154. },
  155. ],
  156. });
  157. </script>
  158. <style lang="scss" scoped>
  159. .order-process {
  160. background-color: #fff;
  161. margin-top: 10px;
  162. padding-bottom: 120px;
  163. }
  164. .process-list {
  165. .row {
  166. display: flex;
  167. align-items: center;
  168. padding-top: 20px;
  169. .row-text {
  170. width: calc(50% - 100px);
  171. }
  172. .row-index {
  173. width: 200px;
  174. text-align: center;
  175. position: relative;
  176. .row-index-txt {
  177. width: 80px;
  178. height: 80px;
  179. display: inline-block;
  180. background-color: #18a058;
  181. line-height: 80px;
  182. border-radius: 100%;
  183. color: #fff;
  184. font-size: 30px;
  185. }
  186. .icon {
  187. position: absolute;
  188. top: 90px;
  189. left: 75px;
  190. }
  191. }
  192. .row-desc {
  193. width: calc(50% - 100px);
  194. padding: 30px;
  195. min-height: 155px;
  196. background-color: #fff;
  197. box-shadow: 5px 4px 15px 0 rgba(0, 0, 0, 0.15);
  198. border-radius: 10px;
  199. > p {
  200. font-size: 16px;
  201. color: #000;
  202. margin: 0;
  203. line-height: 30px;
  204. }
  205. &:hover {
  206. background-color: #18a058;
  207. > p {
  208. color: #fff;
  209. }
  210. > h2 {
  211. color: #fff;
  212. }
  213. }
  214. }
  215. }
  216. }
  217. .home-contact {
  218. position: relative;
  219. .contact-row {
  220. position: absolute;
  221. left: 12.5%;
  222. top: 160px;
  223. width: 1200px;
  224. display: flex;
  225. justify-content: space-between;
  226. align-items: center;
  227. flex-wrap: wrap;
  228. .contact-txt {
  229. width: 40%;
  230. span {
  231. font-size: 26px;
  232. color: #fff;
  233. font-weight: 600;
  234. }
  235. }
  236. .contact-btn {
  237. width: 30%;
  238. > a {
  239. color: #fff;
  240. font-size: 26px;
  241. background: #18a058;
  242. padding: 15px 25px;
  243. }
  244. }
  245. }
  246. .contact-img {
  247. height: 360px;
  248. overflow: hidden;
  249. > img {
  250. height: 100%;
  251. width: 100%;
  252. object-fit: cover;
  253. }
  254. }
  255. }
  256. </style>