Compare commits
15
Commits
b912dcef5e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ccaf2ef200 | ||
|
|
72934e207a | ||
|
|
959c97c77c | ||
|
|
d775482f79 | ||
|
|
30f3c5939d | ||
|
|
4ad5e6064b | ||
|
|
488f03d872 | ||
|
|
03f30ae157 | ||
|
|
f1ff404ddf | ||
|
|
144d76ca43 | ||
|
|
0835d7cf95 | ||
|
|
0fe4b97c61 | ||
|
|
5534c9e551 | ||
|
|
b01eb06c25 | ||
|
|
e33af3d27d |
Vendored
+1
-1
@@ -1 +1 @@
|
||||
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title></title><link rel="shortcut icon" href=./static/favicon.ico><link href=/static/css/app.79dc6a08f953e0f0024eabba79aa86d6.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.fc2183e86bda37cd12701768032046864.js></script><script type=text/javascript src=/static/js/vendor.9e41d324bb8ddb1839371768032046864.js></script><script type=text/javascript src=/static/js/app.0a99d25499e4b956522e1768032046864.js></script></body></html>
|
||||
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title></title><link rel="shortcut icon" href=./static/favicon.ico><link href=/static/css/app.0ab001b70af6476984f762986f6a1d60.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.1a24a879bb69a34cfac01776655235227.js></script><script type=text/javascript src=/static/js/vendor.fdf7e6b387038f39ad6e1776655235227.js></script><script type=text/javascript src=/static/js/app.d4037a1951a5b629b9f61776655235227.js></script></body></html>
|
||||
Vendored
+16
-18
@@ -1,36 +1,34 @@
|
||||
{
|
||||
"ApiUrl":"http://192.168.88.251:85/pcapi",
|
||||
"SockUrl":"192.168.88.251:6080",
|
||||
"ServerPort":"6080",
|
||||
"HallUrl": "https://v.yourvideo.com/yg/hall.flv",
|
||||
"LoginLogo": "http://192.168.88.251:85/static/logo/wb_logo.png",
|
||||
"LogoPng": "http://192.168.88.251:85/static/logo/wb_logo.png",
|
||||
"TitlePng": "http://192.168.88.251:85/static/logo/wb_200_60.png",
|
||||
"ApiUrl":"https://api.g7g7.top/pcapi",
|
||||
"SockUrl":"wss://api.g7g7.top",
|
||||
"ServerPort":"443",
|
||||
"HallUrl": "https://v1.yourvideo.com/kr/pRzcSz.flv",
|
||||
"LoginLogo": "https://api.g7g7.top/static/logo/og_logo_180_180.png",
|
||||
"LogoPng": "https://api.g7g7.top/static/logo/og_logo_160_143.png",
|
||||
"TitlePng": "https://api.g7g7.top/static/logo/og_logo_title_200_60.png",
|
||||
|
||||
"entranceQrcode":"http://192.168.88.251:85/static/logo/normal_entranceQrcode.png?v=10",
|
||||
"agentUrl":"http://192.168.88.249",
|
||||
"entranceQrcode":"https://api.g7g7.top/static/logo/og_qrcode.jpg",
|
||||
"agentUrl":"https://agt.g7g7.top",
|
||||
|
||||
"BgMusic": "static/sound/bg.mp3",
|
||||
"IframeUrl": "https://p.abc.com/video.html",
|
||||
"IframeUrl": "https://p.g7g7.top/video.html",
|
||||
"PayUrl": "",
|
||||
"AppUrl": "https://www.abc.com/",
|
||||
"AppQrcode": "http://192.168.88.251:85/static/logo/app_qrcode.png?v=10",
|
||||
"ServerQrcode": "http://192.168.88.251:85/static/logo/cus.jpeg",
|
||||
"customerLink": "https://kf.tvbn018.vip/index/index/home?visiter_id=&visiter_name=&avatar=&groupid=0&business_id=2",
|
||||
"AppUrl": "https://og-w.g7g7.top/",
|
||||
"AppQrcode": "https://api.g7g7.top/static/logo/og_qrcode.png",
|
||||
"ServerQrcode": "https://api.g7g7.top/static/logo/og_service.png",
|
||||
"isCancelBet": "1",
|
||||
"isChipSet": "1",
|
||||
"Title": "WINBEST",
|
||||
"Title": "OG ONLINE CASINO",
|
||||
"baccarat": true,
|
||||
"dt": true,
|
||||
"flopTime": 1000,
|
||||
"videoZoom": false,
|
||||
"nn": false,
|
||||
"nn": true,
|
||||
"multiple": true,
|
||||
"onlyTel": false,
|
||||
"sanka": false,
|
||||
"isUpdateOnline":true,
|
||||
"isRegister":false,
|
||||
"isRecharge":false,
|
||||
"isRecharge":true,
|
||||
"isServerCode":true,
|
||||
"isSetExpired":true,
|
||||
"sound":2,
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 54 KiB |
Vendored
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 86 KiB |
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 82 KiB |
@@ -1 +0,0 @@
|
||||
webpackJsonp([0],{"+Ngo":function(t,e){},"Fc+r":function(t,e,n){t.exports=n.p+"static/img/agent.6ff686e.jpg"},L682:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("Dd8w"),r=n.n(i),s=n("NYxO"),c={name:"Entrance",data:function(){return{itemIndex:0}},mounted:function(){},methods:{ItemHover:function(t){this.itemIndex=t},goUrl:function(t,e){1==t?this.$router.push(e):window.location.href=e}},computed:r()({},Object(s.b)(["webconfig","Language"])),watch:{}},a={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"entrance"},[i("div",{staticClass:"title animated slideInLeft"},[i("img",{staticStyle:{width:"12vw"},attrs:{src:t.webconfig.TitlePng}})]),t._v(" "),i("div",{staticClass:"item left",class:{hover:2==t.itemIndex},on:{click:function(e){return t.goUrl(1,"/login")},mouseenter:function(e){return t.ItemHover(2)}}},[i("img",{attrs:{src:n("Wi3H")}}),t._v(" "),i("span",{staticClass:"btn"},[t._v("網投登錄入口")])]),t._v(" "),i("div",{staticClass:"item right",class:{hover:3==t.itemIndex},on:{click:function(e){return t.goUrl(2,t.webconfig.agentUrl)},mouseenter:function(e){return t.ItemHover(3)},mouseleave:function(e){return t.ItemHover(2)}}},[i("img",{attrs:{src:n("Fc+r")}}),t._v(" "),i("span",{staticClass:"btn"},[t._v("代理端登錄入口")])]),t._v(" "),i("img",{staticClass:"qrcode animated slideInUp",attrs:{src:t.webconfig.entranceQrcode}})])},staticRenderFns:[]};var o=n("VU/8")(c,a,!1,function(t){n("+Ngo")},"data-v-5837b354",null);e.default=o.exports},Wi3H:function(t,e,n){t.exports=n.p+"static/img/netthrow.0fda361.jpg"}});
|
||||
@@ -0,0 +1 @@
|
||||
webpackJsonp([0],{BEAi:function(t,e){},L682:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("Dd8w"),a=n.n(i),c=n("NYxO"),s={name:"Entrance",data:function(){return{itemIndex:0}},mounted:function(){},methods:{ItemHover:function(t){this.itemIndex=t},goUrl:function(t,e){1==t?this.$router.push(e):window.location.href=e}},computed:a()({},Object(c.b)(["webconfig","Language"])),watch:{}},r={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"entrance"},[i("div",{staticClass:"title animated slideInLeft"},[i("img",{staticStyle:{width:"12vw"},attrs:{src:t.webconfig.TitlePng}})]),t._v(" "),i("div",{staticClass:"item left",class:{hover:2==t.itemIndex},on:{click:function(e){return t.goUrl(1,"/login")},mouseenter:function(e){return t.ItemHover(2)}}},[i("img",{attrs:{src:n("Wi3H")}}),t._v(" "),i("span",{staticClass:"btn"},[t._v("網投登錄入口")])]),t._v(" "),i("img",{staticClass:"qrcode animated slideInUp",attrs:{src:t.webconfig.entranceQrcode}})])},staticRenderFns:[]};var o=n("VU/8")(s,r,!1,function(t){n("BEAi")},"data-v-207b2fca",null);e.default=o.exports},Wi3H:function(t,e,n){t.exports=n.p+"static/img/netthrow.0fda361.jpg"}});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,a,c){for(var i,u,f,s=0,l=[];s<r.length;s++)u=r[s],t[u]&&l.push(t[u][0]),t[u]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);for(n&&n(r,a,c);l.length;)l.shift()();if(c)for(s=0;s<c.length;s++)f=o(o.s=c[s]);return f};var r={},t={5:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var a=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,o.nc&&c.setAttribute("nonce",o.nc),c.src=o.p+"static/js/"+e+"."+{0:"8cf5ff74deafa55520f2",1:"a8feddb563659f366310",2:"6fac4657b1f2b8767dbd"}[e]+"1768032046864.js";var i=setTimeout(u,12e4);function u(){c.onerror=c.onload=null,clearTimeout(i);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return c.onerror=c.onload=u,a.appendChild(c),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="/",o.oe=function(e){throw console.error(e),e}}([]);
|
||||
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,a,c){for(var i,u,f,s=0,l=[];s<r.length;s++)u=r[s],t[u]&&l.push(t[u][0]),t[u]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);for(n&&n(r,a,c);l.length;)l.shift()();if(c)for(s=0;s<c.length;s++)f=o(o.s=c[s]);return f};var r={},t={5:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var a=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,o.nc&&c.setAttribute("nonce",o.nc),c.src=o.p+"static/js/"+e+"."+{0:"f0e51f931fae6ae15afd",1:"a8feddb563659f366310",2:"49aaa2b746d14fefa698"}[e]+"1776655235227.js";var i=setTimeout(u,12e4);function u(){c.onerror=c.onload=null,clearTimeout(i);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return c.onerror=c.onload=u,a.appendChild(c),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="/",o.oe=function(e){throw console.error(e),e}}([]);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -100,6 +100,8 @@ var en={
|
||||
|
||||
|
||||
win_or_lose : 'Win or lose',
|
||||
xima_liang : 'Turnover',
|
||||
ma_liang : 'Rebate',
|
||||
account_tip : 'Please enter the account number',
|
||||
password_tip : 'Please input a password',
|
||||
password_confir_tip : 'Please confirm the password',
|
||||
|
||||
@@ -99,6 +99,8 @@ var tv={
|
||||
end_time_tip : 'Vui lòng chọn thời gian kết thúc',
|
||||
|
||||
win_or_lose : 'Thắng hay thua',
|
||||
xima_liang : 'Doanh số cược',
|
||||
ma_liang : 'Phỉnh boa',
|
||||
account_tip : 'Vui lòng nhập một tài khoản',
|
||||
password_tip : 'Vui lòng nhập mật khẩu',
|
||||
password_confir_tip : 'Vui lòng xác nhận mật khẩu',
|
||||
|
||||
@@ -100,6 +100,8 @@ var cn={
|
||||
|
||||
|
||||
win_or_lose : '输赢',
|
||||
xima_liang : '洗码量',
|
||||
ma_liang : '码粮',
|
||||
account_tip : '请输入账号',
|
||||
password_tip : '请输入密码',
|
||||
password_confir_tip : '请确认密码',
|
||||
|
||||
+75
-56
@@ -1,60 +1,79 @@
|
||||
|
||||
var audio = null,
|
||||
Mp3List=[],
|
||||
num=0;
|
||||
let audioCtx = null
|
||||
const bufferCache = new Map()
|
||||
let chainId = 0
|
||||
|
||||
|
||||
function audioMp3(mp3List,audios){
|
||||
var WebConfig=JSON.parse(localStorage.getItem("WebConfig"));
|
||||
audio=audios;
|
||||
Mp3List=mp3List;
|
||||
var mp3=new Object();
|
||||
mp3.mp3List=mp3List;
|
||||
mp3.url="/static/sound/";
|
||||
if(WebConfig.sound&&WebConfig.sound==2){mp3.url="/static/sound2/";}
|
||||
|
||||
mp3.auto_play=false;
|
||||
mp3.loop=false;
|
||||
mp3.Play=function(){
|
||||
|
||||
audio.src=this.url+this.mp3List[0];
|
||||
audio.load();
|
||||
audio.play();
|
||||
}
|
||||
mp3.Muted=function(){
|
||||
audio.muted ? audio.muted = false : audio.muted = true;
|
||||
}
|
||||
mp3.volumeAdd=function(){
|
||||
if(audio.volume.toFixed(1)>=1){
|
||||
audio.volume=1
|
||||
}else{
|
||||
audio.volume = audio.volume + 0.1;
|
||||
}
|
||||
}
|
||||
mp3.volumeMinus=function(){
|
||||
if(audio.volume.toFixed(1)<=0){
|
||||
audio.volume=0
|
||||
}else{
|
||||
audio.volume = audio.volume - 0.1;
|
||||
}
|
||||
}
|
||||
audio.addEventListener("ended", nextAudio);
|
||||
return mp3;
|
||||
}
|
||||
function nextAudio(){
|
||||
var WebConfig=JSON.parse(localStorage.getItem("WebConfig"));
|
||||
num+=1
|
||||
if(num<Mp3List.length){
|
||||
audio.src="/static/sound/"+Mp3List[num];
|
||||
if(WebConfig.sound&&WebConfig.sound==2){audio.src="/static/sound2/"+Mp3List[num];}
|
||||
audio.play();
|
||||
}else{
|
||||
audio.pause();
|
||||
audio.currentTime = 0.0;
|
||||
// console.log("播完")
|
||||
num=0;
|
||||
}
|
||||
function getAudioContext() {
|
||||
if (!audioCtx) {
|
||||
audioCtx = new (window.AudioContext || window.webkitAudioContext)()
|
||||
const resume = () => {
|
||||
if (audioCtx.state === 'suspended') audioCtx.resume()
|
||||
}
|
||||
document.addEventListener('click', resume, { once: true })
|
||||
document.addEventListener('touchstart', resume, { once: true })
|
||||
}
|
||||
if (audioCtx.state === 'suspended') audioCtx.resume()
|
||||
return audioCtx
|
||||
}
|
||||
|
||||
export {audioMp3};
|
||||
function getSoundBase() {
|
||||
try {
|
||||
const config = JSON.parse(localStorage.getItem('WebConfig') || '{}')
|
||||
return config.sound && config.sound == 2 ? '/static/sound2/' : '/static/sound/'
|
||||
} catch (e) {
|
||||
return '/static/sound/'
|
||||
}
|
||||
}
|
||||
|
||||
async function loadBuffer(key) {
|
||||
if (bufferCache.has(key)) return bufferCache.get(key)
|
||||
try {
|
||||
const ctx = getAudioContext()
|
||||
const url = getSoundBase() + key
|
||||
const response = await fetch(url)
|
||||
if (!response.ok) return null
|
||||
const arrayBuffer = await response.arrayBuffer()
|
||||
const audioBuffer = await ctx.decodeAudioData(arrayBuffer)
|
||||
bufferCache.set(key, audioBuffer)
|
||||
return audioBuffer
|
||||
} catch (e) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
function playBuffer(buffer) {
|
||||
return new Promise((resolve) => {
|
||||
const ctx = getAudioContext()
|
||||
const source = ctx.createBufferSource()
|
||||
source.buffer = buffer
|
||||
source.connect(ctx.destination)
|
||||
source.onended = resolve
|
||||
source.start(0)
|
||||
})
|
||||
}
|
||||
|
||||
function audioMp3(mp3List, _audioEl) {
|
||||
const myId = ++chainId
|
||||
const list = mp3List || []
|
||||
|
||||
return {
|
||||
Play() {
|
||||
;(async () => {
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
if (chainId !== myId) return
|
||||
const buffer = await loadBuffer(list[i])
|
||||
if (!buffer) continue
|
||||
if (chainId !== myId) return
|
||||
await playBuffer(buffer)
|
||||
}
|
||||
})()
|
||||
},
|
||||
Pause() {
|
||||
chainId++
|
||||
},
|
||||
Muted() {},
|
||||
volumeAdd() {},
|
||||
volumeMinus() {}
|
||||
}
|
||||
}
|
||||
|
||||
export { audioMp3 }
|
||||
|
||||
@@ -157,7 +157,7 @@ function cutRoad(billnumber,roadType,ctb,unit,roadData,cols,gameId,ask,askroad){
|
||||
}else if(roadType=="bigeyeWay"){
|
||||
BigeyePath(ctb,unit,start_x,v.show_x-cut,v.show_y,v.result)
|
||||
}else if(roadType=="showWay"){
|
||||
SoloPath(gameId,ctb,unit,v.show_x-cut,v.show_y,v.result,v.pair)
|
||||
SoloPath(gameId,ctb,unit,v.show_x-cut,v.show_y,v.result,v.pair,v.luck_six||0,v.dragon_seven||0,v.panda_eight||0)
|
||||
}else if(roadType=="bigWay"){
|
||||
BigPath(ctb,unit,start_x,v.show_x-cut,v.show_y,v.result,v.tie_num,v.pair,billnumber)
|
||||
}else if(roadType=="sanxingWay"){
|
||||
@@ -257,7 +257,7 @@ function Font_tie(ctb,num,Font_x,Font_y,fontsize,color){
|
||||
ctb.stroke();
|
||||
}
|
||||
}
|
||||
function SoloPath(gameId,ctb,unit,x,y,type,corners){
|
||||
function SoloPath(gameId,ctb,unit,x,y,type,corners,luck_six,dragon_seven,panda_eight){
|
||||
ctb.beginPath();
|
||||
ctb.lineWidth = unit*0.02;
|
||||
ctb.strokeStyle = "#fff";
|
||||
@@ -272,8 +272,20 @@ function SoloPath(gameId,ctb,unit,x,y,type,corners){
|
||||
var tie = isEn ? "T" : "和";
|
||||
var dragon = isEn ? "D" : "龍";
|
||||
var tiger = isEn ? "T" : "虎";
|
||||
|
||||
if(gameId==1){
|
||||
|
||||
if(gameId==1 && luck_six > 0){
|
||||
var color='#8b1a1a', fonts="6";
|
||||
ctb.strokeStyle = "#a03030";
|
||||
ctb.lineWidth = unit*0.05;
|
||||
}else if(gameId==1 && dragon_seven > 0){
|
||||
var color='#b8860b', fonts="7";
|
||||
ctb.strokeStyle = "#ff2202";
|
||||
ctb.lineWidth = unit*0.08;
|
||||
}else if(gameId==1 && panda_eight > 0){
|
||||
var color='#34495e', fonts="8";
|
||||
ctb.strokeStyle = "#506878";
|
||||
ctb.lineWidth = unit*0.05;
|
||||
}else if(gameId==1){
|
||||
if(type==1){
|
||||
var color='#b20a00',
|
||||
fonts= banker;
|
||||
|
||||
@@ -49,6 +49,14 @@
|
||||
prop="win_total"
|
||||
:label="Language.win_or_lose">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ximaliang"
|
||||
:label="Language.xima_liang">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="maliang"
|
||||
:label="Language.ma_liang">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
|
||||
|
||||
@@ -143,9 +143,18 @@ watch:{
|
||||
background-size:18px auto;;
|
||||
}
|
||||
.left-box .info .item .icon_money{
|
||||
background:url(../../common/image/icon/icon_money.png) center center no-repeat;
|
||||
-webkit-background-size:18px auto;
|
||||
background-size:18px auto;;
|
||||
background:#372300;
|
||||
border-radius:50%;
|
||||
width:24px;
|
||||
height:24px;
|
||||
line-height:24px;
|
||||
text-align:center;
|
||||
}
|
||||
.left-box .info .item .icon_money:before{
|
||||
content:"\20AB"; /* 越南盾符号 đ(₫),与移动端一致,替换原误导的 $ 图标 */
|
||||
color:#f5c842;
|
||||
font-size:15px;
|
||||
font-weight:bold;
|
||||
}
|
||||
.left-box .info .item .icon_recharge{
|
||||
background:url(../../common/image/icon/icon_recharge.png) center center no-repeat;
|
||||
|
||||
@@ -103,8 +103,17 @@ export default {
|
||||
|
||||
this.Multipledata=MultipleData;
|
||||
if(this.choselist.length==0){
|
||||
|
||||
this.$store.commit('multipleData',MultipleData.slice(0,4))
|
||||
var savedIds = this.$store.state._savedChoseIds || [];
|
||||
if(savedIds.length > 0){
|
||||
var restored = MultipleData.filter(function(t){ return savedIds.indexOf(t.id) !== -1; });
|
||||
if(restored.length > 0){
|
||||
this.$store.commit('multipleData', restored);
|
||||
} else {
|
||||
this.$store.commit('multipleData', MultipleData.slice(0,4));
|
||||
}
|
||||
} else {
|
||||
this.$store.commit('multipleData', MultipleData.slice(0,4));
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -99,7 +99,8 @@
|
||||
routeName:'',
|
||||
chipArrayJson:[],
|
||||
chipArray:[{"index":1,"value":"10000","cls":"10k"},{"index":2,"value":"20000","cls":"20k"},{"index":3,"value":"50000","cls":"50k"},{"index":4,"value":"100000","cls":"100k"},
|
||||
{"index":5,"value":"200000","cls":"200k"},{"index":6,"value":"500000","cls":"500k"}],
|
||||
{"index":5,"value":"200000","cls":"200k"},{"index":6,"value":"500000","cls":"500k"},{"index":7,"value":"1000000","cls":"1000k"},{"index":8,"value":"2000000","cls":"2000k"},{"index":9,"value":"5000000","cls":"5000k"},
|
||||
{"index":10,"value":"10000000","cls":"10000k"},{"index":11,"value":"20000000","cls":"20000k"},{"index":12,"value":"50000000","cls":"50000k"},{"index":13,"value":"100000000","cls":"100000k"}],
|
||||
chipArrayNoSet:[{"index":1,"value":"10000","cls":"10k"},{"index":2,"value":"20000","cls":"20k"},{"index":3,"value":"50000","cls":"50k"},{"index":4,"value":"100000","cls":"100k"},
|
||||
{"index":5,"value":"200000","cls":"200k"},{"index":6,"value":"500000","cls":"500k"},{"index":7,"value":"1000000","cls":"1000k"},{"index":8,"value":"2000000","cls":"2000k"},{"index":9,"value":"5000000","cls":"5000k"},
|
||||
{"index":10,"value":"10000000","cls":"10000k"},{"index":11,"value":"20000000","cls":"20000k"},{"index":12,"value":"50000000","cls":"50000k"},{"index":13,"value":"100000000","cls":"100000k"}
|
||||
@@ -166,9 +167,7 @@
|
||||
else {_.remove(chipArray, function(o) {return o.index==index;});}
|
||||
}
|
||||
else {
|
||||
if(chipArray.length>=6){this.$message({type: 'warn', message: '筹码数量最多显示6个!'});}
|
||||
else { chipArray.push({"index":index,"value":chip,"cls":cls})}
|
||||
|
||||
chipArray.push({"index":index,"value":chip,"cls":cls})
|
||||
}
|
||||
var newchipArray= _.sortBy(chipArray, ['index'],["desc"]);
|
||||
this.chipArray=newchipArray;
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
<div class="pay-tab" :class="{active: payChannel=='epay'}" @click="payChannel='epay'">
|
||||
USDT (TRC20)
|
||||
</div>
|
||||
<div class="pay-tab" :class="{active: payChannel=='ccpay'}" @click="payChannel='ccpay'">
|
||||
{{Language.recharge_bank2 || 'Ngân hàng QR'}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="alin-form" v-if="payChannel=='alin'">
|
||||
<div class="alin-item">
|
||||
@@ -25,15 +28,24 @@
|
||||
<div class="alin-form" v-if="payChannel=='epay'">
|
||||
<div class="alin-item">
|
||||
<label>{{Language.withdraw_page_withdrawal_amount || '充值金额'}} (VND):</label>
|
||||
<input class="input" type="number" v-model="epayAmount" placeholder="Số tiền nạp">
|
||||
<input class="input" type="number" v-model="epayAmount" placeholder="Nhập số tiền VND (vd: 1,000,000)">
|
||||
</div>
|
||||
<div class="alin-tip">
|
||||
{{Language.recharge_usdt_tip || 'Thanh toán USDT qua mạng TRC20 · Tỷ giá tính theo hệ thống'}}
|
||||
{{Language.recharge_usdt_tip || 'Nhập số tiền theo VND — hệ thống tự động quy đổi sang USDT theo tỷ giá 1 USDT ≈ 27,100 VND. Thanh toán qua mạng TRC20.'}}
|
||||
</div>
|
||||
<button class="btn alin-submit" @click="submitEpay" :disabled="submitting">
|
||||
{{submitting ? '...' : (Language.withdraw_page_confirm || '确认充值')}}
|
||||
</button>
|
||||
</div>
|
||||
<div class="alin-form" v-if="payChannel=='ccpay'">
|
||||
<div class="alin-item">
|
||||
<label>{{Language.withdraw_page_withdrawal_amount || '充值金额'}} (VND):</label>
|
||||
<input class="input" type="number" v-model="ccpayAmount" placeholder="Nhập số tiền VND (vd: 1,000,000)">
|
||||
</div>
|
||||
<button class="btn alin-submit" @click="submitCcpay" :disabled="submitting">
|
||||
{{submitting ? '...' : (Language.withdraw_page_confirm || '确认充值')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 其他渠道 iframe -->
|
||||
<iframe v-else class="page" :src="webconfig.PayUrl+'?uid='+userInfo.uid+'&api_token='+userInfo.api_token"></iframe>
|
||||
@@ -77,6 +89,42 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- CCpay 银行转账内嵌弹窗 -->
|
||||
<div class="qr-mask" v-if="bank.visible" @click.self="closeBank">
|
||||
<div class="qr-box">
|
||||
<div class="qr-close" @click="closeBank">×</div>
|
||||
<div class="qr-title">{{Language.recharge_bank2 || 'Ngân hàng QR'}} {{Language.recharge_online2 || 'Thanh toán'}}</div>
|
||||
<div class="qr-status" :class="bank.statusClass">{{bank.statusText}}</div>
|
||||
|
||||
<div class="qr-code-wrap" ref="bankQrcodeEl"></div>
|
||||
|
||||
<div class="qr-field">
|
||||
<div class="qr-field-label">Số tài khoản</div>
|
||||
<div class="qr-field-value amount">
|
||||
<span>{{bank.data.bank_account}}</span>
|
||||
<button class="qr-copy" @click="copyText(bank.data.bank_account, 'bank_acc')">
|
||||
{{qr.copied==='bank_acc' ? '✓' : 'Copy'}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="qr-field">
|
||||
<div class="qr-field-label">Tên tài khoản — Ngân hàng</div>
|
||||
<div class="qr-field-value addr">
|
||||
<span>{{bank.data.bank_name}} — {{bank.data.bank_short}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="qr-meta">
|
||||
<span>{{Number(bank.data.amount).toLocaleString()}} VND</span>
|
||||
<span class="qr-countdown">⏱ {{bank.countdownText}}</span>
|
||||
</div>
|
||||
|
||||
<div class="qr-tip">
|
||||
{{Language.pay_bank_warning || '⚠ Vui lòng chuyển khoản chính xác số tiền và nội dung. Sai thông tin sẽ không thể xác nhận đơn hàng!'}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -91,6 +139,7 @@ export default {
|
||||
payChannel: 'alin',
|
||||
alinAmount: '',
|
||||
epayAmount: '',
|
||||
ccpayAmount: '',
|
||||
submitting: false,
|
||||
ApiUrl: JSON.parse(localStorage.getItem('ApiUrl')),
|
||||
qr: {
|
||||
@@ -104,6 +153,16 @@ export default {
|
||||
_qrInstance: null,
|
||||
_pollTimer: null,
|
||||
_countdownTimer: null,
|
||||
bank: {
|
||||
visible: false,
|
||||
data: { bank_account: '', bank_name: '', bank_short: '', qr_data: '', amount: 0, order_sn: '', expires_at: 0, timeout_sec: 600 },
|
||||
countdownText: '',
|
||||
statusText: '',
|
||||
statusClass: 'waiting',
|
||||
},
|
||||
_bankQrInstance: null,
|
||||
_bankPollTimer: null,
|
||||
_bankCountdownTimer: null,
|
||||
}
|
||||
},
|
||||
|
||||
@@ -111,6 +170,7 @@ export default {
|
||||
},
|
||||
beforeDestroy(){
|
||||
this.stopQrTimers();
|
||||
this.stopBankTimers();
|
||||
},
|
||||
methods:{
|
||||
offPop(){
|
||||
@@ -287,6 +347,123 @@ export default {
|
||||
if(this._pollTimer){ clearInterval(this._pollTimer); this._pollTimer = null; }
|
||||
if(this._countdownTimer){ clearInterval(this._countdownTimer); this._countdownTimer = null; }
|
||||
},
|
||||
submitCcpay(){
|
||||
if(!this.ccpayAmount || this.ccpayAmount <= 0){
|
||||
this.$message({type:'warning', message:'Vui lòng nhập số tiền!'});
|
||||
return;
|
||||
}
|
||||
if(this.ccpayAmount < 1000000){
|
||||
this.$message({type:'warning', message:'Số tiền tối thiểu là 1,000,000'});
|
||||
return;
|
||||
}
|
||||
if(this.submitting) return;
|
||||
this.submitting = true;
|
||||
var encryptstring = encrypt(JSON.stringify({
|
||||
user_id: this.userInfo.uid,
|
||||
price: this.ccpayAmount,
|
||||
client: 1,
|
||||
username: this.userInfo.nickname,
|
||||
api_token: this.userInfo.api_token,
|
||||
})).toString();
|
||||
this.$axios.post(this.ApiUrl+'/ccpay_online_order', {encryptData:encryptstring}).then(
|
||||
response=>{
|
||||
this.submitting = false;
|
||||
if(response.data.Success==1){
|
||||
const data = JSON.parse(decrypt(response.data.Data));
|
||||
if(data.status == 1 && data.qrcode){
|
||||
this.openBank(data.qrcode);
|
||||
} else if(data.status == 1 && data.url){
|
||||
window.open(data.url, '_blank');
|
||||
} else {
|
||||
this.$message({type:'error', message: data.message || 'Nạp thất bại'});
|
||||
}
|
||||
} else {
|
||||
this.$message({type:'error', message: response.data.Msg || 'Nạp thất bại'});
|
||||
}
|
||||
}).catch(error=>{
|
||||
this.submitting = false;
|
||||
console.log(error);
|
||||
this.$message({type:'error', message:'Yêu cầu thất bại'});
|
||||
});
|
||||
},
|
||||
openBank(qrcode){
|
||||
this.bank.data = qrcode;
|
||||
this.bank.visible = true;
|
||||
this.bank.statusText = this.Language.pay_waiting || 'Đang chờ thanh toán...';
|
||||
this.bank.statusClass = 'waiting';
|
||||
this.$nextTick(() => {
|
||||
if(qrcode.qr_data){
|
||||
this.renderBankQr(qrcode.qr_data);
|
||||
}
|
||||
});
|
||||
this.startBankCountdown();
|
||||
this.startBankPolling();
|
||||
},
|
||||
renderBankQr(text){
|
||||
const el = this.$refs.bankQrcodeEl;
|
||||
if(!el) return;
|
||||
el.innerHTML = '';
|
||||
this._bankQrInstance = new QRCode(el, {
|
||||
text: text,
|
||||
width: 180,
|
||||
height: 180,
|
||||
colorDark: '#000000',
|
||||
colorLight: '#ffffff',
|
||||
correctLevel: QRCode.CorrectLevel.M,
|
||||
});
|
||||
},
|
||||
startBankCountdown(){
|
||||
const tick = () => {
|
||||
const left = Math.max(0, this.bank.data.expires_at - Math.floor(Date.now()/1000));
|
||||
const m = Math.floor(left/60);
|
||||
const s = left % 60;
|
||||
this.bank.countdownText = (m<10?'0':'')+m+':'+(s<10?'0':'')+s;
|
||||
if(left <= 0){
|
||||
this.bank.statusText = this.Language.pay_expired || 'Đơn hàng đã hết hạn';
|
||||
this.bank.statusClass = 'expired';
|
||||
this.stopBankTimers();
|
||||
}
|
||||
};
|
||||
tick();
|
||||
this._bankCountdownTimer = setInterval(tick, 1000);
|
||||
},
|
||||
startBankPolling(){
|
||||
const poll = () => {
|
||||
if(!this.bank.visible || !this.bank.data.order_sn) return;
|
||||
const encryptstring = encrypt(JSON.stringify({
|
||||
user_id: this.userInfo.uid,
|
||||
order_sn: this.bank.data.order_sn,
|
||||
api_token: this.userInfo.api_token,
|
||||
})).toString();
|
||||
this.$axios.post(this.ApiUrl+'/ccpay_order_status', {encryptData:encryptstring}).then(res=>{
|
||||
if(res.data.Success!=1) return;
|
||||
const d = JSON.parse(decrypt(res.data.Data));
|
||||
if(d.status == 1){
|
||||
this.bank.statusText = this.Language.pay_success || 'Thanh toán thành công!';
|
||||
this.bank.statusClass = 'success';
|
||||
this.stopBankTimers();
|
||||
this.updateMoney && this.updateMoney();
|
||||
setTimeout(() => this.closeBank(), 2500);
|
||||
} else if(d.status == 2){
|
||||
this.bank.statusText = this.Language.pay_expired || 'Đơn hàng đã hết hạn';
|
||||
this.bank.statusClass = 'expired';
|
||||
this.stopBankTimers();
|
||||
}
|
||||
}).catch(()=>{});
|
||||
};
|
||||
this._bankPollTimer = setInterval(poll, 3000);
|
||||
setTimeout(poll, 1000);
|
||||
},
|
||||
closeBank(){
|
||||
this.bank.visible = false;
|
||||
this.stopBankTimers();
|
||||
if(this.$refs.bankQrcodeEl) this.$refs.bankQrcodeEl.innerHTML = '';
|
||||
this._bankQrInstance = null;
|
||||
},
|
||||
stopBankTimers(){
|
||||
if(this._bankPollTimer){ clearInterval(this._bankPollTimer); this._bankPollTimer = null; }
|
||||
if(this._bankCountdownTimer){ clearInterval(this._bankCountdownTimer); this._bankCountdownTimer = null; }
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapState(['userInfo','webconfig','Language'])
|
||||
|
||||
@@ -8,6 +8,8 @@ import store from './store'
|
||||
import common from './common/js/common'
|
||||
import './common/css/reset.css'
|
||||
import './common/css/animate.css'
|
||||
import { setupErrorReporting } from './plugins/error-report'
|
||||
setupErrorReporting(Vue)
|
||||
Vue.config.productionTip = false
|
||||
|
||||
/* eslint-disable no-new */
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
var queue = []
|
||||
var sending = false
|
||||
|
||||
function getReportUrl() {
|
||||
var api = localStorage.getItem('ApiUrl')
|
||||
if (api) {
|
||||
try { api = JSON.parse(api) } catch(e) { api = '' }
|
||||
}
|
||||
return (api || '') + '/log/report'
|
||||
}
|
||||
|
||||
function send(data) {
|
||||
if (queue.length >= 10) return
|
||||
data.source = 'pc'
|
||||
data.time = new Date().toISOString()
|
||||
data.url = location.href
|
||||
queue.push(data)
|
||||
flush()
|
||||
}
|
||||
|
||||
function flush() {
|
||||
if (sending || queue.length === 0) return
|
||||
sending = true
|
||||
var item = queue.shift()
|
||||
var xhr = new XMLHttpRequest()
|
||||
xhr.open('POST', getReportUrl())
|
||||
xhr.setRequestHeader('Content-Type', 'application/json')
|
||||
xhr.onloadend = function() { sending = false; flush() }
|
||||
xhr.onerror = function() { sending = false }
|
||||
xhr.timeout = 3000
|
||||
xhr.send(JSON.stringify(item))
|
||||
}
|
||||
|
||||
export function setupErrorReporting(Vue) {
|
||||
Vue.config.errorHandler = function(err, vm, info) {
|
||||
send({
|
||||
type: 'vue_error',
|
||||
message: err.message,
|
||||
stack: err.stack ? err.stack.substring(0, 2000) : '',
|
||||
info: info
|
||||
})
|
||||
console.error(err)
|
||||
}
|
||||
|
||||
window.onerror = function(message, source, lineno, colno, error) {
|
||||
send({
|
||||
type: 'error',
|
||||
message: String(message),
|
||||
stack: error && error.stack ? error.stack.substring(0, 2000) : '',
|
||||
file: source,
|
||||
line: lineno,
|
||||
col: colno
|
||||
})
|
||||
}
|
||||
|
||||
window.addEventListener('unhandledrejection', function(event) {
|
||||
var reason = event.reason
|
||||
send({
|
||||
type: 'unhandledrejection',
|
||||
message: reason && reason.message ? reason.message : String(reason),
|
||||
stack: reason && reason.stack ? reason.stack.substring(0, 2000) : ''
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -38,6 +38,7 @@ const state = {
|
||||
backClearBet: false,
|
||||
isTablist: false,
|
||||
choselist: [],
|
||||
_savedChoseIds: JSON.parse(localStorage.getItem("multiChoseIds") || "[]"),
|
||||
isaudio: true,
|
||||
mainPop: {
|
||||
type: "",
|
||||
@@ -88,6 +89,7 @@ const mutations = {
|
||||
.post(ApiUrl + "/all_table", { encryptData: secret })
|
||||
.then((response) => {
|
||||
var data = JSON.parse(decrypt(response.data.Data));
|
||||
data.forEach(function(t) { if (t.count_down === undefined) t.count_down = 0; });
|
||||
state.tabData = data;
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -133,6 +135,7 @@ const mutations = {
|
||||
},
|
||||
// 获取所有游戏台
|
||||
taballData(state, data) {
|
||||
data.forEach(function(t) { if (t.count_down === undefined) t.count_down = 0; });
|
||||
state.tabData = data;
|
||||
},
|
||||
// 选择筹码
|
||||
@@ -174,6 +177,7 @@ const mutations = {
|
||||
},
|
||||
multipleData(state, data) {
|
||||
state.choselist = data;
|
||||
localStorage.setItem("multiChoseIds", JSON.stringify(data.map(function(t) { return t.id; })));
|
||||
},
|
||||
// 刷新视频
|
||||
refresh(state) {
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user