active1.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. var content = {
  2. 'cn': {
  3. headers1: '登录',
  4. headers2: 'CWG Markets',
  5. headers3: '匠鑫学院CWG杯<br>实盘交易大赛',
  6. table1: '交易排名',
  7. table2: '最近更新:',
  8. table3: '排名',
  9. table4: '姓名',
  10. table5: '交易账号',
  11. table6: '盈利百分比',
  12. table7: '暂无数据',
  13. footer1: '© 2023 CWG MARKETS',
  14. footer2: '隐私政策',
  15. footer3: '条款和条件',
  16. },
  17. 'en': {
  18. headers1: 'Login',
  19. headers2: 'CWG Markets',
  20. headers3: 'Craftsmen Academy CWG<br>Cup Live Trading Competition',
  21. table1: 'Transaction Ranking',
  22. table2: 'Last Updated: ',
  23. table3: 'Rank',
  24. table4: 'Name',
  25. table5: 'Trading Account',
  26. table6: 'Profitability',
  27. table7: 'Not Data',
  28. footer1: '© 2023 CWG MARKETS',
  29. footer2: 'Privacy Policy',
  30. footer3: 'Terms & Conditions',
  31. }
  32. }
  33. let vm = new Vue({
  34. el: "#active1",
  35. data: {
  36. //多语言
  37. langList: {
  38. en: "ENGLISH",
  39. cn: "中文简体"
  40. },
  41. language: "en",
  42. lang: {},
  43. flag: false,
  44. loading: false,
  45. mock_options: {
  46. time:'',
  47. list:[]
  48. },
  49. // img_logo: logo,
  50. timer: 59,
  51. interval: null,
  52. getCodeString: "",
  53. notCountry:[
  54. 'AF','AI','AG','BS','BY',
  55. 'BZ','BA','BI','CF','CD','CU',
  56. 'ET','FJ','PS','GN','GW','HT',
  57. 'IR','IQ','LB','LY','ML','MM',
  58. 'NI','KP','PW','RU','SO','SS',
  59. 'SD','SY','UA','US','VE','YE','ZW','MY'
  60. ],
  61. // 表单参数
  62. params: {
  63. agentId: null,
  64. comPoint: null,
  65. sourceCode:null,
  66. subId: "",
  67. email: "",
  68. password: "",
  69. country: "",
  70. emailCode: "",
  71. phone: "",
  72. w: "",
  73. agree: false,
  74. linkValue: null,
  75. },
  76. clientWidth:'',
  77. pagerInfo: {row: 10, current: 1, pageTotal: 0, rowTotal: 0},//分页
  78. pictLoading:false,
  79. // 验证规则
  80. rules: {
  81. country: [
  82. {
  83. validator: (rule, value, callback) => {
  84. if (value != "" && value != null) {
  85. callback();
  86. } else {
  87. callback(new Error(content[sessionStorage.getItem('lang')].country));
  88. }
  89. },
  90. trigger: "blur",
  91. },
  92. ],
  93. email: [
  94. {
  95. validator: (rule, value, callback) => {
  96. if (/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(value)) {
  97. callback();
  98. } else {
  99. callback(new Error(content[sessionStorage.getItem('lang')].email));
  100. }
  101. },
  102. trigger: "blur",
  103. },
  104. ],
  105. emailCode: [
  106. {
  107. validator: (rule, value, callback) => {
  108. if (
  109. value != "" &&
  110. value != null
  111. ) {
  112. callback();
  113. } else {
  114. callback(new Error(content[sessionStorage.getItem('lang')].codeInput));
  115. }
  116. },
  117. trigger: "blur",
  118. },
  119. ],
  120. password: [
  121. {
  122. validator: (rule, value, callback) => {
  123. if (/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?!.*([~!@&%$^\\(\\)#_]).*\\1.*\\1.*\\1)[A-Za-z0-9~!@&%$^\\(\\)#_]{8,16}$/.test(value)) {
  124. callback();
  125. } else {
  126. callback(new Error(content[sessionStorage.getItem('lang')].password));
  127. }
  128. },
  129. trigger: "blur",
  130. },
  131. ],
  132. agree: [
  133. {
  134. validator: (rule, value, callback) => {
  135. if (value) {
  136. callback();
  137. } else {
  138. callback(new Error(content[sessionStorage.getItem('lang')].agree));
  139. }
  140. },
  141. trigger: "change",
  142. },
  143. ],
  144. phone: [
  145. {
  146. validator: (rule, value, callback) => {
  147. if (/^[0-9]\d*$/.test(value)) {
  148. callback();
  149. } else {
  150. callback(new Error(content[sessionStorage.getItem('lang')].phone));
  151. }
  152. },
  153. trigger: "blur",
  154. },
  155. ],
  156. },
  157. notRegisterMsg:"",
  158. notRegisterMsgOpen:false,
  159. imgUrl: '',
  160. ho: '',
  161. isPc:null,
  162. centerDialogVisible:false,
  163. },
  164. computed: {
  165. rule1: function () {
  166. if (!this.params.password) {
  167. return false;
  168. }
  169. return /^.{8,16}$/.test(this.params.password);
  170. },
  171. rule2: function () {
  172. return /^(?=.*?[a-z])(?=.*?[A-Z]).*$/.test(this.params.password);
  173. },
  174. rule3: function () {
  175. return /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?!.*([~!@&%$^\\(\\)#_]).*\\1.*\\1)[A-Za-z0-9~!@&%$^\\(\\)#_]{8,16}$/.test(
  176. this.params.password
  177. );
  178. },
  179. },
  180. methods: {
  181. // 语言切换函数
  182. chooseLang(key) {
  183. this.lang = content[key];
  184. this.language = key;
  185. sessionStorage.setItem("lang", this.language);
  186. location.reload();
  187. this.initTimer();
  188. },
  189. //分页返回数据
  190. handleSizeChange (val) {
  191. this.pagerInfo.row = val;
  192. this.searchFunc();
  193. },
  194. handleCurrentChange (val) {
  195. this.pagerInfo.current = val;
  196. this.searchFunc();
  197. },
  198. //获取列表数据
  199. async searchFunc () {
  200. this.pictLoading = true;
  201. axios.post(this.imgUrl + '/custom/activity/hundred/agent/ranking', {
  202. page: {
  203. current: this.pagerInfo.current,
  204. row: this.pagerInfo.row
  205. }
  206. //参数
  207. }).then(res => {//请求成功后的处理函数
  208. if (res.data.code == 200) {
  209. if (res.data.data && res.data.data.length) {
  210. this.mock_options.list = res.data.data;
  211. this.mock_options.time = res.data.data[0].addTime.split(' ')[0];
  212. }
  213. if (res.data.page != null) {
  214. this.pagerInfo.rowTotal = res.data.page.rowTotal;
  215. this.pagerInfo.pageTotal = res.data.page.pageTotal;
  216. } else {
  217. this.pagerInfo.rowTotal = 0;
  218. }
  219. this.pictLoading = false;
  220. } else {
  221. this.$message.error(res.data.msg);
  222. this.pictLoading = false;
  223. }
  224. }).catch(err => {//请求失败后的处理函数
  225. this.pictLoading = false;
  226. })
  227. },
  228. //获取国家列表
  229. async getCountry() {
  230. axios.post(this.imgUrl + '/country/get', {
  231. ...this.params
  232. //参数
  233. }).then(res => {//请求成功后的处理函数
  234. if (res.data.code == 200) {
  235. this.mock_options = res.data.data;
  236. } else {
  237. this.$message.error(res.data.msg);
  238. }
  239. }).catch(err => {//请求失败后的处理函数
  240. })
  241. },
  242. //获取当前国家编码
  243. async getCountryMsg() {
  244. axios.get(this.imgUrl + '/country/get', {
  245. //参数
  246. }).then(res => {//请求成功后的处理函数
  247. if (res.data.code == 200) {
  248. this.notRegisterMsg = res.data.msg
  249. if ((res.data.msg == "GB"||res.data.msg == "IE")&&res.data.data.indexOf('//195.224.141.218') == -1) {
  250. window.location.href = 'https://www.cwgmarkets.co.uk';
  251. } else {
  252. document.getElementById("pre").style.display = 'none'
  253. }
  254. } else {
  255. document.getElementById("pre").style.display = 'none'
  256. this.$message.error(res.data.msg);
  257. }
  258. }).catch(err => {//请求失败后的处理函数
  259. })
  260. },
  261. //获取当前国家编码
  262. async getCountryCode() {
  263. axios.post(this.imgUrl + '/country/getCodeByIp', {
  264. //参数
  265. }).then(res => {//请求成功后的处理函数
  266. if (res.data.code == 200) {
  267. if (this.notCountry.indexOf(res.data.msg)==-1) {
  268. this.params.country = res.data.msg;
  269. }
  270. if (!sessionStorage.getItem("timer")) {
  271. let lang = sessionStorage.getItem("lang")
  272. ? sessionStorage.getItem("lang")
  273. : this.params.country == "CN"
  274. ? "cn"
  275. : "en";
  276. sessionStorage.clear();
  277. sessionStorage.setItem("lang", lang);
  278. } else {
  279. let timer = sessionStorage.getItem("timer");
  280. let lang = sessionStorage.getItem("lang")
  281. ? sessionStorage.getItem("lang")
  282. : this.params.country == "CN"
  283. ? "cn"
  284. : "en";
  285. sessionStorage.clear();
  286. sessionStorage.setItem("lang", lang);
  287. sessionStorage.setItem("timer", timer);
  288. }
  289. this.language = sessionStorage.getItem("lang");
  290. this.lang = content[this.language];
  291. this.initTimer();
  292. } else {
  293. this.$message.error(res.data.msg);
  294. }
  295. }).catch(err => {//请求失败后的处理函数
  296. })
  297. },
  298. // 注册
  299. register: async function () {
  300. if (this.notRegisterMsg == 'MY') {
  301. this.notRegisterMsgOpen = true;
  302. return
  303. }
  304. this.$refs["params"].validate(async (valid) => {
  305. if (valid) {
  306. if (this.flag) {
  307. return;
  308. } else {
  309. this.flag = true;
  310. }
  311. axios.post(this.imgUrl + '/custom/register', {
  312. ...this.params
  313. //参数
  314. }).then(res => {//请求成功后的处理函数
  315. if (res.data.code == 200) {
  316. this.loading = true;
  317. this.$message({
  318. message: this.lang.registerSuc,
  319. type: 'success'
  320. });
  321. this.login();
  322. this.flag = false;
  323. } else {
  324. this.$message.error(res.data.msg);
  325. this.flag = false;
  326. }
  327. }).catch(err => {//请求失败后的处理函数
  328. })
  329. } else {
  330. return false;
  331. }
  332. });
  333. },
  334. // 登陆
  335. login: async function () {
  336. axios.post(this.imgUrl + '/custom/login', {
  337. loginName: this.params.email,
  338. password: this.params.password,
  339. //参数
  340. }).then(res => {//请求成功后的处理函数
  341. if (res.data.code == 200) {
  342. sessionStorage.setItem("access_token", res.data.data);
  343. axios.defaults.headers.common["Access-Token"] = res.data.data;
  344. this.getLoginInfo();
  345. } else {
  346. this.$message.error(res.data.msg);
  347. }
  348. }).catch(err => {//请求失败后的处理函数
  349. })
  350. },
  351. //获取登录信息
  352. async getLoginInfo() {
  353. axios.post(this.imgUrl + '/custom/info', {
  354. //参数
  355. }).then(res => {//请求成功后的处理函数
  356. if (res.data.code == 200) {
  357. this.loading = true;
  358. // this.$store.commit("InitInfo", res.data.data);
  359. this.$message({
  360. message: this.lang.LoginSuccess,
  361. type: 'success'
  362. });
  363. setTimeout(() => {
  364. this.loading = false;
  365. Session.Set("user", JSON.stringify(res.data.data), true)
  366. window.location.href = this.imgUrl + '/#/customer/index';
  367. }, 1000);
  368. } else {
  369. this.$message.error(this.lang.SystemError);
  370. }
  371. }).catch(err => {//请求失败后的处理函数
  372. })
  373. },
  374. // 获取验证码
  375. getCode: async function (val) {
  376. if (val) {
  377. if (!this.params.country) {
  378. this.$message.error(content[sessionStorage.getItem("lang")].country);
  379. return;
  380. }
  381. if (!this.params.email) {
  382. this.$message.error(content[sessionStorage.getItem("lang")].emailempty);
  383. return;
  384. }
  385. if (!/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(this.params.email)) {
  386. this.$message.error(content[sessionStorage.getItem("lang")].email);
  387. return;
  388. }
  389. }
  390. this.getCodeString =
  391. content[sessionStorage.getItem("lang")].waitCode1 +
  392. this.timer +
  393. content[sessionStorage.getItem("lang")].waitCode2;
  394. let that = this;
  395. if (!this.interval) {
  396. this.getCode1(val);
  397. this.interval = setInterval(() => {
  398. that.timer--;
  399. sessionStorage.setItem("timer", that.timer);
  400. that.getCodeString =
  401. content[sessionStorage.getItem("lang")].waitCode1 +
  402. that.timer +
  403. content[sessionStorage.getItem("lang")].waitCode2;
  404. if (that.timer == 0) {
  405. this.getCodeString = content[sessionStorage.getItem("lang")].code;
  406. clearInterval(that.interval);
  407. that.interval = null;
  408. that.timer = 59;
  409. sessionStorage.setItem("timer", that.timer);
  410. }
  411. }, 1000);
  412. }
  413. },
  414. //验证码
  415. async getCode1(val) {
  416. if (val) {
  417. axios.post(this.imgUrl + '/custom/register/send/code', {
  418. ...this.params
  419. //参数
  420. }).then(res => {//请求成功后的处理函数
  421. if (res.data.code == 200) {
  422. this.$message({
  423. message: this.lang.CodeSuccess,
  424. type: 'success'
  425. });
  426. } else {
  427. this.$message.error(res.data.msg);
  428. }
  429. }).catch(err => {//请求失败后的处理函数
  430. })
  431. }
  432. },
  433. // 初始化定时器
  434. initTimer: function () {
  435. let t = sessionStorage.getItem("timer") || this.timer;
  436. if (t == 59) {
  437. this.getCodeString = content[sessionStorage.getItem("lang")].code;
  438. } else {
  439. this.timer = sessionStorage.getItem("timer");
  440. this.getCode(0);
  441. }
  442. },
  443. getQueryStringRegExp(name){
  444. var reg = new RegExp("(^|\\?|&)"+ name +"=([^&]*)(\\s|&|$)", "i");
  445. if (reg.test(location.href)) return unescape(RegExp.$2.replace(/\+/g, " ")); return "";
  446. },
  447. getCodeQuery(){
  448. this.params.sourceCode = this.getQueryStringRegExp('ex')
  449. this.params.w = this.getQueryStringRegExp('w')
  450. this.params.subId = this.getQueryStringRegExp('SUBID')
  451. this.params.agentId = Number(this.getQueryStringRegExp('mmdi')) || null;
  452. this.params.linkValue = this.getQueryStringRegExp('mmF')
  453. switch (this.getQueryStringRegExp('mmF')) {
  454. case "F0":
  455. this.params.comPoint = 0;
  456. break;
  457. case "F1":
  458. this.params.comPoint = 10;
  459. break;
  460. case "F2":
  461. this.params.comPoint = 20;
  462. break;
  463. case "F3":
  464. this.params.comPoint = 30;
  465. break;
  466. }
  467. switch (this.getQueryStringRegExp('mmB')) {
  468. case "B0":
  469. this.params.ibInvalid = 0;
  470. break;
  471. case "B1":
  472. this.params.ibInvalid = 1;
  473. break;
  474. }
  475. },
  476. //判断pc、移动
  477. IsPC() {
  478. var userAgentInfo = navigator.userAgent;
  479. var Agents = ['Android', 'iPhone',
  480. 'SymbianOS', 'Windows Phone',
  481. 'iPad', 'iPod'
  482. ];
  483. var flag = true;
  484. for (var i = 0; i < Agents.length; i++) {
  485. if (userAgentInfo.indexOf(Agents[i]) != -1) {
  486. flag = false;
  487. break;
  488. }
  489. }
  490. return flag;
  491. },
  492. openMP4(){
  493. this.centerDialogVisible = true;
  494. },
  495. },
  496. watch:{
  497. 'centerDialogVisible'(val){
  498. if (!val) {
  499. document.getElementById("videoplayer").pause();
  500. }
  501. }
  502. },
  503. mounted() {
  504. // console.log(document.body.clientWidth);
  505. // this.clientWidth = document.body.clientWidth;
  506. // if (window.location.search.indexOf('&ex=') != '-1') {
  507. // this.params.sourceCode = window.location.search.split('&ex=')[1] || null;
  508. // } else if (window.location.search.indexOf('?ex=') != '-1') {
  509. // this.params.sourceCode = window.location.search.split('?ex=')[1] || null;
  510. // }
  511. // this.getCodeQuery();
  512. this.ho = window.location.host.split('.')[1];
  513. this.imgUrl = window.location.origin;
  514. // this.imgUrl = 'http://45.136.12.50:8000';
  515. this.getCountryMsg()
  516. if (sessionStorage.getItem("lang")) {
  517. this.language = sessionStorage.getItem("lang"),
  518. this.lang = content[sessionStorage.getItem("lang")];
  519. } else {
  520. var jsSrc =(navigator.language || navigator.browserLanguage).toLowerCase();
  521. if(jsSrc.indexOf('zh') >= 0){
  522. this.language = 'cn'
  523. this.lang = content['cn'];
  524. }else{
  525. this.language = 'en'
  526. this.lang = content['en'];
  527. }
  528. sessionStorage.setItem("lang", this.language);
  529. }
  530. this.searchFunc();//获取列表数据
  531. //获取国家
  532. // this.getCountryCode();
  533. // this.getCountry();
  534. // this.initTimer();
  535. //是否pc
  536. // if (this.IsPC()) {
  537. // this.isPc = true;
  538. // } else {
  539. // this.isPc = false;
  540. // }
  541. },
  542. destroyed() {
  543. clearInterval(this.interval);
  544. },
  545. });