瀏覽代碼

Merge branch 'master' of http://git.lcpcp.cc/zpj/global-merchant-center

DESKTOP-70VPDLK\Administrator 5 月之前
父節點
當前提交
21353797cd
共有 52 個文件被更改,包括 1998 次插入605 次删除
  1. 2 1
      src/api/goods.js
  2. 3 0
      src/assets/css/common.css
  3. 二進制
      src/assets/img/back.png
  4. 二進制
      src/assets/img/cooperation-imgs/1.png
  5. 二進制
      src/assets/img/cooperation-imgs/10.png
  6. 二進制
      src/assets/img/cooperation-imgs/11.png
  7. 二進制
      src/assets/img/cooperation-imgs/12.png
  8. 二進制
      src/assets/img/cooperation-imgs/13.png
  9. 二進制
      src/assets/img/cooperation-imgs/14.png
  10. 二進制
      src/assets/img/cooperation-imgs/15.png
  11. 二進制
      src/assets/img/cooperation-imgs/16.png
  12. 二進制
      src/assets/img/cooperation-imgs/17.png
  13. 二進制
      src/assets/img/cooperation-imgs/18.png
  14. 二進制
      src/assets/img/cooperation-imgs/2.png
  15. 二進制
      src/assets/img/cooperation-imgs/3.png
  16. 二進制
      src/assets/img/cooperation-imgs/4.png
  17. 二進制
      src/assets/img/cooperation-imgs/5.png
  18. 二進制
      src/assets/img/cooperation-imgs/6.png
  19. 二進制
      src/assets/img/cooperation-imgs/7.png
  20. 二進制
      src/assets/img/cooperation-imgs/8.png
  21. 二進制
      src/assets/img/cooperation-imgs/9.png
  22. 二進制
      src/assets/img/home/new-travel.png
  23. 二進制
      src/assets/img/logo.png
  24. 二進制
      src/assets/img/me/balance.png
  25. 二進制
      src/assets/img/me/commission.png
  26. 二進制
      src/assets/img/plane.png
  27. 二進制
      src/assets/img/time-box.png
  28. 二進制
      src/assets/img/vip.png
  29. 12 8
      src/components/Forestage/Navigation.vue
  30. 2 2
      src/components/Forestage/PageFoot.vue
  31. 6 0
      src/i18n.js
  32. 207 0
      src/locales/Arab.json
  33. 27 5
      src/locales/en.json
  34. 27 6
      src/locales/zh-CN.json
  35. 5 0
      src/router/front.js
  36. 3 1
      src/utils/http.js
  37. 4 3
      src/utils/request.js
  38. 4 0
      src/utils/tools.js
  39. 78 35
      src/views/Forestage/Home/index.vue
  40. 2 2
      src/views/Forestage/Me/mod/msg.vue
  41. 79 7
      src/views/Forestage/Me/mod/my-money.vue
  42. 2 2
      src/views/Forestage/Me/mod/my-order.vue
  43. 177 0
      src/views/Forestage/Order/index.vue
  44. 17 0
      src/views/Forestage/Tourism/detail.vue
  45. 231 0
      src/views/Forestage/Tourism/index original.vue
  46. 577 187
      src/views/Forestage/Tourism/index.vue
  47. 185 0
      src/views/Forestage/Tourism/order-detail.vue
  48. 1 1
      src/views/Forestage/login/forget-password.vue
  49. 1 1
      src/views/Forestage/login/login.vue
  50. 1 1
      src/views/Forestage/login/register.vue
  51. 4 2
      vue.config.js
  52. 341 341
      yarn.lock

+ 2 - 1
src/api/goods.js

@@ -5,4 +5,5 @@ let url = 'api/goods/'
 // 获取商品分类
 export const getClass = (data) => request(url + 'class', 'post', data)
 // 获取商品
-export const getList = (data) => request(url + 'list', 'post', data)
+export const getList = (data) => request(url + 'list', 'post', data)
+export const getVipGoodsList = (data) => request(url + 'vip', 'post', data)

+ 3 - 0
src/assets/css/common.css

@@ -64,6 +64,9 @@
 .fc-FFEB3B{
 	color: #FFEB3B;
 }
+.fc-C1B5C5 {
+	color: #C1B5C5!important;
+}
 
 .bg-c-EEF4FF{
 	background-color: #EEF4FF;

二進制
src/assets/img/back.png


二進制
src/assets/img/cooperation-imgs/1.png


二進制
src/assets/img/cooperation-imgs/10.png


二進制
src/assets/img/cooperation-imgs/11.png


二進制
src/assets/img/cooperation-imgs/12.png


二進制
src/assets/img/cooperation-imgs/13.png


二進制
src/assets/img/cooperation-imgs/14.png


二進制
src/assets/img/cooperation-imgs/15.png


二進制
src/assets/img/cooperation-imgs/16.png


二進制
src/assets/img/cooperation-imgs/17.png


二進制
src/assets/img/cooperation-imgs/18.png


二進制
src/assets/img/cooperation-imgs/2.png


二進制
src/assets/img/cooperation-imgs/3.png


二進制
src/assets/img/cooperation-imgs/4.png


二進制
src/assets/img/cooperation-imgs/5.png


二進制
src/assets/img/cooperation-imgs/6.png


二進制
src/assets/img/cooperation-imgs/7.png


二進制
src/assets/img/cooperation-imgs/8.png


二進制
src/assets/img/cooperation-imgs/9.png


二進制
src/assets/img/home/new-travel.png


二進制
src/assets/img/logo.png


二進制
src/assets/img/me/balance.png


二進制
src/assets/img/me/commission.png


二進制
src/assets/img/plane.png


二進制
src/assets/img/time-box.png


二進制
src/assets/img/vip.png


+ 12 - 8
src/components/Forestage/Navigation.vue

@@ -4,13 +4,14 @@
 
       <div class="align-items-center">
         <img class="logo-box" src="@/assets/img/logo.png" alt="">
-        <div class="fs-18 fc-f">GIobal Merchant Center</div>
+        <div class="fs-18 fc-f">Booking Holdings</div>
       </div>
 
       <div class="align-items-center">
         <div @click="navClick(1)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('Home')}}<div v-if="navActive==1" class="p-c wow animate__animated animate__bounceInRight"></div></div>
         <div @click="navClick(2)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('Tourism')}}<div v-if="navActive==2" class="p-c wow animate__animated animate__bounceInRight"></div></div>
-        <div @click="navClick(3)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('Team')}}<div v-if="navActive==3" class="p-c wow animate__animated animate__bounceInRight"></div></div>
+        <!-- <div @click="navClick(3)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('Team')}}<div v-if="navActive==3" class="p-c wow animate__animated animate__bounceInRight"></div></div> -->
+        <div @click="navClick(3)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('Order')}}<div v-if="navActive==3" class="p-c wow animate__animated animate__bounceInRight"></div></div>
         <div @click="navClick(4)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('Recharge')}}<div v-if="navActive==4" class="p-c wow animate__animated animate__bounceInRight"></div></div>
         <div @click="navClick(5)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('Draw Money')}}<div v-if="navActive==5" class="p-c wow animate__animated animate__bounceInRight"></div></div>
         <div @click="navClick(6)" class="fs-16 mr-38 fc-f hand-cursor p-f" >{{$t('My Account')}}<div v-if="navActive==6" class="p-c wow animate__animated animate__bounceInRight"></div></div>
@@ -34,6 +35,7 @@
 
 <script>
 import { mapGetters } from 'vuex'
+import tools from '@/utils/tools'
 export default {
   name: 'Navigation',
   props: ['background', 'border', 'navStyle'],
@@ -43,7 +45,7 @@ export default {
       langShow: false,
       langIndex: 0,
       langText: '繁体中文',
-      langList: [{ name: '繁体中文', type: 'cn' }, { name: 'English', type: 'en' }],
+      langList: [{ name: '繁体中文', type: 'cn' }, { name: 'English', type: 'en' },{ name: 'عرب .', type: 'ar' }],
       userToken:'',
     }
   },
@@ -63,12 +65,13 @@ export default {
   },
   created () {
     this.userToken = window.localStorage.getItem('userToken')
-
-    const lang = localStorage.getItem('lang') || 'en'
+    const lang = tools.getLang()
     if (lang === 'cn') {
       this.langText = '繁体中文'
-    } else {
+    } else if(lang === 'en') {
       this.langText = 'English'
+    } else {
+      this.langText = 'عرب .'
     }
     const active = localStorage.getItem('nav_active') * 1
     if (active === -1) {
@@ -90,7 +93,8 @@ export default {
           this.$router.push({ path: '/Tourism' })
           break
         case 3:
-          this.$router.push({ path: '/Team' })
+          /* this.$router.push({ path: '/Team' }) */
+          this.$router.push({ path: '/Order' })
           break
         case 4:
           this.$router.push({ path: '/Recharge' })
@@ -144,7 +148,7 @@ export default {
     width: 48px;
     height: 48px;
     opacity: 1;
-    background: rgba(255, 255, 255, 1);
+    /* background: rgba(255, 255, 255, 1); */
     border-radius: 50%;
     margin-right: 10px;
   }

+ 2 - 2
src/components/Forestage/PageFoot.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="footer-container align-items-center justify-content">
     <img class="logo-box" src="@/assets/img/logo.png" alt="">
-    <div class="fs-16 fc-f m-r-40">GIobal Merchant Center</div>
+    <div class="fs-16 fc-f m-r-40">Booking Holdings</div>
     <div class="fs-12 fc-f">Copyright © 1999 - 2025 GMC Operating Company, LLC. All Rights Reserved. </div>
   </div>
 </template>
@@ -48,7 +48,7 @@ export default {
       width: 48px;
       height: 48px;
       opacity: 1;
-      background: rgba(255, 255, 255, 1);
+      /* background: rgba(255, 255, 255, 1); */
       border-radius: 50%;
       margin-right: 10px;
     }

+ 6 - 0
src/i18n.js

@@ -3,8 +3,10 @@ import VueI18n from 'vue-i18n'
 import locale from 'element-ui/lib/locale';
 import enLocale from './locales/en.json'
 import cnLocal from './locales/zh-CN.json'
+import ArLocale from './locales/Arab.json'
 import elEnLocale from 'element-ui/lib/locale/lang/en.js'
 import elCnLocale from 'element-ui/lib/locale/lang/zh-CN.js'
+import elArLocale from 'element-ui/lib/locale/lang/ar.js'
 Vue.use(VueI18n)
 const messages = {
   en: {
@@ -14,6 +16,10 @@ const messages = {
   cn: {
     ...cnLocal,
     ...elCnLocale
+  },
+  ar: {
+    ...ArLocale,
+    ...elArLocale
   }
 }
 const i18n = new VueI18n({

+ 207 - 0
src/locales/Arab.json

@@ -0,0 +1,207 @@
+{
+  "Home":"الصفحة الرئيسية",
+  "Tourism":"سفر .",
+  "Team":"فريق",
+  "Order": "أمر",
+  "Recharge":"شحن",
+  "Draw Money":"سحب",
+  "My Account":"حسابي",
+  "Log out":"شطب",
+  "qbdz":"عنوان المحفظة",
+  "wxts":"نصائح دافئة",
+  "yddyy":"الصفحة الأولى",
+  "mygdsj":"لا مزيد من البيانات",
+  "syy":"الصفحة السابقة",
+  "xyy":"الصفحة التالية",
+  "zwsj":"بيانات مؤقتة",
+  "confirm":"أكّد",
+  "getCode":"الحصول على رمز التحقق",
+
+  "LoginIndex":{
+    "userLogin":"تسجيل الدخول",
+    "inputId":"أدخل حساب البريد",
+    "inputPassword":"أدخل كلمة السر",
+    "noUser":"لا حساب بعد ؟",
+    "register":"تسجيل مجاني",
+    "forgetPassword":"نسيت كلمة السر",
+    "login":"تسجيل الدخول",
+    "syyxhm":"أدخل رقم صندوق البريد",
+    "syyxyzm":"أدخل رمز التحقق من البريد",
+    "sdxmm":"تعيين كلمة مرور جديدة",
+    "zcsrxmm":"أدخل كلمة المرور الجديدة مرة أخرى",
+    "yhzc":"تسجيل المستخدم",
+    "dlmm":"كلمة السر",
+    "sryqm":"أدخل رمز الدعوة",
+    "yyzh":"حساب موجود",
+    "qdl":"تسجيل الدخول",
+    "zc":"التسجيل"
+  },
+
+  "home":{
+    "text1":"مركز الأعمال العالمي منصة الإنترنت",
+    "text2":"حجز التذاكر وتصفح مواقع السفر العالمية الساخنة",
+    "text3":"الخدمات التي نقدمها",
+    "text333":"عنا Booking Holdings",
+    "text4":"نحن نقدم هذا المنبر إلى المواقع السياحية في جميع أنحاء العالم من رجال الأعمال والمستخدمين الأفراد على التعاون المباشر ، حيث سيتم عرض وتعزيز المواقع السياحية من مختلف البلدان في جميع أنحاء العالم شعبية . كل مستخدم يمكن أن تشارك في الإعلان عن تعزيز لكسب الدخل ، من خلال هذا المنبر على الانترنت حجز قناة لتبادل وتعزيز المواقع السياحية في جميع أنحاء العالم ، وزيادة شعبية من المواقع السياحية في جميع أنحاء العالم ، يمكن للمستخدمين الحصول على فوائد من كل حجز التذاكر . يمكن للمستخدمين الأفراد أيضا البدء في الأعمال التجارية عبر الإنترنت من خلال تشكيل فريق وتحقيق أرباح الفريق . نحن نتعاون مع شركة عالمية للعملات المشفرة لتزويد جميع المستخدمين مع خطوط جديدة وبسيطة وآمنة للدفع والسحب !",
+    "text444":"Booking Holdings هي واحدة من أكبر شركات السفر على الانترنت ، ومقرها في نورفولك ، كونيتيكت ، الولايات المتحدة الأمريكية ، من خلال عدد من الماركات العالمية لتزويد المستخدمين مع الفنادق ، الرحلات الجوية ، تأجير السيارات ، ومناطق الجذب السياحي وغيرها من خدمات حجز السفر المتنوعة ، والأعمال التجارية في الولايات المتحدة وكندا وهولندا وسنغافورة واليابان والبلدان الأوروبية .",
+    "text5":"الإنترنت نموذج التعاون",
+    "text6":"نحن نقدم مريحة وفعالة منصة للتعاون بين رجال الأعمال والمستخدمين ، والسماح للناس من جميع أنحاء العالم لتحقيق التعاون الرائدة في عصر الإنترنت .",
+    "text7":"عائدات الحجز عبر الإنترنت",
+    "text8":"يمكن للمستخدمين تعزيز الأعمال التجارية من خلال خط أنابيب حجز التذاكر في الوقت الحقيقي بقعة ذات المناظر الخلابة تذاكر كل يوم ، والحصول على مختلف الإيرادات الشخصية وفقا لكل بقعة ذات المناظر الخلابة تذاكر ، والتي يمكن سحبها .",
+    "text9":"فتح فريق العمل",
+    "text999":"تنويع محفظة العلامة التجارية العالمية",
+    "text10":"دعوة مستخدم جديد للانضمام عن طريق رمز الدعوة GMC بدء الأعمال التجارية ، وتحقيق مكاسب أتمتة الفريق .",
+    "text101010":"دعم فني قوي و AI التوصية الخوارزمية ، قاعدة بيانات ضخمة من المستخدمين ، وارتفاع ولاء العملاء ، والخدمات المحلية .",
+    "text11":"تشفير العملة طريقة الدفع",
+    "text12":"من أجل حل مشاكل الدفع و السحب من المستخدمين في جميع أنحاء العالم ، ونحن نقدم جديدة ، سريعة ومريحة وآمنة طريقة الإيداع و السحب .",
+    "text13":"شعبية جدا في جميع أنحاء العالم",
+    "text14":"و { غ",
+    "text15":"الصين .",
+    "text16":"اليابان .",
+    "text17":"تايلند .",
+    "text18":"أوروبا .",
+    "text19":"عن طريقة عملنا",
+    "text20":"Booking Holdings مع جسر مهم جدا ، وتوفير منصة فعالة ومريحة لبدء وتعزيز الأعمال التجارية ، ونحن تحقيق النمو السريع في اقتصاد الإنترنت .",
+    "text21":"لدينا منصة يشرف عليها العديد من رجال الأعمال في جميع أنحاء العالم ، مع استثمار ما مجموعه أكثر من 10 مليار دولار أمريكي ، بما في ذلك الشركات الهامش والأرباح التي يمكن للمستخدمين الحصول عليها من الأموال التي تقدمها الشركات في جميع أنحاء العالم من أجل تعزيز الدعاية السياحية . لقد حققنا الفوز للجانبين حالة النظام الاقتصادي على الإنترنت ، وتعزيز تنمية صناعة السياحة و السياحة الوطنية في تطوير النظام الاقتصادي ، نموذج الإنترنت سوف يكون أفضل وأفضل ، والناس سوف تجلب مريحة وفعالة طريقة العمل !",
+    "text22":"نحن إضافة المواقع السياحية شعبية في جميع أنحاء العالم Booking Holdings في خطة السفر ، حدد مناطق الجذب السياحي الإقليمية المفضلة لديك لدعم لهم . يمكن للمستخدمين حجز 20 ~ 40 تذكرة في اليوم الواحد ، وفقا لمختلف المواقع السياحية تذاكر سوف تحصل على عائدات مختلفة ، اعتمادا على الأعمال التجارية المختلفة من الأموال الإعلانية . بعد نجاح المستخدم حجز التذاكر ، التاجر سوف يعود على الفور سعر التذكرة المبلغ والنسبة المئوية من العائدات .",
+    "text23":"فريق الانترنت نموذج الأعمال",
+    "text24":"الانضمام من خلال رمز الدعوة GMC يمكنك الحصول على ما يصل إلى 5 مستويات من أعضاء الفريق ، وعندما أعضاء الفريق الخاص بك الحصول على الفوائد ، يمكنك الحصول على جزء إضافي من الفريق من الفوائد .",
+    "text25":"المستخدمين المسجلين من خلال رمز الدعوة الخاص بك سوف تصبح A مستوى أعضاء الفريق عند A عند مستوى أعضاء الفريق الحصول على مكافأة ، سوف تحصل على مكافأة إضافية للفريق ، وسوف يكون لك A 50 ٪ من مستوى أعضاء الفريق .",
+    "text26":"ب > ? A عضو فريق الدعوة رمز المستخدم المسجل سوف تصبح B عندما تحصل على مكافأة ، سوف تحصل على مكافأة إضافية ، وسوف يكون لك . B 40 ٪ من الدخل من مستوى أعضاء الفريق .",
+    "text27":"ب > ? B عضو فريق الدعوة رمز المستخدم المسجل سوف تصبح C عندما تحصل على مكافأة ، سوف تحصل على مكافأة إضافية ، وسوف يكون لك . C 30 ٪ من مستوى أعضاء الفريق .",
+    "text28":"ب > ? C عضو فريق الدعوة رمز المستخدم المسجل سوف تصبح D عندما تحصل على مكافأة ، سوف تحصل على مكافأة إضافية ، وسوف يكون لك . D 20 ٪ من مستوى أعضاء الفريق .",
+    "text29":"ب > ? D عضو فريق الدعوة رمز المستخدم المسجل سوف تصبح E عندما تحصل على مكافأة ، سوف تحصل على مكافأة إضافية ، وسوف يكون لك . E 10 ٪ من الدخل من أعضاء الفريق ."
+  },
+
+  "home2":{
+    "text1":"خطط السفر",
+    "text11":"بدء السفر والاستيلاء على التذاكر",
+    "text2":"تهانينا ! نجاح الشراء ، من أجل تسوية .",
+    "text3":"العد التنازلي"
+  },
+  "home3":{
+    "text1":"فتح شبكة الإنترنت نموذج الأعمال التجارية ، وتحقيق المشاريع المنزلية والأتمتة الإيرادات",
+    "text2":"دعوة المستخدمين الجدد للانضمام إلى فريق العمل الخاص بك",
+    "text3":"رمز الدعوة",
+    "text4":"نسخ",
+    "text5":"كيف يعمل",
+    "text6":"لدينا فريق عمل نموذج يدعم خمسة مستويات من نموذج الربح . يمكنك الحصول على فريق صغير من خلال دعوة المستخدمين الجدد إلى استخدام رمز الدعوة لتسجيل الحساب الخاص بك للانضمام إلى الفريق الخاص بك . مرة واحدة يمكنك إنشاء فريق صغير ، وهذا الوضع سوف تلقائيا بناء الفريق الخاص بك بالنسبة لك ، لأن أعضاء الفريق الخاص بك سوف ندعو المزيد من المستخدمين الجدد لبناء الفريق . إذا كان لنا أن اسم المستخدم من المستوى 1-5 ABCDE, ثم أنت تدعو أعضاء الفريق . A,BCDE سوف يكون فريق كبير من الناس الذين سوف تساعدك على بناء ، لأن A يمكن أيضا أن يكون رئيس الفريق ، وسوف يكون أعضاء الفريق ABCED و 1-5 مستوى المستخدم . عندما ABCDE عندما أعضاء الفريق كسب المال على منصة ، يمكنك الحصول على 50 ٪ إلى 10 ٪ إضافية ضخمة من الدخل السلبي من الفريق . أي شخص يمكن أن تشكل فريقه الخاص ، وهذا هو شبكة الإنترنت أتمتة تأثير الفريق .",
+    "text7":"لك . A مستوى أعضاء الفريق",
+    "text8":"المستخدمين المسجلين من خلال رمز الدعوة سوف تصبح A مستوى أعضاء الفريق ، وسوف تكسب A 50 ٪ من عائدات حجز التذاكر اليومية من الدرجة الأولى أعضاء الفريق كما دخل سلبي إضافي للفريق ، وهذا هو الخاص بك من الدرجة الأولى فريق الإيرادات . على سبيل المثال ، افترض أن المستخدم A المشاركة في الحجز اليومي والحصول على 1000 USDT العودة . ثم سوف تحصل تلقائيا على ربح إضافي 500 فريق USDT。",
+    "text9":"لك . B مستوى أعضاء الفريق",
+    "text10":"من خلال فريقك A مستوى الأعضاء دعوة المدونات المسجلة من قبل المستخدمين سوف تصبح B مستوى أعضاء الفريق . عندما تحصل على المال من خلال حجز التذاكر ، يمكنك الحصول على المزيد من الدخل من الفريق . فريق من الدرجة الثانية B أعضاء الفريق الحصول على 40 ٪ من عائدات حجز التذاكر كل يوم . على سبيل المثال ، المستخدم B المشاركة في الحجوزات اليومية ، والحصول على 1000 USDT العودة . ثم سوف تحصل تلقائيا على ربح إضافي 400 فريق USDT。",
+    "text11":"لك . C مستوى أعضاء الفريق",
+    "text12":"من خلال فريقك B مستوى الأعضاء دعوة المدونات المسجلة من قبل المستخدمين سوف تصبح C مستوى أعضاء الفريق . عندما تحصل على المال من خلال حجز التذاكر ، يمكنك الحصول على المزيد من الدخل من الفريق . فريق من الدرجة الثالثة C أعضاء الفريق الحصول على 30 ٪ من عائدات حجز التذاكر كل يوم . على سبيل المثال ، المستخدم C المشاركة في الحجوزات اليومية ، والحصول على 1000 USDT العودة . ثم سوف تحصل تلقائيا على ربح إضافي 300 فريق USDT。",
+    "text13":"لك . D مستوى أعضاء الفريق",
+    "text14":"من خلال فريقك C مستوى الأعضاء دعوة المدونات المسجلة من قبل المستخدمين سوف تصبح D مستوى أعضاء الفريق . عندما تحصل على المال من خلال حجز التذاكر ، يمكنك الحصول على المزيد من الدخل من الفريق . فريق من الدرجة الرابعة D أعضاء الفريق الحصول على 20 ٪ من عائدات حجز التذاكر كل يوم . على سبيل المثال ، المستخدم D المشاركة في الحجوزات اليومية ، والحصول على 1000 USDT العودة . ثم سوف تحصل تلقائيا على ربح إضافي 200 فريق USDT。",
+    "text15":"لك . E مستوى أعضاء الفريق",
+    "text16":"من خلال فريقك D مستوى الأعضاء دعوة المدونات المسجلة من قبل المستخدمين سوف تصبح E مستوى أعضاء الفريق . عندما تحصل على المال من خلال حجز التذاكر ، يمكنك الحصول على المزيد من الدخل من الفريق . فريق من الدرجة الخامسة E أعضاء الفريق الحصول على 10 ٪ من عائدات حجز التذاكر كل يوم . على سبيل المثال ، المستخدم E المشاركة في الحجوزات اليومية ، والحصول على 1000 USDT العودة . ثم سوف تحصل تلقائيا على أرباح إضافية للفريق 100 USDT。"
+  },
+
+  "home4":{
+    "text1":"كيفية إيداع USDT",
+    "text2":"شراء USDT",
+    "text3":"يمكن للمستخدم استخدام العملة القانونية لشراء العملة المشفرة على منصة Tether(USDT)",
+    "text4":"تأكيد عنوان المحفظة",
+    "text5":"من أنت GMC الحصول على عنوان المحفظة الشخصية الخاصة بك في حساب منصة",
+    "text6":"أرسل GMC حساب الأصول",
+    "text7":"من منصة العملة المشفرة USDT لك GMC حساب الأصول",
+    "text8":"USDT استلم",
+    "text9":"بعد تأكيد النظام من خلال الشبكة GMC تلقى الحساب بنجاح USDT",
+    "text10":"يرجى التأكد من أنك سوف تستخدم TRC20 أو . ERC20 إذا كانت المعلومات غير متناسقة ، إعادة شحن رأس المال سوف تضيع و لا يمكن استردادها ."
+  },
+  "home5":{
+    "text1":"كيفية سحب USDT",
+    "text2":"تأكيد عنوان المحفظة وكلمة المرور",
+    "text3":"الرجاء اختيار الشبكة التي تطابق عنوان المحفظة وتأكد من سحب كلمة السر",
+    "text4":"مراجعة حسابات السحب",
+    "text5":"في انتظار كتلة الذاكرة شبكة مراجعة الحسابات وتأكيد الانسحاب الخاص بك",
+    "text6":"سحب بنجاح",
+    "text7":"بعد تأكيد من خلال شبكة كتلة الذاكرة ، سيتم سحب الأصول الخاصة بك بنجاح",
+    "text8":"عنوان المحفظة",
+    "text9":"الرجاء إدخال أو لصق عنوان المحفظة",
+    "text10":"شبكة الانتماء",
+    "text11":"سحب المبلغ",
+    "text12":"الحد الأدنى من كمية السحب",
+    "text13":"رسوم المناولة",
+    "text14":"كمية الحساب",
+    "text15":"سحب كلمة السر",
+    "text16":"الرجاء إدخال كلمة السر",
+    "text17":"تعيين كلمة السر",
+    "text18":"قدم",
+    "text19":"يرجى تأكيد استلام USDT إذا كانت المحفظة عنوان الشبكة هو نفسه مع سحب الشبكة ، إذا كان سحب المعلومات غير متناسقة ، وسوف يؤدي إلى فقدان الأموال القابلة لإعادة الشحن و لا يمكن استردادها . من أجل ضمان سلاسة شبكة قناة وتجنب ازدحام الشبكة ، منصة السحب D+1 نمط أي سحب الأموال سيتم مراجعتها في اليوم التالي من خلال الانتهاء من السحب ."
+  },
+
+  "home6":{
+    "nav0":"حسابي",
+    "nav1":"بلدي الأصول",
+    "nav2":"أوامري",
+    "nav3":"اتصل بنا",
+    "nav4":"مركز الأمن",
+    "nav5":"إعلان النشاط",
+    "nav6":"عنا",
+
+    "index1":{
+      "text1":"بلدي الرصيد",
+      "text1111": "اللجنة اليوم",
+      "text2222":"دخل الحجز",
+      "text2":"دخل اليوم",
+      "text3":"فريق اليوم",
+      "text4":"مجموع عائدات الحجز",
+      "text5":"مجموع إيرادات الفريق",
+      "text6":"سجل شحن",
+      "text7":"سجل النقدية",
+      "text8":"عنوان",
+      "text9":"الكمية",
+      "text10":"وقت التشغيل",
+      "text11":"مركز"
+    },
+    "index2":{
+      "text1":"أوامري",
+      "text2":"اسم النظام",
+      "text3":"أمر رقم",
+      "text4":"مبلغ الطلب",
+      "text5":"دخل النظام",
+      "text6":"خلق الوقت",
+      "text7":"مركز",
+      "text8":"انتهى",
+      "text9":"غير مكتمل",
+      "text10":"تقدم"
+    },
+    "index3":{
+      "text1":"أرسل"
+    },
+
+    "index5":{
+      "text1":"إعلان النشاط",
+      "text2":"عرض .",
+      "text3":"تفاصيل الاعلان"
+    },
+
+    "index4":{
+      "text1":"كلمة السر",
+      "text2":"سحب كلمة السر",
+      "text3":"تعديل كلمة المرور",
+      "text4":"أكّد",
+      "text5":"أدخل كلمة السر الأصلية",
+      "text6":"تعيين كلمة مرور جديدة",
+      "text7":"تأكيد كلمة المرور الجديدة",
+      "text8":"حساب البريد الإلكتروني",
+      "text9":"صندوق البريد رمز التحقق",
+      "text10":"تعيين كلمة السر",
+      "text11":"أدخل كلمة السر مرة أخرى"
+    }
+  },
+  "other": {
+    "time1": "تحديث الساعة 12 ظهرا بتوقيت بكين",
+    "text1": "الشركة التي تتعاون معنا",
+    "text2": "رقم الحساب",
+    "text3": "منطقة السعر",
+    "text4": "منطقة التذاكر",
+    "text5": "دخل",
+    "text6": "رصيد الحساب",
+    "text7": "اللجنة اليوم",
+    "text8": "معدل العمولة المقدرة لكل تذكرة هو 0.4 ٪ ~ 0.6 في المائة .",
+    "text9": "تبدأ سرقة التذاكر"
+  }
+}

+ 27 - 5
src/locales/en.json

@@ -2,6 +2,7 @@
 	"Home":"Home",
 	"Tourism":"Travel",
 	"Team":"Team",
+	"Order": "Order",
 	"Recharge":"Deposit",
 	"Draw Money":"Withdraw",
 	"My Account":"Account",
@@ -40,14 +41,18 @@
 		  "text1":"Global Merchant Center Internet Platform",
 		  "text2":"Book tickets and browse popular travel attractions around the world",
 		  "text3":"Services we provide",
+			"text333": "About Us Booking Holdings",
 		  "text4":"The platform we provide allows global attraction merchants and individual users to cooperate directly, where the attraction merchants will display and promote popular and hot attractions from different countries around the world. Individual users can participate in advertising promotions to earn income, share and promote global attractions by booking tickets online on this platform, increase the popularity of attractions on a global scale, and users can get income from each ticket booking. Individual users can also start Internet entrepreneurship and achieve team profitability by forming a team. We partner with global cryptocurrency companies to provide all users with new, easy and secure ways to deposit and withdraw!",
-		  "text5":"Internet cooperation model",
+		  "text444":"Booking Holdings is one of the world's largest online travel companies, headquartered in Norwalk, Connecticut, USA. It provides diversified travel booking services to global users through its multiple brands, including hotels, flights, car rentals, attractions and activities, etc. It also provides services in many countries around the world, including the United States, Canada, the Netherlands, Singapore, Japan and many European countries.",
+			"text5":"Internet cooperation model",
 		  "text6":"We provide a convenient and effective platform for cooperation between merchants and users, allowing people from all over the world to achieve leading cooperation in the Internet era",
 		  "text7":"Online ticket booking revenue",
 		  "text8":"Users can promote businesses by booking real-time tickets for attractions every day, and get different personal income based on the tickets for each different attraction, which can be withdrawn",
 		  "text9":"Start a business team",
+			"text999":"Diversified global brand portfolio",
 		  "text10":"Invite new users to join GMC to start a business team through the invitation code to achieve team automation income",
-		  "text11":"Crypto payment method",
+		  "text101010":"Powerful technical support and AI recommendation algorithm, huge user database, strong user loyalty and localized services.",
+			"text11":"Crypto payment method",
 		  "text12":"To solve the deposit and withdrawal difficulties of global users, we provide new, fast, convenient and safe deposit and withdrawal methods",
 		  "text13":"Popular travel countries around the world",
 		  "text14":"America",
@@ -56,9 +61,9 @@
 		  "text17":"Thailand",
 		  "text18":"Europe",
 		  "text19":"About our working model",
-		  "text20":"The Global Merchant Center plays a very important bridging role, providing people with an effective and convenient entrepreneurship and promotion advertising platform. We have achieved rapid growth of the Internet economy.",
+		  "text20":"The Booking Holdings plays a very important bridging role, providing people with an effective and convenient entrepreneurship and promotion advertising platform. We have achieved rapid growth of the Internet economy.",
 		  "text21":"Our platform is jointly supervised and operated by many merchants around the world, with total investment assets of more than 10 billion US dollars, including corporate deposits and income funds that users can receive. The funds are provided by global merchants and used for attraction advertising and promotion. We have achieved a win-win situation for the Internet economic system, promoting the development of the tourism industry and the development of the national tourism economic system. The Internet model will become better and better, bringing people a convenient and effective way of working!",
-		  "text22":"We add popular attractions around the world to the GMC travel program, choose your favorite attraction to support them. Users can book tickets 5 times a day, and will receive different income based on the tickets they book for different attractions, which depends on the rules of different merchants for advertising funds. After the user successfully books the ticket, the merchant will immediately return the ticket amount and percentage revenue.",
+		  "text22":"We have added popular attractions around the world to the Booking Holdings travel plan. Choose your favorite regional attractions to support them. Users can book 20 to 40 tickets per day. Different attractions will receive different revenues, depending on the rules of advertising funds for different merchants. After the user successfully books the ticket, the merchant will immediately return the ticket price and percentage of the revenue.",
 		  "text23":"Internet team business model",
 		  "text24":"Users who join GMC through your invitation code will automatically become your team members. You can get up to 5 levels of team members. When your team members get income, you will get some additional team income again.",
 		  "text25":"Users who sign up  through your invitation code will become your A-level team members. When your A-level team members receive income, you will receive additional team income, which will be 50% of your A-level team member income",
@@ -70,6 +75,7 @@
 
 	"home2":{
 		  "text1":"Travel Plans",
+			"text11":"Start Your Journey & Grab Tickets",
 		  "text2":"Booking successful and settling income",
 		  "text3":"Waiting"
 	},
@@ -137,6 +143,7 @@
 
 		"index1":{
 			"text1":"My balance",
+			"text1111": "Today's Commission",
 			"text2":"Today's income ",
 			"text3":"Today's team income ",
 			"text4":"Total booking income ",
@@ -156,7 +163,9 @@
 			"text5":"Order income",
 			"text6":"Time",
 			"text7":"State",
-			"text8":"Done"
+			"text8":"Done",
+			"text9":"Unfinished",
+			"text10":"Go to Submit"
 		},
 		"index3":{
 			"text1":"Send"
@@ -181,5 +190,18 @@
 			"text10":"Set withdrawal password",
 			"text11":"Withdrawal password again"
 		}
+	},
+
+	"other": {
+		"time1": "Refreshes at 12:00 PM Beijing Time",
+		"text1": "Our Partners",
+		"text2": "Account",
+		"text3": "Price Zone",
+		"text4": "Ticketing Zone",
+		"text5": "Enter",
+		"text6": "Account Balance",
+		"text7": "Today's Commission",
+		"text8": "Estimated commission rate per ticket: 0.4%~0.6%",
+		"text9": "Grab tickets"
 	}
 }

+ 27 - 6
src/locales/zh-CN.json

@@ -2,6 +2,7 @@
   "Home":"首頁",
   "Tourism":"旅游",
   "Team":"團隊",
+	"Order": "訂單",
   "Recharge":"充值",
   "Draw Money":"提款",
   "My Account":"我的帳戶",
@@ -40,13 +41,17 @@
 	  "text1":"全球商戶中心互聯網平臺",
 	  "text2":"預訂門票和瀏覽全球熱門旅行景點",
 	  "text3":"我們提供的服務",
+		"text333": "關於我們Booking Holdings",
 	  "text4":"我們提供的這個平臺讓全球景點商家和個人用戶直接合作,景點商家將在這裡展示和推廣來自全球不同國家熱門和受歡迎的景點。 個人用戶可以參與廣告推廣來賺取收益,通過在此平臺上線上訂票的管道來分享和推廣全球景點,新增景點在全球範圍內的知名度,用戶們可以從每次訂票中得到收益。 個人用戶還可以通過組建團隊來啟動互聯網創業並實現團隊盈利。 我們與全球加密貨幣公司合作,為所有用戶提供了新的、簡單和安全的支付和提款管道!",
-	  "text5":"互聯網合作模式",
+	  "text444": "Booking Holdings是全球最大的線上旅遊公司之一,總部位於美國康涅狄格州諾沃克,通過旗下多個品牌為全球用戶提供酒店、航班、租車和景點活動等多元化旅遊預訂服務,業務遍及美國、加拿大、荷蘭、新加坡、日本及歐洲多個國家。",
+		"text5":"互聯網合作模式",
 	  "text6":"我們為商家和用戶之間的合作提供了一個便捷有效的平臺,讓來自全世界的人們實現互聯網時代領先的合作。",
 	  "text7":"線上訂票收益",
 	  "text8":"用戶可以每天通過實时訂票景點門票的管道為商家做推廣,根據每個不同景點門票得到不同的個人收益,該收益可以被提款。",
 	  "text9":"開啟生意團隊",
+		"text999":"全球品牌組合多元化",
 	  "text10":"通過邀請碼邀請新用戶加入GMC開始生意團隊,實現得到團隊自動化收益。",
+		"text101010":"強大的技術支援和AI推薦演算法、龐大的用戶數據庫、高用戶忠誠度及本地化服務。",
 	  "text11":"加密貨幣支付方式",
 	  "text12":"解决全球用户的付款和提款困难问题,我们提供了新的、快速的、便捷的、安全的存款和提款方式。",
 	  "text13":"全球非常受歡迎的熱門旅行國家",
@@ -56,9 +61,9 @@
 	  "text17":"泰國",
 	  "text18":"歐洲",
 	  "text19":"關於我們的工作模式",
-	  "text20":"全球商戶中心擁有非常重要的橋樑作用,為人們提供了一個有效而便捷的創業和推廣業務平臺,我們實現了讓互聯網經濟快速增長。",
+	  "text20":"Booking Holdings擁有非常重要的橋樑作用,為人們提供了一個有效而便捷的創業和推廣業務平臺,我們實現了讓互聯網經濟快速增長。",
 	  "text21":"我們的平臺由全球許多商家共同監督經營,總投資資產超過100億美元,其中包含企業保證金和用戶可以得到的收益資金,資金由全球商家提供並用於景點廣告推廣。 我們做到了互聯網經濟體系的雙贏局面,促進旅遊行業的發展和國家旅行經濟體系的發展,互聯網模式將越來越好,為人們帶來便捷和有效的工作方式!",
-	  "text22":"我們將全球受歡迎的景點添加到GMC旅行計畫中,選擇你最喜歡的景點去支持他們。 用戶每天可以訂票5次,根據訂票不同景點門票會獲得不同收益,這取決於不同商家投放廣告資金的規則。 用戶訂票成功後,商家會立即返還票價金額和百分比收益。",
+	  "text22":"我們將全球受歡迎的景點添加到Booking Holdings旅行計畫中,選擇你最喜歡的区域景點去支持他們。 用戶每天可以訂票20~40张票,根據訂票不同景點門票會獲得不同收益,這取決於不同商家投放廣告資金的規則。 用戶訂票成功後,商家會立即返還票價金額和百分比收益。",
 	  "text23":"互聯網團隊生意模式",
 	  "text24":"通過你的邀請碼加入GMC的用戶將自動成為你的團隊成員,你最多可以得到5個層級的團隊成員,當你的團隊成員得到收益時,你能從他們的收益中再次得到一部分額外的團隊收益。",
 	  "text25":"通过你的邀请码注册的用户将成为你的A级团队成员,当你的A级团队成员得到收益时,你将获得额外团队收益,它会是你的A级团队成员收益的50%。",
@@ -70,6 +75,7 @@
 
   "home2":{
 	  "text1":"旅行計畫",
+		"text11":"開始旅行與搶票",
 	  "text2":"恭喜! 購買成功,訂單結算中…",
 	  "text3":"倒數計時"
   },
@@ -137,6 +143,8 @@
 
 	"index1":{
 		"text1":"我的餘額",
+		"text1111": "今日佣金",
+		"text2222":"訂票收益",
 		"text2":"今日訂票收益",
 		"text3":"今日團隊收益",
 		"text4":"訂票總收益",
@@ -156,7 +164,9 @@
 		"text5":"訂單收益",
 		"text6":"創建時間",
 		"text7":"狀態",
-		"text8":"已完成"
+		"text8":"已完成",
+		"text9":"未完成",
+		"text10":"去提交"
 	},
 	"index3":{
 		"text1":"發送"
@@ -181,6 +191,17 @@
 		"text10":"設定提款密碼",
 		"text11":"再次輸入提款密碼"
 	}
-  }
-
+  },
+	"other": {
+		"time1": "北京時間中午12點更新",
+		"text1": "與我們合作的公司",
+		"text2": "帳號",
+		"text3": "價格區域",
+		"text4": "票務區域",
+		"text5": "進入",
+		"text6": "帳戶餘額",
+		"text7": "今日佣金",
+		"text8": "每張票的預估佣金利率為0.4%~0.6%",
+		"text9": "開始搶票"
+	}
 }

+ 5 - 0
src/router/front.js

@@ -20,6 +20,11 @@ export default [
         name: 'Team',
         component: () => import('@/views/Forestage/Team/index.vue')
       },
+      {
+        path: '/Order',
+        name: 'Order',
+        component: () => import('@/views/Forestage/Order/index.vue')
+      },
       {
         path: '/Recharge',
         name: 'Recharge',

+ 3 - 1
src/utils/http.js

@@ -1,3 +1,5 @@
+import tools from '@/utils/tools'
+
 export const isAdmin = () => {
   let url = window.location.host
   // console.log( window.location)
@@ -17,7 +19,7 @@ export const isAdmin = () => {
 }
 
 export const langFilter = (data) => {
-  const lang = localStorage.getItem('lang') || 'en'
+  const lang = tools.getLang()
   if (lang === 'cn') {
     return { ...data, ...data.cn }
   } else {

+ 4 - 3
src/utils/request.js

@@ -3,10 +3,11 @@ import store from '@/store'
 import Cookies from 'cookies'
 import { MessageBox, Message, Loading } from 'element-ui'
 import { isAdmin, langFilter } from '@/utils/http.js'
+import tools from '@/utils/tools'
 const service = axios.create({
   timeout: 5000
 })
-const lang = localStorage.getItem('lang') || 'en'
+const lang =tools.getLang()
 service.interceptors.request.use(
   config => {
     if (config.isLoading) {
@@ -90,8 +91,8 @@ const request = (url, method = 'get', data, isLoading = false) => {
   if (!data){
     data={}
   }
-  let lang = localStorage.getItem('lang') || 'en'
-  data.lang=lang==='cn'?'zh-Hant':'en';
+  let lang = tools.getLang()
+  data.lang=lang==='cn'?'zh-Hant':lang;
   let date = new Date();
   data.timezoneNum = date.getTimezoneOffset() / -60
   if (data) {

+ 4 - 0
src/utils/tools.js

@@ -18,6 +18,10 @@ tools.success=function(msg){
   })
 }
 
+tools.getLang=function(){
+  return   localStorage.getItem('lang') || 'en'
+}
+
 export default tools
 
 

+ 78 - 35
src/views/Forestage/Home/index.vue

@@ -11,9 +11,9 @@
     </div>
 
     <div class="index-bg-2  box-sizing-border-box pt-60">
-      <div class="fs-30 mb-18 text-align-center  animate__animated animate__bounceInUp" >{{$t('home.text3')}}</div>
+      <div class="fs-30 mb-18 text-align-center  animate__animated animate__bounceInUp" >{{$t('home.text333')}}</div>
       <div class="fs-14 mb-60 box-sizing-border-box plr-220 lh-20  animate__animated animate__bounceInUp" >
-        {{$t('home.text4')}}
+        {{$t('home.text444')}}
       </div>
       <div class="box-sizing-border-box plr-220 justify-content-space-between">
         <div class="home-1  animate__animated animate__bounceInLeft">
@@ -28,8 +28,8 @@
         </div>
         <div class="home-1  animate__animated animate__bounceInRight">
           <img class="home-1-img" src="@/assets/img/home/home-1-3.png" alt="">
-          <div class="fs-14 mb-5">{{$t('home.text9')}}</div>
-          <div class="fs-12 lh-17">{{$t('home.text10')}}</div>
+          <div class="fs-14 mb-5">{{$t('home.text999')}}</div>
+          <div class="fs-12 lh-17">{{$t('home.text101010')}}</div>
         </div>
         <div class="home-1  animate__animated animate__bounceInRight">
           <img class="home-1-img" src="@/assets/img/home/home-1-4.png" alt="">
@@ -88,44 +88,40 @@
     </div>
 
     <div class="index-bg-5 box-sizing-border-box pt-60 wow animate__animated animate__bounceInUp" data-wow-delay='0.5s'>
-      <div class="fs-42 fw-600 mb-18 text-align-center mb-12">{{$t('home.text23')}}</div>
-      <div class="fs-12 mb-18 text-align-center mb-12 mb-60 plr-314 lh-20">{{$t('home.text24')}}</div>
 
 
-      <div class=" align-items-center box-sizing-border-box plr-220 mb-5">
-        <div class="">
-          <div class="num-box mb-10">1</div>
-          <div class="fs-14 fw-b">Lv.A</div>
+      <div class="title">{{ $t('other.text1') }}</div>
+      <div class="content">
+        <div class="one">
+          <img src="@/assets/img/cooperation-imgs/1.png"></img>
+          <img src="@/assets/img/cooperation-imgs/2.png"></img>
+          <img src="@/assets/img/cooperation-imgs/3.png"></img>
+          <img src="@/assets/img/cooperation-imgs/4.png"></img>
+          <img src="@/assets/img/cooperation-imgs/5.png"></img>
         </div>
-        <div class="num-xian"></div>
-        <div class="">
-          <div class="num-box mb-10">2</div>
-          <div class="fs-14 fw-b">Lv.B</div>
+        <div class="two">
+          <img src="@/assets/img/cooperation-imgs/6.png"></img>
+          <img src="@/assets/img/cooperation-imgs/7.png"></img>
+          <img src="@/assets/img/cooperation-imgs/8.png"></img>
+          <img src="@/assets/img/cooperation-imgs/9.png"></img>
         </div>
-        <div class="num-xian"></div>
-        <div class="">
-          <div class="num-box mb-10">3</div>
-          <div class="fs-14 fw-b">Lv.C</div>
+        <div class="three">
+          <img src="@/assets/img/cooperation-imgs/10.png"></img>
+          <img src="@/assets/img/cooperation-imgs/11.png"></img>
+          <img src="@/assets/img/cooperation-imgs/12.png"></img>
+          <img src="@/assets/img/cooperation-imgs/13.png"></img>
+          <img src="@/assets/img/cooperation-imgs/14.png"></img>
         </div>
-        <div class="num-xian"></div>
-        <div class="">
-          <div class="num-box mb-10">4</div>
-          <div class="fs-14 fw-b">Lv.D</div>
-        </div>
-        <div class="num-xian"></div>
-        <div class="">
-          <div class="num-box mb-10">5</div>
-          <div class="fs-14 fw-b">Lv.E</div>
+        <div class="four">
+          <img src="@/assets/img/cooperation-imgs/15.png"></img>
+          <img src="@/assets/img/cooperation-imgs/16.png"></img>
+          <img src="@/assets/img/cooperation-imgs/17.png"></img>
+          <img src="@/assets/img/cooperation-imgs/18.png"></img>
         </div>
       </div>
 
-      <div class=" align-items-center box-sizing-border-box plr-220">
-        <div class="text-1">{{$t('home.text25')}}</div>
-        <div class="text-1">{{$t('home.text26')}}</div>
-        <div class="text-1">{{$t('home.text27')}}</div>
-        <div class="text-1">{{$t('home.text28')}}</div>
-        <div class="text-1">{{$t('home.text29')}}</div>
-      </div>
+
+
     </div>
   </div>
 </template>
@@ -222,10 +218,57 @@ export default {
       }
     }
     .index-bg-5{
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      width: 100%;
+      height: 574px;
+      background: url(@/assets/img/home/index5.png) no-repeat;
+      background-size: 100% 100%;
+
+      .title {
+        text-align: center;
+        font-size: 26px;
+        font-weight: 500;
+        line-height: 44px;
+      }
+
+      .content {
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        margin-top: 70px;
+
+        .one,
+        .two,
+        .three,
+        .four {
+          display: flex;
+          justify-content: center;
+
+          img:not(:first-child) {
+            margin-left: 20px;
+          }
+        }
+
+        .two,
+        .three,
+        .four {
+          margin-top: 20px;
+        }
+
+        img {
+          width: 184px;
+          height: 60px;
+        }
+      }
+    }
+    /* .index-bg-5{
       width: 100%;
       height: 557px;
       background: url(@/assets/img/home/index5.png) no-repeat;
       background-size: 100% 100%;
+
       .num-box{
         width: 48px;
         height: 48px;
@@ -247,6 +290,6 @@ export default {
         line-height: 18px;
         margin-right: 52px;
       }
-    }
+    } */
   }
 </style>

+ 2 - 2
src/views/Forestage/Me/mod/msg.vue

@@ -2,7 +2,7 @@
 	<div class="msg-box bgc-755C82 wow animate__animated animate__bounceInRight">
 		<div class="box-1 align-items-center box-sizing-border-box">
 		  <img class="logo-box mr-10" src="@/assets/img/logo.png" alt="">
-		  <div class="fs-16 fw-700 fc-f">GIobal Merchant Center</div>
+		  <div class="fs-16 fw-700 fc-f">Booking Holdings</div>
 		</div>
 		<div ref="scrollBox" class="box-2 box-sizing-border-box">
 			<div class="mb-32" v-for="(item,i) in list" :key="i">
@@ -109,7 +109,7 @@
 			.logo-box{
 				width: 32px;
 				height: 32px;
-				background-color: #fff;
+				/* background-color: #fff; */
 				border-radius: 50%;
 			}
 		}

+ 79 - 7
src/views/Forestage/Me/mod/my-money.vue

@@ -6,16 +6,22 @@
 				<img v-if="userInfo.head_img" :src="userInfo.head_img" alt="" />
 				<div class="">
 					<div class="fs-20 mb-7 fw-500 ">{{userInfo.nickname||''}}({{userInfo.level_name}})</div>
-					<div class="fs-14 mb-7 fw-400 ">{{userInfo.email||''}}</div>
+					<div class="fs-14 mb-7 fw-400 ">
+						<span>{{ $t("other.text2") }}:{{userInfo.email||''}}</span>
+						<span style="margin-left: 20px;">ID:{{userInfo.invite_code||''}}</span>
+					</div>
 					<div class="fs-14  fw-400 ">ID:{{userInfo.invite_code||''}}</div>
 				</div>
 			</div>
-			<div class="box-2 bgc-755C82 box-sizing-border-box fw-500 fs-16">{{$t('home6.nav1')}}</div>
-			<div class="box-3 bgc-755C82 box-sizing-border-box">
+			<div class="box-2 justify-content-space-between bgc-755C82 box-sizing-border-box fw-500 fs-16">
+				<div>{{$t('home6.nav1')}}</div>
+				<div class="fs-14 fc-C1B5C5 fw-400">{{$t('other.time1')}}</div>
+			</div>
+			<!-- <div class="box-3 bgc-755C82 box-sizing-border-box">
 				<div class="fs-16 fw-400 mb-16">{{$t('home6.index1.text1')}}(USDT)</div>
 				<div class="fs-20 fw-700">{{(userInfo.money*1).toFixed(6)||"0.000000"}}</div>
-			</div>
-			<div class="justify-content-space-between">
+			</div> -->
+			<!-- <div class="justify-content-space-between">
 				<div class="box-4 justify-content-space-between align-items-center right-border box-sizing-border-box bgc-755C82">
 					<div class="align-items-center">
 						<img class="img-1" src="@/assets/img/me/money.png" alt="" />
@@ -30,8 +36,8 @@
 					</div>
 					<div class="fs-14 fw-700">{{(userInfo.day_team*1).toFixed(6)}}</div>
 				</div>
-			</div>
-			<div class="justify-content-space-between">
+			</div> -->
+			<!-- <div class="justify-content-space-between">
 				<div class="box-4 justify-content-space-between align-items-center right-border box-sizing-border-box bgc-755C82">
 					<div class="align-items-center">
 						<img class="img-1" src="@/assets/img/me/money.png" alt="" />
@@ -46,7 +52,28 @@
 					</div>
 					<div class="fs-14 fw-700">{{(userInfo.order_team*1).toFixed(6)}}</div>
 				</div>
+			</div> -->
+
+			<!-- 2025-6-30 新增 -->
+			<div class="justify-content-space-between">
+				<div class="box-444 justify-content-space-between align-items-center right-border box-sizing-border-box bgc-755C82">
+					<div class="item">
+						<img class="icon" src="@/assets/img/me/balance.png" alt="" />
+						<div class="content">
+							<div class="money">{{(userInfo.money*1).toFixed(6)||"0.000000"}}</div>
+							<div class="tips">{{$t('home6.index1.text1')}}(USDT)</div>
+						</div>
+					</div>
+					<div class="item">
+						<img class="icon" src="@/assets/img/me/commission.png" alt="" />
+						<div class="content">
+							<div class="money">{{(userInfo.day_yield*1).toFixed(6)}}</div>
+							<div class="tips">{{$t('home6.index1.text1111')}}(USDT)</div>
+						</div>
+					</div>
+				</div>
 			</div>
+
 			<div class="justify-content-space-between">
 				<div class="box-5 align-items-center justify-content box-sizing-border-box bgc-755C82 right-border hand-cursor" @click="toIndex(1)">
 					<img class="img-3" src="@/assets/img/me/congzhi.png" alt="" />
@@ -59,6 +86,7 @@
 			</div>
 		</div>
 
+		<!-- 充值记录 -->
 		<div v-if="indexType == 1" class="index-card bgc-755C82 wow animate__animated animate__bounceInRight">
 			<div class="box-6 align-items-center hand-cursor" @click="toIndex(0)">
 				<img src="@/assets/img/lang-icon.png" alt="" />
@@ -84,6 +112,7 @@
 
 		</div>
 
+		<!-- 提现记录 -->
 		<div v-if="indexType == 2" class="index-card bgc-755C82 wow animate__animated animate__bounceInRight">
 			<div class="box-6 align-items-center hand-cursor" @click="toIndex(0)">
 				<img src="@/assets/img/lang-icon.png" alt="" />
@@ -241,6 +270,49 @@
 			border-bottom: 1px solid #C1B5C5;
 
 		}
+
+		.box-444 {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 100%;
+			border-bottom: 1px solid #C1B5C5;
+			height: 480px;
+
+			.item {
+				flex: 1;
+				display: flex;
+				align-items: center;
+				height: 200px;
+				margin-left: 40px;
+
+				&:not(:last-child) {
+					border-right: 1px solid #C1B5C5;
+				}
+
+				.icon {
+					width: 100px;
+					height: 100px;
+				}
+
+				.content {
+					margin-left: 30px;
+
+					.money {
+						font-size: 28px;
+						font-weight: 700;
+						line-height: 37px;
+					}
+
+					.tips {
+						margin-top: 10px;
+						font-size: 16px;
+					}
+				}
+			}
+		}
+
+
 		.right-border{
 			border-right: 1px solid #C1B5C5;
 		}

+ 2 - 2
src/views/Forestage/Me/mod/my-order.vue

@@ -43,10 +43,10 @@
 			}
 		},
 		mounted() {
-      this.lang = localStorage.getItem('lang')||'en'
+      this.lang = tools.getLang()
 
       setInterval(() => {
-        this.lang = localStorage.getItem('lang')||'en'
+        this.lang = tools.getLang()
 
       }, 500); // 每隔1秒检查一次
 			this.getList();

+ 177 - 0
src/views/Forestage/Order/index.vue

@@ -0,0 +1,177 @@
+<template>
+  <!-- 订单 -->
+  <div class="order-index">
+    <div class="item" v-for="(item, i) in list" :key="i">
+      <div class="head">
+        <div class="title">{{lang == 'cn'?item.goods_name:item.goods_name_en}}</div>
+        <div v-if="item.status == 1" class="status">{{$t('home6.index2.text9')}}</div>
+        <div v-if="item.status == 2" class="status">{{$t('home6.index2.text8')}}</div>
+      </div>
+      <div class="content">
+        <img class="order-img" :src="item.goods_img" alt="">
+        <div class="info">
+          <div><span class="fw-400">{{$t('home6.index2.text4')}}:</span>{{item.price}} USDT</div>
+          <div><span class="fw-400">{{$t('home6.index2.text5')}}:</span>{{item.yield_money}} USDT</div>
+          <div><span class="fw-400">{{$t('home6.index2.text3')}}:</span>{{item.order_sn}}</div>
+        </div>
+        <div v-if="item.status == 1" class="operate" @click="goToPay(item)">{{$t('home6.index2.text10')}}</div>
+      </div>
+    </div>
+    <div class="justify-right mt-16">
+			<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">{{$t('syy')}}</div>
+			<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">{{$t('xyy')}}</div>
+		</div>
+
+    <order-sett ref="orderSett"></order-sett>
+  </div>
+</template>
+
+<script>
+import {orderlist} from '@/api/order.js';
+import tools from '@/utils/tools.js';
+import OrderSett from '@/views/Forestage/Tourism/order-sett.vue'
+export default {
+  name: 'Order',
+  data(){
+			return{
+				page:1,
+				list:[],
+        isAJAX: false,
+				total:0,
+        lang:'en',
+			}
+		},
+  mounted() {
+    this.lang =tools.getLang()
+
+    setInterval(() => {
+      this.lang = tools.getLang()
+
+    }, 500); // 每隔1秒检查一次
+    this.getList();
+  },
+  methods: {
+    getList(){
+			orderlist({page:this.page}).then((res)=>{
+				if(res.code == 1){
+					this.list = res.data.list;
+					this.total = res.data.total
+				}
+			})
+		},
+    upPage(){
+			if(this.page == 1){
+				return tools.error(this.$t('yddyy'))
+			}else{
+				this.page -= 1;
+				this.getList();
+			}
+		},
+		downPage(){
+			let flag = (this.page*1)*20 < (this.total * 1);
+			if(!flag){
+				return tools.error(this.$t('mygdsj'))
+			}else{
+				this.page += 1;
+				this.getList();
+			}
+		},
+
+    goToPay() {
+      let  token= localStorage.getItem('userToken')
+        if (token){
+          if(this.isAJAX){
+            return
+          }
+          this.isAJAX = true;
+          ordercreat({
+            goods_id: item.id
+          }).then((res) => {
+            if(res.code == 1){
+              this.isAJAX = false;
+              // tools.success(res.msg)
+              this.$refs.orderSett.setOpen(true)
+            }else{
+              this.isAJAX = false;
+              tools.error(res.msg)
+            }
+          })
+        } else {
+        this.$router.push({ path: '/login' })
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.order-index {
+  padding: 70px 120px 20px;
+  color: black;
+  min-height: 100vh;
+  background-color: #C1B5C5FF;
+
+  .item {
+    display: flex;
+    flex-direction: column;
+    width: 100%;
+    height: 199px;
+    margin-top: 20px;
+    background-color: #755c82;
+    border-radius: 10px;
+
+    .head {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      height: 40px;
+      padding: 0 20px 0 15px;
+      color: #ffffff;
+      font-size: 16px;
+      border-bottom: 1px solid #C1B5C5;
+    }
+
+    .content {
+      flex: 1;
+      display: flex;
+      align-items: center;
+      padding: 0 20px 0 15px;
+
+      .order-img {
+        width: 193px;
+        height: 129px;
+      }
+
+      .info {
+        flex: 1;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-evenly;
+        margin-left: 20px;
+        font-weight: 500;
+        font-size: 16px;
+        color: #ffffff;
+      }
+
+      .operate {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        height: 40px;
+        padding: 0 16px;
+        font-size: 16px;
+        background-color: #C7AB7B;
+        border-radius: 4px;
+      }
+    }
+  }
+
+  .box-page{
+		padding: 8px 10px;
+		background: #C7AB7B;
+		margin-left: 10px;
+		border-radius: 2px;
+	}
+}
+</style>

+ 17 - 0
src/views/Forestage/Tourism/detail.vue

@@ -0,0 +1,17 @@
+<template>
+  <div>
+    
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {}
+  },
+  mounted() {},
+  methods: {}
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 231 - 0
src/views/Forestage/Tourism/index original.vue

@@ -0,0 +1,231 @@
+<template>
+	<!-- 旅游 -->
+	<div class="tourism-box">
+		<div class="fs-42 fw-400 text-align-center mt-30 mb-18 wow animate__animated animate__bounceInUp">{{$t('home2.text1')}}</div>
+		<div class="justify-content box-sizing-border-box plr-220  row-wrap">
+			<div class="class-item text-align-center fs-14 fw-500 box-sizing-border-box hand-cursor "
+				v-for="(item,i) in classList" :key="i" :class="id==item.id?'s-class-item':''"
+				@click="selectType(item,i)">{{lang == 'cn'?item.class_name:item.class_name_en}}</div>
+		</div>
+
+		<div class="box-sizing-border-box plr-220 ">
+			<div class="justify-content-space-between goods-box box-sizing-border-box mt-16"
+				v-for="(item,i) in goodsList" :key="i">
+				<img class="item-img" :src="item.cover_img" alt="">
+				<div class="flex-1 box-sizing-border-box ptb-8">
+					<div class="fs-24 fw-400 mb-10">{{lang == 'cn'?item.goods_name:item.goods_name_en}}</div>
+					<div class="fs-18 fw-400 lh-26 mb-12">
+						{{lang == 'cn'?item.contents:item.contents_en}}
+					</div>
+					<div class="align-items-center">
+						<div class="b-buttom hand-cursor">${{item.price}}</div>
+						<div class="b-buttom hand-cursor" @click="pay(item)">Book ticket</div>
+					</div>
+				</div>
+			</div>
+
+      <div class="justify-right mt-30 p-b-33">
+        <el-pagination
+          class="pagination-data"
+          background
+          layout="prev, pager, next"
+          :page-size="20"
+          :total="total" :current-page="page" @current-change="currentChange">
+        </el-pagination>
+      </div>
+
+		</div>
+
+
+    <order-sett ref="orderSett"></order-sett>
+	</div>
+</template>
+
+<script>
+	import tools from '@/utils/tools';
+	import {
+		ordercreat
+	} from '@/api/order.js';
+	import {
+		getClass,
+		getList
+	} from '@/api/goods.js';
+  import OrderSett from '@/views/Forestage/Tourism/order-sett.vue'
+	export default {
+    components: { OrderSett },
+		data() {
+			return {
+				// backgroundImg: require('@/assets/img/home/2-2.png'),
+				id: 1,
+				classList: [],
+				goodsList: [],
+				isAJAX: false,
+        busy: false,
+				lang:'en',
+        page:1,
+        total:0
+			}
+		},
+		created() {
+
+		},
+		mounted() {
+      this.lang = tools.getLang()
+
+      setInterval(() => {
+        this.lang =tools.getLang()
+
+      }, 500); // 每隔1秒检查一次
+			this.getClass();
+
+		},
+		methods: {
+      loadMore() {
+        console.log('loadMore---------------------')
+        if (this.busy) return; // 防止重复加载数据
+        this.busy = true; // 设置加载状态为忙碌状态
+        // 模拟从服务器获取数据(替换为你的实际数据获取逻辑)
+        setTimeout(() => {
+         this.getlist()
+          this.busy = false; // 设置加载状态为非忙碌状态,允许再次触发加载更多事件
+        }, 1000); // 模拟网络延迟时间,实际应用中应为异步请求的响应时间
+      },
+			getClass() {
+				getClass().then((res) => {
+					if (res.code == 1) {
+						this.classList = res.data;
+						this.id = this.classList[0].id;
+						this.getlist();
+					}
+				})
+			},
+			getlist() {
+				getList({
+					class_id: this.id,
+          page:this.page
+				}).then((res) => {
+					if (res.code == 1) {
+            this.total = res.data.total
+            this.goodsList = res.data.list;
+					}
+				})
+			},
+			selectType(item, i) {
+				if (this.id != item.id) {
+					this.id = item.id
+					this.getlist();
+				}
+			},
+
+      currentChange(val){
+        this.page = val;
+        this.getlist();
+      },
+
+			pay(item) {
+        let  token= localStorage.getItem('userToken')
+        if (token){
+          if(this.isAJAX){
+            return
+          }
+          this.isAJAX = true;
+          ordercreat({
+            goods_id: item.id
+          }).then((res) => {
+            if(res.code == 1){
+              this.isAJAX = false;
+              // tools.success(res.msg)
+              this.$refs.orderSett.setOpen(true)
+            }else{
+              this.isAJAX = false;
+              tools.error(res.msg)
+            }
+          })
+        }else {
+          this.$router.push({ path: '/login' })
+        }
+
+			},
+		},
+	}
+</script>
+
+<style scoped lang="scss">
+
+  .mtb-20{
+    margin: 20px 0;
+  }
+
+  ::v-deep .el-pagination{
+    .btn-prev{
+      background-color: #C7AB7B !important;
+      color: #333 !important;
+    }
+    .btn-next{
+      background-color: #C7AB7B !important;
+      color: #333 !important;
+    }
+    .number{
+      opacity: 0.3;
+    }
+    .active {
+        background-color: #C7AB7B !important;
+        color: #333 !important;
+        opacity: 0.8 !important;
+    }
+
+
+
+  }
+
+
+
+	.tourism-box {
+		padding-top: 70px;
+		min-height: 100vh;
+		background: url('@/assets/img/login-bg.png');
+
+		.class-item {
+			min-width: 68px;
+			padding: 0 10px;
+			height: 36px;
+			line-height: 36px;
+			opacity: 1;
+			border-radius: 2px;
+			border: 1px solid rgba(255, 255, 255, 1);
+			margin: 0 20px 18px 20px;
+			color: #fff;
+		}
+
+		.s-class-item {
+			background: rgba(199, 171, 123, 1) !important;
+			border: 1px solid rgba(199, 171, 123, 1) !important;
+			color: #121212;
+		}
+
+		.goods-box {
+			width: 100%;
+			min-height: 184px;
+			background: #E4F7F0FF;
+			padding: 12px 15px;
+		}
+
+		.item-img {
+			width: 220px;
+			height: 160px;
+			margin-right: 20px;
+		}
+
+		.b-buttom {
+			padding: 0 16px;
+			height: 34px;
+			opacity: 1;
+			border-radius: 2px;
+			background: #C7AB7BFF;
+			line-height: 36px;
+			color: #121212;
+			text-align: center;
+			margin-right: 10px;
+		}
+	}
+</style>

+ 577 - 187
src/views/Forestage/Tourism/index.vue

@@ -1,231 +1,621 @@
 <template>
 	<!-- 旅游 -->
 	<div class="tourism-box">
-		<div class="fs-42 fw-400 text-align-center mt-30 mb-18 wow animate__animated animate__bounceInUp">{{$t('home2.text1')}}</div>
-		<div class="justify-content box-sizing-border-box plr-220  row-wrap">
-			<div class="class-item text-align-center fs-14 fw-500 box-sizing-border-box hand-cursor "
-				v-for="(item,i) in classList" :key="i" :class="id==item.id?'s-class-item':''"
-				@click="selectType(item,i)">{{lang == 'cn'?item.class_name:item.class_name_en}}</div>
-		</div>
 
-		<div class="box-sizing-border-box plr-220 ">
-			<div class="justify-content-space-between goods-box box-sizing-border-box mt-16"
-				v-for="(item,i) in goodsList" :key="i">
-				<img class="item-img" :src="item.cover_img" alt="">
-				<div class="flex-1 box-sizing-border-box ptb-8">
-					<div class="fs-24 fw-400 mb-10">{{lang == 'cn'?item.goods_name:item.goods_name_en}}</div>
-					<div class="fs-18 fw-400 lh-26 mb-12">
-						{{lang == 'cn'?item.contents:item.contents_en}}
+		<img v-if="current == 'goods'" src="@/assets/img/back.png" class="back-img" alt="" @click="handleBack">
+
+		<div class="fs-42 fw-400 text-align-center mt-40 mb-40 fc-f wow animate__animated animate__bounceInUp">
+			{{ $t('home2.text11') }}</div>
+
+		<div v-if="current == 'list'" class="box-sizing-border-box">
+			<div class="goods-list-container">
+				<div class="item" v-for="(item, i) in goodsList" :key="i">
+					<div class="head">
+						<img class="vip-img" src="@/assets/img/vip.png" alt="">
+						<div class="text">{{lang == 'cn'?item.goods_name:item.goods_name_en}}</div>
+						<img class="plane-img" src="@/assets/img/plane.png" alt="">
 					</div>
-					<div class="align-items-center">
-						<div class="b-buttom hand-cursor">${{item.price}}</div>
-						<div class="b-buttom hand-cursor" @click="pay(item)">Book ticket</div>
+					<div class="content">
+						<img class="goods-img" :src="item.cover_img" alt="">
+						<div class="info">
+							<div class="i">
+								<div class="label">{{ $t('other.text3') }}</div>
+								<div class="val">{{ item.min_num }}USDT~{{ item.man_num }}USDT</div>
+							</div>
+							<div class="i">
+								<div class="label">{{ $t('other.text4') }}</div>
+								<div class="val">{{ $t('other.text8') }}</div>
+							</div>
+						</div>
+						<div v-if="userInfo.vip_id == item.id" class="operate" @click="handleGoodsItem(item)">{{ $t('other.text5') }}</div>
+						<div v-if="userInfo.vip_id != item.id" class="operate disabled">{{ $t('other.text5') }}</div>
 					</div>
 				</div>
 			</div>
 
-      <div class="justify-right mt-30 p-b-33">
-        <el-pagination
-          class="pagination-data"
-          background
-          layout="prev, pager, next"
-          :page-size="20"
-          :total="total" :current-page="page" @current-change="currentChange">
-        </el-pagination>
-      </div>
+			<div class="justify-right mt-30 p-b-33">
+				<el-pagination class="pagination-data" background layout="prev, pager, next" :page-size="20" :total="total"
+					:current-page="page" @current-change="currentChange">
+				</el-pagination>
+			</div>
+
+		</div>
+
+
+		<!-- 单个商品区域 -->
+		<div v-if="current == 'goods'" class="current-goods-container box-sizing-border-box">
+			<div class="item one">
+				<div class="head">
+					<img class="vip-img" src="@/assets/img/vip.png" alt="">
+					<div class="text">{{lang == 'cn'?item.goods_name:item.goods_name_en}}</div>
+				</div>
+				<div class="content">
+					<div class="i">
+						<div class="label">{{ $t('other.text6') }}</div>
+						<div class="money">
+							<span>{{(userInfo.money*1).toFixed(6)||"0.000000"}}</span>
+							<span class="unit">USDT</span>
+						</div>
+					</div>
+					<div class="i">
+						<div class="label">{{ $t('other.text7') }}</div>
+						<div class="money">
+							<span>{{(userInfo.day_yield*1).toFixed(6)}}</span>
+							<span class="unit">USDT</span>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="item two">
+				<div class="head">
+					<img class="vip-img" src="@/assets/img/vip.png" alt="">
+					<div class="text">{{lang == 'cn'?item.goods_name:item.goods_name_en}}</div>
+					<img class="plane-img" src="@/assets/img/plane.png" alt="">
+				</div>
+				<div class="content">
+					<img class="goods-img" src="@/assets/img/home/2-1.png" alt="">
+					<div class="info">
+						<div class="i">
+							<div class="label">{{ $t('other.text3') }}</div>
+							<div class="val">{{ item.min_num }}USDT~{{ item.man_num }}USDT</div>
+						</div>
+						<div class="i">
+							<div class="label">{{ $t('other.text4') }}</div>
+							<div class="val">{{lang == 'cn'?item.contents:item.contents_en}}</div>
+						</div>
+					</div>
+					<div class="tips">{{ $t('other.text8') }}</div>
+				</div>
+			</div>
 
+			<!-- 时间、开始抢票 -->
+			<div class="time-or-buy">
+				<div class="time">{{userInfo.order_num}} / {{item.order_num}}</div>
+				<div class="buy" @click="pay">{{ $t('other.text9') }}</div>
+			</div>
 		</div>
 
 
-    <order-sett ref="orderSett"></order-sett>
+		<order-detail ref="orderDetail"></order-detail>
+		<order-sett ref="orderSett"></order-sett>
 	</div>
 </template>
 
 <script>
-	import tools from '@/utils/tools';
-	import {
-		ordercreat
-	} from '@/api/order.js';
-	import {
-		getClass,
-		getList
-	} from '@/api/goods.js';
-  import OrderSett from '@/views/Forestage/Tourism/order-sett.vue'
-	export default {
-    components: { OrderSett },
-		data() {
-			return {
-				// backgroundImg: require('@/assets/img/home/2-2.png'),
-				id: 1,
-				classList: [],
-				goodsList: [],
-				isAJAX: false,
-        busy: false,
-				lang:'en',
-        page:1,
-        total:0
+import tools from '@/utils/tools';
+import {
+	ordercreat
+} from '@/api/order.js';
+import {
+  getClass,
+  getList, getVipGoodsList
+} from '@/api/goods.js'
+import OrderSett from '@/views/Forestage/Tourism/order-sett.vue'
+import OrderDetail from '@/views/Forestage/Tourism/order-detail.vue'
+import { userInfo } from '@/api/member'
+export default {
+	components: { OrderSett, OrderDetail },
+	data() {
+		return {
+			// backgroundImg: require('@/assets/img/home/2-2.png'),
+			id: 1,
+			classList: [],
+			goodsList: [],
+			isAJAX: false,
+			busy: false,
+			lang: 'en',
+			page: 1,
+			total: 0,
+			current: 'list',
+      item:{},
+      userInfo:{
+        vip_id:0,
+        order_num:0,
+        is_opne:0,
+      }
+		}
+	},
+	created() {
+
+	},
+	mounted() {
+		this.lang = tools.getLang()
+
+		setInterval(() => {
+			this.lang = tools.getLang()
+
+		}, 500); // 每隔1秒检查一次
+		this.getlist();
+		this.getInfo();
+
+	},
+	methods: {
+    getInfo(){
+      userInfo().then((res)=>{
+        if(res.code == 1){
+          this.userInfo = res.data;
+        }
+      })
+    },
+		loadMore() {
+			console.log('loadMore---------------------')
+			if (this.busy) return; // 防止重复加载数据
+			this.busy = true; // 设置加载状态为忙碌状态
+			// 模拟从服务器获取数据(替换为你的实际数据获取逻辑)
+			setTimeout(() => {
+				this.getlist()
+				this.busy = false; // 设置加载状态为非忙碌状态,允许再次触发加载更多事件
+			}, 1000); // 模拟网络延迟时间,实际应用中应为异步请求的响应时间
+		},
+		getClass() {
+			getClass().then((res) => {
+				if (res.code == 1) {
+					this.classList = res.data;
+					this.id = this.classList[0].id;
+					this.getlist();
+				}
+			})
+		},
+		getlist() {
+      getVipGoodsList({
+				class_id: this.id,
+				page: this.page
+			}).then((res) => {
+				if (res.code == 1) {
+					this.total = res.data.total
+					this.goodsList = res.data.list;
+				}
+			})
+		},
+		selectType(item, i) {
+			if (this.id != item.id) {
+				this.id = item.id
+				this.getlist();
 			}
 		},
-		created() {
 
+		currentChange(val) {
+			this.page = val;
+			this.getlist();
 		},
-		mounted() {
-      this.lang = localStorage.getItem('lang')||'en'
-
-      setInterval(() => {
-        this.lang = localStorage.getItem('lang')||'en'
-
-      }, 500); // 每隔1秒检查一次
-			this.getClass();
 
+		handleGoodsItem(item) {
+      if(this.userInfo.is_opne!==1){
+        tools.error(this.lang ==='en'?'Please apply for ticket grabbing permission from the service':'请向服务申请抢票权限')
+        this.getInfo();
+        return false
+      }
+      if(this.userInfo.vip_id!==item.id){
+        return false
+      }
+      this.item=item
+			this.current = 'goods'
 		},
-		methods: {
-      loadMore() {
-        console.log('loadMore---------------------')
-        if (this.busy) return; // 防止重复加载数据
-        this.busy = true; // 设置加载状态为忙碌状态
-        // 模拟从服务器获取数据(替换为你的实际数据获取逻辑)
-        setTimeout(() => {
-         this.getlist()
-          this.busy = false; // 设置加载状态为非忙碌状态,允许再次触发加载更多事件
-        }, 1000); // 模拟网络延迟时间,实际应用中应为异步请求的响应时间
-      },
-			getClass() {
-				getClass().then((res) => {
-					if (res.code == 1) {
-						this.classList = res.data;
-						this.id = this.classList[0].id;
-						this.getlist();
-					}
-				})
-			},
-			getlist() {
-				getList({
-					class_id: this.id,
-          page:this.page
+
+		pay(item) {
+			let token = localStorage.getItem('userToken')
+			if (token) {
+				if (this.isAJAX) {
+					return
+				}
+				// this.isAJAX = true;
+				ordercreat({
+					goods_id: item.id
 				}).then((res) => {
 					if (res.code == 1) {
-            this.total = res.data.total
-            this.goodsList = res.data.list;
+						this.isAJAX = false;
+						// tools.success(res.msg)
+						this.$refs.orderSett.setOpen(true)
+            this.getInfo();
+					} else {
+						this.isAJAX = false;
+						tools.error(res.msg)
 					}
 				})
-			},
-			selectType(item, i) {
-				if (this.id != item.id) {
-					this.id = item.id
-					this.getlist();
-				}
-			},
-
-      currentChange(val){
-        this.page = val;
-        this.getlist();
-      },
-
-			pay(item) {
-        let  token= localStorage.getItem('userToken')
-        if (token){
-          if(this.isAJAX){
-            return
-          }
-          this.isAJAX = true;
-          ordercreat({
-            goods_id: item.id
-          }).then((res) => {
-            if(res.code == 1){
-              this.isAJAX = false;
-              // tools.success(res.msg)
-              this.$refs.orderSett.setOpen(true)
-            }else{
-              this.isAJAX = false;
-              tools.error(res.msg)
-            }
-          })
-        }else {
-          this.$router.push({ path: '/login' })
-        }
+			} else {
+				this.$router.push({ path: '/login' })
+			}
 
-			},
 		},
-	}
+
+		handleBack() {
+			this.current = 'list'
+		}
+	},
+}
 </script>
 
 <style scoped lang="scss">
+div,
+span {
+	box-sizing: border-box
+}
+
+.back-img {
+	position: absolute;
+	z-index: 9;
+	width: 24px;
+	height: 24px;
+	margin: 50px;
+	cursor: pointer;
+}
+
+.mtb-20 {
+	margin: 20px 0;
+}
+
+::v-deep .el-pagination {
+	.btn-prev {
+		background-color: #C7AB7B !important;
+		color: #333 !important;
+	}
+
+	.btn-next {
+		background-color: #C7AB7B !important;
+		color: #333 !important;
+	}
+
+	.number {
+		opacity: 0.3;
+	}
+
+	.active {
+		background-color: #C7AB7B !important;
+		color: #333 !important;
+		opacity: 0.8 !important;
+	}
+
+
+
+}
+
+
+
+.tourism-box {
+	padding-top: 70px;
+	min-height: 100vh;
+	background: url('@/assets/img/home/new-travel.png');
+	background-size: 100%;
+
+	.class-item {
+		min-width: 68px;
+		padding: 0 10px;
+		height: 36px;
+		line-height: 36px;
+		opacity: 1;
+		border-radius: 2px;
+		border: 1px solid rgba(255, 255, 255, 1);
+		margin: 0 20px 18px 20px;
+		color: #fff;
+	}
+
+	.s-class-item {
+		background: rgba(199, 171, 123, 1) !important;
+		border: 1px solid rgba(199, 171, 123, 1) !important;
+		color: #121212;
+	}
+
+	.goods-box {
+		width: 100%;
+		min-height: 184px;
+		background: #E4F7F0FF;
+		padding: 12px 15px;
+	}
+
+	.item-img {
+		width: 220px;
+		height: 160px;
+		margin-right: 20px;
+	}
 
-  .mtb-20{
-    margin: 20px 0;
-  }
-
-  ::v-deep .el-pagination{
-    .btn-prev{
-      background-color: #C7AB7B !important;
-      color: #333 !important;
-    }
-    .btn-next{
-      background-color: #C7AB7B !important;
-      color: #333 !important;
-    }
-    .number{
-      opacity: 0.3;
-    }
-    .active {
-        background-color: #C7AB7B !important;
-        color: #333 !important;
-        opacity: 0.8 !important;
-    }
-
-
-
-  }
-
-
-
-	.tourism-box {
-		padding-top: 70px;
-		min-height: 100vh;
-		background: url('@/assets/img/login-bg.png');
-
-		.class-item {
-			min-width: 68px;
-			padding: 0 10px;
-			height: 36px;
-			line-height: 36px;
-			opacity: 1;
-			border-radius: 2px;
-			border: 1px solid rgba(255, 255, 255, 1);
-			margin: 0 20px 18px 20px;
-			color: #fff;
+	.b-buttom {
+		padding: 0 16px;
+		height: 34px;
+		opacity: 1;
+		border-radius: 2px;
+		background: #C7AB7BFF;
+		line-height: 36px;
+		color: #121212;
+		text-align: center;
+		margin-right: 10px;
+	}
+}
+
+.goods-list-container {
+	width: 100%;
+
+	.item {
+		height: 247px;
+		margin: 0 120px;
+		background-color: #C1B5C5;
+		border-radius: 20px;
+		overflow: hidden;
+
+		&:not(:first-child) {
+			margin-top: 20px;
 		}
 
-		.s-class-item {
-			background: rgba(199, 171, 123, 1) !important;
-			border: 1px solid rgba(199, 171, 123, 1) !important;
-			color: #121212;
+		.head {
+			position: relative;
+			display: flex;
+			align-items: center;
+			height: 40px;
+			padding-left: 20px;
+
+			.vip-img {
+				width: 32px;
+				height: 32px;
+			}
+
+			.text {
+				margin-left: 10px;
+				font-size: 24px;
+				font-weight: 700;
+			}
+
+			.plane-img {
+				position: absolute;
+				top: 20px;
+				right: 200px;
+				width: 40px;
+				height: 37px;
+			}
 		}
 
-		.goods-box {
-			width: 100%;
-			min-height: 184px;
-			background: #E4F7F0FF;
-			padding: 12px 15px;
+		.content {
+			display: flex;
+			align-items: center;
+			height: 187px;
+			padding: 0 20px;
+			background-color: #ffffff;
+
+			.goods-img {
+				width: 220px;
+				height: 147px;
+			}
+
+			.info {
+				flex: 1;
+				display: flex;
+				height: 147px;
+				flex-direction: column;
+				margin-left: 20px;
+				padding: 9px 0 4px;
+
+				.i {
+
+					&:not(:first-child) {
+						margin-top: 18px;
+					}
+
+					.label {
+						color: #707070;
+						font-size: 18px;
+						font-weight: 700;
+						line-height: 26px;
+					}
+
+					.val {
+						margin-top: 2px;
+						color: #171717;
+						font-size: 20px;
+						font-weight: 700;
+						line-height: 29px;
+					}
+				}
+			}
+
+			.operate {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				padding: 0 64px;
+				height: 42px;
+				font-size: 16px;
+				background-color: #c7ab7b;
+				border-radius: 2px;
+				cursor: pointer;
+
+				&.disabled {
+					background-color: #E0E0E0;
+				}
+			}
 		}
+	}
+}
+
+/* 单个商品区域 */
+.current-goods-container {
+	width: 100%;
+	padding-bottom: 96px;
+
+	.item {
+		margin: 0 120px;
+		border-radius: 20px;
+		overflow: hidden;
+
+		.head {
+			position: relative;
+			display: flex;
+			align-items: center;
+			height: 40px;
+			padding-left: 20px;
+			background-color: #C1B5C5;
+
+			.vip-img {
+				width: 32px;
+				height: 32px;
+			}
+
+			.text {
+				margin-left: 10px;
+				font-size: 24px;
+				font-weight: 700;
+			}
+
+			.plane-img {
+				position: absolute;
+				top: 20px;
+				right: 200px;
+				width: 40px;
+				height: 37px;
+			}
+		}
+
+		&.one {
+
+			.content {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				height: 175px;
+				padding: 0 30px 0 20px;
+				background-color: #ffffff;
+
+				.i {
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					width: 560px;
+					height: 116px;
+					background-color: #C1B5C5;
+					border-radius: 10px;
+					padding: 20px 0 30px 20px;
+
+					&:not(:first-child) {
+						margin-left: 30px;
+					}
+
+					.label {
+						color: #404040;
+						font-size: 16px;
+						line-height: 23px;
+					}
+
+					.money {
+						display: flex;
+						align-items: center;
+						/* margin-top: 15px; */
+						font-size: 20px;
+						font-weight: 700;
+						line-height: 26px;
+
+						.unit {
+							margin-left: 15px;
+							color: #404040;
+							font-size: 16px;
+							font-weight: 400;
+						}
+					}
+				}
+			}
+		}
+
+		&.two {
+			margin-top: 20px;
+			background-color: #c1b5c5;
+
+			.content {
+				display: flex;
+				align-items: center;
+				height: 187px;
+				padding: 0 20px;
+				background-color: #ffffff;
+
+				.goods-img {
+					width: 220px;
+					height: 147px;
+				}
+
+				.info {
+					flex: 1;
+					display: flex;
+					height: 147px;
+					flex-direction: column;
+					margin-left: 20px;
+					padding: 9px 0 4px;
+
+					.i {
+
+						&:not(:first-child) {
+							margin-top: 28px;
+						}
+
+						.label {
+							color: #707070;
+							font-size: 16px;
+							font-weight: 400;
+							line-height: 23px;
+						}
+
+						.val {
+							margin-top: 2px;
+							color: #171717;
+							font-size: 16px;
+							font-weight: 400;
+							line-height: 23px;
+						}
+					}
+				}
+
+				.tips {
+					color: #ED2121;
+					font-size: 14px;
+					line-height: 20px;
+					margin-top: 134px;
+					align-self: self-start;
+				}
+			}
+		}
+	}
+
+	/* 时间、开始抢票 */
+	.time-or-buy {
+		position: relative;
+		width: 597px;
+		height: 154px;
+		margin: 75px auto 0;
+		background: url("@/assets/img/time-box.png") no-repeat;
+		background-size: 100% 100%;
+		cursor: pointer;
 
-		.item-img {
-			width: 220px;
-			height: 160px;
-			margin-right: 20px;
+		.time {
+			position: absolute;
+			top: 51px;
+			left: 70px;
+			font-size: 36px;
+			font-weight: 700;
+			line-height: 52px;
 		}
 
-		.b-buttom {
-			padding: 0 16px;
-			height: 34px;
-			opacity: 1;
-			border-radius: 2px;
-			background: #C7AB7BFF;
-			line-height: 36px;
-			color: #121212;
-			text-align: center;
-			margin-right: 10px;
+		.buy {
+			position: absolute;
+			top: 51px;
+			right: 84px;
+			font-size: 36px;
+			font-weight: 700;
+			line-height: 52px;
 		}
 	}
+}
 </style>

+ 185 - 0
src/views/Forestage/Tourism/order-detail.vue

@@ -0,0 +1,185 @@
+<template>
+  <div>
+    <Bounced v-if="dialogVisible" :dialogVisible="dialogVisible" :titleName="''" bouncedWidth="550px">
+      <template slot="from">
+        <!-- 提交订单弹窗 -->
+        <div class="order-detail-dialog">
+          <div class="goods-img">
+            <img class="g-img" src="@/assets/img/home/2-1.png" alt="">
+          </div>
+          <div class="content">
+            <div class="title">泰国曼谷大皇宫</div>
+            <div class="desc">它是曼谷王朝的象征,是旅游者的垂爱之地,暹罗式风格的皇宫建筑群汇集了泰国书画、雕刻和装饰艺术的精华。</div>
+            <div class="money">
+              <div class="i">
+                <div class="label">票价</div>
+                <div class="val">
+                  <span>888.88</span>
+                  <span class="unit">USDT</span>
+                </div>
+              </div>
+              <div class="i">
+                <div class="label">票价</div>
+                <div class="val">
+                  <span>888.88</span>
+                  <span class="unit">USDT</span>
+                </div>
+              </div>
+            </div>
+            <div class="operates">
+              <div class="btn submit">提交</div>
+              <div class="btn cancel">关闭</div>
+            </div>
+          </div>
+        </div>  
+      </template>
+    </Bounced>
+  </div>
+</template>
+
+<script>
+import Bounced from '@/components/Admin/bounced.vue'
+export default {
+  name: 'order-sett',
+  components: { Bounced },
+  props: {},
+  data() {
+    return {
+      dialogVisible: false,
+      timeServe: undefined,
+      time: 0
+
+    }
+  },
+  mounted() {
+
+  },
+  methods: {
+    setOpen(dialogVisible) {
+      this.dialogVisible = dialogVisible === true;
+      if (this.dialogVisible) {
+        this.time = 15
+        this.timeServe = setInterval(() => {
+          this.time--;
+          this.text = this.time;
+          if (this.time === 0) {
+            clearInterval(this.timeServe);
+            this.timeServe = undefined
+            this.dialogVisible = false
+          }
+        }, 1000);
+      }
+    }
+
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+/* 订单提交弹窗 */
+.order-detail-dialog {
+  display: flex;
+  flex-direction: column;
+  width: 550px;
+  min-height: 529px;
+  margin: 0 auto;
+  border-radius: 10px!important;
+  background-color: #ffffff;
+  overflow: hidden;
+
+  .goods-img {
+    width: 550px;
+    height: 210px;
+
+    .g-img {
+      width: 550px;
+      height: 100%;
+      border-radius: 10px!important;
+    }
+  }
+
+  .content {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    width: 100%;
+
+    .title {
+      font-size: 24px;
+      font-weight: 700;
+      line-height: 34px;
+      margin: 15px 0;
+    }
+
+    .desc {
+      margin: 0 20px;
+      font-size: 14px;
+      line-height: 20px;
+    }
+
+    .money {
+      width: 100%;
+      margin-top: 15px;
+
+      .i {
+        display: flex;
+        padding: 0 20px;
+        height: 44px;
+
+        &:not(:first-child) {
+          margin-top: 10px;
+        }
+
+        .label {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          width: 86px;
+          height: 44px;
+          font-size: 14px;
+          background-color: #C1B5C5;
+        }
+
+        .val {
+          flex: 1;
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+          padding: 0 15px 0 20px;
+          border: 1px solid #C1B5C5;
+        }
+      }
+    }
+
+    .operates {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      margin: 28px 20px;
+
+      .btn {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        width: 245px;
+        height: 44px;
+        font-size: 16px;
+        border-radius: 4px;
+
+        &:not(:first-child) {
+          margin-left: 20px;
+        }
+
+        &.submit {
+          background-color: #c7ab7b
+        }
+
+        &.cancel {
+          background-color: #cccccc
+        }
+      }
+    }
+  }
+}
+</style>

+ 1 - 1
src/views/Forestage/login/forget-password.vue

@@ -115,7 +115,7 @@
         width: 48px;
         height: 48px;
         opacity: 1;
-        background: rgba(255, 255, 255, 1);
+        /* background: rgba(255, 255, 255, 1); */
         border-radius: 50%;
 
       }

+ 1 - 1
src/views/Forestage/login/login.vue

@@ -113,7 +113,7 @@
         width: 48px;
         height: 48px;
         opacity: 1;
-        background: rgba(255, 255, 255, 1);
+        /* background: rgba(255, 255, 255, 1); */
         border-radius: 50%;
 
       }

+ 1 - 1
src/views/Forestage/login/register.vue

@@ -115,7 +115,7 @@
         width: 48px;
         height: 48px;
         opacity: 1;
-        background: rgba(255, 255, 255, 1);
+        /* background: rgba(255, 255, 255, 1); */
         border-radius: 50%;
 
       }

+ 4 - 2
vue.config.js

@@ -12,14 +12,16 @@ module.exports = defineConfig({
     allowedHosts: 'all',
     proxy: {
       '/api': {
-        target: 'http://www.gmcyy.com/api/',
+        // target: 'http://www.gmcyy.com/api/',
+        target: 'http://api-gmc.localhost.cc/api/',
         changeOrigin: true,
         pathRewrite: {
           '^/api': ''
         }
       },
       '/adminApi': {
-        target: 'http://www.gmcyy.com/api/',
+        // target: 'http://www.gmcyy.com/api/',
+        target: 'http://api-gmc.localhost.cc/api/',
         changeOrigin: true,
         pathRewrite: {
           '^/adminApi': ''

File diff suppressed because it is too large
+ 341 - 341
yarn.lock


Some files were not shown because too many files changed in this diff