download.vue 65 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269
  1. <template>
  2. <cwg-page-wrapper class="create-page" :isHeaderFixed="true">
  3. <view class="container download-container">
  4. <view
  5. class="app-page-head card-header d-flex gap-3 flex-wrap align-items-center justify-content-between border-0">
  6. <view class="app-page-head mb-0">
  7. <h1 class="app-page-title" v-t="'Downloadpage.item1'"></h1>
  8. </view>
  9. </view>
  10. <view class="col-lg-12">
  11. <view class="clearfix">
  12. <view class="card">
  13. <view class="card-header">
  14. <view class="nav nav-pills nav-fill card-header-pills">
  15. <view class="nav-item">
  16. <view class="nav-link cursor-pointer" :class="{ 'active': activeName == 'MT4' }"
  17. @click="activeName = 'MT4'">MetaTrader 4</view>
  18. </view>
  19. <view class="nav-item">
  20. <view class="nav-link cursor-pointer" :class="{ 'active': activeName == 'MT5' }"
  21. @click="activeName = 'MT5'">MetaTrader 5</view>
  22. </view>
  23. <view class="nav-item" v-if="app3">
  24. <view class="nav-link cursor-pointer" :class="{ 'active': activeName == 'App' }"
  25. @click="activeName = 'App'" v-t="'vu.Downloadpage.item41'"></view>
  26. </view>
  27. </view>
  28. </view>
  29. <view class="card-body">
  30. <view class="tab-content">
  31. <view v-if="activeName == 'MT4'">
  32. <view class="row">
  33. <view class="col-12">
  34. <h3 class="mb-3 fw-bold" v-t="'Downloadpage.item2'" />
  35. <p class="mb-5 lh-sm" v-t="'Downloadpage.item3'" />
  36. </view>
  37. <view class="col-lg-4 mb-5">
  38. <cwg-link type="html"
  39. :url="config.Host80 + '/mt/cwgmarketssvgltd4setup.exe'"
  40. downloadName="cwgmarketssvgltd4setup.exe" title="Downloadpage.item4">
  41. <view class="card card-action action-elevate action-border-primary">
  42. <view class="row g-0">
  43. <view class="col-md-4">
  44. <view
  45. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  46. <image src="/static/images/vu/windows.png" alt=""
  47. mode="widthFix" class="img-fluid rounded" />
  48. </view>
  49. </view>
  50. <view class="col-md-8 py-3 d-flex flex-column">
  51. <view class="card-body px-3 py-2">
  52. <view class="badge badge-sm bg-danger mb-1">MT-4</view>
  53. <h4>
  54. <view class="text-dark"
  55. v-t="'Downloadpage.item4'" />
  56. </h4>
  57. <p v-t="'Downloadpage.item5'" />
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  63. <!-- class="fi fi-rr-download"></i> {{-->
  64. <!-- t('Downloadpage.item6-1') }}</view>-->
  65. </cwg-link>
  66. </view>
  67. <view class="col-lg-4 mb-5">
  68. <cwg-link type="html" class="download-card"
  69. :url="config.Host80 + '/mt/mt4.zip'" downloadName="mt4.zip"
  70. title="Downloadpage.item4-1">
  71. <!-- <view class="btn btn-danger waves-effect waves-light">-->
  72. <!-- <i class="fi fi-rr-download"></i> {{-->
  73. <!-- t('Downloadpage.item6-1') }}-->
  74. <!-- </view>-->
  75. <view class="card card-action action-elevate action-border-primary">
  76. <view class="row g-0">
  77. <view class="col-md-4">
  78. <view
  79. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  80. <image src="/static/images/vu/windows.png" alt=""
  81. mode="widthFix" class="img-fluid rounded" />
  82. </view>
  83. </view>
  84. <view class="col-md-8 py-3 d-flex flex-column">
  85. <view class="card-body px-3 py-2">
  86. <view class="badge badge-sm bg-danger mb-1">MT-4</view>
  87. <h4>
  88. <view class="text-dark"
  89. v-t="'Downloadpage.item4-1'" />
  90. </h4>
  91. <p v-t="'Downloadpage.item5'" />
  92. </view>
  93. </view>
  94. </view>
  95. </view>
  96. </cwg-link>
  97. </view>
  98. <view class="col-lg-4 mb-5">
  99. <cwg-link type="html" class="download-card"
  100. :url="config.Host80 + '/mt/MetaTrader4.pkg'"
  101. downloadName="MetaTrader4.pkg" title="Downloadpage.item6">
  102. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  103. <!-- class="fi fi-rr-download"></i> {{-->
  104. <!-- t('Downloadpage.item6-1') }}</view>-->
  105. <view class="card card-action action-elevate action-border-primary">
  106. <view class="row g-0">
  107. <view class="col-md-4">
  108. <view
  109. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  110. <image src="/static/images/vu/ios.png" alt=""
  111. mode="widthFix" class="img-fluid rounded" />
  112. </view>
  113. </view>
  114. <view class="col-md-8 py-3 d-flex flex-column">
  115. <view class="card-body px-3 py-2">
  116. <view class="badge badge-sm bg-danger mb-1">MT-4</view>
  117. <h4>
  118. <view class="text-dark"
  119. v-t="'Downloadpage.item6'" />
  120. </h4>
  121. <p v-t="'Downloadpage.item5'" />
  122. </view>
  123. </view>
  124. </view>
  125. </view>
  126. </cwg-link>
  127. </view>
  128. <h3 class="mb-3 fw-bold" v-t="'Downloadpage.item38'" />
  129. <view class="col-lg-4 mb-5">
  130. <cwg-link type="html" target="_blank"
  131. :url="'https://www.' + config.host + '.com/' + locale + '/vu-mt4-web-trading/web'"
  132. title="Downloadpage.item38">
  133. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  134. <!-- class="fi fi-rr-download"></i> 开始交易</view>-->
  135. <view class="card card-action action-elevate action-border-primary">
  136. <view class="row g-0">
  137. <view class="col-md-4">
  138. <view
  139. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  140. <image src="/static/images/vu/icon-windows-ios.png"
  141. alt="" mode="widthFix" class="img-fluid rounded" />
  142. </view>
  143. </view>
  144. <view class="col-md-8 py-3 d-flex flex-column">
  145. <view class="card-body px-3 py-2">
  146. <view class="badge badge-sm bg-danger mb-1">MT-4</view>
  147. <h4>
  148. <view class="text-dark"
  149. v-t="'Downloadpage.item40'" />
  150. </h4>
  151. <p>PC and macOS</p>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. </cwg-link>
  157. </view>
  158. <h3 class="mb-3 fw-bold" v-t="'Downloadpage.item7'" />
  159. <view class="col-lg-6 mb-5">
  160. <cwg-link type="html" class="download-card" :url="mt41"
  161. downloadName="MetaTrader4.abb" title="Downloadpage.item9">
  162. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  163. <!-- class="fi fi-rr-download"></i> {{-->
  164. <!-- t('Downloadpage.item6-1') }}</view>-->
  165. <view class="card card-action action-elevate action-border-primary">
  166. <view class="row g-0">
  167. <view class="col-md-6">
  168. <view
  169. class="card-header border-0 download-qr-header position-relative">
  170. <QrCode :text="mt41" :width="qrSize" :height="qrSize" />
  171. <!-- <image src="/static/images/vu/android.png" alt=""
  172. mode="widthFix" class="img-fluid" /> -->
  173. </view>
  174. </view>
  175. <view class="col-md-6 py-3 d-flex flex-column">
  176. <view class="card-body px-3 py-2">
  177. <view class="badge badge-sm bg-danger mb-1">MT-4</view>
  178. <h4>
  179. <view class="text-dark">Google Play (Android)</view>
  180. </h4>
  181. <p>CWG MT4</p>
  182. </view>
  183. </view>
  184. </view>
  185. </view>
  186. </cwg-link>
  187. </view>
  188. <view class="col-lg-6 mb-5">
  189. <cwg-link type="html" class="download-card" :url="mt42"
  190. downloadName="MetaTrader4.apk" title="Downloadpage.item9">
  191. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  192. <!-- class="fi fi-rr-download"></i> {{-->
  193. <!-- t('Downloadpage.item6-1') }}</view>-->
  194. <view class="card card-action action-elevate action-border-primary">
  195. <view class="row g-0">
  196. <view class="col-md-6">
  197. <view
  198. class="card-header border-0 download-qr-header position-relative overflow-hidden">
  199. <QrCode :text="mt42" :width="qrSize" :height="qrSize" />
  200. <!-- <image src="/static/images/vu/metatrade.png" alt=""
  201. mode="widthFix" class="img-fluid" /> -->
  202. </view>
  203. </view>
  204. <view class="col-md-6 py-3 d-flex flex-column">
  205. <view class="card-body px-3 py-2">
  206. <view class="badge badge-sm bg-danger mb-1">MT-4</view>
  207. <h4>
  208. <view class="text-dark">MetaTrader .Apk</view>
  209. </h4>
  210. <p>CWG MT4</p>
  211. </view>
  212. </view>
  213. </view>
  214. </view>
  215. </cwg-link>
  216. </view>
  217. <view class="col-lg-6 mb-5">
  218. <cwg-link type="html" class="download-card" :url="mt43"
  219. downloadName="MetaTrader4.app" title="Downloadpage.item10">
  220. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  221. <!-- class="fi fi-rr-download"></i> {{-->
  222. <!-- t('Downloadpage.item6-1') }}</view>-->
  223. <view class="card card-action action-elevate action-border-primary">
  224. <view class="row g-0">
  225. <view class="col-md-6">
  226. <view
  227. class="card-header border-0 download-qr-header position-relative overflow-hidden">
  228. <QrCode :text="mt43" :width="qrSize" :height="qrSize" />
  229. <!-- <image src="/static/images/vu/ios-1.png" alt=""
  230. mode="widthFix" class="img-fluid" /> -->
  231. </view>
  232. </view>
  233. <view class="col-md-6 py-3 d-flex flex-column">
  234. <view class="card-body px-3 py-2">
  235. <view class="badge badge-sm bg-danger mb-1">MT-4</view>
  236. <h4>
  237. <view class="text-dark">App Store (IOS)</view>
  238. </h4>
  239. <p>CWG MT4</p>
  240. </view>
  241. </view>
  242. </view>
  243. </view>
  244. </cwg-link>
  245. </view>
  246. </view>
  247. </view>
  248. <view v-if="activeName == 'MT5'">
  249. <view class="row">
  250. <view class="col-12">
  251. <h3 class="mb-3 fw-bold" v-t="'Downloadpage.item11'" />
  252. <p class="mb-5 lh-sm" v-t="'Downloadpage.item3'" />
  253. </view>
  254. <view class="col-lg-4 mb-5">
  255. <cwg-link type="html" class="download-card"
  256. :url="config.Host80 + '/mt/cwgmarketssvg5setup.exe'"
  257. downloadName="cwgmarketssvg5setup.exe" title="Downloadpage.item4">
  258. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  259. <!-- class="fi fi-rr-download"></i> {{-->
  260. <!-- t('Downloadpage.item6-1') }}</view>-->
  261. <view class="card card-action action-elevate action-border-primary">
  262. <view class="row g-0">
  263. <view class="col-md-4">
  264. <view
  265. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  266. <image src="/static/images/vu/windows.png" alt=""
  267. mode="widthFix" class="img-fluid rounded" />
  268. </view>
  269. </view>
  270. <view class="col-md-8 py-3 d-flex flex-column">
  271. <view class="card-body px-3 py-2">
  272. <view class="badge badge-sm bg-danger mb-1">MT-5</view>
  273. <h4>
  274. <view class="text-dark"
  275. v-t="'Downloadpage.item4'" />
  276. </h4>
  277. <p v-t="'Downloadpage.item5'" />
  278. </view>
  279. </view>
  280. </view>
  281. </view>
  282. </cwg-link>
  283. </view>
  284. <view class="col-lg-4 mb-5">
  285. <cwg-link type="html" class="download-card"
  286. :url="config.Host80 + '/mt/mt5.zip'" downloadName="mt5.zip"
  287. title="Downloadpage.item4-1">
  288. <!-- <view class="btn btn-danger waves-effect waves-light">-->
  289. <!-- <i class="fi fi-rr-download"></i> {{-->
  290. <!-- t('Downloadpage.item6-1') }}-->
  291. <!-- </view>-->
  292. <view class="card card-action action-elevate action-border-primary">
  293. <view class="row g-0">
  294. <view class="col-md-4">
  295. <view
  296. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  297. <image src="/static/images/vu/windows.png" alt=""
  298. mode="widthFix" class="img-fluid rounded" />
  299. </view>
  300. </view>
  301. <view class="col-md-8 py-3 d-flex flex-column">
  302. <view class="card-body px-3 py-2">
  303. <view class="badge badge-sm bg-danger mb-1">MT-5</view>
  304. <h4>
  305. <view class="text-dark"
  306. v-t="'Downloadpage.item4-1'" />
  307. </h4>
  308. <p v-t="'Downloadpage.item5'" />
  309. </view>
  310. </view>
  311. </view>
  312. </view>
  313. </cwg-link>
  314. </view>
  315. <view class="col-lg-4 mb-5">
  316. <cwg-link type="html" class="download-card"
  317. :url="config.Host80 + '/mt/MetaTrader5.pkg'"
  318. downloadName="MetaTrader5.pkg" title="Downloadpage.item6">
  319. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  320. <!-- class="fi fi-rr-download"></i> {{-->
  321. <!-- t('Downloadpage.item6-1') }}</view>-->
  322. <view class="card card-action action-elevate action-border-primary">
  323. <view class="row g-0">
  324. <view class="col-md-4">
  325. <view
  326. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  327. <image src="/static/images/vu/ios.png" alt=""
  328. mode="widthFix" class="img-fluid rounded" />
  329. </view>
  330. </view>
  331. <view class="col-md-8 py-3 d-flex flex-column">
  332. <view class="card-body px-3 py-2">
  333. <view class="badge badge-sm bg-danger mb-1">MT-5</view>
  334. <h4>
  335. <view class="text-dark"
  336. v-t="'Downloadpage.item6'" />
  337. </h4>
  338. <p v-t="'Downloadpage.item5'" />
  339. </view>
  340. </view>
  341. </view>
  342. </view>
  343. </cwg-link>
  344. </view>
  345. <h3 class="mb-3 fw-bold" v-t="'Downloadpage.item39'" />
  346. <view class="col-lg-4 mb-5">
  347. <cwg-link type="html" class="download-card download-card-web"
  348. target="_blank"
  349. :url="'https://www.' + config.host + '.com/' + locale + '/mt5/web'"
  350. title="Downloadpage.item39">
  351. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  352. <!-- class="fi fi-rr-download"></i> 开始交易</view>-->
  353. <view class="card card-action action-elevate action-border-primary">
  354. <view class="row g-0">
  355. <view class="col-md-4">
  356. <view
  357. class="card-header border-0 p-0 m-2 position-relative overflow-hidden">
  358. <image src="/static/images/vu/icon-windows-ios.png"
  359. alt="" mode="widthFix" class="img-fluid rounded" />
  360. </view>
  361. </view>
  362. <view class="col-md-8 py-3 d-flex flex-column">
  363. <view class="card-body px-3 py-2">
  364. <view class="badge badge-sm bg-danger mb-1">MT-5</view>
  365. <h4>
  366. <view class="text-dark"
  367. v-t="'Downloadpage.item40'" />
  368. </h4>
  369. <p>PC and macOS</p>
  370. </view>
  371. </view>
  372. </view>
  373. </view>
  374. </cwg-link>
  375. </view>
  376. <h3 class="mb-3 fw-bold" v-t="'Downloadpage.item13'" />
  377. <view class="col-lg-6 mb-5">
  378. <cwg-link type="html" class="download-card" :url="mt51"
  379. downloadName="MetaTrader5.abb" title="Downloadpage.item14">
  380. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  381. <!-- class="fi fi-rr-download"></i> {{-->
  382. <!-- t('Downloadpage.item6-1') }}</view>-->
  383. <view class="card card-action action-elevate action-border-primary">
  384. <view class="row g-0">
  385. <view class="col-md-6">
  386. <view
  387. class="card-header border-0 download-qr-header position-relative">
  388. <QrCode :text="mt51" :width="qrSize" :height="qrSize" />
  389. <!-- <image src="/static/images/vu/android.png" alt=""
  390. mode="widthFix" class="img-fluid" /> -->
  391. </view>
  392. </view>
  393. <view class="col-md-6 py-3 d-flex flex-column">
  394. <view class="card-body px-3 py-2">
  395. <view class="badge badge-sm bg-danger mb-1">MT-5</view>
  396. <h4>
  397. <view class="text-dark">Google Play (Android)</view>
  398. </h4>
  399. <p>CWG MT5</p>
  400. </view>
  401. </view>
  402. </view>
  403. </view>
  404. </cwg-link>
  405. </view>
  406. <view class="col-lg-6 mb-5">
  407. <cwg-link type="html" class="download-card" :url="mt52"
  408. downloadName="MetaTrader5.apk" title="Downloadpage.item14">
  409. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  410. <!-- class="fi fi-rr-download"></i> {{-->
  411. <!-- t('Downloadpage.item6-1') }}</view>-->
  412. <view class="card card-action action-elevate action-border-primary">
  413. <view class="row g-0">
  414. <view class="col-md-6">
  415. <view
  416. class="card-header border-0 download-qr-header position-relative overflow-hidden">
  417. <QrCode :text="mt52" :width="qrSize" :height="qrSize" />
  418. <!-- <image src="/static/images/vu/metatrade.png" alt=""
  419. mode="widthFix" class="img-fluid" /> -->
  420. </view>
  421. </view>
  422. <view class="col-md-6 py-3 d-flex flex-column">
  423. <view class="card-body px-3 py-2">
  424. <view class="badge badge-sm bg-danger mb-1">MT-5</view>
  425. <h4>
  426. <view class="text-dark">MetaTrader .Apk</view>
  427. </h4>
  428. <p>CWG MT5</p>
  429. </view>
  430. </view>
  431. </view>
  432. </view>
  433. </cwg-link>
  434. </view>
  435. <view class="col-lg-6 mb-5">
  436. <cwg-link type="html" class="download-card" :url="mt53"
  437. downloadName="MetaTrader5.app" title="Downloadpage.item15">
  438. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  439. <!-- class="fi fi-rr-download"></i> {{-->
  440. <!-- t('Downloadpage.item6-1') }}</view>-->
  441. <view class="card card-action action-elevate action-border-primary">
  442. <view class="row g-0">
  443. <view class="col-md-6">
  444. <view
  445. class="card-header border-0 download-qr-header position-relative overflow-hidden">
  446. <QrCode :text="mt53" :width="qrSize" :height="qrSize" />
  447. <!-- <image src="/static/images/vu/ios-1.png" alt=""
  448. mode="widthFix" class="img-fluid" /> -->
  449. </view>
  450. </view>
  451. <view class="col-md-6 py-3 d-flex flex-column">
  452. <view class="card-body px-3 py-2">
  453. <view class="badge badge-sm bg-danger mb-1">MT-5</view>
  454. <h4>
  455. <view class="text-dark">App Store (IOS)</view>
  456. </h4>
  457. <p>CWG MT5</p>
  458. </view>
  459. </view>
  460. </view>
  461. </view>
  462. </cwg-link>
  463. </view>
  464. </view>
  465. </view>
  466. <view v-if="activeName == 'App'">
  467. <view class="row">
  468. <view class="col-12">
  469. <h3 class="mb-3 fw-bold" v-t="'vu.Downloadpage.item42'" />
  470. <p class="mb-5 lh-sm" v-t="'vu.Downloadpage.item43'" />
  471. </view>
  472. <view class="col-lg-6 mb-5" v-if="app1">
  473. <cwg-link type="html" class="download-card" :url="app1"
  474. downloadName="CWG Center.abb" title="CWG Center">
  475. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  476. <!-- class="fi fi-rr-download"></i> {{-->
  477. <!-- t('Downloadpage.item6-1') }}</view>-->
  478. <view class="card card-action action-elevate action-border-primary">
  479. <view class="row g-0">
  480. <view class="col-md-6">
  481. <view
  482. class="card-header border-0 download-qr-header position-relative">
  483. <QrCode :text="app1" :width="qrSize" :height="qrSize" />
  484. <!-- <image src="/static/images/vu/android.png" alt=""
  485. mode="widthFix" class="img-fluid" /> -->
  486. </view>
  487. </view>
  488. <view class="col-md-6 py-3 d-flex flex-column">
  489. <view class="card-body px-3 py-2">
  490. <view class="badge badge-sm bg-danger mb-1">Android
  491. </view>
  492. <h4>
  493. <view class="text-dark">Google Play (Android)</view>
  494. </h4>
  495. <p>CWG Center</p>
  496. </view>
  497. </view>
  498. </view>
  499. </view>
  500. </cwg-link>
  501. </view>
  502. <view class="col-lg-6 mb-5" v-if="app2">
  503. <cwg-link type="html" class="download-card" :url="app2"
  504. downloadName="CWG Center.apk" title="CWG Center">
  505. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  506. <!-- class="fi fi-rr-download"></i> {{-->
  507. <!-- t('Downloadpage.item6-1') }}</view>-->
  508. <view class="card card-action action-elevate action-border-primary">
  509. <view class="row g-0">
  510. <view class="col-md-6">
  511. <view
  512. class="card-header border-0 download-qr-header position-relative overflow-hidden">
  513. <QrCode :text="app2" :width="qrSize" :height="qrSize" />
  514. <!-- <image src="/static/images/vu/metatrade.png" alt=""
  515. mode="widthFix" class="img-fluid" /> -->
  516. </view>
  517. </view>
  518. <view class="col-md-6 py-3 d-flex flex-column">
  519. <view class="card-body px-3 py-2">
  520. <view class="badge badge-sm bg-danger mb-1">Apk</view>
  521. <h4>
  522. <view class="text-dark">CWG Center.Apk</view>
  523. </h4>
  524. <p>CWG Center</p>
  525. </view>
  526. </view>
  527. </view>
  528. </view>
  529. </cwg-link>
  530. </view>
  531. <view class="col-lg-6 mb-5" v-if="app3">
  532. <cwg-link type="html" class="download-card" :url="app3"
  533. downloadName="CWG Center.app" title="CWG Center">
  534. <!-- <view class="btn btn-danger waves-effect waves-light"><i-->
  535. <!-- class="fi fi-rr-download"></i> {{-->
  536. <!-- t('Downloadpage.item6-1') }}</view>-->
  537. <view class="card card-action action-elevate action-border-primary">
  538. <view class="row g-0">
  539. <view class="col-md-6">
  540. <view
  541. class="card-header border-0 download-qr-header position-relative overflow-hidden">
  542. <QrCode :text="app3" :width="qrSize" :height="qrSize" />
  543. <!-- <image src="/static/images/vu/ios-1.png" alt=""
  544. mode="widthFix" class="img-fluid" /> -->
  545. </view>
  546. </view>
  547. <view class="col-md-6 py-3 d-flex flex-column">
  548. <view class="card-body px-3 py-2">
  549. <view class="badge badge-sm bg-danger mb-1">IOS</view>
  550. <h4>
  551. <view class="text-dark">App Store (IOS)</view>
  552. </h4>
  553. <p>CWG Center</p>
  554. </view>
  555. </view>
  556. </view>
  557. </view>
  558. </cwg-link>
  559. </view>
  560. </view>
  561. </view>
  562. </view>
  563. </view>
  564. </view>
  565. </view>
  566. </view>
  567. </view>
  568. </cwg-page-wrapper>
  569. </template>
  570. <script setup lang="ts">
  571. import { ref, computed, onMounted, nextTick } from 'vue'
  572. import QrCode from "@/components/QRCode.vue"
  573. import { useI18n } from 'vue-i18n'
  574. import config from '@/config';
  575. const { t, locale } = useI18n()
  576. const activeName = ref('MT4')
  577. const logoImageRef = ref('') // 保持变量名 logoImage
  578. const mt41 = ref('https://www.metatrader4.com/en/download#download-block-android?server=CWGMarketsSVGLtd-Demo,CWGMarketsSVGLtd-Live')
  579. const mt42 = ref(`${config.Host80}/metatrader/metatrader4.apk`)
  580. const mt43 = ref('https://apps.apple.com/us/app/metatrader-4/id496212596?server=CWGMarketsSVGLtd-Demo,CWGMarketsSVGLtd-Live')
  581. const mt51 = ref('https://download.metatrader.com/cdn/mobile/mt5/android?server=CWGMarketsSVG-Demo,CWGMarketsSVG-Live')
  582. const mt52 = ref(`${config.Host80}/mt/metatrader5.apk`)
  583. const mt53 = ref('https://download.metatrader.com/cdn/mobile/mt5/ios?server=CWGMarketsSVG-Demo,CWGMarketsSVG-Live')
  584. const app1 = ref('')
  585. const app2 = ref('')
  586. const app3 = ref('')
  587. const qrSize = 160
  588. const tabsConfig = computed(() => [
  589. { text: 'MT4', value: 'MT4' },
  590. { text: 'MT5', value: 'MT5' },
  591. ])
  592. // ---------- 计算属性 ----------
  593. const isZh = computed(() => ['cn', 'zh', 'zhHant'].includes(locale.value))
  594. const showQrcode = ref(false)
  595. // 获取应用下载链接
  596. const getAppUrl = async () => {
  597. try {
  598. const res = await uni.request({
  599. // url: `http://192.168.0.29:5173/static/app/url.json?_t=${Date.now()}`,
  600. // url: `https://secure.44a5c8109e4.com/app/url.json?_t=${Date.now()}`,
  601. url: `${config.Host80}/static/appUrl/url.json?_t=${Date.now()}`,
  602. method: 'GET',
  603. timeout: 5000
  604. })
  605. app1.value = res.data?.app1
  606. app2.value = res.data?.app2
  607. app3.value = res.data?.app3
  608. } catch (e) {
  609. console.log('[wgt] update check failed', e)
  610. }
  611. }
  612. onMounted(async () => {
  613. getAppUrl()
  614. await nextTick()
  615. setTimeout(() => {
  616. showQrcode.value = true
  617. }, 200)
  618. })
  619. </script>
  620. <style lang="scss" scoped>
  621. @import "@/uni.scss";
  622. :deep(.nav-pills .nav-link.active) {
  623. color: #333;
  624. background-color: #FFF5F5;
  625. border: 1px solid #EE1C25;
  626. }
  627. .download-qr-header {
  628. padding: 12px 0;
  629. margin: 0;
  630. display: flex;
  631. align-items: center;
  632. justify-content: center;
  633. }
  634. /* 让 card 本身等高,但内部元素自适应 */
  635. .row {
  636. display: flex;
  637. flex-wrap: wrap;
  638. align-items: stretch;
  639. }
  640. .row>[class*="col-lg-4"] {
  641. display: flex;
  642. flex-direction: column;
  643. }
  644. .card {
  645. flex: 1;
  646. display: flex;
  647. flex-direction: column;
  648. height: 100%;
  649. }
  650. /* 关键修改:让 card-body 不强制占满,只保持默认 */
  651. .card-body {
  652. /* 移除 flex: 1,改为默认值 */
  653. flex: 0 0 auto;
  654. display: block;
  655. }
  656. /* 只有需要弹性填充的特定容器才使用 flex */
  657. .flex-column.d-flex {
  658. flex: 1;
  659. display: flex;
  660. flex-direction: column;
  661. }
  662. /* 按钮底部对齐只在需要的地方使用 */
  663. .card-body .btn {
  664. margin-top: auto;
  665. }
  666. @media screen and (max-width: 768px) {
  667. .img-fluid {
  668. max-width: px2rpx(120);
  669. }
  670. :deep(.qr-container) {
  671. justify-content: flex-start;
  672. }
  673. }
  674. #custom_Downloadpage {
  675. width: 100%;
  676. height: 100%;
  677. .main-content {
  678. width: 100%;
  679. height: calc(100% - px2rpx(50));
  680. padding: px2rpx(10);
  681. box-sizing: border-box;
  682. overflow-y: auto;
  683. }
  684. .download-section {
  685. background: transparent;
  686. border: 1px solid var(--bs-border-color);
  687. border-radius: px2rpx(12);
  688. padding: px2rpx(24) px2rpx(20);
  689. margin-bottom: px2rpx(16);
  690. box-shadow: 0 px2rpx(2) px2rpx(12) rgba(0, 0, 0, 0.06);
  691. .section-header {
  692. text-align: center;
  693. margin-bottom: px2rpx(24);
  694. }
  695. .section-title {
  696. font-size: px2rpx(20);
  697. font-weight: 600;
  698. color: var(--bs-heading-color);
  699. margin-bottom: px2rpx(8);
  700. }
  701. .section-subtitle {
  702. font-size: px2rpx(14);
  703. color: var(--bs-heading-color);
  704. line-height: 1.5;
  705. }
  706. }
  707. .download-cards {
  708. display: flex;
  709. justify-content: center;
  710. flex-wrap: wrap;
  711. gap: px2rpx(16);
  712. }
  713. .download-card {
  714. display: flex;
  715. flex-direction: column;
  716. align-items: center;
  717. padding: px2rpx(24) px2rpx(20);
  718. background: linear-gradient(135deg, #4990EF 0%, #3A7BE0 100%);
  719. color: #fff;
  720. border-radius: px2rpx(12);
  721. min-width: px2rpx(160);
  722. max-width: px2rpx(200);
  723. text-decoration: none;
  724. transition: all 0.3s ease;
  725. position: relative;
  726. overflow: hidden;
  727. &::before {
  728. content: '';
  729. position: absolute;
  730. top: 0;
  731. left: 0;
  732. right: 0;
  733. bottom: 0;
  734. background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, transparent 100%);
  735. }
  736. &:hover {
  737. transform: translateY(px2rpx(-4));
  738. box-shadow: 0 px2rpx(8) px2rpx(24) rgba(73, 144, 239, 0.35);
  739. }
  740. &:active {
  741. transform: translateY(px2rpx(-2));
  742. }
  743. .card-icon {
  744. width: px2rpx(48);
  745. height: px2rpx(48);
  746. margin-bottom: px2rpx(16);
  747. position: relative;
  748. z-index: 1;
  749. }
  750. .card-info {
  751. text-align: center;
  752. position: relative;
  753. z-index: 1;
  754. .card-title {
  755. font-size: px2rpx(15);
  756. font-weight: 500;
  757. margin-bottom: px2rpx(4);
  758. color: #fff;
  759. }
  760. .card-desc {
  761. font-size: px2rpx(12);
  762. opacity: 0.85;
  763. }
  764. }
  765. .download-badge {
  766. margin-top: px2rpx(12);
  767. padding: px2rpx(4) px2rpx(12);
  768. background: rgba(255, 255, 255, 0.2);
  769. border-radius: px2rpx(20);
  770. font-size: px2rpx(11);
  771. font-weight: 500;
  772. position: relative;
  773. z-index: 1;
  774. }
  775. .download-badge-apple {
  776. background: rgba(0, 0, 0, 0.25);
  777. }
  778. }
  779. .download-card-web {
  780. flex-direction: row;
  781. justify-content: space-between;
  782. padding: px2rpx(20) px2rpx(24);
  783. min-width: px2rpx(280);
  784. max-width: 100%;
  785. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  786. .card-info {
  787. text-align: left;
  788. }
  789. .icon-arrow {
  790. font-size: px2rpx(20);
  791. opacity: 0.9;
  792. }
  793. &:hover {
  794. .icon-arrow {
  795. transform: translateX(px2rpx(4));
  796. transition: transform 0.3s ease;
  797. }
  798. }
  799. }
  800. .mobile-section {
  801. .mobile-cards {
  802. display: flex;
  803. flex-direction: column;
  804. gap: px2rpx(20);
  805. }
  806. .mobile-card {
  807. background: transparent;
  808. border-radius: px2rpx(12);
  809. padding: px2rpx(20);
  810. border: px2rpx(1) solid var(--bs-border-color);
  811. }
  812. .mobile-card-header {
  813. display: flex;
  814. align-items: center;
  815. margin-bottom: px2rpx(20);
  816. .card-icon {
  817. width: px2rpx(40);
  818. height: px2rpx(40);
  819. margin-right: px2rpx(16);
  820. background-color: #fff;
  821. overflow: hidden;
  822. border-radius: px2rpx(10);
  823. }
  824. .card-info {
  825. text-align: left;
  826. .card-title {
  827. font-size: px2rpx(16);
  828. font-weight: 600;
  829. color: var(--bs-heading-color);
  830. margin-bottom: px2rpx(4);
  831. }
  832. .card-desc {
  833. font-size: px2rpx(13);
  834. color: var(--bs-heading-color);
  835. }
  836. }
  837. }
  838. .qr-codes {
  839. display: flex;
  840. justify-content: space-around;
  841. flex-wrap: wrap;
  842. gap: px2rpx(16);
  843. &.qr-codes-single {
  844. justify-content: center;
  845. }
  846. }
  847. .qr-item {
  848. text-align: center;
  849. .qr-label {
  850. font-weight: 600;
  851. font-size: px2rpx(13);
  852. color: var(--bs-heading-color);
  853. margin-bottom: px2rpx(10);
  854. line-height: 2;
  855. }
  856. }
  857. }
  858. .instruments-banner {
  859. width: 100%;
  860. padding: px2rpx(40) px2rpx(20);
  861. background-image: url('/static/images/tc_bg.png');
  862. background-size: cover;
  863. background-repeat: no-repeat;
  864. background-position: center;
  865. color: var(--bs-emphasis-color);
  866. text-align: center;
  867. border-radius: px2rpx(12);
  868. margin-bottom: px2rpx(16);
  869. box-sizing: border-box;
  870. .banner-content {
  871. margin-bottom: px2rpx(24);
  872. }
  873. .banner-title {
  874. font-size: px2rpx(22);
  875. font-weight: 600;
  876. margin-bottom: px2rpx(8);
  877. }
  878. .banner-subtitle {
  879. font-size: px2rpx(14);
  880. opacity: 0.9;
  881. }
  882. .banner-buttons {
  883. display: flex;
  884. justify-content: center;
  885. flex-wrap: wrap;
  886. gap: px2rpx(12);
  887. }
  888. .banner-btn {
  889. display: inline-flex;
  890. flex-direction: column;
  891. align-items: center;
  892. padding: px2rpx(14) px2rpx(25);
  893. background-color: #EB3F57;
  894. color: var(--bs-emphasis-color);
  895. font-size: px2rpx(14);
  896. text-decoration: none;
  897. border-radius: px2rpx(8);
  898. transition: all 0.3s ease;
  899. min-width: px2rpx(200);
  900. &:hover {
  901. background-color: #d6364d;
  902. transform: translateY(px2rpx(-2));
  903. box-shadow: 0 px2rpx(4) px2rpx(12) rgba(235, 63, 87, 0.4);
  904. }
  905. .btn-tag {
  906. font-size: px2rpx(12);
  907. opacity: 0.85;
  908. margin-top: px2rpx(4);
  909. }
  910. }
  911. }
  912. .features-grid {
  913. background: transparent;
  914. border: 1px solid var(--bs-border-color);
  915. border-radius: px2rpx(12);
  916. padding: px2rpx(24) px2rpx(20);
  917. margin-bottom: px2rpx(16);
  918. box-shadow: 0 px2rpx(2) px2rpx(12) rgba(0, 0, 0, 0.06);
  919. .feature-item {
  920. display: flex;
  921. align-items: center;
  922. padding: px2rpx(20) 0;
  923. border-bottom: px2rpx(1) solid #f0f0f0;
  924. &:last-child {
  925. border-bottom: none;
  926. }
  927. }
  928. .feature-icon {
  929. width: px2rpx(64);
  930. height: px2rpx(64);
  931. display: flex;
  932. align-items: center;
  933. justify-content: center;
  934. background: linear-gradient(135deg, #fef0f0 0%, #ffe8e8 100%);
  935. border-radius: px2rpx(12);
  936. margin-right: px2rpx(16);
  937. flex-shrink: 0;
  938. i {
  939. font-size: px2rpx(32);
  940. color: #EB3F57;
  941. }
  942. }
  943. .feature-content {
  944. flex: 1;
  945. }
  946. .feature-title {
  947. font-size: px2rpx(16);
  948. font-weight: 600;
  949. color: var(--bs-heading-color);
  950. margin-bottom: px2rpx(6);
  951. }
  952. .feature-desc {
  953. font-size: px2rpx(14);
  954. color: var(--bs-heading-color);
  955. line-height: 1.6;
  956. }
  957. }
  958. .info-section {
  959. background: transparent;
  960. border: 1px solid var(--bs-border-color);
  961. border-radius: px2rpx(12);
  962. padding: px2rpx(24) px2rpx(20);
  963. margin-bottom: px2rpx(16);
  964. box-shadow: 0 px2rpx(2) px2rpx(12) rgba(0, 0, 0, 0.06);
  965. .info-block {
  966. .info-title {
  967. font-size: px2rpx(20);
  968. font-weight: 600;
  969. text-align: center;
  970. margin-bottom: px2rpx(20);
  971. span {
  972. border-bottom: px2rpx(3) solid #EB3F57;
  973. padding: 0 px2rpx(8) px2rpx(8);
  974. }
  975. }
  976. .info-subtitle {
  977. font-size: px2rpx(14);
  978. color: var(--bs-heading-color);
  979. text-align: center;
  980. margin-bottom: px2rpx(24);
  981. }
  982. }
  983. .info-content {
  984. .info-item {
  985. padding: px2rpx(20) 0;
  986. border-bottom: px2rpx(1) dashed #e0e0e0;
  987. &:last-child {
  988. border-bottom: none;
  989. }
  990. &.info-item-border {
  991. border-top: px2rpx(1) dashed #e0e0e0;
  992. }
  993. }
  994. .info-label {
  995. font-size: px2rpx(15);
  996. font-weight: 600;
  997. color: var(--bs-heading-color);
  998. margin-bottom: px2rpx(8);
  999. }
  1000. .info-text {
  1001. font-size: px2rpx(14);
  1002. color: var(--bs-heading-color);
  1003. line-height: 1.6;
  1004. }
  1005. .info-image {
  1006. display: flex;
  1007. justify-content: center;
  1008. padding-top: px2rpx(24);
  1009. image {
  1010. max-width: 100%;
  1011. border-radius: px2rpx(8);
  1012. }
  1013. }
  1014. }
  1015. }
  1016. @media (max-width: 768px) {
  1017. .download-section {
  1018. padding: px2rpx(16) px2rpx(12);
  1019. border-radius: px2rpx(8);
  1020. .section-title {
  1021. font-size: px2rpx(18);
  1022. }
  1023. }
  1024. .download-cards {
  1025. gap: px2rpx(12);
  1026. }
  1027. .download-card {
  1028. min-width: px2rpx(140);
  1029. padding: px2rpx(16) px2rpx(12);
  1030. .card-icon {
  1031. width: px2rpx(40);
  1032. height: px2rpx(40);
  1033. }
  1034. .card-info {
  1035. .card-title {
  1036. font-size: px2rpx(13);
  1037. }
  1038. .card-desc {
  1039. font-size: px2rpx(11);
  1040. }
  1041. }
  1042. }
  1043. .download-card-web {
  1044. width: 100%;
  1045. }
  1046. .mobile-section {
  1047. .mobile-card {
  1048. padding: px2rpx(16);
  1049. }
  1050. .qr-codes {
  1051. gap: px2rpx(12);
  1052. }
  1053. }
  1054. .instruments-banner {
  1055. padding: px2rpx(24) px2rpx(16);
  1056. border-radius: px2rpx(8);
  1057. .banner-title {
  1058. font-size: px2rpx(18);
  1059. }
  1060. .banner-btn {
  1061. min-width: px2rpx(160);
  1062. padding: px2rpx(12) px2rpx(20);
  1063. }
  1064. }
  1065. .features-grid {
  1066. padding: px2rpx(16) px2rpx(12);
  1067. border-radius: px2rpx(8);
  1068. .feature-item {
  1069. flex-direction: column;
  1070. text-align: center;
  1071. padding: px2rpx(16) 0;
  1072. }
  1073. .feature-icon {
  1074. margin-right: 0;
  1075. margin-bottom: px2rpx(12);
  1076. }
  1077. }
  1078. .info-section {
  1079. padding: px2rpx(16) px2rpx(12);
  1080. border-radius: px2rpx(8);
  1081. .info-block {
  1082. .info-title {
  1083. font-size: px2rpx(18);
  1084. }
  1085. }
  1086. }
  1087. }
  1088. :deep(.el-tabs) {
  1089. .el-tabs__header {
  1090. margin-bottom: px2rpx(20);
  1091. }
  1092. .el-tabs__nav-wrap::after {
  1093. height: px2rpx(1);
  1094. }
  1095. .el-tabs__item {
  1096. font-size: px2rpx(15);
  1097. color: var(--bs-heading-color);
  1098. padding: 0 px2rpx(20);
  1099. height: px2rpx(44);
  1100. line-height: px2rpx(44);
  1101. &.is-active {
  1102. color: #4990EF;
  1103. font-weight: 600;
  1104. }
  1105. }
  1106. .el-tabs__active-bar {
  1107. height: px2rpx(3);
  1108. border-radius: px2rpx(3);
  1109. }
  1110. }
  1111. :deep(uni-image),
  1112. :deep(img) {
  1113. width: px2rpx(30);
  1114. height: px2rpx(30);
  1115. object-fit: cover;
  1116. border-radius: px2rpx(6);
  1117. }
  1118. }
  1119. .mt {
  1120. width: px2rpx(200) !important;
  1121. height: px2rpx(200) !important;
  1122. }
  1123. .download-container {
  1124. :deep(.pdf-link) {
  1125. width: 100%;
  1126. }
  1127. }
  1128. </style>